summaryrefslogtreecommitdiff
path: root/extra
diff options
context:
space:
mode:
Diffstat (limited to 'extra')
-rw-r--r--extra/a2ps/ChangeLog10
-rw-r--r--extra/a2ps/PKGBUILD46
-rw-r--r--extra/a2ps/a2ps-4.13-manpage-chmod.patch12
-rw-r--r--extra/a2ps/a2ps-4.13c-emacs.patch10
-rw-r--r--extra/a2ps/a2ps-4.13c-fnmatch-replacement.patch43
-rw-r--r--extra/a2ps/a2ps-4.14-check-mempcpy.patch12
-rw-r--r--extra/a2ps/a2ps-4.14-fix-stpcpy-proto.patch17
-rw-r--r--extra/a2ps/a2ps.install20
-rw-r--r--extra/a52dec/PKGBUILD26
-rw-r--r--extra/a52dec/a52dec-0.7.4-build.patch27
-rw-r--r--extra/aalib/PKGBUILD30
-rw-r--r--extra/aalib/aalib.install16
-rw-r--r--extra/aalib/aclocal-fixes.patch11
-rw-r--r--extra/abiword/PKGBUILD58
-rw-r--r--extra/abiword/compat_libwpg_0_9.patch371
-rw-r--r--extra/abook/PKGBUILD27
-rw-r--r--extra/acpi/PKGBUILD25
-rw-r--r--extra/acpid/PKGBUILD42
-rw-r--r--extra/acpid/acpid37
-rw-r--r--extra/acpid/acpid.conf.d6
-rw-r--r--extra/acpid/anything3
-rw-r--r--extra/acpid/handler.sh65
-rw-r--r--extra/aiksaurus/PKGBUILD28
-rw-r--r--extra/aiksaurus/aiksaurus-gcc44.patch31
-rw-r--r--extra/akonadi/PKGBUILD36
-rw-r--r--extra/akonadi/akonadi.install11
-rw-r--r--extra/akonadi/qt-plugins-path.patch24
-rw-r--r--extra/alex/PKGBUILD31
-rw-r--r--extra/allegro/LICENSE26
-rw-r--r--extra/allegro/PKGBUILD35
-rw-r--r--extra/alpine/2.00-lpam.patch13
-rw-r--r--extra/alpine/CVE-2008-5514.patch20
-rw-r--r--extra/alpine/PKGBUILD40
-rw-r--r--extra/alsa-lib/PKGBUILD27
-rw-r--r--extra/alsa-oss/PKGBUILD20
-rw-r--r--extra/alsa-plugins/PKGBUILD33
-rwxr-xr-xextra/alsa-utils/90alsa13
-rw-r--r--extra/alsa-utils/PKGBUILD42
-rwxr-xr-xextra/alsa-utils/alsa62
-rw-r--r--extra/alsa-utils/alsa.conf.d15
-rw-r--r--extra/alsa-utils/alsaconf.patch32
-rw-r--r--extra/alsaplayer/PKGBUILD35
-rw-r--r--extra/amarok/PKGBUILD37
-rw-r--r--extra/amarok/amarok.install11
-rw-r--r--extra/amule/PKGBUILD43
-rw-r--r--extra/anjuta-extras/PKGBUILD26
-rw-r--r--extra/anjuta-extras/anjuta-extras.install17
-rw-r--r--extra/anjuta/PKGBUILD37
-rw-r--r--extra/anjuta/anjuta.install28
-rw-r--r--extra/anthy/PKGBUILD27
-rw-r--r--extra/antlr2/PKGBUILD58
-rw-r--r--extra/antlr2/gcc4.4.patch21
-rw-r--r--extra/antlr2/runantlr2.sh5
-rw-r--r--extra/apache-ant/PKGBUILD51
-rw-r--r--extra/apache-ant/ant_diagnostics.patch23
-rw-r--r--extra/apache-ant/apache-ant.sh3
-rw-r--r--extra/apache/PKGBUILD139
-rw-r--r--extra/apache/apache.conf.d15
-rw-r--r--extra/apache/apachectl-confd.patch15
-rw-r--r--extra/apache/arch.layout22
-rwxr-xr-xextra/apache/httpd65
-rw-r--r--extra/apache/httpd.logrotate6
-rw-r--r--extra/apr-util/PKGBUILD25
-rw-r--r--extra/apr/PKGBUILD31
-rw-r--r--extra/apricots/PKGBUILD22
-rw-r--r--extra/apricots/apricots-0.2.6-freealut.patch65
-rw-r--r--extra/archboot/PKGBUILD43
-rw-r--r--extra/archboot/archboot.install24
-rw-r--r--extra/archboot/vmware-detect.c13
-rw-r--r--extra/ardour/PKGBUILD50
-rw-r--r--extra/ardour/ardour.changelog22
-rw-r--r--extra/ardour/ardour.desktop9
-rw-r--r--extra/aria2/PKGBUILD27
-rw-r--r--extra/arj/001_arches_align.patch34
-rw-r--r--extra/arj/002_no_remove_static_const.patch20
-rw-r--r--extra/arj/003_64_bit_clean.patch194
-rw-r--r--extra/arj/PKGBUILD54
-rw-r--r--extra/arj/arj-3.10.22-custom-printf.patch15
-rw-r--r--extra/arora/PKGBUILD29
-rw-r--r--extra/arora/arora.install12
-rw-r--r--extra/asio/PKGBUILD29
-rw-r--r--extra/aspell-de/PKGBUILD41
-rw-r--r--extra/aspell-en/PKGBUILD26
-rw-r--r--extra/aspell-es/PKGBUILD26
-rw-r--r--extra/aspell-fr/PKGBUILD26
-rw-r--r--extra/aspell-hu/PKGBUILD27
-rw-r--r--extra/aspell-it/PKGBUILD25
-rw-r--r--extra/aspell-nl/PKGBUILD28
-rw-r--r--extra/aspell-pt/PKGBUILD39
-rw-r--r--extra/aspell-ru/PKGBUILD28
-rw-r--r--extra/aspell/PKGBUILD36
-rw-r--r--extra/aspell/aspell.install24
-rw-r--r--extra/asymptote/PKGBUILD37
-rw-r--r--extra/asymptote/texlive.install20
-rw-r--r--extra/at-spi/PKGBUILD29
-rw-r--r--extra/at-spi/at-spi.install17
-rw-r--r--extra/at-spi2-atk/PKGBUILD35
-rw-r--r--extra/at-spi2-atk/at-spi2-atk.install17
-rw-r--r--extra/at-spi2-core/PKGBUILD28
-rw-r--r--extra/at/PKGBUILD30
-rw-r--r--extra/at/atd35
-rw-r--r--extra/aterm/ChangeLog6
-rw-r--r--extra/aterm/PKGBUILD25
-rw-r--r--extra/atk/PKGBUILD21
-rw-r--r--extra/atkmm/PKGBUILD35
-rw-r--r--extra/attica/PKGBUILD29
-rw-r--r--extra/aubio/PKGBUILD24
-rw-r--r--extra/audacious/PKGBUILD30
-rw-r--r--extra/audacious/audacious.install12
-rw-r--r--extra/audacity/ChangeLog45
-rw-r--r--extra/audacity/PKGBUILD44
-rw-r--r--extra/audacity/audacity-ffmpeg.patch31
-rw-r--r--extra/audacity/audacity.install12
-rw-r--r--extra/audiofile/PKGBUILD20
-rw-r--r--extra/aufs2-util/PKGBUILD25
-rwxr-xr-xextra/aufs2-util/create-tarball.sh11
-rw-r--r--extra/autogen/PKGBUILD24
-rw-r--r--extra/autogen/autogen.install20
-rw-r--r--extra/automoc4/PKGBUILD28
-rw-r--r--extra/autopano-sift-c/PKGBUILD27
-rw-r--r--extra/avahi/ChangeLog17
-rw-r--r--extra/avahi/PKGBUILD79
-rw-r--r--extra/avahi/avahi-daemon-dbus.patch11
-rw-r--r--extra/avahi/avahi.install21
-rw-r--r--extra/avahi/gnome-nettool.pngbin0 -> 4509 bytes
-rw-r--r--extra/avfs/PKGBUILD22
-rw-r--r--extra/avidemux/2.5.4_audioDevice.patch12
-rw-r--r--extra/avidemux/PKGBUILD121
-rw-r--r--extra/avidemux/x264.patch21
-rw-r--r--extra/avogadro/PKGBUILD45
-rw-r--r--extra/avogadro/fix-pycapsule.patch23
-rw-r--r--extra/avogadro/sip-4.11.patch34
-rw-r--r--extra/babl/PKGBUILD25
-rw-r--r--extra/banshee/PKGBUILD49
-rw-r--r--extra/banshee/banshee.install15
-rw-r--r--extra/barcode/PKGBUILD31
-rw-r--r--extra/barcode/barcode.install20
-rw-r--r--extra/basket/PKGBUILD32
-rw-r--r--extra/basket/basket.install12
-rw-r--r--extra/bc/PKGBUILD31
-rw-r--r--extra/bc/bc-1.06-info-dir-entry.patch11
-rw-r--r--extra/bc/bc.install20
-rw-r--r--extra/bc/build-fix.patch13
-rw-r--r--extra/bdf-unifont/LICENSE60
-rw-r--r--extra/bdf-unifont/PKGBUILD24
-rw-r--r--extra/bdf-unifont/unifont.install15
-rw-r--r--extra/beagle/PKGBUILD64
-rw-r--r--extra/beagle/beagle-0.3.9-gmime24.patch703
-rw-r--r--extra/beagle/beagle-0.3.9-mono-data-sqlite-2.patch81
-rw-r--r--extra/beagle/beagle-0.3.9-spew.patch12
-rw-r--r--extra/beagle/beagle.install8
-rw-r--r--extra/beagle/mono-2.8.patch152
-rw-r--r--extra/beep/PKGBUILD26
-rw-r--r--extra/bftpd/PKGBUILD39
-rw-r--r--extra/bftpd/bftpd.install11
-rw-r--r--extra/bftpd/bftpd.logrotate5
-rw-r--r--extra/bftpd/bftpd.pam3
-rwxr-xr-xextra/bftpd/bftpd.rc44
-rw-r--r--extra/bigloo/PKGBUILD41
-rw-r--r--extra/bigloo/bigloo.install21
-rw-r--r--extra/bind/127.0.0.zone11
-rw-r--r--extra/bind/ChangeLog15
-rw-r--r--extra/bind/PKGBUILD79
-rw-r--r--extra/bind/install21
-rw-r--r--extra/bind/localhost.zone10
-rwxr-xr-xextra/bind/named48
-rw-r--r--extra/bind/named.conf64
-rw-r--r--extra/bind/named.conf.d4
-rw-r--r--extra/bind/named.logrotate6
-rw-r--r--extra/bind/notools.patch11
-rw-r--r--extra/bind/so_bsdcompat.patch13
-rw-r--r--extra/bitlbee/PKGBUILD52
-rw-r--r--extra/bitlbee/bitlbee.rcd54
-rw-r--r--extra/bitlbee/bitlbee.xinetd12
-rw-r--r--extra/bitlbee/install14
-rw-r--r--extra/blender/PKGBUILD143
-rw-r--r--extra/blender/blender.desktop19
-rw-r--r--extra/blender/blender.install28
-rw-r--r--extra/blender/blender.svg171
-rw-r--r--extra/bluedevil/PKGBUILD30
-rw-r--r--extra/bluedevil/bluedevil.install11
-rw-r--r--extra/bluefish/PKGBUILD30
-rw-r--r--extra/bluefish/bluefish.install28
-rw-r--r--extra/bluez-hcidump/PKGBUILD26
-rw-r--r--extra/bluez/PKGBUILD75
-rw-r--r--extra/bluez/bluetooth.conf.d30
-rw-r--r--extra/bluez/rc.bluetooth100
-rw-r--r--extra/bmp-musepack/PKGBUILD24
-rw-r--r--extra/bmp-wma/PKGBUILD30
-rw-r--r--extra/bmp-wma/bmp-wma-gcc4.patch98
-rw-r--r--extra/bmp/0.9.7.1-visualization.patch12
-rw-r--r--extra/bmp/PKGBUILD27
-rw-r--r--extra/bmp/bmp-0.9.7.1-crossfade-0.3.9.patch108
-rw-r--r--extra/bochs/2.4.5-fetchcode.patch45
-rw-r--r--extra/bochs/PKGBUILD26
-rw-r--r--extra/bogofilter/PKGBUILD34
-rw-r--r--extra/boo/PKGBUILD34
-rw-r--r--extra/boo/boo.install11
-rw-r--r--extra/boost/4994-compile-fix-for-Python32-v2.patch16
-rw-r--r--extra/boost/PKGBUILD112
-rw-r--r--extra/boost/boost-1.46.0-spirit.patch59
-rw-r--r--extra/botan/PKGBUILD25
-rw-r--r--extra/brasero/PKGBUILD33
-rw-r--r--extra/brasero/brasero.install14
-rw-r--r--extra/brltty/PKGBUILD48
-rwxr-xr-xextra/brltty/brltty68
-rw-r--r--extra/brltty/brltty-4.2-S_ISCHR.patch11
-rw-r--r--extra/brltty/brltty.conf2
-rw-r--r--extra/bs/PKGBUILD26
-rw-r--r--extra/bug-buddy/PKGBUILD29
-rw-r--r--extra/bug-buddy/bug-buddy.install24
-rw-r--r--extra/bzflag/PKGBUILD30
-rw-r--r--extra/bzr/PKGBUILD30
-rw-r--r--extra/c-ares/LICENSE10
-rw-r--r--extra/c-ares/PKGBUILD33
-rw-r--r--extra/cabal-install/PKGBUILD27
-rw-r--r--extra/cagibi/PKGBUILD29
-rw-r--r--extra/cairo-perl/PKGBUILD27
-rw-r--r--extra/cairo/PKGBUILD35
-rw-r--r--extra/cairo/cairo-1.10.0-buggy_gradients.patch13
-rw-r--r--extra/cairomm/PKGBUILD23
-rw-r--r--extra/camsource/PKGBUILD28
-rw-r--r--extra/camsource/mod_handle.c.patch14
-rw-r--r--extra/capi4hylafax/PKGBUILD49
-rw-r--r--extra/capi4hylafax/capi4hylafax.install16
-rwxr-xr-xextra/capi4hylafax/capi4hylafax.rc49
-rw-r--r--extra/capi4hylafax/config.faxCAPI397
-rw-r--r--extra/capi4k-utils/PKGBUILD54
-rw-r--r--extra/capi4k-utils/capi-compile.patch10
-rw-r--r--extra/capi4k-utils/capi.conf14
-rwxr-xr-xextra/capi4k-utils/capiinit.rc43
-rw-r--r--extra/capi4k-utils/config11
-rw-r--r--extra/capi4k-utils/ppp-2.4.4.patch1874
-rw-r--r--extra/capseo/PKGBUILD24
-rw-r--r--extra/catdoc/PKGBUILD24
-rw-r--r--extra/ccache/PKGBUILD34
-rw-r--r--extra/cd-discid/PKGBUILD20
-rw-r--r--extra/cdargs/PKGBUILD36
-rw-r--r--extra/cdargs/cdargs.install7
-rw-r--r--extra/cdparanoia/ChangeLog23
-rw-r--r--extra/cdparanoia/PKGBUILD23
-rw-r--r--extra/cdparanoia/gcc.patch582
-rw-r--r--extra/cdrdao/PKGBUILD59
-rw-r--r--extra/cdrdao/cdrdao-1.2.3-autoconf-update.patch52
-rw-r--r--extra/cdrdao/cdrdao-1.2.3-k3b.patch11
-rw-r--r--extra/cdrdao/cdrdao-1.2.3-stat.patch13
-rw-r--r--extra/cdrdao/gcdmaster.install22
-rw-r--r--extra/cdrkit/PKGBUILD42
-rw-r--r--extra/celestia/PKGBUILD34
-rw-r--r--extra/celestia/celestia-1.5.1-gcc44.patch20
-rw-r--r--extra/celestia/libpng14.patch12
-rw-r--r--extra/cfitsio/PKGBUILD27
-rw-r--r--extra/cheese/PKGBUILD30
-rw-r--r--extra/cheese/cheese.install22
-rw-r--r--extra/chemtool/PKGBUILD24
-rw-r--r--extra/chemtool/chemtool.desktop13
-rw-r--r--extra/chkrootkit/PKGBUILD24
-rw-r--r--extra/chkrootkit/fix-tools-path.patch161
-rw-r--r--extra/chmlib/PKGBUILD25
-rw-r--r--extra/cifs-utils/PKGBUILD26
-rw-r--r--extra/cinepaint/PKGBUILD55
-rw-r--r--extra/cinepaint/cinepaint-0.22-gcc44.patch22
-rw-r--r--extra/cinepaint/cinepaint-0.22.1-ambiguousawake.patch11
-rw-r--r--extra/cinepaint/cinepaint-0.22.1-gcc43.patch73
-rw-r--r--extra/cinepaint/cinepaint-0.22.1-multiple_parameters_named.patch42
-rw-r--r--extra/cinepaint/cinepaint.install11
-rw-r--r--extra/clamav/PKGBUILD51
-rw-r--r--extra/clamav/clamav72
-rw-r--r--extra/clamav/clamav.confd8
-rw-r--r--extra/clamav/clamav.install14
-rw-r--r--extra/clamav/clamav.logrotate8
-rw-r--r--extra/clamav/config.patch30
-rw-r--r--extra/claws-mail-extra-plugins/PKGBUILD67
-rw-r--r--extra/claws-mail-extra-plugins/claws-mail-notification-0.26-libnotify-0.7.patch50
-rw-r--r--extra/claws-mail/PKGBUILD55
-rw-r--r--extra/claws-mail/claws-mail.install12
-rw-r--r--extra/clisp/PKGBUILD27
-rw-r--r--extra/cln/PKGBUILD28
-rw-r--r--extra/cln/cln.install20
-rw-r--r--extra/clucene/PKGBUILD25
-rw-r--r--extra/clutter-gtk/PKGBUILD27
-rw-r--r--extra/clutter-gtk/fix-gir.patch93
-rw-r--r--extra/clutter/PKGBUILD28
-rw-r--r--extra/cmake/PKGBUILD42
-rw-r--r--extra/cmake/cmake.install11
-rw-r--r--extra/cmatrix/PKGBUILD27
-rw-r--r--extra/cmatrix/cmatrix.install3
-rw-r--r--extra/cmt/PKGBUILD25
-rw-r--r--extra/cmus/PKGBUILD42
-rw-r--r--extra/compface/LICENSE94
-rw-r--r--extra/compface/PKGBUILD25
-rw-r--r--extra/compface/compface-1.4-errno.patch.bz2bin0 -> 373 bytes
-rw-r--r--extra/conky/PKGBUILD43
-rw-r--r--extra/conky/current-power.patch12
-rw-r--r--extra/consolekit/PKGBUILD35
-rw-r--r--extra/consolekit/consolekit.logrotate5
-rw-r--r--extra/consolekit/pam-foreground-compat.ck16
-rw-r--r--extra/convmv/PKGBUILD20
-rw-r--r--extra/cowsay/ChangeLog7
-rw-r--r--extra/cowsay/PKGBUILD22
-rw-r--r--extra/cowsay/cowsay.patch11
-rw-r--r--extra/cpio/PKGBUILD27
-rw-r--r--extra/cpio/cpio-gcc43.patch139
-rw-r--r--extra/cpio/cpio.install21
-rw-r--r--extra/cpufrequtils/PKGBUILD32
-rw-r--r--extra/cpufrequtils/cpufreq.confd14
-rw-r--r--extra/cpufrequtils/cpufreq.rcd60
-rw-r--r--extra/crypto++/PKGBUILD35
-rw-r--r--extra/crypto++/libcrypto++.pc11
-rw-r--r--extra/cscope/PKGBUILD32
-rw-r--r--extra/ctags/PKGBUILD23
-rw-r--r--extra/cups-pdf/PKGBUILD31
-rw-r--r--extra/cups-pdf/cups-pdf.install20
-rw-r--r--extra/cups/PKGBUILD108
-rwxr-xr-xextra/cups/cups38
-rw-r--r--extra/cups/cups-avahi.patch1089
-rw-r--r--extra/cups/cups.install15
-rw-r--r--extra/cups/cups.logrotate8
-rw-r--r--extra/cups/cups.pam3
-rw-r--r--extra/curl/PKGBUILD52
-rw-r--r--extra/curl/curlbuild.h9
-rw-r--r--extra/cvs/PKGBUILD39
-rw-r--r--extra/cvs/cvs-1.11.23-cve-2010-3846.patch167
-rw-r--r--extra/cvs/cvs-1.11.23-getline64.patch34
-rw-r--r--extra/cvs/cvs.install20
-rw-r--r--extra/cvsps/PKGBUILD19
-rw-r--r--extra/cx_freeze/FreezePython.sh4
-rw-r--r--extra/cx_freeze/PKGBUILD31
-rw-r--r--extra/cyrus-sasl-plugins/PKGBUILD52
-rw-r--r--extra/cyrus-sasl-plugins/cyrus-sasl-2.1.22-gcc44.patch24
-rw-r--r--extra/cyrus-sasl-plugins/cyrus-sasl-2.1.23-db5-fix.patch23
-rw-r--r--extra/cyrus-sasl/PKGBUILD37
-rw-r--r--extra/cyrus-sasl/saslauthd50
-rw-r--r--extra/cyrus-sasl/saslauthd.conf.d1
-rw-r--r--extra/dansguardian/PKGBUILD148
-rw-r--r--extra/dansguardian/dansguardian36
-rw-r--r--extra/dansguardian/dansguardian.install8
-rw-r--r--extra/dansguardian/dg2.10.1.1-missing.stdio.patch10
-rw-r--r--extra/darcs/PKGBUILD37
-rw-r--r--extra/dasher/PKGBUILD30
-rw-r--r--extra/dasher/dasher.install22
-rw-r--r--extra/davfs2/PKGBUILD32
-rw-r--r--extra/dbus-glib/PKGBUILD23
-rw-r--r--extra/dbus-python/PKGBUILD22
-rw-r--r--extra/dbus-qt3/PKGBUILD32
-rw-r--r--extra/dbus-qt3/dbus-qt3-compile-fix-thoenig-01.patch85
-rw-r--r--extra/dbus-qt3/dbus-qt3-do-not-close-shared-connection-thoenig-01.patch12
-rw-r--r--extra/dbus/30-dbus9
-rw-r--r--extra/dbus/PKGBUILD38
-rw-r--r--extra/dcfldd/PKGBUILD21
-rw-r--r--extra/dconf/PKGBUILD26
-rw-r--r--extra/dconf/dconf.install11
-rw-r--r--extra/dcraw/PKGBUILD51
-rw-r--r--extra/dcraw/dcraw.install13
-rw-r--r--extra/dcraw/license.txt16
-rw-r--r--extra/ddd/ChangeLog19
-rw-r--r--extra/ddd/PKGBUILD31
-rw-r--r--extra/ddd/ddd-3.3.12-gcc44.patch10
-rw-r--r--extra/ddd/ddd.install18
-rw-r--r--extra/ddrescue/PKGBUILD22
-rw-r--r--extra/ddrescue/ddrescue.install22
-rw-r--r--extra/deskbar-applet/PKGBUILD39
-rw-r--r--extra/deskbar-applet/deskbar-applet.install22
-rw-r--r--extra/desktop-file-utils/ChangeLog7
-rw-r--r--extra/desktop-file-utils/PKGBUILD25
-rw-r--r--extra/devhelp/PKGBUILD29
-rw-r--r--extra/devhelp/devhelp.install22
-rw-r--r--extra/devilspie/PKGBUILD30
-rw-r--r--extra/dhcp/ChangeLog11
-rw-r--r--extra/dhcp/PKGBUILD81
-rw-r--r--extra/dhcp/dhclient-script-pathFixes.patch118
-rw-r--r--extra/dhcp/dhcp-4.1.1-missing-ipv6-not-fatal.patch39
-rw-r--r--extra/dhcp/dhcp.conf.d6
-rw-r--r--extra/dhcp/dhcp.install11
-rwxr-xr-xextra/dhcp/dhcpd40
-rw-r--r--extra/di/PKGBUILD26
-rw-r--r--extra/diffstat/PKGBUILD27
-rw-r--r--extra/digikam/PKGBUILD37
-rw-r--r--extra/digikam/digikam.install11
-rw-r--r--extra/dirmngr/PKGBUILD20
-rw-r--r--extra/djvulibre/PKGBUILD34
-rw-r--r--extra/djvulibre/djvulibre.install13
-rw-r--r--extra/dmapi/PKGBUILD32
-rw-r--r--extra/dmidecode/PKGBUILD21
-rw-r--r--extra/dnsmasq/PKGBUILD40
-rwxr-xr-xextra/dnsmasq/rc.dnsmasq36
-rw-r--r--extra/docker/PKGBUILD21
-rw-r--r--extra/dosbox/PKGBUILD37
-rw-r--r--extra/dosbox/dosbox.desktop10
-rw-r--r--extra/dosbox/dosbox.pngbin0 -> 4691 bytes
-rw-r--r--extra/dosfstools/PKGBUILD23
-rw-r--r--extra/dotconf/PKGBUILD38
-rw-r--r--extra/dovecot/PKGBUILD74
-rw-r--r--extra/dovecot/dovecot.install57
-rwxr-xr-xextra/dovecot/dovecot.sh36
-rw-r--r--extra/doxygen/PKGBUILD37
-rw-r--r--extra/dssi/LICENSE77
-rw-r--r--extra/dssi/PKGBUILD38
-rw-r--r--extra/dvd+rw-tools/PKGBUILD29
-rw-r--r--extra/dvd+rw-tools/buildpatch-7.0-3-20080108-karolina.patch22
-rw-r--r--extra/dvdauthor/PKGBUILD25
-rw-r--r--extra/dvdrip/PKGBUILD41
-rw-r--r--extra/dvdrip/dvdrip.desktop8
-rw-r--r--extra/dvdrip/dvdrip.install19
-rw-r--r--extra/dvdrtools/PKGBUILD24
-rw-r--r--extra/dvgrab/PKGBUILD22
-rw-r--r--extra/easytag/PKGBUILD34
-rw-r--r--extra/easytag/easytag.install12
-rw-r--r--extra/easytag/mp4v2-1.9.patch51
-rw-r--r--extra/ebook-tools/PKGBUILD27
-rw-r--r--extra/ecasound/PKGBUILD52
-rw-r--r--extra/ecasound/ecasound.changelog44
-rw-r--r--extra/ecl/PKGBUILD35
-rw-r--r--extra/eclipse/PKGBUILD58
-rw-r--r--extra/eclipse/eclipse.desktop9
-rw-r--r--extra/eclipse/eclipse.ini.patch14
-rw-r--r--extra/eclipse/eclipse.install15
-rw-r--r--extra/eclipse/eclipse.sh4
-rw-r--r--extra/eclipse/eclipse.svg1623
-rwxr-xr-xextra/efibootmgr/PKGBUILD52
-rwxr-xr-xextra/efibootmgr/efibootmgr_after_0.5.4_git.patch159
-rwxr-xr-xextra/efibootmgr/efibootmgr_default_to_grub2.patch44
-rw-r--r--extra/eject/PKGBUILD24
-rw-r--r--extra/eject/eject-2.1.5-handle-spaces.patch57
-rw-r--r--extra/ekiga/PKGBUILD36
-rw-r--r--extra/ekiga/ekiga-3.2.7-libnotify-0.7.patch62
-rw-r--r--extra/ekiga/ekiga.install22
-rw-r--r--extra/emacs/PKGBUILD50
-rw-r--r--extra/emacs/emacs.desktop12
-rw-r--r--extra/emacs/emacs.install28
-rw-r--r--extra/emelfm2/PKGBUILD27
-rw-r--r--extra/emovix/PKGBUILD23
-rw-r--r--extra/empathy/PKGBUILD40
-rw-r--r--extra/empathy/empathy-2.32.2-libnotify-0.7.patch54
-rw-r--r--extra/empathy/empathy.install16
-rw-r--r--extra/enblend-enfuse/PKGBUILD30
-rw-r--r--extra/enblend-enfuse/enblend-enfuse.install20
-rw-r--r--extra/enblend-enfuse/libpng-1.4.patch14
-rw-r--r--extra/enca/PKGBUILD27
-rw-r--r--extra/enchant/PKGBUILD30
-rw-r--r--extra/enlightenment/PKGBUILD42
-rw-r--r--extra/enscript/PKGBUILD26
-rw-r--r--extra/eog/PKGBUILD33
-rw-r--r--extra/eog/eog.install24
-rw-r--r--extra/epiphany-extensions/PKGBUILD25
-rw-r--r--extra/epiphany-extensions/epiphany-extensions.install13
-rw-r--r--extra/epiphany/PKGBUILD41
-rw-r--r--extra/epiphany/add-dbus-glib.patch20
-rw-r--r--extra/epiphany/epiphany-2.30.6-libnotify-0.7.patch38
-rw-r--r--extra/epiphany/epiphany.install25
-rw-r--r--extra/epiphany/fix-introspection.patch21
-rw-r--r--extra/epplet-base/ChangeLog16
-rw-r--r--extra/epplet-base/PKGBUILD28
-rw-r--r--extra/erlang/PKGBUILD64
-rw-r--r--extra/esound/PKGBUILD34
-rwxr-xr-xextra/esound/esd37
-rw-r--r--extra/esound/esd-0.2.38-alsa-drain.patch11
-rw-r--r--extra/ethstatus/PKGBUILD21
-rw-r--r--extra/ethtool/PKGBUILD20
-rw-r--r--extra/ettercap-gtk/PKGBUILD44
-rw-r--r--extra/ettercap-gtk/ettercap.desktop6
-rw-r--r--extra/ettercap-gtk/fix-segmentation-fault.patch19
-rw-r--r--extra/ettercap/01_pointers_and_ints_dont_mix.diff12
-rw-r--r--extra/ettercap/PKGBUILD36
-rw-r--r--extra/evilwm/PKGBUILD23
-rw-r--r--extra/evilwm/evilwm.desktop8
-rw-r--r--extra/evince/PKGBUILD51
-rw-r--r--extra/evince/evince.install26
-rw-r--r--extra/evince/security_issues_in_dvi-backend.patch97
-rw-r--r--extra/evince/update_to_poppler_api.patch58
-rw-r--r--extra/evolution-data-server/PKGBUILD26
-rw-r--r--extra/evolution-exchange/PKGBUILD30
-rw-r--r--extra/evolution-exchange/evolution-exchange.install17
-rw-r--r--extra/evolution-sharp/PKGBUILD36
-rw-r--r--extra/evolution-sharp/evolution-data-server-lib-target.patch15
-rw-r--r--extra/evolution-sharp/evolution-sharp-0.21.1-fix-retarded-version-check.patch13
-rw-r--r--extra/evolution-webcal/PKGBUILD30
-rw-r--r--extra/evolution-webcal/evolution-webcal.install17
-rw-r--r--extra/evolution/PKGBUILD45
-rw-r--r--extra/evolution/evolution-2.32.1-libnotify-0.7.patch81
-rw-r--r--extra/evolution/evolution.install24
-rw-r--r--extra/exempi/PKGBUILD24
-rw-r--r--extra/exiv2/PKGBUILD26
-rw-r--r--extra/exo/PKGBUILD41
-rw-r--r--extra/exo/exo.install12
-rw-r--r--extra/expect/ChangeLog11
-rw-r--r--extra/expect/PKGBUILD38
-rw-r--r--extra/expect/expect.install5
-rw-r--r--extra/f-spot/PKGBUILD39
-rw-r--r--extra/f-spot/f-spot.install24
-rw-r--r--extra/f-spot/mono-2.8.patch22
-rw-r--r--extra/faad2/ChangeLog26
-rw-r--r--extra/faad2/LICENSE42
-rw-r--r--extra/faad2/PKGBUILD26
-rw-r--r--extra/facile/PKGBUILD23
-rw-r--r--extra/fakechroot/PKGBUILD32
-rw-r--r--extra/fakechroot/fakechroot.install14
-rw-r--r--extra/fam/PKGBUILD47
-rwxr-xr-xextra/fam/fam44
-rw-r--r--extra/fam/fam-2.7.0-buildfixes.patch69
-rw-r--r--extra/fam/fam-2.7.0-dnotify.patch975
-rw-r--r--extra/fam/fam-2.7.0-largefiles.patch8
-rw-r--r--extra/fam/fam-2.7.0-limits.patch11
-rw-r--r--extra/farsight2/PKGBUILD36
-rw-r--r--extra/fastjar/PKGBUILD25
-rw-r--r--extra/fastjar/fastjar.install16
-rw-r--r--extra/fbida/ChangeLog21
-rw-r--r--extra/fbida/PKGBUILD42
-rw-r--r--extra/fbida/jinclude.h91
-rw-r--r--extra/fbida/libpng-1.4.patch17
-rw-r--r--extra/fbida/transupp.c1583
-rw-r--r--extra/fbida/transupp.h210
-rw-r--r--extra/fbset/PKGBUILD29
-rw-r--r--extra/fcgi/PKGBUILD31
-rw-r--r--extra/fcgi/gcc44-fix-include.patch17
-rw-r--r--extra/fcitx/PKGBUILD27
-rw-r--r--extra/feh/PKGBUILD29
-rw-r--r--extra/festival/PKGBUILD119
-rw-r--r--extra/festival/festconfig.patch84
-rw-r--r--extra/festival/speechconfig.patch132
-rw-r--r--extra/fetchmail/PKGBUILD37
-rw-r--r--extra/fetchmail/fetchmail.conf5
-rw-r--r--extra/fetchmail/fetchmail.install20
-rw-r--r--extra/fetchmail/fetchmail.rc41
-rw-r--r--extra/ffcall/PKGBUILD26
-rw-r--r--extra/ffmpegthumbnailer/PKGBUILD30
-rw-r--r--extra/fftw/PKGBUILD50
-rw-r--r--extra/fftw/fftw.install22
-rw-r--r--extra/file-roller/PKGBUILD39
-rw-r--r--extra/file-roller/file-roller.install24
-rw-r--r--extra/flac/ChangeLog5
-rw-r--r--extra/flac/PKGBUILD29
-rw-r--r--extra/flac/flac-1.2.1-gcc-4.3-includes.patch11
-rw-r--r--extra/fltk/PKGBUILD26
-rw-r--r--extra/fluidsynth/PKGBUILD46
-rw-r--r--extra/fluidsynth/fluidsynth.conf2
-rw-r--r--extra/fluidsynth/fluidsynthd40
-rw-r--r--extra/fluxbox/PKGBUILD33
-rw-r--r--extra/fluxbox/fluxbox.desktop6
-rw-r--r--extra/fluxter/ChangeLog6
-rw-r--r--extra/fluxter/PKGBUILD22
-rw-r--r--extra/folks/PKGBUILD23
-rw-r--r--extra/fontconfig/29-replace-bitmap-fonts.conf37
-rw-r--r--extra/fontconfig/30-urw-aliases.patch13
-rw-r--r--extra/fontconfig/PKGBUILD35
-rw-r--r--extra/fontconfig/fontconfig.install100
-rw-r--r--extra/fontforge/PKGBUILD38
-rw-r--r--extra/foobillard/03_bugfixes36
-rw-r--r--extra/foobillard/05_foul_explanation262
-rw-r--r--extra/foobillard/06_show_ball_to_hit255
-rw-r--r--extra/foobillard/ChangeLog16
-rw-r--r--extra/foobillard/PKGBUILD46
-rw-r--r--extra/foobillard/foobillard.desktop9
-rw-r--r--extra/foobillard/foobillard.pngbin0 -> 4288 bytes
-rw-r--r--extra/foobillard/snooker_draw.patch48
-rw-r--r--extra/foobillard/snooker_reset.patch11
-rw-r--r--extra/foomatic/PKGBUILD97
-rw-r--r--extra/fortune-mod/01_all_fortune_all-fix.patch21
-rw-r--r--extra/fortune-mod/LICENSE35
-rw-r--r--extra/fortune-mod/PKGBUILD32
-rw-r--r--extra/fping/PKGBUILD25
-rw-r--r--extra/fprint_demo/PKGBUILD21
-rw-r--r--extra/freealut/PKGBUILD23
-rw-r--r--extra/freeciv/PKGBUILD27
-rw-r--r--extra/freeciv/freeciv.install11
-rw-r--r--extra/freeglut/2.6.0-GFX_radeon.patch28
-rw-r--r--extra/freeglut/ChangeLog8
-rw-r--r--extra/freeglut/PKGBUILD32
-rw-r--r--extra/freenx/PKGBUILD77
-rw-r--r--extra/freenx/freenx-latest-svn.patch288
-rw-r--r--extra/freenx/freenx.install27
-rw-r--r--extra/freenx/keymap.patch32
-rw-r--r--extra/freenx/nxagent-startup.patch12
-rw-r--r--extra/freenx/remove-dialog.patch32
-rw-r--r--extra/freetds/PKGBUILD28
-rw-r--r--extra/freetype2/PKGBUILD34
-rw-r--r--extra/freetype2/allow-hlineto-vlineto-without-arguments.patch57
-rw-r--r--extra/freetype2/freetype-2.2.1-enable-valid.patch20
-rw-r--r--extra/freetype2/freetype-2.3.0-enable-spr.patch11
-rw-r--r--extra/fribidi/ChangeLog5
-rw-r--r--extra/fribidi/PKGBUILD23
-rw-r--r--extra/frozen-bubble/PKGBUILD32
-rw-r--r--extra/frozen-bubble/frozen-bubble.desktop9
-rw-r--r--extra/fsarchiver/PKGBUILD27
-rw-r--r--extra/fssos-nsvs/PKGBUILD29
-rw-r--r--extra/fssos-nsvs/fssos-nsvs.install17
-rwxr-xr-xextra/fssos-nsvs/nsvsd36
-rw-r--r--extra/ftgl/PKGBUILD34
-rw-r--r--extra/ftjam/PKGBUILD30
-rw-r--r--extra/ftjam/license.txt8
-rw-r--r--extra/fuse/PKGBUILD55
-rw-r--r--extra/fuse/fuse.conf9
-rw-r--r--extra/fuse/fuse.install14
-rwxr-xr-xextra/fuse/fuse.rc.d49
-rw-r--r--extra/fvwm-devel/ChangeLog44
-rw-r--r--extra/fvwm-devel/PKGBUILD36
-rw-r--r--extra/fvwm-devel/fvwm-devel.desktop6
-rw-r--r--extra/fvwm/ChangeLog5
-rw-r--r--extra/fvwm/PKGBUILD25
-rw-r--r--extra/fvwm/fvwm2.desktop8
-rw-r--r--extra/fwbuilder/PKGBUILD26
-rw-r--r--extra/fwbuilder/fwbuilder.install12
-rw-r--r--extra/fyre/ChangeLog7
-rw-r--r--extra/fyre/PKGBUILD26
-rw-r--r--extra/fyre/fyre.install11
-rw-r--r--extra/garcon/PKGBUILD35
-rw-r--r--extra/gc/PKGBUILD21
-rw-r--r--extra/gcalctool/PKGBUILD25
-rw-r--r--extra/gcalctool/gcalctool.install11
-rw-r--r--extra/gcin/PKGBUILD36
-rw-r--r--extra/gcin/fix_qt4_paths.patch31
-rw-r--r--extra/gcin/fix_x86_64_libdir.patch12
-rw-r--r--extra/gcin/install13
-rw-r--r--extra/gconf-editor/PKGBUILD29
-rw-r--r--extra/gconf-editor/gconf-editor.install22
-rw-r--r--extra/gconf-perl/PKGBUILD23
-rw-r--r--extra/gconf/01_xml-gettext-domain.patch362
-rw-r--r--extra/gconf/PKGBUILD42
-rwxr-xr-xextra/gconf/gconf-merge-schema34
-rw-r--r--extra/gconf/gconf-reload.patch20
-rw-r--r--extra/gconf/gconf.install20
-rwxr-xr-xextra/gconf/gconfpkg50
-rw-r--r--extra/gconfmm/PKGBUILD38
-rw-r--r--extra/gd/ChangeLog11
-rw-r--r--extra/gd/PKGBUILD26
-rw-r--r--extra/gd/libpng14.patch12
-rw-r--r--extra/gdb/PKGBUILD44
-rw-r--r--extra/gdb/gdb.install18
-rw-r--r--extra/gdk-pixbuf2/PKGBUILD32
-rw-r--r--extra/gdk-pixbuf2/gdk-pixbuf2.install11
-rw-r--r--extra/gdl/PKGBUILD23
-rw-r--r--extra/gdm/0001-port-to-libpanel-applet-3.0.patch506
-rw-r--r--extra/gdm/04_fix_external_program_directories.patch48
-rw-r--r--extra/gdm/PKGBUILD62
-rw-r--r--extra/gdm/correctly-give-focus-to-user-chooser.patch46
-rwxr-xr-xextra/gdm/gdm36
-rw-r--r--extra/gdm/gdm-autologin.pam8
-rw-r--r--extra/gdm/gdm-vt-allocation-hack.patch118
-rw-r--r--extra/gdm/gdm.install44
-rw-r--r--extra/gdm/gdm.pam10
-rw-r--r--extra/gdome2/PKGBUILD21
-rw-r--r--extra/gecko-sharp-2.0/PKGBUILD31
-rw-r--r--extra/gecko-sharp-2.0/gecko-sharp-2.0-0.12-xulrunner.patch42
-rw-r--r--extra/gedit/PKGBUILD29
-rw-r--r--extra/gedit/gedit.install22
-rw-r--r--extra/geeqie/PKGBUILD29
-rw-r--r--extra/gegl/PKGBUILD32
-rw-r--r--extra/genius/PKGBUILD32
-rw-r--r--extra/genius/genius.install13
-rw-r--r--extra/geoip/PKGBUILD25
-rw-r--r--extra/gettext-mono/PKGBUILD31
-rw-r--r--extra/gftp/PKGBUILD21
-rw-r--r--extra/ggv/PKGBUILD28
-rw-r--r--extra/ggv/ggv.install22
-rw-r--r--extra/ggz-client-libs/PKGBUILD21
-rw-r--r--extra/ghc/PKGBUILD69
-rw-r--r--extra/ghc/build.mk150
-rw-r--r--extra/ghc/ghc.install19
-rw-r--r--extra/ghex/PKGBUILD29
-rw-r--r--extra/ghex/ghex.install22
-rw-r--r--extra/giblib/PKGBUILD26
-rw-r--r--extra/gif2png/PKGBUILD30
-rw-r--r--extra/giflib/PKGBUILD39
-rw-r--r--extra/gifsicle/PKGBUILD25
-rw-r--r--extra/gimp-dbp/PKGBUILD26
-rw-r--r--extra/gimp-devel/PKGBUILD54
-rw-r--r--extra/gimp-devel/gimp-devel.install12
-rw-r--r--extra/gimp-devel/linux.gpl19
-rw-r--r--extra/gimp-gap/PKGBUILD29
-rw-r--r--extra/gimp-refocus/PKGBUILD34
-rw-r--r--extra/gimp-refocus/refocus-gimp-2.0.patch209
-rw-r--r--extra/gimp-refocus/refocus-gimp-preview.patch440
-rw-r--r--extra/gimp-refocus/refocus-mirror-fix.patch54
-rw-r--r--extra/gimp-ufraw/PKGBUILD34
-rw-r--r--extra/gimp/PKGBUILD46
-rw-r--r--extra/gimp/gimp.install12
-rw-r--r--extra/gimp/linux.gpl19
-rw-r--r--extra/git/ChangeLog36
-rw-r--r--extra/git/PKGBUILD79
-rw-r--r--extra/git/git-daemon70
-rw-r--r--extra/git/git-daemon.conf5
-rw-r--r--extra/gksu/PKGBUILD37
-rw-r--r--extra/glade-perl/PKGBUILD23
-rw-r--r--extra/glade/PKGBUILD26
-rw-r--r--extra/glade/glade.install12
-rw-r--r--extra/glew/PKGBUILD27
-rw-r--r--extra/glhack/ChangeLog12
-rw-r--r--extra/glhack/PKGBUILD50
-rw-r--r--extra/glhack/glhack.install24
-rw-r--r--extra/glib-perl/PKGBUILD29
-rw-r--r--extra/glib/ChangeLog11
-rw-r--r--extra/glib/PKGBUILD31
-rw-r--r--extra/glib/aclocal-fixes.patch11
-rw-r--r--extra/glib/gcc340.patch15
-rw-r--r--extra/glib/glib.install20
-rw-r--r--extra/glibmm/PKGBUILD35
-rw-r--r--extra/glpk/PKGBUILD32
-rw-r--r--extra/glsof/ChangeLog6
-rw-r--r--extra/glsof/PKGBUILD25
-rw-r--r--extra/glsof/glsof.desktop12
-rw-r--r--extra/gluezilla/PKGBUILD29
-rw-r--r--extra/gluezilla/configure_xulrunner.patch11
-rw-r--r--extra/gluezilla/xulrunner2.0.patch150
-rw-r--r--extra/gluezilla/xulrunner2.0_configure.patch51
-rw-r--r--extra/gmetadom/PKGBUILD26
-rw-r--r--extra/gmetadom/gmetadom-0.2.6-gcc43.patch18
-rw-r--r--extra/gmime/PKGBUILD35
-rw-r--r--extra/gmpc/PKGBUILD27
-rw-r--r--extra/gmpc/gmpc.install11
-rw-r--r--extra/gnet/ChangeLog5
-rw-r--r--extra/gnet/PKGBUILD23
-rw-r--r--extra/gnokii/PKGBUILD45
-rw-r--r--extra/gnokii/gnokii.patch12
-rw-r--r--extra/gnome-alsamixer/PKGBUILD24
-rw-r--r--extra/gnome-alsamixer/gnome-alsamixer-0.9.6-gtk24.patch15
-rw-r--r--extra/gnome-applets/PKGBUILD45
-rw-r--r--extra/gnome-applets/add-dbus-glib.patch28
-rw-r--r--extra/gnome-applets/gnome-applets-2.32.1.1-libnotify-0.7.patch53
-rw-r--r--extra/gnome-applets/gnome-applets.install22
-rw-r--r--extra/gnome-bluetooth/61-gnome-bluetooth-rfkill.rules11
-rw-r--r--extra/gnome-bluetooth/PKGBUILD43
-rw-r--r--extra/gnome-bluetooth/gnome-bluetooth-2.32.0-libnotify-0.7.patch27
-rw-r--r--extra/gnome-bluetooth/gnome-bluetooth.install13
-rw-r--r--extra/gnome-control-center/PKGBUILD33
-rw-r--r--extra/gnome-control-center/gnome-control-center.install29
-rw-r--r--extra/gnome-desktop-sharp/PKGBUILD31
-rw-r--r--extra/gnome-desktop-sharp/gnome-desktop-sharp-lib-target.patch9
-rw-r--r--extra/gnome-desktop/PKGBUILD27
-rw-r--r--extra/gnome-device-manager/PKGBUILD26
-rw-r--r--extra/gnome-device-manager/gnome-device-manager.install11
-rw-r--r--extra/gnome-disk-utility/PKGBUILD30
-rw-r--r--extra/gnome-disk-utility/fix-freeze.patch32
-rw-r--r--extra/gnome-disk-utility/gnome-disk-utility.install11
-rw-r--r--extra/gnome-games/03_missing_icons.patch38
-rw-r--r--extra/gnome-games/PKGBUILD53
-rw-r--r--extra/gnome-games/gnome-games.install151
-rw-r--r--extra/gnome-games/scores.pngbin0 -> 462 bytes
-rw-r--r--extra/gnome-keyring-sharp/02_gnome_2.30_compatibility.patch1484
-rw-r--r--extra/gnome-keyring-sharp/PKGBUILD28
-rw-r--r--extra/gnome-keyring/PKGBUILD28
-rw-r--r--extra/gnome-keyring/gnome-keyring.install11
-rw-r--r--extra/gnome-mag/PKGBUILD24
-rw-r--r--extra/gnome-media/PKGBUILD71
-rw-r--r--extra/gnome-media/gnome-media.install22
-rw-r--r--extra/gnome-media/gnome_volume_control_fix_channel_bars.patch12
-rw-r--r--extra/gnome-menus/PKGBUILD30
-rw-r--r--extra/gnome-menus/menus.patch25
-rw-r--r--extra/gnome-netstatus/PKGBUILD31
-rw-r--r--extra/gnome-netstatus/gnome-netstatus.install22
-rw-r--r--extra/gnome-nettool/PKGBUILD27
-rw-r--r--extra/gnome-nettool/gnome-nettool.install11
-rw-r--r--extra/gnome-panel/PKGBUILD54
-rw-r--r--extra/gnome-panel/evolution-appointments.patch13
-rw-r--r--extra/gnome-panel/gnome-panel-bonobo.install11
-rw-r--r--extra/gnome-panel/gnome-panel.install34
-rw-r--r--extra/gnome-perl/PKGBUILD23
-rw-r--r--extra/gnome-phone-manager/PKGBUILD28
-rw-r--r--extra/gnome-phone-manager/gnome-phone-manager.install17
-rw-r--r--extra/gnome-pilot/PKGBUILD35
-rw-r--r--extra/gnome-pilot/gnome-pilot.install17
-rw-r--r--extra/gnome-power-manager/PKGBUILD37
-rw-r--r--extra/gnome-power-manager/gnome-power-manager-2.32.0-libnotify-0.7.patch30
-rw-r--r--extra/gnome-power-manager/gnome-power-manager.install22
-rw-r--r--extra/gnome-python-desktop/PKGBUILD163
-rw-r--r--extra/gnome-python-extras/PKGBUILD87
-rw-r--r--extra/gnome-python-extras/gnome-python-extras-2.25.3-update-for-2.27.2.patch145
-rw-r--r--extra/gnome-python/PKGBUILD69
-rw-r--r--extra/gnome-screensaver/PKGBUILD50
-rw-r--r--extra/gnome-screensaver/gnome-screensaver-2.30.2-libnotify-0.7.patch26
-rw-r--r--extra/gnome-screensaver/gnome-screensaver.install17
-rw-r--r--extra/gnome-screensaver/gnome-screensaver.pam3
-rw-r--r--extra/gnome-session/PKGBUILD29
-rw-r--r--extra/gnome-session/gnome-session.install22
-rw-r--r--extra/gnome-settings-daemon/PKGBUILD74
-rw-r--r--extra/gnome-settings-daemon/add_notify_init.patch14
-rw-r--r--extra/gnome-settings-daemon/gnome-settings-daemon-2.32.1-libnotify-0.7.patch76
-rw-r--r--extra/gnome-settings-daemon/gnome-settings-daemon.install22
-rw-r--r--extra/gnome-settings-daemon/gstreamer-volume-2.29.91.patch809
-rw-r--r--extra/gnome-settings-daemon/gstreamer-volume-2.30.patch861
-rw-r--r--extra/gnome-settings-daemon/gstreamer-volume.patch808
-rw-r--r--extra/gnome-sharp/PKGBUILD27
-rw-r--r--extra/gnome-speech/PKGBUILD26
-rw-r--r--extra/gnome-spell/PKGBUILD30
-rw-r--r--extra/gnome-spell/gnome-spell-enchant.diff551
-rw-r--r--extra/gnome-system-monitor/PKGBUILD29
-rw-r--r--extra/gnome-system-monitor/gnome-system-monitor.install17
-rw-r--r--extra/gnome-terminal/PKGBUILD29
-rw-r--r--extra/gnome-terminal/gnome-terminal.install17
-rw-r--r--extra/gnome-user-share/PKGBUILD32
-rw-r--r--extra/gnome-user-share/gnome-user-share-2.30.1-libnotify-0.7.patch31
-rw-r--r--extra/gnome-user-share/gnome-user-share.install22
-rw-r--r--extra/gnome-utils/PKGBUILD35
-rw-r--r--extra/gnome-utils/gnome-utils.install22
-rw-r--r--extra/gnome-vfs-perl/PKGBUILD23
-rw-r--r--extra/gnome-vfs/PKGBUILD49
-rw-r--r--extra/gnome-vfs/gnome-vfs.install17
-rw-r--r--extra/gnome-vfs/gnutls-config.patch25
-rw-r--r--extra/gnome-vfs/hal-show-volume-names.patch46
-rw-r--r--extra/gnome-vfsmm/PKGBUILD24
-rw-r--r--extra/gnomecanvas-perl/PKGBUILD23
-rw-r--r--extra/gnu-netcat/PKGBUILD23
-rw-r--r--extra/gnu-netcat/gnu-netcat.install13
-rw-r--r--extra/gnucash/PKGBUILD40
-rw-r--r--extra/gnucash/gnucash.install34
-rw-r--r--extra/gnuchess/PKGBUILD25
-rw-r--r--extra/gnugo/LICENSE70
-rw-r--r--extra/gnugo/PKGBUILD26
-rw-r--r--extra/gnugo/gnugo.install18
-rw-r--r--extra/gnumeric/PKGBUILD36
-rw-r--r--extra/gnumeric/gnumeric.install26
-rw-r--r--extra/gnupg/PKGBUILD29
-rw-r--r--extra/gnupg/gnupg.install21
-rw-r--r--extra/gnupg2/PKGBUILD30
-rw-r--r--extra/gnupg2/gnupg2-2.0.16-security.patch11
-rw-r--r--extra/gnupg2/gnupg2.install20
-rw-r--r--extra/gnuplot/PKGBUILD50
-rw-r--r--extra/gnuplot/gnuplot.install35
-rw-r--r--extra/gnutls/PKGBUILD30
-rw-r--r--extra/gnutls/gnutls.install20
-rw-r--r--extra/gob2/PKGBUILD21
-rw-r--r--extra/gobject-introspection/PKGBUILD30
-rw-r--r--extra/goffice/PKGBUILD27
-rw-r--r--extra/gok/PKGBUILD29
-rw-r--r--extra/gok/gok.install22
-rw-r--r--extra/gok/lm.patch12
-rw-r--r--extra/gpart/PKGBUILD43
-rw-r--r--extra/gpart/gpart-0.1h-PIC.patch20
-rw-r--r--extra/gpart/gpart-0.1h-errno.patch20
-rw-r--r--extra/gpart/gpart-0.1h-no-_syscall.patch15
-rw-r--r--extra/gpart/gpart-0.1h-ntfs.patch75
-rw-r--r--extra/gpart/gpart-0.1h-vfat.patch17
-rw-r--r--extra/gparted/PKGBUILD38
-rw-r--r--extra/gparted/gparted.install11
-rw-r--r--extra/gperf/PKGBUILD22
-rw-r--r--extra/gperf/gperf.install20
-rw-r--r--extra/gpgme/PKGBUILD30
-rw-r--r--extra/gpgme/gpgme.install18
-rw-r--r--extra/gphoto2/PKGBUILD21
-rw-r--r--extra/gpsd/LICENSE38
-rw-r--r--extra/gpsd/PKGBUILD77
-rwxr-xr-xextra/gpsd/gpsd43
-rw-r--r--extra/gpsd/gpsd.install16
-rw-r--r--extra/gptfdisk/PKGBUILD30
-rw-r--r--extra/gqmpeg/PKGBUILD21
-rw-r--r--extra/gqview/PKGBUILD20
-rw-r--r--extra/grantlee/PKGBUILD29
-rw-r--r--extra/graphicsmagick/PKGBUILD48
-rw-r--r--extra/graphite/PKGBUILD51
-rw-r--r--extra/graphite/pango-graphite.install12
-rw-r--r--extra/graphviz/LICENSE87
-rw-r--r--extra/graphviz/PKGBUILD49
-rw-r--r--extra/graphviz/install17
-rw-r--r--extra/grip/PKGBUILD22
-rw-r--r--extra/grip/grip.install33
-rw-r--r--extra/gsf-sharp/PKGBUILD29
-rw-r--r--extra/gsl/PKGBUILD30
-rw-r--r--extra/gsl/gsl.install21
-rw-r--r--extra/gsm/PKGBUILD43
-rw-r--r--extra/gsm/gsm.patch198
-rw-r--r--extra/gstreamer0.10-base/PKGBUILD48
-rw-r--r--extra/gstreamer0.10-ffmpeg/PKGBUILD25
-rw-r--r--extra/gstreamer0.10-good/PKGBUILD52
-rw-r--r--extra/gstreamer0.10-good/gstreamer0.10-good-plugins.install19
-rw-r--r--extra/gstreamer0.10-python/PKGBUILD28
-rw-r--r--extra/gstreamer0.10-ugly/PKGBUILD43
-rw-r--r--extra/gstreamer0.10/PKGBUILD36
-rw-r--r--extra/gthumb/PKGBUILD34
-rw-r--r--extra/gthumb/gthumb.install24
-rw-r--r--extra/gtk-engines/PKGBUILD24
-rw-r--r--extra/gtk-qt-engine/PKGBUILD26
-rw-r--r--extra/gtk-sharp-2/PKGBUILD28
-rw-r--r--extra/gtk-theme-switch2/PKGBUILD31
-rw-r--r--extra/gtk-vnc/PKGBUILD30
-rw-r--r--extra/gtk-xfce-engine/PKGBUILD33
-rw-r--r--extra/gtk/PKGBUILD33
-rw-r--r--extra/gtk/aclocal-fixes.patch11
-rw-r--r--extra/gtk/gtk.install20
-rw-r--r--extra/gtk2-perl/PKGBUILD25
-rw-r--r--extra/gtk2/PKGBUILD40
-rw-r--r--extra/gtk2/gtk2.install16
-rw-r--r--extra/gtk2/old-icon-symlinks.patch269
-rw-r--r--extra/gtk2/xid-collision-debug.patch15
-rw-r--r--extra/gtkglext/PKGBUILD27
-rw-r--r--extra/gtkglext/gtk2.20.patch77
-rw-r--r--extra/gtkglext/gtkglext-1.0.6-pangox.patch30
-rw-r--r--extra/gtkglextmm/PKGBUILD24
-rw-r--r--extra/gtkhtml/PKGBUILD27
-rw-r--r--extra/gtkimageview/PKGBUILD27
-rw-r--r--extra/gtkmathview/PKGBUILD30
-rw-r--r--extra/gtkmathview/gtkmathview-0.8.0-cond-t1.patch22
-rw-r--r--extra/gtkmathview/gtkmathview-0.8.0-gcc44.patch67
-rw-r--r--extra/gtkmm/PKGBUILD38
-rw-r--r--extra/gtkpod/PKGBUILD29
-rw-r--r--extra/gtkpod/gtkpod.install11
-rw-r--r--extra/gtksourceview-sharp-2.0/PKGBUILD31
-rw-r--r--extra/gtksourceview-sharp-2.0/gtksourceview-sharp-2.0.install24
-rw-r--r--extra/gtksourceview-sharp-2.0/gtksourceview-sharp2-gnome-print.patch57
-rw-r--r--extra/gtksourceview/PKGBUILD24
-rw-r--r--extra/gtksourceview2/PKGBUILD24
-rw-r--r--extra/gtkspell/PKGBUILD23
-rw-r--r--extra/gucharmap/PKGBUILD30
-rw-r--r--extra/gucharmap/gucharmap.install22
-rw-r--r--extra/guile/PKGBUILD29
-rw-r--r--extra/guile/guile.install30
-rw-r--r--extra/gutenprint/PKGBUILD39
-rw-r--r--extra/gutenprint/gutenprint.install9
-rw-r--r--extra/gv/PKGBUILD32
-rw-r--r--extra/gv/aplinedel.patch11
-rw-r--r--extra/gv/gv.desktop11
-rw-r--r--extra/gv/gv.install16
-rw-r--r--extra/gv/gv.pngbin0 -> 483 bytes
-rw-r--r--extra/gvfs/PKGBUILD100
-rw-r--r--extra/gvfs/gvfs-module.install7
-rw-r--r--extra/gvfs/gvfs.install12
-rw-r--r--extra/gweled/PKGBUILD31
-rw-r--r--extra/gweled/gweled.install24
-rw-r--r--extra/habak/PKGBUILD19
-rw-r--r--extra/hal/PKGBUILD86
-rw-r--r--extra/hal/dbus-error-init.patch231
-rw-r--r--extra/hal/fix-libusb-detection.patch66
-rw-r--r--extra/hal/hal54
-rw-r--r--extra/hal/hal-0.5.9-hide-diagnostic.patch14
-rw-r--r--extra/hal/hal-HDAPS-blacklist.patch30
-rw-r--r--extra/hal/hal-KVM-evdev.patch36
-rw-r--r--extra/hal/hal-ignore-internal-dm-devices.patch43
-rw-r--r--extra/hal/hal-remove-dell-killswitch.patch201
-rw-r--r--extra/hal/hal-use-at-console.patch45
-rw-r--r--extra/hal/hal-xen-unignore-axes.patch39
-rw-r--r--extra/hal/hal.install24
-rw-r--r--extra/hal/handle-input-touchpad.patch101
-rw-r--r--extra/hal/macbook-fix-ioperm.patch41
-rw-r--r--extra/hal/path-max.patch31
-rw-r--r--extra/happy/PKGBUILD30
-rw-r--r--extra/haskell-binary/PKGBUILD39
-rw-r--r--extra/haskell-binary/haskell-binary.install18
-rw-r--r--extra/haskell-cgi/PKGBUILD39
-rw-r--r--extra/haskell-cgi/haskell-cgi.install18
-rw-r--r--extra/haskell-dataenc/PKGBUILD39
-rw-r--r--extra/haskell-dataenc/haskell-dataenc.install18
-rw-r--r--extra/haskell-deepseq/PKGBUILD38
-rw-r--r--extra/haskell-deepseq/haskell-deepseq.install18
-rw-r--r--extra/haskell-fgl/PKGBUILD36
-rw-r--r--extra/haskell-fgl/haskell-fgl.install18
-rw-r--r--extra/haskell-glut/PKGBUILD36
-rw-r--r--extra/haskell-glut/haskell-glut.install18
-rw-r--r--extra/haskell-hashed-storage/PKGBUILD40
-rw-r--r--extra/haskell-hashed-storage/haskell-hashed-storage.install18
-rw-r--r--extra/haskell-haskeline/PKGBUILD39
-rw-r--r--extra/haskell-haskeline/haskell-haskeline.install18
-rw-r--r--extra/haskell-haskell-src/PKGBUILD39
-rw-r--r--extra/haskell-haskell-src/haskell-haskell-src.install18
-rw-r--r--extra/haskell-html/PKGBUILD39
-rw-r--r--extra/haskell-html/haskell-html.install19
-rw-r--r--extra/haskell-http/PKGBUILD40
-rw-r--r--extra/haskell-http/haskell-http.install18
-rw-r--r--extra/haskell-hunit/PKGBUILD37
-rw-r--r--extra/haskell-hunit/haskell-hunit.install19
-rw-r--r--extra/haskell-mmap/PKGBUILD38
-rw-r--r--extra/haskell-mmap/haskell-mmap.install18
-rw-r--r--extra/haskell-mtl/PKGBUILD38
-rw-r--r--extra/haskell-mtl/haskell-mtl.install18
-rw-r--r--extra/haskell-network/PKGBUILD39
-rw-r--r--extra/haskell-network/haskell-network.install18
-rw-r--r--extra/haskell-opengl/PKGBUILD35
-rw-r--r--extra/haskell-opengl/haskell-opengl.install18
-rw-r--r--extra/haskell-parallel/PKGBUILD38
-rw-r--r--extra/haskell-parallel/haskell-parallel.install18
-rw-r--r--extra/haskell-parsec/PKGBUILD39
-rw-r--r--extra/haskell-parsec/haskell-parsec.install18
-rw-r--r--extra/haskell-platform/PKGBUILD39
-rw-r--r--extra/haskell-quickcheck/PKGBUILD38
-rw-r--r--extra/haskell-quickcheck/haskell-quickcheck.install18
-rw-r--r--extra/haskell-regex-base/PKGBUILD37
-rw-r--r--extra/haskell-regex-base/haskell-regex-base.install18
-rw-r--r--extra/haskell-regex-compat/PKGBUILD37
-rw-r--r--extra/haskell-regex-compat/haskell-regex-compat.install18
-rw-r--r--extra/haskell-regex-posix/PKGBUILD37
-rw-r--r--extra/haskell-regex-posix/haskell-regex-posix.install18
-rw-r--r--extra/haskell-stm/PKGBUILD38
-rw-r--r--extra/haskell-stm/haskell-stm.install18
-rw-r--r--extra/haskell-syb/PKGBUILD37
-rw-r--r--extra/haskell-syb/haskell-syb.install18
-rw-r--r--extra/haskell-tar/PKGBUILD37
-rw-r--r--extra/haskell-tar/haskell-tar.install18
-rw-r--r--extra/haskell-terminfo/PKGBUILD38
-rw-r--r--extra/haskell-terminfo/haskell-terminfo.install18
-rw-r--r--extra/haskell-text/PKGBUILD38
-rw-r--r--extra/haskell-text/haskell-text.install18
-rw-r--r--extra/haskell-transformers/PKGBUILD38
-rw-r--r--extra/haskell-transformers/haskell-transformers.install18
-rw-r--r--extra/haskell-utf8-string/PKGBUILD39
-rw-r--r--extra/haskell-utf8-string/haskell-utf8-string.install18
-rw-r--r--extra/haskell-xhtml/PKGBUILD38
-rw-r--r--extra/haskell-xhtml/haskell-xhtml.install19
-rw-r--r--extra/haskell-zlib/PKGBUILD39
-rw-r--r--extra/haskell-zlib/haskell-zlib.install18
-rw-r--r--extra/hd2u/PKGBUILD21
-rw-r--r--extra/hddtemp/PKGBUILD41
-rw-r--r--extra/hddtemp/hddtemp39
-rw-r--r--extra/hddtemp/hddtemp-0.3-beta15-reg-eip.patch22
-rw-r--r--extra/hddtemp/hddtemp.confd2
-rw-r--r--extra/hdf5/PKGBUILD44
-rw-r--r--extra/help2man/PKGBUILD30
-rw-r--r--extra/hercules/PKGBUILD27
-rw-r--r--extra/hexedit/PKGBUILD22
-rw-r--r--extra/hplip/PKGBUILD61
-rw-r--r--extra/hplip/hplip.install10
-rw-r--r--extra/hpoj/PKGBUILD52
-rw-r--r--extra/hpoj/hpoj-gcc4.patch194
-rw-r--r--extra/hpoj/hpoj-kernel26.patch86
-rw-r--r--extra/hpoj/hpoj-pack.patch59
-rw-r--r--extra/hpoj/hpoj.install7
-rw-r--r--extra/hpoj/hpoj0.91-snmp5.5.patch11
-rw-r--r--extra/hpoj/hpoj_gcc43.diff20
-rw-r--r--extra/hspell/PKGBUILD57
-rw-r--r--extra/hspell/hspell-1.0.sharedlib.patch66
-rw-r--r--extra/htdig/PKGBUILD39
-rw-r--r--extra/htdig/gcc4.3.patch15
-rw-r--r--extra/htdig/quoting.patch26
-rw-r--r--extra/htop/ChangeLog14
-rw-r--r--extra/htop/PKGBUILD30
-rw-r--r--extra/hugin/PKGBUILD38
-rw-r--r--extra/hugin/hugin.install15
-rw-r--r--extra/hunspell/PKGBUILD28
-rw-r--r--extra/hwloc/PKGBUILD36
-rw-r--r--extra/hydrogen/PKGBUILD33
-rw-r--r--extra/hylafax/PKGBUILD56
-rw-r--r--extra/hylafax/config.local273
-rwxr-xr-xextra/hylafax/hylafax71
-rw-r--r--extra/hylafax/hylafax.cron.daily4
-rw-r--r--extra/hylafax/hylafax.install49
-rw-r--r--extra/hyphen/PKGBUILD61
-rw-r--r--extra/i8kutils/PKGBUILD28
-rw-r--r--extra/icecast/PKGBUILD54
-rw-r--r--extra/icecast/icecast.logrotate8
-rw-r--r--extra/icecast/icecastd66
-rw-r--r--extra/icecast/start-by-nobody.patch15
-rw-r--r--extra/icedtea-web/PKGBUILD82
-rw-r--r--extra/icedtea-web/fix-man-location.patch13
-rw-r--r--extra/icedtea-web/icedtea-web.install11
-rw-r--r--extra/icewm/ChangeLog15
-rw-r--r--extra/icewm/PKGBUILD24
-rw-r--r--extra/icewm/icewm.desktop6
-rw-r--r--extra/icon-naming-utils/PKGBUILD24
-rw-r--r--extra/icu/PKGBUILD32
-rw-r--r--extra/id3/PKGBUILD27
-rw-r--r--extra/id3/id3-0.78-gcc44.patch29
-rw-r--r--extra/id3lib/PKGBUILD29
-rw-r--r--extra/id3lib/id3lib-3.8.3-CVE-2007-4460.patch49
-rw-r--r--extra/id3lib/id3lib-3.8.3-gcc-4.3.patch83
-rw-r--r--extra/id3lib/patch_id3lib_3.8.3_UTF16_writing_bug.diff39
-rw-r--r--extra/id3v2/PKGBUILD27
-rw-r--r--extra/ifplugd/PKGBUILD47
-rwxr-xr-xextra/ifplugd/ifdown.01-route.sh3
-rw-r--r--extra/ifplugd/ifplugd89
-rw-r--r--extra/ifplugd/ifplugd-0.28-interface.patch13
-rw-r--r--extra/ifplugd/ifplugd.action29
-rwxr-xr-xextra/ifplugd/ifup.01-route.sh5
-rwxr-xr-xextra/ifplugd/ifup.02-ntpdate.sh2
-rw-r--r--extra/ilmbase/PKGBUILD22
-rw-r--r--extra/imagemagick/PKGBUILD74
-rw-r--r--extra/imagemagick/libpng_mmx_patch_x86_64.patch12
-rw-r--r--extra/imagemagick/perlmagick.rpath.patch10
-rw-r--r--extra/imake/LICENSE131
-rw-r--r--extra/imake/PKGBUILD46
-rw-r--r--extra/imake/linuxconfig.patch31
-rw-r--r--extra/imake/xorg-cf-files-1.0.2-xprint.patch39
-rw-r--r--extra/imap/PKGBUILD85
-rw-r--r--extra/imap/imap10
-rw-r--r--extra/imap/ipop210
-rw-r--r--extra/imap/ipop310
-rw-r--r--extra/imlib/CAN-2004-1026.patch510
-rw-r--r--extra/imlib/ChangeLog13
-rw-r--r--extra/imlib/PKGBUILD33
-rw-r--r--extra/imlib/aclocal-fixes.patch20
-rw-r--r--extra/imlib/debian-bug448360.patch92
-rw-r--r--extra/imlib/libpng14.patch12
-rw-r--r--extra/imlib2/PKGBUILD34
-rw-r--r--extra/indent/PKGBUILD31
-rw-r--r--extra/indent/indent-2.2.9-file.diff12
-rw-r--r--extra/indent/indent.install14
-rw-r--r--extra/inkscape/PKGBUILD45
-rw-r--r--extra/inkscape/inkscape.install13
-rw-r--r--extra/iperf/PKGBUILD25
-rw-r--r--extra/iperf/license25
-rw-r--r--extra/ipod-sharp/PKGBUILD26
-rw-r--r--extra/iptraf/PKGBUILD39
-rw-r--r--extra/iptraf/iptraf-3.0.0-headerfix.patch25
-rw-r--r--extra/irqbalance/PKGBUILD34
-rw-r--r--extra/irqbalance/irqbalance.conf.d6
-rw-r--r--extra/irqbalance/irqbalance.rc.d46
-rw-r--r--extra/irssi/PKGBUILD29
-rw-r--r--extra/isapnptools/PKGBUILD21
-rw-r--r--extra/ispell/ChangeLog6
-rw-r--r--extra/ispell/PKGBUILD60
-rw-r--r--extra/ispell/getline.patch47
-rw-r--r--extra/ispell/license.txt35
-rw-r--r--extra/ivtv-utils/PKGBUILD36
-rw-r--r--extra/jack/PKGBUILD38
-rw-r--r--extra/jack/jack.changelog19
-rw-r--r--extra/jade/PKGBUILD37
-rw-r--r--extra/jasper/PKGBUILD44
-rw-r--r--extra/jasper/jasper-1.900.1-CVE-2008-3520.patch928
-rw-r--r--extra/jasper/jasper-1.900.1-CVE-2008-3522.patch14
-rw-r--r--extra/jasper/jpc_dec.c.patch18
-rw-r--r--extra/jasper/patch-libjasper-stepsizes-overflow.diff14
-rw-r--r--extra/java-access-bridge/PKGBUILD23
-rw-r--r--extra/jhead/LICENSE12
-rw-r--r--extra/jhead/PKGBUILD26
-rw-r--r--extra/json-glib/PKGBUILD22
-rw-r--r--extra/k3b/PKGBUILD39
-rw-r--r--extra/k3b/fix-crash-with-qt-4.7.0.patch37
-rw-r--r--extra/k3b/k3b.install12
-rw-r--r--extra/k9copy/PKGBUILD25
-rw-r--r--extra/k9copy/k9copy.install11
-rw-r--r--extra/kaffeine/PKGBUILD26
-rw-r--r--extra/kde-agent/PKGBUILD20
-rw-r--r--extra/kde-agent/agent-shutdown.sh13
-rw-r--r--extra/kde-agent/agent-startup.sh19
-rw-r--r--extra/kdeaccessibility/PKGBUILD98
-rw-r--r--extra/kdeaccessibility/kdeaccessibility.install11
-rw-r--r--extra/kdeadmin/PKGBUILD80
-rw-r--r--extra/kdeadmin/kdeadmin.install11
-rw-r--r--extra/kdeadmin/syslog-path.patch11
-rw-r--r--extra/kdeartwork/PKGBUILD102
-rw-r--r--extra/kdebase-runtime/PKGBUILD39
-rw-r--r--extra/kdebase-runtime/kdebase-runtime.install12
-rw-r--r--extra/kdebase-workspace/PKGBUILD71
-rw-r--r--extra/kdebase-workspace/fixpath.patch34
-rw-r--r--extra/kdebase-workspace/kde-np.pam7
-rw-r--r--extra/kdebase-workspace/kde.pam7
-rw-r--r--extra/kdebase-workspace/kdebase-workspace.install23
-rw-r--r--extra/kdebase-workspace/kdm36
-rw-r--r--extra/kdebase-workspace/kdm-zsh-profile.patch11
-rw-r--r--extra/kdebase-workspace/kscreensaver.pam1
-rw-r--r--extra/kdebase-workspace/terminate-server.patch11
-rw-r--r--extra/kdebase/PKGBUILD129
-rw-r--r--extra/kdebase/kdebase.install11
-rw-r--r--extra/kdebindings/PKGBUILD70
-rw-r--r--extra/kdeedu/PKGBUILD276
-rw-r--r--extra/kdeedu/kdeedu.install11
-rw-r--r--extra/kdegames/PKGBUILD515
-rw-r--r--extra/kdegames/kdegames-kbattleship.install22
-rw-r--r--extra/kdegames/kdegames-kreversi.install22
-rw-r--r--extra/kdegames/kdegames-ksquares.install22
-rw-r--r--extra/kdegames/kdegames-palapeli.install12
-rw-r--r--extra/kdegames/kdegames.install11
-rw-r--r--extra/kdegraphics/PKGBUILD141
-rw-r--r--extra/kdegraphics/kdegraphics.install11
-rw-r--r--extra/kdelibs/CVE-2011-1168.patch14
-rw-r--r--extra/kdelibs/PKGBUILD70
-rw-r--r--extra/kdelibs/abs-syntax-highlight.patch12
-rw-r--r--extra/kdelibs/archlinux-menu.patch22
-rw-r--r--extra/kdelibs/fix-empty-dolphin-home.patch389
-rw-r--r--extra/kdelibs/kde-applications-menu.patch22
-rw-r--r--extra/kdelibs/kdelibs.install12
-rw-r--r--extra/kdelibs3/PKGBUILD85
-rw-r--r--extra/kdelibs3/acinclude.patch66
-rw-r--r--extra/kdelibs3/kconf_updaterc2
-rwxr-xr-xextra/kdelibs3/kde3.profile6
-rw-r--r--extra/kdelibs3/kde4-compatibility.patch1012
-rw-r--r--extra/kdelibs3/kdelibs3.install12
-rw-r--r--extra/kdemultimedia/PKGBUILD109
-rw-r--r--extra/kdemultimedia/kdemultimedia.install11
-rw-r--r--extra/kdemultimedia/mplayerthumbs.config2
-rw-r--r--extra/kdenetwork/PKGBUILD114
-rw-r--r--extra/kdenetwork/kdenetwork.install11
-rw-r--r--extra/kdepim-runtime/PKGBUILD32
-rw-r--r--extra/kdepim-runtime/kdepim-runtime.install12
-rw-r--r--extra/kdepim/PKGBUILD237
-rw-r--r--extra/kdepim/kdepim.install11
-rw-r--r--extra/kdepimlibs/PKGBUILD33
-rw-r--r--extra/kdepimlibs/kdepimlibs.install11
-rw-r--r--extra/kdeplasma-addons/PKGBUILD603
-rw-r--r--extra/kdeplasma-addons/kdeplasma-addons-applets-lancelot.install12
-rw-r--r--extra/kdeplasma-addons/kdeplasma-addons-applets.install11
-rw-r--r--extra/kdeplasma-applets-networkmanagement/PKGBUILD34
-rw-r--r--extra/kdeplasma-applets-networkmanagement/kdeplasma-applets-networkmanagement.install11
-rw-r--r--extra/kdesdk/PKGBUILD243
-rw-r--r--extra/kdesdk/fix-python2-path.patch64
-rw-r--r--extra/kdesdk/kdesdk-kate.install12
-rw-r--r--extra/kdesdk/kdesdk-okteta.install12
-rw-r--r--extra/kdesdk/kdesdk.install11
-rw-r--r--extra/kdetoys/PKGBUILD56
-rw-r--r--extra/kdetoys/kdetoys.install11
-rw-r--r--extra/kdeutils/PKGBUILD180
-rw-r--r--extra/kdeutils/kdeutils.install11
-rw-r--r--extra/kdevelop-pg-qt/PKGBUILD29
-rw-r--r--extra/kdevelop-php/PKGBUILD47
-rw-r--r--extra/kdevelop/PKGBUILD31
-rw-r--r--extra/kdevelop/kdevelop.install12
-rw-r--r--extra/kdevplatform/PKGBUILD33
-rw-r--r--extra/kdevplatform/kdevplatform.install11
-rw-r--r--extra/kdewebdev/PKGBUILD67
-rw-r--r--extra/kdewebdev/kdewebdev.install11
-rw-r--r--extra/kdiff3/PKGBUILD32
-rw-r--r--extra/kdiff3/docbook.patch40
-rw-r--r--extra/kdiff3/kdiff3.install11
-rw-r--r--extra/kexec-tools/PKGBUILD37
-rwxr-xr-xextra/kexec-tools/kexec45
-rw-r--r--extra/kexec-tools/kexec-vesafb.diff78
-rw-r--r--extra/kexec-tools/kexec.conf.d16
-rw-r--r--extra/keytouch-editor/ChangeLog8
-rw-r--r--extra/keytouch-editor/PKGBUILD25
-rw-r--r--extra/keytouch-editor/keytouch-editor-3.1.3-glibc28.patch12
-rw-r--r--extra/keytouch-editor/keytouch-editor.install10
-rw-r--r--extra/keytouch/ChangeLog18
-rw-r--r--extra/keytouch/PKGBUILD46
-rwxr-xr-xextra/keytouch/Xsession8
-rwxr-xr-xextra/keytouch/keytouch.daemon41
-rw-r--r--extra/keytouch/keytouch.desktop9
-rw-r--r--extra/keytouch/keytouch.install14
-rw-r--r--extra/keyutils/PKGBUILD24
-rw-r--r--extra/kile/PKGBUILD32
-rw-r--r--extra/kile/kile.install11
-rw-r--r--extra/kino/PKGBUILD26
-rw-r--r--extra/kino/kino.install14
-rw-r--r--extra/kipi-plugins/PKGBUILD37
-rw-r--r--extra/kipi-plugins/kipi-plugins.install11
-rw-r--r--extra/kismet/PKGBUILD38
-rw-r--r--extra/kismet/kismet-2008-05-R1-infinite-loop.diff20
-rw-r--r--extra/kismet/kismet-build.patch11
-rw-r--r--extra/kmldonkey/PKGBUILD33
-rw-r--r--extra/kmldonkey/kmldonkey.install11
-rw-r--r--extra/kmplayer/PKGBUILD31
-rw-r--r--extra/kmplayer/kmplayer.install11
-rw-r--r--extra/kobodeluxe/ChangeLog8
-rw-r--r--extra/kobodeluxe/PKGBUILD44
-rw-r--r--extra/kobodeluxe/kobodeluxe-gcc-4.3.patch83
-rw-r--r--extra/kobodeluxe/kobodeluxe.install21
-rw-r--r--extra/koffice/PKGBUILD298
-rw-r--r--extra/koffice/filters.install11
-rw-r--r--extra/koffice/kde4-koffice-libwpg02.patch1323
-rw-r--r--extra/koffice/koffice.install11
-rw-r--r--extra/koffice/krita.install12
-rw-r--r--extra/konq-plugins/PKGBUILD31
-rw-r--r--extra/konq-plugins/konq-plugins.install11
-rw-r--r--extra/konversation/PKGBUILD36
-rw-r--r--extra/konversation/konversation.install11
-rw-r--r--extra/kradio/PKGBUILD28
-rw-r--r--extra/krusader/PKGBUILD40
-rw-r--r--extra/krusader/add-xz-support.patch403
-rw-r--r--extra/krusader/krusader.install11
-rw-r--r--extra/ksensors/PKGBUILD23
-rw-r--r--extra/ksensors/ksensors.patch79
-rw-r--r--extra/kshutdown/PKGBUILD30
-rw-r--r--extra/kshutdown/kshutdown.install11
-rw-r--r--extra/ktorrent/PKGBUILD41
-rw-r--r--extra/ktorrent/httpserver.patch10
-rw-r--r--extra/ktorrent/ktorrent.install12
-rw-r--r--extra/kwebkitpart/PKGBUILD30
-rw-r--r--extra/kwebkitpart/kwebkitpart.install11
-rw-r--r--extra/lablgtk/PKGBUILD25
-rw-r--r--extra/lablgtk2/PKGBUILD24
-rw-r--r--extra/lablgtk2/ocaml-3.12.patch237
-rw-r--r--extra/labplot/PKGBUILD40
-rw-r--r--extra/labplot/define-missing-constant.patch15
-rw-r--r--extra/labplot/hdf5-1.8.patch58
-rw-r--r--extra/ladspa/PKGBUILD25
-rw-r--r--extra/ladspa/hardcode-path.patch28
-rw-r--r--extra/ladspa/ladspa-sdk-1.12-gcc4.patch18
-rw-r--r--extra/lame/03_lame-ffmpeg.diff72
-rw-r--r--extra/lame/PKGBUILD26
-rw-r--r--extra/lame/shared-frontend.patch23
-rw-r--r--extra/lapack/LICENSE.blas19
-rw-r--r--extra/lapack/Makefile.blas148
-rw-r--r--extra/lapack/Makefile.lapack390
-rw-r--r--extra/lapack/PKGBUILD84
-rw-r--r--extra/lapack/lapack-3.1.1-make.inc.patch23
-rw-r--r--extra/latex2html/PKGBUILD45
-rw-r--r--extra/latex2html/latex2html.install15
-rw-r--r--extra/latex2rtf/PKGBUILD22
-rw-r--r--extra/lbreakout2/PKGBUILD44
-rw-r--r--extra/lbreakout2/lbreakout2.desktop10
-rw-r--r--extra/lbreakout2/lbreakout2.pngbin0 -> 1930 bytes
-rw-r--r--extra/lcab/PKGBUILD21
-rw-r--r--extra/lcms/PKGBUILD24
-rw-r--r--extra/leafpad/PKGBUILD28
-rw-r--r--extra/leafpad/leafpad.install12
-rw-r--r--extra/lensfun/PKGBUILD21
-rw-r--r--extra/lensfun/lensfun-0.2.3-as-needed.patch13
-rw-r--r--extra/lensfun/lensfun-0.2.3-glibc-2.10.patch11
-rw-r--r--extra/lesstif/040_fedora_XxxxProperty-64bit.diff20
-rw-r--r--extra/lesstif/ChangeLog19
-rw-r--r--extra/lesstif/LICENSE26
-rw-r--r--extra/lesstif/PKGBUILD42
-rw-r--r--extra/lftp/PKGBUILD30
-rw-r--r--extra/libao/PKGBUILD42
-rw-r--r--extra/libao/libao.conf1
-rw-r--r--extra/libart-lgpl/PKGBUILD20
-rw-r--r--extra/libart-lgpl/art_misc.h-cplusplus.patch35
-rw-r--r--extra/libass/PKGBUILD24
-rw-r--r--extra/libassuan/PKGBUILD25
-rw-r--r--extra/libasyncns/ChangeLog13
-rw-r--r--extra/libasyncns/PKGBUILD29
-rw-r--r--extra/libatasmart/PKGBUILD22
-rw-r--r--extra/libavc1394/PKGBUILD22
-rw-r--r--extra/libbeagle/PKGBUILD28
-rw-r--r--extra/libbluedevil/PKGBUILD29
-rw-r--r--extra/libbonobo/PKGBUILD29
-rw-r--r--extra/libbonobo/bonobo-activation-config.xml13
-rw-r--r--extra/libbonobo/libbonobo.install7
-rw-r--r--extra/libbonoboui/PKGBUILD24
-rw-r--r--extra/libbtctl/PKGBUILD24
-rw-r--r--extra/libburn/PKGBUILD27
-rw-r--r--extra/libcaca/PKGBUILD23
-rw-r--r--extra/libcanberra/PKGBUILD57
-rw-r--r--extra/libcanberra/libcanberra-gtk-module.sh10
-rw-r--r--extra/libcanberra/libcanberra.install23
-rw-r--r--extra/libcdaudio/01-cddb-bufferoverflow.patch15
-rw-r--r--extra/libcdaudio/02-cddb-bufferoverflow.patch15
-rw-r--r--extra/libcdaudio/PKGBUILD32
-rw-r--r--extra/libcddb/PKGBUILD22
-rw-r--r--extra/libcdio/PKGBUILD25
-rw-r--r--extra/libcdio/libcdio.install13
-rw-r--r--extra/libchamplain/PKGBUILD28
-rw-r--r--extra/libchewing/PKGBUILD26
-rw-r--r--extra/libcroco/PKGBUILD21
-rw-r--r--extra/libcue/PKGBUILD24
-rw-r--r--extra/libdaemon/PKGBUILD24
-rw-r--r--extra/libdatrie/PKGBUILD22
-rw-r--r--extra/libdbusmenu-qt/PKGBUILD29
-rw-r--r--extra/libdc1394/PKGBUILD25
-rw-r--r--extra/libdca/PKGBUILD26
-rw-r--r--extra/libdiscid/PKGBUILD26
-rw-r--r--extra/libdmapsharing/PKGBUILD21
-rw-r--r--extra/libdmtx/PKGBUILD26
-rw-r--r--extra/libdmx/PKGBUILD25
-rw-r--r--extra/libdrm/COPYING48
-rw-r--r--extra/libdrm/PKGBUILD43
-rw-r--r--extra/libdrm/intel-git-fixes.patch144
-rw-r--r--extra/libdrm/no-pthread-stubs.patch65
-rw-r--r--extra/libdv/PKGBUILD24
-rw-r--r--extra/libdvbpsi/PKGBUILD29
-rw-r--r--extra/libdvdcss/PKGBUILD28
-rw-r--r--extra/libdvdnav/PKGBUILD27
-rw-r--r--extra/libdvdnav/deadlock.patch17
-rw-r--r--extra/libdvdread/DVDFileStat.patch237
-rw-r--r--extra/libdvdread/PKGBUILD35
-rw-r--r--extra/libebml/PKGBUILD24
-rw-r--r--extra/libepc/PKGBUILD23
-rw-r--r--extra/libetpan/PKGBUILD26
-rw-r--r--extra/libexif/PKGBUILD26
-rw-r--r--extra/libffado/PKGBUILD59
-rw-r--r--extra/libffi/PKGBUILD24
-rw-r--r--extra/libffi/libffi.install18
-rw-r--r--extra/libfm/0001-filename-with-spaces-not-supported.patch345
-rw-r--r--extra/libfm/PKGBUILD30
-rw-r--r--extra/libfm/libfm.install14
-rw-r--r--extra/libfontenc/PKGBUILD27
-rw-r--r--extra/libfprint/50-fprint.rules19
-rw-r--r--extra/libfprint/PKGBUILD30
-rw-r--r--extra/libfprint/fprint.install19
-rw-r--r--extra/libfs/PKGBUILD24
-rw-r--r--extra/libftdi/PKGBUILD28
-rw-r--r--extra/libfwbuilder/PKGBUILD27
-rw-r--r--extra/libgadu/PKGBUILD29
-rw-r--r--extra/libgail-gnome/PKGBUILD29
-rw-r--r--extra/libgail-gnome/libgail-gnome.install19
-rw-r--r--extra/libgda/PKGBUILD31
-rw-r--r--extra/libgdata/PKGBUILD22
-rw-r--r--extra/libgdiplus/PKGBUILD26
-rw-r--r--extra/libgdiplus/gdiplus-png14.patch20
-rw-r--r--extra/libgee/PKGBUILD23
-rw-r--r--extra/libggz/PKGBUILD22
-rw-r--r--extra/libgksu/PKGBUILD31
-rw-r--r--extra/libgksu/libgksu-2.0.12-revert-forkpty.patch359
-rw-r--r--extra/libgksu/libgksu.install17
-rw-r--r--extra/libglade/PKGBUILD28
-rw-r--r--extra/libglade/glade.install25
-rw-r--r--extra/libglade/libglade-2.0.1-nowarning.patch39
-rw-r--r--extra/libglademm/PKGBUILD22
-rw-r--r--extra/libgme/PKGBUILD25
-rw-r--r--extra/libgnome-keyring/PKGBUILD24
-rw-r--r--extra/libgnome/PKGBUILD49
-rw-r--r--extra/libgnome/libgnome.install17
-rw-r--r--extra/libgnomecanvas/PKGBUILD23
-rw-r--r--extra/libgnomecanvasmm/PKGBUILD24
-rw-r--r--extra/libgnomecups/PKGBUILD27
-rw-r--r--extra/libgnomecups/libgnomecups_0.2.3-ignore-ipp-not-found.patch11
-rw-r--r--extra/libgnomekbd/PKGBUILD28
-rw-r--r--extra/libgnomekbd/libgnomekbd.install17
-rw-r--r--extra/libgnomemm/PKGBUILD24
-rw-r--r--extra/libgnomeprint/PKGBUILD24
-rw-r--r--extra/libgnomeprintui/PKGBUILD22
-rw-r--r--extra/libgnomeui/PKGBUILD24
-rw-r--r--extra/libgnomeuimm/PKGBUILD24
-rw-r--r--extra/libgphoto2/PKGBUILD40
-rw-r--r--extra/libgphoto2/libgphoto2.install16
-rw-r--r--extra/libgpod/PKGBUILD30
-rw-r--r--extra/libgsf/PKGBUILD61
-rw-r--r--extra/libgsf/libgsf-gnome.install19
-rw-r--r--extra/libgtkhtml/PKGBUILD22
-rw-r--r--extra/libgtop/PKGBUILD25
-rw-r--r--extra/libgtop/libgtop.install13
-rw-r--r--extra/libguess/PKGBUILD25
-rw-r--r--extra/libgweather/01_gettext_not_xml.patch527
-rw-r--r--extra/libgweather/PKGBUILD37
-rw-r--r--extra/libgweather/libgweather.install22
-rw-r--r--extra/libhangul/PKGBUILD26
-rw-r--r--extra/libical/PKGBUILD31
-rw-r--r--extra/libice/PKGBUILD25
-rw-r--r--extra/libid3tag/10_utf16.diff48
-rw-r--r--extra/libid3tag/11_unknown_encoding.diff37
-rw-r--r--extra/libid3tag/CVE-2008-2109.patch11
-rw-r--r--extra/libid3tag/PKGBUILD38
-rw-r--r--extra/libid3tag/id3tag.pc10
-rw-r--r--extra/libidl2/PKGBUILD27
-rw-r--r--extra/libidl2/libidl2.install13
-rw-r--r--extra/libidn/PKGBUILD29
-rw-r--r--extra/libidn/libidn.install19
-rw-r--r--extra/libiec61883/PKGBUILD25
-rw-r--r--extra/libieee1284/PKGBUILD26
-rw-r--r--extra/libifp/PKGBUILD26
-rw-r--r--extra/libimobiledevice/PKGBUILD31
-rw-r--r--extra/libimobiledevice/swig-version-check.patch14
-rw-r--r--extra/libindi/PKGBUILD40
-rw-r--r--extra/libindi/linking-pthread.patch11
-rw-r--r--extra/libiodbc/PKGBUILD36
-rw-r--r--extra/libirman/PKGBUILD22
-rw-r--r--extra/libisoburn/PKGBUILD22
-rw-r--r--extra/libisofs/PKGBUILD29
-rw-r--r--extra/libjpeg-turbo/PKGBUILD33
-rw-r--r--extra/libksba/PKGBUILD22
-rw-r--r--extra/libktorrent/PKGBUILD31
-rw-r--r--extra/liblastfm/PKGBUILD32
-rw-r--r--extra/liblastfm/no-ftools.patch36
-rw-r--r--extra/liblo/PKGBUILD22
-rw-r--r--extra/liblqr/PKGBUILD22
-rw-r--r--extra/liblrdf/PKGBUILD27
-rw-r--r--extra/liblrdf/md5.patch18
-rw-r--r--extra/libmad/PKGBUILD40
-rw-r--r--extra/libmad/amd64-64bit.diff12
-rw-r--r--extra/libmad/frame_length.diff197
-rw-r--r--extra/libmad/libmad.patch117
-rw-r--r--extra/libmad/optimize.diff77
-rw-r--r--extra/libmatroska/PKGBUILD24
-rw-r--r--extra/libmcrypt/PKGBUILD24
-rw-r--r--extra/libmcs/PKGBUILD27
-rw-r--r--extra/libmikmod/PKGBUILD42
-rw-r--r--extra/libmikmod/libmikmod-3.1.12-64bit-fix.diff47
-rw-r--r--extra/libmikmod/libmikmod-3.1.12-exitcrash-fix.diff21
-rw-r--r--extra/libmikmod/libmikmod-3.1.12-loopingvolume-fix.diff15
-rw-r--r--extra/libmikmod/libmikmod-3.1.12-md_sngchn-fix.diff112
-rw-r--r--extra/libmikmod/libmikmod-CVE-2009-0179.patch33
-rw-r--r--extra/libmikmod/libmikmod.install18
-rw-r--r--extra/libmms/PKGBUILD24
-rw-r--r--extra/libmms/libmms-0.5-this-keyword.patch18
-rw-r--r--extra/libmng/PKGBUILD25
-rw-r--r--extra/libmodplug/PKGBUILD24
-rw-r--r--extra/libmowgli/PKGBUILD27
-rw-r--r--extra/libmp3splt/PKGBUILD27
-rw-r--r--extra/libmp4v2/PKGBUILD28
-rw-r--r--extra/libmpcdec/PKGBUILD22
-rw-r--r--extra/libmpd/PKGBUILD22
-rw-r--r--extra/libmpdclient/PKGBUILD25
-rw-r--r--extra/libmpeg2/PKGBUILD28
-rw-r--r--extra/libmsn/PKGBUILD33
-rw-r--r--extra/libmsn/openssl1.patch17
-rw-r--r--extra/libmspack/PKGBUILD22
-rw-r--r--extra/libmtp/PKGBUILD32
-rw-r--r--extra/libmusicbrainz3/PKGBUILD29
-rw-r--r--extra/libmythes/PKGBUILD33
-rw-r--r--extra/libnet/PKGBUILD29
-rw-r--r--extra/libnice/PKGBUILD26
-rw-r--r--extra/libnotify/PKGBUILD30
-rw-r--r--extra/libnotify/libnotify-0.7.1-gtk3-tests.patch110
-rw-r--r--extra/libnova/PKGBUILD22
-rw-r--r--extra/libofa/PKGBUILD38
-rw-r--r--extra/libofa/gcc-4.patch39
-rw-r--r--extra/libofa/gcc4.3.patch35
-rw-r--r--extra/libofa/gcc4.5.patch10
-rw-r--r--extra/libofx/PKGBUILD38
-rw-r--r--extra/libogg/PKGBUILD39
-rw-r--r--extra/libogg/config_types.h9
-rw-r--r--extra/liboil/PKGBUILD25
-rw-r--r--extra/liborigin2/PKGBUILD58
-rw-r--r--extra/liborigin2/liborigin.pro.archlinux41
-rw-r--r--extra/libotf/PKGBUILD25
-rw-r--r--extra/libotr/PKGBUILD22
-rw-r--r--extra/libots/PKGBUILD28
-rw-r--r--extra/libpano13/PKGBUILD24
-rw-r--r--extra/libpciaccess/PKGBUILD24
-rw-r--r--extra/libplist/PKGBUILD36
-rw-r--r--extra/libpng/PKGBUILD37
-rw-r--r--extra/libproxy/PKGBUILD41
-rw-r--r--extra/libpst/PKGBUILD41
-rw-r--r--extra/libqalculate/PKGBUILD28
-rw-r--r--extra/libraw1394/PKGBUILD27
-rw-r--r--extra/libreoffice/ArchLinux.patch11
-rw-r--r--extra/libreoffice/PKGBUILD652
-rw-r--r--extra/libreoffice/buildfix_64bit_system_libjpeg.diff11
-rw-r--r--extra/libreoffice/libreoffice.install25
-rw-r--r--extra/librsvg/PKGBUILD31
-rw-r--r--extra/librsvg/librsvg.install11
-rw-r--r--extra/libsamplerate/PKGBUILD26
-rw-r--r--extra/libsexy/PKGBUILD23
-rw-r--r--extra/libshout/PKGBUILD23
-rw-r--r--extra/libsidplay/PKGBUILD23
-rw-r--r--extra/libsidplay/libsidplay-1.36.59-gcc43.patch40
-rw-r--r--extra/libsigc++/PKGBUILD40
-rw-r--r--extra/libsigsegv/PKGBUILD22
-rw-r--r--extra/libsm/PKGBUILD25
-rw-r--r--extra/libsmbios/PKGBUILD47
-rw-r--r--extra/libsndfile/PKGBUILD26
-rw-r--r--extra/libsoup/PKGBUILD46
-rw-r--r--extra/libspectre/PKGBUILD25
-rw-r--r--extra/libssh/PKGBUILD31
-rw-r--r--extra/libstdc++5/PKGBUILD41
-rw-r--r--extra/libstdc++5/gcc-3.4.3-no_multilib_amd64.patch11
-rw-r--r--extra/libstroke/ChangeLog8
-rw-r--r--extra/libstroke/PKGBUILD35
-rw-r--r--extra/libstroke/libgstroke-Makefile.am.patch11
-rw-r--r--extra/libstroke/libstroke-Makefile.am.patch15
-rw-r--r--extra/libtasn1/PKGBUILD27
-rw-r--r--extra/libtasn1/libtasn1.install18
-rw-r--r--extra/libthai/PKGBUILD22
-rw-r--r--extra/libtheora/PKGBUILD27
-rw-r--r--extra/libtiff/ChangeLog35
-rw-r--r--extra/libtiff/PKGBUILD32
-rw-r--r--extra/libtiff/libtiff-CVE-2009-2285.patch22
-rw-r--r--extra/libtorrent-rasterbar/PKGBUILD29
-rw-r--r--extra/libunique/PKGBUILD27
-rw-r--r--extra/libunique/unique-gdbus.patch529
-rw-r--r--extra/libupnp/PKGBUILD30
-rw-r--r--extra/libva/PKGBUILD35
-rw-r--r--extra/libva/libva-dont-install-tests.patch47
-rw-r--r--extra/libvdpau/PKGBUILD26
-rw-r--r--extra/libvisual-plugins/PKGBUILD22
-rw-r--r--extra/libvisual/PKGBUILD22
-rw-r--r--extra/libvncserver/PKGBUILD22
-rw-r--r--extra/libvorbis/PKGBUILD29
-rw-r--r--extra/libvpx/PKGBUILD32
-rw-r--r--extra/libwebkit/PKGBUILD39
-rw-r--r--extra/libwebkit/introspection.patch22
-rw-r--r--extra/libwmf/PKGBUILD41
-rw-r--r--extra/libwmf/libpng14.patch12
-rw-r--r--extra/libwmf/libwmf-0.2.8.4-useafterfree.patch10
-rw-r--r--extra/libwmf/libwmf.install13
-rw-r--r--extra/libwnck/PKGBUILD22
-rw-r--r--extra/libwpd/PKGBUILD28
-rw-r--r--extra/libwpg/PKGBUILD25
-rw-r--r--extra/libx11/PKGBUILD35
-rw-r--r--extra/libx11/xorg.sh15
-rw-r--r--extra/libx86/PKGBUILD36
-rw-r--r--extra/libx86/libx86-ifmask.patch21
-rw-r--r--extra/libxau/PKGBUILD26
-rw-r--r--extra/libxaw/PKGBUILD24
-rw-r--r--extra/libxcb/PKGBUILD33
-rw-r--r--extra/libxcb/libxcb-1.1-no-pthread-stubs.patch12
-rw-r--r--extra/libxcomposite/PKGBUILD25
-rw-r--r--extra/libxcursor/PKGBUILD25
-rw-r--r--extra/libxdamage/PKGBUILD24
-rw-r--r--extra/libxdmcp/PKGBUILD25
-rw-r--r--extra/libxevie/PKGBUILD24
-rw-r--r--extra/libxext/PKGBUILD25
-rw-r--r--extra/libxfce4menu/PKGBUILD27
-rw-r--r--extra/libxfce4ui/PKGBUILD36
-rw-r--r--extra/libxfce4util/PKGBUILD34
-rw-r--r--extra/libxfcegui4/PKGBUILD34
-rw-r--r--extra/libxfcegui4/libxfcegui4.install12
-rw-r--r--extra/libxfixes/PKGBUILD25
-rw-r--r--extra/libxfont/PKGBUILD24
-rw-r--r--extra/libxft/PKGBUILD25
-rw-r--r--extra/libxi/PKGBUILD29
-rw-r--r--extra/libxinerama/PKGBUILD24
-rw-r--r--extra/libxkbfile/PKGBUILD25
-rw-r--r--extra/libxkbui/LICENSE25
-rw-r--r--extra/libxkbui/PKGBUILD23
-rw-r--r--extra/libxklavier/PKGBUILD24
-rw-r--r--extra/libxmi/PKGBUILD22
-rw-r--r--extra/libxml++/PKGBUILD39
-rw-r--r--extra/libxml2/PKGBUILD36
-rw-r--r--extra/libxml2/largefile64.patch12
-rw-r--r--extra/libxml2/shared_library_versionning.patch21
-rw-r--r--extra/libxmu/PKGBUILD25
-rw-r--r--extra/libxp/PKGBUILD25
-rw-r--r--extra/libxpm/PKGBUILD24
-rw-r--r--extra/libxrandr/PKGBUILD24
-rw-r--r--extra/libxrender/PKGBUILD24
-rw-r--r--extra/libxres/PKGBUILD25
-rw-r--r--extra/libxslt/PKGBUILD31
-rw-r--r--extra/libxss/PKGBUILD25
-rw-r--r--extra/libxt/PKGBUILD25
-rw-r--r--extra/libxtst/PKGBUILD25
-rw-r--r--extra/libxv/PKGBUILD25
-rw-r--r--extra/libxvmc/PKGBUILD24
-rw-r--r--extra/libxxf86dga/PKGBUILD26
-rw-r--r--extra/libxxf86vm/PKGBUILD25
-rw-r--r--extra/libytnef/PKGBUILD22
-rw-r--r--extra/libzip/PKGBUILD26
-rw-r--r--extra/libzvt/PKGBUILD26
-rw-r--r--extra/licq/PKGBUILD33
-rw-r--r--extra/liferea/ChangeLog143
-rw-r--r--extra/liferea/PKGBUILD39
-rw-r--r--extra/liferea/libnotify-0.7.patch21
-rw-r--r--extra/liferea/liferea.install22
-rw-r--r--extra/lighttpd/PKGBUILD60
-rw-r--r--extra/lighttpd/lighttpd.conf13
-rw-r--r--extra/lighttpd/lighttpd.logrotate.d6
-rw-r--r--extra/lighttpd/lighttpd.rc.d129
-rw-r--r--extra/link-grammar/PKGBUILD30
-rw-r--r--extra/linux_logo/PKGBUILD26
-rw-r--r--extra/liquidwar/PKGBUILD29
-rw-r--r--extra/liquidwar/liquidwar.install16
-rw-r--r--extra/lirc-utils/PKGBUILD79
-rw-r--r--extra/lirc-utils/irexec.conf5
-rwxr-xr-xextra/lirc-utils/irexecd38
-rw-r--r--extra/lirc-utils/lirc.logrotate5
-rwxr-xr-xextra/lirc-utils/lircd52
-rw-r--r--extra/lirc-utils/lircd.conf8
-rwxr-xr-xextra/lirc-utils/lircmd36
-rw-r--r--extra/lirc/PKGBUILD89
-rw-r--r--extra/lirc/irexec.conf5
-rwxr-xr-xextra/lirc/irexecd38
-rw-r--r--extra/lirc/lirc.install16
-rw-r--r--extra/lirc/lirc.logrotate5
-rwxr-xr-xextra/lirc/lircd52
-rw-r--r--extra/lirc/lircd.conf8
-rwxr-xr-xextra/lirc/lircmd36
-rw-r--r--extra/live-media/PKGBUILD40
-rw-r--r--extra/lm_sensors/PKGBUILD56
-rw-r--r--extra/lm_sensors/daemonarg.patch50
-rw-r--r--extra/lm_sensors/fancontrol.rc35
-rw-r--r--extra/lm_sensors/healthd46
-rw-r--r--extra/lm_sensors/healthd.conf17
-rw-r--r--extra/lm_sensors/healthd.rc52
-rw-r--r--extra/lm_sensors/sensord.conf4
-rw-r--r--extra/lm_sensors/sensord.rc37
-rw-r--r--extra/lm_sensors/sensors-detect.patch61
-rw-r--r--extra/lm_sensors/sensors.rc119
-rw-r--r--extra/loudmouth/01-fix-sasl-md5-digest-uri.patch24
-rw-r--r--extra/loudmouth/03-drop-stanzas-on-fail.patch45
-rw-r--r--extra/loudmouth/04-use-pkg-config-for-gnutls.patch23
-rw-r--r--extra/loudmouth/PKGBUILD35
-rw-r--r--extra/lpsolve/PKGBUILD36
-rw-r--r--extra/lpsolve/cflags.patch25
-rw-r--r--extra/lsdvd/PKGBUILD23
-rw-r--r--extra/lsdvd/stdint_usage.patch22
-rw-r--r--extra/lsof/PKGBUILD43
-rw-r--r--extra/lsof/license.txt27
-rw-r--r--extra/ltrace/PKGBUILD28
-rw-r--r--extra/lua/PKGBUILD36
-rw-r--r--extra/lua/lua-5.1-cflags.diff13
-rw-r--r--extra/lua/lua-arch.patch55
-rw-r--r--extra/lv2core/PKGBUILD34
-rw-r--r--extra/lv2core/lv2core.changelog16
-rw-r--r--extra/lv2core/lv2core.install14
-rw-r--r--extra/lxde-common/PKGBUILD28
-rw-r--r--extra/lxde-common/lxde-common-arch.patch186
-rw-r--r--extra/lxde-common/lxde-common-invalid-distfile.patch10
-rw-r--r--extra/lxde-common/lxde-common.install18
-rw-r--r--extra/lxdm/PKGBUILD51
-rw-r--r--extra/lxdm/Xsession.patch14
-rw-r--r--extra/lxdm/lxdm-daemon36
-rw-r--r--extra/lxdm/lxdm-pam.patch8
-rw-r--r--extra/lxdm/lxdm.install59
-rw-r--r--extra/lxdm/lxdm.patch26
-rw-r--r--extra/lxmenu-data/PKGBUILD19
-rw-r--r--extra/lxpanel/Fix-build-issue-with-symbol-alarm-showing-up-on-F14-.patch43
-rw-r--r--extra/lxpanel/Fix-failure-to-react-to-keyboard-map-changes-initiat.patch555
-rw-r--r--extra/lxpanel/PKGBUILD25
-rw-r--r--extra/lxsession-lite/PKGBUILD22
-rw-r--r--extra/lxsplit/PKGBUILD21
-rw-r--r--extra/lynx/PKGBUILD39
-rw-r--r--extra/lyx/PKGBUILD35
-rw-r--r--extra/lyx/lyx.desktop9
-rw-r--r--extra/lzo/PKGBUILD25
-rw-r--r--extra/lzo/nasm-gcc3.patch40
-rw-r--r--extra/lzop/PKGBUILD26
-rw-r--r--extra/m17n-lib/PKGBUILD29
-rw-r--r--extra/m17n-lib/locale.patch51
-rw-r--r--extra/madwifi-utils/PKGBUILD35
-rw-r--r--extra/madwifi/PKGBUILD40
-rw-r--r--extra/madwifi/kernel-2.6.30.patch14
-rw-r--r--extra/madwifi/madwifi-ng.install14
-rw-r--r--extra/mahjong/PKGBUILD22
-rw-r--r--extra/mail-notification/PKGBUILD54
-rw-r--r--extra/mail-notification/dont-update-cache.patch22
-rw-r--r--extra/mail-notification/evolution-gtkhtml.patch11
-rw-r--r--extra/mail-notification/evolution.patch102
-rw-r--r--extra/mail-notification/gmime-2.4.patch63
-rw-r--r--extra/mail-notification/mail-notification-5.4-camel_headers.patch36
-rw-r--r--extra/mail-notification/mail-notification-5.4-icons.patch36
-rw-r--r--extra/mail-notification/mail-notification.install24
-rw-r--r--extra/mail-notification/remove-ubuntu-special-case.patch33
-rw-r--r--extra/mailman/PKGBUILD85
-rw-r--r--extra/mailman/mailman-2.1-build.patch694
-rw-r--r--extra/mailman/mailman.install31
-rw-r--r--extra/mailman/rc.mailman35
-rw-r--r--extra/manedit/PKGBUILD52
-rw-r--r--extra/manedit/manedit-1.2.1-fix-man-page.patch15
-rw-r--r--extra/manedit/manedit.desktop9
-rw-r--r--extra/maxima/PKGBUILD39
-rw-r--r--extra/maxima/maxima.desktop11
-rw-r--r--extra/maxima/maxima.install18
-rw-r--r--extra/mc/PKGBUILD50
-rw-r--r--extra/mcpp/PKGBUILD27
-rw-r--r--extra/mcpp/namlen.patch11
-rw-r--r--extra/mcrypt/PKGBUILD25
-rw-r--r--extra/memcached/ChangeLog24
-rw-r--r--extra/memcached/PKGBUILD39
-rw-r--r--extra/memcached/fix-type-punning-issues.patch73
-rw-r--r--extra/memcached/memcached.conf4
-rw-r--r--extra/memcached/memcached.sh63
-rw-r--r--extra/menu-cache/PKGBUILD27
-rw-r--r--extra/mercurial/PKGBUILD41
-rw-r--r--extra/mercurial/mercurial.profile1
-rw-r--r--extra/mesa/LICENSE82
-rw-r--r--extra/mesa/PKGBUILD342
-rw-r--r--extra/metacity/PKGBUILD37
-rw-r--r--extra/metacity/metacity-restartstyle.patch139
-rw-r--r--extra/metacity/metacity.install17
-rw-r--r--extra/metalog/PKGBUILD35
-rw-r--r--extra/metalog/metalog40
-rw-r--r--extra/metalog/metalog.confd8
-rw-r--r--extra/mhash/PKGBUILD22
-rw-r--r--extra/midori/PKGBUILD53
-rw-r--r--extra/midori/midori.install14
-rw-r--r--extra/minicom/PKGBUILD31
-rw-r--r--extra/mirage/PKGBUILD20
-rw-r--r--extra/mirage/mirage.install11
-rw-r--r--extra/miro/PKGBUILD29
-rw-r--r--extra/miro/miro.install17
-rw-r--r--extra/mjpegtools/PKGBUILD40
-rw-r--r--extra/mjpegtools/mjpegtools-1.9.0-glibc-2.10.patch11
-rw-r--r--extra/mjpegtools/mjpegtools-1.9.0-jpeg-7.patch24
-rw-r--r--extra/mjpegtools/mjpegtools.install16
-rw-r--r--extra/mjpegtools/png2yuv-fix-memleak.patch10
-rw-r--r--extra/mkbootcd/PKGBUILD26
-rw-r--r--extra/mkbootcd/boot.msg14
-rwxr-xr-xextra/mkbootcd/mkbootcd143
-rw-r--r--extra/mkbootcd/mkbootcd.conf38
-rw-r--r--extra/mkbootcd/options.msg6
-rw-r--r--extra/mkvtoolnix/PKGBUILD34
-rw-r--r--extra/mkvtoolnix/mkvtoolnix.install14
-rw-r--r--extra/moc/ChangeLog32
-rw-r--r--extra/moc/PKGBUILD44
-rw-r--r--extra/mod_dnssd/PKGBUILD23
-rw-r--r--extra/mod_fcgid/PKGBUILD24
-rw-r--r--extra/mod_mono/PKGBUILD24
-rw-r--r--extra/mod_mono/mod_mono.install20
-rw-r--r--extra/mod_perl/PKGBUILD28
-rw-r--r--extra/mod_wsgi/PKGBUILD29
-rw-r--r--extra/mod_wsgi/mod_wsgi.install14
-rw-r--r--extra/modemmanager/PKGBUILD25
-rw-r--r--extra/monica/PKGBUILD30
-rw-r--r--extra/monica/monica.desktop10
-rw-r--r--extra/monica/monica.svg248
-rw-r--r--extra/mono-addins/PKGBUILD28
-rw-r--r--extra/mono-basic/PKGBUILD28
-rw-r--r--extra/mono-debugger/PKGBUILD28
-rw-r--r--extra/mono-tools/PKGBUILD38
-rw-r--r--extra/mono-tools/gnome-sharp-2.20.patch11
-rw-r--r--extra/mono-tools/gunit.patch11
-rw-r--r--extra/mono-tools/mono-tools.install30
-rw-r--r--extra/mono-zeroconf/PKGBUILD29
-rw-r--r--extra/mono/PKGBUILD53
-rw-r--r--extra/mono/bug434892.patch11
-rw-r--r--extra/mono/mini_amd64.patch13
-rw-r--r--extra/mono/mono.rc.d35
-rw-r--r--extra/monodevelop-debugger-gdb/PKGBUILD25
-rw-r--r--extra/monodevelop-debugger-mdb/PKGBUILD30
-rw-r--r--extra/monodevelop-debugger-mdb/support_mdb_2.4.2.patch444
-rw-r--r--extra/monodevelop/PKGBUILD32
-rw-r--r--extra/monodevelop/monodevelop.install19
-rw-r--r--extra/monotone/PKGBUILD33
-rw-r--r--extra/monotone/monotone.install29
-rw-r--r--extra/most/PKGBUILD20
-rw-r--r--extra/most/most-debian.patch1655
-rw-r--r--extra/mousepad/PKGBUILD28
-rw-r--r--extra/mousepad/mousepad.install16
-rw-r--r--extra/mousepad/resensitize-find-button.patch28
-rw-r--r--extra/mousetweaks/PKGBUILD29
-rw-r--r--extra/mousetweaks/mousetweaks.install17
-rw-r--r--extra/mozilla-common/PKGBUILD20
-rwxr-xr-xextra/mozilla-common/mozilla-common.csh1
-rw-r--r--extra/mozilla-common/mozilla-common.install4
-rwxr-xr-xextra/mozilla-common/mozilla-common.sh1
-rw-r--r--extra/mp3splt/PKGBUILD25
-rw-r--r--extra/mp3wrap/PKGBUILD20
-rw-r--r--extra/mpc/PKGBUILD30
-rw-r--r--extra/mpck/PKGBUILD22
-rw-r--r--extra/mpd/PKGBUILD55
-rwxr-xr-xextra/mpd/mpd36
-rw-r--r--extra/mpd/mpd.install18
-rw-r--r--extra/mpg123/PKGBUILD34
-rw-r--r--extra/mrtg/PKGBUILD29
-rw-r--r--extra/msmtp/PKGBUILD30
-rw-r--r--extra/msmtp/msmtp.install20
-rw-r--r--extra/mt-st/PKGBUILD23
-rw-r--r--extra/mtools/PKGBUILD37
-rw-r--r--extra/mtools/mtools.install18
-rw-r--r--extra/mtr/PKGBUILD42
-rw-r--r--extra/mtx/PKGBUILD23
-rw-r--r--extra/muine/PKGBUILD39
-rw-r--r--extra/muine/muine.install25
-rw-r--r--extra/multitail/PKGBUILD24
-rw-r--r--extra/muparser/PKGBUILD30
-rw-r--r--extra/musicbrainz/PKGBUILD37
-rw-r--r--extra/musicbrainz/gcc4.3.patch57
-rw-r--r--extra/mutt/PKGBUILD47
-rw-r--r--extra/mutt/install8
-rw-r--r--extra/mysql-python/PKGBUILD20
-rw-r--r--extra/mysql/PKGBUILD139
-rw-r--r--extra/mysql/fix-embedded-crash.patch19
-rw-r--r--extra/mysql/fix-mysql-home.patch16
-rw-r--r--extra/mysql/my.cnf145
-rw-r--r--extra/mysql/mysql.install26
-rwxr-xr-xextra/mysql/mysqld77
-rw-r--r--extra/naim/PKGBUILD20
-rw-r--r--extra/nasm/PKGBUILD42
-rw-r--r--extra/nasm/nasm.install20
-rw-r--r--extra/nautilus-open-terminal/PKGBUILD31
-rw-r--r--extra/nautilus-open-terminal/nautilus-open-terminal.install17
-rw-r--r--extra/nautilus-sendto/PKGBUILD29
-rw-r--r--extra/nautilus-sendto/nautilus-sendto.install11
-rw-r--r--extra/nautilus/PKGBUILD36
-rw-r--r--extra/nautilus/nautilus-condrestart.patch16
-rw-r--r--extra/nautilus/nautilus.install26
-rw-r--r--extra/nbsmtp/PKGBUILD22
-rw-r--r--extra/nbsmtp/build.patch15
-rw-r--r--extra/ncftp/PKGBUILD34
-rw-r--r--extra/ncmpc/PKGBUILD36
-rw-r--r--extra/ndesk-dbus-glib/PKGBUILD26
-rw-r--r--extra/nedit/ChangeLog5
-rw-r--r--extra/nedit/PKGBUILD30
-rw-r--r--extra/nedit/nedit_xorg_composite_fix.patch18
-rw-r--r--extra/neon/PKGBUILD29
-rw-r--r--extra/net-snmp/PKGBUILD42
-rw-r--r--extra/net-snmp/libnl-2.patch67
-rw-r--r--extra/net-snmp/snmpd.rc38
-rw-r--r--extra/netcdf/PKGBUILD33
-rw-r--r--extra/netkit-bsd-finger/LICENSE36
-rw-r--r--extra/netkit-bsd-finger/PKGBUILD26
-rw-r--r--extra/netkit-bsd-finger/finger.xinetd8
-rw-r--r--extra/netpbm/PKGBUILD84
-rw-r--r--extra/netpbm/libpng-1.4.patch59
-rw-r--r--extra/netpbm/netpbm-CAN-2005-2471.patch16
-rw-r--r--extra/netpbm/netpbm-security-code.patch1817
-rw-r--r--extra/netpbm/netpbm-security-scripts.patch393
-rw-r--r--extra/netspeed-applet/PKGBUILD25
-rw-r--r--extra/netspeed-applet/netspeed-applet.install11
-rw-r--r--extra/network-manager-applet/PKGBUILD39
-rw-r--r--extra/network-manager-applet/network-manager-applet.install18
-rw-r--r--extra/network-manager-applet/nm-applet-0.8.2-libnotify-0.7.patch36
-rw-r--r--extra/networkmanager-openconnect/PKGBUILD27
-rw-r--r--extra/networkmanager-openconnect/networkmanager-openconnect.install16
-rw-r--r--extra/networkmanager-openvpn/PKGBUILD27
-rw-r--r--extra/networkmanager-openvpn/networkmanager-openvpn.install11
-rw-r--r--extra/networkmanager-pptp/PKGBUILD27
-rw-r--r--extra/networkmanager-pptp/networkmanager-pptp.install11
-rw-r--r--extra/networkmanager-vpnc/PKGBUILD27
-rw-r--r--extra/networkmanager-vpnc/networkmanager-vpnc.install11
-rw-r--r--extra/networkmanager/NetworkManager.conf2
-rw-r--r--extra/networkmanager/PKGBUILD58
-rw-r--r--extra/networkmanager/disable_set_hostname.patch19
-rw-r--r--extra/networkmanager/networkmanager.install9
-rw-r--r--extra/neverball/ChangeLog50
-rw-r--r--extra/neverball/PKGBUILD52
-rw-r--r--extra/nickle/PKGBUILD22
-rw-r--r--extra/nicotine/PKGBUILD30
-rw-r--r--extra/nitrogen/ChangeLog9
-rw-r--r--extra/nitrogen/PKGBUILD24
-rw-r--r--extra/nitrogen/nitrogen.install11
-rw-r--r--extra/nmap/ChangeLog17
-rw-r--r--extra/nmap/PKGBUILD40
-rw-r--r--extra/normalize/PKGBUILD25
-rw-r--r--extra/notification-daemon/PKGBUILD34
-rw-r--r--extra/notification-daemon/notification-daemon-0.4.0-libnotify-0.7.patch29
-rw-r--r--extra/notification-daemon/notification-daemon.install22
-rw-r--r--extra/nouveau-drm-lts/COPYING48
-rw-r--r--extra/nouveau-drm-lts/Makefile102
-rw-r--r--extra/nouveau-drm-lts/PKGBUILD47
-rw-r--r--extra/nouveau-drm-lts/dont_check_for_pthread.patch49
-rw-r--r--extra/nouveau-drm-lts/nouveau-drm.install16
-rwxr-xr-xextra/nppangband/Makefile.std375
-rw-r--r--extra/nppangband/PKGBUILD41
-rw-r--r--extra/nspr/PKGBUILD57
-rw-r--r--extra/nspr/nspr.pc.in10
-rw-r--r--extra/nss-mdns/PKGBUILD30
-rw-r--r--extra/nss-mdns/mdns.allow8
-rw-r--r--extra/nss-mdns/nss-mdns.install24
-rw-r--r--extra/nss/PKGBUILD102
-rw-r--r--extra/nss/add_spi+cacert_ca_certs.patch561
-rw-r--r--extra/nss/nss-config.in145
-rw-r--r--extra/nss/nss-no-rpath.patch14
-rw-r--r--extra/nss/nss.pc.in11
-rw-r--r--extra/nss/ssl-renegotiate-transitional.patch21
-rw-r--r--extra/nss_ldap/PKGBUILD33
-rw-r--r--extra/ntfs-3g/25-ntfs-config-write-policy.fdi42
-rw-r--r--extra/ntfs-3g/PKGBUILD32
-rw-r--r--extra/ntfsprogs/PKGBUILD24
-rw-r--r--extra/ntp/PKGBUILD78
-rw-r--r--extra/ntp/changelog25
-rw-r--r--extra/ntp/ntp-4.2.4-html2man.patch183
-rw-r--r--extra/ntp/ntp-client.conf5
-rw-r--r--extra/ntp/ntp.conf52
-rwxr-xr-xextra/ntp/ntpd52
-rwxr-xr-xextra/ntp/ntpdate31
-rw-r--r--extra/ntrack/PKGBUILD29
-rw-r--r--extra/numlockx/PKGBUILD33
-rw-r--r--extra/nx-common/NXproto.h.64bit.diff66
-rw-r--r--extra/nx-common/PKGBUILD58
-rw-r--r--extra/nx-common/nx-gcc44.patch12
-rw-r--r--extra/nxserver/NXproto.h.64bit.diff66
-rw-r--r--extra/nxserver/PKGBUILD96
-rw-r--r--extra/nxserver/nx-gcc44.patch12
-rw-r--r--extra/nxserver/nxcompsh-gcc43.patch19
-rw-r--r--extra/nxserver/nxcompshad-gcc43.patch19
-rw-r--r--extra/obconf/PKGBUILD25
-rw-r--r--extra/obconf/obconf.install15
-rw-r--r--extra/obex-data-server/PKGBUILD28
-rw-r--r--extra/obexd/PKGBUILD47
-rw-r--r--extra/obexftp/PKGBUILD32
-rw-r--r--extra/ocaml/PKGBUILD29
-rw-r--r--extra/ocfs2-tools/PKGBUILD35
-rw-r--r--extra/ocfs2-tools/gcc45-ftbfs.patch21
-rw-r--r--extra/ocrad/PKGBUILD27
-rw-r--r--extra/ocrad/ocrad.install20
-rw-r--r--extra/octave/PKGBUILD49
-rw-r--r--extra/octave/imread.patch29
-rw-r--r--extra/octave/octave-3.2.0_as_needed.patch11
-rw-r--r--extra/octave/octave-3.2.0_parallel_make.patch12
-rw-r--r--extra/octave/octave.install18
-rw-r--r--extra/ode/PKGBUILD26
-rw-r--r--extra/ogle/PKGBUILD39
-rw-r--r--extra/ogle/dvdread-4.1.3.patch129
-rw-r--r--extra/ogle/gcc34alsafix.patch15
-rw-r--r--extra/ogle/gcc4.patch12
-rw-r--r--extra/ogle/xvideofix.patch205
-rw-r--r--extra/ogmtools/PKGBUILD22
-rw-r--r--extra/opal/PKGBUILD22
-rw-r--r--extra/openal/PKGBUILD27
-rw-r--r--extra/openbabel/PKGBUILD34
-rw-r--r--extra/openbox/PKGBUILD47
-rw-r--r--extra/openbox/openbox.install9
-rw-r--r--extra/openbox/which-2.20.patch53
-rw-r--r--extra/opencdk/PKGBUILD21
-rw-r--r--extra/openconnect/PKGBUILD26
-rw-r--r--extra/opencore-amr/PKGBUILD24
-rw-r--r--extra/opencv/PKGBUILD66
-rw-r--r--extra/opencv/libpng-1.4.patch12
-rw-r--r--extra/opencv/ptrcvcapture.patch17
-rw-r--r--extra/opencv/v4l-mmap.patch14
-rw-r--r--extra/openexr/PKGBUILD23
-rw-r--r--extra/openexr/gcc43.patch22
-rw-r--r--extra/opengtl/PKGBUILD33
-rw-r--r--extra/openjdk6/PKGBUILD195
-rw-r--r--extra/openjdk6/aatext_by_default.diff35
-rw-r--r--extra/openjdk6/fix_corba_cmds_path.diff33
-rw-r--r--extra/openjdk6/fix_jdk_cmds_path.diff33
-rw-r--r--extra/openjdk6/fontconfig-paths.diff134
-rw-r--r--extra/openjdk6/nonreparenting-wm.diff66
-rw-r--r--extra/openjdk6/openjdk6.install24
-rw-r--r--extra/openjdk6/openjdk6.profile6
-rw-r--r--extra/openjdk6/openjdk6.profile.csh6
-rw-r--r--extra/openjpeg/30_fix_build_for_debian.dpatch70
-rw-r--r--extra/openjpeg/PKGBUILD27
-rw-r--r--extra/openldap/PKGBUILD106
-rwxr-xr-xextra/openldap/slapd48
-rw-r--r--extra/openldap/slapd.default6
-rw-r--r--extra/openmpi/PKGBUILD56
-rw-r--r--extra/openobex/PKGBUILD34
-rw-r--r--extra/openslp/PKGBUILD23
-rwxr-xr-xextra/openslp/rc.slpd38
-rw-r--r--extra/opensp/PKGBUILD29
-rw-r--r--extra/oprofile/PKGBUILD38
-rw-r--r--extra/orage/PKGBUILD36
-rw-r--r--extra/orage/orage.install11
-rw-r--r--extra/orbit2/PKGBUILD22
-rw-r--r--extra/orc/PKGBUILD23
-rw-r--r--extra/orca/PKGBUILD27
-rw-r--r--extra/orca/orca.install11
-rw-r--r--extra/ortp/PKGBUILD27
-rw-r--r--extra/ossp/PKGBUILD43
-rw-r--r--extra/ossp/osspd.conf.d10
-rwxr-xr-xextra/ossp/osspd.rc.d59
-rw-r--r--extra/oxine/PKGBUILD23
-rw-r--r--extra/oxygen-gtk/PKGBUILD30
-rw-r--r--extra/pam_fprint/PKGBUILD21
-rw-r--r--extra/pam_ldap/PKGBUILD25
-rw-r--r--extra/pango-perl/PKGBUILD24
-rw-r--r--extra/pango/PKGBUILD32
-rw-r--r--extra/pango/pango.install21
-rw-r--r--extra/pangomm/PKGBUILD34
-rw-r--r--extra/paprefs/PKGBUILD32
-rw-r--r--extra/paprefs/paprefs.desktop13
-rw-r--r--extra/parted/PKGBUILD31
-rw-r--r--extra/parted/parted.install18
-rw-r--r--extra/partitionmanager/PKGBUILD31
-rw-r--r--extra/partitionmanager/partitionmanager.install11
-rw-r--r--extra/pathological/ChangeLog14
-rw-r--r--extra/pathological/PKGBUILD40
-rw-r--r--extra/pathological/encoding.patch8
-rw-r--r--extra/pathological/pathological.desktop9
-rw-r--r--extra/pathological/pathological.install29
-rw-r--r--extra/pathological/pygame_181.patch10
-rw-r--r--extra/pavucontrol/PKGBUILD32
-rw-r--r--extra/pavucontrol/pavucontrol.desktop11
-rw-r--r--extra/pcmanfm/PKGBUILD28
-rw-r--r--extra/pcmanfm/pcmanfm.install14
-rw-r--r--extra/pcmanfm/revert-new-IPC.patch432
-rw-r--r--extra/pdksh/PKGBUILD27
-rw-r--r--extra/pdksh/pdksh-5.2.14.patch26
-rw-r--r--extra/pdksh/pdksh.install22
-rw-r--r--extra/pdksh/usr_ksh.sh9
-rw-r--r--extra/pdns-recursor/PKGBUILD32
-rw-r--r--extra/pdns-recursor/pdns-recursor.rc35
-rwxr-xr-xextra/pdns/2.9.18-default-mysql-options.patch13
-rw-r--r--extra/pdns/PKGBUILD54
-rw-r--r--extra/pdns/pdns-2.9.22-gcc44.patch22
-rw-r--r--extra/pdns/pdns.conf290
-rw-r--r--extra/pdns/pdns.install11
-rw-r--r--extra/pdns/pdns.rc35
-rw-r--r--extra/pekwm/PKGBUILD42
-rw-r--r--extra/pekwm/libpng-1.4.patch21
-rw-r--r--extra/pekwm/pekwm.desktop8
-rw-r--r--extra/perl-alien-sdl/PKGBUILD31
-rw-r--r--extra/perl-bit-vector/PKGBUILD33
-rw-r--r--extra/perl-compress-bzip2/PKGBUILD25
-rw-r--r--extra/perl-crypt-ssleay/PKGBUILD31
-rw-r--r--extra/perl-dbd-mysql/PKGBUILD34
-rw-r--r--extra/perl-dbd-sqlite/PKGBUILD29
-rw-r--r--extra/perl-dbi/PKGBUILD32
-rw-r--r--extra/perl-digest-nilsimsa/PKGBUILD35
-rw-r--r--extra/perl-digest-sha1/PKGBUILD38
-rw-r--r--extra/perl-event/PKGBUILD36
-rw-r--r--extra/perl-fcgi/PKGBUILD31
-rw-r--r--extra/perl-html-parser/PKGBUILD31
-rw-r--r--extra/perl-libintl-perl/PKGBUILD33
-rw-r--r--extra/perl-locale-gettext/PKGBUILD38
-rw-r--r--extra/perl-locale-gettext/compatibility-with-POSIX-module.patch10
-rw-r--r--extra/perl-net-dns/PKGBUILD33
-rw-r--r--extra/perl-net-ssleay/PKGBUILD33
-rw-r--r--extra/perl-net-upnp/PKGBUILD27
-rw-r--r--extra/perl-netaddr-ip/PKGBUILD34
-rw-r--r--extra/perl-sdl/PKGBUILD31
-rw-r--r--extra/perl-template-toolkit/PKGBUILD32
-rw-r--r--extra/perl-term-readkey/PKGBUILD36
-rw-r--r--extra/perl-text-iconv/PKGBUILD28
-rw-r--r--extra/perl-time-hires/PKGBUILD25
-rw-r--r--extra/perl-tk/PKGBUILD41
-rw-r--r--extra/perl-unicode-string/PKGBUILD33
-rw-r--r--extra/perl-xml-parser/PKGBUILD38
-rw-r--r--extra/perl-yaml-syck/PKGBUILD37
-rw-r--r--extra/phonon-gstreamer/PKGBUILD30
-rw-r--r--extra/phonon-vlc/PKGBUILD30
-rw-r--r--extra/phonon-xine/PKGBUILD30
-rw-r--r--extra/phonon/PKGBUILD32
-rw-r--r--extra/php-apc/PKGBUILD30
-rw-r--r--extra/php-suhosin/PKGBUILD31
-rw-r--r--extra/php/PKGBUILD380
-rw-r--r--extra/php/apache.conf9
-rw-r--r--extra/php/logrotate.d.php-fpm6
-rw-r--r--extra/php/php-fpm.conf.in.patch80
-rw-r--r--extra/php/php.ini.patch126
-rw-r--r--extra/php/rc.d.php-fpm136
-rw-r--r--extra/php/suhosin-patch-5.3.6-0.9.10.patch.gzbin0 -> 40881 bytes
-rw-r--r--extra/physfs/PKGBUILD37
-rw-r--r--extra/pidgin-encryption/PKGBUILD24
-rw-r--r--extra/pidgin-encryption/fix_header_escaping.patch64
-rw-r--r--extra/pidgin-encryption/log_crash.patch11
-rw-r--r--extra/pidgin/PKGBUILD90
-rw-r--r--extra/pidgin/pidgin.install11
-rw-r--r--extra/pilot-link/PKGBUILD32
-rw-r--r--extra/pilot-link/pilot-link-png14.patch100
-rw-r--r--extra/pinentry/PKGBUILD39
-rw-r--r--extra/pinentry/gtk2-pinentry-segfault.patch11
-rw-r--r--extra/pixman/PKGBUILD25
-rw-r--r--extra/plotutils/PKGBUILD27
-rw-r--r--extra/plotutils/plotutils.install13
-rw-r--r--extra/pm-utils/02-logging-append.patch19
-rw-r--r--extra/pm-utils/11netcfg26
-rw-r--r--extra/pm-utils/12-fix-intel-audio-powersave-hook.patch40
-rw-r--r--extra/pm-utils/13-49bluetooth-sync.patch43
-rw-r--r--extra/pm-utils/14-disable-sata-alpm.patch26
-rw-r--r--extra/pm-utils/PKGBUILD48
-rw-r--r--extra/pmount/PKGBUILD23
-rw-r--r--extra/polkit-gnome/PKGBUILD26
-rw-r--r--extra/polkit-kde/PKGBUILD30
-rw-r--r--extra/polkit-qt/PKGBUILD30
-rw-r--r--extra/polkit/PKGBUILD29
-rw-r--r--extra/polkit/polkit.pam7
-rw-r--r--extra/poppler/PKGBUILD67
-rw-r--r--extra/postfix/PKGBUILD64
-rw-r--r--extra/postfix/aliases.patch18
-rw-r--r--extra/postfix/install35
-rwxr-xr-xextra/postfix/rc.d37
-rw-r--r--extra/postgresql/PKGBUILD136
-rw-r--r--extra/postgresql/build.patch11
-rwxr-xr-xextra/postgresql/postgresql59
-rw-r--r--extra/postgresql/postgresql.confd5
-rw-r--r--extra/postgresql/postgresql.logrotate4
-rw-r--r--extra/postgresql/postgresql.pam3
-rw-r--r--extra/potrace/PKGBUILD26
-rw-r--r--extra/procmail/PKGBUILD31
-rw-r--r--extra/procmail/procmail-3.22-getline.patch56
-rw-r--r--extra/proftpd/PKGBUILD49
-rwxr-xr-xextra/proftpd/proftpd41
-rw-r--r--extra/proftpd/proftpd.conf.d4
-rw-r--r--extra/proftpd/proftpd.logrotate5
-rw-r--r--extra/progsreiserfs/PKGBUILD30
-rw-r--r--extra/psi/PKGBUILD28
-rw-r--r--extra/psi/archlinux.patch12
-rw-r--r--extra/psi/psi.install11
-rw-r--r--extra/psiconv/PKGBUILD26
-rw-r--r--extra/pstoedit/PKGBUILD39
-rw-r--r--extra/pstoedit/pstoedit-3.50-parallel.patch47
-rw-r--r--extra/pstoedit/pstoedit-3.50-plugin-close.patch14
-rw-r--r--extra/pth/PKGBUILD22
-rw-r--r--extra/ptlib/PKGBUILD29
-rw-r--r--extra/pulseaudio-mixer-applet/PKGBUILD27
-rw-r--r--extra/pulseaudio/PKGBUILD98
-rwxr-xr-xextra/pulseaudio/pulseaudio.install26
-rw-r--r--extra/pulseaudio/pulseaudio.xinit7
-rw-r--r--extra/purple-plugin-pack/PKGBUILD25
-rw-r--r--extra/putty/PKGBUILD26
-rw-r--r--extra/pwgen/PKGBUILD21
-rw-r--r--extra/pycrypto/PKGBUILD23
-rw-r--r--extra/pycups/PKGBUILD24
-rw-r--r--extra/pygobject/PKGBUILD28
-rw-r--r--extra/pygtk/PKGBUILD34
-rw-r--r--extra/pygtk/python27.patch50
-rw-r--r--extra/pygtksourceview2/PKGBUILD23
-rw-r--r--extra/pymad/PKGBUILD19
-rw-r--r--extra/pyopenssl/PKGBUILD43
-rw-r--r--extra/pyorbit/PKGBUILD22
-rw-r--r--extra/pypgsql/COPYING20
-rw-r--r--extra/pypgsql/PKGBUILD23
-rw-r--r--extra/pysmbc/PKGBUILD24
-rw-r--r--extra/python-cairo/PKGBUILD44
-rw-r--r--extra/python-cairo/pycairo-1.8.10-pypath.patch36
-rw-r--r--extra/python-egenix-mx-base/PKGBUILD24
-rw-r--r--extra/python-geoip/PKGBUILD20
-rw-r--r--extra/python-gtkglext/PKGBUILD21
-rw-r--r--extra/python-imaging/PKGBUILD48
-rw-r--r--extra/python-iwscan/PKGBUILD18
-rw-r--r--extra/python-lxml/PKGBUILD30
-rw-r--r--extra/python-m2crypto/PKGBUILD31
-rw-r--r--extra/python-m2crypto/openssl1.patch531
-rw-r--r--extra/python-markupsafe/PKGBUILD22
-rw-r--r--extra/python-notify/PKGBUILD43
-rw-r--r--extra/python-notify/libnotify07.patch36
-rw-r--r--extra/python-notify/notify-python-0.1.1-fix-GTK-symbols.patch25
-rwxr-xr-xextra/python-numpy/PKGBUILD61
-rw-r--r--extra/python-pygame/ChangeLog30
-rw-r--r--extra/python-pygame/PKGBUILD38
-rw-r--r--extra/python-pygame/config.patch26
-rw-r--r--extra/python-pyspi/PKGBUILD27
-rw-r--r--extra/python-pyspi/pyspi-build.patch1693
-rw-r--r--extra/python-pysqlite/ChangeLog13
-rw-r--r--extra/python-pysqlite/PKGBUILD29
-rw-r--r--extra/python-pysqlite/setup.cfg5
-rw-r--r--extra/python-qt/PKGBUILD41
-rw-r--r--extra/python-sip/PKGBUILD30
-rw-r--r--extra/python-telepathy/PKGBUILD21
-rw-r--r--extra/python-urwid/PKGBUILD23
-rw-r--r--extra/python-wpactrl/PKGBUILD18
-rw-r--r--extra/python/PKGBUILD69
-rw-r--r--extra/python2-cairo/PKGBUILD28
-rw-r--r--extra/python2-qt/PKGBUILD41
-rw-r--r--extra/python2-sip/PKGBUILD30
-rw-r--r--extra/python2/PKGBUILD84
-rw-r--r--extra/python2/python-2.7-db51.diff42
-rw-r--r--extra/pywebkitgtk/PKGBUILD27
-rw-r--r--extra/pyxml/PKGBUILD38
-rw-r--r--extra/pyxml/fix-python2.6.patch28
-rw-r--r--extra/pyxml/foreigncharsfix.patch11
-rw-r--r--extra/qalculate-gtk/PKGBUILD27
-rw-r--r--extra/qalculate-kde/PKGBUILD25
-rw-r--r--extra/qca-gnupg/PKGBUILD24
-rw-r--r--extra/qca-ossl/PKGBUILD30
-rw-r--r--extra/qca-ossl/no-whirlpool.patch21
-rw-r--r--extra/qca/PKGBUILD30
-rw-r--r--extra/qemu-kvm/65-kvm.rules1
-rw-r--r--extra/qemu-kvm/PKGBUILD49
-rw-r--r--extra/qemu-kvm/qemu-kvm.install16
-rw-r--r--extra/qemu/65-kvm.rules1
-rw-r--r--extra/qemu/PKGBUILD35
-rw-r--r--extra/qemu/qemu.install24
-rw-r--r--extra/qimageblitz/PKGBUILD32
-rw-r--r--extra/qiv/PKGBUILD21
-rw-r--r--extra/qjackctl/PKGBUILD30
-rw-r--r--extra/qjson/PKGBUILD29
-rw-r--r--extra/qscintilla/PKGBUILD68
-rw-r--r--extra/qscintilla/configure.py-objdir-support.diff39
-rw-r--r--extra/qsynth/PKGBUILD22
-rw-r--r--extra/qt-assistant-compat/PKGBUILD55
-rw-r--r--extra/qt-assistant-compat/debian_patches_01_build_system.diff48
-rw-r--r--extra/qt/PKGBUILD219
-rw-r--r--extra/qt/assistant.desktop9
-rw-r--r--extra/qt/blacklist-fraudulent-comodo-certificates.patch89
-rw-r--r--extra/qt/designer.desktop11
-rw-r--r--extra/qt/linguist.desktop10
-rw-r--r--extra/qt/qt.install12
-rw-r--r--extra/qt/qtconfig.desktop10
-rw-r--r--extra/qt3/PKGBUILD118
-rw-r--r--extra/qt3/eastern_asian_languagues.diff39
-rw-r--r--extra/qt3/mysql.patch47
-rw-r--r--extra/qt3/qt-copy-kde-patches.tar.bz2bin0 -> 31498 bytes
-rw-r--r--extra/qt3/qt-font-default-subst.diff77
-rw-r--r--extra/qt3/qt-odbc.patch19
-rw-r--r--extra/qt3/qt-patches.tar.bz2bin0 -> 3708 bytes
-rw-r--r--extra/qt3/qt.install12
-rw-r--r--extra/qt3/qt.profile4
-rw-r--r--extra/qt3/qt3-png14.patch33
-rw-r--r--extra/qt3/utf8-bug-qt3.diff101
-rw-r--r--extra/qtcurve-gtk2/PKGBUILD32
-rw-r--r--extra/qtcurve-kde3/PKGBUILD49
-rw-r--r--extra/qtcurve-kde3/bypass-kde-config.patch24
-rw-r--r--extra/qtcurve-kde3/kdeglobals2
-rw-r--r--extra/qtcurve-kde4/PKGBUILD38
-rw-r--r--extra/qtcurve-kde4/bypass-kde-config.patch32
-rw-r--r--extra/qtiplot/PKGBUILD78
-rw-r--r--extra/qtiplot/build.conf.archlinux29
-rw-r--r--extra/qtiplot/gentoo-fix-origin-build-failure.patch72
-rw-r--r--extra/qtiplot/qtiplot-0.9.7.14-system-liborigin.patch101
-rw-r--r--extra/qtiplot/qtiplot.desktop13
-rw-r--r--extra/qtiplot/qtiplot.install12
-rw-r--r--extra/qtiplot/qtiplot.pngbin0 -> 936 bytes
-rw-r--r--extra/qtiplot/qtiplot.xml17
-rw-r--r--extra/qtiplot/qwtplot3d_gcc.patch9
-rw-r--r--extra/qtiplot/sip.patch13
-rw-r--r--extra/qtscriptgenerator/PKGBUILD38
-rw-r--r--extra/qtscriptgenerator/phonon.patch55
-rw-r--r--extra/qtscriptgenerator/qtscriptgenerator-gcc44.patch15
-rw-r--r--extra/quodlibet/PKGBUILD38
-rw-r--r--extra/quota-tools/ChangeLog9
-rw-r--r--extra/quota-tools/LICENSE33
-rw-r--r--extra/quota-tools/PKGBUILD32
-rw-r--r--extra/qwt/PKGBUILD42
-rw-r--r--extra/qwt/qwtconfig-archlinux.pri85
-rw-r--r--extra/qwtplot3d/PKGBUILD42
-rw-r--r--extra/qwtplot3d/qwtplot3d-gcc44.patch12
-rw-r--r--extra/r/PKGBUILD63
-rw-r--r--extra/r/r.desktop12
-rw-r--r--extra/r/r.pngbin0 -> 4771 bytes
-rw-r--r--extra/racket/PKGBUILD36
-rw-r--r--extra/racket/drracket.desktop9
-rw-r--r--extra/racket/jpeg-version.patch621
-rw-r--r--extra/racket/racket.install11
-rw-r--r--extra/raptor/PKGBUILD27
-rw-r--r--extra/rarian/PKGBUILD29
-rw-r--r--extra/rarian/user-segfault.patch14
-rw-r--r--extra/rasqal/PKGBUILD29
-rw-r--r--extra/ratpoison/PKGBUILD50
-rw-r--r--extra/ratpoison/ratpoison.desktop8
-rw-r--r--extra/ratpoison/ratpoison.install20
-rw-r--r--extra/razor/PKGBUILD40
-rw-r--r--extra/rcs/PKGBUILD22
-rw-r--r--extra/rcs/rcs-5.7.patch67
-rw-r--r--extra/rdesktop/PKGBUILD30
-rw-r--r--extra/rdesktop/rdesktop-send_physical_buttons.diff70
-rw-r--r--extra/re2c/PKGBUILD23
-rw-r--r--extra/recode/PKGBUILD43
-rw-r--r--extra/recode/recode-3.6-as-if.patch19
-rw-r--r--extra/recode/recode-3.6-gcc43.patch20
-rw-r--r--extra/recode/recode-3.6-gettextfix.diff23
-rw-r--r--extra/recode/recode.install20
-rw-r--r--extra/redland/PKGBUILD77
-rw-r--r--extra/redland/rpath.diff11
-rw-r--r--extra/rhino/PKGBUILD18
-rw-r--r--extra/rhythmbox/PKGBUILD39
-rw-r--r--extra/rhythmbox/rhythmbox.install24
-rw-r--r--extra/ristretto/PKGBUILD32
-rw-r--r--extra/ristretto/ristretto.install13
-rw-r--r--extra/rosegarden/PKGBUILD42
-rw-r--r--extra/rosegarden/rosegarden.install14
-rw-r--r--extra/rox/PKGBUILD51
-rw-r--r--extra/rox/rox.desktop10
-rw-r--r--extra/rox/rox.svg493
-rw-r--r--extra/rrdtool/PKGBUILD36
-rw-r--r--extra/rssh/PKGBUILD34
-rw-r--r--extra/rssh/destdir.patch24
-rw-r--r--extra/rssh/rsync.patch57
-rw-r--r--extra/rsync/ChangeLog35
-rw-r--r--extra/rsync/PKGBUILD41
-rw-r--r--extra/rsync/rsync.xinetd11
-rw-r--r--extra/rsync/rsyncd37
-rw-r--r--extra/rsync/rsyncd.conf16
-rw-r--r--extra/rtkit/PKGBUILD36
-rw-r--r--extra/rtkit/rtkit.install26
-rw-r--r--extra/rtmpdump/PKGBUILD20
-rw-r--r--extra/rubberband/PKGBUILD30
-rw-r--r--extra/rubberband/rubberband.changelog11
-rw-r--r--extra/ruby/PKGBUILD50
-rw-r--r--extra/rxvt-unicode/PKGBUILD59
-rw-r--r--extra/rxvt-unicode/popup-menu-hang.diff24
-rw-r--r--extra/rxvt-unicode/rxvt-unicode.desktop10
-rw-r--r--extra/rxvt-unicode/rxvt-unicode.pngbin0 -> 1513 bytes
-rw-r--r--extra/samba/PKGBUILD139
-rw-r--r--extra/samba/fix-ipv6-mount.patch11
-rwxr-xr-xextra/samba/samba54
-rw-r--r--extra/samba/samba.conf.d7
-rw-r--r--extra/samba/samba.logrotate9
-rw-r--r--extra/samba/samba.pam3
-rw-r--r--extra/samba/swat.xinetd10
-rw-r--r--extra/sane-frontends/MissingCapsFlag.patch12
-rw-r--r--extra/sane-frontends/PKGBUILD22
-rw-r--r--extra/sane/PKGBUILD48
-rw-r--r--extra/sane/sane.install14
-rw-r--r--extra/sane/sane.xinetd11
-rw-r--r--extra/sbcl/PKGBUILD73
-rw-r--r--extra/sbcl/arch-fixes.lisp21
-rw-r--r--extra/sbcl/sbcl.install18
-rw-r--r--extra/schedtool/PKGBUILD29
-rw-r--r--extra/schroedinger/PKGBUILD25
-rw-r--r--extra/scim-anthy/PKGBUILD27
-rw-r--r--extra/scim-chewing/PKGBUILD28
-rw-r--r--extra/scim-hangul/PKGBUILD30
-rw-r--r--extra/scim-hangul/gcc43.patch22
-rw-r--r--extra/scim-m17n/PKGBUILD27
-rw-r--r--extra/scim-pinyin/PKGBUILD33
-rw-r--r--extra/scim-pinyin/scim-pinyin-0.5.91-cannot-build-against-scim-1.4.73
-rw-r--r--extra/scim-pinyin/scim-pinyin-0.5.91-gcc43.patch44
-rw-r--r--extra/scim-tables/PKGBUILD27
-rw-r--r--extra/scim-uim/PKGBUILD31
-rw-r--r--extra/scim-uim/scim-uim-0.2.0-fix-gcc43-build.patch10
-rw-r--r--extra/scim-uim/uim-1.5.5-header.diff13
-rw-r--r--extra/scim/PKGBUILD29
-rw-r--r--extra/scim/gcc45.patch12
-rw-r--r--extra/scim/scim.install13
-rw-r--r--extra/screen/PKGBUILD47
-rw-r--r--extra/screen/screen-4.0.3-caption-colors.patch21
-rw-r--r--extra/screen/screen-4.0.3-long-term.patch24
-rw-r--r--extra/screen/screen.install21
-rw-r--r--extra/screen/screen.pam1
-rw-r--r--extra/scribus/PKGBUILD48
-rw-r--r--extra/scribus/scribus.install13
-rw-r--r--extra/scrot/PKGBUILD22
-rw-r--r--extra/scummvm/PKGBUILD38
-rw-r--r--extra/sdl/PKGBUILD37
-rw-r--r--extra/sdl/sdl-1.2.14-fix-disappearing-cursor.patch17
-rw-r--r--extra/sdl/sdl-1.2.14-fix-mouse-clicking.patch23
-rw-r--r--extra/sdl/sdl-1.2.14-joystick-crash.diff14
-rw-r--r--extra/sdl_gfx/PKGBUILD32
-rw-r--r--extra/sdl_image/PKGBUILD22
-rw-r--r--extra/sdl_mixer/PKGBUILD29
-rw-r--r--extra/sdl_net/PKGBUILD23
-rw-r--r--extra/sdl_pango/PKGBUILD32
-rw-r--r--extra/sdl_pango/SDL_Pango-0.1.2-API-adds.patch116
-rw-r--r--extra/sdl_pango/matrix_declarations.patch131
-rw-r--r--extra/sdl_sound/PKGBUILD29
-rw-r--r--extra/sdl_sound/flac.patch126
-rw-r--r--extra/sdl_ttf/PKGBUILD26
-rw-r--r--extra/seahorse-plugins/PKGBUILD38
-rw-r--r--extra/seahorse-plugins/gpgme-init.patch43
-rw-r--r--extra/seahorse-plugins/seahorse-plugins-2.30.1-libnotify-0.7.patch26
-rw-r--r--extra/seahorse-plugins/seahorse-plugins.install26
-rw-r--r--extra/seahorse/PKGBUILD36
-rw-r--r--extra/seahorse/seahorse-2.32.0-libnotify-0.7.patch26
-rw-r--r--extra/seahorse/seahorse.install24
-rw-r--r--extra/setserial/PKGBUILD27
-rw-r--r--extra/setserial/setserial.patch28
-rw-r--r--extra/sg3_utils/PKGBUILD27
-rw-r--r--extra/sg3_utils/stdint.patch22
-rw-r--r--extra/shared-mime-info/PKGBUILD30
-rw-r--r--extra/shared-mime-info/pbm.patch49
-rw-r--r--extra/shared-mime-info/shared-mime-info.install15
-rw-r--r--extra/sharutils/PKGBUILD32
-rw-r--r--extra/sharutils/sharutils.install20
-rw-r--r--extra/silc-toolkit/PKGBUILD27
-rw-r--r--extra/skanlite/PKGBUILD30
-rw-r--r--extra/slang/PKGBUILD28
-rw-r--r--extra/slang/slang-2.2.3-faster-baud-rates.patch62
-rw-r--r--extra/slim/PKGBUILD58
-rw-r--r--extra/slim/gcc44.patch11
-rw-r--r--extra/slim/no-host.patch29
-rw-r--r--extra/slim/restart.patch144
-rwxr-xr-xextra/slim/slim36
-rw-r--r--extra/slim/slim.install7
-rw-r--r--extra/slim/slim.logrotate9
-rw-r--r--extra/slim/slim.pam10
-rw-r--r--extra/slim/tty-slowness.patch30
-rw-r--r--extra/slv2/PKGBUILD32
-rw-r--r--extra/slv2/slv2.changelog18
-rw-r--r--extra/slv2/slv2.install14
-rw-r--r--extra/smartmontools/PKGBUILD42
-rw-r--r--extra/smartmontools/smartd.conf1
-rwxr-xr-xextra/smartmontools/smartd.rc39
-rw-r--r--extra/smb4k/PKGBUILD29
-rw-r--r--extra/smb4k/smb4k.install14
-rw-r--r--extra/smpeg/ChangeLog6
-rw-r--r--extra/smpeg/PKGBUILD29
-rw-r--r--extra/smpeg/smpeg-0.4.4-gcc41.patch41
-rw-r--r--extra/smplayer-themes/ChangeLog56
-rw-r--r--extra/smplayer-themes/PKGBUILD20
-rw-r--r--extra/smplayer/ChangeLog74
-rw-r--r--extra/smplayer/PKGBUILD35
-rw-r--r--extra/snarf/PKGBUILD20
-rw-r--r--extra/snd/PKGBUILD28
-rw-r--r--extra/socat/PKGBUILD29
-rw-r--r--extra/sofia-sip/PKGBUILD21
-rw-r--r--extra/sonata/ChangeLog12
-rw-r--r--extra/sonata/PKGBUILD23
-rw-r--r--extra/soprano/PKGBUILD33
-rw-r--r--extra/sound-juicer/PKGBUILD31
-rw-r--r--extra/sound-juicer/sound-juicer.install24
-rw-r--r--extra/soundtouch/ChangeLog10
-rw-r--r--extra/soundtouch/PKGBUILD36
-rw-r--r--extra/soundtouch/soundtouch-1.4.0-mmx-sse-compile-fix.patch14
-rw-r--r--extra/soundtouch/soundtouch-1.4.0-x86_64-asm-broken.patch12
-rw-r--r--extra/source-highlight/PKGBUILD33
-rw-r--r--extra/source-highlight/source-highlight.install18
-rw-r--r--extra/sox/PKGBUILD35
-rw-r--r--extra/spamassassin/PKGBUILD51
-rw-r--r--extra/spamassassin/spamassassin.install25
-rw-r--r--extra/spamassassin/spamd49
-rw-r--r--extra/spamassassin/spamd.conf.d1
-rw-r--r--extra/spassgen/PKGBUILD27
-rw-r--r--extra/speech-dispatcher/PKGBUILD68
-rw-r--r--extra/speech-dispatcher/speech-dispatcher.install21
-rw-r--r--extra/speech-dispatcher/speechd.sh37
-rw-r--r--extra/speedcrunch/PKGBUILD25
-rw-r--r--extra/speedtouch/PKGBUILD24
-rw-r--r--extra/speedtouch/speedtouch-1.3.1-gcc4.patch11
-rw-r--r--extra/speex/PKGBUILD25
-rw-r--r--extra/squeeze/PKGBUILD45
-rw-r--r--extra/squeeze/squeeze.install12
-rw-r--r--extra/squid/PKGBUILD62
-rw-r--r--extra/squid/fix-for-new-cap-headers.patch14
-rw-r--r--extra/squid/squid52
-rw-r--r--extra/squid/squid-makefiles.patch53
-rw-r--r--extra/squid/squid.conf.d4
-rw-r--r--extra/squid/squid.cron4
-rw-r--r--extra/squid/squid.install28
-rw-r--r--extra/squid/squid.pam4
-rw-r--r--extra/squirrelmail/PKGBUILD50
-rw-r--r--extra/squirrelmail/squirrelmail.install34
-rw-r--r--extra/srm/PKGBUILD23
-rw-r--r--extra/sshfs/PKGBUILD22
-rw-r--r--extra/ssmtp/PKGBUILD35
-rw-r--r--extra/stardict/PKGBUILD42
-rw-r--r--extra/stardict/as-needed.patch29
-rw-r--r--extra/stardict/help-in-destdir.patch21
-rw-r--r--extra/startup-notification/PKGBUILD24
-rw-r--r--extra/stellarium/PKGBUILD38
-rw-r--r--extra/stellarium/libpng14.patch21
-rw-r--r--extra/stellarium/stellarium.desktop9
-rw-r--r--extra/stellarium/stellarium.pngbin0 -> 18780 bytes
-rw-r--r--extra/strace/PKGBUILD27
-rw-r--r--extra/streamripper/PKGBUILD23
-rw-r--r--extra/streamtuner/PKGBUILD49
-rw-r--r--extra/streamtuner/shoutcast-redesign-patch.diff12
-rw-r--r--extra/streamtuner/streamtuner-0.99.99-shoutcast.diff41
-rw-r--r--extra/strigi/PKGBUILD33
-rw-r--r--extra/subversion/PKGBUILD92
-rw-r--r--extra/subversion/subversion.rpath.fix.patch10
-rw-r--r--extra/subversion/subversion.suppress.deprecation.warnings.patch22
-rw-r--r--extra/subversion/svn11
-rw-r--r--extra/subversion/svnmerge.py2370
-rwxr-xr-xextra/subversion/svnserve42
-rw-r--r--extra/subversion/svnserve.conf7
-rw-r--r--extra/sweep/PKGBUILD20
-rw-r--r--extra/swfdec-mozilla/PKGBUILD21
-rw-r--r--extra/swfdec/PKGBUILD25
-rw-r--r--extra/swh-plugins/PKGBUILD29
-rw-r--r--extra/swig/PKGBUILD40
-rw-r--r--extra/swig/swig-deprecated-pycobject.patch92
-rw-r--r--extra/swig/swig-pyslice.patch66
-rw-r--r--extra/swt/PKGBUILD72
-rw-r--r--extra/swt/build-swt.xml17
-rw-r--r--extra/sysklogd/ChangeLog5
-rw-r--r--extra/sysklogd/LICENSE16
-rw-r--r--extra/sysklogd/PKGBUILD39
-rwxr-xr-xextra/sysklogd/klogd37
-rw-r--r--extra/sysklogd/syslog.conf15
-rw-r--r--extra/sysklogd/syslog.logrotate6
-rwxr-xr-xextra/sysklogd/syslogd37
-rw-r--r--extra/system-config-printer/PKGBUILD105
-rw-r--r--extra/t1lib/PKGBUILD22
-rw-r--r--extra/taglib-extras/PKGBUILD25
-rw-r--r--extra/taglib-sharp/PKGBUILD24
-rw-r--r--extra/taglib/PKGBUILD33
-rw-r--r--extra/talloc/PKGBUILD30
-rw-r--r--extra/tcl/PKGBUILD48
-rw-r--r--extra/tcpdump/PKGBUILD34
-rw-r--r--extra/tcpdump/tcpdump_duplicate_executable.patch10
-rw-r--r--extra/tdb/PKGBUILD34
-rw-r--r--extra/telepathy-butterfly/0001-bugfix-remove-bad-import-from-im-module.patch26
-rw-r--r--extra/telepathy-butterfly/PKGBUILD28
-rw-r--r--extra/telepathy-butterfly/telepathy-butterfly.install13
-rw-r--r--extra/telepathy-farsight/PKGBUILD26
-rw-r--r--extra/telepathy-gabble/PKGBUILD26
-rw-r--r--extra/telepathy-gabble/telepathy-gabble.install13
-rw-r--r--extra/telepathy-glib/PKGBUILD26
-rw-r--r--extra/telepathy-haze/PKGBUILD26
-rw-r--r--extra/telepathy-haze/telepathy-haze.install13
-rw-r--r--extra/telepathy-idle/PKGBUILD29
-rw-r--r--extra/telepathy-idle/python27.patch21
-rw-r--r--extra/telepathy-idle/telepathy-idle.install13
-rw-r--r--extra/telepathy-logger/PKGBUILD30
-rw-r--r--extra/telepathy-logger/telepathy-logger.install11
-rw-r--r--extra/telepathy-mission-control/PKGBUILD26
-rw-r--r--extra/telepathy-qt4/PKGBUILD32
-rw-r--r--extra/telepathy-salut/PKGBUILD24
-rw-r--r--extra/telepathy-salut/telepathy-salut.install13
-rw-r--r--extra/telepathy-sofiasip/PKGBUILD23
-rw-r--r--extra/telepathy-sofiasip/telepathy-sofiasip.install13
-rw-r--r--extra/terminal/PKGBUILD36
-rw-r--r--extra/terminal/terminal.install11
-rw-r--r--extra/testdisk/PKGBUILD26
-rw-r--r--extra/texi2html/PKGBUILD25
-rw-r--r--extra/texlive-bin/09-texlive-fonts.conf9
-rw-r--r--extra/texlive-bin/PKGBUILD293
-rw-r--r--extra/texlive-bin/dvipng-fix-options.patch10
-rw-r--r--extra/texlive-bin/fix-fontforge-encoding.patch12
-rw-r--r--extra/texlive-bin/texmf.cnf663
-rw-r--r--extra/texmacs/PKGBUILD36
-rw-r--r--extra/tftp-hpa/LICENSE32
-rw-r--r--extra/tftp-hpa/PKGBUILD29
-rw-r--r--extra/tftp-hpa/tftpd.conf4
-rwxr-xr-xextra/tftp-hpa/tftpd.rc38
-rw-r--r--extra/thinkfinger/PKGBUILD38
-rw-r--r--extra/thinkfinger/thinkfinger-uinput-hack.patch13
-rw-r--r--extra/thinkfinger/thinkfinger.install4
-rw-r--r--extra/thunar-archive-plugin/PKGBUILD33
-rw-r--r--extra/thunar-archive-plugin/thunar-archive-plugin.install17
-rw-r--r--extra/thunar-media-tags-plugin/0001-Switch-to-the-new-tooltip-api-in-gtk-depend-on-gtk-2.patch177
-rw-r--r--extra/thunar-media-tags-plugin/04_fix-implicit-dso-linking.patch10
-rw-r--r--extra/thunar-media-tags-plugin/PKGBUILD47
-rw-r--r--extra/thunar-vfs/PKGBUILD35
-rw-r--r--extra/thunar-volman/PKGBUILD34
-rw-r--r--extra/thunar-volman/thunar-volman.install11
-rw-r--r--extra/thunar/PKGBUILD59
-rw-r--r--extra/thunar/org.freedesktop.udisks.pkla7
-rw-r--r--extra/thunar/thunar.install14
-rw-r--r--extra/tidyhtml/PKGBUILD36
-rw-r--r--extra/tightvnc/PKGBUILD39
-rw-r--r--extra/tightvnc/tightvnc-fontpath-xcolors.patch13
-rw-r--r--extra/time/PKGBUILD29
-rw-r--r--extra/time/time.install20
-rw-r--r--extra/timidity++/2.13.2-gcc4.patch30
-rw-r--r--extra/timidity++/PKGBUILD53
-rw-r--r--extra/timidity++/TiMidity++-2.13.2+flac-1.1.3.patch349
-rw-r--r--extra/timidity++/timidity++-2.13.2-exiterror.patch695
-rw-r--r--extra/timidity++/timidity++-2.13.2-gtk26.patch19
-rw-r--r--extra/timidity++/timidity++-2.13.2-polling.patch34
-rw-r--r--extra/timidity++/timidity++.sh38
-rw-r--r--extra/timidity++/timidity.cfg29
-rw-r--r--extra/tk/PKGBUILD51
-rw-r--r--extra/tomboy/PKGBUILD34
-rw-r--r--extra/tomboy/tomboy.install25
-rw-r--r--extra/tomcat/PKGBUILD46
-rwxr-xr-xextra/tomcat/tomcat53
-rw-r--r--extra/tomcat/tomcat.conf.d5
-rw-r--r--extra/tomcat/tomcat.install27
-rw-r--r--extra/totem-plparser/PKGBUILD29
-rw-r--r--extra/totem/PKGBUILD80
-rw-r--r--extra/totem/totem.install24
-rw-r--r--extra/transcode/PKGBUILD76
-rw-r--r--extra/transcode/transcode-1.1.5-jpeg-7.patch16
-rw-r--r--extra/transcode/transcode-1.1.5-mpa.patch10
-rw-r--r--extra/transfig/ChangeLog36
-rw-r--r--extra/transfig/LICENSE23
-rw-r--r--extra/transfig/PKGBUILD36
-rw-r--r--extra/transmission/PKGBUILD74
-rw-r--r--extra/transmission/transmission-cli.install9
-rw-r--r--extra/transmission/transmission-gtk.install12
-rw-r--r--extra/transmission/transmissiond37
-rw-r--r--extra/transmission/transmissiond.conf5
-rw-r--r--extra/trayer/PKGBUILD23
-rw-r--r--extra/trayer/trayer.diff22
-rw-r--r--extra/tree/PKGBUILD21
-rw-r--r--extra/truecrypt/PKGBUILD40
-rw-r--r--extra/truecrypt/truecrypt.desktop9
-rw-r--r--extra/tsocks/PKGBUILD25
-rw-r--r--extra/tumbler/PKGBUILD33
-rw-r--r--extra/tunepimp/PKGBUILD46
-rw-r--r--extra/tunepimp/gcc4.4.patch13
-rw-r--r--extra/tunepimp/mp4v2-1.9.patch30
-rw-r--r--extra/tunepimp/tunepimp-gcc43.patch145
-rw-r--r--extra/tuxpuck/PKGBUILD22
-rw-r--r--extra/twisted/4771.diff22
-rw-r--r--extra/twisted/PKGBUILD33
-rw-r--r--extra/twisted/twisted.install11
-rw-r--r--extra/udisks/PKGBUILD28
-rw-r--r--extra/uim/PKGBUILD37
-rw-r--r--extra/uim/home.patch24
-rw-r--r--extra/uim/install13
-rw-r--r--extra/umfpack/PKGBUILD58
-rw-r--r--extra/umfpack/UFconfig.mk351
-rw-r--r--extra/unison/PKGBUILD46
-rw-r--r--extra/unison/unison-ssh-ocaml.patch25
-rw-r--r--extra/unison/unison.desktop13
-rw-r--r--extra/unison/unison.install28
-rw-r--r--extra/unixodbc/PKGBUILD29
-rw-r--r--extra/unzip/PKGBUILD40
-rw-r--r--extra/upower/PKGBUILD24
-rw-r--r--extra/usbmuxd/PKGBUILD28
-rw-r--r--extra/usbmuxd/usbmuxd-udevuser.patch11
-rw-r--r--extra/usbmuxd/usbmuxd.install19
-rw-r--r--extra/usbview/PKGBUILD27
-rw-r--r--extra/usermin/PKGBUILD129
-rw-r--r--extra/usermin/usermin-config.tar.bz2bin0 -> 951 bytes
-rw-r--r--extra/usermin/usermin.install34
-rw-r--r--extra/usermin/usermin.rc44
-rw-r--r--extra/v4l-utils/PKGBUILD31
-rw-r--r--extra/v86d/PKGBUILD38
-rw-r--r--extra/v86d/modprobe.uvesafb10
-rw-r--r--extra/v86d/v86d12
-rw-r--r--extra/v86d/v86d_hook4
-rw-r--r--extra/vala/PKGBUILD27
-rw-r--r--extra/valgrind/PKGBUILD40
-rw-r--r--extra/valgrind/glibc-patch-version.patch52
-rw-r--r--extra/vamp-plugin-sdk/PKGBUILD38
-rw-r--r--extra/vamp-plugin-sdk/gcc44.patch14
-rw-r--r--extra/vamp-plugin-sdk/vamp-plugin-sdk.changelog11
-rw-r--r--extra/vbetool/PKGBUILD28
-rw-r--r--extra/vcdimager/PKGBUILD24
-rw-r--r--extra/vcdimager/vcdimager.install19
-rw-r--r--extra/vde2/PKGBUILD44
-rw-r--r--extra/vde2/dhcpd.conf.sample12
-rw-r--r--extra/vde2/iptables.rules.sample5
-rw-r--r--extra/vde2/vde-config.sample35
-rw-r--r--extra/vde2/vde-connection.sample6
-rw-r--r--extra/vde2/vde.conf11
-rwxr-xr-xextra/vde2/vde.rc113
-rw-r--r--extra/vde2/vde2.install14
-rw-r--r--extra/vdpau-video/PKGBUILD25
-rw-r--r--extra/vice/PKGBUILD33
-rw-r--r--extra/vice/vice-2.3-x11video.patch11
-rw-r--r--extra/vigra/PKGBUILD35
-rw-r--r--extra/vigra/libpng-1.4.patch14
-rw-r--r--extra/vim/PKGBUILD198
-rw-r--r--extra/vim/archlinux.vim26
-rw-r--r--extra/vim/gvim.desktop42
-rw-r--r--extra/vim/gvim.install13
-rw-r--r--extra/vim/vimrc16
-rw-r--r--extra/vinagre/PKGBUILD32
-rw-r--r--extra/vinagre/vinagre.install26
-rw-r--r--extra/vino/PKGBUILD33
-rw-r--r--extra/vino/vino.install17
-rw-r--r--extra/virtuoso/PKGBUILD38
-rw-r--r--extra/vlc/PKGBUILD92
-rw-r--r--extra/vlc/vlc.install18
-rw-r--r--extra/vorbis-tools/ChangeLog26
-rw-r--r--extra/vorbis-tools/PKGBUILD27
-rw-r--r--extra/vsftpd/PKGBUILD42
-rw-r--r--extra/vsftpd/vsftpd.d67
-rw-r--r--extra/vsftpd/vsftpd.install17
-rw-r--r--extra/vsftpd/vsftpd.xinetd10
-rw-r--r--extra/vte/PKGBUILD24
-rw-r--r--extra/w3m/PKGBUILD37
-rw-r--r--extra/watchdog/PKGBUILD44
-rw-r--r--extra/watchdog/watchdog.cf2
-rw-r--r--extra/watchdog/watchdog.sh44
-rw-r--r--extra/wavpack/PKGBUILD29
-rw-r--r--extra/webkit-sharp/PKGBUILD28
-rw-r--r--extra/webmin/PKGBUILD215
-rw-r--r--extra/webmin/webmin-config.tar.bz2bin0 -> 3021 bytes
-rw-r--r--extra/webmin/webmin-pacman.tar.bz2bin0 -> 833 bytes
-rw-r--r--extra/webmin/webmin.install35
-rw-r--r--extra/webmin/webmin.rc44
-rw-r--r--extra/weechat/PKGBUILD33
-rw-r--r--extra/wesnoth/PKGBUILD28
-rw-r--r--extra/wesnoth/wesnoth-libpng-1.4.0.patch14
-rw-r--r--extra/wesnoth/wesnoth.install9
-rw-r--r--extra/whois/PKGBUILD27
-rw-r--r--extra/windowmaker-crm-git/PKGBUILD30
-rw-r--r--extra/windowmaker-crm-git/libpng-1.4.patch12
-rw-r--r--extra/windowmaker-crm-git/wmaker.desktop5
-rw-r--r--extra/windowmaker-extra/PKGBUILD23
-rw-r--r--extra/windowmaker/PKGBUILD35
-rw-r--r--extra/windowmaker/libpng-1.4.patch12
-rw-r--r--extra/windowmaker/windowmaker-gcc4.patch.tar.bz2bin0 -> 39677 bytes
-rw-r--r--extra/wipe/PKGBUILD28
-rw-r--r--extra/wireshark/PKGBUILD54
-rw-r--r--extra/wireshark/wireshark-gtk.install11
-rw-r--r--extra/wireshark/wireshark.install16
-rw-r--r--extra/wpa_supplicant_gui/PKGBUILD28
-rw-r--r--extra/wv/PKGBUILD25
-rw-r--r--extra/wv/fix-soname.patch14
-rw-r--r--extra/wv2/PKGBUILD30
-rw-r--r--extra/wvdial/PKGBUILD24
-rw-r--r--extra/wvstreams/PKGBUILD40
-rw-r--r--extra/wxgtk/PKGBUILD36
-rw-r--r--extra/wxmaxima/PKGBUILD36
-rw-r--r--extra/wxpython/ChangeLog48
-rw-r--r--extra/wxpython/PKGBUILD33
-rw-r--r--extra/wxpython/editra-aui.diff11
-rw-r--r--extra/x11vnc/PKGBUILD36
-rw-r--r--extra/x11vnc/x11vnc.conf5
-rw-r--r--extra/x11vnc/x11vnc.rc37
-rw-r--r--extra/x264/PKGBUILD31
-rw-r--r--extra/x2x/LICENSE39
-rw-r--r--extra/x2x/PKGBUILD23
-rw-r--r--extra/xaos/ChangeLog24
-rw-r--r--extra/xaos/PKGBUILD24
-rw-r--r--extra/xaos/xaos.install20
-rw-r--r--extra/xarchiver/ChangeLog9
-rw-r--r--extra/xarchiver/PKGBUILD37
-rw-r--r--extra/xarchiver/xarchiver.install12
-rw-r--r--extra/xaw3d/ChangeLog15
-rw-r--r--extra/xaw3d/LICENSE22
-rw-r--r--extra/xaw3d/PKGBUILD49
-rw-r--r--extra/xaw3d/Xaw3d-1.5-box.c.patch27
-rw-r--r--extra/xaw3d/Xaw3d-1.5-debian-fixes.patch647
-rw-r--r--extra/xaw3d/Xaw3d-1.5-i18n.patch10
-rw-r--r--extra/xaw3d/Xaw3d-1.5E-warnings.patch114
-rw-r--r--extra/xaw3d/Xaw3d-1.5E-xorg-imake.patch35
-rw-r--r--extra/xaw3d/Xaw3d-ia64.patch33
-rw-r--r--extra/xaw3d/xaw3d.patch30
-rw-r--r--extra/xawtv/PKGBUILD42
-rw-r--r--extra/xawtv/xawtv-3.95-fixes.patch72
-rw-r--r--extra/xawtv/xawtv-3.95-libv4l2.patch176
-rw-r--r--extra/xawtv/xawtv-3.95-no-dga.patch120
-rw-r--r--extra/xawtv/xawtv-3.95-pagemask-fix.patch44
-rw-r--r--extra/xawtv/xawtv-395.diff60
-rw-r--r--extra/xbill/PKGBUILD35
-rw-r--r--extra/xbill/xbill.install25
-rw-r--r--extra/xbindkeys/PKGBUILD27
-rw-r--r--extra/xcb-util/LICENSE267
-rw-r--r--extra/xcb-util/PKGBUILD26
-rw-r--r--extra/xchat-gnome/PKGBUILD50
-rw-r--r--extra/xchat-gnome/gtk2-2.20.patch137
-rw-r--r--extra/xchat-gnome/xchat-gnome-0.26.1-deprecated-symbol.patch22
-rw-r--r--extra/xchat-gnome/xchat-gnome.install24
-rw-r--r--extra/xchm/PKGBUILD32
-rw-r--r--extra/xchm/xchm.desktop10
-rw-r--r--extra/xchm/xchm.install15
-rw-r--r--extra/xchm/xchm.xml7
-rw-r--r--extra/xclip/PKGBUILD26
-rw-r--r--extra/xcompmgr/PKGBUILD24
-rw-r--r--extra/xdelta/PKGBUILD29
-rw-r--r--extra/xdelta/xdelta-1.1.4-aclocal.patch11
-rw-r--r--extra/xdelta3/PKGBUILD36
-rw-r--r--extra/xdelta3/xdelta3-makefile.patch24
-rw-r--r--extra/xf86-input-acecad/PKGBUILD26
-rw-r--r--extra/xf86-input-aiptek/PKGBUILD26
-rw-r--r--extra/xf86-input-evdev/PKGBUILD31
-rw-r--r--extra/xf86-input-joystick/50-joystick.conf6
-rw-r--r--extra/xf86-input-joystick/LICENSE22
-rw-r--r--extra/xf86-input-joystick/PKGBUILD34
-rw-r--r--extra/xf86-input-keyboard/PKGBUILD26
-rw-r--r--extra/xf86-input-mouse/PKGBUILD26
-rw-r--r--extra/xf86-input-synaptics/10-synaptics.conf9
-rw-r--r--extra/xf86-input-synaptics/PKGBUILD39
-rw-r--r--extra/xf86-input-void/PKGBUILD26
-rw-r--r--extra/xf86-input-wacom/70-wacom.rules8
-rw-r--r--extra/xf86-input-wacom/PKGBUILD30
-rw-r--r--extra/xf86-video-apm/PKGBUILD26
-rw-r--r--extra/xf86-video-ark/PKGBUILD27
-rw-r--r--extra/xf86-video-ast/PKGBUILD25
-rw-r--r--extra/xf86-video-ati/PKGBUILD31
-rw-r--r--extra/xf86-video-chips/PKGBUILD28
-rw-r--r--extra/xf86-video-cirrus/LICENSE22
-rw-r--r--extra/xf86-video-cirrus/PKGBUILD28
-rw-r--r--extra/xf86-video-dummy/PKGBUILD26
-rw-r--r--extra/xf86-video-fbdev/PKGBUILD26
-rw-r--r--extra/xf86-video-glint/PKGBUILD26
-rw-r--r--extra/xf86-video-i128/PKGBUILD26
-rw-r--r--extra/xf86-video-i740/PKGBUILD26
-rw-r--r--extra/xf86-video-intel/PKGBUILD31
-rw-r--r--extra/xf86-video-intel/git-fixes.patch1209
-rw-r--r--extra/xf86-video-mach64/PKGBUILD26
-rw-r--r--extra/xf86-video-mga/PKGBUILD27
-rw-r--r--extra/xf86-video-neomagic/PKGBUILD26
-rw-r--r--extra/xf86-video-nouveau/PKGBUILD41
-rw-r--r--extra/xf86-video-nouveau/xf86-video-nouveau.install16
-rw-r--r--extra/xf86-video-nv/PKGBUILD27
-rw-r--r--extra/xf86-video-openchrome/LICENSE.txt26
-rw-r--r--extra/xf86-video-openchrome/PKGBUILD35
-rw-r--r--extra/xf86-video-openchrome/drm_stdint.patch10
-rw-r--r--extra/xf86-video-openchrome/svn-r839.patch1447
-rw-r--r--extra/xf86-video-r128/LICENSE219
-rw-r--r--extra/xf86-video-r128/PKGBUILD29
-rw-r--r--extra/xf86-video-rendition/PKGBUILD28
-rw-r--r--extra/xf86-video-s3/LICENSE25
-rw-r--r--extra/xf86-video-s3/PKGBUILD29
-rw-r--r--extra/xf86-video-s3virge/LICENSE25
-rw-r--r--extra/xf86-video-s3virge/PKGBUILD29
-rw-r--r--extra/xf86-video-savage/PKGBUILD27
-rw-r--r--extra/xf86-video-siliconmotion/PKGBUILD28
-rw-r--r--extra/xf86-video-sis/PKGBUILD27
-rw-r--r--extra/xf86-video-sisusb/PKGBUILD26
-rw-r--r--extra/xf86-video-tdfx/LICENSE160
-rw-r--r--extra/xf86-video-tdfx/PKGBUILD29
-rw-r--r--extra/xf86-video-trident/PKGBUILD27
-rw-r--r--extra/xf86-video-tseng/PKGBUILD26
-rw-r--r--extra/xf86-video-unichrome/LICENSE23
-rw-r--r--extra/xf86-video-unichrome/PKGBUILD30
-rw-r--r--extra/xf86-video-unichrome/drm-include.patch11
-rw-r--r--extra/xf86-video-v4l/LICENSE826
-rw-r--r--extra/xf86-video-v4l/PKGBUILD27
-rw-r--r--extra/xf86-video-vesa/PKGBUILD26
-rw-r--r--extra/xf86-video-voodoo/PKGBUILD26
-rw-r--r--extra/xf86-video-xgi/PKGBUILD25
-rw-r--r--extra/xf86-video-xgixp/PKGBUILD25
-rwxr-xr-xextra/xfburn/PKGBUILD33
-rw-r--r--extra/xfburn/xfburn.install14
-rw-r--r--extra/xfce-utils/PKGBUILD40
-rw-r--r--extra/xfce-utils/xfce-utils.install21
-rw-r--r--extra/xfce4-appfinder/PKGBUILD34
-rw-r--r--extra/xfce4-appfinder/xfce4-appfinder.install12
-rw-r--r--extra/xfce4-battery-plugin/PKGBUILD34
-rw-r--r--extra/xfce4-battery-plugin/xfce4-battery-plugin.install11
-rw-r--r--extra/xfce4-clipman-plugin/PKGBUILD38
-rw-r--r--extra/xfce4-clipman-plugin/xfce4-clipman-plugin.install12
-rw-r--r--extra/xfce4-cpufreq-plugin/PKGBUILD34
-rw-r--r--extra/xfce4-cpufreq-plugin/xfce4-cpufreq-plugin.install11
-rw-r--r--extra/xfce4-cpugraph-plugin/PKGBUILD34
-rw-r--r--extra/xfce4-cpugraph-plugin/xfce4-cpugraph-plugin.install12
-rw-r--r--extra/xfce4-datetime-plugin/PKGBUILD33
-rw-r--r--extra/xfce4-dict/PKGBUILD37
-rw-r--r--extra/xfce4-dict/xfce4-dict.install11
-rw-r--r--extra/xfce4-diskperf-plugin/PKGBUILD33
-rw-r--r--extra/xfce4-eyes-plugin/PKGBUILD32
-rw-r--r--extra/xfce4-eyes-plugin/xfce4-eyes-plugin.install11
-rw-r--r--extra/xfce4-fsguard-plugin/PKGBUILD34
-rw-r--r--extra/xfce4-fsguard-plugin/xfce4-fsguard-plugin.install11
-rw-r--r--extra/xfce4-genmon-plugin/PKGBUILD33
-rw-r--r--extra/xfce4-mailwatch-plugin/PKGBUILD39
-rw-r--r--extra/xfce4-mailwatch-plugin/xfce4-mailwatch-plugin-1.1.0-underlink.patch21
-rw-r--r--extra/xfce4-mailwatch-plugin/xfce4-mailwatch-plugin.install11
-rw-r--r--extra/xfce4-mixer/PKGBUILD38
-rw-r--r--extra/xfce4-mixer/xfce4-mixer.install11
-rw-r--r--extra/xfce4-mount-plugin/PKGBUILD33
-rw-r--r--extra/xfce4-mount-plugin/xfce4-mount-plugin.install11
-rw-r--r--extra/xfce4-mpc-plugin/PKGBUILD34
-rw-r--r--extra/xfce4-netload-plugin/PKGBUILD34
-rw-r--r--extra/xfce4-netload-plugin/xfce4-netload-plugin.install12
-rw-r--r--extra/xfce4-notes-plugin/PKGBUILD34
-rw-r--r--extra/xfce4-notes-plugin/xfce4-notes-plugin.install12
-rw-r--r--extra/xfce4-notifyd/PKGBUILD37
-rw-r--r--extra/xfce4-notifyd/xfce4-notifyd.install12
-rw-r--r--extra/xfce4-panel/PKGBUILD36
-rw-r--r--extra/xfce4-panel/xfce4-panel.install11
-rw-r--r--extra/xfce4-power-manager/PKGBUILD41
-rw-r--r--extra/xfce4-power-manager/xfce4-power-manager-1.0.10-libnotify-0.7.patch14
-rw-r--r--extra/xfce4-power-manager/xfce4-power-manager.install11
-rw-r--r--extra/xfce4-quicklauncher-plugin/PKGBUILD50
-rw-r--r--extra/xfce4-quicklauncher-plugin/xfce4-quicklauncher-plugin-1.9.4-desktop-file.patch10
-rw-r--r--extra/xfce4-quicklauncher-plugin/xfce4-quicklauncher-plugin-1.9.4-fix-missing-english-translation.patch103
-rw-r--r--extra/xfce4-quicklauncher-plugin/xfce4-quicklauncher-plugin-1.9.4-fix-multiscreen.patch27
-rw-r--r--extra/xfce4-quicklauncher-plugin/xfce4-quicklauncher-plugin-1.9.4-save-settings.patch12
-rw-r--r--extra/xfce4-quicklauncher-plugin/xfce4-quicklauncher-plugin-1.9.4-xfce4-settings-manager.patch11
-rw-r--r--extra/xfce4-screenshooter/PKGBUILD43
-rw-r--r--extra/xfce4-screenshooter/fix_segfault.diff17
-rw-r--r--extra/xfce4-screenshooter/xfce4-screenshooter-1.7.9-dsofix.patch11
-rw-r--r--extra/xfce4-screenshooter/xfce4-screenshooter.install11
-rw-r--r--extra/xfce4-sensors-plugin/PKGBUILD46
-rw-r--r--extra/xfce4-sensors-plugin/xfce4-sensors-plugin-1.0.0-libnotify-0.7.patch25
-rw-r--r--extra/xfce4-sensors-plugin/xfce4-sensors-plugin-1.0.0-underlink.patch36
-rw-r--r--extra/xfce4-sensors-plugin/xfce4-sensors-plugin.install11
-rw-r--r--extra/xfce4-session/PKGBUILD62
-rw-r--r--extra/xfce4-session/org.freedesktop.consolekit.pkla31
-rw-r--r--extra/xfce4-session/org.freedesktop.upower.pkla15
-rw-r--r--extra/xfce4-session/xfce4-session.install11
-rw-r--r--extra/xfce4-settings/PKGBUILD44
-rw-r--r--extra/xfce4-settings/xfce4-settings-4.6.0.patch18
-rw-r--r--extra/xfce4-smartbookmark-plugin/0001-Fix-problems-with-plugin-and-4.8-panel.patch37
-rw-r--r--extra/xfce4-smartbookmark-plugin/PKGBUILD41
-rw-r--r--extra/xfce4-smartbookmark-plugin/xfce4-smartbookmark-plugin-archlinux.patch24
-rw-r--r--extra/xfce4-systemload-plugin/PKGBUILD33
-rw-r--r--extra/xfce4-systemload-plugin/missing_tooltip.diff21
-rw-r--r--extra/xfce4-taskmanager/PKGBUILD28
-rwxr-xr-xextra/xfce4-time-out-plugin/PKGBUILD35
-rwxr-xr-xextra/xfce4-time-out-plugin/xfce4-time-out-plugin.install11
-rw-r--r--extra/xfce4-timer-plugin/PKGBUILD37
-rw-r--r--extra/xfce4-timer-plugin/panel48.patch39
-rw-r--r--extra/xfce4-verve-plugin/PKGBUILD33
-rw-r--r--extra/xfce4-wavelan-plugin/PKGBUILD34
-rw-r--r--extra/xfce4-weather-plugin/PKGBUILD34
-rw-r--r--extra/xfce4-weather-plugin/xfce4-weather-plugin.install13
-rw-r--r--extra/xfce4-xfapplet-plugin/PKGBUILD32
-rw-r--r--extra/xfce4-xkb-plugin/PKGBUILD43
-rw-r--r--extra/xfce4-xkb-plugin/crashfix.diff34
-rw-r--r--extra/xfce4-xkb-plugin/xfce4-xkb-plugin-0.5.3.3-libxklavier.patch30
-rw-r--r--extra/xfconf/PKGBUILD42
-rw-r--r--extra/xfdesktop/PKGBUILD43
-rw-r--r--extra/xfdesktop/xfdesktop.install11
-rw-r--r--extra/xfig/LICENSE33
-rw-r--r--extra/xfig/PKGBUILD63
-rw-r--r--extra/xfig/xfig-3.2.4-redhat.patch31
-rw-r--r--extra/xfig/xfig-3.2.5-color-resources.patch39
-rw-r--r--extra/xfig/xfig-3.2.5-enable-Xaw3d.patch18
-rw-r--r--extra/xfig/xfig-3.2.5-fhs.patch12
-rw-r--r--extra/xfig/xfig-3.2.5-missing-protos.patch11
-rw-r--r--extra/xfig/xfig-3.2.5-urwfonts.patch79
-rw-r--r--extra/xfig/xfig-3.2.5b-fix-eps-reading.patch46
-rw-r--r--extra/xfig/xfig.3.2.5-modularX.patch28
-rw-r--r--extra/xfig/xfig.desktop47
-rw-r--r--extra/xfig/xfig.install11
-rw-r--r--extra/xfprint/PKGBUILD35
-rw-r--r--extra/xfprint/xfprint-manager-fix.diff29
-rw-r--r--extra/xfprint/xfprint.install11
-rw-r--r--extra/xfwm4-themes/PKGBUILD24
-rw-r--r--extra/xfwm4/PKGBUILD38
-rw-r--r--extra/xfwm4/xfwm4.install11
-rw-r--r--extra/xine-lib/PKGBUILD49
-rw-r--r--extra/xine-lib/xine-lib-1.1.1-configure-no-mcpu-march.patch13
-rw-r--r--extra/xine-lib/xine-lib-1.1.19-xvmc.patch17
-rw-r--r--extra/xine-ui/ChangeLog27
-rw-r--r--extra/xine-ui/PKGBUILD41
-rw-r--r--extra/xine-ui/fix_lirc.diff13
-rw-r--r--extra/xine-ui/lirc-check-a89347673097.patch64
-rw-r--r--extra/xine-ui/lirc-makefile-a68dd15ff7ae.patch19
-rw-r--r--extra/xine-ui/xine-ui.install12
-rw-r--r--extra/xmahjongg/PKGBUILD21
-rw-r--r--extra/xmlsec/PKGBUILD31
-rw-r--r--extra/xmlto/PKGBUILD26
-rw-r--r--extra/xmms/PKGBUILD76
-rw-r--r--extra/xmms/xmms-1.2.10-crossfade-0.3.9.patch101
-rw-r--r--extra/xmms/xmms-1.2.10-fonts.patch24
-rw-r--r--extra/xmms/xmms-1.2.10-recode-id3.patch11
-rw-r--r--extra/xmms/xmms-1.2.11-3dse.patch503
-rw-r--r--extra/xmms/xmms-1.2.11-CVE-2007-0653.0654.patch43
-rw-r--r--extra/xmms/xmms-1.2.11-fix-http-title-mpg123.patch10
-rw-r--r--extra/xmms/xmms-fix.diff11
-rw-r--r--extra/xmms/xmms-menu.patch35
-rw-r--r--extra/xmms/xmms.16.pngbin0 -> 1497 bytes
-rw-r--r--extra/xmms/xmms.32.pngbin0 -> 3477 bytes
-rw-r--r--extra/xmms/xmms.48.pngbin0 -> 5925 bytes
-rw-r--r--extra/xorg-appres/PKGBUILD24
-rw-r--r--extra/xorg-bdftopcf/PKGBUILD24
-rw-r--r--extra/xorg-font-util/PKGBUILD27
-rw-r--r--extra/xorg-iceauth/PKGBUILD24
-rw-r--r--extra/xorg-luit/PKGBUILD25
-rw-r--r--extra/xorg-mkfontscale/PKGBUILD24
-rw-r--r--extra/xorg-oclock/PKGBUILD23
-rw-r--r--extra/xorg-server/10-quirks.conf10
-rw-r--r--extra/xorg-server/PKGBUILD181
-rw-r--r--extra/xorg-server/vbe-fix-malloc-size-bug.patch39
-rw-r--r--extra/xorg-server/xorg-redhat-die-ugly-pattern-die-die-die.patch16
-rw-r--r--extra/xorg-server/xvfb-run180
-rw-r--r--extra/xorg-server/xvfb-run.1282
-rw-r--r--extra/xorg-sessreg/PKGBUILD24
-rw-r--r--extra/xorg-setxkbmap/PKGBUILD24
-rw-r--r--extra/xorg-smproxy/PKGBUILD24
-rw-r--r--extra/xorg-twm/PKGBUILD30
-rw-r--r--extra/xorg-x11perf/PKGBUILD28
-rw-r--r--extra/xorg-xauth/PKGBUILD24
-rw-r--r--extra/xorg-xbacklight/PKGBUILD24
-rw-r--r--extra/xorg-xbiff/PKGBUILD27
-rw-r--r--extra/xorg-xcalc/PKGBUILD23
-rw-r--r--extra/xorg-xclipboard/PKGBUILD23
-rw-r--r--extra/xorg-xclock/PKGBUILD23
-rw-r--r--extra/xorg-xcmsdb/PKGBUILD24
-rw-r--r--extra/xorg-xconsole/PKGBUILD23
-rw-r--r--extra/xorg-xcursorgen/PKGBUILD24
-rw-r--r--extra/xorg-xdm/LICENSE132
-rw-r--r--extra/xorg-xdm/PKGBUILD43
-rw-r--r--extra/xorg-xdm/Xsession-loginshell.patch15
-rw-r--r--extra/xorg-xdm/Xsession-xsm.patch22
-rw-r--r--extra/xorg-xdm/xdm.pam8
-rw-r--r--extra/xorg-xdpyinfo/PKGBUILD24
-rw-r--r--extra/xorg-xdriinfo/PKGBUILD24
-rw-r--r--extra/xorg-xedit/PKGBUILD23
-rw-r--r--extra/xorg-xev/PKGBUILD24
-rw-r--r--extra/xorg-xeyes/PKGBUILD23
-rw-r--r--extra/xorg-xfd/PKGBUILD23
-rw-r--r--extra/xorg-xfontsel/PKGBUILD23
-rw-r--r--extra/xorg-xfs/PKGBUILD64
-rw-r--r--extra/xorg-xfs/xfs.rc46
-rw-r--r--extra/xorg-xgamma/PKGBUILD24
-rw-r--r--extra/xorg-xhost/PKGBUILD24
-rw-r--r--extra/xorg-xinit/06_move_serverauthfile_into_tmp.diff20
-rw-r--r--extra/xorg-xinit/PKGBUILD49
-rw-r--r--extra/xorg-xinit/xinitrc17
-rw-r--r--extra/xorg-xinit/xserverrc1
-rw-r--r--extra/xorg-xinit/xsession10
-rw-r--r--extra/xorg-xinput/PKGBUILD24
-rw-r--r--extra/xorg-xkbcomp/PKGBUILD24
-rw-r--r--extra/xorg-xkbevd/PKGBUILD24
-rw-r--r--extra/xorg-xkbutils/PKGBUILD24
-rw-r--r--extra/xorg-xkill/PKGBUILD24
-rw-r--r--extra/xorg-xload/PKGBUILD23
-rw-r--r--extra/xorg-xlogo/PKGBUILD23
-rw-r--r--extra/xorg-xlsatoms/PKGBUILD24
-rw-r--r--extra/xorg-xlsclients/PKGBUILD24
-rw-r--r--extra/xorg-xmag/PKGBUILD23
-rw-r--r--extra/xorg-xman/PKGBUILD23
-rw-r--r--extra/xorg-xmessage/PKGBUILD23
-rw-r--r--extra/xorg-xmodmap/PKGBUILD24
-rw-r--r--extra/xorg-xpr/PKGBUILD27
-rw-r--r--extra/xorg-xpr/copyright.patch75
-rw-r--r--extra/xorg-xprop/PKGBUILD24
-rw-r--r--extra/xorg-xrandr/PKGBUILD25
-rw-r--r--extra/xorg-xrdb/PKGBUILD24
-rw-r--r--extra/xorg-xrefresh/PKGBUILD24
-rw-r--r--extra/xorg-xset/PKGBUILD24
-rw-r--r--extra/xorg-xsetroot/PKGBUILD24
-rw-r--r--extra/xorg-xvidtune/PKGBUILD23
-rw-r--r--extra/xorg-xvinfo/PKGBUILD24
-rw-r--r--extra/xorg-xwd/PKGBUILD24
-rw-r--r--extra/xorg-xwininfo/PKGBUILD24
-rw-r--r--extra/xorg-xwud/PKGBUILD24
-rw-r--r--extra/xournal/PKGBUILD31
-rw-r--r--extra/xournal/pdf-export-64.patch89
-rw-r--r--extra/xournal/xournal.install13
-rw-r--r--extra/xpdf/PKGBUILD74
-rw-r--r--extra/xpdf/xpdf-3.00-xfont.patch11
-rw-r--r--extra/xpdf/xpdf.desktop9
-rw-r--r--extra/xpdf/xpdf.install11
-rw-r--r--extra/xplc/PKGBUILD28
-rw-r--r--extra/xsane/PKGBUILD66
-rw-r--r--extra/xsane/xsane-0.995-xdg-open.patch12
-rw-r--r--extra/xsane/xsane.install16
-rw-r--r--extra/xscreensaver/ChangeLog46
-rw-r--r--extra/xscreensaver/LICENSE9
-rw-r--r--extra/xscreensaver/PKGBUILD38
-rw-r--r--extra/xscreensaver/add-electricsheep.diff12
-rw-r--r--extra/xscreensaver/xscreensaver.pam1
-rw-r--r--extra/xsp/PKGBUILD61
-rw-r--r--extra/xsp/xsp.conf.d10
-rw-r--r--extra/xsp/xsp.install37
-rw-r--r--extra/xsp/xsp.rc.d40
-rw-r--r--extra/xsp/xsp.webapp8
-rw-r--r--extra/xterm/LICENSE73
-rw-r--r--extra/xterm/PKGBUILD57
-rw-r--r--extra/xulrunner/PKGBUILD61
-rw-r--r--extra/xulrunner/mozconfig56
-rw-r--r--extra/xulrunner/mozilla-pkgconfig.patch60
-rw-r--r--extra/xulrunner/port_gnomevfs_to_gio.patch1316
-rw-r--r--extra/xulrunner/xulrunner-omnijar.patch1737
-rw-r--r--extra/xulrunner/xulrunner-version.patch12
-rw-r--r--extra/xvidcore/PKGBUILD33
-rw-r--r--extra/yakuake/PKGBUILD33
-rw-r--r--extra/yakuake/yakuake.install11
-rw-r--r--extra/yasm/PKGBUILD28
-rw-r--r--extra/yelp/PKGBUILD32
-rw-r--r--extra/yelp/yelp.install22
-rw-r--r--extra/yp-tools/PKGBUILD25
-rw-r--r--extra/ypbind-mt/PKGBUILD34
-rwxr-xr-xextra/ypbind-mt/ypbind36
-rw-r--r--extra/ypbind-mt/ypbind.conf4
-rw-r--r--extra/ypserv/PKGBUILD36
-rwxr-xr-xextra/ypserv/yppasswd34
-rwxr-xr-xextra/ypserv/ypserv34
-rw-r--r--extra/zenity/PKGBUILD26
-rw-r--r--extra/zenity/zenity-2.32.1-libnotify-0.7.patch27
-rw-r--r--extra/zile/PKGBUILD24
-rw-r--r--extra/zip/ChangeLog13
-rw-r--r--extra/zip/PKGBUILD22
-rw-r--r--extra/zope-interface/PKGBUILD21
-rw-r--r--extra/zsh/PKGBUILD46
-rw-r--r--extra/zsh/zsh.install11
-rw-r--r--extra/zvbi/PKGBUILD25
-rw-r--r--extra/zvbi/fix-includes.patch36
3041 files changed, 145013 insertions, 0 deletions
diff --git a/extra/a2ps/ChangeLog b/extra/a2ps/ChangeLog
new file mode 100644
index 000000000..fda664602
--- /dev/null
+++ b/extra/a2ps/ChangeLog
@@ -0,0 +1,10 @@
+2009-03-22 Eric Belanger <eric@archlinux.org>
+
+ * a2ps 4.14-1
+ * Upstream update
+ * Added/Removed patches
+ * Updated license
+ * Added backup array
+ * Added gperf makedepends
+ * Added install scriptlet to handle info pages
+ * Added ChangeLog
diff --git a/extra/a2ps/PKGBUILD b/extra/a2ps/PKGBUILD
new file mode 100644
index 000000000..81912e2d3
--- /dev/null
+++ b/extra/a2ps/PKGBUILD
@@ -0,0 +1,46 @@
+# $Id: PKGBUILD 31025 2009-03-24 03:24:37Z eric $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+# Contributor: Sarah Hay <sarahhay@mb.sympatico.ca>
+
+pkgname=a2ps
+pkgver=4.14
+pkgrel=1
+pkgdesc="a2ps is an Any to PostScript filter"
+arch=('i686' 'x86_64')
+url="http://www.gnu.org/software/a2ps/"
+license=('GPL3')
+depends=('ghostscript' 'psutils' 'imagemagick' 'perl')
+makedepends=('gperf')
+replaces=('a2ps-lprng')
+provides=('a2ps-lprng')
+backup=('etc/a2ps/a2ps.cfg' 'etc/a2ps/a2ps-site.cfg')
+options=('!libtool')
+install=a2ps.install
+source=(ftp://ftp.gnu.org/gnu/a2ps/${pkgname}-${pkgver}.tar.gz \
+ a2ps-4.13c-fnmatch-replacement.patch a2ps-4.13c-emacs.patch a2ps-4.13-manpage-chmod.patch \
+ a2ps-4.14-check-mempcpy.patch a2ps-4.14-fix-stpcpy-proto.patch)
+md5sums=('781ac3d9b213fa3e1ed0d79f986dc8c7' '93011b58e9f20a7fafa31287a51884a4'\
+ '2e493d0bc00d71eb3e8a9b6febc52b69' '09cc5ed4d3d8ff1b2103e519191e8286'\
+ '42aa39b74f6da8cf6e94185c4fc3e601' '066f9327fee6b6eca3a57d657d1097d1')
+sha1sums=('365abbbe4b7128bf70dad16d06e23c5701874852' '8783952d3410d8d59ed953e1db45e2ef1a0b8f65'\
+ '94e35a6ad9268161bec22a56d4cfb696d635994a' '2bb3d0a2ef2f3ff9262723e35c742a80ab0235ce'\
+ '6aed29c1399e79f3914b408059610f9e7c0fc38e' '58fa90134f1027e3f05aeb08212cbcc10f420738')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ patch -p1 < ../a2ps-4.13c-fnmatch-replacement.patch || return 1
+ patch -p1 < ../a2ps-4.13c-emacs.patch || return 1
+ patch -p1 < ../a2ps-4.13-manpage-chmod.patch || return 1
+ patch -p1 < ../a2ps-4.14-check-mempcpy.patch || return 1
+ patch -p0 < ../a2ps-4.14-fix-stpcpy-proto.patch || return 1
+ libtoolize --force --copy || return 1
+ autoreconf -I m4 || return 1
+ ./configure --prefix=/usr --sysconfdir=/etc/a2ps \
+ --includedir=/usr/include --enable-nls || return 1
+ export LANG=C
+ make || return 1
+ make DESTDIR=${pkgdir} install || return 1
+ sed -i "s:^countdictstack: \0:" ${pkgdir}/usr/bin/psset || return 1
+ rm ${pkgdir}/usr/share/info/dir
+ gzip ${pkgdir}/usr/share/info/*
+}
diff --git a/extra/a2ps/a2ps-4.13-manpage-chmod.patch b/extra/a2ps/a2ps-4.13-manpage-chmod.patch
new file mode 100644
index 000000000..e0c61124e
--- /dev/null
+++ b/extra/a2ps/a2ps-4.13-manpage-chmod.patch
@@ -0,0 +1,12 @@
+diff -ur a2ps-4.13.orig/man/Makefile.maint a2ps-4.13/man/Makefile.maint
+--- a2ps-4.13.orig/man/Makefile.maint 2002-03-04 20:46:26.000000000 +0200
++++ a2ps-4.13/man/Makefile.maint 2007-02-19 21:50:29.000000000 +0200
+@@ -20,7 +20,7 @@
+ --include=$(basename $@).x \
+ --include=common.x \
+ $(executable) > $@-t || exit 1; \
+- chmod -w $@-t || exit 1; \
++ chmod a-w $@-t || exit 1; \
+ rm -f $@ || exit 1; \
+ mv $@-t $@ || exit 1; \
+ else \
diff --git a/extra/a2ps/a2ps-4.13c-emacs.patch b/extra/a2ps/a2ps-4.13c-emacs.patch
new file mode 100644
index 000000000..f1cd5d9eb
--- /dev/null
+++ b/extra/a2ps/a2ps-4.13c-emacs.patch
@@ -0,0 +1,10 @@
+--- a2ps-4.13/contrib/emacs/a2ps-print.el.orig 2005-12-05 08:03:48.000000000 +0100
++++ a2ps-4.13/contrib/emacs/a2ps-print.el 2005-12-06 16:38:14.000000000 +0100
+@@ -93,6 +93,7 @@
+ (concat "--center-title=" name)
+ (concat "--footer=" (concat name " Emacs buffer"))
+ (concat "--pretty-print=" filetype)
++ (concat "-d")
+ ;Uncommenting the following gives a print preview (only):
+ ; (concat "--output=/tmp/foo.ps")
+ )
diff --git a/extra/a2ps/a2ps-4.13c-fnmatch-replacement.patch b/extra/a2ps/a2ps-4.13c-fnmatch-replacement.patch
new file mode 100644
index 000000000..c49ab78c9
--- /dev/null
+++ b/extra/a2ps/a2ps-4.13c-fnmatch-replacement.patch
@@ -0,0 +1,43 @@
+diff -Naurp a2ps-4.13.orig/lib/fnmatch.c a2ps-4.13/lib/fnmatch.c
+--- a2ps-4.13.orig/lib/fnmatch.c 2002-03-04 12:46:25 -0600
++++ a2ps-4.13/lib/fnmatch.c 2006-05-27 11:41:15 -0500
+@@ -27,18 +27,6 @@
+ #include <fnmatch.h>
+ #include <ctype.h>
+
+-
+-/* Comment out all this code if we are using the GNU C Library, and are not
+- actually compiling the library itself. This code is part of the GNU C
+- Library, but also included in many other GNU distributions. Compiling
+- and linking in this code is a waste when using the GNU C library
+- (especially if it is a shared library). Rather than having every GNU
+- program understand `configure --with-gnu-libc' and omit the object files,
+- it is simpler to just do this in the source for each such file. */
+-
+-#if defined _LIBC || !defined __GNU_LIBRARY__
+-
+-
+ # if defined STDC_HEADERS || !defined isascii
+ # define ISASCII(c) 1
+ # else
+@@ -52,10 +40,13 @@
+ extern int errno;
+ # endif
+
++/* fnmatch replacement taken from the GNU C Library for systems that
++ provide a broken implementation. */
++
+ /* Match STRING against the filename pattern PATTERN, returning zero if
+ it matches, nonzero if not. */
+ int
+-fnmatch (const char *pattern, const char *string, int flags)
++rpl_fnmatch (const char *pattern, const char *string, int flags)
+ {
+ register const char *p = pattern, *n = string;
+ register char c;
+@@ -233,5 +224,3 @@ fnmatch (const char *pattern, const char
+
+ # undef FOLD
+ }
+-
+-#endif /* _LIBC or not __GNU_LIBRARY__. */
diff --git a/extra/a2ps/a2ps-4.14-check-mempcpy.patch b/extra/a2ps/a2ps-4.14-check-mempcpy.patch
new file mode 100644
index 000000000..7b820cead
--- /dev/null
+++ b/extra/a2ps/a2ps-4.14-check-mempcpy.patch
@@ -0,0 +1,12 @@
+--- a2ps-4.14-orig/configure.in 2008-04-16 08:36:03.000000000 +0200
++++ a2ps-4.14/configure.in 2008-04-16 08:36:29.000000000 +0200
+@@ -137,7 +137,8 @@
+ ad_REPLACE_FUNC_STRCASECMP
+ ad_REPLACE_FUNC_STRNCASECMP
+ ad_REPLACE_FUNC_RENAME
+-AC_CHECK_FUNCS(uname strchr strerror strerror_r getcwd bcopy bzero tempnam strsignal psignal setlocale)
++AC_CHECK_FUNCS(uname strchr strerror strerror_r getcwd bcopy bzero \
++ tempnam strsignal psignal setlocale mempcpy)
+ ad_FUNC_SYSTEMPAPERNAME
+ ad_FUNC_ATEXIT
+ ad_FUNC_STRFTIME
diff --git a/extra/a2ps/a2ps-4.14-fix-stpcpy-proto.patch b/extra/a2ps/a2ps-4.14-fix-stpcpy-proto.patch
new file mode 100644
index 000000000..7c3c69076
--- /dev/null
+++ b/extra/a2ps/a2ps-4.14-fix-stpcpy-proto.patch
@@ -0,0 +1,17 @@
+=== modified file 'lib/xstrrpl.c'
+--- lib/xstrrpl.c 2008-04-14 18:04:50 +0000
++++ lib/xstrrpl.c 2008-04-14 18:20:20 +0000
+@@ -20,12 +20,10 @@
+
+ #include "system.h"
+ #include <assert.h>
+ #include "xstrrpl.h"
+
+-extern char * stpcpy();
+-
+ /* Perform subsitutions in string. Result is malloc'd
+ E.g., result = xstrrrpl ("1234", subst) gives result = "112333"
+ where subst = { {"1", "11"}, {"3", "333"}, { "4", ""}}
+ */
+ char *
+
diff --git a/extra/a2ps/a2ps.install b/extra/a2ps/a2ps.install
new file mode 100644
index 000000000..30f12c285
--- /dev/null
+++ b/extra/a2ps/a2ps.install
@@ -0,0 +1,20 @@
+infodir=/usr/share/info
+filelist=(a2ps.info.gz ogonkify.info.gz regex.info.gz)
+
+post_install() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info --delete $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
diff --git a/extra/a52dec/PKGBUILD b/extra/a52dec/PKGBUILD
new file mode 100644
index 000000000..8ab0cfeb4
--- /dev/null
+++ b/extra/a52dec/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 5600 2008-07-18 22:05:50Z jgc $
+# Maintainer: Thomas Baechler <thomas@archlinux.org>
+# contributor: Sarah Hay <sarahhay@mb.sympatico.ca>
+
+pkgname=a52dec
+pkgver=0.7.4
+pkgrel=4
+pkgdesc="liba52 is a free library for decoding ATSC A/52 streams."
+arch=('i686' 'x86_64')
+license=('GPL2')
+depends=('glibc')
+options=(!libtool)
+source=(http://liba52.sourceforge.net/files/${pkgname}-${pkgver}.tar.gz
+ a52dec-0.7.4-build.patch)
+url="http://liba52.sourceforge.net/"
+md5sums=('caa9f5bc44232dc8aeea773fea56be80' 'fa16f224a7dceb7613824380abef0052')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ patch -Np1 -i ${srcdir}/a52dec-0.7.4-build.patch || return 1
+ ./bootstrap || return 1
+ ./configure --prefix=/usr --enable-shared || return 1
+ make || return 1
+ make DESTDIR=${pkgdir} install || return 1
+ install -m644 liba52/a52_internal.h $startdir/pkg/usr/include/a52dec/ || return 1
+}
diff --git a/extra/a52dec/a52dec-0.7.4-build.patch b/extra/a52dec/a52dec-0.7.4-build.patch
new file mode 100644
index 000000000..f3a29f303
--- /dev/null
+++ b/extra/a52dec/a52dec-0.7.4-build.patch
@@ -0,0 +1,27 @@
+diff -Naur a52dec-0.7.4.orig/liba52/Makefile.am a52dec-0.7.4/liba52/Makefile.am
+--- a52dec-0.7.4.orig/liba52/Makefile.am 2002-01-27 20:36:48.000000000 -0800
++++ a52dec-0.7.4/liba52/Makefile.am 2004-11-05 01:10:21.317401872 -0800
+@@ -1,4 +1,3 @@
+-CFLAGS = @CFLAGS@ @LIBA52_CFLAGS@
+
+ lib_LTLIBRARIES = liba52.la
+
+diff -Naur a52dec-0.7.4.orig/liba52/configure.incl a52dec-0.7.4/liba52/configure.incl
+--- a52dec-0.7.4.orig/liba52/configure.incl 2002-01-27 20:36:48.000000000 -0800
++++ a52dec-0.7.4/liba52/configure.incl 2004-11-05 01:11:38.172672216 -0800
+@@ -2,7 +2,6 @@
+ AC_SUBST([LIBA52_LIBS])
+
+ dnl avoid -fPIC when possible
+-LIBA52_CFLAGS="$LIBA52_CFLAGS -prefer-non-pic"
+
+ AC_ARG_ENABLE([double],
+ [ --enable-double use double-precision samples])
+diff -Naur a52dec-0.7.4.orig/src/Makefile.am a52dec-0.7.4/src/Makefile.am
+--- a52dec-0.7.4.orig/src/Makefile.am 2002-06-22 18:51:57.000000000 -0700
++++ a52dec-0.7.4/src/Makefile.am 2004-11-05 01:10:21.320401375 -0800
+@@ -1,4 +1,3 @@
+-CFLAGS = @A52DEC_CFLAGS@
+
+ bin_PROGRAMS = a52dec extract_a52
+ a52dec_SOURCES = a52dec.c getopt.c gettimeofday.c
diff --git a/extra/aalib/PKGBUILD b/extra/aalib/PKGBUILD
new file mode 100644
index 000000000..d86d8220c
--- /dev/null
+++ b/extra/aalib/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 110751 2011-02-22 01:17:25Z eric $
+# Maintainer: Eric Bélanger <eric@archlinux.org>
+
+pkgname=aalib
+pkgver=1.4rc5
+pkgrel=8
+pkgdesc="A portable ASCII art graphic library"
+arch=('i686' 'x86_64')
+url="http://aa-project.sourceforge.net/aalib/"
+license=('LGPL')
+depends=('glibc' 'ncurses' 'gpm' 'libx11')
+makedepends=('libxt')
+options=('!libtool')
+install=aalib.install
+source=(http://downloads.sourceforge.net/sourceforge/aa-project/${pkgname}-${pkgver}.tar.gz
+ aclocal-fixes.patch)
+md5sums=('9801095c42bba12edebd1902bcf0a990' '863a96a6689aa7ee073ca448bc2f133d')
+sha1sums=('a23269e950a249d2ef93625837cace45ddbce03b' '98d8c5a13672a8107945d694ff4520e0bc87d3e9')
+
+build() {
+ cd "${srcdir}/${pkgname}-1.4.0"
+ patch -p0 -i "${srcdir}/aclocal-fixes.patch"
+ ./configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-1.4.0"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/aalib/aalib.install b/extra/aalib/aalib.install
new file mode 100644
index 000000000..9e99b62cd
--- /dev/null
+++ b/extra/aalib/aalib.install
@@ -0,0 +1,16 @@
+infodir=usr/share/info
+file=aalib.info
+
+post_install() {
+ [ -x usr/bin/install-info ] || return 0
+ install-info $infodir/$file.gz $infodir/dir 2> /dev/null
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ [ -x usr/bin/install-info ] || return 0
+ install-info --delete $infodir/$file.gz $infodir/dir 2> /dev/null
+}
diff --git a/extra/aalib/aclocal-fixes.patch b/extra/aalib/aclocal-fixes.patch
new file mode 100644
index 000000000..3f1919a22
--- /dev/null
+++ b/extra/aalib/aclocal-fixes.patch
@@ -0,0 +1,11 @@
+--- aalib.m4.orig 2006-03-05 13:58:21.000000000 +0000
++++ aalib.m4 2006-03-05 13:58:32.000000000 +0000
+@@ -9,7 +9,7 @@
+ dnl AM_PATH_AALIB([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
+ dnl Test for AALIB, and define AALIB_CFLAGS and AALIB_LIBS
+ dnl
+-AC_DEFUN(AM_PATH_AALIB,
++AC_DEFUN([AM_PATH_AALIB],
+ [dnl
+ dnl Get the cflags and libraries from the aalib-config script
+ dnl
diff --git a/extra/abiword/PKGBUILD b/extra/abiword/PKGBUILD
new file mode 100644
index 000000000..4448b28b5
--- /dev/null
+++ b/extra/abiword/PKGBUILD
@@ -0,0 +1,58 @@
+# $Id: PKGBUILD 102234 2010-12-06 22:32:25Z ibiru $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Maël Lavault <moimael@neuf.fr>
+
+pkgbase=abiword
+pkgname=('abiword' 'abiword-plugins')
+pkgver=2.8.6
+pkgrel=4
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://www.abisource.com"
+makedepends=('pkgconfig' 'asio' 'boost' 'fribidi' 'goffice' 'libwmf' 'wv' 'link-grammar' 'gtkmathview' 'aiksaurus' 'libxslt' 'enchant' 'libots' 'libwpg' 'librsvg' 'loudmouth' 'libsoup')
+options=('!makeflags' '!libtool')
+source=("http://www.abisource.com/downloads/${pkgbase}/${pkgver}/source/${pkgbase}-${pkgver}.tar.gz"
+ compat_libwpg_0_9.patch)
+sha1sums=('998f69d038000b3fc027d4259548f02d67c8d0df'
+ 'e5374f439e3d9b63a4bbd2cd39146c67cf1e85ea')
+
+build() {
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+
+ patch -Np1 -i "${srcdir}/compat_libwpg_0_9.patch"
+ libtoolize --force
+ autoreconf
+
+ ./configure --prefix=/usr --enable-clipart --enable-templates --enable-collab-backend-xmpp --enable-collab-backend-tcp --enable-collab-backend-service --disable-collab-backend-sugar --enable-plugins --without-gnomevfs --with-gio --with-goffice --disable-static --with-psiconv-config=/nothere
+ make
+}
+
+package_abiword() {
+ pkgdesc="A fully-featured word processor"
+ depends=('fribidi' 'wv' 'goffice' 'librsvg' 'enchant')
+ optdepends=('abiword-plugins')
+ conflicts=("abiword-plugins<${pkgver}-${pkgrel}")
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ sed -i plugins/Makefile \
+ -e 's/ collab / /' \
+ -e 's/ wpg / /' \
+ -e 's/ wmf / /' \
+ -e 's/ grammar / /' \
+ -e 's/ mathview / /' \
+ -e 's/ aiksaurus / /' \
+ -e 's/ latex / /' \
+ -e 's/ ots / /' \
+ -e 's/ wordperfect / /'
+ make DESTDIR="${pkgdir}" install
+}
+
+package_abiword-plugins() {
+ pkgdesc="Additional plugins for Abiword"
+ depends=("abiword=${pkgver}-${pkgrel}" 'loudmouth' 'libwpg' 'libwmf' 'link-grammar' 'gtkmathview' 'aiksaurus' 'libxslt' 'libsoup' 'libots')
+
+ cd "${srcdir}/${pkgbase}-${pkgver}/plugins"
+ for dir in collab wpg wmf grammar mathview aiksaurus latex ots wordperfect; do
+ make -C ${dir} DESTDIR="${pkgdir}" install
+ done
+}
diff --git a/extra/abiword/compat_libwpg_0_9.patch b/extra/abiword/compat_libwpg_0_9.patch
new file mode 100644
index 000000000..cf36e188e
--- /dev/null
+++ b/extra/abiword/compat_libwpg_0_9.patch
@@ -0,0 +1,371 @@
+diff -Nur abiword-2.8.6.orig//plugin-configure.m4 abiword-2.8.6/plugin-configure.m4
+--- abiword-2.8.6.orig//plugin-configure.m4 2010-06-13 14:17:27.000000000 -0700
++++ abiword-2.8.6/plugin-configure.m4 2010-12-06 13:59:43.083048588 -0800
+@@ -794,7 +794,7 @@
+ AC_SUBST([OPENXML_LIBS])
+
+
+-wpg_pkgs="$gsf_req libwpg-0.1 >= 0.1.0 libwpd-0.8 >= 0.8.0"
++wpg_pkgs="$gsf_req libwpg-0.2 >= 0.2.0 libwpd-0.9 >= 0.9.0 libwpd-stream-0.9 >= 0.9.0"
+ wpg_deps="no"
+
+ if test "$enable_wpg" != ""; then
+@@ -1497,8 +1497,8 @@
+ AC_SUBST([EML_LIBS])
+
+
+-wordperfect_pkgs="libwpd-0.8 >= 0.8.0 $gsf_req"
+-wordperfect_wps_pkgs='libwps-0.1 >= 0.1.0'
++wordperfect_pkgs="libwpg-0.2 >= 0.2.0 libwpd-0.9 >= 0.9.0 libwpd-stream-0.9 >= 0.9.0 $gsf_req"
++wordperfect_wps_pkgs='libwps-0.2 >= 0.1.0'
+ wordperfect_deps="no"
+
+ WORDPERFECT_CFLAGS=
+diff -Nur abiword-2.8.6.orig//plugins/wordperfect/plugin.m4 abiword-2.8.6/plugins/wordperfect/plugin.m4
+--- abiword-2.8.6.orig//plugins/wordperfect/plugin.m4 2010-05-30 07:50:46.000000000 -0700
++++ abiword-2.8.6/plugins/wordperfect/plugin.m4 2010-12-06 13:59:53.929715254 -0800
+@@ -1,6 +1,6 @@
+
+-wordperfect_pkgs="libwpd-0.8 >= 0.8.0 $gsf_req"
+-wordperfect_wps_pkgs='libwps-0.1 >= 0.1.0'
++wordperfect_pkgs="libwpg-0.2 >= 0.2.0 libwpd-0.9 >= 0.9.0 libwpd-stream-0.9 >= 0.9.0 $gsf_req"
++wordperfect_wps_pkgs='libwps-0.2 >= 0.1.0'
+ wordperfect_deps="no"
+
+ WORDPERFECT_CFLAGS=
+diff -Nur abiword-2.8.6.orig//plugins/wordperfect/xp/ie_imp_WordPerfect.cpp abiword-2.8.6/plugins/wordperfect/xp/ie_imp_WordPerfect.cpp
+--- abiword-2.8.6.orig//plugins/wordperfect/xp/ie_imp_WordPerfect.cpp 2010-02-06 13:06:11.000000000 -0800
++++ abiword-2.8.6/plugins/wordperfect/xp/ie_imp_WordPerfect.cpp 2010-12-06 13:59:53.926381921 -0800
+@@ -60,7 +60,7 @@
+
+ // Stream class
+
+-#include <libwpd/WPXStream.h>
++#include <libwpd-stream/libwpd-stream.h>
+
+ #include <gsf/gsf-input.h>
+ #include <gsf/gsf-infile.h>
+@@ -70,12 +70,7 @@
+ #include <libwps/libwps.h>
+ #endif
+
+-class AbiWordperfectInputStream :
+-#ifdef HAVE_LIBWPS
+- public WPSInputStream
+-#else
+- public WPXInputStream
+-#endif
++class AbiWordperfectInputStream : public WPXInputStream
+ {
+ public:
+ AbiWordperfectInputStream(GsfInput *input);
+@@ -86,7 +81,7 @@
+
+ virtual WPXInputStream * getDocumentOLEStream(const char * name);
+
+- virtual const uint8_t *read(size_t numBytes, size_t &numBytesRead);
++ virtual const unsigned char *read(unsigned long numBytes, unsigned long &numBytesRead);
+ virtual int seek(long offset, WPX_SEEK_TYPE seekType);
+ virtual long tell();
+ virtual bool atEOS();
+@@ -98,11 +93,7 @@
+ };
+
+ AbiWordperfectInputStream::AbiWordperfectInputStream(GsfInput *input) :
+-#ifdef HAVE_LIBWPS
+- WPSInputStream(),
+-#else
+- WPXInputStream(true),
+-#endif
++ WPXInputStream(),
+ m_input(input),
+ m_ole(NULL)
+ {
+@@ -117,9 +108,9 @@
+ g_object_unref(G_OBJECT(m_input));
+ }
+
+-const uint8_t * AbiWordperfectInputStream::read(size_t numBytes, size_t &numBytesRead)
++const unsigned char * AbiWordperfectInputStream::read(unsigned long numBytes, unsigned long &numBytesRead)
+ {
+- const uint8_t *buf = gsf_input_read(m_input, numBytes, NULL);
++ const unsigned char *buf = gsf_input_read(m_input, numBytes, NULL);
+
+ if (buf == NULL)
+ numBytesRead = 0;
+@@ -256,19 +247,12 @@
+ {
+ AbiWordperfectInputStream gsfInput(input);
+
+- WPDConfidence confidence = WPDocument::isFileFormatSupported(&gsfInput, true);
++ WPDConfidence confidence = WPDocument::isFileFormatSupported(&gsfInput);
+
+ switch (confidence)
+ {
+ case WPD_CONFIDENCE_NONE:
+- // libwpd > 0.7.1 reports POOR if the text file is plain text (that _could_ be a WP4x document)
+- // however, we'll let the text importer handle such cases
+- case WPD_CONFIDENCE_POOR:
+ return UT_CONFIDENCE_ZILCH;
+- case WPD_CONFIDENCE_LIKELY:
+- return UT_CONFIDENCE_SOSO;
+- case WPD_CONFIDENCE_GOOD:
+- return UT_CONFIDENCE_GOOD;
+ case WPD_CONFIDENCE_EXCELLENT:
+ return UT_CONFIDENCE_PERFECT;
+ default:
+@@ -328,7 +312,7 @@
+ UT_Error IE_Imp_WordPerfect::_loadFile(GsfInput * input)
+ {
+ AbiWordperfectInputStream gsfInput(input);
+- WPDResult error = WPDocument::parse(&gsfInput, static_cast<WPXHLListenerImpl *>(this));
++ WPDResult error = WPDocument::parse(&gsfInput, static_cast<WPXDocumentInterface *>(this), NULL);
+
+ if (error != WPD_OK)
+ {
+@@ -381,9 +365,9 @@
+ float marginLeft = 1.0f, marginRight = 1.0f;
+
+ if (propList["fo:margin-left"])
+- marginLeft = propList["fo:margin-left"]->getFloat();
++ marginLeft = propList["fo:margin-left"]->getDouble();
+ if (propList["fo:margin-right"])
+- marginRight = propList["fo:margin-right"]->getFloat();
++ marginRight = propList["fo:margin-right"]->getDouble();
+
+ if (marginLeft != m_leftPageMargin || marginRight != m_rightPageMargin /* || */
+ /* marginTop != m_marginBottom || marginBottom != m_marginBottom */ )
+@@ -456,15 +440,15 @@
+ float marginTop = 0.0f, marginBottom = 0.0f;
+ float marginLeft = 0.0f, marginRight = 0.0f, textIndent = 0.0f;
+ if (propList["fo:margin-top"])
+- marginTop = propList["fo:margin-top"]->getFloat();
++ marginTop = propList["fo:margin-top"]->getDouble();
+ if (propList["fo:margin-bottom"])
+- marginBottom = propList["fo:margin-bottom"]->getFloat();
++ marginBottom = propList["fo:margin-bottom"]->getDouble();
+ if (propList["fo:margin-left"])
+- marginLeft = propList["fo:margin-left"]->getFloat();
++ marginLeft = propList["fo:margin-left"]->getDouble();
+ if (propList["fo:margin-right"])
+- marginRight = propList["fo:margin-right"]->getFloat();
++ marginRight = propList["fo:margin-right"]->getDouble();
+ if (propList["fo:text-indent"])
+- textIndent = propList["fo:text-indent"]->getFloat();
++ textIndent = propList["fo:text-indent"]->getDouble();
+
+ m_topMargin = marginTop;
+ m_bottomMargin = marginBottom;
+@@ -487,7 +471,7 @@
+
+ float lineSpacing = 1.0f;
+ if (propList["fo:line-height"])
+- lineSpacing = propList["fo:line-height"]->getFloat();
++ lineSpacing = propList["fo:line-height"]->getDouble();
+
+ UT_String tmpBuffer;
+ UT_String_sprintf(tmpBuffer, "; margin-top:%.4fin; margin-bottom:%.4fin; margin-left:%.4fin; margin-right:%.4fin; text-indent:%.4fin; line-height:%.4f",
+@@ -504,7 +488,7 @@
+ propBuffer += tmpBuffer;
+ if (i()["style:position"])
+ {
+- UT_String_sprintf(tmpBuffer, "%.4fin", i()["style:position"]->getFloat());
++ UT_String_sprintf(tmpBuffer, "%.4fin", i()["style:position"]->getDouble());
+ propBuffer += tmpBuffer;
+ }
+
+@@ -640,9 +624,9 @@
+
+ // TODO: support spaceAfter
+ if (propList["fo:margin-left"])
+- marginLeft = propList["fo:margin-left"]->getFloat();
++ marginLeft = propList["fo:margin-left"]->getDouble();
+ if (propList["fo:margin-right"])
+- marginRight = propList["fo:margin-right"]->getFloat();
++ marginRight = propList["fo:margin-right"]->getDouble();
+
+ if (marginLeft != m_leftSectionMargin || marginRight != m_rightSectionMargin || m_sectionColumnsCount != columnsCount)
+ m_bSectionChanged = true;
+@@ -709,9 +693,9 @@
+ if (propList["style:num-format"])
+ listType = propList["style:num-format"]->getStr().cstr()[0];
+ if (propList["text:space-before"])
+- listLeftOffset = propList["text:space-before"]->getFloat();
++ listLeftOffset = propList["text:space-before"]->getDouble();
+ if (propList["text:min-label-width"])
+- listMinLabelWidth = propList["text:min-label-width"]->getFloat();
++ listMinLabelWidth = propList["text:min-label-width"]->getDouble();
+
+ if (!m_pCurrentListDefinition ||
+ m_pCurrentListDefinition->getOutlineHash() != listID ||
+@@ -749,9 +733,9 @@
+ if (propList["libwpd:level"])
+ level = propList["libwpd:level"]->getInt();
+ if (propList["text:space-before"])
+- listLeftOffset = propList["text:space-before"]->getFloat();
++ listLeftOffset = propList["text:space-before"]->getDouble();
+ if (propList["text:min-label-width"])
+- listMinLabelWidth = propList["text:min-label-width"]->getFloat();
++ listMinLabelWidth = propList["text:min-label-width"]->getDouble();
+
+ if (!m_pCurrentListDefinition || m_pCurrentListDefinition->getOutlineHash() != listID)
+ {
+@@ -871,10 +855,10 @@
+
+ UT_String_sprintf(tempBuffer, "margin-left:%.4fin; ", m_pCurrentListDefinition->getListLeftOffset(m_iCurrentListLevel)
+ + m_pCurrentListDefinition->getListMinLabelWidth(m_iCurrentListLevel)
+- - (propList["fo:text-indent"] ? propList["fo:text-indent"]->getFloat() : 0.0f));
++ - (propList["fo:text-indent"] ? propList["fo:text-indent"]->getDouble() : 0.0f));
+ propBuffer += tempBuffer;
+ UT_String_sprintf(tempBuffer, "text-indent:%.4fin", - m_pCurrentListDefinition->getListMinLabelWidth(m_iCurrentListLevel)
+- + (propList["fo:text-indent"] ? propList["fo:text-indent"]->getFloat() : 0.0f));
++ + (propList["fo:text-indent"] ? propList["fo:text-indent"]->getDouble() : 0.0f));
+ propBuffer += tempBuffer;
+
+ listAttribs[attribsCount++] = PT_PROPS_ATTRIBUTE_NAME;
+@@ -1263,7 +1247,7 @@
+ virtual UT_Error _loadFile(GsfInput * input)
+ {
+ AbiWordperfectInputStream gsfInput(input);
+- WPSResult error = WPSDocument::parse(&gsfInput, static_cast<WPXHLListenerImpl *>(this));
++ WPSResult error = WPSDocument::parse(&gsfInput, static_cast<WPXDocumentInterface *>(this));
+
+ if (error != WPS_OK)
+ {
+@@ -1302,18 +1286,12 @@
+ {
+ AbiWordperfectInputStream gsfInput(input);
+
+- WPSConfidence confidence = WPSDocument::isFileFormatSupported(&gsfInput, true);
++ WPSConfidence confidence = WPSDocument::isFileFormatSupported(&gsfInput);
+
+ switch (confidence)
+ {
+ case WPS_CONFIDENCE_NONE:
+ return UT_CONFIDENCE_ZILCH;
+- case WPS_CONFIDENCE_POOR:
+- return UT_CONFIDENCE_POOR;
+- case WPS_CONFIDENCE_LIKELY:
+- return UT_CONFIDENCE_SOSO;
+- case WPS_CONFIDENCE_GOOD:
+- return UT_CONFIDENCE_GOOD;
+ case WPS_CONFIDENCE_EXCELLENT:
+ return UT_CONFIDENCE_PERFECT;
+ default:
+diff -Nur abiword-2.8.6.orig//plugins/wordperfect/xp/ie_imp_WordPerfect.h abiword-2.8.6/plugins/wordperfect/xp/ie_imp_WordPerfect.h
+--- abiword-2.8.6.orig//plugins/wordperfect/xp/ie_imp_WordPerfect.h 2009-06-19 01:55:49.000000000 -0700
++++ abiword-2.8.6/plugins/wordperfect/xp/ie_imp_WordPerfect.h 2010-12-06 13:59:53.929715254 -0800
+@@ -30,13 +30,7 @@
+ #define IE_IMP_WP_H
+
+ #include <stdio.h>
+-#ifdef _WIN32
+-#define POINT WPX_POINT
+-#endif
+ #include <libwpd/libwpd.h>
+-#ifdef _WIN32
+-#undef POINT
+-#endif
+ #include "ie_imp.h"
+ #include "ut_string.h"
+ #include "ut_string_class.h"
+@@ -98,7 +92,7 @@
+ IE_Imp ** ppie);
+ };
+
+-class IE_Imp_WordPerfect : public IE_Imp, public WPXHLListenerImpl
++class IE_Imp_WordPerfect : public IE_Imp, public WPXDocumentInterface
+ {
+ public:
+ IE_Imp_WordPerfect(PD_Document * pDocument);
+@@ -154,6 +148,21 @@
+ virtual void insertCoveredTableCell(const WPXPropertyList & /*propList*/) {}
+ virtual void closeTable();
+
++ virtual void definePageStyle(const WPXPropertyList&) {}
++ virtual void defineParagraphStyle(const WPXPropertyList&, const WPXPropertyListVector&) {}
++ virtual void defineCharacterStyle(const WPXPropertyList&) {}
++ virtual void defineSectionStyle(const WPXPropertyList&, const WPXPropertyListVector&) {}
++ virtual void insertSpace() {}
++ virtual void insertField(const WPXString&, const WPXPropertyList&) {}
++ virtual void openComment(const WPXPropertyList&) {}
++ virtual void closeComment() {}
++ virtual void openTextBox(const WPXPropertyList&) {}
++ virtual void closeTextBox() {}
++ virtual void openFrame(const WPXPropertyList&) {}
++ virtual void closeFrame() {}
++ virtual void insertBinaryObject(const WPXPropertyList&, const WPXBinaryData&) {}
++ virtual void insertEquation(const WPXPropertyList&, const WPXString&) {}
++
+
+ protected:
+ virtual UT_Error _loadFile(GsfInput * input);
+diff -Nur abiword-2.8.6.orig//plugins/wpg/plugin.m4 abiword-2.8.6/plugins/wpg/plugin.m4
+--- abiword-2.8.6.orig//plugins/wpg/plugin.m4 2010-05-30 07:50:46.000000000 -0700
++++ abiword-2.8.6/plugins/wpg/plugin.m4 2010-12-06 13:59:53.929715254 -0800
+@@ -1,5 +1,5 @@
+
+-wpg_pkgs="$gsf_req libwpg-0.1 >= 0.1.0 libwpd-0.8 >= 0.8.0"
++wpg_pkgs="$gsf_req libwpg-0.2 >= 0.2.0 libwpd-0.9 >= 0.9.0 libwpd-stream-0.9 >= 0.9.0"
+ wpg_deps="no"
+
+ if test "$enable_wpg" != ""; then
+diff -Nur abiword-2.8.6.orig//plugins/wpg/xp/ie_impGraphic_WPG.cpp abiword-2.8.6/plugins/wpg/xp/ie_impGraphic_WPG.cpp
+--- abiword-2.8.6.orig//plugins/wpg/xp/ie_impGraphic_WPG.cpp 2008-08-15 14:52:32.000000000 -0700
++++ abiword-2.8.6/plugins/wpg/xp/ie_impGraphic_WPG.cpp 2010-12-06 13:59:53.923048588 -0800
+@@ -31,11 +31,10 @@
+ #include <gsf/gsf-input-memory.h>
+ #include <gsf/gsf-input-stdio.h>
+ #include <gsf/gsf-infile-msole.h>
+-#include <libwpd/WPXStream.h>
++#include <libwpd-stream/libwpd-stream.h>
+ #include "xap_Module.h"
+
+ using libwpg::WPGraphics;
+-using libwpg::WPGString;
+
+ ABI_PLUGIN_DECLARE("WPG")
+
+@@ -48,7 +47,7 @@
+ virtual bool isOLEStream();
+ virtual WPXInputStream * getDocumentOLEStream();
+ virtual WPXInputStream * getDocumentOLEStream(const char * name);
+- virtual const uint8_t *read(size_t numBytes, size_t &numBytesRead);
++ virtual const unsigned char *read(unsigned long numBytes, unsigned long &numBytesRead);
+ virtual int seek(long offset, WPX_SEEK_TYPE seekType);
+ virtual long tell();
+ virtual bool atEOS();
+@@ -60,7 +59,7 @@
+ };
+
+ AbiWordPerfectGraphicsInputStream::AbiWordPerfectGraphicsInputStream(GsfInput *input) :
+- WPXInputStream(true),
++ WPXInputStream(),
+ m_input(input),
+ m_ole(NULL)
+ {
+@@ -75,9 +74,9 @@
+ g_object_unref(G_OBJECT(m_input));
+ }
+
+-const uint8_t * AbiWordPerfectGraphicsInputStream::read(size_t numBytes, size_t &numBytesRead)
++const unsigned char * AbiWordPerfectGraphicsInputStream::read(unsigned long numBytes, unsigned long &numBytesRead)
+ {
+- const uint8_t *buf = gsf_input_read(m_input, numBytes, NULL);
++ const unsigned char *buf = gsf_input_read(m_input, numBytes, NULL);
+
+ if (buf == NULL)
+ numBytesRead = 0;
+@@ -245,10 +244,10 @@
+ UT_Error IE_Imp_WordPerfectGraphics::importGraphic(GsfInput *input, FG_Graphic **ppfg)
+ {
+ AbiWordPerfectGraphicsInputStream gsfInput(input);
+- WPGString svgOutput;
++ WPXString svgOutput;
+ if (WPGraphics::generateSVG(&gsfInput, svgOutput))
+ {
+- GsfInput * svgInput = gsf_input_memory_new((const guint8*)svgOutput.cstr(), svgOutput.length(), false);
++ GsfInput * svgInput = gsf_input_memory_new((const guint8*)svgOutput.cstr(), svgOutput.len(), false);
+ UT_Error result = IE_ImpGraphic::loadGraphic(svgInput, IE_ImpGraphic::fileTypeForSuffix(".svg"), ppfg);
+ g_object_unref(svgInput);
+ return result;
diff --git a/extra/abook/PKGBUILD b/extra/abook/PKGBUILD
new file mode 100644
index 000000000..33832c165
--- /dev/null
+++ b/extra/abook/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 110746 2011-02-22 00:31:00Z bisson $
+# Contributor: damir <damir@archlinux.org>
+# Contributor: Thayer Williams <thayer@archlinux.org>
+# Contributor: Daniel J Griffiths <ghost1227@archlinux.us>
+# Maintainer: Gaetan Bisson <bisson@archlinux.org>
+
+pkgname=abook
+pkgver=0.6.0pre2
+pkgrel=3
+pkgdesc='Text-based addressbook designed for use with Mutt'
+arch=('i686' 'x86_64')
+url='http://abook.sourceforge.net/'
+license=('GPL2')
+depends=('readline')
+source=("http://abook.sourceforge.net/devel/abook-${pkgver}.tar.gz")
+sha1sums=('42a939fba43e51aa011fa185113c12ec4bc1e1ec')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --mandir=/usr/share/man
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/acpi/PKGBUILD b/extra/acpi/PKGBUILD
new file mode 100644
index 000000000..10d25d391
--- /dev/null
+++ b/extra/acpi/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 107523 2011-01-26 15:33:37Z thomas $
+# Contributor: Judd Vinet <jvinet@zeroflux.org>
+# Maintainer: Thayer Williams <thayer@archlinux.org>
+
+pkgname=acpi
+pkgver=1.5
+pkgrel=1
+pkgdesc="Linux ACPI client providing battery, AC power, and thermal readings"
+arch=('i686' 'x86_64')
+url="http://sourceforge.net/projects/acpiclient"
+depends=('glibc')
+source=(http://downloads.sourceforge.net/acpiclient/$pkgname-$pkgver.tar.gz)
+license=('GPL2')
+sha256sums=('57ff91cb5bef9e6d158c5b231a553a3a77c9ccfd0e4fad42958d1e61241060dd')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd $srcdir/$pkgname-$pkgver
+ make DESTDIR=$pkgdir install
+}
diff --git a/extra/acpid/PKGBUILD b/extra/acpid/PKGBUILD
new file mode 100644
index 000000000..fd927c84c
--- /dev/null
+++ b/extra/acpid/PKGBUILD
@@ -0,0 +1,42 @@
+# $Id: PKGBUILD 65410 2010-01-28 20:47:17Z ibiru $
+# Maintainer: Thayer Williams <thayer@archlinux.org>
+# Contributor: Manolis Tzanidakis
+# Contributor: Judd Vinet <jvinet@zeroflux.org>
+
+pkgname=acpid
+pkgver=1.0.10
+pkgrel=3
+pkgdesc="A daemon for delivering ACPI power management events"
+arch=('i686' 'x86_64')
+url="http://acpid.sourceforge.net"
+license=('GPL')
+depends=(glibc)
+source=(http://downloads.sourceforge.net/sourceforge/$pkgname/$pkgname-$pkgver.tar.gz
+ acpid
+ acpid.conf.d
+ anything
+ handler.sh)
+backup=('etc/acpi/handler.sh' 'etc/acpi/events/anything' 'etc/conf.d/acpid')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ /usr/bin/make || return 1
+ /bin/install -d -m0755 $pkgdir/usr/bin || return 1
+ /usr/bin/make INSTPREFIX=$pkgdir \
+ MAN8DIR=$pkgdir/usr/share/man/man8 install || return 1
+
+ # install our supplementary scripts
+ /bin/install -D -m0755 $srcdir/acpid $pkgdir/etc/rc.d/acpid || return 1
+ /bin/install -D -m0644 $srcdir/acpid.conf.d $pkgdir/etc/conf.d/acpid || return 1
+ /bin/install -D -m0644 $srcdir/anything $pkgdir/etc/acpi/events/anything || return 1
+ /bin/install -D -m0755 $srcdir/handler.sh $pkgdir/etc/acpi/handler.sh || return 1
+
+ # set world readable bit on the acpid binary
+ /bin/chmod 755 $pkgdir/usr/sbin/acpid || return 1
+}
+
+md5sums=('61156ef32015c56dc0f2e3317f4ae09e'
+ 'd9ca7f71f520238a0448fab105a23fe9'
+ '91fdb3709c878eed757d192a420251a1'
+ '2d37b98d6e74bab815604b8b48c6cfd4'
+ '0e8dd13793b1baa79a745f4034888367')
diff --git a/extra/acpid/acpid b/extra/acpid/acpid
new file mode 100644
index 000000000..9a4ab8ac7
--- /dev/null
+++ b/extra/acpid/acpid
@@ -0,0 +1,37 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+[ -f /etc/conf.d/acpid ] && . /etc/conf.d/acpid
+
+PID=`pidof -o %PPID /usr/sbin/acpid`
+case "$1" in
+ start)
+ stat_busy "Starting acpid"
+ [ -z "$PID" ] && /usr/sbin/acpid $ACPID_ARGS
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon acpid
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping acpid"
+ [ ! -z "$PID" ] && kill $PID &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon acpid
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
diff --git a/extra/acpid/acpid.conf.d b/extra/acpid/acpid.conf.d
new file mode 100644
index 000000000..25c9cc1ef
--- /dev/null
+++ b/extra/acpid/acpid.conf.d
@@ -0,0 +1,6 @@
+#
+# Arguments to be passed to the acpid daemon
+#
+
+ACPID_ARGS=""
+
diff --git a/extra/acpid/anything b/extra/acpid/anything
new file mode 100644
index 000000000..d1828989b
--- /dev/null
+++ b/extra/acpid/anything
@@ -0,0 +1,3 @@
+# Pass all events to our one handler script
+event=.*
+action=/etc/acpi/handler.sh %e
diff --git a/extra/acpid/handler.sh b/extra/acpid/handler.sh
new file mode 100644
index 000000000..ad31d1aa9
--- /dev/null
+++ b/extra/acpid/handler.sh
@@ -0,0 +1,65 @@
+#!/bin/sh
+# Default acpi script that takes an entry for all actions
+
+# NOTE: This is a 2.6-centric script. If you use 2.4.x, you'll have to
+# modify it to not use /sys
+
+minspeed=`cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq`
+maxspeed=`cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq`
+setspeed="/sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed"
+
+set $*
+
+case "$1" in
+ button/power)
+ #echo "PowerButton pressed!">/dev/tty5
+ case "$2" in
+ PWRF) logger "PowerButton pressed: $2" ;;
+ *) logger "ACPI action undefined: $2" ;;
+ esac
+ ;;
+ button/sleep)
+ case "$2" in
+ SLPB) echo -n mem >/sys/power/state ;;
+ *) logger "ACPI action undefined: $2" ;;
+ esac
+ ;;
+ ac_adapter)
+ case "$2" in
+ AC)
+ case "$4" in
+ 00000000)
+ echo -n $minspeed >$setspeed
+ #/etc/laptop-mode/laptop-mode start
+ ;;
+ 00000001)
+ echo -n $maxspeed >$setspeed
+ #/etc/laptop-mode/laptop-mode stop
+ ;;
+ esac
+ ;;
+ *) logger "ACPI action undefined: $2" ;;
+ esac
+ ;;
+ battery)
+ case "$2" in
+ BAT0)
+ case "$4" in
+ 00000000) #echo "offline" >/dev/tty5
+ ;;
+ 00000001) #echo "online" >/dev/tty5
+ ;;
+ esac
+ ;;
+ CPU0)
+ ;;
+ *) logger "ACPI action undefined: $2" ;;
+ esac
+ ;;
+ button/lid)
+ #echo "LID switched!">/dev/tty5
+ ;;
+ *)
+ logger "ACPI group/action undefined: $1 / $2"
+ ;;
+esac
diff --git a/extra/aiksaurus/PKGBUILD b/extra/aiksaurus/PKGBUILD
new file mode 100644
index 000000000..7990bebb4
--- /dev/null
+++ b/extra/aiksaurus/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 45575 2009-07-12 17:51:06Z ronald $
+# Maintainer: Ronald van Haren <ronald.archlinux.org>
+# Contributor: Jan de Groot <jgc@archlinux.org>
+
+pkgname=aiksaurus
+pkgver=1.2.1
+pkgrel=2
+pkgdesc="A cross-platform, open-source thesaurus"
+url="http://aiksaurus.sourceforge.net/"
+license=('GPL')
+arch=('i686' 'x86_64')
+options=('!libtool')
+depends=('gtk2')
+source=(http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.gz
+ 'aiksaurus-gcc44.patch')
+md5sums=('3eae03b7c49843ccc9262e52846ea6b4'
+ '7f94749172116b1529fc21b718ee7636')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ # gcc44 build patch
+ patch -Np0 -i ${srcdir}/aiksaurus-gcc44.patch || return 1
+
+ ./configure --prefix=/usr --with-gtk
+ make || return 1
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/aiksaurus/aiksaurus-gcc44.patch b/extra/aiksaurus/aiksaurus-gcc44.patch
new file mode 100644
index 000000000..7146d5307
--- /dev/null
+++ b/extra/aiksaurus/aiksaurus-gcc44.patch
@@ -0,0 +1,31 @@
+--- base/aiksaurus.t.cpp~ 2003-06-26 21:44:38.000000000 -0400
++++ base/aiksaurus.t.cpp 2009-05-31 20:02:29.172988678 -0400
+@@ -22,6 +22,7 @@
+ #include "Aiksaurus.h"
+ #include "AsciiCompare.h"
+ #include "config.h"
++#include <cstdlib>
+ #include <iostream>
+ #include <string>
+ using namespace std;
+
+--- ./gtk/src/Display.cpp~ 2003-05-27 19:56:54.000000000 -0400
++++ ./gtk/src/Display.cpp 2009-06-02 18:09:36.198627551 -0400
+@@ -22,6 +22,7 @@
+ #include "Meaning.h"
+ #include "DialogMediator.h"
+ #include "Exception.h"
++#include <cstring>
+ using namespace std;
+
+ namespace AiksaurusGTK_impl
+--- ./gtk/src/gtkAiksaur.t.cpp~ 2002-01-11 21:02:12.000000000 -0500
++++ ./gtk/src/gtkAiksaur.t.cpp 2009-06-02 18:12:06.815277325 -0400
+@@ -21,6 +21,7 @@
+ #include <AiksaurusGTK.h>
+ #include "config.h"
+ #include <gtk/gtk.h>
++#include <cstdlib>
+ #include <iostream>
+ #include <string>
+ using namespace std;
diff --git a/extra/akonadi/PKGBUILD b/extra/akonadi/PKGBUILD
new file mode 100644
index 000000000..2cc9fbb3f
--- /dev/null
+++ b/extra/akonadi/PKGBUILD
@@ -0,0 +1,36 @@
+# $Id: PKGBUILD 115515 2011-03-18 09:32:06Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Pierre Schmitz <pierre@archlinux.de>
+
+pkgname=akonadi
+pkgver=1.5.1
+pkgrel=2
+pkgdesc="PIM layer, which provides an asynchronous API to access all kind of PIM data"
+arch=('i686' 'x86_64')
+url='http://pim.kde.org/akonadi'
+license=('LGPL')
+depends=('shared-mime-info' 'boost-libs' 'mysql' 'soprano')
+makedepends=('pkgconfig' 'cmake' 'automoc4' 'boost')
+install="${pkgname}.install"
+source=("http://download.akonadi-project.org/${pkgname}-${pkgver}.tar.bz2"
+ 'qt-plugins-path.patch')
+md5sums=('4225b064cac6553c22cbeca9a8f93c25'
+ '9e8ad893d8e8d7af2c4f89429e32e367')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ patch -Np1 -i ${srcdir}/qt-plugins-path.patch
+
+ cd ${srcdir}
+ mkdir build
+ cd build
+ cmake ../${pkgname}-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=/usr
+ make
+}
+
+package() {
+ cd ${srcdir}/build
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/akonadi/akonadi.install b/extra/akonadi/akonadi.install
new file mode 100644
index 000000000..7c8a8bd2b
--- /dev/null
+++ b/extra/akonadi/akonadi.install
@@ -0,0 +1,11 @@
+post_install() {
+ update-mime-database usr/share/mime &> /dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/extra/akonadi/qt-plugins-path.patch b/extra/akonadi/qt-plugins-path.patch
new file mode 100644
index 000000000..cba420122
--- /dev/null
+++ b/extra/akonadi/qt-plugins-path.patch
@@ -0,0 +1,24 @@
+--- akonadi-1.5.1/libs/xdgbasedirs.cpp~ 2011-03-18 02:18:19.543333786 -0700
++++ akonadi-1.5.1/libs/xdgbasedirs.cpp 2011-03-18 02:19:15.893335157 -0700
+@@ -313,7 +313,7 @@
+ QString XdgBaseDirs::findPluginFile( const QString &relPath, const QStringList &searchPath )
+ {
+ if ( instance()->mPluginDirs.isEmpty() ) {
+- QStringList pluginDirs = instance()->systemPathList( "QT_PLUGIN_PATH", AKONADILIB ":" AKONADILIB "/qt4/plugins/:" AKONADILIB "/kde4/:" AKONADILIB "/kde4/plugins/:/usr/lib/qt4/plugins/" );
++ QStringList pluginDirs = instance()->systemPathList( "QT_PLUGIN_PATH", AKONADILIB ":" AKONADILIB "/qt/plugins/:" AKONADILIB "/kde4/:" AKONADILIB "/kde4/plugins/:/usr/lib/qt/plugins/" );
+
+ if ( QCoreApplication::instance() != 0 ) {
+ foreach ( const QString &libraryPath, QCoreApplication::instance()->libraryPaths() ) {
+--- akonadi-1.5.1/qsqlite/CMakeLists.txt~ 2011-03-18 02:22:50.976674875 -0700
++++ akonadi-1.5.1/qsqlite/CMakeLists.txt 2011-03-18 02:23:07.370000620 -0700
+@@ -14,8 +14,8 @@
+ if (INSTALL_QSQLITE_IN_QT_PREFIX)
+ set(QSQLITE_INSTALL_PREFIX "${QT_PLUGINS_DIR}/sqldrivers")
+ else()
+- set(QSQLITE_INSTALL_PREFIX "${LIB_INSTALL_DIR}/qt4/plugins/sqldrivers")
+- message(STATUS "Make sure that you add ${LIB_INSTALL_DIR}/qt4/plugins to your QT_PLUGIN_PATH environment variable.")
++ set(QSQLITE_INSTALL_PREFIX "${LIB_INSTALL_DIR}/qt/plugins/sqldrivers")
++ message(STATUS "Make sure that you add ${LIB_INSTALL_DIR}/qt/plugins to your QT_PLUGIN_PATH environment variable.")
+ endif()
+
+ add_definitions(-Wall)
diff --git a/extra/alex/PKGBUILD b/extra/alex/PKGBUILD
new file mode 100644
index 000000000..7d1e975ba
--- /dev/null
+++ b/extra/alex/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id: PKGBUILD 114116 2011-03-11 04:57:17Z vesa $
+# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com>
+# Maintainer: Vesa Kaihlavirta <vegai@iki.fi>
+# Contributor: Philip Nilsson <pnilsson@nullref.se>
+
+pkgname=alex
+pkgver=2.3.5
+pkgrel=1.1
+pkgdesc='a lexical analyser generator for Haskell'
+arch=('i686' 'x86_64')
+url='http://www.haskell.org/alex/'
+license=('custom:BSD3')
+depends=('gmp')
+makedepends=('ghc=7.0.2')
+source=("http://hackage.haskell.org/packages/archive/$pkgname/$pkgver/$pkgname-$pkgver.tar.gz")
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ runghc Setup.lhs configure --prefix=/usr --datasubdir=$pkgname
+ runghc Setup.lhs build
+}
+
+package() {
+ cd $srcdir/$pkgname-$pkgver
+ runghc Setup.lhs copy --destdir=$pkgdir
+ install -D -m644 LICENSE $pkgdir/usr/share/licenses/alex/BSD3
+
+ # doc/ contains only license which already installed into proper place
+ rm -rf $pkgdir/usr/share/doc
+}
+md5sums=('5e08c688ded0dcff98eaad6fc03a9402')
diff --git a/extra/allegro/LICENSE b/extra/allegro/LICENSE
new file mode 100644
index 000000000..497c56a8f
--- /dev/null
+++ b/extra/allegro/LICENSE
@@ -0,0 +1,26 @@
+===================================
+============ Copyright ============
+===================================
+
+ Allegro is gift-ware. It was created by a number of people working in
+ cooperation, and is given to you freely as a gift. You may use, modify,
+ redistribute, and generally hack it about in any way you like, and you do
+ not have to give us anything in return. However, if you like this product
+ you are encouraged to thank us by making a return gift to the Allegro
+ community. This could be by writing an add-on package, providing a useful
+ bug report, making an improvement to the library, or perhaps just
+ releasing the sources of your program so that other people can learn from
+ them. If you redistribute parts of this code or make a game using it, it
+ would be nice if you mentioned Allegro somewhere in the credits, but you
+ are not required to do this. We trust you not to abuse our generosity.
+
+ Disclaimer:
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
+ SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
+ FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
+ ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ DEALINGS IN THE SOFTWARE.
+
diff --git a/extra/allegro/PKGBUILD b/extra/allegro/PKGBUILD
new file mode 100644
index 000000000..c7083b60f
--- /dev/null
+++ b/extra/allegro/PKGBUILD
@@ -0,0 +1,35 @@
+# $Id: PKGBUILD 91255 2010-09-25 13:05:55Z ibiru $
+# Maintainer: Ionut Biru <ibiru@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+# Contributor: arjan <arjan@archlinux.org>
+
+pkgname=allegro
+pkgver=4.4.1.1
+pkgrel=2
+pkgdesc="Portable library mainly aimed at video game and multimedia programming"
+arch=('i686' 'x86_64')
+url="http://alleg.sourceforge.net/"
+license=('custom')
+depends=('jack' 'libxpm' 'libxxf86vm' 'libxxf86dga' 'libxcursor' 'libpng')
+makedepends=('cmake')
+options=('!makeflags')
+source=(http://downloads.sourceforge.net/alleg/${pkgname}-${pkgver}.tar.gz
+ LICENSE)
+md5sums=('0f1cfff8f2cf88e5c91a667d9fd386ec'
+ 'cd97e2992e8e66b9e6a449d832dc9c7a')
+
+build() {
+ cd "${srcdir}"
+ mkdir build && cd build
+
+ cmake "../${pkgname}-${pkgver}" \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DWANT_DOCS=OFF
+
+ make
+ make DESTDIR="${pkgdir}" install
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/alpine/2.00-lpam.patch b/extra/alpine/2.00-lpam.patch
new file mode 100644
index 000000000..69e66d7ef
--- /dev/null
+++ b/extra/alpine/2.00-lpam.patch
@@ -0,0 +1,13 @@
+--- alpine-2.00.orig/alpine/Makefile.in
++++ alpine-2.00/alpine/Makefile.in
+@@ -169,7 +169,7 @@
+ LIBICONV = @LIBICONV@
+ LIBINTL = @LIBINTL@
+ LIBOBJS = @LIBOBJS@
+-LIBS = @LIBS@
++LIBS = @LIBS@ -lpam
+ LIBTOOL = @LIBTOOL@
+ LN = @LN@
+ LN_S = @LN_S@
+ LTLIBICONV = @LTLIBICONV@
+ LTLIBINTL = @LTLIBINTL@
diff --git a/extra/alpine/CVE-2008-5514.patch b/extra/alpine/CVE-2008-5514.patch
new file mode 100644
index 000000000..594bea0b2
--- /dev/null
+++ b/extra/alpine/CVE-2008-5514.patch
@@ -0,0 +1,20 @@
+--- alpine-2.00/imap/src/c-client/rfc822.c
++++ alpine-2.00/imap/src/c-client/rfc822.c
+@@ -1351,6 +1351,7 @@
+
+ static long rfc822_output_char (RFC822BUFFER *buf,int c)
+ {
++ if ((buf->cur == buf->end) && !rfc822_output_flush (buf)) return NIL;
+ *buf->cur++ = c; /* add character, soutr buffer if full */
+ return (buf->cur == buf->end) ? rfc822_output_flush (buf) : LONGT;
+ }
+@@ -1374,7 +1375,8 @@
+ len -= i;
+ }
+ /* soutr buffer now if full */
+- if (len && !rfc822_output_flush (buf)) return NIL;
++ if ((len || (buf->cur == buf->end)) && !rfc822_output_flush (buf))
++ return NIL;
+ }
+ return LONGT;
+ }
diff --git a/extra/alpine/PKGBUILD b/extra/alpine/PKGBUILD
new file mode 100644
index 000000000..ec3edad56
--- /dev/null
+++ b/extra/alpine/PKGBUILD
@@ -0,0 +1,40 @@
+# $Id: PKGBUILD 104455 2011-01-03 05:46:57Z eric $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+
+pkgname=alpine
+pkgver=2.00
+pkgrel=12
+_patchlevel=79
+pkgdesc="The Apache-licensed PINE (a tool for reading, sending, and managing electronic messages)"
+arch=('i686' 'x86_64')
+url="http://www.washington.edu/alpine/"
+license=('APACHE')
+depends=('libldap' 'heimdal' 'gettext')
+optdepends=('aspell: for spell-checking support')
+provides=('pine')
+conflicts=('pine')
+replaces=('pine')
+options=('!makeflags')
+source=(ftp://ftp.cac.washington.edu/${pkgname}/${pkgname}.tar.bz2 \
+ http://staff.washington.edu/chappa/alpine/patches/alpine-${pkgver}/all_${_patchlevel}.patch.gz \
+ 2.00-lpam.patch CVE-2008-5514.patch)
+md5sums=('84e44cbf71ed674800a5d57eed9c1c52' 'd7dffd121c9a1cac4c458c0ff71df1ce'\
+ 'cd3911c16fc6a072e853c0ccfc35857c' '1b52a54a656979116c09fb1d948a4325')
+sha1sums=('dcbd3c5419954f484ccf706feaba31ce48cdebc4' 'd3acbf0e46c50feb2e822ef3bdc0a0f43c007294'\
+ '1b39525f91ebd5a9de5a1e04f5554f6fa5f58ae3' 'bc61d76a237ff42b00b3f60f2e6fc5c45e261dbb')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -p1 < ../all_${_patchlevel}.patch
+ patch -p1 < ../2.00-lpam.patch
+ patch -p1 < ../CVE-2008-5514.patch
+ ./configure --prefix=/usr --without-passfile --without-tcl \
+ --disable-shared --with-system-pinerc=/etc/alpine.d/pine.conf \
+ --with-system-fixed-pinerc=/etc/alpine.d/pine.conf.fixed
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/alsa-lib/PKGBUILD b/extra/alsa-lib/PKGBUILD
new file mode 100644
index 000000000..b5f7fda08
--- /dev/null
+++ b/extra/alsa-lib/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 110694 2011-02-21 17:46:05Z tpowa $
+# Maintainer: judd <jvinet@zeroflux.org>
+
+pkgname=alsa-lib
+pkgver=1.0.24.1
+pkgrel=1
+pkgdesc="An alternative implementation of Linux sound support"
+arch=('i686' 'x86_64')
+url="http://www.alsa-project.org"
+depends=('glibc')
+optdepends=('python2: for python smixer plugin')
+makedepends=('python2')
+license=('GPL')
+options=(!libtool)
+source=(ftp://ftp.alsa-project.org/pub/lib/$pkgname-$pkgver.tar.bz2)
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ ./configure --prefix=/usr --with-pythonlibs="-lpthread -lm -ldl -lpython2.7" --with-pythonincludes=-I/usr/include/python2.7
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make DESTDIR="$pkgdir" install
+}
+md5sums=('7cc05f25e1d5b65da8fb3fdcd540f226')
diff --git a/extra/alsa-oss/PKGBUILD b/extra/alsa-oss/PKGBUILD
new file mode 100644
index 000000000..14050f70b
--- /dev/null
+++ b/extra/alsa-oss/PKGBUILD
@@ -0,0 +1,20 @@
+# $Id: PKGBUILD 13735 2008-09-28 09:02:32Z tpowa $
+# Maintainer: judd <jvinet@zeroflux.org>
+pkgname=alsa-oss
+pkgver=1.0.17
+pkgrel=1
+pkgdesc="OSS compatibility library"
+arch=(i686 x86_64)
+license=('GPL')
+url="http://www.alsa-project.org"
+options=(!libtool)
+depends=('glibc' 'alsa-lib>=1.0.17a')
+source=(ftp://ftp.alsa-project.org/pub/oss-lib/$pkgname-$pkgver.tar.bz2)
+
+build() {
+ cd $startdir/src/$pkgname-$pkgver
+ ./configure --prefix=/usr
+ make || return 1
+ make DESTDIR=$startdir/pkg install
+}
+md5sums=('1b1850c2fc91476a73d50f537cbd402f')
diff --git a/extra/alsa-plugins/PKGBUILD b/extra/alsa-plugins/PKGBUILD
new file mode 100644
index 000000000..28724f9eb
--- /dev/null
+++ b/extra/alsa-plugins/PKGBUILD
@@ -0,0 +1,33 @@
+# $Id: PKGBUILD 110785 2011-02-22 08:10:56Z heftig $
+# Maintainer: Jan "heftig" Steffens <jan.steffens@gmail.com>
+# Contributor: Sergej Pupykin <pupykin.s+arch@gmail.com>
+# Contributor: Daniel Ehlers <danielehlers@mindeye.net>
+
+pkgname=alsa-plugins
+pkgver=1.0.24
+pkgrel=1
+pkgdesc="Extra alsa plugins"
+arch=(i686 x86_64)
+url="http://www.alsa-project.org"
+license=(GPL)
+depends=(alsa-lib)
+makedepends=(libpulse jack ffmpeg)
+optdepends=('libpulse: PulseAudio plugin'
+ 'jack: Jack plugin'
+ 'ffmpeg: libavcodec resampling plugin'
+ 'libsamplerate: libsamplerate resampling plugin'
+ 'speex: libspeexdsp resampling plugin')
+options=('!libtool')
+source=("ftp://ftp.alsa-project.org/pub/plugins/$pkgname-$pkgver.tar.bz2")
+md5sums=('e4d4c90e11ab9d1a117afbbc1edd2b16')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make DESTDIR="$pkgdir" install
+}
diff --git a/extra/alsa-utils/90alsa b/extra/alsa-utils/90alsa
new file mode 100755
index 000000000..9f18bef24
--- /dev/null
+++ b/extra/alsa-utils/90alsa
@@ -0,0 +1,13 @@
+#!/bin/sh
+#
+# 90alsa: suspend/wakeup ALSA devices
+
+case "$1" in
+hibernate|suspend)
+;;
+thaw|resume)
+aplay -d 1 /dev/zero
+;;
+*) exit $NA
+;;
+esac
diff --git a/extra/alsa-utils/PKGBUILD b/extra/alsa-utils/PKGBUILD
new file mode 100644
index 000000000..f71ae7d95
--- /dev/null
+++ b/extra/alsa-utils/PKGBUILD
@@ -0,0 +1,42 @@
+# $Id: PKGBUILD 110704 2011-02-21 18:04:49Z tpowa $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+# Contributor: judd <jvinet@zeroflux.org>
+
+pkgname=alsa-utils
+pkgver=1.0.24.2
+pkgrel=1
+pkgdesc="An alternative implementation of Linux sound support"
+arch=('i686' 'x86_64')
+url="http://www.alsa-project.org"
+#can not use >=$pkgver due to use of letters in alsa-lib update versioning
+depends=("alsa-lib>1.0.24" 'dialog' 'pciutils' 'ncurses' 'psmisc')
+makedepends=('xmlto' 'docbook-xsl')
+license=('GPL')
+source=(ftp://ftp.alsa-project.org/pub/utils/$pkgname-${pkgver}.tar.bz2
+ alsa
+ alsaconf.patch
+ alsa.conf.d
+ 90alsa)
+backup=(etc/conf.d/alsa)
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ patch -Np1 -i ../alsaconf.patch
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+ install -D -m755 ../alsa ${pkgdir}/etc/rc.d/alsa
+ install -D -m644 ../alsa.conf.d ${pkgdir}/etc/conf.d/alsa
+ install -D -m755 ../90alsa ${pkgdir}/etc/pm/sleep.d/90alsa
+ # dir where to save ALSA state
+ install -d ${pkgdir}/var/lib/alsa
+}
+md5sums=('8238cd57cb301d1c36bcf0ecb59ce6b2'
+ '2ba1a1cbf653bf1a69f8a720fd6549da'
+ '62ebef77d5617d0036012cc541dcf23c'
+ '4c8ae9f976c7df5e271a4cb91ccc7767'
+ '529216f6a46e61a546640e08ea7a0879')
diff --git a/extra/alsa-utils/alsa b/extra/alsa-utils/alsa
new file mode 100755
index 000000000..1e7b57fa3
--- /dev/null
+++ b/extra/alsa-utils/alsa
@@ -0,0 +1,62 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/conf.d/alsa
+. /etc/rc.d/functions
+
+case "$1" in
+ start)
+ stat_busy "Restoring ALSA Levels"
+ if [[ ! -e /var/lib/alsa/asound.state ]]; then
+ /usr/sbin/alsactl $ALSA_ARGS store || { stat_fail; exit 1; }
+ fi
+ if /usr/sbin/alsactl $ALSA_ARGS restore; then
+ stat_done
+ add_daemon alsa
+ else
+ stat_fail
+ exit 1
+ fi
+
+ POWERSAVE=${POWERSAVE:-0}
+ if [[ -e /sys/module/snd_ac97_codec/parameters/power_save ]] \
+ && (( $POWERSAVE )); then
+ echo $POWERSAVE > /sys/module/snd_ac97_codec/parameters/power_save
+ [[ -c /dev/dsp ]] && echo 1 > /dev/dsp
+ fi
+ if [[ -e /sys/module/snd_hda_intel/parameters/power_save ]] \
+ && (( $POWERSAVE )); then
+ echo $POWERSAVE > /sys/module/snd_hda_intel/parameters/power_save
+ [[ -c /dev/dsp ]] && echo 1 > /dev/dsp
+ fi
+ ;;
+ stop)
+ SAVE_VOLUME=${SAVE_VOLUME:-yes}
+ if [[ "$SAVE_VOLUME" = "yes" ]]; then
+ stat_busy "Saving ALSA Levels"
+ /usr/sbin/alsactl $ALSA_ARGS store || { stat_fail; exit 1; }
+ else
+ stat_busy "Stopping ALSA"
+ fi
+ if [ "$MUTE_VOLUME" == "yes" ]; then
+ /usr/bin/amixer -q set Master 0 mute || { stat_fail; exit 1; }
+ fi
+ stat_done
+ rm_daemon alsa
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ force-restart)
+ stat_busy "Trying to TERM or KILL processes that are blocking ALSA..."
+ FILES="$(ls -1 /dev/snd/* | grep -vi control)"
+ fuser -k -SIGTERM $FILES
+ fuser -k $FILES
+ stat_done
+ $0 restart
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart|force-restart}"
+esac
diff --git a/extra/alsa-utils/alsa.conf.d b/extra/alsa-utils/alsa.conf.d
new file mode 100644
index 000000000..bd50dcca2
--- /dev/null
+++ b/extra/alsa-utils/alsa.conf.d
@@ -0,0 +1,15 @@
+# Arguments for alsactl
+# example: ALSA_ARGS="--file /var/lib/alsa/asound.state"
+ALSA_ARGS="--file /var/lib/alsa/asound.state"
+
+# Enables powersaving mode for AC97 and hda_intel audio chips.
+# Set to 1 to enable powersaving.
+# Set to 0 to disable powersaving (default).
+POWERSAVE=0
+
+# Whether to save volume levels when stopped ("yes" or "no").
+SAVE_VOLUME="yes"
+
+# Whether to mute the master volume when stopped ("yes" or "no").
+# Useful for bad audio cards which make a noise on system poweroff.
+MUTE_VOLUME="no"
diff --git a/extra/alsa-utils/alsaconf.patch b/extra/alsa-utils/alsaconf.patch
new file mode 100644
index 000000000..ec79fe93f
--- /dev/null
+++ b/extra/alsa-utils/alsaconf.patch
@@ -0,0 +1,32 @@
+diff -Naur alsa-utils-1.0.9a-orig/alsaconf/alsaconf.in alsa-utils-1.0.9a/alsaconf/alsaconf.in
+--- alsa-utils-1.0.9a-orig/alsaconf/alsaconf.in 2005-03-24 00:24:52.000000000 -0800
++++ alsa-utils-1.0.9a/alsaconf/alsaconf.in 2005-07-18 09:25:02.000000000 -0700
+@@ -58,6 +58,8 @@
+ distribution="redhat"
+ elif test -f /etc/fedora-release && grep -q "Fedora" /etc/fedora-release; then
+ distribution="fedora"
++elif test -f /etc/arch-release && grep -q "Arch" /etc/arch-release; then
++ distribution="arch"
+ elif [ -f /etc/slackware-version -o -f /etc/slamd64-version ]; then
+ distribution="slackware"
+ else
+@@ -382,6 +384,8 @@
+ rcalsasound=/etc/rc.d/init.d/alsasound
+ elif [ -x /etc/init.d/alsa ]; then
+ rcalsasound=/etc/init.d/alsa
++elif [ -x /etc/rc.d/alsa ]; then
++ rcalsasound=/etc/rc.d/alsa
+ else
+ rcalsasound=rcalsasound
+ fi
+--- alsa-utils-1.0.9a-orig/alsaconf/alsaconf.in 2010-01-03 19:44:08.000000000 +0100
++++ alsa-utils-1.0.9a-orig/alsaconf/alsaconf.in 2010-01-03 19:44:08.000000000 +0100
+@@ -315,7 +315,7 @@
+ 3.[789]*)
+ ;;
+ *)
+- cfgout="/etc/modprobe.d/sound"
++ cfgout="/etc/modprobe.d/sound.conf"
+ cfgoldout=""
+ ;;
+ esac
diff --git a/extra/alsaplayer/PKGBUILD b/extra/alsaplayer/PKGBUILD
new file mode 100644
index 000000000..4bfaafa01
--- /dev/null
+++ b/extra/alsaplayer/PKGBUILD
@@ -0,0 +1,35 @@
+# $Id: PKGBUILD 98445 2010-11-09 00:59:46Z eric $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+
+pkgname=alsaplayer
+pkgver=0.99.81
+pkgrel=1
+pkgdesc="A heavily multi-threaded PCM player that tries to excercise the ALSA library and driver quite a bit"
+arch=('i686' 'x86_64')
+url="http://www.alsaplayer.org/"
+license=('GPL')
+depends=('gcc-libs')
+makedepends=('gtk2' 'libid3tag' 'libvorbis' 'libmad' 'libmikmod' 'jack' 'esound' 'mesa')
+optdepends=('gtk2: for the gtk2 GUI interface' \
+ 'libgl: for the OpenGL visual plugins' \
+ 'esound: for ESD audio server output support' \
+ 'jack: for JACK audio server output support' \
+ 'audiofile: for support of various audio formats like AIFF, WAVE, .snd/.au' \
+ 'libid3tag: for flac support' 'flac: for flac support' 'libmad: for MPEG support' \
+ 'libsndfile: for sndfile support' 'libvorbis: for ogg vorbis support' \
+ 'libmikmod: for mod, s3m, it and xm formats supports')
+options=('!libtool')
+source=(http://www.alsaplayer.org/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('845c53975791ba342e316ceac8aa1527')
+sha1sums=('25817ebd1e5c36da31a88363315a1bf7a945ddfd')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --enable-audiofile
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/amarok/PKGBUILD b/extra/amarok/PKGBUILD
new file mode 100644
index 000000000..0c27e8ee9
--- /dev/null
+++ b/extra/amarok/PKGBUILD
@@ -0,0 +1,37 @@
+# $Id: PKGBUILD 115423 2011-03-17 21:56:46Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: damir <damir@archlinux.org>
+
+pkgname=amarok
+replaces=('amarok-base' 'amarok-engine-xine' 'amarok-base-mysqlfree')
+pkgver=2.4.0
+pkgrel=4
+pkgdesc="A media player for KDE"
+arch=("i686" "x86_64")
+url="http://amarok.kde.org"
+license=('GPL2' 'LGPL2' 'FDL')
+depends=('kdebase-runtime' 'mysql' 'qtscriptgenerator' 'taglib-extras'
+ 'liblastfm' 'ffmpeg' 'libofa')
+makedepends=('pkgconfig' 'automoc4' 'cmake' 'libgpod' 'libmtp' 'loudmouth')
+optdepends=("libgpod: support for Apple iPod audio devices"
+ "libmtp: support for portable media devices"
+ "loudmouth: backend needed by mp3tunes for syncing"
+ "ifuse: support for Apple iPod Touch and iPhone")
+install="${pkgname}.install"
+source=("http://download.kde.org/stable/${pkgname}/${pkgver}/src/${pkgname}-${pkgver}.tar.bz2")
+md5sums=('bdb6ddc8e38d0982a0786ff8ac96d923')
+
+build() {
+ cd ${srcdir}
+ mkdir build
+ cd build
+ cmake ../${pkgname}-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=/usr
+ make
+}
+
+package(){
+ cd ${srcdir}/build
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/amarok/amarok.install b/extra/amarok/amarok.install
new file mode 100644
index 000000000..e70c054ec
--- /dev/null
+++ b/extra/amarok/amarok.install
@@ -0,0 +1,11 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/extra/amule/PKGBUILD b/extra/amule/PKGBUILD
new file mode 100644
index 000000000..c2451cb91
--- /dev/null
+++ b/extra/amule/PKGBUILD
@@ -0,0 +1,43 @@
+# $Id: PKGBUILD 117693 2011-04-04 16:32:27Z 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=10515
+pkgrel=1
+pkgdesc="An eMule-like client for ed2k p2p network"
+arch=('i686' 'x86_64')
+url="http://www.amule.org"
+license=('GPL')
+depends=('wxgtk' 'gd' 'geoip' 'libupnp' 'crypto++' 'libsm')
+source=("http://amule.sourceforge.net/tarballs/aMule-SVN-r${pkgver}.tar.bz2")
+md5sums=('68bb769089615e5b3a1b3e88fc5da0c6')
+
+build() {
+ cd "${srcdir}/aMule-SVN-r${pkgver}"
+
+ ./configure --prefix=/usr \
+ --mandir=/usr/share/man \
+ --enable-cas \
+ --enable-wxcas \
+ --enable-amule-daemon \
+ --enable-amulecmd \
+ --enable-amule-gui \
+ --enable-alc \
+ --enable-alcc \
+ --enable-webserver \
+ --disable-debug \
+ --enable-optimize \
+ --enable-ccache \
+ --enable-geoip \
+ --enable-upnp
+
+ make
+}
+
+package() {
+ cd "${srcdir}/aMule-SVN-r${pkgver}"
+ make DESTDIR=${pkgdir}/ install
+}
diff --git a/extra/anjuta-extras/PKGBUILD b/extra/anjuta-extras/PKGBUILD
new file mode 100644
index 000000000..0d1eea2e5
--- /dev/null
+++ b/extra/anjuta-extras/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 105124 2011-01-06 17:19:56Z ibiru $
+# Mantainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=anjuta-extras
+pkgver=2.32.1.1
+pkgrel=1
+pkgdesc="Anjuta Integrated Development Environment extra plugins"
+arch=('i686' 'x86_64')
+license=('GPL')
+depends=('anjuta>=2.32.0.0' 'libgnomecanvas>=2.30.2' 'graphviz>=2.26.3' 'valgrind')
+makedepends=('intltool')
+install=anjuta-extras.install
+url="http://anjuta.sourceforge.net/"
+source=(ftp://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.32/${pkgname}-${pkgver}.tar.bz2)
+options=('!libtool' '!emptydirs')
+sha256sums=('0461b78eaa11b7a930001024c4db2484863b35f5f52acaa23c568bc6355414a4')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --disable-static
+ make
+ 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 anjuta-extras ${pkgdir}/etc/gconf/schemas/*.schemas
+}
diff --git a/extra/anjuta-extras/anjuta-extras.install b/extra/anjuta-extras/anjuta-extras.install
new file mode 100644
index 000000000..2c23edf15
--- /dev/null
+++ b/extra/anjuta-extras/anjuta-extras.install
@@ -0,0 +1,17 @@
+pkgname=anjuta
+
+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/extra/anjuta/PKGBUILD b/extra/anjuta/PKGBUILD
new file mode 100644
index 000000000..18a54f830
--- /dev/null
+++ b/extra/anjuta/PKGBUILD
@@ -0,0 +1,37 @@
+# $Id: PKGBUILD 104220 2010-12-30 21:23:10Z ibiru $
+# Mantainer: Andreas Radke <andyrtr@archlinux.org>
+# Contributor: Harley Laue <losinggeneration@yahoo.com>
+
+pkgname=anjuta
+pkgver=2.32.1.1
+pkgrel=1
+pkgdesc="Anjuta Integrated Development Environment (IDE)"
+arch=('i686' 'x86_64')
+license=('GPL')
+depends=('libunique>=1.1.6' 'gconf>=2.32.0' 'vte>=0.26.2' 'gdl>=2.30.1' 'autogen>=5.9.9' 'devhelp>=2.32.0' 'gtksourceview2>=2.10.5' 'glade>=3.6.7' 'libgda>=4.2.1' 'subversion>=1.6.9' 'gnome-icon-theme>=2.31.0' 'hicolor-icon-theme' 'vala>=0.10.1' 'graphviz>=2.6.23' 'perl-locale-gettext')
+makedepends=('gnome-doc-utils>=0.20.2' 'intltool')
+url="http://anjuta.sourceforge.net/"
+install=anjuta.install
+source=(ftp://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.32/${pkgname}-${pkgver}.tar.bz2)
+options=('!libtool' '!emptydirs')
+sha256sums=('f2b67609890a45d907ab5b42fd5963ba7cb41193d4a0dd2543584eca2ec5db58')
+
+build() {
+ cd "${srcdir}/anjuta-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-scrollkeeper
+ make
+}
+
+package(){
+ cd "${srcdir}/anjuta-${pkgver}"
+
+ make -j1 GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 DESTDIR="${pkgdir}" install
+
+ sed -i "s|#!/usr/bin/python$|#!/usr/bin/python2|" \
+ $pkgdir/usr/share/anjuta/project/{pygtk,python}/src/main.py
+
+ install -m755 -d "${pkgdir}/usr/share/gconf/schemas"
+ gconf-merge-schema "${pkgdir}/usr/share/gconf/schemas/${pkgname}.schemas" --domain anjuta ${pkgdir}/etc/gconf/schemas/*.schemas
+ rm -f ${pkgdir}/etc/gconf/schemas/*.schemas
+}
diff --git a/extra/anjuta/anjuta.install b/extra/anjuta/anjuta.install
new file mode 100644
index 000000000..98f44a08f
--- /dev/null
+++ b/extra/anjuta/anjuta.install
@@ -0,0 +1,28 @@
+pkgname=anjuta
+
+post_install() {
+ usr/sbin/gconfpkg --install ${pkgname}
+ update-mime-database usr/share/mime > /dev/null
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+ gtk-update-icon-cache -q -t -f usr/share/icons/gnome
+ update-desktop-database -q
+}
+
+pre_upgrade() {
+ pre_remove $1
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ usr/sbin/gconfpkg --uninstall ${pkgname}
+}
+
+post_remove() {
+ update-mime-database usr/share/mime > /dev/null
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+ gtk-update-icon-cache -q -t -f usr/share/icons/gnome
+ update-desktop-database -q
+}
diff --git a/extra/anthy/PKGBUILD b/extra/anthy/PKGBUILD
new file mode 100644
index 000000000..c38e8ba48
--- /dev/null
+++ b/extra/anthy/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 111076 2011-02-23 21:51:47Z bisson $
+# Contributor: damir <damir@archlinux.org>
+# Contributor: Daniel J Griffiths <ghost1227@archlinux.us>
+# Maintainer: Gaetan Bisson <bisson@archlinux.org>
+
+pkgname=anthy
+pkgver=9100h
+_filecode=37536
+pkgrel=2
+pkgdesc='Hiragana text to Kana Kanji mixed text Japanese input method'
+arch=('i686' 'x86_64')
+url='http://sourceforge.jp/projects/anthy/'
+license=('LGPL' 'GPL')
+options=('!libtool')
+source=("http://dl.sourceforge.jp/anthy/${_filecode}/${pkgname}-${pkgver}.tar.gz")
+sha1sums=('bfea9e74e208c4b976b6bd7ac6784cd290c636fd')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc --disable-static
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make EMACS=emacs DESTDIR="${pkgdir}" install
+}
diff --git a/extra/antlr2/PKGBUILD b/extra/antlr2/PKGBUILD
new file mode 100644
index 000000000..021da9bb4
--- /dev/null
+++ b/extra/antlr2/PKGBUILD
@@ -0,0 +1,58 @@
+# $Id$
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: George Giorgidze <giorgidze (at) gmail.com>
+# Contributor: Stefan Husmann <stefan-husmann@t-online.de>
+
+pkgbase=antlr2
+pkgname=('antlr2' 'python-antlr2')
+pkgver=2.7.7
+pkgrel=1
+arch=('i686' 'x86_64')
+url="http://www.antlr2.org/"
+license=('custom')
+makedepends=('java-environment' 'python2' 'sh')
+source=("http://www.antlr2.org/download/antlr-${pkgver}.tar.gz"
+ 'runantlr2.sh'
+ 'gcc4.4.patch')
+md5sums=('01cc9a2a454dd33dcd8c856ec89af090'
+ 'e4aa827cf78f97c4e5fae086831192d6'
+ '8574c93f40e6477e83c29f9b07de49da')
+
+build() {
+ cd "${srcdir}/antlr-${pkgver}"
+
+ patch -Np0 -i ${srcdir}/gcc4.4.patch
+
+ ./configure --prefix=/usr \
+ --disable-examples \
+ --disable-csharp
+ make
+}
+
+package_antlr2() {
+ pkgdesc="ANother Tool for Language Recognition, (formerly PCCTS) is a language tool that provides a framework for constructing recognizers, compilers, and translators from grammatical descriptions containing C++ or Java actions"
+ depends=('java-runtime' 'sh')
+ replaces=('antlr')
+ conflicts=('antlr')
+ provides=("antlr=${pkgver}")
+
+ cd ${srcdir}/antlr-${pkgver}/lib/cpp
+ make prefix="${pkgdir}/usr" install
+
+ install -Dm644 ${srcdir}/antlr-${pkgver}/antlr/antlr.jar \
+ "${pkgdir}/usr/share/java/antlr2.jar"
+ install -Dm755 ${srcdir}/runantlr2.sh ${pkgdir}/usr/bin/runantlr2
+ install -Dm644 ${srcdir}/antlr-${pkgver}/LICENSE.txt \
+ "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+}
+
+package_python-antlr2() {
+ pkgdesc="ANother Tool for Language Recognition, (formerly PCCTS) is a language tool that provides a framework for constructing recognizers, compilers, and translators from grammatical descriptions containing C++ or Java actions (Python version)"
+ depends=('antlr2' 'python2')
+ replaces=('python-antlr')
+ conflicts=('python-antlr')
+ provides=("python-antlr=${pkgver}")
+
+ cd ${srcdir}/antlr-${pkgver}/lib/python
+ python2 setup.py install --root="${pkgdir}" --optimize=1
+}
diff --git a/extra/antlr2/gcc4.4.patch b/extra/antlr2/gcc4.4.patch
new file mode 100644
index 000000000..de8de9d3f
--- /dev/null
+++ b/extra/antlr2/gcc4.4.patch
@@ -0,0 +1,21 @@
+diff -Naur antlr-2.7.7.orig/lib/cpp/antlr/CharScanner.hpp antlr-2.7.7/lib/cpp/antlr/CharScanner.hpp
+--- lib/cpp/antlr/CharScanner.hpp 2006-11-01 22:37:17.000000000 +0100
++++ lib/cpp/antlr/CharScanner.hpp 2008-03-19 20:09:21.000000000 +0100
+@@ -10,6 +10,7 @@
+
+ #include <antlr/config.hpp>
+
++#include <cstring>
+ #include <map>
+
+ #ifdef HAS_NOT_CCTYPE_H
+--- lib/cpp/antlr/CharScanner.hpp~ 2008-11-11 21:24:02.000000000 +0000
++++ lib/cpp/antlr/CharScanner.hpp 2008-11-11 21:24:33.000000000 +0000
+@@ -10,6 +10,7 @@
+
+ #include <antlr/config.hpp>
+
++#include <cstdio>
+ #include <cstring>
+ #include <map>
+
diff --git a/extra/antlr2/runantlr2.sh b/extra/antlr2/runantlr2.sh
new file mode 100644
index 000000000..716f6f887
--- /dev/null
+++ b/extra/antlr2/runantlr2.sh
@@ -0,0 +1,5 @@
+#!/bin/sh
+echo Running 'java antlr.Tool $*' with /usr/share/java/antlr2.jar appended to the CLASSPATH variable
+export CLASSPATH
+CLASSPATH=$CLASSPATH:/usr/share/java/antlr2.jar
+java antlr.Tool $*
diff --git a/extra/apache-ant/PKGBUILD b/extra/apache-ant/PKGBUILD
new file mode 100644
index 000000000..7eec5c172
--- /dev/null
+++ b/extra/apache-ant/PKGBUILD
@@ -0,0 +1,51 @@
+# $Id: PKGBUILD 107828 2011-01-27 04:37:07Z paul $
+# Contributor: Andrew Wright <andreww@photism.org>
+# Maintainer: Paul Mattal <paul@archlinux.org>
+
+pkgname=apache-ant
+pkgver=1.8.2
+pkgrel=1
+pkgdesc="A java-based build tool."
+arch=('i686' 'x86_64')
+license=('APACHE')
+url="http://ant.apache.org/"
+depends=('java-runtime')
+optdepends=('junit: to jave junit on the classpath in javac tasks')
+source=(http://archive.apache.org/dist/ant/binaries/${pkgname}-${pkgver}-bin.tar.bz2
+ ${pkgname}.sh
+ ant_diagnostics.patch)
+md5sums=('9e9ae9fc7352960191489a1286fb0928'
+ '593ee6ebd9b8ec321534a028e686880f'
+ 'cbaab423be40a6e63f0fde901b91eb50')
+
+build() {
+ # install profile.d script
+ install -dm755 ${pkgdir}/etc/profile.d || return 1
+ install -m755 ${srcdir}/${pkgname}.sh ${pkgdir}/etc/profile.d/ || return 1
+
+ # Get the ANT_HOME env var
+ source ${srcdir}/${pkgname}.sh || return 1
+
+ cd ${srcdir}/${pkgname}-${pkgver}
+ install -dm755 ${pkgdir}/${ANT_HOME}/{bin,lib} || return 1
+
+ install -m644 ./lib/*.jar ${pkgdir}/${ANT_HOME}/lib || return 1
+ cp -Rp ./etc ${pkgdir}/${ANT_HOME} || return 1
+
+ # Do not copy Windows .bat/.cmd files
+ find ./bin -type f -a ! -name \*.bat -a ! -name \*.cmd \
+ -exec install -m755 {} ${pkgdir}/${ANT_HOME}/bin \; || return 1
+
+ # symlink to junit so it's on the javac build path for ant
+ # matches behavior on ubuntu 9 and makes sense for compatibility
+ # http://bugs.archlinux.org/task/15229
+ cd $startdir/pkg/usr/share/java/apache-ant/lib || return 1
+ ln -s ../../junit.jar . || return 1
+ cd - || return 1
+
+ # The license says the NOTICE file should be redistributed for derivative
+ # works, so lets supply it.
+ install -dm755 ${pkgdir}/usr/share/licenses/${pkgname} || return 1
+ install -m644 LICENSE NOTICE ${pkgdir}/usr/share/licenses/${pkgname} || return 1
+}
+
diff --git a/extra/apache-ant/ant_diagnostics.patch b/extra/apache-ant/ant_diagnostics.patch
new file mode 100644
index 000000000..38148b45c
--- /dev/null
+++ b/extra/apache-ant/ant_diagnostics.patch
@@ -0,0 +1,23 @@
+--- a/src/main/org/apache/tools/ant/Diagnostics.java
++++ b/src/main/org/apache/tools/ant/Diagnostics.java
+@@ -179,7 +179,10 @@
+ * @param clazz the class to get the information from.
+ * @since Ant 1.8.0
+ */
+- private static URL getClassLocation(Class clazz) {
++ private static URL getClassLocation(Class clazz) {
++ if (clazz.getProtectionDomain().getCodeSource() == null) {
++ return null;
++ }
+ return clazz.getProtectionDomain().getCodeSource().getLocation();
+ }
+
+@@ -241,7 +244,7 @@
+ }
+ Transformer transformer = null;
+ try {
+- transformer = transformerFactory.newTransformer();
++ transformer = transformerFactory.newTransformer();
+ } catch (Exception e) {
+ // ignore
+ ignoreThrowable(e);
diff --git a/extra/apache-ant/apache-ant.sh b/extra/apache-ant/apache-ant.sh
new file mode 100644
index 000000000..ab602fb28
--- /dev/null
+++ b/extra/apache-ant/apache-ant.sh
@@ -0,0 +1,3 @@
+export ANT_HOME=/usr/share/java/apache-ant
+export PATH=$PATH:$ANT_HOME/bin
+
diff --git a/extra/apache/PKGBUILD b/extra/apache/PKGBUILD
new file mode 100644
index 000000000..7afa2ad23
--- /dev/null
+++ b/extra/apache/PKGBUILD
@@ -0,0 +1,139 @@
+# $Id: PKGBUILD 96448 2010-10-21 09:16:04Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Pierre Schmitz <pierre@archlinux.de>
+
+pkgname=apache
+pkgver=2.2.17
+pkgrel=1
+pkgdesc='A high performance Unix-based HTTP server'
+arch=('i686' 'x86_64')
+options=('!libtool')
+url='http://www.apache.org/dist/httpd'
+license=('APACHE')
+backup=(etc/conf.d/apache etc/httpd/conf/httpd.conf
+ etc/httpd/conf/extra/httpd-{autoindex,dav,default,info,languages}.conf
+ etc/httpd/conf/extra/httpd-{manual,mpm,multilang-errordoc}.conf
+ etc/httpd/conf/extra/httpd-{ssl,userdir,vhosts}.conf
+ etc/logrotate.d/httpd)
+depends=('openssl' 'zlib' 'apr-util' 'pcre')
+optdepends=('lynx: apachectl status')
+_itkurl=http://mpm-itk.sesse.net/apache2.2-mpm-itk-2.2.11-02
+source=(http://www.apache.org/dist/httpd/httpd-${pkgver}.tar.bz2
+ ${_itkurl}/02-rename-prefork-to-itk.patch
+ ${_itkurl}/03-add-mpm-to-build-system.patch
+ ${_itkurl}/04-correct-output-makefile-location.patch
+ ${_itkurl}/05-add-copyright.patch
+ ${_itkurl}/06-hook-just-after-merging-perdir-config.patch
+ ${_itkurl}/07-base-functionality.patch
+ ${_itkurl}/08-max-clients-per-vhost.patch
+ ${_itkurl}/09-capabilities.patch
+ ${_itkurl}/10-nice.patch
+ apachectl-confd.patch
+ apache.conf.d
+ httpd.logrotate
+ httpd
+ arch.layout)
+md5sums=('16eadc59ea6b38af33874d300973202e'
+ 'db42cfcc18ae1c32aaaff2347e35b79d'
+ '131408ad4dc7b18547b4e062e7e495ab'
+ 'ee488f391054d528547c3a372faa2aa7'
+ 'b202944761b2f0516196488b12504236'
+ '78fa15f8ca3a284b7d71f942e24e47fb'
+ 'd33e39350e987721d50e6fb8e164ab6b'
+ '9f7a8935f9cabc7b46d0052906634cef'
+ '1b28e3363e1b0d05b738a21e7ddd264f'
+ 'd9667fcd2ffecc63e446edd4d6666731'
+ '4ac64df6e019edbe137017cba1ff2f51'
+ '08b3c875f6260644f2f52b4056d656b0'
+ '6382331e9700ed9e8cc78ea51887b537'
+ 'c7e300a287ef7e2e066ac7639536f87e'
+ '3d659d41276ba3bfcb20c231eb254e0c')
+
+build() {
+ cd "${srcdir}/httpd-${pkgver}"
+
+ patch -Np0 -i "${srcdir}/apachectl-confd.patch"
+
+ # set default user
+ sed -e 's#User daemon#User http#' \
+ -e 's#Group daemon#Group http#' \
+ -i docs/conf/httpd.conf.in
+
+ cat "${srcdir}/arch.layout" >> config.layout
+
+ for mpm in prefork worker itk; do
+ if [ "${mpm}" = "itk" ]; then
+ mkdir -p server/mpm/experimental/itk
+ cp -r server/mpm/prefork/* server/mpm/experimental/itk/
+ mv server/mpm/experimental/itk/prefork.c server/mpm/experimental/itk/itk.c
+
+ patch -Np1 -i "${srcdir}/02-rename-prefork-to-itk.patch"
+ patch -Np1 -i "${srcdir}/03-add-mpm-to-build-system.patch"
+ patch -Np1 -i "${srcdir}/04-correct-output-makefile-location.patch"
+ patch -Np1 -i "${srcdir}/05-add-copyright.patch"
+ patch -Np1 -i "${srcdir}/06-hook-just-after-merging-perdir-config.patch"
+ patch -Np1 -i "${srcdir}/07-base-functionality.patch"
+ patch -Np1 -i "${srcdir}/08-max-clients-per-vhost.patch"
+ patch -Np1 -i "${srcdir}/09-capabilities.patch"
+ patch -Np1 -i "${srcdir}/10-nice.patch"
+
+ autoconf
+ fi
+ mkdir build-${mpm}
+ pushd build-${mpm}
+ ../configure --enable-layout=Arch \
+ --enable-modules=all \
+ --enable-mods-shared=all \
+ --enable-so \
+ --enable-suexec \
+ --with-suexec-caller=http \
+ --with-suexec-docroot=/srv/http \
+ --with-suexec-logfile=/var/log/httpd/suexec.log \
+ --with-suexec-bin=/usr/sbin/suexec \
+ --with-suexec-uidmin=99 --with-suexec-gidmin=99 \
+ --enable-ldap --enable-authnz-ldap \
+ --enable-cache --enable-disk-cache --enable-mem-cache --enable-file-cache \
+ --enable-ssl --with-ssl \
+ --enable-deflate --enable-cgid \
+ --enable-proxy --enable-proxy-connect \
+ --enable-proxy-http --enable-proxy-ftp \
+ --enable-dbd \
+ --with-apr=/usr/bin/apr-1-config \
+ --with-apr-util=/usr/bin/apu-1-config \
+ --with-pcre=/usr \
+ --with-mpm=${mpm}
+ make
+ if [ "${mpm}" = "prefork" ]; then
+ make DESTDIR="${pkgdir}" install
+ else
+ install -m755 httpd "${pkgdir}/usr/sbin/httpd.${mpm}"
+ fi
+ popd
+ done
+
+ install -D -m755 "${srcdir}/httpd" "${pkgdir}/etc/rc.d/httpd"
+ install -D -m644 "${srcdir}/httpd.logrotate" "${pkgdir}/etc/logrotate.d/httpd"
+ install -D -m644 "${srcdir}/apache.conf.d" "${pkgdir}/etc/conf.d/apache"
+
+ # symlinks for /etc/httpd
+ ln -fs /var/log/httpd "${pkgdir}/etc/httpd/logs"
+ ln -fs /var/run/httpd "${pkgdir}/etc/httpd/run"
+ ln -fs /usr/lib/httpd/modules "${pkgdir}/etc/httpd/modules"
+ ln -fs /usr/lib/httpd/build "${pkgdir}/etc/httpd/build"
+
+ # set sane defaults
+ sed -e 's#/usr/lib/httpd/modules/#modules/#' \
+ -e 's|#\(Include conf/extra/httpd-multilang-errordoc.conf\)|\1|' \
+ -e 's|#\(Include conf/extra/httpd-autoindex.conf\)|\1|' \
+ -e 's|#\(Include conf/extra/httpd-languages.conf\)|\1|' \
+ -e 's|#\(Include conf/extra/httpd-userdir.conf\)|\1|' \
+ -e 's|#\(Include conf/extra/httpd-default.conf\)|\1|' \
+ -i "${pkgdir}/etc/httpd/conf/httpd.conf"
+
+ # cleanup
+ rm -rf "${pkgdir}/usr/share/httpd/manual"
+ rm -rf "${pkgdir}/etc/httpd/conf/original"
+ rm -rf "${pkgdir}/srv/"
+ rm -rf "${pkgdir}/usr/bin"
+}
diff --git a/extra/apache/apache.conf.d b/extra/apache/apache.conf.d
new file mode 100644
index 000000000..c6d0ebf52
--- /dev/null
+++ b/extra/apache/apache.conf.d
@@ -0,0 +1,15 @@
+# Configuration file for the httpd service.
+
+#
+# The default processing model (MPM) is the process-based
+# 'prefork' model. A thread-based model, 'worker', is also
+# available, but does not work with some modules (such as PHP).
+# The service must be stopped before changing this variable.
+#
+#HTTPD=/usr/sbin/httpd.worker
+
+#
+# To pass additional options (for instance, -D definitions) to the
+# httpd binary at startup, set OPTIONS here.
+#
+#OPTIONS=
diff --git a/extra/apache/apachectl-confd.patch b/extra/apache/apachectl-confd.patch
new file mode 100644
index 000000000..d0f4b699e
--- /dev/null
+++ b/extra/apache/apachectl-confd.patch
@@ -0,0 +1,15 @@
+--- support/apachectl.in.orig 2010-03-06 18:09:11.000000000 +0100
++++ support/apachectl.in 2010-03-06 18:12:31.000000000 +0100
+@@ -56,6 +56,12 @@
+ # the URL to your server's mod_status status page. If you do not
+ # have one, then status and fullstatus will not work.
+ STATUSURL="http://localhost:@PORT@/server-status"
++
++# Source /etc/conf.d/apache for $HTTPD setting, etc.
++if [ -r /etc/conf.d/apache ]; then
++ . /etc/conf.d/apache
++fi
++
+ #
+ # Set this variable to a command that increases the maximum
+ # number of file descriptors allowed per child process. This is
diff --git a/extra/apache/arch.layout b/extra/apache/arch.layout
new file mode 100644
index 000000000..ab59db84b
--- /dev/null
+++ b/extra/apache/arch.layout
@@ -0,0 +1,22 @@
+<Layout Arch>
+ prefix: /etc/httpd
+ exec_prefix: /usr
+ bindir: /usr/bin
+ sbindir: /usr/sbin
+ libdir: /usr/lib/httpd
+ libexecdir: /usr/lib/httpd/modules
+ mandir: /usr/share/man
+ sysconfdir: /etc/httpd/conf
+ datadir: /usr/share/httpd
+ installbuilddir: /usr/lib/httpd/build
+ errordir: /usr/share/httpd/error
+ iconsdir: /usr/share/httpd/icons
+ htdocsdir: /srv/http
+ manualdir: /usr/share/httpd/manual
+ cgidir: /srv/http/cgi-bin
+ includedir: /usr/include/httpd
+ localstatedir: /var
+ runtimedir: /var/run/httpd
+ logfiledir: /var/log/httpd
+ proxycachedir: /var/cache/httpd
+</Layout> \ No newline at end of file
diff --git a/extra/apache/httpd b/extra/apache/httpd
new file mode 100755
index 000000000..6fa9c3cc7
--- /dev/null
+++ b/extra/apache/httpd
@@ -0,0 +1,65 @@
+#!/bin/bash
+
+daemon_name=httpd
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+APACHECTL=/usr/sbin/apachectl
+
+case "$1" in
+ start)
+ stat_busy "Starting Apache Web Server"
+ [ ! -d /var/run/httpd ] && install -d /var/run/httpd
+ if $APACHECTL start >/dev/null ; then
+ add_daemon $daemon_name
+ stat_done
+ else
+ stat_fail
+ exit 1
+ fi
+ ;;
+
+ stop)
+ stat_busy "Stopping Apache Web Server"
+ if $APACHECTL stop >/dev/null ; then
+ rm_daemon $daemon_name
+ stat_done
+ else
+ stat_fail
+ exit 1
+ fi
+ ;;
+
+ reload)
+ stat_busy "Reloading Apache Web Server"
+ if $APACHECTL graceful >/dev/null ; then
+ add_daemon $daemon_name
+ stat_done
+ else
+ stat_fail
+ exit 1
+ fi
+ ;;
+
+ restart)
+ stat_busy "Restarting Apache Web Server"
+ if $APACHECTL restart >/dev/null ; then
+ add_daemon $daemon_name
+ stat_done
+ else
+ stat_fail
+ exit 1
+ fi
+ ;;
+
+ status)
+ stat_busy "Checking Apache Web Server status";
+ ck_status $daemon_name
+ ;;
+
+ *)
+ echo "usage: $0 {start|stop|reload|restart|status}"
+esac
+
+exit 0
diff --git a/extra/apache/httpd.logrotate b/extra/apache/httpd.logrotate
new file mode 100644
index 000000000..a723d20d2
--- /dev/null
+++ b/extra/apache/httpd.logrotate
@@ -0,0 +1,6 @@
+/var/log/httpd/*log {
+ missingok
+ postrotate
+ /bin/kill -HUP `cat /var/run/httpd/httpd.pid 2>/dev/null` 2> /dev/null || true
+ endscript
+}
diff --git a/extra/apr-util/PKGBUILD b/extra/apr-util/PKGBUILD
new file mode 100644
index 000000000..2ea584661
--- /dev/null
+++ b/extra/apr-util/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 96364 2010-10-20 01:39:57Z allan $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Maintainer: Pierre Schmitz <pierre@archlinux.de>
+
+pkgname=apr-util
+pkgver=1.3.10
+pkgrel=2
+pkgdesc="The Apache Portable Runtime"
+arch=('i686' 'x86_64')
+url="http://apr.apache.org/"
+depends=('apr>=1.4.2' 'gdbm' 'expat' 'db' 'libldap' 'unixodbc')
+options=('!libtool')
+license=('APACHE')
+source=("http://www.apache.org/dist/apr/apr-util-${pkgver}.tar.bz2")
+md5sums=('6a6f501a1b2a45166b8ffd6df29204bb')
+
+build() {
+ cd "${srcdir}/apr-util-${pkgver}"
+
+ ./configure --prefix=/usr --with-apr=/usr \
+ --without-pgsql --without-mysql --without-sqlite2 --without-sqlite3 \
+ --with-berkeley-db=/usr --with-gdbm=/usr --with-ldap
+ make
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/apr/PKGBUILD b/extra/apr/PKGBUILD
new file mode 100644
index 000000000..b0d3f4d96
--- /dev/null
+++ b/extra/apr/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id: PKGBUILD 72235 2010-03-13 20:22:25Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Pierre Schmitz <pierre@archlinux.de>
+
+pkgname=apr
+pkgver=1.4.2
+pkgrel=1
+pkgdesc="The Apache Portable Runtime"
+arch=('i686' 'x86_64')
+url="http://apr.apache.org/"
+depends=('util-linux-ng>=2.16')
+options=('!libtool')
+license=('APACHE')
+source=(http://www.apache.org/dist/apr/apr-${pkgver}.tar.bz2)
+md5sums=('4b00e8f70c067893d075577962656b35')
+
+build() {
+ cd "${srcdir}/apr-${pkgver}"
+ export apr_cv_epoll_create1=no
+ export apr_cv_dup3=no
+ export apr_cv_accept4=no
+ export apr_cv_sock_cloexec=no
+
+ ./configure --prefix=/usr --includedir=/usr/include/apr-1 \
+ --with-installbuilddir=/usr/share/apr-1/build \
+ --enable-nonportable-atomics \
+ --with-devrandom=/dev/urandom || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/apricots/PKGBUILD b/extra/apricots/PKGBUILD
new file mode 100644
index 000000000..76edd3871
--- /dev/null
+++ b/extra/apricots/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id: PKGBUILD 27259 2009-02-18 02:43:34Z eric $
+# Contributor: Damir Perisa <damir.perisa@bluewin.ch>
+
+pkgname=apricots
+pkgver=0.2.6
+pkgrel=3
+pkgdesc="A simple 2D flying/bombing game similar to basic side scrollers"
+arch=("i686" "x86_64")
+license=('GPL')
+url="http://www.fishies.org.uk/apricots.html"
+depends=('gcc-libs' 'openal>=1.6.372' 'sdl' 'freealut>=1.1.0')
+source=("http://www.fishies.org.uk/$pkgname-$pkgver.tar.gz" \
+ "apricots-0.2.6-freealut.patch")
+md5sums=('910828d717e46d8cbd9c24f702d09fbc' '5f9f74082dfe162ab3ba51f6ec628f99')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ patch -Np0 -i $startdir/src/apricots-0.2.6-freealut.patch || return 1
+ ./configure --prefix=/usr || return 1
+ make || return 1
+ make prefix=$pkgdir/usr install || return 1
+}
diff --git a/extra/apricots/apricots-0.2.6-freealut.patch b/extra/apricots/apricots-0.2.6-freealut.patch
new file mode 100644
index 000000000..4f6630713
--- /dev/null
+++ b/extra/apricots/apricots-0.2.6-freealut.patch
@@ -0,0 +1,65 @@
+--- apricots/apricots.cpp
++++ apricots/apricots.cpp
+@@ -16,6 +16,7 @@
+ int main(int, char**){
+ #endif
+
++atexit(SDL_Quit);
+ // Initialize data
+ gamedata g;
+ init_data(g);
+
+--- apricots/sampleio.cpp
++++ apricots/sampleio.cpp
+@@ -74,12 +74,9 @@
+ alListenerfv(AL_ORIENTATION, front );
+
+ // Load in samples
+- ALvoid* data = malloc(5 * (512 * 3) * 1024);
+ alGenBuffers(numsamples, samples);
+
+ for (int i = 0; i < numsamples; i++){
+- ALsizei freq;
+- ALboolean fileok;
+ // Evil OpenAL portability fix done here
+ #ifdef _WIN32
+ ALenum format;
+@@ -87,15 +84,12 @@
+ alutLoadWAVFile(filenames[i],&format,&data,&filelen,&freq,&trash);
+ fileok = (alGetError() == AL_NO_ERROR);
+ #else
+- ALsizei format;
+- ALsizei trash;
+- fileok = alutLoadWAV(filenames[i],&data,&format,&filelen,&trash,&freq);
++ samples[i] = alutCreateBufferFromFile(filenames[i]);
+ #endif
+- if (!fileok){
++ if (samples[i] == AL_NONE){
+ cerr << "sampleio: could not open " << filenames[i] << endl;
+ exit(1);
+ }
+- alBufferData(samples[i], format, data, filelen, freq);
+ }
+
+ // Generate Sources
+@@ -107,7 +101,6 @@
+ alSourcefv(sources[j], AL_ORIENTATION, back );
+ }
+
+- free(data);
+
+ }
+
+
+--- configure.in
++++ configure.in
+@@ -100,7 +100,8 @@
+
+ dnl Check for OpenAL
+ AC_CHECK_HEADER(AL/al.h,[CXXFLAGS="$CXXFLAGS -DAP_AUDIO_OPENAL"])
+-AC_CHECK_LIB( openal, alutInit)
++AC_CHECK_LIB( openal, alGetError)
++AC_CHECK_LIB( alut, alutInit)
+
+ KDE_CHECK_EXTRA_LIBS
+ all_libraries="$all_libraries $USER_LDFLAGS"
diff --git a/extra/archboot/PKGBUILD b/extra/archboot/PKGBUILD
new file mode 100644
index 000000000..fd2534453
--- /dev/null
+++ b/extra/archboot/PKGBUILD
@@ -0,0 +1,43 @@
+# $Id: PKGBUILD 102962 2010-12-13 17:55:11Z tpowa $
+# Maintainer : Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=archboot
+pkgver=2010.12
+pkgrel=1
+pkgdesc="Advanced, modular arch boot/install image creation utility"
+arch=(i686 x86_64)
+license=('GPL')
+url="http://www.archlinux.org/"
+depends=('mkinitcpio>=0.6.7-1' 'mksyslinux>=2010.08-1' 'mkpxelinux>=2010.08-1' 'mkisolinux>=2010.08-1' 'initscripts>=2010.07-2' 'subversion>=1.6.13-1' 'wget>=1.12-2' 'bash>=4.1.009-3' 'coreutils>=8.7-1' 'cryptsetup>=1.1.3-1' 'dialog>=1.1_20100428-2' 'e2fsprogs>=1.41.12-1' 'findutils>=4.4.2-3' 'gawk>=3.1.8-2' 'grep>=2.7-1' 'iputils>=20100214-2' 'jfsutils>=1.1.14-2' 'less>=436-2' 'lvm2>=2.02.77-1' 'mdadm>=3.1.4-1' 'module-init-tools>=3.12-1' 'nano>=2.2.6-1' 'ncurses>=5.7-4' 'net-tools>=1.60-14' 'gnu-netcat>=0.7.1-3' 'ntfsprogs>=2.0.0-4' 'pcmciautils>=017-1' 'procps>=3.2.8-2' 'psmisc>=22.13-1' 'reiserfsprogs>=3.6.21-3' 'sed>=4.2.1-3' 'snarf>=7.0-4' 'syslog-ng>=3.2.1-1' 'sysvinit>=2.88-2' 'tar>=1.25-1' 'util-linux-ng>=2.18-3' 'which>=2.20-4' 'kbd>=1.15.2-1' 'wireless_tools>=29-4' 'xfsprogs>=3.1.4-1' 'dnsutils>=9.7.1.P2-1' 'hdparm>=9.36-1' 'memtest86+>=4.10-1' 'grub>=0.97-17' 'inetutils>=1.8-2' 'openssh>=5.6p1-1' 'hwdetect>=2010.08-1' 'shadow>=4.1.4.2-3' 'bridge-utils>=1.4-3' 'ifenslave>=1.1.0-5' 'cpufrequtils>=008-1' 'links>=2.2-4' 'tcp_wrappers>=7.6-12' 'dosfstools>=3.0.10-1' 'glibc>=2.12.1-4' 'linux-api-headers>=2.6.34-1' 'kernel26>=2.6.36.2-1' 'kernel26-lts>=2.6.32.27-1' 'xinetd>=2.3.14-6' 'kexec-tools>=2.0.2-2' 'ppp>=2.4.5-1' 'rp-pppoe>=3.10-5' 'lilo>=23.1-2' 'iptables>=1.4.10-1' 'capi4k-utils>=050718-7' 'isdn4k-utils>=3.2p1-6' 'ntfs-3g>=2010.10.2-1' 'pciutils>=3.1.7-1' 'usbutils>=0.91-4' 'vpnc>=0.5.3-3' 'openvpn>=2.1.4-1' 'b43-fwcutter>=013-2' 'wpa_supplicant>=0.7.3-1' 'rsync>=3.0.7-1' 'gzip>=1.4-2' 'libarchive>=2.8.4-2' 'device-mapper>=2.02.77-1' 'screen>=4.0.3-10' 'elfutils>=0.149-2' 'pam>=1.1.1-2' 'cracklib>=2.8.16-1' 'nfs-utils>=1.2.2-4' 'nfsidmap>=0.23-4' 'readline>=6.1.002-2' 'acl>=2.2.49-1' 'attr>=2.4.44-2' 'pcre>=8.11-1' 'cpio>=2.11-2' 'fuse>=2.8.5-1' 'libusb>=1.0.8-1' 'vim>=7.3.69-2' 'lzo2>=2.04-1' 'libsasl>=2.1.23-5' 'libldap>=2.4.23-1' 'gpm>=1.20.6-6' 'libevent>=1.4.14b-2' 'gcc-libs>=4.5.1-2' 'sdparm>=1.06-1' 'licenses>=2.6-1' 'pptpclient>=1.7.2-3' 'ndiswrapper>=1.56-6' 'ndiswrapper-utils>=1.56-2' 'zd1211-firmware>=1.4-4' 'ipw2100-fw>=1.3-5' 'ipw2200-fw>=3.1-3' 'smbclient>=3.5.6-1' 'bittorrent>=5.2.2-3' 'dhcpcd>=5.2.9-1' 'openssl>=1.0.0.c-1' 'git>=1.7.3.3-1' 'dmraid>=1.0.0.rc16+CVS-2' 'linux-atm>=2.5.1-1' 'netcfg>=2.5.4-1' 'tiacx>=20080210-18' 'tiacx-firmware>=2-3' 'parted>=2.3-1' 'tzdata>=2010o-1' 'ntp>=4.2.6.p2-1' 'libgcrypt>=1.4.6-1' 'iw>=0.9.20-1' 'crda>=1.1.1-1' 'libnl>=1.1-2' 'iproute2>=2.6.35-4' 'wireless-regdb>=2010.11.24-1' 'v86d>=0.1.9-11' 'dhclient>=4.2.0.1-1' 'syslinux>=4.03-1' 'mtools>=4.0.14-1' 'fsarchiver>=0.6.10-2' 'xz>=5.0.0-1' 'libtirpc>=0.2.1-2' 'librpcsecgss>=0.19-3' 'rpcbind>=0.2.0-2' 'testdisk>=6.11.3-3' 'wipe>=2.3.0-1' 'clamav>=0.96.5-1' 'ddrescue>=1.13-1' 'udev>=164-3' 'ifplugd>=0.28-7' 'wpa_actiond>=1.1-1' 'nouveau-firmware>=20091212-4' 'rfkill>=0.4-1' 'libgssglue>=0.1-3' 'mkinitcpio-nfs-utils>=0.2-1' 'gdisk>=0.6.13-1' 'nilfs-utils>=2.0.20-1' 'btrfs-progs-unstable>=0.19.20100607-3' 'ndiswrapper-lts>=1.56-3' 'nouveau-drm-lts>=0.0.16_20100313-4' 'linux-firmware>=20101108-1' 'iana-etc>=2.30-1' 'libusb-compat>=0.1.3-1')
+source=(ftp://ftp.archlinux.org/other/$pkgname/$pkgname-$pkgver-$pkgrel.tar.bz2 vmware-detect.c)
+backup=('etc/archboot/allinone.conf'
+ 'etc/archboot/allinone-lts.conf'
+ 'etc/archboot/default.conf'
+ 'etc/archboot/default-ftp.conf'
+ 'etc/archboot/default-pxelinux.conf'
+ 'etc/archboot/default-ftp-pxelinux.conf'
+ 'etc/archboot/presets/allinone'
+ 'etc/archboot/presets/allinone-lts'
+ 'etc/archboot/presets/isolinux'
+ 'etc/archboot/presets/isolinux-ftp'
+ 'etc/archboot/presets/syslinux'
+ 'etc/archboot/presets/syslinux-ftp'
+ 'etc/archboot/presets/pxelinux'
+ 'etc/archboot/presets/pxelinux-ftp'
+)
+install=archboot.install
+
+### to bump the depends list use this:
+#for i in $(grep ^depends= PKGBUILD | sed -e 's/depends=(//g' -e 's/)//g'); do sed -i -e "s/$(echo $i)/$(echo $i | sed -e "s/>=.*/>=$(pacman -Qi $(echo $i | sed -e "s/'//g" -e 's/>=.*//g') | grep ^Version | sed -e 's/.*: //g')'/g")/g" PKGBUILD; done
+
+build()
+{
+ cd $srcdir/$pkgname-$pkgver-$pkgrel
+ mv * $pkgdir/
+ # vmware-detect
+ cd $startdir/src
+ gcc -o vmware-detect vmware-detect.c
+ install -D -m 755 vmware-detect $startdir/pkg/usr/bin/vmware-detect
+}
+md5sums=('c122578bfa40e4d11f570ab066a98abf'
+ '7e2b03463747cb22ab388e79a09fa0cb')
diff --git a/extra/archboot/archboot.install b/extra/archboot/archboot.install
new file mode 100644
index 000000000..25d9c88d4
--- /dev/null
+++ b/extra/archboot/archboot.install
@@ -0,0 +1,24 @@
+# This is a default template for a post-install scriptlet. You can
+# remove any functions you don't need (and this header).
+
+# arg 1: the new package version
+post_install() {
+ cat << EOF
+ARCHBOOT usage:
+---------------
+--> Main config files were installed to '/etc/archboot/'.
+ Preset files were installed to '/etc/archboot/presets'.
+ Modify them to your needs.
+--> Use the preset files as config file of your build tool:
+ mkisolinux, mksyslinux or mkpxelinux
+--> For Allinone ISOs use archboot-allinone.sh
+EOF
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+op=$1
+shift
+$op $*
diff --git a/extra/archboot/vmware-detect.c b/extra/archboot/vmware-detect.c
new file mode 100644
index 000000000..d242a388d
--- /dev/null
+++ b/extra/archboot/vmware-detect.c
@@ -0,0 +1,13 @@
+#include <stdio.h>
+int main() {
+ unsigned char idtr[6];
+ asm("sidt %0" : "=m" (idtr));
+ if(0xff==idtr[5])
+ {
+ return 0;
+ }
+ else
+ {
+ return 1;
+ }
+}
diff --git a/extra/ardour/PKGBUILD b/extra/ardour/PKGBUILD
new file mode 100644
index 000000000..eb512207f
--- /dev/null
+++ b/extra/ardour/PKGBUILD
@@ -0,0 +1,50 @@
+# $Id: PKGBUILD 101421 2010-11-29 06:10:19Z allan $
+# Maintainer: tobias <tobias@archlinux.org>
+# Maintainer: Ray Rashif <schivmeister@gmail.com>
+# Contributor: Giovanni Scafora <giovanni@archlinux.org>
+
+# ardour, liblrdf and raptor are heavily dependent on each other. Updating of
+# one package mostly will require an update of all the other packages. I vote
+# for fixed dependencies speaking in terms of versions
+
+pkgname=ardour
+pkgver=2.8.11
+pkgrel=2
+pkgdesc="A multichannel hard disk recorder and digital audio workstation"
+arch=('i686' 'x86_64')
+url="http://ardour.org"
+license=('GPL')
+depends=('liblrdf' 'liblo' 'aubio' 'libusb-compat'
+ 'slv2' 'rubberband' 'libgnomecanvas')
+makedepends=('scons' 'boost' 'pkg-config')
+changelog=${pkgname}.changelog
+source=(ftp://ftp.archlinux.org/other/ardour/${pkgname}-${pkgver}.tar.bz2
+ ${pkgname}.desktop)
+md5sums=('f451a8d0abc133a1700c3932e07a5612'
+ '8aeaf433ebf781733db48e5a16b0c4da')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ sed -i '/-O3/d' SConstruct
+
+ scons ${MAKEFLAGS} ARCH="${CFLAGS}" \
+ PREFIX="/usr" \
+ DIST_LIBDIR="lib" \
+ FREEDESKTOP=0 \
+ FREESOUND=1 \
+ DESTDIR="${pkgdir}"
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ scons PREFIX="/usr" \
+ FREEDESKTOP=0 \
+ FREESOUND=1 \
+ DESTDIR="${pkgdir}" install
+
+ # install some freedesktop.org compatibility
+ install -Dm644 "${srcdir}/${pkgname}.desktop" "${pkgdir}/usr/share/applications/${pkgname}.desktop"
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/extra/ardour/ardour.changelog b/extra/ardour/ardour.changelog
new file mode 100644
index 000000000..6da0d9f57
--- /dev/null
+++ b/extra/ardour/ardour.changelog
@@ -0,0 +1,22 @@
+9 Aug 2010 (GMT+8) Ray Rashif <schivmeister@gmail.com>
+
+ * 2.8.11-1 :
+ Testing build.
+ Updated to latest upstream release.
+ Removed libgnomecanvasmm depend (ardour internal).
+ Removed soundtouch makedepend (ardour internal, unneded).
+ Added new depends
+ - slv2 ("LV2" plug-ins support)
+ - rubberband (can "do more" than soundtouch)
+ - libgnomecanvas
+ Not using SYSLIBS because upstream does not support it.
+ Namcap warnings can be ignored; they're ardour internals.
+
+ * PKGBUILD :
+ Minor cosmetic ammendments.
+
+ * ardour.changelog :
+ Added this changelog.
+
+ * ardour.install :
+ Removed install scriptlet; old and deprecated information.
diff --git a/extra/ardour/ardour.desktop b/extra/ardour/ardour.desktop
new file mode 100644
index 000000000..b50f6c952
--- /dev/null
+++ b/extra/ardour/ardour.desktop
@@ -0,0 +1,9 @@
+[Desktop Entry]
+Name=Ardour
+Comment=Multitrack hard disk recorder
+Exec=ardour2
+Icon=/usr/share/ardour2/icons/ardour_icon_48px.png
+Terminal=false
+Type=Application
+X-MultipleArgs=false
+Categories=GTK;Audio;AudioVideoEditing;AudioVideo;Video;
diff --git a/extra/aria2/PKGBUILD b/extra/aria2/PKGBUILD
new file mode 100644
index 000000000..ebf763ca5
--- /dev/null
+++ b/extra/aria2/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 117352 2011-03-31 07:19:05Z eric $
+# Maintainer: Angel Velasquez <angvp@archlinux.org>
+# Contributor: Alexander Fehr <pizzapunk gmail com>
+# Contributor: Daniel J Griffiths <ghost1227@archlinux.us>
+
+pkgname=aria2
+pkgver=1.11.1
+pkgrel=1
+pkgdesc="Download utility that supports HTTP(S), FTP, BitTorrent, and Metalink"
+arch=('i686' 'x86_64')
+url="http://aria2.sourceforge.net/"
+license=('GPL')
+depends=('gnutls' 'libxml2' 'sqlite3' 'c-ares' 'ca-certificates')
+source=(http://downloads.sourceforge.net/aria2/aria2-${pkgver}.tar.bz2)
+md5sums=('da785645a6d92450b0a54f384202ba6b')
+sha1sums=('b3b37cc7363305d55e86dcd74a73dc493ecfa530')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --with-ca-bundle=/etc/ssl/certs/ca-certificates.crt
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/arj/001_arches_align.patch b/extra/arj/001_arches_align.patch
new file mode 100644
index 000000000..c55d17ec4
--- /dev/null
+++ b/extra/arj/001_arches_align.patch
@@ -0,0 +1,34 @@
+#DPATCHLEVEL=1
+diff -Naur arj-3.10.19.orig/arj_proc.c arj-3.10.19/arj_proc.c
+--- arj-3.10.19.orig/arj_proc.c 2004-02-20 14:18:52.000000000 +0100
++++ arj-3.10.22/arj_proc.c 2004-04-08 14:06:58.000000000 +0200
+@@ -2898,7 +2898,7 @@
+ }
+ #endif
+
+-#if defined(WORDS_BIGENDIAN)&&!defined(ARJDISP)&&!defined(REGISTER)
++#if (defined(WORDS_BIGENDIAN) || defined(ALIGN_POINTERS)) && !defined(ARJDISP) && !defined(REGISTER)
+ /* Model-independent routine to get 2 bytes from far RAM */
+
+ unsigned int mget_word(char FAR *p)
+diff -Naur arj-3.10.19.orig/arj_proc.h arj-3.10.19/arj_proc.h
+--- arj-3.10.19.orig/arj_proc.h 2004-01-25 01:40:00.000000000 +0100
++++ arj-3.10.22/arj_proc.h 2004-04-08 14:07:18.000000000 +0200
+@@ -12,7 +12,7 @@
+
+ #define mget_byte(p) (*(unsigned char FAR *)(p)&0xFF)
+ #define mput_byte(c, p) *(unsigned char FAR *)(p)=(unsigned char)(c)
+-#ifndef WORDS_BIGENDIAN
++#if !defined(ALIGN_POINTERS) && !defined(WORDS_BIGENDIAN)
+ #define mget_word(p) (*(unsigned short *)(p)&0xFFFF)
+ #define mput_word(w,p) (*(unsigned short *)(p)=(unsigned short)(w))
+ #define mget_dword(p) (*(unsigned long *)(p))
+@@ -60,7 +60,7 @@
+ void unpack_mem(struct mempack *mempack);
+ void strip_lf(char *str);
+ char *ltrim(char *str);
+-#ifdef WORDS_BIGENDIAN
++#if defined(ALIGN_POINTERS) || defined(WORDS_BIGENDIAN)
+ unsigned int mget_word(char FAR *p);
+ unsigned long mget_dword(char FAR *p);
+ void mput_word(unsigned int w, char FAR *p);
diff --git a/extra/arj/002_no_remove_static_const.patch b/extra/arj/002_no_remove_static_const.patch
new file mode 100644
index 000000000..3656ba504
--- /dev/null
+++ b/extra/arj/002_no_remove_static_const.patch
@@ -0,0 +1,20 @@
+#DPATCHLEVEL=1
+diff -Naur arj-3.10.22.orig/gnu/makefile.in arj-3.10.22/gnu/makefile.in
+--- arj-3.10.22.orig/gnu/makefile.in 2004-04-17 14:28:06.000000000 +0300
++++ arj-3.10.22/gnu/makefile.in 2005-08-04 21:50:24.000000000 +0300
+@@ -192,6 +192,15 @@
+ dispose:
+
+ #
++# XXX: Do not use -O2, it removes the static const variable with gcc 4.x
++#
++
++INTEGR_DIRS = $(ARJ_DIR) $(REARJ_DIR) $(ARJCRYPT_DIR) $(REGISTER_DIR)
++
++$(patsubst %,%/integr.o, $(INTEGR_DIRS)): $(SRC_DIR)/integr.c
++ $(CC) -Wall -g -c -o$@ $<
++
++#
+ # The tools
+ #
+
diff --git a/extra/arj/003_64_bit_clean.patch b/extra/arj/003_64_bit_clean.patch
new file mode 100644
index 000000000..7cd602ea5
--- /dev/null
+++ b/extra/arj/003_64_bit_clean.patch
@@ -0,0 +1,194 @@
+#DPATCHLEVEL=1
+diff -Naur -x .svn -x CVS arj-3.10.22.orig/arj_arcv.c arj-3.10.22/arj_arcv.c
+--- arj-3.10.22.orig/arj_arcv.c 2005-06-21 22:53:12.000000000 +0300
++++ arj-3.10.22/arj_arcv.c 2005-11-24 02:50:31.000000000 +0200
+@@ -59,27 +59,27 @@
+ #define setup_hput(ptr) (tmp_hptr=(ptr))
+
+ #define hget_byte() (*(tmp_hptr++)&0xFF)
+-#define hput_byte(c) (*(tmp_hptr++)=(char) (c))
++#define hput_byte(c) (*(tmp_hptr++)=(uint8_t) (c))
+
+ /* Reads two bytes from the header, incrementing the pointer */
+
+-static unsigned int hget_word()
++static uint16_t hget_word()
+ {
+- unsigned int result;
++ uint16_t result;
+
+ result=mget_word(tmp_hptr);
+- tmp_hptr+=sizeof(short);
++ tmp_hptr+=sizeof(uint16_t);
+ return result;
+ }
+
+ /* Reads four bytes from the header, incrementing the pointer */
+
+-static unsigned long hget_longword()
++static uint32_t hget_longword()
+ {
+- unsigned long result;
++ uint32_t result;
+
+ result=mget_dword(tmp_hptr);
+- tmp_hptr+=sizeof(unsigned long);
++ tmp_hptr+=sizeof(uint32_t);
+ return result;
+ }
+
+@@ -87,18 +87,18 @@
+
+ /* Writes two bytes to the header, incrementing the pointer */
+
+-static void hput_word(unsigned int w)
++static void hput_word(uint16_t w)
+ {
+ mput_word(w,tmp_hptr);
+- tmp_hptr+=sizeof(unsigned short);
++ tmp_hptr+=sizeof(uint16_t);
+ }
+
+ /* Writes four bytes to the header, incrementing the pointer */
+
+-static void hput_longword(unsigned long l)
++static void hput_longword(uint32_t l)
+ {
+ mput_dword(l,tmp_hptr);
+- tmp_hptr+=sizeof(unsigned long);
++ tmp_hptr+=sizeof(uint32_t);
+ }
+
+ /* Calculates and stores the basic header size */
+diff -Naur -x .svn -x CVS arj-3.10.22.orig/arj_proc.c arj-3.10.22/arj_proc.c
+--- arj-3.10.22.orig/arj_proc.c 2005-11-24 02:50:19.000000000 +0200
++++ arj-3.10.22/arj_proc.c 2005-11-24 02:50:31.000000000 +0200
+@@ -585,7 +585,7 @@
+ /* Returns the exact amount of data that could be safely written to the
+ destination volume */
+
+-unsigned long get_volfree(unsigned int increment)
++unsigned long get_volfree(unsigned long increment)
+ {
+ unsigned long pvol;
+ unsigned int arjsec_overhead;
+@@ -605,7 +605,7 @@
+ remain=volume_limit-ftell(aostream)-pvol-(long)arjsec_overhead-
+ (long)out_bytes-(long)cpos-(long)ext_voldata-
+ MULTIVOLUME_RESERVE-t_volume_offset;
+- return((unsigned long)min(remain, (unsigned long)increment));
++ return((unsigned long)min(remain, increment));
+ }
+
+ /* Performs various checks when multivolume data is packed to predict an
+@@ -2466,14 +2466,14 @@
+ *tsptr='\0';
+ endptr=tsptr;
+ tsptr=sptr;
+- while((unsigned int)tsptr<(unsigned int)endptr&&patterns<SEARCH_STR_MAX)
++ while((intptr_t)tsptr<(intptr_t)endptr&&patterns<SEARCH_STR_MAX)
+ {
+ while(*tsptr=='\0')
+ tsptr++;
+- if((unsigned int)tsptr<(unsigned int)endptr)
++ if((intptr_t)tsptr<(intptr_t)endptr)
+ {
+ search_str[patterns++]=tsptr;
+- while(*tsptr!='\0'&&(unsigned int)tsptr<(unsigned int)endptr)
++ while(*tsptr!='\0'&&(intptr_t)tsptr<(intptr_t)endptr)
+ tsptr++;
+ }
+ }
+@@ -2901,9 +2901,9 @@
+ #if (defined(WORDS_BIGENDIAN) || defined(ALIGN_POINTERS)) && !defined(ARJDISP) && !defined(REGISTER)
+ /* Model-independent routine to get 2 bytes from far RAM */
+
+-unsigned int mget_word(char FAR *p)
++uint16_t mget_word(char FAR *p)
+ {
+- unsigned int b0, b1;
++ uint16_t b0, b1;
+
+ b0=mget_byte(p);
+ b1=mget_byte(p+1);
+@@ -2912,9 +2912,9 @@
+
+ /* Model-independent routine to get 4 bytes from far RAM */
+
+-unsigned long mget_dword(char FAR *p)
++uint32_t mget_dword(char FAR *p)
+ {
+- unsigned long w0, w1;
++ uint32_t w0, w1;
+
+ w0=mget_word(p);
+ w1=mget_word(p+2);
+@@ -2923,7 +2923,7 @@
+
+ /* Model-independent routine to store 2 bytes in far RAM */
+
+-void mput_word(unsigned int w, char FAR *p)
++void mput_word(uint16_t w, char FAR *p)
+ {
+ mput_byte(w&0xFF, p);
+ mput_byte(w>>8 , p+1);
+@@ -2931,7 +2931,7 @@
+
+ /* Model-independent routine to store 4 bytes in far RAM */
+
+-void mput_dword(unsigned long d, char FAR *p)
++void mput_dword(uint32_t d, char FAR *p)
+ {
+ mput_word(d&0xFFFF, p);
+ mput_word(d>>16 , p+2);
+diff -Naur -x .svn -x CVS arj-3.10.22.orig/arj_proc.h arj-3.10.22/arj_proc.h
+--- arj-3.10.22.orig/arj_proc.h 2005-11-24 02:50:19.000000000 +0200
++++ arj-3.10.22/arj_proc.h 2005-11-24 03:17:25.000000000 +0200
+@@ -8,15 +8,17 @@
+ #ifndef ARJ_PROC_INCLUDED
+ #define ARJ_PROC_INCLUDED
+
++#include <stdint.h>
++
+ /* Helper macros */
+
+-#define mget_byte(p) (*(unsigned char FAR *)(p)&0xFF)
+-#define mput_byte(c, p) *(unsigned char FAR *)(p)=(unsigned char)(c)
++#define mget_byte(p) (*(uint8_t FAR *)(p)&0xFF)
++#define mput_byte(c, p) *(uint8_t FAR *)(p)=(uint8_t)(c)
+ #if !defined(ALIGN_POINTERS) && !defined(WORDS_BIGENDIAN)
+-#define mget_word(p) (*(unsigned short *)(p)&0xFFFF)
+-#define mput_word(w,p) (*(unsigned short *)(p)=(unsigned short)(w))
+-#define mget_dword(p) (*(unsigned long *)(p))
+-#define mput_dword(w,p) (*(unsigned long *)(p)=(unsigned long)(w))
++#define mget_word(p) (*(uint16_t *)(p)&0xFFFF)
++#define mput_word(w,p) (*(uint16_t *)(p)=(uint16_t)(w))
++#define mget_dword(p) (*(uint32_t *)(p))
++#define mput_dword(w,p) (*(uint32_t *)(p)=(uint32_t)(w))
+ #endif
+
+ /* Prototypes */
+@@ -31,7 +33,7 @@
+ int translate_path(char *name);
+ void restart_proc(char *dest);
+ int search_for_extension(char *name, char *ext_list);
+-unsigned long get_volfree(unsigned int increment);
++unsigned long get_volfree(unsigned long increment);
+ unsigned int check_multivolume(unsigned int increment);
+ void store();
+ void hollow_encode();
+@@ -61,10 +63,10 @@
+ void strip_lf(char *str);
+ char *ltrim(char *str);
+ #if defined(ALIGN_POINTERS) || defined(WORDS_BIGENDIAN)
+-unsigned int mget_word(char FAR *p);
+-unsigned long mget_dword(char FAR *p);
+-void mput_word(unsigned int w, char FAR *p);
+-void mput_dword(unsigned long d, char FAR *p);
++uint16_t mget_word(char FAR *p);
++uint32_t mget_dword(char FAR *p);
++void mput_word(uint16_t w, char FAR *p);
++void mput_dword(uint32_t d, char FAR *p);
+ #endif
+
+ #endif
diff --git a/extra/arj/PKGBUILD b/extra/arj/PKGBUILD
new file mode 100644
index 000000000..34012adae
--- /dev/null
+++ b/extra/arj/PKGBUILD
@@ -0,0 +1,54 @@
+# $Id: PKGBUILD 49803 2009-08-16 14:37:35Z jgc $
+# Maintainer: Travis Willard <travisw@wmpub.ca>
+# Contributor: Gergely Tamas <dice@mfa.kfki.hu>
+
+pkgname=arj
+pkgver=3.10.22
+pkgrel=5
+pkgdesc="Free and portable clone of the ARJ archiver"
+url="http://arj.sourceforge.net/"
+arch=('i686' 'x86_64')
+license=('GPL')
+depends=('glibc')
+makedepends=('autoconf')
+options=(!makeflags)
+source=(http://downloads.sourceforge.net/sourceforge/arj/$pkgname-$pkgver.tar.gz
+ 001_arches_align.patch
+ 002_no_remove_static_const.patch
+ 003_64_bit_clean.patch
+ arj-3.10.22-custom-printf.patch)
+md5sums=('f263bf3cf6d42a8b7e85b4fb514336d3'
+ '550bc972d825036f17f202a2b11b35c2'
+ '395dfa8cc500ffae648777f8f241be88'
+ '56b3cf96ec485b0d824761457417fcc0'
+ '4630a7254dfc6c8d8c7e696aa4a58f4a')
+sha1sums=('e8470f480e9eee14906e5485a8898e5c24738c8b'
+ '7f8904f8c89bacbbeec8c431d627efbb8da2f259'
+ '919a3c02a1e039803502c21175d69f7703d13026'
+ 'd506338e34b40ef5cac6ec14c858fd651a354aaf'
+ '4c9481a4b196c4f56fb44fcd3b9362222d6cbe58')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ # Add gentoo patches
+ patch -Np1 -i "${srcdir}/001_arches_align.patch" || return 1
+ patch -Np1 -i "${srcdir}/002_no_remove_static_const.patch" || return 1
+ patch -Np1 -i "${srcdir}/003_64_bit_clean.patch" || return 1
+ patch -Np1 -i "${srcdir}/arj-3.10.22-custom-printf.patch" || return 1
+
+ # Build!
+ cd gnu
+ aclocal || return 1
+ autoconf || return 1
+ rm -f config.{guess,sub}
+ _autover=$(automake --version | head -n1 | awk '{ print $4 }')
+ cp /usr/share/automake-${_autover}/config.{guess,sub} . || return 1
+ ./configure --prefix=/usr || return 1
+ cd ..
+ make prepare || return 1
+ make || return 1
+
+ # Install!
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/arj/arj-3.10.22-custom-printf.patch b/extra/arj/arj-3.10.22-custom-printf.patch
new file mode 100644
index 000000000..b789dd5c7
--- /dev/null
+++ b/extra/arj/arj-3.10.22-custom-printf.patch
@@ -0,0 +1,15 @@
+Patch by Lubomir Rintel <lkundrak@v3.sk> for arj >= 3.10.22, which disables
+the custom printf to avoid conflicting strnlen definition with the glibc
+headers. By using custom printf (as in the past), we're completely loosing
+all the _FORTIFY_SOURCE printf protections.
+
+--- arj-3.10.22/fardata.c 2004-04-17 13:39:42.000000000 +0200
++++ arj-3.10.22/fardata.c.printf 2009-04-18 16:23:52.000000000 +0200
+@@ -13,7 +13,6 @@
+ /* ASR fix 02/05/2003: need that regardless of COLOR_OUTPUT to support -jp
+ correctly */
+ #if SFX_LEVEL>=ARJ
+- #define CUSTOM_PRINTF
+ #define CHUNK_SIZE 512 /* Size of the output block */
+ #define CHUNK_THRESHOLD (CHUNK_SIZE-256) /* Safety bound */
+ #endif
diff --git a/extra/arora/PKGBUILD b/extra/arora/PKGBUILD
new file mode 100644
index 000000000..9bcf87b01
--- /dev/null
+++ b/extra/arora/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 110242 2011-02-18 07:44:40Z andrea $
+# Maintainer:
+# Contributor: Pierre Schmitz <pierre@archlinux.de>
+# Contributor: Daniel J Griffiths <ghost1227@archlinux.us>
+
+pkgname=arora
+pkgver=0.11.0
+pkgrel=2
+pkgdesc='A cross platform web browser built using Qt and WebKit'
+arch=('i686' 'x86_64')
+url='http://www.arora-browser.org'
+license=('GPL')
+depends=('qt' 'desktop-file-utils')
+install='arora.install'
+source=("http://arora.googlecode.com/files/arora-${pkgver}.tar.gz")
+md5sums=('64334ce4198861471cad9316d841f0cb')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ qmake PREFIX="/usr" "CONFIG-=debug" -r
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ make INSTALL_ROOT=${pkgdir} install
+}
diff --git a/extra/arora/arora.install b/extra/arora/arora.install
new file mode 100644
index 000000000..5787df72f
--- /dev/null
+++ b/extra/arora/arora.install
@@ -0,0 +1,12 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+ update-desktop-database -q
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/extra/asio/PKGBUILD b/extra/asio/PKGBUILD
new file mode 100644
index 000000000..add8358e0
--- /dev/null
+++ b/extra/asio/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 115985 2011-03-22 15:04:08Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Aaron Griffin <aaron@archlinux.org>
+
+pkgname=asio
+pkgver=1.4.8
+pkgrel=1
+pkgdesc="Cross-platform C++ library for ASynchronous network I/O"
+arch=('i686' 'x86_64')
+url="http://asio.sourceforge.net"
+license=('custom')
+depends=('boost')
+source=("http://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.bz2")
+md5sums=('bc2ca8ea37892870d194421154df122f')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ make DESTDIR=${pkgdir} install
+ #license
+ install -D -m644 LICENSE_1_0.txt "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+}
diff --git a/extra/aspell-de/PKGBUILD b/extra/aspell-de/PKGBUILD
new file mode 100644
index 000000000..4e2c6febf
--- /dev/null
+++ b/extra/aspell-de/PKGBUILD
@@ -0,0 +1,41 @@
+# $Id: PKGBUILD 116607 2011-03-24 12:52:36Z andrea $
+# Maintainer:
+# Contributor: Simo Leone <simo@archlinux.org>
+# Contributor: Tobias Kieslich <tobias@justdreams.de>
+
+pkgname=aspell-de
+pkgver=20100727
+pkgrel=3
+pkgdesc="German dictionary for aspell"
+arch=('i686' 'x86_64')
+url="http://j3e.de/ispell/igerman98/index.html"
+license=('GPL2')
+depends=('aspell')
+source=(http://j3e.de/ispell/igerman98/dict/igerman98-${pkgver}.tar.bz2)
+md5sums=('53a66eccaf15fa92d4e5085e7938ee69')
+sha1sums=('7cfde06b3086b03b9d400998a7254598a5b72564')
+
+build() {
+ cd "${srcdir}/igerman98-${pkgver}"
+
+ LANGS="de_DE de_AT de_CH"
+ for l in ${LANGS}; do
+ make aspell/${l}.rws
+ done
+}
+
+package() {
+ cd "${srcdir}/igerman98-${pkgver}/aspell"
+
+ install -d "${pkgdir}/usr/lib/aspell-0.60"
+
+ LANGS="de_DE de_AT de_CH"
+ for l in ${LANGS}; do
+ install -m644 ${l}.alias ${l}.dat ${l}_affix.dat ${l}.multi ${l}.rws \
+ "${pkgdir}/usr/lib/aspell-0.60/"
+ done
+
+ echo "add de_DE.multi" > "${pkgdir}/usr/lib/aspell-0.60/deutsch.alias"
+ echo "add de_DE.multi" > "${pkgdir}/usr/lib/aspell-0.60/german.alias"
+ echo "add de_CH.multi" > "${pkgdir}/usr/lib/aspell-0.60/swiss.alias"
+}
diff --git a/extra/aspell-en/PKGBUILD b/extra/aspell-en/PKGBUILD
new file mode 100644
index 000000000..6ac72bed5
--- /dev/null
+++ b/extra/aspell-en/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 109832 2011-02-13 04:35:52Z eric $
+
+pkgname=aspell-en
+pkgver=7.1
+pkgrel=1
+pkgdesc="English dictionary for aspell"
+arch=('i686' 'x86_64')
+url="http://aspell.net/"
+license=('custom')
+depends=('aspell')
+source=(ftp://ftp.gnu.org/gnu/aspell/dict/en/aspell6-en-$pkgver-0.tar.bz2)
+md5sums=('beba5e8f3afd3ed1644653bb685b2dfb')
+sha1sums=('d45ccda0c03e2a679c2936487ec851a1896b8150')
+
+build() {
+ cd "$srcdir/aspell6-en-$pkgver-0"
+ ./configure
+ make
+}
+
+package() {
+ cd "$srcdir/aspell6-en-$pkgver-0"
+ make DESTDIR="$pkgdir" install
+
+ install -D -m644 Copyright "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
+}
diff --git a/extra/aspell-es/PKGBUILD b/extra/aspell-es/PKGBUILD
new file mode 100644
index 000000000..81a93400e
--- /dev/null
+++ b/extra/aspell-es/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 116610 2011-03-24 12:57:43Z andrea $
+# Maintainer:
+# Contributor: Simo Leone <simo@archlinux.org>
+# Contributor: Juan Pablo León <jp_leon@gmx.net>
+
+pkgname=aspell-es
+pkgver=1.11
+pkgrel=4
+pkgdesc="Spanish dictionary for aspell"
+arch=('i686' 'x86_64')
+url="http://aspell.net/"
+license=('GPL')
+depends=('aspell')
+source=(ftp://ftp.gnu.org/gnu/aspell/dict/es/aspell6-es-$pkgver-2.tar.bz2)
+md5sums=('8406336a89c64e47e96f4153d0af70c4')
+
+build() {
+ cd $srcdir/aspell6-es-$pkgver-2
+ ./configure
+ make
+}
+
+package() {
+ cd $srcdir/aspell6-es-$pkgver-2
+ make DESTDIR=$pkgdir install
+}
diff --git a/extra/aspell-fr/PKGBUILD b/extra/aspell-fr/PKGBUILD
new file mode 100644
index 000000000..ef91b7513
--- /dev/null
+++ b/extra/aspell-fr/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 116613 2011-03-24 13:03:29Z andrea $
+# Maintainer:
+# Contributor: Simo Leone <simo@archlinux.org>
+# Contributor: Eric Johnson <eric@coding-zone.com>
+
+pkgname=aspell-fr
+pkgver=0.50.3
+pkgrel=5
+pkgdesc="French dictionary for aspell"
+arch=('i686' 'x86_64')
+url="http://aspell.net/"
+license=('GPL')
+depends=('aspell')
+source=(ftp://ftp.gnu.org/gnu/aspell/dict/fr/$pkgname-0.50-3.tar.bz2)
+md5sums=('53a2d05c4e8f7fabd3cefe24db977be7')
+
+build() {
+ cd $srcdir/$pkgname-0.50-3
+ ./configure
+ make
+}
+
+package() {
+ cd $srcdir/$pkgname-0.50-3
+ make DESTDIR=$pkgdir install
+}
diff --git a/extra/aspell-hu/PKGBUILD b/extra/aspell-hu/PKGBUILD
new file mode 100644
index 000000000..748f3b129
--- /dev/null
+++ b/extra/aspell-hu/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 116616 2011-03-24 13:05:39Z andrea $
+# Maintainer:
+# Contributor: György Balló <ballogy@freestart.hu>
+
+pkgname=aspell-hu
+pkgver=0.99.4.2
+pkgrel=2
+pkgdesc="Hungarian spellcheck dictionary for aspell"
+arch=('i686' 'x86_64')
+url="http://aspell.net/"
+license=('GPL')
+depends=('aspell')
+source=("ftp://ftp.gnu.org/gnu/aspell/dict/hu/aspell6-hu-${pkgver}-0.tar.bz2")
+md5sums=('4f4e1e98019a89d0ebf43ec59ae68254')
+
+build() {
+ cd "${srcdir}/aspell6-hu-${pkgver}-0"
+
+ ./configure
+ make
+}
+
+package() {
+ cd "${srcdir}/aspell6-hu-${pkgver}-0"
+
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/aspell-it/PKGBUILD b/extra/aspell-it/PKGBUILD
new file mode 100644
index 000000000..f577080e1
--- /dev/null
+++ b/extra/aspell-it/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 116619 2011-03-24 13:07:52Z andrea $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Eric Johnson <eric@coding-zone.com>
+
+pkgname=aspell-it
+pkgver=2.2_20050523
+pkgrel=3
+pkgdesc="Italian dictionary for aspell"
+arch=('i686' 'x86_64')
+url="http://aspell.net/"
+license=('GPL2')
+depends=('aspell')
+source=(ftp://ftp.gnu.org/gnu/aspell/dict/it/aspell6-it-${pkgver}-0.tar.bz2)
+md5sums=('b1217299a0b67d1e121494d7ec18a88d')
+
+build() {
+ cd "${srcdir}/aspell6-it-${pkgver}-0"
+ ./configure
+ make
+}
+
+package() {
+ cd "${srcdir}/aspell6-it-${pkgver}-0"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/aspell-nl/PKGBUILD b/extra/aspell-nl/PKGBUILD
new file mode 100644
index 000000000..d0bb9a4af
--- /dev/null
+++ b/extra/aspell-nl/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 116622 2011-03-24 13:11:26Z andrea $
+# Maintainer:
+# Contributor: Simo Leone <simo@archlinux.org>
+# Contributor: Tobias Kieslich <tobias@justdreams.de>
+
+pkgname=aspell-nl
+pkgver=0.50.2
+pkgrel=1
+pkgdesc="Dutch dictionary for aspell"
+arch=('i686' 'x86_64')
+url="http://aspell.net/"
+license=('custom')
+depends=('aspell')
+source=(ftp://ftp.gnu.org/gnu/aspell/dict/nl/$pkgname-0.50-2.tar.bz2)
+md5sums=('c3ef9fd7dc4c47d816eee9ef5149c76a')
+
+build() {
+ cd $srcdir/$pkgname-0.50-2
+ ./configure
+ make
+}
+
+package() {
+ cd $srcdir/$pkgname-0.50-2
+ make DESTDIR=$pkgdir install
+
+ install -D -m644 Copyright $pkgdir/usr/share/licenses/$pkgname/LICENSE
+}
diff --git a/extra/aspell-pt/PKGBUILD b/extra/aspell-pt/PKGBUILD
new file mode 100644
index 000000000..6fac241b7
--- /dev/null
+++ b/extra/aspell-pt/PKGBUILD
@@ -0,0 +1,39 @@
+# $Id: PKGBUILD 116625 2011-03-24 13:14:15Z andrea $
+# Maintainer:
+# Contributor: Simo Leone <simo@archlinux.org>
+# Contributor: jlvsimoes <jlvsimoes@oninet.pt>
+
+pkgname=aspell-pt
+_pkgverPT=20070510
+_pkgverBR=20090702
+pkgver=$_pkgverBR
+pkgrel=2
+pkgdesc="Portuguese and Brazilian Portuguese dictionary for aspell"
+arch=('i686' 'x86_64')
+url="http://aspell.net/"
+license=('GPL2')
+depends=('aspell')
+conflicts=('aspell-pt_br')
+replaces=('aspell-pt_br')
+source=(ftp://ftp.gnu.org/gnu/aspell/dict/pt_BR/aspell6-pt_BR-$_pkgverBR-0.tar.bz2
+ ftp://ftp.gnu.org/gnu/aspell/dict/pt_PT/aspell6-pt_PT-$_pkgverPT-0.tar.bz2)
+md5sums=('e082a8956882eb94a67c12e1b8c4a324' 'a54267ce8f91de6e6a1baf1e8048cba0')
+sha1sums=('add1db9a6a908dccaad13a7fd85c3b202299ff26' 'e136c2f411b582897437b06b9068c98ee333be41')
+
+build() {
+ cd "$srcdir/aspell6-pt_BR-$_pkgverBR-0"
+ ./configure
+ make
+
+ cd "$srcdir/aspell6-pt_PT-$_pkgverPT-0"
+ ./configure
+ make
+}
+
+package() {
+ cd "$srcdir/aspell6-pt_BR-$_pkgverBR-0"
+ make DESTDIR="$pkgdir" install
+
+ cd "$srcdir/aspell6-pt_PT-$_pkgverPT-0"
+ make DESTDIR="$pkgdir" install
+}
diff --git a/extra/aspell-ru/PKGBUILD b/extra/aspell-ru/PKGBUILD
new file mode 100644
index 000000000..23b286b01
--- /dev/null
+++ b/extra/aspell-ru/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 106233 2011-01-15 15:11:50Z andrea $
+# Maintainer:
+# Contributor: Simo Leone <simo@archlinux.org>
+# Contributor: Rouslan Solomakhin <rouslan@localnet.com>
+
+pkgname=aspell-ru
+pkgver=0.99f7
+pkgrel=4
+pkgdesc="Russian dictionary for aspell"
+arch=('i686' 'x86_64') #We cannot use 'any' see FS#22443
+url="http://aspell.net/"
+license=('custom')
+depends=('aspell')
+source=(ftp://ftp.gnu.org/gnu/aspell/dict/ru/aspell6-ru-$pkgver-1.tar.bz2)
+md5sums=('c4c98eaa5e77ad3adccbc5c96cb57cb3')
+
+build() {
+ cd $srcdir/aspell6-ru-$pkgver-1
+ ./configure
+ make
+}
+
+package() {
+ cd $srcdir/aspell6-ru-$pkgver-1
+ make DESTDIR=$pkgdir install
+
+ install -D -m644 Copyright $pkgdir/usr/share/licenses/$pkgname/LICENSE
+}
diff --git a/extra/aspell/PKGBUILD b/extra/aspell/PKGBUILD
new file mode 100644
index 000000000..7e224400a
--- /dev/null
+++ b/extra/aspell/PKGBUILD
@@ -0,0 +1,36 @@
+# $Id: PKGBUILD 107951 2011-01-28 03:53:36Z eric $
+# Contributor: Jochem Kossen <j.kossen@home.nl>
+# Contributor: dorphell <dorphell@archlinux.org>
+# Contributor: Thayer Williams <thayer@archlinux.org>
+# Maintainer: Daniel J Griffiths <ghost1227@archlinux.us>
+
+pkgname=aspell
+pkgver=0.60.6
+_pkgmajorver=0.60
+pkgrel=5
+pkgdesc="A spell checker designed to eventually replace Ispell"
+url="http://aspell.net/"
+arch=('i686' 'x86_64')
+license=('LGPL')
+depends=('gcc-libs' 'ncurses>=5.6-7')
+optdepends=('perl: to import old dictionaries')
+options=('!libtool')
+install=aspell.install
+source=(ftp://ftp.gnu.org/gnu/${pkgname}/${pkgname}-${pkgver}.tar.gz)
+md5sums=('bc80f0198773d5c05086522be67334eb')
+sha1sums=('335bcb560e00f59d89ec9e4c4114c325fb0e65f4')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ ./configure --prefix=/usr --sysconfdir=/etc
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ make DESTDIR="${pkgdir}" install
+ ln -s ${pkgname}-${_pkgmajorver} \
+ "${pkgdir}/usr/lib/${pkgname}"
+}
diff --git a/extra/aspell/aspell.install b/extra/aspell/aspell.install
new file mode 100644
index 000000000..5a128ae41
--- /dev/null
+++ b/extra/aspell/aspell.install
@@ -0,0 +1,24 @@
+infodir=/usr/share/info
+filelist=(aspell.info aspell-dev.info)
+
+post_install() {
+ echo "==> aspell comes with no default dictionary"
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
+
+pre_remove() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info --delete $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
diff --git a/extra/asymptote/PKGBUILD b/extra/asymptote/PKGBUILD
new file mode 100644
index 000000000..57bc2bddd
--- /dev/null
+++ b/extra/asymptote/PKGBUILD
@@ -0,0 +1,37 @@
+# $Id: PKGBUILD 110553 2011-02-19 22:20:32Z remy $
+# Maintainer: Rémy Oudompheng <remy@archlinux.org>
+# Contributor: Firmicus <francois.archlinux.org>
+# Contributor: bender02 at gmx dot com
+
+pkgname=asymptote
+pkgver=2.08
+pkgrel=1
+pkgdesc="A vector graphics language (like metapost)"
+arch=('i686' 'x86_64')
+url="http://asymptote.sourceforge.net/"
+license=("GPL3")
+depends=('texlive-core' 'gc' 'freeglut' 'gsl' 'fftw')
+makedepends=('ghostscript' 'imagemagick')
+optdepends=('python2: for the xasy GUI'
+ 'python-imaging: for the xasy GUI'
+ 'tix: for the xasy GUI')
+source=(http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.src.tgz)
+install=texlive.install
+sha1sums=(6b81336727458f7fdcc3db972f1e63b3bfc1a93b)
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ ./configure --enable-gc=/usr \
+ --prefix=/usr \
+ --with-latex=/usr/share/texmf/tex/latex \
+ --with-context=/usr/share/texmf/tex/context
+ make all
+}
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install-all
+ sed -i -e 's@env python@env python2@' ${pkgdir}/usr/share/asymptote/GUI/*.py
+ # this dir contains png files that are already embedded in the pdf documentation:
+ rm -rf ${pkgdir}/usr/share/info/asymptote
+}
diff --git a/extra/asymptote/texlive.install b/extra/asymptote/texlive.install
new file mode 100644
index 000000000..a7e61f209
--- /dev/null
+++ b/extra/asymptote/texlive.install
@@ -0,0 +1,20 @@
+info_dir=usr/share/info
+
+post_install() {
+ install-info ${info_dir}/asy-faq.info.gz ${info_dir}/dir
+ echo ">>> updating the filename database for texlive..."
+ mktexlsr --quiet usr/share/texmf
+}
+
+post_upgrade() {
+ post_install
+}
+
+pre_remove() {
+ install-info --delete ${info_dir}/asy-faq.info.gz ${info_dir}/dir
+}
+
+post_remove() {
+ echo ">>> updating the filename database for texlive..."
+ mktexlsr --quiet usr/share/texmf
+}
diff --git a/extra/at-spi/PKGBUILD b/extra/at-spi/PKGBUILD
new file mode 100644
index 000000000..1efc2cc0c
--- /dev/null
+++ b/extra/at-spi/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 92799 2010-10-01 11:04:27Z allan $
+# Maintainer: Jan de Groot <jan@archlinux.org>
+
+pkgname=at-spi
+pkgver=1.32.0
+pkgrel=2
+pkgdesc="Assistive Technology Service Provider Interface"
+arch=('i686' 'x86_64')
+license=('GPL')
+depends=('libbonobo>=2.32.0' 'libxtst' 'gtk2>=2.22.0' 'gconf>=2.31.91')
+makedepends=('pkgconfig' 'python2' 'intltool' 'libice' 'libsm')
+options=('!libtool' '!emptydirs')
+url="http://www.gnome.org"
+install=at-spi.install
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/1.32/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('cc841dea746413eebadf0710dabec741450b37a06821c34526f505fe9d027039')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-static \
+ --libexecdir=/usr/lib/at-spi
+ make
+ 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 at-spi ${pkgdir}/etc/gconf/schemas/*.schemas
+ rm -f ${pkgdir}/etc/gconf/schemas/*.schemas
+}
diff --git a/extra/at-spi/at-spi.install b/extra/at-spi/at-spi.install
new file mode 100644
index 000000000..b4c75b51c
--- /dev/null
+++ b/extra/at-spi/at-spi.install
@@ -0,0 +1,17 @@
+pkgname=at-spi
+
+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/extra/at-spi2-atk/PKGBUILD b/extra/at-spi2-atk/PKGBUILD
new file mode 100644
index 000000000..2b890258f
--- /dev/null
+++ b/extra/at-spi2-atk/PKGBUILD
@@ -0,0 +1,35 @@
+# $Id: PKGBUILD 98652 2010-11-12 00:22:02Z ibiru $
+# Maintainer: Ionut Biru <ibiru@archlinux.org>
+pkgname=at-spi2-atk
+pkgver=0.4.0
+pkgrel=2
+pkgdesc="A GTK+ module that bridges ATK to D-Bus at-spi"
+arch=('i686' 'x86_64')
+url="http://www.gnome.org"
+license=('GPL2')
+depends=('dbus-core>=1.4.0' 'dbus-glib>=0.92' 'atk>=1.32.0' 'gconf>=2.32.0')
+makedepends=('intltool')
+install=at-spi2-atk.install
+options=('!libtool')
+source=(http://download.gnome.org/sources/${pkgname}/0.4/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('2e2308cd67fe256e08085e499808f6e41b8d4967d91831ff7f25953898fc5b46')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --disable-schemas-install
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ make DESTDIR="${pkgdir}" install
+
+ install -m755 -d "${pkgdir}/usr/share/gconf/schemas"
+ gconf-merge-schema "${pkgdir}/usr/share/gconf/schemas/${pkgname}.schemas" --domain at-spi2-atk ${pkgdir}/etc/gconf/schemas/*.schemas
+ rm -f ${pkgdir}/etc/gconf/schemas/*.schemas
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/extra/at-spi2-atk/at-spi2-atk.install b/extra/at-spi2-atk/at-spi2-atk.install
new file mode 100644
index 000000000..c0df41a2a
--- /dev/null
+++ b/extra/at-spi2-atk/at-spi2-atk.install
@@ -0,0 +1,17 @@
+pkgname=at-spi2-atk
+
+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/extra/at-spi2-core/PKGBUILD b/extra/at-spi2-core/PKGBUILD
new file mode 100644
index 000000000..73239a514
--- /dev/null
+++ b/extra/at-spi2-core/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 98644 2010-11-12 00:18:31Z ibiru $
+# Maintainer: Ionut Biru <ibiru@archlinux.org>
+pkgname=at-spi2-core
+pkgver=0.4.0
+pkgrel=2
+pkgdesc="Protocol definitions and daemon for D-Bus at-spi"
+arch=('i686' 'x86_64')
+url="http://www.gnome.org"
+license=('GPL2')
+depends=('dbus-core>=1.4.0' 'dbus-glib>=0.92' 'libxtst' 'libxevie')
+source=(http://download.gnome.org/sources/${pkgname}/0.4/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('a579b628cc8c6036c3a57dabed89e2bffb61df1af011bddae68b5d3a9279a66c')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --libexecdir=/usr/lib/at-spi2-core
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ make DESTDIR="${pkgdir}" install
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/extra/at/PKGBUILD b/extra/at/PKGBUILD
new file mode 100644
index 000000000..a5ddc81e5
--- /dev/null
+++ b/extra/at/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 67220 2010-02-04 22:36:24Z giovanni $
+# Maintainer: Judd Vinet <jvinet@zeroflux.org>
+# Contributor: Todd Musall <tmusall@comcast.net>
+
+pkgname=at
+pkgver=3.1.12
+pkgrel=1
+pkgdesc="AT and batch delayed command scheduling utility and daemon."
+arch=('i686' 'x86_64')
+url="http://www.debian.org"
+license=('GPL')
+depends=('pam')
+makedepends=('ssmtp')
+backup=('etc/at.deny')
+source=(http://ftp.debian.org/debian/pool/main/a/at/at_${pkgver}.orig.tar.gz
+ atd)
+md5sums=('1e67991776148fb319fd77a2e599a765'
+ '35574e34829e7df07a3269d4ab646a29')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ ./configure --prefix=/usr \
+ --mandir=/usr/share/man \
+ --with-jobdir=/var/spool/atd \
+ --with-atspool=/var/spool/atd || return 1
+ make || return 1
+ make IROOT="${pkgdir}" docdir=/usr/share/doc install || return 1
+ install -D -m755 ${srcdir}/atd "${pkgdir}/etc/rc.d/atd" || return 1
+}
diff --git a/extra/at/atd b/extra/at/atd
new file mode 100644
index 000000000..d10a46a3b
--- /dev/null
+++ b/extra/at/atd
@@ -0,0 +1,35 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+PID=`pidof -o %PPID /usr/sbin/atd`
+case "$1" in
+ start)
+ stat_busy "Starting ATD Daemon"
+ [ -z "$PID" ] && /usr/sbin/atd
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon atd
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping ATD Daemon"
+ [ ! -z "$PID" ] && kill $PID &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon atd
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
diff --git a/extra/aterm/ChangeLog b/extra/aterm/ChangeLog
new file mode 100644
index 000000000..f099aa027
--- /dev/null
+++ b/extra/aterm/ChangeLog
@@ -0,0 +1,6 @@
+2009-07-28 Eric Belanger <eric@archlinux.org>
+
+ * aterm 1.0.1-2
+ * FHS man pages
+ * Added libxt makedepends
+ * Added ChangeLog
diff --git a/extra/aterm/PKGBUILD b/extra/aterm/PKGBUILD
new file mode 100644
index 000000000..f68bb3065
--- /dev/null
+++ b/extra/aterm/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 47932 2009-07-29 18:24:49Z eric $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=aterm
+pkgver=1.0.1
+pkgrel=2
+pkgdesc="An xterm replacement with transparency support"
+arch=('i686' 'x86_64')
+url="http://aterm.sourceforge.net/"
+license=('GPL')
+depends=('libxext' 'libsm')
+makedepends=('libxt')
+source=(http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('c2eede028e1011e0ec7035cf319c9b5a')
+sha1sums=('a975753b415306a0734efc3773de8a86129bb54b')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --enable-transparency=yes \
+ --enable-background-image --enable-fading --enable-menubar \
+ --enable-graphics || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/atk/PKGBUILD b/extra/atk/PKGBUILD
new file mode 100644
index 000000000..372fb19bc
--- /dev/null
+++ b/extra/atk/PKGBUILD
@@ -0,0 +1,21 @@
+# $Id: PKGBUILD 91408 2010-09-27 08:07:52Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+pkgname=atk
+pkgver=1.32.0
+pkgrel=1
+pkgdesc="A library providing a set of interfaces for accessibility"
+arch=(i686 x86_64)
+license=('LGPL')
+depends=('glib2>=2.25.17')
+makedepends=('pkgconfig' 'gobject-introspection')
+options=('!libtool')
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/1.32/${pkgname}-${pkgver}.tar.bz2)
+url='http://www.gtk.org/'
+sha256sums=('e9a3e598f75c4db1af914f8b052dd9f7e89e920a96cc187c18eb06b8339cb16e')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/atkmm/PKGBUILD b/extra/atkmm/PKGBUILD
new file mode 100644
index 000000000..9c484f6bf
--- /dev/null
+++ b/extra/atkmm/PKGBUILD
@@ -0,0 +1,35 @@
+# $Id: PKGBUILD 79583 2010-05-04 15:21:15Z ibiru $
+# Maintainer: Jan "heftig" Steffens <jan.steffens@gmail.com>
+
+pkgbase=atkmm
+pkgname=(atkmm atkmm-docs)
+pkgver=2.22.2
+pkgrel=1
+arch=('i686' 'x86_64')
+makedepends=('atk>=1.32.0' 'glibmm>=2.24.2' 'glibmm-docs>=2.24.2' 'libsigc++')
+license=('LGPL')
+options=('!libtool' '!emptydirs')
+url="http://gtkmm.sourceforge.net/"
+source=(http://ftp.gnome.org/pub/GNOME/sources/${pkgbase}/2.22/${pkgbase}-${pkgver}.tar.bz2)
+sha256sums=('b94666ae0acebea53241fa0b2444468ff66e8a7790dfc7491489a9ad2eeefa34')
+
+build() {
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+}
+
+package_atkmm() {
+ pkgdesc="C++ bindings for atk"
+ depends=('atk>=1.32.0' 'glibmm>=2.24.2' 'libsigc++')
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ sed -i -e 's/^doc_subdirs/#doc_subdirs/' Makefile
+ make DESTDIR="${pkgdir}" install
+}
+
+package_atkmm-docs() {
+ pkgdesc="Developer documentation for atkmm"
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ make -C doc DESTDIR="${pkgdir}" install
+}
diff --git a/extra/attica/PKGBUILD b/extra/attica/PKGBUILD
new file mode 100644
index 000000000..66000ef1f
--- /dev/null
+++ b/extra/attica/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id$
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+
+pkgname=attica
+pkgver=0.2.0
+pkgrel=1
+pkgdesc='A library to access Open Collaboration Service providers'
+arch=('i686' 'x86_64')
+url='http://www.kde.org'
+license=('LGPL')
+depends=('qt')
+makedepends=('cmake')
+source=("http://download.kde.org/stable/${pkgname}/${pkgname}-${pkgver}.tar.bz2")
+md5sums=('df3dcea0229cfa31539bdd427976e15b')
+
+build() {
+ cd ${srcdir}
+ mkdir build
+ cd build
+ cmake ../${pkgname}-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=/usr
+ make
+}
+
+package() {
+ cd ${srcdir}/build
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/aubio/PKGBUILD b/extra/aubio/PKGBUILD
new file mode 100644
index 000000000..4d9498afb
--- /dev/null
+++ b/extra/aubio/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 12257 2008-09-12 03:03:42Z eric $
+# Maintainer: Tobias Kieslich tobias [funnychar] archlinux org
+# AUR-Maintainer: Andrea Scarpino <bash.lnx@gmail.com>
+# Contributor: Peter Baldwin <bald_pete@hotmail.com>
+# Contributor: Shinlun Hsieh <yngwiexx@yahoo.com.tw>
+
+pkgname=aubio
+pkgver=0.3.2
+pkgrel=3
+pkgdesc="A library for audio labelling"
+arch=('i686' 'x86_64')
+url="http://aubio.piem.org/"
+license=('GPL')
+depends=('libsamplerate' 'fftw' 'jack-audio-connection-kit')
+options=('!libtool')
+source=(http://aubio.piem.org/pub/${pkgname}-${pkgver}.tar.gz)
+md5sums=('ffc3e5e4880fec67064f043252263a44')
+
+build() {
+ cd ${startdir}/src/${pkgname}-${pkgver}
+ ./configure --prefix=/usr
+ make || return 1
+ make DESTDIR=${startdir}/pkg install
+}
diff --git a/extra/audacious/PKGBUILD b/extra/audacious/PKGBUILD
new file mode 100644
index 000000000..7fd520906
--- /dev/null
+++ b/extra/audacious/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 111201 2011-02-24 23:45:10Z bisson $
+# Contributor: Alexander Fehr <pizzapunk gmail com>
+# Contributor: Giovanni Scafora <giovanni@archlinux.org>
+
+pkgname=audacious
+pkgver=2.4.4
+pkgrel=1
+pkgdesc='Lightweight, GTK2-based advanced audio player focused on audio quality'
+arch=('i686' 'x86_64')
+url='http://audacious-media-player.org/'
+license=('GPL3')
+depends=('gtk2' 'libmcs' 'dbus-glib' 'libguess' 'audacious-plugins' 'desktop-file-utils' 'hicolor-icon-theme')
+optdepends=('unzip: zipped skins support')
+provides=('audacious-player')
+replaces=('audacious-player')
+install=audacious.install
+source=("http://distfiles.atheme.org/$pkgname-$pkgver.tgz")
+sha1sums=('697b2cc217cef9785cf7ec0c4ee617bc174fbe98')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ [[ $CARCH == x86_64 ]] && extraopts='' || extraopts='--disable-sse2'
+ ./configure --prefix=/usr $extraopts
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make DESTDIR="$pkgdir" install
+}
diff --git a/extra/audacious/audacious.install b/extra/audacious/audacious.install
new file mode 100644
index 000000000..c317fbaca
--- /dev/null
+++ b/extra/audacious/audacious.install
@@ -0,0 +1,12 @@
+post_install() {
+ update-desktop-database -q
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/extra/audacity/ChangeLog b/extra/audacity/ChangeLog
new file mode 100644
index 000000000..3482dda5b
--- /dev/null
+++ b/extra/audacity/ChangeLog
@@ -0,0 +1,45 @@
+2010-04-10 Andrea Scarpino <andrea@archlinux.org>
+
+ * audacity 1.3.12-2
+ * fixed soundtouch dependence
+
+2010-04-10 Andrea Scarpino <andrea@archlinux.org>
+
+ * audacity 1.3.12-1
+ * Upstream update
+
+2010-01-23 Eric Belanger <eric@archlinux.org>
+
+ * audacity 1.3.11-1
+ * Upstream update
+
+2009-12-03 Eric Belanger <eric@archlinux.org>
+
+ * audacity 1.3.10-1
+ * Upstream update
+
+2009-09-02 Eric Belanger <eric@archlinux.org>
+
+ * audacity 1.3.9-1
+ * Upstream update
+ * Fixed icon location
+
+2009-07-17 Eric Belanger <eric@archlinux.org>
+
+ * audacity 1.3.8-1
+ * Upstream update
+ * Updated source url
+ * Improved description
+
+2009-01-30 Eric Belanger <eric@archlinux.org>
+
+ * audacity 1.3.7-1
+ * Upstream update
+ * Updated source url
+
+2008-12-07 Eric Belanger <eric@archlinux.org>
+
+ * audacity 1.3.6-2
+ * Added install scriptlet to update mime database (close FS#11398)
+ * Added soundtouch support (close FS#9056)
+ * Added ChangeLog
diff --git a/extra/audacity/PKGBUILD b/extra/audacity/PKGBUILD
new file mode 100644
index 000000000..b91871346
--- /dev/null
+++ b/extra/audacity/PKGBUILD
@@ -0,0 +1,44 @@
+# $Id: PKGBUILD 77505 2010-04-15 00:21:38Z dgriffiths $
+# Contributor: Eric Belanger <eric@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+# Contributor: dorphell <dorphell@archlinux.org>
+# Maintainer: Daniel J Griffiths <ghost1227@archlinux.us>
+
+pkgname=audacity
+pkgver=1.3.12
+pkgrel=3
+pkgdesc="A program that lets you manipulate digital audio waveforms"
+arch=('i686' 'x86_64')
+url="http://audacity.sourceforge.net/"
+license=('GPL')
+depends=('libvorbis' 'libmad' 'libid3tag' 'wxgtk' 'libsamplerate' 'lame'
+ 'shared-mime-info' 'desktop-file-utils' 'redland' 'jack' 'soundtouch')
+makedepends=('zip' 'python' 'pkgconfig')
+options=('!makeflags')
+install=${pkgname}.install
+source=(http://audacity.googlecode.com/files/${pkgname}-minsrc-${pkgver}-beta.tar.bz2
+ audacity-ffmpeg.patch)
+md5sums=('76996fec67181ca82ba191e012518b57'
+ '52cd58c39078d78a96e972df4c3c41f6')
+
+build() {
+ cd ${srcdir}/${pkgname}-src-${pkgver}-beta
+
+ patch -p0 < ${srcdir}/audacity-ffmpeg.patch || return 1
+
+ WX_CONFIG=/usr/bin/wx-config \
+ ./configure --prefix=/usr \
+ --with-portaudio=v19 --with-libsamplerate=system \
+ --without-libresample --with-libmad=system \
+ --with-id3tag=system --with-flac=system \
+ --with-vorbis=system --with-libexpat=system \
+ --with-libsndfile=system --with-soundtouch \
+ --enable-unicode --without-taglib || return 1
+ make || return 1
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-src-${pkgver}-beta
+
+ make DESTDIR=${pkgdir} install || return 1
+}
diff --git a/extra/audacity/audacity-ffmpeg.patch b/extra/audacity/audacity-ffmpeg.patch
new file mode 100644
index 000000000..cf0103c61
--- /dev/null
+++ b/extra/audacity/audacity-ffmpeg.patch
@@ -0,0 +1,31 @@
+--- src/FFmpeg.cpp.original 2010-04-14 14:59:48.000000000 +0200
++++ src/FFmpeg.cpp 2010-04-14 15:25:52.136755669 +0200
+@@ -341,7 +341,7 @@
+ }
+ // Otherwize, resort to extension matching if available
+ else if (fmt1->extensions) {
+- if (FFmpegLibsInst->match_ext(filename, fmt1->extensions)) {
++ if (FFmpegLibsInst->av_match_ext(filename, fmt1->extensions)) {
+ score = 50;
+ }
+ }
+@@ -814,7 +814,7 @@
+ INITDYN(avformat,av_open_input_file);
+ INITDYN(avformat,av_open_input_stream);
+ INITDYN(avformat,get_buffer);
+- INITDYN(avformat,match_ext);
++ INITDYN(avformat,av_match_ext);
+
+ #if FFMPEG_STABLE
+ INITDYN(avformat,av_init_packet);
+--- src/FFmpeg.h.original 2010-04-14 14:59:48.000000000 +0200
++++ src/FFmpeg.h 2010-04-14 15:26:39.932590241 +0200
+@@ -222,7 +222,7 @@
+ AVStream* (*av_new_stream) (AVFormatContext *s, int id);
+ AVFormatContext* (*av_alloc_format_context) (void);
+ AVOutputFormat* (*guess_format) (const char *short_name, const char *filename, const char *mime_type);
+- int (*match_ext) (const char *filename, const char *extensions);
++ int (*av_match_ext) (const char *filename, const char *extensions);
+ int (*av_write_trailer) (AVFormatContext *s);
+ int (*av_interleaved_write_frame) (AVFormatContext *s, AVPacket *pkt);
+ int (*av_write_frame) (AVFormatContext *s, AVPacket *pkt);
diff --git a/extra/audacity/audacity.install b/extra/audacity/audacity.install
new file mode 100644
index 000000000..41f09f887
--- /dev/null
+++ b/extra/audacity/audacity.install
@@ -0,0 +1,12 @@
+post_install() {
+ update-desktop-database -q
+ update-mime-database usr/share/mime &> /dev/null
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ post_install $1
+}
diff --git a/extra/audiofile/PKGBUILD b/extra/audiofile/PKGBUILD
new file mode 100644
index 000000000..70d3364d9
--- /dev/null
+++ b/extra/audiofile/PKGBUILD
@@ -0,0 +1,20 @@
+# $Id: PKGBUILD 78833 2010-04-28 13:14:52Z jgc $
+# Maintainer: dorphell <dorphell@archlinux.org>
+pkgname=audiofile
+pkgver=0.2.7
+pkgrel=1
+pkgdesc="Silicon Graphics Audio File Library"
+arch=('i686' 'x86_64')
+url="http://www.68k.org/~michael/audiofile/"
+license=('LGPL')
+depends=('glibc')
+options=('!libtool')
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/0.2/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('61efd278627415b5468426fc9e52aef32ea0fdac12b56bcdd72734c2ece5945e')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/aufs2-util/PKGBUILD b/extra/aufs2-util/PKGBUILD
new file mode 100644
index 000000000..232c167e7
--- /dev/null
+++ b/extra/aufs2-util/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 107424 2011-01-24 19:08:46Z tpowa $
+# Contributor: Paul Mattal <paul@mattal.com>
+# Maintainer: Paul Mattal <pjmattal@elys.com>
+pkgname=aufs2-util
+pkgver=20110124
+pkgrel=1
+pkgdesc="Another Unionfs Implementation that supports NFS branches"
+arch=('i686' 'x86_64')
+url="http://aufs.sourceforge.net/"
+license=('GPL2')
+depends=('glibc')
+makedepends=('aufs2>=2.6.37_20110124' 'kernel26-headers')
+replaces=('aufs-utils')
+source=("ftp://ftp.archlinux.org/other/${pkgname}/${pkgname}-${pkgver}.tar.gz")
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ make
+}
+
+package() {
+ cd $srcdir/$pkgname-$pkgver
+ make DESTDIR=$pkgdir install
+}
+md5sums=('6272b6f28477bb8bf90ed43e66564e7a')
diff --git a/extra/aufs2-util/create-tarball.sh b/extra/aufs2-util/create-tarball.sh
new file mode 100755
index 000000000..dbd7c50bf
--- /dev/null
+++ b/extra/aufs2-util/create-tarball.sh
@@ -0,0 +1,11 @@
+#!/bin/sh
+GITSNAPSHOT=20110124
+# aufs2 (no -xx) for the latest -rc version.
+git clone http://git.c3sl.ufpr.br/pub/scm/aufs/aufs2-util.git aufs2-util.git
+cd aufs2-util.git
+#git checkout origin/aufs2${AUFS2VERSION}
+git checkout origin/aufs2.1
+cd ..
+rm -rf aufs2-util-${GITSNAPSHOT}
+cp -a aufs2-util.git aufs2-util-${GITSNAPSHOT}
+tar -czf aufs2-util-${GITSNAPSHOT}.tar.gz --exclude=.git aufs2-util-${GITSNAPSHOT}
diff --git a/extra/autogen/PKGBUILD b/extra/autogen/PKGBUILD
new file mode 100644
index 000000000..86b53662c
--- /dev/null
+++ b/extra/autogen/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 54699 2009-10-11 18:34:42Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Arjan Timmerman <arjan@soufly.nl>
+# Contributor: Tor Krill
+
+pkgname=autogen
+pkgver=5.9.9
+pkgrel=1
+pkgdesc="A tool designed to simplify the creation and maintenance of programs that contain large amounts of repetitious text"
+arch=(i686 x86_64)
+url="http://autogen.sourceforge.net/"
+license=('GPL3')
+depends=('guile>=1.8.6' 'libxml2>=2.7.3' 'libtool>=2.2.6a')
+options=('!libtool' '!makeflags')
+install=autogen.install
+source=(http://downloads.sourceforge.net/autogen/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('da6c6185473d8b2d7c83e583f4213018')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/autogen/autogen.install b/extra/autogen/autogen.install
new file mode 100644
index 000000000..181c2567c
--- /dev/null
+++ b/extra/autogen/autogen.install
@@ -0,0 +1,20 @@
+infodir=/usr/share/info
+filelist=(autogen.info autogen.info-1 autogen.info-2)
+
+post_install() {
+ for file in ${filelist[@]}; do
+ install-info $infodir/${file}.gz $infodir/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ for file in ${filelist[@]}; do
+ install-info --delete $infodir/${file}.gz $infodir/dir 2> /dev/null
+ done
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/extra/automoc4/PKGBUILD b/extra/automoc4/PKGBUILD
new file mode 100644
index 000000000..f62279efd
--- /dev/null
+++ b/extra/automoc4/PKGBUILD
@@ -0,0 +1,28 @@
+# $ Id: $
+# Maintainer: Pierre Schmitz <pierre@archlinux.de>
+
+pkgname=automoc4
+pkgver=0.9.88
+pkgrel=1
+pkgdesc="KDE automoc4"
+arch=('i686' 'x86_64')
+url='http://www.kde.org'
+license=('custom')
+depends=('qt>=4.4')
+makedepends=('pkgconfig' 'cmake')
+source=("ftp://ftp.archlinux.org/other/automoc4/automoc4-${pkgver}.tar.bz2")
+md5sums=('adffb45ea2b550f284b1e3455f525176')
+
+build() {
+ cd ${srcdir}
+ mkdir build
+ cd build
+ cmake ../${pkgname}-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=/usr
+ make
+ make DESTDIR=$pkgdir install
+
+ grep -A 21 '^ Copyright' ${srcdir}/${pkgname}-${pkgver}/kde4automoc.cpp > license.txt
+ install -D license.txt ${pkgdir}/usr/share/licenses/automoc4/license.txt
+}
diff --git a/extra/autopano-sift-c/PKGBUILD b/extra/autopano-sift-c/PKGBUILD
new file mode 100644
index 000000000..35a5d7fdc
--- /dev/null
+++ b/extra/autopano-sift-c/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 96768 2010-10-24 16:49:43Z ibiru $
+# Maintainer: Tobias Kieslich <tobias@archlinux.org>
+# Contributor: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Lukas Jirkovsky <l.jirkovsky@gmail.com>
+
+pkgname=autopano-sift-c
+pkgver=2.5.1
+pkgrel=2
+pkgdesc="Identify key feature points within arbitrary images"
+arch=('i686' 'x86_64')
+url="http://hugin.sourceforge.net/"
+license=('GPL2')
+depends=('libxml2' 'libpano13>=2.9.17' 'gcc-libs')
+makedepends=('cmake')
+provides=('autopano-sift')
+conflicts=('autopano-sift')
+replaces=('autopano-sift')
+source=(http://downloads.sourceforge.net/sourceforge/hugin/autopano-sift-C-${pkgver}.tar.gz)
+md5sums=('b9bade07e8c4f2ea383c22a082c260e0')
+
+build() {
+ cd "${srcdir}/autopano-sift-C-${pkgver}"
+
+ cmake -DCMAKE_INSTALL_PREFIX=/usr .
+ make
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/avahi/ChangeLog b/extra/avahi/ChangeLog
new file mode 100644
index 000000000..57984a3b2
--- /dev/null
+++ b/extra/avahi/ChangeLog
@@ -0,0 +1,17 @@
+
+2009-04-23 Douglas Soares de Andrade <douglas@archlinux.org>
+
+ * Updated for i686: 0.6.25
+
+2009-03-21 Eric Belanger <eric@archlinux.org>
+
+ * Added optdepends for avahi-discover (close FS#11250)
+
+2009-01-04 Douglas Soares de Andrade <douglas@archlinux.org>
+
+ * Updated for i686: 0.6.24
+
+2008-07-22 Douglas Soares de Andrade <douglas@archlinux.org>
+
+ * Updated for i686: 0.6.23
+
diff --git a/extra/avahi/PKGBUILD b/extra/avahi/PKGBUILD
new file mode 100644
index 000000000..cc9bf71af
--- /dev/null
+++ b/extra/avahi/PKGBUILD
@@ -0,0 +1,79 @@
+# $Id: PKGBUILD 113561 2011-03-09 18:23:43Z bisson $
+# Contributor: Douglas Soares de Andrade <douglas@archlinux.org>
+# Maintainer: Gaetan Bisson <bisson@archlinux.org>
+
+pkgname=avahi
+pkgver=0.6.29
+pkgrel=1
+pkgdesc='A multicast/unicast DNS-SD framework'
+arch=('i686' 'x86_64')
+url='http://www.avahi.org/'
+license=('LGPL')
+depends=('expat' 'libdaemon' 'glib2' 'dbus' 'libcap' 'gdbm')
+optdepends=('gtk2: avahi-discover-standalone, bshell, bssh, bvnc'
+ 'qt3: qt3 bindings'
+ 'qt: qt bindings'
+ 'pygtk: avahi-bookmarks, avahi-discover'
+ 'twisted: avahi-bookmarks'
+ 'mono: mono bindings'
+ 'dbus-python: avahi-discover'
+ 'nss-mdns: NSS support for mDNS')
+makedepends=('qt' 'qt3' 'pygtk' 'mono' 'intltool' 'dbus-python'
+ 'gtk-sharp-2' 'gobject-introspection')
+backup=(etc/avahi/avahi-daemon.conf etc/avahi/services/{sftp-,}ssh.service)
+install=avahi.install
+conflicts=('howl' 'mdnsresponder')
+provides=('howl' 'mdnsresponder')
+replaces=('howl' 'mdnsresponder')
+options=('!libtool')
+source=(http://www.avahi.org/download/avahi-${pkgver}.tar.gz
+ avahi-daemon-dbus.patch
+ gnome-nettool.png)
+sha1sums=('af13ae6fdb3cd61b2eafa25a108773156d88b362'
+ '41e9f23efa0b5a5f7b0f14a86cfb0677ece84c61'
+ 'cf56387c88aed246b9f435efc182ef44de4d52f3')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ sed -i 's/netdev/network/g' avahi-daemon/avahi-dbus.conf
+ patch -Np0 -i "${srcdir}/avahi-daemon-dbus.patch"
+
+ # pygtk requires python2; make it explicit in case other python are installed: FS#21865
+ PYTHON=python2 \
+ ./configure \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --disable-static \
+ --disable-gtk3 \
+ --disable-monodoc \
+ --disable-doxygen-doc \
+ --disable-xmltoman \
+ --enable-compat-libdns_sd \
+ --enable-compat-howl \
+ --with-distro=archlinux \
+ --with-avahi-priv-access-group=network \
+ --with-autoipd-user=avahi \
+ --with-autoipd-group=avahi \
+ --with-systemdsystemunitdir=/lib/systemd/system # See FS#20999
+
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ make DESTDIR="${pkgdir}" install
+
+ # howl and mdnsresponder compatability
+ cd "${pkgdir}"/usr/include
+ ln -s avahi-compat-libdns_sd/dns_sd.h dns_sd.h
+ ln -s avahi-compat-howl howl
+ cd "${pkgdir}"/usr/lib/pkgconfig
+ ln -s avahi-compat-howl.pc howl.pc
+
+ sed -i '1c #!/usr/bin/python2' "$pkgdir"/usr/bin/avahi-{bookmarks,discover}
+
+ install -D -m 644 "${srcdir}"/gnome-nettool.png "${pkgdir}"/usr/share/pixmaps/gnome-nettool.png
+}
diff --git a/extra/avahi/avahi-daemon-dbus.patch b/extra/avahi/avahi-daemon-dbus.patch
new file mode 100644
index 000000000..a168f0387
--- /dev/null
+++ b/extra/avahi/avahi-daemon-dbus.patch
@@ -0,0 +1,11 @@
+--- initscript/archlinux/avahi-daemon.in 2010-08-17 22:23:46.510293144 +0200
++++ initscript/archlinux/avahi-daemon.in 2010-08-17 22:46:58.110163026 +0200
+@@ -33,6 +35,8 @@
+
+ case "$1" in
+ start)
++ ck_daemon dbus && /etc/rc.d/dbus start
++ modprobe capability &> /dev/null
+ stat_busy "Starting $DESC"
+ $DAEMON -D > /dev/null 2>&1
+ if [ $? -gt 0 ]; then
diff --git a/extra/avahi/avahi.install b/extra/avahi/avahi.install
new file mode 100644
index 000000000..7c75c3dd4
--- /dev/null
+++ b/extra/avahi/avahi.install
@@ -0,0 +1,21 @@
+post_install() {
+ getent group avahi &>/dev/null || groupadd -r -g 84 avahi >/dev/null
+ getent passwd avahi &>/dev/null || useradd -r -u 84 -g avahi -d / -s /bin/false -c avahi avahi >/dev/null
+
+ cat <<EOF
+==> The following daemons may be added to DAEMONS in /etc/rc.conf:
+==> avahi-daemon: the mdns responder, you probably want this.
+==> dbus needs to be running when you start it.
+==> avahi-dnsconfd: daemon used for peer-to-peer automatic dns
+==> configuration on dhcp-less networks.
+
+==> To use some of the client applications you will have to install python.
+==> In addition, pygtk is required for the graphical ones and
+==> twisted for avahi-bookmarks.
+EOF
+}
+
+post_remove() {
+ getent passwd avahi &>/dev/null && userdel avahi >/dev/null
+ getent group avahi &>/dev/null && groupdel avahi >/dev/null
+}
diff --git a/extra/avahi/gnome-nettool.png b/extra/avahi/gnome-nettool.png
new file mode 100644
index 000000000..227d0678a
--- /dev/null
+++ b/extra/avahi/gnome-nettool.png
Binary files differ
diff --git a/extra/avfs/PKGBUILD b/extra/avfs/PKGBUILD
new file mode 100644
index 000000000..a647b1185
--- /dev/null
+++ b/extra/avfs/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id: PKGBUILD 104091 2010-12-28 18:22:31Z kevin $
+# Maintainer: Kevin Piche <kevin@archlinux.org>
+# Contributor: K. Piche <kpiche@rogers.com>
+
+pkgname=avfs
+pkgver=0.9.9
+pkgrel=1
+pkgdesc="A virtual filesystem which enables programs to look inside archived or compressed files, or access remote files"
+arch=(i686 x86_64)
+license=('GPL')
+url="http://avf.sourceforge.net/"
+source=(http://downloads.sourceforge.net/sourceforge/avf/${pkgname}-${pkgver}.tar.bz2)
+options=(!emptydirs !libtool)
+depends=('fuse' 'sh')
+md5sums=('3e0df074188a6c4ed9df082f61cc6bf4')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --enable-library --enable-fuse --disable-static
+ make
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/avidemux/2.5.4_audioDevice.patch b/extra/avidemux/2.5.4_audioDevice.patch
new file mode 100644
index 000000000..9f1dd1e84
--- /dev/null
+++ b/extra/avidemux/2.5.4_audioDevice.patch
@@ -0,0 +1,12 @@
+--- cmake/config.h.cmake.orig 2010-10-29 12:51:05.000000000 -0400
++++ cmake/config.h.cmake 2010-10-29 12:51:48.000000000 -0400
+@@ -76,9 +76,7 @@
+ /* use Nvwa memory leak detector */
+ #cmakedefine FIND_LEAKS
+
+-#if defined(OSS_SUPPORT) || defined (USE_ARTS) || defined(USE_SDL) || defined(__APPLE__) || defined(__WIN32) || defined(ALSA_SUPPORT)
+ #define HAVE_AUDIO
+-#endif
+
+ #define HAVE_ENCODER
+
diff --git a/extra/avidemux/PKGBUILD b/extra/avidemux/PKGBUILD
new file mode 100644
index 000000000..3f34eaf4f
--- /dev/null
+++ b/extra/avidemux/PKGBUILD
@@ -0,0 +1,121 @@
+# $Id: PKGBUILD 117286 2011-03-30 16:57:22Z ibiru $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+
+pkgbase=avidemux
+pkgname=('avidemux-cli' 'avidemux-gtk' 'avidemux-qt')
+pkgver=2.5.4
+pkgrel=4
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://fixounet.free.fr/avidemux/"
+makedepends=('cmake' 'libxslt' 'gtk2' 'qt' 'jack' 'esound' 'libvorbis' 'sdl' 'libxv' \
+ 'alsa-lib' 'lame' 'xvidcore' 'faad2' 'faac' 'x264' 'libsamplerate' \
+ 'opencore-amr' 'yasm' 'mesa' 'libvpx')
+source=(http://downloads.sourceforge.net/avidemux/avidemux_${pkgver}.tar.gz 2.5.4_audioDevice.patch
+ x264.patch)
+md5sums=('b849460f6480df92bfd72d1a3dc288d4'
+ 'ef375051a12c911c6bd8a7bf85b76330'
+ '0d01294b8171a856f718ab8131bea074')
+
+build() {
+ cd "${srcdir}/${pkgbase}_${pkgver}"
+
+ #gcc 4.6 workaround
+ export CXXFLAGS="$CXXFLAGS -fpermissive"
+ patch -p0 < ../2.5.4_audioDevice.patch
+ patch -Np1 -i "${srcdir}/x264.patch"
+ mkdir build
+ cd build
+ cmake -D CMAKE_INSTALL_PREFIX=/usr -D CMAKE_BUILD_TYPE=Release -D CMAKE_SKIP_RPATH=ON -D GTK=1 -D QT4=1 ..
+ make
+
+# plugin build expects libraries to be already installed; we fake a prefix
+# in build/ by symlinking all libraries to build/lib/
+ mkdir -p lib
+ cd lib
+ find ../avidemux -name '*.so*' | xargs ln -sft .
+ cd ../../plugins
+ mkdir build
+ cd build
+ cmake -D CMAKE_INSTALL_PREFIX=/usr -D AVIDEMUX_SOURCE_DIR=${srcdir}/avidemux_${pkgver} \
+ -D AVIDEMUX_CORECONFIG_DIR=${srcdir}/avidemux_${pkgver}/build/config \
+ -D AVIDEMUX_INSTALL_PREFIX=${srcdir}/avidemux_${pkgver}/build \
+ -D CMAKE_BUILD_TYPE=Release -D CMAKE_SKIP_RPATH=ON ..
+ make
+}
+
+package_avidemux-cli() {
+ pkgdesc="A graphical tool to edit video (filter/re-encode/split)"
+ depends=('libxml2' 'sdl' 'fontconfig' 'libvpx')
+ optdepends=('lame: for the corresponding audio encoder plugin'
+ 'faac: for the corresponding audio encoder plugin'
+ 'faad2: for the corresponding audio decoder plugin'
+ 'opencore-amr: for the corresponding audio decoder plugin'
+ 'esound: for the corresponding audio device plugin'
+ 'jack: for the corresponding audio device plugin'
+ 'sdl: for the corresponding audio device plugin'
+ 'x264: for the corresponding video encoder plugin'
+ 'xvidcore: for the corresponding video encoder plugin')
+ provides=('avidemux')
+ conflicts=('avidemux')
+ replaces=('avidemux')
+
+ cd "${srcdir}/${pkgbase}_${pkgver}/build"
+ make DESTDIR="${pkgdir}" install
+
+ cd "${srcdir}/${pkgbase}_${pkgver}/plugins/build"
+ make DESTDIR="${pkgdir}" install
+ rm -r "${pkgdir}"/usr/share/avidemux
+ rm "${pkgdir}"/usr/bin/avidemux2_{gtk,qt4}
+ rm "${pkgdir}"/usr/lib/*{_gtk,_qt4,Gtk,QT4}.so
+ rm "${pkgdir}"/usr/lib/ADM_plugins/videoEncoder/x264/*{Gtk,Qt}.so
+ rm "${pkgdir}"/usr/lib/ADM_plugins/videoEncoder/xvid/*{Gtk,Qt}.so
+ rm "${pkgdir}"/usr/lib/ADM_plugins/videoFilter/*{_gtk,_qt4}.so
+
+ ln -s /usr/lib/ADM_plugins/videoEncoder/libADM_vidEnc_xvid.so "${pkgdir}/usr/lib/libADM_vidEnc_xvid.so"
+ ln -s /usr/lib/ADM_plugins/videoEncoder/libADM_vidEnc_x264.so "${pkgdir}/usr/lib/libADM_vidEnc_x264.so"
+
+ install -D -m644 ../../avidemux_icon.png "${pkgdir}/usr/share/pixmaps/avidemux.png"
+ install -D -m644 ../../man/avidemux.1 "${pkgdir}/usr/share/man/man1/avidemux.1"
+}
+
+package_avidemux-gtk() {
+ pkgdesc="A graphical tool to edit video (filter/re-encode/split) - GTK GUI"
+ depends=("avidemux-cli=${pkgver}" 'gtk2' 'libxv')
+
+ cd "${srcdir}/${pkgbase}_${pkgver}"
+ install -D -m755 build/avidemux/avidemux2_gtk "${pkgdir}/usr/bin/avidemux2_gtk"
+
+ install -d "${pkgdir}"/usr/lib/ADM_plugins/videoEncoder/{x264,xvid}
+ install -d "${pkgdir}"/usr/lib/ADM_plugins/videoFilter
+
+ install -D -m755 build/lib/*{_gtk,Gtk}.so "${pkgdir}/usr/lib"
+ install -D -m755 plugins/build/ADM_videoEncoder/ADM_vidEnc_x264/gtk/*Gtk.so "${pkgdir}/usr/lib/ADM_plugins/videoEncoder/x264"
+ install -D -m755 plugins/build/ADM_videoEncoder/ADM_vidEnc_xvid/gtk/*Gtk.so "${pkgdir}/usr/lib/ADM_plugins/videoEncoder/xvid"
+ install -D -m755 plugins/build/ADM_videoFilters/*/*_gtk.so "${pkgdir}/usr/lib/ADM_plugins/videoFilter"
+
+ install -D -m644 avidemux2-gtk.desktop "${pkgdir}/usr/share/applications/avidemux-gtk.desktop"
+ sed -i "s|\[\$e\]||" "${pkgdir}/usr/share/applications/avidemux-gtk.desktop"
+}
+
+package_avidemux-qt() {
+ pkgdesc="A graphical tool to edit video (filter/re-encode/split) - QT GUI"
+ depends=("avidemux-cli=${pkgver}" 'qt')
+
+ cd "${srcdir}/${pkgbase}_${pkgver}"
+ install -D -m755 build/avidemux/avidemux2_qt4 "${pkgdir}/usr/bin/avidemux2_qt4"
+ install -d "${pkgdir}"/usr/lib/ADM_plugins/videoEncoder/{x264,xvid}
+ install -d "${pkgdir}"/usr/lib/ADM_plugins/videoFilter
+
+ install -D -m755 build/lib/*{_qt4,QT4}.so "${pkgdir}/usr/lib"
+ install -D -m755 plugins/build/ADM_videoEncoder/ADM_vidEnc_x264/qt4/*Qt.so "${pkgdir}/usr/lib/ADM_plugins/videoEncoder/x264"
+ install -D -m755 plugins/build/ADM_videoEncoder/ADM_vidEnc_xvid/qt4/*Qt.so "${pkgdir}/usr/lib/ADM_plugins/videoEncoder/xvid"
+ install -D -m755 plugins/build/ADM_videoFilters/*/*_qt4.so "${pkgdir}/usr/lib/ADM_plugins/videoFilter"
+
+ install -d "${pkgdir}/usr/share/avidemux/i18n"
+ install -D -m644 build/po/*.qm "${pkgdir}/usr/share/avidemux/i18n"
+
+ install -D -m644 avidemux2.desktop "${pkgdir}/usr/share/applications/avidemux-qt.desktop"
+ sed -i 's/Name=avidemux2/Name=avidemux (QT)/' "${pkgdir}/usr/share/applications/avidemux-qt.desktop"
+ sed -i 's/avidemux2_gtk/avidemux2_qt4/' "${pkgdir}/usr/share/applications/avidemux-qt.desktop"
+}
diff --git a/extra/avidemux/x264.patch b/extra/avidemux/x264.patch
new file mode 100644
index 000000000..7200153d1
--- /dev/null
+++ b/extra/avidemux/x264.patch
@@ -0,0 +1,21 @@
+diff -Nur avidemux_2.5.4.orig/plugins/ADM_videoEncoder/ADM_vidEnc_x264/x264Options.cpp avidemux_2.5.4/plugins/ADM_videoEncoder/ADM_vidEnc_x264/x264Options.cpp
+--- avidemux_2.5.4.orig/plugins/ADM_videoEncoder/ADM_vidEnc_x264/x264Options.cpp 2010-10-10 06:45:42.000000000 -0700
++++ avidemux_2.5.4/plugins/ADM_videoEncoder/ADM_vidEnc_x264/x264Options.cpp 2011-01-16 07:16:48.283341102 -0800
+@@ -1386,7 +1386,7 @@
+ case X264_WEIGHTP_NONE:
+ strcpy((char*)xmlBuffer, "none");
+ break;
+- case X264_WEIGHTP_BLIND:
++ case X264_WEIGHTP_SIMPLE:
+ strcpy((char*)xmlBuffer, "blind");
+ break;
+ case X264_WEIGHTP_SMART:
+@@ -1896,7 +1896,7 @@
+ int weightedPredPFrames = X264_WEIGHTP_NONE;
+
+ if (strcmp(content, "blind") == 0)
+- weightedPredPFrames = X264_WEIGHTP_BLIND;
++ weightedPredPFrames = X264_WEIGHTP_SIMPLE;
+ else if (strcmp(content, "smart") == 0)
+ weightedPredPFrames = X264_WEIGHTP_SMART;
+
diff --git a/extra/avogadro/PKGBUILD b/extra/avogadro/PKGBUILD
new file mode 100644
index 000000000..bd8023903
--- /dev/null
+++ b/extra/avogadro/PKGBUILD
@@ -0,0 +1,45 @@
+# $Id: PKGBUILD 111981 2011-03-02 21:41:10Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Nick B <Shirakawasuna at gmail _dot_com>
+
+pkgname=avogadro
+pkgver=1.0.1
+pkgrel=8
+pkgdesc="An advanced molecular editor based on Qt"
+arch=('i686' 'x86_64')
+url="http://avogadro.openmolecules.net/wiki/Main_Page"
+license=('GPL2')
+depends=('eigen' 'openbabel' 'python2-qt' 'boost-libs' 'glew' 'python2-numpy')
+makedepends=('cmake' 'boost')
+source=("http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.bz2"
+ 'sip-4.11.patch'
+ 'fix-pycapsule.patch')
+md5sums=('0d5c391197101f0aab7be6b59f81e6fd'
+ 'e78c3f96d0dc702947f75de1c094f580'
+ '45b0f3be5913575311e92b74a5520966')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ patch -Np1 -i ${srcdir}/sip-4.11.patch
+ patch -Np1 -i ${srcdir}/fix-pycapsule.patch
+
+ cd ${srcdir}
+ mkdir build
+ cd build
+
+ # use the cmake module in system to enable python 2.7 support
+ rm ../${pkgname}-${pkgver}/cmake/modules/FindPythonLibs.cmake
+
+ cmake ../${pkgname}-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=/usr
+ make
+}
+
+package() {
+ cd ${srcdir}/build
+ make DESTDIR=${pkgdir} install
+
+ install -Dm644 ${srcdir}/${pkgname}-${pkgver}/cmake/modules/FindAvogadro.cmake \
+ ${pkgdir}/usr/share/cmake-2.8/Modules/FindAvogadro.cmake
+}
diff --git a/extra/avogadro/fix-pycapsule.patch b/extra/avogadro/fix-pycapsule.patch
new file mode 100644
index 000000000..de4e2ca75
--- /dev/null
+++ b/extra/avogadro/fix-pycapsule.patch
@@ -0,0 +1,23 @@
+--- avogadro-1.0.1/libavogadro/src/python/sip.cpp 2010-05-02 17:31:22.000000000 +0100
++++ avogadro-1.0.1-pycapsule/libavogadro/src/python/sip.cpp 2010-11-23 19:00:09.000000000 +0000
+@@ -62,12 +62,20 @@ bool init_sip_api()
+ return false;
+ }
+
++#ifdef SIP_USE_PYCAPSULE
++ if (!PyCapsule_IsValid(sip_capi_obj.ptr(), "sip._C_API")) {
++#else
+ if (!PyCObject_Check(sip_capi_obj.ptr())) {
++#endif
+ std::cout << "The _C_API object in the sip python module is invalid." << std::endl;
+ return false;
+ }
+
++#ifdef SIP_USE_PYCAPSULE
++ sip_API = reinterpret_cast<const sipAPIDef*>(PyCapsule_GetPointer(sip_capi_obj.ptr(), "sip._C_API"));
++#else
+ sip_API = reinterpret_cast<const sipAPIDef*>(PyCObject_AsVoidPtr(sip_capi_obj.ptr()));
++#endif
+
+ return true;
+ }
diff --git a/extra/avogadro/sip-4.11.patch b/extra/avogadro/sip-4.11.patch
new file mode 100644
index 000000000..0cd1e5b94
--- /dev/null
+++ b/extra/avogadro/sip-4.11.patch
@@ -0,0 +1,34 @@
+diff -ur avogadro-1.0.1/cmake/modules/PythonDeps.cmake avogadro-1.0.1-sip411/cmake/modules/PythonDeps.cmake
+--- avogadro-1.0.1/cmake/modules/PythonDeps.cmake 2010-05-02 18:31:22.000000000 +0200
++++ avogadro-1.0.1-sip411/cmake/modules/PythonDeps.cmake 2010-09-14 19:11:50.000000000 +0200
+@@ -59,10 +59,13 @@
+ if (EXISTS ${PYTHON_INCLUDE_PATH}/sip.h)
+ message(STATUS "Found sip.h header...")
+ execute_process(COMMAND sip -V OUTPUT_VARIABLE SIP_VERSION)
+- if (${SIP_VERSION} VERSION_GREATER "4.8")
++ if (NOT ${SIP_VERSION} VERSION_LESS "4.11")
++ message(STATUS "using sip version 4.11 or above...")
++ add_definitions( -DSIP_4_11 -DSIP_4_8 )
++ elseif (NOT ${SIP_VERSION} VERSION_LESS "4.8")
+ message(STATUS "using sip version 4.8 or above...")
+ add_definitions( -DSIP_4_8 )
+- endif (${SIP_VERSION} VERSION_GREATER "4.8")
++ endif (NOT ${SIP_VERSION} VERSION_LESS "4.11")
+ else (EXISTS ${PYTHON_INCLUDE_PATH}/sip.h)
+ message(STATUS "sip.h header NOT found - Python support disabled")
+ # message(STATUS "debian/ubuntu: install the python-sip4-dev package.")
+diff -ur avogadro-1.0.1/libavogadro/src/python/sip.cpp avogadro-1.0.1-sip411/libavogadro/src/python/sip.cpp
+--- avogadro-1.0.1/libavogadro/src/python/sip.cpp 2010-05-02 18:31:22.000000000 +0200
++++ avogadro-1.0.1-sip411/libavogadro/src/python/sip.cpp 2010-09-14 19:13:31.000000000 +0200
+@@ -204,7 +204,11 @@
+ sipWrapper *wrapper = reinterpret_cast<sipWrapper*>(obj_ptr);
+ #endif
+ // return the C++ pointer
++#ifdef SIP_4_11
++ return sip_API->api_get_address(wrapper);
++#else
+ return wrapper->u.cppPtr;
++#endif
+ }
+
+ QClass_converters()
diff --git a/extra/babl/PKGBUILD b/extra/babl/PKGBUILD
new file mode 100644
index 000000000..f8db47877
--- /dev/null
+++ b/extra/babl/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 108536 2011-02-01 06:59:18Z eric $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+
+pkgname=babl
+pkgver=0.1.4
+pkgrel=1
+pkgdesc="Dynamic, any to any, pixel format conversion library"
+arch=('i686' 'x86_64')
+url="http://gegl.org/babl/"
+license=('LGPL3')
+depends=('glibc')
+options=('!libtool' '!makeflags')
+source=(ftp://ftp.gimp.org/pub/babl/${pkgver%.*}/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('1deaf8188b200b10d98a343a7e712b2b')
+sha1sums=('9f7186e5d968a4c9d81a63b20836b163f56df616')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+}
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/banshee/PKGBUILD b/extra/banshee/PKGBUILD
new file mode 100644
index 000000000..fb5bb5f2a
--- /dev/null
+++ b/extra/banshee/PKGBUILD
@@ -0,0 +1,49 @@
+# $Id: PKGBUILD 110386 2011-02-19 06:36:31Z eric $
+# Contributor: György Balló <ballogy@freestart.hu>
+
+pkgname=banshee
+_pkgname=banshee-1
+pkgver=1.8.1
+pkgrel=1
+pkgdesc="Music management and playback for GNOME"
+arch=('i686' 'x86_64')
+url="http://banshee.fm/"
+license=('MIT')
+depends=('libxxf86vm' 'gnome-desktop>=2.28' 'mono-addins>=0.3.1' 'notify-sharp-svn' 'boo>=0.8.1' 'libwebkit>=1.2.2' 'gdata-sharp>=1.4' 'gtk-sharp-beans' 'gudev-sharp' 'gkeyfile-sharp' 'taglib-sharp>=2.0.3.7' 'gnome-sharp' 'libmtp>=0.2.0' 'libgpod>=0.7.95' 'mono-zeroconf>=0.8.0' 'gstreamer0.10-base-plugins>=0.10.25.2' 'desktop-file-utils' 'shared-mime-info' 'hicolor-icon-theme' 'xdg-utils')
+makedepends=('intltool>=0.35.0' 'gnome-doc-utils>=0.17.3')
+optdepends=('gstreamer0.10-good-plugins: Extra media codecs'
+ 'gstreamer0.10-ugly-plugins: Extra media codecs'
+ 'gstreamer0.10-bad-plugins: Extra media codecs'
+ 'gstreamer0.10-ffmpeg: Extra media codecs'
+ 'brasero: CD burning')
+options=('!libtool')
+install=$pkgname.install
+source=(http://download.banshee.fm/$pkgname/stable/$pkgver/$_pkgname-$pkgver.tar.bz2)
+md5sums=('15311add4f943300701d7da3b488452e')
+sha1sums=('534f42be30f875560c95ab059cec6d46254df9ba')
+
+build() {
+ export MONO_SHARED_DIR="$srcdir/.wabi"
+ mkdir -p "$MONO_SHARED_DIR"
+
+ cd "$srcdir/$_pkgname-$pkgver"
+
+ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \
+ --disable-docs \
+ --disable-static \
+ --disable-scrollkeeper \
+ --disable-ipod --disable-hal \
+ --with-vendor-build-id=ArchLinux
+ make
+}
+
+package() {
+ export MONO_SHARED_DIR="$srcdir/.wabi"
+ mkdir -p "$MONO_SHARED_DIR"
+
+ cd "$srcdir/$_pkgname-$pkgver"
+ make DESTDIR="$pkgdir/" install
+
+ install -m755 -d "$pkgdir"/usr/share/licenses/"$pkgname"
+ install -m644 COPYING "$pkgdir"/usr/share/licenses/${pkgname}/
+}
diff --git a/extra/banshee/banshee.install b/extra/banshee/banshee.install
new file mode 100644
index 000000000..1d0fd332b
--- /dev/null
+++ b/extra/banshee/banshee.install
@@ -0,0 +1,15 @@
+pkgname=banshee
+
+post_install() {
+ update-desktop-database -q
+ update-mime-database usr/share/mime &> /dev/null
+ xdg-icon-resource forceupdate
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ post_install $1
+}
diff --git a/extra/barcode/PKGBUILD b/extra/barcode/PKGBUILD
new file mode 100644
index 000000000..99dcd7755
--- /dev/null
+++ b/extra/barcode/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id: PKGBUILD 115997 2011-03-22 15:15:09Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+
+pkgname=barcode
+pkgver=0.98
+pkgrel=3
+pkgdesc="A tool to convert text strings to printed bars"
+arch=('i686' 'x86_64')
+url="http://www.gnu.org/software/barcode/"
+license=('GPL')
+depends=('glibc')
+install=barcode.install
+source=("ftp://ftp.gnu.org/gnu/${pkgname}/${pkgname}-${pkgver}.tar.gz")
+md5sums=('7f10c3307b84a19a4ab2fa4b3f2974da')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ ./configure --prefix=/usr \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ make prefix="${pkgdir}/usr" MAN1DIR="${pkgdir}/usr/share/man/man1" \
+ MAN3DIR="${pkgdir}/usr/share/man/man3" INFODIR="${pkgdir}/usr/share/info" install || return 1
+ gzip ${pkgdir}/usr/share/info/barcode.info
+}
diff --git a/extra/barcode/barcode.install b/extra/barcode/barcode.install
new file mode 100644
index 000000000..2f566fcfd
--- /dev/null
+++ b/extra/barcode/barcode.install
@@ -0,0 +1,20 @@
+infodir=/usr/share/info
+filelist=(barcode.info.gz)
+
+post_install() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info --delete $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
diff --git a/extra/basket/PKGBUILD b/extra/basket/PKGBUILD
new file mode 100644
index 000000000..0ad964ea1
--- /dev/null
+++ b/extra/basket/PKGBUILD
@@ -0,0 +1,32 @@
+# $Id: PKGBUILD 94445 2010-10-07 10:25:17Z ronald $
+# Maintainer: Ronald van Haren <ronald.archlinux.org>
+# Contributor: James Rayner <james@archlinux.org>
+# Contributor: lucke <lucke at o2 dot pl>
+
+pkgname=basket
+pkgver=1.81
+pkgrel=1
+pkgdesc="All-purpose notes taker for KDE."
+arch=('i686' 'x86_64')
+url="http://basket.kde.org/"
+depends=('kdelibs' 'gpgme' 'qimageblitz' 'hicolor-icon-theme')
+makedepends=('cmake' 'automoc4')
+install=$pkgname.install
+license=('GPL')
+source=(http://basket.kde.org/downloads/$pkgname-$pkgver.tar.bz2)
+md5sums=('cbb1bc5ca7c2ad1485c433c00a8f65a1')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ cmake ../${pkgbase}-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_SKIP_RPATH=ON \
+ -DCMAKE_INSTALL_PREFIX=/usr
+
+ make || return 1
+}
+
+package() {
+ cd $srcdir/$pkgname-$pkgver
+ make DESTDIR=$startdir/pkg install
+}
diff --git a/extra/basket/basket.install b/extra/basket/basket.install
new file mode 100644
index 000000000..3e1f2f1f5
--- /dev/null
+++ b/extra/basket/basket.install
@@ -0,0 +1,12 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
+
diff --git a/extra/bc/PKGBUILD b/extra/bc/PKGBUILD
new file mode 100644
index 000000000..7c7337580
--- /dev/null
+++ b/extra/bc/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id: PKGBUILD 58245 2009-11-06 14:34:42Z eric $
+# Maintainer: dorphell <dorphell@archlinux.org>
+
+pkgname=bc
+pkgver=1.06
+pkgrel=7
+pkgdesc="An arbitrary precision calculator language"
+arch=('i686' 'x86_64')
+url="http://www.gnu.org/software/bc/"
+license=('GPL')
+depends=('readline')
+replaces=('bc-readline')
+conflicts=('bc-readline')
+install=bc.install
+source=(ftp://ftp.gnu.org/gnu/${pkgname}/${pkgname}-${pkgver}.tar.gz
+ build-fix.patch bc-1.06-info-dir-entry.patch)
+md5sums=('d44b5dddebd8a7a7309aea6c36fda117' 'fc7ecbd9e55ef04c6d3a495692626116'\
+ 'b6fe9869830aca0d34badf810fe0cfb3')
+sha1sums=('c8f258a7355b40a485007c40865480349c157292' '3af67c59e2232b9329ff0c1cf49d1a8a1cf87cd7'\
+ 'c15c2a301ba80cf4d3c03a6e164f4e57fa86e4a2')
+
+build() {
+ CFLAGS="$CFLAGS -O3"
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -p1 -i "${srcdir}/build-fix.patch" || return 1
+ patch -p1 -i "${srcdir}/bc-1.06-info-dir-entry.patch" || return 1
+ ./configure --prefix=/usr --mandir=/usr/share/man \
+ --infodir=/usr/share/info --with-readline || return 1
+ make LEX="flex -I" || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/bc/bc-1.06-info-dir-entry.patch b/extra/bc/bc-1.06-info-dir-entry.patch
new file mode 100644
index 000000000..8c1344c82
--- /dev/null
+++ b/extra/bc/bc-1.06-info-dir-entry.patch
@@ -0,0 +1,11 @@
+--- bc-1.06/doc/bc.info.info-dir-entry 2000-10-03 20:36:31.000000000 +0200
++++ bc-1.06/doc/bc.info 2003-01-06 14:07:40.000000000 +0100
+@@ -1,5 +1,8 @@
+ This is bc.info, produced by makeinfo version 4.0 from bc.texi.
+
++START-INFO-DIR-ENTRY
++* bc: (bc). Arbritrary precision calculator language.
++END-INFO-DIR-ENTRY
+ 
+ File: bc.info, Node: Top, Next: Introduction, Prev: (dir), Up: (dir)
+
diff --git a/extra/bc/bc.install b/extra/bc/bc.install
new file mode 100644
index 000000000..e1e2eaa00
--- /dev/null
+++ b/extra/bc/bc.install
@@ -0,0 +1,20 @@
+infodir=/usr/share/info
+filelist=(bc.info.gz dc.info.gz)
+
+post_install() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info --delete $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
diff --git a/extra/bc/build-fix.patch b/extra/bc/build-fix.patch
new file mode 100644
index 000000000..98a40820a
--- /dev/null
+++ b/extra/bc/build-fix.patch
@@ -0,0 +1,13 @@
+diff -wbBur bc-1.06/bc/scan.l bc-1.06.my/bc/scan.l
+--- bc-1.06/bc/scan.l 2000-09-13 22:25:47 +0400
++++ bc-1.06.my/bc/scan.l 2006-12-25 12:39:34 +0300
+@@ -143,7 +143,9 @@
+
+ /* Definitions for readline access. */
+ extern FILE *rl_instream;
++#if 0
+ _PROTOTYPE(char *readline, (char *));
++#endif
+
+ /* rl_input puts upto MAX characters into BUF with the number put in
+ BUF placed in *RESULT. If the yy input file is the same as
diff --git a/extra/bdf-unifont/LICENSE b/extra/bdf-unifont/LICENSE
new file mode 100644
index 000000000..066ea1699
--- /dev/null
+++ b/extra/bdf-unifont/LICENSE
@@ -0,0 +1,60 @@
+CENSE
+-------
+Roman Czyborra released his work (Perl scripts and font .hex files)
+under the following terms:
+
+ All of my works you find here are freeware. You may
+ freely copy, use, quote, modify or redistribute them
+ as long as you properly attribute my contribution and
+ have given a quick thought about whether Roman might
+ perhaps be interested to read what you did with his
+ stuff. Horizontal rules don't apply.
+
+David Starner released what in this package is named "hex2bdf-split"
+under the same license as Roman Czyborra's work.
+
+License for all of Paul Hardy's work (except "johab2ucs2" and
+"blanks.hex", mentioned separately), Makefile and debian/ mods
+by Anthony Fok, and modified software from Luis Gonzalez Miranda
+(with permission granted to Paul Hardy):
+
+ These are released under the terms of the GNU General Public
+ License version 2, or (at your option) a later version.
+
+License for Fonts:
+
+ Any fonts using glyphs from the "wqy-cjk.hex" file (including
+ the default TrueType font) are bound by the terms of the Wen
+ Quan Yi font license. Those fonts are released under the terms
+ of the GNU General Public License (GPL) versionn 2, with the
+ exception that embedding the font in a document does not by
+ itself bind that document to the terms of the GNU GPL.
+
+ Any fonts that do not use glyphs from the "wqy-cjk.hex" file
+ fall under the above "License for all of Roman Czyborra's work".
+
+ The fonts in "./font/precompiled" do use wqy-cjk.hex, and so
+ are licensed under the GNU GPL version 2, with the exception
+ that embedding the font in a document does not in itself bind
+ that document to the terms of the GNU GPL. The following
+ paragraphs explaining the exception is taken from the Wen
+ Quan Yi font distribution:
+
+ ** GPL v2.0 license with font embedding exception:
+
+ As a special exception, if you create a document which
+ uses this font, and embed this font or unaltered portions
+ of this font into the document, this font does not by
+ itself cause the resulting document to be covered by
+ the GNU General Public License. This exception does not
+ however invalidate any other reasons why the document
+ might be covered by the GNU General Public License.
+ If you modify this font, you may extend this exception
+ to your version of the font, but you are not obligated
+ to do so. If you do not wish to do so, delete this
+ exception statement from your version.
+
+License for "blanks.hex":
+
+ There is one exception to the above rules: Paul Hardy earlier
+ released the "blanks.hex" file into the public domain.
diff --git a/extra/bdf-unifont/PKGBUILD b/extra/bdf-unifont/PKGBUILD
new file mode 100644
index 000000000..2df7993e6
--- /dev/null
+++ b/extra/bdf-unifont/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD,v 1.5 2008/09/24 07:16:54 ronald Exp $
+# Maintainer: Ronald van Haren <ronald.archlinux.org>
+
+pkgname=bdf-unifont
+pkgver=5.1.20080820
+pkgrel=1
+pkgdesc="GNU Unifont Glyphs"
+arch=('i686' 'x86_64')
+license=('custom' 'GPL2')
+url="http://unifoundry.com/unifont.html"
+depends=('fontconfig' 'xorg-fonts-encodings' 'xorg-font-utils')
+install=unifont.install
+source=('http://unifoundry.com/unifont-5.1.20080820.bdf.gz' 'LICENSE')
+md5sums=('6b8263ceccef33bd633aa019d74b7943'
+ '64da5a96d6789d29d485cd67a43bc547')
+
+build() {
+ install -Dm644 ${srcdir}/unifont-5.1.20080820.bdf \
+ ${pkgdir}/usr/share/fonts/misc/unifont.bdf
+
+ # install LICENSE file
+ install -Dm644 ${srcdir}/LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+}
+
diff --git a/extra/bdf-unifont/unifont.install b/extra/bdf-unifont/unifont.install
new file mode 100644
index 000000000..7d21ab51b
--- /dev/null
+++ b/extra/bdf-unifont/unifont.install
@@ -0,0 +1,15 @@
+post_install() {
+ echo -n "Updating font cache... "
+ fc-cache -f > /dev/null
+ mkfontscale /usr/share/fonts/misc
+ mkfontdir /usr/share/fonts/misc
+ echo "done."
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ post_install $1
+}
diff --git a/extra/beagle/PKGBUILD b/extra/beagle/PKGBUILD
new file mode 100644
index 000000000..37bfe2b29
--- /dev/null
+++ b/extra/beagle/PKGBUILD
@@ -0,0 +1,64 @@
+# $Id: PKGBUILD 102373 2010-12-07 14:55:37Z jgc $
+# Maintainer: Daniel Isenmann <daniel @ archlinux.org>
+# Contributor: Shadowhand <woody.gilk@gmail.com>
+
+pkgname=beagle
+pkgver=0.3.9
+pkgrel=4
+pkgdesc="Search tool that ransacks your personal information space to find whatever you are looking for."
+arch=(i686 x86_64)
+url="http://beagle-project.org/"
+license=('custom')
+depends=('gnome-sharp>=2.24.1' 'gmime>=2.4.10' 'evolution-sharp>=0.20.0' 'libexif' 'librsvg>=2.26.0' 'sqlite3>=3.6.13' 'libxss' 'wv>=1.2.4' 'chmlib' 'gsf-sharp>=0.8.1' 'libsm' 'xdg-utils' 'ndesk-dbus-glib' 'mono>=2.4' 'taglib-sharp')
+makedepends=('intltool' 'zip' 'pkgconfig')
+options=('!libtool')
+backup=('etc/beagle/crawl-rules/crawl-manpages'
+ 'etc/beagle/crawl-rules/crawl-windows'
+ 'etc/beagle/crawl-rules/crawl-applications'
+ 'etc/beagle/crawl-rules/crawl-documentation'
+ 'etc/beagle/crawl-rules/crawl-monodoc'
+ 'etc/beagle/crawl-rules/crawl-executables')
+install=beagle.install
+source=(http://ftp.gnome.org/pub/GNOME/sources/${pkgname}/0.3/${pkgname}-${pkgver}.tar.bz2
+ beagle-0.3.9-spew.patch
+ beagle-0.3.9-gmime24.patch
+ beagle-0.3.9-mono-data-sqlite-2.patch
+ mono-2.8.patch)
+md5sums=('b73c12423d2d67133dbb05933f4c8fe1'
+ '003ada7acc2724e94e0218e4a6705b4a'
+ '73b5a5ea03dc3a7ca71ed41772e4dd82'
+ 'd99a93730485b7f9a5e2111a8b2bf440'
+ '7ef884a29c17b73a20cb09fac0536a47')
+
+build() {
+ export "MONO_SHARED_DIR=${srcdir}/.wabi"
+ mkdir -p "${MONO_SHARED_DIR}"
+
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ sed -i -e 's/CRAWL_USER=beagleindex/CRAWL_USER=beaglidx/' tools/beagle-crawl-system.in
+ sed -i -e 's/libchm.so.1/libchm.so.0/' Util/ChmFile.cs
+ sed -i -e 's/libgnome-desktop-2.so.2/libgnome-desktop-2.so.17/' search/Beagle.Search.exe.config
+ sed -i -e 's/python/python2/' tools/keygrabber.py
+
+ patch -Np1 -i "${srcdir}/beagle-0.3.9-spew.patch"
+ patch -Np1 -i "${srcdir}/beagle-0.3.9-mono-data-sqlite-2.patch"
+ patch -Np1 -i "${srcdir}/beagle-0.3.9-gmime24.patch"
+ patch -Np1 -i "${srcdir}/mono-2.8.patch"
+
+ libtoolize --force
+ autoreconf
+
+ sed -i -e 's/gmime-sharp/gmime-sharp-2.4/' configure
+
+ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \
+ --enable-inotify \
+ --disable-static \
+ --disable-docs
+ make
+ make DESTDIR="${pkgdir}" install
+
+ install -m755 -d "${pkgdir}/var/cache/beagle/indexes"
+ chown -R 86:86 "${pkgdir}/var/cache/beagle"
+ install -m755 -d "${pkgdir}/usr/share/licenses/beagle"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/beagle/"
+}
diff --git a/extra/beagle/beagle-0.3.9-gmime24.patch b/extra/beagle/beagle-0.3.9-gmime24.patch
new file mode 100644
index 000000000..7d943dabf
--- /dev/null
+++ b/extra/beagle/beagle-0.3.9-gmime24.patch
@@ -0,0 +1,703 @@
+diff -upNr beagle-0.3.9.orign/beagled/EvolutionMailQueryable/EvolutionMailIndexableGenerator.cs beagle-0.3.9/beagled/EvolutionMailQueryable/EvolutionMailIndexableGenerator.cs
+--- beagle-0.3.9.orign/beagled/EvolutionMailQueryable/EvolutionMailIndexableGenerator.cs 2008-04-25 20:17:04.000000000 +0200
++++ beagle-0.3.9/beagled/EvolutionMailQueryable/EvolutionMailIndexableGenerator.cs 2009-01-28 12:33:17.000000000 +0100
+@@ -333,28 +333,46 @@ namespace Beagle.Daemon.EvolutionMailQue
+ indexable.AddProperty (Property.NewUnsearched ("fixme:folder", this.folder_name));
+
+ GMime.InternetAddressList addrs;
+-
+- addrs = message.GetRecipients (GMime.Message.RecipientType.To);
+- foreach (GMime.InternetAddress ia in addrs) {
+- if (this.folder_name == "Sent" && ia.AddressType != GMime.InternetAddressType.Group)
+- indexable.AddProperty (Property.NewUnsearched ("fixme:sentTo", ia.Addr));
++
++ if (this.folder_name == "Sent") {
++ addrs = message.GetRecipients (GMime.RecipientType.To);
++ foreach (GMime.InternetAddress ia in addrs) {
++ if (ia is GMime.InternetAddressMailbox) {
++ GMime.InternetAddressMailbox mailbox = ia as GMime.InternetAddressMailbox;
++
++ indexable.AddProperty (Property.NewUnsearched ("fixme:sentTo", mailbox.Address));
++ }
++ }
++
++ addrs.Dispose ();
+ }
+- addrs.Dispose ();
+-
+- addrs = message.GetRecipients (GMime.Message.RecipientType.Cc);
+- foreach (GMime.InternetAddress ia in addrs) {
+- if (this.folder_name == "Sent" && ia.AddressType != GMime.InternetAddressType.Group)
+- indexable.AddProperty (Property.NewUnsearched ("fixme:sentTo", ia.Addr));
++
++ if (this.folder_name == "Sent") {
++ addrs = message.GetRecipients (GMime.RecipientType.Cc);
++ foreach (GMime.InternetAddress ia in addrs) {
++ if (ia is GMime.InternetAddressMailbox) {
++ GMime.InternetAddressMailbox mailbox = ia as GMime.InternetAddressMailbox;
++
++ indexable.AddProperty (Property.NewUnsearched ("fixme:sentTo", mailbox.Address));
++ }
++ }
++
++ addrs.Dispose ();
+ }
+- addrs.Dispose ();
+-
+- addrs = GMime.InternetAddressList.ParseString (GMime.Utils.HeaderDecodePhrase (message.Sender));
+- foreach (GMime.InternetAddress ia in addrs) {
+- if (this.folder_name != "Sent" && ia.AddressType != GMime.InternetAddressType.Group)
+- indexable.AddProperty (Property.NewUnsearched ("fixme:gotFrom", ia.Addr));
++
++ if (this.folder_name != "Sent") {
++ addrs = GMime.InternetAddressList.Parse (message.Sender);
++ foreach (GMime.InternetAddress ia in addrs) {
++ if (ia is GMime.InternetAddressMailbox) {
++ GMime.InternetAddressMailbox mailbox = ia as GMime.InternetAddressMailbox;
++
++ indexable.AddProperty (Property.NewUnsearched ("fixme:gotFrom", mailbox.Address));
++ }
++ }
++
++ addrs.Dispose ();
+ }
+- addrs.Dispose ();
+-
++
+ if (this.folder_name == "Sent")
+ indexable.AddProperty (Property.NewFlag ("fixme:isSent"));
+
+@@ -750,48 +768,54 @@ namespace Beagle.Daemon.EvolutionMailQue
+ }
+
+ GMime.InternetAddressList addrs;
+- addrs = GMime.InternetAddressList.ParseString (messageInfo.to);
++ addrs = GMime.InternetAddressList.Parse (messageInfo.to);
+ foreach (GMime.InternetAddress ia in addrs) {
++ GMime.InternetAddressMailbox mailbox = ia as GMime.InternetAddressMailbox;
++
+ if (!have_content) {
+ indexable.AddProperty (Property.NewUnsearched ("fixme:to", ia.ToString (false)));
+- if (ia.AddressType != GMime.InternetAddressType.Group)
+- indexable.AddProperty (Property.New ("fixme:to_address", ia.Addr));
+-
++ if (ia is GMime.InternetAddressMailbox)
++ indexable.AddProperty (Property.New ("fixme:to_address", mailbox.Address));
++
+ indexable.AddProperty (Property.New ("fixme:to_name", ia.Name));
+ }
+-
+- if (this.folder_name == "Sent" && ia.AddressType != GMime.InternetAddressType.Group)
+- indexable.AddProperty (Property.NewUnsearched ("fixme:sentTo", ia.Addr));
++
++ if (this.folder_name == "Sent" && ia is GMime.InternetAddressMailbox)
++ indexable.AddProperty (Property.NewUnsearched ("fixme:sentTo", mailbox.Address));
+ }
+ addrs.Dispose ();
+
+- addrs = GMime.InternetAddressList.ParseString (messageInfo.cc);
++ addrs = GMime.InternetAddressList.Parse (messageInfo.cc);
+ foreach (GMime.InternetAddress ia in addrs) {
++ GMime.InternetAddressMailbox mailbox = ia as GMime.InternetAddressMailbox;
++
+ if (!have_content) {
+ indexable.AddProperty (Property.NewUnsearched ("fixme:cc", ia.ToString (false)));
+- if (ia.AddressType != GMime.InternetAddressType.Group)
+- indexable.AddProperty (Property.New ("fixme:cc_address", ia.Addr));
+-
++ if (ia is GMime.InternetAddressMailbox)
++ indexable.AddProperty (Property.New ("fixme:cc_address", mailbox.Address));
++
+ indexable.AddProperty (Property.New ("fixme:cc_name", ia.Name));
+ }
+-
+- if (this.folder_name == "Sent" && ia.AddressType != GMime.InternetAddressType.Group)
+- indexable.AddProperty (Property.NewUnsearched ("fixme:sentTo", ia.Addr));
++
++ if (this.folder_name == "Sent" && ia is GMime.InternetAddressMailbox)
++ indexable.AddProperty (Property.NewUnsearched ("fixme:sentTo", mailbox.Address));
+ }
+ addrs.Dispose ();
+
+- addrs = GMime.InternetAddressList.ParseString (messageInfo.from);
++ addrs = GMime.InternetAddressList.Parse (messageInfo.from);
+ foreach (GMime.InternetAddress ia in addrs) {
++ GMime.InternetAddressMailbox mailbox = ia as GMime.InternetAddressMailbox;
++
+ if (!have_content) {
+ indexable.AddProperty (Property.NewUnsearched ("fixme:from", ia.ToString (false)));
+- if (ia.AddressType != GMime.InternetAddressType.Group)
+- indexable.AddProperty (Property.New ("fixme:from_address", ia.Addr));
+-
++ if (ia is GMime.InternetAddressMailbox)
++ indexable.AddProperty (Property.New ("fixme:from_address", mailbox.Address));
++
+ indexable.AddProperty (Property.New ("fixme:from_name", ia.Name));
+ }
+
+- if (this.folder_name != "Sent" && ia.AddressType != GMime.InternetAddressType.Group)
+- indexable.AddProperty (Property.NewUnsearched ("fixme:gotFrom", ia.Addr));
++ if (this.folder_name != "Sent" && ia is GMime.InternetAddressMailbox)
++ indexable.AddProperty (Property.NewUnsearched ("fixme:gotFrom", mailbox.Address));
+ }
+ addrs.Dispose ();
+
+diff -upNr beagle-0.3.9.orign/beagled/GoogleBackends/GMailSearchDriver.cs beagle-0.3.9/beagled/GoogleBackends/GMailSearchDriver.cs
+--- beagle-0.3.9.orign/beagled/GoogleBackends/GMailSearchDriver.cs 2008-04-25 21:26:19.000000000 +0200
++++ beagle-0.3.9/beagled/GoogleBackends/GMailSearchDriver.cs 2009-01-28 12:33:17.000000000 +0100
+@@ -322,38 +322,47 @@ namespace Beagle.Daemon.GoogleBackend {
+ hit.AddProperty (Property.NewDate ("fixme:date", message.Date.ToUniversalTime ()));
+
+ GMime.InternetAddressList addrs;
+- addrs = message.GetRecipients (GMime.Message.RecipientType.To);
++ addrs = message.GetRecipients (GMime.RecipientType.To);
+ foreach (GMime.InternetAddress ia in addrs) {
+ hit.AddProperty (Property.NewUnsearched ("fixme:to", ia.ToString (false)));
+- if (ia.AddressType != GMime.InternetAddressType.Group)
+- hit.AddProperty (Property.New ("fixme:to_address", ia.Addr));
+-
++ if (ia is GMime.InternetAddressMailbox) {
++ GMime.InternetAddressMailbox mailbox = ia as GMime.InternetAddressMailbox;
++
++ hit.AddProperty (Property.New ("fixme:to_address", mailbox.Address));
++ }
++
+ hit.AddProperty (Property.New ("fixme:to_name", ia.Name));
+ }
+ addrs.Dispose ();
+
+- addrs = message.GetRecipients (GMime.Message.RecipientType.Cc);
++ addrs = message.GetRecipients (GMime.RecipientType.Cc);
+ foreach (GMime.InternetAddress ia in addrs) {
+ hit.AddProperty (Property.NewUnsearched ("fixme:cc", ia.ToString (false)));
+- if (ia.AddressType != GMime.InternetAddressType.Group)
+- hit.AddProperty (Property.New ("fixme:cc_address", ia.Addr));
+-
++ if (ia is GMime.InternetAddressMailbox) {
++ GMime.InternetAddressMailbox mailbox = ia as GMime.InternetAddressMailbox;
++
++ hit.AddProperty (Property.New ("fixme:cc_address", mailbox.Address));
++ }
++
+ hit.AddProperty (Property.New ("fixme:cc_name", ia.Name));
+ }
+ addrs.Dispose ();
+
+- addrs = GMime.InternetAddressList.ParseString (GMime.Utils.HeaderDecodePhrase (message.Sender));
++ addrs = GMime.InternetAddressList.Parse (message.Sender);
+ foreach (GMime.InternetAddress ia in addrs) {
+ hit.AddProperty (Property.NewUnsearched ("fixme:from", ia.ToString (false)));
+- if (ia.AddressType != GMime.InternetAddressType.Group)
+- hit.AddProperty (Property.New ("fixme:from_address", ia.Addr));
+-
++ if (ia is GMime.InternetAddressMailbox) {
++ GMime.InternetAddressMailbox mailbox = ia as GMime.InternetAddressMailbox;
++
++ hit.AddProperty (Property.New ("fixme:from_address", mailbox.Address));
++ }
++
+ hit.AddProperty (Property.New ("fixme:from_name", ia.Name));
+ }
+ addrs.Dispose ();
+
+ foreach (GMime.References refs in message.References)
+- hit.AddProperty (Property.NewUnsearched ("fixme:reference", refs.Msgid));
++ hit.AddProperty (Property.NewUnsearched ("fixme:reference", refs.MessageId));
+
+ string list_id = message.GetHeader ("List-Id");
+ if (list_id != null)
+diff -upNr beagle-0.3.9.orign/beagled/KMailQueryable/KMailIndexer.cs beagle-0.3.9/beagled/KMailQueryable/KMailIndexer.cs
+--- beagle-0.3.9.orign/beagled/KMailQueryable/KMailIndexer.cs 2008-02-10 21:24:19.000000000 +0100
++++ beagle-0.3.9/beagled/KMailQueryable/KMailIndexer.cs 2009-01-28 12:33:17.000000000 +0100
+@@ -407,28 +407,46 @@ namespace Beagle.Daemon.KMailQueryable {
+ indexable.AddProperty (Property.NewUnsearched ("fixme:folder", folder_name));
+
+ GMime.InternetAddressList addrs;
+-
+- addrs = message.GetRecipients (GMime.Message.RecipientType.To);
+- foreach (GMime.InternetAddress ia in addrs) {
+- if (folder_name == Queryable.SentMailFolderName && ia.AddressType != GMime.InternetAddressType.Group)
+- indexable.AddProperty (Property.NewKeyword ("fixme:sentTo", ia.Addr));
+- }
+- addrs.Dispose ();
+-
+- addrs = message.GetRecipients (GMime.Message.RecipientType.Cc);
+- foreach (GMime.InternetAddress ia in addrs) {
+- if (folder_name == Queryable.SentMailFolderName && ia.AddressType != GMime.InternetAddressType.Group)
+- indexable.AddProperty (Property.NewKeyword ("fixme:sentTo", ia.Addr));
+- }
+- addrs.Dispose ();
+-
+- addrs = GMime.InternetAddressList.ParseString (GMime.Utils.HeaderDecodePhrase (message.Sender));
+- foreach (GMime.InternetAddress ia in addrs) {
+- if (folder_name != Queryable.SentMailFolderName && ia.AddressType != GMime.InternetAddressType.Group)
+- indexable.AddProperty (Property.NewKeyword ("fixme:gotFrom", ia.Addr));
++
++ if (folder_name == Queryable.SentMailFolderName) {
++ addrs = message.GetRecipients (GMime.RecipientType.To);
++ foreach (GMime.InternetAddress ia in addrs) {
++ if (ia is GMime.InternetAddressMailbox) {
++ GMime.InternetAddressMailbox mailbox = ia as GMime.InternetAddressMailbox;
++
++ indexable.AddProperty (Property.NewKeyword ("fixme:sentTo", mailbox.Address));
++ }
++ }
++
++ addrs.Dispose ();
+ }
+- addrs.Dispose ();
+-
++
++ if (folder_name == Queryable.SentMailFolderName) {
++ addrs = message.GetRecipients (GMime.RecipientType.Cc);
++ foreach (GMime.InternetAddress ia in addrs) {
++ if (ia is GMime.InternetAddressMailbox) {
++ GMime.InternetAddressMailbox mailbox = ia as GMime.InternetAddressMailbox;
++
++ indexable.AddProperty (Property.NewKeyword ("fixme:sentTo", mailbox.Address));
++ }
++ }
++
++ addrs.Dispose ();
++ }
++
++ if (folder_name != Queryable.SentMailFolderName) {
++ addrs = GMime.InternetAddressList.Parse (message.Sender);
++ foreach (GMime.InternetAddress ia in addrs) {
++ if (ia is GMime.InternetAddressMailbox) {
++ GMime.InternetAddressMailbox mailbox = ia as GMime.InternetAddressMailbox;
++
++ indexable.AddProperty (Property.NewKeyword ("fixme:gotFrom", mailbox.Address));
++ }
++ }
++
++ addrs.Dispose ();
++ }
++
+ if (folder_name == Queryable.SentMailFolderName)
+ indexable.AddProperty (Property.NewFlag ("fixme:isSent"));
+ else {
+diff -upNr beagle-0.3.9.orign/beagled/ThunderbirdQueryable/ThunderbirdQueryable.cs beagle-0.3.9/beagled/ThunderbirdQueryable/ThunderbirdQueryable.cs
+--- beagle-0.3.9.orign/beagled/ThunderbirdQueryable/ThunderbirdQueryable.cs 2008-07-18 16:27:59.000000000 +0200
++++ beagle-0.3.9/beagled/ThunderbirdQueryable/ThunderbirdQueryable.cs 2009-01-28 12:33:17.000000000 +0100
+@@ -367,9 +367,14 @@ namespace Beagle.Daemon.ThunderbirdQuery
+ message.Subject = Mime.HeaderDecodeText (GetText (document, "Subject"));
+ message.Sender = Mime.HeaderDecodePhrase (GetText (document, "Author"));
+ message.MessageId = GetText (document, "MessageId");
+- message.SetDate (DateTimeUtil.UnixToDateTimeUtc (Convert.ToInt64 (GetText (document, "Date"))), 0);
+- message.AddRecipientsFromString ("To", Mime.HeaderDecodePhrase (GetText (document, "Recipients")));
+-
++ message.Date = DateTimeUtil.UnixToDateTimeUtc (Convert.ToInt64 (GetText (document, "Date")));
++
++ string str = GetText (document, "Recipients");
++ GMime.InternetAddressList recipients = GMime.InternetAddressList.Parse (str);
++ foreach (GMime.InternetAddress ia in recipients)
++ message.To.Add (ia);
++ recipients.Dispose ();
++
+ return message;
+ }
+
+@@ -434,7 +439,7 @@ namespace Beagle.Daemon.ThunderbirdQuery
+
+ // We _know_ that the stream comes from a StreamReader, which uses UTF8 by
+ // default. So we use that here when parsing our string.
+- return (str != null ? Encoding.UTF8.GetString (str, 0, pos) : string.Empty);
++ return (str != null ? System.Text.Encoding.UTF8.GetString (str, 0, pos) : string.Empty);
+ }
+
+ // This spell "charset="
+@@ -462,7 +467,7 @@ namespace Beagle.Daemon.ThunderbirdQuery
+ // instead of UTF-8 in some cases and that will really mess things up.
+ byte[] buffer = null;
+ int c, header_length = 0, newlines = 0, charset_pos = 0;
+- Encoding enc = Encoding.UTF8;
++ System.Text.Encoding enc = System.Text.Encoding.UTF8;
+ try {
+ do {
+ c = stream.BaseStream.ReadByte ();
+@@ -491,7 +496,7 @@ namespace Beagle.Daemon.ThunderbirdQuery
+ stream.BaseStream.Read (buffer, 0, buffer.Length);
+
+ // We need to use correct encoding
+- enc = Encoding.GetEncoding (encoding_str);
++ enc = System.Text.Encoding.GetEncoding (encoding_str);
+ } catch {
+ } finally {
+ stream.Close ();
+diff -upNr beagle-0.3.9.orign/configure beagle-0.3.9/configure
+--- beagle-0.3.9.orign/configure 2008-07-19 13:20:36.000000000 +0200
++++ beagle-0.3.9/configure 2009-01-28 12:35:43.000000000 +0100
+@@ -2791,7 +2791,7 @@ MONODOC_REQUIRED=1.2.4
+ NDESK_DBUS_REQUIRED=0.5.2
+ NDESK_DBUS_GLIB_REQUIRED=0.3.0
+ GTK_SHARP_REQUIRED=2.10.0
+-GMIME_SHARP_REQUIRED=2.2.0
++GMIME_SHARP_REQUIRED=2.4.0
+ EVOLUTION_SHARP_REQUIRED=0.13.3
+ GSF_SHARP_REQUIRED=0.6
+ GTK_REQUIRED=2.10.0
+@@ -25660,7 +25660,7 @@ if test -n "$PKG_CONFIG"; then
+ glade-sharp-2.0 >= \$GTK_SHARP_REQUIRED
+ gnome-sharp-2.0 >= \$GTK_SHARP_REQUIRED
+ gnome-vfs-sharp-2.0 >= \$GTK_SHARP_REQUIRED
+- gmime-sharp >= \$GMIME_SHARP_REQUIRED
++ gmime-sharp-2.4 >= \$GMIME_SHARP_REQUIRED
+ \"") >&5
+ ($PKG_CONFIG --exists --print-errors "
+ gtk-sharp-2.0 >= $GTK_SHARP_REQUIRED
+@@ -25668,7 +25668,7 @@ if test -n "$PKG_CONFIG"; then
+ glade-sharp-2.0 >= $GTK_SHARP_REQUIRED
+ gnome-sharp-2.0 >= $GTK_SHARP_REQUIRED
+ gnome-vfs-sharp-2.0 >= $GTK_SHARP_REQUIRED
+- gmime-sharp >= $GMIME_SHARP_REQUIRED
++ gmime-sharp-2.4 >= $GMIME_SHARP_REQUIRED
+ ") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+@@ -25679,7 +25679,7 @@ if test -n "$PKG_CONFIG"; then
+ glade-sharp-2.0 >= $GTK_SHARP_REQUIRED
+ gnome-sharp-2.0 >= $GTK_SHARP_REQUIRED
+ gnome-vfs-sharp-2.0 >= $GTK_SHARP_REQUIRED
+- gmime-sharp >= $GMIME_SHARP_REQUIRED
++ gmime-sharp-2.4 >= $GMIME_SHARP_REQUIRED
+ " 2>/dev/null`
+ else
+ pkg_failed=yes
+@@ -25699,7 +25699,7 @@ if test -n "$PKG_CONFIG"; then
+ glade-sharp-2.0 >= \$GTK_SHARP_REQUIRED
+ gnome-sharp-2.0 >= \$GTK_SHARP_REQUIRED
+ gnome-vfs-sharp-2.0 >= \$GTK_SHARP_REQUIRED
+- gmime-sharp >= \$GMIME_SHARP_REQUIRED
++ gmime-sharp-2.4 >= \$GMIME_SHARP_REQUIRED
+ \"") >&5
+ ($PKG_CONFIG --exists --print-errors "
+ gtk-sharp-2.0 >= $GTK_SHARP_REQUIRED
+@@ -25707,7 +25707,7 @@ if test -n "$PKG_CONFIG"; then
+ glade-sharp-2.0 >= $GTK_SHARP_REQUIRED
+ gnome-sharp-2.0 >= $GTK_SHARP_REQUIRED
+ gnome-vfs-sharp-2.0 >= $GTK_SHARP_REQUIRED
+- gmime-sharp >= $GMIME_SHARP_REQUIRED
++ gmime-sharp-2.4 >= $GMIME_SHARP_REQUIRED
+ ") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+@@ -25718,7 +25718,7 @@ if test -n "$PKG_CONFIG"; then
+ glade-sharp-2.0 >= $GTK_SHARP_REQUIRED
+ gnome-sharp-2.0 >= $GTK_SHARP_REQUIRED
+ gnome-vfs-sharp-2.0 >= $GTK_SHARP_REQUIRED
+- gmime-sharp >= $GMIME_SHARP_REQUIRED
++ gmime-sharp-2.4 >= $GMIME_SHARP_REQUIRED
+ " 2>/dev/null`
+ else
+ pkg_failed=yes
+@@ -25744,7 +25744,7 @@ fi
+ glade-sharp-2.0 >= $GTK_SHARP_REQUIRED
+ gnome-sharp-2.0 >= $GTK_SHARP_REQUIRED
+ gnome-vfs-sharp-2.0 >= $GTK_SHARP_REQUIRED
+- gmime-sharp >= $GMIME_SHARP_REQUIRED
++ gmime-sharp-2.4 >= $GMIME_SHARP_REQUIRED
+ "`
+ else
+ BEAGLE_UI_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "
+@@ -25753,7 +25753,7 @@ fi
+ glade-sharp-2.0 >= $GTK_SHARP_REQUIRED
+ gnome-sharp-2.0 >= $GTK_SHARP_REQUIRED
+ gnome-vfs-sharp-2.0 >= $GTK_SHARP_REQUIRED
+- gmime-sharp >= $GMIME_SHARP_REQUIRED
++ gmime-sharp-2.4 >= $GMIME_SHARP_REQUIRED
+ "`
+ fi
+ # Put the nasty error message in config.log where it belongs
+@@ -25765,7 +25765,7 @@ fi
+ glade-sharp-2.0 >= $GTK_SHARP_REQUIRED
+ gnome-sharp-2.0 >= $GTK_SHARP_REQUIRED
+ gnome-vfs-sharp-2.0 >= $GTK_SHARP_REQUIRED
+- gmime-sharp >= $GMIME_SHARP_REQUIRED
++ gmime-sharp-2.4 >= $GMIME_SHARP_REQUIRED
+ ) were not met:
+
+ $BEAGLE_UI_PKG_ERRORS
+@@ -25783,7 +25783,7 @@ echo "$as_me: error: Package requirement
+ glade-sharp-2.0 >= $GTK_SHARP_REQUIRED
+ gnome-sharp-2.0 >= $GTK_SHARP_REQUIRED
+ gnome-vfs-sharp-2.0 >= $GTK_SHARP_REQUIRED
+- gmime-sharp >= $GMIME_SHARP_REQUIRED
++ gmime-sharp-2.4 >= $GMIME_SHARP_REQUIRED
+ ) were not met:
+
+ $BEAGLE_UI_PKG_ERRORS
+@@ -26167,18 +26167,18 @@ if test -n "$PKG_CONFIG"; then
+ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"evolution-sharp >= \$EVOLUTION_SHARP_REQUIRED \\
+ gconf-sharp-2.0 >= \$GTK_SHARP_REQUIRED \\
+ glib-sharp-2.0 >= \$GTK_SHARP_REQUIRED
+- gmime-sharp >= \$GMIME_SHARP_REQUIRED\"") >&5
++ gmime-sharp-2.4 >= \$GMIME_SHARP_REQUIRED\"") >&5
+ ($PKG_CONFIG --exists --print-errors "evolution-sharp >= $EVOLUTION_SHARP_REQUIRED \
+ gconf-sharp-2.0 >= $GTK_SHARP_REQUIRED \
+ glib-sharp-2.0 >= $GTK_SHARP_REQUIRED
+- gmime-sharp >= $GMIME_SHARP_REQUIRED") 2>&5
++ gmime-sharp-2.4 >= $GMIME_SHARP_REQUIRED") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ pkg_cv_EVO_CFLAGS=`$PKG_CONFIG --cflags "evolution-sharp >= $EVOLUTION_SHARP_REQUIRED \
+ gconf-sharp-2.0 >= $GTK_SHARP_REQUIRED \
+ glib-sharp-2.0 >= $GTK_SHARP_REQUIRED
+- gmime-sharp >= $GMIME_SHARP_REQUIRED" 2>/dev/null`
++ gmime-sharp-2.4 >= $GMIME_SHARP_REQUIRED" 2>/dev/null`
+ else
+ pkg_failed=yes
+ fi
+@@ -26194,18 +26194,18 @@ if test -n "$PKG_CONFIG"; then
+ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"evolution-sharp >= \$EVOLUTION_SHARP_REQUIRED \\
+ gconf-sharp-2.0 >= \$GTK_SHARP_REQUIRED \\
+ glib-sharp-2.0 >= \$GTK_SHARP_REQUIRED
+- gmime-sharp >= \$GMIME_SHARP_REQUIRED\"") >&5
++ gmime-sharp-2.4 >= \$GMIME_SHARP_REQUIRED\"") >&5
+ ($PKG_CONFIG --exists --print-errors "evolution-sharp >= $EVOLUTION_SHARP_REQUIRED \
+ gconf-sharp-2.0 >= $GTK_SHARP_REQUIRED \
+ glib-sharp-2.0 >= $GTK_SHARP_REQUIRED
+- gmime-sharp >= $GMIME_SHARP_REQUIRED") 2>&5
++ gmime-sharp-2.4 >= $GMIME_SHARP_REQUIRED") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ pkg_cv_EVO_LIBS=`$PKG_CONFIG --libs "evolution-sharp >= $EVOLUTION_SHARP_REQUIRED \
+ gconf-sharp-2.0 >= $GTK_SHARP_REQUIRED \
+ glib-sharp-2.0 >= $GTK_SHARP_REQUIRED
+- gmime-sharp >= $GMIME_SHARP_REQUIRED" 2>/dev/null`
++ gmime-sharp-2.4 >= $GMIME_SHARP_REQUIRED" 2>/dev/null`
+ else
+ pkg_failed=yes
+ fi
+@@ -26227,12 +26227,12 @@ fi
+ EVO_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "evolution-sharp >= $EVOLUTION_SHARP_REQUIRED \
+ gconf-sharp-2.0 >= $GTK_SHARP_REQUIRED \
+ glib-sharp-2.0 >= $GTK_SHARP_REQUIRED
+- gmime-sharp >= $GMIME_SHARP_REQUIRED"`
++ gmime-sharp-2.4 >= $GMIME_SHARP_REQUIRED"`
+ else
+ EVO_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "evolution-sharp >= $EVOLUTION_SHARP_REQUIRED \
+ gconf-sharp-2.0 >= $GTK_SHARP_REQUIRED \
+ glib-sharp-2.0 >= $GTK_SHARP_REQUIRED
+- gmime-sharp >= $GMIME_SHARP_REQUIRED"`
++ gmime-sharp-2.4 >= $GMIME_SHARP_REQUIRED"`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$EVO_PKG_ERRORS" >&5
+@@ -26781,12 +26781,12 @@ if test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"
+ shared-mime-info
+- gmime-sharp >= \$GMIME_SHARP_REQUIRED
++ gmime-sharp-2.4 >= \$GMIME_SHARP_REQUIRED
+ glib-sharp-2.0 >= \$GTK_SHARP_REQUIRED
+ \"") >&5
+ ($PKG_CONFIG --exists --print-errors "
+ shared-mime-info
+- gmime-sharp >= $GMIME_SHARP_REQUIRED
++ gmime-sharp-2.4 >= $GMIME_SHARP_REQUIRED
+ glib-sharp-2.0 >= $GTK_SHARP_REQUIRED
+ ") 2>&5
+ ac_status=$?
+@@ -26794,7 +26794,7 @@ if test -n "$PKG_CONFIG"; then
+ (exit $ac_status); }; then
+ pkg_cv_BEAGLED_CFLAGS=`$PKG_CONFIG --cflags "
+ shared-mime-info
+- gmime-sharp >= $GMIME_SHARP_REQUIRED
++ gmime-sharp-2.4 >= $GMIME_SHARP_REQUIRED
+ glib-sharp-2.0 >= $GTK_SHARP_REQUIRED
+ " 2>/dev/null`
+ else
+@@ -26811,12 +26811,12 @@ if test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"
+ shared-mime-info
+- gmime-sharp >= \$GMIME_SHARP_REQUIRED
++ gmime-sharp-2.4 >= \$GMIME_SHARP_REQUIRED
+ glib-sharp-2.0 >= \$GTK_SHARP_REQUIRED
+ \"") >&5
+ ($PKG_CONFIG --exists --print-errors "
+ shared-mime-info
+- gmime-sharp >= $GMIME_SHARP_REQUIRED
++ gmime-sharp-2.4 >= $GMIME_SHARP_REQUIRED
+ glib-sharp-2.0 >= $GTK_SHARP_REQUIRED
+ ") 2>&5
+ ac_status=$?
+@@ -26824,7 +26824,7 @@ if test -n "$PKG_CONFIG"; then
+ (exit $ac_status); }; then
+ pkg_cv_BEAGLED_LIBS=`$PKG_CONFIG --libs "
+ shared-mime-info
+- gmime-sharp >= $GMIME_SHARP_REQUIRED
++ gmime-sharp-2.4 >= $GMIME_SHARP_REQUIRED
+ glib-sharp-2.0 >= $GTK_SHARP_REQUIRED
+ " 2>/dev/null`
+ else
+@@ -26847,13 +26847,13 @@ fi
+ if test $_pkg_short_errors_supported = yes; then
+ BEAGLED_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "
+ shared-mime-info
+- gmime-sharp >= $GMIME_SHARP_REQUIRED
++ gmime-sharp-2.4 >= $GMIME_SHARP_REQUIRED
+ glib-sharp-2.0 >= $GTK_SHARP_REQUIRED
+ "`
+ else
+ BEAGLED_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "
+ shared-mime-info
+- gmime-sharp >= $GMIME_SHARP_REQUIRED
++ gmime-sharp-2.4 >= $GMIME_SHARP_REQUIRED
+ glib-sharp-2.0 >= $GTK_SHARP_REQUIRED
+ "`
+ fi
+@@ -26862,7 +26862,7 @@ fi
+
+ { { echo "$as_me:$LINENO: error: Package requirements (
+ shared-mime-info
+- gmime-sharp >= $GMIME_SHARP_REQUIRED
++ gmime-sharp-2.4 >= $GMIME_SHARP_REQUIRED
+ glib-sharp-2.0 >= $GTK_SHARP_REQUIRED
+ ) were not met:
+
+@@ -26877,7 +26877,7 @@ See the pkg-config man page for more det
+ " >&5
+ echo "$as_me: error: Package requirements (
+ shared-mime-info
+- gmime-sharp >= $GMIME_SHARP_REQUIRED
++ gmime-sharp-2.4 >= $GMIME_SHARP_REQUIRED
+ glib-sharp-2.0 >= $GTK_SHARP_REQUIRED
+ ) were not met:
+
+@@ -26924,7 +26924,7 @@ BEAGLED_LIBS="$BEAGLED_LIBS $GSF_SHARP_L
+
+
+ GSF_SHARP_PREFIX=`$PKG_CONFIG --variable=prefix gsf-sharp`
+-GMIME_SHARP_PREFIX=`$PKG_CONFIG --variable=prefix gmime-sharp`
++GMIME_SHARP_PREFIX=`$PKG_CONFIG --variable=prefix gmime-sharp-2.4`
+
+
+ # Check whether --enable-epiphany-extension was given.
+diff -upNr beagle-0.3.9.orign/Filters/FilterMail.cs beagle-0.3.9/Filters/FilterMail.cs
+--- beagle-0.3.9.orign/Filters/FilterMail.cs 2008-06-12 02:20:07.000000000 +0200
++++ beagle-0.3.9/Filters/FilterMail.cs 2009-01-28 12:33:17.000000000 +0100
+@@ -126,7 +126,7 @@ namespace Beagle.Filters {
+
+ // Messages that are multipart/alternative shouldn't be considered as having
+ // attachments. Unless of course they do.
+- if (mime_part is GMime.Multipart && mime_part.ContentType.Subtype.ToLower () != "alternative")
++ if (mime_part is GMime.Multipart && mime_part.ContentType.MediaSubtype.ToLower () != "alternative")
+ return true;
+
+ return false;
+@@ -140,34 +140,43 @@ namespace Beagle.Filters {
+ AddProperty (Property.NewDate ("fixme:date", message.Date.ToUniversalTime ()));
+
+ GMime.InternetAddressList addrs;
+- addrs = this.message.GetRecipients (GMime.Message.RecipientType.To);
++ addrs = this.message.GetRecipients (GMime.RecipientType.To);
+ foreach (GMime.InternetAddress ia in addrs) {
+ AddProperty (Property.NewUnsearched ("fixme:to", ia.ToString (false)));
+- if (ia.AddressType != GMime.InternetAddressType.Group)
+- AddProperty (Property.New ("fixme:to_address", ia.Addr));
+-
++ if (ia is GMime.InternetAddressMailbox) {
++ GMime.InternetAddressMailbox mailbox = ia as GMime.InternetAddressMailbox;
++
++ AddProperty (Property.New ("fixme:to_address", mailbox.Address));
++ }
++
+ AddProperty (Property.New ("fixme:to_name", ia.Name));
+ AddEmailLink (ia);
+ }
+ addrs.Dispose ();
+
+- addrs = this.message.GetRecipients (GMime.Message.RecipientType.Cc);
++ addrs = this.message.GetRecipients (GMime.RecipientType.Cc);
+ foreach (GMime.InternetAddress ia in addrs) {
+ AddProperty (Property.NewUnsearched ("fixme:cc", ia.ToString (false)));
+- if (ia.AddressType != GMime.InternetAddressType.Group)
+- AddProperty (Property.New ("fixme:cc_address", ia.Addr));
+-
++ if (ia is GMime.InternetAddressMailbox) {
++ GMime.InternetAddressMailbox mailbox = ia as GMime.InternetAddressMailbox;
++
++ AddProperty (Property.New ("fixme:cc_address", mailbox.Address));
++ }
++
+ AddProperty (Property.New ("fixme:cc_name", ia.Name));
+ AddEmailLink (ia);
+ }
+ addrs.Dispose ();
+
+- addrs = GMime.InternetAddressList.ParseString (GMime.Utils.HeaderDecodePhrase (this.message.Sender));
++ addrs = GMime.InternetAddressList.Parse (this.message.Sender);
+ foreach (GMime.InternetAddress ia in addrs) {
+ AddProperty (Property.NewUnsearched ("fixme:from", ia.ToString (false)));
+- if (ia.AddressType != GMime.InternetAddressType.Group)
+- AddProperty (Property.New ("fixme:from_address", ia.Addr));
+-
++ if (ia is GMime.InternetAddressMailbox) {
++ GMime.InternetAddressMailbox mailbox = ia as GMime.InternetAddressMailbox;
++
++ AddProperty (Property.New ("fixme:from_address", mailbox.Address));
++ }
++
+ AddProperty (Property.New ("fixme:from_name", ia.Name));
+ AddEmailLink (ia);
+ }
+@@ -184,7 +193,7 @@ namespace Beagle.Filters {
+ AddProperty (Property.NewUnsearched ("fixme:msgid", GMime.Utils.DecodeMessageId (msgid)));
+
+ foreach (GMime.References refs in this.message.References)
+- AddProperty (Property.NewUnsearched ("fixme:reference", refs.Msgid));
++ AddProperty (Property.NewUnsearched ("fixme:reference", refs.MessageId));
+
+ string list_id = this.message.GetHeader ("List-Id");
+ if (list_id != null)
+@@ -345,16 +354,15 @@ namespace Beagle.Filters {
+ }
+ } else if (mime_part is GMime.Multipart) {
+ GMime.Multipart multipart = (GMime.Multipart) mime_part;
+-
+- int num_parts = multipart.Number;
++ int num_parts = multipart.Count;
+
+ // If the mimetype is multipart/alternative, we only want to index
+ // one part -- the richest one we can filter.
+- if (mime_part.ContentType.Subtype.ToLower () == "alternative") {
++ if (mime_part.ContentType.MediaSubtype.ToLower () == "alternative") {
+ // The richest formats are at the end, so work from there
+ // backward.
+ for (int i = num_parts - 1; i >= 0; i--) {
+- GMime.Object subpart = multipart.GetPart (i);
++ GMime.Object subpart = multipart[i];
+
+ if (IsMimeTypeHandled (subpart.ContentType.ToString ())) {
+ part = subpart;
+@@ -370,7 +378,7 @@ namespace Beagle.Filters {
+ // the parts, treat them like a bunch of attachments.
+ if (part == null) {
+ for (int i = 0; i < num_parts; i++) {
+- using (GMime.Object subpart = multipart.GetPart (i))
++ using (GMime.Object subpart = multipart[i])
+ this.OnEachPart (subpart);
+ }
+ }
+@@ -400,7 +408,7 @@ namespace Beagle.Filters {
+ } else if (mime_type == "text/html") {
+ no_child_needed = true;
+ html_part = true;
+- string enc = part.GetContentTypeParameter ("charset");
++ string enc = part.ContentType.GetParameter ("charset");
+ // DataWrapper.Stream is a very limited stream
+ // and does not allow Seek or Tell
+ // HtmlFilter requires Stream.Position=0.
+@@ -473,7 +481,7 @@ namespace Beagle.Filters {
+ if (length != -1)
+ child.AddProperty (Property.NewUnsearched ("fixme:filesize", length));
+
+- if (part.ContentType.Type.ToLower () == "text")
++ if (part.ContentType.MediaType.ToLower () == "text")
+ child.SetTextReader (new StreamReader (stream));
+ else
+ child.SetBinaryStream (stream);
diff --git a/extra/beagle/beagle-0.3.9-mono-data-sqlite-2.patch b/extra/beagle/beagle-0.3.9-mono-data-sqlite-2.patch
new file mode 100644
index 000000000..ef090be9e
--- /dev/null
+++ b/extra/beagle/beagle-0.3.9-mono-data-sqlite-2.patch
@@ -0,0 +1,81 @@
+--- beagle-0.3.9/Util/FSpotTools.cs.orig 2010-01-30 14:45:38.000000000 +0100
++++ beagle-0.3.9/Util/FSpotTools.cs 2010-01-30 14:47:00.000000000 +0100
+@@ -85,8 +85,12 @@
+ while (reader == null) {
+ try {
+ reader = command.ExecuteReader ();
+- } catch (SqliteBusyException) {
+- Thread.Sleep (50);
++ } catch (SqliteException e) {
++ if (e.ErrorCode == SQLiteErrorCode.Busy) {
++ Thread.Sleep (50);
++ } else {
++ throw;
++ }
+ }
+ }
+ reader.Close ();
+--- beagle-0.3.9/beagled/SqliteUtils.cs.orig 2010-01-30 14:47:14.000000000 +0100
++++ beagle-0.3.9/beagled/SqliteUtils.cs 2010-01-30 14:53:16.000000000 +0100
+@@ -55,8 +55,13 @@
+ try {
+ ret = command.ExecuteNonQuery ();
+ break;
+- } catch (SqliteBusyException ex) {
+- Thread.Sleep (50);
++ } catch (SqliteException ex) {
++ if (ex.ErrorCode == SQLiteErrorCode.Busy) {
++ Thread.Sleep (50);
++ } else {
++ Log.Error(ex, "SQL that caused the exception: {0}", command_text);
++ throw;
++ }
+ } catch (Exception e) {
+ Log.Error (e, "SQL that caused the exception: {0}", command_text);
+ throw;
+@@ -79,8 +84,13 @@
+ try {
+ ret = command.ExecuteNonQuery ();
+ break;
+- } catch (SqliteBusyException ex) {
+- Thread.Sleep (50);
++ } catch (SqliteException ex) {
++ if (ex.ErrorCode == SQLiteErrorCode.Busy) {
++ Thread.Sleep (50);
++ } else {
++ Log.Error(ex, "SQL that caused the exception: {0}", command.CommandText);
++ throw;
++ }
+ } catch (Exception e) {
+ Log.Error ( e, "SQL that caused the exception: {0}", command.CommandText);
+ throw;
+@@ -96,8 +106,12 @@
+ while (reader == null) {
+ try {
+ reader = command.ExecuteReader ();
+- } catch (SqliteBusyException ex) {
+- Thread.Sleep (50);
++ } catch (SqliteException ex) {
++ if (ex.ErrorCode == SQLiteErrorCode.Busy) {
++ Thread.Sleep (50);
++ } else {
++ throw;
++ }
+ }
+ }
+ return reader;
+@@ -108,8 +122,12 @@
+ while (true) {
+ try {
+ return reader.Read ();
+- } catch (SqliteBusyException ex) {
+- Thread.Sleep (50);
++ } catch (SqliteException ex) {
++ if (ex.ErrorCode == SQLiteErrorCode.Busy) {
++ Thread.Sleep (50);
++ } else {
++ throw;
++ }
+ }
+ }
+ }
diff --git a/extra/beagle/beagle-0.3.9-spew.patch b/extra/beagle/beagle-0.3.9-spew.patch
new file mode 100644
index 000000000..6e31c964c
--- /dev/null
+++ b/extra/beagle/beagle-0.3.9-spew.patch
@@ -0,0 +1,12 @@
+diff -upNr beagle-0.3.9.orign/beagled/BeagleDaemon.cs beagle-0.3.9/beagled/BeagleDaemon.cs
+--- beagle-0.3.9.orign/beagled/BeagleDaemon.cs 2008-06-11 20:42:20.000000000 +0200
++++ beagle-0.3.9/beagled/BeagleDaemon.cs 2009-01-31 12:44:23.000000000 +0100
+@@ -456,7 +456,7 @@ namespace Beagle.Daemon {
+ // debugging this code, after all...
+ // arg_debug ? LogLevel.Debug : LogLevel.Warn
+
+- Log.Initialize (PathFinder.LogDir, "Beagle", LogLevel.Debug, arg_fg);
++ Log.Initialize (PathFinder.LogDir, "Beagle", arg_debug ? LogLevel.Debug : LogLevel.Warn, arg_fg);
+ Log.Always ("Starting Beagle Daemon (version {0})", ExternalStringsHack.Version);
+ Log.Always ("Running on {0}", SystemInformation.MonoRuntimeVersion);
+ Log.Always ("Command Line: {0}",
diff --git a/extra/beagle/beagle.install b/extra/beagle/beagle.install
new file mode 100644
index 000000000..bfc90ecd1
--- /dev/null
+++ b/extra/beagle/beagle.install
@@ -0,0 +1,8 @@
+post_install() {
+ getent group beaglidx >/dev/null || usr/sbin/groupadd -g 86 beaglidx
+ getent passwd beaglidx >/dev/null || usr/sbin/useradd -c 'User for Beagle indexing' -u 86 -g beaglidx -d '/' -s /bin/false beaglidx
+}
+
+post_upgrade() {
+ post_install $1
+}
diff --git a/extra/beagle/mono-2.8.patch b/extra/beagle/mono-2.8.patch
new file mode 100644
index 000000000..503243444
--- /dev/null
+++ b/extra/beagle/mono-2.8.patch
@@ -0,0 +1,152 @@
+Patch to enable compilation against mono-2.8
+
+* Mono-2.8 uses mono-2.pc instead of mono.pc for setting cflags and libs.
+* Mono-2.8 disables direct access to struct MonoType fields; use accessors
+instead (mono_type_get_type and mono_field_get_flags have been present in
+the API since at least mono-1.2, so we do not need any version ifdefs).
+* Cast FSpot.MetadataStore to IEnumerable in foreach() to prevent CS1640
+errors (non-unique enumeration of the type) with mono-2.8's gmcs.
+
+diff -ru beagle-0.3.9-orig/configure.in beagle-0.3.9/configure.in
+--- beagle-0.3.9-orig/configure.in 2010-10-16 01:30:03.807825004 -0400
++++ beagle-0.3.9/configure.in 2010-10-16 01:30:10.385825003 -0400
+@@ -59,11 +59,20 @@
+ AC_MSG_ERROR([You need to install the Mono gmcs compiler])
+ fi
+
+-AC_MSG_CHECKING([for mono.pc])
+-if test -z `$PKG_CONFIG --variable=prefix mono`; then
+- AC_MSG_ERROR([missing the mono.pc file, usually found in the mono-devel package])
++# mono-2.8 and higher uses mono-2.pc instead of mono.pc for cflags and libs
++AC_MSG_CHECKING([for mono-2.pc])
++if test -z `$PKG_CONFIG --variable=prefix mono-2`; then
++ AC_MSG_RESULT([not found])
++ AC_MSG_CHECKING([for mono.pc])
++ if test -z `$PKG_CONFIG --variable=prefix mono`; then
++ AC_MSG_ERROR([missing the mono.pc file, usually found in the mono-devel package])
++ else
++ AC_MSG_RESULT([found])
++ mono_pc=mono
++ fi
+ else
+ AC_MSG_RESULT([found])
++ mono_pc=mono-2
+ fi
+
+ BEAGLE_DEFINES=""
+@@ -71,10 +80,10 @@
+ # check that we have the require version of mono
+
+ # Temporary: check for mono-1.9
+-PKG_CHECK_MODULES(MONO, mono >= 1.9, mono_1_9=yes, mono_1_9=no)
++PKG_CHECK_MODULES(MONO, $mono_pc >= 1.9, mono_1_9=yes, mono_1_9=no)
+ if test "x$mono_1_9" = "xno"; then
+ AC_MSG_RESULT([missing mono >= 1.9. Searching for mono >= 1.2.4])
+- PKG_CHECK_MODULES(MONO, mono >= $MONO_REQUIRED)
++ PKG_CHECK_MODULES(MONO, $mono_pc >= $MONO_REQUIRED)
+ else
+ AC_MSG_RESULT([found mono >= 1.9])
+ BEAGLE_DEFINES="$BEAGLE_DEFINES -define:MONO_1_9"
+@@ -84,7 +93,7 @@
+ needed_dlls="Mono.Data.Sqlite Mono.Posix System.Data System.Web ICSharpCode.SharpZipLib"
+ for i in $needed_dlls; do
+ AC_MSG_CHECKING([for $i.dll])
+- if test ! -e `$PKG_CONFIG --variable=prefix mono`/lib/mono/2.0/$i.dll; then
++ if test ! -e `$PKG_CONFIG --variable=prefix $mono_pc`/lib/mono/2.0/$i.dll; then
+ AC_MSG_ERROR([missing required mono DLL: $i.dll])
+ else
+ AC_MSG_RESULT([found])
+@@ -195,7 +204,7 @@
+ if test "x$enable_google" = "xyes"; then
+ i="System.Security"
+ AC_MSG_CHECKING([for $i.dll (needed by Google backends)])
+- if test ! -e `$PKG_CONFIG --variable=prefix mono`/lib/mono/2.0/$i.dll; then
++ if test ! -e `$PKG_CONFIG --variable=prefix $mono_pc`/lib/mono/2.0/$i.dll; then
+ AC_MSG_ERROR([missing required mono DLL: $i.dll])
+ else
+ AC_MSG_RESULT([found])
+@@ -560,7 +569,7 @@
+ if test "x$enable_qt" != "xno" -a "x$has_qyoto" = "xno"; then
+ i="qt-dotnet"
+ AC_MSG_CHECKING([for $i.dll])
+- if test ! -e `$PKG_CONFIG --variable=prefix mono`/lib/mono/2.0/$i.dll; then
++ if test ! -e `$PKG_CONFIG --variable=prefix $mono_pc`/lib/mono/2.0/$i.dll; then
+ AC_MSG_ERROR([missing required mono DLL: $i.dll])
+ else
+ AC_MSG_RESULT([found])
+Only in beagle-0.3.9: configure.in.orig
+diff -ru beagle-0.3.9-orig/Filters/FilterImage.cs beagle-0.3.9/Filters/FilterImage.cs
+--- beagle-0.3.9-orig/Filters/FilterImage.cs 2008-04-13 15:24:13.000000000 -0400
++++ beagle-0.3.9/Filters/FilterImage.cs 2010-10-16 02:08:10.755825005 -0400
+@@ -141,7 +141,7 @@
+ Resource rights_anon = null;
+ Resource title_anon = null;
+
+- foreach (Statement stmt in xmp.Store) {
++ foreach (Statement stmt in (IEnumerable)xmp.Store) {
+ if (stmt.Predicate == MetadataStore.Namespaces.Resolve ("dc:subject")) {
+ //Console.WriteLine ("found subject");
+ subject_anon = stmt.Object;
+@@ -163,7 +163,7 @@
+ }
+ }
+
+- foreach (Statement stmt in xmp.Store) {
++ foreach (Statement stmt in (IEnumerable)xmp.Store) {
+ if (stmt.Subject == subject_anon &&
+ stmt.Predicate != MetadataStore.Namespaces.Resolve ("rdf:type")) {
+ AddProperty (Beagle.Property.New ("dc:subject", ((Literal)stmt.Object).Value));
+diff -ru beagle-0.3.9-orig/Filters/FilterPdf.cs beagle-0.3.9/Filters/FilterPdf.cs
+--- beagle-0.3.9-orig/Filters/FilterPdf.cs 2008-04-13 15:31:18.000000000 -0400
++++ beagle-0.3.9/Filters/FilterPdf.cs 2010-10-16 02:22:09.528825003 -0400
+@@ -8,6 +8,7 @@
+ //
+
+ using System;
++using System.Collections;
+ using System.IO;
+ using System.Diagnostics;
+
+@@ -220,7 +221,7 @@
+ Resource rights_anon = null;
+ Resource title_anon = null;
+
+- foreach (Statement stmt in xmp.Store) {
++ foreach (Statement stmt in (IEnumerable)xmp.Store) {
+ if (stmt.Predicate == MetadataStore.Namespaces.Resolve ("dc:subject")) {
+ //Console.WriteLine ("found subject");
+ subject_anon = stmt.Object;
+@@ -239,7 +240,7 @@
+ }
+ }
+
+- foreach (Statement stmt in xmp.Store) {
++ foreach (Statement stmt in (IEnumerable)xmp.Store) {
+ if (stmt.Subject == subject_anon &&
+ stmt.Predicate != MetadataStore.Namespaces.Resolve ("rdf:type")) {
+ AddProperty (Beagle.Property.New ("dc:subject", ((Literal)stmt.Object).Value));
+diff -ru beagle-0.3.9-orig/glue/mono-glue.c beagle-0.3.9/glue/mono-glue.c
+--- beagle-0.3.9-orig/glue/mono-glue.c 2007-11-26 20:50:05.000000000 -0500
++++ beagle-0.3.9/glue/mono-glue.c 2010-10-16 01:04:19.839825010 -0400
+@@ -79,18 +79,18 @@
+ type = mono_class_get_type (klass);
+
+ /* This is an array, so drill down into it */
+- if (type->type == MONO_TYPE_SZARRAY)
++ if (mono_type_get_type (type) == MONO_TYPE_SZARRAY)
+ total += memory_usage_array ((MonoArray *) obj, visited);
+
+ while ((field = mono_class_get_fields (klass, &iter)) != NULL) {
+ MonoType *ftype = mono_field_get_type (field);
+ gpointer value;
+
+- if ((ftype->attrs & (FIELD_ATTRIBUTE_STATIC | FIELD_ATTRIBUTE_HAS_FIELD_RVA)) != 0)
++ if ((mono_field_get_flags (field) & (FIELD_ATTRIBUTE_STATIC | FIELD_ATTRIBUTE_HAS_FIELD_RVA)) != 0)
+ continue;
+
+ /* FIXME: There are probably other types we need to drill down into */
+- switch (ftype->type) {
++ switch (mono_type_get_type (ftype)) {
+
+ case MONO_TYPE_CLASS:
+ case MONO_TYPE_OBJECT:
diff --git a/extra/beep/PKGBUILD b/extra/beep/PKGBUILD
new file mode 100644
index 000000000..bee2afc6d
--- /dev/null
+++ b/extra/beep/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 90320 2010-09-10 17:01:06Z eric $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+
+pkgname=beep
+pkgver=1.3
+pkgrel=1
+pkgdesc="Advanced PC speaker beeping program"
+arch=('i686' 'x86_64')
+url="http://www.johnath.com/beep"
+license=('GPL2')
+depends=('glibc')
+source=(http://www.johnath.com/beep/${pkgname}-${pkgver}.tar.gz)
+md5sums=('49c340ceb95dbda3f97b2daafac7892a')
+sha1sums=('8cba283e507dc9e401da011a9c92a2e24ea2bf70')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ sed -i "s:-Wall:${CFLAGS}:" Makefile
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ install -D -m755 beep "${pkgdir}/usr/bin/beep"
+ install -D -m644 beep.1.gz "${pkgdir}/usr/share/man/man1/beep.1.gz"
+}
diff --git a/extra/bftpd/PKGBUILD b/extra/bftpd/PKGBUILD
new file mode 100644
index 000000000..fb9c4aa1a
--- /dev/null
+++ b/extra/bftpd/PKGBUILD
@@ -0,0 +1,39 @@
+# $Id: PKGBUILD 95186 2010-10-16 23:03:07Z thomas $
+# Maintainer: Thomas Baechler <thomas@archlinux.org>
+
+pkgname=bftpd
+pkgver=3.1
+pkgrel=1
+pkgdesc="Small, easy-to-configure FTP server"
+arch=(i686 x86_64)
+url="http://bftpd.sourceforge.net/"
+license=('GPL')
+depends=('glibc' 'pam')
+install=bftpd.install
+backup=(etc/bftpd.conf etc/logrotate.d/bftpd etc/pam.d/bftpd)
+source=(http://downloads.sourceforge.net/sourceforge/bftpd/bftpd-$pkgver.tar.gz
+ bftpd.rc bftpd.logrotate bftpd.pam)
+md5sums=('1aeda6f3da2b10dcf5dca1b1d8466c48'
+ '56a1bf7738a6db2b2cff89e611f4f11a'
+ '853680dad0df39d0b4d2fb43d4be430a'
+ '96f82c38f3f540b53f3e5144900acf17')
+
+build() {
+ cd ${srcdir}/$pkgname
+ ./configure --prefix=/usr --enable-pam --mandir=/usr/share/man
+ make || return 1
+}
+
+package() {
+ cd ${srcdir}/$pkgname
+ install -d -m755 ${pkgdir}/usr/{sbin,share/man/man8}
+ install -d -m755 ${pkgdir}/var/run/bftpd
+ install -d -m755 ${pkgdir}/var/log
+ install -D -m644 ${srcdir}/bftpd.logrotate ${pkgdir}/etc/logrotate.d/bftpd || return 1
+ install -D -m755 ${srcdir}/bftpd.rc ${pkgdir}/etc/rc.d/bftpd || return 1
+ make DESTDIR=${pkgdir} install || return 1
+ rm -f ${pkgdir}/var/log/bftpd.log
+ rmdir ${pkgdir}/var/log
+ mkdir -p ${pkgdir}/etc/pam.d
+ cp ${srcdir}/bftpd.pam ${pkgdir}/etc/pam.d/bftpd || return 1
+}
diff --git a/extra/bftpd/bftpd.install b/extra/bftpd/bftpd.install
new file mode 100644
index 000000000..25ebfa58b
--- /dev/null
+++ b/extra/bftpd/bftpd.install
@@ -0,0 +1,11 @@
+# arg 1: the new package version
+# arg 2: the old package version
+
+post_install () {
+ [ ! -f /var/log/bftpd.log ] && touch /var/log/bftpd.log
+ true
+}
+
+post_upgrade() {
+ post_install $1
+}
diff --git a/extra/bftpd/bftpd.logrotate b/extra/bftpd/bftpd.logrotate
new file mode 100644
index 000000000..c0f0b3393
--- /dev/null
+++ b/extra/bftpd/bftpd.logrotate
@@ -0,0 +1,5 @@
+/var/log/bftpd.log {
+ missingok
+ notifempty
+ delaycompress
+}
diff --git a/extra/bftpd/bftpd.pam b/extra/bftpd/bftpd.pam
new file mode 100644
index 000000000..53724d1f8
--- /dev/null
+++ b/extra/bftpd/bftpd.pam
@@ -0,0 +1,3 @@
+auth required pam_unix.so
+account required pam_unix.so
+session required pam_unix.so
diff --git a/extra/bftpd/bftpd.rc b/extra/bftpd/bftpd.rc
new file mode 100755
index 000000000..2f31cf50c
--- /dev/null
+++ b/extra/bftpd/bftpd.rc
@@ -0,0 +1,44 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+PIDFILE="/var/run/bftpd.pid"
+
+case "$1" in
+ start)
+ stat_busy "Starting bftpd Server"
+ PID="$(pidof -o %PPID /usr/sbin/bftpd)"
+ if [ -z "$PID" ]; then
+ /usr/sbin/bftpd -d
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ # wait until it forks
+ sleep 2
+ echo $(pidof -o %PPID /usr/sbin/bftpd) > $PIDFILE
+ add_daemon bftpd
+ stat_done
+ fi
+ else
+ stat_fail
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping bftpd Server"
+ if [ -f $PIDFILE ] && kill -0 $(cat $PIDFILE); then
+ kill -15 $(cat $PIDFILE)
+ rm $PIDFILE
+ stat_done
+ else
+ stat_fail
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
diff --git a/extra/bigloo/PKGBUILD b/extra/bigloo/PKGBUILD
new file mode 100644
index 000000000..079a142aa
--- /dev/null
+++ b/extra/bigloo/PKGBUILD
@@ -0,0 +1,41 @@
+# $Id: PKGBUILD 110532 2011-02-19 18:50:57Z ibiru $
+# Maintainer: Jürgen Hötzel <juergen@archlinux.org>
+# Contributor: John Proctor <jproctor@prium.net>
+# Contributor: Kevin Piche <kevin@archlinux.org>
+
+pkgname=bigloo
+_pkgver=3.6a
+pkgver=${_pkgver/-/_}
+pkgrel=2
+pkgdesc="Fast scheme compiler"
+arch=('i686' 'x86_64')
+url="http://www-sop.inria.fr/mimosa/fp/Bigloo/"
+license=('GPL' 'LGPL')
+depends=('openssl' 'sqlite3')
+makedepends=('jdk' 'emacs')
+optdepends=('emacs')
+options=('!makeflags')
+install=bigloo.install
+source=(ftp://ftp-sop.inria.fr/indes/fp/Bigloo/${pkgname}${_pkgver}.tar.gz)
+md5sums=('484c09cd0e0f84c96999d889de35cd1e')
+
+build() {
+ cd "${srcdir}/${pkgname}${_pkgver}"
+ ./configure --prefix=/usr \
+ --enable-ssl \
+ --enable-sqlite \
+ --disable-gstreamer \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --docdir=/usr/share/doc/bigloo \
+ --dotnet=no \
+ --javaprefix=/opt/java/bin
+ make build compile-bee
+}
+
+package() {
+ cd "${srcdir}/${pkgname}${_pkgver}"
+ make DESTDIR="${pkgdir}" install install-bee
+ make -C manuals DESTDIR="${pkgdir}" install-bee
+ chmod 644 "${pkgdir}"/usr/lib/bigloo/${_pkgver%-*}/*.a
+}
diff --git a/extra/bigloo/bigloo.install b/extra/bigloo/bigloo.install
new file mode 100644
index 000000000..fd7a64edb
--- /dev/null
+++ b/extra/bigloo/bigloo.install
@@ -0,0 +1,21 @@
+infodir=/usr/share/info
+filelist=(bigloo.info bdb.info)
+
+post_install() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info $infodir/$file.gz $infodir/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info --delete $infodir/$file.gz $infodir/dir 2> /dev/null
+ done
+}
+
diff --git a/extra/bind/127.0.0.zone b/extra/bind/127.0.0.zone
new file mode 100644
index 000000000..509c311f6
--- /dev/null
+++ b/extra/bind/127.0.0.zone
@@ -0,0 +1,11 @@
+$ORIGIN 0.0.127.in-addr.arpa.
+
+@ 1D IN SOA localhost. root.localhost. (
+ 42 ; serial (yyyymmdd##)
+ 3H ; refresh
+ 15M ; retry
+ 1W ; expiry
+ 1D ) ; minimum ttl
+
+ 1D IN NS localhost.
+1 1D IN PTR localhost.
diff --git a/extra/bind/ChangeLog b/extra/bind/ChangeLog
new file mode 100644
index 000000000..fac736994
--- /dev/null
+++ b/extra/bind/ChangeLog
@@ -0,0 +1,15 @@
+
+2010-03-27 kevin <kevin@archlinux.org>
+
+ * bind 9.7.0.P1-1
+ - Patch addresses excessive query traffic generated when there is a break
+ in the DNSSEC trust chain as a result of a configuration error
+
+2010-01-22 kevin <kevin@archlinux.org>
+
+ * bind 9.6.1.P3-1
+ - Fix for CVE-2010-0097, VU#360341, BIND 9 DNSSEC validation code could
+ cause bogus NXDOMAIN responses
+ - Updated fix for CVE-2009-4022, VU#418861, BIND 9 Cache Update from
+ Additional Section
+
diff --git a/extra/bind/PKGBUILD b/extra/bind/PKGBUILD
new file mode 100644
index 000000000..851c25f4e
--- /dev/null
+++ b/extra/bind/PKGBUILD
@@ -0,0 +1,79 @@
+# $Id: PKGBUILD 112958 2011-03-08 00:19:22Z bisson $
+# Maintainer: judd <jvinet@zeroflux.org>
+# Contributor: Mario Vazquez <mario_vazq@hotmail.com>
+
+pkgname=bind
+
+# Use a period and not a hyphen before the patch level for proper versioning.
+pkgver=9.8.0
+_pkgver=9.8.0
+pkgrel=1
+
+pkgdesc='Berkeley Internet Name Daemon (BIND) is the reference implementation of the Domain Name System (DNS) protocols'
+arch=('i686' 'x86_64')
+url='http://www.isc.org/software/bind/'
+license=('custom:ISC')
+provides=('dns-server')
+backup=('etc/logrotate.d/named'
+ 'etc/conf.d/named'
+ 'etc/named.conf'
+ 'etc/rndc.key')
+depends=('openssl' 'libxml2')
+options=('!makeflags' '!libtool')
+source=("http://ftp.isc.org/isc/bind9/${_pkgver}/${pkgname}-${_pkgver}.tar.gz"
+ 'ftp://ftp.rs.internic.net/domain/db.cache'
+ 'so_bsdcompat.patch'
+ 'notools.patch'
+ 'named'
+ 'named.conf'
+ 'named.conf.d'
+ 'named.logrotate'
+ 'localhost.zone'
+ '127.0.0.zone')
+sha1sums=('33019694ef3119d9daa1e8ff5117a6688e188528'
+ 'ee52947062c1582858187716b776afa3613608fb'
+ '2f737f4e81186447ac2ef370fa8dcea0b3abec31'
+ '5277cf4d6fbc5728c55b51c77c9347d28393fb7c'
+ '02b0e20a542663d27af4faa4d2e397ae2764276e'
+ '5ca7a5f2a132548a090a045a2df3acea6b35d9eb'
+ '7848edbfb9a848843f57c11c02b0289eefd42d00'
+ '9ffb5c3f72390a517aeae557e32349d5d278cb63'
+ '76a0d4cd1b913db177a5a375bebc47e5956866ec'
+ '53be0f1437ebe595240d8dbdd819939582b97fb9')
+
+install=install
+
+build() {
+ cd "${srcdir}/${pkgname}-${_pkgver}"
+
+ patch -p1 -i "${srcdir}"/so_bsdcompat.patch
+ patch -p1 -i "${srcdir}"/notools.patch
+
+ ./configure \
+ --prefix=/usr --sysconfdir=/etc --localstatedir=/var \
+ --with-libtool --enable-static=no --disable-linux-caps \
+ --with-openssl=yes --with-libxml2=yes
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${_pkgver}"
+
+ make DESTDIR="${pkgdir}" install
+
+ install -D -m644 COPYRIGHT "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+
+ install -d "${pkgdir}"/usr/share/doc/bind
+ install ./doc/arm/*.html "${pkgdir}"/usr/share/doc/bind/
+
+ install -D -m755 ../named "${pkgdir}"/etc/rc.d/named
+ install -D -m644 ../named.conf.d "${pkgdir}"/etc/conf.d/named
+ install -D -m600 ../named.logrotate "${pkgdir}"/etc/logrotate.d/named
+ install -D -m640 -o 0 -g 40 ../named.conf "${pkgdir}"/etc/named.conf
+
+ install -d -m750 -o 0 -g 40 "${pkgdir}"/var/named
+ install -d -m755 -o 40 -g 40 "${pkgdir}"/var/run/named
+ install -m640 -o 0 -g 40 ../db.cache "${pkgdir}"/var/named/root.hint
+ install -m640 -o 0 -g 40 ../127.0.0.zone "${pkgdir}"/var/named/
+ install -m640 -o 0 -g 40 ../localhost.zone "${pkgdir}"/var/named/
+}
diff --git a/extra/bind/install b/extra/bind/install
new file mode 100644
index 000000000..e3a1397cb
--- /dev/null
+++ b/extra/bind/install
@@ -0,0 +1,21 @@
+post_install() {
+ getent group named >/dev/null || groupadd -g 40 named
+ getent passwd named >/dev/null || useradd -u 40 -c "BIND DNS Server" -g named -d /var/named -s /bin/false named
+ passwd -l named &>/dev/null
+
+ touch var/log/named.log
+ chown named:named var/log/named.log
+
+ # create an rndc.key if it doesn't already exist
+ if [ ! -s etc/rndc.key ]; then
+ usr/sbin/rndc-confgen -r /dev/urandom -b 256 | head -n 5 >>etc/rndc.key
+ chown root:named etc/rndc.key
+ chmod 640 etc/rndc.key
+ fi
+}
+
+pre_remove() {
+ getent passwd named &>/dev/null && userdel named >/dev/null
+ getent group named &>/dev/null && groupdel named >/dev/null
+ return 0
+}
diff --git a/extra/bind/localhost.zone b/extra/bind/localhost.zone
new file mode 100644
index 000000000..e3ff9641c
--- /dev/null
+++ b/extra/bind/localhost.zone
@@ -0,0 +1,10 @@
+$ORIGIN localhost.
+@ 1D IN SOA @ root (
+ 42 ; serial (yyyymmdd##)
+ 3H ; refresh
+ 15M ; retry
+ 1W ; expiry
+ 1D ) ; minimum ttl
+
+ 1D IN NS @
+ 1D IN A 127.0.0.1
diff --git a/extra/bind/named b/extra/bind/named
new file mode 100755
index 000000000..3be558f27
--- /dev/null
+++ b/extra/bind/named
@@ -0,0 +1,48 @@
+#!/bin/bash
+
+NAMED_ARGS=
+[ -f /etc/conf.d/named ] && . /etc/conf.d/named
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+PID=`pidof -o %PPID /usr/sbin/named`
+case "$1" in
+ start)
+ stat_busy "Starting BIND"
+ [ -z "$PID" ] && /usr/sbin/named ${NAMED_ARGS}
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon named
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping BIND"
+ [ ! -z "$PID" ] && kill $PID &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon named
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ reload)
+ stat_busy "Reloading BIND"
+ [ ! -z "$PID" ] && rndc reload &>/dev/null || kill -HUP $PID &>/dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ stat_done
+ fi
+ ;;
+ *)
+ echo "usage: $0 {start|stop|reload|restart}"
+esac
+exit 0
diff --git a/extra/bind/named.conf b/extra/bind/named.conf
new file mode 100644
index 000000000..38fb12cbe
--- /dev/null
+++ b/extra/bind/named.conf
@@ -0,0 +1,64 @@
+//
+// /etc/named.conf
+//
+
+options {
+ directory "/var/named";
+ pid-file "/var/run/named/named.pid";
+ auth-nxdomain yes;
+ datasize default;
+// Uncomment these to enable IPv6 connections support
+// IPv4 will still work:
+// listen-on-v6 { any; };
+// Add this for no IPv4:
+// listen-on { none; };
+
+ // Default security settings.
+ allow-recursion { 127.0.0.1; };
+ allow-transfer { none; };
+ allow-update { none; };
+ version none;
+ hostname none;
+ server-id none;
+};
+
+zone "localhost" IN {
+ type master;
+ file "localhost.zone";
+ allow-transfer { any; };
+};
+
+zone "0.0.127.in-addr.arpa" IN {
+ type master;
+ file "127.0.0.zone";
+ allow-transfer { any; };
+};
+
+zone "." IN {
+ type hint;
+ file "root.hint";
+};
+
+//zone "example.org" IN {
+// type slave;
+// file "example.zone";
+// masters {
+// 192.168.1.100;
+// };
+// allow-query { any; };
+// allow-transfer { any; };
+//};
+
+logging {
+ channel xfer-log {
+ file "/var/log/named.log";
+ print-category yes;
+ print-severity yes;
+ print-time yes;
+ severity info;
+ };
+ category xfer-in { xfer-log; };
+ category xfer-out { xfer-log; };
+ category notify { xfer-log; };
+};
+
diff --git a/extra/bind/named.conf.d b/extra/bind/named.conf.d
new file mode 100644
index 000000000..aecbd2307
--- /dev/null
+++ b/extra/bind/named.conf.d
@@ -0,0 +1,4 @@
+#
+# Parameters to be passed to BIND
+#
+NAMED_ARGS="-u named"
diff --git a/extra/bind/named.logrotate b/extra/bind/named.logrotate
new file mode 100644
index 000000000..ef1a2d032
--- /dev/null
+++ b/extra/bind/named.logrotate
@@ -0,0 +1,6 @@
+/var/log/named.log {
+ missingok
+ postrotate
+ /bin/kill -HUP `cat /var/run/named/named.pid 2>/dev/null` 2>/dev/null || true
+ endscript
+}
diff --git a/extra/bind/notools.patch b/extra/bind/notools.patch
new file mode 100644
index 000000000..2d16fdcd5
--- /dev/null
+++ b/extra/bind/notools.patch
@@ -0,0 +1,11 @@
+--- bind-9.7.0/bin/Makefile.in.orig 2010-03-14 21:19:23.000000000 -0400
++++ bind-9.7.0/bin/Makefile.in 2010-03-14 21:19:37.000000000 -0400
+@@ -19,7 +19,7 @@
+ VPATH = @srcdir@
+ top_srcdir = @top_srcdir@
+
+-SUBDIRS = named rndc dig dnssec tests tools nsupdate \
++SUBDIRS = named rndc dnssec tests tools \
+ check confgen @PKCS11_TOOLS@
+ TARGETS =
+
diff --git a/extra/bind/so_bsdcompat.patch b/extra/bind/so_bsdcompat.patch
new file mode 100644
index 000000000..cae2b835c
--- /dev/null
+++ b/extra/bind/so_bsdcompat.patch
@@ -0,0 +1,13 @@
+diff -aur old/lib/isc/unix/socket.c new/lib/isc/unix/socket.c
+--- old/lib/isc/unix/socket.c 2010-03-12 04:25:20.000000000 +0100
++++ new/lib/isc/unix/socket.c 2011-01-22 21:07:52.410000038 +0100
+@@ -681,6 +681,8 @@
+ isc_sockstatscounter_fdwatchrecvfail
+ };
+
++#undef SO_BSDCOMPAT
++
+ static void
+ manager_log(isc__socketmgr_t *sockmgr,
+ isc_logcategory_t *category, isc_logmodule_t *module, int level,
+Only in new/lib/isc/unix: socket.c.orig
diff --git a/extra/bitlbee/PKGBUILD b/extra/bitlbee/PKGBUILD
new file mode 100644
index 000000000..15d0d5ae2
--- /dev/null
+++ b/extra/bitlbee/PKGBUILD
@@ -0,0 +1,52 @@
+# $Id: PKGBUILD 113245 2011-03-08 11:01:22Z bisson $
+# Contributor: FUBAR <mrfubar@gmail.com>
+# Contributor: simo <simo@archlinux.org>
+# Contributor: Jeff 'codemac' Mickey <jeff@archlinux.org>
+# Contributor: Daniel J Griffiths <ghost1227@archlinux.us>
+# Maintainer: Gaetan Bisson <bisson@archlinux.org>
+
+pkgname=bitlbee
+pkgver=3.0.2
+pkgrel=1
+pkgdesc='Brings instant messaging (XMPP, MSN, Yahoo!, AIM, ICQ, Twitter) to IRC'
+arch=('i686' 'x86_64')
+url='http://www.bitlbee.org/'
+license=('GPL')
+depends=('gnutls' 'glib2' 'libotr')
+optdepends=('xinetd: to run bitlbee through xinetd')
+source=("http://get.bitlbee.org/src/${pkgname}-${pkgver}.tar.gz"
+ 'bitlbee.xinetd'
+ 'bitlbee.rcd')
+sha1sums=('59113b1dc440ebd775e6cf324d1cfb698fb20cfc'
+ '5e0af27ba9cc4fe455e3381c75fc49a9326e2f17'
+ '299776783902cc2e20be49e2fe729572ca656383')
+
+backup=('etc/bitlbee/bitlbee.conf' 'etc/bitlbee/motd.txt' 'etc/xinetd.d/bitlbee')
+install=install
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ ./configure --prefix=/usr \
+ --etcdir=/etc/bitlbee \
+ --pidfile=/var/run/bitlbee/bitlbee.pid \
+ --ipcsocket=/var/run/bitlbee/bitlbee.sock \
+ --strip=0 \
+ --otr=1 \
+ --ssl=gnutls
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ install -dm755 "${pkgdir}"/var/{lib,run}
+ install -o65 -g65 -dm770 "${pkgdir}"/var/lib/bitlbee
+ install -o65 -g65 -dm755 "${pkgdir}"/var/run/bitlbee
+ install -Dm644 "${srcdir}"/bitlbee.xinetd "${pkgdir}"/etc/xinetd.d/bitlbee
+ install -Dm755 "${srcdir}"/bitlbee.rcd "${pkgdir}"/etc/rc.d/bitlbee
+
+ make DESTDIR="${pkgdir}" install
+ make DESTDIR="${pkgdir}" install-etc
+ make DESTDIR="${pkgdir}" install-dev
+}
diff --git a/extra/bitlbee/bitlbee.rcd b/extra/bitlbee/bitlbee.rcd
new file mode 100644
index 000000000..9597b4ab9
--- /dev/null
+++ b/extra/bitlbee/bitlbee.rcd
@@ -0,0 +1,54 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+get_pid() {
+ pidof -o %PPID /usr/sbin/bitlbee
+}
+
+case "$1" in
+ start)
+ stat_busy 'Starting Bitlbee'
+ PID=$(get_pid)
+ if [ -z "$PID" ]; then
+ [ -f /var/run/bitlbee/bitlbee.pid ] && rm -f /var/run/bitlbee/bitlbee.pid
+ su -s /bin/sh -c '/usr/sbin/bitlbee -F' 'bitlbee'
+ if [ $? -gt 0 ]; then
+ stat_fail
+ exit 1
+ else
+ add_daemon bitlbee
+ stat_done
+ fi
+ else
+ stat_fail
+ exit 1
+ fi
+ ;;
+
+ stop)
+ stat_busy 'Stopping Bitlbee'
+ PID=$(get_pid)
+ # KILL
+ [ ! -z "$PID" ] && kill $PID &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ exit 1
+ else
+ rm -f /var/run/bitlbee/bitlbee.pid &> /dev/null
+ rm_daemon bitlbee
+ stat_done
+ fi
+ ;;
+
+ restart)
+ $0 stop
+ sleep 3
+ $0 start
+ ;;
+
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
diff --git a/extra/bitlbee/bitlbee.xinetd b/extra/bitlbee/bitlbee.xinetd
new file mode 100644
index 000000000..d671a8cfc
--- /dev/null
+++ b/extra/bitlbee/bitlbee.xinetd
@@ -0,0 +1,12 @@
+service bitlbee
+{
+ type = UNLISTED
+ socket_type = stream
+ protocol = tcp
+ wait = no
+ user = bitlbee
+ group = bitlbee
+ server = /usr/sbin/bitlbee
+ port = 6667
+ disable = yes
+}
diff --git a/extra/bitlbee/install b/extra/bitlbee/install
new file mode 100644
index 000000000..0e1caa93f
--- /dev/null
+++ b/extra/bitlbee/install
@@ -0,0 +1,14 @@
+post_install() {
+ echo '==> Bitlbee can run through xinetd or as a daemon for now.'
+ getent group bitlbee &>/dev/null || groupadd -r -g 65 bitlbee >/dev/null
+ getent passwd bitlbee &>/dev/null || useradd -r -u 65 -g bitlbee -d /var/lib/bitlbee -s /bin/false -c bitlbee bitlbee >/dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ getent passwd bitlbee &>/dev/null && userdel bitlbee >/dev/null
+ getent group bitlbee &>/dev/null && groupdel bitlbee >/dev/null
+}
diff --git a/extra/blender/PKGBUILD b/extra/blender/PKGBUILD
new file mode 100644
index 000000000..9def1bfa1
--- /dev/null
+++ b/extra/blender/PKGBUILD
@@ -0,0 +1,143 @@
+# $Id: PKGBUILD 101917 2010-12-02 16:14:10Z ibiru $
+# Contributor: John Sowiak <john@archlinux.org>
+# Maintainer: tobias <tobias@archlinux.org>
+
+# TODO:
+# - consider switching to scons when it is better supported
+
+# Apparently, the blender guys refuse to release source tarballs for
+# intermediate releases that deal mainly with binaries but incorporate tiny
+# minor changes from cvs. Since I'm sick and tired of the urges of users that
+# look for release numbers only we make a messy PKGBUILD that can checkout cvs
+# tags if necessary.
+#cvs=true
+cvs=false
+
+pkgname=blender
+pkgver=2.49b
+pkgrel=2
+pkgdesc="A fully integrated 3D graphics creation suite"
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://www.blender.org"
+depends=('libjpeg' 'libpng' 'openexr' 'sdl' 'python2' 'desktop-file-utils' \
+ 'gettext' 'libxi' 'libxmu' 'mesa' 'freetype2' 'openal')
+makedepends=('freeglut' 'libtiff' 'librsvg' 'yasm' 'csv')
+options=('!makeflags')
+install=blender.install
+source=($pkgname.desktop $pkgname.svg)
+if [ ! $cvs -o $cvs = false ]; then
+ makedepends=('freeglut' 'libtiff' 'librsvg' 'yasm')
+ source=(${source[@]} http://download.blender.org/source/$pkgname-$pkgver.tar.gz)
+ md5sums=('b5b9720b9430b1f5e2aa0b2df533fed8'
+ '0e53299444ff5570639c8f59372bc98c'
+ '718eef6a4ff377989e829b92a886cc5b')
+ sha1sums=('9ae82b5df21b4803f981e3df4a256b4be7137273'
+ '1e5452f56f590d5ce1af8c174113f0e639714c0c'
+ '43f71e7de4efe79c518d45f4b5a04e03c28d5fc5')
+fi
+
+build() {
+ if [ $cvs = true ]; then
+ cd "$srcdir/"
+ #cvs -d:pserver:anonymous@cvs.blender.org:/cvsroot/bf-blender login
+ cvs -z3 -d:pserver:anonymous@cvs.blender.org:/cvsroot/bf-blender checkout $pkgname
+ _cvsrel=$pkgname-$(echo $pkgver | sed 's/\./-/')-release
+ cvs -d:pserver:anonymous@cvs.blender.org:/cvsroot/bf-blender update -r $_cvsrel
+ find $pkgname/{bin,release/scripts} -name 'CVS' -exec rm -rf {} \; 2> /dev/null
+ cd $pkgname
+ else
+ cd "$srcdir/$pkgname-$pkgver"
+ fi
+
+ rm -f user-def.mk
+
+ ##########################################################################
+ # tweak the makefiles to prepare build for ArchLinux
+ # disable static binaries and enable blenderplayer binary
+ sed -i "s|^.*\(BINTARGETS += blenderstatic\)| #\1|g" source/Makefile
+ sed -i "s|^#\(.*BINTARGETS += blenderplayer\)|\1|g" source/Makefile
+ # link freetype and openal dynamically
+ sed -i 's|LOPTS)|LOPTS) -lfreetype -lopenal|g' source/Makefile
+ sed -i 's|COMLIB.*libfreetype\.a|#\0|g' source/Makefile
+ sed -i 's|NAN_SND_LIBS.*libopenal\.a|#\0|g' source/Makefile
+ # make ode (alternative physics engine)
+ # does not work for Arch64
+ #[ "$CARCH" = "i686" ] && sed -i 's|^\(DIRS.*\)$|\1 ode|' extern/Makefile
+ # make the nan_makefiles happy
+ export NAN_PYTHON_VERSION=2.7
+ export INTERNATIONAL=true
+ export WITH_FREETYPE2=true
+ export NAN_FREETYPE=/usr
+ export WITH_ICONV=true
+
+ export NAN_NO_PLUGIN=true
+
+ export NAN_OPENAL=/usr
+ export NAN_FMOD=/usr
+ export NAN_JPEG=/usr
+ export NAN_PNG=/usr
+ export WITH_OPENEXR=true
+ export NAN_OPENEXR=/usr
+ export NAN_ODE=/usr
+ export NAN_OPENEXR_LIBS=$(pkg-config --libs-only-l OpenEXR)
+
+ export NAN_SDL=/usr
+ export NAN_ZLIB=/usr
+ export NAN_MESA=/usr
+
+ export NAN_USE_BULLET=true
+ export NAN_USE_FFMPEG_CONFIG=true
+ export WITH_BF_VERSE=true
+ export WITH_VERSE=true
+ export WITH_BF_OPENMP=true
+ # there is an issue with a file
+ export NAN_DEBUG=-O
+ ###########################################################################
+ # build
+ LDFLAGS="-Wl,--hash-style=gnu"
+ make
+ ###########################################################################
+}
+
+package() {
+ if [ $cvs = true ]; then
+ cd "$srcdir/$pkgname"
+ else
+ cd "$srcdir/$pkgname-$pkgver"
+ fi
+
+ cd obj/linux-glibc2*/bin
+
+# common part
+
+ mkdir -p "$pkgdir/usr/share/"
+
+ # install binaries
+ install -Dm755 blender "$pkgdir/usr/bin/blender"
+ install -Dm755 blenderplayer "$pkgdir/usr/bin/blenderplayer"
+
+ # install internationalization support
+ cd ../../../bin/.blender
+ install -D -m644 .Blanguages \
+ "$pkgdir/usr/share/$pkgname/.Blanguages"
+ install -D -m644 .bfont.ttf \
+ "$pkgdir/usr/share/$pkgname/.bfont.ttf"
+
+ cp -R locale "$pkgdir/usr/share/"
+
+ # install scripts
+ cd ../../release/
+ cp -R scripts "$pkgdir/usr/share/$pkgname/"
+sed -i 's|#!/usr/bin/python|#!/usr/bin/python2|' "$pkgdir/usr/share/blender/scripts/bpymodules/blend2renderinfo.py"
+
+ # install all additional stuff
+ # install a freedesktop.org compliant menu entry
+ install -Dm644 "$srcdir/$pkgname.desktop" "$pkgdir/usr/share/applications/$pkgname.desktop"
+ # install some freedesktop.org compatibility
+ install -D -m644 "$srcdir/$pkgname.svg" "$pkgdir/usr/share/pixmaps/$pkgname.svg"
+ # finally we render a png as fallback for not svg aware menu applications
+ # Attention: always make sure you check the dimensions of the source-svg,
+ # you can read the dimensions via inkscape's export function
+ rsvg -w 64 -h 64 -f png "$pkgdir/usr/share/pixmaps/$pkgname.svg" "$pkgdir/usr/share/pixmaps/$pkgname.png"
+}
diff --git a/extra/blender/blender.desktop b/extra/blender/blender.desktop
new file mode 100644
index 000000000..71893dc4a
--- /dev/null
+++ b/extra/blender/blender.desktop
@@ -0,0 +1,19 @@
+[Desktop Entry]
+Encoding=UTF-8
+Name=Blender
+Name[da]=Blender
+Name[nl]=Blender
+Name[no]=Blender
+Name[de]=Blender
+Name[es]=Blender
+Comment=A 3D program
+Comment[es]=Un programa de 3D
+Comment[no]=Et 3d-program
+Comment[da]=Et program til 3d-modelering
+Exec=blender
+Icon=blender
+Terminal=false
+X-MultipleArgs=false
+Type=Application
+Categories=Application;Graphics;3DGraphics;
+MimeType=application/blender;application/x-blender;
diff --git a/extra/blender/blender.install b/extra/blender/blender.install
new file mode 100644
index 000000000..0cc7aef46
--- /dev/null
+++ b/extra/blender/blender.install
@@ -0,0 +1,28 @@
+post_install() {
+ cat << EOF
+
+NOTE
+----
+blender is using the NAN makefiles to build, so we can access some better
+features:
+ - i18n support
+ - anti-aliased interface fonts
+ - gameplayer
+We also ship the plugins, but most of these features can be accessed only
+from the users home directory. Therefore, you wanna copy everything from
+/usr/share/blender to ~/.blender (some are hidden files!). The browser-
+plugin builds but is using an old mozilla API, this is why it doesn't work
+and we don't ship it.
+Happy blending!
+
+EOF
+ update-desktop-database -q
+}
+
+post_upgrade() {
+ update-desktop-database -q
+}
+
+post_remove() {
+ update-desktop-database -q
+}
diff --git a/extra/blender/blender.svg b/extra/blender/blender.svg
new file mode 100644
index 000000000..ab61cc362
--- /dev/null
+++ b/extra/blender/blender.svg
@@ -0,0 +1,171 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ id="svg1573"
+ sodipodi:version="0.32"
+ inkscape:version="0.39"
+ width="100.00000pt"
+ height="100.00000pt"
+ sodipodi:docbase="/home/build/abs/extra/multimedia/blender"
+ sodipodi:docname="blender.svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:cc="http://web.resource.org/cc/"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs
+ id="defs1575">
+ <linearGradient
+ id="linearGradient1792">
+ <stop
+ style="stop-color:#000000;stop-opacity:0.42937854;"
+ offset="0.0000000"
+ id="stop1793" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0.12429378;"
+ offset="0.63222224"
+ id="stop1795" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0.0000000;"
+ offset="1.0000000"
+ id="stop1794" />
+ </linearGradient>
+ <radialGradient
+ xlink:href="#linearGradient1792"
+ id="radialGradient1950"
+ cx="0.50000000"
+ cy="0.50000000"
+ r="0.50000000"
+ fx="0.67944252"
+ fy="0.19298245" />
+ <linearGradient
+ id="linearGradient1606">
+ <stop
+ style="stop-color:#000000;stop-opacity:0.62745100;"
+ offset="0.0000000"
+ id="stop1607" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0.0000000;"
+ offset="1.0000000"
+ id="stop1608" />
+ </linearGradient>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="7.9999998"
+ inkscape:cx="50.134523"
+ inkscape:cy="35.997949"
+ inkscape:window-width="1272"
+ inkscape:window-height="1002"
+ showgrid="true"
+ snaptogrid="false"
+ gridspacingy="10.000000pt"
+ gridspacingx="10.000000pt"
+ gridoriginy="0.0000000pt"
+ gridoriginx="0.0000000pt"
+ gridtolerance="2.0000000px"
+ inkscape:grid-bbox="true"
+ inkscape:grid-points="true"
+ inkscape:window-x="1282"
+ inkscape:window-y="0" />
+ <metadata
+ id="metadata1576">
+ <rdf:RDF
+ id="RDF1577">
+ <cc:Work
+ rdf:about=""
+ id="Work1578">
+ <dc:description
+ id="description1579">Created with Inkscape
+http://www.inkscape.org/</dc:description>
+ <dc:format
+ id="format1581">image/svg+xml</dc:format>
+ <dc:type
+ id="type1583"
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title
+ id="title1606">ML-Term Icon</dc:title>
+ <dc:date
+ id="date1608">2004-07-14</dc:date>
+ <dc:creator
+ id="creator1610">
+ <cc:Agent
+ id="Agent1611">
+ <dc:title
+ id="title1612">Tobias Kieslich</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:coverage
+ id="coverage1614" />
+ <cc:license
+ id="license1616"
+ rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/GPL/2.0/"
+ id="License1624">
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Reproduction"
+ id="permits1625" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Distribution"
+ id="permits1626" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/Notice"
+ id="requires1627" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/DerivativeWorks"
+ id="permits1628" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/ShareAlike"
+ id="requires1629" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/SourceCode"
+ id="requires1630" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <path
+ sodipodi:type="arc"
+ style="fill:url(#radialGradient1950);fill-opacity:0.75000000;fill-rule:evenodd;stroke-width:1.0000000pt;"
+ id="path1827"
+ sodipodi:cx="29.010935"
+ sodipodi:cy="58.727592"
+ sodipodi:rx="23.157850"
+ sodipodi:ry="23.157850"
+ d="M 52.168785 58.727592 A 23.157850 23.157850 0 1 0 5.8530846,58.727592 A 23.157850 23.157850 0 1 0 52.168785 58.727592 z"
+ transform="matrix(2.556262,0.000000,0.000000,0.770827,-8.357083,60.08188)" />
+ <g
+ id="g1084"
+ transform="matrix(4.277757,0.000000,0.000000,4.277757,-244.4442,-256.4384)">
+ <path
+ style="fill:#e79100;fill-rule:evenodd;stroke:#000000;stroke-width:2.5581360;"
+ d="M 70.183754,64.486103 C 70.970246,65.122765 71.746941,65.771669 72.540115,66.399985 C 69.453580,66.550314 66.336707,66.536916 63.267234,66.751339 C 61.553800,66.933280 62.119503,69.750024 63.656883,69.617641 C 64.925860,69.617641 66.194837,69.617641 67.463814,69.617641 C 64.899642,71.537080 62.334113,73.454704 59.769421,75.373447 C 57.974777,76.830324 59.759220,79.624301 61.528139,78.790956 C 62.843668,78.218932 63.672855,76.918567 64.775590,76.029244 C 65.272386,75.762533 66.061744,74.237148 66.195454,75.421789 C 66.812356,77.527269 68.113458,79.532317 70.023285,80.657078 C 78.453997,86.618341 88.293096,75.890516 82.467250,70.321032 C 81.347167,68.630878 79.527221,67.572142 77.996121,66.287702 C 76.220705,64.972085 74.509428,63.515316 72.695293,62.285243 C 70.961182,60.910865 68.645443,63.114782 70.183754,64.486103 z "
+ id="path1829"
+ sodipodi:nodetypes="cccccccccccccc" />
+ <path
+ style="fill:#e79100;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.63953400pt;"
+ d="M 70.479501,64.479682 C 71.265993,65.116344 72.042688,65.765247 72.835862,66.393564 C 69.749327,66.543893 66.632454,66.530495 63.562981,66.744917 C 61.849547,66.926859 62.415250,69.743603 63.952630,69.611219 C 65.221607,69.611219 66.490584,69.611219 67.759561,69.611219 C 65.195389,71.530659 62.629860,73.448283 60.065168,75.367025 C 58.270524,76.823903 60.054967,79.617880 61.823886,78.784535 C 63.139415,78.212510 63.968602,76.912146 65.071337,76.022823 C 65.568133,75.756111 66.357491,74.230727 66.491201,75.415368 C 67.108103,77.520848 68.409205,79.525896 70.319032,80.650657 C 78.749744,86.611920 88.588843,75.884095 82.762997,70.314611 C 81.642914,68.624457 79.822968,67.565721 78.291868,66.281281 C 76.516452,64.965664 74.805175,63.508895 72.991040,62.278821 C 71.256929,60.904444 68.941190,63.108361 70.479501,64.479682 z "
+ id="path1831"
+ sodipodi:nodetypes="cccccccccccccc" />
+ <path
+ sodipodi:type="arc"
+ style="fill:#345c87;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.4483387;"
+ id="path1832"
+ sodipodi:cx="28.791338"
+ sodipodi:cy="24.460691"
+ sodipodi:rx="5.3983760"
+ sodipodi:ry="5.0384841"
+ d="M 34.189714 24.460691 A 5.3983760 5.0384841 0 1 0 23.392962,24.460691 A 5.3983760 5.0384841 0 1 0 34.189714 24.460691 z"
+ transform="matrix(0.822413,0.000000,0.000000,0.822413,51.33976,53.33570)" />
+ </g>
+</svg>
diff --git a/extra/bluedevil/PKGBUILD b/extra/bluedevil/PKGBUILD
new file mode 100644
index 000000000..eb2a7f48e
--- /dev/null
+++ b/extra/bluedevil/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 116735 2011-03-25 15:41:57Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+
+pkgname=bluedevil
+pkgver=1.0.3
+pkgrel=1
+pkgdesc='KDE bluetooth framework'
+arch=('i686' 'x86_64')
+url="https://projects.kde.org/projects/extragear/base/bluedevil"
+license=('GPL')
+depends=('kdebase-workspace' 'libbluedevil' 'obex-data-server' 'obexd-client')
+makedepends=('cmake' 'automoc4')
+install="${pkgname}.install"
+source=("http://download.kde.org/stable/${pkgname}/${pkgver}/src/${pkgname}-${pkgver}.tar.bz2")
+md5sums=('a2d4aa126f86dbc1f429a3aa9e95671d')
+
+build(){
+ cd ${srcdir}
+ mkdir build
+ cd build
+ cmake ../${pkgname}-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=/usr
+ make
+}
+
+package() {
+ cd ${srcdir}/build
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/bluedevil/bluedevil.install b/extra/bluedevil/bluedevil.install
new file mode 100644
index 000000000..8652c4ad4
--- /dev/null
+++ b/extra/bluedevil/bluedevil.install
@@ -0,0 +1,11 @@
+post_install() {
+ update-mime-database usr/share/mime &> /dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/extra/bluefish/PKGBUILD b/extra/bluefish/PKGBUILD
new file mode 100644
index 000000000..e0e160d4d
--- /dev/null
+++ b/extra/bluefish/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 110956 2011-02-23 10:09:47Z eric $
+# Maintainer: Eric Bélanger <eric@archlinux.org>
+
+pkgname=bluefish
+pkgver=2.0.3
+pkgrel=1
+pkgdesc="A powerful HTML editor for experienced web designers and programmers"
+arch=('i686' 'x86_64')
+url="http://bluefish.openoffice.nl/"
+license=('GPL3')
+depends=('pcre' 'gtk2' 'enchant' 'desktop-file-utils' 'shared-mime-info')
+makedepends=('gucharmap' 'intltool')
+optdepends=('gucharmap: for using the charmap plugin')
+options=('!libtool')
+install=bluefish.install
+source=(http://www.bennewitz.com/bluefish/stable/source/bluefish-${pkgver}.tar.bz2)
+md5sums=('4c062fcb1f90f91a35687b877d37d6dd')
+sha1sums=('ab6b16d50faca169c25001d5a26ca8b84ddb1019')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \
+ --enable-spell-check --disable-update-databases --disable-xml-catalog-update
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/bluefish/bluefish.install b/extra/bluefish/bluefish.install
new file mode 100644
index 000000000..c5464fa9d
--- /dev/null
+++ b/extra/bluefish/bluefish.install
@@ -0,0 +1,28 @@
+post_install() {
+ if [ ! -d etc/xml ]; then
+ mkdir -p etc/xml
+ fi
+ if [ ! -e etc/xml/catalog ]; then
+ xmlcatalog --noout --create etc/xml/catalog
+ fi
+ xmlcatalog --noout --add 'delegateURI' \
+ 'http://bluefish.openoffice.nl/ns/bflang/2.0/' /usr/share/xml/bluefish \
+ etc/xml/catalog
+
+ update-desktop-database -q
+ update-mime-database usr/share/mime > /dev/null
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+pre_upgrade() {
+ post_remove
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ xmlcatalog --noout --del \
+ /usr/share/xml/bluefish etc/xml/catalog
+}
diff --git a/extra/bluez-hcidump/PKGBUILD b/extra/bluez-hcidump/PKGBUILD
new file mode 100644
index 000000000..a7ad9827c
--- /dev/null
+++ b/extra/bluez-hcidump/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 108242 2011-01-30 15:00:57Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Geoffroy carrier <geoffroy@archlinux.org>
+# Contributor: Giovanni Scafora <giovanni@archlinux.org>
+
+pkgname=bluez-hcidump
+pkgver=2.0
+pkgrel=1
+pkgdesc="Bluetooth HCI package analyzer"
+url="http://www.bluez.org/"
+arch=('i686' 'x86_64')
+license=('GPL2')
+depends=('glibc' 'bluez')
+source=(http://www.kernel.org/pub/linux/bluetooth/${pkgname}-${pkgver}.tar.gz)
+md5sums=('5c2e3ef0a68b2845047867ba51ff8ac9')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/bluez/PKGBUILD b/extra/bluez/PKGBUILD
new file mode 100644
index 000000000..d281822c3
--- /dev/null
+++ b/extra/bluez/PKGBUILD
@@ -0,0 +1,75 @@
+# $Id: PKGBUILD 115264 2011-03-17 15:35:14Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Geoffroy Carrier <geoffroy@archlinux.org>
+
+pkgname=bluez
+pkgver=4.90
+pkgrel=1
+pkgdesc="Libraries and tools for the Bluetooth protocol stack"
+url="http://www.bluez.org/"
+arch=('i686' 'x86_64')
+license=('GPL2')
+depends=('dbus-core')
+makedepends=('gstreamer0.10-base' 'libusb-compat' 'libnl' 'libsndfile')
+optdepends=("gstreamer0.10-base: bluetooth GStreamer support"
+ "alsa-lib: Audio bluetooth devices support"
+ "dbus-python: to run bluez-simple-agent"
+ "pygobject: to run bluez-simple-agent"
+ "libusb-compat: USB adapters support"
+ "cups: CUPS backend"
+ "libnl: netlink plugin")
+conflicts=('bluez-libs' 'bluez-utils')
+provides=('bluez-libs' 'bluez-utils')
+replaces=('bluez-libs' 'bluez-utils')
+options=('!libtool')
+backup=(etc/bluetooth/{main,rfcomm,audio,network,input,serial}.conf
+ 'etc/conf.d/bluetooth' 'etc/dbus-1/system.d/bluetooth.conf')
+source=("http://www.kernel.org/pub/linux/bluetooth/${pkgname}-${pkgver}.tar.bz2"
+ 'bluetooth.conf.d'
+ 'rc.bluetooth')
+md5sums=('b111de22ff0f5c2b31f62b6be44dca00'
+ '8f60a5eb9d84b9c64c478d63e1c24b10'
+ 'ca4c39eb4bb201bd2eacad01492cd735')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --libexecdir=/lib \
+ --enable-gstreamer \
+ --enable-alsa \
+ --enable-usb \
+ --enable-tools \
+ --enable-bccmd \
+ --enable-dfutool \
+ --enable-hidd \
+ --enable-pand \
+ --enable-dund \
+ --enable-cups \
+ --enable-udevrules \
+ --enable-configfiles
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+
+ install -Dm755 ${srcdir}/rc.bluetooth ${pkgdir}/etc/rc.d/bluetooth
+
+ install -d ${pkgdir}/etc/bluetooth
+ install -m644 network/network.conf \
+ input/input.conf \
+ audio/audio.conf \
+ serial/serial.conf \
+ ${pkgdir}/etc/bluetooth/
+
+ install -Dm644 ${srcdir}/bluetooth.conf.d \
+ ${pkgdir}/etc/conf.d/bluetooth
+
+ install -Dm755 test/simple-agent ${pkgdir}/usr/bin/bluez-simple-agent
+ sed -i 's#/usr/bin/python#/usr/bin/python2#' \
+ ${pkgdir}/usr/bin/bluez-simple-agent
+}
diff --git a/extra/bluez/bluetooth.conf.d b/extra/bluez/bluetooth.conf.d
new file mode 100644
index 000000000..6648740eb
--- /dev/null
+++ b/extra/bluez/bluetooth.conf.d
@@ -0,0 +1,30 @@
+# Bluetooth configuraton file
+
+# Bluetooth services (allowed values are "true" and "false")
+
+# Run the bluetoothd daemon (default: true)
+#DAEMON_ENABLE="false"
+
+# Run the sdp daemon (default: false)
+# If this is disabled, hcid's internal sdp daemon will be used
+#SDPD_ENABLE="true"
+
+# Run the bluetooth HID daemon (default: false)
+#HIDD_ENABLE="true"
+
+# Activate rfcomm ports (default: false)
+#RFCOMM_ENABLE="true"
+
+# Run bluetooth dial-up networking daemon (default: false)
+#DUND_ENABLE="true"
+
+# Run bluetooth PAN daemon (default: false)
+#PAND_ENABLE="true"
+
+# rfcomm configuration file (default: /etc/bluetooth/rfcomm.conf)
+#RFCOMM_CONFIG="/etc/bluetooth/rfcomm.conf"
+
+# Options for hidd, dund and pand (default: none)
+#HIDD_OPTIONS=""
+#DUND_OPTIONS=""
+#PAND_OPTIONS=""
diff --git a/extra/bluez/rc.bluetooth b/extra/bluez/rc.bluetooth
new file mode 100644
index 000000000..096242011
--- /dev/null
+++ b/extra/bluez/rc.bluetooth
@@ -0,0 +1,100 @@
+#!/bin/bash
+#
+# Start/stop the Bluetooth daemons
+#
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+DAEMON_NAME="bluetoothd"
+HIDD_NAME="hidd"
+RFCOMM_NAME="rfcomm"
+PAND_NAME="pand"
+DUND_NAME="dund"
+
+DAEMON_EXEC="/usr/sbin/bluetoothd"
+HIDD_EXEC="/usr/bin/hidd"
+RFCOMM_EXEC="/usr/bin/rfcomm"
+PAND_EXEC="/usr/bin/pand"
+DUND_EXEC="/usr/bin/dund"
+
+DAEMON_ENABLE="true"
+HIDD_ENABLE="false"
+RFCOMM_ENABLE="false"
+DUND_ENABLE="false"
+PAND_ENABLE="false"
+
+RFCOMM_CONFIG="/etc/bluetooth/rfcomm.conf"
+
+HIDD_OPTIONS=""
+DUND_OPTIONS=""
+PAND_OPTIONS=""
+
+[ -f /etc/conf.d/bluetooth ] && . /etc/conf.d/bluetooth
+
+case "$1" in
+ start)
+ stat_busy "Starting bluetooth subsystem:"
+ if [ "$DAEMON_ENABLE" = "true" -a -x "$DAEMON_EXEC" ] ; then
+ stat_append " $DAEMON_NAME"
+ $DAEMON_EXEC
+ sleep 1
+ fi
+ if [ "$SDPD_ENABLE" = "true" -a -x "$SDPD_EXEC" ] ; then
+ stat_append " $SDPD_NAME"
+ $SDPD_EXEC
+ fi
+ if [ "$HIDD_ENABLE" = "true" -a -x "$HIDD_EXEC" ]; then
+ stat_append " $HIDD_NAME"
+ $HIDD_EXEC $HIDD_OPTIONS --server
+ fi
+ if [ "$RFCOMM_ENABLE" = "true" -a -x "$RFCOMM_EXEC" -a -f "$RFCOMM_CONFIG" ]; then
+ stat_append " $RFCOMM_NAME"
+ $RFCOMM_EXEC -f $RFCOMM_CONFIG bind all
+ fi
+ if [ "$DUND_ENABLE" = "true" -a -x "$DUND_EXEC" -a -n "$DUND_OPTIONS" ]; then
+ stat_append " $DUND_NAME"
+ $DUND_EXEC $DUND_OPTIONS
+ fi
+ if [ "$PAND_ENABLE" = "true" -a -x "$PAND_EXEC" -a -n "$PAND_OPTIONS" ]; then
+ stat_append " $PAND_NAME"
+ $PAND_EXEC $PAND_OPTIONS
+ fi
+ add_daemon bluetooth
+ stat_done
+ ;;
+ stop)
+ stat_busy "Stopping bluetooth subsystem:"
+
+ stat_append " $PAND_NAME"
+ killall $PAND_NAME >/dev/null 2>&1
+
+ stat_append " $DUND_NAME"
+ killall $DUND_NAME >/dev/null 2>&1
+
+ if [ -x "$RFCOMM_EXEC" ]; then
+ stat_append " $RFCOMM_NAME"
+ $RFCOMM_EXEC release all >/dev/null 2>&1
+ fi
+
+ stat_append " $HIDD_NAME"
+ killall $HIDD_NAME >/dev/null 2>&1
+
+ stat_append " $SDPD_NAME"
+ killall $SDPD_NAME >/dev/null 2>&1
+
+ stat_append " $DAEMON_NAME"
+ killall $DAEMON_NAME >/dev/null 2>&1
+
+ rm_daemon bluetooth
+ stat_done
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
diff --git a/extra/bmp-musepack/PKGBUILD b/extra/bmp-musepack/PKGBUILD
new file mode 100644
index 000000000..2cd7d1898
--- /dev/null
+++ b/extra/bmp-musepack/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 30184 2009-03-17 03:27:59Z eric $
+# Maintainer: damir <damir@archlinux.org>
+# Contributor: Nikos Kouremenos <nk@ebox.gr>
+
+pkgname=bmp-musepack
+pkgver=1.2
+pkgrel=3
+pkgdesc="A BMP plugin for playing sounds in Musepack (MPC) format"
+arch=(i686 x86_64)
+url="http://musepack.net/"
+license=('BSD')
+depends=('bmp' 'libmpcdec>=1.2.5' 'taglib')
+groups=('bmp-plugins' 'bmp-io-plugins')
+options=('!libtool')
+source=(http://files.musepack.net/linux/plugins/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('5fe0c9d341ca37d05c780a478f829a5f')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr || return 1
+ make || return 1
+ make DESTDIR=${pkgdir} install || return 1
+ install -D -m644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+}
diff --git a/extra/bmp-wma/PKGBUILD b/extra/bmp-wma/PKGBUILD
new file mode 100644
index 000000000..edf54ae20
--- /dev/null
+++ b/extra/bmp-wma/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 49817 2009-08-16 16:08:10Z jgc $
+# Maintainer: Kevin Piche <kevin@archlinux.org>
+# Contributor: Ewoud Nuyts <ewoud.nuyts@gmail.com>
+
+pkgname=bmp-wma
+pkgver=0.1.1
+pkgrel=3
+pkgdesc="WMA plugin for Beep Media Player"
+url="http://bmp-plugins.berlios.de/novelian/project.php?p=bmp-wma"
+license=('GPL')
+arch=('x86_64' 'i686')
+depends=('bmp')
+groups=('bmp-plugins' 'bmp-io-plugins')
+options=(!libtool !emptydirs)
+source=(http://download.berlios.de/bmp-plugins/${pkgname}-${pkgver}.tar.gz
+ bmp-wma-gcc4.patch)
+md5sums=('8dcf3fcdb10e8e2e386f70745812412b'
+ '730eba8f41e989dd8b56c18bcc826cc4')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np0 -i "${srcdir}/bmp-wma-gcc4.patch" || return 1
+ if [ "${CARCH}" = "x86_64" ]; then
+ export CFLAGS="${CFLAGS} -fPIC"
+ fi
+ ./configure --prefix=/usr --disable-static || return 1
+ echo '#define HAVE_LRINTF 1' >> config.h
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/bmp-wma/bmp-wma-gcc4.patch b/extra/bmp-wma/bmp-wma-gcc4.patch
new file mode 100644
index 000000000..9d773e89e
--- /dev/null
+++ b/extra/bmp-wma/bmp-wma-gcc4.patch
@@ -0,0 +1,98 @@
+--- src/libffwma/avcodec.h.orig 2005-10-07 11:49:36.000000000 -0400
++++ src/libffwma/avcodec.h 2005-10-07 11:51:09.000000000 -0400
+@@ -11,6 +11,43 @@
+ extern "C" {
+ #endif
+
++
++/**
++ * AVOption.
++ */
++typedef struct AVOption {
++ /** options' name */
++ const char *name; /* if name is NULL, it indicates a link to next */
++ /** short English text help or const struct AVOption* subpointer */
++ const char *help; // const struct AVOption* sub;
++ /** offset to context structure where the parsed value should be stored */
++ int offset;
++ /** options' type */
++ int type;
++#define FF_OPT_TYPE_BOOL 1 ///< boolean - true,1,on (or simply presence)
++#define FF_OPT_TYPE_DOUBLE 2 ///< double
++#define FF_OPT_TYPE_INT 3 ///< integer
++#define FF_OPT_TYPE_STRING 4 ///< string (finished with \0)
++#define FF_OPT_TYPE_MASK 0x1f ///< mask for types - upper bits are various flags
++//#define FF_OPT_TYPE_EXPERT 0x20 // flag for expert option
++#define FF_OPT_TYPE_FLAG (FF_OPT_TYPE_BOOL | 0x40)
++#define FF_OPT_TYPE_RCOVERRIDE (FF_OPT_TYPE_STRING | 0x80)
++ /** min value (min == max -> no limits) */
++ double min;
++ /** maximum value for double/int */
++ double max;
++ /** default boo [0,1]l/double/int value */
++ double defval;
++ /**
++ * default string value (with optional semicolon delimited extra option-list
++ * i.e. option1;option2;option3
++ * defval might select other then first argument as default
++ */
++ const char *defstr;
++#define FF_OPT_MAX_DEPTH 10
++} AVOption;
++
++
+ #include "common.h"
+ #include <sys/types.h> /* size_t */
+
+@@ -1396,41 +1433,6 @@
+
+
+ /**
+- * AVOption.
+- */
+-typedef struct AVOption {
+- /** options' name */
+- const char *name; /* if name is NULL, it indicates a link to next */
+- /** short English text help or const struct AVOption* subpointer */
+- const char *help; // const struct AVOption* sub;
+- /** offset to context structure where the parsed value should be stored */
+- int offset;
+- /** options' type */
+- int type;
+-#define FF_OPT_TYPE_BOOL 1 ///< boolean - true,1,on (or simply presence)
+-#define FF_OPT_TYPE_DOUBLE 2 ///< double
+-#define FF_OPT_TYPE_INT 3 ///< integer
+-#define FF_OPT_TYPE_STRING 4 ///< string (finished with \0)
+-#define FF_OPT_TYPE_MASK 0x1f ///< mask for types - upper bits are various flags
+-//#define FF_OPT_TYPE_EXPERT 0x20 // flag for expert option
+-#define FF_OPT_TYPE_FLAG (FF_OPT_TYPE_BOOL | 0x40)
+-#define FF_OPT_TYPE_RCOVERRIDE (FF_OPT_TYPE_STRING | 0x80)
+- /** min value (min == max -> no limits) */
+- double min;
+- /** maximum value for double/int */
+- double max;
+- /** default boo [0,1]l/double/int value */
+- double defval;
+- /**
+- * default string value (with optional semicolon delimited extra option-list
+- * i.e. option1;option2;option3
+- * defval might select other then first argument as default
+- */
+- const char *defstr;
+-#define FF_OPT_MAX_DEPTH 10
+-} AVOption;
+-
+-/**
+ * Parse option(s) and sets fields in passed structure
+ * @param strct structure where the parsed results will be written
+ * @param list list with AVOptions
+--- src/libffwma/dsputil.h.orig 2005-10-07 11:51:59.000000000 -0400
++++ src/libffwma/dsputil.h 2005-10-07 11:52:17.000000000 -0400
+@@ -28,7 +28,6 @@
+ #ifndef DSPUTIL_H
+ #define DSPUTIL_H
+
+-#include "common.h"
+ #include "avcodec.h"
+
+
diff --git a/extra/bmp/0.9.7.1-visualization.patch b/extra/bmp/0.9.7.1-visualization.patch
new file mode 100644
index 000000000..ac03323f6
--- /dev/null
+++ b/extra/bmp/0.9.7.1-visualization.patch
@@ -0,0 +1,12 @@
+--- beep/vis.c 2004-12-04 10:04:29.000000000 +0100
++++ beep/vis.c 2005-02-17 12:02:25.391044008 +0100
+@@ -223,7 +223,8 @@ vis_draw(Widget * w)
+ /* FIXME: The check "shouldn't" be neccessary? */
+ /* if (GTK_IS_WINDOW(vis->vs_window)) { */
+ GDK_THREADS_ENTER();
+- gdk_draw_indexed_image(vis->vs_window, vis->vs_widget.gc,
++ if (GDK_IS_DRAWABLE(vis->vs_window))
++ gdk_draw_indexed_image(vis->vs_window, vis->vs_widget.gc,
+ vis->vs_widget.x, vis->vs_widget.y,
+ vis->vs_widget.width, vis->vs_widget.height,
+ GDK_RGB_DITHER_NORMAL, (guchar *) rgb_data,
diff --git a/extra/bmp/PKGBUILD b/extra/bmp/PKGBUILD
new file mode 100644
index 000000000..1cb44d79c
--- /dev/null
+++ b/extra/bmp/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 30185 2009-03-17 03:43:05Z eric $
+# Maintainer: Kevin Piche <kevin@archlinux.org>
+# Contributor: Ben <contrasutra@myrealbox.com>
+
+pkgname=bmp
+pkgver=0.9.7.1
+pkgrel=5
+pkgdesc="gtk2 port of xmms"
+arch=(i686 x86_64)
+url="http://sourceforge.net/projects/beepmp/"
+license=('GPL')
+depends=('esound' 'id3lib' 'libglade' 'libsm' 'libvorbis' 'unzip')
+makedepends=('libxt')
+options=('!libtool')
+source=(http://downloads.sourceforge.net/sourceforge/beepmp/${pkgname}-${pkgver}.tar.gz ${pkgver}-visualization.patch bmp-${pkgver}-crossfade-0.3.9.patch)
+md5sums=('c25d5a8d49cc5851d13d525a20023c4c' 'fa1bdf5a8d03e8539a6bed5caa471176'\
+ '42ad4109ddb66024d4c6d1f3e572ab86')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ patch -p0 -i ../${pkgver}-visualization.patch || return 1
+ patch -p1 -i ../${pkgname}-${pkgver}-crossfade-0.3.9.patch || return 1
+ ./configure --prefix=/usr --mandir=/usr/share/man || return 1
+ make || return 1
+ make DESTDIR=${pkgdir} install || return 1
+}
+# vim: ts=2 sw=2 et ft=sh
diff --git a/extra/bmp/bmp-0.9.7.1-crossfade-0.3.9.patch b/extra/bmp/bmp-0.9.7.1-crossfade-0.3.9.patch
new file mode 100644
index 000000000..4c1e46da9
--- /dev/null
+++ b/extra/bmp/bmp-0.9.7.1-crossfade-0.3.9.patch
@@ -0,0 +1,108 @@
+Patch taken from xmms-crossfade 3.10 tarball. Required for crossfade to
+work. http://www.eisenlohr.org/xmms-crossfade/
+
+diff -ur bmp-0.9.7.1/beep/mainwin.c bmp-0.9.7.1.patched/beep/mainwin.c
+--- bmp-0.9.7.1/beep/mainwin.c 2005-05-09 10:45:39.000000000 +0200
++++ bmp-0.9.7.1.patched/beep/mainwin.c 2005-11-25 00:03:59.000000000 +0100
+@@ -655,9 +655,11 @@
+ mainwin_set_shade(!cfg.player_shaded);
+ }
+
++gboolean is_quitting = FALSE;
+ void
+ mainwin_quit_cb(void)
+ {
++ is_quitting = TRUE;
+ gtk_widget_hide(equalizerwin);
+ gtk_widget_hide(playlistwin);
+ gtk_widget_hide(mainwin);
+@@ -1318,7 +1320,7 @@
+ change_song(guint pos)
+ {
+ if (bmp_playback_get_playing())
+- bmp_playback_stop();
++ bmp_playback_stop_for_restart();
+
+ playlist_set_position(pos);
+ bmp_playback_initiate();
+diff -ur bmp-0.9.7.1/beep/playback.c bmp-0.9.7.1.patched/beep/playback.c
+--- bmp-0.9.7.1/beep/playback.c 2005-01-26 06:56:15.000000000 +0100
++++ bmp-0.9.7.1.patched/beep/playback.c 2005-11-25 00:03:59.000000000 +0100
+@@ -89,7 +89,7 @@
+ return;
+
+ if (bmp_playback_get_playing())
+- bmp_playback_stop();
++ bmp_playback_stop_for_restart();
+
+ vis_clear_data(mainwin_vis);
+ vis_clear_data(playlistwin_vis);
+@@ -135,6 +135,15 @@
+ get_current_input_plugin()->pause(ip_data.paused);
+ }
+
++gboolean input_stopped_for_restart = FALSE;
++void
++bmp_playback_stop_for_restart(void)
++{
++ input_stopped_for_restart = TRUE;
++ bmp_playback_stop();
++ input_stopped_for_restart = FALSE;
++}
++
+ void
+ bmp_playback_stop(void)
+ {
+diff -ur bmp-0.9.7.1/beep/playback.h bmp-0.9.7.1.patched/beep/playback.h
+--- bmp-0.9.7.1/beep/playback.h 2004-12-04 10:04:26.000000000 +0100
++++ bmp-0.9.7.1.patched/beep/playback.h 2005-11-25 00:03:59.000000000 +0100
+@@ -26,6 +26,7 @@
+ void bmp_playback_initiate(void);
+ void bmp_playback_pause(void);
+ void bmp_playback_stop(void);
++void bmp_playback_stop_for_restart(void);
+ gboolean bmp_playback_play_file(const gchar * filename);
+ gboolean bmp_playback_get_playing(void);
+ gboolean bmp_playback_get_paused(void);
+diff -ur bmp-0.9.7.1/beep/playlist.c bmp-0.9.7.1.patched/beep/playlist.c
+--- bmp-0.9.7.1/beep/playlist.c 2005-08-11 09:25:51.000000000 +0200
++++ bmp-0.9.7.1.patched/beep/playlist.c 2005-11-25 00:03:59.000000000 +0100
+@@ -817,7 +817,7 @@
+ if (bmp_playback_get_playing()) {
+ /* We need to stop before changing playlist_position */
+ PLAYLIST_UNLOCK();
+- bmp_playback_stop();
++ bmp_playback_stop_for_restart();
+ PLAYLIST_LOCK();
+ restart_playing = TRUE;
+ }
+@@ -868,7 +868,7 @@
+ if (bmp_playback_get_playing()) {
+ /* We need to stop before changing playlist_position */
+ PLAYLIST_UNLOCK();
+- bmp_playback_stop();
++ bmp_playback_stop_for_restart();
+ PLAYLIST_LOCK();
+ restart_playing = TRUE;
+ }
+@@ -1018,7 +1018,7 @@
+ if (bmp_playback_get_playing()) {
+ /* We need to stop before changing playlist_position */
+ PLAYLIST_UNLOCK();
+- bmp_playback_stop();
++ bmp_playback_stop_for_restart();
+ PLAYLIST_LOCK();
+ restart_playing = TRUE;
+ }
+@@ -1047,7 +1047,10 @@
+ {
+ GList *plist_pos_list;
+
+- bmp_playback_stop();
++ if (cfg.repeat)
++ bmp_playback_stop_for_restart();
++ else
++ bmp_playback_stop();
+
+ PLAYLIST_LOCK();
+ plist_pos_list = find_playlist_position_list();
diff --git a/extra/bochs/2.4.5-fetchcode.patch b/extra/bochs/2.4.5-fetchcode.patch
new file mode 100644
index 000000000..ef980a340
--- /dev/null
+++ b/extra/bochs/2.4.5-fetchcode.patch
@@ -0,0 +1,45 @@
+--- cpu/fetchdecode.cc.orig 2010-04-16 15:52:44.000000000 -0400
++++ cpu/fetchdecode.cc 2010-10-07 13:23:06.000000000 -0400
+@@ -1,5 +1,5 @@
+ /////////////////////////////////////////////////////////////////////////
+-// $Id: fetchdecode.cc,v 1.266 2010/04/16 19:52:44 sshwarts Exp $
++// $Id: fetchdecode.cc,v 1.267 2010/04/29 21:04:23 sshwarts Exp $
+ /////////////////////////////////////////////////////////////////////////
+ //
+ // Copyright (C) 2001-2009 The Bochs Project
+@@ -474,7 +474,7 @@
+ /* 0F 0D /wr */ { 0, BX_IA_PREFETCHW }, // 3DNow! PREFETCH on AMD, NOP on Intel
+ /* 0F 0E /wr */ { 0, BX_IA_FEMMS }, // 3DNow! FEMMS
+ #if BX_SUPPORT_3DNOW
+- /* 0F 0F /wr */ { BxImmediate_Ib, BX_IA_ERROR, Bx3DNowOpcodeInfo },
++ /* 0F 0F /wr */ { BxImmediate_Ib, BX_IA_ERROR },
+ #else
+ /* 0F 0F /wr */ { 0, BX_IA_ERROR },
+ #endif
+@@ -1025,7 +1025,7 @@
+ /* 0F 0D /dr */ { 0, BX_IA_PREFETCHW }, // 3DNow! PREFETCH on AMD, NOP on Intel
+ /* 0F 0E /dr */ { 0, BX_IA_FEMMS }, // 3DNow! FEMMS
+ #if BX_SUPPORT_3DNOW
+- /* 0F 0F /dr */ { BxImmediate_Ib, BX_IA_ERROR, Bx3DNowOpcodeInfo },
++ /* 0F 0F /dr */ { BxImmediate_Ib, BX_IA_ERROR },
+ #else
+ /* 0F 0F /dr */ { 0, BX_IA_ERROR },
+ #endif
+@@ -1583,7 +1583,7 @@
+ /* 0F 0D /wm */ { 0, BX_IA_PREFETCHW }, // 3DNow! PREFETCH on AMD, NOP on Intel
+ /* 0F 0E /wm */ { 0, BX_IA_FEMMS }, // 3DNow! FEMMS
+ #if BX_SUPPORT_3DNOW
+- /* 0F 0F /wm */ { BxImmediate_Ib, BX_IA_ERROR, Bx3DNowOpcodeInfo },
++ /* 0F 0F /wm */ { BxImmediate_Ib, BX_IA_ERROR },
+ #else
+ /* 0F 0F /wm */ { 0, BX_IA_ERROR },
+ #endif
+@@ -2134,7 +2134,7 @@
+ /* 0F 0D /dm */ { 0, BX_IA_PREFETCHW }, // 3DNow! PREFETCH on AMD, NOP on Intel
+ /* 0F 0E /dm */ { 0, BX_IA_FEMMS }, // 3DNow! FEMMS
+ #if BX_SUPPORT_3DNOW
+- /* 0F 0F /dm */ { BxImmediate_Ib, BX_IA_ERROR, Bx3DNowOpcodeInfo },
++ /* 0F 0F /dm */ { BxImmediate_Ib, BX_IA_ERROR },
+ #else
+ /* 0F 0F /dm */ { 0, BX_IA_ERROR },
+ #endif
diff --git a/extra/bochs/PKGBUILD b/extra/bochs/PKGBUILD
new file mode 100644
index 000000000..7106ce9d9
--- /dev/null
+++ b/extra/bochs/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 94642 2010-10-09 04:04:21Z kevin $
+#Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+# Maintainer: Kevin Piche <kevin@archlinux.org>
+
+pkgname=bochs
+pkgver=2.4.5
+pkgrel=1
+pkgdesc="A portable x86 PC emulation software package"
+arch=('i686' 'x86_64')
+license=('LGPL')
+url="http://bochs.sourceforge.net/"
+source=(http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.gz
+2.4.5-fetchcode.patch)
+depends=('gcc-libs' 'libxpm')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ patch -Np0 -i ${srcdir}/2.4.5-fetchcode.patch
+ ./configure --prefix=/usr --enable-vbe --without-wx --enable-cpu-level=6 \
+ --enable-fpu --enable-3dnow
+ make || return 1
+ make prefix=${pkgdir}/usr install
+ install -D -m 644 .bochsrc ${pkgdir}/etc/bochsrc-sample.txt
+}
+sha256sums=('b948622a364c2e7da4221a6a4640ba2efa68422e1411ac377c69d37f46f67616'
+ '3dba808614da7d0fa1a3d6ddaceabf027a873d1f45fb90ec43b8dce876baa8ff')
diff --git a/extra/bogofilter/PKGBUILD b/extra/bogofilter/PKGBUILD
new file mode 100644
index 000000000..d973643f2
--- /dev/null
+++ b/extra/bogofilter/PKGBUILD
@@ -0,0 +1,34 @@
+# $Id: PKGBUILD 110357 2011-02-18 23:42:09Z allan $
+# Maintainer: tobias <tobias@archlinux.org>
+# Contributor: Low Kian Seong <fastmail_low@speedymail.org>
+
+pkgname=bogofilter
+pkgver=1.2.2
+pkgrel=2
+pkgdesc="A fast Bayesian spam filtering tool"
+arch=('i686' 'x86_64')
+license=(GPL3)
+url="http://bogofilter.sourceforge.net"
+depends=('db' 'perl' 'gsl')
+backup=(etc/bogofilter/bogofilter.cf)
+source=(http://sourceforge.net/projects/${pkgname}/files/${pkgname}-current/${pkgname}-${pkgver}/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('4bcabdf8c5e7efefcb508eda7e80eebc')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc/bogofilter \
+ --localstatedir=/var \
+ --enable-transactions
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+
+ mv ${pkgdir}/etc/bogofilter/bogofilter.cf.example ${pkgdir}/etc/bogofilter/bogofilter.cf
+
+ install -dm755 ${pkgdir}/usr/share/${pkgname}/contrib
+ install -m644 contrib/* ${pkgdir}/usr/share/${pkgname}/contrib/
+}
diff --git a/extra/boo/PKGBUILD b/extra/boo/PKGBUILD
new file mode 100644
index 000000000..b9fcee689
--- /dev/null
+++ b/extra/boo/PKGBUILD
@@ -0,0 +1,34 @@
+# $Id: PKGBUILD 110402 2011-02-19 07:26:29Z eric $
+# Maintainer: Hugo Doria <hugo@archlinux.org>
+# Contributor: tardo <tardo@nagi-fanboi.net>
+# Contributor: Brice Carpentier <brice@dlfp.org>
+
+pkgname=boo
+pkgver=0.9.4.9
+pkgrel=1
+pkgdesc="A wrist friendly language for the CLI"
+arch=('i686' 'x86_64')
+url="http://boo.codehaus.org/"
+license=('GPL')
+depends=('sh' 'mono' 'shared-mime-info')
+options=('!makeflags')
+install=boo.install
+source=(http://dist.codehaus.org/boo/distributions/${pkgname}-${pkgver}.tar.gz)
+md5sums=('e8b04c63d4c983f82e8a2b2d49115c80')
+sha1sums=('fdd0f91ae1b2917d83fc8fa7f4610e3c22c06bf9')
+
+build() {
+ export MONO_SHARED_DIR="${srcdir}/.wabi"
+ mkdir -p $MONO_SHARED_DIR
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ sed -i -e 's|/lib|/lib/mono|' extras/boo.pc.in
+ ./configure --prefix=/usr --libdir=/usr/lib
+ make VERBOSE=1
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+ rm -rf "${pkgdir}/share/"
+ rm -rf "${pkgdir}/usr/share/gtksourceview-1.0/language-specs/boo.lang"
+}
diff --git a/extra/boo/boo.install b/extra/boo/boo.install
new file mode 100644
index 000000000..8652c4ad4
--- /dev/null
+++ b/extra/boo/boo.install
@@ -0,0 +1,11 @@
+post_install() {
+ update-mime-database usr/share/mime &> /dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/extra/boost/4994-compile-fix-for-Python32-v2.patch b/extra/boost/4994-compile-fix-for-Python32-v2.patch
new file mode 100644
index 000000000..22613b3f2
--- /dev/null
+++ b/extra/boost/4994-compile-fix-for-Python32-v2.patch
@@ -0,0 +1,16 @@
+Index: libs/python/src/converter/builtin_converters.cpp
+===================================================================
+--- libs/python/src/converter/builtin_converters.cpp (revision 67279)
++++ libs/python/src/converter/builtin_converters.cpp (working copy)
+@@ -431,7 +431,11 @@
+ if (!result.empty())
+ {
+ int err = PyUnicode_AsWideChar(
++#if PY_VERSION_HEX >= 0x03020000
++ intermediate
++#else
+ (PyUnicodeObject *)intermediate
++#endif
+ , &result[0]
+ , result.size());
+
diff --git a/extra/boost/PKGBUILD b/extra/boost/PKGBUILD
new file mode 100644
index 000000000..d4f0c9c78
--- /dev/null
+++ b/extra/boost/PKGBUILD
@@ -0,0 +1,112 @@
+# $Id: PKGBUILD 114691 2011-03-15 13:50:13Z andrea $
+# Maintainer: kevin <kevin@archlinux.org>
+# Contributor: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Kritoke <kritoke@gamebox.net>
+# Contributor: Luca Roccia <little_rock@users.sourceforge.net>
+
+pkgbase=boost
+pkgname=('boost-libs' 'boost')
+pkgver=1.46.0
+_boostver=${pkgver//./_}
+pkgrel=4
+arch=('i686' 'x86_64')
+url="http://www.boost.org/"
+makedepends=('icu' 'python' 'python2' 'bzip2' 'zlib' 'openmpi')
+source=(http://downloads.sourceforge.net/sourceforge/${pkgbase}/${pkgbase}_${_boostver}.tar.gz
+ 4994-compile-fix-for-Python32-v2.patch
+ boost-1.46.0-spirit.patch)
+license=('custom')
+md5sums=('820393d5746553c192db7b81ba0e53fe'
+ 'cb59e8adbf2a45ef9264a2f4ab92b849'
+ '9d6e2f13fef23bf27d7bdddc104e182a')
+
+_stagedir="${srcdir}/stagedir"
+
+build() {
+ # set python path for bjam
+ cd "${srcdir}/${pkgbase}_${_boostver}/tools"
+ echo "using python : 2.7 : /usr/bin/python2 ;" >> build/v2/user-config.jam
+ echo "using python : 3.2 : /usr/bin/python : /usr/include/python3.2mu : /usr/lib ;" >> build/v2/user-config.jam
+ echo "using mpi ;" >> build/v2/user-config.jam
+
+ # build bjam
+ cd "${srcdir}/${pkgbase}_${_boostver}/tools/build/v2/engine/src"
+ ./build.sh cc
+
+ _bindir="bin.linuxx86"
+ [ "${CARCH}" = "x86_64" ] && _bindir="bin.linuxx86_64"
+
+ install -d "${_stagedir}"/usr/bin
+ install ${_bindir}/bjam "${_stagedir}"/usr/bin/bjam
+
+ # build bcp
+ cd "${srcdir}/${pkgbase}_${_boostver}/tools/bcp"
+ ../build/v2/engine/src/${_bindir}/bjam --toolset=gcc
+ install -m755 "${srcdir}/${pkgbase}_${_boostver}/dist/bin/bcp" \
+ ${_stagedir}/usr/bin/bcp
+
+ # build libs
+ cd "${srcdir}/${pkgbase}_${_boostver}"
+ #python 3.2 support
+ #https://svn.boost.org/trac/boost/ticket/4994
+ patch -Np0 -i "${srcdir}/4994-compile-fix-for-Python32-v2.patch"
+ patch -Np0 -i "${srcdir}/boost-1.46.0-spirit.patch"
+
+ # default "minimal" install: "release link=shared,static
+ # runtime-link=shared threading=single,multi"
+ # --layout=tagged will add the "-mt" suffix for multithreaded libraries
+ # and installs includes in /usr/include/boost.
+ # --layout=system no longer adds the -mt suffix for multi-threaded libs.
+ # install to ${_stagedir} in preparation for split packaging
+
+ ./tools/build/v2/engine/src/${_bindir}/bjam \
+ release debug-symbols=off threading=multi \
+ runtime-link=shared link=shared,static \
+ cflags=-fno-strict-aliasing \
+ toolset=gcc \
+ --prefix="${_stagedir}" \
+ -sTOOLS=gcc \
+ --layout=system \
+ ${MAKEFLAGS} \
+ install
+
+ # pyste is unmaintained: http://www.boost.org/doc/libs/1_46_0/libs/python/doc/index.html
+ # build pyste
+ #cd "${srcdir}/${pkgbase}_${_boostver}/libs/python/pyste/install"
+ #python2 setup.py install --root=${_stagedir} --optimize=1
+}
+
+package_boost() {
+ pkgdesc="Free peer-reviewed portable C++ source libraries - Development"
+ depends=("boost-libs=${pkgver}")
+ optdepends=('python: for python bindings'
+ 'python2: for python2 bindings')
+
+ install -d "${pkgdir}"/usr/{include,lib}
+ # headers/source files
+ cp -r "${_stagedir}"/include/ "${pkgdir}"/usr/
+
+ # static libs
+ cp -r "${_stagedir}"/lib/*.a "${pkgdir}"/usr/lib/
+
+ # utilities (bjam, bcp, pyste)
+ cp -r "${_stagedir}"/usr/* "${pkgdir}"/usr/
+
+ # license
+ install -D -m644 "${srcdir}/${pkgbase}_${_boostver}/LICENSE_1_0.txt" \
+ "${pkgdir}"/usr/share/licenses/boost/LICENSE_1_0.txt
+}
+
+package_boost-libs() {
+ pkgdesc="Free peer-reviewed portable C++ source libraries - Runtime"
+ depends=('gcc-libs' 'bzip2' 'zlib' 'icu')
+ optdepends=('openmpi: for mpi support')
+
+ install -d "${pkgdir}/usr/lib"
+ #shared libs
+ cp -r "${_stagedir}"/lib/*.so{,.*} "${pkgdir}/usr/lib/"
+
+ # license
+ install -D -m644 "${srcdir}/${pkgbase}_${_boostver}/LICENSE_1_0.txt" \
+ "${pkgdir}"/usr/share/licenses/boost-libs/LICENSE_1_0.txt
+}
diff --git a/extra/boost/boost-1.46.0-spirit.patch b/extra/boost/boost-1.46.0-spirit.patch
new file mode 100644
index 000000000..6fae331ee
--- /dev/null
+++ b/extra/boost/boost-1.46.0-spirit.patch
@@ -0,0 +1,59 @@
+Index: boost/spirit/home/qi/nonterminal/detail/parameterized.hpp
+===================================================================
+--- boost/spirit/home/qi/nonterminal/detail/parameterized.hpp (revision 68724)
++++ boost/spirit/home/qi/nonterminal/detail/parameterized.hpp (revision 68725)
+@@ -14,6 +14,7 @@
+
+ #include <boost/ref.hpp>
+
++#include <boost/spirit/home/support/handles_container.hpp>
+ #include <boost/spirit/home/qi/parser.hpp>
+
+ namespace boost { namespace spirit { namespace qi
+@@ -59,4 +60,16 @@ namespace boost { namespace spirit { nam
+ };
+ }}}
+
++namespace boost { namespace spirit { namespace traits
++{
++ ///////////////////////////////////////////////////////////////////////////
++ template <typename Subject, typename Params, typename Attribute
++ , typename Context, typename Iterator>
++ struct handles_container<qi::parameterized_nonterminal<Subject, Params>
++ , Attribute, Context, Iterator>
++ : handles_container<typename remove_const<Subject>::type
++ , Attribute, Context, Iterator>
++ {};
++}}}
++
+ #endif
+Index: boost/spirit/home/karma/nonterminal/detail/parameterized.hpp
+===================================================================
+--- boost/spirit/home/karma/nonterminal/detail/parameterized.hpp (revision 68724)
++++ boost/spirit/home/karma/nonterminal/detail/parameterized.hpp (revision 68725)
+@@ -14,6 +14,7 @@
+
+ #include <boost/ref.hpp>
+
++#include <boost/spirit/home/support/handles_container.hpp>
+ #include <boost/spirit/home/karma/generator.hpp>
+
+ namespace boost { namespace spirit { namespace karma
+@@ -60,4 +61,17 @@ namespace boost { namespace spirit { nam
+ };
+ }}}
+
++
++namespace boost { namespace spirit { namespace traits
++{
++ ///////////////////////////////////////////////////////////////////////////
++ template <typename Subject, typename Params, typename Attribute
++ , typename Context, typename Iterator>
++ struct handles_container<karma::parameterized_nonterminal<Subject, Params>
++ , Attribute, Context, Iterator>
++ : handles_container<typename remove_const<Subject>::type
++ , Attribute, Context, Iterator>
++ {};
++}}}
++
+ #endif
diff --git a/extra/botan/PKGBUILD b/extra/botan/PKGBUILD
new file mode 100644
index 000000000..89e0dd396
--- /dev/null
+++ b/extra/botan/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 98518 2010-11-10 20:05:00Z angvp $
+# Maintainer: Angel Velasquez <angvp@archlinux.org>
+# Contributor: Douglas Soares de Andrade <douglas@archlinux.org>
+# Contributor: d'Ronin <daronin@2600.com>
+pkgname=botan
+pkgver=1.8.11
+pkgrel=1
+pkgdesc="BSD-licensed crypto library written in C++"
+license=('BSD')
+arch=('i686' 'x86_64')
+url="http://botan.randombit.net/"
+depends=('gcc-libs' 'sh')
+makedepends=('python2')
+source=(http://files.randombit.net/botan/Botan-${pkgver}.tgz)
+options=('force')
+md5sums=('ccb2c3cb8a324214a89b45a03422870b')
+
+build() {
+ cd ${srcdir}/Botan-${pkgver}
+ sed -i 's_#!/usr/bin/env python_#!/usr/bin/env python2_' configure.py
+ ./configure.py --prefix=/usr
+ make
+ make DESTDIR=${pkgdir}/usr install
+}
+
diff --git a/extra/brasero/PKGBUILD b/extra/brasero/PKGBUILD
new file mode 100644
index 000000000..623e8bfaa
--- /dev/null
+++ b/extra/brasero/PKGBUILD
@@ -0,0 +1,33 @@
+# $Id: PKGBUILD,v 1.31 2009/03/14 02:03:57 allan Exp $
+# Maintainer: Allan McRae <allan@archlinux.org>
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: William Rea <sillywilly@gmail.com>
+
+pkgname=brasero
+pkgver=2.32.1
+pkgrel=1
+pkgdesc="A disc burning application for Gnome"
+arch=('i686' 'x86_64')
+url="http://www.gnome.org/projects/brasero"
+license=('GPL')
+options=('!libtool' '!emptydirs')
+depends=('gstreamer0.10-base-plugins>=0.10.30' 'totem-plparser>=2.32.0' 'libbeagle>=0.3.9' 'cdrkit' 'cdrdao' 'desktop-file-utils' 'hicolor-icon-theme' 'libunique>=1.1.6' 'libcanberra>=0.25' 'dvd+rw-tools' 'dconf')
+makedepends=('gnome-doc-utils>=0.20.1' 'intltool' 'libburn' 'libisofs' 'nautilus' 'gobject-introspection' 'namcap')
+optdepends=('libburn: alternative back-end'
+ 'libisofs: libburn back-end'
+ 'dvdauthor: video project'
+ 'gstreamer0.10-bad-plugins: video project'
+ 'vcdimager: video project')
+replaces=('nautilus-cd-burner')
+install=brasero.install
+source=(http://ftp.gnome.org/pub/gnome/sources/brasero/2.32/brasero-${pkgver}.tar.bz2)
+sha256sums=('7b1056b6f19398912d51e3e583bc1b4d2a75ce2a8e15a96e1514fe6edb79df3b')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-caches \
+ --disable-schemas-compile
+ make
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/brasero/brasero.install b/extra/brasero/brasero.install
new file mode 100644
index 000000000..b6c57055e
--- /dev/null
+++ b/extra/brasero/brasero.install
@@ -0,0 +1,14 @@
+post_install() {
+ usr/bin/glib-compile-schemas usr/share/glib-2.0/schemas
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+ update-desktop-database -q
+ update-mime-database usr/share/mime > /dev/null
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ post_install $1
+}
diff --git a/extra/brltty/PKGBUILD b/extra/brltty/PKGBUILD
new file mode 100644
index 000000000..431cf11ec
--- /dev/null
+++ b/extra/brltty/PKGBUILD
@@ -0,0 +1,48 @@
+# $Id: PKGBUILD 102193 2010-12-06 16:20:30Z andrea $
+# Contributor: Jan de Groot <jgc@archlinux.org>
+# Contributor: Giovanni Scafora <giovanni@archlinux.org>
+
+pkgname=brltty
+pkgver=4.2
+pkgrel=3
+pkgdesc="Braille display driver for Linux/Unix"
+arch=('i686' 'x86_64')
+url="http://mielke.cc/brltty"
+license=('GPL' 'LGPL')
+depends=('libxaw' 'at-spi' 'gpm' 'icu' 'python2' 'tcl' 'atk' 'libxtst')
+makedepends=('pyrex' 'bluez')
+optdepends=('bluez: bluetooth support')
+backup=(etc/brltty.conf etc/conf.d/brltty.conf)
+options=('!makeflags' '!emptydirs')
+source=(http://mielke.cc/${pkgname}/releases/${pkgname}-${pkgver}.tar.gz
+ 'brltty-4.2-S_ISCHR.patch'
+ 'brltty'
+ 'brltty.conf')
+md5sums=('192af5e634210616928496645e392097'
+ '5954b289efaf2ff17676d06de9a88854'
+ '831ebaf0c56091702929c68805d20c4f'
+ 'a8ab8b3dd059e96e1734bc9cdcf844fc')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ CFLAGS+="${CFLAGS} -D_GNU_SOURCE" \
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --enable-gpm \
+ --disable-java-bindings \
+ --disable-caml-bindings \
+ PYTHON=/usr/bin/python2
+
+ patch -Np1 -i ${srcdir}/brltty-4.2-S_ISCHR.patch
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make INSTALL_ROOT="${pkgdir}" install
+ install -D -m755 ${srcdir}/brltty ${pkgdir}/etc/rc.d/brltty
+ install -D -m644 ${srcdir}/brltty.conf ${pkgdir}/etc/conf.d/brltty.conf
+ install -D -m644 Documents/brltty.conf ${pkgdir}/etc/brltty.conf
+}
diff --git a/extra/brltty/brltty b/extra/brltty/brltty
new file mode 100755
index 000000000..5ed21a52d
--- /dev/null
+++ b/extra/brltty/brltty
@@ -0,0 +1,68 @@
+#!/bin/bash
+
+daemon_name=brltty
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+. /etc/conf.d/$daemon_name.conf
+
+get_pid() {
+ pidof -o %PPID $daemon_name
+}
+
+case "$1" in
+ start)
+ stat_busy "Starting $daemon_name daemon"
+
+ PID=$(get_pid)
+ if [ -z "$PID" ]; then
+ [ -f /var/run/$daemon_name.pid ] && rm -f /var/run/$daemon_name.pid
+ # RUN
+ $daemon_name $brltty_args
+ #
+ if [ $? -gt 0 ]; then
+ stat_fail
+ exit 1
+ else
+ echo $(get_pid) > /var/run/$daemon_name.pid
+ add_daemon $daemon_name
+ stat_done
+ fi
+ else
+ stat_fail
+ exit 1
+ fi
+ ;;
+
+ stop)
+ stat_busy "Stopping $daemon_name daemon"
+ PID=$(get_pid)
+ # KILL
+ [ ! -z "$PID" ] && kill $PID &> /dev/null
+ #
+ if [ $? -gt 0 ]; then
+ stat_fail
+ exit 1
+ else
+ rm -f /var/run/$daemon_name.pid &> /dev/null
+ rm_daemon $daemon_name
+ stat_done
+ fi
+ ;;
+
+ restart)
+ $0 stop
+ sleep 3
+ $0 start
+ ;;
+
+ status)
+ stat_busy "Checking $daemon_name status";
+ ck_status $daemon_name
+ ;;
+
+ *)
+ echo "usage: $0 {start|stop|restart|status}"
+esac
+
+exit 0
diff --git a/extra/brltty/brltty-4.2-S_ISCHR.patch b/extra/brltty/brltty-4.2-S_ISCHR.patch
new file mode 100644
index 000000000..eddac9616
--- /dev/null
+++ b/extra/brltty/brltty-4.2-S_ISCHR.patch
@@ -0,0 +1,11 @@
+diff -up brltty-4.2/Programs/sys_linux.c.BAD brltty-4.2/Programs/sys_linux.c
+--- brltty-4.2/Programs/sys_linux.c.BAD 2010-05-21 09:04:10.003122084 -0400
++++ brltty-4.2/Programs/sys_linux.c 2010-05-21 09:04:19.376198268 -0400
+@@ -23,6 +23,7 @@
+ #include <errno.h>
+ #include <fcntl.h>
+ #include <sys/ioctl.h>
++#include <sys/stat.h>
+ #include <linux/kd.h>
+
+ #ifdef HAVE_LINUX_INPUT_H
diff --git a/extra/brltty/brltty.conf b/extra/brltty/brltty.conf
new file mode 100644
index 000000000..94115e1d5
--- /dev/null
+++ b/extra/brltty/brltty.conf
@@ -0,0 +1,2 @@
+# Specify any arguments to pass to brltty here.
+brltty_args="" \ No newline at end of file
diff --git a/extra/bs/PKGBUILD b/extra/bs/PKGBUILD
new file mode 100644
index 000000000..e15c29aca
--- /dev/null
+++ b/extra/bs/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 69354 2010-02-20 11:19:53Z allan $
+# Maintainer:
+# Contributor damir <damir@archlinux.org>
+
+pkgname=bs
+pkgver=2.7
+pkgrel=2
+pkgdesc="The classic game of Battleships against the computer. Ncurses."
+arch=('i686' 'x86_64')
+url="http://www.catb.org/~esr/bs/"
+license=('GPL2')
+depends=('ncurses')
+source=($url/$pkgname-$pkgver.tar.gz)
+md5sums=('5786c6006e503d100e65139dadb5d5a7')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ ./configure --prefix=/usr
+ make || return 1
+}
+
+package() {
+ cd $srcdir/$pkgname-$pkgver
+ install -Dm755 bs $pkgdir/usr/bin/bs
+ install -Dm644 bs.6 $pkgdir/usr/share/man/man6/bs.6
+}
diff --git a/extra/bug-buddy/PKGBUILD b/extra/bug-buddy/PKGBUILD
new file mode 100644
index 000000000..871b6e10e
--- /dev/null
+++ b/extra/bug-buddy/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 91665 2010-09-27 15:48:02Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=bug-buddy
+pkgver=2.32.0
+pkgrel=1
+pkgdesc="A bug reporting tool for GNOME"
+arch=(i686 x86_64)
+install=bug-buddy.install
+depends=('evolution-data-server>=2.32.0' 'libgtop>=2.28.1' 'elfutils' 'hicolor-icon-theme' 'libbonobo>=2.32.0')
+makedepends=('intltool' 'pkgconfig' 'gnome-doc-utils>=0.20.1')
+groups=('gnome-extra')
+license=(GPL)
+options=('!libtool' '!emptydirs')
+url="http://www.gnome.org"
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.32/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('ffdc70fe4a59c0aef42b5b0b72b08f17db2b1d9f49ba2b68722334ddbee5e3ca')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-static
+ make
+ 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 bug-buddy ${pkgdir}/etc/gconf/schemas/*.schemas
+ rm -f ${pkgdir}/etc/gconf/schemas/*.schemas
+}
diff --git a/extra/bug-buddy/bug-buddy.install b/extra/bug-buddy/bug-buddy.install
new file mode 100644
index 000000000..eec3336ba
--- /dev/null
+++ b/extra/bug-buddy/bug-buddy.install
@@ -0,0 +1,24 @@
+pkgname=bug-buddy
+
+post_install() {
+ usr/bin/gtk-query-immodules-2.0 > etc/gtk-2.0/gtk.immodules
+ 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() {
+ usr/bin/gtk-query-immodules-2.0 > etc/gtk-2.0/gtk.immodules
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
diff --git a/extra/bzflag/PKGBUILD b/extra/bzflag/PKGBUILD
new file mode 100644
index 000000000..1589b32e7
--- /dev/null
+++ b/extra/bzflag/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 84161 2010-06-26 23:01:03Z kevin $
+# Contributor: Damir Perisa <damir.perisa@bluewin.ch>
+# Maintainer: Kevin Piche <kevin@archlinux.org>
+
+pkgname=bzflag
+pkgver=2.0.16
+pkgrel=1
+pkgdesc="A multiplayer 3D tank battle game"
+depends=('curl' 'mesa' 'sdl')
+arch=('i686' 'x86_64')
+license=('LGPL')
+options=(!libtool)
+url="http://www.bzflag.org"
+source=(http://downloads.sourceforge.net/sourceforge/bzflag/$pkgname-$pkgver.tar.bz2)
+md5sums=('161b973bee586d43ebff4695dfb8c359')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ ./configure --prefix=/usr || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+
+ # gnome menu entry and icon.
+ cd misc
+ make || return 1
+ mkdir -p ${pkgdir}/usr/share/{applications,pixmaps}
+ install -m644 bzflag.desktop $pkgdir/usr/share/applications/bzflag.desktop
+ install -m644 ../data/bzflag-48x48.png $pkgdir/usr/share/pixmaps/bzflag-48x48.png
+}
diff --git a/extra/bzr/PKGBUILD b/extra/bzr/PKGBUILD
new file mode 100644
index 000000000..69ad7b709
--- /dev/null
+++ b/extra/bzr/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 110425 2011-02-19 09:14:39Z eric $
+# Maintainer :
+# Contributor: Hugo Doria <hugo@archlinux.org>
+
+pkgname=bzr
+pkgver=2.3.0
+pkgrel=1
+pkgdesc="A decentralized revision control system (bazaar)"
+arch=('i686' 'x86_64')
+url="http://www.bazaar-vcs.org"
+license=('GPL')
+depends=('python2')
+optdepends=('python-paramiko: for sftp support')
+source=(http://launchpad.net/bzr/${pkgver%.*}/${pkgver}/+download/${pkgname}-${pkgver}.tar.gz)
+md5sums=('2d8bc55d43209189a209361178d9d372')
+sha1sums=('42a5b270e75a57883ead3cee9e623e087f16afd8')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ sed -i 's|man/man1|share/man/man1|' setup.py
+ python2 setup.py build
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ python2 setup.py install --prefix=/usr --root="${pkgdir}"
+
+ # bash-completion
+ install -D -m644 contrib/bash/bzr "${pkgdir}/etc/bash_completion.d/bzr"
+}
diff --git a/extra/c-ares/LICENSE b/extra/c-ares/LICENSE
new file mode 100644
index 000000000..e3f5b64fe
--- /dev/null
+++ b/extra/c-ares/LICENSE
@@ -0,0 +1,10 @@
+Copyright 1998 by the Massachusetts Institute of Technology.
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted, provided that
+the above copyright notice appear in all copies and that both that copyright
+notice and this permission notice appear in supporting documentation, and that
+the name of M.I.T. not be used in advertising or publicity pertaining to
+distribution of the software without specific, written prior permission.
+M.I.T. makes no representations about the suitability of this software for any
+purpose. It is provided "as is" without express or implied warranty.
diff --git a/extra/c-ares/PKGBUILD b/extra/c-ares/PKGBUILD
new file mode 100644
index 000000000..d16d11ce9
--- /dev/null
+++ b/extra/c-ares/PKGBUILD
@@ -0,0 +1,33 @@
+# $Id: PKGBUILD 104396 2011-01-02 08:09:16Z dgriffiths $
+# Contributor: Jeff Mickey <jeff@archlinux.org>
+# Contributor: Alexander Fehr <pizzapunk gmail com>
+# Maintainer: Daniel J Griffiths <ghost1227@archlinux.us>
+
+pkgname=c-ares
+pkgver=1.7.4
+pkgrel=1
+pkgdesc='C library that performs DNS requests and name resolves asynchronously'
+arch=('i686' 'x86_64')
+url='http://c-ares.haxx.se/'
+license=('custom')
+depends=('glibc')
+options=('!libtool')
+source=(http://c-ares.haxx.se/${pkgname}-${pkgver}.tar.gz
+ LICENSE)
+md5sums=('dd71e8f07d9f3c837e12a5416d1b7f73'
+ 'c69f2042941b708ce3e7121424d0b7e6')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ ./configure --prefix=/usr --enable-shared || return 1
+ make || return 1
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install || return 1
+
+ install -Dm644 ${srcdir}/LICENSE \
+ ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE || return 1
+}
diff --git a/extra/cabal-install/PKGBUILD b/extra/cabal-install/PKGBUILD
new file mode 100644
index 000000000..78c9c8902
--- /dev/null
+++ b/extra/cabal-install/PKGBUILD
@@ -0,0 +1,27 @@
+# Maintainer: Vesa Kaihlavirta <vesa@archlinux.org>
+# Contributor: Arch Haskell Team <arch-haskell@haskell.org>
+pkgname=cabal-install
+pkgver=0.10.2
+pkgrel=1
+pkgdesc="The command-line interface for Cabal and Hackage."
+url="http://hackage.haskell.org/package/cabal-install"
+license=('custom:BSD3')
+arch=('i686' 'x86_64')
+makedepends=('ghc=7.0.2' 'haskell-http>=4000.1.1' 'haskell-zlib')
+depends=('gmp' zlib)
+options=('strip')
+source=(http://hackage.haskell.org/packages/archive/cabal-install/$pkgver/cabal-install-$pkgver.tar.gz)
+
+build() {
+ cd $srcdir/cabal-install-$pkgver
+ runhaskell Setup configure --enable-shared --enable-split-objs --enable-executable-stripping --prefix=/usr
+ runhaskell Setup build
+}
+
+package() {
+ cd $srcdir/cabal-install-$pkgver
+ runhaskell Setup copy --destdir=$pkgdir
+ install -D -m644 LICENSE $pkgdir/usr/share/licenses/$pkgname/LICENSE
+}
+
+md5sums=('bc906ef0bed79cbb33fdb36b73514281')
diff --git a/extra/cagibi/PKGBUILD b/extra/cagibi/PKGBUILD
new file mode 100644
index 000000000..396793f7f
--- /dev/null
+++ b/extra/cagibi/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+
+pkgname=cagibi
+pkgver=0.1.1
+pkgrel=1
+pkgdesc='A cache/proxy daemon for SSDP (the discovery part of UPnP)'
+arch=('i686' 'x86_64')
+url='http://www.kde.org'
+license=('LGPL')
+depends=('qt')
+makedepends=('cmake' 'automoc4')
+source=("http://download.kde.org/stable/${pkgname}/${pkgname}-${pkgver}.tar.bz2")
+md5sums=('2db2424dc436bc436011185de09be9da')
+
+build() {
+ cd ${srcdir}
+ mkdir build
+ cd build
+ cmake ../${pkgname}-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=/usr
+ make
+}
+
+package() {
+ cd ${srcdir}/build
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/cairo-perl/PKGBUILD b/extra/cairo-perl/PKGBUILD
new file mode 100644
index 000000000..aa8a93a81
--- /dev/null
+++ b/extra/cairo-perl/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 104389 2011-01-02 04:22:32Z kevin $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=cairo-perl
+_realname=Cairo
+pkgver=1.061
+pkgrel=3
+pkgdesc="Perl wrappers for cairo"
+arch=(i686 x86_64)
+license=('LGPL')
+url="http://gtk2-perl.sourceforge.net/"
+options=('!emptydirs')
+depends=('cairo>=1.8.10' 'perl>=5.12.1')
+makedepends=('perl-extutils-depends' 'perl-extutils-pkgconfig')
+source=(http://downloads.sourceforge.net/sourceforge/gtk2-perl/${_realname}-${pkgver}.tar.gz)
+md5sums=('08cd5e847f61858651fc4de769066e88')
+
+build() {
+ cd "${srcdir}/${_realname}-${pkgver}"
+ perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+package() {
+ cd "${srcdir}/${_realname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/cairo/PKGBUILD b/extra/cairo/PKGBUILD
new file mode 100644
index 000000000..9c80110a0
--- /dev/null
+++ b/extra/cairo/PKGBUILD
@@ -0,0 +1,35 @@
+# $Id: PKGBUILD 114393 2011-03-13 08:22:31Z andyrtr $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Brice Carpentier <brice@daknet.org>
+
+pkgname=cairo
+pkgver=1.10.2
+pkgrel=2
+pkgdesc="Cairo vector graphics library"
+arch=(i686 x86_64)
+license=('LGPL' 'MPL')
+url="http://cairographics.org/"
+depends=('libpng>=1.4.0' 'libxrender' 'fontconfig>=2.8.0' 'pixman>=0.18.4' 'glib2>=2.24.0' 'sh')
+makedepends=('pkgconfig')
+options=('!libtool')
+source=(http://cairographics.org/releases/${pkgname}-${pkgver}.tar.gz
+ cairo-1.10.0-buggy_gradients.patch)
+sha1sums=('ccce5ae03f99c505db97c286a0c9a90a926d3c6e'
+ '8b843a9934e5112b6188e5bcf4adfc1fdaf9fa04')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i "${srcdir}/cairo-1.10.0-buggy_gradients.patch"
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --disable-static \
+ --enable-tee
+ make
+ make check || /bin/true # 248 Passed, 65 Failed [2 crashed, 8 expected], 28 Skipped
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/cairo/cairo-1.10.0-buggy_gradients.patch b/extra/cairo/cairo-1.10.0-buggy_gradients.patch
new file mode 100644
index 000000000..368e356d3
--- /dev/null
+++ b/extra/cairo/cairo-1.10.0-buggy_gradients.patch
@@ -0,0 +1,13 @@
+--- a/src/cairo-xlib-display.c.ubuntu 2010-08-04 11:57:49.000000000 +0200
++++ b/src/cairo-xlib-display.c 2010-08-04 11:58:28.000000000 +0200
+@@ -353,11 +353,7 @@
+ /* Prior to Render 0.10, there is no protocol support for gradients and
+ * we call function stubs instead, which would silently consume the drawing.
+ */
+-#if RENDER_MAJOR == 0 && RENDER_MINOR < 10
+ display->buggy_gradients = TRUE;
+-#else
+- display->buggy_gradients = FALSE;
+-#endif
+ display->buggy_pad_reflect = FALSE;
+ display->buggy_repeat = FALSE;
diff --git a/extra/cairomm/PKGBUILD b/extra/cairomm/PKGBUILD
new file mode 100644
index 000000000..c35321230
--- /dev/null
+++ b/extra/cairomm/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: PKGBUILD 102350 2010-12-07 11:34:03Z jgc $
+# Maintainer: Kevin <kevin@archlinux.org>
+# Contributor: criminy <criminy@gmail.com>
+
+pkgname=cairomm
+pkgver=1.8.6
+pkgrel=1
+pkgdesc="C++ bindings to Cairo vector graphics library"
+arch=('i686' 'x86_64')
+url="http://www.cairographics.org"
+license=('LGPL' 'MPL')
+depends=('cairo' 'libsigc++')
+makedepends=('pkgconfig')
+source=(http://www.cairographics.org/releases/${pkgname}-${pkgver}.tar.gz)
+options=('!libtool' '!emptydirs')
+md5sums=('39af0fd0c111bb74307f9860653046ce')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/camsource/PKGBUILD b/extra/camsource/PKGBUILD
new file mode 100644
index 000000000..5c6221769
--- /dev/null
+++ b/extra/camsource/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 68022 2010-02-10 14:13:39Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+
+pkgname=camsource
+pkgver=0.7.0
+pkgrel=6
+pkgdesc="Grabs images from a v4l and v4l2 webcam devices"
+arch=('i686' 'x86_64')
+url="http://camsource.sourceforge.net/"
+license=('GPL')
+depends=('libxml2' 'libjpeg>=8')
+backup=('etc/camsource.conf')
+options=('!libtool')
+source=(http://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.bz2
+ mod_handle.c.patch)
+md5sums=('ffd824f13f99011984399fc3b7526c71'
+ 'a8fabaf271b6f575c6e957573908c529')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ patch -Np0 -i $srcdir/mod_handle.c.patch || return 1
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+ mv ${pkgdir}/etc/camsource.conf.example ${pkgdir}/etc/camsource.conf
+}
diff --git a/extra/camsource/mod_handle.c.patch b/extra/camsource/mod_handle.c.patch
new file mode 100644
index 000000000..25e2d52fc
--- /dev/null
+++ b/extra/camsource/mod_handle.c.patch
@@ -0,0 +1,14 @@
+--- src/mod_handle.c.old 2005-01-31 11:16:10.000000000 +0000
++++ src/mod_handle.c 2005-01-31 11:27:25.000000000 +0000
+@@ -303,10 +303,9 @@
+ for (i = 0; i < MAX_MODULES; i++)
+ {
+ if (modules[i].dlhand == dlh)
+- goto inuse; /* break */
++ break;
+ }
+ dlclose(dlh);
+-inuse:
+ }
+ }
+
diff --git a/extra/capi4hylafax/PKGBUILD b/extra/capi4hylafax/PKGBUILD
new file mode 100644
index 000000000..039ea496d
--- /dev/null
+++ b/extra/capi4hylafax/PKGBUILD
@@ -0,0 +1,49 @@
+# $Id: PKGBUILD 84286 2010-06-28 14:07:57Z tpowa $
+#Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=capi4hylafax
+pkgver=010300
+pkgrel=4
+pkgdesc="capi plugin for hylafax to enable isdn faxing"
+arch=(i686 x86_64)
+url="ftp://ftp.avm.de/tools"
+license=('GPL')
+depends=('glibc' 'capi4k-utils' 'hylafax' 'gcc-libs' 'libtiff')
+source=(ftp://ftp.avm.de/tools/capi4hylafax.linux/capi4hylafax-01.03.00.tar.gz
+ config.faxCAPI capi4hylafax.rc)
+install=capi4hylafax.install
+backup=(var/spool/hylafax/etc/config.faxCAPI)
+build() {
+ cd $srcdir/$pkgname-01.03.00
+# fix config file
+ sed -i -e 's#/etc/config.faxCAPI#/var/spool/hylafax/etc/config.faxCAPI#g' src/defaults.h.in || return 1
+ ./configure || return 1
+ make || return 1
+ install -m755 -D src/faxsend/c2faxsend $pkgdir/usr/bin/c2faxsend
+ install -m755 -D src/faxrecv/c2faxrecv $pkgdir/usr/bin/c2faxrecv
+ install -m755 -D setupconffile $pkgdir/usr/bin/c2faxaddmodem
+ install -m644 -D $srcdir/config.faxCAPI $pkgdir/var/spool/hylafax/etc/config.faxCAPI
+ install -m755 -D $srcdir/capi4hylafax.rc $pkgdir/etc/rc.d/capi4hylafax
+# adding FIFO
+ mkfifo $pkgdir/var/spool/hylafax/FIFO.faxCAPI
+ chown 10 $pkgdir/var/spool/hylafax/FIFO.faxCAPI
+ chgrp 14 $pkgdir/var/spool/hylafax/FIFO.faxCAPI
+ chmod 0600 $pkgdir/var/spool/hylafax/FIFO.faxCAPI
+# fix /var/spool/hylafax permission
+ chown 10 $pkgdir/var/spool/hylafax
+ chgrp 14 $pkgdir/var/spool/hylafax
+# adding udev rule
+ mkdir -p $pkgdir/lib/udev/rules.d
+cat << EOF >> $pkgdir/lib/udev/rules.d/53-capi4hylafax.rules
+# CAPI devices
+SUBSYSTEM=="capi", KERNEL=="capi", NAME="capi20", SYMLINK+="isdn/capi20", GROUP="uucp"
+SUBSYSTEM=="tty" KERNEL=="capi[0-9]*", NAME="capi/%n", GROUP="uucp"
+
+EOF
+# fix c2faxadd
+ sed -i -e 's#/etc/config.faxCAPI#/var/spool/hylafax/etc/config.faxCAPI#g' $pkgdir/usr/bin/c2faxaddmodem || return 1
+ echo "main_config_dialog" >> $pkgdir/usr/bin/c2faxaddmodem
+}
+md5sums=('d37dc652ac80d1525ef8693be55ee67f'
+ '653b60695d21c128f020a86274ca9192'
+ '1fe40c58289fa3ba625ce6fe2fdb3d07')
diff --git a/extra/capi4hylafax/capi4hylafax.install b/extra/capi4hylafax/capi4hylafax.install
new file mode 100644
index 000000000..20c2d8f63
--- /dev/null
+++ b/extra/capi4hylafax/capi4hylafax.install
@@ -0,0 +1,16 @@
+post_install() {
+cat << EOF
+For more information about setting up the package, please have a look here:
+"http://wiki.archlinux.org/index.php/capi4hylafax"
+EOF
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+cat << EOF
+Please remove your additions to /var/spool/hylafax/etc/config
+EOF
+}
diff --git a/extra/capi4hylafax/capi4hylafax.rc b/extra/capi4hylafax/capi4hylafax.rc
new file mode 100755
index 000000000..51025b020
--- /dev/null
+++ b/extra/capi4hylafax/capi4hylafax.rc
@@ -0,0 +1,49 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+PID=`pidof -o %PPID /usr/bin/c2faxrecv`
+case "$1" in
+ start)
+ stat_busy "Starting capi4hylafax"
+ if [ -z "$PID" ]; then
+ /usr/bin/c2faxrecv > /dev/null &
+ faxmodem faxCAPI
+ fi
+ if [ ! -f /var/run/faxq.pid ]; then
+ stat_fail
+ echo "ERROR: hylafax is not running"
+ exit 1
+ fi
+ if [ ! -f /var/run/hfaxd.pid ]; then
+ stat_fail
+ echo "ERROR: hylafax is not running"
+ exit 1
+ fi
+ if [ ! -z "$PID" -o $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon capi4hylafax
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping capi4hylafax"
+ [ ! -z "$PID" ] && kill $PID &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon capi4hylafax
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 2
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
diff --git a/extra/capi4hylafax/config.faxCAPI b/extra/capi4hylafax/config.faxCAPI
new file mode 100644
index 000000000..b2137757a
--- /dev/null
+++ b/extra/capi4hylafax/config.faxCAPI
@@ -0,0 +1,397 @@
+#
+# EDIT THIS CONFIGURATION TO REFLECT YOUR SETUP
+#
+
+# Grundsätzliches:
+# - Es gibt für jeden Wert einen Standardzustand (default), sodass jede Zeile
+# der Datei oder auch das komplette Configfile ausgelassen werden kann.
+# - Es gibt ausschließlich ein Configfile, in dem alle nötigen Angaben für
+# "c2faxsend/-receive" eingetragen werden können.
+# - Werden für HylaFAX mehrere virtuelle Geräte (devices) angelegt, muss es
+# für jedes Device ein Configfile im Format config.[DeviceName] geben.
+# Dessen Existenz wird von HylaFAX überprüft. Ohne dieses File kann die
+# Arbeit mit dem Device nicht aufgenommen werden. Die Existenz einer
+# solchen Datei kann am einfachsten durch einen Link auf dieses ConfigFile
+# oder ein minimales "dummy"-ConfigFile nachgewiesen werden.
+#
+# Basics:
+# - There is a default condition for each value, such that each line of the
+# file or the complete configfile can be left out.
+# - There is only one configfile in which all information required for
+# "c2faxsend/-receive" can be entered.
+# - If multiple virtual devices are created for HylaFAX, there must be a
+# Configfile in the format config.[DeviceName] for each device. HylaFAX
+# checks that this file exists. Without this file, it is not possible to
+# start working with the device. The easiest way to establish the existence
+# of such a file is to create a link to this ConfigFile or a minimum
+# "dummy" ConfigFile.
+
+
+# "SpoolDir" gibt den Pfad an, unter dem im HylaFAX-kompatiblen Betrieb die
+# HylaFAX-Dateien zu finden sind oder unter dem im Stand-Alone-Betrieb die
+# empfangenen Faxe gespeichert werden sollen. Im HylaFAX-kompatiblen Betrieb
+# werden die Faxe im Verzeichnis $(SpoolDir)/recvq gespeichert.
+#
+# "SpoolDir" indicates the path in which the HylaFAX are located in HylaFAX-
+# compatible operation or in which received faxes are to be saved in
+# stand-alone operation. In HylaFAX-compatible operation, faxes are saved in
+# the directory $(SpoolDir)/recvq.
+#
+# default /var/spool/hylafax
+#
+SpoolDir: /var/spool/hylafax
+
+
+# "FaxRcvdCmd" gibt das Skript an, das ausgeführt wird, sobald ein Fax
+# empfangen wurde. Im Stand-Alone-Betrieb werden andere Parameter
+# übergeben als für HylaFAX (mehr dazu im sample_faxrcvd).
+#
+# "FaxRcvdCmd" indicates the script performed whenever a fax is
+# received. Parameters other than the ones for HylaFAX are returned in
+# stand-alone operation (see sample_faxrcvd for more information).
+#
+# default /var/spool/hylafax/bin/faxrcvd
+#
+FaxRcvdCmd: /var/spool/hylafax/bin/faxrcvd
+
+
+# "PollRcvdCmd" gibt das Skript an, das ausgeführt wird, sobald ein
+# Fax per Faxabruf empfangen wurde. Im Stand-Alone-Betrieb werden
+# andereParameter übergeben als für HylaFAX (mehr dazu im
+# sample_faxrcvd).
+#
+# "PollRcvdCmd" indicates the script performed whenever a fax was
+# received by fax polling. Parameters other than the ones for HylaFAX
+# are returned in stand-alone operation (see sample_faxrcvd for more
+# information).
+#
+# default /var/spool/hylafax/bin/pollrcvd
+#
+PollRcvdCmd: /var/spool/hylafax/bin/pollrcvd
+
+
+# "FaxReceiveUser" ist der User, als der c2faxrecv ausgeführt wird.
+# Die Änderung des Users kann nur vom Superuser bzw. "root" erfolgen. Sollte
+# c2faxrecv von einem anderen User gestartet werden, wird dieser Eintrag
+# ignoriert. Hier einen anderen als den Hylafax-Standardwert "uucp"
+# einzutragen ist dann sinnvoll, wenn beispielsweise die Rechte von
+# /dev/capi20 nicht geändert werden sollen oder Ihre Linux-Distribution einen
+# anderen User voraussetzt.
+#
+# "FaxReceiveUser" is the user when c2faxrecv is run. This user can be
+# changed only by the Superuser or "root" user. If c2faxrecv is started by
+# another user, this entry will be ignored. Here it is a good idea to enter a
+# value other than the hylafax default value "uucp", for instance, if the
+# rights of /dev/capi20 are not to be changed or your Linux distribution
+# requires another user.
+#
+# default ""
+#
+FaxReceiveUser: uucp
+FaxReceiveGroup: uucp
+
+
+# Im "LogFile" werden Informationen über den Faxablauf abgespeichert.
+#
+# Information about the order of events in faxing are saved in the "LogFile".
+#
+# default ""
+#
+LogFile: /var/spool/hylafax/log/capi4hylafax
+
+
+# Der Befehl "LogTraceLevel" gibt die Menge der Daten an, die in ein LogFile
+# geschrieben werden. Die Spanne reicht von 0 = nichts bis 4 = vieles.
+#
+# The "LogTraceLevel" command indicates the amount of data written in a
+# LogFile. The range goes from 0 = nothing to 4 = many.
+#
+# default 0
+#
+LogTraceLevel: 0
+
+
+# "LogFileMode" sind die Angaben (mode), aufgrund derer sowohl das gerade
+# erwähnte LogFile als auch die LogFiles für HylaFAX angelegt werden.
+#
+# "LogFileMode" is the mode, on the basis of which both the LogFile just
+# mentioned and the LogFiles for HylaFAX are generated.
+#
+# default 0600
+#
+LogFileMode: 0600
+
+
+# Die geschweiften Klammern geben Anfang und Ende einer Section an.
+# Jede Section darf eine oder mehrere SubSections enthalten.
+# SubSubSections sind nicht erlaubt.
+# Dabei enthält die Section Angaben zu einem virtuellen Device;
+# die Subsection die Angaben für die Rufannahme jedes Controllers.
+# Es können beliebig viele Sections und, darin enthalten, jeweils beliebig
+# viele Subsections erzeugt werden.
+# Jede Section muss aber einen anderen HylafaxDeviceName erhalten;
+# zusätzlich muss in jeder Subsection innerhalb einer Section ein anderer
+# Controller aufgeführt werden. Beim Stand-Alone-Betrieb ist eine Section mit
+# entsprechend vielen Subsections ausreichend, da in diesem Betriebsmodus die
+# virtuellen DeviceNamen keine Rolle spielen.
+#
+# The curved brackets indicate the beginning and end of a section.
+# Each section may contain one or more subsections.
+# SubSubSections are not permitted.
+# The section contains information about a virtual device; the subsection the
+# call acceptance information for each controller.
+# Any number of sections containing any number of subsections may be
+# generated, but each section must receive a different HylafaxDeviceName; and
+# a different controller must be listed in every subsection within a section.
+# For stand-alone operation, it is sufficient to have just one section with
+# as many subsections as required, since virtual DeviceNames do not play
+# any role in this mode of operation.
+#
+{
+
+ # "HylafaxDeviceName" ist der Name, unter dem sich C4H bei HylaFAX als
+ # "virtuelles Modem" anmeldet. Sollen für HylaFAX mehrere dieser "Modems"
+ # erzeugt werden, legen Sie einfach eine neue Section mit einem anderen
+ # HylafaxDeviceName an.
+ #
+ # "HylafaxDeviceName" is the name, under which C4H registers in HylaFAX as
+ # a "virtual modem". If multiple "modems" are to be generated for HylaFAX,
+ # simply create a new section with another HylafaxDeviceName.
+ #
+ # default faxCAPI
+ #
+ HylafaxDeviceName: faxCAPI
+
+
+ # "RecvFileMode" ist der Mode, in dem empfangene Faxe abgespeichert
+ # werden. User und Group der Datei wird durch FaxReceiveUser (s.o.)
+ # festgelegt.
+ #
+ # "RecvFileMode" is the mode, in which received faxes are saved. User and
+ # Group of the file are determined by the FaxReceiveUser (see above).
+ #
+ # default 0600
+ #
+ RecvFileMode: 0600
+
+
+ # "FAXNumber" ist die eigene Nummer des Computers und wird der Gegenseite
+ # mitgeteilt (sichtbar z. B. im Fax-Journal).
+ #
+ # "FAXNumber" is the fax number of the computer itself and is transmitted
+ # to the remote site (visible in the Fax Journal).
+ #
+ # default ""
+ #
+ FAXNumber: +49.00.00000
+
+
+ # "LocalIdentifier" ist der von CAPI aus konfigurierbare Teil der
+ # Kopfzeile. Ein leerer Eintrag führt dazu, dass keine Fax-Kopfzeile
+ # eingefügt wird.
+ #
+ # "LocalIdentifier" is the part of the fax header which can be configured
+ # from CAPI. An empty entry specifies an empty header.
+ #
+ # default ""
+ #
+ LocalIdentifier: "AVM CAPI4HylaFAX"
+
+
+ # Die maximale Anzahl von gleichzeitig empfangbaren Faxen kann
+ # durch "MaxConcurrentRecvs" angepaßt werden. Diese Anzahl wird
+ # durch die Anzahl der durch die Hardware zur Verfügung
+ # gestellten B-Kanäle begrenzt.
+ #
+ # The maximum number of faxes that can be received at the same
+ # time can be adjusted using "MaxConcurrentRecvs". This number
+ # is limited by the number of B channels provided by the hardware.
+ #
+ # default 2
+ #
+ MaxConcurrentRecvs: 2
+
+
+ # ----------- outgoing params -----------
+
+ # "OutgoingController" gibt den Controller an, über den eine externe
+ # Verbindung aufgebaut werden soll.
+ #
+ # "OutgoingController" indicates the controller which is to be used to
+ # establish an external connection.
+ #
+ # default 1
+ #
+ OutgoingController: 1
+
+
+ # Die "OutgoingMSN" ist die MSN, die für ausgehenden Faxe benutzt wird.
+ #
+ # The "OutgoingMSN" is the MSN used for outgoing faxes.
+ #
+ # default ""
+ #
+ OutgoingMSN:
+
+
+ # CLIR (Rufnummernunterdrückung) kann über "SuppressMSN" und den Wert (0)
+ # abgeschaltet oder mit dem Wert (1) erneut angeschaltet werden.
+ #
+ # CLIR (Calling Line Identification Restriction) can be switched off using
+ # the value (0) or switched back on by entering the value (1).
+ #
+ # default 0
+ #
+ SuppressMSN: 0
+
+
+ # "NumberPrefix" wird vor jede Telefonnummer gestellt. Dies ist bei
+ # Nebenstellenanlagen wichtig, bei denen für den Aufbau einer externen
+ # Verbindung eine Ziffer vorgewählt werden muss.
+ #
+ # "NumberPrefix" is set to precede each telephone number. This is
+ # important for PBX systems which require that a number be dialed to
+ # obtain an outside line.
+ #
+ # default ""
+ #
+ NumberPrefix:
+
+
+ # Wenn der Wert in "UseISDNFaxService" = 1 ist, wird ein ausgehender Ruf
+ # mit der ISDN-FAX-G3 Dienstekennung aufgebaut. Bei 0 wird eine 3.1kHz
+ # Audio-Verbindung hergestellt.
+ #
+ # When in "UseISDNFaxService" the value is = 1, an outoing call will be
+ # established using the ISDN-FAX-G3 service indicator. For 0, a 3.1kHz
+ # audio connection is established.
+ #
+ # default 0
+ #
+ UseISDNFaxService: 0
+
+
+ # Gibt die Dauer in Sekunden an, die auf eine Verbindungsannahme durch die
+ # Gegenseite gewartet wird. So wird beim Faxversand nicht automatisch die
+ # gesamte von der Telekom vorgegebene Wartezeit genutzt. Eine Angabe des
+ # Wertes 0 nutzt die gesamte Wartezeit.
+ #
+ # The duration in seconds you wait for the remote site to accept your
+ # outgoing call In this way you do not have to use the entire ringing
+ # duration preset by the telephone company. The default value 0 uses the
+ # entire ringing duration.
+ #
+ # default 0
+ #
+ RingingDuration: 0
+
+
+ # ----------- incoming params -----------
+ {
+
+ # Controller, für den diese Subsection gilt.
+ #
+ # Controller for which this subsection is valid.
+ #
+ # default 1
+ #
+ Controller: 1
+
+
+ # Wenn "AcceptSpeech" auf 1 steht, wird auch die Dienstekennung
+ # "Sprache" angenommen.
+ #
+ # If "AcceptSpeech" is set to 1, the service indicator "Voice" also
+ # will be accepted.
+ #
+ # default 0
+ #
+ AcceptSpeech: 1
+
+
+ # Sofern man DDI nutzen will, sollte man "UseDDI" auf 1 stellen.
+ #
+ # If DDI is to be used, "UseDDI" should be set to a value of 1.
+ #
+ # default 0
+ #
+ UseDDI: 0
+
+
+ # Die DDI-Stammnummer wird bei "DDIOffset" eingetragen.
+ # Der Standardwert führt zu keinem korrekten Ergebnis und
+ # sollte, sofern "UseDDI" auf 1 gestellt wurde, immer
+ # verändert werden.
+ #
+ # "DDIOffset" indicates the DDI offset number which precedes
+ # extension number. Because the default value can't guarantee
+ # a correct result, this value should be modified whenever
+ # "UseDDI" is set to 1.
+ #
+ # default ""
+ #
+ DDIOffset: "12345"
+
+
+ # "DDILength" gibt die Anzahl der Durchwahlziffern an. (Diese Ziffern
+ # werden lediglich als Teil der Empfängernummer mitgeteilt.) Der
+ # Standardwert sollte bei Verwendung von DDI ebenfalls angepasst
+ # werden.
+ #
+ # "DDILength" indicates the number of digits in the extension. (These
+ # numbers are only used as a component of the recipient's number.) The
+ # default value should be adapted whenever DDI is used.
+ #
+ # default 0
+ #
+ DDILength: 3
+
+
+ # Bei "IncomingDDIs" können in einer durch Komma getrennten Liste alle
+ # Durchwahlziffern (DDIs) angegeben werden, für die Rufe angenommen
+ # werden sollen. Eine Bereichsangabe ist auch möglich (z.B. 100-300),
+ # wobei aber keine offenen Bereiche (z.B. -100) erlaubt sind.
+ # Sofern IncommingDDIs gesetzt ist, wird DDILength ignoriert.
+ #
+ # In "IncomingDDIs", all extension numbers (DDIs) for which calls are
+ # to be accepted may be listed, separated by commas. It is also
+ # possible to specify a range (e.g. 100-300); here no open ranges are
+ # permitted (e.g. -100). When the "IncomingDDIs" switch is set, the
+ # parameters for DDILength will be ignored.
+ #
+ # default ""
+ #
+ IncomingDDIs:
+
+
+ # Bei "IncomingMSNs" können in einer durch Komma getrennten Liste alle
+ # MSNs angegeben werden, für die Rufe angenommen werden sollen. Ist
+ # die Liste leer, werden alle Rufe auf ISDN FAX G3, 3,1kHz Audio und
+ # eventuell "Sprache" angenommen.
+ # Wenn "UseDDI" auf 1 gestellt ist, wird "IncomingMSNs" ignoriert.
+ #
+ # In "IncomingMSNs", all MSNs for which calls are to be accepted may
+ # be listed, separated by commas. When the list is empty, all calls
+ # are accepted for ISDN FAX G3, 3,1kHz audio and perhaps "Voice".
+ # When "UseDDI" is set to 1, "IncomingMSNs" is ignored.
+ #
+ # default ""
+ #
+ IncomingMSNs:
+
+
+ # Wenn "AcceptGlobalCall" auf 1 steht, werden auch Calls ohne
+ # Zielrufnummer (ohne MSN) angenommen.
+ # Notwendig hinter einigen Telefonanlagen, die keine Zielrufnummer
+ # senden.
+ #
+ # If "AcceptGlobalCall" is set to 1, calls without Called Party
+ # Number also will be accepted.
+ # Needed on internal ports of some PBX.
+ #
+ # default 1
+ #
+ AcceptGlobalCall: 1
+ }
+}
+
diff --git a/extra/capi4k-utils/PKGBUILD b/extra/capi4k-utils/PKGBUILD
new file mode 100644
index 000000000..a2610a96f
--- /dev/null
+++ b/extra/capi4k-utils/PKGBUILD
@@ -0,0 +1,54 @@
+# $Id: PKGBUILD 39034 2009-05-11 08:28:48Z tpowa $
+#Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=capi4k-utils
+pkgver=050718
+pkgrel=7
+pkgdesc="capi utils for isdn cards"
+arch=(i686 x86_64)
+license=('GPL2')
+url="ftp://ftp.in-berlin.de/pub/capi4linux/"
+makedepends=('ppp')
+depends=('glibc' 'bash')
+backup=(etc/capi.conf)
+source=(ftp://ftp.in-berlin.de/pub/capi4linux/capi4k-utils-2005-07-18.tar.gz
+ ppp-2.4.4.patch
+ config
+ capi.conf
+ capiinit.rc
+ capi-compile.patch)
+options=(!libtool)
+md5sums=('c745759b6b3d64e19763727176648cdf'
+ 'c5416b8b1b76a82c4bcaad76140369e1'
+ '146aa9e06588511c447d7e81dafec86a'
+ 'c88940f0ace5759b7a0e8b267ca77ce2'
+ 'aa59439a70299290a4d9bcdfaeafed72'
+ '4fa27c5b7b1ee60524fce875bb54bca8')
+
+build() {
+ cd $srcdir/$pkgname
+ patch -Np1 -i ../ppp-2.4.4.patch || return 1
+ # fix compiling with gcc 4.2
+ patch -Np1 -i ../capi-compile.patch || return 1
+ cp ../config .config
+ # fix pppd plugin
+ sed -i -e 's/2.3.11 2.4.0 2.4.1 2.4.1b1 2.4.1b2 2.4.2b3 2.4.2 2.4.3/2.4.4/g' $startdir/src/$pkgname/pppdcapiplugin/Makefile
+ # patch all Makefile.* and Rules.make to use our CFLAGS
+ sed -i -e "s:^\(CFLAGS.*\)-O2:\1${CFLAGS}:g" */Makefile.* */Rules.make
+ # Arch64 fix from Gentoo
+ # patch capi20/Makefile.* to use -fPIC for shared library
+ [ "$CARCH" = "x86_64" ] && (sed -i -e "s:^\(CFLAGS.*\):\1 -fPIC:g" capi20/Makefile.* || return 1)
+ cd capi20
+ aclocal
+ libtoolize --copy --force
+ cd $srcdir/$pkgname
+ make subconfig || return 1
+ make || return 1
+ make DESTDIR=$pkgdir install || return 1
+ install -m755 -D $srcdir/capiinit.rc $pkgdir/etc/rc.d/capiinit
+ install -m644 $srcdir/capi.conf $pkgdir/etc
+ cd $pkgdir/usr/lib
+ ln -s libcapi20 libcapi20.so.2
+ # fix wrong manpage permission
+ chmod 644 $pkgdir/usr/share/man/man8/capiplugin.8
+}
diff --git a/extra/capi4k-utils/capi-compile.patch b/extra/capi4k-utils/capi-compile.patch
new file mode 100644
index 000000000..e6b3acb3b
--- /dev/null
+++ b/extra/capi4k-utils/capi-compile.patch
@@ -0,0 +1,10 @@
+--- capi4k-utils/capi20/capi20.h~ 2000-11-19 11:15:01.000000000 +0100
++++ capi4k-utils/capi20/capi20.h 2007-11-12 12:07:30.000000000 +0100
+@@ -21,6 +21,7 @@
+ #define __CAPI20_H__
+
+ #include <sys/time.h>
++#include <sys/types.h>
+
+ #ifdef __cplusplus
+ extern "C" {
diff --git a/extra/capi4k-utils/capi.conf b/extra/capi4k-utils/capi.conf
new file mode 100644
index 000000000..c6b35751f
--- /dev/null
+++ b/extra/capi4k-utils/capi.conf
@@ -0,0 +1,14 @@
+# card file proto io irq mem cardnr options
+#b1isa b1.t4 DSS1 0x150 7 - - P2P
+#b1pci b1.t4 DSS1 - - - -
+#c4 c4.bin DSS1 - - - -
+#c4 - DSS1 - - - -
+#c4 - DSS1 - - - - P2P
+#c4 - DSS1 - - - - P2P
+#c2 c2.bin DSS1 - - - -
+#c2 - DSS1 - - - -
+#t1isa t1.t4 DSS1 0x340 9 - 0
+#t1pci t1.t4 DSS1 - - - -
+#fcpci - - - - - -
+#fcclassic - - 0x150 10 - -
+#fcpcmcia - - - - - - \ No newline at end of file
diff --git a/extra/capi4k-utils/capiinit.rc b/extra/capi4k-utils/capiinit.rc
new file mode 100755
index 000000000..841be67f3
--- /dev/null
+++ b/extra/capi4k-utils/capiinit.rc
@@ -0,0 +1,43 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+PID=`pidof -o %PPID /usr/sbin/capiinit`
+case "$1" in
+ start)
+ stat_busy "Starting capiinit"
+ [ -f /proc/capi/capi20 ] || /sbin/modprobe -s capi
+
+ CNT=0 # wait for udev
+ while [ ! -e /dev/capi20 -a $CNT -lt 10 ]; do
+ sleep 1; : $((CNT++))
+ done
+
+ if [ -z "$PID" ]; then
+ /usr/sbin/capiinit 2>/dev/null start
+ fi
+
+ if [ ! -z "$PID" -o $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon capiinit
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping capiinit"
+ /usr/sbin/capiinit 2>/dev/null stop
+ /sbin/modprobe -sqr capi
+ rm_daemon capiinit
+ stat_done
+ ;;
+ restart)
+ $0 stop
+ sleep 2
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
diff --git a/extra/capi4k-utils/config b/extra/capi4k-utils/config
new file mode 100644
index 000000000..6ca0dfd61
--- /dev/null
+++ b/extra/capi4k-utils/config
@@ -0,0 +1,11 @@
+#
+# Automatically generated by make menuconfig: don't edit
+#
+CONFIG_KERNELDIR='/usr/src/$(uname -r)'
+CONFIG_BINDIR='/usr/bin'
+CONFIG_SBINDIR='/usr/sbin'
+CONFIG_MANDIR='/usr/share/man'
+CONFIG_AVMCAPICTRL=y
+CONFIG_CAPIFAX=y
+CONFIG_RCAPID=y
+CONFIG_PPPDCAPIPLUGIN=y
diff --git a/extra/capi4k-utils/ppp-2.4.4.patch b/extra/capi4k-utils/ppp-2.4.4.patch
new file mode 100644
index 000000000..24a06a63b
--- /dev/null
+++ b/extra/capi4k-utils/ppp-2.4.4.patch
@@ -0,0 +1,1874 @@
+diff -auNr capi4k-utils/pppdcapiplugin/ppp-2.4.4/Makefile capi4k-utils_patched/pppdcapiplugin/ppp-2.4.4/Makefile
+--- capi4k-utils/pppdcapiplugin/ppp-2.4.4/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ capi4k-utils_patched/pppdcapiplugin/ppp-2.4.4/Makefile 2006-12-30 16:14:35.000000000 +0100
+@@ -0,0 +1,14 @@
++# Makefile for the capiplugin for pppd(8).
++#
++# Copyright 2000 Carsten Paeth (calle@calle.in-berlin.de)
++# Copyright 2000 AVM GmbH Berlin (info@avm.de)
++#
++# This program is free software; you can redistribute it and/or
++# modify it under the terms of the GNU General Public License
++# as published by the Free Software Foundation; either version
++# 2 of the License, or (at your option) any later version.
++
++PLUGINDIR=${DESTDIR}/usr/lib/pppd/$(PPPVERSION)
++
++include $(TOPDIR)/Rules.make
++
+diff -auNr capi4k-utils/pppdcapiplugin/ppp-2.4.4/pppd/patchlevel.h capi4k-utils_patched/pppdcapiplugin/ppp-2.4.4/pppd/patchlevel.h
+--- capi4k-utils/pppdcapiplugin/ppp-2.4.4/pppd/patchlevel.h 1970-01-01 01:00:00.000000000 +0100
++++ capi4k-utils_patched/pppdcapiplugin/ppp-2.4.4/pppd/patchlevel.h 2006-12-30 16:14:35.000000000 +0100
+@@ -0,0 +1,4 @@
++/* $Id: ppp-2.4.4.patch,v 1.1 2007/01/01 15:17:26 tpowa Exp $ */
++
++#define VERSION "2.4.4"
++#define DATE "28 June 2006"
+diff -auNr capi4k-utils/pppdcapiplugin/ppp-2.4.4/pppd/pppd.h capi4k-utils_patched/pppdcapiplugin/ppp-2.4.4/pppd/pppd.h
+--- capi4k-utils/pppdcapiplugin/ppp-2.4.4/pppd/pppd.h 1970-01-01 01:00:00.000000000 +0100
++++ capi4k-utils_patched/pppdcapiplugin/ppp-2.4.4/pppd/pppd.h 2006-12-30 16:14:35.000000000 +0100
+@@ -0,0 +1,909 @@
++/*
++ * pppd.h - PPP daemon global declarations.
++ *
++ * Copyright (c) 1984-2000 Carnegie Mellon University. All rights reserved.
++ *
++ * Redistribution and use in source and binary forms, with or without
++ * modification, are permitted provided that the following conditions
++ * are met:
++ *
++ * 1. Redistributions of source code must retain the above copyright
++ * notice, this list of conditions and the following disclaimer.
++ *
++ * 2. Redistributions in binary form must reproduce the above copyright
++ * notice, this list of conditions and the following disclaimer in
++ * the documentation and/or other materials provided with the
++ * distribution.
++ *
++ * 3. The name "Carnegie Mellon University" must not be used to
++ * endorse or promote products derived from this software without
++ * prior written permission. For permission or any legal
++ * details, please contact
++ * Office of Technology Transfer
++ * Carnegie Mellon University
++ * 5000 Forbes Avenue
++ * Pittsburgh, PA 15213-3890
++ * (412) 268-4387, fax: (412) 268-7395
++ * tech-transfer@andrew.cmu.edu
++ *
++ * 4. Redistributions of any form whatsoever must retain the following
++ * acknowledgment:
++ * "This product includes software developed by Computing Services
++ * at Carnegie Mellon University (http://www.cmu.edu/computing/)."
++ *
++ * CARNEGIE MELLON UNIVERSITY DISCLAIMS ALL WARRANTIES WITH REGARD TO
++ * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
++ * AND FITNESS, IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY BE LIABLE
++ * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
++ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
++ * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
++ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
++ *
++ * $Id: ppp-2.4.4.patch,v 1.1 2007/01/01 15:17:26 tpowa Exp $
++ */
++
++/*
++ * TODO:
++ */
++
++#ifndef __PPPD_H__
++#define __PPPD_H__
++
++#include <stdio.h> /* for FILE */
++#include <limits.h> /* for NGROUPS_MAX */
++#include <sys/param.h> /* for MAXPATHLEN and BSD4_4, if defined */
++#include <sys/types.h> /* for u_int32_t, if defined */
++#include <sys/time.h> /* for struct timeval */
++#include <net/ppp_defs.h>
++#include "patchlevel.h"
++
++#if defined(__STDC__)
++#include <stdarg.h>
++#define __V(x) x
++#else
++#include <varargs.h>
++#define __V(x) (va_alist) va_dcl
++#define const
++#define volatile
++#endif
++
++#ifdef INET6
++#include "eui64.h"
++#endif
++
++/*
++ * Limits.
++ */
++
++#define NUM_PPP 1 /* One PPP interface supported (per process) */
++#define MAXWORDLEN 1024 /* max length of word in file (incl null) */
++#define MAXARGS 1 /* max # args to a command */
++#define MAXNAMELEN 256 /* max length of hostname or name for auth */
++#define MAXSECRETLEN 256 /* max length of password or secret */
++
++/*
++ * Option descriptor structure.
++ */
++
++typedef unsigned char bool;
++
++enum opt_type {
++ o_special_noarg = 0,
++ o_special = 1,
++ o_bool,
++ o_int,
++ o_uint32,
++ o_string,
++ o_wild
++};
++
++typedef struct {
++ char *name; /* name of the option */
++ enum opt_type type;
++ void *addr;
++ char *description;
++ unsigned int flags;
++ void *addr2;
++ int upper_limit;
++ int lower_limit;
++ const char *source;
++ short int priority;
++ short int winner;
++} option_t;
++
++/* Values for flags */
++#define OPT_VALUE 0xff /* mask for presupplied value */
++#define OPT_HEX 0x100 /* int option is in hex */
++#define OPT_NOARG 0x200 /* option doesn't take argument */
++#define OPT_OR 0x400 /* OR in argument to value */
++#define OPT_INC 0x800 /* increment value */
++#define OPT_A2OR 0x800 /* for o_bool, OR arg to *(u_char *)addr2 */
++#define OPT_PRIV 0x1000 /* privileged option */
++#define OPT_STATIC 0x2000 /* string option goes into static array */
++#define OPT_LLIMIT 0x4000 /* check value against lower limit */
++#define OPT_ULIMIT 0x8000 /* check value against upper limit */
++#define OPT_LIMITS (OPT_LLIMIT|OPT_ULIMIT)
++#define OPT_ZEROOK 0x10000 /* 0 value is OK even if not within limits */
++#define OPT_HIDE 0x10000 /* for o_string, print value as ?????? */
++#define OPT_A2LIST 0x10000 /* for o_special, keep list of values */
++#define OPT_A2CLRB 0x10000 /* o_bool, clr val bits in *(u_char *)addr2 */
++#define OPT_NOINCR 0x20000 /* value mustn't be increased */
++#define OPT_ZEROINF 0x40000 /* with OPT_NOINCR, 0 == infinity */
++#define OPT_PRIO 0x80000 /* process option priorities for this option */
++#define OPT_PRIOSUB 0x100000 /* subsidiary member of priority group */
++#define OPT_ALIAS 0x200000 /* option is alias for previous option */
++#define OPT_A2COPY 0x400000 /* addr2 -> second location to rcv value */
++#define OPT_ENABLE 0x800000 /* use *addr2 as enable for option */
++#define OPT_A2CLR 0x1000000 /* clear *(bool *)addr2 */
++#define OPT_PRIVFIX 0x2000000 /* user can't override if set by root */
++#define OPT_INITONLY 0x4000000 /* option can only be set in init phase */
++#define OPT_DEVEQUIV 0x8000000 /* equiv to device name */
++#define OPT_DEVNAM (OPT_INITONLY | OPT_DEVEQUIV)
++#define OPT_A2PRINTER 0x10000000 /* *addr2 is a fn for printing option */
++#define OPT_A2STRVAL 0x20000000 /* *addr2 points to current string value */
++#define OPT_NOPRINT 0x40000000 /* don't print this option at all */
++
++#define OPT_VAL(x) ((x) & OPT_VALUE)
++
++/* Values for priority */
++#define OPRIO_DEFAULT 0 /* a default value */
++#define OPRIO_CFGFILE 1 /* value from a configuration file */
++#define OPRIO_CMDLINE 2 /* value from the command line */
++#define OPRIO_SECFILE 3 /* value from options in a secrets file */
++#define OPRIO_ROOT 100 /* added to priority if OPT_PRIVFIX && root */
++
++#ifndef GIDSET_TYPE
++#define GIDSET_TYPE gid_t
++#endif
++
++/* Structure representing a list of permitted IP addresses. */
++struct permitted_ip {
++ int permit; /* 1 = permit, 0 = forbid */
++ u_int32_t base; /* match if (addr & mask) == base */
++ u_int32_t mask; /* base and mask are in network byte order */
++};
++
++/*
++ * Unfortunately, the linux kernel driver uses a different structure
++ * for statistics from the rest of the ports.
++ * This structure serves as a common representation for the bits
++ * pppd needs.
++ */
++struct pppd_stats {
++ unsigned int bytes_in;
++ unsigned int bytes_out;
++ unsigned int pkts_in;
++ unsigned int pkts_out;
++};
++
++/* Used for storing a sequence of words. Usually malloced. */
++struct wordlist {
++ struct wordlist *next;
++ char *word;
++};
++
++/* An endpoint discriminator, used with multilink. */
++#define MAX_ENDP_LEN 20 /* maximum length of discriminator value */
++struct epdisc {
++ unsigned char class;
++ unsigned char length;
++ unsigned char value[MAX_ENDP_LEN];
++};
++
++/* values for epdisc.class */
++#define EPD_NULL 0 /* null discriminator, no data */
++#define EPD_LOCAL 1
++#define EPD_IP 2
++#define EPD_MAC 3
++#define EPD_MAGIC 4
++#define EPD_PHONENUM 5
++
++typedef void (*notify_func) __P((void *, int));
++
++struct notifier {
++ struct notifier *next;
++ notify_func func;
++ void *arg;
++};
++
++/*
++ * Global variables.
++ */
++
++extern int hungup; /* Physical layer has disconnected */
++extern int ifunit; /* Interface unit number */
++extern char ifname[]; /* Interface name */
++extern char hostname[]; /* Our hostname */
++extern u_char outpacket_buf[]; /* Buffer for outgoing packets */
++extern int devfd; /* fd of underlying device */
++extern int fd_ppp; /* fd for talking PPP */
++extern int phase; /* Current state of link - see values below */
++extern int baud_rate; /* Current link speed in bits/sec */
++extern char *progname; /* Name of this program */
++extern int redirect_stderr;/* Connector's stderr should go to file */
++extern char peer_authname[];/* Authenticated name of peer */
++extern int auth_done[NUM_PPP]; /* Methods actually used for auth */
++extern int privileged; /* We were run by real-uid root */
++extern int need_holdoff; /* Need holdoff period after link terminates */
++extern char **script_env; /* Environment variables for scripts */
++extern int detached; /* Have detached from controlling tty */
++extern GIDSET_TYPE groups[NGROUPS_MAX]; /* groups the user is in */
++extern int ngroups; /* How many groups valid in groups */
++extern struct pppd_stats link_stats; /* byte/packet counts etc. for link */
++extern int link_stats_valid; /* set if link_stats is valid */
++extern unsigned link_connect_time; /* time the link was up for */
++extern int using_pty; /* using pty as device (notty or pty opt.) */
++extern int log_to_fd; /* logging to this fd as well as syslog */
++extern bool log_default; /* log_to_fd is default (stdout) */
++extern char *no_ppp_msg; /* message to print if ppp not in kernel */
++extern volatile int status; /* exit status for pppd */
++extern bool devnam_fixed; /* can no longer change devnam */
++extern int unsuccess; /* # unsuccessful connection attempts */
++extern int do_callback; /* set if we want to do callback next */
++extern int doing_callback; /* set if this is a callback */
++extern int error_count; /* # of times error() has been called */
++extern char ppp_devnam[MAXPATHLEN];
++extern char remote_number[MAXNAMELEN]; /* Remote telephone number, if avail. */
++extern int ppp_session_number; /* Session number (eg PPPoE session) */
++extern int fd_devnull; /* fd open to /dev/null */
++
++extern int listen_time; /* time to listen first (ms) */
++extern bool doing_multilink;
++extern bool multilink_master;
++extern bool bundle_eof;
++extern bool bundle_terminating;
++
++extern struct notifier *pidchange; /* for notifications of pid changing */
++extern struct notifier *phasechange; /* for notifications of phase changes */
++extern struct notifier *exitnotify; /* for notification that we're exiting */
++extern struct notifier *sigreceived; /* notification of received signal */
++extern struct notifier *ip_up_notifier; /* IPCP has come up */
++extern struct notifier *ip_down_notifier; /* IPCP has gone down */
++extern struct notifier *auth_up_notifier; /* peer has authenticated */
++extern struct notifier *link_down_notifier; /* link has gone down */
++extern struct notifier *fork_notifier; /* we are a new child process */
++
++/* Values for do_callback and doing_callback */
++#define CALLBACK_DIALIN 1 /* we are expecting the call back */
++#define CALLBACK_DIALOUT 2 /* we are dialling out to call back */
++
++/*
++ * Variables set by command-line options.
++ */
++
++extern int debug; /* Debug flag */
++extern int kdebugflag; /* Tell kernel to print debug messages */
++extern int default_device; /* Using /dev/tty or equivalent */
++extern char devnam[MAXPATHLEN]; /* Device name */
++extern int crtscts; /* Use hardware flow control */
++extern bool modem; /* Use modem control lines */
++extern int inspeed; /* Input/Output speed requested */
++extern u_int32_t netmask; /* IP netmask to set on interface */
++extern bool lockflag; /* Create lock file to lock the serial dev */
++extern bool nodetach; /* Don't detach from controlling tty */
++extern bool updetach; /* Detach from controlling tty when link up */
++extern char *initializer; /* Script to initialize physical link */
++extern char *connect_script; /* Script to establish physical link */
++extern char *disconnect_script; /* Script to disestablish physical link */
++extern char *welcomer; /* Script to welcome client after connection */
++extern char *ptycommand; /* Command to run on other side of pty */
++extern int maxconnect; /* Maximum connect time (seconds) */
++extern char user[MAXNAMELEN];/* Our name for authenticating ourselves */
++extern char passwd[MAXSECRETLEN]; /* Password for PAP or CHAP */
++extern bool auth_required; /* Peer is required to authenticate */
++extern bool persist; /* Reopen link after it goes down */
++extern bool uselogin; /* Use /etc/passwd for checking PAP */
++extern char our_name[MAXNAMELEN];/* Our name for authentication purposes */
++extern char remote_name[MAXNAMELEN]; /* Peer's name for authentication */
++extern bool explicit_remote;/* remote_name specified with remotename opt */
++extern bool demand; /* Do dial-on-demand */
++extern char *ipparam; /* Extra parameter for ip up/down scripts */
++extern bool cryptpap; /* Others' PAP passwords are encrypted */
++extern int idle_time_limit;/* Shut down link if idle for this long */
++extern int holdoff; /* Dead time before restarting */
++extern bool holdoff_specified; /* true if user gave a holdoff value */
++extern bool notty; /* Stdin/out is not a tty */
++extern char *pty_socket; /* Socket to connect to pty */
++extern char *record_file; /* File to record chars sent/received */
++extern bool sync_serial; /* Device is synchronous serial device */
++extern int maxfail; /* Max # of unsuccessful connection attempts */
++extern char linkname[MAXPATHLEN]; /* logical name for link */
++extern bool tune_kernel; /* May alter kernel settings as necessary */
++extern int connect_delay; /* Time to delay after connect script */
++extern int max_data_rate; /* max bytes/sec through charshunt */
++extern int req_unit; /* interface unit number to use */
++extern char path_ipup[MAXPATHLEN]; /* pathname of ip-up script */
++extern char path_ipdown[MAXPATHLEN]; /* pathname of ip-down script */
++extern bool multilink; /* enable multilink operation */
++extern bool noendpoint; /* don't send or accept endpt. discrim. */
++extern char *bundle_name; /* bundle name for multilink */
++extern bool dump_options; /* print out option values */
++extern bool dryrun; /* check everything, print options, exit */
++extern int child_wait; /* # seconds to wait for children at end */
++
++#ifdef MAXOCTETS
++extern unsigned int maxoctets; /* Maximum octetes per session (in bytes) */
++extern int maxoctets_dir; /* Direction :
++ 0 - in+out (default)
++ 1 - in
++ 2 - out
++ 3 - max(in,out) */
++extern int maxoctets_timeout; /* Timeout for check of octets limit */
++#define PPP_OCTETS_DIRECTION_SUM 0
++#define PPP_OCTETS_DIRECTION_IN 1
++#define PPP_OCTETS_DIRECTION_OUT 2
++#define PPP_OCTETS_DIRECTION_MAXOVERAL 3
++/* same as previos, but little different on RADIUS side */
++#define PPP_OCTETS_DIRECTION_MAXSESSION 4
++#endif
++
++#ifdef PPP_FILTER
++extern struct bpf_program pass_filter; /* Filter for pkts to pass */
++extern struct bpf_program active_filter; /* Filter for link-active pkts */
++#endif
++
++#ifdef MSLANMAN
++extern bool ms_lanman; /* Use LanMan password instead of NT */
++ /* Has meaning only with MS-CHAP challenges */
++#endif
++
++/* Values for auth_pending, auth_done */
++#define PAP_WITHPEER 0x1
++#define PAP_PEER 0x2
++#define CHAP_WITHPEER 0x4
++#define CHAP_PEER 0x8
++#define EAP_WITHPEER 0x10
++#define EAP_PEER 0x20
++
++/* Values for auth_done only */
++#define CHAP_MD5_WITHPEER 0x40
++#define CHAP_MD5_PEER 0x80
++#define CHAP_MS_SHIFT 8 /* LSB position for MS auths */
++#define CHAP_MS_WITHPEER 0x100
++#define CHAP_MS_PEER 0x200
++#define CHAP_MS2_WITHPEER 0x400
++#define CHAP_MS2_PEER 0x800
++
++extern char *current_option; /* the name of the option being parsed */
++extern int privileged_option; /* set iff the current option came from root */
++extern char *option_source; /* string saying where the option came from */
++extern int option_priority; /* priority of current options */
++
++/*
++ * Values for phase.
++ */
++#define PHASE_DEAD 0
++#define PHASE_INITIALIZE 1
++#define PHASE_SERIALCONN 2
++#define PHASE_DORMANT 3
++#define PHASE_ESTABLISH 4
++#define PHASE_AUTHENTICATE 5
++#define PHASE_CALLBACK 6
++#define PHASE_NETWORK 7
++#define PHASE_RUNNING 8
++#define PHASE_TERMINATE 9
++#define PHASE_DISCONNECT 10
++#define PHASE_HOLDOFF 11
++#define PHASE_MASTER 12
++
++/*
++ * The following struct gives the addresses of procedures to call
++ * for a particular protocol.
++ */
++struct protent {
++ u_short protocol; /* PPP protocol number */
++ /* Initialization procedure */
++ void (*init) __P((int unit));
++ /* Process a received packet */
++ void (*input) __P((int unit, u_char *pkt, int len));
++ /* Process a received protocol-reject */
++ void (*protrej) __P((int unit));
++ /* Lower layer has come up */
++ void (*lowerup) __P((int unit));
++ /* Lower layer has gone down */
++ void (*lowerdown) __P((int unit));
++ /* Open the protocol */
++ void (*open) __P((int unit));
++ /* Close the protocol */
++ void (*close) __P((int unit, char *reason));
++ /* Print a packet in readable form */
++ int (*printpkt) __P((u_char *pkt, int len,
++ void (*printer) __P((void *, char *, ...)),
++ void *arg));
++ /* Process a received data packet */
++ void (*datainput) __P((int unit, u_char *pkt, int len));
++ bool enabled_flag; /* 0 iff protocol is disabled */
++ char *name; /* Text name of protocol */
++ char *data_name; /* Text name of corresponding data protocol */
++ option_t *options; /* List of command-line options */
++ /* Check requested options, assign defaults */
++ void (*check_options) __P((void));
++ /* Configure interface for demand-dial */
++ int (*demand_conf) __P((int unit));
++ /* Say whether to bring up link for this pkt */
++ int (*active_pkt) __P((u_char *pkt, int len));
++};
++
++/* Table of pointers to supported protocols */
++extern struct protent *protocols[];
++
++/*
++ * This struct contains pointers to a set of procedures for
++ * doing operations on a "channel". A channel provides a way
++ * to send and receive PPP packets - the canonical example is
++ * a serial port device in PPP line discipline (or equivalently
++ * with PPP STREAMS modules pushed onto it).
++ */
++struct channel {
++ /* set of options for this channel */
++ option_t *options;
++ /* find and process a per-channel options file */
++ void (*process_extra_options) __P((void));
++ /* check all the options that have been given */
++ void (*check_options) __P((void));
++ /* get the channel ready to do PPP, return a file descriptor */
++ int (*connect) __P((void));
++ /* we're finished with the channel */
++ void (*disconnect) __P((void));
++ /* put the channel into PPP `mode' */
++ int (*establish_ppp) __P((int));
++ /* take the channel out of PPP `mode', restore loopback if demand */
++ void (*disestablish_ppp) __P((int));
++ /* set the transmit-side PPP parameters of the channel */
++ void (*send_config) __P((int, u_int32_t, int, int));
++ /* set the receive-side PPP parameters of the channel */
++ void (*recv_config) __P((int, u_int32_t, int, int));
++ /* cleanup on error or normal exit */
++ void (*cleanup) __P((void));
++ /* close the device, called in children after fork */
++ void (*close) __P((void));
++};
++
++extern struct channel *the_channel;
++
++/*
++ * Prototypes.
++ */
++
++/* Procedures exported from main.c. */
++void set_ifunit __P((int)); /* set stuff that depends on ifunit */
++void detach __P((void)); /* Detach from controlling tty */
++void die __P((int)); /* Cleanup and exit */
++void quit __P((void)); /* like die(1) */
++void novm __P((char *)); /* Say we ran out of memory, and die */
++void timeout __P((void (*func)(void *), void *arg, int s, int us));
++ /* Call func(arg) after s.us seconds */
++void untimeout __P((void (*func)(void *), void *arg));
++ /* Cancel call to func(arg) */
++void record_child __P((int, char *, void (*) (void *), void *));
++pid_t safe_fork __P((int, int, int)); /* Fork & close stuff in child */
++int device_script __P((char *cmd, int in, int out, int dont_wait));
++ /* Run `cmd' with given stdin and stdout */
++pid_t run_program __P((char *prog, char **args, int must_exist,
++ void (*done)(void *), void *arg, int wait));
++ /* Run program prog with args in child */
++void reopen_log __P((void)); /* (re)open the connection to syslog */
++void print_link_stats __P((void)); /* Print stats, if available */
++void reset_link_stats __P((int)); /* Reset (init) stats when link goes up */
++void update_link_stats __P((int)); /* Get stats at link termination */
++void script_setenv __P((char *, char *, int)); /* set script env var */
++void script_unsetenv __P((char *)); /* unset script env var */
++void new_phase __P((int)); /* signal start of new phase */
++void add_notifier __P((struct notifier **, notify_func, void *));
++void remove_notifier __P((struct notifier **, notify_func, void *));
++void notify __P((struct notifier *, int));
++int ppp_send_config __P((int, int, u_int32_t, int, int));
++int ppp_recv_config __P((int, int, u_int32_t, int, int));
++const char *protocol_name __P((int));
++void remove_pidfiles __P((void));
++void lock_db __P((void));
++void unlock_db __P((void));
++
++/* Procedures exported from tty.c. */
++void tty_init __P((void));
++
++/* Procedures exported from utils.c. */
++void log_packet __P((u_char *, int, char *, int));
++ /* Format a packet and log it with syslog */
++void print_string __P((char *, int, void (*) (void *, char *, ...),
++ void *)); /* Format a string for output */
++int slprintf __P((char *, int, char *, ...)); /* sprintf++ */
++int vslprintf __P((char *, int, char *, va_list)); /* vsprintf++ */
++size_t strlcpy __P((char *, const char *, size_t)); /* safe strcpy */
++size_t strlcat __P((char *, const char *, size_t)); /* safe strncpy */
++void dbglog __P((char *, ...)); /* log a debug message */
++void info __P((char *, ...)); /* log an informational message */
++void notice __P((char *, ...)); /* log a notice-level message */
++void warn __P((char *, ...)); /* log a warning message */
++void error __P((char *, ...)); /* log an error message */
++void fatal __P((char *, ...)); /* log an error message and die(1) */
++void init_pr_log __P((char *, int)); /* initialize for using pr_log */
++void pr_log __P((void *, char *, ...)); /* printer fn, output to syslog */
++void end_pr_log __P((void)); /* finish up after using pr_log */
++void dump_packet __P((const char *, u_char *, int));
++ /* dump packet to debug log if interesting */
++ssize_t complete_read __P((int, void *, size_t));
++ /* read a complete buffer */
++
++/* Procedures exported from auth.c */
++void link_required __P((int)); /* we are starting to use the link */
++void start_link __P((int)); /* bring the link up now */
++void link_terminated __P((int)); /* we are finished with the link */
++void link_down __P((int)); /* the LCP layer has left the Opened state */
++void upper_layers_down __P((int));/* take all NCPs down */
++void link_established __P((int)); /* the link is up; authenticate now */
++void start_networks __P((int)); /* start all the network control protos */
++void continue_networks __P((int)); /* start network [ip, etc] control protos */
++void np_up __P((int, int)); /* a network protocol has come up */
++void np_down __P((int, int)); /* a network protocol has gone down */
++void np_finished __P((int, int)); /* a network protocol no longer needs link */
++void auth_peer_fail __P((int, int));
++ /* peer failed to authenticate itself */
++void auth_peer_success __P((int, int, int, char *, int));
++ /* peer successfully authenticated itself */
++void auth_withpeer_fail __P((int, int));
++ /* we failed to authenticate ourselves */
++void auth_withpeer_success __P((int, int, int));
++ /* we successfully authenticated ourselves */
++void auth_check_options __P((void));
++ /* check authentication options supplied */
++void auth_reset __P((int)); /* check what secrets we have */
++int check_passwd __P((int, char *, int, char *, int, char **));
++ /* Check peer-supplied username/password */
++int get_secret __P((int, char *, char *, char *, int *, int));
++ /* get "secret" for chap */
++int get_srp_secret __P((int unit, char *client, char *server, char *secret,
++ int am_server));
++int auth_ip_addr __P((int, u_int32_t));
++ /* check if IP address is authorized */
++int auth_number __P((void)); /* check if remote number is authorized */
++int bad_ip_adrs __P((u_int32_t));
++ /* check if IP address is unreasonable */
++
++/* Procedures exported from demand.c */
++void demand_conf __P((void)); /* config interface(s) for demand-dial */
++void demand_block __P((void)); /* set all NPs to queue up packets */
++void demand_unblock __P((void)); /* set all NPs to pass packets */
++void demand_discard __P((void)); /* set all NPs to discard packets */
++void demand_rexmit __P((int, u_int32_t)); /* retransmit saved frames for an NP*/
++int loop_chars __P((unsigned char *, int)); /* process chars from loopback */
++int loop_frame __P((unsigned char *, int)); /* should we bring link up? */
++
++/* Procedures exported from multilink.c */
++#ifdef HAVE_MULTILINK
++void mp_check_options __P((void)); /* Check multilink-related options */
++int mp_join_bundle __P((void)); /* join our link to an appropriate bundle */
++void mp_exit_bundle __P((void)); /* have disconnected our link from bundle */
++void mp_bundle_terminated __P((void));
++char *epdisc_to_str __P((struct epdisc *)); /* string from endpoint discrim. */
++int str_to_epdisc __P((struct epdisc *, char *)); /* endpt disc. from str */
++#else
++#define mp_bundle_terminated() /* nothing */
++#define mp_exit_bundle() /* nothing */
++#define doing_multilink 0
++#define multilink_master 0
++#endif
++
++/* Procedures exported from sys-*.c */
++void sys_init __P((void)); /* Do system-dependent initialization */
++void sys_cleanup __P((void)); /* Restore system state before exiting */
++int sys_check_options __P((void)); /* Check options specified */
++void sys_close __P((void)); /* Clean up in a child before execing */
++int ppp_available __P((void)); /* Test whether ppp kernel support exists */
++int get_pty __P((int *, int *, char *, int)); /* Get pty master/slave */
++int open_ppp_loopback __P((void)); /* Open loopback for demand-dialling */
++int tty_establish_ppp __P((int)); /* Turn serial port into a ppp interface */
++void tty_disestablish_ppp __P((int)); /* Restore port to normal operation */
++void generic_disestablish_ppp __P((int dev_fd)); /* Restore device setting */
++int generic_establish_ppp __P((int dev_fd)); /* Make a ppp interface */
++void make_new_bundle __P((int, int, int, int)); /* Create new bundle */
++int bundle_attach __P((int)); /* Attach link to existing bundle */
++void cfg_bundle __P((int, int, int, int)); /* Configure existing bundle */
++void destroy_bundle __P((void)); /* Tell driver to destroy bundle */
++void clean_check __P((void)); /* Check if line was 8-bit clean */
++void set_up_tty __P((int, int)); /* Set up port's speed, parameters, etc. */
++void restore_tty __P((int)); /* Restore port's original parameters */
++void setdtr __P((int, int)); /* Raise or lower port's DTR line */
++void output __P((int, u_char *, int)); /* Output a PPP packet */
++void wait_input __P((struct timeval *));
++ /* Wait for input, with timeout */
++void add_fd __P((int)); /* Add fd to set to wait for */
++void remove_fd __P((int)); /* Remove fd from set to wait for */
++int read_packet __P((u_char *)); /* Read PPP packet */
++int get_loop_output __P((void)); /* Read pkts from loopback */
++void tty_send_config __P((int, u_int32_t, int, int));
++ /* Configure i/f transmit parameters */
++void tty_set_xaccm __P((ext_accm));
++ /* Set extended transmit ACCM */
++void tty_recv_config __P((int, u_int32_t, int, int));
++ /* Configure i/f receive parameters */
++int ccp_test __P((int, u_char *, int, int));
++ /* Test support for compression scheme */
++void ccp_flags_set __P((int, int, int));
++ /* Set kernel CCP state */
++int ccp_fatal_error __P((int)); /* Test for fatal decomp error in kernel */
++int get_idle_time __P((int, struct ppp_idle *));
++ /* Find out how long link has been idle */
++int get_ppp_stats __P((int, struct pppd_stats *));
++ /* Return link statistics */
++void netif_set_mtu __P((int, int)); /* Set PPP interface MTU */
++int netif_get_mtu __P((int)); /* Get PPP interface MTU */
++int sifvjcomp __P((int, int, int, int));
++ /* Configure VJ TCP header compression */
++int sifup __P((int)); /* Configure i/f up for one protocol */
++int sifnpmode __P((int u, int proto, enum NPmode mode));
++ /* Set mode for handling packets for proto */
++int sifdown __P((int)); /* Configure i/f down for one protocol */
++int sifaddr __P((int, u_int32_t, u_int32_t, u_int32_t));
++ /* Configure IPv4 addresses for i/f */
++int cifaddr __P((int, u_int32_t, u_int32_t));
++ /* Reset i/f IP addresses */
++#ifdef INET6
++int sif6addr __P((int, eui64_t, eui64_t));
++ /* Configure IPv6 addresses for i/f */
++int cif6addr __P((int, eui64_t, eui64_t));
++ /* Remove an IPv6 address from i/f */
++#endif
++int sifdefaultroute __P((int, u_int32_t, u_int32_t, bool replace_default_rt));
++ /* Create default route through i/f */
++int cifdefaultroute __P((int, u_int32_t, u_int32_t));
++ /* Delete default route through i/f */
++int sifproxyarp __P((int, u_int32_t));
++ /* Add proxy ARP entry for peer */
++int cifproxyarp __P((int, u_int32_t));
++ /* Delete proxy ARP entry for peer */
++u_int32_t GetMask __P((u_int32_t)); /* Get appropriate netmask for address */
++int lock __P((char *)); /* Create lock file for device */
++int relock __P((int)); /* Rewrite lock file with new pid */
++void unlock __P((void)); /* Delete previously-created lock file */
++void logwtmp __P((const char *, const char *, const char *));
++ /* Write entry to wtmp file */
++int get_host_seed __P((void)); /* Get host-dependent random number seed */
++int have_route_to __P((u_int32_t)); /* Check if route to addr exists */
++#ifdef PPP_FILTER
++int set_filters __P((struct bpf_program *pass, struct bpf_program *active));
++ /* Set filter programs in kernel */
++#endif
++#ifdef IPX_CHANGE
++int sipxfaddr __P((int, unsigned long, unsigned char *));
++int cipxfaddr __P((int));
++#endif
++int get_if_hwaddr __P((u_char *addr, char *name));
++char *get_first_ethernet __P((void));
++
++/* Procedures exported from options.c */
++int setipaddr __P((char *, char **, int)); /* Set local/remote ip addresses */
++int parse_args __P((int argc, char **argv));
++ /* Parse options from arguments given */
++int options_from_file __P((char *filename, int must_exist, int check_prot,
++ int privileged));
++ /* Parse options from an options file */
++int options_from_user __P((void)); /* Parse options from user's .ppprc */
++int options_for_tty __P((void)); /* Parse options from /etc/ppp/options.tty */
++int options_from_list __P((struct wordlist *, int privileged));
++ /* Parse options from a wordlist */
++int getword __P((FILE *f, char *word, int *newlinep, char *filename));
++ /* Read a word from a file */
++void option_error __P((char *fmt, ...));
++ /* Print an error message about an option */
++int int_option __P((char *, int *));
++ /* Simplified number_option for decimal ints */
++void add_options __P((option_t *)); /* Add extra options */
++void check_options __P((void)); /* check values after all options parsed */
++int override_value __P((const char *, int, const char *));
++ /* override value if permitted by priority */
++void print_options __P((void (*) __P((void *, char *, ...)), void *));
++ /* print out values of all options */
++
++int parse_dotted_ip __P((char *, u_int32_t *));
++
++/*
++ * Hooks to enable plugins to change various things.
++ */
++extern int (*new_phase_hook) __P((int));
++extern int (*idle_time_hook) __P((struct ppp_idle *));
++extern int (*holdoff_hook) __P((void));
++extern int (*pap_check_hook) __P((void));
++extern int (*pap_auth_hook) __P((char *user, char *passwd, char **msgp,
++ struct wordlist **paddrs,
++ struct wordlist **popts));
++extern void (*pap_logout_hook) __P((void));
++extern int (*pap_passwd_hook) __P((char *user, char *passwd));
++extern int (*allowed_address_hook) __P((u_int32_t addr));
++extern void (*ip_up_hook) __P((void));
++extern void (*ip_down_hook) __P((void));
++extern void (*ip_choose_hook) __P((u_int32_t *));
++
++extern int (*chap_check_hook) __P((void));
++extern int (*chap_passwd_hook) __P((char *user, char *passwd));
++
++/* Let a plugin snoop sent and received packets. Useful for L2TP */
++extern void (*snoop_recv_hook) __P((unsigned char *p, int len));
++extern void (*snoop_send_hook) __P((unsigned char *p, int len));
++
++/*
++ * Inline versions of get/put char/short/long.
++ * Pointer is advanced; we assume that both arguments
++ * are lvalues and will already be in registers.
++ * cp MUST be u_char *.
++ */
++#define GETCHAR(c, cp) { \
++ (c) = *(cp)++; \
++}
++#define PUTCHAR(c, cp) { \
++ *(cp)++ = (u_char) (c); \
++}
++
++
++#define GETSHORT(s, cp) { \
++ (s) = *(cp)++ << 8; \
++ (s) |= *(cp)++; \
++}
++#define PUTSHORT(s, cp) { \
++ *(cp)++ = (u_char) ((s) >> 8); \
++ *(cp)++ = (u_char) (s); \
++}
++
++#define GETLONG(l, cp) { \
++ (l) = *(cp)++ << 8; \
++ (l) |= *(cp)++; (l) <<= 8; \
++ (l) |= *(cp)++; (l) <<= 8; \
++ (l) |= *(cp)++; \
++}
++#define PUTLONG(l, cp) { \
++ *(cp)++ = (u_char) ((l) >> 24); \
++ *(cp)++ = (u_char) ((l) >> 16); \
++ *(cp)++ = (u_char) ((l) >> 8); \
++ *(cp)++ = (u_char) (l); \
++}
++
++#define INCPTR(n, cp) ((cp) += (n))
++#define DECPTR(n, cp) ((cp) -= (n))
++
++/*
++ * System dependent definitions for user-level 4.3BSD UNIX implementation.
++ */
++
++#define TIMEOUT(r, f, t) timeout((r), (f), (t), 0)
++#define UNTIMEOUT(r, f) untimeout((r), (f))
++
++#define BCOPY(s, d, l) memcpy(d, s, l)
++#define BZERO(s, n) memset(s, 0, n)
++#define BCMP(s1, s2, l) memcmp(s1, s2, l)
++
++#define PRINTMSG(m, l) { info("Remote message: %0.*v", l, m); }
++
++/*
++ * MAKEHEADER - Add Header fields to a packet.
++ */
++#define MAKEHEADER(p, t) { \
++ PUTCHAR(PPP_ALLSTATIONS, p); \
++ PUTCHAR(PPP_UI, p); \
++ PUTSHORT(t, p); }
++
++/*
++ * Exit status values.
++ */
++#define EXIT_OK 0
++#define EXIT_FATAL_ERROR 1
++#define EXIT_OPTION_ERROR 2
++#define EXIT_NOT_ROOT 3
++#define EXIT_NO_KERNEL_SUPPORT 4
++#define EXIT_USER_REQUEST 5
++#define EXIT_LOCK_FAILED 6
++#define EXIT_OPEN_FAILED 7
++#define EXIT_CONNECT_FAILED 8
++#define EXIT_PTYCMD_FAILED 9
++#define EXIT_NEGOTIATION_FAILED 10
++#define EXIT_PEER_AUTH_FAILED 11
++#define EXIT_IDLE_TIMEOUT 12
++#define EXIT_CONNECT_TIME 13
++#define EXIT_CALLBACK 14
++#define EXIT_PEER_DEAD 15
++#define EXIT_HANGUP 16
++#define EXIT_LOOPBACK 17
++#define EXIT_INIT_FAILED 18
++#define EXIT_AUTH_TOPEER_FAILED 19
++#ifdef MAXOCTETS
++#define EXIT_TRAFFIC_LIMIT 20
++#endif
++#define EXIT_CNID_AUTH_FAILED 21
++
++/*
++ * Debug macros. Slightly useful for finding bugs in pppd, not particularly
++ * useful for finding out why your connection isn't being established.
++ */
++#ifdef DEBUGALL
++#define DEBUGMAIN 1
++#define DEBUGFSM 1
++#define DEBUGLCP 1
++#define DEBUGIPCP 1
++#define DEBUGIPV6CP 1
++#define DEBUGUPAP 1
++#define DEBUGCHAP 1
++#endif
++
++#ifndef LOG_PPP /* we use LOG_LOCAL2 for syslog by default */
++#if defined(DEBUGMAIN) || defined(DEBUGFSM) || defined(DEBUGSYS) \
++ || defined(DEBUGLCP) || defined(DEBUGIPCP) || defined(DEBUGUPAP) \
++ || defined(DEBUGCHAP) || defined(DEBUG) || defined(DEBUGIPV6CP)
++#define LOG_PPP LOG_LOCAL2
++#else
++#define LOG_PPP LOG_LOCAL2
++#endif
++#endif /* LOG_PPP */
++
++#ifdef DEBUGMAIN
++#define MAINDEBUG(x) if (debug) dbglog x
++#else
++#define MAINDEBUG(x)
++#endif
++
++#ifdef DEBUGSYS
++#define SYSDEBUG(x) if (debug) dbglog x
++#else
++#define SYSDEBUG(x)
++#endif
++
++#ifdef DEBUGFSM
++#define FSMDEBUG(x) if (debug) dbglog x
++#else
++#define FSMDEBUG(x)
++#endif
++
++#ifdef DEBUGLCP
++#define LCPDEBUG(x) if (debug) dbglog x
++#else
++#define LCPDEBUG(x)
++#endif
++
++#ifdef DEBUGIPCP
++#define IPCPDEBUG(x) if (debug) dbglog x
++#else
++#define IPCPDEBUG(x)
++#endif
++
++#ifdef DEBUGIPV6CP
++#define IPV6CPDEBUG(x) if (debug) dbglog x
++#else
++#define IPV6CPDEBUG(x)
++#endif
++
++#ifdef DEBUGUPAP
++#define UPAPDEBUG(x) if (debug) dbglog x
++#else
++#define UPAPDEBUG(x)
++#endif
++
++#ifdef DEBUGCHAP
++#define CHAPDEBUG(x) if (debug) dbglog x
++#else
++#define CHAPDEBUG(x)
++#endif
++
++#ifdef DEBUGIPXCP
++#define IPXCPDEBUG(x) if (debug) dbglog x
++#else
++#define IPXCPDEBUG(x)
++#endif
++
++#ifndef SIGTYPE
++#if defined(sun) || defined(SYSV) || defined(POSIX_SOURCE)
++#define SIGTYPE void
++#else
++#define SIGTYPE int
++#endif /* defined(sun) || defined(SYSV) || defined(POSIX_SOURCE) */
++#endif /* SIGTYPE */
++
++#ifndef MIN
++#define MIN(a, b) ((a) < (b)? (a): (b))
++#endif
++#ifndef MAX
++#define MAX(a, b) ((a) > (b)? (a): (b))
++#endif
++
++#ifndef offsetof
++#define offsetof(type, member) ((size_t) &((type *)0)->member)
++#endif
++
++#endif /* __PPP_H__ */
+diff -auNr capi4k-utils/pppdcapiplugin/ppp-2.4.4b1/Makefile capi4k-utils_patched/pppdcapiplugin/ppp-2.4.4b1/Makefile
+--- capi4k-utils/pppdcapiplugin/ppp-2.4.4b1/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ capi4k-utils_patched/pppdcapiplugin/ppp-2.4.4b1/Makefile 2006-12-30 16:14:35.000000000 +0100
+@@ -0,0 +1,14 @@
++# Makefile for the capiplugin for pppd(8).
++#
++# Copyright 2000 Carsten Paeth (calle@calle.in-berlin.de)
++# Copyright 2000 AVM GmbH Berlin (info@avm.de)
++#
++# This program is free software; you can redistribute it and/or
++# modify it under the terms of the GNU General Public License
++# as published by the Free Software Foundation; either version
++# 2 of the License, or (at your option) any later version.
++
++PLUGINDIR=${DESTDIR}/usr/lib/pppd/$(PPPVERSION)
++
++include $(TOPDIR)/Rules.make
++
+diff -auNr capi4k-utils/pppdcapiplugin/ppp-2.4.4b1/pppd/patchlevel.h capi4k-utils_patched/pppdcapiplugin/ppp-2.4.4b1/pppd/patchlevel.h
+--- capi4k-utils/pppdcapiplugin/ppp-2.4.4b1/pppd/patchlevel.h 1970-01-01 01:00:00.000000000 +0100
++++ capi4k-utils_patched/pppdcapiplugin/ppp-2.4.4b1/pppd/patchlevel.h 2006-12-30 16:14:35.000000000 +0100
+@@ -0,0 +1,4 @@
++/* $Id: ppp-2.4.4.patch,v 1.1 2007/01/01 15:17:26 tpowa Exp $ */
++
++#define VERSION "2.4.4b1"
++#define DATE "5 December 2005"
+diff -auNr capi4k-utils/pppdcapiplugin/ppp-2.4.4b1/pppd/pppd.h capi4k-utils_patched/pppdcapiplugin/ppp-2.4.4b1/pppd/pppd.h
+--- capi4k-utils/pppdcapiplugin/ppp-2.4.4b1/pppd/pppd.h 1970-01-01 01:00:00.000000000 +0100
++++ capi4k-utils_patched/pppdcapiplugin/ppp-2.4.4b1/pppd/pppd.h 2006-12-30 16:14:35.000000000 +0100
+@@ -0,0 +1,905 @@
++/*
++ * pppd.h - PPP daemon global declarations.
++ *
++ * Copyright (c) 1984-2000 Carnegie Mellon University. All rights reserved.
++ *
++ * Redistribution and use in source and binary forms, with or without
++ * modification, are permitted provided that the following conditions
++ * are met:
++ *
++ * 1. Redistributions of source code must retain the above copyright
++ * notice, this list of conditions and the following disclaimer.
++ *
++ * 2. Redistributions in binary form must reproduce the above copyright
++ * notice, this list of conditions and the following disclaimer in
++ * the documentation and/or other materials provided with the
++ * distribution.
++ *
++ * 3. The name "Carnegie Mellon University" must not be used to
++ * endorse or promote products derived from this software without
++ * prior written permission. For permission or any legal
++ * details, please contact
++ * Office of Technology Transfer
++ * Carnegie Mellon University
++ * 5000 Forbes Avenue
++ * Pittsburgh, PA 15213-3890
++ * (412) 268-4387, fax: (412) 268-7395
++ * tech-transfer@andrew.cmu.edu
++ *
++ * 4. Redistributions of any form whatsoever must retain the following
++ * acknowledgment:
++ * "This product includes software developed by Computing Services
++ * at Carnegie Mellon University (http://www.cmu.edu/computing/)."
++ *
++ * CARNEGIE MELLON UNIVERSITY DISCLAIMS ALL WARRANTIES WITH REGARD TO
++ * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
++ * AND FITNESS, IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY BE LIABLE
++ * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
++ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
++ * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
++ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
++ *
++ * $Id: ppp-2.4.4.patch,v 1.1 2007/01/01 15:17:26 tpowa Exp $
++ */
++
++/*
++ * TODO:
++ */
++
++#ifndef __PPPD_H__
++#define __PPPD_H__
++
++#include <stdio.h> /* for FILE */
++#include <limits.h> /* for NGROUPS_MAX */
++#include <sys/param.h> /* for MAXPATHLEN and BSD4_4, if defined */
++#include <sys/types.h> /* for u_int32_t, if defined */
++#include <sys/time.h> /* for struct timeval */
++#include <net/ppp_defs.h>
++#include "patchlevel.h"
++
++#if defined(__STDC__)
++#include <stdarg.h>
++#define __V(x) x
++#else
++#include <varargs.h>
++#define __V(x) (va_alist) va_dcl
++#define const
++#define volatile
++#endif
++
++#ifdef INET6
++#include "eui64.h"
++#endif
++
++/*
++ * Limits.
++ */
++
++#define NUM_PPP 1 /* One PPP interface supported (per process) */
++#define MAXWORDLEN 1024 /* max length of word in file (incl null) */
++#define MAXARGS 1 /* max # args to a command */
++#define MAXNAMELEN 256 /* max length of hostname or name for auth */
++#define MAXSECRETLEN 256 /* max length of password or secret */
++
++/*
++ * Option descriptor structure.
++ */
++
++typedef unsigned char bool;
++
++enum opt_type {
++ o_special_noarg = 0,
++ o_special = 1,
++ o_bool,
++ o_int,
++ o_uint32,
++ o_string,
++ o_wild
++};
++
++typedef struct {
++ char *name; /* name of the option */
++ enum opt_type type;
++ void *addr;
++ char *description;
++ unsigned int flags;
++ void *addr2;
++ int upper_limit;
++ int lower_limit;
++ const char *source;
++ short int priority;
++ short int winner;
++} option_t;
++
++/* Values for flags */
++#define OPT_VALUE 0xff /* mask for presupplied value */
++#define OPT_HEX 0x100 /* int option is in hex */
++#define OPT_NOARG 0x200 /* option doesn't take argument */
++#define OPT_OR 0x400 /* OR in argument to value */
++#define OPT_INC 0x800 /* increment value */
++#define OPT_A2OR 0x800 /* for o_bool, OR arg to *(u_char *)addr2 */
++#define OPT_PRIV 0x1000 /* privileged option */
++#define OPT_STATIC 0x2000 /* string option goes into static array */
++#define OPT_LLIMIT 0x4000 /* check value against lower limit */
++#define OPT_ULIMIT 0x8000 /* check value against upper limit */
++#define OPT_LIMITS (OPT_LLIMIT|OPT_ULIMIT)
++#define OPT_ZEROOK 0x10000 /* 0 value is OK even if not within limits */
++#define OPT_HIDE 0x10000 /* for o_string, print value as ?????? */
++#define OPT_A2LIST 0x10000 /* for o_special, keep list of values */
++#define OPT_A2CLRB 0x10000 /* o_bool, clr val bits in *(u_char *)addr2 */
++#define OPT_NOINCR 0x20000 /* value mustn't be increased */
++#define OPT_ZEROINF 0x40000 /* with OPT_NOINCR, 0 == infinity */
++#define OPT_PRIO 0x80000 /* process option priorities for this option */
++#define OPT_PRIOSUB 0x100000 /* subsidiary member of priority group */
++#define OPT_ALIAS 0x200000 /* option is alias for previous option */
++#define OPT_A2COPY 0x400000 /* addr2 -> second location to rcv value */
++#define OPT_ENABLE 0x800000 /* use *addr2 as enable for option */
++#define OPT_A2CLR 0x1000000 /* clear *(bool *)addr2 */
++#define OPT_PRIVFIX 0x2000000 /* user can't override if set by root */
++#define OPT_INITONLY 0x4000000 /* option can only be set in init phase */
++#define OPT_DEVEQUIV 0x8000000 /* equiv to device name */
++#define OPT_DEVNAM (OPT_INITONLY | OPT_DEVEQUIV)
++#define OPT_A2PRINTER 0x10000000 /* *addr2 is a fn for printing option */
++#define OPT_A2STRVAL 0x20000000 /* *addr2 points to current string value */
++#define OPT_NOPRINT 0x40000000 /* don't print this option at all */
++
++#define OPT_VAL(x) ((x) & OPT_VALUE)
++
++/* Values for priority */
++#define OPRIO_DEFAULT 0 /* a default value */
++#define OPRIO_CFGFILE 1 /* value from a configuration file */
++#define OPRIO_CMDLINE 2 /* value from the command line */
++#define OPRIO_SECFILE 3 /* value from options in a secrets file */
++#define OPRIO_ROOT 100 /* added to priority if OPT_PRIVFIX && root */
++
++#ifndef GIDSET_TYPE
++#define GIDSET_TYPE gid_t
++#endif
++
++/* Structure representing a list of permitted IP addresses. */
++struct permitted_ip {
++ int permit; /* 1 = permit, 0 = forbid */
++ u_int32_t base; /* match if (addr & mask) == base */
++ u_int32_t mask; /* base and mask are in network byte order */
++};
++
++/*
++ * Unfortunately, the linux kernel driver uses a different structure
++ * for statistics from the rest of the ports.
++ * This structure serves as a common representation for the bits
++ * pppd needs.
++ */
++struct pppd_stats {
++ unsigned int bytes_in;
++ unsigned int bytes_out;
++ unsigned int pkts_in;
++ unsigned int pkts_out;
++};
++
++/* Used for storing a sequence of words. Usually malloced. */
++struct wordlist {
++ struct wordlist *next;
++ char *word;
++};
++
++/* An endpoint discriminator, used with multilink. */
++#define MAX_ENDP_LEN 20 /* maximum length of discriminator value */
++struct epdisc {
++ unsigned char class;
++ unsigned char length;
++ unsigned char value[MAX_ENDP_LEN];
++};
++
++/* values for epdisc.class */
++#define EPD_NULL 0 /* null discriminator, no data */
++#define EPD_LOCAL 1
++#define EPD_IP 2
++#define EPD_MAC 3
++#define EPD_MAGIC 4
++#define EPD_PHONENUM 5
++
++typedef void (*notify_func) __P((void *, int));
++
++struct notifier {
++ struct notifier *next;
++ notify_func func;
++ void *arg;
++};
++
++/*
++ * Global variables.
++ */
++
++extern int hungup; /* Physical layer has disconnected */
++extern int ifunit; /* Interface unit number */
++extern char ifname[]; /* Interface name */
++extern char hostname[]; /* Our hostname */
++extern u_char outpacket_buf[]; /* Buffer for outgoing packets */
++extern int devfd; /* fd of underlying device */
++extern int fd_ppp; /* fd for talking PPP */
++extern int phase; /* Current state of link - see values below */
++extern int baud_rate; /* Current link speed in bits/sec */
++extern char *progname; /* Name of this program */
++extern int redirect_stderr;/* Connector's stderr should go to file */
++extern char peer_authname[];/* Authenticated name of peer */
++extern int auth_done[NUM_PPP]; /* Methods actually used for auth */
++extern int privileged; /* We were run by real-uid root */
++extern int need_holdoff; /* Need holdoff period after link terminates */
++extern char **script_env; /* Environment variables for scripts */
++extern int detached; /* Have detached from controlling tty */
++extern GIDSET_TYPE groups[NGROUPS_MAX]; /* groups the user is in */
++extern int ngroups; /* How many groups valid in groups */
++extern struct pppd_stats link_stats; /* byte/packet counts etc. for link */
++extern int link_stats_valid; /* set if link_stats is valid */
++extern unsigned link_connect_time; /* time the link was up for */
++extern int using_pty; /* using pty as device (notty or pty opt.) */
++extern int log_to_fd; /* logging to this fd as well as syslog */
++extern bool log_default; /* log_to_fd is default (stdout) */
++extern char *no_ppp_msg; /* message to print if ppp not in kernel */
++extern volatile int status; /* exit status for pppd */
++extern bool devnam_fixed; /* can no longer change devnam */
++extern int unsuccess; /* # unsuccessful connection attempts */
++extern int do_callback; /* set if we want to do callback next */
++extern int doing_callback; /* set if this is a callback */
++extern int error_count; /* # of times error() has been called */
++extern char ppp_devnam[MAXPATHLEN];
++extern char remote_number[MAXNAMELEN]; /* Remote telephone number, if avail. */
++extern int ppp_session_number; /* Session number (eg PPPoE session) */
++extern int fd_devnull; /* fd open to /dev/null */
++
++extern int listen_time; /* time to listen first (ms) */
++extern bool doing_multilink;
++extern bool multilink_master;
++extern bool bundle_eof;
++extern bool bundle_terminating;
++
++extern struct notifier *pidchange; /* for notifications of pid changing */
++extern struct notifier *phasechange; /* for notifications of phase changes */
++extern struct notifier *exitnotify; /* for notification that we're exiting */
++extern struct notifier *sigreceived; /* notification of received signal */
++extern struct notifier *ip_up_notifier; /* IPCP has come up */
++extern struct notifier *ip_down_notifier; /* IPCP has gone down */
++extern struct notifier *auth_up_notifier; /* peer has authenticated */
++extern struct notifier *link_down_notifier; /* link has gone down */
++extern struct notifier *fork_notifier; /* we are a new child process */
++
++/* Values for do_callback and doing_callback */
++#define CALLBACK_DIALIN 1 /* we are expecting the call back */
++#define CALLBACK_DIALOUT 2 /* we are dialling out to call back */
++
++/*
++ * Variables set by command-line options.
++ */
++
++extern int debug; /* Debug flag */
++extern int kdebugflag; /* Tell kernel to print debug messages */
++extern int default_device; /* Using /dev/tty or equivalent */
++extern char devnam[MAXPATHLEN]; /* Device name */
++extern int crtscts; /* Use hardware flow control */
++extern bool modem; /* Use modem control lines */
++extern int inspeed; /* Input/Output speed requested */
++extern u_int32_t netmask; /* IP netmask to set on interface */
++extern bool lockflag; /* Create lock file to lock the serial dev */
++extern bool nodetach; /* Don't detach from controlling tty */
++extern bool updetach; /* Detach from controlling tty when link up */
++extern char *initializer; /* Script to initialize physical link */
++extern char *connect_script; /* Script to establish physical link */
++extern char *disconnect_script; /* Script to disestablish physical link */
++extern char *welcomer; /* Script to welcome client after connection */
++extern char *ptycommand; /* Command to run on other side of pty */
++extern int maxconnect; /* Maximum connect time (seconds) */
++extern char user[MAXNAMELEN];/* Our name for authenticating ourselves */
++extern char passwd[MAXSECRETLEN]; /* Password for PAP or CHAP */
++extern bool auth_required; /* Peer is required to authenticate */
++extern bool persist; /* Reopen link after it goes down */
++extern bool uselogin; /* Use /etc/passwd for checking PAP */
++extern char our_name[MAXNAMELEN];/* Our name for authentication purposes */
++extern char remote_name[MAXNAMELEN]; /* Peer's name for authentication */
++extern bool explicit_remote;/* remote_name specified with remotename opt */
++extern bool demand; /* Do dial-on-demand */
++extern char *ipparam; /* Extra parameter for ip up/down scripts */
++extern bool cryptpap; /* Others' PAP passwords are encrypted */
++extern int idle_time_limit;/* Shut down link if idle for this long */
++extern int holdoff; /* Dead time before restarting */
++extern bool holdoff_specified; /* true if user gave a holdoff value */
++extern bool notty; /* Stdin/out is not a tty */
++extern char *pty_socket; /* Socket to connect to pty */
++extern char *record_file; /* File to record chars sent/received */
++extern bool sync_serial; /* Device is synchronous serial device */
++extern int maxfail; /* Max # of unsuccessful connection attempts */
++extern char linkname[MAXPATHLEN]; /* logical name for link */
++extern bool tune_kernel; /* May alter kernel settings as necessary */
++extern int connect_delay; /* Time to delay after connect script */
++extern int max_data_rate; /* max bytes/sec through charshunt */
++extern int req_unit; /* interface unit number to use */
++extern bool multilink; /* enable multilink operation */
++extern bool noendpoint; /* don't send or accept endpt. discrim. */
++extern char *bundle_name; /* bundle name for multilink */
++extern bool dump_options; /* print out option values */
++extern bool dryrun; /* check everything, print options, exit */
++extern int child_wait; /* # seconds to wait for children at end */
++
++#ifdef MAXOCTETS
++extern unsigned int maxoctets; /* Maximum octetes per session (in bytes) */
++extern int maxoctets_dir; /* Direction :
++ 0 - in+out (default)
++ 1 - in
++ 2 - out
++ 3 - max(in,out) */
++extern int maxoctets_timeout; /* Timeout for check of octets limit */
++#define PPP_OCTETS_DIRECTION_SUM 0
++#define PPP_OCTETS_DIRECTION_IN 1
++#define PPP_OCTETS_DIRECTION_OUT 2
++#define PPP_OCTETS_DIRECTION_MAXOVERAL 3
++/* same as previos, but little different on RADIUS side */
++#define PPP_OCTETS_DIRECTION_MAXSESSION 4
++#endif
++
++#ifdef PPP_FILTER
++extern struct bpf_program pass_filter; /* Filter for pkts to pass */
++extern struct bpf_program active_filter; /* Filter for link-active pkts */
++#endif
++
++#ifdef MSLANMAN
++extern bool ms_lanman; /* Use LanMan password instead of NT */
++ /* Has meaning only with MS-CHAP challenges */
++#endif
++
++/* Values for auth_pending, auth_done */
++#define PAP_WITHPEER 0x1
++#define PAP_PEER 0x2
++#define CHAP_WITHPEER 0x4
++#define CHAP_PEER 0x8
++#define EAP_WITHPEER 0x10
++#define EAP_PEER 0x20
++
++/* Values for auth_done only */
++#define CHAP_MD5_WITHPEER 0x40
++#define CHAP_MD5_PEER 0x80
++#define CHAP_MS_SHIFT 8 /* LSB position for MS auths */
++#define CHAP_MS_WITHPEER 0x100
++#define CHAP_MS_PEER 0x200
++#define CHAP_MS2_WITHPEER 0x400
++#define CHAP_MS2_PEER 0x800
++
++extern char *current_option; /* the name of the option being parsed */
++extern int privileged_option; /* set iff the current option came from root */
++extern char *option_source; /* string saying where the option came from */
++extern int option_priority; /* priority of current options */
++
++/*
++ * Values for phase.
++ */
++#define PHASE_DEAD 0
++#define PHASE_INITIALIZE 1
++#define PHASE_SERIALCONN 2
++#define PHASE_DORMANT 3
++#define PHASE_ESTABLISH 4
++#define PHASE_AUTHENTICATE 5
++#define PHASE_CALLBACK 6
++#define PHASE_NETWORK 7
++#define PHASE_RUNNING 8
++#define PHASE_TERMINATE 9
++#define PHASE_DISCONNECT 10
++#define PHASE_HOLDOFF 11
++#define PHASE_MASTER 12
++
++/*
++ * The following struct gives the addresses of procedures to call
++ * for a particular protocol.
++ */
++struct protent {
++ u_short protocol; /* PPP protocol number */
++ /* Initialization procedure */
++ void (*init) __P((int unit));
++ /* Process a received packet */
++ void (*input) __P((int unit, u_char *pkt, int len));
++ /* Process a received protocol-reject */
++ void (*protrej) __P((int unit));
++ /* Lower layer has come up */
++ void (*lowerup) __P((int unit));
++ /* Lower layer has gone down */
++ void (*lowerdown) __P((int unit));
++ /* Open the protocol */
++ void (*open) __P((int unit));
++ /* Close the protocol */
++ void (*close) __P((int unit, char *reason));
++ /* Print a packet in readable form */
++ int (*printpkt) __P((u_char *pkt, int len,
++ void (*printer) __P((void *, char *, ...)),
++ void *arg));
++ /* Process a received data packet */
++ void (*datainput) __P((int unit, u_char *pkt, int len));
++ bool enabled_flag; /* 0 iff protocol is disabled */
++ char *name; /* Text name of protocol */
++ char *data_name; /* Text name of corresponding data protocol */
++ option_t *options; /* List of command-line options */
++ /* Check requested options, assign defaults */
++ void (*check_options) __P((void));
++ /* Configure interface for demand-dial */
++ int (*demand_conf) __P((int unit));
++ /* Say whether to bring up link for this pkt */
++ int (*active_pkt) __P((u_char *pkt, int len));
++};
++
++/* Table of pointers to supported protocols */
++extern struct protent *protocols[];
++
++/*
++ * This struct contains pointers to a set of procedures for
++ * doing operations on a "channel". A channel provides a way
++ * to send and receive PPP packets - the canonical example is
++ * a serial port device in PPP line discipline (or equivalently
++ * with PPP STREAMS modules pushed onto it).
++ */
++struct channel {
++ /* set of options for this channel */
++ option_t *options;
++ /* find and process a per-channel options file */
++ void (*process_extra_options) __P((void));
++ /* check all the options that have been given */
++ void (*check_options) __P((void));
++ /* get the channel ready to do PPP, return a file descriptor */
++ int (*connect) __P((void));
++ /* we're finished with the channel */
++ void (*disconnect) __P((void));
++ /* put the channel into PPP `mode' */
++ int (*establish_ppp) __P((int));
++ /* take the channel out of PPP `mode', restore loopback if demand */
++ void (*disestablish_ppp) __P((int));
++ /* set the transmit-side PPP parameters of the channel */
++ void (*send_config) __P((int, u_int32_t, int, int));
++ /* set the receive-side PPP parameters of the channel */
++ void (*recv_config) __P((int, u_int32_t, int, int));
++ /* cleanup on error or normal exit */
++ void (*cleanup) __P((void));
++ /* close the device, called in children after fork */
++ void (*close) __P((void));
++};
++
++extern struct channel *the_channel;
++
++/*
++ * Prototypes.
++ */
++
++/* Procedures exported from main.c. */
++void set_ifunit __P((int)); /* set stuff that depends on ifunit */
++void detach __P((void)); /* Detach from controlling tty */
++void die __P((int)); /* Cleanup and exit */
++void quit __P((void)); /* like die(1) */
++void novm __P((char *)); /* Say we ran out of memory, and die */
++void timeout __P((void (*func)(void *), void *arg, int s, int us));
++ /* Call func(arg) after s.us seconds */
++void untimeout __P((void (*func)(void *), void *arg));
++ /* Cancel call to func(arg) */
++void record_child __P((int, char *, void (*) (void *), void *));
++pid_t safe_fork __P((int, int, int)); /* Fork & close stuff in child */
++int device_script __P((char *cmd, int in, int out, int dont_wait));
++ /* Run `cmd' with given stdin and stdout */
++pid_t run_program __P((char *prog, char **args, int must_exist,
++ void (*done)(void *), void *arg));
++ /* Run program prog with args in child */
++void reopen_log __P((void)); /* (re)open the connection to syslog */
++void print_link_stats __P((void)); /* Print stats, if available */
++void reset_link_stats __P((int)); /* Reset (init) stats when link goes up */
++void update_link_stats __P((int)); /* Get stats at link termination */
++void script_setenv __P((char *, char *, int)); /* set script env var */
++void script_unsetenv __P((char *)); /* unset script env var */
++void new_phase __P((int)); /* signal start of new phase */
++void add_notifier __P((struct notifier **, notify_func, void *));
++void remove_notifier __P((struct notifier **, notify_func, void *));
++void notify __P((struct notifier *, int));
++int ppp_send_config __P((int, int, u_int32_t, int, int));
++int ppp_recv_config __P((int, int, u_int32_t, int, int));
++void remove_pidfiles __P((void));
++void lock_db __P((void));
++void unlock_db __P((void));
++
++/* Procedures exported from tty.c. */
++void tty_init __P((void));
++
++/* Procedures exported from utils.c. */
++void log_packet __P((u_char *, int, char *, int));
++ /* Format a packet and log it with syslog */
++void print_string __P((char *, int, void (*) (void *, char *, ...),
++ void *)); /* Format a string for output */
++int slprintf __P((char *, int, char *, ...)); /* sprintf++ */
++int vslprintf __P((char *, int, char *, va_list)); /* vsprintf++ */
++size_t strlcpy __P((char *, const char *, size_t)); /* safe strcpy */
++size_t strlcat __P((char *, const char *, size_t)); /* safe strncpy */
++void dbglog __P((char *, ...)); /* log a debug message */
++void info __P((char *, ...)); /* log an informational message */
++void notice __P((char *, ...)); /* log a notice-level message */
++void warn __P((char *, ...)); /* log a warning message */
++void error __P((char *, ...)); /* log an error message */
++void fatal __P((char *, ...)); /* log an error message and die(1) */
++void init_pr_log __P((char *, int)); /* initialize for using pr_log */
++void pr_log __P((void *, char *, ...)); /* printer fn, output to syslog */
++void end_pr_log __P((void)); /* finish up after using pr_log */
++void dump_packet __P((const char *, u_char *, int));
++ /* dump packet to debug log if interesting */
++ssize_t complete_read __P((int, void *, size_t));
++ /* read a complete buffer */
++
++/* Procedures exported from auth.c */
++void link_required __P((int)); /* we are starting to use the link */
++void link_terminated __P((int)); /* we are finished with the link */
++void link_down __P((int)); /* the LCP layer has left the Opened state */
++void upper_layers_down __P((int));/* take all NCPs down */
++void link_established __P((int)); /* the link is up; authenticate now */
++void start_networks __P((int)); /* start all the network control protos */
++void continue_networks __P((int)); /* start network [ip, etc] control protos */
++void np_up __P((int, int)); /* a network protocol has come up */
++void np_down __P((int, int)); /* a network protocol has gone down */
++void np_finished __P((int, int)); /* a network protocol no longer needs link */
++void auth_peer_fail __P((int, int));
++ /* peer failed to authenticate itself */
++void auth_peer_success __P((int, int, int, char *, int));
++ /* peer successfully authenticated itself */
++void auth_withpeer_fail __P((int, int));
++ /* we failed to authenticate ourselves */
++void auth_withpeer_success __P((int, int, int));
++ /* we successfully authenticated ourselves */
++void auth_check_options __P((void));
++ /* check authentication options supplied */
++void auth_reset __P((int)); /* check what secrets we have */
++int check_passwd __P((int, char *, int, char *, int, char **));
++ /* Check peer-supplied username/password */
++int get_secret __P((int, char *, char *, char *, int *, int));
++ /* get "secret" for chap */
++int get_srp_secret __P((int unit, char *client, char *server, char *secret,
++ int am_server));
++int auth_ip_addr __P((int, u_int32_t));
++ /* check if IP address is authorized */
++int auth_number __P((void)); /* check if remote number is authorized */
++int bad_ip_adrs __P((u_int32_t));
++ /* check if IP address is unreasonable */
++
++/* Procedures exported from demand.c */
++void demand_conf __P((void)); /* config interface(s) for demand-dial */
++void demand_block __P((void)); /* set all NPs to queue up packets */
++void demand_unblock __P((void)); /* set all NPs to pass packets */
++void demand_discard __P((void)); /* set all NPs to discard packets */
++void demand_rexmit __P((int)); /* retransmit saved frames for an NP */
++int loop_chars __P((unsigned char *, int)); /* process chars from loopback */
++int loop_frame __P((unsigned char *, int)); /* should we bring link up? */
++
++/* Procedures exported from multilink.c */
++#ifdef HAVE_MULTILINK
++void mp_check_options __P((void)); /* Check multilink-related options */
++int mp_join_bundle __P((void)); /* join our link to an appropriate bundle */
++void mp_exit_bundle __P((void)); /* have disconnected our link from bundle */
++void mp_bundle_terminated __P((void));
++char *epdisc_to_str __P((struct epdisc *)); /* string from endpoint discrim. */
++int str_to_epdisc __P((struct epdisc *, char *)); /* endpt disc. from str */
++#else
++#define mp_bundle_terminated() /* nothing */
++#define mp_exit_bundle() /* nothing */
++#define doing_multilink 0
++#define multilink_master 0
++#endif
++
++/* Procedures exported from sys-*.c */
++void sys_init __P((void)); /* Do system-dependent initialization */
++void sys_cleanup __P((void)); /* Restore system state before exiting */
++int sys_check_options __P((void)); /* Check options specified */
++void sys_close __P((void)); /* Clean up in a child before execing */
++int ppp_available __P((void)); /* Test whether ppp kernel support exists */
++int get_pty __P((int *, int *, char *, int)); /* Get pty master/slave */
++int open_ppp_loopback __P((void)); /* Open loopback for demand-dialling */
++int tty_establish_ppp __P((int)); /* Turn serial port into a ppp interface */
++void tty_disestablish_ppp __P((int)); /* Restore port to normal operation */
++void generic_disestablish_ppp __P((int dev_fd)); /* Restore device setting */
++int generic_establish_ppp __P((int dev_fd)); /* Make a ppp interface */
++void make_new_bundle __P((int, int, int, int)); /* Create new bundle */
++int bundle_attach __P((int)); /* Attach link to existing bundle */
++void cfg_bundle __P((int, int, int, int)); /* Configure existing bundle */
++void destroy_bundle __P((void)); /* Tell driver to destroy bundle */
++void clean_check __P((void)); /* Check if line was 8-bit clean */
++void set_up_tty __P((int, int)); /* Set up port's speed, parameters, etc. */
++void restore_tty __P((int)); /* Restore port's original parameters */
++void setdtr __P((int, int)); /* Raise or lower port's DTR line */
++void output __P((int, u_char *, int)); /* Output a PPP packet */
++void wait_input __P((struct timeval *));
++ /* Wait for input, with timeout */
++void add_fd __P((int)); /* Add fd to set to wait for */
++void remove_fd __P((int)); /* Remove fd from set to wait for */
++int read_packet __P((u_char *)); /* Read PPP packet */
++int get_loop_output __P((void)); /* Read pkts from loopback */
++void tty_send_config __P((int, u_int32_t, int, int));
++ /* Configure i/f transmit parameters */
++void tty_set_xaccm __P((ext_accm));
++ /* Set extended transmit ACCM */
++void tty_recv_config __P((int, u_int32_t, int, int));
++ /* Configure i/f receive parameters */
++int ccp_test __P((int, u_char *, int, int));
++ /* Test support for compression scheme */
++void ccp_flags_set __P((int, int, int));
++ /* Set kernel CCP state */
++int ccp_fatal_error __P((int)); /* Test for fatal decomp error in kernel */
++int get_idle_time __P((int, struct ppp_idle *));
++ /* Find out how long link has been idle */
++int get_ppp_stats __P((int, struct pppd_stats *));
++ /* Return link statistics */
++void netif_set_mtu __P((int, int)); /* Set PPP interface MTU */
++int netif_get_mtu __P((int)); /* Get PPP interface MTU */
++int sifvjcomp __P((int, int, int, int));
++ /* Configure VJ TCP header compression */
++int sifup __P((int)); /* Configure i/f up for one protocol */
++int sifnpmode __P((int u, int proto, enum NPmode mode));
++ /* Set mode for handling packets for proto */
++int sifdown __P((int)); /* Configure i/f down for one protocol */
++int sifaddr __P((int, u_int32_t, u_int32_t, u_int32_t));
++ /* Configure IPv4 addresses for i/f */
++int cifaddr __P((int, u_int32_t, u_int32_t));
++ /* Reset i/f IP addresses */
++#ifdef INET6
++int sif6addr __P((int, eui64_t, eui64_t));
++ /* Configure IPv6 addresses for i/f */
++int cif6addr __P((int, eui64_t, eui64_t));
++ /* Remove an IPv6 address from i/f */
++#endif
++int sifdefaultroute __P((int, u_int32_t, u_int32_t));
++ /* Create default route through i/f */
++int cifdefaultroute __P((int, u_int32_t, u_int32_t));
++ /* Delete default route through i/f */
++int sifproxyarp __P((int, u_int32_t));
++ /* Add proxy ARP entry for peer */
++int cifproxyarp __P((int, u_int32_t));
++ /* Delete proxy ARP entry for peer */
++u_int32_t GetMask __P((u_int32_t)); /* Get appropriate netmask for address */
++int lock __P((char *)); /* Create lock file for device */
++int relock __P((int)); /* Rewrite lock file with new pid */
++void unlock __P((void)); /* Delete previously-created lock file */
++void logwtmp __P((const char *, const char *, const char *));
++ /* Write entry to wtmp file */
++int get_host_seed __P((void)); /* Get host-dependent random number seed */
++int have_route_to __P((u_int32_t)); /* Check if route to addr exists */
++#ifdef PPP_FILTER
++int set_filters __P((struct bpf_program *pass, struct bpf_program *active));
++ /* Set filter programs in kernel */
++#endif
++#ifdef IPX_CHANGE
++int sipxfaddr __P((int, unsigned long, unsigned char *));
++int cipxfaddr __P((int));
++#endif
++int get_if_hwaddr __P((u_char *addr, char *name));
++char *get_first_ethernet __P((void));
++
++/* Procedures exported from options.c */
++int setipaddr __P((char *, char **, int)); /* Set local/remote ip addresses */
++int parse_args __P((int argc, char **argv));
++ /* Parse options from arguments given */
++int options_from_file __P((char *filename, int must_exist, int check_prot,
++ int privileged));
++ /* Parse options from an options file */
++int options_from_user __P((void)); /* Parse options from user's .ppprc */
++int options_for_tty __P((void)); /* Parse options from /etc/ppp/options.tty */
++int options_from_list __P((struct wordlist *, int privileged));
++ /* Parse options from a wordlist */
++int getword __P((FILE *f, char *word, int *newlinep, char *filename));
++ /* Read a word from a file */
++void option_error __P((char *fmt, ...));
++ /* Print an error message about an option */
++int int_option __P((char *, int *));
++ /* Simplified number_option for decimal ints */
++void add_options __P((option_t *)); /* Add extra options */
++void check_options __P((void)); /* check values after all options parsed */
++int override_value __P((const char *, int, const char *));
++ /* override value if permitted by priority */
++void print_options __P((void (*) __P((void *, char *, ...)), void *));
++ /* print out values of all options */
++
++int parse_dotted_ip __P((char *, u_int32_t *));
++
++/*
++ * Hooks to enable plugins to change various things.
++ */
++extern int (*new_phase_hook) __P((int));
++extern int (*idle_time_hook) __P((struct ppp_idle *));
++extern int (*holdoff_hook) __P((void));
++extern int (*pap_check_hook) __P((void));
++extern int (*pap_auth_hook) __P((char *user, char *passwd, char **msgp,
++ struct wordlist **paddrs,
++ struct wordlist **popts));
++extern void (*pap_logout_hook) __P((void));
++extern int (*pap_passwd_hook) __P((char *user, char *passwd));
++extern int (*allowed_address_hook) __P((u_int32_t addr));
++extern void (*ip_up_hook) __P((void));
++extern void (*ip_down_hook) __P((void));
++extern void (*ip_choose_hook) __P((u_int32_t *));
++
++extern int (*chap_check_hook) __P((void));
++extern int (*chap_passwd_hook) __P((char *user, char *passwd));
++
++/* Let a plugin snoop sent and received packets. Useful for L2TP */
++extern void (*snoop_recv_hook) __P((unsigned char *p, int len));
++extern void (*snoop_send_hook) __P((unsigned char *p, int len));
++
++/*
++ * Inline versions of get/put char/short/long.
++ * Pointer is advanced; we assume that both arguments
++ * are lvalues and will already be in registers.
++ * cp MUST be u_char *.
++ */
++#define GETCHAR(c, cp) { \
++ (c) = *(cp)++; \
++}
++#define PUTCHAR(c, cp) { \
++ *(cp)++ = (u_char) (c); \
++}
++
++
++#define GETSHORT(s, cp) { \
++ (s) = *(cp)++ << 8; \
++ (s) |= *(cp)++; \
++}
++#define PUTSHORT(s, cp) { \
++ *(cp)++ = (u_char) ((s) >> 8); \
++ *(cp)++ = (u_char) (s); \
++}
++
++#define GETLONG(l, cp) { \
++ (l) = *(cp)++ << 8; \
++ (l) |= *(cp)++; (l) <<= 8; \
++ (l) |= *(cp)++; (l) <<= 8; \
++ (l) |= *(cp)++; \
++}
++#define PUTLONG(l, cp) { \
++ *(cp)++ = (u_char) ((l) >> 24); \
++ *(cp)++ = (u_char) ((l) >> 16); \
++ *(cp)++ = (u_char) ((l) >> 8); \
++ *(cp)++ = (u_char) (l); \
++}
++
++#define INCPTR(n, cp) ((cp) += (n))
++#define DECPTR(n, cp) ((cp) -= (n))
++
++/*
++ * System dependent definitions for user-level 4.3BSD UNIX implementation.
++ */
++
++#define TIMEOUT(r, f, t) timeout((r), (f), (t), 0)
++#define UNTIMEOUT(r, f) untimeout((r), (f))
++
++#define BCOPY(s, d, l) memcpy(d, s, l)
++#define BZERO(s, n) memset(s, 0, n)
++#define BCMP(s1, s2, l) memcmp(s1, s2, l)
++
++#define PRINTMSG(m, l) { info("Remote message: %0.*v", l, m); }
++
++/*
++ * MAKEHEADER - Add Header fields to a packet.
++ */
++#define MAKEHEADER(p, t) { \
++ PUTCHAR(PPP_ALLSTATIONS, p); \
++ PUTCHAR(PPP_UI, p); \
++ PUTSHORT(t, p); }
++
++/*
++ * Exit status values.
++ */
++#define EXIT_OK 0
++#define EXIT_FATAL_ERROR 1
++#define EXIT_OPTION_ERROR 2
++#define EXIT_NOT_ROOT 3
++#define EXIT_NO_KERNEL_SUPPORT 4
++#define EXIT_USER_REQUEST 5
++#define EXIT_LOCK_FAILED 6
++#define EXIT_OPEN_FAILED 7
++#define EXIT_CONNECT_FAILED 8
++#define EXIT_PTYCMD_FAILED 9
++#define EXIT_NEGOTIATION_FAILED 10
++#define EXIT_PEER_AUTH_FAILED 11
++#define EXIT_IDLE_TIMEOUT 12
++#define EXIT_CONNECT_TIME 13
++#define EXIT_CALLBACK 14
++#define EXIT_PEER_DEAD 15
++#define EXIT_HANGUP 16
++#define EXIT_LOOPBACK 17
++#define EXIT_INIT_FAILED 18
++#define EXIT_AUTH_TOPEER_FAILED 19
++#ifdef MAXOCTETS
++#define EXIT_TRAFFIC_LIMIT 20
++#endif
++#define EXIT_CNID_AUTH_FAILED 21
++
++/*
++ * Debug macros. Slightly useful for finding bugs in pppd, not particularly
++ * useful for finding out why your connection isn't being established.
++ */
++#ifdef DEBUGALL
++#define DEBUGMAIN 1
++#define DEBUGFSM 1
++#define DEBUGLCP 1
++#define DEBUGIPCP 1
++#define DEBUGIPV6CP 1
++#define DEBUGUPAP 1
++#define DEBUGCHAP 1
++#endif
++
++#ifndef LOG_PPP /* we use LOG_LOCAL2 for syslog by default */
++#if defined(DEBUGMAIN) || defined(DEBUGFSM) || defined(DEBUGSYS) \
++ || defined(DEBUGLCP) || defined(DEBUGIPCP) || defined(DEBUGUPAP) \
++ || defined(DEBUGCHAP) || defined(DEBUG) || defined(DEBUGIPV6CP)
++#define LOG_PPP LOG_LOCAL2
++#else
++#define LOG_PPP LOG_DAEMON
++#endif
++#endif /* LOG_PPP */
++
++#ifdef DEBUGMAIN
++#define MAINDEBUG(x) if (debug) dbglog x
++#else
++#define MAINDEBUG(x)
++#endif
++
++#ifdef DEBUGSYS
++#define SYSDEBUG(x) if (debug) dbglog x
++#else
++#define SYSDEBUG(x)
++#endif
++
++#ifdef DEBUGFSM
++#define FSMDEBUG(x) if (debug) dbglog x
++#else
++#define FSMDEBUG(x)
++#endif
++
++#ifdef DEBUGLCP
++#define LCPDEBUG(x) if (debug) dbglog x
++#else
++#define LCPDEBUG(x)
++#endif
++
++#ifdef DEBUGIPCP
++#define IPCPDEBUG(x) if (debug) dbglog x
++#else
++#define IPCPDEBUG(x)
++#endif
++
++#ifdef DEBUGIPV6CP
++#define IPV6CPDEBUG(x) if (debug) dbglog x
++#else
++#define IPV6CPDEBUG(x)
++#endif
++
++#ifdef DEBUGUPAP
++#define UPAPDEBUG(x) if (debug) dbglog x
++#else
++#define UPAPDEBUG(x)
++#endif
++
++#ifdef DEBUGCHAP
++#define CHAPDEBUG(x) if (debug) dbglog x
++#else
++#define CHAPDEBUG(x)
++#endif
++
++#ifdef DEBUGIPXCP
++#define IPXCPDEBUG(x) if (debug) dbglog x
++#else
++#define IPXCPDEBUG(x)
++#endif
++
++#ifndef SIGTYPE
++#if defined(sun) || defined(SYSV) || defined(POSIX_SOURCE)
++#define SIGTYPE void
++#else
++#define SIGTYPE int
++#endif /* defined(sun) || defined(SYSV) || defined(POSIX_SOURCE) */
++#endif /* SIGTYPE */
++
++#ifndef MIN
++#define MIN(a, b) ((a) < (b)? (a): (b))
++#endif
++#ifndef MAX
++#define MAX(a, b) ((a) > (b)? (a): (b))
++#endif
++
++#ifndef offsetof
++#define offsetof(type, member) ((size_t) &((type *)0)->member)
++#endif
++
++#endif /* __PPP_H__ */
diff --git a/extra/capseo/PKGBUILD b/extra/capseo/PKGBUILD
new file mode 100644
index 000000000..6b4664a0d
--- /dev/null
+++ b/extra/capseo/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 49837 2009-08-16 16:56:46Z jgc $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=capseo
+pkgver=0.3
+pkgrel=1
+pkgdesc="Capseo video codec"
+arch=('i686' 'x86_64')
+url="http://dev.gentoo.org/~trapni/capseo/"
+license=('GPL2')
+depends=('libgl' 'gcc-libs')
+options=('force' '!libtool')
+makedepends=('pkgconfig' 'mesa' 'libogg')
+source=(ftp://ftp.archlinux.org/other/capseo/${pkgname}-${pkgver}.tar.gz)
+md5sums=('bd869e8c9b1081e90a44567092ea8c5e')
+
+build() {
+ # start building
+ cd "${srcdir}"
+ ./autogen.sh || return 1
+ ./configure --prefix=/usr --disable-static || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/catdoc/PKGBUILD b/extra/catdoc/PKGBUILD
new file mode 100644
index 000000000..2b46013c6
--- /dev/null
+++ b/extra/catdoc/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 31735 2009-03-28 03:50:45Z eric $
+# Maintainer: Juergen Hoetzel <juergen@archlinux.org>
+# Contributor: Paulius Palevicius <paulius@birzai.com>
+
+pkgname=catdoc
+pkgver=0.94.2
+pkgrel=2
+pkgdesc="A convertor for Microsoft Word, Excel, PowerPoint and RTF Files to text"
+arch=(i686 x86_64)
+url="http://www.wagner.pp.ru/~vitus/software/catdoc/"
+license=('GPL')
+depends=('glibc')
+optdepends=('tk: for using wordview')
+options=('!makeflags')
+source=(http://ftp.wagner.pp.ru/pub/catdoc/$pkgname-$pkgver.tar.gz)
+md5sums=('243e1680bb3e703616f5adecfee24491')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ ./configure --prefix=/usr --with-wish=/usr/bin/wish || return 1
+ make || return 1
+ make installroot=$pkgdir mandir=/usr/share/man/man1 install || return 1
+}
+# vim: ts=2 sw=2 et ft=sh
diff --git a/extra/ccache/PKGBUILD b/extra/ccache/PKGBUILD
new file mode 100644
index 000000000..09a7487fb
--- /dev/null
+++ b/extra/ccache/PKGBUILD
@@ -0,0 +1,34 @@
+# $Id: PKGBUILD 105538 2011-01-10 11:06:14Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=ccache
+pkgver=3.1.4
+pkgrel=1
+pkgdesc="A compiler cache"
+url="http://ccache.samba.org/"
+source=(http://samba.org/ftp/${pkgname}/$pkgname-$pkgver.tar.bz2)
+license=('GPL')
+arch=('i686' 'x86_64')
+depends=('zlib')
+md5sums=('676fda8a9a5e02574435c32b22942abd')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr
+ make || return 1
+ install -Dm 755 ccache ${pkgdir}/usr/bin/ccache
+ install -Dm 644 ccache.1 ${pkgdir}/usr/share/man/man1/ccache.1
+
+ mkdir -p ${pkgdir}/usr/lib/ccache/bin
+ ln -sf /usr/bin/ccache ${pkgdir}/usr/lib/ccache/bin/cc
+ ln -sf /usr/bin/ccache ${pkgdir}/usr/lib/ccache/bin/gcc
+ ln -sf /usr/bin/ccache ${pkgdir}/usr/lib/ccache/bin/g++
+ ln -sf /usr/bin/ccache ${pkgdir}/usr/lib/ccache/bin/cpp
+ ln -sf /usr/bin/ccache ${pkgdir}/usr/lib/ccache/bin/c++
+ ln -sf /usr/bin/ccache ${pkgdir}/usr/lib/ccache/bin/${CHOST}-cc
+ ln -sf /usr/bin/ccache ${pkgdir}/usr/lib/ccache/bin/${CHOST}-gcc
+ ln -sf /usr/bin/ccache ${pkgdir}/usr/lib/ccache/bin/${CHOST}-g++
+ ln -sf /usr/bin/ccache ${pkgdir}/usr/lib/ccache/bin/${CHOST}-cpp
+ ln -sf /usr/bin/ccache ${pkgdir}/usr/lib/ccache/bin/${CHOST}-c++
+}
diff --git a/extra/cd-discid/PKGBUILD b/extra/cd-discid/PKGBUILD
new file mode 100644
index 000000000..d00e1459b
--- /dev/null
+++ b/extra/cd-discid/PKGBUILD
@@ -0,0 +1,20 @@
+# $Id: PKGBUILD 32259 2009-03-29 22:10:04Z eric $
+# Maintainer: dorphell <dorphell@archlinux.org>
+# Contributor: Jochem Kossen <j.kossen@home.nl>
+
+pkgname=cd-discid
+pkgver=0.9
+pkgrel=2
+pkgdesc="cd-discid is a backend utility to get CDDB discid information from a CD-ROM disc."
+arch=(i686 x86_64)
+url="http://lly.org/~rcw/cd-discid/"
+license=('GPL')
+depends=('glibc')
+source=(http://lly.org/~rcw/$pkgname/$pkgname\_$pkgver.orig.tar.gz)
+md5sums=('64677b8b63d1db0db015043f5455171a')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ make || return 1
+ make DESTDIR=$pkgdir INSTALL=/bin/install install || return 1
+}
diff --git a/extra/cdargs/PKGBUILD b/extra/cdargs/PKGBUILD
new file mode 100644
index 000000000..987321e06
--- /dev/null
+++ b/extra/cdargs/PKGBUILD
@@ -0,0 +1,36 @@
+# $Id: PKGBUILD 104930 2011-01-05 15:27:14Z andrea $
+# Maintainer: Aaron Griffin <aaron@archlinux.org>
+# Contributor: Damir Perisa <damir.perisa@bluewin.ch>
+
+pkgname=cdargs
+pkgver=1.35
+pkgrel=2
+pkgdesc="A replacement for 'cd' that includes bookmarks/browsing for faster navigation"
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://www.skamphausen.de/cgi-bin/ska/CDargs"
+depends=('ncurses' 'gcc-libs')
+source=("http://www.skamphausen.de/downloads/${pkgname}/${pkgname}-${pkgver}.tar.gz")
+install=${pkgname}.install
+md5sums=('50be618d67f0b9f2439526193c69c567')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr --mandir=/usr/share/man
+ make
+
+ cd contrib
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+
+ # install helper scripts
+ cd contrib
+ make DESTDIR=${pkgdir} install
+
+ install -d ${pkgdir}/usr/share/cdargs
+ install $pkgname-{tcsh.csh,bash.sh} ${pkgdir}/usr/share/cdargs
+}
diff --git a/extra/cdargs/cdargs.install b/extra/cdargs/cdargs.install
new file mode 100644
index 000000000..b1a5c1d9d
--- /dev/null
+++ b/extra/cdargs/cdargs.install
@@ -0,0 +1,7 @@
+post_install() {
+ echo "cdargs: helper scripts are in /usr/share/cdargs/"
+}
+
+post_upgrade() {
+ echo "cdargs: helper scripts are in /usr/share/cdargs/"
+}
diff --git a/extra/cdparanoia/ChangeLog b/extra/cdparanoia/ChangeLog
new file mode 100644
index 000000000..a1a1d4df4
--- /dev/null
+++ b/extra/cdparanoia/ChangeLog
@@ -0,0 +1,23 @@
+2008-09-15 Alexander Fehr <pizzapunk gmail com>
+
+ * cdparanoia-10.2-1:
+ New upstream release.
+
+2008-08-07 Alexander Fehr <pizzapunk gmail com>
+
+ * cdparanoia-10.1-1:
+ New upstream release.
+ Changed license to GPL.
+ Added !makeflags option.
+
+2008-07-07 Alexander Fehr <pizzapunk gmail com>
+
+ * cdparanoia-10.0-1:
+ New upstream release.
+ New maintainer.
+ Added arch variable.
+ Changed license to GPL3.
+ Fixed man page location.
+ Removed cdparanoia.patch.
+ Removed gcc34.patch.
+ Added ChangeLog.
diff --git a/extra/cdparanoia/PKGBUILD b/extra/cdparanoia/PKGBUILD
new file mode 100644
index 000000000..870136f91
--- /dev/null
+++ b/extra/cdparanoia/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: PKGBUILD 53529 2009-10-02 03:47:22Z eric $
+# Maintainer: Alexander Fehr <pizzapunk gmail com>
+
+pkgname=cdparanoia
+pkgver=10.2
+pkgrel=2
+pkgdesc="Compact Disc Digital Audio extraction tool"
+arch=('i686' 'x86_64')
+url="http://www.xiph.org/paranoia/"
+license=('GPL')
+depends=('glibc')
+options=('!makeflags')
+source=(http://downloads.xiph.org/releases/cdparanoia/cdparanoia-III-$pkgver.src.tgz gcc.patch)
+md5sums=('b304bbe8ab63373924a744eac9ebc652' '12da14958d2b84c6719fe69890436445')
+sha1sums=('1901e20d3a370ca6afa4c76a9ef30d3f03044320' '67faaf0e3eed2e3de6f66d8168604bc6c7295921')
+
+build() {
+ cd "$srcdir/cdparanoia-III-$pkgver"
+ patch -p0 -i ${srcdir}/gcc.patch || return 1
+ ./configure --prefix=/usr --mandir=/usr/share/man || return 1
+ make || return 1
+ make prefix="$pkgdir/usr" MANDIR="$pkgdir/usr/share/man" install || return 1
+}
diff --git a/extra/cdparanoia/gcc.patch b/extra/cdparanoia/gcc.patch
new file mode 100644
index 000000000..b157353e2
--- /dev/null
+++ b/extra/cdparanoia/gcc.patch
@@ -0,0 +1,582 @@
+Index: interface/test_interface.c
+===================================================================
+--- interface/test_interface.c (Revision 15337)
++++ interface/test_interface.c (Revision 15340)
+@@ -66,9 +66,9 @@
+ if(!fd)fd=fdopen(d->cdda_fd,"r");
+
+ if(begin<lastread)
+- d->private->last_milliseconds=20;
++ d->private_data->last_milliseconds=20;
+ else
+- d->private->last_milliseconds=sectors;
++ d->private_data->last_milliseconds=sectors;
+
+ #ifdef CDDA_TEST_UNDERRUN
+ sectors-=1;
+Index: interface/cdda_interface.h
+===================================================================
+--- interface/cdda_interface.h (Revision 15337)
++++ interface/cdda_interface.h (Revision 15340)
+@@ -84,7 +84,7 @@
+ int is_atapi;
+ int is_mmc;
+
+- cdda_private_data_t *private;
++ cdda_private_data_t *private_data;
+ void *reserved;
+ unsigned char inqbytes[4];
+
+Index: interface/interface.c
+===================================================================
+--- interface/interface.c (Revision 15337)
++++ interface/interface.c (Revision 15340)
+@@ -39,9 +39,9 @@
+ if(d->drive_model)free(d->drive_model);
+ if(d->cdda_fd!=-1)close(d->cdda_fd);
+ if(d->ioctl_fd!=-1 && d->ioctl_fd!=d->cdda_fd)close(d->ioctl_fd);
+- if(d->private){
+- if(d->private->sg_hd)free(d->private->sg_hd);
+- free(d->private);
++ if(d->private_data){
++ if(d->private_data->sg_hd)free(d->private_data->sg_hd);
++ free(d->private_data);
+ }
+
+ free(d);
+@@ -127,7 +127,7 @@
+ }
+ }
+ }
+- if(ms)*ms=d->private->last_milliseconds;
++ if(ms)*ms=d->private_data->last_milliseconds;
+ return(sectors);
+ }
+
+Index: interface/scsi_interface.c
+===================================================================
+--- interface/scsi_interface.c (Revision 15337)
++++ interface/scsi_interface.c (Revision 15340)
+@@ -15,13 +15,13 @@
+ static int timed_ioctl(cdrom_drive *d, int fd, int command, void *arg){
+ struct timespec tv1;
+ struct timespec tv2;
+- int ret1=clock_gettime(d->private->clock,&tv1);
++ int ret1=clock_gettime(d->private_data->clock,&tv1);
+ int ret2=ioctl(fd, command,arg);
+- int ret3=clock_gettime(d->private->clock,&tv2);
++ int ret3=clock_gettime(d->private_data->clock,&tv2);
+ if(ret1<0 || ret3<0){
+- d->private->last_milliseconds=-1;
++ d->private_data->last_milliseconds=-1;
+ }else{
+- d->private->last_milliseconds = (tv2.tv_sec-tv1.tv_sec)*1000. + (tv2.tv_nsec-tv1.tv_nsec)/1000000.;
++ d->private_data->last_milliseconds = (tv2.tv_sec-tv1.tv_sec)*1000. + (tv2.tv_nsec-tv1.tv_nsec)/1000000.;
+ }
+ return ret2;
+ }
+@@ -96,7 +96,7 @@
+ static void clear_garbage(cdrom_drive *d){
+ fd_set fdset;
+ struct timeval tv;
+- struct sg_header *sg_hd=d->private->sg_hd;
++ struct sg_header *sg_hd=d->private_data->sg_hd;
+ int flag=0;
+
+ /* clear out any possibly preexisting garbage */
+@@ -185,7 +185,7 @@
+ struct timespec tv2;
+ int tret1,tret2;
+ int status = 0;
+- struct sg_header *sg_hd=d->private->sg_hd;
++ struct sg_header *sg_hd=d->private_data->sg_hd;
+ long writebytes=SG_OFF+cmd_len+in_size;
+
+ /* generic scsi device services */
+@@ -195,7 +195,7 @@
+
+ memset(sg_hd,0,sizeof(sg_hd));
+ memset(sense_buffer,0,SG_MAX_SENSE);
+- memcpy(d->private->sg_buffer,cmd,cmd_len+in_size);
++ memcpy(d->private_data->sg_buffer,cmd,cmd_len+in_size);
+ sg_hd->twelve_byte = cmd_len == 12;
+ sg_hd->result = 0;
+ sg_hd->reply_len = SG_OFF + out_size;
+@@ -209,7 +209,7 @@
+ tell if the command failed. Scared yet? */
+
+ if(bytecheck && out_size>in_size){
+- memset(d->private->sg_buffer+cmd_len+in_size,bytefill,out_size-in_size);
++ memset(d->private_data->sg_buffer+cmd_len+in_size,bytefill,out_size-in_size);
+ /* the size does not remove cmd_len due to the way the kernel
+ driver copies buffers */
+ writebytes+=(out_size-in_size);
+@@ -243,7 +243,7 @@
+ }
+
+ sigprocmask (SIG_BLOCK, &(d->sigset), NULL );
+- tret1=clock_gettime(d->private->clock,&tv1);
++ tret1=clock_gettime(d->private_data->clock,&tv1);
+ errno=0;
+ status = write(d->cdda_fd, sg_hd, writebytes );
+
+@@ -289,7 +289,7 @@
+ }
+ }
+
+- tret2=clock_gettime(d->private->clock,&tv2);
++ tret2=clock_gettime(d->private_data->clock,&tv2);
+ errno=0;
+ status = read(d->cdda_fd, sg_hd, SG_OFF + out_size);
+ sigprocmask ( SIG_UNBLOCK, &(d->sigset), NULL );
+@@ -313,7 +313,7 @@
+ if(bytecheck && in_size+cmd_len<out_size){
+ long i,flag=0;
+ for(i=in_size;i<out_size;i++)
+- if(d->private->sg_buffer[i]!=bytefill){
++ if(d->private_data->sg_buffer[i]!=bytefill){
+ flag=1;
+ break;
+ }
+@@ -326,9 +326,9 @@
+
+ errno=0;
+ if(tret1<0 || tret2<0){
+- d->private->last_milliseconds=-1;
++ d->private_data->last_milliseconds=-1;
+ }else{
+- d->private->last_milliseconds = (tv2.tv_sec-tv1.tv_sec)*1000 + (tv2.tv_nsec-tv1.tv_nsec)/1000000;
++ d->private_data->last_milliseconds = (tv2.tv_sec-tv1.tv_sec)*1000 + (tv2.tv_nsec-tv1.tv_nsec)/1000000;
+ }
+ return(0);
+ }
+@@ -347,7 +347,7 @@
+
+ memset(&hdr,0,sizeof(hdr));
+ memset(sense,0,sizeof(sense));
+- memcpy(d->private->sg_buffer,cmd+cmd_len,in_size);
++ memcpy(d->private_data->sg_buffer,cmd+cmd_len,in_size);
+
+ hdr.cmdp = cmd;
+ hdr.cmd_len = cmd_len;
+@@ -355,7 +355,7 @@
+ hdr.mx_sb_len = SG_MAX_SENSE;
+ hdr.timeout = 50000;
+ hdr.interface_id = 'S';
+- hdr.dxferp = d->private->sg_buffer;
++ hdr.dxferp = d->private_data->sg_buffer;
+ hdr.flags = SG_FLAG_DIRECT_IO; /* direct IO if we can get it */
+
+ /* scary buffer fill hack */
+@@ -400,7 +400,7 @@
+ if(bytecheck && in_size<out_size){
+ long i,flag=0;
+ for(i=in_size;i<out_size;i++)
+- if(d->private->sg_buffer[i]!=bytefill){
++ if(d->private_data->sg_buffer[i]!=bytefill){
+ flag=1;
+ break;
+ }
+@@ -412,7 +412,7 @@
+ }
+
+ /* Can't rely on .duration because we can't be certain kernel has HZ set to something useful */
+- /* d->private->last_milliseconds = hdr.duration; */
++ /* d->private_data->last_milliseconds = hdr.duration; */
+
+ errno = 0;
+ return 0;
+@@ -445,9 +445,9 @@
+
+ handle_scsi_cmd(d, cmd, 6, 0, 56, 0,0, sense);
+
+- key = d->private->sg_buffer[2] & 0xf;
+- ASC = d->private->sg_buffer[12];
+- ASCQ = d->private->sg_buffer[13];
++ key = d->private_data->sg_buffer[2] & 0xf;
++ ASC = d->private_data->sg_buffer[12];
++ ASCQ = d->private_data->sg_buffer[13];
+
+ if(key == 2 && ASC == 4 && ASCQ == 1) return 0;
+ return 1;
+@@ -492,7 +492,7 @@
+ if (handle_scsi_cmd (d, cmd, 10, 0, size+4,'\377',1,sense)) return(1);
+
+ {
+- unsigned char *b=d->private->sg_buffer;
++ unsigned char *b=d->private_data->sg_buffer;
+ if(b[0])return(1); /* Handles only up to 256 bytes */
+ if(b[6])return(1); /* Handles only up to 256 bytes */
+
+@@ -604,8 +604,8 @@
+ static unsigned int get_orig_sectorsize(cdrom_drive *d){
+ if(mode_sense(d,12,0x01))return(-1);
+
+- d->orgdens = d->private->sg_buffer[4];
+- return(d->orgsize = ((int)(d->private->sg_buffer[10])<<8)+d->private->sg_buffer[11]);
++ d->orgdens = d->private_data->sg_buffer[4];
++ return(d->orgsize = ((int)(d->private_data->sg_buffer[10])<<8)+d->private_data->sg_buffer[11]);
+ }
+
+ /* switch CDROM scsi drives to given sector size */
+@@ -664,8 +664,8 @@
+ return(-4);
+ }
+
+- first=d->private->sg_buffer[2];
+- last=d->private->sg_buffer[3];
++ first=d->private_data->sg_buffer[2];
++ last=d->private_data->sg_buffer[3];
+ tracks=last-first+1;
+
+ if (last > MAXTRK || first > MAXTRK || last<0 || first<0) {
+@@ -683,7 +683,7 @@
+ return(-5);
+ }
+ {
+- scsi_TOC *toc=(scsi_TOC *)(d->private->sg_buffer+4);
++ scsi_TOC *toc=(scsi_TOC *)(d->private_data->sg_buffer+4);
+
+ d->disc_toc[i-first].bFlags=toc->bFlags;
+ d->disc_toc[i-first].bTrack=i;
+@@ -704,7 +704,7 @@
+ return(-2);
+ }
+ {
+- scsi_TOC *toc=(scsi_TOC *)(d->private->sg_buffer+4);
++ scsi_TOC *toc=(scsi_TOC *)(d->private_data->sg_buffer+4);
+
+ d->disc_toc[i-first].bFlags=toc->bFlags;
+ d->disc_toc[i-first].bTrack=0xAA;
+@@ -738,7 +738,7 @@
+ }
+
+ /* copy to our structure and convert start sector */
+- tracks = d->private->sg_buffer[1];
++ tracks = d->private_data->sg_buffer[1];
+ if (tracks > MAXTRK) {
+ cderror(d,"003: CDROM reporting illegal number of tracks\n");
+ return(-3);
+@@ -754,33 +754,33 @@
+ return(-5);
+ }
+
+- d->disc_toc[i].bFlags = d->private->sg_buffer[10];
++ d->disc_toc[i].bFlags = d->private_data->sg_buffer[10];
+ d->disc_toc[i].bTrack = i + 1;
+
+ d->disc_toc[i].dwStartSector= d->adjust_ssize *
+- (((signed char)(d->private->sg_buffer[2])<<24) |
+- (d->private->sg_buffer[3]<<16)|
+- (d->private->sg_buffer[4]<<8)|
+- (d->private->sg_buffer[5]));
++ (((signed char)(d->private_data->sg_buffer[2])<<24) |
++ (d->private_data->sg_buffer[3]<<16)|
++ (d->private_data->sg_buffer[4]<<8)|
++ (d->private_data->sg_buffer[5]));
+ }
+
+ d->disc_toc[i].bFlags = 0;
+ d->disc_toc[i].bTrack = i + 1;
+- memcpy (&foo, d->private->sg_buffer+2, 4);
+- memcpy (&bar, d->private->sg_buffer+6, 4);
++ memcpy (&foo, d->private_data->sg_buffer+2, 4);
++ memcpy (&bar, d->private_data->sg_buffer+6, 4);
+ d->disc_toc[i].dwStartSector = d->adjust_ssize * (be32_to_cpu(foo) +
+ be32_to_cpu(bar));
+
+ d->disc_toc[i].dwStartSector= d->adjust_ssize *
+- ((((signed char)(d->private->sg_buffer[2])<<24) |
+- (d->private->sg_buffer[3]<<16)|
+- (d->private->sg_buffer[4]<<8)|
+- (d->private->sg_buffer[5]))+
++ ((((signed char)(d->private_data->sg_buffer[2])<<24) |
++ (d->private_data->sg_buffer[3]<<16)|
++ (d->private_data->sg_buffer[4]<<8)|
++ (d->private_data->sg_buffer[5]))+
+
+- ((((signed char)(d->private->sg_buffer[6])<<24) |
+- (d->private->sg_buffer[7]<<16)|
+- (d->private->sg_buffer[8]<<8)|
+- (d->private->sg_buffer[9]))));
++ ((((signed char)(d->private_data->sg_buffer[6])<<24) |
++ (d->private_data->sg_buffer[7]<<16)|
++ (d->private_data->sg_buffer[8]<<8)|
++ (d->private_data->sg_buffer[9]))));
+
+
+ d->cd_extra = FixupTOC(d,tracks+1);
+@@ -817,7 +817,7 @@
+ cmd[8] = sectors;
+ if((ret=handle_scsi_cmd(d,cmd,10,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+ return(ret);
+- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+ return(0);
+ }
+
+@@ -836,7 +836,7 @@
+ cmd[9] = sectors;
+ if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+ return(ret);
+- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+ return(0);
+ }
+
+@@ -854,7 +854,7 @@
+ cmd[8] = sectors;
+ if((ret=handle_scsi_cmd(d,cmd,10,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+ return(ret);
+- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+ return(0);
+ }
+
+@@ -872,7 +872,7 @@
+ cmd[9] = sectors;
+ if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+ return(ret);
+- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+ return(0);
+ }
+
+@@ -890,7 +890,7 @@
+ cmd[8] = sectors;
+ if((ret=handle_scsi_cmd(d,cmd,10,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+ return(ret);
+- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+ return(0);
+ }
+
+@@ -908,7 +908,7 @@
+ cmd[9] = sectors;
+ if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+ return(ret);
+- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+ return(0);
+ }
+
+@@ -922,7 +922,7 @@
+ cmd[8] = sectors;
+ if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+ return(ret);
+- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+ return(0);
+ }
+
+@@ -936,7 +936,7 @@
+ cmd[8] = sectors;
+ if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+ return(ret);
+- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+ return(0);
+ }
+
+@@ -950,7 +950,7 @@
+ cmd[8] = sectors;
+ if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+ return(ret);
+- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+ return(0);
+ }
+
+@@ -964,7 +964,7 @@
+ cmd[8] = sectors;
+ if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+ return(ret);
+- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+ return(0);
+ }
+
+@@ -978,7 +978,7 @@
+ cmd[8] = sectors;
+ if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+ return(ret);
+- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+ return(0);
+ }
+
+@@ -992,7 +992,7 @@
+ cmd[8] = sectors;
+ if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+ return(ret);
+- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+ return(0);
+ }
+
+@@ -1026,7 +1026,7 @@
+
+ if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+ return(ret);
+- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+ return(0);
+ }
+
+@@ -1039,7 +1039,7 @@
+
+ if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+ return(ret);
+- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+ return(0);
+ }
+
+@@ -1052,7 +1052,7 @@
+
+ if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+ return(ret);
+- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+ return(0);
+ }
+
+@@ -1275,7 +1275,7 @@
+ static int count_2352_bytes(cdrom_drive *d){
+ long i;
+ for(i=2351;i>=0;i--)
+- if(d->private->sg_buffer[i]!=(unsigned char)'\177')
++ if(d->private_data->sg_buffer[i]!=(unsigned char)'\177')
+ return(((i+3)>>2)<<2);
+
+ return(0);
+@@ -1284,7 +1284,7 @@
+ static int verify_nonzero(cdrom_drive *d){
+ long i,flag=0;
+ for(i=0;i<2352;i++)
+- if(d->private->sg_buffer[i]!=0){
++ if(d->private_data->sg_buffer[i]!=0){
+ flag=1;
+ break;
+ }
+@@ -1621,7 +1621,7 @@
+ d->is_mmc=0;
+ if(mode_sense(d,22,0x2A)==0){
+
+- b=d->private->sg_buffer;
++ b=d->private_data->sg_buffer;
+ b+=b[3]+4;
+
+ if((b[0]&0x3F)==0x2A){
+@@ -1669,7 +1669,7 @@
+ cderror(d,"008: Unable to identify CDROM model\n");
+ return(NULL);
+ }
+- return (d->private->sg_buffer);
++ return (d->private_data->sg_buffer);
+ }
+
+ int scsi_init_drive(cdrom_drive *d){
+@@ -1725,8 +1725,8 @@
+ check_cache(d);
+
+ d->error_retry=1;
+- d->private->sg_hd=realloc(d->private->sg_hd,d->nsectors*CD_FRAMESIZE_RAW + SG_OFF + 128);
+- d->private->sg_buffer=((unsigned char *)d->private->sg_hd)+SG_OFF;
++ d->private_data->sg_hd=realloc(d->private_data->sg_hd,d->nsectors*CD_FRAMESIZE_RAW + SG_OFF + 128);
++ d->private_data->sg_buffer=((unsigned char *)d->private_data->sg_hd)+SG_OFF;
+ d->report_all=1;
+ return(0);
+ }
+Index: interface/cooked_interface.c
+===================================================================
+--- interface/cooked_interface.c (Revision 15337)
++++ interface/cooked_interface.c (Revision 15340)
+@@ -13,13 +13,13 @@
+ static int timed_ioctl(cdrom_drive *d, int fd, int command, void *arg){
+ struct timespec tv1;
+ struct timespec tv2;
+- int ret1=clock_gettime(d->private->clock,&tv1);
++ int ret1=clock_gettime(d->private_data->clock,&tv1);
+ int ret2=ioctl(fd, command,arg);
+- int ret3=clock_gettime(d->private->clock,&tv2);
++ int ret3=clock_gettime(d->private_data->clock,&tv2);
+ if(ret1<0 || ret3<0){
+- d->private->last_milliseconds=-1;
++ d->private_data->last_milliseconds=-1;
+ }else{
+- d->private->last_milliseconds = (tv2.tv_sec-tv1.tv_sec)*1000. + (tv2.tv_nsec-tv1.tv_nsec)/1000000.;
++ d->private_data->last_milliseconds = (tv2.tv_sec-tv1.tv_sec)*1000. + (tv2.tv_nsec-tv1.tv_nsec)/1000000.;
+ }
+ return ret2;
+ }
+Index: interface/scan_devices.c
+===================================================================
+--- interface/scan_devices.c (Revision 15337)
++++ interface/scan_devices.c (Revision 15340)
+@@ -264,11 +264,11 @@
+ d->interface=COOKED_IOCTL;
+ d->bigendianp=-1; /* We don't know yet... */
+ d->nsectors=-1;
+- d->private=calloc(1,sizeof(*d->private));
++ d->private_data=calloc(1,sizeof(*d->private_data));
+ {
+ /* goddamnit */
+ struct timespec tv;
+- d->private->clock=(clock_gettime(CLOCK_MONOTONIC,&tv)<0?CLOCK_REALTIME:CLOCK_MONOTONIC);
++ d->private_data->clock=(clock_gettime(CLOCK_MONOTONIC,&tv)<0?CLOCK_REALTIME:CLOCK_MONOTONIC);
+ }
+ idmessage(messagedest,messages,"\t\tCDROM sensed: %s\n",description);
+ return(d);
+@@ -674,15 +674,15 @@
+ d->bigendianp=-1; /* We don't know yet... */
+ d->nsectors=-1;
+ d->messagedest = messagedest;
+- d->private=calloc(1,sizeof(*d->private));
++ d->private_data=calloc(1,sizeof(*d->private_data));
+ {
+ /* goddamnit */
+ struct timespec tv;
+- d->private->clock=(clock_gettime(CLOCK_MONOTONIC,&tv)<0?CLOCK_REALTIME:CLOCK_MONOTONIC);
++ d->private_data->clock=(clock_gettime(CLOCK_MONOTONIC,&tv)<0?CLOCK_REALTIME:CLOCK_MONOTONIC);
+ }
+ if(use_sgio){
+ d->interface=SGIO_SCSI;
+- d->private->sg_buffer=(unsigned char *)(d->private->sg_hd=malloc(MAX_BIG_BUFF_SIZE));
++ d->private_data->sg_buffer=(unsigned char *)(d->private_data->sg_hd=malloc(MAX_BIG_BUFF_SIZE));
+ g_fd=d->cdda_fd=dup(d->ioctl_fd);
+ }else{
+ version=verify_SG_version(d,messagedest,messages);
+@@ -696,8 +696,8 @@
+ }
+
+ /* malloc our big buffer for scsi commands */
+- d->private->sg_hd=malloc(MAX_BIG_BUFF_SIZE);
+- d->private->sg_buffer=((unsigned char *)d->private->sg_hd)+SG_OFF;
++ d->private_data->sg_hd=malloc(MAX_BIG_BUFF_SIZE);
++ d->private_data->sg_buffer=((unsigned char *)d->private_data->sg_hd)+SG_OFF;
+ }
+
+ {
+@@ -772,9 +772,9 @@
+ if(i_fd!=-1)close(i_fd);
+ if(g_fd!=-1)close(g_fd);
+ if(d){
+- if(d->private){
+- if(d->private->sg_hd)free(d->private->sg_hd);
+- free(d->private);
++ if(d->private_data){
++ if(d->private_data->sg_hd)free(d->private_data->sg_hd);
++ free(d->private_data);
+ }
+ free(d);
+ }
+@@ -821,7 +821,7 @@
+ d->interface=TEST_INTERFACE;
+ d->bigendianp=-1; /* We don't know yet... */
+ d->nsectors=-1;
+- d->private=calloc(1,sizeof(*d->private));
++ d->private_data=calloc(1,sizeof(*d->private_data));
+ d->drive_model=copystring("File based test interface");
+ idmessage(messagedest,messages,"\t\tCDROM sensed: %s\n",d->drive_model);
+
diff --git a/extra/cdrdao/PKGBUILD b/extra/cdrdao/PKGBUILD
new file mode 100644
index 000000000..4474dce28
--- /dev/null
+++ b/extra/cdrdao/PKGBUILD
@@ -0,0 +1,59 @@
+# $Id: PKGBUILD 102363 2010-12-07 13:51:12Z jgc $
+# Maintainer: Daniel J Griffiths <ghost1227@archlinux.us>
+# Contributor: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: dorphell <dorphell@archlinux.org>
+
+pkgbase=('cdrdao')
+pkgname=('cdrdao' 'gcdmaster')
+pkgver=1.2.3
+pkgrel=5
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://cdrdao.sourceforge.net/"
+makedepends=('gcc-libs' 'lame' 'libmad' 'libvorbis' 'libao' 'libgnomeuimm')
+source=(http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.bz2
+ cdrdao-1.2.3-autoconf-update.patch
+ cdrdao-1.2.3-k3b.patch
+ cdrdao-1.2.3-stat.patch)
+md5sums=('8d15ba6280bb7ba2f4d6be31d28b3c0c'
+ '8e53dfc174f7c0882194caa05e68b85e'
+ '696f6ca01e1eeb9b6a5be88e535d9398'
+ '0fce05542ebad283f36fa1c4d62992a0')
+
+build() {
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+
+ patch -Np1 -i "${srcdir}/cdrdao-1.2.3-autoconf-update.patch"
+ patch -Np1 -i "${srcdir}/cdrdao-1.2.3-k3b.patch"
+ patch -Np1 -i "${srcdir}/cdrdao-1.2.3-stat.patch"
+
+ ./configure --prefix=/usr \
+ --mandir=/usr/share/man \
+ --sysconfdir=/etc \
+ --with-xdao --with-lame \
+ --with-ogg-support --with-mp3-support
+ make
+}
+
+package_cdrdao() {
+ pkgdesc='Records audio/data CD-Rs in disk-at-once (DAO) mode'
+ depends=('gcc-libs' 'lame' 'libmad' 'libvorbis' 'libao')
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ for dir in trackdb utils paranoia dao
+ do
+ make -C ${dir} DESTDIR="${pkgdir}" install
+ done
+}
+
+package_gcdmaster() {
+ pkgdesc='GUI frontend for creating audio CDs using cdrdao'
+ depends=('libgnomeuimm' "cdrdao=${pkgver}")
+ install=gcdmaster.install
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ make -C xdao GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 DESTDIR="${pkgdir}" install
+
+ mv "${pkgdir}/etc/gconf" "${pkgdir}/usr/share/"
+ rmdir "${pkgdir}/etc"
+}
diff --git a/extra/cdrdao/cdrdao-1.2.3-autoconf-update.patch b/extra/cdrdao/cdrdao-1.2.3-autoconf-update.patch
new file mode 100644
index 000000000..4eb1ade7e
--- /dev/null
+++ b/extra/cdrdao/cdrdao-1.2.3-autoconf-update.patch
@@ -0,0 +1,52 @@
+--- cdrdao-1.2.3rc2/acinclude.m4.orig 2009-02-21 11:30:02.000000000 +0100
++++ cdrdao-1.2.3rc2/acinclude.m4 2009-05-22 22:38:15.448770972 +0200
+@@ -1,5 +1,49 @@
++dnl AM_GCONF_SOURCE_2
++dnl Defines GCONF_SCHEMA_CONFIG_SOURCE which is where you should install schemas
++dnl (i.e. pass to gconftool-2
++dnl Defines GCONF_SCHEMA_FILE_DIR which is a filesystem directory where
++dnl you should install foo.schemas files
++dnl
++
++AC_DEFUN([AM_GCONF_SOURCE_2],
++[
++ if test "x$GCONF_SCHEMA_INSTALL_SOURCE" = "x"; then
++ GCONF_SCHEMA_CONFIG_SOURCE=`gconftool-2 --get-default-source`
++ else
++ GCONF_SCHEMA_CONFIG_SOURCE=$GCONF_SCHEMA_INSTALL_SOURCE
++ fi
++
++ AC_ARG_WITH([gconf-source],
++ AC_HELP_STRING([--with-gconf-source=sourceaddress],
++ [Config database for installing schema files.]),
++ [GCONF_SCHEMA_CONFIG_SOURCE="$withval"],)
++
++ AC_SUBST(GCONF_SCHEMA_CONFIG_SOURCE)
++ AC_MSG_RESULT([Using config source $GCONF_SCHEMA_CONFIG_SOURCE for schema installation])
++
++ if test "x$GCONF_SCHEMA_FILE_DIR" = "x"; then
++ GCONF_SCHEMA_FILE_DIR='$(sysconfdir)/gconf/schemas'
++ fi
++
++ AC_ARG_WITH([gconf-schema-file-dir],
++ AC_HELP_STRING([--with-gconf-schema-file-dir=dir],
++ [Directory for installing schema files.]),
++ [GCONF_SCHEMA_FILE_DIR="$withval"],)
++
++ AC_SUBST(GCONF_SCHEMA_FILE_DIR)
++ AC_MSG_RESULT([Using $GCONF_SCHEMA_FILE_DIR as install directory for schema files])
++
++ AC_ARG_ENABLE(schemas-install,
++ AC_HELP_STRING([--disable-schemas-install],
++ [Disable the schemas installation]),
++ [case ${enableval} in
++ yes|no) ;;
++ *) AC_MSG_ERROR([bad value ${enableval} for --enable-schemas-install]) ;;
++ esac])
++ AM_CONDITIONAL([GCONF_SCHEMAS_INSTALL], [test "$enable_schemas_install" != no])
++])
+ # Configure paths for GTK--
+ # Erik Andersen 30 May 1998
+ # Modified by Tero Pulkkinen (added the compiler checks... I hope they work..)
+
+ dnl Check and configure include and link paths for lame library
diff --git a/extra/cdrdao/cdrdao-1.2.3-k3b.patch b/extra/cdrdao/cdrdao-1.2.3-k3b.patch
new file mode 100644
index 000000000..3de655d54
--- /dev/null
+++ b/extra/cdrdao/cdrdao-1.2.3-k3b.patch
@@ -0,0 +1,11 @@
+--- cdrdao/dao/main.cc~ 2009-04-16 15:34:27.000000000 +0200
++++ cdrdao/dao/main.cc 2009-04-16 15:34:38.000000000 +0200
+@@ -207,7 +207,7 @@
+
+ static void printVersion()
+ {
+- log_message(2, "Cdrdao version %s - (C) Andreas Mueller <andreas@daneb.de>",
++ log_message(0, "Cdrdao version %s - (C) Andreas Mueller <andreas@daneb.de>",
+ VERSION);
+
+ std::list<std::string> list;
diff --git a/extra/cdrdao/cdrdao-1.2.3-stat.patch b/extra/cdrdao/cdrdao-1.2.3-stat.patch
new file mode 100644
index 000000000..5a68e7130
--- /dev/null
+++ b/extra/cdrdao/cdrdao-1.2.3-stat.patch
@@ -0,0 +1,13 @@
+diff -up cdrdao-1.2.3/dao/ScsiIf-linux.cc.stat cdrdao-1.2.3/dao/ScsiIf-linux.cc
+--- cdrdao-1.2.3/dao/ScsiIf-linux.cc.stat 2010-01-20 20:11:36.000000000 +0100
++++ cdrdao-1.2.3/dao/ScsiIf-linux.cc 2010-01-20 20:14:07.000000000 +0100
+@@ -19,6 +19,9 @@
+
+ #include <config.h>
+
++#include <sys/types.h>
++#include <sys/stat.h>
++
+ #include <stdio.h>
+ #include <fcntl.h>
+ #include <unistd.h>
diff --git a/extra/cdrdao/gcdmaster.install b/extra/cdrdao/gcdmaster.install
new file mode 100644
index 000000000..ed2efc6aa
--- /dev/null
+++ b/extra/cdrdao/gcdmaster.install
@@ -0,0 +1,22 @@
+pkgname=gcdmaster
+
+post_install() {
+ usr/sbin/gconfpkg --install ${pkgname}
+ update-mime-database usr/share/mime
+}
+
+pre_upgrade() {
+ pre_remove $1
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ usr/sbin/gconfpkg --uninstall ${pkgname}
+}
+
+post_remove() {
+ update-mime-database usr/share/mime
+}
diff --git a/extra/cdrkit/PKGBUILD b/extra/cdrkit/PKGBUILD
new file mode 100644
index 000000000..b4814cf6e
--- /dev/null
+++ b/extra/cdrkit/PKGBUILD
@@ -0,0 +1,42 @@
+# $Id: PKGBUILD 103376 2010-12-18 15:46:10Z andyrtr $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Alexander Fehr <pizzapunk gmail com>
+
+pkgname=cdrkit
+pkgver=1.1.11
+pkgrel=1
+pkgdesc="Suite of programs for CD/DVD recording, ISO image creation, and audio CD extraction"
+arch=('i686' 'x86_64')
+url="http://cdrkit.org/"
+license=('GPL2')
+depends=('file' 'bzip2' 'perl')
+makedepends=('cmake')
+provides=('cdrtools')
+conflicts=('cdrtools')
+source=(http://cdrkit.org/releases/$pkgname-$pkgver.tar.gz)
+md5sums=('efe08e2f3ca478486037b053acd512e9')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make PREFIX="$pkgdir/usr" install
+
+ # Make symlinks for cdrtools compatibility
+ cd "$pkgdir/usr/bin"
+ ln -s wodim cdrecord
+ ln -s readom readcd
+ ln -s genisoimage mkisofs
+ ln -s genisoimage mkhybrid
+ ln -s icedax cdda2wav
+
+ cd "$pkgdir/usr/share/man/man1"
+ ln -s wodim.1 cdrecord.1
+ ln -s readom.1 readcd.1
+ ln -s genisoimage.1 mkisofs.1
+ ln -s genisoimage.1 mkhybrid.1
+ ln -s icedax.1 cdda2wav.1
+}
diff --git a/extra/celestia/PKGBUILD b/extra/celestia/PKGBUILD
new file mode 100644
index 000000000..87c4af8a6
--- /dev/null
+++ b/extra/celestia/PKGBUILD
@@ -0,0 +1,34 @@
+# $Id: PKGBUILD 63841 2010-01-18 21:47:42Z ibiru $
+# Maintainer: Ronald van Haren <ronald.archlinux.org>
+# Contributor : Damir Perisa <damir.perisa@bluewin.ch>
+
+pkgname=celestia
+pkgver=1.6.0
+pkgrel=2
+pkgdesc="Real-time space simulation"
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://www.shatters.net/celestia/"
+depends=('gtk2' 'libtheora' 'lua' 'gtkglext' 'glut' 'libxmu' 'mesa' 'libjpeg>=8')
+options=('!makeflags')
+source=(http://downloads.sourceforge.net/sourceforge/celestia/${pkgname}-${pkgver}.tar.gz
+ celestia-1.5.1-gcc44.patch libpng14.patch)
+md5sums=('9b96a8e7666ab5a26f032b9d605e023d'
+ '0c606dbd3a641afb1b0725428db854c8'
+ '829c0860659272a9f55aedf096ee4216')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ # build patch
+ patch -Np0 < ${srcdir}/celestia-1.5.1-gcc44.patch || return 1
+ patch -Np1 -i ${srcdir}/libpng14.patch || return 1
+
+ ./configure --prefix=/usr \
+ --with-lua=/usr \
+ --datadir=/usr/share \
+ --with-gtk
+ make || return 1
+ make DESTDIR=${pkgdir} install || return 1
+}
+
diff --git a/extra/celestia/celestia-1.5.1-gcc44.patch b/extra/celestia/celestia-1.5.1-gcc44.patch
new file mode 100644
index 000000000..b1ee896f0
--- /dev/null
+++ b/extra/celestia/celestia-1.5.1-gcc44.patch
@@ -0,0 +1,20 @@
+--- src/celengine/overlay.h.orig 2009-07-08 02:27:08.000000000 -0400
++++ src/celengine/overlay.h 2009-07-08 02:27:28.000000000 -0400
+@@ -10,6 +10,7 @@
+ #ifndef _OVERLAY_H_
+ #define _OVERLAY_H_
+
++#include <cstdio>
+ #include <string>
+ #include <iostream>
+ #include <celtxf/texturefont.h>
+--- src/celengine/star.cpp.orig 2009-07-08 02:40:52.000000000 -0400
++++ src/celengine/star.cpp 2009-07-08 02:41:08.000000000 -0400
+@@ -8,6 +8,7 @@
+ // of the License, or (at your option) any later version.
+
+ #include <celmath/mathlib.h>
++#include <cstdio>
+ #include <cstring>
+ #include <cassert>
+ #include "celestia.h"
diff --git a/extra/celestia/libpng14.patch b/extra/celestia/libpng14.patch
new file mode 100644
index 000000000..1d47637b9
--- /dev/null
+++ b/extra/celestia/libpng14.patch
@@ -0,0 +1,12 @@
+diff -Nur celestia-1.6.0.orig/src/celengine/image.cpp celestia-1.6.0/src/celengine/image.cpp
+--- celestia-1.6.0.orig/src/celengine/image.cpp 2009-06-22 18:44:08.000000000 +0300
++++ celestia-1.6.0/src/celengine/image.cpp 2010-01-18 23:27:55.000000000 +0200
+@@ -737,7 +737,7 @@
+
+ if (color_type == PNG_COLOR_TYPE_GRAY && bit_depth < 8)
+ {
+- png_set_gray_1_2_4_to_8(png_ptr);
++ png_set_expand_gray_1_2_4_to_8(png_ptr);
+ }
+
+ if (png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS))
diff --git a/extra/cfitsio/PKGBUILD b/extra/cfitsio/PKGBUILD
new file mode 100644
index 000000000..e99bbd0d4
--- /dev/null
+++ b/extra/cfitsio/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 117363 2011-03-31 21:07:25Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=cfitsio
+pkgver=3.270
+_pkgver=3270
+pkgrel=1
+pkgdesc="A library of C and Fortran subroutines for reading and writing data files in FITS (Flexible Image Transport System) data format"
+arch=('i686' 'x86_64')
+url="http://heasarc.gsfc.nasa.gov/docs/software/fitsio/fitsio.html"
+license=('GPL2')
+makedepends=('pkgconfig')
+options=('!libtool')
+source=("ftp://heasarc.gsfc.nasa.gov/software/fitsio/c/${pkgname}${_pkgver}.tar.gz")
+md5sums=('2a72b323de3f40ad1a671f2167500336')
+
+build() {
+ cd ${srcdir}/${pkgname}
+ ./configure --prefix=/usr
+ make shared
+}
+
+package() {
+ cd ${srcdir}/${pkgname}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/cheese/PKGBUILD b/extra/cheese/PKGBUILD
new file mode 100644
index 000000000..bb1aade2f
--- /dev/null
+++ b/extra/cheese/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 91839 2010-09-28 08:08:33Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=cheese
+pkgver=2.32.0
+pkgrel=1
+pkgdesc="Use your webcam to take photos and videos, apply fancy special effects and share the fun with others"
+arch=(i686 x86_64)
+license=('GPL')
+depends=('gnome-desktop>=2.32.0' 'gstreamer0.10-base-plugins>=0.10.30' 'gstreamer0.10-good-plugins>=0.10.24' 'librsvg>=2.32.0' 'gnome-icon-theme>=2.31.0' 'libcanberra>=0.25')
+makedepends=('pkgconfig' 'gnome-doc-utils>=0.20.1' 'intltool')
+groups=('gnome-extra')
+options=('!libtool' '!emptydirs')
+url="http://www.gnome.org/projects/cheese/"
+install=cheese.install
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.32/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('8debc47113d9889247f411d256a8eca0d8da49e5ab5909c200923945b8d5e087')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --libexecdir=/usr/lib \
+ --disable-scrollkeeper --disable-static
+ make
+ make -j1 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 cheese ${pkgdir}/etc/gconf/schemas/*.schemas
+ rm -f ${pkgdir}/etc/gconf/schemas/*.schemas
+}
diff --git a/extra/cheese/cheese.install b/extra/cheese/cheese.install
new file mode 100644
index 000000000..2ee180576
--- /dev/null
+++ b/extra/cheese/cheese.install
@@ -0,0 +1,22 @@
+pkgname=cheese
+
+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/extra/chemtool/PKGBUILD b/extra/chemtool/PKGBUILD
new file mode 100644
index 000000000..b3992140d
--- /dev/null
+++ b/extra/chemtool/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 78228 2010-04-20 03:46:15Z dgriffiths $
+#Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=chemtool
+pkgver=1.6.12
+pkgrel=3
+pkgdesc="A small program for drawing chemical structures"
+arch=(i686 x86_64)
+license=('GPL2')
+url="http://ruby.chemie.uni-freiburg.de/~martin/chemtool/chemtool.html"
+depends=('gtk2')
+options=(!libtool)
+source=(http://ruby.chemie.uni-freiburg.de/~martin/${pkgname}/${pkgname}-${pkgver}.tar.gz chemtool.desktop)
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr --mandir=/usr/share/man
+ make || return 1
+ make DESTDIR=${pkgdir}/ install
+ install -D -m644 gnome/chemtool.png ${pkgdir}/usr/share/pixmaps/chemtool.png
+ install -D -m644 ${srcdir}/chemtool.desktop ${pkgdir}/usr/share/applications/chemtool.desktop
+}
+md5sums=('f9e0633cbda09fcfe5a4ea4c56bcd460'
+ '8cbb6f7021bd5aaa6f6a31fc4d95a06e')
diff --git a/extra/chemtool/chemtool.desktop b/extra/chemtool/chemtool.desktop
new file mode 100644
index 000000000..a93770aea
--- /dev/null
+++ b/extra/chemtool/chemtool.desktop
@@ -0,0 +1,13 @@
+[Desktop Entry]
+Name=Chemtool
+Comment=Molecules 2D drawing
+Name[cs_CZ.ISO8859-2]=Chemtool
+Comment[cs_CZ.ISO8859-2]=Editor molekul
+Comment[de_DE.ISO8859-1]=Moleküleditor
+Exec=chemtool
+Icon=chemtool.png
+Terminal=false
+MultipleArgs=false
+Type=Application
+Categories=Application;Graphics;2DGraphics;GTK;
+MimeType=application/x-chemtool;
diff --git a/extra/chkrootkit/PKGBUILD b/extra/chkrootkit/PKGBUILD
new file mode 100644
index 000000000..e47387bcc
--- /dev/null
+++ b/extra/chkrootkit/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 52041 2009-09-14 15:18:27Z giovanni $
+# Maintainer: Hugo Doria <hugo@archlinux.org>
+# Contributor: Gregor Ibic <gregor.ibic@intelicom.si>
+
+pkgname=chkrootkit
+pkgver=0.49
+pkgrel=1
+pkgdesc="Locally checks for signs of a rootkit."
+arch=('i686' 'x86_64')
+url="http://www.chkrootkit.org"
+depends=('bash')
+license=('BSD')
+source=(ftp://ftp.pangeia.com.br/pub/seg/pac/${pkgname}.tar.gz fix-tools-path.patch)
+md5sums=('304d840d52840689e0ab0af56d6d3a18' '6a2f3038114b8b14e1ad74e30fe44eee')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ patch -p0 < ${srcdir}/fix-tools-path.patch
+ chown root:root *
+ make sense || return 1
+ find ${srcdir}/${pkgname}-${pkgver} -perm /u+x -type f \
+ -execdir install -D -m755 "{}" ${pkgdir}/usr/bin/"{}" ";"
+ install -D -m644 COPYRIGHT $startdir/pkg/usr/share/licenses/$pkgname/LICENSE.txt
+}
diff --git a/extra/chkrootkit/fix-tools-path.patch b/extra/chkrootkit/fix-tools-path.patch
new file mode 100644
index 000000000..2f3c38528
--- /dev/null
+++ b/extra/chkrootkit/fix-tools-path.patch
@@ -0,0 +1,161 @@
+--- chkrootkit 2008-01-19 11:01:15.000000000 +0100
++++ chkrootkit 2008-11-01 13:11:14.000000000 +0100
+@@ -158,23 +158,23 @@
+ fi
+
+ if [ "${EXPERT}" = "t" ]; then
+- expertmode_output "./ifpromisc" -v
++ expertmode_output "/usr/bin/ifpromisc" -v
+ return 5
+ fi
+- if [ ! -x ./ifpromisc ]; then
+- echo "not tested: can't exec ./ifpromisc"
++ if [ ! -x /usr/bin/ifpromisc ]; then
++ echo "not tested: can't exec /usr/bin/ifpromisc"
+ return ${NOT_TESTED}
+ else
+- [ "${QUIET}" != "t" ] && ./ifpromisc -v || ./ifpromisc -q
++ [ "${QUIET}" != "t" ] && /usr/bin/ifpromisc -v || /usr/bin/ifpromisc -q
+ fi
+ }
+
+ chkutmp() {
+- if [ ! -x ./chkutmp ]; then
+- echo "not tested: can't exec ./chkutmp"
++ if [ ! -x /usr/bin/chkutmp ]; then
++ echo "not tested: can't exec /usr/bin/chkutmp"
+ return ${NOT_TESTED}
+ fi
+- if ./chkutmp
++ if /usr/bin/chkutmp
+ then
+ if [ "${QUIET}" != "t" ]; then echo "chkutmp: nothing deleted"; fi
+ fi
+@@ -182,8 +182,8 @@
+ }
+
+ z2 () {
+- if [ ! -x ./chklastlog ]; then
+- echo "not tested: can't exec ./chklastlog"
++ if [ ! -x /usr/bin/chklastlog ]; then
++ echo "not tested: can't exec /usr/bin/chklastlog"
+ return ${NOT_TESTED}
+ fi
+
+@@ -196,32 +196,32 @@
+ fi
+
+ if [ "${EXPERT}" = "t" ]; then
+- expertmode_output "./chklastlog -f ${WTMP} -l ${LASTLOG}"
++ expertmode_output "/usr/bin/chklastlog -f ${WTMP} -l ${LASTLOG}"
+ return 5
+ fi
+
+- if ./chklastlog -f ${WTMP} -l ${LASTLOG}
++ if /usr/bin/chklastlog -f ${WTMP} -l ${LASTLOG}
+ then
+ if [ "${QUIET}" != "t" ]; then echo "chklastlog: nothing deleted"; fi
+ fi
+ }
+
+ wted () {
+- if [ ! -x ./chkwtmp ]; then
+- echo "not tested: can't exec ./chkwtmp"
++ if [ ! -x /usr/bin/chkwtmp ]; then
++ echo "not tested: can't exec /usr/bin/chkwtmp"
+ return ${NOT_TESTED}
+ fi
+
+ if [ "$SYSTEM" = "SunOS" ]; then
+- if [ ! -x ./check_wtmpx ]; then
+- echo "not tested: can't exec ./check_wtmpx"
++ if [ ! -x /usr/bin/check_wtmpx ]; then
++ echo "not tested: can't exec /usr/bin/check_wtmpx"
+ else
+ if [ "${EXPERT}" = "t" ]; then
+- expertmode_output "./check_wtmpx"
++ expertmode_output "/usr/bin/check_wtmpx"
+ return 5
+ fi
+ if [ -f ${ROOTDIR}var/adm/wtmp ]; then
+- if ./check_wtmpx
++ if /usr/bin/check_wtmpx
+ then
+ if [ "${QUIET}" != "t" ]; then \
+ echo "check_wtmpx: nothing deleted in /var/adm/wtmpx"; fi
+@@ -232,12 +232,12 @@
+ WTMP=`loc wtmp wtmp "${ROOTDIR}var/log ${ROOTDIR}var/adm"`
+
+ if [ "${EXPERT}" = "t" ]; then
+- expertmode_output "./chkwtmp -f ${WTMP}"
++ expertmode_output "/usr/bin/chkwtmp -f ${WTMP}"
+ return 5
+ fi
+ fi
+
+- if ./chkwtmp -f ${WTMP}
++ if /usr/bin/chkwtmp -f ${WTMP}
+ then
+ if [ "${QUIET}" != "t" ]; then echo "chkwtmp: nothing deleted"; fi
+ fi
+@@ -275,8 +275,8 @@
+ prog=""
+ if [ \( "${SYSTEM}" = "Linux" -o \( "${SYSTEM}" = "FreeBSD" -a \
+ `echo ${V} | ${awk} '{ if ($1 > 4.3 || $1 < 6.0) print 1; else print 0 }'` -eq 1 \) \) -a "${ROOTDIR}" = "/" ]; then
+- [ -x ./chkproc -a "`find /proc | wc -l`" -gt 1 ] && prog="./chkproc"
+- [ -x ./chkdirs ] && prog="$prog ./chkdirs"
++ [ -x /usr/bin/chkproc -a "`find /proc | wc -l`" -gt 1 ] && prog="/usr/bin/chkproc"
++ [ -x /usr/bin/chkdirs ] && prog="$prog /usr/bin/chkdirs"
+ if [ "$prog" = "" ]; then
+ echo "not tested: can't exec $prog"
+ return ${NOT_TESTED}
+@@ -288,7 +288,7 @@
+ PV=`$ps -V 2>/dev/null| $cut -d " " -f 3 |${awk} -F . '{ print $1 "." $2 $3 }' | ${awk} '{ if ($0 > 3.19) print 3; else if ($0 < 2.015) print 1; else print 2 }'`
+ [ "$PV" = "" ] && PV=2
+ [ "${SYSTEM}" = "SunOS" ] && PV=0
+- expertmode_output "./chkproc -v -v -p $PV"
++ expertmode_output "/usr/bin/chkproc -v -v -p $PV"
+ return 5
+ fi
+
+@@ -315,7 +315,7 @@
+ if [ "${DEBUG}" = "t" ]; then
+ ${echo} "*** PV=$PV ***"
+ fi
+- if ./chkproc -p ${PV}; then
++ if /usr/bin/chkproc -p ${PV}; then
+ if [ "${QUIET}" != "t" ]; then echo "chkproc: nothing detected"; fi
+ else
+ echo "chkproc: Warning: Possible LKM Trojan installed"
+@@ -324,7 +324,7 @@
+ for i in /usr/share /usr/bin /usr/sbin /lib; do
+ [ -d $i ] && dirs="$dirs $i"
+ done
+- if ./chkdirs $dirs; then
++ if /usr/bin/chkdirs $dirs; then
+ if [ "${QUIET}" != "t" ]; then echo "chkdirs: nothing detected"; fi
+ else
+ echo "chkdirs: Warning: Possible LKM Trojan installed"
+@@ -1690,18 +1690,18 @@
+
+ if [ "${SYSTEM}" = "Linux" ]
+ then
+- if [ ! -x ./strings-static ]; then
+- printn "can't exec ./strings-static, "
++ if [ ! -x /usr/bin/strings-static ]; then
++ printn "can't exec /usr/bin/strings-static, "
+ return ${NOT_TESTED}
+ fi
+
+ if [ "${EXPERT}" = "t" ]; then
+- expertmode_output "./strings-static -a ${CMD}"
++ expertmode_output "/usr/bin/strings-static -a ${CMD}"
+ return 5
+ fi
+
+ ### strings must be a statically linked binary.
+- if ./strings-static -a ${CMD} > /dev/null 2>&1
++ if /usr/bin/strings-static -a ${CMD} > /dev/null 2>&1
+ then
+ STATUS=${INFECTED}
+ fi
diff --git a/extra/chmlib/PKGBUILD b/extra/chmlib/PKGBUILD
new file mode 100644
index 000000000..1c91a1985
--- /dev/null
+++ b/extra/chmlib/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 42201 2009-06-11 18:45:59Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Alexander 'dma147' Mieland <dma147@linux-stats.org>
+# Contributor: Simon Morgan <simon@16hz.net>
+
+pkgname=chmlib
+pkgver=0.40
+pkgrel=1
+pkgdesc="Library for dealing with Microsoft ITSS/CHM format files"
+arch=('i686' 'x86_64')
+url="http://morte.jedrea.com/~jedwin/projects/chmlib/"
+options=('!libtool' '!emptydirs')
+license=('LGPL')
+depends=('glibc')
+source=(http://morte.jedrea.com/~jedwin/projects/chmlib/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('7ea49ed8c335215c1edc6fae83e6b912')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr \
+ --enable-examples=yes
+ make || return 1
+ make DESTDIR=${pkgdir} install
+}
+
diff --git a/extra/cifs-utils/PKGBUILD b/extra/cifs-utils/PKGBUILD
new file mode 100644
index 000000000..729822c12
--- /dev/null
+++ b/extra/cifs-utils/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 117241 2011-03-30 13:34:45Z tpowa $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+pkgname=cifs-utils
+pkgver=4.9
+pkgrel=2
+pkgdesc="CIFS filesystem user-space tools"
+arch=(i686 x86_64)
+url="http://wiki.samba.org/index.php/LinuxCIFS_utils"
+license=('GPL')
+depends=('libcap' 'keyutils' 'heimdal')
+source=(ftp://ftp.samba.org/pub/linux-cifs/cifs-utils/$pkgname-$pkgver.tar.bz2)
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make DESTDIR="$pkgdir" install
+ rm -r $pkgdir/usr/bin
+ # set mount.cifs uid, to enable none root mounting form fstab
+ chmod +s $pkgdir/sbin/mount.cifs
+}
+md5sums=('908d904e6b9e58f09f530de151a88ef8')
diff --git a/extra/cinepaint/PKGBUILD b/extra/cinepaint/PKGBUILD
new file mode 100644
index 000000000..c60484af5
--- /dev/null
+++ b/extra/cinepaint/PKGBUILD
@@ -0,0 +1,55 @@
+# $Id: PKGBUILD 89858 2010-09-04 14:16:02Z remy $
+# Maintainer: tobias [tobias.archlinux.org]
+# Contributor: tobias [tobias.justdreams.de]
+
+pkgname=cinepaint
+_srcver=0.22-1
+pkgver=${_srcver/-/.}
+pkgrel=7
+pkgdesc="sophisticated graphics manipulation programm supporting >8bit pictures"
+arch=(i686 x86_64)
+license=('LGPL' 'GPL' 'MIT-OSI')
+url=(http://cinepaint.org.sourceforge.net/)
+depends=('gtk2>=2.18.6' 'openexr>=1.6.1' 'lcms>=1.18' 'libxmu>=1.0.4' 'libxpm>=3.5.7' 'fltk>=1.1.9' 'desktop-file-utils' 'ftgl>=2.1.3rc5' 'libjpeg>=8')
+makedepends=('python2' 'gutenprint>=5.2.3')
+optdepends=('python2' 'gutenprint')
+options=('!libtool')
+install=cinepaint.install
+source=(http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}-${_srcver}.tar.gz
+ cinepaint-0.22.1-gcc43.patch
+ cinepaint-0.22.1-multiple_parameters_named.patch
+ cinepaint-0.22.1-ambiguousawake.patch
+ cinepaint-0.22-gcc44.patch)
+md5sums=('f360587240db6b6d2f0bfd94c420c492' 'f05e17a16d0018e5301aff0e1fa597b0'\
+ '0876510a5ce3d581ebdde7e18199c09f' '4586aa153a0d3cac36120afc1f95a880'\
+ '368e820c27f525e3569d43388f1c119a')
+
+build() {
+ cd "${srcdir}/${pkgname}-${_srcver}"
+ # FIXES
+ patch -Np1 -i "${srcdir}/cinepaint-0.22.1-gcc43.patch" || return 1
+ patch -Np1 -i "${srcdir}/cinepaint-0.22-gcc44.patch" || return 1
+ patch -Np1 -i "${srcdir}/cinepaint-0.22.1-multiple_parameters_named.patch" || return 1
+ patch -Np0 -i "${srcdir}/cinepaint-0.22.1-ambiguousawake.patch" || return 1
+ find plug-ins/pygimp -type f -exec sed -i 's#env python#env python2#' {} +
+ find plug-ins/print -type f -exec \
+ sed -i "s:gutenprintui/gutenprintui:gutenprintui2/gutenprintui:" {} \;
+ # Fix insecure rpath
+ sed '/-rpath/d' -i plug-ins/icc_examin/icc_examin/configure
+
+ # build
+ ./configure --prefix=/usr --mandir=/usr/share/man \
+ --enable-gtk2 --enable-pygimp \
+ --with-python=/usr/bin/python2
+ # FIXES
+ sed -i 's/^\(X_LIBS.*\)$/\1 -lpthread/' plug-ins/openexr/Makefile
+ make
+}
+package() {
+ cd "${srcdir}/${pkgname}-${_srcver}"
+ make DESTDIR="${pkgdir}" install || return 1
+ install -m755 -d "${pkgdir}/usr/share/applications"
+ install -m755 -d "${pkgdir}/usr/share/pixmaps"
+ install -m644 cinepaint.desktop "${pkgdir}/usr/share/applications/" || return 1
+ install -m644 cinepaint.png "${pkgdir}/usr/share/pixmaps/" || return 1
+}
diff --git a/extra/cinepaint/cinepaint-0.22-gcc44.patch b/extra/cinepaint/cinepaint-0.22-gcc44.patch
new file mode 100644
index 000000000..340057834
--- /dev/null
+++ b/extra/cinepaint/cinepaint-0.22-gcc44.patch
@@ -0,0 +1,22 @@
+diff -Nru cinepaint-0.22-1.orig/plug-ins/collect/collect.cpp cinepaint-0.22-1/plug-ins/collect/collect.cpp
+--- cinepaint-0.22-1.orig/plug-ins/collect/collect.cpp 2007-03-30 11:11:33.000000000 +0200
++++ cinepaint-0.22-1/plug-ins/collect/collect.cpp 2009-05-21 14:54:45.000000000 +0200
+@@ -301,7 +301,7 @@
+ return -1;
+
+ // renaming the layer to the original filename
+- gimp_layer_set_name (layers[0], strrchr(fc->value(1),'/')+1);
++ gimp_layer_set_name (layers[0], strrchr((char *)fc->value(1),'/')+1);
+ GPrecisionType image_base_prec = gimp_drawable_precision (layers[0]);
+ int base_gray = gimp_drawable_gray (layers[0]);
+
+@@ -341,7 +341,7 @@
+ #endif
+ gimp_image_add_layer (image_ID, layers[0], 0); DBG
+ // set layer name to filename
+- gimp_layer_set_name(layers[0], strrchr(fc->value(i),'/')+1);
++ gimp_layer_set_name(layers[0], strrchr((char *)fc->value(i),'/')+1);
+
+ // searching max dimensions
+ if (gimp_image_width(load_image_ID) > max_w)
+
diff --git a/extra/cinepaint/cinepaint-0.22.1-ambiguousawake.patch b/extra/cinepaint/cinepaint-0.22.1-ambiguousawake.patch
new file mode 100644
index 000000000..f1d09fa27
--- /dev/null
+++ b/extra/cinepaint/cinepaint-0.22.1-ambiguousawake.patch
@@ -0,0 +1,11 @@
+--- plug-ins/icc_examin/icc_examin/icc_helfer_fltk.cpp.orig 2008-09-03 02:07:08.000000000 +0200
++++ plug-ins/icc_examin/icc_examin/icc_helfer_fltk.cpp 2008-09-03 02:08:02.000000000 +0200
+@@ -226,7 +226,7 @@
+
+ int awake(void)
+ {
+- Fl::awake(0);
++ Fl::awake((void *)0);
+ return 0;
+ }
+ int leerWait(void) { return 0; }
diff --git a/extra/cinepaint/cinepaint-0.22.1-gcc43.patch b/extra/cinepaint/cinepaint-0.22.1-gcc43.patch
new file mode 100644
index 000000000..64ba76099
--- /dev/null
+++ b/extra/cinepaint/cinepaint-0.22.1-gcc43.patch
@@ -0,0 +1,73 @@
+Index: cinepaint-0.22-1/plug-ins/bracketing_to_hdr/br_core/ResponseSolver.hpp
+===================================================================
+--- cinepaint-0.22-1.orig/plug-ins/bracketing_to_hdr/br_core/ResponseSolver.hpp
++++ cinepaint-0.22-1/plug-ins/bracketing_to_hdr/br_core/ResponseSolver.hpp
+@@ -34,6 +34,7 @@
+
+
+ #include <fstream>
++#include <cstring>
+ #include "TNT/tnt_misc.hpp" // proof_least_square_fit()
+ #include "TNT/tnt_stopwatch.hpp"
+ #include "TNT/jama_qr.hpp" // JAMA::QR
+Index: cinepaint-0.22-1/plug-ins/bracketing_to_hdr/br_core/br_Image.cpp
+===================================================================
+--- cinepaint-0.22-1.orig/plug-ins/bracketing_to_hdr/br_core/br_Image.cpp
++++ cinepaint-0.22-1/plug-ins/bracketing_to_hdr/br_core/br_Image.cpp
+@@ -26,6 +26,7 @@
+ */
+ #include <iostream>
+ #include <cmath> // pow()
++#include <cstring>
+
+ #include "br_types.hpp" // ImageID
+ #include "br_enums.hpp" // DataType, ReportWhat
+Index: cinepaint-0.22-1/plug-ins/icc_examin/icc_examin/icc_oyranos_extern.cpp
+===================================================================
+--- cinepaint-0.22-1.orig/plug-ins/icc_examin/icc_examin/icc_oyranos_extern.cpp
++++ cinepaint-0.22-1/plug-ins/icc_examin/icc_examin/icc_oyranos_extern.cpp
+@@ -29,6 +29,7 @@
+
+ #include "icc_utils.h"
+ #include "icc_fenster.h"
++#include <cstdlib>
+
+ using namespace icc_examin_ns;
+
+Index: cinepaint-0.22-1/plug-ins/icc_examin/icc_examin/icc_speicher.h
+===================================================================
+--- cinepaint-0.22-1.orig/plug-ins/icc_examin/icc_examin/icc_speicher.h
++++ cinepaint-0.22-1/plug-ins/icc_examin/icc_examin/icc_speicher.h
+@@ -33,6 +33,8 @@
+
+ #include "icc_utils.h"
+ #include <string>
++#include <cstdlib>
++#include <cstring>
+
+ #define DBG_SPEICHER_START if(icc_debug >= 3) DBG_PROG_START
+ #define DBG_SPEICHER_ENDE if(icc_debug >= 3) DBG_PROG_ENDE
+Index: cinepaint-0.22-1/plug-ins/icc_examin/icc_examin/threads.cpp
+===================================================================
+--- cinepaint-0.22-1.orig/plug-ins/icc_examin/icc_examin/threads.cpp
++++ cinepaint-0.22-1/plug-ins/icc_examin/icc_examin/threads.cpp
+@@ -42,6 +42,7 @@
+ #include <iostream>
+ # if HAVE_PTHREAD_H
+ // Use POSIX threading...
++#include <climits>
+
+ int fl_create_thread(Fl_Thread& t, void *(*f) (void *), void* p)
+ {
+Index: cinepaint-0.22-1/plug-ins/pdf/pdf.cpp
+===================================================================
+--- cinepaint-0.22-1.orig/plug-ins/pdf/pdf.cpp
++++ cinepaint-0.22-1/plug-ins/pdf/pdf.cpp
+@@ -39,6 +39,7 @@
+
+ #include "pdf.h"
+ #include "pdf_dialog.h"
++#include <cstring>
+
+ extern "C" {
+ #include <gtk/gtk.h>
diff --git a/extra/cinepaint/cinepaint-0.22.1-multiple_parameters_named.patch b/extra/cinepaint/cinepaint-0.22.1-multiple_parameters_named.patch
new file mode 100644
index 000000000..e030593c2
--- /dev/null
+++ b/extra/cinepaint/cinepaint-0.22.1-multiple_parameters_named.patch
@@ -0,0 +1,42 @@
+--- ./plug-ins/icc_examin/icc_examin/icc_oyranos.h.orig 2008-06-27 19:28:52.000000000 +0200
++++ ./plug-ins/icc_examin/icc_examin/icc_oyranos.h 2008-06-27 19:31:34.000000000 +0200
+@@ -142,9 +142,6 @@
+
+ // colour transformations
+ ColourTransformKey erzeugeTrafo (
+- const char* eingangs_profil__geraet,
+- int byte,
+- int kanaele,
+ const char* ausgangs_profil__geraet,
+ int byte,
+ int kanaele,
+@@ -152,9 +149,6 @@
+ const char* cmm, // 4 bytes 'lcms' 'APPL'
+ int cmm_optionen); // BPC, precission
+ ColourTransformKey erzeugeTrafo (
+- const char* eingangs_profil__geraet,
+- int byte,
+- int kanaele,
+ const char* ausgangs_profil__geraet,
+ int byte,
+ int kanaele,
+@@ -163,9 +157,6 @@
+ int cmm_optionen,
+ std::list<const char*> &profile );
+ ColourTransformKey erzeugeTrafo (
+- const char* eingangs_profil__geraet,
+- int byte,
+- int kanaele,
+ const char* ausgangs_profil__geraet,
+ int byte,
+ int kanaele,
+@@ -181,9 +172,6 @@
+ std::string cmm;
+ private:
+ ColourTransformKey erzeugeSchluessel_ (
+- const char* eingangs_profil__geraet,
+- int byte,
+- int kanaele,
+ const char* ausgangs_profil__geraet,
+ int byte,
+ int kanaele,
diff --git a/extra/cinepaint/cinepaint.install b/extra/cinepaint/cinepaint.install
new file mode 100644
index 000000000..5e5cfef4d
--- /dev/null
+++ b/extra/cinepaint/cinepaint.install
@@ -0,0 +1,11 @@
+post_install() {
+ update-desktop-database -q
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ update-desktop-database -q
+}
diff --git a/extra/clamav/PKGBUILD b/extra/clamav/PKGBUILD
new file mode 100644
index 000000000..983458e51
--- /dev/null
+++ b/extra/clamav/PKGBUILD
@@ -0,0 +1,51 @@
+# $Id: PKGBUILD 109346 2011-02-08 18:56:38Z bisson $
+# Maintainer: Dale Blount <dale@archlinux.org>
+# Contributor: Gregor Ibic <gregor.ibic@intelicom.si>
+
+pkgname=clamav
+pkgver=0.97
+pkgrel=1
+pkgdesc='Anti-virus toolkit for Unix'
+arch=('i686' 'x86_64')
+depends=('bzip2' 'zlib' 'libtool')
+options=('!libtool')
+install="$pkgname.install"
+license=('GPL')
+backup=('etc/clamav/clamd.conf' 'etc/clamav/freshclam.conf' 'etc/conf.d/clamav')
+url='http://www.clamav.net/'
+source=("http://downloads.sourceforge.net/sourceforge/$pkgname/$pkgname-$pkgver.tar.gz"
+ 'clamav'
+ 'clamav.confd'
+ 'clamav.logrotate'
+ 'config.patch')
+
+sha1sums=('68f5a6736b3f67d608c4064ef839777877f09115'
+ '7f15f0b13a1c11235bc99ef0add01efd8a442f07'
+ 'cb116cdab49a810381a515cbcfb6a6c148547f07'
+ 'be3310d2b41a68ce06e33c84ab68ffe59fdce104'
+ '701a61571788d10ff7af01597785835c6bfea918')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ patch -p1 < ../config.patch
+ ./configure --prefix=/usr --sysconfdir=/etc/clamav \
+ --with-dbdir=/var/lib/clamav --disable-clamav
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make DESTDIR="$pkgdir" install
+
+ # make sure conf files get installed, cause make install
+ # doesn't do that if clamav is already installed upon building.
+ install -D -m644 etc/clamd.conf "$pkgdir/etc/clamav/clamd.conf"
+ install -D -m644 etc/freshclam.conf "$pkgdir/etc/clamav/freshclam.conf"
+
+ install -D -m644 ../clamav.logrotate "$pkgdir/etc/logrotate.d/clamav"
+ install -D -m644 ../clamav.confd "$pkgdir/etc/conf.d/clamav"
+ install -D -m755 ../clamav "$pkgdir/etc/rc.d/clamav"
+
+ # un-distribute databases to require freshclam
+ rm "$pkgdir"/var/lib/clamav/*.cvd
+}
diff --git a/extra/clamav/clamav b/extra/clamav/clamav
new file mode 100644
index 000000000..8e9c6afa9
--- /dev/null
+++ b/extra/clamav/clamav
@@ -0,0 +1,72 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+# source application-specific settings
+[ -f /etc/conf.d/clamav ] && . /etc/conf.d/clamav
+
+PID_FC=`pidof -o %PPID /usr/bin/freshclam`
+PID_CD=`pidof -o %PPID /usr/sbin/clamd`
+
+case "$1" in
+ start)
+ # if clamd isn't started first, notifyclamd fails at times
+ if [ "$START_CLAMD" == "yes" ]; then
+ stat_busy "Starting ClamD"
+ [ -z "$PID_CD" ] && /usr/sbin/clamd
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon clamav
+ stat_done
+ fi
+ fi
+
+ # give clamd enough time to start
+ sleep 1
+
+ if [ "$START_FRESHCLAM" == "yes" ]; then
+ stat_busy "Starting FreshClam"
+ [ -z "$PID_FC" ] && /usr/bin/freshclam -p /var/run/clamav/freshclam.pid -d $FRESHCLAM_OPTS
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon clamav
+ stat_done
+ fi
+ fi
+ ;;
+ stop)
+ if [ "$START_CLAMD" == "yes" ]; then
+ stat_busy "Stopping ClamD"
+ [ -n "$PID_CD" ] && kill $PID_CD &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon clamav
+ stat_done
+ fi
+ fi
+
+ if [ "$START_FRESHCLAM" == "yes" ]; then
+ stat_busy "Stopping FreshClam"
+ [ -n "$PID_FC" ] && kill $PID_FC &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon clamav
+ stat_done
+ fi
+ fi
+ ;;
+ restart)
+ $0 stop
+ # will not start if not fully stopped, so sleep
+ sleep 2
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
diff --git a/extra/clamav/clamav.confd b/extra/clamav/clamav.confd
new file mode 100644
index 000000000..9cd44d9f8
--- /dev/null
+++ b/extra/clamav/clamav.confd
@@ -0,0 +1,8 @@
+# clamav startup script config options
+
+# change these to "yes" to start
+START_FRESHCLAM="no"
+START_CLAMD="no"
+
+# Options to pass to freshclam (man freshclam for more info).
+FRESHCLAM_OPTS="-c 12"
diff --git a/extra/clamav/clamav.install b/extra/clamav/clamav.install
new file mode 100644
index 000000000..9116dc394
--- /dev/null
+++ b/extra/clamav/clamav.install
@@ -0,0 +1,14 @@
+post_install() {
+ getent group clamav &>/dev/null || groupadd -r -g 64 clamav >/dev/null
+ getent passwd clamav &>/dev/null || useradd -r -u 64 -g clamav -d /dev/null -s /bin/false -c "Clam AntiVirus" clamav >/dev/null
+
+ install -d /var/{log,run}/clamav
+ chown clamav:root /var/{log,run}/clamav
+ chown -R clamav:clamav /var/lib/clamav
+}
+
+post_remove() {
+ getent passwd clamav &>/dev/null && userdel clamav >/dev/null
+ getent group clamav &>/dev/null && groupdel clamav >/dev/null
+ return 0
+}
diff --git a/extra/clamav/clamav.logrotate b/extra/clamav/clamav.logrotate
new file mode 100644
index 000000000..d1dc94dce
--- /dev/null
+++ b/extra/clamav/clamav.logrotate
@@ -0,0 +1,8 @@
+/var/log/clamav/clamd.log /var/log/clamav/freshclam.log {
+ create 644 clamav clamav
+ sharedscripts
+ postrotate
+ /bin/kill -HUP `cat /var/run/clamav/clamd.pid 2>/dev/null` 2> /dev/null || true
+ /bin/kill -HUP `cat /var/run/clamav/freshclam.pid 2>/dev/null` 2> /dev/null || true
+ endscript
+}
diff --git a/extra/clamav/config.patch b/extra/clamav/config.patch
new file mode 100644
index 000000000..a0105bd48
--- /dev/null
+++ b/extra/clamav/config.patch
@@ -0,0 +1,30 @@
+diff -arU 0 old/etc/clamd.conf new/etc/clamd.conf
+--- old/etc/clamd.conf 2010-12-02 19:31:21.773357389 +0100
++++ new/etc/clamd.conf 2010-12-02 19:31:45.873357389 +0100
+@@ -14 +14 @@
+-#LogFile /tmp/clamd.log
++LogFile /var/log/clamav/clamd.log
+@@ -34 +34 @@
+-#LogTime yes
++LogTime yes
+@@ -61 +61 @@
+-#PidFile /var/run/clamd.pid
++PidFile /var/run/clamav/clamd.pid
+@@ -65 +65 @@
+-#TemporaryDirectory /var/tmp
++TemporaryDirectory /tmp
+@@ -80 +80 @@
+-#LocalSocket /tmp/clamd.socket
++LocalSocket /var/lib/clamav/clamd.sock
+@@ -190 +190 @@
+-#User clamav
++User clamav
+diff -arU 0 old/etc/freshclam.conf new/etc/freshclam.conf
+--- old/etc/freshclam.conf 2010-12-02 19:31:21.773357389 +0100
++++ new/etc/freshclam.conf 2010-12-02 19:31:51.190024057 +0100
+@@ -17 +17 @@
+-#UpdateLogFile /var/log/freshclam.log
++UpdateLogFile /var/log/clamav/freshclam.log
+@@ -121 +121 @@
+-#NotifyClamd /path/to/clamd.conf
++NotifyClamd /etc/clamav/clamd.conf
diff --git a/extra/claws-mail-extra-plugins/PKGBUILD b/extra/claws-mail-extra-plugins/PKGBUILD
new file mode 100644
index 000000000..97451d37b
--- /dev/null
+++ b/extra/claws-mail-extra-plugins/PKGBUILD
@@ -0,0 +1,67 @@
+# $Id: PKGBUILD 112792 2011-03-06 22:47:24Z heftig $
+# Maintainer: Andreas Radke <andyrtr@archlinux.org>
+# Contributor: Mildred <mildred593 at online dot fr>
+
+pkgname=claws-mail-extra-plugins
+pkgver=3.7.8
+pkgrel=2
+pkgdesc="Extra plugins for claws-mail"
+url="http://www.claws-mail.org/plugins.php?branch=EXT"
+license=('GPL3')
+arch=('i686' 'x86_64')
+depends=('claws-mail>=3.7.8')
+makedepends=('make' 'bc' 'perl>=5.10.1-5' 'libgtkhtml>=2.11.1-2' 'libnotify>=0.7'
+ 'libxml2>=2.7.6' 'curl>=7.19.7' 'libytnef>=1.5-2' 'libwebkit>=1.1.15.4-2'
+ 'pygtk>=2.16.0' 'libsoup-gnome' 'libcanberra')
+optdepends=('libgtkhtml: for gtkhtml2_viewer plugin'
+ 'perl: for perl plugin'
+ 'libnotify: for notification plugin'
+ 'libcanberra: for notification plugin'
+ 'dbus-core: for notification plugin'
+ 'libxml2: for gtkhtml2_viewer and rssyl plugins'
+ 'curl: for gtkhtml2_viewer, vcalendar, rssyl and spamreport plugins'
+ 'libarchive: for archive plugin'
+ 'libytnef: for tnef_parse plugin'
+ 'libwebkit: for the fancy webkit html plugin'
+ 'libsoup-gnome: for the fancy webkit html plugin'
+ 'python2: for python plugin')
+conflicts=('claws-gtkhtml2_viewer' 'claws-mail-acpinotifier-plugin'
+ 'sylpheed-claws-gtkhtml2-plugin' 'sylpheed-claws-rssyl-plugin'
+ 'sylpheed-claws-extra-plugins' 'claws-tnef-plugin'
+ 'claws-webkit-plugin-svn' 'claws-mayflower-plugin-svn')
+replaces=('sylpheed-claws-extra-plugins')
+options=('!libtool')
+source=(http://downloads.sourceforge.net/project/sylpheed-claws/extra%20plugins/$pkgver/claws-mail-extra-plugins-$pkgver.tar.bz2
+ claws-mail-notification-0.26-libnotify-0.7.patch)
+md5sums=('8a67a00598262f8ca07a4af5cd43361d'
+ 'b76e1cdbff7af46d6594c34646c06fd0')
+
+build() {
+ cd "$srcdir/claws-mail-extra-plugins-$pkgver"
+
+ # fix for python2
+ export PYTHON="/usr/bin/python2"
+
+ for dir in */; do
+ [[ $dir != geolocation_plugin-* ]] && (
+ cd $dir
+
+ [[ $dir == notification_plugin-* ]] &&
+ patch -Np0 -i "$srcdir/claws-mail-notification-0.26-libnotify-0.7.patch"
+
+ ./configure --prefix=/usr --disable-static
+ make
+ )
+ done
+}
+
+package() {
+ cd "$srcdir/claws-mail-extra-plugins-$pkgver"
+ for dir in */; do
+ [[ $dir != geolocation_plugin-* ]] &&
+ make -C $dir DESTDIR="$pkgdir" install
+ done
+
+ # fix fileconflict with libical, #11485
+ rm -f "$pkgdir/usr/include/ical.h"
+}
diff --git a/extra/claws-mail-extra-plugins/claws-mail-notification-0.26-libnotify-0.7.patch b/extra/claws-mail-extra-plugins/claws-mail-notification-0.26-libnotify-0.7.patch
new file mode 100644
index 000000000..6159d139c
--- /dev/null
+++ b/extra/claws-mail-extra-plugins/claws-mail-notification-0.26-libnotify-0.7.patch
@@ -0,0 +1,50 @@
+--- src/notification_popup.c
++++ src/notification_popup.c
+@@ -339,7 +339,16 @@
+ break;
+ }
+
++#ifdef NOTIFY_CHECK_VERSION
++#if NOTIFY_CHECK_VERSION (0, 7, 0)
++ ppopup->notification = notify_notification_new(summary, utf8_str, NULL);
++#else
+ ppopup->notification = notify_notification_new(summary, utf8_str, NULL, NULL);
++#endif
++#else
++ ppopup->notification = notify_notification_new(summary, utf8_str, NULL, NULL);
++#endif
++
+ g_free(utf8_str);
+ if(ppopup->notification == NULL) {
+ debug_print("Notification Plugin: Failed to create a new "
+--- src/notification_trayicon.c
++++ src/notification_trayicon.c
+@@ -61,6 +61,10 @@
+ #ifdef HAVE_LIBNOTIFY
+ #include <libnotify/notify.h>
+
++#ifndef NOTIFY_CHECK_VERSION
++#define NOTIFY_CHECK_VERSION(x,y,z) 0
++#endif
++
+ typedef struct {
+ gint count;
+ gint num_mail;
+@@ -601,8 +605,17 @@
+ summary = notification_trayicon_popup_assemble_summary();
+ utf8_str = notification_trayicon_popup_assemble_body(msginfo);
+
++#if NOTIFY_CHECK_VERSION (0, 7, 0)
++ popup.notification = notify_notification_new(summary, utf8_str, NULL);
++#else
+ popup.notification = notify_notification_new(summary, utf8_str, NULL, NULL);
++#endif
++
++#if NOTIFY_CHECK_VERSION (0, 7, 0)
++ /* notify_notification_attach_to_status_icon function was removed */
++#else
+ notify_notification_attach_to_status_icon(popup.notification, trayicon);
++#endif
+
+ g_free(summary);
+ g_free(utf8_str);
diff --git a/extra/claws-mail/PKGBUILD b/extra/claws-mail/PKGBUILD
new file mode 100644
index 000000000..9771cb21d
--- /dev/null
+++ b/extra/claws-mail/PKGBUILD
@@ -0,0 +1,55 @@
+# $Id: PKGBUILD 102090 2010-12-05 20:57:04Z andyrtr $
+# Maintainer: Andreas Radke <andyrtr@archlinux.org>
+
+pkgname=claws-mail
+pkgver=3.7.8
+pkgrel=1
+pkgdesc="A GTK+ based e-mail client."
+arch=('i686' 'x86_64')
+license=('GPL3')
+url="http://www.claws-mail.org"
+depends=('gtk2>=2.18.5' 'gnutls>=2.8.5' 'startup-notification>=0.10' 'pilot-link>=0.12.4' 'enchant>=1.5.0-2'
+ 'gpgme>=1.2.0' 'libetpan>=1.0' 'libsm>=1.1.1' 'db' 'dbus-glib>=0.82-2' 'hicolor-icon-theme')
+makedepends=('compface' 'spamassassin' 'bogofilter' 'valgrind')
+optdepends=('python2: needed for some tools'
+ 'perl: needed for some tools'
+ 'spamassassin: adds support for spamfiltering'
+ 'bogofilter: adds support for spamfiltering'
+ 'html2ps: AUR pkg - adds support for printing html mails together with html plugins')
+replaces=('sylpheed-claws')
+provides=('claws')
+options=(!libtool)
+install=claws-mail.install
+source=(http://downloads.sourceforge.net/sourceforge/sylpheed-claws/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('e8c516f67df195ee605ed5e5408b2a42')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ sed -i 's@^#!.*python.*@#!/usr/bin/python2@' tools/*.py
+ ./configure --prefix=/usr --disable-static \
+ --enable-enchant \
+ --enable-gnutls \
+ --enable-ldap \
+ --disable-dillo-viewer-plugin \
+ --enable-crash-dialog \
+ --enable-pgpmime-plugin \
+ --enable-spamassassin-plugin \
+ --enable-bogofilter-plugin \
+ --enable-jpilot
+
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+
+ # build and install extra tools
+ cd tools
+ make
+ # all executables and .conf files ; only top directory
+ find -maxdepth 1 -type f -and -perm /111 -or -name '*.conf' | while read i ; do
+ install -D -m755 ${i} \
+ ${pkgdir}/usr/lib/claws-mail/tools/${i}
+ done
+}
diff --git a/extra/claws-mail/claws-mail.install b/extra/claws-mail/claws-mail.install
new file mode 100644
index 000000000..5f3cb0109
--- /dev/null
+++ b/extra/claws-mail/claws-mail.install
@@ -0,0 +1,12 @@
+post_install() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
+
diff --git a/extra/clisp/PKGBUILD b/extra/clisp/PKGBUILD
new file mode 100644
index 000000000..a6451270c
--- /dev/null
+++ b/extra/clisp/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 90068 2010-09-07 13:27:59Z juergen $
+# Maintainer: Juergen Hoetzel <juergen@archlinux.org>
+pkgname=clisp
+pkgver=2.49
+pkgrel=1
+pkgdesc="ANSI Common Lisp interpreter, compiler and debugger"
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://clisp.cons.org/"
+depends=('readline' 'libsigsegv')
+provides=('common-lisp')
+makedepends=('ffcall')
+options=('!makeflags')
+source=(http://downloads.sourceforge.net/sourceforge/clisp/clisp-${pkgver}.tar.bz2)
+md5sums=('1962b99d5e530390ec3829236d168649')
+
+build() {
+ cd $srcdir/${pkgname}-${pkgver}
+ unset CFLAGS CXXFLAGS
+ ./configure --prefix=/usr --with-readline --with-ffcall src
+ cd src
+ ./makemake --prefix=/usr --with-readline --with-ffcall --with-dynamic-ffi > Makefile
+ make || return 1
+ sed -i 's,http://www.lisp.org/HyperSpec/,http://www.lispworks.com/reference/HyperSpec/,g' config.lisp
+ make || return 1
+ make DESTDIR=$pkgdir install || return 1
+}
diff --git a/extra/cln/PKGBUILD b/extra/cln/PKGBUILD
new file mode 100644
index 000000000..2fb8e57f5
--- /dev/null
+++ b/extra/cln/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 108622 2011-02-02 01:45:45Z eric $
+# Maintainer: Eric Bélanger <eric@archlinux.org>
+
+pkgname=cln
+pkgver=1.3.1
+pkgrel=1
+pkgdesc="Class library for numbers"
+arch=('i686' 'x86_64')
+url="http://www.ginac.de/CLN/"
+license=('GPL')
+depends=('gmp')
+makedepends=('texlive-core')
+options=('!libtool')
+install=cln.install
+source=(ftp://ftpthep.physik.uni-mainz.de/pub/gnu/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('ede584cb1cafa66d56f42a3cf420469d')
+sha1sums=('351506da9bd7b0b3cefd3a5424823797fb589acc')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make all html pdf
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install install-html install-pdf
+}
diff --git a/extra/cln/cln.install b/extra/cln/cln.install
new file mode 100644
index 000000000..7706dea0c
--- /dev/null
+++ b/extra/cln/cln.install
@@ -0,0 +1,20 @@
+infodir=/usr/share/info
+filelist=(cln.info.gz)
+
+post_install() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info --delete $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
diff --git a/extra/clucene/PKGBUILD b/extra/clucene/PKGBUILD
new file mode 100644
index 000000000..825cbefa3
--- /dev/null
+++ b/extra/clucene/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 20266 2008-12-01 21:26:10Z tpowa $
+# Contributor: Alois Nespor <alois.nespor@gmail.com>
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=clucene
+pkgver=0.9.21b
+pkgrel=1
+pkgdesc="CLucene is a C++ port of Lucene: A high-performance, full-featured text search engine."
+arch=('i686' 'x86_64')
+url="http://clucene.sourceforge.net"
+license=('APACHE' 'LGPL')
+depends=('gcc-libs')
+makedepends=('libtool' 'autoconf' 'automake' 'doxygen')
+source=(http://downloads.sourceforge.net/$pkgname/$pkgname-core-$pkgver.tar.bz2)
+options=(!libtool)
+
+build() {
+ cd ${srcdir}/$pkgname-core-$pkgver
+ # fix for some packages
+ CXXFLAGS="$CXXFLAGS -fPIC"
+ ./configure --prefix=/usr
+ make || return 1
+ make DESTDIR=${pkgdir} install
+}
+md5sums=('ba1a8f764a2ca19c66ad907dddd88352')
diff --git a/extra/clutter-gtk/PKGBUILD b/extra/clutter-gtk/PKGBUILD
new file mode 100644
index 000000000..afb02ad17
--- /dev/null
+++ b/extra/clutter-gtk/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 92411 2010-09-29 20:04:35Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=clutter-gtk
+pkgver=0.10.8
+pkgrel=2
+pkgdesc="GTK clutter widget"
+arch=('i686' 'x86_64')
+url="http://clutter-project.org/"
+options=('!libtool')
+license=('LGPL')
+depends=('clutter>=1.4.0' 'gtk2>=2.22.0')
+makedepends=('gobject-introspection' 'gtk-doc')
+source=(http://www.clutter-project.org/sources/${pkgname}/0.10/${pkgname}-${pkgver}.tar.bz2
+ fix-gir.patch)
+sha256sums=('7867f951568871d9f68cbe8a3644fd53d2138f725b7ba61ffc0053eb64e80814'
+ 'a134d7154f71c995ae09cd606dcf811e1d317818c13a1167b3850c3104dadbd4')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i "${srcdir}/fix-gir.patch"
+ gtkdocize
+ autoreconf -vi
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/clutter-gtk/fix-gir.patch b/extra/clutter-gtk/fix-gir.patch
new file mode 100644
index 000000000..54935aea2
--- /dev/null
+++ b/extra/clutter-gtk/fix-gir.patch
@@ -0,0 +1,93 @@
+From 4de105a2bbd201c8e60f3e8777794a4cd532afdc Mon Sep 17 00:00:00 2001
+From: Emmanuele Bassi <ebassi@linux.intel.com>
+Date: Tue, 28 Sep 2010 13:52:25 +0000
+Subject: build: Add common CFLAGS to the introspection scanner
+
+---
+diff --git a/clutter-gtk/Makefile.am b/clutter-gtk/Makefile.am
+index 6e267b4..cec5cce 100644
+--- a/clutter-gtk/Makefile.am
++++ b/clutter-gtk/Makefile.am
+@@ -15,6 +15,8 @@ AM_CPPFLAGS = \
+ -DCLUTTER_DISABLE_DEPRECATED \
+ $(CLUTTER_GTK_DEBUG_CFLAGS)
+
++common_cflags = $(CLUTTER_CFLAGS) $(GTK_CFLAGS)
++
+ # please, keep these lists sorted alphabetically
+ sources_c = \
+ $(srcdir)/gtk-clutter-embed.c \
+@@ -36,7 +38,7 @@ lib_LTLIBRARIES = libclutter-gtk-@CLUTTER_GTK_API_VERSION@.la
+ libclutter_gtk_@CLUTTER_GTK_API_VERSION@_la_SOURCES = $(sources_c)
+ libclutter_gtk_@CLUTTER_GTK_API_VERSION@_la_LIBADD = $(CLUTTER_LIBS) $(GTK_LIBS)
+ libclutter_gtk_@CLUTTER_GTK_API_VERSION@_la_LDFLAGS = $(CLUTTER_LT_LDFLAGS)
+-libclutter_gtk_@CLUTTER_GTK_API_VERSION@_la_CFLAGS = $(MAINTAINER_CFLAGS) $(GTK_CFLAGS) $(CLUTTER_CFLAGS)
++libclutter_gtk_@CLUTTER_GTK_API_VERSION@_la_CFLAGS = $(common_cflags) $(MAINTAINER_CFLAGS)
+
+ cluttergtkheadersdir = $(includedir)/clutter-1.0/clutter-gtk
+ cluttergtkheaders_HEADERS = $(sources_h) $(srcdir)/clutter-gtk.h
+@@ -48,7 +50,7 @@ GtkClutter-@CLUTTER_GTK_API_VERSION@.gir: $(INTROSPECTION_SCANNER) Makefile libc
+ $(AM_V_GEN)$(INTROSPECTION_SCANNER) -v \
+ --namespace GtkClutter --nsversion=@CLUTTER_GTK_API_VERSION@ \
+ --strip-prefix=GtkClutter \
+- $(INCLUDES) $(AM_CPPFLAGS) \
++ $(INCLUDES) $(AM_CPPFLAGS) $(common_cflags) \
+ --add-include-path=$(srcdir) --add-include=path=. \
+ --include=Clutter-1.0 \
+ --include=GdkPixbuf-2.0 \
+--
+cgit v0.8.3.1-30-gff3a
+From 0d77c7c965dcebcec0dae6b6244c3a057b398b59 Mon Sep 17 00:00:00 2001
+From: Emmanuele Bassi <ebassi@linux.intel.com>
+Date: Tue, 28 Sep 2010 13:58:17 +0000
+Subject: Add introspection annotations for gtk_clutter_init*
+
+---
+diff --git a/clutter-gtk/gtk-clutter-util.c b/clutter-gtk/gtk-clutter-util.c
+index 8cf4116..50bca6b 100644
+--- a/clutter-gtk/gtk-clutter-util.c
++++ b/clutter-gtk/gtk-clutter-util.c
+@@ -603,8 +603,9 @@ gtk_clutter_texture_set_from_icon_name (ClutterTexture *texture,
+
+ /**
+ * gtk_clutter_init:
+- * @argc: pointer to the arguments count, or %NULL
+- * @argv: pointer to the arguments vector, or %NULL
++ * @argc: (inout): pointer to the arguments count, or %NULL
++ * @argv: (array length=argc) (inout) (allow-none): pointer to the
++ * arguments vector, or %NULL
+ *
+ * This function should be called instead of clutter_init() and
+ * gtk_init().
+@@ -633,17 +634,18 @@ gtk_clutter_init (int *argc,
+
+ /**
+ * gtk_clutter_init_with_args:
+- * @argc: a pointer to the number of command line arguments.
+- * @argv: a pointer to the array of command line arguments.
+- * @parameter_string: a string which is displayed in
+- * the first line of <option>--help</option> output, after
+- * <literal><replaceable>programname</replaceable> [OPTION...]</literal>
+- * @entries: a %NULL-terminated array of #GOptionEntry<!-- -->s
+- * describing the options of your program
+- * @translation_domain: a translation domain to use for translating
+- * the <option>--help</option> output for the options in @entries
+- * with gettext(), or %NULL
+- * @error: a return location for errors
++ * @argc: (inout): a pointer to the number of command line arguments.
++ * @argv: (array length=argc) (inout) (allow-none): a pointer to the array
++ * of command line arguments.
++ * @parameter_string: (allow-none): a string which is displayed in
++ * the first line of <option>--help</option> output, after
++ * <literal><replaceable>programname</replaceable> [OPTION...]</literal>
++ * @entries: (allow-none): a %NULL-terminated array of #GOptionEntry<!-- -->s
++ * describing the options of your program, or %NULL
++ * @translation_domain: (allow-none): a translation domain to use for
++ * translating the <option>--help</option> output for the options
++ * in @entries with gettext(), or %NULL
++ * @error: (allow-none): a return location for errors, or %NULL
+ *
+ * This function should be called instead of clutter_init() and
+ * gtk_init_with_args().
+--
+cgit v0.8.3.1-30-gff3a
diff --git a/extra/clutter/PKGBUILD b/extra/clutter/PKGBUILD
new file mode 100644
index 000000000..0cbc434db
--- /dev/null
+++ b/extra/clutter/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 111588 2011-02-27 19:49:35Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Sergej Pupykin <pupykin.s+arch@gmail.com>
+# Contributor: William Rea <sillywilly@gmail.com>
+
+pkgname=clutter
+pkgver=1.6.6
+pkgrel=1
+pkgdesc="A GObject based library for creating fast, visually rich graphical user interfaces"
+arch=('i686' 'x86_64')
+url="http://clutter-project.org/"
+options=('!libtool')
+license=('LGPL')
+depends=('gdk-pixbuf2' 'json-glib' 'atk' 'pango' 'mesa' 'libxcomposite' 'libxi')
+makedepends=('gobject-introspection' 'gtk-doc')
+source=(http://www.clutter-project.org/sources/${pkgname}/${pkgver%.*}/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('8499fef3019c00bb06354ebe6d3277d26c84a8aa1d964b7edf6d327cd4d9d886')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --enable-introspection
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/cmake/PKGBUILD b/extra/cmake/PKGBUILD
new file mode 100644
index 000000000..b2124ff83
--- /dev/null
+++ b/extra/cmake/PKGBUILD
@@ -0,0 +1,42 @@
+# $Id: PKGBUILD 110150 2011-02-16 19:31:21Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Pierre Schmitz <pierre@archlinux.de>
+# Contributor: damir <damir@archlinux.org>
+# Contributor: Konstantinos Pachnis <kpachnis@mes-direct.com>
+
+pkgname=cmake
+pkgver=2.8.4
+pkgrel=1
+pkgdesc="A cross-platform open-source make system"
+arch=('i686' 'x86_64')
+license=('custom')
+url="http://www.cmake.org"
+depends=('expat' 'curl' 'gcc-libs' 'shared-mime-info')
+makedepends=('qt')
+optdepends=('qt: cmake-gui')
+install="${pkgname}.install"
+source=("http://www.cmake.org/files/v2.8/${pkgname}-${pkgver}.tar.gz")
+md5sums=('209b7d1d04b2e00986538d74ba764fcf')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ ./bootstrap --prefix=/usr \
+ --mandir=/share/man \
+ --docdir=/share/doc/cmake \
+ --system-libs \
+ --qt-gui \
+ --parallel=2
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+
+ vimpath="$pkgdir/usr/share/vim/vimfiles"
+ install -Dm644 Docs/cmake-indent.vim ${vimpath}/indent/cmake-indent.vim
+ install -Dm644 Docs/cmake-syntax.vim ${vimpath}/syntax/cmake-syntax.vim
+ install -Dm644 Docs/cmake-mode.el ${pkgdir}/usr/share/emacs/site-lisp/cmake-mode.el
+ install -Dm644 Copyright.txt ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+}
diff --git a/extra/cmake/cmake.install b/extra/cmake/cmake.install
new file mode 100644
index 000000000..7c8a8bd2b
--- /dev/null
+++ b/extra/cmake/cmake.install
@@ -0,0 +1,11 @@
+post_install() {
+ update-mime-database usr/share/mime &> /dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/extra/cmatrix/PKGBUILD b/extra/cmatrix/PKGBUILD
new file mode 100644
index 000000000..ad4ad301c
--- /dev/null
+++ b/extra/cmatrix/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 53887 2009-10-03 18:54:48Z eric $
+# Contributor: john
+
+pkgname=cmatrix
+pkgver=1.2a
+pkgrel=5
+pkgdesc="Let you see the matrix code in your console"
+arch=('i686' 'x86_64')
+url="http://www.asty.org/cmatrix/"
+license=('GPL')
+depends=('ncurses' 'fontconfig')
+install=$pkgname.install
+source=(http://www.asty.org/cmatrix/dist/$pkgname-$pkgver.tar.gz)
+md5sums=('ebfb5733104a258173a9ccf2669968a1')
+sha1sums=('ca078c10322a47e327f07a44c9a42b52eab5ad93')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ ./configure --prefix=/usr --mandir=/usr/share/man || return 1
+ make || return 1
+ make DESTDIR="$pkgdir" install || return 1
+
+ install -Dm644 mtx.pcf "$pkgdir/usr/share/fonts/misc/mtx.pcf" || return 1
+ install -Dm644 matrix.fnt "$pkgdir/usr/share/kbd/consolefonts/matrix.fnt" || return 1
+ install -m644 matrix.psf.gz "$pkgdir/usr/share/kbd/consolefonts" || return 1
+}
diff --git a/extra/cmatrix/cmatrix.install b/extra/cmatrix/cmatrix.install
new file mode 100644
index 000000000..c46fe4469
--- /dev/null
+++ b/extra/cmatrix/cmatrix.install
@@ -0,0 +1,3 @@
+post_install() {
+ fc-cache
+}
diff --git a/extra/cmt/PKGBUILD b/extra/cmt/PKGBUILD
new file mode 100644
index 000000000..764b691b5
--- /dev/null
+++ b/extra/cmt/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 49841 2009-08-16 18:10:08Z jgc $
+#Maintainer: Damir Perisa <damir.perisa@bluewin.ch>
+#Contributor: Robert Emil Berge <robert@rebi.no>
+
+pkgname=cmt
+pkgver=1.16
+pkgrel=2
+pkgdesc="CMT for LADSPA"
+arch=(i686 x86_64)
+license=('GPL')
+url="http://www.ladspa.org"
+depends=('ladspa' 'gcc-libs')
+groups=('ladspa-plugins')
+source=(http://www.ladspa.org/download/${pkgname}_src_${pkgver}.tgz)
+md5sums=('15a875e5aaf79c209c223babfb41cb1c')
+
+build() {
+ cd "${srcdir}/${pkgname}/src"
+ sed -e "/^CFLAGS/ s/-O3/${CFLAGS}/" \
+ -e 's|-Werror||g' \
+ -i makefile || return 1
+ make || return 1
+ install -m755 -d "${pkgdir}/usr/lib/ladspa"
+ install -m755 ../plugins/cmt.so "${pkgdir}/usr/lib/ladspa/" || return 1
+}
diff --git a/extra/cmus/PKGBUILD b/extra/cmus/PKGBUILD
new file mode 100644
index 000000000..b58abb66d
--- /dev/null
+++ b/extra/cmus/PKGBUILD
@@ -0,0 +1,42 @@
+# $Id: PKGBUILD 111610 2011-02-27 20:41:37Z eric $
+# Maintainer: Aaron Griffin <aaron@archlinux.org>
+# Contributor: dorphell <dorphell@archlinux.org>
+
+pkgname=cmus
+pkgver=2.3.4
+pkgrel=2
+pkgdesc="A very feature-rich ncurses-based music player"
+arch=('i686' 'x86_64')
+url="http://cmus.sourceforge.net/"
+license=('GPL')
+depends=('ncurses')
+makedepends=('libao' 'libmpcdec' 'ffmpeg' 'flac' 'libmad' 'faad2' 'libmodplug' 'libvorbis' 'libpulse' 'wavpack')
+optdepends=('alsa-lib: for ALSA output plugin support'
+ 'libao: for AO output plugin support'
+ 'libpulse: for PulseAudio output plugin support'
+ 'ffmpeg: for ffmpeg input plugin support'
+ 'libmodplug: for modplug input plugin support'
+ 'faad2: for input AAC plugin support'
+ 'libmad: for mp3 input plugin support'
+ 'libmpcdec: for musepack input plugin support'
+ 'wavpack: for wavpack input plugin support'
+ 'libvorbis: for vorbis input plugin support'
+ 'flac: for flac input plugin support')
+source=("http://downloads.sourceforge.net/$pkgname/$pkgname-v$pkgver.tar.bz2")
+md5sums=('10629719fd0bff2d3c322ac24834af35')
+sha1sums=('d980781c47937da6c3faf910043967e28b9450d6')
+
+build() {
+ cd "$srcdir/$pkgname-v$pkgver"
+ sed -i 's|ffmpeg/avcodec.h|libavcodec/avcodec.h|' configure ffmpeg.c
+ sed -i 's|ffmpeg/avformat.h|libavformat/avformat.h|' ffmpeg.c
+ sed -i 's|ffmpeg/avio.h|libavformat/avio.h|' ffmpeg.c
+ ./configure prefix=/usr CONFIG_ARTS=n
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-v$pkgver"
+ make DESTDIR="$pkgdir" install
+ install -D -m 644 contrib/_cmus "$pkgdir/usr/share/zsh/site-functions/_cmus"
+}
diff --git a/extra/compface/LICENSE b/extra/compface/LICENSE
new file mode 100644
index 000000000..4e8119b8f
--- /dev/null
+++ b/extra/compface/LICENSE
@@ -0,0 +1,94 @@
+Extracted from Debian GNU/Linux's package:
+
+[...]
+
+Compface - 48x48x1 image compression and decompression
+Copyright (c) James Ashton 1990.
+Written 89/11/11
+
+Feel free to distribute this source at will so long as the above
+message and this message are included in full.
+
+This copyright message dosn't specify whether modified version is allowed,
+but the following mail from the author does allow them:
+
+> From: James Ashton <James.Ashton@syseng.anu.edu.au>
+> Subject: Re: Bug#72019: compface not DFSG
+> Date: Wed, 20 Sep 2000 09:48:34 +1100 (EST)
+>
+> >On Tue, Sep 19, 2000 at 08:58:43AM -0400, Raul Miller wrote:
+> >> Package: compface
+> >> Version: 1989.11.11-17.1
+> >> Severity: important
+> >>
+> >> compface's copyright doesn't grant permission to
+> >> distribute modified versions
+> >
+> >The compface copyright says:
+> >
+> >Feel free to distribute this source at will so long as the above
+> >message and this message are included in full.
+> >
+> >
+> >Which could be interpretated as it is allowed to distribute modified
+> >versions of it. James Ashton is the original author, would you care to
+> >clairify the matter, mr Ashton?
+>
+> I don't mind modified versions being distributed. Please included the
+> original copyright notices as specified and also prominently note, if
+> it is a modified version, the nature and author(s) of the
+> modifications.
+> --
+> James Ashton VK1XJA System Administrator
+> http://wwwsyseng.anu.edu.au/~jaa Department of Systems Engineering
+> Voice +61 2 6279 8675 Research School of Information Sciences and Engineering
+> FAX +61 2 6279 8688 Australian National University
+> Email James.Ashton@anu.edu.au Canberra ACT 0200 Australia
+>
+
+Another peoblem with the copyright of this source code is that the
+copyright message in the source files and in the readme file is conflicting.
+The following mail from the author should clear that up:
+
+> From: James Ashton <James.Ashton@syseng.anu.edu.au>
+> Subject: Re: libcompface license (again)
+> Date: Thu, 22 Feb 2001 09:32:23 +1100 (EST)
+>
+> >Hi,
+> >I'm maintaining the debian pkg of your compface lib, and I've talket to you
+> >before about it's license. And now ouer legal people have found another
+> >problem. The sourcefiles contains a diffrent copyright notice than the
+> >redmefile. They say:
+> >
+
+/*
+ * Compface - 48x48x1 image compression and decompression
+ *
+ * Copyright (c) James Ashton - Sydney University - June 1990.
+ *
+ * Written 11th November 1989.
+ *
+ * Permission is given to distribute these sources, as long as the
+ * copyright messages are not removed, and no monies are exchanged.
+ *
+ * No responsibility is taken for any errors on inaccuracies inherent
+ * either to the comments or the code of this program, but if reported
+ * to me, then an attempt will be made to fix them.
+ */
+
+> >
+> >The problem is the last part "no monies are exchanged". As you probably=20
+> >know we do allow third party companies to produce debian CDs and sell them.
+> >So this statement would inmply that we can't have your libcompface in
+> debian
+> >at all.
+>
+> I'm happy to remove the phrase no monies are exchanged' from the
+> source and allow distribution as per the README file. Do you need more
+> from me than just this email?
+> --
+> James Ashton VK1XJA System Administrator
+> http://wwwsyseng.anu.edu.au/~jaa Department of Systems Engineering
+> Voice +61 2 6125 8675 Research School of Information Sciences and Engineering
+> FAX +61 2 6125 8660 Australian National University
+> Email James.Ashton@anu.edu.au Canberra ACT 0200 Australia
diff --git a/extra/compface/PKGBUILD b/extra/compface/PKGBUILD
new file mode 100644
index 000000000..dd108a6df
--- /dev/null
+++ b/extra/compface/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 32263 2009-03-29 22:19:00Z eric $
+# Maintainer: simo <simo@archlinux.org>
+# Contributor: Manolis Tzanidakis
+#
+
+pkgname=compface
+pkgver=1.5.2
+pkgrel=2
+pkgdesc="Utils & libs to convert from/to X-Face format."
+arch=(i686 x86_64)
+url="http://ftp.xemacs.org/pub/xemacs/aux/"
+license=('custom')
+depends=('glibc')
+source=($url/$pkgname-$pkgver.tar.gz LICENSE)
+md5sums=('62f4f79c0861ad292ba3cf77b4c48319' '27a0d5a4d695e68b4d3eebe17db77189')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ ./configure --prefix=/usr || return 1
+ make || return 1
+ make BINDIR=$pkgdir/usr/bin LIBDIR=$pkgdir/usr/lib MANDIR=$pkgdir/usr/share/man \
+ INCLUDEDIR=$pkgdir/usr/include install || return 1
+ install -D -m644 ../LICENSE $pkgdir/usr/share/licenses/$pkgname/LICENSE
+}
+# vim: ts=2 sw=2 et ft=sh
diff --git a/extra/compface/compface-1.4-errno.patch.bz2 b/extra/compface/compface-1.4-errno.patch.bz2
new file mode 100644
index 000000000..bfc47425d
--- /dev/null
+++ b/extra/compface/compface-1.4-errno.patch.bz2
Binary files differ
diff --git a/extra/conky/PKGBUILD b/extra/conky/PKGBUILD
new file mode 100644
index 000000000..b9468817f
--- /dev/null
+++ b/extra/conky/PKGBUILD
@@ -0,0 +1,43 @@
+# $Id: PKGBUILD 102220 2010-12-06 21:41:49Z bisson $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: James Rayner <james@archlinux.org>
+# Contributor: Partha Chowdhury <kira.laucas@gmail.com>
+
+pkgname=conky
+pkgver=1.8.1
+pkgrel=2
+pkgdesc='An advanced, highly configurable system monitor for X based on torsmo'
+arch=('i686' 'x86_64')
+url='http://conky.sourceforge.net/'
+license=('custom')
+replaces=('torsmo')
+depends=('alsa-lib' 'libxml2' 'curl' 'wireless_tools' 'libxft' 'glib2' 'libxdamage' 'imlib2')
+makedepends=('pkg-config')
+backup=('etc/conky/conky.conf' 'etc/conky/conky_no_x11.conf')
+source=("http://downloads.sourceforge.net/project/${pkgname}/${pkgname}/${pkgver}/${pkgname}-${pkgver}.tar.gz"
+ 'current-power.patch')
+
+sha1sums=('06bbe9b7eed8603fa7a971b27c5c61f38424ac6f'
+ '2eeef0cc5a0b612826b2a7f0b43b7a3b7e10bf0b')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ patch -p1 < ../current-power.patch # See FS#21984
+
+ ./configure \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --enable-wlan \
+ --enable-rss \
+ --enable-ibm \
+ --enable-imlib2 \
+ --disable-lua
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+ install -D -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+}
diff --git a/extra/conky/current-power.patch b/extra/conky/current-power.patch
new file mode 100644
index 000000000..1e7cf5a23
--- /dev/null
+++ b/extra/conky/current-power.patch
@@ -0,0 +1,12 @@
+diff -aur old/src/linux.c new/src/linux.c
+--- old/src/linux.c 2010-10-05 23:29:36.000000000 +0200
++++ new/src/linux.c 2010-12-06 22:18:59.346667183 +0100
+@@ -1671,6 +1671,8 @@
+ the tradition! */
+ else if (strncmp(buf, "POWER_SUPPLY_CURRENT_NOW=", 25) == 0)
+ sscanf(buf, "POWER_SUPPLY_CURRENT_NOW=%d", &present_rate);
++ else if (strncmp(buf, "POWER_SUPPLY_POWER_NOW=", 23) == 0)
++ sscanf(buf, "POWER_SUPPLY_POWER_NOW=%d", &present_rate);
+ else if (strncmp(buf, "POWER_SUPPLY_ENERGY_NOW=", 24) == 0)
+ sscanf(buf, "POWER_SUPPLY_ENERGY_NOW=%d", &remaining_capacity);
+ else if (strncmp(buf, "POWER_SUPPLY_ENERGY_FULL=", 25) == 0)
diff --git a/extra/consolekit/PKGBUILD b/extra/consolekit/PKGBUILD
new file mode 100644
index 000000000..79f9d831a
--- /dev/null
+++ b/extra/consolekit/PKGBUILD
@@ -0,0 +1,35 @@
+# $Id: PKGBUILD 108600 2011-02-01 20:16:14Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: onestep_ua <onestep@ukr.net>
+
+pkgname=consolekit
+pkgver=0.4.3
+pkgrel=2
+pkgdesc="A framework for defining and tracking users, login sessions, and seats"
+arch=('i686' 'x86_64')
+url="http://www.freedesktop.org/wiki/Software/ConsoleKit"
+license=('GPL')
+depends=('polkit>=0.99' 'zlib' 'libx11>=1.4.1' 'dbus-glib>=0.92')
+makedepends=('pkgconfig' 'xmlto' 'docbook-xsl')
+options=(!libtool)
+source=(http://www.freedesktop.org/software/ConsoleKit/dist/ConsoleKit-${pkgver}.tar.bz2
+ pam-foreground-compat.ck consolekit.logrotate)
+md5sums=('4c39c6eacc75334b890f21eead1d2945'
+ 'a8a4de71d9b0549b8143e5f6c2a36fc7'
+ '6fefa451d9fe2fc6d6269629d3529793')
+
+build() {
+ cd "${srcdir}/ConsoleKit-${pkgver}"
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --libexecdir=/usr/lib/ConsoleKit \
+ --enable-pam-module \
+ --enable-docbook-docs
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 "${srcdir}/pam-foreground-compat.ck" "${pkgdir}/usr/lib/ConsoleKit/run-session.d/"
+
+ # install the logrotate config
+ install -D -m644 ${srcdir}/consolekit.logrotate ${pkgdir}/etc/logrotate.d/consolekit
+}
diff --git a/extra/consolekit/consolekit.logrotate b/extra/consolekit/consolekit.logrotate
new file mode 100644
index 000000000..7c5346ef8
--- /dev/null
+++ b/extra/consolekit/consolekit.logrotate
@@ -0,0 +1,5 @@
+/var/log/ConsoleKit/history {
+ missingok
+ notifempty
+ delaycompress
+}
diff --git a/extra/consolekit/pam-foreground-compat.ck b/extra/consolekit/pam-foreground-compat.ck
new file mode 100644
index 000000000..7f6b122d5
--- /dev/null
+++ b/extra/consolekit/pam-foreground-compat.ck
@@ -0,0 +1,16 @@
+#!/bin/sh
+TAGDIR=/var/run/console
+
+[ -n "$CK_SESSION_USER_UID" ] || exit 1
+
+TAGFILE="$TAGDIR/`getent passwd $CK_SESSION_USER_UID | cut -f 1 -d:`"
+
+if [ "$1" = "session_added" ]; then
+ mkdir -p "$TAGDIR"
+ echo "$CK_SESSION_ID" >> "$TAGFILE"
+fi
+
+if [ "$1" = "session_removed" ] && [ -e "$TAGFILE" ]; then
+ sed -i "\%^$CK_SESSION_ID\$%d" "$TAGFILE"
+ [ -s "$TAGFILE" ] || rm -f "$TAGFILE"
+fi
diff --git a/extra/convmv/PKGBUILD b/extra/convmv/PKGBUILD
new file mode 100644
index 000000000..4601b7cf3
--- /dev/null
+++ b/extra/convmv/PKGBUILD
@@ -0,0 +1,20 @@
+# $Id: PKGBUILD 26708 2009-02-11 17:18:18Z tpowa $
+# Maintainer : Aaron Griffin <aaron@archlinux.org>
+
+pkgname=convmv
+pkgver=1.14
+pkgrel=1
+pkgdesc="Tool for converting encodings on filesystems"
+license=('GPL2')
+arch=(i686 x86_64)
+url="http://j3e.de/linux/convmv/"
+depends=('perl')
+source=(http://j3e.de/linux/convmv/$pkgname-$pkgver.tar.gz)
+
+build()
+{
+ cd $startdir/src/$pkgname-$pkgver
+ make
+ make PREFIX=$startdir/pkg/usr install || return 1
+}
+md5sums=('d41238051c13b2e6c0cc2310a8f69d68')
diff --git a/extra/cowsay/ChangeLog b/extra/cowsay/ChangeLog
new file mode 100644
index 000000000..ca646a273
--- /dev/null
+++ b/extra/cowsay/ChangeLog
@@ -0,0 +1,7 @@
+2008-12-08 Eric Belanger <eric@archlinux.org>
+
+ * cowsay 3.03-6
+ * Added license
+ * FHS man pages
+ * Added arch tag
+ * Added ChangeLog
diff --git a/extra/cowsay/PKGBUILD b/extra/cowsay/PKGBUILD
new file mode 100644
index 000000000..7f71b15e7
--- /dev/null
+++ b/extra/cowsay/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id: PKGBUILD 21051 2008-12-09 04:32:04Z eric $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+# Contributor: Sarah Hay <sarahhay@mb.sympatico.ca>
+
+pkgname=cowsay
+pkgver=3.03
+pkgrel=6
+pkgdesc="Add speaking and thinking cows (and a few other creatures) to anything"
+arch=('i686' 'x86_64')
+url="http://www.nog.net/~tony/warez/cowsay.shtml"
+license=('PerlArtistic' 'GPL')
+depends=('perl')
+source=(http://www.nog.net/~tony/warez/${pkgname}-${pkgver}.tar.gz cowsay.patch)
+md5sums=('b29169797359420dadb998079021a494' '7091f9a6d97006299a1f27a665b638b6')
+sha1sums=('cc65a9b13295c87df94a58caa8a9176ce5ec4a27' '0da25fd2f80de4d92096c5d1ece2c6dcc05bea75')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ patch -p1 < ../cowsay.patch
+ sed -i 's|/man/|/share/man/|' install.sh
+ echo "${pkgdir}/usr" | ./install.sh
+}
diff --git a/extra/cowsay/cowsay.patch b/extra/cowsay/cowsay.patch
new file mode 100644
index 000000000..299d52895
--- /dev/null
+++ b/extra/cowsay/cowsay.patch
@@ -0,0 +1,11 @@
+--- cowsay-3.03/install.sh 1999-11-01 21:19:21.000000000 +0100
++++ cowsay-3.03-new/install.sh 2003-08-15 17:14:23.000000000 +0200
+@@ -67,7 +67,7 @@
+ echo Okay, time to install this puppy.
+
+ echo s,%BANGPERL%,!$usethisperl,\; > install.pl
+-echo s,%PREFIX%,$PREFIX,\; >> install.pl
++echo s,%PREFIX%,/usr,\; >> install.pl
+ set -x
+ mkdir -p $PREFIX/bin || (mkdir $PREFIX; mkdir $PREFIX/bin)
+ $usethisperl -p install.pl cowsay > $PREFIX/bin/cowsay
diff --git a/extra/cpio/PKGBUILD b/extra/cpio/PKGBUILD
new file mode 100644
index 000000000..9f34c4500
--- /dev/null
+++ b/extra/cpio/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 76085 2010-04-07 18:00:10Z tpowa $
+# Maintainer: judd <jvinet@zeroflux.org>
+pkgname=cpio
+pkgver=2.11
+pkgrel=2
+pkgdesc="A tool to copy files into or out of a cpio or tar archive"
+arch=(i686 x86_64)
+license=('GPL')
+url="http://www.gnu.org/software/cpio"
+depends=('glibc')
+source=(ftp://ftp.gnu.org/gnu/cpio/cpio-${pkgver}.tar.gz)
+install=cpio.install
+md5sums=('1112bb6c45863468b5496ba128792f6c')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr --mandir=/usr/share/man
+ make || return 1
+ make DESTDIR=${pkgdir} install
+ rm -f ${pkgdir}/usr/bin/mt ${pkgdir}/pkg/usr/share/man/man1/mt.1
+ mv ${pkgdir}/usr/bin ${pkgdir}/bin
+ rm -rf ${pkgdir}/usr/libexec
+ # remove mt manpage it conflicts with mt-st from extra
+ rm $pkgdir/usr/share/man/man1/mt.1 || return 1
+ # remove infodir
+ rm $pkgdir/usr/share/info/dir
+}
diff --git a/extra/cpio/cpio-gcc43.patch b/extra/cpio/cpio-gcc43.patch
new file mode 100644
index 000000000..0057b8da4
--- /dev/null
+++ b/extra/cpio/cpio-gcc43.patch
@@ -0,0 +1,139 @@
+http://bugs.gentoo.org/198817
+
+from upstream gnulib for "extern inline" changes
+
+diff --git a/lib/argp-fmtstream.h b/lib/argp-fmtstream.h
+index 93fa651..50f1387 100644
+--- a/lib/argp-fmtstream.h
++++ b/lib/argp-fmtstream.h
+@@ -1,5 +1,5 @@
+ /* Word-wrapping and line-truncating streams.
+- Copyright (C) 1997, 2006 Free Software Foundation, Inc.
++ Copyright (C) 1997, 2006-2007 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Written by Miles Bader <miles@gnu.ai.mit.edu>.
+
+@@ -134,6 +134,7 @@ extern ssize_t argp_fmtstream_printf (argp_fmtstream_t __fs,
+ const char *__fmt, ...)
+ __attribute__ ((__format__ (printf, 2, 3)));
+
++#if _LIBC || !defined __OPTIMIZE__
+ extern int __argp_fmtstream_putc (argp_fmtstream_t __fs, int __ch);
+ extern int argp_fmtstream_putc (argp_fmtstream_t __fs, int __ch);
+
+@@ -144,6 +145,7 @@ extern size_t __argp_fmtstream_write (argp_fmtstream_t __fs,
+ const char *__str, size_t __len);
+ extern size_t argp_fmtstream_write (argp_fmtstream_t __fs,
+ const char *__str, size_t __len);
++#endif
+
+ /* Access macros for various bits of state. */
+ #define argp_fmtstream_lmargin(__fs) ((__fs)->lmargin)
+@@ -153,6 +155,7 @@ extern size_t argp_fmtstream_write (argp_fmtstream_t __fs,
+ #define __argp_fmtstream_rmargin argp_fmtstream_rmargin
+ #define __argp_fmtstream_wmargin argp_fmtstream_wmargin
+
++#if _LIBC || !defined __OPTIMIZE__
+ /* Set __FS's left margin to LMARGIN and return the old value. */
+ extern size_t argp_fmtstream_set_lmargin (argp_fmtstream_t __fs,
+ size_t __lmargin);
+@@ -174,6 +177,7 @@ extern size_t __argp_fmtstream_set_wmargin (argp_fmtstream_t __fs,
+ /* Return the column number of the current output point in __FS. */
+ extern size_t argp_fmtstream_point (argp_fmtstream_t __fs);
+ extern size_t __argp_fmtstream_point (argp_fmtstream_t __fs);
++#endif
+
+ /* Internal routines. */
+ extern void _argp_fmtstream_update (argp_fmtstream_t __fs);
+@@ -197,7 +201,28 @@ extern int __argp_fmtstream_ensure (argp_fmtstream_t __fs, size_t __amount);
+ #endif
+
+ #ifndef ARGP_FS_EI
+-#define ARGP_FS_EI extern inline
++# ifdef __GNUC__
++ /* GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99
++ inline semantics, unless -fgnu89-inline is used. It defines a macro
++ __GNUC_STDC_INLINE__ to indicate this situation or a macro
++ __GNUC_GNU_INLINE__ to indicate the opposite situation.
++ GCC 4.2 with -std=c99 or -std=gnu99 implements the GNU C inline
++ semantics but warns, unless -fgnu89-inline is used:
++ warning: C99 inline functions are not supported; using GNU89
++ warning: to disable this warning use -fgnu89-inline or the gnu_inline function attribute
++ It defines a macro __GNUC_GNU_INLINE__ to indicate this situation. */
++# if defined __GNUC_STDC_INLINE__
++# define ARGP_FS_EI inline
++# elif defined __GNUC_GNU_INLINE__
++# define ARGP_FS_EI extern inline __attribute__ ((__gnu_inline__))
++# else
++# define ARGP_FS_EI extern inline
++# endif
++# else
++ /* With other compilers, assume the ISO C99 meaning of 'inline', if
++ the compiler supports 'inline' at all. */
++# define ARGP_FS_EI inline
++# endif
+ #endif
+
+ ARGP_FS_EI size_t
+diff --git a/lib/argp.h b/lib/argp.h
+index fb11de6..aa76eb4 100644
+--- a/lib/argp.h
++++ b/lib/argp.h
+@@ -520,9 +520,11 @@ extern void __argp_state_help (const struct argp_state *__restrict __state,
+ FILE *__restrict __stream,
+ unsigned int __flags);
+
++#if _LIBC || !defined __USE_EXTERN_INLINES
+ /* Possibly output the standard usage message for ARGP to stderr and exit. */
+ extern void argp_usage (const struct argp_state *__state);
+ extern void __argp_usage (const struct argp_state *__state);
++#endif
+
+ /* If appropriate, print the printf string FMT and following args, preceded
+ by the program name and `:', to stderr, and followed by a `Try ... --help'
+@@ -551,6 +553,7 @@ extern void __argp_failure (const struct argp_state *__restrict __state,
+ const char *__restrict __fmt, ...)
+ __attribute__ ((__format__ (__printf__, 4, 5)));
+
++#if _LIBC || !defined __USE_EXTERN_INLINES
+ /* Returns true if the option OPT is a valid short option. */
+ extern int _option_is_short (const struct argp_option *__opt) __THROW;
+ extern int __option_is_short (const struct argp_option *__opt) __THROW;
+@@ -559,6 +562,7 @@ extern int __option_is_short (const struct argp_option *__opt) __THROW;
+ options array. */
+ extern int _option_is_end (const struct argp_option *__opt) __THROW;
+ extern int __option_is_end (const struct argp_option *__opt) __THROW;
++#endif
+
+ /* Return the input field for ARGP in the parser corresponding to STATE; used
+ by the help routines. */
+@@ -579,7 +583,28 @@ extern void *__argp_input (const struct argp *__restrict __argp,
+ # endif
+
+ # ifndef ARGP_EI
+-# define ARGP_EI extern __inline__
++# ifdef __GNUC__
++ /* GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99
++ inline semantics, unless -fgnu89-inline is used. It defines a macro
++ __GNUC_STDC_INLINE__ to indicate this situation or a macro
++ __GNUC_GNU_INLINE__ to indicate the opposite situation.
++ GCC 4.2 with -std=c99 or -std=gnu99 implements the GNU C inline
++ semantics but warns, unless -fgnu89-inline is used:
++ warning: C99 inline functions are not supported; using GNU89
++ warning: to disable this warning use -fgnu89-inline or the gnu_inline function attribute
++ It defines a macro __GNUC_GNU_INLINE__ to indicate this situation. */
++# if defined __GNUC_STDC_INLINE__
++# define ARGP_EI __inline__
++# elif defined __GNUC_GNU_INLINE__
++# define ARGP_EI extern __inline__ __attribute__ ((__gnu_inline__))
++# else
++# define ARGP_EI extern __inline__
++# endif
++# else
++ /* With other compilers, assume the ISO C99 meaning of 'inline', if
++ the compiler supports 'inline' at all. */
++# define ARGP_EI inline
++# endif
+ # endif
+
+ ARGP_EI void
diff --git a/extra/cpio/cpio.install b/extra/cpio/cpio.install
new file mode 100644
index 000000000..e5502ca96
--- /dev/null
+++ b/extra/cpio/cpio.install
@@ -0,0 +1,21 @@
+infodir=/usr/share/info
+filelist=(cpio.info)
+
+post_install() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ usr/bin/install-info $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ usr/bin/install-info --delete $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
+
diff --git a/extra/cpufrequtils/PKGBUILD b/extra/cpufrequtils/PKGBUILD
new file mode 100644
index 000000000..d5b92095b
--- /dev/null
+++ b/extra/cpufrequtils/PKGBUILD
@@ -0,0 +1,32 @@
+# $Id: PKGBUILD 85780 2010-07-19 14:39:52Z kevin $
+# Maintainer: kevin <kevin@archlinux.org>
+# Contributor: phrakture <aaronmgriffin+gmail+com>
+# Contributor: SpepS <dreamspepser at yahoo dot it>
+
+pkgname=cpufrequtils
+pkgver=008
+pkgrel=1
+pkgdesc="Userspace tools for the kernel cpufreq subsystem"
+arch=('i686' 'x86_64')
+url="http://www.kernel.org/pub/linux/utils/kernel/cpufreq/cpufrequtils.html"
+license=('GPL')
+depends=('sysfsutils')
+backup=('etc/conf.d/cpufreq')
+source=(http://www.kernel.org/pub/linux/utils/kernel/cpufreq/${pkgname}-${pkgver}.tar.bz2
+ cpufreq.rcd
+ cpufreq.confd)
+options=(!libtool)
+md5sums=('c59b71c044d463896f3247e8dd83dd7e'
+ '7f2b5085df44d2df3e7c2d0b9f6dab08'
+ 'baae1f2abffc6bef2bd32a8dd8263c09')
+
+build()
+{
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ make -j1 || return 1
+ make INSTALL="/bin/install -c" mandir=/usr/share/man DESTDIR="${pkgdir}" install || return 1
+
+ install -D -m755 ${srcdir}/cpufreq.rcd "${pkgdir}/etc/rc.d/cpufreq" || return 1
+ install -D -m644 ${srcdir}/cpufreq.confd "${pkgdir}/etc/conf.d/cpufreq" || return 1
+}
diff --git a/extra/cpufrequtils/cpufreq.confd b/extra/cpufrequtils/cpufreq.confd
new file mode 100644
index 000000000..218909748
--- /dev/null
+++ b/extra/cpufrequtils/cpufreq.confd
@@ -0,0 +1,14 @@
+#configuration for cpufreq control
+
+# valid governors:
+# ondemand, performance, powersave,
+# conservative, userspace
+#governor="ondemand"
+
+# limit frequency range (optional)
+# valid suffixes: Hz, kHz (default), MHz, GHz, THz
+#min_freq="2.25GHz"
+#max_freq="3GHz"
+
+# use freq to set up the exact cpu frequency using it with userspace governor
+#freq=
diff --git a/extra/cpufrequtils/cpufreq.rcd b/extra/cpufrequtils/cpufreq.rcd
new file mode 100644
index 000000000..9bc19b117
--- /dev/null
+++ b/extra/cpufrequtils/cpufreq.rcd
@@ -0,0 +1,60 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+# source application-specific settings
+[ -f /etc/conf.d/cpufreq ] && . /etc/conf.d/cpufreq
+
+case "$1" in
+ start)
+ stat_busy "Setting cpufreq governing rules"
+
+ params=""
+ if [ -n "$governor" ]; then
+ mod="cpufreq_$governor"
+ params="-g $governor"
+ grep -qw "$governor" /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_governors || modprobe -q $mod
+ if [ $? -eq 0 ]; then
+ if [ "$min_freq" != "" ]; then
+ params="$params -d $min_freq"
+ fi
+ if [ "$max_freq" != "" ]; then
+ params="$params -u $max_freq"
+ fi
+ else
+ stat_busy " Cannot load governor module '$governor'"
+ stat_fail
+ exit
+ fi
+ fi
+
+ if [ "$params" != "" ]; then
+ CPUS=$(sed -ne 's/^processor.* \([0-9]\+\)$/\1/p' /proc/cpuinfo)
+ stat_append ", cpu"
+ for cpu in $CPUS; do
+ stat_append " $cpu"
+ cpufreq-set -c $cpu $params
+ if [ "$freq" != "" ]; then
+ cpufreq-set -c $cpu -f $freq
+ fi
+ done
+ stat_done
+ else
+ stat_busy " Invalid configuration in /etc/conf.d/cpufreq"
+ stat_fail
+ fi
+ ;;
+ stop)
+ # nothing to do
+ ;;
+ restart)
+ $0 start
+ ;;
+ set)
+ # TODO: make callable... "cpufreq set 800MHz"
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
diff --git a/extra/crypto++/PKGBUILD b/extra/crypto++/PKGBUILD
new file mode 100644
index 000000000..855573288
--- /dev/null
+++ b/extra/crypto++/PKGBUILD
@@ -0,0 +1,35 @@
+# $Id: PKGBUILD 112753 2011-03-06 14:15:54Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Alexander Rødseth <rodseth@gmail.com>
+# Contributor: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Kritoke <kritoke@gamebox.net>
+# Contributor: jlvsimoes <jlvsimoes@oninet.pt>
+
+pkgname=crypto++
+pkgver=5.6.1
+_srcver=561
+pkgrel=2
+pkgdesc="A free C++ class library of cryptographic schemes."
+arch=('i686' 'x86_64')
+url="http://www.cryptopp.com/"
+license=('custom')
+depends=('gcc-libs')
+makedepends=('unzip')
+source=(http://www.cryptopp.com/cryptopp${_srcver}.zip
+ libcrypto++.pc)
+md5sums=('96cbeba0907562b077e26bcffb483828'
+ '2337c6edbc552d9142cae8e0854715e7')
+
+build() {
+ cd ${srcdir}
+ sed -i -e 's/^CXXFLAGS/#CXXFLAGS/' GNUmakefile
+ export CXXFLAGS="${CXXFLAGS} -DNDEBUG -fPIC"
+ make -f GNUmakefile
+ make libcryptopp.so
+ install -d ${pkgdir}/usr/{lib/pkgconfig,include/cryptopp}
+ install -m644 *.h ${pkgdir}/usr/include/cryptopp/
+ install -m644 libcryptopp.a ${pkgdir}/usr/lib/libcryptopp.a
+ install -m644 libcryptopp.so ${pkgdir}/usr/lib/libcryptopp.so
+ install -m644 ${srcdir}/libcrypto++.pc "${pkgdir}/usr/lib/pkgconfig/libcrypto++.pc"
+ install -D -m644 License.txt ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+}
diff --git a/extra/crypto++/libcrypto++.pc b/extra/crypto++/libcrypto++.pc
new file mode 100644
index 000000000..698d761a7
--- /dev/null
+++ b/extra/crypto++/libcrypto++.pc
@@ -0,0 +1,11 @@
+# Written by Alexander Rødseth <rodseth@gmail.com>
+
+prefix=/usr
+libdir=${prefix}/lib
+includedir=${prefix}/include
+
+Name: libcrypto++-5.6.1
+Description: Class library of cryptographic schemes
+Version: 5.6.1
+Libs: -L${libdir} -lcryptopp
+Cflags: -I${includedir}
diff --git a/extra/cscope/PKGBUILD b/extra/cscope/PKGBUILD
new file mode 100644
index 000000000..b480a8166
--- /dev/null
+++ b/extra/cscope/PKGBUILD
@@ -0,0 +1,32 @@
+# $Id: PKGBUILD 67119 2010-02-03 17:32:32Z andrea $
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+# Contributor: Jason Chu <jason@archlinux.org>
+
+pkgname=cscope
+pkgver=15.7a
+pkgrel=2
+pkgdesc="A developers tool for browsing program code"
+arch=('i686' 'x86_64')
+url="http://cscope.sourceforge.net/index.html"
+license=('BSD')
+depends=('ncurses' 'sh')
+source=(http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('da43987622ace8c36bbf14c15a350ec1')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ sed -i 's|/usr/local/lib/cs|/usr/lib/cs|' contrib/ocs || return 1
+
+ ./configure --prefix=/usr || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+
+ install -d "${pkgdir}/usr/lib/cs"
+
+ cd contrib/xcscope
+ install -Dm644 xcscope.el ${pkgdir}/usr/share/emacs/site-lisp/xcscope.el || return 1
+ install -m755 cscope-indexer $pkgdir/usr/bin || return 1
+
+ install -Dm644 ${srcdir}/${pkgname}-${pkgver}/COPYING \
+ "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+}
diff --git a/extra/ctags/PKGBUILD b/extra/ctags/PKGBUILD
new file mode 100644
index 000000000..be4e9e20d
--- /dev/null
+++ b/extra/ctags/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: PKGBUILD 101099 2010-11-27 21:03:01Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: John Proctor <jproctor@prium.net>
+
+pkgname=ctags
+pkgver=5.8
+pkgrel=2
+pkgdesc="Generates an index file of language objects found in source files"
+arch=('i686' 'x86_64')
+license=('GPL')
+depends=('glibc')
+url="http://ctags.sourceforge.net/"
+source=(http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.gz)
+md5sums=('c00f82ecdcc357434731913e5b48630d')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ ./configure --prefix=/usr \
+ --disable-external-sort
+ make || return 1
+ make prefix=${pkgdir}/usr install
+}
diff --git a/extra/cups-pdf/PKGBUILD b/extra/cups-pdf/PKGBUILD
new file mode 100644
index 000000000..c613ca4e3
--- /dev/null
+++ b/extra/cups-pdf/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id: PKGBUILD 30278 2009-03-18 07:31:03Z andyrtr $
+# Maintainer: Andreas Radke <andyrtr at archlinux.org>
+# Contributor: Thomas Baechler <thomas.baechler@rwth-aachen.de>
+
+pkgname=cups-pdf
+pkgver=2.5.0
+pkgrel=1
+pkgdesc="PDF printer for cups"
+arch=(i686 x86_64)
+depends=('cups' 'ghostscript')
+install=cups-pdf.install
+url="http://cip.physik.uni-wuerzburg.de/~vrbehr/cups-pdf"
+license=('GPL2')
+source=(http://cip.physik.uni-wuerzburg.de/~vrbehr/cups-pdf/src/cups-pdf_$pkgver.tar.gz)
+backup=(etc/cups/cups-pdf.conf)
+md5sums=('9194af099a8c0e9aa213505b29ec6818')
+
+build() {
+ # Build and install
+ cd $srcdir/$pkgname-$pkgver/src
+ [ -z "$CC" ] && CC=gcc
+ $CC $CFLAGS -Wall -o cups-pdf cups-pdf.c || return 1
+ install -D -m700 cups-pdf $pkgdir/usr/lib/cups/backend/cups-pdf || return 1
+
+ # Install Postscript Color printer
+ cd ../extra
+ install -D -m644 CUPS-PDF.ppd $pkgdir/usr/share/cups/model/CUPS-PDF.ppd || return 1
+
+ # Install config file
+ install -D -m644 cups-pdf.conf $startdir/pkg/etc/cups/cups-pdf.conf || return 1
+}
diff --git a/extra/cups-pdf/cups-pdf.install b/extra/cups-pdf/cups-pdf.install
new file mode 100644
index 000000000..0ef82189a
--- /dev/null
+++ b/extra/cups-pdf/cups-pdf.install
@@ -0,0 +1,20 @@
+post_install() {
+ cat << "EOF"
+-------------------------------------------------
+To use cups-pdf, restart cups and visit the cups
+web interface at http://localhost:631/
+
+You can now add a "Virtual Printer (PDF Printer)"
+and use the Postscript/Generic postscript color
+printer driver.
+
+Note that cups-pdf has a configuration
+file in /etc/cups. The default location for
+pdf output is /var/spool/cups-pdf/$username.
+-------------------------------------------------
+EOF
+}
+
+op=$1
+shift
+$op $*
diff --git a/extra/cups/PKGBUILD b/extra/cups/PKGBUILD
new file mode 100644
index 000000000..ebf7f6ca7
--- /dev/null
+++ b/extra/cups/PKGBUILD
@@ -0,0 +1,108 @@
+# $Id: PKGBUILD 105161 2011-01-07 06:36:34Z andyrtr $
+# Maintainer: Andreas Radke <andyrtr@archlinux.org>
+
+pkgbase="cups"
+pkgname=('libcups' 'cups')
+pkgver=1.4.6
+pkgrel=1
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://www.cups.org/"
+makedepends=('libtiff>=3.9.2-2' 'libpng>=1.4.0' 'acl' 'openslp' 'pam' 'xdg-utils' 'heimdal>=1.3.1' 'gnutls>=2.8.3' 'poppler>=0.12.3'
+ 'xinetd' 'gzip' 'autoconf' 'php' 'libusb-compat' 'dbus-core' 'avahi' 'hicolor-icon-theme')
+source=(ftp://ftp.easysw.com/pub/cups/${pkgver}/cups-${pkgver}-source.tar.bz2
+ cups-avahi.patch
+ cups cups.logrotate cups.pam)
+#options=('!emptydirs')
+md5sums=('de8fb5a29c36554925c0c6a6e2c0dae1'
+ '8ebd390197501ffd709f0ee546937fd5'
+ '5c85b7d8d2ddd02c2c64955cebbf55ea'
+ 'f861b18f4446c43918c8643dcbbd7f6d'
+ '96f82c38f3f540b53f3e5144900acf17')
+
+build() {
+ cd ${srcdir}/${pkgbase}-${pkgver}
+ # Avahi support in the dnssd backend. patch from Fedora
+ patch -Np1 -i ${srcdir}/cups-avahi.patch || return 1
+
+ # Rebuild configure script for --enable-avahi.
+ aclocal -I config-scripts
+ autoconf -I config-scripts
+
+ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \
+ --with-logdir=/var/log/cups -with-docdir=/usr/share/cups/doc \
+ --with-cups-user=daemon --with-cups-group=lp --enable-pam=yes \
+ --disable-ldap --libdir=/usr/lib --enable-raw-printing \
+ --enable-dbus --with-dbusdir=/etc/dbus-1 --enable-ssl=yes --enable-gnutls --disable-threads --enable-avahi\
+ --with-php=/usr/bin/php-cgi --with-pdftops=pdftops --with-optim="$CFLAGS"
+ make || return 1
+}
+
+package_libcups() {
+pkgdesc="The CUPS Printing System - client libraries and headers"
+depends=('gnutls>=2.8.3' 'libtiff>=3.9.2-2' 'libpng>=1.4.0' 'heimdal>=1.3.1' 'avahi')
+
+ cd ${srcdir}/${pkgbase}-${pkgver}
+ make BUILDROOT=${pkgdir} install-headers install-libs || return 1
+ # put this into the libs pkg to make other software find the libs(no pkg-config file included)
+ mkdir -p ${pkgdir}/usr/bin
+ install -m755 ${srcdir}/${pkgbase}-${pkgver}/cups-config ${pkgdir}/usr/bin/cups-config
+}
+
+package_cups() {
+pkgdesc="The CUPS Printing System - deamon package"
+install=cups.install
+backup=(etc/cups/cupsd.conf
+ etc/cups/mime.convs
+ etc/cups/mime.types
+ etc/cups/snmp.conf
+ etc/cups/printers.conf
+ etc/cups/classes.conf
+ etc/cups/client.conf
+ etc/cups/subscriptions.conf
+ etc/dbus-1/system.d/cups.conf
+ etc/logrotate.d/cups
+ etc/pam.d/cups
+ etc/xinetd.d/cups-lpd)
+depends=('acl' 'openslp' 'pam' "libcups>=${pkgver}" 'xdg-utils' 'poppler>=0.12.3' 'libusb-compat' 'dbus-core' 'hicolor-icon-theme')
+optdepends=('php: for included phpcups.so module')
+
+ cd ${srcdir}/${pkgbase}-${pkgver}
+ make BUILDROOT=${pkgdir} install-data install-exec || return 1
+
+ # this one we ship in the libcups pkg
+ rm -f ${pkgdir}/usr/bin/cups-config
+
+ # kill the sysv stuff
+ rm -rf ${pkgdir}/etc/rc*.d
+ rm -rf ${pkgdir}/etc/init.d
+ install -D -m755 ../cups ${pkgdir}/etc/rc.d/cups
+ install -D -m644 ../cups.logrotate ${pkgdir}/etc/logrotate.d/cups
+ install -D -m644 ../cups.pam ${pkgdir}/etc/pam.d/cups
+
+ # fix perms on /var/spool and /etc
+ chmod 755 ${pkgdir}/var/spool
+ chmod 755 ${pkgdir}/etc
+
+ # serial backend needs to run as root (http://bugs.archlinux.org/task/20396)
+ chmod 700 ${pkgdir}/usr/lib/cups/backend/serial
+
+ # install ssl directory where to store the certs, solves some samba issues
+ install -dm700 -g lp ${pkgdir}/etc/cups/ssl
+ install -dm511 -g lp ${pkgdir}/var/run/cups/certs
+
+ # install some more configuration files that will get filled by cupsd
+ touch ${pkgdir}/etc/cups/printers.conf
+ touch ${pkgdir}/etc/cups/classes.conf
+ touch ${pkgdir}/etc/cups/client.conf
+ echo "# see 'man client.conf'" >> ${pkgdir}/etc/cups/client.conf
+ echo "ServerName /var/run/cups/cups.sock # alternative: ServerName hostname-or-ip-address[:port] of a remote server" >> ${pkgdir}/etc/cups/client.conf
+ touch ${pkgdir}/etc/cups/subscriptions.conf
+ chgrp lp ${pkgdir}/etc/cups/{printers.conf,classes.conf,client.conf,subscriptions.conf}
+
+ # fix .desktop file
+ sed -i 's|^Exec=htmlview http://localhost:631/|Exec=xdg-open http://localhost:631/|g' ${pkgdir}/usr/share/applications/cups.desktop
+
+ # compress some driver files, adopted from Fedora
+ find ${pkgdir}/usr/share/cups/model -name "*.ppd" | xargs gzip -n9f
+}
diff --git a/extra/cups/cups b/extra/cups/cups
new file mode 100755
index 000000000..4afaf5a7c
--- /dev/null
+++ b/extra/cups/cups
@@ -0,0 +1,38 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+PID=`pidof -o %PPID /usr/sbin/cupsd`
+case "$1" in
+ start)
+ stat_busy "Starting CUPS Daemon"
+ [ -z "$PID" ] && /usr/sbin/cupsd
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ echo $(pidof -o %PPID -x /usr/sbin/cupsd) > /var/run/cups.pid
+ add_daemon cups
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping CUPS Daemon"
+ [ ! -z "$PID" ] && kill $PID &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm /var/run/cups.pid
+ rm_daemon cups
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
diff --git a/extra/cups/cups-avahi.patch b/extra/cups/cups-avahi.patch
new file mode 100644
index 000000000..cf1056a75
--- /dev/null
+++ b/extra/cups/cups-avahi.patch
@@ -0,0 +1,1089 @@
+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 @@
+ * exec_backend() - Execute the backend that corresponds to the
+ * resolved service name.
+ * get_device() - Create or update a device.
++* find_device()
+ * query_callback() - Process query data.
+ * sigterm_handler() - Handle termination signals...
+ * unquote() - Unquote a name string.
+@@ -33,7 +34,18 @@
+
+ #include "backend-private.h"
+ #include <cups/array.h>
+-#include <dns_sd.h>
++#ifdef HAVE_DNSSD
++# include <dns_sd.h>
++#endif /* HAVE_DNSSD */
++#ifdef HAVE_AVAHI
++# include <avahi-client/client.h>
++# include <avahi-client/lookup.h>
++# include <avahi-common/simple-watch.h>
++# include <avahi-common/domain.h>
++# include <avahi-common/error.h>
++# include <avahi-common/malloc.h>
++#define kDNSServiceMaxDomainName AVAHI_DOMAIN_NAME_MAX
++#endif /* HAVE_AVAHI */
+
+
+ /*
+@@ -52,7 +64,12 @@ typedef enum
+
+ typedef struct
+ {
++#ifdef HAVE_DNSSD
+ DNSServiceRef ref; /* Service reference for resolve */
++#endif /* HAVE_DNSSD */
++#ifdef HAVE_AVAHI
++ int resolved; /* Did we resolve the device? */
++#endif /* HAVE_AVAHI */
+ char *name, /* Service name */
+ *domain, /* Domain name */
+ *fullName, /* Full name */
+@@ -64,6 +81,20 @@ typedef struct
+ sent; /* Did we list the device? */
+ } cups_device_t;
+
++typedef struct
++{
++ char key[256];
++ char value[256];
++
++#ifdef HAVE_DNSSD
++ const uint8_t *data;
++ const uint8_t *datanext;
++ const uint8_t *dataend;
++#else /* HAVE_AVAHI */
++ AvahiStringList *txt;
++#endif /* HAVE_DNSSD */
++} cups_txt_records_t;
++
+
+ /*
+ * Local globals...
+@@ -77,6 +108,7 @@ static int job_canceled = 0;
+ * Local functions...
+ */
+
++#ifdef HAVE_DNSSD
+ static void browse_callback(DNSServiceRef sdRef,
+ DNSServiceFlags flags,
+ uint32_t interfaceIndex,
+@@ -92,12 +124,6 @@ static void browse_local_callback(DNSSe
+ const char *regtype,
+ const char *replyDomain,
+ void *context);
+-static int compare_devices(cups_device_t *a, cups_device_t *b);
+-static void exec_backend(char **argv);
+-static cups_device_t *get_device(cups_array_t *devices,
+- const char *serviceName,
+- const char *regtype,
+- const char *replyDomain);
+ static void query_callback(DNSServiceRef sdRef,
+ DNSServiceFlags flags,
+ uint32_t interfaceIndex,
+@@ -106,9 +132,111 @@ static void query_callback(DNSServiceRe
+ uint16_t rrclass, uint16_t rdlen,
+ const void *rdata, uint32_t ttl,
+ void *context);
++#endif /* HAVE_DNSSD */
++#ifdef HAVE_AVAHI
++static void avahi_client_callback (AvahiClient *client,
++ AvahiClientState state,
++ void *context);
++static void avahi_browse_callback (AvahiServiceBrowser *browser,
++ AvahiIfIndex interface,
++ AvahiProtocol protocol,
++ AvahiBrowserEvent event,
++ const char *serviceName,
++ const char *regtype,
++ const char *replyDomain,
++ AvahiLookupResultFlags flags,
++ void *context);
++#endif /* HAVE_AVAHI */
++
++static cups_device_t * find_device (cups_array_t *devices,
++ cups_txt_records_t *txt,
++ cups_device_t *dkey);
++static int compare_devices(cups_device_t *a, cups_device_t *b);
++static void exec_backend(char **argv);
++static cups_device_t *get_device(cups_array_t *devices,
++ const char *serviceName,
++ const char *regtype,
++ const char *replyDomain);
+ static void sigterm_handler(int sig);
+ static void unquote(char *dst, const char *src, size_t dstsize);
+
++#ifdef HAVE_AVAHI
++static AvahiSimplePoll *simple_poll = NULL;
++static int avahi_got_callback;
++#endif /* HAVE_AVAHI */
++
++
++/*
++ * cups_txt_records_t access functions
++ */
++static cups_txt_records_t *
++next_txt_record (cups_txt_records_t *txt)
++{
++#ifdef HAVE_DNSSD
++ txt->data = txt->datanext;
++#else /* HAVE_AVAHI */
++ txt->txt = avahi_string_list_get_next (txt->txt);
++ if (txt->txt == NULL)
++ return NULL;
++#endif /* HAVE_DNSSD */
++
++ return txt;
++}
++
++static int
++parse_txt_record_pair (cups_txt_records_t *txt)
++{
++#ifdef HAVE_DNSSD
++ uint8_t datalen;
++ uint8_t *data = txt->data;
++ char *ptr;
++
++ /*
++ * Read a key/value pair starting with an 8-bit length. Since the
++ * length is 8 bits and the size of the key/value buffers is 256, we
++ * don't need to check for overflow...
++ */
++
++ datalen = *data++;
++ if (!datalen || (data + datalen) >= txt->dataend)
++ return NULL;
++ txt->datanext = data + datalen;
++
++ for (ptr = txt->key; data < txt->datanext && *data != '='; data ++)
++ *ptr++ = *data;
++ *ptr = '\0';
++
++ if (data < txt->datanext && *data == '=')
++ {
++ data++;
++
++ if (data < datanext)
++ memcpy (txt->value, data, txt->datanext - data);
++ value[txt->datanext - data] = '\0';
++ }
++ else
++ return 1;
++#else /* HAVE_AVAHI */
++ char *key, *value;
++ size_t len;
++ avahi_string_list_get_pair (txt->txt, &key, &value, &len);
++ if (len > sizeof (txt->value) - 1)
++ len = sizeof (txt->value) - 1;
++
++ memcpy (txt->value, value, len);
++ txt->value[len] = '\0';
++ len = strlen (key);
++ if (len > sizeof (txt->key) - 1)
++ len = sizeof (txt->key) - 1;
++
++ memcpy (txt->key, key, len);
++ txt->key[len] = '\0';
++ avahi_free (key);
++ avahi_free (value);
++#endif /* HAVE_AVAHI */
++
++ return 0;
++}
+
+ /*
+ * 'main()' - Browse for printers.
+@@ -119,6 +247,13 @@ main(int argc, /* I - Number of comm
+ char *argv[]) /* I - Command-line arguments */
+ {
+ const char *name; /* Backend name */
++ cups_array_t *devices; /* Device array */
++ cups_device_t *device; /* Current device */
++ char uriName[1024]; /* Unquoted fullName for URI */
++#ifdef HAVE_DNSSD
++ int fd; /* Main file descriptor */
++ fd_set input; /* Input set for select() */
++ struct timeval timeout; /* Timeout for select() */
+ 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
+ pdl_datastream_ref, /* AppSocket service reference */
+ printer_ref, /* LPD service reference */
+ riousbprint_ref; /* Remote IO service reference */
+- int fd; /* Main file descriptor */
+- fd_set input; /* Input set for select() */
+- struct timeval timeout; /* Timeout for select() */
+- cups_array_t *devices; /* Device array */
+- cups_device_t *device; /* Current device */
+- char uriName[1024]; /* Unquoted fullName for URI */
++#endif /* HAVE_DNSSD */
++#ifdef HAVE_AVAHI
++ AvahiClient *client;
++ int error;
++#endif /* HAVE_AVAHI */
+ #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
+ * Browse for different kinds of printers...
+ */
+
++#ifdef HAVE_AVAHI
++ if ((simple_poll = avahi_simple_poll_new ()) == NULL)
++ {
++ perror ("ERROR: Unable to create avahi simple poll object");
++ return (1);
++ }
++
++ client = avahi_client_new (avahi_simple_poll_get (simple_poll),
++ 0, avahi_client_callback, NULL, &error);
++ if (!client)
++ {
++ perror ("ERROR: Unable to create avahi client");
++ return (1);
++ }
++
++ avahi_service_browser_new (client, AVAHI_IF_UNSPEC,
++ AVAHI_PROTO_UNSPEC,
++ "_fax-ipp._tcp", NULL, 0,
++ avahi_browse_callback, devices);
++ avahi_service_browser_new (client, AVAHI_IF_UNSPEC,
++ AVAHI_PROTO_UNSPEC,
++ "_ipp._tcp", NULL, 0,
++ avahi_browse_callback, devices);
++ avahi_service_browser_new (client, AVAHI_IF_UNSPEC,
++ AVAHI_PROTO_UNSPEC,
++ "_ipp-tls._tcp", NULL, 0,
++ avahi_browse_callback, devices);
++ avahi_service_browser_new (client, AVAHI_IF_UNSPEC,
++ AVAHI_PROTO_UNSPEC,
++ "_pdl-datastream._tcp",
++ NULL, 0,
++ avahi_browse_callback,
++ devices);
++ avahi_service_browser_new (client, AVAHI_IF_UNSPEC,
++ AVAHI_PROTO_UNSPEC,
++ "_printer._tcp", NULL, 0,
++ avahi_browse_callback, devices);
++ avahi_service_browser_new (client, AVAHI_IF_UNSPEC,
++ AVAHI_PROTO_UNSPEC,
++ "_riousbprint._tcp", NULL, 0,
++ avahi_browse_callback, devices);
++#endif /* HAVE_AVAHI */
++#ifdef HAVE_DNSSD
+ if (DNSServiceCreateConnection(&main_ref) != kDNSServiceErr_NoError)
+ {
+ perror("ERROR: Unable to create service connection");
+@@ -245,6 +422,7 @@ main(int argc, /* I - Number of comm
+ riousbprint_ref = main_ref;
+ DNSServiceBrowse(&riousbprint_ref, kDNSServiceFlagsShareConnection, 0,
+ "_riousbprint._tcp", NULL, browse_callback, devices);
++#endif /* HAVE_DNSSD */
+
+ /*
+ * Loop until we are killed...
+@@ -252,6 +430,9 @@ main(int argc, /* I - Number of comm
+
+ while (!job_canceled)
+ {
++ int announce = 0;
++
++#ifdef HAVE_DNSSD
+ FD_ZERO(&input);
+ FD_SET(fd, &input);
+
+@@ -271,11 +452,35 @@ main(int argc, /* I - Number of comm
+ }
+ else
+ {
++ announce = 1;
++ }
++#else /* HAVE_AVAHI */
++ int r;
++ avahi_got_callback = 0;
++ r = avahi_simple_poll_iterate (simple_poll, 1);
++ if (r != 0 && r != EINTR)
++ {
++ /*
++ * We've been told to exit the loop. Perhaps the connection to
++ * avahi failed.
++ */
++
++ break;
++ }
++
++ if (avahi_got_callback)
++ announce = 1;
++#endif /* HAVE_DNSSD */
++
++ if (announce)
++ {
+ /*
+ * Announce any devices we've found...
+ */
+
++#ifdef HAVE_DNSSD
+ DNSServiceErrorType status; /* DNS query status */
++#endif /* HAVE_DNSSD */
+ 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))
++#ifdef HAVE_DNSSD
+ if (!device->ref && !device->sent)
+ {
+ /*
+@@ -313,14 +519,23 @@ main(int argc, /* I - Number of comm
+ count ++;
+ }
+ }
+- else if (!device->sent)
++ else
++#endif /* HAVE_DNSSD */
++#ifdef HAVE_AVAHI
++ if (!device->resolved)
++ continue;
++ else
++#endif /* HAVE_AVAHI */
++ if (!device->sent)
+ {
++#ifdef HAVE_DNSSD
+ /*
+ * Got the TXT records, now report the device...
+ */
+
+ DNSServiceRefDeallocate(device->ref);
+ device->ref = 0;
++#endif /* HAVE_DNSSD */
+
+ 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);
+ }
++#endif /* HAVE_DNSSD */
+
+
+ /*
+ * 'browse_local_callback()' - Browse local devices.
+ */
+
++#ifdef HAVE_DNSSD
+ static void
+ browse_local_callback(
+ DNSServiceRef sdRef, /* I - Service reference */
+@@ -456,6 +674,7 @@ browse_local_callback(
+ device->fullName);
+ device->sent = 1;
+ }
++#endif /* HAVE_DNSSD */
+
+
+ /*
+@@ -528,6 +747,32 @@ exec_backend(char **argv) /* I - Comman
+ exit(CUPS_BACKEND_STOP);
+ }
+
++static int
++device_type (const char *regtype)
++{
++#ifdef HAVE_AVAHI
++ if (!strcmp(regtype, "_ipp._tcp") ||
++ !strcmp(regtype, "_ipp-tls._tcp"))
++ return (CUPS_DEVICE_IPP);
++ 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."))
++ return (CUPS_DEVICE_IPP);
++ else if (!strcmp(regtype, "_fax-ipp._tcp."))
++ return (CUPS_DEVICE_FAX_IPP);
++ else if (!strcmp(regtype, "_printer._tcp."))
++ return (CUPS_DEVICE_PRINTER);
++ else if (!strcmp(regtype, "_pdl-datastream._tcp."))
++ return (CUPS_DEVICE_PDL_DATASTREAM);
++#endif /* HAVE_AVAHI */
++
++ return (CUPS_DEVICE_RIOUSBPRINT);
++}
++
+
+ /*
+ * 'get_device()' - Create or update a device.
+@@ -550,18 +795,7 @@ get_device(cups_array_t *devices, /* I -
+ */
+
+ key.name = (char *)serviceName;
+-
+- if (!strcmp(regtype, "_ipp._tcp.") ||
+- !strcmp(regtype, "_ipp-tls._tcp."))
+- key.type = CUPS_DEVICE_IPP;
+- else if (!strcmp(regtype, "_fax-ipp._tcp."))
+- key.type = CUPS_DEVICE_FAX_IPP;
+- else if (!strcmp(regtype, "_printer._tcp."))
+- key.type = CUPS_DEVICE_PRINTER;
+- else if (!strcmp(regtype, "_pdl-datastream._tcp."))
+- key.type = CUPS_DEVICE_PDL_DATASTREAM;
+- else
+- key.type = CUPS_DEVICE_RIOUSBPRINT;
++ key.type = device_type (regtype);
+
+ for (device = cupsArrayFind(devices, &key);
+ device;
+@@ -581,8 +815,14 @@ get_device(cups_array_t *devices, /* I -
+ free(device->domain);
+ device->domain = strdup(replyDomain);
+
++#ifdef HAVE_DNSSD
+ DNSServiceConstructFullName(fullName, device->name, regtype,
+ replyDomain);
++#else /* HAVE_AVAHI */
++ avahi_service_name_join (fullName, kDNSServiceMaxDomainName,
++ serviceName, regtype, replyDomain);
++#endif /* HAVE_DNSSD */
++
+ free(device->fullName);
+ device->fullName = strdup(fullName);
+ }
+@@ -602,6 +842,9 @@ get_device(cups_array_t *devices, /* I -
+ device->domain = strdup(replyDomain);
+ device->type = key.type;
+ device->priority = 50;
++#ifdef HAVE_AVAHI
++ device->resolved = 0;
++#endif /* HAVE_AVAHI */
+
+ cupsArrayAdd(devices, device);
+
+@@ -609,7 +852,13 @@ get_device(cups_array_t *devices, /* I -
+ * Set the "full name" of this service, which is used for queries...
+ */
+
++#ifdef HAVE_DNSSD
+ DNSServiceConstructFullName(fullName, serviceName, regtype, replyDomain);
++#else /* HAVE_AVAHI */
++ avahi_service_name_join (fullName, kDNSServiceMaxDomainName,
++ serviceName, regtype, replyDomain);
++#endif /* HAVE_DNSSD */
++
+ 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(
+ *ptr; /* Pointer into string */
+ cups_device_t dkey, /* Search key */
+ *device; /* Device */
+-
++ cups_txt_records_t txt;
+
+ fprintf(stderr, "DEBUG2: query_callback(sdRef=%p, flags=%x, "
+ "interfaceIndex=%d, errorCode=%d, fullName=\"%s\", "
+@@ -673,84 +923,212 @@ query_callback(
+ if ((ptr = strstr(name, "._")) != NULL)
+ *ptr = '\0';
+
+- if (strstr(fullName, "_ipp._tcp.") ||
+- strstr(fullName, "_ipp-tls._tcp."))
+- dkey.type = CUPS_DEVICE_IPP;
+- else if (strstr(fullName, "_fax-ipp._tcp."))
+- dkey.type = CUPS_DEVICE_FAX_IPP;
+- else if (strstr(fullName, "_printer._tcp."))
+- dkey.type = CUPS_DEVICE_PRINTER;
+- else if (strstr(fullName, "_pdl-datastream._tcp."))
+- dkey.type = CUPS_DEVICE_PDL_DATASTREAM;
++ dkey.type = device_type (fullName);
++
++ txt.data = rdata;
++ txt.dataend = rdata + rdlen;
++ device = find_device ((cups_array_t *) context, &txt, &dkey);
++ if (!device)
++ fprintf(stderr, "DEBUG: Ignoring TXT record for \"%s\"...\n", fullName);
++}
++#endif /* HAVE_DNSSD */
++
++#ifdef HAVE_AVAHI
++static void
++avahi_client_callback(AvahiClient *client,
++ AvahiClientState state,
++ void *context)
++{
++ /*
++ * If the connection drops, quit.
++ */
++
++ if (state == AVAHI_CLIENT_FAILURE)
++ {
++ fprintf (stderr, "ERROR: Avahi connection failed\n");
++ avahi_simple_poll_quit (simple_poll);
++ }
++}
++
++static void
++avahi_query_callback(AvahiServiceResolver *resolver,
++ AvahiIfIndex interface,
++ AvahiProtocol protocol,
++ AvahiResolverEvent event,
++ const char *name,
++ const char *type,
++ const char *domain,
++ const char *host_name,
++ const AvahiAddress *address,
++ uint16_t port,
++ AvahiStringList *txt,
++ AvahiLookupResultFlags flags,
++ void *context)
++{
++ AvahiClient *client;
++ cups_device_t key,
++ *device;
++ char uqname[1024],
++ *ptr;
++ cups_txt_records_t txtr;
++
++ client = avahi_service_resolver_get_client (resolver);
++ if (event != AVAHI_RESOLVER_FOUND)
++ {
++ if (event == AVAHI_RESOLVER_FAILURE)
++ {
++ fprintf (stderr, "ERROR: %s\n",
++ avahi_strerror (avahi_client_errno (client)));
++ }
++
++ avahi_service_resolver_free (resolver);
++ return;
++ }
++
++ /*
++ * Set search key for device.
++ */
++
++ key.name = uqname;
++ unquote (uqname, name, sizeof (uqname));
++ if ((ptr = strstr(name, "._")) != NULL)
++ *ptr = '\0';
++
++ key.domain = (char *) domain;
++ key.type = device_type (type);
++
++ /*
++ * Find the device and the the TXT information.
++ */
++
++ txtr.txt = txt;
++ device = find_device ((cups_array_t *) context, &txtr, &key);
++ if (device)
++ {
++ /*
++ * Let the main loop know to announce the device.
++ */
++
++ device->resolved = 1;
++ avahi_got_callback = 1;
++ }
+ else
+- dkey.type = CUPS_DEVICE_RIOUSBPRINT;
++ fprintf (stderr, "DEBUG: Ignoring TXT record for \"%s\"...\n", name);
++
++ avahi_service_resolver_free (resolver);
++}
++
++static void
++avahi_browse_callback(AvahiServiceBrowser *browser,
++ AvahiIfIndex interface,
++ AvahiProtocol protocol,
++ AvahiBrowserEvent event,
++ const char *name,
++ const char *type,
++ const char *domain,
++ AvahiLookupResultFlags flags,
++ void *context)
++{
++ AvahiClient *client = avahi_service_browser_get_client (browser);
++
++ switch (event)
++ {
++ case AVAHI_BROWSER_FAILURE:
++ fprintf (stderr, "ERROR: %s\n",
++ avahi_strerror (avahi_client_errno (client)));
++ avahi_simple_poll_quit (simple_poll);
++ return;
++
++ case AVAHI_BROWSER_NEW:
++ /*
++ * This object is new on the network.
++ */
++
++ if (flags & AVAHI_LOOKUP_RESULT_LOCAL)
++ {
++ /*
++ * This comes from the local machine so ignore it.
++ */
++
++ fprintf (stderr, "DEBUG: ignoring local service %s\n", name);
++ }
++ else
++ {
++ /*
++ * Create a device entry for it if it doesn't yet exist.
++ */
++
++ get_device ((cups_array_t *)context, name, type, domain);
++
++ /*
++ * Now look for a TXT entry.
++ */
++
++ if (avahi_service_resolver_new (client, interface, protocol,
++ name, type, domain,
++ AVAHI_PROTO_UNSPEC, 0,
++ avahi_query_callback, context) == NULL)
++ {
++ fprintf (stderr, "ERROR: failed to resolve service %s: %s\n",
++ name, avahi_strerror (avahi_client_errno (client)));
++ }
++ }
++
++ 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 */
++
++static cups_device_t *
++find_device (cups_array_t *devices,
++ cups_txt_records_t *txt,
++ cups_device_t *dkey)
++{
++ cups_device_t *device;
++ char *ptr;
++
++ for (device = cupsArrayFind(devices, dkey);
+ 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))
+ {
+ device = NULL;
+ break;
+ }
+- else if (device->type == dkey.type)
++ else if (device->type == dkey->type)
+ {
+ /*
+ * Found it, pull out the priority and make and model from the TXT
+ * record and save it...
+ */
+
+- const uint8_t *data, /* Pointer into data */
+- *datanext, /* Next key/value pair */
+- *dataend; /* End of entire TXT record */
+- uint8_t datalen; /* Length of current key/value pair */
+- char key[256], /* Key string */
+- value[256], /* Value string */
+- make_and_model[512],
++ char make_and_model[512],
+ /* Manufacturer and model */
+ model[256], /* Model */
+- device_id[2048];/* 1284 device ID */
+-
++ device_id[2048]; /* 1284 device ID */
+
+ device_id[0] = '\0';
+ make_and_model[0] = '\0';
+
+ strcpy(model, "Unknown");
+
+- for (data = rdata, dataend = data + rdlen;
+- data < dataend;
+- data = datanext)
++ for (;;)
+ {
+- /*
+- * Read a key/value pair starting with an 8-bit length. Since the
+- * length is 8 bits and the size of the key/value buffers is 256, we
+- * don't need to check for overflow...
+- */
+-
+- datalen = *data++;
+-
+- if (!datalen || (data + datalen) >= dataend)
+- break;
+-
+- datanext = data + datalen;
++ char *key;
++ char *value;
+
+- for (ptr = key; data < datanext && *data != '='; data ++)
+- *ptr++ = *data;
+- *ptr = '\0';
+-
+- if (data < datanext && *data == '=')
+- {
+- data ++;
+-
+- if (data < datanext)
+- memcpy(value, data, datanext - data);
+- value[datanext - data] = '\0';
+- }
+- else
+- continue;
++ if (parse_txt_record_pair (txt))
++ goto next;
+
++ key = txt->key;
++ value = txt->value;
+ if (!strncasecmp(key, "usb_", 4))
+ {
+ /*
+@@ -805,6 +1183,10 @@ query_callback(
+ if (device->type == CUPS_DEVICE_PRINTER)
+ device->sent = 1;
+ }
++
++ next:
++ if (next_txt_record (txt) == NULL)
++ break;
+ }
+
+ if (device->device_id)
+@@ -854,11 +1236,9 @@ query_callback(
+ }
+ }
+
+- if (!device)
+- fprintf(stderr, "DEBUG: Ignoring TXT record for \"%s\"...\n", fullName);
++ return device;
+ }
+
+-
+ /*
+ * '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
+ DNSSDLIBS=""
+ DNSSD_BACKEND=""
+
++AC_ARG_ENABLE(avahi, [ --enable-avahi turn on DNS Service Discovery support, default=no],
++ [if test x$enable_avahi = xyes; then
++ AC_MSG_CHECKING(for Avahi)
++ if $PKGCONFIG --exists avahi-client; then
++ AC_MSG_RESULT(yes)
++ CFLAGS="$CFLAGS `$PKGCONFIG --cflags avahi-client`"
++ DNSSDLIBS="`$PKGCONFIG --libs avahi-client`"
++ DNSSD_BACKEND="dnssd"
++ AC_DEFINE(HAVE_AVAHI)
++ enable_dnssd=no
++ else
++ AC_MSG_RESULT(no)
++ fi
++ fi])
++
+ 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>
+ #endif /* HAVE_DNSSD */
++#ifdef HAVE_AVAHI
++# include <avahi-client/client.h>
++# include <avahi-client/lookup.h>
++# include <avahi-common/simple-watch.h>
++#endif /* HAVE_AVAHI */
+
+
+ /*
+@@ -121,6 +126,24 @@ static void resolve_callback(DNSService
+ void *context);
+ #endif /* HAVE_DNSSD */
+
++#ifdef HAVE_AVAHI
++static void avahi_resolve_uri_client_cb(AvahiClient *client,
++ AvahiClientState state,
++ void *simple_poll);
++static void avahi_resolve_uri_resolver_cb(AvahiServiceResolver *resolver,
++ AvahiIfIndex interface,
++ AvahiProtocol protocol,
++ AvahiResolverEvent event,
++ const char *name,
++ const char *type,
++ const char *domain,
++ const char *host_name,
++ const AvahiAddress *address,
++ uint16_t port,
++ AvahiStringList *txt,
++ AvahiLookupResultFlags flags,
++ void *context);
++#endif /* HAVE_AVAHI */
+
+ /*
+ * 'httpAssembleURI()' - Assemble a uniform resource identifier from its
+@@ -1351,16 +1374,27 @@ _httpResolveURI(
+
+ if (strstr(hostname, "._tcp"))
+ {
++#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI)
++ 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 */
++#else /* HAVE_AVAHI */
++ AvahiSimplePoll *simple_poll;
++ AvahiClient *client;
++ int error;
++ struct
++ {
++ AvahiSimplePoll *poll;
++ _http_uribuf_t uribuf;
++ } user_data;
++#endif /* HAVE_DNSSD */
+
+
+ if (logit)
+@@ -1398,8 +1432,13 @@ _httpResolveURI(
+ if (domain)
+ *domain++ = '\0';
+
++#ifdef HAVE_DNSSD
+ uribuf.buffer = resolved_uri;
+ uribuf.bufsize = resolved_size;
++#else
++ user_data.uribuf.buffer = resolved_uri;
++ user_data.uribuf.bufsize = resolved_size;
++#endif
+
+ resolved_uri[0] = '\0';
+
+@@ -1414,6 +1453,7 @@ _httpResolveURI(
+
+ uri = NULL;
+
++#ifdef HAVE_DNSSD
+ if (DNSServiceCreateConnection(&ref) == kDNSServiceErr_NoError)
+ {
+ localref = ref;
+@@ -1500,6 +1540,36 @@ _httpResolveURI(
+
+ DNSServiceRefDeallocate(ref);
+ }
++#else /* HAVE_AVAHI */
++ if ((simple_poll = avahi_simple_poll_new ()) != NULL)
++ {
++ if ((client = avahi_client_new (avahi_simple_poll_get (simple_poll),
++ 0, avahi_resolve_uri_client_cb,
++ &simple_poll, &error)) != NULL)
++ {
++ user_data.poll = simple_poll;
++ if (avahi_service_resolver_new (client, AVAHI_IF_UNSPEC,
++ AVAHI_PROTO_UNSPEC, hostname,
++ regtype, domain, AVAHI_PROTO_UNSPEC, 0,
++ avahi_resolve_uri_resolver_cb,
++ &user_data) != NULL)
++ {
++ avahi_simple_poll_loop (simple_poll);
++
++ /*
++ * Collect the result.
++ */
++
++ if (resolved_uri[0])
++ uri = resolved_uri;
++ }
++
++ avahi_client_free (client);
++ }
++
++ avahi_simple_poll_free (simple_poll);
++ }
++#endif /* HAVE_DNSSD */
+
+ if (logit)
+ {
+@@ -1511,13 +1581,13 @@ _httpResolveURI(
+ fputs("STATE: -connecting-to-device,offline-report\n", stderr);
+ }
+
+-#else
++#else /* HAVE_DNSSD || HAVE_AVAHI */
+ /*
+ * No DNS-SD support...
+ */
+
+ uri = NULL;
+-#endif /* HAVE_DNSSD */
++#endif /* HAVE_DNSSD || HAVE_AVAHI */
+
+ if (logit && !uri)
+ _cupsLangPuts(stderr, _("Unable to find printer!\n"));
+@@ -1722,6 +1792,105 @@ resolve_callback(
+ }
+ #endif /* HAVE_DNSSD */
+
++#ifdef HAVE_AVAHI
++static void
++avahi_resolve_uri_client_cb (AvahiClient *client,
++ AvahiClientState state,
++ void *simple_poll)
++{
++ DEBUG_printf(("avahi_resolve_uri_client_callback(client=%p, state=%d, "
++ "simple_poll=%p)\n", client, state, simple_poll));
++
++ /*
++ * If the connection drops, quit.
++ */
++
++ if (state == AVAHI_CLIENT_FAILURE)
++ avahi_simple_poll_quit (simple_poll);
++}
++
++static void
++avahi_resolve_uri_resolver_cb (AvahiServiceResolver *resolver,
++ AvahiIfIndex interface,
++ AvahiProtocol protocol,
++ AvahiResolverEvent event,
++ const char *name,
++ const char *type,
++ const char *domain,
++ const char *host_name,
++ const AvahiAddress *address,
++ uint16_t port,
++ AvahiStringList *txt,
++ AvahiLookupResultFlags flags,
++ void *context)
++{
++ const char *scheme; /* URI scheme */
++ char rp[256]; /* Remote printer */
++ AvahiStringList *pair;
++ char *value;
++ size_t valueLen = 0;
++ char addr[AVAHI_ADDRESS_STR_MAX];
++ struct
++ {
++ AvahiSimplePoll *poll;
++ _http_uribuf_t uribuf;
++ } *poll_uribuf = context;
++
++ DEBUG_printf(("avahi_resolve_uri_resolver_callback(resolver=%p, "
++ "interface=%d, protocol=%d, event=%d, name=\"%s\", "
++ "type=\"%s\", domain=\"%s\", host_name=\"%s\", address=%p, "
++ "port=%d, txt=%p, flags=%d, context=%p)\n",
++ resolver, interface, protocol, event, name, type, domain,
++ host_name, address, port, txt, flags, context));
++
++ if (event != AVAHI_RESOLVER_FOUND)
++ {
++ avahi_service_resolver_free (resolver);
++ avahi_simple_poll_quit (poll_uribuf->poll);
++ return;
++ }
++
++ /*
++ * Figure out the scheme from the full name...
++ */
++
++ if (strstr(type, "_ipp."))
++ scheme = "ipp";
++ else if (strstr(type, "_printer."))
++ scheme = "lpd";
++ else if (strstr(type, "_pdl-datastream."))
++ scheme = "socket";
++ else
++ scheme = "riousbprint";
++
++ /*
++ * Extract the "remote printer key from the TXT record...
++ */
++
++ if ((pair = avahi_string_list_find (txt, "rp")) != NULL)
++ {
++ avahi_string_list_get_pair (pair, NULL, &value, &valueLen);
++ rp[0] = '/';
++ memcpy (rp + 1, value, valueLen);
++ rp[valueLen + 1] = '\0';
++ }
++ else
++ rp[0] = '\0';
++
++ /*
++ * Assemble the final device URI...
++ */
++
++ avahi_address_snprint (addr, AVAHI_ADDRESS_STR_MAX, address);
++ httpAssembleURI(HTTP_URI_CODING_ALL, poll_uribuf->uribuf.buffer,
++ poll_uribuf->uribuf.bufsize, scheme, NULL,
++ addr, port, rp);
++ DEBUG_printf(("avahi_resolve_uri_resolver_callback: Resolved URI is \"%s\"\n",
++ poll_uribuf->uribuf.buffer));
++ avahi_simple_poll_quit (poll_uribuf->poll);
++}
++#endif /* HAVE_AVAHI */
++
+
+ /*
+ * End of "$Id: http-support.c 9322 2010-10-01 22:40:38Z mike $".
diff --git a/extra/cups/cups.install b/extra/cups/cups.install
new file mode 100644
index 000000000..e92e17ed3
--- /dev/null
+++ b/extra/cups/cups.install
@@ -0,0 +1,15 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor 2> /dev/null
+ echo ">> If you use an HTTPS connection to CUPS, the first time you access"
+ echo ">> the interface it may take a very long time before the site comes up."
+ echo ">> This is because the first request triggers the generation of the CUPS"
+ echo ">> SSL certificates which can be a very time-consuming job."
+}
+
+post_upgrade() {
+ xdg-icon-resource forceupdate --theme hicolor 2> /dev/null
+}
+
+post_remove() {
+ xdg-icon-resource forceupdate --theme hicolor 2> /dev/null
+}
diff --git a/extra/cups/cups.logrotate b/extra/cups/cups.logrotate
new file mode 100644
index 000000000..9c49bbdaf
--- /dev/null
+++ b/extra/cups/cups.logrotate
@@ -0,0 +1,8 @@
+/var/log/cups/*log {
+ missingok
+ notifempty
+ delaycompress
+ postrotate
+ /bin/kill -HUP `cat /var/run/cups.pid 2>/dev/null` 2>/dev/null || true
+ endscript
+}
diff --git a/extra/cups/cups.pam b/extra/cups/cups.pam
new file mode 100644
index 000000000..53724d1f8
--- /dev/null
+++ b/extra/cups/cups.pam
@@ -0,0 +1,3 @@
+auth required pam_unix.so
+account required pam_unix.so
+session required pam_unix.so
diff --git a/extra/curl/PKGBUILD b/extra/curl/PKGBUILD
new file mode 100644
index 000000000..06fe3ab42
--- /dev/null
+++ b/extra/curl/PKGBUILD
@@ -0,0 +1,52 @@
+# $Id: PKGBUILD 110504 2011-02-19 17:12:53Z angvp $
+# Maintainer: Angel Velasquez <angvp@archlinux.org>
+# Contributor: Eric Belanger <eric@archlinux.org>
+# Contributor: Lucien Immink <l.immink@student.fnt.hvu.nl>
+# Contributor: Daniel J Griffiths <ghost1227@archlinux.us>
+
+pkgname=curl
+pkgver=7.21.4
+pkgrel=2
+pkgdesc="An URL retrival utility and library"
+arch=('i686' 'x86_64')
+url="http://curl.haxx.se"
+license=('MIT')
+depends=('zlib' 'openssl' 'bash' 'ca-certificates')
+options=('!libtool')
+source=(http://curl.haxx.se/download/${pkgname}-${pkgver}.tar.bz2
+ curlbuild.h)
+md5sums=('e2dd20c88a7d01c745af9d788545ab2a'
+ '751bd433ede935c8fae727377625a8ae')
+
+[[ $CARCH == "x86_64" ]] && _curlbuild=curlbuild-64.h
+[[ $CARCH == "i686" ]] && _curlbuild=curlbuild-32.h
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ ./configure \
+ --with-random=/dev/urandom \
+ --prefix=/usr \
+ --mandir=/usr/share/man \
+ --disable-dependency-tracking \
+ --enable-ipv6 \
+ --disable-ldaps \
+ --disable-ldap \
+ --enable-manual \
+ --enable-versioned-symbols \
+ --with-ca-bundle=/etc/ssl/certs/ca-certificates.crt \
+ --without-libidn \
+ --enable-threaded-resolver
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ make DESTDIR=${pkgdir} install
+ install -Dm644 COPYING \
+ ${pkgdir}/usr/share/licenses/${pkgname}/COPYING
+ install -Dm644 docs/libcurl/libcurl.m4 \
+ ${pkgdir}/usr/share/aclocal/libcurl.m4
+ mv "${pkgdir}/usr/include/curl/curlbuild.h" "${pkgdir}/usr/include/curl/${_curlbuild}"
+ install -m 644 ${srcdir}/curlbuild.h "${pkgdir}/usr/include/curl/curlbuild.h"
+}
diff --git a/extra/curl/curlbuild.h b/extra/curl/curlbuild.h
new file mode 100644
index 000000000..b48862696
--- /dev/null
+++ b/extra/curl/curlbuild.h
@@ -0,0 +1,9 @@
+#include <bits/wordsize.h>
+
+#if __WORDSIZE == 32
+#include "curlbuild-32.h"
+#elif __WORDSIZE == 64
+#include "curlbuild-64.h"
+#else
+#error "Unknown word size"
+#endif
diff --git a/extra/cvs/PKGBUILD b/extra/cvs/PKGBUILD
new file mode 100644
index 000000000..380e93f2e
--- /dev/null
+++ b/extra/cvs/PKGBUILD
@@ -0,0 +1,39 @@
+# $Id: PKGBUILD 101751 2010-12-01 14:33:51Z stephane $
+# Contributor: dorphell <dorphell@archlinux.org>
+
+pkgname=cvs
+pkgver=1.11.23
+pkgrel=6
+pkgdesc="Concurrent Versions System - a source control system"
+arch=(i686 x86_64)
+url="http://cvs.nongnu.org"
+license=('GPL')
+depends=('heimdal>=1.3.1')
+optdepends=('openssh: for using cvs over ssh' 'inetutils: for using cvs over rsh')
+install=cvs.install
+source=(ftp://ftp.gnu.org/non-gnu/cvs/source/stable/${pkgver}/${pkgname}-${pkgver}.tar.bz2
+ cvs-1.11.23-getline64.patch
+ cvs-1.11.23-cve-2010-3846.patch)
+sha256sums=('400f51b59d85116e79b844f2d5dbbad4759442a789b401a94aa5052c3d7a4aa9'
+ '9126d7992ace943980ad8a10d5a09aeb6f1eeeb9b921fc796fe31de7b1c220cf'
+ 'c6506d0a5efc7b0cab6415f26e070ec214fb9781fac8d295506f4d0825431a8f')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ unset EDITOR VISUAL
+
+ patch -Np1 -i ../cvs-1.11.23-getline64.patch
+
+ # CVE-2010-3864, see https://www.redhat.com/security/data/cve/CVE-2010-3846.html
+ patch -Np1 -i ../cvs-1.11.23-cve-2010-3846.patch
+
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ make DESTDIR=${pkgdir} install
+ rm ${pkgdir}/usr/share/info/dir
+}
diff --git a/extra/cvs/cvs-1.11.23-cve-2010-3846.patch b/extra/cvs/cvs-1.11.23-cve-2010-3846.patch
new file mode 100644
index 000000000..e1560cef8
--- /dev/null
+++ b/extra/cvs/cvs-1.11.23-cve-2010-3846.patch
@@ -0,0 +1,167 @@
+From b122edcb68ff05bb6eb22f6e50423e7f1050841b Mon Sep 17 00:00:00 2001
+From: Larry Jones <lawrence.jones@siemens.com>
+Date: Thu, 21 Oct 2010 10:08:16 +0200
+Subject: [PATCH] Fix for CVE-2010-3846
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Mallformed RCS revision (delete after the end of input file, or overlayed
+deleted regions) screws output file image size computation. This leads to
+write attempt after the allocated memory opening hiden memory corruption
+driven by CVS server.
+
+Signed-off-by: Petr Písař <ppisar@redhat.com>
+---
+ src/rcs.c | 52 +++++++++++++++++++++++++++++-----------------------
+ 1 files changed, 29 insertions(+), 23 deletions(-)
+
+diff --git a/src/rcs.c b/src/rcs.c
+index 7d0d078..2f88f85 100644
+--- a/src/rcs.c
++++ b/src/rcs.c
+@@ -7128,7 +7128,7 @@ apply_rcs_changes (orig_lines, diffbuf, difflen, name, addvers, delvers)
+ struct deltafrag *dfhead;
+ struct deltafrag **dftail;
+ struct deltafrag *df;
+- unsigned long numlines, lastmodline, offset;
++ unsigned long numlines, offset;
+ struct linevector lines;
+ int err;
+
+@@ -7202,12 +7202,12 @@ apply_rcs_changes (orig_lines, diffbuf, difflen, name, addvers, delvers)
+
+ /* New temp data structure to hold new org before
+ copy back into original structure. */
+- lines.nlines = lines.lines_alloced = numlines;
++ lines.lines_alloced = numlines;
+ lines.vector = xmalloc (numlines * sizeof *lines.vector);
+
+ /* We changed the list order to first to last -- so the
+ list never gets larger than the size numlines. */
+- lastmodline = 0;
++ lines.nlines = 0;
+
+ /* offset created when adding/removing lines
+ between new and original structure */
+@@ -7216,25 +7216,24 @@ apply_rcs_changes (orig_lines, diffbuf, difflen, name, addvers, delvers)
+ for (df = dfhead; df != NULL; )
+ {
+ unsigned int ln;
+- unsigned long deltaend;
++ unsigned long newpos = df->pos - offset;
+
+- if (df->pos > orig_lines->nlines)
++ if (newpos < lines.nlines || newpos > numlines)
+ err = 1;
+
+ /* On error, just free the rest of the list. */
+ if (!err)
+ {
+- /* Here we need to get to the line where the next insert will
++ /* Here we need to get to the line where the next change will
+ begin, which is DF->pos in ORIG_LINES. We will fill up to
+ DF->pos - OFFSET in LINES with original items. */
+- for (deltaend = df->pos - offset;
+- lastmodline < deltaend;
+- lastmodline++)
++ while (lines.nlines < newpos)
+ {
+ /* we need to copy from the orig structure into new one */
+- lines.vector[lastmodline] =
+- orig_lines->vector[lastmodline + offset];
+- lines.vector[lastmodline]->refcount++;
++ lines.vector[lines.nlines] =
++ orig_lines->vector[lines.nlines + offset];
++ lines.vector[lines.nlines]->refcount++;
++ lines.nlines++;
+ }
+
+ switch (df->type)
+@@ -7246,7 +7245,12 @@ apply_rcs_changes (orig_lines, diffbuf, difflen, name, addvers, delvers)
+ struct line *q;
+ int nextline_newline;
+ size_t nextline_len;
+-
++
++ if (newpos + df->nlines > numlines)
++ {
++ err = 1;
++ break;
++ }
+ textend = df->new_lines + df->len;
+ nextline_newline = 0;
+ nextline_text = df->new_lines;
+@@ -7271,8 +7275,7 @@ apply_rcs_changes (orig_lines, diffbuf, difflen, name, addvers, delvers)
+ q->has_newline = nextline_newline;
+ q->refcount = 1;
+ memcpy (q->text, nextline_text, nextline_len);
+- lines.vector[lastmodline++] = q;
+- offset--;
++ lines.vector[lines.nlines++] = q;
+
+ nextline_text = (char *)p + 1;
+ nextline_newline = 0;
+@@ -7286,11 +7289,11 @@ apply_rcs_changes (orig_lines, diffbuf, difflen, name, addvers, delvers)
+ q->has_newline = nextline_newline;
+ q->refcount = 1;
+ memcpy (q->text, nextline_text, nextline_len);
+- lines.vector[lastmodline++] = q;
++ lines.vector[lines.nlines++] = q;
+
+ /* For each line we add the offset between the #'s
+ decreases. */
+- offset--;
++ offset -= df->nlines;
+ break;
+ }
+
+@@ -7301,7 +7304,9 @@ apply_rcs_changes (orig_lines, diffbuf, difflen, name, addvers, delvers)
+ if (df->pos + df->nlines > orig_lines->nlines)
+ err = 1;
+ else if (delvers)
++ {
+ for (ln = df->pos; ln < df->pos + df->nlines; ++ln)
++ {
+ if (orig_lines->vector[ln]->refcount > 1)
+ /* Annotate needs this but, since the original
+ * vector is disposed of before returning from
+@@ -7309,6 +7314,8 @@ apply_rcs_changes (orig_lines, diffbuf, difflen, name, addvers, delvers)
+ * there are multiple references.
+ */
+ orig_lines->vector[ln]->vers = delvers;
++ }
++ }
+ break;
+ }
+ }
+@@ -7328,21 +7335,20 @@ apply_rcs_changes (orig_lines, diffbuf, difflen, name, addvers, delvers)
+ else
+ {
+ /* add the rest of the remaining lines to the data vector */
+- for (; lastmodline < numlines; lastmodline++)
++ while (lines.nlines < numlines)
+ {
+ /* we need to copy from the orig structure into new one */
+- lines.vector[lastmodline] = orig_lines->vector[lastmodline
++ lines.vector[lines.nlines] = orig_lines->vector[lines.nlines
+ + offset];
+- lines.vector[lastmodline]->refcount++;
++ lines.vector[lines.nlines]->refcount++;
++ lines.nlines++;
+ }
+
+ /* Move the lines vector to the original structure for output,
+ * first deleting the old.
+ */
+ linevector_free (orig_lines);
+- orig_lines->vector = lines.vector;
+- orig_lines->lines_alloced = numlines;
+- orig_lines->nlines = lines.nlines;
++ *orig_lines = lines;
+ }
+
+ return !err;
+--
+1.7.2.3
+
diff --git a/extra/cvs/cvs-1.11.23-getline64.patch b/extra/cvs/cvs-1.11.23-getline64.patch
new file mode 100644
index 000000000..99942e058
--- /dev/null
+++ b/extra/cvs/cvs-1.11.23-getline64.patch
@@ -0,0 +1,34 @@
+--- cvs-1.11.23/lib/getline.c 2005-04-04 22:46:05.000000000 +0200
++++ cvs-1.11.23/lib/getline.c.old 2008-06-03 19:06:25.000000000 +0200
+@@ -154,7 +154,7 @@
+ return ret;
+ }
+
+-int
++ssize_t
+ getline (lineptr, n, stream)
+ char **lineptr;
+ size_t *n;
+@@ -163,7 +163,7 @@
+ return getstr (lineptr, n, stream, '\n', 0, GETLINE_NO_LIMIT);
+ }
+
+-int
++ssize_t
+ getline_safe (lineptr, n, stream, limit)
+ char **lineptr;
+ size_t *n;
+--- cvs-1.11.23/lib/getline.h 2005-04-04 22:46:05.000000000 +0200
++++ cvs-1.11.23/lib/getline.h.old 2008-06-03 19:06:27.000000000 +0200
+@@ -11,9 +11,9 @@
+
+ #define GETLINE_NO_LIMIT -1
+
+-int
++ssize_t
+ getline __PROTO ((char **_lineptr, size_t *_n, FILE *_stream));
+-int
++ssize_t
+ getline_safe __PROTO ((char **_lineptr, size_t *_n, FILE *_stream,
+ int limit));
+ int
diff --git a/extra/cvs/cvs.install b/extra/cvs/cvs.install
new file mode 100644
index 000000000..f1cdd1f3e
--- /dev/null
+++ b/extra/cvs/cvs.install
@@ -0,0 +1,20 @@
+infodir=/usr/share/info
+filelist=(cvs.info cvs-info-1 cvs-info-2 cvsclient.info)
+
+post_install() {
+ for file in ${filelist[@]}; do
+ install-info $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ for file in ${filelist[@]}; do
+ install-info --delete $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/extra/cvsps/PKGBUILD b/extra/cvsps/PKGBUILD
new file mode 100644
index 000000000..317e30290
--- /dev/null
+++ b/extra/cvsps/PKGBUILD
@@ -0,0 +1,19 @@
+# $Id: PKGBUILD 49847 2009-08-16 18:36:23Z jgc $
+# Maintainer: Jeff 'codemac' Mickey <jeff@archlinux.org>
+
+pkgname=cvsps
+pkgver=2.1
+pkgrel=2
+pkgdesc="Generating 'patchset' information from a CVS repository."
+url="http://www.cobite.com/cvsps/"
+license=('GPL')
+arch=('x86_64' 'i686')
+depends=('zlib')
+source=(http://www.cobite.com/${pkgname}/${pkgname}-${pkgver}.tar.gz)
+md5sums=('bde2110ed9f5d14de8f8cb04e9d596fe')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make prefix=/usr || return 1
+ make prefix="${pkgdir}/usr" install || return 1
+}
diff --git a/extra/cx_freeze/FreezePython.sh b/extra/cx_freeze/FreezePython.sh
new file mode 100644
index 000000000..5bba21cac
--- /dev/null
+++ b/extra/cx_freeze/FreezePython.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+cd /usr/share/cx-freeze
+./FreezePython "$@"
diff --git a/extra/cx_freeze/PKGBUILD b/extra/cx_freeze/PKGBUILD
new file mode 100644
index 000000000..ee7476c7b
--- /dev/null
+++ b/extra/cx_freeze/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id: PKGBUILD 116705 2011-03-25 11:30:44Z schiv $
+# Maintainer: Ray Rashif <schiv@archlinux.org>
+# Contributor: Douglas Soares de Andrade <douglas@archlinux.org>
+# Contributor: Eric Belanger <eric@archlinux.org>
+# Contributor: Roberto Alsina <ralsina@kde.org>
+
+pkgname=cx_freeze
+_tarname=cx_Freeze
+pkgver=4.2.3
+pkgrel=1
+pkgdesc="A set of utilities for freezing Python scripts into executables"
+arch=('i686' 'x86_64')
+url="http://www.python.net/crew/atuining/cx_Freeze/"
+license=('custom')
+depends=('python2')
+provides=('cxfreeze')
+source=("http://downloads.sourceforge.net/cx-freeze/$_tarname-$pkgver.tar.gz"
+ 'FreezePython.sh')
+md5sums=('a524cfd23de5d37e0ec9400ba1ccd6ad'
+ '5cc60d1644eba12a57c22cc1348a4afd')
+
+package() {
+ cd "$srcdir/$_tarname-$pkgver"
+
+ python2 setup.py install --root "$pkgdir/" --optimize 1
+
+ install -d "$pkgdir"/usr/share/cx-freeze/{bases,initscripts}
+ install -m755 source/bases/* "$pkgdir/usr/share/cx-freeze/bases"
+ install -m644 initscripts/* "$pkgdir/usr/share/cx-freeze/initscripts"
+ install -D -m644 LICENSE.txt "$pkgdir/usr/share/licenses/cx_freeze/COPYING"
+}
diff --git a/extra/cyrus-sasl-plugins/PKGBUILD b/extra/cyrus-sasl-plugins/PKGBUILD
new file mode 100644
index 000000000..a511d0fc2
--- /dev/null
+++ b/extra/cyrus-sasl-plugins/PKGBUILD
@@ -0,0 +1,52 @@
+# $Id: PKGBUILD 115177 2011-03-17 10:51:19Z andrea $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=cyrus-sasl-plugins
+pkgver=2.1.23
+pkgrel=4
+pkgdesc="Cyrus Simple Authentication Service Layer (SASL) library"
+arch=('i686' 'x86_64')
+url="http://cyrusimap.web.cmu.edu/"
+license=('custom')
+depends=('postgresql-libs>=9.0.3' 'heimdal>=1.3.3' 'libldap>2.4'
+ 'libmysqlclient>=5.5.10')
+source=(ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-sasl-${pkgver}.tar.gz
+ cyrus-sasl-2.1.22-gcc44.patch
+ cyrus-sasl-2.1.23-db5-fix.patch)
+md5sums=('2eb0e48106f0e9cd8001e654f267ecbc'
+ '5deb4d67b53ecba20c7887fc8fdebee1'
+ '3ae4347705141145f31cf786c38ea9ef')
+options=('!libtool')
+
+build() {
+ cd ${srcdir}/cyrus-sasl-${pkgver}
+ patch -Np1 -i $srcdir/cyrus-sasl-2.1.22-gcc44.patch
+ # from http://bugs.gentoo.org/show_bug.cgi?id=319935
+ patch -Np0 -i ${srcdir}/cyrus-sasl-2.1.23-db5-fix.patch
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --disable-login \
+ --disable-plain \
+ --enable-sql \
+ --disable-sqlite \
+ --enable-gssapi=/usr/include/gssapi \
+ --with-mysql=/usr \
+ --with-pgsql=/usr \
+ --enable-postgresql \
+ --enable-ldapdb \
+ --with-ldap=/usr
+ cd sasldb
+ make
+ cd ../plugins
+ make
+}
+
+package () {
+ cd ${srcdir}/cyrus-sasl-${pkgver}/plugins
+ make DESTDIR=${pkgdir} install
+
+ install -Dm644 ../COPYING ${pkgdir}/usr/share/licenses/${pkgname}/COPYING
+
+ rm -f ${pkgdir}/usr/lib/sasl2/libsasldb.*
+}
diff --git a/extra/cyrus-sasl-plugins/cyrus-sasl-2.1.22-gcc44.patch b/extra/cyrus-sasl-plugins/cyrus-sasl-2.1.22-gcc44.patch
new file mode 100644
index 000000000..e2621278b
--- /dev/null
+++ b/extra/cyrus-sasl-plugins/cyrus-sasl-2.1.22-gcc44.patch
@@ -0,0 +1,24 @@
+fix warnings with gcc-4.4
+
+http://bugs.gentoo.org/248738
+
+--- cyrus-sasl-2.1.22/plugins/digestmd5.c
++++ cyrus-sasl-2.1.22/plugins/digestmd5.c
+@@ -2715,7 +2715,7 @@ static sasl_server_plug_t digestmd5_serv
+ "DIGEST-MD5", /* mech_name */
+ #ifdef WITH_RC4
+ 128, /* max_ssf */
+-#elif WITH_DES
++#elif defined(WITH_DES)
+ 112,
+ #else
+ 1,
+@@ -4034,7 +4034,7 @@ static sasl_client_plug_t digestmd5_clie
+ "DIGEST-MD5",
+ #ifdef WITH_RC4 /* mech_name */
+ 128, /* max ssf */
+-#elif WITH_DES
++#elif defined(WITH_DES)
+ 112,
+ #else
+ 1,
diff --git a/extra/cyrus-sasl-plugins/cyrus-sasl-2.1.23-db5-fix.patch b/extra/cyrus-sasl-plugins/cyrus-sasl-2.1.23-db5-fix.patch
new file mode 100644
index 000000000..2ccd6cdb3
--- /dev/null
+++ b/extra/cyrus-sasl-plugins/cyrus-sasl-2.1.23-db5-fix.patch
@@ -0,0 +1,23 @@
+--- sasldb/db_berkeley.c.orig 2010-10-04 21:11:15.044010468 -0400
++++ sasldb/db_berkeley.c 2010-10-04 21:12:18.921998718 -0400
+@@ -100,7 +100,7 @@
+ ret = db_create(mbdb, NULL, 0);
+ if (ret == 0 && *mbdb != NULL)
+ {
+-#if DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 1
++#if (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 1) || DB_VERSION_MAJOR == 5
+ ret = (*mbdb)->open(*mbdb, NULL, path, NULL, DB_HASH, flags, 0660);
+ #else
+ ret = (*mbdb)->open(*mbdb, path, NULL, DB_HASH, flags, 0660);
+
+--- utils/dbconverter-2.c.orig 2010-10-04 21:23:39.778000256 -0400
++++ utils/dbconverter-2.c 2010-10-04 21:24:50.384999893 -0400
+@@ -214,7 +214,7 @@
+ ret = db_create(mbdb, NULL, 0);
+ if (ret == 0 && *mbdb != NULL)
+ {
+-#if DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 1
++#if (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 1) || DB_VERSION_MAJOR == 5
+ ret = (*mbdb)->open(*mbdb, NULL, path, NULL, DB_HASH, DB_CREATE, 0664);
+ #else
+ ret = (*mbdb)->open(*mbdb, path, NULL, DB_HASH, DB_CREATE, 0664);
diff --git a/extra/cyrus-sasl/PKGBUILD b/extra/cyrus-sasl/PKGBUILD
new file mode 100644
index 000000000..a33001a96
--- /dev/null
+++ b/extra/cyrus-sasl/PKGBUILD
@@ -0,0 +1,37 @@
+# $Id: PKGBUILD 75335 2010-04-01 10:43:20Z allan $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=cyrus-sasl
+pkgver=2.1.23
+pkgrel=4
+pkgdesc="SASL authentication daemon"
+arch=('i686' 'x86_64')
+license=('custom')
+url="http://asg.web.cmu.edu/cyrus/download/"
+depends=('pam>=1.0.1-2' 'heimdal>=1.3.1' 'libldap' 'cyrus-sasl-plugins>=2.1.22-7' 'db>=4.7')
+replaces=(cyrus-sasl-mysql cyrus-sasl-pgsql)
+conflicts=(cyrus-sasl-mysql cyrus-sasl-pgsql)
+backup=(etc/conf.d/saslauthd)
+source=(ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/${pkgname}-${pkgver}.tar.gz
+ saslauthd
+ saslauthd.conf.d)
+md5sums=('2eb0e48106f0e9cd8001e654f267ecbc'
+ '697dfb51206c398bc976ce9f4cffe72d'
+ '96d8a2f6189501f8044838e04d5cae7f')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --mandir=/usr/share/man \
+ --with-ldap=/usr --with-saslauthd=/var/run/saslauthd
+ cd saslauthd
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+ make testsaslauthd || return 1
+ install -m755 testsaslauthd "${pkgdir}/usr/sbin" || return 1
+
+ install -dm766 "${pkgdir}/var/run/saslauthd"
+ install -Dm755 "${srcdir}/saslauthd" "${pkgdir}/etc/rc.d/saslauthd"
+ install -Dm644 "${srcdir}/saslauthd.conf.d" "${pkgdir}/etc/conf.d/saslauthd"
+
+ install -Dm644 ../COPYING "${pkgdir}/usr/share/licenses/cyrus-sasl/COPYING"
+}
diff --git a/extra/cyrus-sasl/saslauthd b/extra/cyrus-sasl/saslauthd
new file mode 100644
index 000000000..c470c801c
--- /dev/null
+++ b/extra/cyrus-sasl/saslauthd
@@ -0,0 +1,50 @@
+#!/bin/bash
+
+# source application-specific settings
+[ -f /etc/conf.d/saslauthd ] && . /etc/conf.d/saslauthd
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+DAEMON_NAME="saslauthd"
+SASLAUTHD_BIN=/usr/sbin/saslauthd
+SASLAUTHD_PID=`pidof -o %PPID $SASLAUTHD_BIN`
+
+case "$1" in
+ start)
+ stat_busy "Starting $DAEMON_NAME"
+ [ -z "$SASLAUTHD_PID" ] && $SASLAUTHD_BIN $SASLAUTHD_OPTS
+ if [ $? -gt 0 ]; then
+ stat_fail
+ exit 1
+ else
+ echo `pidof -o %PPID $SASLAUTHD_BIN` > /var/run/$DAEMON_NAME.pid
+ fi
+ add_daemon $DAEMON_NAME
+ stat_done
+ ;;
+
+ stop)
+ stat_busy "Stopping $DAEMON_NAME"
+ [ ! -z "$SASLAUTHD_PID" ] && kill $SASLAUTHD_PID &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ exit 1
+ else
+ rm /var/run/$DAEMON_NAME.pid &> /dev/null
+ fi
+ rm_daemon $DAEMON_NAME
+ stat_done
+ ;;
+
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
+# vim: ts=2 sw=2 et ft=sh
diff --git a/extra/cyrus-sasl/saslauthd.conf.d b/extra/cyrus-sasl/saslauthd.conf.d
new file mode 100644
index 000000000..b42b5d0b0
--- /dev/null
+++ b/extra/cyrus-sasl/saslauthd.conf.d
@@ -0,0 +1 @@
+SASLAUTHD_OPTS="-m /var/run/saslauthd -a pam"
diff --git a/extra/dansguardian/PKGBUILD b/extra/dansguardian/PKGBUILD
new file mode 100644
index 000000000..6d943cc2a
--- /dev/null
+++ b/extra/dansguardian/PKGBUILD
@@ -0,0 +1,148 @@
+# $Id: PKGBUILD 70467 2010-02-26 21:24:54Z dgriffiths $
+# Maintainer: Kevin Piche <kevin@archlinux.org>
+# Contributor: Manolis Tzanidakis
+
+pkgname=dansguardian
+pkgver=2.10.1.1
+pkgrel=2
+pkgdesc="Squid plugin for web content filtering."
+url="http://dansguardian.org"
+arch=('i686' 'x86_64')
+license=('GPL2')
+depends=('squid' 'pcre' 'zlib')
+install=${pkgname}.install
+source=(http://dansguardian.org/downloads/2/Stable/${pkgname}-${pkgver}.tar.gz
+dansguardian dg2.10.1.1-missing.stdio.patch)
+md5sums=('0987a1c9bfbdf398118386f10279611a' 'a65a2cb6309670ad8978f1544907d290'
+ '3444718c00cc17337cba711ceaa1c0e5')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ patch -Np0 -i ${srcdir}/dg2.10.1.1-missing.stdio.patch
+ ./configure --prefix="/usr" --with-proxyuser=proxy --with-proxygroup=proxy \
+ --sysconfdir=/etc --localstatedir=/var --enable-email
+ make || return 1
+ make DESTDIR=${pkgdir} install
+
+ install -D data/scripts/dansguardian ${pkgdir}/etc/logrotate.d/dansguardian
+ install -D -m755 ${srcdir}/dansguardian ${pkgdir}/etc/rc.d/dansguardian
+}
+
+backup=(etc/dansguardian/dansguardian.conf
+etc/dansguardian/dansguardianf1.conf
+etc/dansguardian/downloadmanagers/default.conf
+etc/dansguardian/downloadmanagers/fancy.conf
+etc/dansguardian/authplugins/proxy-digest.conf
+etc/dansguardian/authplugins/proxy-basic.conf
+etc/dansguardian/authplugins/ident.conf
+etc/dansguardian/authplugins/ip.conf
+etc/dansguardian/lists/weightedphraselist
+etc/dansguardian/lists/contentregexplist
+etc/dansguardian/lists/exceptionfileurllist
+etc/dansguardian/lists/exceptionextensionlist
+etc/dansguardian/lists/bannedextensionlist
+etc/dansguardian/lists/exceptionmimetypelist
+etc/dansguardian/lists/blacklists/ads/urls
+etc/dansguardian/lists/blacklists/ads/domains
+etc/dansguardian/lists/exceptionregexpurllist
+etc/dansguardian/lists/authplugins/ipgroups
+etc/dansguardian/lists/bannedregexpheaderlist
+etc/dansguardian/lists/phraselists/rta/banned
+etc/dansguardian/lists/phraselists/sport/weighted
+etc/dansguardian/lists/phraselists/proxies/weighted
+etc/dansguardian/lists/phraselists/safelabel/banned
+etc/dansguardian/lists/phraselists/peer2peer/weighted
+etc/dansguardian/lists/phraselists/drugadvocacy/weighted
+etc/dansguardian/lists/phraselists/googlesearches/banned
+etc/dansguardian/lists/phraselists/conspiracy/weighted
+etc/dansguardian/lists/phraselists/secretsocieties/weighted
+etc/dansguardian/lists/phraselists/idtheft/weighted
+etc/dansguardian/lists/phraselists/illegaldrugs/banned
+etc/dansguardian/lists/phraselists/illegaldrugs/weighted_portuguese
+etc/dansguardian/lists/phraselists/illegaldrugs/weighted
+etc/dansguardian/lists/phraselists/violence/weighted_portuguese
+etc/dansguardian/lists/phraselists/violence/weighted
+etc/dansguardian/lists/phraselists/domainsforsale/weighted
+etc/dansguardian/lists/phraselists/music/weighted
+etc/dansguardian/lists/phraselists/upstreamfilter/weighted
+etc/dansguardian/lists/phraselists/games/weighted
+etc/dansguardian/lists/phraselists/weapons/weighted_portuguese
+etc/dansguardian/lists/phraselists/weapons/weighted
+etc/dansguardian/lists/phraselists/legaldrugs/weighted
+etc/dansguardian/lists/phraselists/gore/weighted_portuguese
+etc/dansguardian/lists/phraselists/gore/weighted
+etc/dansguardian/lists/phraselists/warezhacking/weighted
+etc/dansguardian/lists/phraselists/pornography/weighted_chinese
+etc/dansguardian/lists/phraselists/pornography/weighted_malay
+etc/dansguardian/lists/phraselists/pornography/weighted_german
+etc/dansguardian/lists/phraselists/pornography/weighted_dutch
+etc/dansguardian/lists/phraselists/pornography/banned_portuguese
+etc/dansguardian/lists/phraselists/pornography/weighted_french
+etc/dansguardian/lists/phraselists/pornography/weighted_polish
+etc/dansguardian/lists/phraselists/pornography/banned
+etc/dansguardian/lists/phraselists/pornography/weighted_danish
+etc/dansguardian/lists/phraselists/pornography/weighted_japanese
+etc/dansguardian/lists/phraselists/pornography/weighted_portuguese
+etc/dansguardian/lists/phraselists/pornography/weighted_russian
+etc/dansguardian/lists/phraselists/pornography/weighted_italian
+etc/dansguardian/lists/phraselists/pornography/weighted_swedish
+etc/dansguardian/lists/phraselists/pornography/weighted
+etc/dansguardian/lists/phraselists/pornography/weighted_norwegian
+etc/dansguardian/lists/phraselists/pornography/weighted_spanish
+etc/dansguardian/lists/phraselists/personals/weighted_portuguese
+etc/dansguardian/lists/phraselists/personals/weighted
+etc/dansguardian/lists/phraselists/nudism/weighted
+etc/dansguardian/lists/phraselists/malware/weighted
+etc/dansguardian/lists/phraselists/goodphrases/weighted_general_polish
+etc/dansguardian/lists/phraselists/goodphrases/weighted_general_swedish
+etc/dansguardian/lists/phraselists/goodphrases/exception_email
+etc/dansguardian/lists/phraselists/goodphrases/exception
+etc/dansguardian/lists/phraselists/goodphrases/weighted_general
+etc/dansguardian/lists/phraselists/goodphrases/weighted_general_danish
+etc/dansguardian/lists/phraselists/goodphrases/weighted_general_malay
+etc/dansguardian/lists/phraselists/goodphrases/weighted_general_dutch
+etc/dansguardian/lists/phraselists/goodphrases/weighted_general_portuguese
+etc/dansguardian/lists/phraselists/goodphrases/weighted_news
+etc/dansguardian/lists/phraselists/translation/weighted
+etc/dansguardian/lists/phraselists/chat/weighted_italian
+etc/dansguardian/lists/phraselists/chat/weighted
+etc/dansguardian/lists/phraselists/news/weighted
+etc/dansguardian/lists/phraselists/badwords/weighted_german
+etc/dansguardian/lists/phraselists/badwords/weighted_dutch
+etc/dansguardian/lists/phraselists/badwords/weighted_french
+etc/dansguardian/lists/phraselists/badwords/weighted_portuguese
+etc/dansguardian/lists/phraselists/badwords/weighted_spanish
+etc/dansguardian/lists/phraselists/webmail/weighted
+etc/dansguardian/lists/phraselists/travel/weighted
+etc/dansguardian/lists/phraselists/gambling/banned_portuguese
+etc/dansguardian/lists/phraselists/gambling/banned
+etc/dansguardian/lists/phraselists/gambling/weighted_portuguese
+etc/dansguardian/lists/phraselists/gambling/weighted
+etc/dansguardian/lists/phraselists/forums/weighted
+etc/dansguardian/lists/phraselists/intolerance/banned_portuguese
+etc/dansguardian/lists/phraselists/intolerance/weighted_portuguese
+etc/dansguardian/lists/phraselists/intolerance/weighted
+etc/dansguardian/lists/logsitelist
+etc/dansguardian/lists/logregexpurllist
+etc/dansguardian/lists/greysitelist
+etc/dansguardian/lists/filtergroupslist
+etc/dansguardian/lists/downloadmanagers/managedmimetypelist
+etc/dansguardian/lists/downloadmanagers/managedextensionlist
+etc/dansguardian/lists/exceptionfilesitelist
+etc/dansguardian/lists/bannedmimetypelist
+etc/dansguardian/lists/pics
+etc/dansguardian/lists/exceptionurllist
+etc/dansguardian/lists/logurllist
+etc/dansguardian/lists/exceptionphraselist
+etc/dansguardian/lists/bannedurllist
+etc/dansguardian/lists/headerregexplist
+etc/dansguardian/lists/bannediplist
+etc/dansguardian/lists/exceptionsitelist
+etc/dansguardian/lists/bannedphraselist
+etc/dansguardian/lists/exceptioniplist
+etc/dansguardian/lists/bannedregexpurllist
+etc/dansguardian/lists/bannedsitelist
+etc/dansguardian/lists/urlregexplist
+etc/dansguardian/lists/greyurllist)
+
+# vim: ts=2 sw=2 et ft=sh
diff --git a/extra/dansguardian/dansguardian b/extra/dansguardian/dansguardian
new file mode 100644
index 000000000..c537da8bd
--- /dev/null
+++ b/extra/dansguardian/dansguardian
@@ -0,0 +1,36 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+PID=`pidof -o %PPID /usr/sbin/dansguardian`
+case "$1" in
+ start)
+ stat_busy "Starting DansGuardian"
+ [ -z "$PID" ] && /usr/sbin/dansguardian
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon dansguardian
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping DansGuardian"
+ [ ! -z "$PID" ] && /usr/sbin/dansguardian -q &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon dansguardian
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
diff --git a/extra/dansguardian/dansguardian.install b/extra/dansguardian/dansguardian.install
new file mode 100644
index 000000000..05a72ad80
--- /dev/null
+++ b/extra/dansguardian/dansguardian.install
@@ -0,0 +1,8 @@
+post_install() {
+ echo "--------------------------------------------------"
+ echo "NOTE: DansGuardian is NOT free for commercial use."
+ echo " See http://dansguardian.org for details on"
+ echo " setup, configuration, and licensing."
+ echo "--------------------------------------------------"
+ chown -R proxy.proxy var/log/dansguardian
+}
diff --git a/extra/dansguardian/dg2.10.1.1-missing.stdio.patch b/extra/dansguardian/dg2.10.1.1-missing.stdio.patch
new file mode 100644
index 000000000..b92aef008
--- /dev/null
+++ b/extra/dansguardian/dg2.10.1.1-missing.stdio.patch
@@ -0,0 +1,10 @@
+--- src/downloadmanagers/fancy.cpp.orig 2009-09-13 18:37:56.000000000 -0400
++++ src/downloadmanagers/fancy.cpp 2009-09-13 18:38:14.000000000 -0400
+@@ -32,6 +32,7 @@
+ #include <unistd.h>
+ #include <iostream>
+ #include <math.h>
++#include <cstdio>
+
+
+ // GLOBALS
diff --git a/extra/darcs/PKGBUILD b/extra/darcs/PKGBUILD
new file mode 100644
index 000000000..c073061a5
--- /dev/null
+++ b/extra/darcs/PKGBUILD
@@ -0,0 +1,37 @@
+# $Id: PKGBUILD 116991 2011-03-27 10:10:32Z remy $
+# Maintainer: Vesa Kaihlavirta <vesa@archlinux.org>
+# Contributor: Simo Leone <neotuli@gmail.com>
+
+pkgname=darcs
+pkgver=2.5.2
+pkgrel=1
+pkgdesc="Decentralized replacement for CVS with roots in quantum mechanics"
+arch=(i686 x86_64)
+url="http://darcs.net/"
+license=('GPL')
+depends=('curl' 'gmp' 'ncurses>=5.6-7')
+makedepends=('ghc' 'haskell-tar<0.4' 'haskell-text<0.12'
+ 'haskell-hashed-storage<0.6' 'haskell-haskeline<0.7'
+ 'haskell-html<1.1' 'haskell-parsec<3.2' 'haskell-regex-compat<0.94')
+source=("http://darcs.net/releases/$pkgname-$pkgver.tar.gz")
+md5sums=('491b6ca01dec245a16112ad2c7e07dc1')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ runhaskell Setup.lhs configure --ghc -O --prefix=/usr \
+ --disable-library-for-ghci --libsubdir=\$compiler/site-local/\$pkgid
+ runhaskell Setup.lhs build
+}
+
+check() {
+ cd ${srcdir}/$pkgname-$pkgver
+ runhaskell Setup.lhs test
+}
+
+package() {
+ cd $srcdir/$pkgname-$pkgver
+ runhaskell Setup.lhs copy --destdir=$pkgdir
+ rm -r $pkgdir/usr/lib/
+ chmod 755 $pkgdir/usr/share/man/man1/$pkgname.1
+}
+
diff --git a/extra/dasher/PKGBUILD b/extra/dasher/PKGBUILD
new file mode 100644
index 000000000..8051c708f
--- /dev/null
+++ b/extra/dasher/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 54725 2009-10-11 18:48:49Z jgc $
+# Maintainer: damir <damir@archlinux.org>
+
+pkgname=dasher
+pkgver=4.10.1
+pkgrel=2
+pkgdesc="Information-efficient text-entry interface, driven by natural continuous pointing gestures"
+arch=(i686 x86_64)
+license=('GPL')
+depends=('at-spi>=1.27.91' 'libgnomeui>=2.24.1' 'gnome-speech>=0.4.25' 'gconf>=2.26.2-3' 'hicolor-icon-theme')
+makedepends=('pkgconfig' 'intltool' 'gnome-doc-utils>=0.17.3')
+url="http://www.gnome.org"
+groups=('gnome-extra')
+options=(!emptydirs)
+install=dasher.install
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/4.10/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('83e556690ac54c4bb8c49c050510259e')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var \
+ --disable-scrollkeeper --enable-speech || return 1
+ make || return 1
+ make GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 DESTDIR="${pkgdir}" install || return 1
+
+ install -m755 -d "${pkgdir}/usr/share/gconf/schemas"
+ gconf-merge-schema "${pkgdir}/usr/share/gconf/schemas/${pkgname}.schemas" --domain dasher ${pkgdir}/etc/gconf/schemas/*.schemas || return 1
+ rm -f ${pkgdir}/etc/gconf/schemas/*.schemas
+}
diff --git a/extra/dasher/dasher.install b/extra/dasher/dasher.install
new file mode 100644
index 000000000..7004dc5cb
--- /dev/null
+++ b/extra/dasher/dasher.install
@@ -0,0 +1,22 @@
+pkgname=dasher
+
+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/extra/davfs2/PKGBUILD b/extra/davfs2/PKGBUILD
new file mode 100644
index 000000000..ce4340ef7
--- /dev/null
+++ b/extra/davfs2/PKGBUILD
@@ -0,0 +1,32 @@
+# $Id: PKGBUILD 111470 2011-02-27 10:09:32Z thomas $
+# Maintainer: Thomas Baechler <thomas@archlinux.org>
+pkgname=davfs2
+pkgver=1.4.6
+pkgrel=1
+pkgdesc="File system driver that allows you to mount a WebDAV server as a local disk drive."
+arch=(i686 x86_64)
+url="http://savannah.nongnu.org/projects/davfs2"
+license=('GPL')
+depends=('neon')
+backup=(etc/davfs2/davfs2.conf etc/davfs2/secrets)
+source=(http://mirrors.zerg.biz/nongnu/davfs2/${pkgname}-${pkgver}.tar.gz)
+sha256sums=('e07252ec6db38c8f691bf2dada639e8300e058594f47a7c3c45020631621c356')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ dav_user=nobody dav_group=network ./configure --prefix=/usr --sysconfdir=/etc --disable-debug
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ # Create some dirs
+ install -d -m755 "${pkgdir}/sbin"
+ make DESTDIR="${pkgdir}" install
+
+ rm -f ${pkgdir}/sbin/{u,}mount.davfs
+ ln -sf /usr/sbin/mount.davfs "${pkgdir}/sbin/mount.davfs"
+ ln -sf /usr/sbin/umount.davfs "${pkgdir}/sbin/umount.davfs"
+
+ rm -f ${pkgdir}/usr/share/davfs2/{BUGS,COPYING,FAQ,NEWS,TODO,ChangeLog,GPL,README,THANKS}
+}
diff --git a/extra/dbus-glib/PKGBUILD b/extra/dbus-glib/PKGBUILD
new file mode 100644
index 000000000..bfecd8af8
--- /dev/null
+++ b/extra/dbus-glib/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: PKGBUILD 98493 2010-11-10 13:05:31Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=dbus-glib
+pkgver=0.92
+pkgrel=1
+pkgdesc="GLib bindings for DBUS"
+arch=(i686 x86_64)
+license=('GPL')
+url="http://www.freedesktop.org/wiki/Software/DBusBindings"
+depends=('dbus-core>=1.4.0' 'glib2>=2.26.0')
+makedepends=('pkgconfig')
+options=('!libtool' '!emptydirs')
+source=(http://dbus.freedesktop.org/releases/${pkgname}/${pkgname}-${pkgver}.tar.gz)
+md5sums=('b595b36890c4f9f8f5d5dec131c495f8')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \
+ --enable-static=no --enable-bash-completion=no
+ make
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/dbus-python/PKGBUILD b/extra/dbus-python/PKGBUILD
new file mode 100644
index 000000000..df66c9b8e
--- /dev/null
+++ b/extra/dbus-python/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id: PKGBUILD 101132 2010-11-28 12:58:39Z ibiru $
+# Contributor: Jan de Groot <jgc@archlinux.org>
+
+pkgname=dbus-python
+pkgver=0.83.1
+pkgrel=2
+pkgdesc="Python bindings for DBUS"
+arch=('i686' 'x86_64')
+license=('GPL' 'LGPL')
+url="http://www.freedesktop.org/wiki/Software/DBusBindings"
+depends=('dbus-glib>=0.82' 'python2>=2.7')
+makedepends=('pkg-config' 'docutils')
+options=('!libtool')
+source=(http://dbus.freedesktop.org/releases/${pkgname}/${pkgname}-${pkgver}.tar.gz)
+md5sums=('5fdf3970aa0c00020289de7ba8f3be18')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ PYTHON=python2 ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/dbus-qt3/PKGBUILD b/extra/dbus-qt3/PKGBUILD
new file mode 100644
index 000000000..c14237077
--- /dev/null
+++ b/extra/dbus-qt3/PKGBUILD
@@ -0,0 +1,32 @@
+# $Id: PKGBUILD 49853 2009-08-16 18:53:06Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=dbus-qt3
+pkgver=0.62
+pkgrel=4
+pkgdesc="QT3 bindings for DBUS"
+arch=(i686 x86_64)
+license=('GPL')
+url="http://www.freedesktop.org/software/dbus"
+depends=('qt3' 'dbus-core>=1.2.14')
+makedepends=('pkgconfig')
+options=('!libtool')
+source=(ftp://ftp.archlinux.org/other/dbus/dbus-qt3_0.62.git.20060814.orig.tar.gz
+ dbus-qt3-compile-fix-thoenig-01.patch
+ dbus-qt3-do-not-close-shared-connection-thoenig-01.patch)
+md5sums=('bdc61add46f64238fdc68a15e5f7269c'
+ '6c7a45865568340ee601d31e184653c1'
+ '9252c03a00d751201e53839d6a8ef78f')
+
+build() {
+ . /etc/profile.d/qt3.sh
+ cd "${srcdir}/${pkgname}-${pkgver}/qt3"
+ patch -Np1 -i "${srcdir}/dbus-qt3-compile-fix-thoenig-01.patch" || return 1
+ patch -Np1 -i "${srcdir}/dbus-qt3-do-not-close-shared-connection-thoenig-01.patch" || return 1
+ cd ..
+ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var || return 1
+ sed -e "s|DBUS_QT3_LIBS =|DBUS_QT3_LIBS = -L${QTDIR}/lib -lqt-mt|" \
+ -i Makefile qt3/Makefile || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/dbus-qt3/dbus-qt3-compile-fix-thoenig-01.patch b/extra/dbus-qt3/dbus-qt3-compile-fix-thoenig-01.patch
new file mode 100644
index 000000000..00b8b6026
--- /dev/null
+++ b/extra/dbus-qt3/dbus-qt3-compile-fix-thoenig-01.patch
@@ -0,0 +1,85 @@
+--- dbus-qt3/connection.cpp 2005-04-18 05:19:17.000000000 -0600
++++ dbus-qt3/connection.cpp 2005-04-19 14:35:07.000000000 -0600
+@@ -154,6 +154,7 @@
+
+ void* Connection::virtual_hook( int, void* )
+ {
++ return (void *)NULL;
+ }
+
+ void Connection::dbus_connection_setup_with_qt_main (DBusConnection *connection)
+--- dbus-qt3/message.cpp 2005-04-18 05:19:17.000000000 -0600
++++ dbus-qt3/message.cpp 2005-04-19 14:55:32.000000000 -0600
+@@ -359,6 +359,7 @@
+ Message Message::operator=( const Message& other )
+ {
+ //FIXME: ref the other.d->msg instead of copying it?
++ return (Message &)(d->msg);
+ }
+ /**
+ * Destructs message.
+@@ -508,42 +509,49 @@
+ const dbus_bool_t right_size_bool = b;
+ dbus_message_append_args( d->msg, DBUS_TYPE_BOOLEAN, &right_size_bool,
+ DBUS_TYPE_INVALID );
++ return (Message &)(d->msg);
+ }
+
+ Message& Message::operator<<( Q_INT8 byte )
+ {
+ dbus_message_append_args( d->msg, DBUS_TYPE_BYTE, &byte,
+ DBUS_TYPE_INVALID );
++ return (Message &)(d->msg);
+ }
+
+ Message& Message::operator<<( Q_INT32 num )
+ {
+ dbus_message_append_args( d->msg, DBUS_TYPE_INT32, &num,
+ DBUS_TYPE_INVALID );
++ return (Message &)(d->msg);
+ }
+
+ Message& Message::operator<<( Q_UINT32 num )
+ {
+ dbus_message_append_args( d->msg, DBUS_TYPE_UINT32, &num,
+ DBUS_TYPE_INVALID );
++ return (Message &)(d->msg);
+ }
+
+ Message& Message::operator<<( Q_INT64 num )
+ {
+ dbus_message_append_args( d->msg, DBUS_TYPE_INT64, &num,
+ DBUS_TYPE_INVALID );
++ return (Message &)(d->msg);
+ }
+
+ Message& Message::operator<<( Q_UINT64 num )
+ {
+ dbus_message_append_args( d->msg, DBUS_TYPE_UINT64, &num,
+ DBUS_TYPE_INVALID );
++ return (Message &)(d->msg);
+ }
+
+ Message& Message::operator<<( double num )
+ {
+ dbus_message_append_args( d->msg, DBUS_TYPE_DOUBLE, &num,
+ DBUS_TYPE_INVALID );
++ return (Message &)(d->msg);
+ }
+
+ Message& Message::operator<<( const QString& str )
+@@ -551,11 +559,13 @@
+ const char *u = str.utf8();
+ dbus_message_append_args( d->msg, DBUS_TYPE_STRING, &u,
+ DBUS_TYPE_INVALID );
++ return (Message &)(d->msg);
+ }
+
+ Message& Message::operator<<( const QVariant& custom )
+ {
+ //FIXME: imeplement
++ return (Message &)(d->msg);
+ }
+
+ }
+
diff --git a/extra/dbus-qt3/dbus-qt3-do-not-close-shared-connection-thoenig-01.patch b/extra/dbus-qt3/dbus-qt3-do-not-close-shared-connection-thoenig-01.patch
new file mode 100644
index 000000000..c159c0a90
--- /dev/null
+++ b/extra/dbus-qt3/dbus-qt3-do-not-close-shared-connection-thoenig-01.patch
@@ -0,0 +1,12 @@
+--- dbus-qt3/connection.cpp 2006-10-20 16:33:29.000000000 +0200
++++ dbus-qt3/connection.cpp 2006-10-20 16:33:10.000000000 +0200
+@@ -106,7 +106,7 @@
+
+ void Connection::close()
+ {
+- dbus_connection_close( d->connection );
++ dbus_connection_unref ( d->connection );
+ }
+
+ void Connection::flush()
+
diff --git a/extra/dbus/30-dbus b/extra/dbus/30-dbus
new file mode 100644
index 000000000..603e92d3e
--- /dev/null
+++ b/extra/dbus/30-dbus
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+# launches a session dbus instance
+
+dbuslaunch="`which dbus-launch 2>/dev/null`"
+if [ -n "$dbuslaunch" ] && [ -x "$dbuslaunch" ] && [ -z "$DBUS_SESSION_BUS_ADDRESS" ]; then
+ eval `$dbuslaunch --sh-syntax --exit-with-session`
+fi
+
diff --git a/extra/dbus/PKGBUILD b/extra/dbus/PKGBUILD
new file mode 100644
index 000000000..d26bae01d
--- /dev/null
+++ b/extra/dbus/PKGBUILD
@@ -0,0 +1,38 @@
+# $Id: PKGBUILD 103703 2010-12-22 15:11:09Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Link Dupont <link@subpop.net>
+#
+pkgname=dbus
+pkgver=1.4.1
+pkgrel=1
+pkgdesc="Freedesktop.org message bus system"
+url="http://www.freedesktop.org/Software/dbus"
+arch=(i686 x86_64)
+license=('GPL' 'custom')
+depends=("dbus-core>=${pkgver}" 'libx11')
+makedepends=('libsm' 'libice')
+source=(http://dbus.freedesktop.org/releases/${pkgname}/${pkgname}-${pkgver}.tar.gz
+ 30-dbus)
+md5sums=('99cb057700c0455fb68f8d57902f77ac'
+ 'd14e59575f04e55d21a04907b6fd9f3c')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ECHO="echo" ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \
+ --libexecdir=/usr/lib/dbus-1.0 --with-dbus-user=81 \
+ --with-system-pid-file=/var/run/dbus.pid \
+ --disable-verbose-mode --disable-static \
+ --enable-inotify --disable-dnotify \
+ --disable-tests --disable-asserts
+ make -C tools dbus-launch
+ install -m755 -d "${pkgdir}/usr/bin"
+ install -m755 -d "${pkgdir}/usr/share/man/man1"
+ install -m755 tools/dbus-launch "${pkgdir}/usr/bin/"
+ install -m644 doc/dbus-launch.1 "${pkgdir}/usr/share/man/man1/"
+
+ install -m755 -d "${pkgdir}/etc/X11/xinit/xinitrc.d"
+ install -m755 "${srcdir}/30-dbus" "${pkgdir}/etc/X11/xinit/xinitrc.d/"
+
+ install -d -m755 "${pkgdir}/usr/share/licenses/dbus"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/dbus/"
+}
diff --git a/extra/dcfldd/PKGBUILD b/extra/dcfldd/PKGBUILD
new file mode 100644
index 000000000..f04cd8c56
--- /dev/null
+++ b/extra/dcfldd/PKGBUILD
@@ -0,0 +1,21 @@
+# $Id: PKGBUILD 47983 2009-07-30 02:30:21Z eric $
+# Contributor: Paul Mattal <pjmattal@elys.com>
+# Maintainer: Paul Mattal <pjmattal@elys.com>
+pkgname=dcfldd
+pkgver=1.3.4.1
+pkgrel=2
+pkgdesc="DCFL (DoD Computer Forensics Lab) dd replacement with hashing"
+arch=(i686 x86_64)
+url="http://dcfldd.sourceforge.net/"
+license=('GPL')
+depends=(glibc)
+source=(http://downloads.sourceforge.net/sourceforge/$pkgname/$pkgname-${pkgver%.*}-${pkgver##*.}.tar.gz)
+md5sums=('952026c872f11b53ce0ec6681a3eef0a')
+sha1sums=('fb1c55f107a6af5ef8703a44d33476e508815913')
+
+build() {
+ cd "$srcdir/$pkgname-${pkgver%.*}-${pkgver##*.}" || return 1
+ ./configure --prefix=/usr --mandir=/usr/share/man || return 1
+ make || return 1
+ make DESTDIR="$pkgdir" install || return 1
+}
diff --git a/extra/dconf/PKGBUILD b/extra/dconf/PKGBUILD
new file mode 100644
index 000000000..4d95f6bfa
--- /dev/null
+++ b/extra/dconf/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id:
+# Maintainer: Ionut Biru <ibiru@archlinux.org>
+pkgname=dconf
+pkgver=0.5.1
+pkgrel=1
+pkgdesc="A low-level configuration system."
+arch=(i686 x86_64)
+url="http://live.gnome.org/dconf"
+license=('LGPL2.1')
+depends=('glib2>=2.25.17')
+makedepends=('vala' 'gobject-introspection' 'gtk2')
+optdepends=('gtk2: for dconf-editor')
+install=dconf.install
+source=(http://download.gnome.org/sources/${pkgname}/0.5/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('0083d70e1b5e540d8d4b3f04fa5d17dff4c574136682fe3bdd9b5ecc196ec4f6')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ ./configure --prefix=/usr \
+ --libexecdir=/usr/lib/dconf
+ make
+ make DESTDIR="$pkgdir/" install
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/extra/dconf/dconf.install b/extra/dconf/dconf.install
new file mode 100644
index 000000000..5a87df82f
--- /dev/null
+++ b/extra/dconf/dconf.install
@@ -0,0 +1,11 @@
+post_install() {
+ usr/bin/gio-querymodules usr/lib/gio/modules
+}
+
+post_upgrade(){
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/extra/dcraw/PKGBUILD b/extra/dcraw/PKGBUILD
new file mode 100644
index 000000000..2334cc49b
--- /dev/null
+++ b/extra/dcraw/PKGBUILD
@@ -0,0 +1,51 @@
+# $Id: PKGBUILD 109077 2011-02-05 18:14:46Z eric $
+# Maintainer: tobias <tobias@archlinux.org>
+# Contributor: Tobias Kieslich <tobias@justdreams.de>
+
+pkgname=dcraw
+pkgver=9.06
+pkgrel=1
+pkgdesc="A command line based converter for digicams raw output"
+arch=('i686' 'x86_64')
+url="http://www.cybercom.net/~dcoffin/dcraw/"
+license=('custom')
+depends=('lcms')
+source=(http://www.cybercom.net/~dcoffin/dcraw/archive/${pkgname}-${pkgver}.tar.gz
+ license.txt)
+md5sums=('22921c24c697bbe43c1010f463176921' '110b4604a6dacd5537339c4082e9e12a')
+sha1sums=('7bd7b2283cf1ad1cb1591d0f69fd6831689b20b0' '502c8f0ac7434d48f5dcb2eefe7599627cb69454')
+
+build() {
+ cd "${srcdir}/${pkgname}"
+ gcc ${CFLAGS} -O3 -o dcraw dcraw.c -lm -ljpeg -llcms -DLOCALEDIR=\"/usr/share/locale/\"
+}
+
+package() {
+ cd "${srcdir}/${pkgname}"
+ install -Dm755 dcraw "${pkgdir}"/usr/bin/dcraw
+ install -Dm644 dcraw.1 "${pkgdir}"/usr/share/man/man1/dcraw.1
+
+ for langchar in \
+ fr.latin1 it.latin1 de.latin1 pt.latin1 es.latin1 sv.latin1 \
+ ca.latin1 da.latin1 cs.latin2 hu.latin2 pl.latin2 eo.latin3 ru.koi8-r \
+ zh_TW.big5 zh_CN.gb2312
+ do
+ lang=$(echo $langchar | cut -d. -f1)
+ char=$(echo $langchar | cut -d. -f2-)
+ mkdir -p -m 755 "${pkgdir}"/usr/share/man/$lang/man1
+ iconv -f utf-8 -t $char dcraw_$lang.1 > "${pkgdir}"/usr/share/man/$lang/man1/dcraw.1
+ mkdir -p -m 755 "${pkgdir}"/usr/share/man/$lang.UTF-8/man1
+ cp dcraw_$lang.1 "${pkgdir}"/usr/share/man/$lang.UTF-8/man1/dcraw.1
+ mkdir -p -m 755 "${pkgdir}"/usr/share/locale/$lang/LC_MESSAGES
+ msgfmt -o "${pkgdir}"/usr/share/locale/$lang/LC_MESSAGES/dcraw.mo dcraw_$lang.po
+ done
+
+# dcraw_nl.1 is missing
+ langchar=nl.latin1
+ lang=$(echo $langchar | cut -d. -f1)
+ char=$(echo $langchar | cut -d. -f2-)
+ mkdir -p -m 755 "${pkgdir}"/usr/share/locale/$lang/LC_MESSAGES
+ msgfmt -o "${pkgdir}"/usr/share/locale/$lang/LC_MESSAGES/dcraw.mo dcraw_$lang.po
+
+ install -Dm644 "${srcdir}/license.txt" "${pkgdir}"/usr/share/licenses/${pkgname}/license.txt
+}
diff --git a/extra/dcraw/dcraw.install b/extra/dcraw/dcraw.install
new file mode 100644
index 000000000..26359645a
--- /dev/null
+++ b/extra/dcraw/dcraw.install
@@ -0,0 +1,13 @@
+post_install() {
+ cat << EOF
+
+NOTE for dcraw:
+----
+ ==> dcraw provides the simple commandline tools for raw conversion. If you
+ ==> are looking for a more sophisticated way consider gimp-ufraw, which
+ ==> provides a gimp-plugin and a standalone application that can even convert
+ ==> to 16-bit tiff files (which you can use in cinepaint eg.) So please do a
+ ==> 'pacman -S gimp-ufraw' to get it.
+
+EOF
+}
diff --git a/extra/dcraw/license.txt b/extra/dcraw/license.txt
new file mode 100644
index 000000000..5803cf601
--- /dev/null
+++ b/extra/dcraw/license.txt
@@ -0,0 +1,16 @@
+This is a command-line ANSI C program to convert raw photos from
+any digital camera on any computer running any operating system.
+
+No license is required to download and use dcraw.c. However,
+to lawfully redistribute this code, you must either (a) include
+full source code* for all executable files containing RESTRICTED
+functions, (b) remove all RESTRICTED functions, re-implement them,
+or copy them from an earlier, unrestricted Revision of dcraw.c,
+or (c) purchase a license from the author.
+
+The functions that process Foveon images have been RESTRICTED
+since Revision 1.237. All other code remains free for all uses.
+
+*If you have not modified dcraw.c in any way, a link to my
+homepage qualifies as "full source code".
+
diff --git a/extra/ddd/ChangeLog b/extra/ddd/ChangeLog
new file mode 100644
index 000000000..b3d8b00af
--- /dev/null
+++ b/extra/ddd/ChangeLog
@@ -0,0 +1,19 @@
+2010-08-11 Eric Belanger <eric@archlinux.org>
+
+ * ddd 3.3.12-2
+ * Built against elfutils
+ * Added gcc build patch
+ * Fixed install script
+
+2009-03-22 Eric Belanger <eric@archlinux.org>
+
+ * ddd 3.3.12-1
+ * Upstream update
+ * Updated license
+
+2008-11-11 Eric Belanger <eric@archlinux.org>
+
+ * ddd 3.3.11-5
+ * Rebuilt against libxaw 1.0.5 (close FS#12074)
+ * Added info file support
+ * Added ChangeLog
diff --git a/extra/ddd/PKGBUILD b/extra/ddd/PKGBUILD
new file mode 100644
index 000000000..8fdf4cc16
--- /dev/null
+++ b/extra/ddd/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id: PKGBUILD 87277 2010-08-11 19:35:53Z eric $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+# Contributor: Aurelien Foret <orelien@chez.com>
+
+pkgname=ddd
+pkgver=3.3.12
+pkgrel=2
+pkgdesc="A graphical front-end for command-line debuggers such as GDB, JDB, pydb, perl debugger..."
+arch=('i686' 'x86_64')
+url="http://www.gnu.org/software/ddd/"
+license=('GPL3' 'LGPL3')
+depends=('gcc-libs' 'ncurses' 'lesstif' 'libxaw' 'elfutils' 'libxext')
+optdepends=('gdb: to use the Gnu debugger' 'jdk: to use the Java debugger' 'pydb: to use the Python debugger' 'perl: to use the Perl debugger')
+install=ddd.install
+changelog=ChangeLog
+source=(http://ftp.gnu.org/gnu/ddd/${pkgname}-${pkgver}.tar.gz ddd-3.3.12-gcc44.patch)
+md5sums=('c50396db7bac3862a6d2555b3b22c34e' '41dc59d8cf502569bab1b1a4a222a1c6')
+sha1sums=('b91d2dfb1145af409138bd34517a898341724e56' '3d43c9d56347f248732b1d72f29c7bf799f03864')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -p1 < ../ddd-3.3.12-gcc44.patch
+ ./configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+ install -D -m644 icons/ddd.xpm "${pkgdir}/usr/share/pixmaps/ddd.xpm"
+}
diff --git a/extra/ddd/ddd-3.3.12-gcc44.patch b/extra/ddd/ddd-3.3.12-gcc44.patch
new file mode 100644
index 000000000..2464b2b4a
--- /dev/null
+++ b/extra/ddd/ddd-3.3.12-gcc44.patch
@@ -0,0 +1,10 @@
+--- ddd-3.3.12-orig/ddd/strclass.C
++++ ddd-3.3.12/ddd/strclass.C
+@@ -39,6 +39,7 @@
+ #include <limits.h>
+ #include <new>
+ #include <stdlib.h>
++#include <stdio.h>
+
+ void string::error(const char* msg) const
+ {
diff --git a/extra/ddd/ddd.install b/extra/ddd/ddd.install
new file mode 100644
index 000000000..a23e415e7
--- /dev/null
+++ b/extra/ddd/ddd.install
@@ -0,0 +1,18 @@
+infodir=/usr/share/info
+filelist=(ddd.info.gz ddd-themes.info.gz)
+
+post_install() {
+ for file in ${filelist[@]}; do
+ install-info $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ for file in ${filelist[@]}; do
+ install-info --delete $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
diff --git a/extra/ddrescue/PKGBUILD b/extra/ddrescue/PKGBUILD
new file mode 100644
index 000000000..9d57d4bb4
--- /dev/null
+++ b/extra/ddrescue/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id: PKGBUILD 107823 2011-01-27 04:32:13Z paul $
+# Maintainer: Paul Mattal <paul@archlinux.org>
+
+pkgname=ddrescue
+pkgver=1.14
+pkgrel=1
+pkgdesc="GNU data recovery tool"
+arch=('i686' 'x86_64')
+url="http://www.gnu.org/software/ddrescue/ddrescue.html"
+license=('GPL3')
+depends=('gcc-libs')
+install=$pkgname.install
+source=(http://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.gz)
+md5sums=('d6f6cc63df9ad352bc6e43b65c975af5')
+
+build() {
+ cd "$srcdir"/$pkgname-$pkgver
+ ./configure --prefix=/usr || return 1
+ make || return 1
+ make DESTDIR="$pkgdir" install install-man || return 1
+ rm "$pkgdir"/usr/share/info/dir || return 1
+}
diff --git a/extra/ddrescue/ddrescue.install b/extra/ddrescue/ddrescue.install
new file mode 100644
index 000000000..9e2afa74e
--- /dev/null
+++ b/extra/ddrescue/ddrescue.install
@@ -0,0 +1,22 @@
+infodir=/usr/share/info
+filelist=(ddrescue.info)
+
+post_install() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info --delete $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/extra/deskbar-applet/PKGBUILD b/extra/deskbar-applet/PKGBUILD
new file mode 100644
index 000000000..0845c3825
--- /dev/null
+++ b/extra/deskbar-applet/PKGBUILD
@@ -0,0 +1,39 @@
+# $Id: PKGBUILD 106730 2011-01-18 17:31:45Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=deskbar-applet
+pkgver=2.32.0
+pkgrel=4
+pkgdesc="An all-in-one search bar for the GNOME panel"
+arch=(i686 x86_64)
+url="http://raphael.slinckx.net/deskbar/"
+license=('GPL')
+depends=('python-gnomekeyring' 'python-gnomeapplet' 'dbus-python' 'python-gnomedesktop' 'python-wnck' 'python2-gconf')
+makedepends=('evolution-data-server' 'intltool' 'gnome-doc-utils')
+options=('!libtool' '!emptydirs')
+groups=('gnome-extra')
+install=deskbar-applet.install
+source=(http://ftp.gnome.org/pub/GNOME/sources/deskbar-applet/2.32/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('123f2231ac8449f8376030c1b25394f9bab18d5d219292afc6f27eda77d4e684')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ sed '/^modulesdir=/ s/@libdir@/@libexecdir@/' -i data/deskbar-applet.pc.in
+ PYTHON=python2 ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --libexecdir=/usr/lib \
+ --disable-scrollkeeper --enable-evolution \
+ --disable-schemas-install
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 DESTDIR="${pkgdir}" install
+
+ sed -i "s|#!/usr/bin/env python$|#!/usr/bin/env python2|" \
+ "$pkgdir/usr/lib/deskbar-applet/deskbar-applet"
+
+ install -m755 -d "${pkgdir}/usr/share/gconf/schemas"
+ gconf-merge-schema "${pkgdir}/usr/share/gconf/schemas/${pkgname}.schemas" --domain deskbar-applet ${pkgdir}/etc/gconf/schemas/*.schemas
+ rm -f ${pkgdir}/etc/gconf/schemas/*.schemas
+}
diff --git a/extra/deskbar-applet/deskbar-applet.install b/extra/deskbar-applet/deskbar-applet.install
new file mode 100644
index 000000000..a97eaf8f2
--- /dev/null
+++ b/extra/deskbar-applet/deskbar-applet.install
@@ -0,0 +1,22 @@
+pkgname=deskbar-applet
+
+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/extra/desktop-file-utils/ChangeLog b/extra/desktop-file-utils/ChangeLog
new file mode 100644
index 000000000..8941e4825
--- /dev/null
+++ b/extra/desktop-file-utils/ChangeLog
@@ -0,0 +1,7 @@
+2008-07-22 Alexander Fehr <pizzapunk gmail com>
+
+ * desktop-file-utils-0.15-1:
+ New upstream release.
+ New maintainer.
+ Changed url.
+ Added ChangeLog.
diff --git a/extra/desktop-file-utils/PKGBUILD b/extra/desktop-file-utils/PKGBUILD
new file mode 100644
index 000000000..fcc02878f
--- /dev/null
+++ b/extra/desktop-file-utils/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 108960 2011-02-05 09:46:18Z andyrtr $
+# Maintainer: Alexander Fehr <pizzapunk gmail com>
+
+pkgname=desktop-file-utils
+pkgver=0.18
+pkgrel=1
+pkgdesc="Command line utilities for working with desktop entries"
+arch=('i686' 'x86_64')
+url="http://www.freedesktop.org/wiki/Software/desktop-file-utils"
+license=('GPL')
+depends=('glib2')
+source=(http://www.freedesktop.org/software/desktop-file-utils/releases/desktop-file-utils-${pkgver}.tar.bz2)
+md5sums=('d966b743eb394650f98d5dd56b9aece1')
+
+build() {
+ cd "${srcdir}/desktop-file-utils-${pkgver}"
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}/desktop-file-utils-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
+
diff --git a/extra/devhelp/PKGBUILD b/extra/devhelp/PKGBUILD
new file mode 100644
index 000000000..5b2e644d5
--- /dev/null
+++ b/extra/devhelp/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 92057 2010-09-28 17:39:36Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Link Dupont <link@subpop.net>
+
+pkgname=devhelp
+pkgver=2.32.0
+pkgrel=1
+pkgdesc="API documentation browser for GNOME"
+arch=(i686 x86_64)
+license=('GPL')
+url="http://live.gnome.org/devhelp/"
+depends=('gconf>=2.32.0' 'libwnck>=2.30.5' 'libwebkit>=1.2.1' 'hicolor-icon-theme' 'libunique>=1.1.6')
+makedepends=('pkgconfig' 'intltool')
+options=('!libtool' '!emptydirs')
+install=devhelp.install
+source=(http://ftp.gnome.org/pub/GNOME/sources/devhelp/2.32/devhelp-${pkgver}.tar.bz2)
+sha256sums=('61b342cbaf27379be9baa5df1f34c9464916601ec4378fa7e1c76fcc686553e4')
+
+build() {
+ cd "${srcdir}/devhelp-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-static
+ make
+ 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 devhelp ${pkgdir}/etc/gconf/schemas/*.schemas
+ rm -f ${pkgdir}/etc/gconf/schemas/*.schemas
+}
diff --git a/extra/devhelp/devhelp.install b/extra/devhelp/devhelp.install
new file mode 100644
index 000000000..4db5f6e5c
--- /dev/null
+++ b/extra/devhelp/devhelp.install
@@ -0,0 +1,22 @@
+pkgname=devhelp
+
+post_install() {
+ usr/sbin/gconfpkg --install ${pkgname}
+ 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() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
diff --git a/extra/devilspie/PKGBUILD b/extra/devilspie/PKGBUILD
new file mode 100644
index 000000000..1dba7d39b
--- /dev/null
+++ b/extra/devilspie/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 107892 2011-01-27 13:30:08Z ibiru $
+# Maintainer: Aaron Griffin <aaron@archlinux.org>
+# Contributor: Travis Willard <travisw@wmpub.ca>
+# Contributor: William Rea <sillywilly@gmail.com>
+
+pkgname=devilspie
+pkgver=0.22
+pkgrel=4
+pkgdesc="x11 window matching utility"
+arch=('i686' 'x86_64')
+url="http://www.burtonini.com/blog/computers/devilspie"
+license=('GPL')
+depends=('libwnck')
+makedepends=('pkgconfig' 'intltool' 'gnome-common')
+source=("http://www.burtonini.com/computing/$pkgname-$pkgver.tar.gz")
+md5sums=('4190e12f99ab92c0427e457d9fbfe231')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ sed -i -e '/-DG.*_DISABLE_DEPRECATED/d' src/Makefile.am
+
+ ./autogen.sh
+
+ ./configure --prefix=/usr --sysconfdir=/etc
+ make
+ make prefix=$pkgdir/usr install
+ # Make and install blank config
+ mkdir -p $pkgdir/etc/devilspie
+ echo '(debug)' > $pkgdir/etc/devilspie/example.ds
+}
diff --git a/extra/dhcp/ChangeLog b/extra/dhcp/ChangeLog
new file mode 100644
index 000000000..9cffaa9d0
--- /dev/null
+++ b/extra/dhcp/ChangeLog
@@ -0,0 +1,11 @@
+
+2010-07-16 kevin <kevin@archlinux.org>
+ * dhcp 4.2.0-1
+
+2009-07-19 kevin <kevin@archlinux.org>
+ * dhcp 4.1.0.p1-1
+ * Adopted RedHat patch to fix bug where dhcpd won't start if ipv6 module
+ is not loaded. Fixes FS#12792.
+ * Added /etc/conf.d/dhcp feature contributed by Fabiano Furtado Pessoa
+ Coelho <fusca14@gmail.com>
+
diff --git a/extra/dhcp/PKGBUILD b/extra/dhcp/PKGBUILD
new file mode 100644
index 000000000..fe232f5bb
--- /dev/null
+++ b/extra/dhcp/PKGBUILD
@@ -0,0 +1,81 @@
+# $Id: PKGBUILD 104595 2011-01-04 13:21:07Z daniel $
+# Maintainer: Daniel Isenmann <daniel @archlinux.org>
+
+pkgbase=dhcp
+pkgname=('dhcp' 'dhclient')
+
+# separate patch levels with a period to maintain proper versioning.
+pkgver=4.2.0.2
+_pkgver=4.2.0-P2
+
+pkgrel=1
+arch=('i686' 'x86_64')
+license=('custom:isc-dhcp')
+url="https://www.isc.org/software/dhcp"
+source=(http://ftp.isc.org/isc/${pkgname}/${pkgname}-${_pkgver}.tar.gz
+ dhcpd dhcp.conf.d
+ dhcp-4.1.1-missing-ipv6-not-fatal.patch
+ dhclient-script-pathFixes.patch)
+md5sums=('a98f4ce3ca651e7e28a5a1ae6398689e'
+ 'df22cffa7d7415ece7bb025b7bf774dd'
+ '49da3192e5c885e3c7d02f447c2dea5e'
+ 'fd64aeb4f399dcc41ea43089a3811094'
+ 'ddcc5cd576ec631ade6c4da21952b50b')
+
+build() {
+ cd ${srcdir}/${pkgname}-${_pkgver}
+
+ # Define _GNU_SOURCE to fix IPV6.
+ sed '/^CFLAGS="$CFLAGS/ s/INGS"/INGS -D_GNU_SOURCE"/' -i configure
+
+ # Make not having ipv6 non-fatal.
+ patch -Np0 -i ${srcdir}/dhcp-4.1.1-missing-ipv6-not-fatal.patch
+
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --with-srv-lease-file=/var/state/dhcp/dhcpd.leases \
+ --with-srv6-lease-file=/var/state/dhcp/dhcpd6.leases
+
+ make
+
+ patch -i ${srcdir}/dhclient-script-pathFixes.patch client/scripts/linux
+}
+
+package_dhcp(){
+ pkgdesc="A DHCP server, client, and relay agent"
+ depends=('openssl>=0.9.8a')
+ backup=('etc/dhcpd.conf' 'etc/conf.d/dhcp')
+ install=dhcp.install
+
+ cd ${srcdir}/${pkgname}-${_pkgver}
+ make DESTDIR=${pkgdir} install
+
+ install -D -m755 ${srcdir}/dhcpd ${pkgdir}/etc/rc.d/dhcpd
+ install -D -m644 ${srcdir}/dhcp.conf.d ${pkgdir}/etc/conf.d/${pkgbase}
+ mkdir -p ${pkgdir}/var/state/dhcp
+
+ # Remove dhclient
+ make -C client DESTDIR=${pkgdir} uninstall
+
+ # install license
+ install -m644 -D LICENSE ${pkgdir}/usr/share/licenses/dhcp/LICENSE
+}
+
+package_dhclient(){
+ pkgdesc="dhclient is standalone client from the dhcp package"
+ depends=('bash')
+
+ cd ${srcdir}/${pkgname}-${_pkgver}
+ make -C client DESTDIR=${pkgdir} install
+
+ # move dhclient.conf to dhclient.conf.example
+ mv ${pkgdir}/etc/dhclient.conf{,.example}
+
+ # directory needed for leasefiles
+ mkdir -p ${pkgdir}/var/lib/dhclient
+
+ # install dhclient linux script
+ install -m755 -D client/scripts/linux ${pkgdir}/sbin/dhclient-script
+
+ # install license
+ install -m644 -D LICENSE ${pkgdir}/usr/share/licenses/dhclient/LICENSE
+}
diff --git a/extra/dhcp/dhclient-script-pathFixes.patch b/extra/dhcp/dhclient-script-pathFixes.patch
new file mode 100644
index 000000000..e19c328d2
--- /dev/null
+++ b/extra/dhcp/dhclient-script-pathFixes.patch
@@ -0,0 +1,118 @@
+--- linux 2009-04-21 16:21:09.000000000 +0200
++++ linux_new 2010-06-30 19:06:20.000000000 +0200
+@@ -23,7 +23,7 @@
+ # of the $1 in its args.
+
+ # 'ip' just looks too weird. /sbin/ip looks less weird.
+-ip=/sbin/ip
++ip=/usr/sbin/ip
+
+ make_resolv_conf() {
+ if [ x"$new_domain_name_servers" != x ]; then
+@@ -112,9 +112,9 @@
+ if [ x$reason = xPREINIT ]; then
+ if [ x$alias_ip_address != x ]; then
+ # Bring down alias interface. Its routes will disappear too.
+- ifconfig $interface:0- inet 0
++ /sbin/ifconfig $interface:0- inet 0
+ fi
+- ifconfig $interface 0 up
++ /sbin/ifconfig $interface 0 up
+
+ # We need to give the kernel some time to get the interface up.
+ sleep 1
+@@ -141,32 +141,32 @@
+ if [ x$old_ip_address != x ] && [ x$alias_ip_address != x ] && \
+ [ x$alias_ip_address != x$old_ip_address ]; then
+ # Possible new alias. Remove old alias.
+- ifconfig $interface:0- inet 0
++ /sbin/ifconfig $interface:0- inet 0
+ fi
+ if [ x$old_ip_address != x ] && [ x$old_ip_address != x$new_ip_address ]; then
+ # IP address changed. Bringing down the interface will delete all routes,
+ # and clear the ARP cache.
+- ifconfig $interface inet 0 down
++ /sbin/ifconfig $interface inet 0 down
+
+ fi
+ if [ x$old_ip_address = x ] || [ x$old_ip_address != x$new_ip_address ] || \
+ [ x$reason = xBOUND ] || [ x$reason = xREBOOT ]; then
+
+- ifconfig $interface inet $new_ip_address $new_subnet_arg \
++ /sbin/ifconfig $interface inet $new_ip_address $new_subnet_arg \
+ $new_broadcast_arg $mtu_arg
+ # Add a network route to the computed network address.
+ for router in $new_routers; do
+ if [ "x$new_subnet_mask" = "x255.255.255.255" ] ; then
+- route add -host $router dev $interface
++ /sbin/route add -host $router dev $interface
+ fi
+- route add default gw $router $metric_arg dev $interface
++ /sbin/route add default gw $router $metric_arg dev $interface
+ done
+ fi
+ if [ x$new_ip_address != x$alias_ip_address ] && [ x$alias_ip_address != x ];
+ then
+- ifconfig $interface:0- inet 0
+- ifconfig $interface:0 inet $alias_ip_address $alias_subnet_arg
+- route add -host $alias_ip_address $interface:0
++ /sbin/ifconfig $interface:0- inet 0
++ /sbin/ifconfig $interface:0 inet $alias_ip_address $alias_subnet_arg
++ /sbin/route add -host $alias_ip_address $interface:0
+ fi
+ make_resolv_conf
+ exit_with_hooks 0
+@@ -176,42 +176,42 @@
+ || [ x$reason = xSTOP ]; then
+ if [ x$alias_ip_address != x ]; then
+ # Turn off alias interface.
+- ifconfig $interface:0- inet 0
++ /sbin/ifconfig $interface:0- inet 0
+ fi
+ if [ x$old_ip_address != x ]; then
+ # Shut down interface, which will delete routes and clear arp cache.
+- ifconfig $interface inet 0 down
++ /sbin/ifconfig $interface inet 0 down
+ fi
+ if [ x$alias_ip_address != x ]; then
+- ifconfig $interface:0 inet $alias_ip_address $alias_subnet_arg
+- route add -host $alias_ip_address $interface:0
++ /sbin/ifconfig $interface:0 inet $alias_ip_address $alias_subnet_arg
++ /sbin/route add -host $alias_ip_address $interface:0
+ fi
+ exit_with_hooks 0
+ fi
+
+ if [ x$reason = xTIMEOUT ]; then
+ if [ x$alias_ip_address != x ]; then
+- ifconfig $interface:0- inet 0
++ /sbin/ifconfig $interface:0- inet 0
+ fi
+- ifconfig $interface inet $new_ip_address $new_subnet_arg \
++ /sbin/ifconfig $interface inet $new_ip_address $new_subnet_arg \
+ $new_broadcast_arg $mtu_arg
+ set $new_routers
+ if ping -q -c 1 $1; then
+ if [ x$new_ip_address != x$alias_ip_address ] && \
+ [ x$alias_ip_address != x ]; then
+- ifconfig $interface:0 inet $alias_ip_address $alias_subnet_arg
+- route add -host $alias_ip_address dev $interface:0
++ /sbin/ifconfig $interface:0 inet $alias_ip_address $alias_subnet_arg
++ /sbin/route add -host $alias_ip_address dev $interface:0
+ fi
+ for router in $new_routers; do
+ if [ "x$new_subnet_mask" = "x255.255.255.255" ] ; then
+- route add -host $router dev $interface
++ /sbin/route add -host $router dev $interface
+ fi
+- route add default gw $router $metric_arg dev $interface
++ /sbin/route add default gw $router $metric_arg dev $interface
+ done
+ make_resolv_conf
+ exit_with_hooks 0
+ fi
+- ifconfig $interface inet 0 down
++ /sbin/ifconfig $interface inet 0 down
+ exit_with_hooks 1
+ fi
+
diff --git a/extra/dhcp/dhcp-4.1.1-missing-ipv6-not-fatal.patch b/extra/dhcp/dhcp-4.1.1-missing-ipv6-not-fatal.patch
new file mode 100644
index 000000000..cc5ddb843
--- /dev/null
+++ b/extra/dhcp/dhcp-4.1.1-missing-ipv6-not-fatal.patch
@@ -0,0 +1,39 @@
+--- common/discover.c 2009-09-29 21:44:49.000000000 +0200
++++ common/discover.c_new 2010-06-30 19:40:02.000000000 +0200
+@@ -443,7 +443,7 @@
+ }
+
+ #ifdef DHCPv6
+- if (local_family == AF_INET6) {
++ if ((local_family == AF_INET6) && !access("/proc/net/if_inet6", R_OK)) {
+ ifaces->fp6 = fopen("/proc/net/if_inet6", "r");
+ if (ifaces->fp6 == NULL) {
+ log_error("Error opening '/proc/net/if_inet6' to "
+@@ -454,6 +454,8 @@
+ ifaces->fp = NULL;
+ return 0;
+ }
++ } else {
++ ifaces->fp6 = NULL;
+ }
+ #endif
+
+@@ -721,7 +723,7 @@
+ return 1;
+ }
+ #ifdef DHCPv6
+- if (!(*err)) {
++ if (!(*err) && ifaces->fp6) {
+ if (local_family == AF_INET6)
+ return next_iface6(info, err, ifaces);
+ }
+@@ -740,7 +742,8 @@
+ ifaces->sock = -1;
+ #ifdef DHCPv6
+ if (local_family == AF_INET6) {
+- fclose(ifaces->fp6);
++ if(ifaces->fp6)
++ fclose(ifaces->fp6);
+ ifaces->fp6 = NULL;
+ }
+ #endif
diff --git a/extra/dhcp/dhcp.conf.d b/extra/dhcp/dhcp.conf.d
new file mode 100644
index 000000000..99ba6d13d
--- /dev/null
+++ b/extra/dhcp/dhcp.conf.d
@@ -0,0 +1,6 @@
+#
+# Arguments to be passed to the DHCP server daemon
+#
+
+DHCP_ARGS="-q"
+
diff --git a/extra/dhcp/dhcp.install b/extra/dhcp/dhcp.install
new file mode 100644
index 000000000..c0ad39e36
--- /dev/null
+++ b/extra/dhcp/dhcp.install
@@ -0,0 +1,11 @@
+# arg 1: the new package version
+post_install() {
+ [ -f var/state/dhcp/dhcpd.leases ] || : >var/state/dhcp/dhcpd.leases
+ #echo "If dhcpd doesn't start, ensure the ipv6 kernel module is loaded."
+}
+
+# arg 1: the new package version
+# arg 2: the old package version
+post_upgrade() {
+ post_install $1
+}
diff --git a/extra/dhcp/dhcpd b/extra/dhcp/dhcpd
new file mode 100755
index 000000000..1fbb31e7c
--- /dev/null
+++ b/extra/dhcp/dhcpd
@@ -0,0 +1,40 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+. /etc/conf.d/dhcp
+
+PIDFILE="/var/run/dhcpd.pid"
+PID=`cat $PIDFILE 2>/dev/null`
+case "$1" in
+ start)
+ stat_busy "Starting DHCP Server"
+ if [ "$PID" = "" ]; then
+ /usr/sbin/dhcpd $DHCP_ARGS
+ fi
+ if [ "$PID" != "" -o $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon dhcpd
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping DHCP Server"
+ [ ! -z "$PID" ] && kill $PID &> /dev/null
+ rm -f $PIDFILE
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon dhcpd
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
diff --git a/extra/di/PKGBUILD b/extra/di/PKGBUILD
new file mode 100644
index 000000000..e9922cee3
--- /dev/null
+++ b/extra/di/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 107485 2011-01-26 04:42:16Z eric $
+# Maintainer: Eric Bélanger <eric@archlinux.org>
+
+pkgname=di
+pkgver=4.27
+pkgrel=1
+pkgdesc="A disk information utility, displaying everything (and more) that your df command does"
+arch=('i686' 'x86_64')
+url="http://www.gentoo.com/di/"
+license=('ZLIB')
+depends=('glibc')
+options=('!makeflags')
+source=(http://www.gentoo.com/di/${pkgname}-${pkgver}.tar.gz)
+md5sums=('b1a7ee87b83d72c273558a5ec815bfc3')
+sha1sums=('a079258f2a6d1861c0a42761864d3113b384da97')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make INSTALL_DIR="${pkgdir}/usr" install
+ install -D -m644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+}
diff --git a/extra/diffstat/PKGBUILD b/extra/diffstat/PKGBUILD
new file mode 100644
index 000000000..f2651acf0
--- /dev/null
+++ b/extra/diffstat/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 108700 2011-02-02 16:57:59Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Matthias-Christian Ott <matthias.christian.at.tiscali.de>
+
+pkgname=diffstat
+pkgver=1.54
+pkgrel=1
+pkgdesc="Display a histogram of diff changes"
+arch=('i686' 'x86_64')
+url="http://invisible-island.net/diffstat"
+depends=('glibc')
+license=('GPL')
+source=("ftp://invisible-island.net/${pkgname}/${pkgname}-${pkgver}.tgz")
+md5sums=('af08bef2eb37050ceb0c4fddedb2ee36')
+
+build () {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ ./configure --prefix=/usr \
+ --mandir=/usr/share/man
+ make || return 1
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR=${pkgdir}/ install || return 1
+}
diff --git a/extra/digikam/PKGBUILD b/extra/digikam/PKGBUILD
new file mode 100644
index 000000000..bfaf79277
--- /dev/null
+++ b/extra/digikam/PKGBUILD
@@ -0,0 +1,37 @@
+# $Id: PKGBUILD 112844 2011-03-07 07:38:30Z tpowa $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=digikam
+pkgver=1.9.0
+pkgrel=1
+pkgdesc="Digital photo management application for kde"
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://digikam.sourceforge.net"
+depends=('kdebase-runtime' 'kdegraphics-libs' 'kdepimlibs' 'kdeedu-marble' 'liblqr')
+makedepends=('pkgconfig' 'cmake' 'automoc4' 'doxygen')
+replaces=('digikamimageplugins')
+install=digikam.install
+optdepends=('kipi-plugins: for more extras and plugins')
+source=(http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.bz2)
+
+build() {
+ cd ${srcdir}
+ mkdir build
+ cd build
+ # use internel lensfun packages
+ cmake ../${pkgname}-${pkgver} \
+ -DLENSFUN_LIBRARY="" \
+ -DLENSFUN_INCLUDE_DIR="" \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DENABLE_MARBLEWIDGET=yes \
+ -DWITH_MarbleWidget=yes \
+ -DCMAKE_SKIP_RPATH=ON
+ make all
+}
+
+package() {
+ cd ${srcdir}/build
+ make DESTDIR="${pkgdir}" install
+}
+md5sums=('08934e97b63e8b1981f4087ec1a3372e')
diff --git a/extra/digikam/digikam.install b/extra/digikam/digikam.install
new file mode 100644
index 000000000..e70c054ec
--- /dev/null
+++ b/extra/digikam/digikam.install
@@ -0,0 +1,11 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/extra/dirmngr/PKGBUILD b/extra/dirmngr/PKGBUILD
new file mode 100644
index 000000000..e8faa4a88
--- /dev/null
+++ b/extra/dirmngr/PKGBUILD
@@ -0,0 +1,20 @@
+# $Id: PKGBUILD 87316 2010-08-12 11:57:22Z tpowa $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=dirmngr
+pkgver=1.1.0
+pkgrel=1
+pkgdesc="A daemon to handle CRL and certificate requests"
+arch=('i686' 'x86_64')
+license=('GPL')
+url="ftp://ftp.gnupg.org/gcrypt/dirmngr"
+depends=('libgcrypt' 'libldap' 'libksba' 'libgpg-error' 'libassuan' 'pth')
+source=(ftp://ftp.gnupg.org/gcrypt/$pkgname/$pkgname-$pkgver.tar.bz2)
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ ./configure --prefix=/usr --libexecdir=/usr/lib
+ make
+ make DESTDIR=$pkgdir install
+}
+md5sums=('f2570f0248f5947daac200e85291b328')
diff --git a/extra/djvulibre/PKGBUILD b/extra/djvulibre/PKGBUILD
new file mode 100644
index 000000000..6db90e526
--- /dev/null
+++ b/extra/djvulibre/PKGBUILD
@@ -0,0 +1,34 @@
+# $Id: PKGBUILD 116498 2011-03-24 09:12:50Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: mgushee
+
+pkgname=djvulibre
+pkgver=3.5.24
+pkgrel=1
+pkgdesc="Suite to create, manipulate and view DjVu ('déjà vu') documents"
+arch=("i686" "x86_64")
+license=('GPL')
+url="http://djvu.sourceforge.net/"
+depends=('gcc-libs' 'libtiff' 'bash' 'hicolor-icon-theme')
+makedepends=('pkg-config')
+provides=("libdjvu=${pkgver}")
+replaces=('libdjvu')
+conflicts=('libdjvu')
+optdepends=('djview4: Viewer application')
+options=('!libtool')
+install=djvulibre.install
+source=(http://downloads.sourceforge.net/djvu/${pkgname}-${pkgver}.tar.gz)
+md5sums=('af83d27af5083198432a178d22b259c5')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --disable-desktopfiles
+ make
+ make DESTDIR="${pkgdir}" install
+
+ #Install icons for mime-types.
+ install -m755 -d ${pkgdir}/usr/share/icons/hicolor/{22x22,32x32,48x48,64x64}/mimetypes
+ for sz in 22 32 48 64; do
+ install -m644 desktopfiles/prebuilt-hi${sz}-djvu.png "${pkgdir}/usr/share/icons/hicolor/${sz}x${sz}/mimetypes/image-vnd.djvu.mime.png"
+ done
+}
diff --git a/extra/djvulibre/djvulibre.install b/extra/djvulibre/djvulibre.install
new file mode 100644
index 000000000..3e9bb5c49
--- /dev/null
+++ b/extra/djvulibre/djvulibre.install
@@ -0,0 +1,13 @@
+post_install() {
+ if [ -x usr/bin/gtk-update-icon-cache ]; then
+ gtk-update-icon-cache -q -f usr/share/icons/hicolor
+ fi
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/extra/dmapi/PKGBUILD b/extra/dmapi/PKGBUILD
new file mode 100644
index 000000000..7b909633d
--- /dev/null
+++ b/extra/dmapi/PKGBUILD
@@ -0,0 +1,32 @@
+# $Id: PKGBUILD 47579 2009-07-24 05:47:49Z tpowa $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+pkgname=dmapi
+pkgver=2.2.10
+pkgrel=2
+pkgdesc="Data migration API"
+arch=(i686 x86_64)
+url="http://oss.sgi.com/projects/xfs/"
+license=('GPL')
+depends=('glibc')
+makedepends=('xfsprogs')
+provides=('xfsdmapi')
+conflicts=('xfsdmapi')
+replaces=('xfsdmapi')
+options=('!libtool')
+source=(ftp://oss.sgi.com/projects/xfs/cmd_tars/$pkgname-$pkgver.tar.gz)
+md5sums=('c6e4ace10c446bbb92576e5dd19aec24')
+
+build() {
+ cd $startdir/src/dmapi-$pkgver
+ [ "$CARCH" = "x86_64" ] && export CFLAGS="$CLFAGS -fPIC"
+ autoconf
+ ./configure --prefix=$pkgdir/usr
+ make || return 1
+ make prefix=$pkgdir/usr/ install install-dev || return 1
+ # the static lib
+ install -D -m644 libdm/.libs/libdm.a $pkgdir/usr/lib/libdm.a
+ # and the header file, please
+ install -D -m644 include/dmapi.h $pkgdir/usr/include/xfs/dmapi.h
+ # kill libexec dir
+ rm -rf $pkgdir/usr/libexec
+}
diff --git a/extra/dmidecode/PKGBUILD b/extra/dmidecode/PKGBUILD
new file mode 100644
index 000000000..d013758ad
--- /dev/null
+++ b/extra/dmidecode/PKGBUILD
@@ -0,0 +1,21 @@
+# $Id: PKGBUILD 107032 2011-01-20 17:46:05Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Jan de Groot <jgc@archlinux.org>
+
+pkgname=dmidecode
+pkgver=2.11
+pkgrel=1
+pkgdesc="Desktop Management Interface table related utilities"
+arch=('i686' 'x86_64')
+url="http://www.nongnu.org/dmidecode"
+license=('GPL')
+depends=('glibc')
+source=(http://download.savannah.nongnu.org/releases/${pkgname}/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('535487cc041f2db746587cf40a2059f0')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ make prefix=/usr || return 1
+ make prefix=/usr DESTDIR=${pkgdir} install || return 1
+}
diff --git a/extra/dnsmasq/PKGBUILD b/extra/dnsmasq/PKGBUILD
new file mode 100644
index 000000000..f1663ceb2
--- /dev/null
+++ b/extra/dnsmasq/PKGBUILD
@@ -0,0 +1,40 @@
+# $Id: PKGBUILD 111081 2011-02-23 22:48:06Z paul $
+# Maintainer: Paul Mattal <paul@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=dnsmasq
+pkgver=2.57
+pkgrel=1
+pkgdesc="Lightweight, easy to configure DNS forwarder and DHCP server"
+url="http://www.thekelleys.org.uk/dnsmasq/doc.html"
+arch=('i686' 'x86_64')
+license=('GPL')
+depends=('glibc' 'bash')
+makedepends=('libcap>=2.16')
+backup=('etc/dnsmasq.conf')
+install=
+source=("http://www.thekelleys.org.uk/$pkgname/$pkgname-$pkgver.tar.gz"
+ 'rc.dnsmasq')
+md5sums=('d10faeb409717eae94718d7716ca63a4' 'e956eee1ec24212a3254d2b168187495')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+
+ # Build
+ make || return 1
+
+ # Install
+ install -d $pkgdir/etc/rc.d || return 1
+ make PREFIX=/usr DESTDIR=$pkgdir install || return 1
+
+ install -D -m755 \
+ $srcdir/rc.dnsmasq $pkgdir/etc/rc.d/dnsmasq || return 1
+ install -D -m644 \
+ dnsmasq.conf.example $pkgdir/etc/dnsmasq.conf || return 1
+
+ # Make the Required Directories for DHCP Server Default Directories
+ install -d $pkgdir/var/db || return 1
+ install -d $pkgdir/var/lib/misc || return 1
+}
+
+# vim: ts=2 sw=2 et ft=sh
diff --git a/extra/dnsmasq/rc.dnsmasq b/extra/dnsmasq/rc.dnsmasq
new file mode 100755
index 000000000..167607294
--- /dev/null
+++ b/extra/dnsmasq/rc.dnsmasq
@@ -0,0 +1,36 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+PID=`pidof -o %PPID /usr/sbin/dnsmasq`
+case "$1" in
+ start)
+ stat_busy "Starting DNS/DHCP daemon"
+ [ -z "$PID" ] && /usr/sbin/dnsmasq
+ if [ $? -gt 0 ] ; then
+ stat_fail
+ else
+ add_daemon dnsmasq # create the 'state' dir
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping DNS/DHCP daemon"
+ [ "$PID" ] && kill $PID &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon dnsmasq # remove the 'state' dir
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 5
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
diff --git a/extra/docker/PKGBUILD b/extra/docker/PKGBUILD
new file mode 100644
index 000000000..7633ee9c6
--- /dev/null
+++ b/extra/docker/PKGBUILD
@@ -0,0 +1,21 @@
+# $Id: PKGBUILD 36979 2009-04-29 06:44:04Z eric $
+# Contributor: Jochem Kossen <j.kossen@home.nl>
+
+pkgname=docker
+pkgver=1.5
+pkgrel=4
+pkgdesc="Docker is a docking application (WindowMaker dock app) which acts as a system tray for KDE and GNOME2."
+arch=(i686 x86_64)
+url="http://icculus.org/openbox/2/docker/"
+license=('GPL')
+depends=('glibc' 'glib2' 'libx11')
+source=(http://icculus.org/openbox/2/$pkgname/$pkgname-$pkgver.tar.gz)
+md5sums=('349320bebd43babb8b43e11c7aae0293')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ install -d $pkgdir/usr/bin || return 1
+ make || return 1
+ make PREFIX=$pkgdir/usr install || return 1
+}
+# vim: ts=2 sw=2 et ft=sh
diff --git a/extra/dosbox/PKGBUILD b/extra/dosbox/PKGBUILD
new file mode 100644
index 000000000..e4d4be918
--- /dev/null
+++ b/extra/dosbox/PKGBUILD
@@ -0,0 +1,37 @@
+# $Id: PKGBUILD 80630 2010-05-20 16:06:03Z ibiru $
+# Maintainer :
+# Contributor: James Rayner <james@archlinux.org>
+# Contributor: Ben <ben@benmazer.net>
+
+pkgname=dosbox
+pkgver=0.74
+pkgrel=1
+pkgdesc="An emulator with builtin DOS for running DOS Games"
+arch=('i686' 'x86_64')
+url="http://dosbox.sourceforge.net/"
+license=('GPL')
+depends=('sdl_net' 'sdl_sound' 'libgl' 'libpng' 'alsa-lib' 'gcc-libs')
+makedepends=('mesa')
+source=("http://downloads.sourceforge.net/${pkgname}/$pkgname-$pkgver.tar.gz"
+ 'dosbox.png' 'dosbox.desktop')
+md5sums=('b9b240fa87104421962d14eee71351e8'
+ '2aac25fc06979e375953fcc36824dc5e'
+ '85169ca599028bee8e29e0b3b7b34dd8')
+
+build(){
+ cd ${srcdir}/${pkgname}-${pkgver}
+ sed -i 's/png_check_sig/png_sig_cmp/' configure || return 1
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc/dosbox || return 1
+ make || return 1
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install || return 1
+
+ install -Dm644 ${srcdir}/${pkgname}.png \
+ ${pkgdir}/usr/share/pixmaps/${pkgname}.png || return 1
+ install -Dm644 ${srcdir}/${pkgname}.desktop \
+ ${pkgdir}/usr/share/applications/${pkgname}.desktop || return 1
+}
diff --git a/extra/dosbox/dosbox.desktop b/extra/dosbox/dosbox.desktop
new file mode 100644
index 000000000..dbaf05ced
--- /dev/null
+++ b/extra/dosbox/dosbox.desktop
@@ -0,0 +1,10 @@
+[Desktop Entry]
+Type=Application
+Encoding=UTF-8
+Name=dosbox Emulator
+GenericName=Emulator
+Comment=An emulator to run old DOS games
+Icon=dosbox
+Exec=dosbox
+Terminal=false
+Categories=Emulator;Application;
diff --git a/extra/dosbox/dosbox.png b/extra/dosbox/dosbox.png
new file mode 100644
index 000000000..b8a917986
--- /dev/null
+++ b/extra/dosbox/dosbox.png
Binary files differ
diff --git a/extra/dosfstools/PKGBUILD b/extra/dosfstools/PKGBUILD
new file mode 100644
index 000000000..587e15ec4
--- /dev/null
+++ b/extra/dosfstools/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: PKGBUILD 115131 2011-03-17 07:32:20Z tpowa $
+# Maintainer: dorphell <dorphell@archlinux.org>
+# Committer: Judd Vinet <jvinet@zeroflux.org>
+pkgname=dosfstools
+pkgver=3.0.11
+pkgrel=1
+pkgdesc="DOS filesystem utilities"
+arch=(i686 x86_64)
+depends=('glibc')
+source=(http://www.daniel-baumann.ch/software/dosfstools/$pkgname-$pkgver.tar.bz2)
+url="http://www.daniel-baumann.ch/software/dosfstools/"
+license=('GPL2')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ make
+}
+
+package () {
+ cd $srcdir/$pkgname-$pkgver
+ make PREFIX=$pkgdir MANDIR=$pkgdir/usr/share/man DOCDIR=$pkgdir/usr/share/doc install
+}
+md5sums=('8d2211d5bd813164e20740e7c852aa06')
diff --git a/extra/dotconf/PKGBUILD b/extra/dotconf/PKGBUILD
new file mode 100644
index 000000000..14b7bb6f1
--- /dev/null
+++ b/extra/dotconf/PKGBUILD
@@ -0,0 +1,38 @@
+# $Id$
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Chris Brannon <cmbrannon@cox.net>
+
+pkgname=dotconf
+pkgver=1.3
+pkgrel=1
+pkgdesc='A C library for parsing configuration files'
+url="http://www.opentts.org/projects/dotconf/"
+arch=('i686' 'x86_64')
+depends=('glibc')
+makedepends=('pkgconfig' 'findutils')
+license=('LGPL2.1')
+source=("http://files.opentts.org/${pkgname}/${pkgname}-${pkgver}.tar.gz")
+md5sums=('35c19ec9b96648f53e987e47e52dbc4c')
+options=('!libtool')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+
+ # There are no manpages. Docu consists of textfiles and small examples.
+ # "make install" didn't install the docu, so do it manually.
+ install -d ${pkgdir}/usr/share/doc/${pkgname}
+ cp -a doc/*.txt README examples/ ${pkgdir}/usr/share/doc/${pkgname}
+ # Get rid of files specific to Microsoft products:
+ find ${pkgdir}/usr/share/doc/${pkgname} -name '*.dsp' | xargs rm -f
+
+ # Dotconf uses libpool internally for memory management. No need to install.
+ rm -f ${pkgdir}/usr/lib/libpool.a
+ rm -f ${pkgdir}/usr/include/libpool.h
+}
diff --git a/extra/dovecot/PKGBUILD b/extra/dovecot/PKGBUILD
new file mode 100644
index 000000000..c8f87f1e9
--- /dev/null
+++ b/extra/dovecot/PKGBUILD
@@ -0,0 +1,74 @@
+# $Id: PKGBUILD 115180 2011-03-17 10:58:18Z andrea $
+# Contributor: Paul Mattal <paul@mattal.com>
+# Contributor: Federico Quagliata (quaqo) <quaqo@despammed.com>
+# Contributor: GARETTE Emmanuel <gnunux at laposte dot net>
+# Maintainer: Andreas Radke <andyrtr@archlinux.org>
+
+pkgname=dovecot
+pkgver=2.0.11
+pkgrel=2
+pkgdesc="An IMAP and POP3 server written with security primarily in mind"
+arch=('i686' 'x86_64')
+url="http://dovecot.org/"
+license=("LGPL")
+depends=('heimdal>=1.3.3' 'openssl' 'sqlite3>=3.7.5' 'libmysqlclient>=5.5.10'
+ 'postgresql-libs>=9.0.3' 'bzip2' 'expat' 'curl')
+makedepends=('pam>=1.1.1' 'libcap>=2.19' 'libldap>=2.4.22')
+optdepends=('libldap: ldap plugin')
+provides=('imap-server' 'pop3-server')
+options=('!libtool')
+backup=(etc/dovecot/dovecot.conf
+ etc/dovecot/conf.d/{10-auth,10-director,10-logging,10-mail,10-master,10-ssl}.conf
+ etc/dovecot/conf.d/{15-lda,20-imap,20-lmtp,20-pop3}.conf
+ etc/dovecot/conf.d/{90-acl,90-plugin,90-quota}.conf
+ etc/dovecot/conf.d/auth-{checkpassword,deny,ldap,master,passwdfile,sql,static,system,vpopmail}.conf.ext
+ etc/ssl/dovecot-openssl.cnf)
+install=$pkgname.install
+source=(http://dovecot.org/releases/2.0/${pkgname}-${pkgver}.tar.gz dovecot.sh)
+md5sums=('088a850d6583a7ec0a8074ce929b3496'
+ 'd020d43eab4ded6fb379dadc570a9490')
+
+build() {
+ cd ${srcdir}/$pkgname-$pkgver
+
+ # configure with openssl, mysql, and postgresql support
+ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \
+ --libexecdir=/usr/lib --with-moduledir=/usr/lib/dovecot/modules \
+ --disable-static \
+ --with-nss \
+ --with-pam \
+ --with-mysql \
+ --with-pgsql \
+ --with-sqlite \
+ --with-ssl=openssl --with-ssldir=/etc/dovecot/ssl \
+ --with-gssapi \
+ --with-ldap=plugin \
+ --with-zlib --with-bzlib \
+ --with-libcap \
+ --with-solr \
+ --with-docs
+ make
+}
+
+package() {
+ cd ${srcdir}/$pkgname-$pkgver
+ make DESTDIR=${pkgdir} install
+
+ # install the launch script
+ install -D -m755 ${srcdir}/$pkgname.sh ${pkgdir}/etc/rc.d/$pkgname
+
+ # install example conf files and ssl.conf
+ install -d -m755 ${pkgdir}/etc/dovecot/conf.d
+ install -m 644 ${pkgdir}/usr/share/doc/dovecot/example-config/conf.d/*.conf ${pkgdir}/etc/dovecot/conf.d
+ install -m 644 ${pkgdir}/usr/share/doc/dovecot/example-config/conf.d/*.conf.ext ${pkgdir}/etc/dovecot/conf.d
+ install -m 644 ${pkgdir}/usr/share/doc/dovecot/example-config/dovecot.conf ${pkgdir}/etc/dovecot/
+ install -d -m755 ${pkgdir}/etc/ssl
+ install -m 644 ${srcdir}/$pkgname-$pkgver/doc/dovecot-openssl.cnf ${pkgdir}/etc/ssl/
+
+ rm ${pkgdir}/etc/dovecot/README
+
+ # install dovecot userdir - https://bugs.archlinux.org/task/20533
+ install -d -m755 ${pkgdir}/var/run/dovecot/{login,empty}
+ chmod 755 ${pkgdir}/var/run/dovecot
+ chmod 750 ${pkgdir}/var/run/dovecot/login
+}
diff --git a/extra/dovecot/dovecot.install b/extra/dovecot/dovecot.install
new file mode 100644
index 000000000..51d1509ee
--- /dev/null
+++ b/extra/dovecot/dovecot.install
@@ -0,0 +1,57 @@
+# arg 1: the new package version
+post_install() {
+
+ # Make sure the group and user "dovecot"+"dovenull exists on this system and have the correct values
+
+ # dovecot
+ if grep -q "^dovecot:" /etc/group &> /dev/null ; then
+ groupmod -g 76 -n dovecot dovecot &> /dev/null
+ else
+ groupadd -g 76 dovecot &> /dev/null
+ fi
+
+ if grep -q "^dovecot:" /etc/passwd 2> /dev/null ; then
+ usermod -s /sbin/nologin -c "Dovecot user" -d /var/run/dovecot/login -u 76 -g dovecot dovecot &> /dev/null
+ else
+ useradd -s /sbin/nologin -c "Dovecot user" -d /var/run/dovecot/login -u 76 -g dovecot -m -r dovecot &> /dev/null
+ fi
+
+ # dovenull
+ if grep -q "^dovenull:" /etc/group &> /dev/null ; then
+ groupmod -g 74 -n dovenull dovenull &> /dev/null
+ else
+ groupadd -g 74 dovenull &> /dev/null
+ fi
+
+ if grep -q "^dovenull:" /etc/passwd 2> /dev/null ; then
+ usermod -s /sbin/nologin -c "Dovecot user for completely untrustworthy processes" -d /var/run/dovecot/login -u 74 -g dovenull dovenull &> /dev/null
+ else
+ useradd -s /sbin/nologin -c "Dovecot user for completely untrustworthy processes" -d /var/run/dovecot/login -u 74 -g dovenull -m -r dovenull &> /dev/null
+ fi
+
+ # harden some permissions
+ chgrp dovenull /var/run/dovecot/login
+}
+
+# arg 1: the new package version
+# arg 2: the old package version
+post_upgrade() {
+ post_install $1
+ if [ "`vercmp $2 2.0.0`" -lt 0 ]; then
+ # important upgrade notice
+ echo "> IMPORTANT DOVECOT 2.0 UPGRADE NOTICE"
+ echo "> ------------------------------------"
+ echo "> see http://wiki2.dovecot.org/Upgrading/2.0"
+ echo "> make sure, you convert the dovecot.conf file"
+ fi
+
+}
+
+# arg 1: the old package version
+pre_remove() {
+ userdel dovecot &> /dev/null
+ userdel dovenull &> /dev/null
+ groupdel dovecot &> /dev/null || /bin/true
+ groupdel dovenull &> /dev/null || /bin/true
+ rm -rf /var/run/dovecot/ &> /dev/null || /bin/true
+}
diff --git a/extra/dovecot/dovecot.sh b/extra/dovecot/dovecot.sh
new file mode 100755
index 000000000..b7555fe50
--- /dev/null
+++ b/extra/dovecot/dovecot.sh
@@ -0,0 +1,36 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+PID=`pidof -o %PPID /usr/sbin/dovecot`
+case "$1" in
+ start)
+ stat_busy "Starting Dovecot"
+ [ -z "$PID" ] && /usr/sbin/dovecot
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon dovecot
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping Dovecot"
+ [ ! -z "$PID" ] && kill $PID &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon dovecot
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 2
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
diff --git a/extra/doxygen/PKGBUILD b/extra/doxygen/PKGBUILD
new file mode 100644
index 000000000..2f4cbdf42
--- /dev/null
+++ b/extra/doxygen/PKGBUILD
@@ -0,0 +1,37 @@
+# $Id: PKGBUILD 117080 2011-03-28 14:57:03Z dan $
+# Maintainer: Dan McGee <dan@archlinux.org>
+
+pkgbase=doxygen
+pkgname=('doxygen' 'doxygen-docs')
+pkgver=1.7.4
+pkgrel=1
+license=('GPL')
+arch=(i686 x86_64)
+url="http://www.doxygen.org/"
+makedepends=('flex' 'qt' 'texlive-core' 'ghostscript' 'texlive-latexextra')
+source=(ftp://ftp.stack.nl/pub/users/dimitri/${pkgname}-${pkgver}.src.tar.gz)
+md5sums=('ff908759ff7cd9464424b04ae6c68e48')
+sha1sums=('4f68b655c93265cb15ef1b8c9ca35ebc39698cf0')
+
+build() {
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ QTDIR=/usr ./configure --prefix /usr --with-doxywizard
+ make
+}
+
+package_doxygen() {
+ pkgdesc="A documentation system for C++, C, Java, IDL and PHP"
+ depends=('gcc-libs')
+ optdepends=('graphviz: for caller/callee graph generation'
+ 'qt: for doxywizard')
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ make INSTALL="${pkgdir}"/usr MAN1DIR=share/man/man1 install
+}
+
+package_doxygen-docs() {
+ pkgdesc="Developer documentation for doxygen"
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ make INSTALL="${pkgdir}"/usr MAN1DIR=share/man/man1 install_docs
+}
diff --git a/extra/dssi/LICENSE b/extra/dssi/LICENSE
new file mode 100644
index 000000000..ddef4f23b
--- /dev/null
+++ b/extra/dssi/LICENSE
@@ -0,0 +1,77 @@
+Licensing
+---------
+
+The DSSI API itself (dssi.h) is licensed under the GNU Lesser General
+Public License. See COPYING for details.
+
+The jack-dssi-host is provided under a BSD-style license. This means
+you can do anything you want with it so long as you retain the
+copyright attribution and license information. See the source files
+for details.
+
+Licensing for the files in the examples directory may vary: please
+check the individual files for details. Most of them are in the
+public domain, which means you can use them for anything you want.
+
+
+
+/* jack-dssi-host.c
+ *
+ * DSSI Soft Synth Interface
+ *
+ * This is a host for DSSI plugins. It listens for MIDI events on an
+ * ALSA sequencer port, delivers them to DSSI synths and outputs the
+ * result via JACK.
+ *
+ * This program expects the names of up to 16 DSSI synth plugins, in
+ * the form '<dll-name>:<label>',* to be provided on the command line.
+ * If just '<dll-name>' is provided, the first plugin in the DLL is
+ * is used. MIDI channels are assigned to each plugin instance, in
+ * order, beginning with channel 0 (zero-based). A plugin may be
+ * easily instantiated multiple times by preceding its name and label
+ * with a dash followed immediately by the desired number of instances,
+ * e.g. '-3 my_plugins.so:zoomy' would create three instances of the
+ * 'zoomy' plugin.
+ */
+
+/*
+ * Copyright 2004, 2009 Chris Cannam, Steve Harris and Sean Bolton.
+ *
+ * Permission to use, copy, modify, distribute, and sell this software
+ * for any purpose is hereby granted without fee, provided that the
+ * above copyright notice and this permission notice are included in
+ * all copies or substantial portions of the software.
+ */
+
+
+/*
+ * This program is in the public domain
+ *
+ * $Id: dssi_osc_send.c,v 1.5 2004/07/04 22:24:51 smbolton Exp $
+ */
+
+/*
+ * This program is in the public domain
+ *
+ * $Id: dssi_osc_update.c,v 1.6 2005/10/12 17:08:26 smbolton Exp $
+ */
+
+/* less_trivial_synth.c
+
+ DSSI Soft Synth Interface
+ Constructed by Chris Cannam, Steve Harris and Sean Bolton
+
+ This is an example DSSI synth plugin written by Steve Harris.
+
+ This example file is in the public domain.
+*/
+
+/* trivial_sampler.c
+
+ DSSI Soft Synth Interface
+ Constructed by Chris Cannam, Steve Harris and Sean Bolton
+
+ A straightforward DSSI plugin sampler.
+
+ This example file is in the public domain.
+*/
diff --git a/extra/dssi/PKGBUILD b/extra/dssi/PKGBUILD
new file mode 100644
index 000000000..a781c4430
--- /dev/null
+++ b/extra/dssi/PKGBUILD
@@ -0,0 +1,38 @@
+# $Id: PKGBUILD 91030 2010-09-21 05:56:54Z schiv $
+# Maintainer: Ray Rashif <schiv@archlinux.org>
+# Contributor: damir <damir@archlinux.org>
+# Contributor: Pajaro
+
+pkgname=dssi
+pkgver=1.1.0
+pkgrel=1
+pkgdesc="API for audio processing plugins/softsynths with user interfaces"
+arch=(i686 x86_64)
+url="http://dssi.sourceforge.net/"
+license=('LGPL' 'BSD')
+depends=('liblo' 'jack')
+makedepends=('ladspa' 'qt')
+optdepends=('qt: example plugins')
+options=('!libtool')
+source=(http://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.gz
+ LICENSE)
+md5sums=('dfc850e66fae94e7ec08aebb43d07848'
+ '258ca4d0ca28c5c4d4675147621fac18')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ make DESTDIR="$pkgdir/" install
+
+ install -Dm644 "$srcdir/LICENSE" \
+ "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/extra/dvd+rw-tools/PKGBUILD b/extra/dvd+rw-tools/PKGBUILD
new file mode 100644
index 000000000..e3b21ce31
--- /dev/null
+++ b/extra/dvd+rw-tools/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 49778 2009-08-15 15:54:31Z jgc $
+# Maintainer: damir <damir@archlinux.org>
+
+pkgname=dvd+rw-tools
+pkgver=7.1
+pkgrel=2
+pkgdesc="dvd burning tools"
+arch=(i686 x86_64)
+license=('GPL')
+url="http://fy.chalmers.se/~appro/linux/DVD+RW"
+depends=('cdrkit' 'gcc-libs')
+source=(http://fy.chalmers.se/~appro/linux/DVD+RW/tools/${pkgname}-${pkgver}.tar.gz
+ buildpatch-7.0-3-20080108-karolina.patch)
+md5sums=('8acb3c885c87f6838704a0025e435871'
+ '54b4dc52f5380216d4d9fc2dd2086d31')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ # fix build, thank you Karolina
+ patch -Np1 -i "${srcdir}/buildpatch-7.0-3-20080108-karolina.patch"
+
+ make || return 1
+
+ install -m755 -d "${pkgdir}/usr/bin"
+ install -m755 -d "${pkgdir}/usr/share/man/man1"
+
+ install -m755 growisofs dvd+rw-booktype dvd+rw-format dvd+rw-mediainfo dvd-ram-control "${pkgdir}/usr/bin/" || return 1
+ install -m644 growisofs.1 ${pkgdir}/usr/share/man/man1/growisofs.1 || return 1
+}
diff --git a/extra/dvd+rw-tools/buildpatch-7.0-3-20080108-karolina.patch b/extra/dvd+rw-tools/buildpatch-7.0-3-20080108-karolina.patch
new file mode 100644
index 000000000..0b7951f1b
--- /dev/null
+++ b/extra/dvd+rw-tools/buildpatch-7.0-3-20080108-karolina.patch
@@ -0,0 +1,22 @@
+diff -Naur dvd+rw-tools-7.0/growisofs.c dvd+rw-tools-7.0_new/growisofs.c
+--- dvd+rw-tools-7.0/growisofs.c 2006-09-24 19:28:53.000000000 +0200
++++ dvd+rw-tools-7.0_new/growisofs.c 2008-01-08 00:56:57.000000000 +0100
+@@ -418,6 +418,7 @@
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ #include <assert.h>
++#include <limits.h>
+ #include "mp.h"
+
+ #if defined(__unix) || defined(__unix__)
+diff -Naur dvd+rw-tools-7.0/transport.hxx dvd+rw-tools-7.0_new/transport.hxx
+--- dvd+rw-tools-7.0/transport.hxx 2006-09-23 13:29:07.000000000 +0200
++++ dvd+rw-tools-7.0_new/transport.hxx 2008-01-08 00:57:36.000000000 +0100
+@@ -137,6 +137,7 @@
+ #include <sys/wait.h>
+ #include <sys/utsname.h>
+ #include <scsi/sg.h>
++#include <limits.h>
+ #if !defined(SG_FLAG_LUN_INHIBIT)
+ # if defined(SG_FLAG_UNUSED_LUN_INHIBIT)
+ # define SG_FLAG_LUN_INHIBIT SG_FLAG_UNUSED_LUN_INHIBIT
diff --git a/extra/dvdauthor/PKGBUILD b/extra/dvdauthor/PKGBUILD
new file mode 100644
index 000000000..d402220ce
--- /dev/null
+++ b/extra/dvdauthor/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 104015 2010-12-25 22:35:13Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Travis Willard <travisw@wmpub.ca>
+# Contributor: Jaroslaw Swierczynski <swiergot@juvepoland.com>
+# Contributor: Nicolai Lissner <nlissne@linux01.gwdg.de>
+
+pkgname=dvdauthor
+pkgver=0.7.0
+pkgrel=1
+pkgdesc="DVD authoring tools"
+arch=('i686' 'x86_64')
+url="http://dvdauthor.sourceforge.net/"
+license=('GPL')
+depends=('libdvdread' 'imagemagick' 'libxml2' 'libpng' 'fribidi')
+options=('!makeflags')
+source=(http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.gz)
+md5sums=('33a447fb98ab3293ac40f869eedc17ff')
+
+build() {
+ cd "${srcdir}/${pkgname}"
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/dvdrip/PKGBUILD b/extra/dvdrip/PKGBUILD
new file mode 100644
index 000000000..03283687d
--- /dev/null
+++ b/extra/dvdrip/PKGBUILD
@@ -0,0 +1,41 @@
+# $Id: PKGBUILD 110171 2011-02-17 08:54:21Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Fredrik Hammar <Horney_C86@Hotmail.com>
+
+pkgname=dvdrip
+pkgver=0.98.11
+pkgrel=6
+pkgdesc="A Gtk frontend for transcode writen in Perl"
+arch=('i686' 'x86_64')
+license=('custom')
+url="http://www.exit1.org/dvdrip/"
+install=${pkgname}.install
+depends=('perl-gtk2-ex-formfactory' 'transcode' 'imagemagick'
+ 'perl-libintl-perl' 'desktop-file-utils' 'perl-event-execflow')
+optdepends=('ogmtools: for ogm/odd video creation'
+ 'lsdvd: fast reading of DVD table')
+source=(http://www.exit1.org/dvdrip/dist/${pkgname}-${pkgver}.tar.gz \
+ ${pkgname}.desktop)
+options=(!emptydirs)
+md5sums=('6dfa4199d451757a37eea233a07da4c0'
+ 'e91cf411928fd0500d07a0022b4ef546')
+
+build() {
+ export MAKEFLAGS="-j1"
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ # install module in vendor directories.
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor || return 1
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make install DESTDIR="${pkgdir}"
+
+ # remove perllocal.pod and .packlist
+ find ${pkgdir} -name perllocal.pod -delete
+ find ${pkgdir} -name .packlist -delete
+
+ install -Dm644 ${srcdir}/${pkgname}.desktop "${pkgdir}/usr/share/applications/${pkgname}.desktop"
+ install -Dm 644 COPYRIGHT "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+}
diff --git a/extra/dvdrip/dvdrip.desktop b/extra/dvdrip/dvdrip.desktop
new file mode 100644
index 000000000..dd19b4aae
--- /dev/null
+++ b/extra/dvdrip/dvdrip.desktop
@@ -0,0 +1,8 @@
+[Desktop Entry]
+Name=dvd::rip
+Comment=DVD Ripper and Encoder - Backup and compression utility for DVDs
+Exec=/usr/bin/vendor_perl/dvdrip
+Icon=/usr/share/perl5/vendor_perl/Video/DVDRip/icon.xpm
+Terminal=false
+Type=Application
+Categories=Application;AudioVideo;Video;
diff --git a/extra/dvdrip/dvdrip.install b/extra/dvdrip/dvdrip.install
new file mode 100644
index 000000000..4cd6160c4
--- /dev/null
+++ b/extra/dvdrip/dvdrip.install
@@ -0,0 +1,19 @@
+# this is the scrollkeeper handling sample file
+
+post_install() {
+ echo "update desktop mime database..."
+ update-desktop-database -q
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ /bin/true
+}
+
+post_remove() {
+ echo "update desktop mime database..."
+ update-desktop-database -q
+}
diff --git a/extra/dvdrtools/PKGBUILD b/extra/dvdrtools/PKGBUILD
new file mode 100644
index 000000000..da84f79bb
--- /dev/null
+++ b/extra/dvdrtools/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 46392 2009-07-17 19:24:22Z giovanni $
+# Maintainer: Alexander Baldeck <alexander@archlinux.org>
+# Contributor: dorphell <dorphell@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+pkgname=dvdrtools
+pkgver=0.3.1
+pkgrel=2
+pkgdesc="A fork of cdrtools, with the primary goal of supporting writable DVD drives"
+arch=(i686 x86_64)
+url="http://savannah.nongnu.org/projects/dvdrtools/"
+license=('GPL')
+depends=('glibc' 'file')
+makedepends=('transcode')
+optdepends=('transcode: video/DVD ripper and encoder for the terminal/console')
+conflicts=('cdrkit')
+source=(ftp://ftp.archlinux.org/other/dvdrtools/$pkgname-$pkgver.tar.gz)
+md5sums=('5707b7e877b853e258cd738938833006')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ ./configure --prefix=/usr --mandir=/usr/share/man || return 1
+ make || return 1
+ make DESTDIR=$pkgdir install || return 1
+}
diff --git a/extra/dvgrab/PKGBUILD b/extra/dvgrab/PKGBUILD
new file mode 100644
index 000000000..cb1cef1e2
--- /dev/null
+++ b/extra/dvgrab/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id: PKGBUILD 63911 2010-01-19 01:19:21Z andrea $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Jason Chu <jason@archlinux.org>
+
+pkgname=dvgrab
+pkgver=3.5
+pkgrel=2
+pkgdesc="Saves audio and video data from an IEEE (FireWire) digital source"
+arch=('i686' 'x86_64')
+url="http://www.kinodv.org"
+license=('GPL')
+depends=('libdv' 'libavc1394' 'libjpeg>=8' 'libiec61883' 'gcc-libs')
+makedepends=('pkgconfig')
+source=(http://downloads.sourceforge.net/kino/${pkgname}-${pkgver}.tar.gz)
+md5sums=('b39a242ce63e80fc347ab59931f75649')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make || return 1
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/easytag/PKGBUILD b/extra/easytag/PKGBUILD
new file mode 100644
index 000000000..31ea2fff8
--- /dev/null
+++ b/extra/easytag/PKGBUILD
@@ -0,0 +1,34 @@
+# $Id: PKGBUILD 71340 2010-03-06 18:44:25Z andrea $
+# Maintainer: Kevin Piche <kevin@archlinux.org>
+# Contributor: Aaron Griffin <aaron@archlinux.org>
+# Contributor: dorphell <dorphell@archlinux.org>
+
+pkgname=easytag
+pkgver=2.1.6
+pkgrel=3
+pkgdesc="Utility for viewing, editing and writing ID3 tags of your MP3 files"
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://easytag.sourceforge.net/"
+depends=('id3lib' 'libid3tag' 'gtk2' 'libvorbis' 'flac' 'libmp4v2' 'speex' 'wavpack')
+install=${pkgname}.install
+source=("http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.bz2"
+ 'mp4v2-1.9.patch')
+md5sums=('6c5b9dc2bf1f3b0a11bd4efc81aaa9ee'
+ '912d9baa362c4d9e5aee0436b4ccb5a2')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ patch -Np1 -i ${srcdir}/mp4v2-1.9.patch
+ ./configure --prefix=/usr
+ make || return 1
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+
+ # Remove directory mimetype
+ sed '/^MimeType=/ s@;x-directory/normal;@;@' \
+ -i ${pkgdir}/usr/share/applications/easytag.desktop
+}
diff --git a/extra/easytag/easytag.install b/extra/easytag/easytag.install
new file mode 100644
index 000000000..b1b79e6b3
--- /dev/null
+++ b/extra/easytag/easytag.install
@@ -0,0 +1,12 @@
+post_install() {
+ update-desktop-database -q
+}
+
+post_upgrade() {
+ update-desktop-database -q
+}
+
+post_remove() {
+ update-desktop-database -q
+}
+
diff --git a/extra/easytag/mp4v2-1.9.patch b/extra/easytag/mp4v2-1.9.patch
new file mode 100644
index 000000000..774bf7fb2
--- /dev/null
+++ b/extra/easytag/mp4v2-1.9.patch
@@ -0,0 +1,51 @@
+diff -ur easytag-2.1.6.orig/configure easytag-2.1.6/configure
+--- easytag-2.1.6.orig/configure 2008-07-12 17:57:44.000000000 +0300
++++ easytag-2.1.6/configure 2009-07-10 16:44:39.000000000 +0300
+@@ -22418,12 +22418,12 @@
+ /* end confdefs.h. */
+
+ #include <stdio.h>
+- #include <mpeg4ip_config.h>
++ #include <mp4v2/mp4v2.h>
+ int main (void)
+ {
+ FILE *output;
+ output=fopen("conftest.mp4v2","w");
+- fprintf(output,"LIBMP4V2_NAME=%s\nLIBMP4V2_VERSION=%s\n",PACKAGE_TARNAME,PACKAGE_VERSION);
++ fprintf(output,"MP4V2_PROJECT_name=%s\nMP4V2_PROJECT_version=%s\n",PACKAGE_TARNAME,PACKAGE_VERSION);
+ fclose(output);
+ exit(0);
+ }
+@@ -22471,7 +22471,7 @@
+
+ cat >conftest.$ac_ext <<_ACEOF
+
+- #include <mp4.h>
++ #include <mp4v2/mp4v2.h>
+ main () {
+ MP4FileHandle hFile;
+ MP4GetMetadataCoverArt(hFile, NULL, NULL,0); }
+diff -ur easytag-2.1.6.orig/src/mp4_header.c easytag-2.1.6/src/mp4_header.c
+--- easytag-2.1.6.orig/src/mp4_header.c 2007-11-28 10:54:35.000000000 +0200
++++ easytag-2.1.6/src/mp4_header.c 2009-07-10 16:44:54.000000000 +0300
+@@ -44,7 +44,7 @@
+ #undef PACKAGE_STRING
+ #undef PACKAGE_TARNAME
+ #undef PACKAGE_VERSION
+-#include <mp4.h>
++#include <mp4v2/mp4v2.h>
+
+
+ /****************
+diff -ur easytag-2.1.6.orig/src/mp4_tag.c easytag-2.1.6/src/mp4_tag.c
+--- easytag-2.1.6.orig/src/mp4_tag.c 2007-12-11 00:08:11.000000000 +0200
++++ easytag-2.1.6/src/mp4_tag.c 2009-07-10 16:45:08.000000000 +0300
+@@ -50,7 +50,7 @@
+ #undef PACKAGE_STRING
+ #undef PACKAGE_TARNAME
+ #undef PACKAGE_VERSION
+-#include <mp4.h>
++#include <mp4v2/mp4v2.h>
+
+
+ /****************
diff --git a/extra/ebook-tools/PKGBUILD b/extra/ebook-tools/PKGBUILD
new file mode 100644
index 000000000..dbe39120d
--- /dev/null
+++ b/extra/ebook-tools/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 90915 2010-09-18 23:05:52Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+
+pkgname=ebook-tools
+pkgver=0.2.1
+pkgrel=1
+pkgdesc="Tools for accessing and converting various ebook file formats"
+arch=('i686' 'x86_64')
+url="http://sourceforge.net/projects/ebook-tools"
+license=('custom')
+depends=('libzip' 'libxml2')
+makedepends=('pkgconfig' 'cmake')
+source=("http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.gz")
+md5sums=('cabbd2ef9148a61ca5f6e60ca63e6045')
+
+build() {
+ cd $srcdir
+ mkdir build
+ cd build
+ cmake ../${pkgname}-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=/usr
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+
+ install -D ${srcdir}/${pkgname}-${pkgver}/LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" || return 1
+}
diff --git a/extra/ecasound/PKGBUILD b/extra/ecasound/PKGBUILD
new file mode 100644
index 000000000..3bbab7309
--- /dev/null
+++ b/extra/ecasound/PKGBUILD
@@ -0,0 +1,52 @@
+# $Id: PKGBUILD 88360 2010-08-23 02:57:44Z schiv $
+# Maintainer: Ray Rashif <schiv@archlinux.org>
+# Contributor: Eric Belanger <eric@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=ecasound
+pkgver=2.7.2
+pkgrel=1
+pkgdesc="A software package designed for multitrack audio processing"
+arch=('i686' 'x86_64')
+url="http://www.eca.cx/ecasound/"
+license=('GPL' 'LGPL')
+depends=('gcc-libs' 'readline>=6.0.00' 'audiofile'
+ 'jack' 'liblo' 'liboil')
+makedepends=('pkg-config' 'python2' 'ruby')
+optdepends=('python2: ecamonitor, ECI API'
+ 'ruby: ECI API'
+ 'mpg123: MP3 decoding'
+ 'lame: MP3 encoding'
+ 'vorbis-tools: Ogg Vorbis decoding/encoding'
+ 'faad2: AAC decoding'
+ 'faac: AAC encoding'
+ 'timidity++: MIDI file input'
+ 'libmikmod: tracker module')
+options=('!libtool')
+changelog=$pkgname.changelog
+source=(http://ecasound.seul.org/download/$pkgname-$pkgver.tar.gz)
+md5sums=('40498ceed9cc7622ee969c427f13921c')
+sha1sums=('6d5236155e1a1f9a9bc9e63f989baebfb1645a49')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ PYTHONPATH=/usr/bin/python2 ./configure \
+ --prefix=/usr \
+ --with-python-includes=/usr/include/python2.7 \
+ --with-python-modules=/usr/lib/python2.7
+
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ make DESTDIR="$pkgdir/" install
+
+ # fix for python 2.7
+ sed -i 's:bin/env python:bin/env python2:' \
+ "$pkgdir/usr/bin/ecamonitor"
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/extra/ecasound/ecasound.changelog b/extra/ecasound/ecasound.changelog
new file mode 100644
index 000000000..cfa010ca5
--- /dev/null
+++ b/extra/ecasound/ecasound.changelog
@@ -0,0 +1,44 @@
+2010-08-22 Ray Rashif <schiv@archlinux.org>
+
+ * ecasound 2.7.2-1
+ * python(3) rebuild
+ * python(2) is optional [1]
+ * added new liboil depend [2]
+ * added some optdepends [1]
+
+ [1] http://eca.cx/ecasound/README (or see source archive)
+ [2] http://eca.cx/relnotes/ecasound_v2_7_2_relnotes.txt
+
+2010-07-10 Ray Rashif <schiv@archlinux.org>
+
+ * ecasound 2.7.1-2
+ * added jack support [1]
+ * added OSC (liblo) support
+
+ [1] http://bugs.archlinux.org/task/20113
+
+2010-02-21 Eric Belanger <eric@archlinux.org>
+
+ * ecasound 2.7.1-1
+ * Upstream update
+ * Improved description
+
+2010-01-23 Eric Belanger <eric@archlinux.org>
+
+ * ecasound 2.7.0-1
+ * Upstream update
+
+2009-06-18 Eric Belanger <eric@archlinux.org>
+
+ * ecasound 2.6.0-1
+ * Upstream update
+ * Built against readline 6.0.00
+
+2009-01-14 Eric Belanger <eric@archlinux.org>
+
+ * ecasound 2.5.2-1
+ * Upstream update
+ * Enabled alsa support
+ * Added ruby makedepends
+ * Corrected license
+ * Added ChangeLog
diff --git a/extra/ecl/PKGBUILD b/extra/ecl/PKGBUILD
new file mode 100644
index 000000000..fa1d1f746
--- /dev/null
+++ b/extra/ecl/PKGBUILD
@@ -0,0 +1,35 @@
+# $Id: PKGBUILD 77589 2010-04-16 11:15:06Z juergen $
+# Contributor: John Proctor <jproctor@prium.net>
+# Maintainer: juergen <juergen@archlinux.org>
+
+pkgname=ecl
+pkgver=10.4.1
+pkgrel=1
+pkgdesc="Embeddable Common Lisp"
+arch=('i686' 'x86_64')
+url="http://sourceforge.net/projects/ecls/"
+license=('LGPL')
+depends=('bash' 'gmp')
+makedepends=('texinfo')
+provides=('common-lisp' 'cl-asdf')
+options=('!makeflags')
+source=(http://downloads.sourceforge.net/project/ecls/ecls/10.4/ecl-10.4.1.tar.gz)
+md5sums=('be53f5e55a3f07c7cfb5fb5cd9a2a3f0')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ sed -i 's|-Wl,--rpath,~A|-Wl,--rpath,/usr/lib/ecl|' src/configure || return 1
+ ./configure --build=$CHOST \
+ --prefix=/usr \
+ --with-tcp \
+ --with-clos-streams \
+ --enable-shared \
+ --enable-boehm=local \
+ --with-system-gmp \
+ --without-x \
+ --without-clx \
+ --disable-threads
+
+ make || return 1
+ make DESTDIR=$pkgdir install || return 1
+}
diff --git a/extra/eclipse/PKGBUILD b/extra/eclipse/PKGBUILD
new file mode 100644
index 000000000..5dac6abe4
--- /dev/null
+++ b/extra/eclipse/PKGBUILD
@@ -0,0 +1,58 @@
+# $Id: PKGBUILD 112888 2011-03-07 14:35:42Z paul $
+# Maintainer: Paul Mattal <paul@archlinux.org>
+# Contributor: Andrew Wright <andreww@photism.org>
+# Contributor: Andreas W. Hauser <andy-aur@splashground.de>
+
+pkgname=eclipse
+pkgver=3.6.2
+_internal_pkgver=3.6.2
+pkgrel=1
+_date=201102101200
+pkgdesc="An IDE for Java and other languages"
+arch=('i686' 'x86_64')
+url="http://eclipse.org"
+depends=('java-environment' 'gtk2' 'unzip' 'xulrunner')
+install=${pkgname}.install
+makedepends=('zip')
+license=("EPL/1.1")
+source=("ftp://ftp.osuosl.org/pub/eclipse/eclipse/downloads/drops/R-${pkgver}-${_date}/${pkgname}-SDK-${pkgver}-linux-gtk.tar.gz"
+ 'eclipse.svg' 'eclipse.sh' 'eclipse.desktop'
+ 'eclipse.ini.patch')
+md5sums=('7777a21debf1e05591731ac5c93b6bb6'
+ '77cff7543ccf7e177cb6667f5a20ce19'
+ '7ea99a30fbaf06ec29261541b8eb1e23'
+ 'ba8a37e30a7ebd69774cec87c69e8c44'
+ '017b2a68edc48a752a7e27c7aceef797')
+[ "$CARCH" = "x86_64" ] && source[0]="ftp://ftp.osuosl.org/pub/eclipse/eclipse/downloads/drops/R-${pkgver}-${_date}/${pkgname}-SDK-${pkgver}-linux-gtk-${CARCH}.tar.gz"
+[ "$CARCH" = "x86_64" ] && md5sums[0]='b82be4ed2dabf9dc53188b9dc3891f32'
+
+package() {
+ cd "${srcdir}/eclipse"
+
+ # patch to increase default memory limits
+ patch -Np1 -i "${srcdir}/eclipse.ini.patch"
+
+ # install eclipse
+ install -m755 -d "${pkgdir}/usr/share"
+ mv "${srcdir}/eclipse" "${pkgdir}/usr/share/"
+
+ # install misc
+ install -d ${pkgdir}/usr/bin ${pkgdir}/usr/share/applications \
+ ${pkgdir}/usr/share/icons/hicolor/{16x16,32x32,48x48}/apps
+ install -m755 "${srcdir}/eclipse.sh" "${pkgdir}/usr/bin/eclipse"
+ install -m644 "${srcdir}/eclipse.desktop" "${pkgdir}/usr/share/applications/"
+ ln -s /usr/share/eclipse/plugins/org.eclipse.sdk_${_internal_pkgver}.v${_date}/eclipse.png \
+ "${pkgdir}/usr/share/icons/hicolor/16x16/apps/eclipse.png"
+ ln -s /usr/share/eclipse/plugins/org.eclipse.sdk_${_internal_pkgver}.v${_date}/eclipse32.png \
+ "${pkgdir}/usr/share/icons/hicolor/32x32/apps/eclipse.png"
+ ln -s /usr/share/eclipse/plugins/org.eclipse.sdk_${_internal_pkgver}.v${_date}/eclipse48.png \
+ "${pkgdir}/usr/share/icons/hicolor/48x48/apps/eclipse.png"
+
+ # install icon
+ install -Dm644 ${srcdir}/eclipse.svg \
+ ${pkgdir}/usr/share/icons/hicolor/scalable/apps/eclipse.svg
+
+ # fix python 2.7 path
+ sed -i 's|#!/usr/bin/python|#!/usr/bin/python2|' \
+ ${pkgdir}/usr/share/eclipse/plugins/org.apache.ant_1.7.1.v20100518-1145/bin/runant.py
+}
diff --git a/extra/eclipse/eclipse.desktop b/extra/eclipse/eclipse.desktop
new file mode 100644
index 000000000..5b210c81e
--- /dev/null
+++ b/extra/eclipse/eclipse.desktop
@@ -0,0 +1,9 @@
+[Desktop Entry]
+Name=Eclipse
+Comment=A Java Development Environment
+Icon=eclipse
+Exec=eclipse
+Terminal=false
+Type=Application
+Categories=Development;IDE;Java
+StartupNotify=true
diff --git a/extra/eclipse/eclipse.ini.patch b/extra/eclipse/eclipse.ini.patch
new file mode 100644
index 000000000..0f2e3b226
--- /dev/null
+++ b/extra/eclipse/eclipse.ini.patch
@@ -0,0 +1,14 @@
+--- eclipse/eclipse.ini 2010-06-24 09:22:59.474998451 +0200
++++ eclipse/eclipse.ini~ 2010-06-24 09:24:26.325011998 +0200
+@@ -5,9 +5,9 @@
+ -showsplash
+ org.eclipse.platform
+ --launcher.XXMaxPermSize
+-256m
++512m
+ --launcher.defaultAction
+ openFile
+ -vmargs
+ -Xms40m
+--Xmx384m
++-Xmx768m
diff --git a/extra/eclipse/eclipse.install b/extra/eclipse/eclipse.install
new file mode 100644
index 000000000..6b59b396e
--- /dev/null
+++ b/extra/eclipse/eclipse.install
@@ -0,0 +1,15 @@
+post_install() {
+ # Prevent a bug, where eclipse hangs without this.
+ # See http://aur.archlinux.org/packages.php?ID=12173
+ xulrunner --register-global >/dev/null 2>&1
+
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
diff --git a/extra/eclipse/eclipse.sh b/extra/eclipse/eclipse.sh
new file mode 100644
index 000000000..498d7fefb
--- /dev/null
+++ b/extra/eclipse/eclipse.sh
@@ -0,0 +1,4 @@
+#!/bin/bash
+export ECLIPSE_HOME=/usr/share/eclipse
+export GDK_NATIVE_WINDOWS=true
+${ECLIPSE_HOME}/eclipse "$@"
diff --git a/extra/eclipse/eclipse.svg b/extra/eclipse/eclipse.svg
new file mode 100644
index 000000000..56316be9e
--- /dev/null
+++ b/extra/eclipse/eclipse.svg
@@ -0,0 +1,1623 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://web.resource.org/cc/"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ id="svg2254"
+ sodipodi:version="0.32"
+ inkscape:version="0.45.1"
+ width="48"
+ height="48"
+ version="1.0"
+ sodipodi:docbase="/home/matt/eclipse33"
+ sodipodi:docname="eclipse-icon-clean.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape"
+ inkscape:export-filename="/home/matt/eclipse33/eclipse-icon-ubuntu.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <metadata
+ id="metadata2259">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <defs
+ id="defs2257">
+ <linearGradient
+ id="linearGradient4373">
+ <stop
+ style="stop-color:#8ea6d6;stop-opacity:0.73762375;"
+ offset="0"
+ id="stop4375" />
+ <stop
+ style="stop-color:#bbc9e6;stop-opacity:1;"
+ offset="1"
+ id="stop4377" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4035">
+ <stop
+ style="stop-color:#7474bb;stop-opacity:1;"
+ offset="0"
+ id="stop4037" />
+ <stop
+ style="stop-color:#070553;stop-opacity:1;"
+ offset="1"
+ id="stop4039" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4003">
+ <stop
+ style="stop-color:#494991;stop-opacity:1;"
+ offset="0"
+ id="stop4005" />
+ <stop
+ style="stop-color:#695ae8;stop-opacity:1;"
+ offset="1"
+ id="stop4007" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3987">
+ <stop
+ style="stop-color:#414083;stop-opacity:1;"
+ offset="0"
+ id="stop3989" />
+ <stop
+ style="stop-color:#5649b9;stop-opacity:1;"
+ offset="1"
+ id="stop3991" />
+ </linearGradient>
+ <linearGradient
+ id="XMLID_8_"
+ gradientUnits="userSpaceOnUse"
+ x1="36.2495"
+ y1="18.1187"
+ x2="92.7495"
+ y2="18.1187"
+ gradientTransform="translate(-142.55625,-33.100248)">
+ <stop
+ offset="0"
+ style="stop-color:#FEE8BD"
+ id="stop264" />
+ <stop
+ offset="0.0483"
+ style="stop-color:#FEEBC6"
+ id="stop266" />
+ <stop
+ offset="0.2334"
+ style="stop-color:#FFF6E5"
+ id="stop268" />
+ <stop
+ offset="0.3905"
+ style="stop-color:#FFFDF8"
+ id="stop270" />
+ <stop
+ offset="0.5"
+ style="stop-color:#FFFFFF"
+ id="stop272" />
+ <stop
+ offset="0.6094"
+ style="stop-color:#FFFDF9"
+ id="stop274" />
+ <stop
+ offset="0.7588"
+ style="stop-color:#FFF7E7"
+ id="stop276" />
+ <stop
+ offset="0.9306"
+ style="stop-color:#FEEDCB"
+ id="stop278" />
+ <stop
+ offset="1"
+ style="stop-color:#FEE8BD"
+ id="stop280" />
+ </linearGradient>
+ <linearGradient
+ id="XMLID_7_"
+ gradientUnits="userSpaceOnUse"
+ x1="45.416"
+ y1="107.0176"
+ x2="83.3354"
+ y2="107.0176"
+ gradientTransform="translate(-142.55625,-33.100248)">
+ <stop
+ offset="0"
+ style="stop-color:#A86E45"
+ id="stop205" />
+ <stop
+ offset="0.1124"
+ style="stop-color:#E8A06C"
+ id="stop207" />
+ <stop
+ offset="0.1609"
+ style="stop-color:#E59E6B"
+ id="stop209" />
+ <stop
+ offset="0.2012"
+ style="stop-color:#DA9969"
+ id="stop211" />
+ <stop
+ offset="0.2387"
+ style="stop-color:#C99066"
+ id="stop213" />
+ <stop
+ offset="0.2743"
+ style="stop-color:#B18461"
+ id="stop215" />
+ <stop
+ offset="0.3084"
+ style="stop-color:#92745A"
+ id="stop217" />
+ <stop
+ offset="0.3315"
+ style="stop-color:#786755"
+ id="stop219" />
+ <stop
+ offset="0.4068"
+ style="stop-color:#B5ACA2"
+ id="stop221" />
+ <stop
+ offset="0.478"
+ style="stop-color:#EAE8E5"
+ id="stop223" />
+ <stop
+ offset="0.5112"
+ style="stop-color:#FFFFFF"
+ id="stop225" />
+ <stop
+ offset="0.5376"
+ style="stop-color:#FDFCFC"
+ id="stop227" />
+ <stop
+ offset="0.5589"
+ style="stop-color:#F5F3F2"
+ id="stop229" />
+ <stop
+ offset="0.5783"
+ style="stop-color:#E8E4E1"
+ id="stop231" />
+ <stop
+ offset="0.5966"
+ style="stop-color:#D6CEC9"
+ id="stop233" />
+ <stop
+ offset="0.6142"
+ style="stop-color:#BFB3AA"
+ id="stop235" />
+ <stop
+ offset="0.6312"
+ style="stop-color:#A39185"
+ id="stop237" />
+ <stop
+ offset="0.6475"
+ style="stop-color:#816959"
+ id="stop239" />
+ <stop
+ offset="0.6517"
+ style="stop-color:#785E4C"
+ id="stop241" />
+ <stop
+ offset="0.671"
+ style="stop-color:#83654F"
+ id="stop243" />
+ <stop
+ offset="0.7414"
+ style="stop-color:#A87958"
+ id="stop245" />
+ <stop
+ offset="0.807"
+ style="stop-color:#C3895F"
+ id="stop247" />
+ <stop
+ offset="0.8652"
+ style="stop-color:#D39263"
+ id="stop249" />
+ <stop
+ offset="0.9101"
+ style="stop-color:#D99564"
+ id="stop251" />
+ <stop
+ offset="0.9278"
+ style="stop-color:#C48557"
+ id="stop253" />
+ <stop
+ offset="0.9557"
+ style="stop-color:#AA7045"
+ id="stop255" />
+ <stop
+ offset="0.9807"
+ style="stop-color:#9A633B"
+ id="stop257" />
+ <stop
+ offset="1"
+ style="stop-color:#945F37"
+ id="stop259" />
+ </linearGradient>
+ <linearGradient
+ id="XMLID_6_"
+ gradientUnits="userSpaceOnUse"
+ x1="-34.5078"
+ y1="-100.6235"
+ x2="-20.9253"
+ y2="-100.6235"
+ gradientTransform="matrix(2.7917,-0.3987,0,2.7907,-0.8029473,335.99965)">
+ <stop
+ offset="0"
+ style="stop-color:#A86E45"
+ id="stop146" />
+ <stop
+ offset="0.1124"
+ style="stop-color:#E8A06C"
+ id="stop148" />
+ <stop
+ offset="0.1609"
+ style="stop-color:#E59E6B"
+ id="stop150" />
+ <stop
+ offset="0.2012"
+ style="stop-color:#DA9969"
+ id="stop152" />
+ <stop
+ offset="0.2387"
+ style="stop-color:#C99066"
+ id="stop154" />
+ <stop
+ offset="0.2743"
+ style="stop-color:#B18461"
+ id="stop156" />
+ <stop
+ offset="0.3084"
+ style="stop-color:#92745A"
+ id="stop158" />
+ <stop
+ offset="0.3315"
+ style="stop-color:#786755"
+ id="stop160" />
+ <stop
+ offset="0.4068"
+ style="stop-color:#B5ACA2"
+ id="stop162" />
+ <stop
+ offset="0.478"
+ style="stop-color:#EAE8E5"
+ id="stop164" />
+ <stop
+ offset="0.5112"
+ style="stop-color:#FFFFFF"
+ id="stop166" />
+ <stop
+ offset="0.5376"
+ style="stop-color:#FDFCFC"
+ id="stop168" />
+ <stop
+ offset="0.5589"
+ style="stop-color:#F5F3F2"
+ id="stop170" />
+ <stop
+ offset="0.5783"
+ style="stop-color:#E8E4E1"
+ id="stop172" />
+ <stop
+ offset="0.5966"
+ style="stop-color:#D6CEC9"
+ id="stop174" />
+ <stop
+ offset="0.6142"
+ style="stop-color:#BFB3AA"
+ id="stop176" />
+ <stop
+ offset="0.6312"
+ style="stop-color:#A39185"
+ id="stop178" />
+ <stop
+ offset="0.6475"
+ style="stop-color:#816959"
+ id="stop180" />
+ <stop
+ offset="0.6517"
+ style="stop-color:#785E4C"
+ id="stop182" />
+ <stop
+ offset="0.671"
+ style="stop-color:#83654F"
+ id="stop184" />
+ <stop
+ offset="0.7414"
+ style="stop-color:#A87958"
+ id="stop186" />
+ <stop
+ offset="0.807"
+ style="stop-color:#C3895F"
+ id="stop188" />
+ <stop
+ offset="0.8652"
+ style="stop-color:#D39263"
+ id="stop190" />
+ <stop
+ offset="0.9101"
+ style="stop-color:#D99564"
+ id="stop192" />
+ <stop
+ offset="0.9278"
+ style="stop-color:#C48557"
+ id="stop194" />
+ <stop
+ offset="0.9557"
+ style="stop-color:#AA7045"
+ id="stop196" />
+ <stop
+ offset="0.9807"
+ style="stop-color:#9A633B"
+ id="stop198" />
+ <stop
+ offset="1"
+ style="stop-color:#945F37"
+ id="stop200" />
+ </linearGradient>
+ <linearGradient
+ id="XMLID_5_"
+ gradientUnits="userSpaceOnUse"
+ x1="44.7505"
+ y1="94.7715"
+ x2="83.3739"
+ y2="89.1356"
+ gradientTransform="translate(-142.55625,-33.100248)">
+ <stop
+ offset="0"
+ style="stop-color:#A86E45"
+ id="stop87" />
+ <stop
+ offset="0.1124"
+ style="stop-color:#E8A06C"
+ id="stop89" />
+ <stop
+ offset="0.1609"
+ style="stop-color:#E59E6B"
+ id="stop91" />
+ <stop
+ offset="0.2012"
+ style="stop-color:#DA9969"
+ id="stop93" />
+ <stop
+ offset="0.2387"
+ style="stop-color:#C99066"
+ id="stop95" />
+ <stop
+ offset="0.2743"
+ style="stop-color:#B18461"
+ id="stop97" />
+ <stop
+ offset="0.3084"
+ style="stop-color:#92745A"
+ id="stop99" />
+ <stop
+ offset="0.3315"
+ style="stop-color:#786755"
+ id="stop101" />
+ <stop
+ offset="0.4068"
+ style="stop-color:#B5ACA2"
+ id="stop103" />
+ <stop
+ offset="0.478"
+ style="stop-color:#EAE8E5"
+ id="stop105" />
+ <stop
+ offset="0.5112"
+ style="stop-color:#FFFFFF"
+ id="stop107" />
+ <stop
+ offset="0.5376"
+ style="stop-color:#FDFCFC"
+ id="stop109" />
+ <stop
+ offset="0.5589"
+ style="stop-color:#F5F3F2"
+ id="stop111" />
+ <stop
+ offset="0.5783"
+ style="stop-color:#E8E4E1"
+ id="stop113" />
+ <stop
+ offset="0.5966"
+ style="stop-color:#D6CEC9"
+ id="stop115" />
+ <stop
+ offset="0.6142"
+ style="stop-color:#BFB3AA"
+ id="stop117" />
+ <stop
+ offset="0.6312"
+ style="stop-color:#A39185"
+ id="stop119" />
+ <stop
+ offset="0.6475"
+ style="stop-color:#816959"
+ id="stop121" />
+ <stop
+ offset="0.6517"
+ style="stop-color:#785E4C"
+ id="stop123" />
+ <stop
+ offset="0.671"
+ style="stop-color:#83654F"
+ id="stop125" />
+ <stop
+ offset="0.7414"
+ style="stop-color:#A87958"
+ id="stop127" />
+ <stop
+ offset="0.807"
+ style="stop-color:#C3895F"
+ id="stop129" />
+ <stop
+ offset="0.8652"
+ style="stop-color:#D39263"
+ id="stop131" />
+ <stop
+ offset="0.9101"
+ style="stop-color:#D99564"
+ id="stop133" />
+ <stop
+ offset="0.9278"
+ style="stop-color:#C48557"
+ id="stop135" />
+ <stop
+ offset="0.9557"
+ style="stop-color:#AA7045"
+ id="stop137" />
+ <stop
+ offset="0.9807"
+ style="stop-color:#9A633B"
+ id="stop139" />
+ <stop
+ offset="1"
+ style="stop-color:#945F37"
+ id="stop141" />
+ </linearGradient>
+ <linearGradient
+ id="XMLID_2_"
+ gradientUnits="userSpaceOnUse"
+ x1="44.8901"
+ y1="95.7324"
+ x2="83.5847"
+ y2="90.0861"
+ gradientTransform="translate(-142.55625,-33.100248)">
+ <stop
+ offset="0"
+ style="stop-color:#A86E45"
+ id="stop60" />
+ <stop
+ offset="0.5787"
+ style="stop-color:#785E4C"
+ id="stop62" />
+ <stop
+ offset="1"
+ style="stop-color:#945F37"
+ id="stop64" />
+ </linearGradient>
+ <linearGradient
+ id="XMLID_1_"
+ gradientUnits="userSpaceOnUse"
+ x1="47.9995"
+ y1="100.5"
+ x2="81.9995"
+ y2="100.5"
+ gradientTransform="translate(-142.55625,-33.100248)">
+ <stop
+ offset="0.0056"
+ style="stop-color:#9C6137"
+ id="stop47" />
+ <stop
+ offset="0.1685"
+ style="stop-color:#C98452"
+ id="stop49" />
+ <stop
+ offset="0.5337"
+ style="stop-color:#CD8D5F"
+ id="stop51" />
+ <stop
+ offset="0.809"
+ style="stop-color:#C47D4A"
+ id="stop53" />
+ <stop
+ offset="1"
+ style="stop-color:#9C6137"
+ id="stop55" />
+ </linearGradient>
+ <radialGradient
+ id="light_1_"
+ cx="-27.6724"
+ cy="-109.9067"
+ r="9"
+ gradientTransform="matrix(2.7917,0,0,2.7907,141.7533,350.9971)"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ offset="0.264"
+ style="stop-color:#FFFFFF;"
+ id="stop37" />
+ <stop
+ offset="2.5"
+ style="stop-color:#FFF18F;stop-opacity:0"
+ id="stop39" />
+ </radialGradient>
+ <radialGradient
+ id="XMLID_10_"
+ cx="-27.6128"
+ cy="-86.5356"
+ r="6.2114"
+ gradientTransform="matrix(2.7917,0,0,2.7907,-0.8029473,317.89685)"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ offset="0.3427"
+ style="stop-color:#FFFFFF"
+ id="stop8" />
+ <stop
+ offset="0.3754"
+ style="stop-color:#ECECEC"
+ id="stop10" />
+ <stop
+ offset="0.4665"
+ style="stop-color:#BCBCBC"
+ id="stop12" />
+ <stop
+ offset="0.5531"
+ style="stop-color:#979797"
+ id="stop14" />
+ <stop
+ offset="0.6331"
+ style="stop-color:#7C7C7C"
+ id="stop16" />
+ <stop
+ offset="0.704"
+ style="stop-color:#6C6C6C"
+ id="stop18" />
+ <stop
+ offset="0.7584"
+ style="stop-color:#666666"
+ id="stop20" />
+ </radialGradient>
+ <linearGradient
+ id="XMLID_4_"
+ gradientUnits="userSpaceOnUse"
+ x1="37.6743"
+ y1="25.6035"
+ x2="37.6743"
+ y2="47.5006"
+ gradientTransform="translate(-2.6725931e-2,-44.465488)">
+ <stop
+ offset="0"
+ style="stop-color:#FCB462"
+ id="stop40" />
+ <stop
+ offset="1"
+ style="stop-color:#FCAF55"
+ id="stop42" />
+ </linearGradient>
+ <linearGradient
+ id="XMLID_3_"
+ gradientUnits="userSpaceOnUse"
+ x1="75.5039"
+ y1="11.96"
+ x2="85.5969"
+ y2="36.3307"
+ gradientTransform="translate(-2.6725931e-2,-44.465488)">
+ <stop
+ offset="0"
+ style="stop-color:#F99D77"
+ id="stop33" />
+ <stop
+ offset="1"
+ style="stop-color:#F7804E"
+ id="stop35" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4035"
+ id="linearGradient4041"
+ x1="-43.03101"
+ y1="8.6383018"
+ x2="-15.677965"
+ y2="37.492428"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4035"
+ id="linearGradient4189"
+ gradientUnits="userSpaceOnUse"
+ x1="-43.03101"
+ y1="8.6383018"
+ x2="-15.677965"
+ y2="37.492428" />
+ <mask
+ maskUnits="userSpaceOnUse"
+ id="mask4181">
+ <g
+ id="g4183"
+ transform="matrix(0.7925926,0,0,0.8907563,4.6132029,-3.2693226)">
+ <path
+ transform="translate(-15.844752,8.8397036)"
+ d="M -10.007212 23.982693 A 20.014421 20.014421 0 1 1 -50.036055,23.982693 A 20.014421 20.014421 0 1 1 -10.007212 23.982693 z"
+ sodipodi:ry="20.014421"
+ sodipodi:rx="20.014421"
+ sodipodi:cy="23.982693"
+ sodipodi:cx="-30.021633"
+ id="path4185"
+ style="opacity:1;fill:#c88cbb;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="arc" />
+ <path
+ transform="translate(-13.843309,8.8397036)"
+ d="M -10.007212 23.982693 A 20.014421 20.014421 0 1 1 -50.036055,23.982693 A 20.014421 20.014421 0 1 1 -10.007212 23.982693 z"
+ sodipodi:ry="20.014421"
+ sodipodi:rx="20.014421"
+ sodipodi:cy="23.982693"
+ sodipodi:cx="-30.021633"
+ id="path4187"
+ style="opacity:1;fill:url(#linearGradient4189);fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="arc" />
+ </g>
+ </mask>
+ <filter
+ inkscape:collect="always"
+ x="-0.42083731"
+ width="1.8416746"
+ y="-0.42480746"
+ height="1.8496149"
+ id="filter4267">
+ <feGaussianBlur
+ inkscape:collect="always"
+ stdDeviation="3.12931"
+ id="feGaussianBlur4269" />
+ </filter>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4035"
+ id="linearGradient4301"
+ gradientUnits="userSpaceOnUse"
+ x1="-43.03101"
+ y1="8.6383018"
+ x2="-15.677965"
+ y2="37.492428" />
+ <mask
+ maskUnits="userSpaceOnUse"
+ id="mask4297">
+ <path
+ sodipodi:type="arc"
+ style="opacity:1;fill:url(#linearGradient4301);fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path4299"
+ sodipodi:cx="-30.021633"
+ sodipodi:cy="23.982693"
+ sodipodi:rx="20.014421"
+ sodipodi:ry="20.014421"
+ d="M -10.007212 23.982693 A 20.014421 20.014421 0 1 1 -50.036055,23.982693 A 20.014421 20.014421 0 1 1 -10.007212 23.982693 z"
+ transform="translate(3.5679857,1.3974438)" />
+ </mask>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4003"
+ id="linearGradient4368"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9683099,0,0,0.9683099,47.162254,-1.0174889)"
+ x1="-47.534256"
+ y1="2.9675496"
+ x2="-0.16679382"
+ y2="49.50108" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4003"
+ id="linearGradient4371"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.0105249,0,0,1.0105249,3.4549308e-2,-50.022066)"
+ x1="-47.534256"
+ y1="2.9675496"
+ x2="-0.16679382"
+ y2="49.50108" />
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath4423">
+ <path
+ transform="translate(4.9557997,-4.7430601e-2)"
+ d="M -10.007212 23.982693 A 20.014421 20.014421 0 1 1 -50.036055,23.982693 A 20.014421 20.014421 0 1 1 -10.007212 23.982693 z"
+ sodipodi:ry="20.014421"
+ sodipodi:rx="20.014421"
+ sodipodi:cy="23.982693"
+ sodipodi:cx="-30.021633"
+ id="path4425"
+ style="opacity:1;fill:url(#linearGradient4427);fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="arc" />
+ </clipPath>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4035"
+ id="linearGradient4427"
+ gradientUnits="userSpaceOnUse"
+ x1="-43.03101"
+ y1="8.6383018"
+ x2="-15.677965"
+ y2="37.492428" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4373"
+ id="linearGradient4429"
+ gradientUnits="userSpaceOnUse"
+ x1="-46.468069"
+ y1="19.312662"
+ x2="-6.439226"
+ y2="19.312662" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4373"
+ id="linearGradient4431"
+ gradientUnits="userSpaceOnUse"
+ x1="-46.468067"
+ y1="22.481251"
+ x2="-6.4392262"
+ y2="22.481251" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4373"
+ id="linearGradient4433"
+ gradientUnits="userSpaceOnUse"
+ x1="-46.468067"
+ y1="25.482334"
+ x2="-6.4392262"
+ y2="25.482334" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4373"
+ id="linearGradient4435"
+ gradientUnits="userSpaceOnUse"
+ x1="-46.468067"
+ y1="28.481611"
+ x2="-6.4392262"
+ y2="28.481611" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#XMLID_10_"
+ id="radialGradient4753"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.7917,0,0,2.7907,-0.8029473,317.89685)"
+ cx="-27.6128"
+ cy="-86.5356"
+ r="6.2114" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#light_1_"
+ id="radialGradient4755"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.7917,0,0,2.7907,141.7533,350.9971)"
+ cx="-27.6724"
+ cy="-109.9067"
+ r="9" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#XMLID_1_"
+ id="linearGradient4757"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-142.55625,-33.100248)"
+ x1="47.9995"
+ y1="100.5"
+ x2="81.9995"
+ y2="100.5" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#XMLID_2_"
+ id="linearGradient4759"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-142.55625,-33.100248)"
+ x1="44.8901"
+ y1="95.7324"
+ x2="83.5847"
+ y2="90.0861" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#XMLID_3_"
+ id="linearGradient4761"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-2.6725931e-2,-44.465488)"
+ x1="75.5039"
+ y1="11.96"
+ x2="85.5969"
+ y2="36.3307" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#XMLID_4_"
+ id="linearGradient4763"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-2.6725931e-2,-44.465488)"
+ x1="37.6743"
+ y1="25.6035"
+ x2="37.6743"
+ y2="47.5006" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#XMLID_5_"
+ id="linearGradient4765"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-142.55625,-33.100248)"
+ x1="44.7505"
+ y1="94.7715"
+ x2="83.3739"
+ y2="89.1356" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#XMLID_6_"
+ id="linearGradient4767"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.7917,-0.3987,0,2.7907,-0.8029473,335.99965)"
+ x1="-34.5078"
+ y1="-100.6235"
+ x2="-20.9253"
+ y2="-100.6235" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#XMLID_7_"
+ id="linearGradient4769"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-142.55625,-33.100248)"
+ x1="45.416"
+ y1="107.0176"
+ x2="83.3354"
+ y2="107.0176" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#XMLID_8_"
+ id="linearGradient4771"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-142.55625,-33.100248)"
+ x1="36.2495"
+ y1="18.1187"
+ x2="92.7495"
+ y2="18.1187" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#XMLID_10_"
+ id="radialGradient4817"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.7917,0,0,2.7907,-0.8029473,317.89685)"
+ cx="-27.6128"
+ cy="-86.5356"
+ r="6.2114" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#light_1_"
+ id="radialGradient4819"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.7917,0,0,2.7907,141.7533,350.9971)"
+ cx="-27.6724"
+ cy="-109.9067"
+ r="9" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#XMLID_1_"
+ id="linearGradient4821"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-142.55625,-33.100248)"
+ x1="47.9995"
+ y1="100.5"
+ x2="81.9995"
+ y2="100.5" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#XMLID_2_"
+ id="linearGradient4823"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-142.55625,-33.100248)"
+ x1="44.8901"
+ y1="95.7324"
+ x2="83.5847"
+ y2="90.0861" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#XMLID_3_"
+ id="linearGradient4825"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-2.6725931e-2,-44.465488)"
+ x1="75.5039"
+ y1="11.96"
+ x2="85.5969"
+ y2="36.3307" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#XMLID_4_"
+ id="linearGradient4827"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-2.6725931e-2,-44.465488)"
+ x1="37.6743"
+ y1="25.6035"
+ x2="37.6743"
+ y2="47.5006" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#XMLID_5_"
+ id="linearGradient4829"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-142.55625,-33.100248)"
+ x1="44.7505"
+ y1="94.7715"
+ x2="83.3739"
+ y2="89.1356" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#XMLID_6_"
+ id="linearGradient4831"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.7917,-0.3987,0,2.7907,-0.8029473,335.99965)"
+ x1="-34.5078"
+ y1="-100.6235"
+ x2="-20.9253"
+ y2="-100.6235" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#XMLID_7_"
+ id="linearGradient4833"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-142.55625,-33.100248)"
+ x1="45.416"
+ y1="107.0176"
+ x2="83.3354"
+ y2="107.0176" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#XMLID_8_"
+ id="linearGradient4835"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-142.55625,-33.100248)"
+ x1="36.2495"
+ y1="18.1187"
+ x2="92.7495"
+ y2="18.1187" />
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath7503">
+ <g
+ id="g7505"
+ transform="matrix(7.4511206,0,0,7.4511206,305.77432,266.76067)">
+ <path
+ id="path7507"
+ d="M -29.775161,-22.982238 C -29.796903,-23.107991 -29.878636,-23.210123 -29.986136,-23.268906 L -29.986136,-23.560406 C -29.836092,-23.636636 -29.745233,-23.799162 -29.775161,-23.971619 C -29.797037,-24.097641 -29.879038,-24.200041 -29.986942,-24.25869 C -29.991505,-24.402695 -30.109876,-24.519188 -30.254687,-24.519188 L -34.370443,-24.519188 C -34.518072,-24.519188 -34.638859,-24.398401 -34.638859,-24.250772 L -34.638859,-23.677033 L -34.648925,-23.675691 C -34.872381,-23.643481 -35.024305,-23.439619 -34.986727,-23.22247 C -34.956396,-23.047329 -34.811048,-22.917013 -34.638994,-22.889232 L -34.638994,-22.687786 L -34.649059,-22.686175 C -34.872516,-22.654234 -35.024439,-22.450237 -34.986861,-22.233223 C -34.95653,-22.058082 -34.811182,-21.927632 -34.639128,-21.89985 L -34.639128,-21.69827 L -34.649193,-21.696928 C -34.87265,-21.664718 -35.024573,-21.460856 -34.986995,-21.243708 C -34.954785,-21.057829 -34.793199,-20.921072 -34.607186,-20.905503 C -34.562092,-20.820281 -34.473381,-20.761364 -34.370846,-20.761364 L -34.129003,-20.761364 C -33.83294,-20.026441 -33.162303,-19.419284 -32.381347,-19.419284 C -31.600256,-19.419284 -30.929753,-20.026441 -30.63369,-20.761364 L -30.255089,-20.761364 C -30.10746,-20.761364 -29.986673,-20.882151 -29.986673,-21.02978 L -29.986673,-21.581509 C -29.836629,-21.657739 -29.74577,-21.820265 -29.775698,-21.992722 C -29.79744,-22.118475 -29.879173,-22.220608 -29.986673,-22.279391 L -29.986673,-22.570756 C -29.836226,-22.647121 -29.745367,-22.809781 -29.775161,-22.982238 z "
+ style="opacity:0.2;fill:#141414" />
+ <path
+ id="path7509"
+ d="M -29.775161,-22.84803 C -29.796903,-22.973783 -29.878636,-23.075915 -29.986136,-23.134698 L -29.986136,-23.426198 C -29.836092,-23.502428 -29.745233,-23.664954 -29.775161,-23.837411 C -29.797037,-23.963433 -29.879038,-24.065833 -29.986942,-24.124482 C -29.991505,-24.268487 -30.109876,-24.38498 -30.254687,-24.38498 L -34.370443,-24.38498 C -34.518072,-24.38498 -34.638859,-24.264193 -34.638859,-24.116564 L -34.638859,-23.542825 L -34.648925,-23.541483 C -34.872381,-23.509273 -35.024305,-23.305411 -34.986727,-23.088262 C -34.956396,-22.913121 -34.811048,-22.782805 -34.638994,-22.755024 L -34.638994,-22.553578 L -34.649059,-22.551967 C -34.872516,-22.520026 -35.024439,-22.316029 -34.986861,-22.099015 C -34.95653,-21.923874 -34.811182,-21.793424 -34.639128,-21.765642 L -34.639128,-21.564062 L -34.649193,-21.56272 C -34.87265,-21.53051 -35.024573,-21.326648 -34.986995,-21.1095 C -34.954785,-20.923621 -34.793199,-20.786864 -34.607186,-20.771295 C -34.562092,-20.686073 -34.473381,-20.627156 -34.370846,-20.627156 L -34.129003,-20.627156 C -33.83294,-19.892233 -33.162303,-19.285076 -32.381347,-19.285076 C -31.600256,-19.285076 -30.929753,-19.892233 -30.63369,-20.627156 L -30.255089,-20.627156 C -30.10746,-20.627156 -29.986673,-20.747943 -29.986673,-20.895572 L -29.986673,-21.447301 C -29.836629,-21.523531 -29.74577,-21.686057 -29.775698,-21.858514 C -29.79744,-21.984267 -29.879173,-22.0864 -29.986673,-22.145183 L -29.986673,-22.436548 C -29.836226,-22.512913 -29.745367,-22.675573 -29.775161,-22.84803 z "
+ style="opacity:0.2;fill:#141414" />
+ <path
+ id="path7511"
+ d="M -30.507669,-21.694512 C -30.507669,-20.66044 -31.346469,-19.553492 -32.381078,-19.553492 C -33.415553,-19.553492 -34.254353,-20.66044 -34.254353,-21.694512 C -34.254353,-22.728719 -33.415553,-23.298835 -32.381078,-23.298835 C -31.346469,-23.298835 -30.507669,-22.728719 -30.507669,-21.694512 z "
+ style="fill:url(#radialGradient7547)" />
+ <path
+ id="path7513"
+ d="M -32.380944,-35.12162 C -29.897962,-35.12162 -27.884976,-33.031465 -27.884976,-30.452926 C -27.884976,-27.874388 -30.519882,-25.378656 -30.519882,-24.634607 L -34.242141,-24.634607 C -34.242141,-25.557018 -36.876912,-27.874388 -36.876912,-30.452926 C -36.876912,-33.031465 -34.86406,-35.12162 -32.380944,-35.12162 z "
+ style="opacity:0.4;fill:#ffbf61" />
+ <path
+ id="path7515"
+ d="M -32.380944,-35.926868 C -35.304128,-35.926868 -37.68216,-33.482538 -37.68216,-30.477889 C -37.68216,-28.627429 -36.56045,-26.960163 -35.741378,-25.742494 C -35.544227,-25.449384 -35.083893,-24.765325 -35.046315,-24.59515 C -35.036652,-24.159511 -34.680061,-23.807751 -34.242006,-23.807751 L -30.519882,-23.807751 C -30.10075,-23.807751 -29.759459,-24.130656 -29.722015,-24.540124 C -29.679203,-24.679969 -29.267184,-25.29585 -29.111906,-25.527761 C -28.301826,-26.738451 -27.079728,-28.56462 -27.079728,-30.477889 C -27.079728,-33.482538 -29.457894,-35.926868 -32.380944,-35.926868 z M -29.722015,-24.541198 C -29.721747,-24.54254 -29.721612,-24.544016 -29.721478,-24.545493 C -29.72121,-24.546566 -29.720405,-24.547372 -29.72027,-24.548445 C -29.72027,-24.54858 -29.721478,-24.543077 -29.722015,-24.541198 z M -30.519882,-24.612999 L -34.242141,-24.612999 C -34.242141,-25.530579 -36.877046,-27.91304 -36.877046,-30.477889 C -36.877046,-33.042738 -34.86406,-35.12162 -32.380944,-35.12162 C -29.897962,-35.12162 -27.884976,-33.042604 -27.884976,-30.477889 C -27.884976,-27.913174 -30.519882,-25.353022 -30.519882,-24.612999 z "
+ style="opacity:0.2;fill:#ff8b17" />
+ <path
+ id="path7517"
+ d="M -32.380944,-35.658452 C -35.156097,-35.658452 -37.413744,-33.334506 -37.413744,-30.477889 C -37.413744,-28.709296 -36.318338,-27.08095 -35.518459,-25.892136 C -35.223872,-25.454215 -34.778838,-24.792972 -34.778838,-24.613134 C -34.778838,-24.317205 -34.538069,-24.076302 -34.242006,-24.076302 L -30.519882,-24.076302 C -30.223953,-24.076302 -29.98305,-24.317205 -29.98305,-24.613134 L -29.984123,-24.597834 C -29.955805,-24.749489 -29.566334,-25.331683 -29.333483,-25.67955 C -28.542864,-26.860983 -27.348144,-28.646218 -27.348144,-30.477889 C -27.348144,-33.334506 -29.605925,-35.658452 -32.380944,-35.658452 z M -30.519882,-24.612999 L -34.242141,-24.612999 C -34.242141,-25.530579 -36.877046,-27.91304 -36.877046,-30.477889 C -36.877046,-33.042738 -34.86406,-35.12162 -32.380944,-35.12162 C -29.897962,-35.12162 -27.884976,-33.042604 -27.884976,-30.477889 C -27.884976,-27.913174 -30.519882,-25.353022 -30.519882,-24.612999 z "
+ style="opacity:0.2;fill:#ff8b17" />
+ <path
+ id="path7519"
+ d="M -32.380944,-35.390036 C -35.008066,-35.390036 -37.145328,-33.186475 -37.145328,-30.477889 C -37.145328,-28.791163 -36.076227,-27.202006 -35.295673,-26.041912 C -34.891841,-25.4416 -34.510422,-24.874705 -34.510422,-24.613134 C -34.510422,-24.464968 -34.390172,-24.344718 -34.242006,-24.344718 L -30.519882,-24.344718 C -30.371716,-24.344718 -30.251466,-24.464968 -30.251466,-24.613134 C -30.251466,-24.790288 -29.882125,-25.342151 -29.556402,-25.828924 C -28.784035,-26.983113 -27.61656,-28.727817 -27.61656,-30.477889 C -27.61656,-33.186475 -29.753957,-35.390036 -32.380944,-35.390036 z M -30.519882,-24.612999 L -34.242141,-24.612999 C -34.242141,-25.530579 -36.877046,-27.91304 -36.877046,-30.477889 C -36.877046,-33.042738 -34.86406,-35.12162 -32.380944,-35.12162 C -29.897962,-35.12162 -27.884976,-33.042604 -27.884976,-30.477889 C -27.884976,-27.913174 -30.519882,-25.353022 -30.519882,-24.612999 z "
+ style="opacity:0.4;fill:#ff8b17" />
+ <path
+ id="path7521"
+ d="M -30.519882,-24.612999 L -34.242141,-24.612999 C -34.242141,-25.530579 -36.877046,-27.91304 -36.877046,-30.477889 C -36.877046,-33.042738 -34.86406,-35.12162 -32.380944,-35.12162 C -29.897962,-35.12162 -27.884976,-33.042604 -27.884976,-30.477889 C -27.884976,-27.913174 -30.519882,-25.353022 -30.519882,-24.612999 z "
+ style="opacity:0.2;fill:#ffbf61" />
+ <path
+ id="path7523"
+ d="M -31.631661,-29.235257 L -31.631661,-27.362519 C -31.631661,-27.156778 -31.800494,-26.988078 -32.006369,-26.988078 L -32.755653,-26.988078 C -32.961662,-26.988078 -33.130361,-27.156778 -33.130361,-27.362519 L -33.130361,-29.235257 L -33.50507,-29.235257 L -33.50507,-27.362519 C -33.50507,-26.950634 -33.16794,-26.613504 -32.621579,-26.613504 L -32.621579,-24.366191 L -32.140712,-24.366191 L -32.140712,-26.61337 C -31.594351,-26.61337 -31.25722,-26.9505 -31.25722,-27.362384 L -31.25722,-29.235257 L -31.631661,-29.235257 z "
+ style="fill:#cba572" />
+ <path
+ id="path7525"
+ d="M -32.380944,-35.255828 C -34.934117,-35.255828 -37.01112,-33.112392 -37.01112,-30.477889 C -37.01112,-28.831694 -35.955037,-27.278102 -35.184012,-26.14391 C -34.750655,-25.506154 -34.376214,-24.928657 -34.376214,-24.626554 L -34.24308,-24.626554 C -34.267506,-25.553261 -36.876912,-27.924984 -36.876912,-30.477889 C -36.876912,-33.042604 -34.86406,-35.12162 -32.380944,-35.12162 C -29.897962,-35.12162 -27.884976,-33.042604 -27.884976,-30.477889 C -27.884976,-27.927534 -30.489282,-25.382682 -30.518674,-24.626554 L -30.385808,-24.626554 C -30.385808,-24.843971 -30.053375,-25.362551 -29.668466,-25.931996 C -28.859058,-27.128863 -27.750768,-28.768213 -27.750768,-30.477889 C -27.750768,-33.112392 -29.827905,-35.255828 -32.380944,-35.255828 z "
+ style="fill:#9e8c68" />
+ <path
+ id="path7527"
+ d="M -30.032304,-21.163988 C -30.032304,-21.016359 -30.153091,-20.895572 -30.30072,-20.895572 L -34.32696,-20.895572 C -34.474589,-20.895572 -34.595376,-21.016359 -34.595376,-21.163988 L -34.595376,-24.38498 C -34.595376,-24.532609 -34.474589,-24.653396 -34.32696,-24.653396 L -30.30072,-24.653396 C -30.153091,-24.653396 -30.032304,-24.532609 -30.032304,-24.38498 L -30.032304,-21.163988 z "
+ style="fill:#966746" />
+ <path
+ id="path7529"
+ d="M -30.032304,-21.298196 C -30.032304,-21.076753 -30.213485,-20.895572 -30.434928,-20.895572 L -34.192752,-20.895572 C -34.414195,-20.895572 -34.595376,-21.076753 -34.595376,-21.298196 L -34.595376,-24.116564 C -34.595376,-24.338007 -34.414195,-24.519188 -34.192752,-24.519188 L -30.434928,-24.519188 C -30.213485,-24.519188 -30.032304,-24.338007 -30.032304,-24.116564 L -30.032304,-21.298196 z "
+ style="fill:url(#linearGradient7549)" />
+ <path
+ id="path7531"
+ d="M -29.825355,-24.105827 C -29.788582,-23.888813 -29.937553,-23.684817 -30.156581,-23.652741 L -34.470965,-23.020353 C -34.689993,-22.988412 -34.899491,-23.139664 -34.936399,-23.356678 C -34.973306,-23.573827 -34.824201,-23.777689 -34.605173,-23.809899 L -30.290789,-24.442153 C -30.071761,-24.474094 -29.862262,-24.322842 -29.825355,-24.105827 z "
+ style="fill:url(#linearGradient7551)" />
+ <path
+ id="path7533"
+ d="M -29.825355,-23.116446 C -29.788582,-22.899297 -29.937553,-22.695435 -30.156581,-22.66336 L -34.470965,-22.031106 C -34.689993,-21.998896 -34.899491,-22.150283 -34.936399,-22.367431 C -34.973306,-22.584445 -34.824201,-22.788442 -34.605173,-22.820383 L -30.290789,-23.452637 C -30.071761,-23.484847 -29.862262,-23.33346 -29.825355,-23.116446 z "
+ style="fill:url(#linearGradient7553)" />
+ <path
+ id="path7535"
+ d="M -29.825355,-22.127065 C -29.788582,-21.91005 -29.937553,-21.706054 -30.156581,-21.673978 L -34.470965,-21.04159 C -34.689993,-21.009649 -34.899491,-21.160901 -34.936399,-21.377916 C -34.973306,-21.595064 -34.824201,-21.798926 -34.605173,-21.831136 L -30.290789,-22.46339 C -30.071761,-22.495331 -29.862262,-22.344079 -29.825355,-22.127065 z "
+ style="fill:url(#linearGradient7555)" />
+ <path
+ id="path7537"
+ d="M -34.887815,-23.22341 L -34.936533,-23.356678 C -34.97344,-23.573827 -34.824335,-23.777689 -34.605307,-23.809899 L -30.290923,-24.442153 C -30.071895,-24.474094 -29.882528,-24.396656 -29.845755,-24.179642 L -34.887815,-23.22341 z "
+ style="fill:url(#linearGradient7557)" />
+ <path
+ id="path7539"
+ d="M -34.880031,-22.220339 L -29.853136,-23.208244 C -29.889909,-23.425259 -30.071761,-23.484847 -30.290789,-23.452503 L -34.605173,-22.820249 C -34.824201,-22.788307 -34.973306,-22.584311 -34.936399,-22.367297 L -34.880031,-22.220339 z "
+ style="fill:url(#linearGradient7559)" />
+ <path
+ id="path7541"
+ d="M -34.853592,-21.194185 L -29.853002,-22.218594 C -29.889909,-22.435609 -30.071761,-22.495466 -30.290789,-22.46339 L -34.605173,-21.831136 C -34.824201,-21.798926 -34.973306,-21.595064 -34.936399,-21.377916 L -34.853592,-21.194185 z "
+ style="fill:url(#linearGradient7561)" />
+ <path
+ id="path7543"
+ d="M -28.589568,-32.601596 C -29.364217,-34.00152 -30.787895,-34.925676 -32.380944,-34.925676 C -33.973993,-34.925676 -35.397671,-34.00152 -36.17232,-32.601596 C -35.153681,-33.183656 -33.826767,-33.537429 -32.380944,-33.537429 C -30.935121,-33.537295 -29.608207,-33.183656 -28.589568,-32.601596 z "
+ style="fill:url(#linearGradient7563)" />
+ <path
+ id="path7545"
+ d="M -34.042707,-20.761364 L -30.719449,-20.761364 C -30.706297,-20.805384 -30.69462,-20.85021 -30.684823,-20.895572 L -34.077199,-20.895572 C -34.067402,-20.85021 -34.055726,-20.805384 -34.042707,-20.761364 z "
+ style="fill:#3f3f3f" />
+ </g>
+ </clipPath>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#XMLID_10_"
+ id="radialGradient7547"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.3746685,0,0,0.3745343,-41.145122,6.4690164)"
+ cx="-27.6128"
+ cy="-86.5356"
+ r="6.2114" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#XMLID_1_"
+ id="linearGradient7549"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.134208,0,0,0.134208,-60.169549,-40.637602)"
+ x1="47.9995"
+ y1="100.5"
+ x2="81.9995"
+ y2="100.5" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#XMLID_2_"
+ id="linearGradient7551"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.134208,0,0,0.134208,-60.169549,-40.637602)"
+ x1="44.8901"
+ y1="95.7324"
+ x2="83.5847"
+ y2="90.0861" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#XMLID_3_"
+ id="linearGradient7553"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.134208,0,0,0.134208,-41.040947,-42.162908)"
+ x1="75.5039"
+ y1="11.96"
+ x2="85.5969"
+ y2="36.3307" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#XMLID_4_"
+ id="linearGradient7555"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.134208,0,0,0.134208,-41.040947,-42.162908)"
+ x1="37.6743"
+ y1="25.6035"
+ x2="37.6743"
+ y2="47.5006" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#XMLID_5_"
+ id="linearGradient7557"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.134208,0,0,0.134208,-60.169549,-40.637602)"
+ x1="44.7505"
+ y1="94.7715"
+ x2="83.3739"
+ y2="89.1356" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#XMLID_6_"
+ id="linearGradient7559"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.3746685,-5.350873e-2,0,0.3745343,-41.145122,8.898557)"
+ x1="-34.5078"
+ y1="-100.6235"
+ x2="-20.9253"
+ y2="-100.6235" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#XMLID_7_"
+ id="linearGradient7561"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.134208,0,0,0.134208,-60.169549,-40.637602)"
+ x1="45.416"
+ y1="107.0176"
+ x2="83.3354"
+ y2="107.0176" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#XMLID_8_"
+ id="linearGradient7563"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.134208,0,0,0.134208,-60.169549,-40.637602)"
+ x1="36.2495"
+ y1="18.1187"
+ x2="92.7495"
+ y2="18.1187" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#light_1_"
+ id="radialGradient7653"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.7917,0,0,2.7907,141.7533,350.9971)"
+ cx="-27.6724"
+ cy="-109.9067"
+ r="9" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#XMLID_10_"
+ id="radialGradient8092"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.3746685,0,0,0.3745343,-41.145122,6.4690164)"
+ cx="-27.6128"
+ cy="-86.5356"
+ r="6.2114" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#XMLID_1_"
+ id="linearGradient8094"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.134208,0,0,0.134208,-60.169549,-40.637602)"
+ x1="47.9995"
+ y1="100.5"
+ x2="81.9995"
+ y2="100.5" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#XMLID_2_"
+ id="linearGradient8096"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.134208,0,0,0.134208,-60.169549,-40.637602)"
+ x1="44.8901"
+ y1="95.7324"
+ x2="83.5847"
+ y2="90.0861" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#XMLID_3_"
+ id="linearGradient8098"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.134208,0,0,0.134208,-41.040947,-42.162908)"
+ x1="75.5039"
+ y1="11.96"
+ x2="85.5969"
+ y2="36.3307" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#XMLID_4_"
+ id="linearGradient8100"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.134208,0,0,0.134208,-41.040947,-42.162908)"
+ x1="37.6743"
+ y1="25.6035"
+ x2="37.6743"
+ y2="47.5006" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#XMLID_5_"
+ id="linearGradient8102"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.134208,0,0,0.134208,-60.169549,-40.637602)"
+ x1="44.7505"
+ y1="94.7715"
+ x2="83.3739"
+ y2="89.1356" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#XMLID_6_"
+ id="linearGradient8104"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.3746685,-5.350873e-2,0,0.3745343,-41.145122,8.898557)"
+ x1="-34.5078"
+ y1="-100.6235"
+ x2="-20.9253"
+ y2="-100.6235" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#XMLID_7_"
+ id="linearGradient8106"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.134208,0,0,0.134208,-60.169549,-40.637602)"
+ x1="45.416"
+ y1="107.0176"
+ x2="83.3354"
+ y2="107.0176" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#XMLID_8_"
+ id="linearGradient8108"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.134208,0,0,0.134208,-60.169549,-40.637602)"
+ x1="36.2495"
+ y1="18.1187"
+ x2="92.7495"
+ y2="18.1187" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#light_1_"
+ id="radialGradient8110"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.7917,0,0,2.7907,141.7533,350.9971)"
+ cx="-27.6724"
+ cy="-109.9067"
+ r="9" />
+ <mask
+ maskUnits="userSpaceOnUse"
+ id="mask8044">
+ <g
+ id="g8046"
+ transform="translate(8.8639968,22.032387)">
+ <g
+ id="g8048">
+ <path
+ style="opacity:0.2;fill:#141414"
+ d="M -29.775161,-22.982238 C -29.796903,-23.107991 -29.878636,-23.210123 -29.986136,-23.268906 L -29.986136,-23.560406 C -29.836092,-23.636636 -29.745233,-23.799162 -29.775161,-23.971619 C -29.797037,-24.097641 -29.879038,-24.200041 -29.986942,-24.25869 C -29.991505,-24.402695 -30.109876,-24.519188 -30.254687,-24.519188 L -34.370443,-24.519188 C -34.518072,-24.519188 -34.638859,-24.398401 -34.638859,-24.250772 L -34.638859,-23.677033 L -34.648925,-23.675691 C -34.872381,-23.643481 -35.024305,-23.439619 -34.986727,-23.22247 C -34.956396,-23.047329 -34.811048,-22.917013 -34.638994,-22.889232 L -34.638994,-22.687786 L -34.649059,-22.686175 C -34.872516,-22.654234 -35.024439,-22.450237 -34.986861,-22.233223 C -34.95653,-22.058082 -34.811182,-21.927632 -34.639128,-21.89985 L -34.639128,-21.69827 L -34.649193,-21.696928 C -34.87265,-21.664718 -35.024573,-21.460856 -34.986995,-21.243708 C -34.954785,-21.057829 -34.793199,-20.921072 -34.607186,-20.905503 C -34.562092,-20.820281 -34.473381,-20.761364 -34.370846,-20.761364 L -34.129003,-20.761364 C -33.83294,-20.026441 -33.162303,-19.419284 -32.381347,-19.419284 C -31.600256,-19.419284 -30.929753,-20.026441 -30.63369,-20.761364 L -30.255089,-20.761364 C -30.10746,-20.761364 -29.986673,-20.882151 -29.986673,-21.02978 L -29.986673,-21.581509 C -29.836629,-21.657739 -29.74577,-21.820265 -29.775698,-21.992722 C -29.79744,-22.118475 -29.879173,-22.220608 -29.986673,-22.279391 L -29.986673,-22.570756 C -29.836226,-22.647121 -29.745367,-22.809781 -29.775161,-22.982238 z "
+ id="path8050" />
+ <path
+ style="opacity:0.2;fill:#141414"
+ d="M -29.775161,-22.84803 C -29.796903,-22.973783 -29.878636,-23.075915 -29.986136,-23.134698 L -29.986136,-23.426198 C -29.836092,-23.502428 -29.745233,-23.664954 -29.775161,-23.837411 C -29.797037,-23.963433 -29.879038,-24.065833 -29.986942,-24.124482 C -29.991505,-24.268487 -30.109876,-24.38498 -30.254687,-24.38498 L -34.370443,-24.38498 C -34.518072,-24.38498 -34.638859,-24.264193 -34.638859,-24.116564 L -34.638859,-23.542825 L -34.648925,-23.541483 C -34.872381,-23.509273 -35.024305,-23.305411 -34.986727,-23.088262 C -34.956396,-22.913121 -34.811048,-22.782805 -34.638994,-22.755024 L -34.638994,-22.553578 L -34.649059,-22.551967 C -34.872516,-22.520026 -35.024439,-22.316029 -34.986861,-22.099015 C -34.95653,-21.923874 -34.811182,-21.793424 -34.639128,-21.765642 L -34.639128,-21.564062 L -34.649193,-21.56272 C -34.87265,-21.53051 -35.024573,-21.326648 -34.986995,-21.1095 C -34.954785,-20.923621 -34.793199,-20.786864 -34.607186,-20.771295 C -34.562092,-20.686073 -34.473381,-20.627156 -34.370846,-20.627156 L -34.129003,-20.627156 C -33.83294,-19.892233 -33.162303,-19.285076 -32.381347,-19.285076 C -31.600256,-19.285076 -30.929753,-19.892233 -30.63369,-20.627156 L -30.255089,-20.627156 C -30.10746,-20.627156 -29.986673,-20.747943 -29.986673,-20.895572 L -29.986673,-21.447301 C -29.836629,-21.523531 -29.74577,-21.686057 -29.775698,-21.858514 C -29.79744,-21.984267 -29.879173,-22.0864 -29.986673,-22.145183 L -29.986673,-22.436548 C -29.836226,-22.512913 -29.745367,-22.675573 -29.775161,-22.84803 z "
+ id="path8052" />
+ <path
+ style="fill:url(#radialGradient8092)"
+ d="M -30.507669,-21.694512 C -30.507669,-20.66044 -31.346469,-19.553492 -32.381078,-19.553492 C -33.415553,-19.553492 -34.254353,-20.66044 -34.254353,-21.694512 C -34.254353,-22.728719 -33.415553,-23.298835 -32.381078,-23.298835 C -31.346469,-23.298835 -30.507669,-22.728719 -30.507669,-21.694512 z "
+ id="path8054" />
+ <path
+ style="opacity:0.4;fill:#ffbf61"
+ d="M -32.380944,-35.12162 C -29.897962,-35.12162 -27.884976,-33.031465 -27.884976,-30.452926 C -27.884976,-27.874388 -30.519882,-25.378656 -30.519882,-24.634607 L -34.242141,-24.634607 C -34.242141,-25.557018 -36.876912,-27.874388 -36.876912,-30.452926 C -36.876912,-33.031465 -34.86406,-35.12162 -32.380944,-35.12162 z "
+ id="path8056" />
+ <path
+ style="opacity:0.2;fill:#ff8b17"
+ d="M -32.380944,-35.926868 C -35.304128,-35.926868 -37.68216,-33.482538 -37.68216,-30.477889 C -37.68216,-28.627429 -36.56045,-26.960163 -35.741378,-25.742494 C -35.544227,-25.449384 -35.083893,-24.765325 -35.046315,-24.59515 C -35.036652,-24.159511 -34.680061,-23.807751 -34.242006,-23.807751 L -30.519882,-23.807751 C -30.10075,-23.807751 -29.759459,-24.130656 -29.722015,-24.540124 C -29.679203,-24.679969 -29.267184,-25.29585 -29.111906,-25.527761 C -28.301826,-26.738451 -27.079728,-28.56462 -27.079728,-30.477889 C -27.079728,-33.482538 -29.457894,-35.926868 -32.380944,-35.926868 z M -29.722015,-24.541198 C -29.721747,-24.54254 -29.721612,-24.544016 -29.721478,-24.545493 C -29.72121,-24.546566 -29.720405,-24.547372 -29.72027,-24.548445 C -29.72027,-24.54858 -29.721478,-24.543077 -29.722015,-24.541198 z M -30.519882,-24.612999 L -34.242141,-24.612999 C -34.242141,-25.530579 -36.877046,-27.91304 -36.877046,-30.477889 C -36.877046,-33.042738 -34.86406,-35.12162 -32.380944,-35.12162 C -29.897962,-35.12162 -27.884976,-33.042604 -27.884976,-30.477889 C -27.884976,-27.913174 -30.519882,-25.353022 -30.519882,-24.612999 z "
+ id="path8058" />
+ <path
+ style="opacity:0.2;fill:#ff8b17"
+ d="M -32.380944,-35.658452 C -35.156097,-35.658452 -37.413744,-33.334506 -37.413744,-30.477889 C -37.413744,-28.709296 -36.318338,-27.08095 -35.518459,-25.892136 C -35.223872,-25.454215 -34.778838,-24.792972 -34.778838,-24.613134 C -34.778838,-24.317205 -34.538069,-24.076302 -34.242006,-24.076302 L -30.519882,-24.076302 C -30.223953,-24.076302 -29.98305,-24.317205 -29.98305,-24.613134 L -29.984123,-24.597834 C -29.955805,-24.749489 -29.566334,-25.331683 -29.333483,-25.67955 C -28.542864,-26.860983 -27.348144,-28.646218 -27.348144,-30.477889 C -27.348144,-33.334506 -29.605925,-35.658452 -32.380944,-35.658452 z M -30.519882,-24.612999 L -34.242141,-24.612999 C -34.242141,-25.530579 -36.877046,-27.91304 -36.877046,-30.477889 C -36.877046,-33.042738 -34.86406,-35.12162 -32.380944,-35.12162 C -29.897962,-35.12162 -27.884976,-33.042604 -27.884976,-30.477889 C -27.884976,-27.913174 -30.519882,-25.353022 -30.519882,-24.612999 z "
+ id="path8060" />
+ <path
+ style="opacity:0.4;fill:#ff8b17"
+ d="M -32.380944,-35.390036 C -35.008066,-35.390036 -37.145328,-33.186475 -37.145328,-30.477889 C -37.145328,-28.791163 -36.076227,-27.202006 -35.295673,-26.041912 C -34.891841,-25.4416 -34.510422,-24.874705 -34.510422,-24.613134 C -34.510422,-24.464968 -34.390172,-24.344718 -34.242006,-24.344718 L -30.519882,-24.344718 C -30.371716,-24.344718 -30.251466,-24.464968 -30.251466,-24.613134 C -30.251466,-24.790288 -29.882125,-25.342151 -29.556402,-25.828924 C -28.784035,-26.983113 -27.61656,-28.727817 -27.61656,-30.477889 C -27.61656,-33.186475 -29.753957,-35.390036 -32.380944,-35.390036 z M -30.519882,-24.612999 L -34.242141,-24.612999 C -34.242141,-25.530579 -36.877046,-27.91304 -36.877046,-30.477889 C -36.877046,-33.042738 -34.86406,-35.12162 -32.380944,-35.12162 C -29.897962,-35.12162 -27.884976,-33.042604 -27.884976,-30.477889 C -27.884976,-27.913174 -30.519882,-25.353022 -30.519882,-24.612999 z "
+ id="path8062" />
+ <path
+ style="opacity:0.2;fill:#ffbf61"
+ d="M -30.519882,-24.612999 L -34.242141,-24.612999 C -34.242141,-25.530579 -36.877046,-27.91304 -36.877046,-30.477889 C -36.877046,-33.042738 -34.86406,-35.12162 -32.380944,-35.12162 C -29.897962,-35.12162 -27.884976,-33.042604 -27.884976,-30.477889 C -27.884976,-27.913174 -30.519882,-25.353022 -30.519882,-24.612999 z "
+ id="path8064" />
+ <path
+ style="fill:#cba572"
+ d="M -31.631661,-29.235257 L -31.631661,-27.362519 C -31.631661,-27.156778 -31.800494,-26.988078 -32.006369,-26.988078 L -32.755653,-26.988078 C -32.961662,-26.988078 -33.130361,-27.156778 -33.130361,-27.362519 L -33.130361,-29.235257 L -33.50507,-29.235257 L -33.50507,-27.362519 C -33.50507,-26.950634 -33.16794,-26.613504 -32.621579,-26.613504 L -32.621579,-24.366191 L -32.140712,-24.366191 L -32.140712,-26.61337 C -31.594351,-26.61337 -31.25722,-26.9505 -31.25722,-27.362384 L -31.25722,-29.235257 L -31.631661,-29.235257 z "
+ id="path8066" />
+ <path
+ style="fill:#9e8c68"
+ d="M -32.380944,-35.255828 C -34.934117,-35.255828 -37.01112,-33.112392 -37.01112,-30.477889 C -37.01112,-28.831694 -35.955037,-27.278102 -35.184012,-26.14391 C -34.750655,-25.506154 -34.376214,-24.928657 -34.376214,-24.626554 L -34.24308,-24.626554 C -34.267506,-25.553261 -36.876912,-27.924984 -36.876912,-30.477889 C -36.876912,-33.042604 -34.86406,-35.12162 -32.380944,-35.12162 C -29.897962,-35.12162 -27.884976,-33.042604 -27.884976,-30.477889 C -27.884976,-27.927534 -30.489282,-25.382682 -30.518674,-24.626554 L -30.385808,-24.626554 C -30.385808,-24.843971 -30.053375,-25.362551 -29.668466,-25.931996 C -28.859058,-27.128863 -27.750768,-28.768213 -27.750768,-30.477889 C -27.750768,-33.112392 -29.827905,-35.255828 -32.380944,-35.255828 z "
+ id="path8068" />
+ <path
+ style="fill:#966746"
+ d="M -30.032304,-21.163988 C -30.032304,-21.016359 -30.153091,-20.895572 -30.30072,-20.895572 L -34.32696,-20.895572 C -34.474589,-20.895572 -34.595376,-21.016359 -34.595376,-21.163988 L -34.595376,-24.38498 C -34.595376,-24.532609 -34.474589,-24.653396 -34.32696,-24.653396 L -30.30072,-24.653396 C -30.153091,-24.653396 -30.032304,-24.532609 -30.032304,-24.38498 L -30.032304,-21.163988 z "
+ id="path8070" />
+ <path
+ style="fill:url(#linearGradient8094)"
+ d="M -30.032304,-21.298196 C -30.032304,-21.076753 -30.213485,-20.895572 -30.434928,-20.895572 L -34.192752,-20.895572 C -34.414195,-20.895572 -34.595376,-21.076753 -34.595376,-21.298196 L -34.595376,-24.116564 C -34.595376,-24.338007 -34.414195,-24.519188 -34.192752,-24.519188 L -30.434928,-24.519188 C -30.213485,-24.519188 -30.032304,-24.338007 -30.032304,-24.116564 L -30.032304,-21.298196 z "
+ id="path8072" />
+ <path
+ style="fill:url(#linearGradient8096)"
+ d="M -29.825355,-24.105827 C -29.788582,-23.888813 -29.937553,-23.684817 -30.156581,-23.652741 L -34.470965,-23.020353 C -34.689993,-22.988412 -34.899491,-23.139664 -34.936399,-23.356678 C -34.973306,-23.573827 -34.824201,-23.777689 -34.605173,-23.809899 L -30.290789,-24.442153 C -30.071761,-24.474094 -29.862262,-24.322842 -29.825355,-24.105827 z "
+ id="path8074" />
+ <path
+ style="fill:url(#linearGradient8098)"
+ d="M -29.825355,-23.116446 C -29.788582,-22.899297 -29.937553,-22.695435 -30.156581,-22.66336 L -34.470965,-22.031106 C -34.689993,-21.998896 -34.899491,-22.150283 -34.936399,-22.367431 C -34.973306,-22.584445 -34.824201,-22.788442 -34.605173,-22.820383 L -30.290789,-23.452637 C -30.071761,-23.484847 -29.862262,-23.33346 -29.825355,-23.116446 z "
+ id="path8076" />
+ <path
+ style="fill:url(#linearGradient8100)"
+ d="M -29.825355,-22.127065 C -29.788582,-21.91005 -29.937553,-21.706054 -30.156581,-21.673978 L -34.470965,-21.04159 C -34.689993,-21.009649 -34.899491,-21.160901 -34.936399,-21.377916 C -34.973306,-21.595064 -34.824201,-21.798926 -34.605173,-21.831136 L -30.290789,-22.46339 C -30.071761,-22.495331 -29.862262,-22.344079 -29.825355,-22.127065 z "
+ id="path8078" />
+ <path
+ style="fill:url(#linearGradient8102)"
+ d="M -34.887815,-23.22341 L -34.936533,-23.356678 C -34.97344,-23.573827 -34.824335,-23.777689 -34.605307,-23.809899 L -30.290923,-24.442153 C -30.071895,-24.474094 -29.882528,-24.396656 -29.845755,-24.179642 L -34.887815,-23.22341 z "
+ id="path8080" />
+ <path
+ style="fill:url(#linearGradient8104)"
+ d="M -34.880031,-22.220339 L -29.853136,-23.208244 C -29.889909,-23.425259 -30.071761,-23.484847 -30.290789,-23.452503 L -34.605173,-22.820249 C -34.824201,-22.788307 -34.973306,-22.584311 -34.936399,-22.367297 L -34.880031,-22.220339 z "
+ id="path8082" />
+ <path
+ style="fill:url(#linearGradient8106)"
+ d="M -34.853592,-21.194185 L -29.853002,-22.218594 C -29.889909,-22.435609 -30.071761,-22.495466 -30.290789,-22.46339 L -34.605173,-21.831136 C -34.824201,-21.798926 -34.973306,-21.595064 -34.936399,-21.377916 L -34.853592,-21.194185 z "
+ id="path8084" />
+ <path
+ style="fill:url(#linearGradient8108)"
+ d="M -28.589568,-32.601596 C -29.364217,-34.00152 -30.787895,-34.925676 -32.380944,-34.925676 C -33.973993,-34.925676 -35.397671,-34.00152 -36.17232,-32.601596 C -35.153681,-33.183656 -33.826767,-33.537429 -32.380944,-33.537429 C -30.935121,-33.537295 -29.608207,-33.183656 -28.589568,-32.601596 z "
+ id="path8086" />
+ <path
+ style="fill:#3f3f3f"
+ d="M -34.042707,-20.761364 L -30.719449,-20.761364 C -30.706297,-20.805384 -30.69462,-20.85021 -30.684823,-20.895572 L -34.077199,-20.895572 C -34.067402,-20.85021 -34.055726,-20.805384 -34.042707,-20.761364 z "
+ id="path8088" />
+ </g>
+ <ellipse
+ clip-path="url(#clipPath7503)"
+ transform="matrix(0.134208,0,0,0.134208,-41.03736,-36.195284)"
+ ry="60.116001"
+ rx="60.125"
+ cy="44.278999"
+ cx="64.5"
+ id="ellipse8090"
+ style="fill:url(#radialGradient8110)"
+ sodipodi:cx="64.5"
+ sodipodi:cy="44.278999"
+ sodipodi:rx="60.125"
+ sodipodi:ry="60.116001" />
+ </g>
+ </mask>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#XMLID_3_"
+ id="linearGradient8386"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-2.6725931e-2,-44.465488)"
+ x1="75.5039"
+ y1="11.96"
+ x2="85.5969"
+ y2="36.3307" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#XMLID_4_"
+ id="linearGradient8388"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-2.6725931e-2,-44.465488)"
+ x1="37.6743"
+ y1="25.6035"
+ x2="37.6743"
+ y2="47.5006" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#XMLID_3_"
+ id="linearGradient8470"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-2.6725931e-2,-44.465488)"
+ x1="75.5039"
+ y1="11.96"
+ x2="85.5969"
+ y2="36.3307" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#XMLID_4_"
+ id="linearGradient8472"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-2.6725931e-2,-44.465488)"
+ x1="37.6743"
+ y1="25.6035"
+ x2="37.6743"
+ y2="47.5006" />
+ <mask
+ maskUnits="userSpaceOnUse"
+ id="mask8432">
+ <g
+ style="overflow:visible"
+ id="g8434"
+ transform="matrix(0.1570828,0,0,0.1570828,-28.616402,11.0008)">
+ <path
+ id="path8436"
+ d="M 51.868,84.936 C 45.459,79.297 41.784,71.221 41.784,62.78 C 41.784,54.276 45.498,46.164 51.974,40.523 C 52.339,40.204 52.419,39.667 52.16,39.256 L 42.036,23.192 C 41.888,22.958 41.648,22.796 41.375,22.748 C 41.102,22.7 40.819,22.769 40.602,22.937 C 32.334,29.305 26.119,38.265 23.1,48.167 C 22.982,48.554 23.112,48.974 23.431,49.226 C 27.586,52.517 30.066,57.583 30.066,62.779 C 30.066,67.975 27.585,73.043 23.429,76.334 C 23.112,76.585 22.98,77.004 23.098,77.392 C 26.093,87.211 32.238,96.12 40.404,102.474 C 40.623,102.645 40.903,102.715 41.177,102.667 C 41.45,102.62 41.691,102.459 41.84,102.226 L 52.049,86.204 C 52.309,85.794 52.232,85.256 51.868,84.936 z M 12.803,50.223 C 5.732,50.223 0,55.951 0,63.016 C 0,70.081 5.732,75.81 12.803,75.81 C 19.874,75.81 25.606,70.081 25.606,63.016 C 25.606,55.951 19.874,50.223 12.803,50.223 z M 58.779,35.162 C 59.036,35.57 59.551,35.732 59.996,35.545 C 63.75,33.958 67.65,33.153 71.586,33.153 C 86.064,33.153 98.693,43.887 100.963,58.122 C 101.039,58.6 101.451,58.951 101.934,58.951 L 121.014,58.98 C 121.292,58.98 121.557,58.863 121.744,58.657 C 121.931,58.451 122.021,58.178 121.995,57.9 C 120.967,47.338 116.471,37.15 109.336,29.215 C 109.014,28.855 108.477,28.783 108.07,29.046 C 105.193,30.904 101.925,31.888 98.623,31.888 C 88.99,31.888 81.154,24.098 81.153,14.524 C 81.154,14.519 81.172,14.158 81.172,14.142 C 81.172,13.665 80.829,13.254 80.356,13.172 C 77.344,12.65 74.394,12.284 71.586,12.284 C 63.875,12.284 56.084,14.221 49.054,17.695 C 48.804,17.819 48.618,18.043 48.543,18.311 C 48.467,18.579 48.509,18.866 48.657,19.102 L 58.779,35.162 z M 98,27.5 C 104.908,27.5 110.51,21.902 110.51,15 C 110.51,8.096 104.908,2.5 98,2.5 C 91.092,2.5 85.49,8.096 85.49,15 C 85.49,21.902 91.092,27.5 98,27.5 z M 120.994,66.733 L 101.916,66.795 C 101.435,66.796 101.024,67.147 100.947,67.621 C 98.646,81.75 86.024,92.405 71.586,92.405 C 67.604,92.405 63.66,91.581 59.864,89.955 C 59.42,89.766 58.906,89.925 58.645,90.33 L 48.442,106.345 C 48.293,106.58 48.25,106.867 48.324,107.136 C 48.398,107.404 48.583,107.629 48.832,107.753 C 55.917,111.3 63.786,113.174 71.586,113.174 C 74.479,113.174 77.492,112.901 80.541,112.36 C 80.969,112.285 81.297,111.936 81.348,111.505 C 82.364,102.73 89.791,96.112 98.623,96.112 C 101.361,96.112 104.147,96.81 106.679,98.13 C 107.064,98.331 107.533,98.257 107.838,97.946 C 115.823,89.803 120.846,79.104 121.978,67.817 C 122.006,67.54 121.915,67.264 121.727,67.057 C 121.539,66.85 121.272,66.732 120.994,66.733 z M 98.486,100.545 C 91.415,100.545 85.682,106.242 85.682,113.273 C 85.682,120.302 91.414,126.001 98.486,126.001 C 105.556,126.001 111.289,120.303 111.289,113.273 C 111.289,106.242 105.557,100.545 98.486,100.545 z "
+ style="opacity:0.2;fill:#141414;fill-rule:evenodd" />
+ <path
+ id="path8438"
+ d="M 51.868,85.936 C 45.459,80.297 41.784,72.221 41.784,63.78 C 41.784,55.276 45.498,47.164 51.974,41.523 C 52.339,41.204 52.419,40.667 52.16,40.256 L 42.036,24.192 C 41.888,23.958 41.648,23.796 41.375,23.748 C 41.102,23.7 40.819,23.769 40.602,23.937 C 32.334,30.305 26.119,39.265 23.1,49.167 C 22.982,49.554 23.112,49.974 23.431,50.226 C 27.586,53.517 30.066,58.583 30.066,63.779 C 30.066,68.975 27.585,74.043 23.429,77.334 C 23.112,77.585 22.98,78.004 23.098,78.392 C 26.093,88.211 32.238,97.12 40.404,103.474 C 40.623,103.645 40.903,103.715 41.177,103.667 C 41.45,103.62 41.691,103.459 41.84,103.226 L 52.049,87.204 C 52.309,86.794 52.232,86.256 51.868,85.936 z M 12.803,51.223 C 5.732,51.223 0,56.951 0,64.016 C 0,71.081 5.732,76.81 12.803,76.81 C 19.874,76.81 25.606,71.081 25.606,64.016 C 25.606,56.951 19.874,51.223 12.803,51.223 z M 58.779,36.162 C 59.036,36.57 59.551,36.732 59.996,36.545 C 63.75,34.958 67.65,34.153 71.586,34.153 C 86.064,34.153 98.693,44.887 100.963,59.122 C 101.039,59.6 101.451,59.951 101.934,59.951 L 121.014,59.98 C 121.292,59.98 121.557,59.863 121.744,59.657 C 121.931,59.451 122.021,59.178 121.995,58.9 C 120.967,48.338 116.471,38.15 109.336,30.215 C 109.014,29.855 108.477,29.783 108.07,30.046 C 105.193,31.904 101.925,32.888 98.623,32.888 C 88.99,32.888 81.154,25.098 81.153,15.524 C 81.154,15.519 81.172,15.158 81.172,15.142 C 81.172,14.665 80.829,14.254 80.356,14.172 C 77.344,13.65 74.394,13.284 71.586,13.284 C 63.875,13.284 56.084,15.221 49.054,18.695 C 48.804,18.819 48.618,19.043 48.543,19.311 C 48.467,19.579 48.509,19.866 48.657,20.102 L 58.779,36.162 z M 98,28.5 C 104.908,28.5 110.51,22.902 110.51,16 C 110.51,9.096 104.908,3.5 98,3.5 C 91.092,3.5 85.49,9.096 85.49,16 C 85.49,22.902 91.092,28.5 98,28.5 z M 120.994,67.733 L 101.916,67.795 C 101.435,67.796 101.024,68.147 100.947,68.621 C 98.646,82.75 86.024,93.405 71.586,93.405 C 67.604,93.405 63.66,92.581 59.864,90.955 C 59.42,90.766 58.906,90.925 58.645,91.33 L 48.442,107.345 C 48.293,107.58 48.25,107.867 48.324,108.136 C 48.398,108.404 48.583,108.629 48.832,108.753 C 55.917,112.3 63.786,114.174 71.586,114.174 C 74.479,114.174 77.492,113.901 80.541,113.36 C 80.969,113.285 81.297,112.936 81.348,112.505 C 82.364,103.73 89.791,97.112 98.623,97.112 C 101.361,97.112 104.147,97.81 106.679,99.13 C 107.064,99.331 107.533,99.257 107.838,98.946 C 115.823,90.803 120.846,80.104 121.978,68.817 C 122.006,68.54 121.915,68.264 121.727,68.057 C 121.539,67.85 121.272,67.732 120.994,67.733 z M 98.486,101.545 C 91.415,101.545 85.682,107.242 85.682,114.273 C 85.682,121.302 91.414,127.001 98.486,127.001 C 105.556,127.001 111.289,121.303 111.289,114.273 C 111.289,107.242 105.557,101.545 98.486,101.545 z "
+ style="opacity:0.2;fill:#141414;fill-rule:evenodd" />
+ <path
+ id="path8440"
+ d="M 51.868,86.936 C 45.459,81.297 41.784,73.221 41.784,64.78 C 41.784,56.276 45.498,48.164 51.974,42.523 C 52.339,42.204 52.419,41.667 52.16,41.256 L 42.036,25.192 C 41.888,24.958 41.648,24.796 41.375,24.748 C 41.102,24.7 40.819,24.769 40.602,24.937 C 32.334,31.305 26.119,40.265 23.1,50.167 C 22.982,50.554 23.112,50.974 23.431,51.226 C 27.586,54.517 30.066,59.583 30.066,64.779 C 30.066,69.975 27.585,75.043 23.429,78.334 C 23.112,78.585 22.98,79.004 23.098,79.392 C 26.093,89.211 32.238,98.12 40.404,104.474 C 40.623,104.645 40.903,104.715 41.177,104.667 C 41.45,104.62 41.691,104.459 41.84,104.226 L 52.049,88.204 C 52.309,87.794 52.232,87.256 51.868,86.936 z M 12.803,52.223 C 5.732,52.223 0,57.951 0,65.016 C 0,72.081 5.732,77.81 12.803,77.81 C 19.874,77.81 25.606,72.081 25.606,65.016 C 25.606,57.951 19.874,52.223 12.803,52.223 z M 58.779,37.162 C 59.036,37.57 59.551,37.732 59.996,37.545 C 63.75,35.958 67.65,35.153 71.586,35.153 C 86.064,35.153 98.693,45.887 100.963,60.122 C 101.039,60.6 101.451,60.951 101.934,60.951 L 121.014,60.98 C 121.292,60.98 121.557,60.863 121.744,60.657 C 121.931,60.451 122.021,60.178 121.995,59.9 C 120.967,49.338 116.471,39.15 109.336,31.215 C 109.014,30.855 108.477,30.783 108.07,31.046 C 105.193,32.904 101.925,33.888 98.623,33.888 C 88.99,33.888 81.154,26.098 81.153,16.524 C 81.154,16.519 81.172,16.158 81.172,16.142 C 81.172,15.665 80.829,15.254 80.356,15.172 C 77.344,14.65 74.394,14.284 71.586,14.284 C 63.875,14.284 56.084,16.221 49.054,19.695 C 48.804,19.819 48.618,20.043 48.543,20.311 C 48.467,20.579 48.509,20.866 48.657,21.102 L 58.779,37.162 z M 98,29.5 C 104.908,29.5 110.51,23.902 110.51,17 C 110.51,10.096 104.908,4.5 98,4.5 C 91.092,4.5 85.49,10.096 85.49,17 C 85.49,23.902 91.092,29.5 98,29.5 z M 120.994,68.733 L 101.916,68.795 C 101.435,68.796 101.024,69.147 100.947,69.621 C 98.646,83.75 86.024,94.405 71.586,94.405 C 67.604,94.405 63.66,93.581 59.864,91.955 C 59.42,91.766 58.906,91.925 58.645,92.33 L 48.442,108.345 C 48.293,108.58 48.25,108.867 48.324,109.136 C 48.398,109.404 48.583,109.629 48.832,109.753 C 55.917,113.3 63.786,115.174 71.586,115.174 C 74.479,115.174 77.492,114.901 80.541,114.36 C 80.969,114.285 81.297,113.936 81.348,113.505 C 82.364,104.73 89.791,98.112 98.623,98.112 C 101.361,98.112 104.147,98.81 106.679,100.13 C 107.064,100.331 107.533,100.257 107.838,99.946 C 115.823,91.803 120.846,81.104 121.978,69.817 C 122.006,69.54 121.915,69.264 121.727,69.057 C 121.539,68.85 121.272,68.732 120.994,68.733 z M 98.486,102.545 C 91.415,102.545 85.682,108.242 85.682,115.273 C 85.682,122.302 91.414,128.001 98.486,128.001 C 105.556,128.001 111.289,122.303 111.289,115.273 C 111.289,108.242 105.557,102.545 98.486,102.545 z "
+ style="opacity:0.2;fill:#141414;fill-rule:evenodd" />
+ <path
+ id="path8442"
+ d="M 40.602,21.938 C 32.334,28.306 26.119,37.266 23.1,47.168 C 22.982,47.555 23.112,47.975 23.431,48.227 C 27.586,51.518 30.066,56.584 30.066,61.78 C 30.066,66.976 27.585,72.044 23.429,75.335 C 23.112,75.586 22.98,76.005 23.098,76.393 C 26.093,86.212 32.238,95.121 40.404,101.475 C 40.623,101.646 40.903,101.716 41.177,101.668 C 41.45,101.621 41.691,101.46 41.84,101.227 L 52.049,85.205 C 52.31,84.796 52.234,84.258 51.869,83.937 C 45.46,78.298 41.785,70.222 41.785,61.781 C 41.785,53.277 45.499,45.165 51.975,39.524 C 52.34,39.205 52.42,38.668 52.161,38.257 L 42.036,22.192 C 41.888,21.958 41.648,21.796 41.375,21.748 C 41.102,21.7 40.819,21.769 40.602,21.938 z "
+ style="fill:#f97a00" />
+ <path
+ id="path8444"
+ d="M 24.042,47.455 C 28.431,50.932 31.051,56.219 31.051,61.779 C 31.051,67.339 28.43,72.628 24.04,76.104 C 26.991,85.785 32.981,94.45 41.008,100.697 C 42.028,99.097 50.449,85.879 51.217,84.674 C 44.602,78.854 40.799,70.574 40.799,61.779 C 40.799,52.92 44.642,44.603 51.327,38.78 C 50.565,37.572 42.215,24.322 41.203,22.717 C 33.076,28.978 27.018,37.694 24.042,47.455 z "
+ style="fill:#fb8b00" />
+ <ellipse
+ id="ellipse8446"
+ ry="12.794"
+ rx="12.803"
+ cy="62.015999"
+ cx="12.803"
+ style="fill:#f83011;fill-rule:evenodd"
+ sodipodi:cx="12.803"
+ sodipodi:cy="62.015999"
+ sodipodi:rx="12.803"
+ sodipodi:ry="12.794" />
+ <path
+ id="path8448"
+ d="M 0.984,62.016 C 0.984,68.528 6.286,73.827 12.802,73.827 C 19.318,73.827 24.62,68.528 24.62,62.016 C 24.62,55.504 19.318,50.206 12.802,50.206 C 6.286,50.206 0.984,55.504 0.984,62.016 z "
+ style="fill:#f83011;fill-rule:evenodd" />
+ <path
+ id="path8450"
+ d="M 49.054,16.696 C 48.804,16.82 48.618,17.044 48.543,17.312 C 48.467,17.58 48.509,17.867 48.657,18.103 L 58.779,34.162 C 59.036,34.57 59.551,34.732 59.996,34.545 C 63.75,32.958 67.65,32.153 71.586,32.153 C 86.064,32.153 98.693,42.887 100.963,57.122 C 101.039,57.6 101.451,57.951 101.934,57.951 L 121.014,57.98 C 121.292,57.98 121.557,57.863 121.744,57.657 C 121.931,57.451 122.021,57.178 121.995,56.9 C 120.967,46.338 116.471,36.15 109.336,28.215 C 109.014,27.855 108.477,27.783 108.07,28.046 C 105.193,29.904 101.925,30.888 98.623,30.888 C 88.99,30.888 81.154,23.098 81.153,13.524 C 81.154,13.519 81.172,13.158 81.172,13.142 C 81.172,12.665 80.829,12.254 80.356,12.172 C 77.344,11.65 74.394,11.284 71.586,11.284 C 63.875,11.285 56.084,13.222 49.054,16.696 z "
+ style="fill:#f13b00" />
+ <path
+ id="path8452"
+ d="M 49.491,17.578 C 50.527,19.223 58.856,32.437 59.613,33.639 C 63.439,32.022 67.458,31.17 71.587,31.17 C 86.704,31.17 99.583,42.205 101.937,56.968 C 103.373,56.97 119.109,56.993 121.017,56.996 C 120.004,46.605 115.636,36.693 108.606,28.873 C 105.609,30.81 102.191,31.872 98.625,31.872 C 88.449,31.872 80.17,23.641 80.17,13.523 C 80.17,13.523 80.18,13.313 80.189,13.142 C 77.356,12.65 74.471,12.268 71.588,12.268 C 63.928,12.269 56.327,14.199 49.491,17.578 z "
+ style="fill:#f13b00" />
+ <ellipse
+ id="ellipse8454"
+ ry="12.5"
+ rx="12.51"
+ cy="14"
+ cx="98"
+ style="fill:#e00916;fill-rule:evenodd"
+ sodipodi:cx="98"
+ sodipodi:cy="14"
+ sodipodi:rx="12.51"
+ sodipodi:ry="12.5" />
+ <path
+ id="path8456"
+ d="M 86.992,14 C 86.992,20.065 91.93,25 98,25 C 104.07,25 109.008,20.065 109.008,14 C 109.008,7.935 104.07,3 98,3 C 91.93,3 86.992,7.935 86.992,14 z "
+ style="fill:#e56363;fill-rule:evenodd" />
+ <path
+ id="path8458"
+ d="M 120.994,65.733 L 101.916,65.795 C 101.435,65.796 101.024,66.147 100.947,66.621 C 98.646,80.75 86.024,91.405 71.586,91.405 C 67.604,91.405 63.66,90.581 59.864,88.955 C 59.42,88.766 58.906,88.925 58.645,89.33 L 48.442,105.345 C 48.293,105.58 48.25,105.867 48.324,106.136 C 48.398,106.404 48.583,106.629 48.832,106.753 C 55.917,110.3 63.786,112.174 71.586,112.174 C 74.479,112.174 77.492,111.901 80.541,111.36 C 80.969,111.285 81.297,110.936 81.348,110.505 C 82.364,101.73 89.791,95.112 98.623,95.112 C 101.361,95.112 104.147,95.81 106.679,97.13 C 107.064,97.331 107.533,97.257 107.838,96.946 C 115.823,88.803 120.846,78.104 121.978,66.817 C 122.006,66.54 121.915,66.264 121.727,66.057 C 121.539,65.85 121.272,65.732 120.994,65.733 z "
+ style="fill:#d40000" />
+ <ellipse
+ id="ellipse8460"
+ ry="12.728"
+ rx="12.803"
+ cy="112.272"
+ cx="98.486"
+ style="fill:#ff7516;fill-rule:evenodd"
+ sodipodi:cx="98.486"
+ sodipodi:cy="112.272"
+ sodipodi:rx="12.803"
+ sodipodi:ry="12.728" />
+ <path
+ id="path8462"
+ d="M 86.844,112.272 C 86.844,118.651 92.067,123.841 98.487,123.841 C 104.907,123.841 110.13,118.651 110.13,112.272 C 110.13,105.893 104.907,100.703 98.487,100.703 C 92.067,100.703 86.844,105.894 86.844,112.272 z "
+ style="fill:#fb9200;fill-rule:evenodd" />
+ <path
+ id="path8464"
+ d="M 49.785,17.67 C 50.008,18.024 59.527,33.127 59.695,33.395 C 63.548,31.791 67.547,30.969 71.586,30.969 C 78.265,30.969 84.635,33.086 90.02,37.08 C 90.155,37.07 103.667,36.099 103.667,36.099 C 103.667,36.099 112.654,35.447 113.294,35.4 C 111.865,33.167 110.392,31.264 108.67,29.337 C 105.639,31.256 102.097,32.173 98.623,32.173 C 88.337,32.173 79.969,23.752 79.969,13.525 C 79.969,13.519 79.973,13.418 79.979,13.318 C 77.094,12.827 74.27,12.47 71.586,12.47 C 64.13,12.469 56.6,14.34 49.785,17.67 z "
+ style="fill:url(#linearGradient8470);fill-rule:evenodd" />
+ <path
+ id="path8466"
+ d="M 24.274,47.396 C 26.599,49.268 28.451,51.682 29.658,54.398 C 34.14,51.488 38.459,49.95 43.889,47.772 C 45.598,44.761 48.481,41.04 51.074,38.755 C 50.915,38.503 41.39,23.39 41.155,23.017 C 33.202,29.201 27.214,37.844 24.274,47.396 z "
+ style="fill:url(#linearGradient8472);fill-rule:evenodd" />
+ <path
+ id="path8468"
+ d="M 23.732,58.691 C 22.313,53.996 17.948,50.566 12.794,50.566 C 6.493,50.566 1.367,55.689 1.367,61.985 C 1.367,66.015 3.469,69.565 6.633,71.597 C 11.926,67.035 17.919,62.755 23.732,58.691 z "
+ style="fill:#f88657;fill-rule:evenodd" />
+ </g>
+ </mask>
+ </defs>
+ <sodipodi:namedview
+ inkscape:window-height="627"
+ inkscape:window-width="910"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0.0"
+ guidetolerance="10.0"
+ gridtolerance="10.0"
+ objecttolerance="10.0"
+ borderopacity="1.0"
+ bordercolor="#666666"
+ pagecolor="#ffffff"
+ id="base"
+ inkscape:zoom="7.2055766"
+ inkscape:cx="35.602016"
+ inkscape:cy="22.962506"
+ inkscape:window-x="238"
+ inkscape:window-y="96"
+ inkscape:current-layer="svg2254"
+ showguides="true"
+ inkscape:guide-bbox="true">
+ <sodipodi:guide
+ orientation="horizontal"
+ position="0"
+ id="guide4273" />
+ <sodipodi:guide
+ orientation="horizontal"
+ position="48"
+ id="guide4275" />
+ <sodipodi:guide
+ orientation="vertical"
+ position="0"
+ id="guide4437" />
+ <sodipodi:guide
+ orientation="vertical"
+ position="48"
+ id="guide4439" />
+ </sodipodi:namedview>
+ <rect
+ style="fill:url(#linearGradient4371);fill-opacity:1;stroke:none;stroke-width:0.99999994;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4011"
+ width="47.866001"
+ height="47.866001"
+ x="-48"
+ y="-47.866001"
+ transform="scale(-1,-1)"
+ inkscape:export-filename="/home/matt/eclipse33/eclipse-icon-bulb.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ style="fill:url(#linearGradient4368);fill-opacity:1;stroke:none;stroke-width:0.99999994;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect3016"
+ width="45.866379"
+ height="45.866383"
+ x="1.1343775"
+ y="1.048512" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1;fill:#c88cbb;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path4033"
+ sodipodi:cx="-30.021633"
+ sodipodi:cy="23.982693"
+ sodipodi:rx="20.014421"
+ sodipodi:ry="20.014421"
+ d="M -10.007212 23.982693 A 20.014421 20.014421 0 1 1 -50.036055,23.982693 A 20.014421 20.014421 0 1 1 -10.007212 23.982693 z"
+ transform="translate(53.070541,-2.5560054e-2)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1;fill:url(#linearGradient4041);fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path4031"
+ sodipodi:cx="-30.021633"
+ sodipodi:cy="23.982693"
+ sodipodi:rx="20.014421"
+ sodipodi:ry="20.014421"
+ d="M -10.007212 23.982693 A 20.014421 20.014421 0 1 1 -50.036055,23.982693 A 20.014421 20.014421 0 1 1 -10.007212 23.982693 z"
+ transform="translate(55.071984,-2.5560054e-2)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1;fill:#fffffa;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;filter:url(#filter4267)"
+ id="path4043"
+ sodipodi:cx="-38.944729"
+ sodipodi:cy="15.643351"
+ sodipodi:rx="8.9230967"
+ sodipodi:ry="8.8397036"
+ d="M -30.021632 15.643351 A 8.9230967 8.8397036 0 1 1 -47.867826,15.643351 A 8.9230967 8.8397036 0 1 1 -30.021632 15.643351 z"
+ transform="matrix(1.2616822,0,0,1.1226415,62.529072,-5.2595765)"
+ mask="url(#mask4181)" />
+ <g
+ id="g4417"
+ clip-path="url(#clipPath4423)"
+ transform="translate(50.116184,2.1870546e-2)">
+ <path
+ transform="translate(1.387814,-0.4734046)"
+ clip-path="none"
+ id="path4279"
+ d="M -47.32329,19.312662 L -6.0456207,19.312662"
+ style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient4429);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ transform="translate(1.387814,-0.4734046)"
+ clip-path="none"
+ id="path4281"
+ d="M -47.32329,22.48125 L -6.045621,22.48125"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient4431);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ transform="translate(1.387814,-0.4734046)"
+ clip-path="none"
+ id="path4283"
+ d="M -47.32329,25.482334 L -6.0456207,25.482334"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient4433);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ transform="translate(1.387814,-0.4734046)"
+ clip-path="none"
+ id="path4285"
+ d="M -47.32329,28.481612 L -6.0456207,28.481612"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient4435);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ </g>
+</svg>
diff --git a/extra/efibootmgr/PKGBUILD b/extra/efibootmgr/PKGBUILD
new file mode 100755
index 000000000..7bda0f640
--- /dev/null
+++ b/extra/efibootmgr/PKGBUILD
@@ -0,0 +1,52 @@
+# $Id: PKGBUILD 108903 2011-02-04 21:01:10Z tpowa $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+# Contributor : Murtuza Akhtari <inxsible at gmail dot com>
+# Contributor: Keshav P R <skodabenz at rocketmail dot com>
+
+pkgname=efibootmgr
+pkgver=0.5.4
+pkgrel=1
+pkgdesc="Tool to modify UEFI Firmware Boot Manager Variables."
+arch=('i686' 'x86_64')
+url="http://linux.dell.com/efibootmgr/"
+license=('GPL2')
+depends=('zlib')
+makedepends=()
+provides=()
+options=(strip purge docs zipman !emptydirs)
+
+source=("http://linux.dell.com/efibootmgr/permalink/${pkgname}-${pkgver}.tar.gz"
+ 'efibootmgr_after_0.5.4_git.patch'
+ 'efibootmgr_default_to_grub2.patch')
+
+build () {
+ rm -rf ${srcdir}/efibootmgr-${pkgver}_build/ || true
+
+ cp -r ${srcdir}/efibootmgr-${pkgver} ${srcdir}/efibootmgr-${pkgver}_build
+
+ cd ${srcdir}/efibootmgr-${pkgver}_build/
+
+ patch -Np1 -i ${srcdir}/efibootmgr_after_0.5.4_git.patch
+ patch -Np1 -i ${srcdir}/efibootmgr_default_to_grub2.patch
+ echo
+
+ CFLAGS= make
+ echo
+
+}
+
+
+package() {
+
+ mkdir -p ${pkgdir}/usr/sbin/
+ mkdir -p ${pkgdir}/usr/share/man/man8/
+
+ cd ${srcdir}/efibootmgr-${pkgver}_build/
+
+ install -D -m755 ${srcdir}/efibootmgr-${pkgver}_build/src/efibootmgr/efibootmgr ${pkgdir}/usr/sbin/efibootmgr
+ install -D -m644 ${srcdir}/efibootmgr-${pkgver}_build/src/man/man8/efibootmgr.8 ${pkgdir}/usr/share/man/man8/efibootmgr.8
+
+}
+md5sums=('cfcf24752d6461b73f7ba964bbf73169'
+ '29730052de0d6911457a26011f8ddb6e'
+ 'd31f3c378cf8aac57b71620340c68b24')
diff --git a/extra/efibootmgr/efibootmgr_after_0.5.4_git.patch b/extra/efibootmgr/efibootmgr_after_0.5.4_git.patch
new file mode 100755
index 000000000..5b9b6f825
--- /dev/null
+++ b/extra/efibootmgr/efibootmgr_after_0.5.4_git.patch
@@ -0,0 +1,159 @@
+diff --git a/src/efibootmgr/efibootmgr.c b/src/efibootmgr/efibootmgr.c
+index 5db0d9e..199af39 100644
+--- a/src/efibootmgr/efibootmgr.c
++++ b/src/efibootmgr/efibootmgr.c
+@@ -328,6 +328,7 @@ add_to_boot_order(uint16_t num)
+ /* Now new_data has what we need */
+ memcpy(&(boot_order.Data), new_data, new_data_size);
+ boot_order.DataSize = new_data_size;
++ free(new_data);
+ return create_or_edit_variable(&boot_order);
+ }
+
+diff --git a/src/include/disk.h b/src/include/disk.h
+index eb93d10..8aa37d7 100644
+--- a/src/include/disk.h
++++ b/src/include/disk.h
+@@ -65,6 +65,9 @@ enum _interface_type {interface_type_unknown,
+ ata, atapi, scsi, usb,
+ i1394, fibre, i2o, md};
+
++
++unsigned int lcm(unsigned int x, unsigned int y);
++
+ int disk_get_pci(int fd,
+ unsigned char *bus,
+ unsigned char *device,
+diff --git a/src/lib/disk.c b/src/lib/disk.c
+index 883864f..8ad590b 100644
+--- a/src/lib/disk.c
++++ b/src/lib/disk.c
+@@ -55,7 +55,7 @@ disk_info_from_fd(int fd,
+ return 1;
+ }
+ major = buf.st_dev >> 8;
+- minor = buf.st_dev && 0xFF;
++ minor = buf.st_dev & 0xFF;
+
+ /* IDE disks can have up to 64 partitions, or 6 bits worth,
+ * and have one bit for the disk number.
+@@ -420,6 +420,27 @@ get_sector_size(int filedes)
+ return sector_size;
+ }
+
++/************************************************************
++ * lcm
++ * Requires:
++ * - numbers of which to find the lowest common multiple
++ * Modifies: nothing
++ * Returns:
++ * lowest common multiple of x and y
++ ************************************************************/
++unsigned int
++lcm(unsigned int x, unsigned int y)
++{
++ unsigned int m = x, n = y, o;
++
++ while ((o = m % n)) {
++ m = n;
++ n = o;
++ }
++
++ return (x / n) * y;
++}
++
+ /**
+ * disk_get_partition_info()
+ * @fd - open file descriptor to disk
+@@ -442,26 +463,27 @@ disk_get_partition_info (int fd,
+ uint8_t *mbr_type, uint8_t *signature_type)
+ {
+ legacy_mbr *mbr;
+- void *mbr_unaligned;
++ void *mbr_sector;
++ size_t mbr_size;
+ off_t offset;
+ int this_bytes_read = 0;
+ int gpt_invalid=0, mbr_invalid=0;
+ int rc=0;
+ int sector_size = get_sector_size(fd);
+
+- if (sizeof(*mbr) != sector_size)
+- return 1;
+- mbr_unaligned = malloc(sizeof(*mbr)+sector_size-1);
+- mbr = (legacy_mbr *)
+- (((unsigned long)mbr_unaligned + sector_size - 1) &
+- ~(unsigned long)(sector_size-1));
+- memset(mbr, 0, sizeof(*mbr));
++
++ mbr_size = lcm(sizeof(*mbr), sector_size);
++ if ((rc = posix_memalign(&mbr_sector, sector_size, mbr_size)) != 0)
++ goto error;
++ memset(mbr_sector, '\0', mbr_size);
++
+ offset = lseek(fd, 0, SEEK_SET);
+- this_bytes_read = read(fd, mbr, sizeof(*mbr));
++ this_bytes_read = read(fd, mbr_sector, mbr_size);
+ if (this_bytes_read < sizeof(*mbr)) {
+ rc=1;
+ goto error_free_mbr;
+ }
++ mbr = (legacy_mbr *)mbr_sector;
+ gpt_invalid = gpt_disk_get_partition_info(fd, num,
+ start, size,
+ signature,
+@@ -479,7 +501,8 @@ disk_get_partition_info (int fd,
+ }
+ }
+ error_free_mbr:
+- free(mbr_unaligned);
++ free(mbr_sector);
++ error:
+ return rc;
+ }
+
+diff --git a/src/lib/gpt.c b/src/lib/gpt.c
+index d90ddaf..83e7a94 100644
+--- a/src/lib/gpt.c
++++ b/src/lib/gpt.c
+@@ -215,26 +215,24 @@ read_lastoddsector(int fd, uint64_t lba, void *buffer, size_t count)
+ static ssize_t
+ read_lba(int fd, uint64_t lba, void *buffer, size_t bytes)
+ {
+- int sector_size = get_sector_size(fd);
+- off_t offset = lba * sector_size;
++ int sector_size = get_sector_size(fd);
++ off_t offset = lba * sector_size;
+ ssize_t bytesread;
+- void *aligned;
+- void *unaligned;
+-
+- if (bytes % sector_size)
+- return EINVAL;
++ void *iobuf;
++ size_t iobuf_size;
++ int rc;
+
+- unaligned = malloc(bytes+sector_size-1);
+- aligned = (void *)
+- (((unsigned long)unaligned + sector_size - 1) &
+- ~(unsigned long)(sector_size-1));
+- memset(aligned, 0, bytes);
++ iobuf_size = lcm(bytes, sector_size);
++ rc = posix_memalign(&iobuf, sector_size, iobuf_size);
++ if (rc)
++ return rc;
++ memset(iobuf, 0, bytes);
+
+
+- lseek(fd, offset, SEEK_SET);
+- bytesread = read(fd, aligned, bytes);
+- memcpy(buffer, aligned, bytesread);
+- free(unaligned);
++ lseek(fd, offset, SEEK_SET);
++ bytesread = read(fd, iobuf, iobuf_size);
++ memcpy(buffer, iobuf, bytes);
++ free(iobuf);
+
+ /* Kludge. This is necessary to read/write the last
+ block of an odd-sized disk, until Linux 2.5.x kernel fixes.
diff --git a/extra/efibootmgr/efibootmgr_default_to_grub2.patch b/extra/efibootmgr/efibootmgr_default_to_grub2.patch
new file mode 100755
index 000000000..1a1b3c69f
--- /dev/null
+++ b/extra/efibootmgr/efibootmgr_default_to_grub2.patch
@@ -0,0 +1,44 @@
+diff --git a/src/efibootmgr/efibootmgr.c b/src/efibootmgr/efibootmgr.c
+index 199af39..3826e03 100644
+--- a/src/efibootmgr/efibootmgr.c
++++ b/src/efibootmgr/efibootmgr.c
+@@ -18,7 +18,7 @@
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+
+- This must tie the EFI_DEVICE_PATH to /boot/efi/elilo.efi
++ This must tie the EFI_DEVICE_PATH to /boot/efi/EFI/grub/grub.efi
+ The EFI_DEVICE_PATH will look something like:
+ ACPI device path, length 12 bytes
+ Hardware Device Path, PCI, length 6 bytes
+@@ -26,7 +26,7 @@
+ Media Device Path, Hard Drive, partition XX, length 30 bytes
+ Media Device Path, File Path, length ??
+ End of Hardware Device Path, length 4
+- Arguments passed to elilo, as UCS-2 characters, length ??
++ Arguments passed to grub2, as UCS-2 characters, length ??
+
+ */
+
+@@ -780,8 +780,8 @@ usage()
+ printf("\t-g | --gpt force disk with invalid PMBR to be treated as GPT\n");
+ printf("\t-H | --acpi_hid XXXX set the ACPI HID (used with -i)\n");
+ printf("\t-i | --iface name create a netboot entry for the named interface\n");
+- printf("\t-l | --loader name (defaults to \\elilo.efi)\n");
+- printf("\t-L | --label label Boot manager display label (defaults to \"Linux\")\n");
++ printf("\t-l | --loader name (defaults to \\EFI\\grub\\grub.efi)\n");
++ printf("\t-L | --label label Boot manager display label (defaults to \"GRUB2\")\n");
+ printf("\t-n | --bootnext XXXX set BootNext to XXXX (hex)\n");
+ printf("\t-N | --delete-bootnext delete BootNext\n");
+ printf("\t-o | --bootorder XXXX,YYYY,ZZZZ,... explicitly set BootOrder (hex)\n");
+@@ -808,8 +808,8 @@ set_default_opts()
+ opts.active = -1; /* Don't set it */
+ opts.timeout = -1; /* Don't set it */
+ opts.edd10_devicenum = 0x80;
+- opts.loader = "\\elilo.efi";
+- opts.label = "Linux";
++ opts.loader = "\\EFI\\grub\\grub.efi";
++ opts.label = "GRUB2";
+ opts.disk = "/dev/sda";
+ opts.iface = NULL;
+ opts.part = 1;
diff --git a/extra/eject/PKGBUILD b/extra/eject/PKGBUILD
new file mode 100644
index 000000000..a10bdcab4
--- /dev/null
+++ b/extra/eject/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 84697 2010-07-03 16:22:38Z ibiru $
+# Maintainer: dorphell <dorphell@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=eject
+pkgver=2.1.5
+pkgrel=4
+pkgdesc="Eject is a program for ejecting removable media under software control"
+arch=('i686' 'x86_64')
+url="http://ca.geocities.com/jefftranter@rogers.com/eject.html"
+license=('GPL')
+depends=('glibc')
+source=(ftp://mirrors.kernel.org/slackware/slackware-13.1/source/a/$pkgname/$pkgname-$pkgver.tar.bz2
+ eject-2.1.5-handle-spaces.patch)
+md5sums=('5a6cab2184ae4ed21128054d931d558f'
+ '595b97c3bd56fd41e3b01b07885f81dc')
+
+build() {
+ cd $srcdir/$pkgname
+ patch -Np0 -i ../eject-2.1.5-handle-spaces.patch || return 1
+ ./configure --prefix=/usr --mandir=/usr/share/man || return 1
+ make || return 1
+ make DESTDIR=$pkgdir install || return 1
+}
diff --git a/extra/eject/eject-2.1.5-handle-spaces.patch b/extra/eject/eject-2.1.5-handle-spaces.patch
new file mode 100644
index 000000000..692368fa5
--- /dev/null
+++ b/extra/eject/eject-2.1.5-handle-spaces.patch
@@ -0,0 +1,57 @@
+http://bugs.gentoo.org/151257
+
+--- eject.c
++++ eject.c
+@@ -370,6 +370,30 @@ static int FileExists(const char *name,
+
+
+ /*
++ * Linux mangles spaces in mount points by changing them to an octal string
++ * of '\040'. So lets scan the mount point and fix it up by replacing all
++ * occurrences off '\0##' with the ASCII value of 0##. Requires a writable
++ * string as input as we mangle in place. Some of this was taken from the
++ * util-linux package.
++ */
++#define octalify(a) ((a) & 7)
++#define tooctal(s) (64*octalify(s[1]) + 8*octalify(s[2]) + octalify(s[3]))
++#define isoctal(a) (((a) & ~7) == '0')
++static char *DeMangleMount(char *s)
++{
++ char *tmp = s;
++ while ((tmp = strchr(tmp, '\\')) != NULL) {
++ if (isoctal(tmp[1]) && isoctal(tmp[2]) && isoctal(tmp[3])) {
++ tmp[0] = tooctal(tmp);
++ memmove(tmp+1, tmp+4, strlen(tmp)-3);
++ }
++ ++tmp;
++ }
++ return s;
++}
++
++
++/*
+ * Given name, such as foo, see if any of the following exist:
+ *
+ * foo (if foo starts with '.' or '/')
+@@ -884,8 +908,8 @@ static int MountedDevice(const char *nam
+ if (((strcmp(s1, name) == 0) || (strcmp(s2, name) == 0)) ||
+ ((maj != -1) && (maj == mtabmaj) && (min == mtabmin))) {
+ FCLOSE(fp);
+- *deviceName = strdup(s1);
+- *mountName = strdup(s2);
++ *deviceName = DeMangleMount(strdup(s1));
++ *mountName = DeMangleMount(strdup(s2));
+ return 1;
+ }
+ }
+@@ -928,8 +952,8 @@ static int MountableDevice(const char *n
+ rc = sscanf(line, "%1023s %1023s", s1, s2);
+ if (rc >= 2 && s1[0] != '#' && strcmp(s2, name) == 0) {
+ FCLOSE(fp);
+- *deviceName = strdup(s1);
+- *mountName = strdup(s2);
++ *deviceName = DeMangleMount(strdup(s1));
++ *mountName = DeMangleMount(strdup(s2));
+ return 1;
+ }
+ }
diff --git a/extra/ekiga/PKGBUILD b/extra/ekiga/PKGBUILD
new file mode 100644
index 000000000..9baa750a0
--- /dev/null
+++ b/extra/ekiga/PKGBUILD
@@ -0,0 +1,36 @@
+# $Id: PKGBUILD 112772 2011-03-06 16:43:00Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Tom K <tomk@runbox.com>
+
+pkgname=ekiga
+pkgver=3.2.7
+pkgrel=4
+pkgdesc="VOIP/Videoconferencing app with full SIP and H.323 support (GnomeMeeting expanded and renamed)"
+url="http://www.ekiga.org"
+license=(GPL)
+arch=(i686 x86_64)
+depends=('opal=3.6.8' 'evolution-data-server>=2.32.0' 'libsigc++>=2.2.8' 'libxv' 'libnotify>=0.4.5' 'hicolor-icon-theme' 'avahi>=0.6.27')
+makedepends=('pkgconfig' 'intltool' 'gnome-doc-utils>=0.20.0')
+provides=('gnomemeeting')
+replaces=('gnomemeeting')
+options=(!emptydirs)
+groups=('gnome-extra')
+install=ekiga.install
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/3.2/${pkgname}-${pkgver}.tar.bz2
+ ekiga-3.2.7-libnotify-0.7.patch)
+sha256sums=('f25a1309b68eafe69f0d7aed461bc9a8196939060543d09bd2f19e0bb1e3fd8f'
+ 'ad850d4e81a958081220f450a49ba9c10209d03f066f6afee99477c815c23daf')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np0 -i "${srcdir}/ekiga-3.2.7-libnotify-0.7.patch"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-schemas-install \
+ --disable-scrollkeeper --enable-dbus
+ make
+ make DESTDIR="${pkgdir}" GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 install
+
+ install -m755 -d "${pkgdir}/usr/share/gconf/schemas"
+ gconf-merge-schema "${pkgdir}/usr/share/gconf/schemas/${pkgname}.schemas" --domain ekiga ${pkgdir}/etc/gconf/schemas/*.schemas
+ rm -f ${pkgdir}/etc/gconf/schemas/*.schemas
+}
diff --git a/extra/ekiga/ekiga-3.2.7-libnotify-0.7.patch b/extra/ekiga/ekiga-3.2.7-libnotify-0.7.patch
new file mode 100644
index 000000000..c09fbb0f9
--- /dev/null
+++ b/extra/ekiga/ekiga-3.2.7-libnotify-0.7.patch
@@ -0,0 +1,62 @@
+--- lib/engine/components/libnotify/libnotify-main.cpp
++++ lib/engine/components/libnotify/libnotify-main.cpp
+@@ -40,6 +40,10 @@
+
+ #include <libnotify/notify.h>
+
++#ifndef NOTIFY_CHECK_VERSION
++#define NOTIFY_CHECK_VERSION(x,y,z) 0
++#endif
++
+ #include "services.h"
+ #include "notification-core.h"
+
+@@ -158,7 +162,12 @@
+
+ notif = notify_notification_new (notification->get_title ().c_str (),
+ notification->get_body ().c_str (),
+- urgency, NULL);
++ urgency
++#if NOTIFY_CHECK_VERSION (0, 7, 0)
++ );
++#else
++ , NULL);
++#endif
+
+ g_signal_connect (notif, "closed",
+ G_CALLBACK (on_notif_closed), notification.get ());
+--- src/gui/main.cpp
++++ src/gui/main.cpp
+@@ -84,6 +84,9 @@
+
+ #ifdef HAVE_NOTIFY
+ #include <libnotify/notify.h>
++#ifndef NOTIFY_CHECK_VERSION
++#define NOTIFY_CHECK_VERSION(x,y,z) 0
++#endif
+ #endif
+
+ #if defined(P_FREEBSD) || defined (P_MACOSX)
+@@ -2820,12 +2823,21 @@
+
+ body = g_strdup_printf ("%s\n%s\n%s", uri, app, account);
+
+- notify = notify_notification_new (title, body, GM_ICON_LOGO, NULL);
++ notify = notify_notification_new (title, body, GM_ICON_LOGO
++#if NOTIFY_CHECK_VERSION (0, 7, 0)
++ );
++#else
++ , NULL);
++#endif
+ notify_notification_add_action (notify, "accept", _("Accept"), notify_action_cb, mw, NULL);
+ notify_notification_add_action (notify, "reject", _("Reject"), notify_action_cb, mw, NULL);
+ notify_notification_set_timeout (notify, NOTIFY_EXPIRES_NEVER);
+ notify_notification_set_urgency (notify, NOTIFY_URGENCY_CRITICAL);
++#if NOTIFY_CHECK_VERSION (0, 7, 0)
++ // notify_notification_attach_to_status_icon was removed
++#else
+ notify_notification_attach_to_status_icon (notify, statusicon);
++#endif
+ if (!notify_notification_show (notify, NULL)) {
+ ekiga_main_window_incoming_call_dialog_show (mw, call);
+ }
diff --git a/extra/ekiga/ekiga.install b/extra/ekiga/ekiga.install
new file mode 100644
index 000000000..b1d76a4a3
--- /dev/null
+++ b/extra/ekiga/ekiga.install
@@ -0,0 +1,22 @@
+pkgname=ekiga
+
+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/extra/emacs/PKGBUILD b/extra/emacs/PKGBUILD
new file mode 100644
index 000000000..88b2e2eb0
--- /dev/null
+++ b/extra/emacs/PKGBUILD
@@ -0,0 +1,50 @@
+# $Id: PKGBUILD 113641 2011-03-10 11:31:08Z juergen $
+# Maintainer: Juergen Hoetzel <juergen@archlinux.org>
+# Contributor: Renchi Raju <renchi@green.tam.uiuc.edu>
+pkgname=emacs
+pkgver=23.3
+pkgrel=1
+pkgdesc="The Emacs Editor"
+arch=(i686 x86_64)
+url="http://www.gnu.org/software/emacs/emacs.html"
+license=('GPL')
+options=(docs)
+replaces=(cedet)
+depends=('dbus-core' 'librsvg' 'gpm' 'giflib' 'libtiff' 'libxpm' 'libjpeg' 'gtk2' 'texinfo' 'hicolor-icon-theme' 'gconf')
+source=(ftp://ftp.gnu.org/gnu/emacs/$pkgname-$pkgver.tar.gz emacs.desktop)
+md5sums=('bf07c01ef473d8540c9c39f94506b1e6'
+ '8af038d2ba4561271e935bb444ceb4e3')
+install=emacs.install
+
+build() {
+ cd $startdir/src/$pkgname-$pkgver
+ mandir=/usr/share/man
+
+ # gcc 4.5 Workaround: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43904
+ CFLAGS="${CFLAGS} -fno-optimize-sibling-calls"\
+ ./configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib \
+ --localstatedir=/var --mandir=${mandir} --without-sound --with-x-toolkit=gtk
+ make
+ make DESTDIR=$startdir/pkg install
+
+ # remove conflict with ctags package
+ mv $startdir/pkg/usr/bin/{ctags,ctags.emacs}
+ mv $startdir/pkg/usr/bin/{etags,etags.emacs}
+ mv $startdir/pkg${mandir}/man1/{etags.1,etags.emacs.1}
+ mv $startdir/pkg${mandir}/man1/{ctags.1,ctags.emacs.1}
+ # fix all the 777 perms on directories
+ find $startdir/pkg/usr/share/emacs/$pkgver -type d -exec chmod 755 {} \;
+ # fix user/root permissions on usr/share files
+ find $startdir/pkg/usr/share/emacs/$pkgver -exec chown root.root {} \;
+ # fix perms on /var/games
+ chmod 775 ${startdir}/pkg/var/games
+ chmod 775 ${startdir}/pkg/var/games/emacs
+ chmod 664 ${startdir}/pkg/var/games/emacs/*
+ chown -R root:50 ${startdir}/pkg/var/games
+
+
+ # fix FS#9253
+ mkdir -p $startdir/pkg/usr/share/pixmaps ${startdir}/pkg/usr/share/applications
+ install -D -m644 ${startdir}/src/${pkgname}.desktop ${startdir}/pkg/usr/share/applications
+ ln -s ../emacs/${pkgver}/etc/images/icons/hicolor/48x48/apps/emacs.png $startdir/pkg/usr/share/pixmaps/emacs-icon.png
+}
diff --git a/extra/emacs/emacs.desktop b/extra/emacs/emacs.desktop
new file mode 100644
index 000000000..71b3d5bbf
--- /dev/null
+++ b/extra/emacs/emacs.desktop
@@ -0,0 +1,12 @@
+[Desktop Entry]
+Name=Emacs Text Editor
+Name[de]=Emacs Texteditor
+GenericName=Text Editor
+Comment=Edit text
+MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++;
+Exec=emacs %f
+Icon=emacs-icon
+Type=Application
+Terminal=false
+Categories=Development;TextEditor;
+StartupWMClass=Emacs
diff --git a/extra/emacs/emacs.install b/extra/emacs/emacs.install
new file mode 100644
index 000000000..80bcb20bf
--- /dev/null
+++ b/extra/emacs/emacs.install
@@ -0,0 +1,28 @@
+ICON_PATH=/usr/share/icons/hicolor
+INFO_DIR=/usr/share/info
+
+INFO_FILES=(ada-mode auth autotype calc ccmode cl dbus dired-x ebrowse
+ediff efaq eintr elisp emacs emacs-mime epa erc eshell eudc flymake
+forms gnus idlwave info mairix-el message mh-e newsticker nxml-mode
+org pcl-cvs pgg rcirc reftex remember sasl sc ses sieve smtpmail
+speedbar tramp url vip viper widget woman)
+
+post_install() {
+ gtk-update-icon-cache -q -t -f ${ICON_PATH}
+
+ for f in ${INFO_FILES[@]}; do
+ install-info ${INFO_DIR}/$f.gz ${INFO_DIR}/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ gtk-update-icon-cache -q -t -f ${ICON_PATH}
+
+ for f in ${INFO_FILES[@]}; do
+ install-info --delete ${INFO_DIR}/$f.gz ${INFO_DIR}/dir 2> /dev/null
+ done
+}
diff --git a/extra/emelfm2/PKGBUILD b/extra/emelfm2/PKGBUILD
new file mode 100644
index 000000000..e6f370b45
--- /dev/null
+++ b/extra/emelfm2/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 109827 2011-02-13 03:40:47Z kevin $
+# Maintainer: Kevin Piche <kevin@archlinux.org>
+# Contributor: contrasutra
+
+pkgname=emelfm2
+pkgver=0.7.5
+pkgrel=1
+pkgdesc="A file manager that implements the popular two-pane design"
+arch=(i686 x86_64)
+url="http://emelfm2.net/"
+depends=('gtk2')
+license=('GPL')
+source=(http://emelfm2.net/rel/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('f2167b0a595a2d3964b0cde2c5a6305c')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make PREFIX=/usr
+ make PREFIX=${pkgdir}/usr install
+ make PREFIX=${pkgdir}/usr install_i18n
+
+ install -m 755 ${pkgdir}/usr/share/pixmaps/emelfm2/emelfm2_48.png \
+ ${pkgdir}/usr/share/pixmaps/emelfm2.png
+ sed -e '/Icon=/ s^emelfm2/emelfm2_48.png^emelfm2.png^' \
+ -e '/Categories=/ s^;$^;Application;Utility;^' \
+ -i ${pkgdir}/usr/share/applications/emelfm2.desktop
+}
diff --git a/extra/emovix/PKGBUILD b/extra/emovix/PKGBUILD
new file mode 100644
index 000000000..f18c36675
--- /dev/null
+++ b/extra/emovix/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: PKGBUILD 37013 2009-04-29 22:54:35Z eric $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=emovix
+pkgver=0.9.0
+pkgrel=4
+pkgdesc="Create Movix-CD's (also emovix plugin for k3b)"
+arch=(i686 x86_64)
+url="http://movix.sourceforge.net/"
+license=('GPL2')
+depends=('perl' 'cdrtools')
+options=('!makeflags')
+source=(http://downloads.sourceforge.net/sourceforge/movix/$pkgname-$pkgver.tar.gz)
+md5sums=('a96492f338824b24c5a9e714c57eddcf')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ ./configure --prefix=/usr || return 1
+ make || return 1
+ make DESTDIR=$pkgdir install || return 1
+ find $pkgdir/usr/share/emovix -type d -exec chmod 755 {} \; || return 1
+}
+
diff --git a/extra/empathy/PKGBUILD b/extra/empathy/PKGBUILD
new file mode 100644
index 000000000..ccee7ee02
--- /dev/null
+++ b/extra/empathy/PKGBUILD
@@ -0,0 +1,40 @@
+# $Id: PKGBUILD 112778 2011-03-06 17:05:25Z ibiru $
+# Maintainer: Ionut Biru <ibiru@archlinux.org>
+pkgname=empathy
+pkgver=2.32.2
+pkgrel=2
+pkgdesc="A GNOME instant messaging client using the Telepathy framework."
+arch=('i686' 'x86_64')
+url="http://live.gnome.org/Empathy"
+license=('GPL2')
+depends=('telepathy-glib>=0.12.4' 'telepathy-mission-control>=5.6.1' 'folks>=0.2.1' 'telepathy-logger>=0.1.5' 'telepathy-farsight>=0.0.15'
+ 'gnome-keyring>=2.32.0' 'gnutls' 'gconf>=2.32.0' 'evolution-data-server>=2.32.1' 'libcanberra>=0.25' 'libnotify' 'libunique'
+ 'enchant' 'iso-codes' 'libwebkit' 'dconf>=0.5.1' 'ca-certificates')
+makedepends=('intltool' 'gnome-doc-utils>=0.20.1' 'nautilus-sendto')
+optdepends=('telepathy-gabble: XMPP/Jabber support'
+ 'telepathy-butterfly: MSN support'
+ 'telepathy-idle: IRC support'
+ 'telepathy-salut: Link-local XMPP support'
+ 'telepathy-sofiasip: SIP support'
+ 'telepathy-haze: libpurple support')
+options=('!libtool')
+groups=('gnome-extra')
+install=empathy.install
+source=(http://ftp.gnome.org/pub/GNOME/sources/${pkgname}/2.32/${pkgname}-${pkgver}.tar.bz2
+ empathy-2.32.2-libnotify-0.7.patch)
+sha256sums=('f90a45955205fd8bd783a55acae4603197caab4f16a880106f8639cbbbe5e861'
+ '8f7280c95fb67a2f91dc38984523f8ae4be95643e7404ea672d88d6541987ca8')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ patch -Np0 -i "${srcdir}/empathy-2.32.2-libnotify-0.7.patch"
+ sed -i -e '/libnotify/s:0.7:9999:' configure
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --libexecdir=/usr/lib/empathy \
+ --disable-schemas-compile
+ make
+ make DESTDIR="${pkgdir}" install
+
+}
diff --git a/extra/empathy/empathy-2.32.2-libnotify-0.7.patch b/extra/empathy/empathy-2.32.2-libnotify-0.7.patch
new file mode 100644
index 000000000..b430ff269
--- /dev/null
+++ b/extra/empathy/empathy-2.32.2-libnotify-0.7.patch
@@ -0,0 +1,54 @@
+--- src/empathy-chat-window.c
++++ src/empathy-chat-window.c
+@@ -35,6 +35,11 @@
+ #include <gdk/gdkx.h>
+ #include <glib/gi18n.h>
+ #include <libnotify/notification.h>
++#include <libnotify/notify.h>
++
++#ifndef NOTIFY_CHECK_VERSION
++#define NOTIFY_CHECK_VERSION(x,y,z) 0
++#endif
+
+ #include <telepathy-glib/telepathy-glib.h>
+
+@@ -1300,7 +1305,12 @@
+ to an existing notification with the same title.
+ In this way the previous message will not be lost: the new
+ message will appear below it, in the same notification */
+- notification = notify_notification_new (header, escaped, NULL, NULL);
++ notification = notify_notification_new (header, escaped, NULL
++#if NOTIFY_CHECK_VERSION (0, 7, 0)
++ );
++#else
++ , NULL);
++#endif
+
+ if (priv->notification == NULL) {
+ priv->notification = notification;
+--- src/empathy-status-icon.c
++++ src/empathy-status-icon.c
+@@ -32,6 +32,10 @@
+ #include <libnotify/notification.h>
+ #include <libnotify/notify.h>
+
++#ifndef NOTIFY_CHECK_VERSION
++#define NOTIFY_CHECK_VERSION(x,y,z) 0
++#endif
++
+ #include <telepathy-glib/account-manager.h>
+ #include <telepathy-glib/util.h>
+
+@@ -206,8 +210,12 @@
+ to an existing notification with the same title.
+ In this way the previous message will not be lost: the new
+ message will appear below it, in the same notification */
++#if NOTIFY_CHECK_VERSION (0, 7, 0)
++ /* notify_notification_new_with_status_icon was removed */
++#else
+ notification = notify_notification_new_with_status_icon
+ (priv->event->header, message_esc, NULL, priv->icon);
++#endif
+
+ if (priv->notification == NULL) {
+ priv->notification = notification;
diff --git a/extra/empathy/empathy.install b/extra/empathy/empathy.install
new file mode 100644
index 000000000..63dd6b907
--- /dev/null
+++ b/extra/empathy/empathy.install
@@ -0,0 +1,16 @@
+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
+ echo "To use Empathy you need to install at least one Telepathy connection manager."
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ 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
+}
diff --git a/extra/enblend-enfuse/PKGBUILD b/extra/enblend-enfuse/PKGBUILD
new file mode 100644
index 000000000..76fc7290d
--- /dev/null
+++ b/extra/enblend-enfuse/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 64417 2010-01-20 07:24:28Z eric $
+# Maintainer: tobias <tobias@archlinux.org>
+# Contributor: Dominik Ryba <domryba@post.pl>
+
+pkgname=enblend-enfuse
+pkgver=4.0
+pkgrel=1
+pkgdesc="intelligent blend tool for overlapping picture"
+arch=("i686" "x86_64")
+license=('GPL')
+url="http://enblend.sourceforge.net"
+depends=('openexr' 'glew>=1.5' 'libxmi' 'freeglut' 'libgl' 'lcms' 'texinfo' 'libpng')
+makedepends=('boost' 'pkgconfig')
+replaces=('enblend')
+conflicts=('enblend')
+provides=('enblend')
+install=${pkgname}.install
+source=(http://downloads.sourceforge.net/sourceforge/enblend/${pkgname}-${pkgver}.tar.gz libpng-1.4.patch)
+md5sums=('2e7c950061e0085fd75d94576130250f' 'a39df8dd32ccfa020dea2ea388642575')
+sha1sums=('34c3a5ce11c6ef0ef520d8a15a3cb6a94a567033' 'eae6cf48ea082865130302d0b4d1ca0b884a563b')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}-753b534c819d"
+ patch -p1 < ../libpng-1.4.patch || return 1
+ ./configure --prefix=/usr || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+ install -D -m644 doc/enblend.info "${pkgdir}/usr/share/info/enblend.info" || return 1
+ install -D -m644 doc/enfuse.info "${pkgdir}/usr/share/info/enfuse.info" || return 1
+}
diff --git a/extra/enblend-enfuse/enblend-enfuse.install b/extra/enblend-enfuse/enblend-enfuse.install
new file mode 100644
index 000000000..0ba358878
--- /dev/null
+++ b/extra/enblend-enfuse/enblend-enfuse.install
@@ -0,0 +1,20 @@
+infodir=/usr/share/info
+filelist=(enblend.info enfuse-focus-stacking.info enfuse.info)
+
+post_install() {
+ for file in ${filelist[@]}; do
+ install-info $infodir/$file.gz $infodir/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ for file in ${filelist[@]}; do
+ install-info --delete $infodir/$file.gz $infodir/dir 2> /dev/null
+ done
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/extra/enblend-enfuse/libpng-1.4.patch b/extra/enblend-enfuse/libpng-1.4.patch
new file mode 100644
index 000000000..3bf852b58
--- /dev/null
+++ b/extra/enblend-enfuse/libpng-1.4.patch
@@ -0,0 +1,14 @@
+diff -Naur enblend-enfuse-3.2-orig/src/vigra_impex/png.cxx enblend-enfuse-3.2/src/vigra_impex/png.cxx
+--- enblend-enfuse-3.2-orig/src/vigra_impex/png.cxx 2010-01-19 22:09:36.000000000 -0500
++++ enblend-enfuse-3.2/src/vigra_impex/png.cxx 2010-01-19 22:13:43.000000000 -0500
+@@ -275,8 +275,8 @@
+ // expand gray values to at least one byte size
+ if ( color_type == PNG_COLOR_TYPE_GRAY && bit_depth < 8 ) {
+ if (setjmp(png->jmpbuf))
+- vigra_postcondition( false,png_error_message.insert(0, "error in png_set_gray_1_2_4_to_8(): ").c_str());
+- png_set_gray_1_2_4_to_8(png);
++ vigra_postcondition( false,png_error_message.insert(0, "error in png_set_expand_gray_1_2_4_to_8(): ").c_str());
++ png_set_expand_gray_1_2_4_to_8(png);
+ bit_depth = 8;
+ }
+
diff --git a/extra/enca/PKGBUILD b/extra/enca/PKGBUILD
new file mode 100644
index 000000000..f723af724
--- /dev/null
+++ b/extra/enca/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 67989 2010-02-10 10:39:23Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Filip Dvorak <fila@pruda.com>
+
+pkgname=enca
+pkgver=1.13
+pkgrel=1
+pkgdesc="Charset analyser and converter"
+arch=('i686' 'x86_64')
+url="http://freshmeat.net/projects/enca/"
+options=('!libtool')
+license=('GPL')
+depends=('recode' 'sh')
+source=(http://dl.cihar.com/${pkgname}/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('762bead5d9a0a5e55024e1102baaa89d')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ ./configure --prefix=/usr \
+ --libexecdir=/usr/lib \
+ --mandir=/usr/share/man \
+ --with-librecode=/usr \
+ --enable-external
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/enchant/PKGBUILD b/extra/enchant/PKGBUILD
new file mode 100644
index 000000000..f59305f2c
--- /dev/null
+++ b/extra/enchant/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 77532 2010-04-15 13:26:42Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: dorphell <dorphell@archlinux.org>
+
+pkgname=enchant
+pkgver=1.6.0
+pkgrel=1
+pkgdesc="A wrapper library for generic spell checking"
+arch=('i686' 'x86_64')
+url="http://www.abisource.com/enchant/"
+license=('LGPL')
+depends=('aspell' 'dbus-glib' 'hunspell')
+makedepends=('hspell')
+options=('!libtool')
+source=("http://www.abisource.com/downloads/${pkgname}/${pkgver}/${pkgname}-${pkgver}.tar.gz")
+md5sums=('de11011aff801dc61042828041fb59c7')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr \
+ --disable-static \
+ --disable-ispell \
+ --with-myspell-dir=/usr/share/myspell || return 1
+ make || return 1
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/enlightenment/PKGBUILD b/extra/enlightenment/PKGBUILD
new file mode 100644
index 000000000..42bf1aaa1
--- /dev/null
+++ b/extra/enlightenment/PKGBUILD
@@ -0,0 +1,42 @@
+# $Id: PKGBUILD 99311 2010-11-14 07:31:31Z eric $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+
+pkgname=enlightenment
+pkgver=1.0.7
+_themever=1.0.1
+pkgrel=1
+pkgdesc="A fast, flexible, and very extensible Window Manager"
+arch=('i686' 'x86_64')
+url="http://www.enlightenment.org"
+license=('BSD' 'custom')
+depends=('libxinerama' 'libxft' 'libxxf86vm' 'esound' 'imlib2' 'perl' \
+ 'libxcomposite' 'libxdamage' 'libxrandr')
+makedepends=('xbitmaps')
+options=('!libtool')
+source=(http://downloads.sourceforge.net/sourceforge/${pkgname}/e16-${pkgver}.tar.gz \
+ http://downloads.sourceforge.net/enlightenment/e16-themes-${_themever}.tar.gz)
+md5sums=('c0594e9ace69497f5ab6b838dac8ed6f' 'bbd9cfd969610c29c7627c2ba1ce3094')
+sha1sums=('69a38c68f680778c3689a4369bfcbdb907cfc8a6' 'ae34e2df1294198795736bf953bf695aba93b710')
+
+build() {
+ cd "${srcdir}/e16-${pkgver}"
+ sed -i 's|xsessiondir = $(datadir)/xsessions|xsessiondir = /etc/X11/sessions|' misc/Makefile.in
+ ./configure --prefix=/usr --sysconfdir=/etc --enable-sound --enable-mans
+ make
+
+ cd "${srcdir}/e16-themes-${_themever}"
+ ./configure --prefix=/usr
+}
+
+package() {
+ cd "${srcdir}/e16-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+ install -D -m755 "${pkgdir}/usr/share/e16/misc/Xclients.e16-gnome.sh" "${pkgdir}/usr/bin/e16-gnome"
+ install -D -m755 "${pkgdir}/usr/share/e16/misc/Xclients.e16-kde.sh" "${pkgdir}/usr/bin/e16-kde"
+ install -D -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/COPYING"
+ install -D -m644 fonts/COPYRIGHT.Vera "${pkgdir}/usr/share/licenses/${pkgname}/COPYRIGHT.Vera"
+
+ cd "${srcdir}/e16-themes-${_themever}"
+ make DESTDIR="${pkgdir}" install
+ chown -R root:root "${pkgdir}"/usr/share/*
+}
diff --git a/extra/enscript/PKGBUILD b/extra/enscript/PKGBUILD
new file mode 100644
index 000000000..aa9bc0aee
--- /dev/null
+++ b/extra/enscript/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 81838 2010-06-05 21:03:22Z paul $
+# Maintainer: Paul Mattal <paul@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=enscript
+pkgver=1.6.5.2
+pkgrel=1
+pkgdesc="Convert ASCII files to PostScript suitable for printing"
+arch=(i686 x86_64)
+backup=('etc/enscript/enscript.cfg')
+depends=('glibc')
+license=('GPL2')
+source=(ftp://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.gz)
+md5sums=('c1d2a0d4b44ca30634742b299881b0e2')
+url="http://git.savannah.gnu.org/cgit/enscript.git"
+
+build() {
+ cd $startdir/src/$pkgname-$pkgver || return 1
+ ./configure --prefix=/usr --sysconfdir=/etc/enscript --mandir=/usr/share/man \
+ --infodir=/usr/share/info || return 1
+ /usr/bin/make || return 1
+ /usr/bin/make prefix=$startdir/pkg/usr \
+ sysconfdir=$startdir/pkg/etc/enscript mandir=$startdir/pkg/usr/share/man \
+ infodir=$startdir/pkg/usr/share/info install || return 1
+}
+# vim: ts=2 sw=2 et ft=sh
diff --git a/extra/eog/PKGBUILD b/extra/eog/PKGBUILD
new file mode 100644
index 000000000..81791e7fd
--- /dev/null
+++ b/extra/eog/PKGBUILD
@@ -0,0 +1,33 @@
+# $Id: PKGBUILD 101184 2010-11-28 14:11:49Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=eog
+pkgver=2.32.1
+pkgrel=1
+pkgdesc="Eye of Gnome: An image viewing and cataloging program"
+arch=('i686' 'x86_64')
+license=('GPL')
+depends=('gnome-desktop>=2.32.0' 'libexif>=0.6.19' 'lcms>=1.19' 'desktop-file-utils' 'gnome-icon-theme>=2.31.0' 'exempi>=2.1.1' 'python2>=2.7')
+makedepends=('pkgconfig' 'gnome-doc-utils>=0.20.1' 'intltool' 'pygtk')
+install=eog.install
+groups=('gnome-extra')
+options=('!emptydirs' '!libtool')
+url="http://www.gnome.org"
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.32/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('543672fb8e8e300bf2cf4c7eef43b5b1624e2e48e6aa0801a083ae7beb2d7078')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ PYTHON=python2 ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-scrollkeeper \
+ --enable-python
+ make
+ 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 eog ${pkgdir}/etc/gconf/schemas/*.schemas
+ rm -f ${pkgdir}/etc/gconf/schemas/*.schemas
+
+ # remove it from Xfce menu that ships its own thingy
+ echo "NotShowIn=XFCE" >> ${pkgdir}/usr/share/applications/eog.desktop
+}
diff --git a/extra/eog/eog.install b/extra/eog/eog.install
new file mode 100644
index 000000000..61d28170f
--- /dev/null
+++ b/extra/eog/eog.install
@@ -0,0 +1,24 @@
+pkgname=eog
+
+post_install() {
+ usr/sbin/gconfpkg --install ${pkgname}
+ update-desktop-database -q
+ 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() {
+ update-desktop-database -q
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
diff --git a/extra/epiphany-extensions/PKGBUILD b/extra/epiphany-extensions/PKGBUILD
new file mode 100644
index 000000000..00cfee2bc
--- /dev/null
+++ b/extra/epiphany-extensions/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 96469 2010-10-21 10:41:51Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=epiphany-extensions
+pkgver=2.32.0
+pkgrel=1
+url="http://www.gnome.org/projects/epiphany/"
+pkgdesc="Various extentions for the Epiphany web browser"
+arch=('i686' 'x86_64')
+license=('GPL')
+depends=('epiphany>=2.30.6' 'opensp' 'hicolor-icon-theme')
+makedepends=('pkgconfig' 'gnome-doc-utils>=0.20.0' 'intltool')
+options=('!libtool' '!emptydirs')
+install=epiphany-extensions.install
+source=(http://ftp.gnome.org/pub/GNOME/sources/${pkgname}/2.32/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('1d6ac9f24050f409812a1653156033c6c005c27bc590f2a54164715771a1e16e')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var \
+ --with-extensions=really-all --disable-scrollkeeper
+ make
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/epiphany-extensions/epiphany-extensions.install b/extra/epiphany-extensions/epiphany-extensions.install
new file mode 100644
index 000000000..29e05e43c
--- /dev/null
+++ b/extra/epiphany-extensions/epiphany-extensions.install
@@ -0,0 +1,13 @@
+pkgname=epiphany-extensions
+
+post_install() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
diff --git a/extra/epiphany/PKGBUILD b/extra/epiphany/PKGBUILD
new file mode 100644
index 000000000..e0d1cc62b
--- /dev/null
+++ b/extra/epiphany/PKGBUILD
@@ -0,0 +1,41 @@
+# $Id: PKGBUILD 112785 2011-03-06 19:17:28Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=epiphany
+pkgver=2.30.6
+pkgrel=3
+install=epiphany.install
+pkgdesc="A GNOME2 web browser based on the WebKit rendering engine."
+arch=('i686' 'x86_64')
+license=('GPL')
+depends=('libwebkit>=1.2.4' 'iso-codes>=3.10.1' 'desktop-file-utils' 'libxslt>=1.1.24' 'libnotify>=0.7.1' 'avahi>=0.6.27' 'libsoup-gnome>=2.32.0' 'nss>=3.12.8' 'ca-certificates' 'gconf>=2.32.0' 'gobject-introspection>=0.9.8' 'dbus-glib')
+makedepends=('gnome-doc-utils>=0.20.1' 'pkgconfig' 'networkmanager' 'intltool' 'startup-notification' 'gnome-common' 'gtk-doc')
+options=('!libtool' '!emptydirs')
+groups=('gnome')
+url="http://www.gnome.org/projects/epiphany/"
+source=(http://ftp.gnome.org/pub/GNOME/sources/${pkgname}/2.30/${pkgname}-${pkgver}.tar.bz2
+ fix-introspection.patch
+ epiphany-2.30.6-libnotify-0.7.patch
+ add-dbus-glib.patch)
+sha256sums=('278a5c00ce07e6a3ea440d289de22dbec3ebec4ded4ff3b4c48b580f469c2dcc'
+ 'fed862407db7d971aa759168f889e68e914c4e6d80d7768f3db549bc36bd8dbf'
+ 'c1a59a9df78db07c2cf23d47d881d8d4edf6e55af3d655f8ec9870adf9255390'
+ '6a0d826767eeed02300b612e16af99a8f3840ce1f754d437a1ddd8da9d254e95')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i "${srcdir}/fix-introspection.patch"
+ patch -Np1 -i "${srcdir}/add-dbus-glib.patch"
+ patch -Np0 -i "${srcdir}/epiphany-2.30.6-libnotify-0.7.patch"
+ ./autogen.sh
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var \
+ --disable-scrollkeeper \
+ --enable-network-manager
+ make
+ 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 epiphany ${pkgdir}/etc/gconf/schemas/*.schemas
+ rm -f ${pkgdir}/etc/gconf/schemas/*.schemas
+}
diff --git a/extra/epiphany/add-dbus-glib.patch b/extra/epiphany/add-dbus-glib.patch
new file mode 100644
index 000000000..c50be67a2
--- /dev/null
+++ b/extra/epiphany/add-dbus-glib.patch
@@ -0,0 +1,20 @@
+From 174a51819570a975cc61e642f7f26cb4bc2f9c57 Mon Sep 17 00:00:00 2001
+From: Diego Escalante Urrelo <descalante@igalia.com>
+Date: Mon, 01 Nov 2010 05:56:51 +0000
+Subject: tests: DBUS_LIBS is needed for libephymain.la
+
+---
+diff --git a/tests/Makefile.am b/tests/Makefile.am
+index bd2c378..b973214 100644
+--- a/tests/Makefile.am
++++ b/tests/Makefile.am
+@@ -23,6 +23,7 @@ LDADD = \
+ $(top_builddir)/lib/widgets/libephywidgets.la \
+ $(top_builddir)/lib/libephymisc.la \
+ $(top_builddir)/lib/egg/libegg.la \
++ $(DBUS_LIBS) \
+ $(DEPENDENCIES_LIBS)
+
+ if ENABLE_NSS
+--
+cgit v0.8.3.4
diff --git a/extra/epiphany/epiphany-2.30.6-libnotify-0.7.patch b/extra/epiphany/epiphany-2.30.6-libnotify-0.7.patch
new file mode 100644
index 000000000..a0c5f8ee1
--- /dev/null
+++ b/extra/epiphany/epiphany-2.30.6-libnotify-0.7.patch
@@ -0,0 +1,38 @@
+--- embed/downloader-view.c
++++ embed/downloader-view.c
+@@ -36,6 +36,9 @@
+
+ #ifdef HAVE_LIBNOTIFY
+ #include <libnotify/notify.h>
++#ifndef NOTIFY_CHECK_VERSION
++#define NOTIFY_CHECK_VERSION(x,y,z) 0
++#endif
+ #endif
+
+ enum
+@@ -337,7 +340,12 @@
+ g_object_ref (dv);
+
+ notification = notify_notification_new (title, msg,
+- GTK_STOCK_INFO, NULL);
++ GTK_STOCK_INFO
++#if NOTIFY_CHECK_VERSION (0, 7, 0)
++ );
++#else
++ , NULL);
++#endif
+
+ g_signal_connect_after (notification, "closed",
+ G_CALLBACK (notification_closed_cb), dv);
+@@ -346,7 +354,11 @@
+ notify_notification_set_timeout (notification, NOTIFY_EXPIRES_DEFAULT);
+ notify_notification_set_urgency (notification, NOTIFY_URGENCY_LOW);
+
++#if NOTIFY_CHECK_VERSION (0, 7, 0)
++ /* notify_notification_attach_to_status_icon was removed */
++#else
+ notify_notification_attach_to_status_icon (notification, status_icon);
++#endif
+
+ /* There are some visual glitches when the notification is shown and
+ * the GtkStatusIcon is still not visible. To avoid that, we delay the
diff --git a/extra/epiphany/epiphany.install b/extra/epiphany/epiphany.install
new file mode 100644
index 000000000..bd9d774a6
--- /dev/null
+++ b/extra/epiphany/epiphany.install
@@ -0,0 +1,25 @@
+pkgname=epiphany
+
+post_install() {
+ usr/sbin/gconfpkg --install ${pkgname}
+
+ update-desktop-database -q
+ 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() {
+ update-desktop-database -q
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
diff --git a/extra/epiphany/fix-introspection.patch b/extra/epiphany/fix-introspection.patch
new file mode 100644
index 000000000..4d8dca923
--- /dev/null
+++ b/extra/epiphany/fix-introspection.patch
@@ -0,0 +1,21 @@
+From 78b9eac0fca36e27c83c7678b18962ba286f041b Mon Sep 17 00:00:00 2001
+From: Vincent Untz <vuntz@gnome.org>
+Date: Fri, 01 Oct 2010 16:36:23 +0000
+Subject: introspection: Fix build by telling g-ir-scanner what the prefix is
+
+https://bugzilla.gnome.org/show_bug.cgi?id=631119
+---
+diff --git a/src/Makefile.am b/src/Makefile.am
+index e9d3715..acbf8ff 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -350,6 +350,7 @@ Epiphany-$(EPIPHANY_API_VERSION).gir: $(INTROSPECTION_SCANNER) $(EPHY_GIR_H_FILE
+ --include=WebKit-1.0 \
+ --program=./epiphany \
+ --output $@ \
++ --strip-prefix=Ephy \
+ --pkg epiphany-$(EPIPHANY_API_VERSION) \
+ -DEPIPHANY_COMPILATION \
+ -I$(top_srcdir)/embed \
+--
+cgit v0.8.3.1
diff --git a/extra/epplet-base/ChangeLog b/extra/epplet-base/ChangeLog
new file mode 100644
index 000000000..85677b48e
--- /dev/null
+++ b/extra/epplet-base/ChangeLog
@@ -0,0 +1,16 @@
+2010-05-07 Eric Belanger <eric@archlinux.org>
+
+ * epplet-base 0.13-1
+ * Upstream update
+ * Removed uneeded depends
+
+2009-01-03 Eric Belanger <eric@archlinux.org>
+
+ * epplet-base 0.12-1
+ * Upstream update
+
+2008-07-05 Eric Belanger <eric@archlinux.org>
+
+ * epplet-base 0.11-1
+ * Upstream update
+ * Added ChangeLog
diff --git a/extra/epplet-base/PKGBUILD b/extra/epplet-base/PKGBUILD
new file mode 100644
index 000000000..adf6b4bee
--- /dev/null
+++ b/extra/epplet-base/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 79809 2010-05-08 05:03:22Z eric $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=epplet-base
+pkgver=0.13
+pkgrel=1
+pkgdesc="Addon plugins for the enlightenment windowmanager"
+arch=('i686' 'x86_64')
+url="http://www.enlightenment.org"
+license=('GPL')
+depends=('esound' 'imlib2' 'libcdaudio' 'libgl')
+makedepends=('mesa')
+options=('!libtool')
+source=(http://downloads.sourceforge.net/sourceforge/enlightenment/epplets-${pkgver}.tar.gz)
+md5sums=('6304130e5741b626c27b6b0cf7ae58e0')
+sha1sums=('8af41829e5993a992c31f6285122edce6b60475a')
+
+build() {
+ cd "${srcdir}/epplets-${pkgver}"
+ ./configure --prefix=/usr || return 1
+ make || return 1
+}
+
+package() {
+ cd "${srcdir}/epplets-${pkgver}"
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/erlang/PKGBUILD b/extra/erlang/PKGBUILD
new file mode 100644
index 000000000..e3863df21
--- /dev/null
+++ b/extra/erlang/PKGBUILD
@@ -0,0 +1,64 @@
+# $Id: PKGBUILD 110837 2011-02-22 18:42:08Z vesa $
+# Contributor: Sarah Hay <sarahhay@mb.sympatico.ca>
+# Maintainer: Vesa Kaihlavirta <vesa@archlinux.org>
+
+pkgname=erlang
+pkgver=R14B
+pkgrel=2
+pkgdesc="A small concurrent functional programming language developed by Ericsson."
+arch=(i686 x86_64)
+url="http://www.erlang.org/index.html"
+license=('custom')
+depends=('ncurses' 'glibc')
+makedepends=('java-environment' 'perl' 'openssl' 'wxgtk' 'unixodbc')
+optdepends=('wxgtk: for wx support' 'unixodbc: database')
+
+options=('!makeflags')
+source=(http://www.erlang.org/download/otp_src_${pkgver/./-}.tar.gz
+ http://www.erlang.org/download/otp_doc_man_${pkgver/./-}.tar.gz)
+
+build() {
+ cd "$srcdir/otp_src_${pkgver/./-}"
+ ERTSVERSION=$(sed -n 's/^VSN[ ]*=[ ]*\([0-9.]\)/\1/p' < erts/vsn.mk)
+ ERLINTERFACEVERSION=$(sed -n 's/^EI_VSN[ ]*=[ ]*\([0-9.]\)/\1/p' < lib/erl_interface/vsn.mk)
+
+ # fix for #17001
+ sed -i 's|WX_LIBS=`$WX_CONFIG_WITH_ARGS --libs`|WX_LIBS="`$WX_CONFIG_WITH_ARGS --libs` -lGLU"|' lib/wx/configure || return 1
+
+ sed -i '/SSL_DYNAMIC_ONLY=/s:no:yes:' erts/configure || return 1
+
+ CFLAGS="${CFLAGS} -fno-strict-aliasing" ./configure --enable-ethread-pre-pentium4-compatibility enable_ethread_pre_pentium4_compatibilit=yes --prefix=/usr --enable-smp-support --enable-threads || return 1
+ make || return 1
+ make INSTALL_PREFIX="$pkgdir" install || return 1
+
+# fix prefix
+ cd "$pkgdir"
+ for i in usr/lib/erlang/bin/erl \
+ usr/lib/erlang/bin/start \
+ usr/lib/erlang/erts-${ERTSVERSION}/bin/erl \
+ usr/lib/erlang/erts-${ERTSVERSION}/bin/start \
+ usr/lib/erlang/releases/RELEASES ;do
+ sed -i "s#$pkgdir##" $i || return 1
+ done
+
+# fix symlinks
+ cd "$pkgdir/usr/lib/erlang/bin"
+ ln -sf ../erts-${ERTSVERSION}/bin/epmd
+
+ cd "$pkgdir/usr/bin"
+ for file in *; do
+ ln -sfv ../lib/erlang/bin/$file || return 1
+ done
+
+ ln -s ../lib/erlang/lib/erl_interface-${ERLINTERFACEVERSION}/bin/erl_call "$pkgdir/usr/bin/erl_call" || return 1
+
+# install documentation
+ install -d "$pkgdir/usr/share/doc/erlang"
+ install -D -m644 "$srcdir"/{COPYRIGHT,PR.template,README} "$pkgdir/usr/share/doc/erlang"
+ cp -r "$srcdir/man" "$pkgdir/usr/lib/erlang"
+
+ install -Dm644 "$srcdir/otp_src_${pkgver/./-}/EPLICENCE" "$pkgdir/usr/share/licenses/$pkgname/EPLICENCE"
+
+}
+md5sums=('5292a04556d17ad528d570e02357dfbb'
+ '011530a24fbcc194be9bd01f779325a2')
diff --git a/extra/esound/PKGBUILD b/extra/esound/PKGBUILD
new file mode 100644
index 000000000..70c636201
--- /dev/null
+++ b/extra/esound/PKGBUILD
@@ -0,0 +1,34 @@
+# $Id: PKGBUILD 19660 2008-11-28 20:33:47Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+pkgname=esound
+pkgver=0.2.41
+pkgrel=1
+pkgdesc="Enlightened Sound Daemon"
+arch=(i686 x86_64)
+license=('LGPL')
+depends=('audiofile' 'tcp_wrappers' 'alsa-lib>=1.0.18')
+url="http://www.tux.org/~ricdude/EsounD.html"
+provides=("esd=${pkgver}")
+replaces=('esd')
+conflicts=('esd')
+backup=('etc/esd.conf')
+options=('!libtool')
+source=(http://ftp.gnome.org/pub/GNOME/sources/${pkgname}/0.2/${pkgname}-${pkgver}.tar.bz2
+ esd-0.2.38-alsa-drain.patch
+ esd)
+md5sums=('8d9aad3d94d15e0d59ba9dc0ea990c6c'
+ '3de93efcd1bc196a3585e6aef50eac48'
+ 'a4c76e7c7f75b201ea7ab6fb15b47472')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i "${srcdir}/esd-0.2.38-alsa-drain.patch" || return 1
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-static \
+ --with-audiofile --with-libwrap \
+ --enable-alsa --disable-artstest || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+ install -m755 -d "${pkgdir}/etc/rc.d"
+ install -m755 "${srcdir}/esd" "${pkgdir}/etc/rc.d/esd" || return 1
+}
diff --git a/extra/esound/esd b/extra/esound/esd
new file mode 100755
index 000000000..d90ef55fa
--- /dev/null
+++ b/extra/esound/esd
@@ -0,0 +1,37 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+PID=`pidof -o %PPID /usr/bin/esd`
+case "$1" in
+ start)
+ stat_busy "Starting Esound Daemon"
+ if [ -z "$PID" ]; then
+ /usr/bin/esd -nobeeps &
+ fi
+ if [ ! -z "$PID" -o $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon esd
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping Esound Daemon"
+ [ ! -z "$PID" ] && kill $PID &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon esd
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
diff --git a/extra/esound/esd-0.2.38-alsa-drain.patch b/extra/esound/esd-0.2.38-alsa-drain.patch
new file mode 100644
index 000000000..f2fb716ba
--- /dev/null
+++ b/extra/esound/esd-0.2.38-alsa-drain.patch
@@ -0,0 +1,11 @@
+--- esound-0.2.38/audio_alsa09.c.old 2007-06-11 12:22:24.000000000 +0200
++++ esound-0.2.38/audio_alsa09.c 2007-06-11 12:22:49.000000000 +0200
+@@ -486,7 +486,7 @@ void esd_audio_flush(void)
+ }
+
+ if (alsa_playback_handle != NULL)
+- snd_pcm_drain( alsa_playback_handle );
++ snd_pcm_drop( alsa_playback_handle );
+
+ if (alsadbg)
+ print_state();
diff --git a/extra/ethstatus/PKGBUILD b/extra/ethstatus/PKGBUILD
new file mode 100644
index 000000000..7698321bb
--- /dev/null
+++ b/extra/ethstatus/PKGBUILD
@@ -0,0 +1,21 @@
+# $Id: PKGBUILD 28971 2009-03-04 02:59:17Z eric $
+# Maintainer: Juergen Hoetzel <juergen@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=ethstatus
+pkgver=0.4.3
+pkgrel=1
+pkgdesc="EthStatus was developed for Linux users that are usually in console mode, based on PPPStatus"
+arch=('i686' 'x86_64')
+url="http://packages.qa.debian.org/e/ethstatus.html"
+license=('GPL')
+depends=('ncurses')
+source=(http://ftp.debian.org/debian/pool/main/e/ethstatus/ethstatus_$pkgver.tar.gz)
+md5sums=('088412ddff67f50e32bc9d45e56b2658')
+
+build() {
+ cd $srcdir/ethstatus-$pkgver
+ make || return 1
+ install -D -m755 ethstatus $pkgdir/usr/bin/ethstatus || return 1
+ install -D -m644 ethstatus.1 $pkgdir/usr/share/man/man1/ethstatus.1 || return 1
+}
diff --git a/extra/ethtool/PKGBUILD b/extra/ethtool/PKGBUILD
new file mode 100644
index 000000000..3accd6fde
--- /dev/null
+++ b/extra/ethtool/PKGBUILD
@@ -0,0 +1,20 @@
+# $Id: PKGBUILD 114758 2011-03-15 22:43:11Z ibiru $
+# Maintainer: Paul Mattal <paul@archlinux.org>
+# Contributer: Martin Kemp <mdkemp@elys.com>
+pkgname=ethtool
+pkgver=2.6.38
+pkgrel=1
+pkgdesc="gkernel ethtool"
+arch=(i686 x86_64)
+url="http://www.kernel.org/pub/software/network/ethtool/"
+license=('GPL')
+depends=('glibc')
+source=(http://www.kernel.org/pub/software/network/$pkgname/$pkgname-$pkgver.tar.bz2)
+md5sums=('4cc35c59e4fd0defff768f9f59fa41ad')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --mandir=/usr/share/man
+ make
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/ettercap-gtk/PKGBUILD b/extra/ettercap-gtk/PKGBUILD
new file mode 100644
index 000000000..90a910423
--- /dev/null
+++ b/extra/ettercap-gtk/PKGBUILD
@@ -0,0 +1,44 @@
+# $Id: PKGBUILD 103538 2010-12-21 10:37:25Z andrea $
+# Maintainer: Hugo Doria <hugo@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=ettercap-gtk
+pkgver=NG_0.7.3
+_origname=ettercap
+_origver=NG-0.7.3
+pkgrel=8
+pkgdesc="A network sniffer/interceptor/logger for ethernet LANs - GTK"
+arch=('i686' 'x86_64')
+url="http://ettercap.sourceforge.net/"
+license=('GPL')
+depends=('ettercap' 'gtk2' 'libtool')
+makedepends=('libnet')
+options=('!libtool')
+source=(http://downloads.sourceforge.net/${_origname}/${_origname}-${_origver}.tar.gz
+ 'ettercap.desktop'
+ 'fix-segmentation-fault.patch')
+md5sums=('28fb15cd024162c55249888fe1b97820'
+ '6ef18fdd114297d4ed9e5104d309f071'
+ 'e9cc99f13fd23edaba6cddffc4d0ef34')
+
+build() {
+ cd ${srcdir}/${_origname}-${_origver}
+ unset LDFLAGS
+
+ # FS#21628
+ patch -Np1 -i ${srcdir}/fix-segmentation-fault.patch
+
+ libtoolize --force --copy
+ aclocal
+ autoconf
+ ./configure --prefix=/usr --sysconfdir=/etc --enable-plugins
+ sed -i 's/LTDL_SHLIB_EXT/\".so\"/' src/ec_plugins.c
+ make
+}
+
+package() {
+ install -Dm755 ${srcdir}/${_origname}-${_origver}/src/ettercap \
+ ${pkgdir}/usr/bin/ettercap-gtk
+ install -Dm644 ${srcdir}/ettercap.desktop \
+ ${pkgdir}/usr/share/applications/ettercap.desktop
+}
diff --git a/extra/ettercap-gtk/ettercap.desktop b/extra/ettercap-gtk/ettercap.desktop
new file mode 100644
index 000000000..1ac24e381
--- /dev/null
+++ b/extra/ettercap-gtk/ettercap.desktop
@@ -0,0 +1,6 @@
+[Desktop Entry]
+Name=Ettercap GTK
+Exec=/usr/bin/ettercap-gtk --gtk
+Terminal=false
+Type=Application
+Categories=Network;System;Security;GTK;
diff --git a/extra/ettercap-gtk/fix-segmentation-fault.patch b/extra/ettercap-gtk/fix-segmentation-fault.patch
new file mode 100644
index 000000000..3f0c7bf79
--- /dev/null
+++ b/extra/ettercap-gtk/fix-segmentation-fault.patch
@@ -0,0 +1,19 @@
+commit 8cdf08d401d368d5678f9d9c2cf36ddbdef03aec
+Author: Timothy Redaelli <timothy@redaelli.eu>
+Date: Tue Jun 23 09:16:27 2009 +0000
+
+ Fix a crash in 64 bit CPUs
+
+diff --git a/src/protocols/ec_tcp.c b/src/protocols/ec_tcp.c
+index ea0c997..be8f3e0 100644
+--- a/src/protocols/ec_tcp.c
++++ b/src/protocols/ec_tcp.c
+@@ -116,7 +116,7 @@ FUNC_DECODER(decode_tcp)
+ tcp = (struct tcp_header *)DECODE_DATA;
+
+ opt_start = (u_char *)(tcp + 1);
+- opt_end = (u_char *)((int)tcp + tcp->off * 4);
++ opt_end = (u_char *)(tcp + tcp->off * 4);
+
+ DECODED_LEN = (u_int32)(tcp->off * 4);
+
diff --git a/extra/ettercap/01_pointers_and_ints_dont_mix.diff b/extra/ettercap/01_pointers_and_ints_dont_mix.diff
new file mode 100644
index 000000000..bf7022266
--- /dev/null
+++ b/extra/ettercap/01_pointers_and_ints_dont_mix.diff
@@ -0,0 +1,12 @@
+See debian bug #521857, patch from Timothy Redaelli <timothy@redaelli.eu>
+
+--- ettercap-0.7.3.orig/src/protocols/ec_tcp.c
++++ ettercap-0.7.3/src/protocols/ec_tcp.c
+@@ -116,7 +116,7 @@
+ tcp = (struct tcp_header *)DECODE_DATA;
+
+ opt_start = (u_char *)(tcp + 1);
+- opt_end = (u_char *)((int)tcp + tcp->off * 4);
++ opt_end = (u_char *)(tcp + tcp->off * 4);
+
+ DECODED_LEN = (u_int32)(tcp->off * 4);
diff --git a/extra/ettercap/PKGBUILD b/extra/ettercap/PKGBUILD
new file mode 100644
index 000000000..c247ae6a9
--- /dev/null
+++ b/extra/ettercap/PKGBUILD
@@ -0,0 +1,36 @@
+# $Id: PKGBUILD 75608 2010-04-01 23:02:08Z giovanni $
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+# Maintainer: Kevin Piche <kevin@archlinux.org>
+
+pkgname=ettercap
+pkgver=NG_0.7.3
+_origver=NG-0.7.3
+pkgrel=15
+pkgdesc="A network sniffer/interceptor/logger for ethernet LANs - console"
+arch=('i686' 'x86_64')
+url="http://ettercap.sourceforge.net/"
+license=('GPL')
+depends=('ncurses' 'openssl' 'libpcap>=1.0.0' 'zlib' 'pcre' 'libtool>=2.2.4' 'libnet')
+makedepends=('libnet')
+options=(!libtool)
+source=(http://downloads.sourceforge.net/$pkgname/$pkgname-$_origver.tar.gz
+ 01_pointers_and_ints_dont_mix.diff)
+md5sums=('28fb15cd024162c55249888fe1b97820'
+ 'ad235cd90aaa3e168575d06efac4d862')
+
+build() {
+ cd ${srcdir}/${pkgname}-${_origver}
+
+ export LDFLAGS="${LDFLAGS//-Wl,--as-needed}"
+ patch -Np1 -i ${srcdir}/01_pointers_and_ints_dont_mix.diff || return 1
+
+ ./configure --prefix=/usr --sysconfdir=/etc --mandir=/usr/share/man --enable-plugins \
+ --enable-https --disable-gtk
+ make || return 1
+ make DESTDIR=$pkgdir install || return 1
+ cd plug-ins
+ make || return 1
+ make DESTDIR=${pkgdir} install || return 1
+ chmod 755 ${pkgdir}/usr/lib/ettercap/*
+ chmod 755 ${pkgdir}/usr/bin/ettercap
+}
diff --git a/extra/evilwm/PKGBUILD b/extra/evilwm/PKGBUILD
new file mode 100644
index 000000000..704006067
--- /dev/null
+++ b/extra/evilwm/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: PKGBUILD 45303 2009-07-09 17:59:42Z giovanni $
+# Maintainer: Kevin Piche <kevin@archlinux.org>
+# Contributor: Jochem Kossen <j.kossen@home.nl>
+
+pkgname=evilwm
+pkgver=1.0.1
+pkgrel=1
+pkgdesc="A minimalist but usable window manager for the X Window System."
+arch=('i686' 'x86_64')
+depends=('libxrandr')
+url="http://evilwm.sourceforge.net"
+source=(http://www.6809.org.uk/evilwm/$pkgname-$pkgver.tar.gz evilwm.desktop)
+license=(custom)
+md5sums=('8fd9256c635cce2289b648a01d54202c' 'fd404c0f0787fbf99b8b3270f639128c')
+
+build() {
+ cd $startdir/src/$pkgname-$pkgver
+ /usr/bin/make || return 1
+ /usr/bin/make DESTDIR=$startdir/pkg install
+ install -D -m644 $startdir/evilwm.desktop \
+ $startdir/pkg/etc/X11/sessions/evilwm.desktop
+ install -D -m644 README $startdir/pkg/usr/share/licenses/$pkgname/README
+}
diff --git a/extra/evilwm/evilwm.desktop b/extra/evilwm/evilwm.desktop
new file mode 100644
index 000000000..e12f6ca43
--- /dev/null
+++ b/extra/evilwm/evilwm.desktop
@@ -0,0 +1,8 @@
+[Desktop Entry]
+Encoding=UTF-8
+Name=Evilwm
+Comment=The evilwm window manager
+Exec=evilwm
+# no icon yet, only the top three are currently used
+Icon=
+Type=Application
diff --git a/extra/evince/PKGBUILD b/extra/evince/PKGBUILD
new file mode 100644
index 000000000..d52e6dba7
--- /dev/null
+++ b/extra/evince/PKGBUILD
@@ -0,0 +1,51 @@
+# $Id: PKGBUILD 114607 2011-03-14 14:33:58Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=evince
+pkgver=2.32.0
+pkgrel=8
+pkgdesc="Simply a document viewer"
+url="http://projects.gnome.org/evince/"
+arch=('i686' 'x86_64')
+license=('GPL')
+depends=('libspectre>=0.2.6' 'gsfonts' 'poppler-glib>=0.16.3' 'libdjvu>=3.5.22' 'gnome-icon-theme>=2.31.0' 't1lib' 'libgnome-keyring>=2.32.0' 'desktop-file-utils' 'gconf' 'dconf')
+## gconf still needed
+## https://bugzilla.gnome.org/show_bug.cgi?id=628945
+makedepends=('gnome-doc-utils>=0.20.1' 'nautilus>=2.32.0' 'pkgconfig' 'texlive-bin' 'intltool' 'gobject-introspection' 'gnome-common' 'gtk-doc')
+optdepends=('texlive-bin: DVI support')
+replaces=('gpdf')
+groups=('gnome-extra')
+install=evince.install
+options=('!libtool' '!emptydirs')
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.32/${pkgname}-${pkgver}.tar.bz2
+ update_to_poppler_api.patch
+ security_issues_in_dvi-backend.patch)
+sha256sums=('2a4c91ae38f8b5028cebb91b9da9ddc50ea8ae3f3d429df89ba351da2d787ff7'
+ '2990c789c8cfd50e46f4dfa7a2406499b3ee26f4db9840c8b9a6e1dee40f61f4'
+ '49d1ed8adc734a005d4d8fdc1912bb115d97f734071d64bcae0aae60f2b5626a')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i "${srcdir}/update_to_poppler_api.patch"
+ patch -Np1 -i "${srcdir}/security_issues_in_dvi-backend.patch"
+
+ ./autogen.sh
+
+ ./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-pixbuf \
+ --enable-comics --enable-impress \
+ --enable-introspection \
+ --disable-scrollkeeper \
+ --disable-schemas-compile
+ make
+ 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 evince ${pkgdir}/etc/gconf/schemas/*.schemas
+ rm -f ${pkgdir}/etc/gconf/schemas/*.schemas
+
+}
diff --git a/extra/evince/evince.install b/extra/evince/evince.install
new file mode 100644
index 000000000..ee40ec5eb
--- /dev/null
+++ b/extra/evince/evince.install
@@ -0,0 +1,26 @@
+pkgname=evince
+
+post_install() {
+ usr/bin/glib-compile-schemas usr/share/glib-2.0/schemas
+ usr/sbin/gconfpkg --install ${pkgname}
+ gtk-update-icon-cache -q -f -t usr/share/icons/hicolor
+ update-desktop-database -q
+}
+
+pre_upgrade() {
+ pre_remove $1
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ usr/sbin/gconfpkg --uninstall ${pkgname}
+ usr/bin/glib-compile-schemas usr/share/glib-2.0/schemas
+}
+
+post_remove() {
+ update-desktop-database -q
+ gtk-update-icon-cache -q -f -t usr/share/icons/hicolor
+}
diff --git a/extra/evince/security_issues_in_dvi-backend.patch b/extra/evince/security_issues_in_dvi-backend.patch
new file mode 100644
index 000000000..691ee4190
--- /dev/null
+++ b/extra/evince/security_issues_in_dvi-backend.patch
@@ -0,0 +1,97 @@
+From 8e473c9796b9a61b811213e7892fd36fd570303a Mon Sep 17 00:00:00 2001
+From: José Aliste <jaliste@src.gnome.org>
+Date: Tue, 07 Dec 2010 18:56:47 +0000
+Subject: backends: Fix several security issues in the dvi-backend.
+
+See CVE-2010-2640, CVE-2010-2641, CVE-2010-2642 and CVE-2010-2643.
+---
+diff --git a/backend/dvi/mdvi-lib/afmparse.c b/backend/dvi/mdvi-lib/afmparse.c
+index 164366b..361e23d 100644
+--- a/backend/dvi/mdvi-lib/afmparse.c
++++ b/backend/dvi/mdvi-lib/afmparse.c
+@@ -160,7 +160,7 @@ static char *token(FILE *stream)
+
+ idx = 0;
+ while (ch != EOF && ch != ' ' && ch != lineterm
+- && ch != '\t' && ch != ':' && ch != ';')
++ && ch != '\t' && ch != ':' && ch != ';' && idx < MAX_NAME)
+ {
+ ident[idx++] = ch;
+ ch = fgetc(stream);
+diff --git a/backend/dvi/mdvi-lib/dviread.c b/backend/dvi/mdvi-lib/dviread.c
+index 97b7b84..ac98068 100644
+--- a/backend/dvi/mdvi-lib/dviread.c
++++ b/backend/dvi/mdvi-lib/dviread.c
+@@ -1537,6 +1537,10 @@ int special(DviContext *dvi, int opcode)
+ Int32 arg;
+
+ arg = dugetn(dvi, opcode - DVI_XXX1 + 1);
++ if (arg <= 0) {
++ dvierr(dvi, _("malformed special length\n"));
++ return -1;
++ }
+ s = mdvi_malloc(arg + 1);
+ dread(dvi, s, arg);
+ s[arg] = 0;
+diff --git a/backend/dvi/mdvi-lib/pk.c b/backend/dvi/mdvi-lib/pk.c
+index a579186..08377e6 100644
+--- a/backend/dvi/mdvi-lib/pk.c
++++ b/backend/dvi/mdvi-lib/pk.c
+@@ -469,6 +469,15 @@ static int pk_load_font(DviParams *unused, DviFont *font)
+ }
+ if(feof(p))
+ break;
++
++ /* Although the PK format support bigger char codes,
++ * XeTeX and other extended TeX engines support charcodes up to
++ * 65536, while normal TeX engine supports only charcode up to 255.*/
++ if (cc < 0 || cc > 65536) {
++ mdvi_error (_("%s: unexpected charcode (%d)\n"),
++ font->fontname,cc);
++ goto error;
++ }
+ if(cc < loc)
+ loc = cc;
+ if(cc > hic)
+@@ -512,7 +521,7 @@ static int pk_load_font(DviParams *unused, DviFont *font)
+ }
+
+ /* resize font char data */
+- if(loc > 0 || hic < maxch-1) {
++ if(loc > 0 && hic < maxch-1) {
+ memmove(font->chars, font->chars + loc,
+ (hic - loc + 1) * sizeof(DviFontChar));
+ font->chars = xresize(font->chars,
+diff --git a/backend/dvi/mdvi-lib/tfmfile.c b/backend/dvi/mdvi-lib/tfmfile.c
+index 73ebf26..8c2a30b 100644
+--- a/backend/dvi/mdvi-lib/tfmfile.c
++++ b/backend/dvi/mdvi-lib/tfmfile.c
+@@ -172,7 +172,8 @@ int tfm_load_file(const char *filename, TFMInfo *info)
+ /* We read the entire TFM file into core */
+ if(fstat(fileno(in), &st) < 0)
+ return -1;
+- if(st.st_size == 0)
++ /* according to the spec, TFM files are smaller than 16K */
++ if(st.st_size == 0 || st.st_size >= 16384)
+ goto bad_tfm;
+
+ /* allocate a word-aligned buffer to hold the file */
+diff --git a/backend/dvi/mdvi-lib/vf.c b/backend/dvi/mdvi-lib/vf.c
+index fb49847..a5ae3bb 100644
+--- a/backend/dvi/mdvi-lib/vf.c
++++ b/backend/dvi/mdvi-lib/vf.c
+@@ -165,6 +165,12 @@ static int vf_load_font(DviParams *params, DviFont *font)
+ cc = fuget1(p);
+ tfm = fuget3(p);
+ }
++ if (cc < 0 || cc > 65536) {
++ /* TeX engines do not support char codes bigger than 65535 */
++ mdvi_error(_("(vf) %s: unexpected character %d\n"),
++ font->fontname, cc);
++ goto error;
++ }
+ if(loc < 0 || cc < loc)
+ loc = cc;
+ if(hic < 0 || cc > hic)
+--
+cgit v0.8.3.1
diff --git a/extra/evince/update_to_poppler_api.patch b/extra/evince/update_to_poppler_api.patch
new file mode 100644
index 000000000..29bcad6b9
--- /dev/null
+++ b/extra/evince/update_to_poppler_api.patch
@@ -0,0 +1,58 @@
+From f77e6cf4fd7fef49ac91d8c62b6a9a993529adb8 Mon Sep 17 00:00:00 2001
+From: Carlos Garcia Campos <carlosgc@gnome.org>
+Date: Fri, 17 Sep 2010 11:21:16 +0000
+Subject: [pdf] Update to poppler api changes
+
+Linearized PopplerDocument property is now boolean rather than string.
+---
+diff --git a/backend/pdf/ev-poppler.cc b/backend/pdf/ev-poppler.cc
+index aa080e6..ced3ef7 100644
+--- a/backend/pdf/ev-poppler.cc
++++ b/backend/pdf/ev-poppler.cc
+@@ -722,6 +722,9 @@ pdf_document_get_info (EvDocument *document)
+ PopplerPermissions permissions;
+ EvPage *page;
+ char *metadata;
++#ifdef HAVE_POPPLER_DOCUMENT_IS_LINEARIZED
++ gboolean linearized;
++#endif
+
+ info = g_new0 (EvDocumentInfo, 1);
+
+@@ -758,7 +761,11 @@ pdf_document_get_info (EvDocument *document)
+ "producer", &(info->producer),
+ "creation-date", &(info->creation_date),
+ "mod-date", &(info->modified_date),
++#ifdef HAVE_POPPLER_DOCUMENT_IS_LINEARIZED
++ "linearized", &linearized,
++#else
+ "linearized", &(info->linearized),
++#endif
+ "metadata", &metadata,
+ NULL);
+
+@@ -864,6 +871,10 @@ pdf_document_get_info (EvDocument *document)
+ info->security = g_strdup (_("No"));
+ }
+
++#ifdef HAVE_POPPLER_DOCUMENT_IS_LINEARIZED
++ info->linearized = linearized ? g_strdup (_("Yes")) : g_strdup (_("No"));
++#endif
++
+ return info;
+ }
+
+diff --git a/configure.ac b/configure.ac
+index 0faa16e..9619349 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -512,6 +512,7 @@ if test "x$enable_pdf" = "xyes"; then
+ AC_CHECK_FUNCS(poppler_page_get_text_layout)
+ AC_CHECK_FUNCS(poppler_page_get_selected_text)
+ AC_CHECK_FUNCS(poppler_page_add_annot)
++ AC_CHECK_FUNCS(poppler_document_is_linearized)
+ LIBS=$evince_save_LIBS
+ PKG_CHECK_MODULES(CAIRO_PDF, cairo-pdf, enable_cairo_pdf=yes, enable_cairo_pdf=no)
+ if test x$enable_cairo_pdf = xyes; then
+--
+cgit v0.8.3.1
diff --git a/extra/evolution-data-server/PKGBUILD b/extra/evolution-data-server/PKGBUILD
new file mode 100644
index 000000000..5bb2c28c7
--- /dev/null
+++ b/extra/evolution-data-server/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 109544 2011-02-10 18:48:23Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=evolution-data-server
+pkgver=2.32.2
+pkgrel=1
+pkgdesc="Central location for addressbook and calendar storage in the GNOME Desktop"
+arch=('i686' 'x86_64')
+depends=('libsoup>=2.32.2' 'nss>=3.12.9' 'libgnome-keyring>=2.32.0' 'heimdal>=1.3.3' 'libgweather>=2.30.3' 'libical>=0.46' 'db>=5.1.19' 'libgdata>=0.6.5')
+makedepends=('intltool' 'gtk-doc' 'gperf')
+options=('!libtool')
+url="http://www.gnome.org"
+license=('GPL')
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.32/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('d22fcd9e6f1cee7b4b11a25ae3c3d19e6a454e4f09b983a954ff2d7640bf1c36')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --with-openldap=yes \
+ --libexecdir=/usr/lib/evolution-data-server-1.2 \
+ --with-krb5=/usr --enable-gnome-keyring \
+ --with-libdb=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/evolution-exchange/PKGBUILD b/extra/evolution-exchange/PKGBUILD
new file mode 100644
index 000000000..fa4905ccd
--- /dev/null
+++ b/extra/evolution-exchange/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 109554 2011-02-10 19:19:29Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=evolution-exchange
+pkgver=2.32.2
+pkgrel=1
+pkgdesc="Ximian Connector Exchange plugin for Evolution"
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://www.ximian.com"
+depends=('evolution-data-server>=2.32.2' 'gtkhtml>=3.32.2' 'gnome-desktop>=2.32.0' 'libunique>=1.1.6')
+makedepends=('intltool' 'evolution')
+options=('!libtool' '!emptydirs')
+groups=('gnome-extra')
+install=evolution-exchange.install
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.32/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('60030eb2de042cef1d703cda7d64c3ec87fcef0bd966012e816954a96cc37d63')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \
+ --libexecdir=/usr/lib/evolution --disable-static \
+ --with-libdb=/usr --with-krb5=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+
+ install -m755 -d "${pkgdir}/usr/share/gconf/schemas"
+ gconf-merge-schema "${pkgdir}/usr/share/gconf/schemas/${pkgname}.schemas" --domain evolution-exchange-${_majorver} ${pkgdir}/etc/gconf/schemas/*.schemas
+ rm -f ${pkgdir}/etc/gconf/schemas/*.schemas
+}
diff --git a/extra/evolution-exchange/evolution-exchange.install b/extra/evolution-exchange/evolution-exchange.install
new file mode 100644
index 000000000..1179887f9
--- /dev/null
+++ b/extra/evolution-exchange/evolution-exchange.install
@@ -0,0 +1,17 @@
+pkgname=evolution-exchange
+
+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/extra/evolution-sharp/PKGBUILD b/extra/evolution-sharp/PKGBUILD
new file mode 100644
index 000000000..8c3527775
--- /dev/null
+++ b/extra/evolution-sharp/PKGBUILD
@@ -0,0 +1,36 @@
+# $Id: PKGBUILD 94159 2010-10-04 20:47:03Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=evolution-sharp
+pkgver=0.21.1
+pkgrel=2
+pkgdesc="C# bindings for Novell Evolution"
+arch=(i686 x86_64)
+license=('GPL')
+url="http://ftp.gnome.org/pub/GNOME/sources/evolution-sharp/"
+depends=('evolution-data-server>=2.32.0')
+makedepends=('pkg-config' 'gtk-sharp-2>=2.12.8')
+options=('!libtool')
+source=(http://ftp.gnome.org/pub/GNOME/sources/${pkgname}/0.21/${pkgname}-${pkgver}.tar.bz2
+ evolution-sharp-0.21.1-fix-retarded-version-check.patch
+ evolution-data-server-lib-target.patch)
+sha256sums=('3cb78088e332f71b2a7958d2e8c6af3c9ff168731c8fb423aad7038cbdef3a1c'
+ '80f98baf3336383241deac73c3f0d3a0905c9a2a3790db7ec4bf6089a577cf5b'
+ '177492c896d6cfc34f728d578e6948463f16ed731ffbf6aa555f9ec4b7f7af9e')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ patch -Np1 -i "${srcdir}/evolution-sharp-0.21.1-fix-retarded-version-check.patch"
+ patch -Np1 -i "${srcdir}/evolution-data-server-lib-target.patch"
+ autoreconf -fi
+
+ export MONO_SHARED_DIR="${startdir}/src/.wabi"
+ mkdir -p "${MONO_SHARED_DIR}"
+
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-static
+ make DESTDIR="${pkgdir}" install
+ rm -f "${pkgdir}/usr/lib/libevolutionglue.a"
+}
+
diff --git a/extra/evolution-sharp/evolution-data-server-lib-target.patch b/extra/evolution-sharp/evolution-data-server-lib-target.patch
new file mode 100644
index 000000000..c713b1ca4
--- /dev/null
+++ b/extra/evolution-sharp/evolution-data-server-lib-target.patch
@@ -0,0 +1,15 @@
+diff -Nur evolution-sharp-0.21.1.orig/evolution/evolution-sharp.dll.config.in evolution-sharp-0.21.1/evolution/evolution-sharp.dll.config.in
+--- evolution-sharp-0.21.1.orig/evolution/evolution-sharp.dll.config.in 2009-05-26 00:25:06.000000000 -0700
++++ evolution-sharp-0.21.1/evolution/evolution-sharp.dll.config.in 2010-10-04 13:31:36.573339607 -0700
+@@ -1,7 +1,7 @@
+ <configuration>
+- <dllmap dll="ebook" target="libebook@EDS_VERSION@@LIB_PREFIX@.@EBOOK_SOVERSION@@LIB_SUFFIX@"/>
+- <dllmap dll="ecal" target="libecal@EDS_VERSION@@LIB_PREFIX@.@ECAL_SOVERSION@@LIB_SUFFIX@"/>
+- <dllmap dll="edataserver" target="libedataserver@EDS_VERSION@@LIB_PREFIX@.@EDS_SOVERSION@@LIB_SUFFIX@"/>
++ <dllmap dll="ebook" target="libebook@EDS_VERSION@@LIB_PREFIX@.10@LIB_SUFFIX@"/>
++ <dllmap dll="ecal" target="libecal@EDS_VERSION@@LIB_PREFIX@.8@LIB_SUFFIX@"/>
++ <dllmap dll="edataserver" target="libedataserver@EDS_VERSION@@LIB_PREFIX@.14@LIB_SUFFIX@"/>
+ <dllmap dll="ebackend" target="libebackend@EDS_VERSION@@LIB_PREFIX@.@EBACKEND_SOVERSION@@LIB_SUFFIX@"/>
+- <dllmap dll="edatacal" target="libedata-cal@EDS_VERSION@@LIB_PREFIX@.@EDATACAL_SOVERSION@@LIB_SUFFIX@"/>
++ <dllmap dll="edatacal" target="libedata-cal@EDS_VERSION@@LIB_PREFIX@.10@LIB_SUFFIX@"/>
+ </configuration>
diff --git a/extra/evolution-sharp/evolution-sharp-0.21.1-fix-retarded-version-check.patch b/extra/evolution-sharp/evolution-sharp-0.21.1-fix-retarded-version-check.patch
new file mode 100644
index 000000000..9a2ebe95e
--- /dev/null
+++ b/extra/evolution-sharp/evolution-sharp-0.21.1-fix-retarded-version-check.patch
@@ -0,0 +1,13 @@
+diff -up evolution-sharp-0.21.1/configure.in.fix-retarded-version-check evolution-sharp-0.21.1/configure.in
+--- evolution-sharp-0.21.1/configure.in.fix-retarded-version-check 2009-08-20 21:46:34.000000000 -0400
++++ evolution-sharp-0.21.1/configure.in 2009-08-20 21:47:16.000000000 -0400
+@@ -16,8 +16,7 @@ fi
+ PKG_CHECK_MODULES(EVOLUTION_DATA_SERVER_1_8, evolution-data-server-1.2 >= 1.8 evolution-data-server-1.2 < 1.9, edsver="1.8", AC_MSG_RESULT([no]))
+ PKG_CHECK_MODULES(EVOLUTION_DATA_SERVER_1_9, evolution-data-server-1.2 >= 1.9 evolution-data-server-1.2 < 1.10, edsver="1.9", AC_MSG_RESULT([no]))
+ PKG_CHECK_MODULES(EVOLUTION_DATA_SERVER_1_10, evolution-data-server-1.2 >= 1.10 evolution-data-server-1.2 < 2.23.92, edsver="1.10", AC_MSG_RESULT([no]))
+-PKG_CHECK_MODULES(EVOLUTION_DATA_SERVER_2_24, evolution-data-server-1.2 >= 2.23.92 evolution-data-server-1.2 < 2.27.4, edsver="2.24", AC_MSG_RESULT([no]))
+-PKG_CHECK_MODULES(TOO_NEW_EDS, evolution-data-server-1.2 >= 2.27.4, edsver="unsupported", AC_MSG_RESULT([no]))
++PKG_CHECK_MODULES(EVOLUTION_DATA_SERVER_2_24, evolution-data-server-1.2 >= 2.23.92, edsver="2.24", AC_MSG_RESULT([no]))
+
+ if test "x$edsver" = "x1.8"; then
+ EDS_VERSION=-1.2
diff --git a/extra/evolution-webcal/PKGBUILD b/extra/evolution-webcal/PKGBUILD
new file mode 100644
index 000000000..5fd841ba1
--- /dev/null
+++ b/extra/evolution-webcal/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 92013 2010-09-28 16:50:49Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=evolution-webcal
+pkgver=2.32.0
+pkgrel=1
+pkgdesc="Evolution Web calendar"
+arch=(i686 x86_64)
+license=('GPL')
+install=evolution-webcal.install
+url="http://www.ximian.com"
+depends=('evolution-data-server>=2.32.0')
+makedepends=('intltool' 'pkgconfig' 'evolution>=2.32.0')
+groups=('gnome-extra')
+options=(!emptydirs)
+source=(http://ftp.acc.umu.se/pub/GNOME/sources/evolution-webcal/2.32/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('b6ae8a105665771c4069be96d67e0c10f13e01417805cb3a1900c397c9bd580c')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --libexecdir=/usr/lib/evolution-webcal \
+ --localstatedir=/var
+ make
+ 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 evolution-webcal ${pkgdir}/etc/gconf/schemas/*.schemas
+ rm -f ${pkgdir}/etc/gconf/schemas/*.schemas
+}
diff --git a/extra/evolution-webcal/evolution-webcal.install b/extra/evolution-webcal/evolution-webcal.install
new file mode 100644
index 000000000..67e4861ce
--- /dev/null
+++ b/extra/evolution-webcal/evolution-webcal.install
@@ -0,0 +1,17 @@
+pkgname=evolution-webcal
+
+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/extra/evolution/PKGBUILD b/extra/evolution/PKGBUILD
new file mode 100644
index 000000000..96c6be99c
--- /dev/null
+++ b/extra/evolution/PKGBUILD
@@ -0,0 +1,45 @@
+# $Id: PKGBUILD 112779 2011-03-06 18:16:38Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=evolution
+pkgver=2.32.2
+pkgrel=4
+pkgdesc="Integrated Workgroup and Personal Information Management for Gnome"
+arch=('i686' 'x86_64')
+license=('GPL')
+depends=('libnotify>=0.7.1' 'gtkhtml>=3.32.2' 'evolution-data-server>=2.32.2' 'gstreamer0.10>=0.10.30' 'libpst>=0.6.41' 'libytnef>=0.1.5' 'gnome-desktop>=2.32.0' 'libcanberra>=0.26' 'gtkimageview>=1.6.4' 'libunique' 'desktop-file-utils')
+makedepends=('gnome-doc-utils>=0.20.1' 'intltool' 'networkmanager')
+optdepends=('bogofilter: possible junk filter plugin'
+ 'spamassassin: possible junk filter plugin')
+groups=('gnome-extra')
+options=('!libtool' '!emptydirs')
+install=evolution.install
+url=http://www.gnome.org/projects/evolution/
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.32/${pkgname}-${pkgver}.tar.bz2
+ evolution-2.32.1-libnotify-0.7.patch)
+sha256sums=('1831c7f5f00b4755869cf84ef3e3f79c4705a33e0659e72b6c1ffa4a59d4a4bb'
+ '73746e65a3ba190ace8bd1e5fc9d52f6a67556fac0ba8727d7705ffe74e3ce0d')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ patch -Np0 -i "${srcdir}/evolution-2.32.1-libnotify-0.7.patch"
+
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var \
+ --libexecdir=/usr/lib \
+ --disable-scrollkeeper \
+ --enable-nss=yes \
+ --with-openldap=yes \
+ --enable-smime=yes \
+ --with-krb5=/usr
+ make
+ make GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 DESTDIR="${pkgdir}" install
+ cd plugins/tnef-attachments
+ make
+ make DESTDIR="${pkgdir}" install
+
+ install -m755 -d "${pkgdir}/usr/share/gconf/schemas"
+ gconf-merge-schema "${pkgdir}/usr/share/gconf/schemas/${pkgname}.schemas" --domain evolution-2.32 ${pkgdir}/etc/gconf/schemas/*.schemas
+ rm -f ${pkgdir}/etc/gconf/schemas/*.schemas
+}
diff --git a/extra/evolution/evolution-2.32.1-libnotify-0.7.patch b/extra/evolution/evolution-2.32.1-libnotify-0.7.patch
new file mode 100644
index 000000000..7e2474b47
--- /dev/null
+++ b/extra/evolution/evolution-2.32.1-libnotify-0.7.patch
@@ -0,0 +1,81 @@
+--- calendar/gui/alarm-notify/alarm-queue.c
++++ calendar/gui/alarm-notify/alarm-queue.c
+@@ -40,6 +40,9 @@
+
+ #ifdef HAVE_LIBNOTIFY
+ #include <libnotify/notify.h>
++#ifndef NOTIFY_CHECK_VERSION
++#define NOTIFY_CHECK_VERSION(x,y,z) 0
++#endif
+ #endif
+
+ #include "alarm.h"
+@@ -1606,7 +1609,12 @@
+ body = g_strdup_printf ("%s %s", start_str, time_str);
+ }
+
+- n = notify_notification_new (summary, body, "stock_appointment-reminder", NULL);
++ n = notify_notification_new (summary, body, "stock_appointment-reminder"
++#if NOTIFY_CHECK_VERSION (0, 7, 0)
++ );
++#else
++ , NULL);
++#endif
+ if (!notify_notification_show(n, NULL))
+ g_warning ("Could not send notification to daemon\n");
+
+--- plugins/mail-notification/mail-notification.c
++++ plugins/mail-notification/mail-notification.c
+@@ -47,6 +47,9 @@
+
+ #ifdef HAVE_LIBNOTIFY
+ #include <libnotify/notify.h>
++#ifndef NOTIFY_CHECK_VERSION
++#define NOTIFY_CHECK_VERSION(x,y,z) 0
++#endif
+ #endif
+
+ #define GCONF_KEY_ROOT "/apps/evolution/eplugin/mail-notification/"
+@@ -564,9 +567,14 @@
+
+ notify = notify_notification_new (
+ _("New email"), safetext,
+- "mail-unread", NULL);
++ "mail-unread"
++#if NOTIFY_CHECK_VERSION (0, 7, 0)
++ );
++#else
++ , NULL);
+ notify_notification_attach_to_status_icon (
+ notify, status_icon);
++#endif
+
+ /* Check if actions are supported */
+ if (can_support_actions ()) {
+--- plugins/publish-calendar/publish-calendar.c
++++ plugins/publish-calendar/publish-calendar.c
+@@ -46,6 +46,9 @@
+
+ #ifdef HAVE_LIBNOTIFY
+ #include <libnotify/notify.h>
++#ifndef NOTIFY_CHECK_VERSION
++#define NOTIFY_CHECK_VERSION(x,y,z) 0
++#endif
+ #endif
+
+ static GtkListStore *store = NULL;
+@@ -150,8 +153,13 @@
+ return;
+ }
+
+- notify = notify_notification_new (_("Calendar Publishing"), actual_msg->str, stock_name, NULL);
++ notify = notify_notification_new (_("Calendar Publishing"), actual_msg->str, stock_name
++#if NOTIFY_CHECK_VERSION (0, 7, 0)
++ );
++#else
++ , NULL);
+ notify_notification_attach_to_status_icon (notify, status_icon);
++#endif
+ notify_notification_set_urgency (notify, NOTIFY_URGENCY_NORMAL);
+ notify_notification_set_timeout (notify, NOTIFY_EXPIRES_DEFAULT);
+ g_timeout_add (500, show_notify_cb, NULL);
diff --git a/extra/evolution/evolution.install b/extra/evolution/evolution.install
new file mode 100644
index 000000000..a2c3aaa54
--- /dev/null
+++ b/extra/evolution/evolution.install
@@ -0,0 +1,24 @@
+pkgname=evolution
+
+post_install() {
+ usr/sbin/gconfpkg --install ${pkgname}
+ update-desktop-database -q
+ 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() {
+ update-desktop-database -q
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
diff --git a/extra/exempi/PKGBUILD b/extra/exempi/PKGBUILD
new file mode 100644
index 000000000..0f385c8be
--- /dev/null
+++ b/extra/exempi/PKGBUILD
@@ -0,0 +1,24 @@
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: André Klitzing <aklitzing@online.de>
+pkgname=exempi
+pkgver=2.1.1
+pkgrel=1
+pkgdesc="A library to parse XMP metadata"
+arch=(i686 x86_64)
+url="http://libopenraw.freedesktop.org/wiki/Exempi"
+license=('custom:BSD')
+depends=('gcc-libs>=4.4.2' 'expat>=2.0.1' 'zlib')
+makedepends=('boost>=1.36.0')
+options=(!libtool)
+source=(http://libopenraw.freedesktop.org/download/${pkgname}-${pkgver}.tar.gz)
+md5sums=('62ecb5a01387b9f940a5429b3df67e65')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+ install -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 "${srcdir}/${pkgname}-${pkgver}/COPYING" \
+ "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1
+}
diff --git a/extra/exiv2/PKGBUILD b/extra/exiv2/PKGBUILD
new file mode 100644
index 000000000..b13d82878
--- /dev/null
+++ b/extra/exiv2/PKGBUILD
@@ -0,0 +1,26 @@
+#$Id: PKGBUILD 110922 2011-02-23 07:38:47Z eric $
+# Maintainer: tobias <tobias@arhlinux.org>
+
+pkgname=exiv2
+pkgver=0.21.1
+pkgrel=1
+pkgdesc="Exif and Iptc metadata manipulation library and tools."
+arch=('i686' 'x86_64')
+url="http://exiv2.org"
+license=('GPL2')
+depends=('gcc-libs' 'zlib' 'expat')
+options=('!libtool')
+source=("http://www.exiv2.org/${pkgname}-${pkgver}.tar.gz")
+md5sums=('5c99bbcaa998f6b200b92f2bf0ac4f9e')
+sha1sums=('d33e0efbad5d6a7af7f2e6d1d0beb6e7c941cfca')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/exo/PKGBUILD b/extra/exo/PKGBUILD
new file mode 100644
index 000000000..8998e12c4
--- /dev/null
+++ b/extra/exo/PKGBUILD
@@ -0,0 +1,41 @@
+# $Id: PKGBUILD 106429 2011-01-16 21:30:41Z ibiru $
+# Maintainer: AndyRTR <andyrtr@archlinux.org>
+# Contributor: tobias <tobias funnychar archlinux.org>
+# Contributor: Aurelien Foret <orelien@chez.com>
+
+pkgname=exo
+pkgver=0.6.0
+pkgrel=2
+pkgdesc="Extensions to Xfce by os-cillation"
+arch=('i686' 'x86_64')
+license=('GPL2' 'LGPL')
+url="http://www.xfce.org/projects/exo"
+groups=('xfce4')
+depends=("libxfce4util>=4.8.1" 'gtk2' 'hicolor-icon-theme' )
+makedepends=('pygtk' 'perl-uri' 'intltool' 'gtk-doc' 'xorg-iceauth')
+optdepends=('perl-uri: for mail-compose helper script')
+options=('!libtool')
+install=${pkgname}.install
+source=(http://archive.xfce.org/src/xfce/${pkgname}/0.6/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('ac9deafdf9de426d8a03855ac549f424')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ # python2 fix
+ export PYTHON=python2
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --libexecdir=/usr/lib/xfce4 \
+ --localstatedir=/var \
+ --disable-static \
+ --enable-gio-unix \
+ --enable-python \
+ --enable-gtk-doc \
+ --disable-debug
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/exo/exo.install b/extra/exo/exo.install
new file mode 100644
index 000000000..3525fa4a2
--- /dev/null
+++ b/extra/exo/exo.install
@@ -0,0 +1,12 @@
+post_install() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+ usr/bin/gio-querymodules usr/lib/gio/modules
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ post_install $1
+}
diff --git a/extra/expect/ChangeLog b/extra/expect/ChangeLog
new file mode 100644
index 000000000..d43e10c0c
--- /dev/null
+++ b/extra/expect/ChangeLog
@@ -0,0 +1,11 @@
+2011-01-01 kevin <kevin@archlinux.org>
+
+ * expect 5.45-1
+ - Added upgrade message about expectk being removed
+ - Have expect conflict with expectk
+
+2010-03-27 kevin <kevin@archlinux.org>
+
+ * expect 5.44.1.15-1
+ - Source on sourceforge now and maintained mostly by ActiveState
+ - Added symlink to fix FS#18686 - libexpect.so is not found
diff --git a/extra/expect/PKGBUILD b/extra/expect/PKGBUILD
new file mode 100644
index 000000000..3b630ba43
--- /dev/null
+++ b/extra/expect/PKGBUILD
@@ -0,0 +1,38 @@
+# $Id: PKGBUILD 104372 2011-01-01 23:52:17Z kevin $
+# Maintainer: kevin <kevin@archlinux.org>
+
+pkgname=expect
+pkgver=5.45
+pkgrel=1
+pkgdesc="A tool for automating interactive applications"
+arch=(i686 x86_64)
+url="http://www.nist.gov/el/msid/expect.cfm"
+license=('custom')
+depends=('tcl>=8.5.3')
+conflicts=('expectk')
+install=expect.install
+changelog=ChangeLog
+source=(http://downloads.sourceforge.net/project/expect/Expect/${pkgver}/expect${pkgver}.tar.gz)
+# CVS checkout on gerolde.
+#source=(ftp://ftp.archlinux.org/other/expect/expect-${pkgver}.tar.bz2)
+# old nist source=(http://expect.nist.gov/src/expect-${pkgver}.tar.bz2)
+md5sums=('44e1a4f4c877e9ddc5a542dfa7ecc92b')
+
+build() {
+ cd ${srcdir}/expect${pkgver}
+
+ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \
+ --mandir=/usr/share/man --with-tcl=/usr/lib \
+ --with-tclinclude=/usr/include
+
+ # Keep $startdir/pkg out of library search paths.
+ sed -e 's/-rpath,${LIB_RUNTIME_DIR}:/-rpath,/' -i Makefile
+ make
+ make DESTDIR=${pkgdir} install
+
+ # license.
+ install -D -m644 README ${pkgdir}/usr/share/licenses/${pkgname}/README
+
+ (cd ${pkgdir}/usr/lib;
+ ln -s expect${pkgver}/libexpect${pkgver}.so libexpect.so)
+}
diff --git a/extra/expect/expect.install b/extra/expect/expect.install
new file mode 100644
index 000000000..2847848a1
--- /dev/null
+++ b/extra/expect/expect.install
@@ -0,0 +1,5 @@
+post_upgrade() {
+ if [ "`vercmp $2 5.45`" -lt 0 ]; then
+ echo " - expectk has been removed. Use tclsh instead"
+ fi
+}
diff --git a/extra/f-spot/PKGBUILD b/extra/f-spot/PKGBUILD
new file mode 100644
index 000000000..eae2d4777
--- /dev/null
+++ b/extra/f-spot/PKGBUILD
@@ -0,0 +1,39 @@
+# $Id: PKGBUILD 104366 2011-01-01 20:04:19Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Kritoke <kritoke@nospam.gmail.com>
+# Contributor: György Balló <ballogy@freestart.hu>
+
+pkgname=f-spot
+pkgver=0.8.2
+pkgrel=1
+pkgdesc="A personal photo management program for GNOME"
+url="http://www.gnome.org/projects/f-spot/"
+arch=(i686 x86_64)
+license=('GPL')
+depends=('mono-addins>=0.3' 'gnome-sharp>=2.8' 'ndesk-dbus-glib>=0.3.0' 'lcms>=1.12' 'gnome-keyring-sharp' 'flickrnet' 'libgphoto2' 'desktop-file-utils' 'hicolor-icon-theme' 'xdg-utils')
+makedepends=('intltool>=0.35.0' 'gnome-doc-utils>=0.17.3' 'gnome-screensaver>=2.30.0')
+options=('!libtool')
+install=$pkgname.install
+source=(http://ftp.gnome.org/pub/gnome/sources/$pkgname/${pkgver%.*}/${pkgname}-${pkgver}.tar.bz2
+ mono-2.8.patch)
+sha256sums=('24448d3431a95a9faa0aa975554414eb638f918811507177e9d69d11d417873a'
+ '4e7d2f1909870b842bbbe087f4381f325d5281d2deae0d32ba5713ee66d52b65')
+
+build() {
+ export MONO_SHARED_DIR="${srcdir}/.wabi"
+ mkdir -p "${MONO_SHARED_DIR}"
+
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i "${srcdir}/mono-2.8.patch"
+
+ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \
+ --disable-static --disable-scrollkeeper --disable-schemas-install --enable-release \
+ --with-vendor-build-id=ArchLinux
+ make
+ make DESTDIR=${pkgdir} install
+
+ install -m755 -d "${pkgdir}/usr/share/gconf/schemas"
+ gconf-merge-schema "${pkgdir}/usr/share/gconf/schemas/${pkgname}.schemas" --domain f-spot ${pkgdir}/etc/gconf/schemas/*.schemas || return 1
+ rm -f ${pkgdir}/etc/gconf/schemas/*.schemas
+}
+
diff --git a/extra/f-spot/f-spot.install b/extra/f-spot/f-spot.install
new file mode 100644
index 000000000..b000623e7
--- /dev/null
+++ b/extra/f-spot/f-spot.install
@@ -0,0 +1,24 @@
+pkgname=f-spot
+
+post_install() {
+ gconfpkg --install $pkgname
+ update-desktop-database -q
+ xdg-icon-resource forceupdate
+}
+
+pre_upgrade() {
+ pre_remove $1
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ gconfpkg --uninstall $pkgname
+}
+
+post_remove() {
+ update-desktop-database -q
+ xdg-icon-resource forceupdate
+}
diff --git a/extra/f-spot/mono-2.8.patch b/extra/f-spot/mono-2.8.patch
new file mode 100644
index 000000000..80e5636ac
--- /dev/null
+++ b/extra/f-spot/mono-2.8.patch
@@ -0,0 +1,22 @@
+From 9d6e8052b188c2b1cb310ef05842da74a730a39f Mon Sep 17 00:00:00 2001
+From: Marek Habersack <grendel@twistedcode.net>
+Date: Wed, 15 Sep 2010 21:21:52 +0000
+Subject: PixbufLoader from gtk-sharp/master does not have a Close () overload which takes a boolean parameter
+
+https://bugzilla.gnome.org/show_bug.cgi?id=629224
+---
+diff --git a/src/Clients/MainApp/FSpot.Loaders/GdkImageLoader.cs b/src/Clients/MainApp/FSpot.Loaders/GdkImageLoader.cs
+index 2eea50e..9c9c07a 100644
+--- a/src/Clients/MainApp/FSpot.Loaders/GdkImageLoader.cs
++++ b/src/Clients/MainApp/FSpot.Loaders/GdkImageLoader.cs
+@@ -132,7 +132,7 @@ namespace FSpot.Loaders {
+ public new bool Close ()
+ {
+ lock (sync_handle) {
+- return base.Close (true);
++ return base.Close ();
+ }
+ }
+ #endregion
+--
+cgit v0.8.3.1
diff --git a/extra/faad2/ChangeLog b/extra/faad2/ChangeLog
new file mode 100644
index 000000000..ed5548b7d
--- /dev/null
+++ b/extra/faad2/ChangeLog
@@ -0,0 +1,26 @@
+2009-02-16 Eric Belanger <eric@archlinux.org>
+
+ * faad2 2.7-1
+ * Upstream update
+ * Updated LICENSE file
+ * Compiled with -fPIC option
+
+2009-01-05 Eric Belanger <eric@archlinux.org>
+
+ * faad2 2.6.1-2
+ * Applied security patch
+
+2008-07-19 Eric Belanger <eric@archlinux.org>
+
+ * faad2 2.6.1-1
+ * Upstream update
+ * Patched to fix libtool build problem :
+ faad2-2.6.1-libtool22.patch
+ * Patched to make faad2 exit if output pipe breaks :
+ faad2-2.6.1-broken-pipe.patch
+ * Patched to fix include file implicit declaration :
+ faad2-2.6.1-implicitdeclar.patch
+ * Patched to bump soname (symbols have been changed) :
+ faad2-2.6.1-abi_has_changed.patch
+ * Updated license
+ * Added ChangeLog
diff --git a/extra/faad2/LICENSE b/extra/faad2/LICENSE
new file mode 100644
index 000000000..a16abf6e3
--- /dev/null
+++ b/extra/faad2/LICENSE
@@ -0,0 +1,42 @@
+__________
+COPYRIGHTS
+
+For FAAD2 the following license applies:
+
+******************************************************************************
+** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding
+** Copyright (C) 2003-2005 M. Bakker, Nero AG, http://www.nero.com
+**
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+**
+** Any non-GPL usage of this software or parts of this software is strictly
+** forbidden.
+**
+** The "appropriate copyright message" mentioned in section 2c of the GPLv2
+** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com"
+**
+** Commercial non-GPL licensing of this software is possible.
+** For more info contact Nero AG through Mpeg4AAClicense@nero.com.
+******************************************************************************
+
+
+Please note that the use of this software may require the payment of
+patent royalties. You need to consider this issue before you start
+building derivative works. We are not warranting or indemnifying you in
+any way for patent royalities! YOU ARE SOLELY RESPONSIBLE FOR YOUR OWN
+ACTIONS!
+
+
+______
diff --git a/extra/faad2/PKGBUILD b/extra/faad2/PKGBUILD
new file mode 100644
index 000000000..eb89c9ea1
--- /dev/null
+++ b/extra/faad2/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 27495 2009-02-22 04:29:09Z eric $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+# Contributor: Sarah Hay <sarah@archlinux.org>
+
+pkgname=faad2
+pkgver=2.7
+pkgrel=1
+pkgdesc="ISO AAC audio decoder"
+arch=('i686' 'x86_64')
+url="http://www.audiocoding.com/"
+license=('custom:GPL')
+depends=('glibc')
+options=('!libtool' '!makeflags')
+source=(http://downloads.sourceforge.net/sourceforge/faac/${pkgname}-${pkgver}.tar.bz2 LICENSE)
+md5sums=('4c332fa23febc0e4648064685a3d4332' 'ec95f38142e14fb46c849503897a37a0')
+sha1sums=('b0e80481d27ae9faf9e46c8c8dfb617a0adb91b5' '00edd9b30d8d5098b5e91c03c595d96a3bbe56fd')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr || return 1
+ make CFLAGS="${CFLAGS} -fPIC" || return 1
+ make DESTDIR=${pkgdir} manmdir=/usr/share/man/man1 install || return 1
+ install -m644 common/mp4ff/mp4ff_int_types.h ${pkgdir}/usr/include/mp4ff_int_types.h || return 1
+ install -D -m644 ${srcdir}/LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE || return 1
+ mv ${pkgdir}/usr/share/man/man1/faad.man ${pkgdir}/usr/share/man/man1/faad.1
+}
diff --git a/extra/facile/PKGBUILD b/extra/facile/PKGBUILD
new file mode 100644
index 000000000..217de93c7
--- /dev/null
+++ b/extra/facile/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: PKGBUILD 88117 2010-08-19 14:40:05Z tpowa $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=facile
+pkgver=1.1
+pkgrel=12
+pkgdesc="A Functional Constraint Library"
+arch=(i686 x86_64)
+url="http://www.recherche.enac.fr/opti/facile/"
+license="LGPL"
+makedepends=('ocaml')
+depends=()
+source=(http://www.recherche.enac.fr/opti/facile/distrib/$pkgname-$pkgver.tar.gz)
+md5sums=('ab673e1fc0859a42bcb639a02c2d7e9e')
+
+build() {
+ cd $startdir/src/$pkgname-$pkgver
+ ./configure
+ make || return 1
+ mkdir -p $startdir/pkg/usr/lib/ocaml/facile
+ cd src
+ install -D -m 644 facile.cmxa facile.cmi facile.cma facile.a $startdir/pkg/usr/lib/ocaml/facile
+}
diff --git a/extra/fakechroot/PKGBUILD b/extra/fakechroot/PKGBUILD
new file mode 100644
index 000000000..4c5a23f7e
--- /dev/null
+++ b/extra/fakechroot/PKGBUILD
@@ -0,0 +1,32 @@
+# $Id: PKGBUILD 109836 2011-02-13 10:43:46Z allan $
+# Maintainer : Allan McRae <allan@archlinux.org>
+# Contributor: Aaron Griffin <aaron@archlinux.org>
+
+pkgname=fakechroot
+pkgver=2.14
+pkgrel=1
+pkgdesc="Gives a fake chroot environment"
+arch=('i686' 'x86_64')
+url="https://github.com/fakechroot/fakechroot/wiki"
+license=('LGPL')
+options=('!libtool')
+install=fakechroot.install
+source=(https://github.com/downloads/fakechroot/fakechroot/fakechroot-${pkgver}.tar.gz)
+md5sums=('264c4e3f9a2264ab57e286682f9c4ad2')
+
+build()
+{
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr --libdir=/usr/lib/libfakeroot
+ make
+ make check
+}
+
+package()
+{
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+
+ install -dm755 ${pkgdir}/etc/ld.so.conf.d/
+ echo '/usr/lib/libfakeroot/fakechroot/' > ${pkgdir}/etc/ld.so.conf.d/fakechroot.conf
+}
diff --git a/extra/fakechroot/fakechroot.install b/extra/fakechroot/fakechroot.install
new file mode 100644
index 000000000..2b5eb2100
--- /dev/null
+++ b/extra/fakechroot/fakechroot.install
@@ -0,0 +1,14 @@
+post_install() {
+ sbin/ldconfig -r .
+}
+
+post_upgrade() {
+ if [ "$(vercmp $2 2.9-2)" -lt 0 ]; then
+ sed -i -e '/\/usr\/lib\/libfakechroot/d' etc/ld.so.conf
+ fi
+ sbin/ldconfig -r .
+}
+
+post_remove() {
+ sbin/ldconfig -r .
+}
diff --git a/extra/fam/PKGBUILD b/extra/fam/PKGBUILD
new file mode 100644
index 000000000..83615cc69
--- /dev/null
+++ b/extra/fam/PKGBUILD
@@ -0,0 +1,47 @@
+# $Id: PKGBUILD 42581 2009-06-16 05:20:11Z tpowa $
+# Maintainer: Allan McRae <allan@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=fam
+pkgver=2.7.0
+pkgrel=14
+pkgdesc="File Alteration Monitor"
+arch=('i686' 'x86_64')
+license=('LGPL' 'GPL')
+depends=('rpcbind' 'gcc-libs' 'bash')
+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-limits.patch
+ fam-2.7.0-buildfixes.patch
+ fam)
+md5sums=('1bf3ae6c0c58d3201afc97c6a4834e39'
+ '073d1763318344635ea316293390205c'
+ '47b41e0b0498793af004696a096d7da1'
+ '2638b8ffacb9f03b6e438e08ea7b290a'
+ 'fc0cabc0ac4f819680401eb3090c29c9'
+ '0b4dd9894ccc03f57787f9dfc0a7bd6f')
+
+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}/fam-2.7.0-limits.patch || return 1
+ patch -Np1 -i ${srcdir}/fam-2.7.0-buildfixes.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/extra/fam/fam b/extra/fam/fam
new file mode 100755
index 000000000..53dd2a4a6
--- /dev/null
+++ b/extra/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 rpcbind && /etc/rc.d/rpcbind start
+ stat_busy "Starting File Alteration Monitor"
+ if [ ! -f /var/run/daemons/rpcbind ]; then
+ stat_fail
+ echo "ERROR: rpcbind 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/extra/fam/fam-2.7.0-buildfixes.patch b/extra/fam/fam-2.7.0-buildfixes.patch
new file mode 100644
index 000000000..abc78883d
--- /dev/null
+++ b/extra/fam/fam-2.7.0-buildfixes.patch
@@ -0,0 +1,69 @@
+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 2009-06-14 21:21:41.000000000 +1000
+@@ -24,6 +24,7 @@
+ #define BTree_included
+
+ #include "Boolean.h"
++#include <cstdlib>
+
+ // This is an in-core B-Tree implementation.
+ //
+diff -Naur fam-2.7.0-old/lib/Client.c++ fam-2.7.0/lib/Client.c++
+--- fam-2.7.0-old/lib/Client.c++ 2003-01-19 00:18:12.000000000 +1000
++++ fam-2.7.0/lib/Client.c++ 2009-06-14 21:22:33.000000000 +1000
+@@ -34,7 +34,7 @@
+ #include <syslog.h>
+ #include <errno.h>
+
+-#include <iostream.h>
++#include <iostream>
+
+ #include "fam.h"
+ #include "Client.h"
+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++ 2009-06-14 21:14:34.000000000 +1000
++++ fam-2.7.0/src/DNotify.c++ 2009-06-14 21:23:23.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++ 2009-06-14 21:24:11.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 2009-06-14 21:14:34.000000000 +1000
++++ fam-2.7.0/src/Interest.h 2009-06-14 21:25:25.000000000 +1000
+@@ -29,6 +29,7 @@
+ #include <netinet/in.h> // for in_addr
+
+ #include "Boolean.h"
++#include <cstdlib>
+
+ class Event;
+ class FileSystem;
+diff -Naur fam-2.7.0-old/src/NFSFileSystem.c++ fam-2.7.0/src/NFSFileSystem.c++
+--- fam-2.7.0-old/src/NFSFileSystem.c++ 2003-01-19 00:18:12.000000000 +1000
++++ fam-2.7.0/src/NFSFileSystem.c++ 2009-06-14 21:26:16.000000000 +1000
+@@ -97,7 +97,7 @@
+
+ attr_cache_timeout = ACREGMAX;
+
+- char * p;
++ const char * p;
+
+ if (strstr(opt, "noac")) {
+ f_noac = true;
diff --git a/extra/fam/fam-2.7.0-dnotify.patch b/extra/fam/fam-2.7.0-dnotify.patch
new file mode 100644
index 000000000..1d8910efb
--- /dev/null
+++ b/extra/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/extra/fam/fam-2.7.0-largefiles.patch b/extra/fam/fam-2.7.0-largefiles.patch
new file mode 100644
index 000000000..60de9a494
--- /dev/null
+++ b/extra/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/extra/fam/fam-2.7.0-limits.patch b/extra/fam/fam-2.7.0-limits.patch
new file mode 100644
index 000000000..424895719
--- /dev/null
+++ b/extra/fam/fam-2.7.0-limits.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/extra/farsight2/PKGBUILD b/extra/farsight2/PKGBUILD
new file mode 100644
index 000000000..eaa0ae4ce
--- /dev/null
+++ b/extra/farsight2/PKGBUILD
@@ -0,0 +1,36 @@
+# $Id: PKGBUILD 98160 2010-11-03 23:14:07Z ibiru $
+# Maintainer: Ionut Biru <ibiru@archlinux.org>
+# Contributor: William Díaz <wdiaz@archlinux.us>
+
+pkgname=farsight2
+pkgver=0.0.22
+pkgrel=1
+pkgdesc="Audio/Video conference software for Instant Messengers"
+arch=('i686' 'x86_64')
+url="http://farsight.freedesktop.org"
+license=('LGPL')
+depends=('libnice>=0.0.13' 'gstreamer0.10-base-plugins>=0.10.30' 'gstreamer0.10-python>=0.10.18' 'python2' 'pygobject>=2.26.0')
+optdepends=('gstreamer0.10-good-plugins: for RTP plugin'
+ 'gstreamer0.10-bad-plugins: for RTP plugin')
+options=('!libtool' '!emptydirs')
+source=(http://farsight.freedesktop.org/releases/${pkgname}/${pkgname}-${pkgver}.tar.gz)
+md5sums=('e1f540cf3ebab06c3d7db1f46b44ac88')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ sed -i -e 's#python-config#python2-config#' python/Makefile.in
+ # this makefile is broken
+ sed -i -e 's# # #' docs/libs/Makefile.in
+ ./configure --prefix=/usr \
+ --with-package-name='Arch Linux farsight2 package' \
+ --with-package-origin='http://archlinux.org' \
+ --disable-static \
+ --disable-valgrind \
+ --disable-debug
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/fastjar/PKGBUILD b/extra/fastjar/PKGBUILD
new file mode 100644
index 000000000..42e6dfe2f
--- /dev/null
+++ b/extra/fastjar/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 97252 2010-10-28 03:59:06Z allan $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+
+pkgname=fastjar
+pkgver=0.97
+pkgrel=2
+pkgdesc="Sun java jar compatible archiver"
+arch=('i686' 'x86_64')
+url="http://savannah.nongnu.org/projects/fastjar"
+license=('GPL')
+depends=('zlib' 'texinfo')
+install=fastjar.install
+source=(http://download.savannah.nongnu.org/releases/${pkgname}/${pkgname}-${pkgver}.tar.gz)
+md5sums=('2659f09c2e43ef8b7d4406321753f1b2')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/fastjar/fastjar.install b/extra/fastjar/fastjar.install
new file mode 100644
index 000000000..b1b973c9d
--- /dev/null
+++ b/extra/fastjar/fastjar.install
@@ -0,0 +1,16 @@
+infodir=usr/share/info
+file=fastjar.info.gz
+
+post_install() {
+ install-info $infodir/$file $infodir/dir 2> /dev/null
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ install-info --delete $infodir/$file $infodir/dir 2> /dev/null
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/extra/fbida/ChangeLog b/extra/fbida/ChangeLog
new file mode 100644
index 000000000..7e67308c0
--- /dev/null
+++ b/extra/fbida/ChangeLog
@@ -0,0 +1,21 @@
+2010-03-02 Eric Belanger <eric@archlinux.org>
+
+ * fbida 2.07-5
+ * Fixed exiftran (close FS#18302)
+ * Removed backup array
+
+2010-01-17 Eric Belanger <eric@archlinux.org>
+
+ * fbida 2.07-4
+ * Rebuilt for libpng 1.4 and libjpeg 8
+
+2009-08-10 Eric Belanger <eric@archlinux.org>
+
+ * fbida 2.07-3
+ * Fixed compatibility problem with libjpeg 7 (close FS#15875)
+
+2009-07-01 Eric Belanger <eric@archlinux.org>
+
+ * fbida 2.07-2
+ * Rebuild against libjpeg 7
+ * Added ChangeLog
diff --git a/extra/fbida/PKGBUILD b/extra/fbida/PKGBUILD
new file mode 100644
index 000000000..cde1743e8
--- /dev/null
+++ b/extra/fbida/PKGBUILD
@@ -0,0 +1,42 @@
+# $Id: PKGBUILD 70970 2010-03-02 20:48:52Z eric $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+# Contributor: damir <damir@archlinux.org>
+
+pkgname=fbida
+pkgver=2.07
+pkgrel=5
+pkgdesc="Few applications to display and elementary edit images: fbi, fbgs, ida, exiftran"
+arch=('i686' 'x86_64')
+url="http://linux.bytesex.org/fbida/"
+license=('GPL2')
+depends=('giflib' 'libtiff' 'libjpeg' 'libexif' 'lesstif' 'libxpm' 'libpng' 'libx11' 'libxext' 'fontconfig')
+optdepends=('ghostscript: to use fbgs')
+replaces=('fbi')
+provides=('fbi')
+source=(http://dl.bytesex.org/releases/${pkgname}/${pkgname}-${pkgver}.tar.gz libpng-1.4.patch \
+ transupp.h transupp.c jinclude.h)
+md5sums=('3e05910fb7c1d9b2bd3e272d96db069c' '31b5a5318c16808d55403e06110ff5a5'\
+ '785d928f4ff04e06bd2c8acc6b6c5e7b' 'f2d6f905c4ce6098f6c1af77a0a4eef8'\
+ 'dbde79bc104a2caa9316cc2a9df7fd25')
+sha1sums=('4758178299e09d5251b9cf20337a81cc20553d45' 'dcb39c82e7e6f4d7d6e8d0e95c661f83a2655c7f'\
+ '5028318704fbc8f476f858d24b39cf454a16fe85' '0d9f58703d2eb4ce2d11f42a1ad01d958efe3312'\
+ '31ab682733b096b3a98c0a35f9b54a7936e480d5')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -p1 < ../libpng-1.4.patch || return 1
+
+# Using source code from libjpeg 8a
+ rm jpeg/*
+ cp ${srcdir}/transupp.h jpeg/
+ cp ${srcdir}/transupp.c jpeg/
+ cp ${srcdir}/jinclude.h jpeg/
+
+ make Make.config || return 1
+ for config in HAVE_LIB{SANE,CURL,LIRC}; do
+ sed -i "s/$config.*/$config := no/" Make.config || return 1
+ done
+ make CC=gcc || return 1
+ make DESTDIR="${pkgdir}" prefix=/usr install || return 1
+}
+
diff --git a/extra/fbida/jinclude.h b/extra/fbida/jinclude.h
new file mode 100644
index 000000000..0a4f15146
--- /dev/null
+++ b/extra/fbida/jinclude.h
@@ -0,0 +1,91 @@
+/*
+ * jinclude.h
+ *
+ * Copyright (C) 1991-1994, Thomas G. Lane.
+ * This file is part of the Independent JPEG Group's software.
+ * For conditions of distribution and use, see the accompanying README file.
+ *
+ * This file exists to provide a single place to fix any problems with
+ * including the wrong system include files. (Common problems are taken
+ * care of by the standard jconfig symbols, but on really weird systems
+ * you may have to edit this file.)
+ *
+ * NOTE: this file is NOT intended to be included by applications using the
+ * JPEG library. Most applications need only include jpeglib.h.
+ */
+
+
+/* Include auto-config file to find out which system include files we need. */
+
+#include "jconfig.h" /* auto configuration options */
+#define JCONFIG_INCLUDED /* so that jpeglib.h doesn't do it again */
+
+/*
+ * We need the NULL macro and size_t typedef.
+ * On an ANSI-conforming system it is sufficient to include <stddef.h>.
+ * Otherwise, we get them from <stdlib.h> or <stdio.h>; we may have to
+ * pull in <sys/types.h> as well.
+ * Note that the core JPEG library does not require <stdio.h>;
+ * only the default error handler and data source/destination modules do.
+ * But we must pull it in because of the references to FILE in jpeglib.h.
+ * You can remove those references if you want to compile without <stdio.h>.
+ */
+
+#ifdef HAVE_STDDEF_H
+#include <stddef.h>
+#endif
+
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+#ifdef NEED_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+
+#include <stdio.h>
+
+/*
+ * We need memory copying and zeroing functions, plus strncpy().
+ * ANSI and System V implementations declare these in <string.h>.
+ * BSD doesn't have the mem() functions, but it does have bcopy()/bzero().
+ * Some systems may declare memset and memcpy in <memory.h>.
+ *
+ * NOTE: we assume the size parameters to these functions are of type size_t.
+ * Change the casts in these macros if not!
+ */
+
+#ifdef NEED_BSD_STRINGS
+
+#include <strings.h>
+#define MEMZERO(target,size) bzero((void *)(target), (size_t)(size))
+#define MEMCOPY(dest,src,size) bcopy((const void *)(src), (void *)(dest), (size_t)(size))
+
+#else /* not BSD, assume ANSI/SysV string lib */
+
+#include <string.h>
+#define MEMZERO(target,size) memset((void *)(target), 0, (size_t)(size))
+#define MEMCOPY(dest,src,size) memcpy((void *)(dest), (const void *)(src), (size_t)(size))
+
+#endif
+
+/*
+ * In ANSI C, and indeed any rational implementation, size_t is also the
+ * type returned by sizeof(). However, it seems there are some irrational
+ * implementations out there, in which sizeof() returns an int even though
+ * size_t is defined as long or unsigned long. To ensure consistent results
+ * we always use this SIZEOF() macro in place of using sizeof() directly.
+ */
+
+#define SIZEOF(object) ((size_t) sizeof(object))
+
+/*
+ * The modules that use fread() and fwrite() always invoke them through
+ * these macros. On some systems you may need to twiddle the argument casts.
+ * CAUTION: argument order is different from underlying functions!
+ */
+
+#define JFREAD(file,buf,sizeofbuf) \
+ ((size_t) fread((void *) (buf), (size_t) 1, (size_t) (sizeofbuf), (file)))
+#define JFWRITE(file,buf,sizeofbuf) \
+ ((size_t) fwrite((const void *) (buf), (size_t) 1, (size_t) (sizeofbuf), (file)))
diff --git a/extra/fbida/libpng-1.4.patch b/extra/fbida/libpng-1.4.patch
new file mode 100644
index 000000000..f8a80d4b2
--- /dev/null
+++ b/extra/fbida/libpng-1.4.patch
@@ -0,0 +1,17 @@
+diff -Naur fbida-2.07-orig/rd/read-png.c fbida-2.07/rd/read-png.c
+--- fbida-2.07-orig/rd/read-png.c 2010-01-18 00:02:02.000000000 -0500
++++ fbida-2.07/rd/read-png.c 2010-01-18 00:06:09.000000000 -0500
+@@ -69,8 +69,11 @@
+ if (h->color_type == PNG_COLOR_TYPE_PALETTE)
+ png_set_palette_to_rgb(h->png);
+ if (h->color_type == PNG_COLOR_TYPE_GRAY && bit_depth < 8)
+- png_set_gray_1_2_4_to_8(h->png);
+-
++#if PNG_LIBPNG_VER < 10400
++ png_set_gray_1_2_4_to_8(h->png);
++#else
++ png_set_expand_gray_1_2_4_to_8(h->png);
++#endif
+ if (png_get_bKGD(h->png, h->info, &file_bg)) {
+ png_set_background(h->png,file_bg,PNG_BACKGROUND_GAMMA_FILE,1,1.0);
+ } else {
diff --git a/extra/fbida/transupp.c b/extra/fbida/transupp.c
new file mode 100644
index 000000000..406054482
--- /dev/null
+++ b/extra/fbida/transupp.c
@@ -0,0 +1,1583 @@
+/*
+ * transupp.c
+ *
+ * Copyright (C) 1997-2009, Thomas G. Lane, Guido Vollbeding.
+ * This file is part of the Independent JPEG Group's software.
+ * For conditions of distribution and use, see the accompanying README file.
+ *
+ * This file contains image transformation routines and other utility code
+ * used by the jpegtran sample application. These are NOT part of the core
+ * JPEG library. But we keep these routines separate from jpegtran.c to
+ * ease the task of maintaining jpegtran-like programs that have other user
+ * interfaces.
+ */
+
+/* Although this file really shouldn't have access to the library internals,
+ * it's helpful to let it call jround_up() and jcopy_block_row().
+ */
+#define JPEG_INTERNALS
+
+#include "jinclude.h"
+#include "jpeglib.h"
+#include "transupp.h" /* My own external interface */
+#include <ctype.h> /* to declare isdigit() */
+
+
+#if TRANSFORMS_SUPPORTED
+
+/*
+ * Lossless image transformation routines. These routines work on DCT
+ * coefficient arrays and thus do not require any lossy decompression
+ * or recompression of the image.
+ * Thanks to Guido Vollbeding for the initial design and code of this feature,
+ * and to Ben Jackson for introducing the cropping feature.
+ *
+ * Horizontal flipping is done in-place, using a single top-to-bottom
+ * pass through the virtual source array. It will thus be much the
+ * fastest option for images larger than main memory.
+ *
+ * The other routines require a set of destination virtual arrays, so they
+ * need twice as much memory as jpegtran normally does. The destination
+ * arrays are always written in normal scan order (top to bottom) because
+ * the virtual array manager expects this. The source arrays will be scanned
+ * in the corresponding order, which means multiple passes through the source
+ * arrays for most of the transforms. That could result in much thrashing
+ * if the image is larger than main memory.
+ *
+ * If cropping or trimming is involved, the destination arrays may be smaller
+ * than the source arrays. Note it is not possible to do horizontal flip
+ * in-place when a nonzero Y crop offset is specified, since we'd have to move
+ * data from one block row to another but the virtual array manager doesn't
+ * guarantee we can touch more than one row at a time. So in that case,
+ * we have to use a separate destination array.
+ *
+ * Some notes about the operating environment of the individual transform
+ * routines:
+ * 1. Both the source and destination virtual arrays are allocated from the
+ * source JPEG object, and therefore should be manipulated by calling the
+ * source's memory manager.
+ * 2. The destination's component count should be used. It may be smaller
+ * than the source's when forcing to grayscale.
+ * 3. Likewise the destination's sampling factors should be used. When
+ * forcing to grayscale the destination's sampling factors will be all 1,
+ * and we may as well take that as the effective iMCU size.
+ * 4. When "trim" is in effect, the destination's dimensions will be the
+ * trimmed values but the source's will be untrimmed.
+ * 5. When "crop" is in effect, the destination's dimensions will be the
+ * cropped values but the source's will be uncropped. Each transform
+ * routine is responsible for picking up source data starting at the
+ * correct X and Y offset for the crop region. (The X and Y offsets
+ * passed to the transform routines are measured in iMCU blocks of the
+ * destination.)
+ * 6. All the routines assume that the source and destination buffers are
+ * padded out to a full iMCU boundary. This is true, although for the
+ * source buffer it is an undocumented property of jdcoefct.c.
+ */
+
+
+LOCAL(void)
+do_crop (j_decompress_ptr srcinfo, j_compress_ptr dstinfo,
+ JDIMENSION x_crop_offset, JDIMENSION y_crop_offset,
+ jvirt_barray_ptr *src_coef_arrays,
+ jvirt_barray_ptr *dst_coef_arrays)
+/* Crop. This is only used when no rotate/flip is requested with the crop. */
+{
+ JDIMENSION dst_blk_y, x_crop_blocks, y_crop_blocks;
+ int ci, offset_y;
+ JBLOCKARRAY src_buffer, dst_buffer;
+ jpeg_component_info *compptr;
+
+ /* We simply have to copy the right amount of data (the destination's
+ * image size) starting at the given X and Y offsets in the source.
+ */
+ for (ci = 0; ci < dstinfo->num_components; ci++) {
+ compptr = dstinfo->comp_info + ci;
+ x_crop_blocks = x_crop_offset * compptr->h_samp_factor;
+ y_crop_blocks = y_crop_offset * compptr->v_samp_factor;
+ for (dst_blk_y = 0; dst_blk_y < compptr->height_in_blocks;
+ dst_blk_y += compptr->v_samp_factor) {
+ dst_buffer = (*srcinfo->mem->access_virt_barray)
+ ((j_common_ptr) srcinfo, dst_coef_arrays[ci], dst_blk_y,
+ (JDIMENSION) compptr->v_samp_factor, TRUE);
+ src_buffer = (*srcinfo->mem->access_virt_barray)
+ ((j_common_ptr) srcinfo, src_coef_arrays[ci],
+ dst_blk_y + y_crop_blocks,
+ (JDIMENSION) compptr->v_samp_factor, FALSE);
+ for (offset_y = 0; offset_y < compptr->v_samp_factor; offset_y++) {
+ jcopy_block_row(src_buffer[offset_y] + x_crop_blocks,
+ dst_buffer[offset_y],
+ compptr->width_in_blocks);
+ }
+ }
+ }
+}
+
+
+LOCAL(void)
+do_flip_h_no_crop (j_decompress_ptr srcinfo, j_compress_ptr dstinfo,
+ JDIMENSION x_crop_offset,
+ jvirt_barray_ptr *src_coef_arrays)
+/* Horizontal flip; done in-place, so no separate dest array is required.
+ * NB: this only works when y_crop_offset is zero.
+ */
+{
+ JDIMENSION MCU_cols, comp_width, blk_x, blk_y, x_crop_blocks;
+ int ci, k, offset_y;
+ JBLOCKARRAY buffer;
+ JCOEFPTR ptr1, ptr2;
+ JCOEF temp1, temp2;
+ jpeg_component_info *compptr;
+
+ /* Horizontal mirroring of DCT blocks is accomplished by swapping
+ * pairs of blocks in-place. Within a DCT block, we perform horizontal
+ * mirroring by changing the signs of odd-numbered columns.
+ * Partial iMCUs at the right edge are left untouched.
+ */
+ MCU_cols = srcinfo->output_width /
+ (dstinfo->max_h_samp_factor * dstinfo->min_DCT_h_scaled_size);
+
+ for (ci = 0; ci < dstinfo->num_components; ci++) {
+ compptr = dstinfo->comp_info + ci;
+ comp_width = MCU_cols * compptr->h_samp_factor;
+ x_crop_blocks = x_crop_offset * compptr->h_samp_factor;
+ for (blk_y = 0; blk_y < compptr->height_in_blocks;
+ blk_y += compptr->v_samp_factor) {
+ buffer = (*srcinfo->mem->access_virt_barray)
+ ((j_common_ptr) srcinfo, src_coef_arrays[ci], blk_y,
+ (JDIMENSION) compptr->v_samp_factor, TRUE);
+ for (offset_y = 0; offset_y < compptr->v_samp_factor; offset_y++) {
+ /* Do the mirroring */
+ for (blk_x = 0; blk_x * 2 < comp_width; blk_x++) {
+ ptr1 = buffer[offset_y][blk_x];
+ ptr2 = buffer[offset_y][comp_width - blk_x - 1];
+ /* this unrolled loop doesn't need to know which row it's on... */
+ for (k = 0; k < DCTSIZE2; k += 2) {
+ temp1 = *ptr1; /* swap even column */
+ temp2 = *ptr2;
+ *ptr1++ = temp2;
+ *ptr2++ = temp1;
+ temp1 = *ptr1; /* swap odd column with sign change */
+ temp2 = *ptr2;
+ *ptr1++ = -temp2;
+ *ptr2++ = -temp1;
+ }
+ }
+ if (x_crop_blocks > 0) {
+ /* Now left-justify the portion of the data to be kept.
+ * We can't use a single jcopy_block_row() call because that routine
+ * depends on memcpy(), whose behavior is unspecified for overlapping
+ * source and destination areas. Sigh.
+ */
+ for (blk_x = 0; blk_x < compptr->width_in_blocks; blk_x++) {
+ jcopy_block_row(buffer[offset_y] + blk_x + x_crop_blocks,
+ buffer[offset_y] + blk_x,
+ (JDIMENSION) 1);
+ }
+ }
+ }
+ }
+ }
+}
+
+
+LOCAL(void)
+do_flip_h (j_decompress_ptr srcinfo, j_compress_ptr dstinfo,
+ JDIMENSION x_crop_offset, JDIMENSION y_crop_offset,
+ jvirt_barray_ptr *src_coef_arrays,
+ jvirt_barray_ptr *dst_coef_arrays)
+/* Horizontal flip in general cropping case */
+{
+ JDIMENSION MCU_cols, comp_width, dst_blk_x, dst_blk_y;
+ JDIMENSION x_crop_blocks, y_crop_blocks;
+ int ci, k, offset_y;
+ JBLOCKARRAY src_buffer, dst_buffer;
+ JBLOCKROW src_row_ptr, dst_row_ptr;
+ JCOEFPTR src_ptr, dst_ptr;
+ jpeg_component_info *compptr;
+
+ /* Here we must output into a separate array because we can't touch
+ * different rows of a single virtual array simultaneously. Otherwise,
+ * this is essentially the same as the routine above.
+ */
+ MCU_cols = srcinfo->output_width /
+ (dstinfo->max_h_samp_factor * dstinfo->min_DCT_h_scaled_size);
+
+ for (ci = 0; ci < dstinfo->num_components; ci++) {
+ compptr = dstinfo->comp_info + ci;
+ comp_width = MCU_cols * compptr->h_samp_factor;
+ x_crop_blocks = x_crop_offset * compptr->h_samp_factor;
+ y_crop_blocks = y_crop_offset * compptr->v_samp_factor;
+ for (dst_blk_y = 0; dst_blk_y < compptr->height_in_blocks;
+ dst_blk_y += compptr->v_samp_factor) {
+ dst_buffer = (*srcinfo->mem->access_virt_barray)
+ ((j_common_ptr) srcinfo, dst_coef_arrays[ci], dst_blk_y,
+ (JDIMENSION) compptr->v_samp_factor, TRUE);
+ src_buffer = (*srcinfo->mem->access_virt_barray)
+ ((j_common_ptr) srcinfo, src_coef_arrays[ci],
+ dst_blk_y + y_crop_blocks,
+ (JDIMENSION) compptr->v_samp_factor, FALSE);
+ for (offset_y = 0; offset_y < compptr->v_samp_factor; offset_y++) {
+ dst_row_ptr = dst_buffer[offset_y];
+ src_row_ptr = src_buffer[offset_y];
+ for (dst_blk_x = 0; dst_blk_x < compptr->width_in_blocks; dst_blk_x++) {
+ if (x_crop_blocks + dst_blk_x < comp_width) {
+ /* Do the mirrorable blocks */
+ dst_ptr = dst_row_ptr[dst_blk_x];
+ src_ptr = src_row_ptr[comp_width - x_crop_blocks - dst_blk_x - 1];
+ /* this unrolled loop doesn't need to know which row it's on... */
+ for (k = 0; k < DCTSIZE2; k += 2) {
+ *dst_ptr++ = *src_ptr++; /* copy even column */
+ *dst_ptr++ = - *src_ptr++; /* copy odd column with sign change */
+ }
+ } else {
+ /* Copy last partial block(s) verbatim */
+ jcopy_block_row(src_row_ptr + dst_blk_x + x_crop_blocks,
+ dst_row_ptr + dst_blk_x,
+ (JDIMENSION) 1);
+ }
+ }
+ }
+ }
+ }
+}
+
+
+LOCAL(void)
+do_flip_v (j_decompress_ptr srcinfo, j_compress_ptr dstinfo,
+ JDIMENSION x_crop_offset, JDIMENSION y_crop_offset,
+ jvirt_barray_ptr *src_coef_arrays,
+ jvirt_barray_ptr *dst_coef_arrays)
+/* Vertical flip */
+{
+ JDIMENSION MCU_rows, comp_height, dst_blk_x, dst_blk_y;
+ JDIMENSION x_crop_blocks, y_crop_blocks;
+ int ci, i, j, offset_y;
+ JBLOCKARRAY src_buffer, dst_buffer;
+ JBLOCKROW src_row_ptr, dst_row_ptr;
+ JCOEFPTR src_ptr, dst_ptr;
+ jpeg_component_info *compptr;
+
+ /* We output into a separate array because we can't touch different
+ * rows of the source virtual array simultaneously. Otherwise, this
+ * is a pretty straightforward analog of horizontal flip.
+ * Within a DCT block, vertical mirroring is done by changing the signs
+ * of odd-numbered rows.
+ * Partial iMCUs at the bottom edge are copied verbatim.
+ */
+ MCU_rows = srcinfo->output_height /
+ (dstinfo->max_v_samp_factor * dstinfo->min_DCT_v_scaled_size);
+
+ for (ci = 0; ci < dstinfo->num_components; ci++) {
+ compptr = dstinfo->comp_info + ci;
+ comp_height = MCU_rows * compptr->v_samp_factor;
+ x_crop_blocks = x_crop_offset * compptr->h_samp_factor;
+ y_crop_blocks = y_crop_offset * compptr->v_samp_factor;
+ for (dst_blk_y = 0; dst_blk_y < compptr->height_in_blocks;
+ dst_blk_y += compptr->v_samp_factor) {
+ dst_buffer = (*srcinfo->mem->access_virt_barray)
+ ((j_common_ptr) srcinfo, dst_coef_arrays[ci], dst_blk_y,
+ (JDIMENSION) compptr->v_samp_factor, TRUE);
+ if (y_crop_blocks + dst_blk_y < comp_height) {
+ /* Row is within the mirrorable area. */
+ src_buffer = (*srcinfo->mem->access_virt_barray)
+ ((j_common_ptr) srcinfo, src_coef_arrays[ci],
+ comp_height - y_crop_blocks - dst_blk_y -
+ (JDIMENSION) compptr->v_samp_factor,
+ (JDIMENSION) compptr->v_samp_factor, FALSE);
+ } else {
+ /* Bottom-edge blocks will be copied verbatim. */
+ src_buffer = (*srcinfo->mem->access_virt_barray)
+ ((j_common_ptr) srcinfo, src_coef_arrays[ci],
+ dst_blk_y + y_crop_blocks,
+ (JDIMENSION) compptr->v_samp_factor, FALSE);
+ }
+ for (offset_y = 0; offset_y < compptr->v_samp_factor; offset_y++) {
+ if (y_crop_blocks + dst_blk_y < comp_height) {
+ /* Row is within the mirrorable area. */
+ dst_row_ptr = dst_buffer[offset_y];
+ src_row_ptr = src_buffer[compptr->v_samp_factor - offset_y - 1];
+ src_row_ptr += x_crop_blocks;
+ for (dst_blk_x = 0; dst_blk_x < compptr->width_in_blocks;
+ dst_blk_x++) {
+ dst_ptr = dst_row_ptr[dst_blk_x];
+ src_ptr = src_row_ptr[dst_blk_x];
+ for (i = 0; i < DCTSIZE; i += 2) {
+ /* copy even row */
+ for (j = 0; j < DCTSIZE; j++)
+ *dst_ptr++ = *src_ptr++;
+ /* copy odd row with sign change */
+ for (j = 0; j < DCTSIZE; j++)
+ *dst_ptr++ = - *src_ptr++;
+ }
+ }
+ } else {
+ /* Just copy row verbatim. */
+ jcopy_block_row(src_buffer[offset_y] + x_crop_blocks,
+ dst_buffer[offset_y],
+ compptr->width_in_blocks);
+ }
+ }
+ }
+ }
+}
+
+
+LOCAL(void)
+do_transpose (j_decompress_ptr srcinfo, j_compress_ptr dstinfo,
+ JDIMENSION x_crop_offset, JDIMENSION y_crop_offset,
+ jvirt_barray_ptr *src_coef_arrays,
+ jvirt_barray_ptr *dst_coef_arrays)
+/* Transpose source into destination */
+{
+ JDIMENSION dst_blk_x, dst_blk_y, x_crop_blocks, y_crop_blocks;
+ int ci, i, j, offset_x, offset_y;
+ JBLOCKARRAY src_buffer, dst_buffer;
+ JCOEFPTR src_ptr, dst_ptr;
+ jpeg_component_info *compptr;
+
+ /* Transposing pixels within a block just requires transposing the
+ * DCT coefficients.
+ * Partial iMCUs at the edges require no special treatment; we simply
+ * process all the available DCT blocks for every component.
+ */
+ for (ci = 0; ci < dstinfo->num_components; ci++) {
+ compptr = dstinfo->comp_info + ci;
+ x_crop_blocks = x_crop_offset * compptr->h_samp_factor;
+ y_crop_blocks = y_crop_offset * compptr->v_samp_factor;
+ for (dst_blk_y = 0; dst_blk_y < compptr->height_in_blocks;
+ dst_blk_y += compptr->v_samp_factor) {
+ dst_buffer = (*srcinfo->mem->access_virt_barray)
+ ((j_common_ptr) srcinfo, dst_coef_arrays[ci], dst_blk_y,
+ (JDIMENSION) compptr->v_samp_factor, TRUE);
+ for (offset_y = 0; offset_y < compptr->v_samp_factor; offset_y++) {
+ for (dst_blk_x = 0; dst_blk_x < compptr->width_in_blocks;
+ dst_blk_x += compptr->h_samp_factor) {
+ src_buffer = (*srcinfo->mem->access_virt_barray)
+ ((j_common_ptr) srcinfo, src_coef_arrays[ci],
+ dst_blk_x + x_crop_blocks,
+ (JDIMENSION) compptr->h_samp_factor, FALSE);
+ for (offset_x = 0; offset_x < compptr->h_samp_factor; offset_x++) {
+ dst_ptr = dst_buffer[offset_y][dst_blk_x + offset_x];
+ src_ptr = src_buffer[offset_x][dst_blk_y + offset_y + y_crop_blocks];
+ for (i = 0; i < DCTSIZE; i++)
+ for (j = 0; j < DCTSIZE; j++)
+ dst_ptr[j*DCTSIZE+i] = src_ptr[i*DCTSIZE+j];
+ }
+ }
+ }
+ }
+ }
+}
+
+
+LOCAL(void)
+do_rot_90 (j_decompress_ptr srcinfo, j_compress_ptr dstinfo,
+ JDIMENSION x_crop_offset, JDIMENSION y_crop_offset,
+ jvirt_barray_ptr *src_coef_arrays,
+ jvirt_barray_ptr *dst_coef_arrays)
+/* 90 degree rotation is equivalent to
+ * 1. Transposing the image;
+ * 2. Horizontal mirroring.
+ * These two steps are merged into a single processing routine.
+ */
+{
+ JDIMENSION MCU_cols, comp_width, dst_blk_x, dst_blk_y;
+ JDIMENSION x_crop_blocks, y_crop_blocks;
+ int ci, i, j, offset_x, offset_y;
+ JBLOCKARRAY src_buffer, dst_buffer;
+ JCOEFPTR src_ptr, dst_ptr;
+ jpeg_component_info *compptr;
+
+ /* Because of the horizontal mirror step, we can't process partial iMCUs
+ * at the (output) right edge properly. They just get transposed and
+ * not mirrored.
+ */
+ MCU_cols = srcinfo->output_height /
+ (dstinfo->max_h_samp_factor * dstinfo->min_DCT_h_scaled_size);
+
+ for (ci = 0; ci < dstinfo->num_components; ci++) {
+ compptr = dstinfo->comp_info + ci;
+ comp_width = MCU_cols * compptr->h_samp_factor;
+ x_crop_blocks = x_crop_offset * compptr->h_samp_factor;
+ y_crop_blocks = y_crop_offset * compptr->v_samp_factor;
+ for (dst_blk_y = 0; dst_blk_y < compptr->height_in_blocks;
+ dst_blk_y += compptr->v_samp_factor) {
+ dst_buffer = (*srcinfo->mem->access_virt_barray)
+ ((j_common_ptr) srcinfo, dst_coef_arrays[ci], dst_blk_y,
+ (JDIMENSION) compptr->v_samp_factor, TRUE);
+ for (offset_y = 0; offset_y < compptr->v_samp_factor; offset_y++) {
+ for (dst_blk_x = 0; dst_blk_x < compptr->width_in_blocks;
+ dst_blk_x += compptr->h_samp_factor) {
+ if (x_crop_blocks + dst_blk_x < comp_width) {
+ /* Block is within the mirrorable area. */
+ src_buffer = (*srcinfo->mem->access_virt_barray)
+ ((j_common_ptr) srcinfo, src_coef_arrays[ci],
+ comp_width - x_crop_blocks - dst_blk_x -
+ (JDIMENSION) compptr->h_samp_factor,
+ (JDIMENSION) compptr->h_samp_factor, FALSE);
+ } else {
+ /* Edge blocks are transposed but not mirrored. */
+ src_buffer = (*srcinfo->mem->access_virt_barray)
+ ((j_common_ptr) srcinfo, src_coef_arrays[ci],
+ dst_blk_x + x_crop_blocks,
+ (JDIMENSION) compptr->h_samp_factor, FALSE);
+ }
+ for (offset_x = 0; offset_x < compptr->h_samp_factor; offset_x++) {
+ dst_ptr = dst_buffer[offset_y][dst_blk_x + offset_x];
+ if (x_crop_blocks + dst_blk_x < comp_width) {
+ /* Block is within the mirrorable area. */
+ src_ptr = src_buffer[compptr->h_samp_factor - offset_x - 1]
+ [dst_blk_y + offset_y + y_crop_blocks];
+ for (i = 0; i < DCTSIZE; i++) {
+ for (j = 0; j < DCTSIZE; j++)
+ dst_ptr[j*DCTSIZE+i] = src_ptr[i*DCTSIZE+j];
+ i++;
+ for (j = 0; j < DCTSIZE; j++)
+ dst_ptr[j*DCTSIZE+i] = -src_ptr[i*DCTSIZE+j];
+ }
+ } else {
+ /* Edge blocks are transposed but not mirrored. */
+ src_ptr = src_buffer[offset_x]
+ [dst_blk_y + offset_y + y_crop_blocks];
+ for (i = 0; i < DCTSIZE; i++)
+ for (j = 0; j < DCTSIZE; j++)
+ dst_ptr[j*DCTSIZE+i] = src_ptr[i*DCTSIZE+j];
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+
+LOCAL(void)
+do_rot_270 (j_decompress_ptr srcinfo, j_compress_ptr dstinfo,
+ JDIMENSION x_crop_offset, JDIMENSION y_crop_offset,
+ jvirt_barray_ptr *src_coef_arrays,
+ jvirt_barray_ptr *dst_coef_arrays)
+/* 270 degree rotation is equivalent to
+ * 1. Horizontal mirroring;
+ * 2. Transposing the image.
+ * These two steps are merged into a single processing routine.
+ */
+{
+ JDIMENSION MCU_rows, comp_height, dst_blk_x, dst_blk_y;
+ JDIMENSION x_crop_blocks, y_crop_blocks;
+ int ci, i, j, offset_x, offset_y;
+ JBLOCKARRAY src_buffer, dst_buffer;
+ JCOEFPTR src_ptr, dst_ptr;
+ jpeg_component_info *compptr;
+
+ /* Because of the horizontal mirror step, we can't process partial iMCUs
+ * at the (output) bottom edge properly. They just get transposed and
+ * not mirrored.
+ */
+ MCU_rows = srcinfo->output_width /
+ (dstinfo->max_v_samp_factor * dstinfo->min_DCT_v_scaled_size);
+
+ for (ci = 0; ci < dstinfo->num_components; ci++) {
+ compptr = dstinfo->comp_info + ci;
+ comp_height = MCU_rows * compptr->v_samp_factor;
+ x_crop_blocks = x_crop_offset * compptr->h_samp_factor;
+ y_crop_blocks = y_crop_offset * compptr->v_samp_factor;
+ for (dst_blk_y = 0; dst_blk_y < compptr->height_in_blocks;
+ dst_blk_y += compptr->v_samp_factor) {
+ dst_buffer = (*srcinfo->mem->access_virt_barray)
+ ((j_common_ptr) srcinfo, dst_coef_arrays[ci], dst_blk_y,
+ (JDIMENSION) compptr->v_samp_factor, TRUE);
+ for (offset_y = 0; offset_y < compptr->v_samp_factor; offset_y++) {
+ for (dst_blk_x = 0; dst_blk_x < compptr->width_in_blocks;
+ dst_blk_x += compptr->h_samp_factor) {
+ src_buffer = (*srcinfo->mem->access_virt_barray)
+ ((j_common_ptr) srcinfo, src_coef_arrays[ci],
+ dst_blk_x + x_crop_blocks,
+ (JDIMENSION) compptr->h_samp_factor, FALSE);
+ for (offset_x = 0; offset_x < compptr->h_samp_factor; offset_x++) {
+ dst_ptr = dst_buffer[offset_y][dst_blk_x + offset_x];
+ if (y_crop_blocks + dst_blk_y < comp_height) {
+ /* Block is within the mirrorable area. */
+ src_ptr = src_buffer[offset_x]
+ [comp_height - y_crop_blocks - dst_blk_y - offset_y - 1];
+ for (i = 0; i < DCTSIZE; i++) {
+ for (j = 0; j < DCTSIZE; j++) {
+ dst_ptr[j*DCTSIZE+i] = src_ptr[i*DCTSIZE+j];
+ j++;
+ dst_ptr[j*DCTSIZE+i] = -src_ptr[i*DCTSIZE+j];
+ }
+ }
+ } else {
+ /* Edge blocks are transposed but not mirrored. */
+ src_ptr = src_buffer[offset_x]
+ [dst_blk_y + offset_y + y_crop_blocks];
+ for (i = 0; i < DCTSIZE; i++)
+ for (j = 0; j < DCTSIZE; j++)
+ dst_ptr[j*DCTSIZE+i] = src_ptr[i*DCTSIZE+j];
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+
+LOCAL(void)
+do_rot_180 (j_decompress_ptr srcinfo, j_compress_ptr dstinfo,
+ JDIMENSION x_crop_offset, JDIMENSION y_crop_offset,
+ jvirt_barray_ptr *src_coef_arrays,
+ jvirt_barray_ptr *dst_coef_arrays)
+/* 180 degree rotation is equivalent to
+ * 1. Vertical mirroring;
+ * 2. Horizontal mirroring.
+ * These two steps are merged into a single processing routine.
+ */
+{
+ JDIMENSION MCU_cols, MCU_rows, comp_width, comp_height, dst_blk_x, dst_blk_y;
+ JDIMENSION x_crop_blocks, y_crop_blocks;
+ int ci, i, j, offset_y;
+ JBLOCKARRAY src_buffer, dst_buffer;
+ JBLOCKROW src_row_ptr, dst_row_ptr;
+ JCOEFPTR src_ptr, dst_ptr;
+ jpeg_component_info *compptr;
+
+ MCU_cols = srcinfo->output_width /
+ (dstinfo->max_h_samp_factor * dstinfo->min_DCT_h_scaled_size);
+ MCU_rows = srcinfo->output_height /
+ (dstinfo->max_v_samp_factor * dstinfo->min_DCT_v_scaled_size);
+
+ for (ci = 0; ci < dstinfo->num_components; ci++) {
+ compptr = dstinfo->comp_info + ci;
+ comp_width = MCU_cols * compptr->h_samp_factor;
+ comp_height = MCU_rows * compptr->v_samp_factor;
+ x_crop_blocks = x_crop_offset * compptr->h_samp_factor;
+ y_crop_blocks = y_crop_offset * compptr->v_samp_factor;
+ for (dst_blk_y = 0; dst_blk_y < compptr->height_in_blocks;
+ dst_blk_y += compptr->v_samp_factor) {
+ dst_buffer = (*srcinfo->mem->access_virt_barray)
+ ((j_common_ptr) srcinfo, dst_coef_arrays[ci], dst_blk_y,
+ (JDIMENSION) compptr->v_samp_factor, TRUE);
+ if (y_crop_blocks + dst_blk_y < comp_height) {
+ /* Row is within the vertically mirrorable area. */
+ src_buffer = (*srcinfo->mem->access_virt_barray)
+ ((j_common_ptr) srcinfo, src_coef_arrays[ci],
+ comp_height - y_crop_blocks - dst_blk_y -
+ (JDIMENSION) compptr->v_samp_factor,
+ (JDIMENSION) compptr->v_samp_factor, FALSE);
+ } else {
+ /* Bottom-edge rows are only mirrored horizontally. */
+ src_buffer = (*srcinfo->mem->access_virt_barray)
+ ((j_common_ptr) srcinfo, src_coef_arrays[ci],
+ dst_blk_y + y_crop_blocks,
+ (JDIMENSION) compptr->v_samp_factor, FALSE);
+ }
+ for (offset_y = 0; offset_y < compptr->v_samp_factor; offset_y++) {
+ dst_row_ptr = dst_buffer[offset_y];
+ if (y_crop_blocks + dst_blk_y < comp_height) {
+ /* Row is within the mirrorable area. */
+ src_row_ptr = src_buffer[compptr->v_samp_factor - offset_y - 1];
+ for (dst_blk_x = 0; dst_blk_x < compptr->width_in_blocks; dst_blk_x++) {
+ dst_ptr = dst_row_ptr[dst_blk_x];
+ if (x_crop_blocks + dst_blk_x < comp_width) {
+ /* Process the blocks that can be mirrored both ways. */
+ src_ptr = src_row_ptr[comp_width - x_crop_blocks - dst_blk_x - 1];
+ for (i = 0; i < DCTSIZE; i += 2) {
+ /* For even row, negate every odd column. */
+ for (j = 0; j < DCTSIZE; j += 2) {
+ *dst_ptr++ = *src_ptr++;
+ *dst_ptr++ = - *src_ptr++;
+ }
+ /* For odd row, negate every even column. */
+ for (j = 0; j < DCTSIZE; j += 2) {
+ *dst_ptr++ = - *src_ptr++;
+ *dst_ptr++ = *src_ptr++;
+ }
+ }
+ } else {
+ /* Any remaining right-edge blocks are only mirrored vertically. */
+ src_ptr = src_row_ptr[x_crop_blocks + dst_blk_x];
+ for (i = 0; i < DCTSIZE; i += 2) {
+ for (j = 0; j < DCTSIZE; j++)
+ *dst_ptr++ = *src_ptr++;
+ for (j = 0; j < DCTSIZE; j++)
+ *dst_ptr++ = - *src_ptr++;
+ }
+ }
+ }
+ } else {
+ /* Remaining rows are just mirrored horizontally. */
+ src_row_ptr = src_buffer[offset_y];
+ for (dst_blk_x = 0; dst_blk_x < compptr->width_in_blocks; dst_blk_x++) {
+ if (x_crop_blocks + dst_blk_x < comp_width) {
+ /* Process the blocks that can be mirrored. */
+ dst_ptr = dst_row_ptr[dst_blk_x];
+ src_ptr = src_row_ptr[comp_width - x_crop_blocks - dst_blk_x - 1];
+ for (i = 0; i < DCTSIZE2; i += 2) {
+ *dst_ptr++ = *src_ptr++;
+ *dst_ptr++ = - *src_ptr++;
+ }
+ } else {
+ /* Any remaining right-edge blocks are only copied. */
+ jcopy_block_row(src_row_ptr + dst_blk_x + x_crop_blocks,
+ dst_row_ptr + dst_blk_x,
+ (JDIMENSION) 1);
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+
+LOCAL(void)
+do_transverse (j_decompress_ptr srcinfo, j_compress_ptr dstinfo,
+ JDIMENSION x_crop_offset, JDIMENSION y_crop_offset,
+ jvirt_barray_ptr *src_coef_arrays,
+ jvirt_barray_ptr *dst_coef_arrays)
+/* Transverse transpose is equivalent to
+ * 1. 180 degree rotation;
+ * 2. Transposition;
+ * or
+ * 1. Horizontal mirroring;
+ * 2. Transposition;
+ * 3. Horizontal mirroring.
+ * These steps are merged into a single processing routine.
+ */
+{
+ JDIMENSION MCU_cols, MCU_rows, comp_width, comp_height, dst_blk_x, dst_blk_y;
+ JDIMENSION x_crop_blocks, y_crop_blocks;
+ int ci, i, j, offset_x, offset_y;
+ JBLOCKARRAY src_buffer, dst_buffer;
+ JCOEFPTR src_ptr, dst_ptr;
+ jpeg_component_info *compptr;
+
+ MCU_cols = srcinfo->output_height /
+ (dstinfo->max_h_samp_factor * dstinfo->min_DCT_h_scaled_size);
+ MCU_rows = srcinfo->output_width /
+ (dstinfo->max_v_samp_factor * dstinfo->min_DCT_v_scaled_size);
+
+ for (ci = 0; ci < dstinfo->num_components; ci++) {
+ compptr = dstinfo->comp_info + ci;
+ comp_width = MCU_cols * compptr->h_samp_factor;
+ comp_height = MCU_rows * compptr->v_samp_factor;
+ x_crop_blocks = x_crop_offset * compptr->h_samp_factor;
+ y_crop_blocks = y_crop_offset * compptr->v_samp_factor;
+ for (dst_blk_y = 0; dst_blk_y < compptr->height_in_blocks;
+ dst_blk_y += compptr->v_samp_factor) {
+ dst_buffer = (*srcinfo->mem->access_virt_barray)
+ ((j_common_ptr) srcinfo, dst_coef_arrays[ci], dst_blk_y,
+ (JDIMENSION) compptr->v_samp_factor, TRUE);
+ for (offset_y = 0; offset_y < compptr->v_samp_factor; offset_y++) {
+ for (dst_blk_x = 0; dst_blk_x < compptr->width_in_blocks;
+ dst_blk_x += compptr->h_samp_factor) {
+ if (x_crop_blocks + dst_blk_x < comp_width) {
+ /* Block is within the mirrorable area. */
+ src_buffer = (*srcinfo->mem->access_virt_barray)
+ ((j_common_ptr) srcinfo, src_coef_arrays[ci],
+ comp_width - x_crop_blocks - dst_blk_x -
+ (JDIMENSION) compptr->h_samp_factor,
+ (JDIMENSION) compptr->h_samp_factor, FALSE);
+ } else {
+ src_buffer = (*srcinfo->mem->access_virt_barray)
+ ((j_common_ptr) srcinfo, src_coef_arrays[ci],
+ dst_blk_x + x_crop_blocks,
+ (JDIMENSION) compptr->h_samp_factor, FALSE);
+ }
+ for (offset_x = 0; offset_x < compptr->h_samp_factor; offset_x++) {
+ dst_ptr = dst_buffer[offset_y][dst_blk_x + offset_x];
+ if (y_crop_blocks + dst_blk_y < comp_height) {
+ if (x_crop_blocks + dst_blk_x < comp_width) {
+ /* Block is within the mirrorable area. */
+ src_ptr = src_buffer[compptr->h_samp_factor - offset_x - 1]
+ [comp_height - y_crop_blocks - dst_blk_y - offset_y - 1];
+ for (i = 0; i < DCTSIZE; i++) {
+ for (j = 0; j < DCTSIZE; j++) {
+ dst_ptr[j*DCTSIZE+i] = src_ptr[i*DCTSIZE+j];
+ j++;
+ dst_ptr[j*DCTSIZE+i] = -src_ptr[i*DCTSIZE+j];
+ }
+ i++;
+ for (j = 0; j < DCTSIZE; j++) {
+ dst_ptr[j*DCTSIZE+i] = -src_ptr[i*DCTSIZE+j];
+ j++;
+ dst_ptr[j*DCTSIZE+i] = src_ptr[i*DCTSIZE+j];
+ }
+ }
+ } else {
+ /* Right-edge blocks are mirrored in y only */
+ src_ptr = src_buffer[offset_x]
+ [comp_height - y_crop_blocks - dst_blk_y - offset_y - 1];
+ for (i = 0; i < DCTSIZE; i++) {
+ for (j = 0; j < DCTSIZE; j++) {
+ dst_ptr[j*DCTSIZE+i] = src_ptr[i*DCTSIZE+j];
+ j++;
+ dst_ptr[j*DCTSIZE+i] = -src_ptr[i*DCTSIZE+j];
+ }
+ }
+ }
+ } else {
+ if (x_crop_blocks + dst_blk_x < comp_width) {
+ /* Bottom-edge blocks are mirrored in x only */
+ src_ptr = src_buffer[compptr->h_samp_factor - offset_x - 1]
+ [dst_blk_y + offset_y + y_crop_blocks];
+ for (i = 0; i < DCTSIZE; i++) {
+ for (j = 0; j < DCTSIZE; j++)
+ dst_ptr[j*DCTSIZE+i] = src_ptr[i*DCTSIZE+j];
+ i++;
+ for (j = 0; j < DCTSIZE; j++)
+ dst_ptr[j*DCTSIZE+i] = -src_ptr[i*DCTSIZE+j];
+ }
+ } else {
+ /* At lower right corner, just transpose, no mirroring */
+ src_ptr = src_buffer[offset_x]
+ [dst_blk_y + offset_y + y_crop_blocks];
+ for (i = 0; i < DCTSIZE; i++)
+ for (j = 0; j < DCTSIZE; j++)
+ dst_ptr[j*DCTSIZE+i] = src_ptr[i*DCTSIZE+j];
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+
+/* Parse an unsigned integer: subroutine for jtransform_parse_crop_spec.
+ * Returns TRUE if valid integer found, FALSE if not.
+ * *strptr is advanced over the digit string, and *result is set to its value.
+ */
+
+LOCAL(boolean)
+jt_read_integer (const char ** strptr, JDIMENSION * result)
+{
+ const char * ptr = *strptr;
+ JDIMENSION val = 0;
+
+ for (; isdigit(*ptr); ptr++) {
+ val = val * 10 + (JDIMENSION) (*ptr - '0');
+ }
+ *result = val;
+ if (ptr == *strptr)
+ return FALSE; /* oops, no digits */
+ *strptr = ptr;
+ return TRUE;
+}
+
+
+/* Parse a crop specification (written in X11 geometry style).
+ * The routine returns TRUE if the spec string is valid, FALSE if not.
+ *
+ * The crop spec string should have the format
+ * <width>x<height>{+-}<xoffset>{+-}<yoffset>
+ * where width, height, xoffset, and yoffset are unsigned integers.
+ * Each of the elements can be omitted to indicate a default value.
+ * (A weakness of this style is that it is not possible to omit xoffset
+ * while specifying yoffset, since they look alike.)
+ *
+ * This code is loosely based on XParseGeometry from the X11 distribution.
+ */
+
+GLOBAL(boolean)
+jtransform_parse_crop_spec (jpeg_transform_info *info, const char *spec)
+{
+ info->crop = FALSE;
+ info->crop_width_set = JCROP_UNSET;
+ info->crop_height_set = JCROP_UNSET;
+ info->crop_xoffset_set = JCROP_UNSET;
+ info->crop_yoffset_set = JCROP_UNSET;
+
+ if (isdigit(*spec)) {
+ /* fetch width */
+ if (! jt_read_integer(&spec, &info->crop_width))
+ return FALSE;
+ info->crop_width_set = JCROP_POS;
+ }
+ if (*spec == 'x' || *spec == 'X') {
+ /* fetch height */
+ spec++;
+ if (! jt_read_integer(&spec, &info->crop_height))
+ return FALSE;
+ info->crop_height_set = JCROP_POS;
+ }
+ if (*spec == '+' || *spec == '-') {
+ /* fetch xoffset */
+ info->crop_xoffset_set = (*spec == '-') ? JCROP_NEG : JCROP_POS;
+ spec++;
+ if (! jt_read_integer(&spec, &info->crop_xoffset))
+ return FALSE;
+ }
+ if (*spec == '+' || *spec == '-') {
+ /* fetch yoffset */
+ info->crop_yoffset_set = (*spec == '-') ? JCROP_NEG : JCROP_POS;
+ spec++;
+ if (! jt_read_integer(&spec, &info->crop_yoffset))
+ return FALSE;
+ }
+ /* We had better have gotten to the end of the string. */
+ if (*spec != '\0')
+ return FALSE;
+ info->crop = TRUE;
+ return TRUE;
+}
+
+
+/* Trim off any partial iMCUs on the indicated destination edge */
+
+LOCAL(void)
+trim_right_edge (jpeg_transform_info *info, JDIMENSION full_width)
+{
+ JDIMENSION MCU_cols;
+
+ MCU_cols = info->output_width / info->iMCU_sample_width;
+ if (MCU_cols > 0 && info->x_crop_offset + MCU_cols ==
+ full_width / info->iMCU_sample_width)
+ info->output_width = MCU_cols * info->iMCU_sample_width;
+}
+
+LOCAL(void)
+trim_bottom_edge (jpeg_transform_info *info, JDIMENSION full_height)
+{
+ JDIMENSION MCU_rows;
+
+ MCU_rows = info->output_height / info->iMCU_sample_height;
+ if (MCU_rows > 0 && info->y_crop_offset + MCU_rows ==
+ full_height / info->iMCU_sample_height)
+ info->output_height = MCU_rows * info->iMCU_sample_height;
+}
+
+
+/* Request any required workspace.
+ *
+ * This routine figures out the size that the output image will be
+ * (which implies that all the transform parameters must be set before
+ * it is called).
+ *
+ * We allocate the workspace virtual arrays from the source decompression
+ * object, so that all the arrays (both the original data and the workspace)
+ * will be taken into account while making memory management decisions.
+ * Hence, this routine must be called after jpeg_read_header (which reads
+ * the image dimensions) and before jpeg_read_coefficients (which realizes
+ * the source's virtual arrays).
+ *
+ * This function returns FALSE right away if -perfect is given
+ * and transformation is not perfect. Otherwise returns TRUE.
+ */
+
+GLOBAL(boolean)
+jtransform_request_workspace (j_decompress_ptr srcinfo,
+ jpeg_transform_info *info)
+{
+ jvirt_barray_ptr *coef_arrays;
+ boolean need_workspace, transpose_it;
+ jpeg_component_info *compptr;
+ JDIMENSION xoffset, yoffset;
+ JDIMENSION width_in_iMCUs, height_in_iMCUs;
+ JDIMENSION width_in_blocks, height_in_blocks;
+ int ci, h_samp_factor, v_samp_factor;
+
+ /* Determine number of components in output image */
+ if (info->force_grayscale &&
+ srcinfo->jpeg_color_space == JCS_YCbCr &&
+ srcinfo->num_components == 3)
+ /* We'll only process the first component */
+ info->num_components = 1;
+ else
+ /* Process all the components */
+ info->num_components = srcinfo->num_components;
+
+ /* Compute output image dimensions and related values. */
+ jpeg_core_output_dimensions(srcinfo);
+
+ /* Return right away if -perfect is given and transformation is not perfect.
+ */
+ if (info->perfect) {
+ if (info->num_components == 1) {
+ if (!jtransform_perfect_transform(srcinfo->output_width,
+ srcinfo->output_height,
+ srcinfo->min_DCT_h_scaled_size,
+ srcinfo->min_DCT_v_scaled_size,
+ info->transform))
+ return FALSE;
+ } else {
+ if (!jtransform_perfect_transform(srcinfo->output_width,
+ srcinfo->output_height,
+ srcinfo->max_h_samp_factor * srcinfo->min_DCT_h_scaled_size,
+ srcinfo->max_v_samp_factor * srcinfo->min_DCT_v_scaled_size,
+ info->transform))
+ return FALSE;
+ }
+ }
+
+ /* If there is only one output component, force the iMCU size to be 1;
+ * else use the source iMCU size. (This allows us to do the right thing
+ * when reducing color to grayscale, and also provides a handy way of
+ * cleaning up "funny" grayscale images whose sampling factors are not 1x1.)
+ */
+ switch (info->transform) {
+ case JXFORM_TRANSPOSE:
+ case JXFORM_TRANSVERSE:
+ case JXFORM_ROT_90:
+ case JXFORM_ROT_270:
+ info->output_width = srcinfo->output_height;
+ info->output_height = srcinfo->output_width;
+ if (info->num_components == 1) {
+ info->iMCU_sample_width = srcinfo->min_DCT_v_scaled_size;
+ info->iMCU_sample_height = srcinfo->min_DCT_h_scaled_size;
+ } else {
+ info->iMCU_sample_width =
+ srcinfo->max_v_samp_factor * srcinfo->min_DCT_v_scaled_size;
+ info->iMCU_sample_height =
+ srcinfo->max_h_samp_factor * srcinfo->min_DCT_h_scaled_size;
+ }
+ break;
+ default:
+ info->output_width = srcinfo->output_width;
+ info->output_height = srcinfo->output_height;
+ if (info->num_components == 1) {
+ info->iMCU_sample_width = srcinfo->min_DCT_h_scaled_size;
+ info->iMCU_sample_height = srcinfo->min_DCT_v_scaled_size;
+ } else {
+ info->iMCU_sample_width =
+ srcinfo->max_h_samp_factor * srcinfo->min_DCT_h_scaled_size;
+ info->iMCU_sample_height =
+ srcinfo->max_v_samp_factor * srcinfo->min_DCT_v_scaled_size;
+ }
+ break;
+ }
+
+ /* If cropping has been requested, compute the crop area's position and
+ * dimensions, ensuring that its upper left corner falls at an iMCU boundary.
+ */
+ if (info->crop) {
+ /* Insert default values for unset crop parameters */
+ if (info->crop_xoffset_set == JCROP_UNSET)
+ info->crop_xoffset = 0; /* default to +0 */
+ if (info->crop_yoffset_set == JCROP_UNSET)
+ info->crop_yoffset = 0; /* default to +0 */
+ if (info->crop_xoffset >= info->output_width ||
+ info->crop_yoffset >= info->output_height)
+ ERREXIT(srcinfo, JERR_BAD_CROP_SPEC);
+ if (info->crop_width_set == JCROP_UNSET)
+ info->crop_width = info->output_width - info->crop_xoffset;
+ if (info->crop_height_set == JCROP_UNSET)
+ info->crop_height = info->output_height - info->crop_yoffset;
+ /* Ensure parameters are valid */
+ if (info->crop_width <= 0 || info->crop_width > info->output_width ||
+ info->crop_height <= 0 || info->crop_height > info->output_height ||
+ info->crop_xoffset > info->output_width - info->crop_width ||
+ info->crop_yoffset > info->output_height - info->crop_height)
+ ERREXIT(srcinfo, JERR_BAD_CROP_SPEC);
+ /* Convert negative crop offsets into regular offsets */
+ if (info->crop_xoffset_set == JCROP_NEG)
+ xoffset = info->output_width - info->crop_width - info->crop_xoffset;
+ else
+ xoffset = info->crop_xoffset;
+ if (info->crop_yoffset_set == JCROP_NEG)
+ yoffset = info->output_height - info->crop_height - info->crop_yoffset;
+ else
+ yoffset = info->crop_yoffset;
+ /* Now adjust so that upper left corner falls at an iMCU boundary */
+ info->output_width =
+ info->crop_width + (xoffset % info->iMCU_sample_width);
+ info->output_height =
+ info->crop_height + (yoffset % info->iMCU_sample_height);
+ /* Save x/y offsets measured in iMCUs */
+ info->x_crop_offset = xoffset / info->iMCU_sample_width;
+ info->y_crop_offset = yoffset / info->iMCU_sample_height;
+ } else {
+ info->x_crop_offset = 0;
+ info->y_crop_offset = 0;
+ }
+
+ /* Figure out whether we need workspace arrays,
+ * and if so whether they are transposed relative to the source.
+ */
+ need_workspace = FALSE;
+ transpose_it = FALSE;
+ switch (info->transform) {
+ case JXFORM_NONE:
+ if (info->x_crop_offset != 0 || info->y_crop_offset != 0)
+ need_workspace = TRUE;
+ /* No workspace needed if neither cropping nor transforming */
+ break;
+ case JXFORM_FLIP_H:
+ if (info->trim)
+ trim_right_edge(info, srcinfo->output_width);
+ if (info->y_crop_offset != 0)
+ need_workspace = TRUE;
+ /* do_flip_h_no_crop doesn't need a workspace array */
+ break;
+ case JXFORM_FLIP_V:
+ if (info->trim)
+ trim_bottom_edge(info, srcinfo->output_height);
+ /* Need workspace arrays having same dimensions as source image. */
+ need_workspace = TRUE;
+ break;
+ case JXFORM_TRANSPOSE:
+ /* transpose does NOT have to trim anything */
+ /* Need workspace arrays having transposed dimensions. */
+ need_workspace = TRUE;
+ transpose_it = TRUE;
+ break;
+ case JXFORM_TRANSVERSE:
+ if (info->trim) {
+ trim_right_edge(info, srcinfo->output_height);
+ trim_bottom_edge(info, srcinfo->output_width);
+ }
+ /* Need workspace arrays having transposed dimensions. */
+ need_workspace = TRUE;
+ transpose_it = TRUE;
+ break;
+ case JXFORM_ROT_90:
+ if (info->trim)
+ trim_right_edge(info, srcinfo->output_height);
+ /* Need workspace arrays having transposed dimensions. */
+ need_workspace = TRUE;
+ transpose_it = TRUE;
+ break;
+ case JXFORM_ROT_180:
+ if (info->trim) {
+ trim_right_edge(info, srcinfo->output_width);
+ trim_bottom_edge(info, srcinfo->output_height);
+ }
+ /* Need workspace arrays having same dimensions as source image. */
+ need_workspace = TRUE;
+ break;
+ case JXFORM_ROT_270:
+ if (info->trim)
+ trim_bottom_edge(info, srcinfo->output_width);
+ /* Need workspace arrays having transposed dimensions. */
+ need_workspace = TRUE;
+ transpose_it = TRUE;
+ break;
+ }
+
+ /* Allocate workspace if needed.
+ * Note that we allocate arrays padded out to the next iMCU boundary,
+ * so that transform routines need not worry about missing edge blocks.
+ */
+ if (need_workspace) {
+ coef_arrays = (jvirt_barray_ptr *)
+ (*srcinfo->mem->alloc_small) ((j_common_ptr) srcinfo, JPOOL_IMAGE,
+ SIZEOF(jvirt_barray_ptr) * info->num_components);
+ width_in_iMCUs = (JDIMENSION)
+ jdiv_round_up((long) info->output_width,
+ (long) info->iMCU_sample_width);
+ height_in_iMCUs = (JDIMENSION)
+ jdiv_round_up((long) info->output_height,
+ (long) info->iMCU_sample_height);
+ for (ci = 0; ci < info->num_components; ci++) {
+ compptr = srcinfo->comp_info + ci;
+ if (info->num_components == 1) {
+ /* we're going to force samp factors to 1x1 in this case */
+ h_samp_factor = v_samp_factor = 1;
+ } else if (transpose_it) {
+ h_samp_factor = compptr->v_samp_factor;
+ v_samp_factor = compptr->h_samp_factor;
+ } else {
+ h_samp_factor = compptr->h_samp_factor;
+ v_samp_factor = compptr->v_samp_factor;
+ }
+ width_in_blocks = width_in_iMCUs * h_samp_factor;
+ height_in_blocks = height_in_iMCUs * v_samp_factor;
+ coef_arrays[ci] = (*srcinfo->mem->request_virt_barray)
+ ((j_common_ptr) srcinfo, JPOOL_IMAGE, FALSE,
+ width_in_blocks, height_in_blocks, (JDIMENSION) v_samp_factor);
+ }
+ info->workspace_coef_arrays = coef_arrays;
+ } else
+ info->workspace_coef_arrays = NULL;
+
+ return TRUE;
+}
+
+
+/* Transpose destination image parameters */
+
+LOCAL(void)
+transpose_critical_parameters (j_compress_ptr dstinfo)
+{
+ int tblno, i, j, ci, itemp;
+ jpeg_component_info *compptr;
+ JQUANT_TBL *qtblptr;
+ JDIMENSION jtemp;
+ UINT16 qtemp;
+
+ /* Transpose image dimensions */
+ jtemp = dstinfo->image_width;
+ dstinfo->image_width = dstinfo->image_height;
+ dstinfo->image_height = jtemp;
+ itemp = dstinfo->min_DCT_h_scaled_size;
+ dstinfo->min_DCT_h_scaled_size = dstinfo->min_DCT_v_scaled_size;
+ dstinfo->min_DCT_v_scaled_size = itemp;
+
+ /* Transpose sampling factors */
+ for (ci = 0; ci < dstinfo->num_components; ci++) {
+ compptr = dstinfo->comp_info + ci;
+ itemp = compptr->h_samp_factor;
+ compptr->h_samp_factor = compptr->v_samp_factor;
+ compptr->v_samp_factor = itemp;
+ }
+
+ /* Transpose quantization tables */
+ for (tblno = 0; tblno < NUM_QUANT_TBLS; tblno++) {
+ qtblptr = dstinfo->quant_tbl_ptrs[tblno];
+ if (qtblptr != NULL) {
+ for (i = 0; i < DCTSIZE; i++) {
+ for (j = 0; j < i; j++) {
+ qtemp = qtblptr->quantval[i*DCTSIZE+j];
+ qtblptr->quantval[i*DCTSIZE+j] = qtblptr->quantval[j*DCTSIZE+i];
+ qtblptr->quantval[j*DCTSIZE+i] = qtemp;
+ }
+ }
+ }
+ }
+}
+
+
+/* Adjust Exif image parameters.
+ *
+ * We try to adjust the Tags ExifImageWidth and ExifImageHeight if possible.
+ */
+
+LOCAL(void)
+adjust_exif_parameters (JOCTET FAR * data, unsigned int length,
+ JDIMENSION new_width, JDIMENSION new_height)
+{
+ boolean is_motorola; /* Flag for byte order */
+ unsigned int number_of_tags, tagnum;
+ unsigned int firstoffset, offset;
+ JDIMENSION new_value;
+
+ if (length < 12) return; /* Length of an IFD entry */
+
+ /* Discover byte order */
+ if (GETJOCTET(data[0]) == 0x49 && GETJOCTET(data[1]) == 0x49)
+ is_motorola = FALSE;
+ else if (GETJOCTET(data[0]) == 0x4D && GETJOCTET(data[1]) == 0x4D)
+ is_motorola = TRUE;
+ else
+ return;
+
+ /* Check Tag Mark */
+ if (is_motorola) {
+ if (GETJOCTET(data[2]) != 0) return;
+ if (GETJOCTET(data[3]) != 0x2A) return;
+ } else {
+ if (GETJOCTET(data[3]) != 0) return;
+ if (GETJOCTET(data[2]) != 0x2A) return;
+ }
+
+ /* Get first IFD offset (offset to IFD0) */
+ if (is_motorola) {
+ if (GETJOCTET(data[4]) != 0) return;
+ if (GETJOCTET(data[5]) != 0) return;
+ firstoffset = GETJOCTET(data[6]);
+ firstoffset <<= 8;
+ firstoffset += GETJOCTET(data[7]);
+ } else {
+ if (GETJOCTET(data[7]) != 0) return;
+ if (GETJOCTET(data[6]) != 0) return;
+ firstoffset = GETJOCTET(data[5]);
+ firstoffset <<= 8;
+ firstoffset += GETJOCTET(data[4]);
+ }
+ if (firstoffset > length - 2) return; /* check end of data segment */
+
+ /* Get the number of directory entries contained in this IFD */
+ if (is_motorola) {
+ number_of_tags = GETJOCTET(data[firstoffset]);
+ number_of_tags <<= 8;
+ number_of_tags += GETJOCTET(data[firstoffset+1]);
+ } else {
+ number_of_tags = GETJOCTET(data[firstoffset+1]);
+ number_of_tags <<= 8;
+ number_of_tags += GETJOCTET(data[firstoffset]);
+ }
+ if (number_of_tags == 0) return;
+ firstoffset += 2;
+
+ /* Search for ExifSubIFD offset Tag in IFD0 */
+ for (;;) {
+ if (firstoffset > length - 12) return; /* check end of data segment */
+ /* Get Tag number */
+ if (is_motorola) {
+ tagnum = GETJOCTET(data[firstoffset]);
+ tagnum <<= 8;
+ tagnum += GETJOCTET(data[firstoffset+1]);
+ } else {
+ tagnum = GETJOCTET(data[firstoffset+1]);
+ tagnum <<= 8;
+ tagnum += GETJOCTET(data[firstoffset]);
+ }
+ if (tagnum == 0x8769) break; /* found ExifSubIFD offset Tag */
+ if (--number_of_tags == 0) return;
+ firstoffset += 12;
+ }
+
+ /* Get the ExifSubIFD offset */
+ if (is_motorola) {
+ if (GETJOCTET(data[firstoffset+8]) != 0) return;
+ if (GETJOCTET(data[firstoffset+9]) != 0) return;
+ offset = GETJOCTET(data[firstoffset+10]);
+ offset <<= 8;
+ offset += GETJOCTET(data[firstoffset+11]);
+ } else {
+ if (GETJOCTET(data[firstoffset+11]) != 0) return;
+ if (GETJOCTET(data[firstoffset+10]) != 0) return;
+ offset = GETJOCTET(data[firstoffset+9]);
+ offset <<= 8;
+ offset += GETJOCTET(data[firstoffset+8]);
+ }
+ if (offset > length - 2) return; /* check end of data segment */
+
+ /* Get the number of directory entries contained in this SubIFD */
+ if (is_motorola) {
+ number_of_tags = GETJOCTET(data[offset]);
+ number_of_tags <<= 8;
+ number_of_tags += GETJOCTET(data[offset+1]);
+ } else {
+ number_of_tags = GETJOCTET(data[offset+1]);
+ number_of_tags <<= 8;
+ number_of_tags += GETJOCTET(data[offset]);
+ }
+ if (number_of_tags < 2) return;
+ offset += 2;
+
+ /* Search for ExifImageWidth and ExifImageHeight Tags in this SubIFD */
+ do {
+ if (offset > length - 12) return; /* check end of data segment */
+ /* Get Tag number */
+ if (is_motorola) {
+ tagnum = GETJOCTET(data[offset]);
+ tagnum <<= 8;
+ tagnum += GETJOCTET(data[offset+1]);
+ } else {
+ tagnum = GETJOCTET(data[offset+1]);
+ tagnum <<= 8;
+ tagnum += GETJOCTET(data[offset]);
+ }
+ if (tagnum == 0xA002 || tagnum == 0xA003) {
+ if (tagnum == 0xA002)
+ new_value = new_width; /* ExifImageWidth Tag */
+ else
+ new_value = new_height; /* ExifImageHeight Tag */
+ if (is_motorola) {
+ data[offset+2] = 0; /* Format = unsigned long (4 octets) */
+ data[offset+3] = 4;
+ data[offset+4] = 0; /* Number Of Components = 1 */
+ data[offset+5] = 0;
+ data[offset+6] = 0;
+ data[offset+7] = 1;
+ data[offset+8] = 0;
+ data[offset+9] = 0;
+ data[offset+10] = (JOCTET)((new_value >> 8) & 0xFF);
+ data[offset+11] = (JOCTET)(new_value & 0xFF);
+ } else {
+ data[offset+2] = 4; /* Format = unsigned long (4 octets) */
+ data[offset+3] = 0;
+ data[offset+4] = 1; /* Number Of Components = 1 */
+ data[offset+5] = 0;
+ data[offset+6] = 0;
+ data[offset+7] = 0;
+ data[offset+8] = (JOCTET)(new_value & 0xFF);
+ data[offset+9] = (JOCTET)((new_value >> 8) & 0xFF);
+ data[offset+10] = 0;
+ data[offset+11] = 0;
+ }
+ }
+ offset += 12;
+ } while (--number_of_tags);
+}
+
+
+/* Adjust output image parameters as needed.
+ *
+ * This must be called after jpeg_copy_critical_parameters()
+ * and before jpeg_write_coefficients().
+ *
+ * The return value is the set of virtual coefficient arrays to be written
+ * (either the ones allocated by jtransform_request_workspace, or the
+ * original source data arrays). The caller will need to pass this value
+ * to jpeg_write_coefficients().
+ */
+
+GLOBAL(jvirt_barray_ptr *)
+jtransform_adjust_parameters (j_decompress_ptr srcinfo,
+ j_compress_ptr dstinfo,
+ jvirt_barray_ptr *src_coef_arrays,
+ jpeg_transform_info *info)
+{
+ /* If force-to-grayscale is requested, adjust destination parameters */
+ if (info->force_grayscale) {
+ /* First, ensure we have YCbCr or grayscale data, and that the source's
+ * Y channel is full resolution. (No reasonable person would make Y
+ * be less than full resolution, so actually coping with that case
+ * isn't worth extra code space. But we check it to avoid crashing.)
+ */
+ if (((dstinfo->jpeg_color_space == JCS_YCbCr &&
+ dstinfo->num_components == 3) ||
+ (dstinfo->jpeg_color_space == JCS_GRAYSCALE &&
+ dstinfo->num_components == 1)) &&
+ srcinfo->comp_info[0].h_samp_factor == srcinfo->max_h_samp_factor &&
+ srcinfo->comp_info[0].v_samp_factor == srcinfo->max_v_samp_factor) {
+ /* We use jpeg_set_colorspace to make sure subsidiary settings get fixed
+ * properly. Among other things, it sets the target h_samp_factor &
+ * v_samp_factor to 1, which typically won't match the source.
+ * We have to preserve the source's quantization table number, however.
+ */
+ int sv_quant_tbl_no = dstinfo->comp_info[0].quant_tbl_no;
+ jpeg_set_colorspace(dstinfo, JCS_GRAYSCALE);
+ dstinfo->comp_info[0].quant_tbl_no = sv_quant_tbl_no;
+ } else {
+ /* Sorry, can't do it */
+ ERREXIT(dstinfo, JERR_CONVERSION_NOTIMPL);
+ }
+ } else if (info->num_components == 1) {
+ /* For a single-component source, we force the destination sampling factors
+ * to 1x1, with or without force_grayscale. This is useful because some
+ * decoders choke on grayscale images with other sampling factors.
+ */
+ dstinfo->comp_info[0].h_samp_factor = 1;
+ dstinfo->comp_info[0].v_samp_factor = 1;
+ }
+
+ /* Correct the destination's image dimensions as necessary
+ * for rotate/flip, resize, and crop operations.
+ */
+ dstinfo->jpeg_width = info->output_width;
+ dstinfo->jpeg_height = info->output_height;
+
+ /* Transpose destination image parameters */
+ switch (info->transform) {
+ case JXFORM_TRANSPOSE:
+ case JXFORM_TRANSVERSE:
+ case JXFORM_ROT_90:
+ case JXFORM_ROT_270:
+ transpose_critical_parameters(dstinfo);
+ break;
+ default:
+ break;
+ }
+
+ /* Adjust Exif properties */
+ if (srcinfo->marker_list != NULL &&
+ srcinfo->marker_list->marker == JPEG_APP0+1 &&
+ srcinfo->marker_list->data_length >= 6 &&
+ GETJOCTET(srcinfo->marker_list->data[0]) == 0x45 &&
+ GETJOCTET(srcinfo->marker_list->data[1]) == 0x78 &&
+ GETJOCTET(srcinfo->marker_list->data[2]) == 0x69 &&
+ GETJOCTET(srcinfo->marker_list->data[3]) == 0x66 &&
+ GETJOCTET(srcinfo->marker_list->data[4]) == 0 &&
+ GETJOCTET(srcinfo->marker_list->data[5]) == 0) {
+ /* Suppress output of JFIF marker */
+ dstinfo->write_JFIF_header = FALSE;
+ /* Adjust Exif image parameters */
+ if (dstinfo->jpeg_width != srcinfo->image_width ||
+ dstinfo->jpeg_height != srcinfo->image_height)
+ /* Align data segment to start of TIFF structure for parsing */
+ adjust_exif_parameters(srcinfo->marker_list->data + 6,
+ srcinfo->marker_list->data_length - 6,
+ dstinfo->jpeg_width, dstinfo->jpeg_height);
+ }
+
+ /* Return the appropriate output data set */
+ if (info->workspace_coef_arrays != NULL)
+ return info->workspace_coef_arrays;
+ return src_coef_arrays;
+}
+
+
+/* Execute the actual transformation, if any.
+ *
+ * This must be called *after* jpeg_write_coefficients, because it depends
+ * on jpeg_write_coefficients to have computed subsidiary values such as
+ * the per-component width and height fields in the destination object.
+ *
+ * Note that some transformations will modify the source data arrays!
+ */
+
+GLOBAL(void)
+jtransform_execute_transform (j_decompress_ptr srcinfo,
+ j_compress_ptr dstinfo,
+ jvirt_barray_ptr *src_coef_arrays,
+ jpeg_transform_info *info)
+{
+ jvirt_barray_ptr *dst_coef_arrays = info->workspace_coef_arrays;
+
+ /* Note: conditions tested here should match those in switch statement
+ * in jtransform_request_workspace()
+ */
+ switch (info->transform) {
+ case JXFORM_NONE:
+ if (info->x_crop_offset != 0 || info->y_crop_offset != 0)
+ do_crop(srcinfo, dstinfo, info->x_crop_offset, info->y_crop_offset,
+ src_coef_arrays, dst_coef_arrays);
+ break;
+ case JXFORM_FLIP_H:
+ if (info->y_crop_offset != 0)
+ do_flip_h(srcinfo, dstinfo, info->x_crop_offset, info->y_crop_offset,
+ src_coef_arrays, dst_coef_arrays);
+ else
+ do_flip_h_no_crop(srcinfo, dstinfo, info->x_crop_offset,
+ src_coef_arrays);
+ break;
+ case JXFORM_FLIP_V:
+ do_flip_v(srcinfo, dstinfo, info->x_crop_offset, info->y_crop_offset,
+ src_coef_arrays, dst_coef_arrays);
+ break;
+ case JXFORM_TRANSPOSE:
+ do_transpose(srcinfo, dstinfo, info->x_crop_offset, info->y_crop_offset,
+ src_coef_arrays, dst_coef_arrays);
+ break;
+ case JXFORM_TRANSVERSE:
+ do_transverse(srcinfo, dstinfo, info->x_crop_offset, info->y_crop_offset,
+ src_coef_arrays, dst_coef_arrays);
+ break;
+ case JXFORM_ROT_90:
+ do_rot_90(srcinfo, dstinfo, info->x_crop_offset, info->y_crop_offset,
+ src_coef_arrays, dst_coef_arrays);
+ break;
+ case JXFORM_ROT_180:
+ do_rot_180(srcinfo, dstinfo, info->x_crop_offset, info->y_crop_offset,
+ src_coef_arrays, dst_coef_arrays);
+ break;
+ case JXFORM_ROT_270:
+ do_rot_270(srcinfo, dstinfo, info->x_crop_offset, info->y_crop_offset,
+ src_coef_arrays, dst_coef_arrays);
+ break;
+ }
+}
+
+/* jtransform_perfect_transform
+ *
+ * Determine whether lossless transformation is perfectly
+ * possible for a specified image and transformation.
+ *
+ * Inputs:
+ * image_width, image_height: source image dimensions.
+ * MCU_width, MCU_height: pixel dimensions of MCU.
+ * transform: transformation identifier.
+ * Parameter sources from initialized jpeg_struct
+ * (after reading source header):
+ * image_width = cinfo.image_width
+ * image_height = cinfo.image_height
+ * MCU_width = cinfo.max_h_samp_factor * cinfo.block_size
+ * MCU_height = cinfo.max_v_samp_factor * cinfo.block_size
+ * Result:
+ * TRUE = perfect transformation possible
+ * FALSE = perfect transformation not possible
+ * (may use custom action then)
+ */
+
+GLOBAL(boolean)
+jtransform_perfect_transform(JDIMENSION image_width, JDIMENSION image_height,
+ int MCU_width, int MCU_height,
+ JXFORM_CODE transform)
+{
+ boolean result = TRUE; /* initialize TRUE */
+
+ switch (transform) {
+ case JXFORM_FLIP_H:
+ case JXFORM_ROT_270:
+ if (image_width % (JDIMENSION) MCU_width)
+ result = FALSE;
+ break;
+ case JXFORM_FLIP_V:
+ case JXFORM_ROT_90:
+ if (image_height % (JDIMENSION) MCU_height)
+ result = FALSE;
+ break;
+ case JXFORM_TRANSVERSE:
+ case JXFORM_ROT_180:
+ if (image_width % (JDIMENSION) MCU_width)
+ result = FALSE;
+ if (image_height % (JDIMENSION) MCU_height)
+ result = FALSE;
+ break;
+ default:
+ break;
+ }
+
+ return result;
+}
+
+#endif /* TRANSFORMS_SUPPORTED */
+
+
+/* Setup decompression object to save desired markers in memory.
+ * This must be called before jpeg_read_header() to have the desired effect.
+ */
+
+GLOBAL(void)
+jcopy_markers_setup (j_decompress_ptr srcinfo, JCOPY_OPTION option)
+{
+#ifdef SAVE_MARKERS_SUPPORTED
+ int m;
+
+ /* Save comments except under NONE option */
+ if (option != JCOPYOPT_NONE) {
+ jpeg_save_markers(srcinfo, JPEG_COM, 0xFFFF);
+ }
+ /* Save all types of APPn markers iff ALL option */
+ if (option == JCOPYOPT_ALL) {
+ for (m = 0; m < 16; m++)
+ jpeg_save_markers(srcinfo, JPEG_APP0 + m, 0xFFFF);
+ }
+#endif /* SAVE_MARKERS_SUPPORTED */
+}
+
+/* Copy markers saved in the given source object to the destination object.
+ * This should be called just after jpeg_start_compress() or
+ * jpeg_write_coefficients().
+ * Note that those routines will have written the SOI, and also the
+ * JFIF APP0 or Adobe APP14 markers if selected.
+ */
+
+GLOBAL(void)
+jcopy_markers_execute (j_decompress_ptr srcinfo, j_compress_ptr dstinfo,
+ JCOPY_OPTION option)
+{
+ jpeg_saved_marker_ptr marker;
+
+ /* In the current implementation, we don't actually need to examine the
+ * option flag here; we just copy everything that got saved.
+ * But to avoid confusion, we do not output JFIF and Adobe APP14 markers
+ * if the encoder library already wrote one.
+ */
+ for (marker = srcinfo->marker_list; marker != NULL; marker = marker->next) {
+ if (dstinfo->write_JFIF_header &&
+ marker->marker == JPEG_APP0 &&
+ marker->data_length >= 5 &&
+ GETJOCTET(marker->data[0]) == 0x4A &&
+ GETJOCTET(marker->data[1]) == 0x46 &&
+ GETJOCTET(marker->data[2]) == 0x49 &&
+ GETJOCTET(marker->data[3]) == 0x46 &&
+ GETJOCTET(marker->data[4]) == 0)
+ continue; /* reject duplicate JFIF */
+ if (dstinfo->write_Adobe_marker &&
+ marker->marker == JPEG_APP0+14 &&
+ marker->data_length >= 5 &&
+ GETJOCTET(marker->data[0]) == 0x41 &&
+ GETJOCTET(marker->data[1]) == 0x64 &&
+ GETJOCTET(marker->data[2]) == 0x6F &&
+ GETJOCTET(marker->data[3]) == 0x62 &&
+ GETJOCTET(marker->data[4]) == 0x65)
+ continue; /* reject duplicate Adobe */
+#ifdef NEED_FAR_POINTERS
+ /* We could use jpeg_write_marker if the data weren't FAR... */
+ {
+ unsigned int i;
+ jpeg_write_m_header(dstinfo, marker->marker, marker->data_length);
+ for (i = 0; i < marker->data_length; i++)
+ jpeg_write_m_byte(dstinfo, marker->data[i]);
+ }
+#else
+ jpeg_write_marker(dstinfo, marker->marker,
+ marker->data, marker->data_length);
+#endif
+ }
+}
diff --git a/extra/fbida/transupp.h b/extra/fbida/transupp.h
new file mode 100644
index 000000000..7c16c19c4
--- /dev/null
+++ b/extra/fbida/transupp.h
@@ -0,0 +1,210 @@
+/*
+ * transupp.h
+ *
+ * Copyright (C) 1997-2009, Thomas G. Lane, Guido Vollbeding.
+ * This file is part of the Independent JPEG Group's software.
+ * For conditions of distribution and use, see the accompanying README file.
+ *
+ * This file contains declarations for image transformation routines and
+ * other utility code used by the jpegtran sample application. These are
+ * NOT part of the core JPEG library. But we keep these routines separate
+ * from jpegtran.c to ease the task of maintaining jpegtran-like programs
+ * that have other user interfaces.
+ *
+ * NOTE: all the routines declared here have very specific requirements
+ * about when they are to be executed during the reading and writing of the
+ * source and destination files. See the comments in transupp.c, or see
+ * jpegtran.c for an example of correct usage.
+ */
+
+/* If you happen not to want the image transform support, disable it here */
+#ifndef TRANSFORMS_SUPPORTED
+#define TRANSFORMS_SUPPORTED 1 /* 0 disables transform code */
+#endif
+
+/*
+ * Although rotating and flipping data expressed as DCT coefficients is not
+ * hard, there is an asymmetry in the JPEG format specification for images
+ * whose dimensions aren't multiples of the iMCU size. The right and bottom
+ * image edges are padded out to the next iMCU boundary with junk data; but
+ * no padding is possible at the top and left edges. If we were to flip
+ * the whole image including the pad data, then pad garbage would become
+ * visible at the top and/or left, and real pixels would disappear into the
+ * pad margins --- perhaps permanently, since encoders & decoders may not
+ * bother to preserve DCT blocks that appear to be completely outside the
+ * nominal image area. So, we have to exclude any partial iMCUs from the
+ * basic transformation.
+ *
+ * Transpose is the only transformation that can handle partial iMCUs at the
+ * right and bottom edges completely cleanly. flip_h can flip partial iMCUs
+ * at the bottom, but leaves any partial iMCUs at the right edge untouched.
+ * Similarly flip_v leaves any partial iMCUs at the bottom edge untouched.
+ * The other transforms are defined as combinations of these basic transforms
+ * and process edge blocks in a way that preserves the equivalence.
+ *
+ * The "trim" option causes untransformable partial iMCUs to be dropped;
+ * this is not strictly lossless, but it usually gives the best-looking
+ * result for odd-size images. Note that when this option is active,
+ * the expected mathematical equivalences between the transforms may not hold.
+ * (For example, -rot 270 -trim trims only the bottom edge, but -rot 90 -trim
+ * followed by -rot 180 -trim trims both edges.)
+ *
+ * We also offer a lossless-crop option, which discards data outside a given
+ * image region but losslessly preserves what is inside. Like the rotate and
+ * flip transforms, lossless crop is restricted by the JPEG format: the upper
+ * left corner of the selected region must fall on an iMCU boundary. If this
+ * does not hold for the given crop parameters, we silently move the upper left
+ * corner up and/or left to make it so, simultaneously increasing the region
+ * dimensions to keep the lower right crop corner unchanged. (Thus, the
+ * output image covers at least the requested region, but may cover more.)
+ *
+ * We also provide a lossless-resize option, which is kind of a lossless-crop
+ * operation in the DCT coefficient block domain - it discards higher-order
+ * coefficients and losslessly preserves lower-order coefficients of a
+ * sub-block.
+ *
+ * Rotate/flip transform, resize, and crop can be requested together in a
+ * single invocation. The crop is applied last --- that is, the crop region
+ * is specified in terms of the destination image after transform/resize.
+ *
+ * We also offer a "force to grayscale" option, which simply discards the
+ * chrominance channels of a YCbCr image. This is lossless in the sense that
+ * the luminance channel is preserved exactly. It's not the same kind of
+ * thing as the rotate/flip transformations, but it's convenient to handle it
+ * as part of this package, mainly because the transformation routines have to
+ * be aware of the option to know how many components to work on.
+ */
+
+
+/* Short forms of external names for systems with brain-damaged linkers. */
+
+#ifdef NEED_SHORT_EXTERNAL_NAMES
+#define jtransform_parse_crop_spec jTrParCrop
+#define jtransform_request_workspace jTrRequest
+#define jtransform_adjust_parameters jTrAdjust
+#define jtransform_execute_transform jTrExec
+#define jtransform_perfect_transform jTrPerfect
+#define jcopy_markers_setup jCMrkSetup
+#define jcopy_markers_execute jCMrkExec
+#endif /* NEED_SHORT_EXTERNAL_NAMES */
+
+
+/*
+ * Codes for supported types of image transformations.
+ */
+
+typedef enum {
+ JXFORM_NONE, /* no transformation */
+ JXFORM_FLIP_H, /* horizontal flip */
+ JXFORM_FLIP_V, /* vertical flip */
+ JXFORM_TRANSPOSE, /* transpose across UL-to-LR axis */
+ JXFORM_TRANSVERSE, /* transpose across UR-to-LL axis */
+ JXFORM_ROT_90, /* 90-degree clockwise rotation */
+ JXFORM_ROT_180, /* 180-degree rotation */
+ JXFORM_ROT_270 /* 270-degree clockwise (or 90 ccw) */
+} JXFORM_CODE;
+
+/*
+ * Codes for crop parameters, which can individually be unspecified,
+ * positive, or negative. (Negative width or height makes no sense, though.)
+ */
+
+typedef enum {
+ JCROP_UNSET,
+ JCROP_POS,
+ JCROP_NEG
+} JCROP_CODE;
+
+/*
+ * Transform parameters struct.
+ * NB: application must not change any elements of this struct after
+ * calling jtransform_request_workspace.
+ */
+
+typedef struct {
+ /* Options: set by caller */
+ JXFORM_CODE transform; /* image transform operator */
+ boolean perfect; /* if TRUE, fail if partial MCUs are requested */
+ boolean trim; /* if TRUE, trim partial MCUs as needed */
+ boolean force_grayscale; /* if TRUE, convert color image to grayscale */
+ boolean crop; /* if TRUE, crop source image */
+
+ /* Crop parameters: application need not set these unless crop is TRUE.
+ * These can be filled in by jtransform_parse_crop_spec().
+ */
+ JDIMENSION crop_width; /* Width of selected region */
+ JCROP_CODE crop_width_set;
+ JDIMENSION crop_height; /* Height of selected region */
+ JCROP_CODE crop_height_set;
+ JDIMENSION crop_xoffset; /* X offset of selected region */
+ JCROP_CODE crop_xoffset_set; /* (negative measures from right edge) */
+ JDIMENSION crop_yoffset; /* Y offset of selected region */
+ JCROP_CODE crop_yoffset_set; /* (negative measures from bottom edge) */
+
+ /* Internal workspace: caller should not touch these */
+ int num_components; /* # of components in workspace */
+ jvirt_barray_ptr * workspace_coef_arrays; /* workspace for transformations */
+ JDIMENSION output_width; /* cropped destination dimensions */
+ JDIMENSION output_height;
+ JDIMENSION x_crop_offset; /* destination crop offsets measured in iMCUs */
+ JDIMENSION y_crop_offset;
+ int iMCU_sample_width; /* destination iMCU size */
+ int iMCU_sample_height;
+} jpeg_transform_info;
+
+
+#if TRANSFORMS_SUPPORTED
+
+/* Parse a crop specification (written in X11 geometry style) */
+EXTERN(boolean) jtransform_parse_crop_spec
+ JPP((jpeg_transform_info *info, const char *spec));
+/* Request any required workspace */
+EXTERN(boolean) jtransform_request_workspace
+ JPP((j_decompress_ptr srcinfo, jpeg_transform_info *info));
+/* Adjust output image parameters */
+EXTERN(jvirt_barray_ptr *) jtransform_adjust_parameters
+ JPP((j_decompress_ptr srcinfo, j_compress_ptr dstinfo,
+ jvirt_barray_ptr *src_coef_arrays,
+ jpeg_transform_info *info));
+/* Execute the actual transformation, if any */
+EXTERN(void) jtransform_execute_transform
+ JPP((j_decompress_ptr srcinfo, j_compress_ptr dstinfo,
+ jvirt_barray_ptr *src_coef_arrays,
+ jpeg_transform_info *info));
+/* Determine whether lossless transformation is perfectly
+ * possible for a specified image and transformation.
+ */
+EXTERN(boolean) jtransform_perfect_transform
+ JPP((JDIMENSION image_width, JDIMENSION image_height,
+ int MCU_width, int MCU_height,
+ JXFORM_CODE transform));
+
+/* jtransform_execute_transform used to be called
+ * jtransform_execute_transformation, but some compilers complain about
+ * routine names that long. This macro is here to avoid breaking any
+ * old source code that uses the original name...
+ */
+#define jtransform_execute_transformation jtransform_execute_transform
+
+#endif /* TRANSFORMS_SUPPORTED */
+
+
+/*
+ * Support for copying optional markers from source to destination file.
+ */
+
+typedef enum {
+ JCOPYOPT_NONE, /* copy no optional markers */
+ JCOPYOPT_COMMENTS, /* copy only comment (COM) markers */
+ JCOPYOPT_ALL /* copy all optional markers */
+} JCOPY_OPTION;
+
+#define JCOPYOPT_DEFAULT JCOPYOPT_COMMENTS /* recommended default */
+
+/* Setup decompression object to save desired markers in memory */
+EXTERN(void) jcopy_markers_setup
+ JPP((j_decompress_ptr srcinfo, JCOPY_OPTION option));
+/* Copy markers saved in the given source object to the destination object */
+EXTERN(void) jcopy_markers_execute
+ JPP((j_decompress_ptr srcinfo, j_compress_ptr dstinfo,
+ JCOPY_OPTION option));
diff --git a/extra/fbset/PKGBUILD b/extra/fbset/PKGBUILD
new file mode 100644
index 000000000..0db694c92
--- /dev/null
+++ b/extra/fbset/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 49864 2009-08-16 19:15:47Z jgc $
+# Maintainer: Aaron Griffin <aaron@archlinux.org>
+# Contributor: Paul Mattal <pjmattal@elys.com>
+
+pkgname=fbset
+pkgver=2.1
+pkgrel=3
+pkgdesc="Framebuffer setup util"
+arch=(i686 x86_64)
+url="http://users.telenet.be/geertu/Linux/fbdev/"
+license=('GPL')
+depends=('glibc')
+backup=(etc/fb.modes)
+options=(!makeflags)
+source=(http://users.telenet.be/geertu/Linux/fbdev/fbset-${pkgver}.tar.gz)
+md5sums=('e547cfcbb8c1a4f2a6b8ba4acb8b7164')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make || return 1
+ install -m755 -d "${pkgdir}/etc"
+ install -m755 -d "${pkgdir}/usr/sbin"
+ install -m755 -d "${pkgdir}/usr/share/man/man5"
+ install -m755 -d "${pkgdir}/usr/share/man/man8"
+ install -m755 fbset "${pkgdir}/usr/sbin/" || return 1
+ install -m644 fb.modes.5 "${pkgdir}/usr/share/man/man5/" || return 1
+ install -m644 fbset.8 "${pkgdir}/usr/share/man/man8/" || return 1
+ install -m644 etc/fb.modes.ATI "${pkgdir}/etc/fb.modes" || return 1
+}
diff --git a/extra/fcgi/PKGBUILD b/extra/fcgi/PKGBUILD
new file mode 100644
index 000000000..d6024ec72
--- /dev/null
+++ b/extra/fcgi/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id: PKGBUILD 87808 2010-08-18 10:56:40Z jgc $
+# Maintainer: tobias <tobias@justdreams.de>
+# Modified by: eliott <eliott@cactuswax.net>
+# Original by Benjamin Andresen, klapmuetz [at] gmail [dot] com
+
+pkgname=fcgi
+pkgver=2.4.0
+pkgrel=6
+depends=('gcc-libs')
+pkgdesc="FASTCgi(fcgi) islanguage independent, high performant extension to CGI"
+arch=(i686 x86_64)
+license=('custom')
+options=('!libtool' '!makeflags')
+url="http://www.fastcgi.com"
+source=(http://www.fastcgi.com/dist/${pkgname}-${pkgver}.tar.gz
+ gcc44-fix-include.patch)
+md5sums=('d15060a813b91383a9f3c66faf84867e'
+ 'a8028462163755f3ce457a5c641f237b')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i "${srcdir}/gcc44-fix-include.patch"
+ libtoolize --force
+ aclocal
+ autoconf
+ automake --foreign
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -Dm644 LICENSE.TERMS "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+}
diff --git a/extra/fcgi/gcc44-fix-include.patch b/extra/fcgi/gcc44-fix-include.patch
new file mode 100644
index 000000000..7999e1be5
--- /dev/null
+++ b/extra/fcgi/gcc44-fix-include.patch
@@ -0,0 +1,17 @@
+Author: Tatsuki Sugiura <sugi@nemui.org>
+Origin: vendor, http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=504963
+Bug-Debian: http://bugs.debian.org/504963
+Forwarded: no
+Last-Update: 2010-02-08
+
+Index: libfcgi/libfcgi/fcgio.cpp
+===================================================================
+--- libfcgi.orig/libfcgi/fcgio.cpp 2010-01-23 19:13:53.000000000 +0900
++++ libfcgi/libfcgi/fcgio.cpp 2010-01-23 19:13:55.000000000 +0900
+@@ -22,6 +22,7 @@
+ #define DLLAPI __declspec(dllexport)
+ #endif
+
++#include <cstdio>
+ #include <limits.h>
+ #include "fcgio.h"
diff --git a/extra/fcitx/PKGBUILD b/extra/fcitx/PKGBUILD
new file mode 100644
index 000000000..2b34f225f
--- /dev/null
+++ b/extra/fcitx/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 103288 2010-12-17 09:19:33Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: damir <damir@archlinux.org>
+
+pkgname=fcitx
+pkgver=4.0.1
+pkgrel=1
+pkgdesc="Free Chinese Input Toy of X, a collection of Simplified Chinese input methods for Linux"
+arch=('i686' 'x86_64')
+url="http://code.google.com/p/fcitx/"
+license=('GPL')
+depends=('dbus-core' 'pango')
+makedepends=('intltool')
+options=('!libtool')
+source=("http://fcitx.googlecode.com/files/${pkgname}-${pkgver}.tar.gz")
+sha1sums=('22d48cd65ae6ee36e49c0ed07761a3cb2f7e2669')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/feh/PKGBUILD b/extra/feh/PKGBUILD
new file mode 100644
index 000000000..c350b58d2
--- /dev/null
+++ b/extra/feh/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 114383 2011-03-12 22:41:05Z bisson $
+# Maintainer: Gaetan Bisson <bisson@archlinux.org>
+# Contributor: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: dorphell <dorphell@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=feh
+pkgver=1.12
+pkgrel=1
+pkgdesc='Fast, lightweight image viewer which uses imlib2'
+arch=('i686' 'x86_64')
+url='http://derf.homelinux.org/projects/feh/'
+license=('MIT')
+depends=('giblib' 'curl' 'libxinerama')
+optdepends=('perl: feh-cam, webcam wrapper for feh')
+makedepends=('libxt')
+source=("${url}${pkgname}-${pkgver}.tar.bz2")
+sha1sums=('0f0f6dec50d81f9765bef990018de44e411a7439')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make PREFIX=/usr
+}
+
+package(){
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make PREFIX=/usr DESTDIR="${pkgdir}" install
+ install -Dm644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+}
diff --git a/extra/festival/PKGBUILD b/extra/festival/PKGBUILD
new file mode 100644
index 000000000..755dc23a1
--- /dev/null
+++ b/extra/festival/PKGBUILD
@@ -0,0 +1,119 @@
+# $Id: PKGBUILD 102549 2010-12-08 06:43:53Z schiv $
+# Maintainer:
+# Contributor: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Simo Leone <neotuli@gmail.com>
+
+pkgname=festival
+pkgver=2.1
+_suffix=release
+pkgrel=1
+pkgdesc="A general multi-lingual speech synthesis system"
+arch=('i686' 'x86_64')
+url="http://www.cstr.ed.ac.uk/projects/festival/"
+license=('BSD' 'GPL' 'custom')
+depends=('perl')
+options=('!makeflags')
+source=("http://www.cstr.ed.ac.uk/downloads/${pkgname}/${pkgver}/${pkgname}-${pkgver}-${_suffix}.tar.gz"
+ "http://www.cstr.ed.ac.uk/downloads/${pkgname}/${pkgver}/speech_tools-${pkgver}-${_suffix}.tar.gz"
+ "http://www.cstr.ed.ac.uk/downloads/${pkgname}/${pkgver}/festlex_CMU.tar.gz"
+ "http://www.cstr.ed.ac.uk/downloads/${pkgname}/${pkgver}/festlex_OALD.tar.gz"
+ "http://www.cstr.ed.ac.uk/downloads/${pkgname}/${pkgver}/festlex_POSLEX.tar.gz"
+ 'speechconfig.patch'
+ 'festconfig.patch')
+md5sums=('c93eb3e389ed171ab9abd46afe8897a8'
+ '6920ddc75b042910a3bcfee3ab106938'
+ '6a2ee4fed7c3ebedf197a3b8524ccb87'
+ '84af32a914d996f57bc4cb36fe8cdc97'
+ 'aa80f9250065b318325f16fdad3a4484'
+ '550abd77dc20e444673d6ecf87a60fe9'
+ '348cc033430aee7989463198818ae74c')
+
+build() {
+ # Build Speech Tools first
+ cd $srcdir/speech_tools
+ patch -Np1 -i $srcdir/speechconfig.patch
+
+ ./configure --prefix=/usr --sysconfdir=/etc
+ make OPTIMISE_CXXFLAGS="${CXXFLAGS}" OPTIMISE_CCFLAGS="${CFLAGS}"
+
+ # Build Festival itself
+ cd $srcdir/festival
+ patch -Np1 -i $srcdir/festconfig.patch
+
+ # Aviod make failure on making scripts and docs
+ sed -i "s#examples bin doc#examples#" Makefile
+
+ ./configure --prefix=/usr --sysconfdir=/etc
+ make OPTIMISE_CXXFLAGS="${CXXFLAGS}" OPTIMISE_CCFLAGS="${CFLAGS}"
+}
+
+package() {
+ # Install Speech Tools first
+ cd $srcdir/speech_tools
+ install -dm755 $pkgdir/usr/{bin,lib,include/speech_tools/{,instantiate,ling_class,rxp,sigpr,unix}}
+
+ #binaries
+ #move binaries over wrappers (FS#7864)
+ for i in `grep -l 'EST shared script' bin/*`; do
+ cp -f main/$(basename $i) bin;
+ done
+ install -m755 -t $pkgdir/usr/bin bin/[a-z]*
+ rm -f $pkgdir/usr/bin/{est_gdb,est_examples,est_program}
+
+ #libraries
+ install -m755 -t $pkgdir/usr/lib lib/lib*.so.*
+ ln -sf libestbase.so.${pkgver}.1 $pkgdir/usr/lib/libestbase.so
+ ln -sf libeststring.so.1.2 $pkgdir/usr/lib/libeststring.so
+ install -m644 -t $pkgdir/usr/lib lib/lib*.a
+
+ #headers
+ for dir in {.,instantiate,ling_class,rxp,sigpr,unix}; do
+ install -m644 -t ${pkgdir}/usr/include/speech_tools/$dir include/$dir/*.h
+ done
+
+ # Install Festival itself
+ cd $srcdir/festival
+
+ #binaries
+ install -m755 src/main/festival $pkgdir/usr/bin/
+ install -m755 src/main/festival_client $pkgdir/usr/bin/
+ install -m755 examples/text2wave $pkgdir/usr/bin
+ install -m755 examples/saytime $pkgdir/usr/bin/
+
+ #libraries
+ install -m644 src/lib/libFestival.a $pkgdir/usr/lib/
+
+ #headers
+ install -dm755 $pkgdir/usr/include/festival
+ install -m644 -t $pkgdir/usr/include/festival src/include/*.h
+
+ mkdir -p $pkgdir/usr/share/festival
+ #install -m644 -t $pkgdir/usr/share/festival lib/*.scm
+ #need to clean up but requires knowing which files are actually needed...
+ cp -aR lib/* $pkgdir/usr/share/festival
+ rm -f $(find $pkgdir/usr/share/festival -name Makefile)
+
+ #create voices directory
+ install -dm755 $pkgdir/usr/share/festival/voices
+
+ #licenses
+ install -D -m644 $srcdir/festival/COPYING \
+ $pkgdir/usr/share/licenses/$pkgname/LICENSE
+ install -D -m644 $srcdir/speech_tools/README \
+ $pkgdir/usr/share/licenses/$pkgname/LICENSE.other
+
+ #################################################################
+ # Ok now some general cleanups
+ for i in `find $pkgdir/usr/include/ -type f`; do
+ sed -i -e 's,"EST.*\.h",\<speech_tools/&\>,g' -e 's,speech_tools/\",speech_tools/,g' \
+ -e 's,"siod.*\.h",\<speech_tools/&\>,g' -e 's,speech_tools/\",speech_tools/,g' \
+ -e 's,"instantiate/.*\.h",\<speech_tools/&\>,g' -e 's,speech_tools/instantiate/\",speech_tools/instantiate/,g' -e 's,"instantiate,instantiate,g' \
+ -e 's,"ling_class/.*\.h",\<speech_tools/&\>,g' -e 's,speech_tools/ling_class/\",speech_tools/ling_class/,g' -e 's,"ling_class,ling_class,g'\
+ -e 's,"rxp/.*\.h",\<speech_tools/&\>,g' -e 's,speech_tools/rxp/\",speech_tools/rxp/,g' -e 's,"rxp,rxp,g' \
+ -e 's,"sigpr/.*\.h",\<speech_tools/&\>,g' -e 's,speech_tools/sigpr/\",speech_tools/sigpr/,g' -e 's,"sigpr,sigpr,g' \
+ -e 's,"unix/.*\.h",\<speech_tools/&\>,g' -e 's,speech_tools/unix/\",speech_tools/unix/,g' -e 's,\.h\">,.h\>,g' -e 's,"unix,unix,g' \
+ -e 's,"festival\.h",\<festival/festival.h\>,g' \
+ -e 's,"ModuleDescription\.h",\<festival/ModuleDescription.h\>,g' \
+ -e 's,"Phone\.h",\<festival/Phone.h\>,g' $i
+ done
+}
diff --git a/extra/festival/festconfig.patch b/extra/festival/festconfig.patch
new file mode 100644
index 000000000..5b39a854f
--- /dev/null
+++ b/extra/festival/festconfig.patch
@@ -0,0 +1,84 @@
+diff -Nru festival.orig/config/config.in festival/config/config.in
+--- festival.orig/config/config.in 2004-06-21 15:52:42.000000000 -0500
++++ festival/config/config.in 2005-05-30 19:50:45.000000000 -0500
+@@ -20,7 +20,7 @@
+ ## You may need to set this explicitly if automounter or NFS
+ ## side effects cause problems
+
+-FESTIVAL_HOME := $(shell (cd $(TOP); pwd))
++FESTIVAL_HOME := /usr
+
+ ###########################################################################
+ ## Feature selection.
+diff -Nru festival.orig/config/project.mak festival/config/project.mak
+--- festival.orig/config/project.mak 2004-07-12 10:39:37.000000000 -0500
++++ festival/config/project.mak 2005-05-30 19:50:45.000000000 -0500
+@@ -112,6 +112,5 @@
+ DOCXX_DIRS = $(TOP)/src
+ MODULE_TO_DOCXX = perl $(TOP)/src/modules/utilities/extract_module_doc++.prl
+
+-FTLIBDIR = $(FESTIVAL_HOME)/lib
+-
++FTLIBDIR = /usr/share/festival
+
+diff -Nru festival.orig/config/systems/Linux.mak festival/config/systems/Linux.mak
+--- festival.orig/config/systems/Linux.mak 2001-04-04 06:55:32.000000000 -0500
++++ festival/config/systems/Linux.mak 2005-05-30 19:51:28.000000000 -0500
+@@ -40,13 +40,13 @@
+
+ include $(EST)/config/systems/default.mak
+
+-DEFAULT_JAVA_HOME=/usr/lib/jdk-1.1.6
++DEFAULT_JAVA_HOME=/usr/lib/jvm/java-6-openjdk
+ JAVA=/usr/bin/java
+ JAVAC=/usr/bin/javac
+ JAVAH=/usr/bin/javah
+
+ TCL_LIBRARY = -ltcl
+-OS_LIBS = -ldl
++OS_LIBS = -ldl -lncurses
+
+ ## the native audio module for this type of system
+ NATIVE_AUDIO_MODULE = LINUX16
+diff -Nru festival.orig/config/systems/default.mak festival/config/systems/default.mak
+--- festival.orig/config/systems/default.mak 2001-04-04 06:55:32.000000000 -0500
++++ festival/config/systems/default.mak 2005-05-30 19:50:45.000000000 -0500
+@@ -40,7 +40,7 @@
+ ###########################################################################
+ ## Installation directories
+
+-INSTALL_PREFIX=/usr/local
++INSTALL_PREFIX=/usr
+
+ BINDIR=$(INSTALL_PREFIX)/bin
+ LIBDIR=$(INSTALL_PREFIX)/lib
+@@ -63,8 +63,8 @@
+ ###########################################################################
+ ## Where to find Enlightenment Speech Demon
+
+-ESD_INCLUDE = /usr/local/include
+-ESD_LIB = /usr/local/lib
++ESD_INCLUDE = /usr/include
++ESD_LIB = /usr/lib
+
+ ###########################################################################
+ ## Where to find X11
+@@ -75,14 +75,14 @@
+ ###########################################################################
+ ## TCL support
+
+-TCL_INCLUDE = /usr/local/include
+-TCL_LIB = /usr/local/lib
+-TCL_LIBRARY = -ltcl7.6
++TCL_INCLUDE = /usr/include
++TCL_LIB = /usr/lib
++TCL_LIBRARY = -ltcl
+
+ ###########################################################################
+ ## Efence library for malloc debugging
+
+-EFENCE_LIB = /usr/local/lib
++EFENCE_LIB = /usr/lib
+
+ ###########################################################################
+ ## Commands.
diff --git a/extra/festival/speechconfig.patch b/extra/festival/speechconfig.patch
new file mode 100644
index 000000000..f77b614e9
--- /dev/null
+++ b/extra/festival/speechconfig.patch
@@ -0,0 +1,132 @@
+diff -aur speech_tools.old//config/compilers/jdk.mak speech_tools/config/compilers/jdk.mak
+--- speech_tools.old//config/compilers/jdk.mak 2001-04-04 19:55:32.000000000 +0800
++++ speech_tools/config/compilers/jdk.mak 2010-12-08 12:14:56.076668109 +0800
+@@ -52,7 +52,7 @@
+ endif
+ endif
+
+-JAVAFLAGS = -depend
++JAVAFLAGS =
+
+ DEBUG_JAVAFLAGS = -g
+
+diff -aur speech_tools.old//config/config.in speech_tools/config/config.in
+--- speech_tools.old//config/config.in 2008-10-29 03:20:49.000000000 +0800
++++ speech_tools/config/config.in 2010-12-08 12:17:50.110001443 +0800
+@@ -15,7 +15,7 @@
+ ## You may need to set this explicitly if automounter or NFS
+ ## side effects cause problems
+
+-EST_HOME := $(shell (cd $(EST); pwd))
++EST_HOME := /usr
+
+ ###########################################################################
+ ## System type.
+@@ -28,14 +28,14 @@
+ ##
+ ## Examples: sparc_SunOS5 intel_Linux2.0
+
+-SYSTEM_TYPE=$(MACHINETYPE)_$(OSTYPE)$(OSREV)
++SYSTEM_TYPE=Linux
+
+ ###########################################################################
+ ## Compiler.
+ ## The definitions are in compilers/$(COMPILER).mak
+ ## Examples: gcc suncc egcs gcc28
+
+-COMPILER=@COMPILERTYPE@
++COMPILER=gcc
+
+ ###########################################################################
+ ## Java system to use if you include the Java interface.
+@@ -61,7 +61,7 @@
+ # VERBOSE=1
+ #DEBUG=1
+ # PROFILE=gprof
+-#SHARED=2
++SHARED=1
+
+ ## Directory specific selections which override the above
+
+@@ -98,7 +98,7 @@
+ ## It may not work under all systems, so may be optionally omitted.
+ INCLUDE_MODULES += EDITLINE
+
+-TERMCAPLIB = @TERMCAPLIB@
++TERMCAPLIB =
+ # speech recognition
+ #INCLUDE_MODULES += ASR
+
+@@ -169,8 +169,8 @@
+ CONFIG_WRAPPER_LANGUAGES = PYTHON PERL5
+
+ # Language specific includes should be set to correct site paths
+-CONFIG_PYTHON_INCLUDES= -I/usr/include/python2.2/
+-CONFIG_PERL_INCLUDES= -I/usr/lib/perl5/5.8.3/i386-linux-thread-multi/CORE/
++CONFIG_PYTHON_INCLUDES= -I/usr/include/python2.7/
++CONFIG_PERL_INCLUDES= -I/usr/lib/perl5/core_perl/CORE/
+ #OR OLD#CONFIG_PERL_INCLUDES= -I/usr/lib/perl5/5.6.1/i386-linux/CORE/
+ ##
+ ###################################################################
+Only in speech_tools/config: config.in.orig
+diff -aur speech_tools.old//config/systems/default.mak speech_tools/config/systems/default.mak
+--- speech_tools.old//config/systems/default.mak 2005-07-17 21:06:49.000000000 +0800
++++ speech_tools/config/systems/default.mak 2010-12-08 12:14:56.076668109 +0800
+@@ -40,7 +40,7 @@
+ ###########################################################################
+ ## Installation directories
+
+-INSTALL_PREFIX=/usr/local
++INSTALL_PREFIX=/usr
+
+ BINDIR=$(INSTALL_PREFIX)/bin
+ LIBDIR=$(INSTALL_PREFIX)/lib
+@@ -63,8 +63,8 @@
+ ###########################################################################
+ ## Where to find Enlightenment Speech Demon
+
+-ESD_INCLUDE = /usr/local/include
+-ESD_LIB = /usr/local/lib
++ESD_INCLUDE = /usr/include
++ESD_LIB = /usr/lib
+
+ ###########################################################################
+ ## Where to find X11
+@@ -75,14 +75,14 @@
+ ###########################################################################
+ ## TCL support
+
+-TCL_INCLUDE = /usr/local/include
+-TCL_LIB = /usr/local/lib
+-TCL_LIBRARY = -ltcl7.6
++TCL_INCLUDE = /usr/include
++TCL_LIB = /usr/lib
++TCL_LIBRARY = -ltcl
+
+ ###########################################################################
+ ## Efence library for malloc debugging
+
+-EFENCE_LIB = /usr/local/lib
++EFENCE_LIB = /usr/lib
+
+ ###########################################################################
+ ## Commands.
+diff -aur speech_tools.old//config/systems/Linux.mak speech_tools/config/systems/Linux.mak
+--- speech_tools.old//config/systems/Linux.mak 2001-04-04 19:55:32.000000000 +0800
++++ speech_tools/config/systems/Linux.mak 2010-12-08 12:14:56.076668109 +0800
+@@ -40,13 +40,13 @@
+
+ include $(EST)/config/systems/default.mak
+
+-DEFAULT_JAVA_HOME=/usr/lib/jdk-1.1.6
++DEFAULT_JAVA_HOME=/usr/lib/jvm/java-6-openjdk
+ JAVA=/usr/bin/java
+ JAVAC=/usr/bin/javac
+ JAVAH=/usr/bin/javah
+
+ TCL_LIBRARY = -ltcl
+-OS_LIBS = -ldl
++OS_LIBS = -ldl -lncurses
+
+ ## the native audio module for this type of system
+ NATIVE_AUDIO_MODULE = LINUX16
diff --git a/extra/fetchmail/PKGBUILD b/extra/fetchmail/PKGBUILD
new file mode 100644
index 000000000..9463a9277
--- /dev/null
+++ b/extra/fetchmail/PKGBUILD
@@ -0,0 +1,37 @@
+# $Id: PKGBUILD 102917 2010-12-13 01:30:42Z eric $
+# Maintainer: Aaron Griffin <aaron@archlinux.org>
+
+pkgname=fetchmail
+pkgver=6.3.19
+pkgrel=1
+pkgdesc="A remote-mail retrieval utility"
+url="http://fetchmail.berlios.de/"
+arch=('i686' 'x86_64')
+depends=('glibc' 'openssl' 'python2')
+optdepends=('tk: fetchmailconf')
+options=('!makeflags')
+license=('GPL')
+install=fetchmail.install
+source=(http://download2.berlios.de/fetchmail/${pkgname}-${pkgver}.tar.bz2
+ fetchmail.rc fetchmail.conf)
+md5sums=('64519711c8533f5a34d20c9ff620d880' '6742e99d65a827bc2b9d6bc8efe269e6'\
+ '8fcd6a22dfbc247755fdd050c5c5c4d3')
+sha1sums=('fcc9b9299fe147d8f522cff93f8f619e5e1372b7' '13c7e3c538211c79c5b403f2bfa6712a2ad0ac30'\
+ '30401729386d6f774c6c36ab8530842166de54a8')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --with-ssl=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+
+ install -Dm755 "${srcdir}/fetchmail.rc" "${pkgdir}/etc/rc.d/fetchmail"
+ install -Dm644 "${srcdir}/fetchmail.conf" "${pkgdir}/etc/conf.d/fetchmail"
+
+ # "home" directory for pid file.
+ install -d -o 90 -g nobody -m700 "${pkgdir}/var/run/fetchmail"
+}
diff --git a/extra/fetchmail/fetchmail.conf b/extra/fetchmail/fetchmail.conf
new file mode 100644
index 000000000..dcac2a067
--- /dev/null
+++ b/extra/fetchmail/fetchmail.conf
@@ -0,0 +1,5 @@
+# Daemon polling interval
+INTERVAL=60
+
+# Config location
+CONFIG=/etc/fetchmailrc
diff --git a/extra/fetchmail/fetchmail.install b/extra/fetchmail/fetchmail.install
new file mode 100644
index 000000000..711cbe568
--- /dev/null
+++ b/extra/fetchmail/fetchmail.install
@@ -0,0 +1,20 @@
+post_install() {
+ # /etc/fetchmail must be owned by fetchmail for daemon to work.
+ echo "If you run fetchmail as a daemon and not a cron job"
+ echo "then 'chown fetchmail /etc/fetchmailrc'"
+ getent passwd fetchmail >/dev/null || usr/sbin/useradd -u 90 -g nobody \
+ -d '/var/run/fetchmail' -c 'Fetchmail daemon' -s /bin/false fetchmail
+}
+
+post_upgrade() {
+ getent passwd fetchmail >/dev/null || usr/sbin/useradd -u 90 -g nobody \
+ -d '/var/run/fetchmail' -c 'Fetchmail daemon' -s /bin/false fetchmail
+
+ if [ "$(vercmp $2 6.3.19)" -lt 0 ] ; then
+ chsh -s /bin/false fetchmail
+ fi
+}
+
+pre_remove() {
+ usr/sbin/userdel fetchmail &>/dev/null
+}
diff --git a/extra/fetchmail/fetchmail.rc b/extra/fetchmail/fetchmail.rc
new file mode 100644
index 000000000..7c25f72b2
--- /dev/null
+++ b/extra/fetchmail/fetchmail.rc
@@ -0,0 +1,41 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+[ -f /etc/conf.d/fetchmail ] && . /etc/conf.d/fetchmail
+
+PID=`pidof -o %PPID /usr/bin/fetchmail`
+case "$1" in
+ start)
+ stat_busy "Starting fetchmail"
+ [ -z "$PID" ] &&
+ su -c "/usr/bin/fetchmail -d $INTERVAL -f $CONFIG" -s /bin/sh fetchmail
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ #Fetchmail does this for us:
+ #echo $PID > /var/run/fetchmail.pid
+ add_daemon fetchmail
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping fetchmail"
+ [ ! -z "$PID" ] && kill $PID &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm -f /var/run/fetchmail.pid
+ rm_daemon fetchmail
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
diff --git a/extra/ffcall/PKGBUILD b/extra/ffcall/PKGBUILD
new file mode 100644
index 000000000..fcf0a0f66
--- /dev/null
+++ b/extra/ffcall/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 2176 2008-05-28 20:52:39Z eric $
+# Maintainer: Vesa Kaihlavirta <vegai@iki.fi>
+# Contributor: Michael Baehr <usemike@spamblocked.com>
+
+pkgname=ffcall
+pkgver=1.10
+pkgrel=3
+pkgdesc="C library for implementing foreign function calls in embedded interpreters"
+arch=('i686' 'x86_64')
+url="http://www.haible.de/bruno/packages-ffcall.html"
+license=('GPL2')
+options=('!libtool' '!makeflags')
+source=(http://www.haible.de/bruno/gnu/${pkgname}-${pkgver}.tar.gz)
+md5sums=('2db95007e901f3bc2ae7e5a9fe9ebea4')
+
+build() {
+ cd ${startdir}/src/${pkgname}-${pkgver}
+ if [ "$CARCH" = "x86_64" ]; then
+ ./configure --prefix=/usr --mandir=/usr/share/man --with-pic || return 1
+ else
+ ./configure --prefix=/usr --mandir=/usr/share/man || return 1
+ fi
+ make || return 1
+ install -d ${startdir}/pkg/usr/share/man || return 1
+ make DESTDIR=${startdir}/pkg/ install || return 1
+}
diff --git a/extra/ffmpegthumbnailer/PKGBUILD b/extra/ffmpegthumbnailer/PKGBUILD
new file mode 100644
index 000000000..8be79eb47
--- /dev/null
+++ b/extra/ffmpegthumbnailer/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 23110 2010-08-06 11:01:51Z rvanharen $
+# Maintainer: Ronald van Haren <ronald.archlinux.org>
+# Contributor: boromil@gmail.com
+
+pkgname=ffmpegthumbnailer
+pkgver=2.0.6
+pkgrel=1
+pkgdesc="Lightweight video thumbnailer that can be used by file managers."
+url="http://code.google.com/p/ffmpegthumbnailer/"
+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)
+options=(!libtool)
+md5sums=('5003ceaadc1c5a1be1dbb34739a12bab')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ ./configure --prefix=/usr --enable-gio
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
+
+
diff --git a/extra/fftw/PKGBUILD b/extra/fftw/PKGBUILD
new file mode 100644
index 000000000..d8b00ff55
--- /dev/null
+++ b/extra/fftw/PKGBUILD
@@ -0,0 +1,50 @@
+# $Id: PKGBUILD 110392 2011-02-19 07:05:55Z allan $
+# Maintainer: Ronald van Haren <ronald.archlinux.org>
+# Contributor: damir <damir@archlinux.org>
+
+pkgname=fftw
+pkgver=3.2.2
+pkgrel=2
+pkgdesc="A library for computing the discrete Fourier transform (DFT)"
+arch=('i686' 'x86_64')
+license=('GPL2')
+url="http://www.fftw.org/"
+depends=('glibc' 'bash')
+makedepends=('gcc-fortran')
+options=(!libtool)
+source=(http://www.fftw.org/${pkgname}-${pkgver}.tar.gz)
+install=fftw.install
+
+# 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}
+
+ # use upstream default CFLAGS while keeping our -march/-mtune
+ CFLAGS+=" -O3 -fomit-frame-pointer -malign-double -fstrict-aliasing -ffast-math"
+
+ CONFIGURE="./configure F77=gfortran --prefix=/usr \
+ --enable-shared --enable-threads"
+
+ # build & install double precision
+ $CONFIGURE --enable-sse2
+ make
+ make DESTDIR=${pkgdir} install
+ make clean
+
+ # build & install long double precission
+ $CONFIGURE --enable-long-double
+ make
+ make DESTDIR=${pkgdir} install
+ make clean
+
+ # build & install single precision
+ $CONFIGURE --enable-float --enable-sse
+ make
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/fftw/fftw.install b/extra/fftw/fftw.install
new file mode 100644
index 000000000..a3748aae1
--- /dev/null
+++ b/extra/fftw/fftw.install
@@ -0,0 +1,22 @@
+info_dir=/usr/share/info
+info_files=(fftw3.info)
+
+post_install() {
+ for f in ${info_files[@]}; do
+ install-info ${info_dir}/$f.gz ${info_dir}/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install
+}
+
+pre_remove() {
+ for f in ${info_files[@]}; do
+ install-info --delete ${info_dir}/$f.gz ${info_dir}/dir 2> /dev/null
+ done
+}
+
+
+
+
diff --git a/extra/file-roller/PKGBUILD b/extra/file-roller/PKGBUILD
new file mode 100644
index 000000000..0cb20cb9b
--- /dev/null
+++ b/extra/file-roller/PKGBUILD
@@ -0,0 +1,39 @@
+# $Id: PKGBUILD 99609 2010-11-15 20:07:07Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=file-roller
+pkgver=2.32.1
+pkgrel=1
+pkgdesc="Archive manipulator for GNOME2"
+arch=('i686' 'x86_64')
+license=('GPL')
+depends=('desktop-file-utils' 'gconf>=2.32.0')
+makedepends=('intltool' 'gnome-doc-utils>=0.20.1' 'pkg-config' 'nautilus>=2.32')
+optdepends=('nautilus: nautilus shell extension'
+ 'unrar: the RAR uncompression program'
+ 'zip: creates PKZIP-compatible .zip files'
+ 'unzip: unpacks .zip archives'
+ 'p7zip: 7zip compression utility'
+ 'xz: managing LZMA and XZ compressed files'
+ 'arj: ARJ archiver'
+ 'unace: extraction tool for the proprietary ace archive format')
+groups=('gnome-extra')
+options=('!libtool' '!emptydirs')
+install=file-roller.install
+url="http://www.gnome.org"
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.32/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('a9109d9c871c022eb0553eeedc98520bad42ba3099088c16a9f7df817f60cc92')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --libexecdir=/usr/lib/file-roller \
+ --localstatedir=/var --disable-static \
+ --disable-scrollkeeper
+ make
+ 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 file-roller ${pkgdir}/etc/gconf/schemas/*.schemas
+ rm -f ${pkgdir}/etc/gconf/schemas/*.schemas
+}
diff --git a/extra/file-roller/file-roller.install b/extra/file-roller/file-roller.install
new file mode 100644
index 000000000..e39620af7
--- /dev/null
+++ b/extra/file-roller/file-roller.install
@@ -0,0 +1,24 @@
+pkgname=file-roller
+
+post_install() {
+ usr/sbin/gconfpkg --install ${pkgname}
+ update-desktop-database -q
+ 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() {
+ update-desktop-database -q
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
diff --git a/extra/flac/ChangeLog b/extra/flac/ChangeLog
new file mode 100644
index 000000000..e7790cb1a
--- /dev/null
+++ b/extra/flac/ChangeLog
@@ -0,0 +1,5 @@
+2009-08-01 Eric Belanger <eric@archlinux.org>
+
+ * flac 1.2.1-2
+ * FHS man pages
+ * Added ChangeLog
diff --git a/extra/flac/PKGBUILD b/extra/flac/PKGBUILD
new file mode 100644
index 000000000..d9d539f3f
--- /dev/null
+++ b/extra/flac/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 48440 2009-08-02 03:15:27Z eric $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=flac
+pkgver=1.2.1
+pkgrel=2
+pkgdesc="Free Lossless Audio Codec"
+arch=('i686' 'x86_64')
+url="http://flac.sourceforge.net/"
+license=('custom:Xiph' 'LGPL' 'GPL' 'FDL')
+depends=('glibc' 'libogg')
+makedepends=('nasm' 'xmms')
+options=('!libtool' '!makeflags')
+source=(http://downloads.sf.net/sourceforge/$pkgname/$pkgname-$pkgver.tar.gz flac-1.2.1-gcc-4.3-includes.patch)
+md5sums=('153c8b15a54da428d1f0fadc756c22c7' 'b9d245422bbc547b18a72897366bea77')
+sha1sums=('bd54354900181b59db3089347cc84ad81e410b38' '7e9f8c2ef4d9daf5ddd20df63b608fe19b8c1560')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i "${srcdir}/flac-1.2.1-gcc-4.3-includes.patch" || return 1
+ ./configure --prefix=/usr --mandir=/usr/share/man --enable-shared --disable-sse \
+ --disable-rpath --with-pic || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+
+ # install license
+ install -Dm0644 COPYING.Xiph "${pkgdir}/usr/share/licenses/${pkgname}/COPYING.Xiph" || return 1
+}
diff --git a/extra/flac/flac-1.2.1-gcc-4.3-includes.patch b/extra/flac/flac-1.2.1-gcc-4.3-includes.patch
new file mode 100644
index 000000000..52fec8be5
--- /dev/null
+++ b/extra/flac/flac-1.2.1-gcc-4.3-includes.patch
@@ -0,0 +1,11 @@
+diff -Naur flac-1.2.1-orig/examples/cpp/encode/file/main.cpp flac-1.2.1/examples/cpp/encode/file/main.cpp
+--- flac-1.2.1-orig/examples/cpp/encode/file/main.cpp 2007-09-13 09:58:03.000000000 -0600
++++ flac-1.2.1/examples/cpp/encode/file/main.cpp 2007-11-18 12:59:45.000000000 -0600
+@@ -30,6 +30,7 @@
+
+ #include <stdio.h>
+ #include <stdlib.h>
++#include <cstring>
+ #include "FLAC++/metadata.h"
+ #include "FLAC++/encoder.h"
+
diff --git a/extra/fltk/PKGBUILD b/extra/fltk/PKGBUILD
new file mode 100644
index 000000000..f5335f613
--- /dev/null
+++ b/extra/fltk/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 71291 2010-03-06 01:40:12Z pierre $
+
+pkgname=fltk
+pkgver=1.1.10
+pkgrel=1
+pkgdesc="Graphical user interface toolkit for X"
+arch=('i686' 'x86_64')
+license=('LGPL')
+url="http://www.fltk.org/"
+depends=('libjpeg' 'libpng' 'gcc-libs' 'libxft' 'libxext')
+makedepends=('mesa')
+source=("http://ftp.easysw.com/pub/$pkgname/$pkgver/$pkgname-$pkgver-source.tar.bz2")
+md5sums=('a1765594bc427ff892e36089fe1fa672')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ export LDFLAGS="${LDFLAGS//-Wl,--as-needed}"
+ export LDFLAGS="${LDFLAGS//,--as-needed}"
+ ./configure --prefix=/usr --enable-threads --enable-xft --enable-shared
+ make || return 1
+}
+
+package() {
+ cd $srcdir/$pkgname-$pkgver
+ make DESTDIR=$pkgdir install
+}
diff --git a/extra/fluidsynth/PKGBUILD b/extra/fluidsynth/PKGBUILD
new file mode 100644
index 000000000..831b180cf
--- /dev/null
+++ b/extra/fluidsynth/PKGBUILD
@@ -0,0 +1,46 @@
+# $Id: PKGBUILD 102552 2010-12-08 07:09:52Z schiv $
+# Maintainer: Ray Rashif <schiv@archlinux.org>
+# Contributor: damir <damir@archlinux.org>
+
+pkgname=fluidsynth
+pkgver=1.1.3
+pkgrel=2
+pkgdesc="A real-time software synthesizer based on the SoundFont 2 specifications"
+arch=(i686 x86_64)
+url="http://www.fluidsynth.org/"
+depends=('glib2' 'jack' 'dbus-core' 'libpulse')
+makedepends=('cmake' 'ladspa' 'doxygen')
+optdepends=('pulseaudio'
+ 'bash: init script')
+license=('LGPL')
+backup=('etc/conf.d/fluidsynth')
+source=(http://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.gz
+ fluidsynth.conf
+ fluidsynthd)
+md5sums=('0d3e3cc770b4da413010dfb7dfdce9c8'
+ '16c5f4d4cbdddc6c5fcbd4fd4cc142f1'
+ 'b296dbfb524c2164f552f68bd9abe2ec')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ cmake . -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_BUILD_TYPE=Release \
+ -Denable-ladspa=ON \
+ -DLIB_SUFFIX=""
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ make DESTDIR="$pkgdir/" install
+
+ install -Dm644 "$srcdir/fluidsynth.conf" \
+ "$pkgdir/etc/conf.d/fluidsynth"
+
+ install -Dm755 "$srcdir/fluidsynthd" \
+ "$pkgdir/etc/rc.d/fluidsynth"
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/extra/fluidsynth/fluidsynth.conf b/extra/fluidsynth/fluidsynth.conf
new file mode 100644
index 000000000..5267d5835
--- /dev/null
+++ b/extra/fluidsynth/fluidsynth.conf
@@ -0,0 +1,2 @@
+FSYNTH_OPTS="-a alsa -m alsa_seq -r 48000"
+FSYNTH_SOUNDFONT="" \ No newline at end of file
diff --git a/extra/fluidsynth/fluidsynthd b/extra/fluidsynth/fluidsynthd
new file mode 100644
index 000000000..ca1e8fa6e
--- /dev/null
+++ b/extra/fluidsynth/fluidsynthd
@@ -0,0 +1,40 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+[ -f /etc/conf.d/fluidsynth ] && . /etc/conf.d/fluidsynth
+
+PID=`pidof -o %PPID /usr/bin/fluidsynth`
+case "$1" in
+ start)
+ stat_busy "Starting Fluidsynth soundfont synthesizer"
+ [ -z "$PID" ] && /usr/bin/fluidsynth -is $FSYNTH_OPTS $FSYNTH_SOUNDFONT > /dev/null 2>&1 &
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ echo $PID > /var/run/fluidsynth.pid
+ add_daemon fluidsynth
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping Fluidsynth soundfont synthesizer"
+ [ ! -z "$PID" ] && kill $PID &> /dev/null 2>&1
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm /var/run/fluidsynth.pid
+ rm_daemon fluidsynth
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
diff --git a/extra/fluxbox/PKGBUILD b/extra/fluxbox/PKGBUILD
new file mode 100644
index 000000000..7d5e7d3b6
--- /dev/null
+++ b/extra/fluxbox/PKGBUILD
@@ -0,0 +1,33 @@
+# $Id: PKGBUILD 111648 2011-02-28 00:45:15Z eric $
+# Maintainer: Eric Bélanger <eric@archlinux.org>
+
+pkgname=fluxbox
+pkgver=1.3.1
+pkgrel=1
+pkgdesc="A lightweight and highly-configurable window manager"
+arch=('i686' 'x86_64')
+url="http://www.fluxbox.org"
+license=('MIT')
+depends=('libxft' 'libxpm' 'libxinerama' 'libxrandr' 'gcc-libs' 'sh' 'imlib2' 'fribidi')
+makedepends=('pkg-config')
+optdepends=('xorg-xmessage: for using the fbsetbg and fluxbox-generate_menu utilities')
+options=('!makeflags')
+source=(http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.bz2 \
+ fluxbox.desktop)
+md5sums=('0eaa940a69c0a876a520bb85d67b8bec' 'eeae9c88a2526ac0bd8afcd9ce97f9ed')
+sha1sums=('1c4755b8ac1042c98f700848240ac99ef18dca01' 'f3f83b8ce84d79c2f8670ef687e0dd89ab0552b8')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr \
+ --enable-gnome --enable-xft --enable-xinerama \
+ --enable-imlib2 --enable-nls
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+ install -D -m644 ../fluxbox.desktop "${pkgdir}/usr/share/xsessions/fluxbox.desktop"
+ install -D -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+}
diff --git a/extra/fluxbox/fluxbox.desktop b/extra/fluxbox/fluxbox.desktop
new file mode 100644
index 000000000..418d29acb
--- /dev/null
+++ b/extra/fluxbox/fluxbox.desktop
@@ -0,0 +1,6 @@
+[Desktop Entry]
+Encoding=UTF-8
+Type=XSession
+Exec=/usr/bin/startfluxbox
+TryExec=/usr/bin/startfluxbox
+Name=fluxbox
diff --git a/extra/fluxter/ChangeLog b/extra/fluxter/ChangeLog
new file mode 100644
index 000000000..48b1aa12a
--- /dev/null
+++ b/extra/fluxter/ChangeLog
@@ -0,0 +1,6 @@
+2009-03-13 Eric Belanger <eric@archlinux.org>
+
+ * fluxter 0.1.0-4
+ * Added license
+ * Replaced gcc depends by gcc-libs
+ * Added ChangeLog
diff --git a/extra/fluxter/PKGBUILD b/extra/fluxter/PKGBUILD
new file mode 100644
index 000000000..5b0dffc02
--- /dev/null
+++ b/extra/fluxter/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id: PKGBUILD 30062 2009-03-16 01:14:26Z eric $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+# Contributor: Ben <ben@benmazer.ner>
+
+pkgname=fluxter
+pkgver=0.1.0
+pkgrel=4
+pkgdesc="A workspace pager for fluxbox"
+arch=('i686' 'x86_64')
+url="http://benedict.isomedia.com/homes/stevencooper/projects/fluxter.html"
+license=('GPL')
+depends=('gcc-libs' 'libx11' 'libsm')
+source=(http://benedict.isomedia.com/homes/stevencooper/files/${pkgname}-${pkgver}.tar.gz)
+md5sums=('6d18553220e8fc33c54762d2e7d31528')
+sha1sums=('d0da4759a21fdadc8a6457195c87b6648b5d69bc')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr || return 1
+ make || return 1
+ make DESTDIR=${pkgdir} install || return 1
+}
diff --git a/extra/folks/PKGBUILD b/extra/folks/PKGBUILD
new file mode 100644
index 000000000..db0966b8d
--- /dev/null
+++ b/extra/folks/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: PKGBUILD 97061 2010-10-26 09:12:29Z ibiru $
+# Maintainer: Ionut Biru <ibiru@archlinux.org>
+pkgname=folks
+pkgver=0.2.1
+pkgrel=1
+pkgdesc="Library to aggregates people into metacontacts "
+arch=(i686 x86_64)
+url="http://telepathy.freedesktop.org/wiki/Folks"
+license=('LGPL2.1')
+depends=('telepathy-glib>=0.12.1' 'libgee>=0.6.0' 'libxml2>=2.7.7')
+makedepends=('gobject-introspection' 'vala')
+options=('!libtool')
+source=(http://ftp.gnome.org/pub/GNOME/sources/${pkgname}/0.2/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('f8eeeb6a6974416d4db1ab6b18187173fb6ff4ec7830bece379dfba9b25f2a29')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="$pkgdir" install
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/extra/fontconfig/29-replace-bitmap-fonts.conf b/extra/fontconfig/29-replace-bitmap-fonts.conf
new file mode 100644
index 000000000..7ac4483c4
--- /dev/null
+++ b/extra/fontconfig/29-replace-bitmap-fonts.conf
@@ -0,0 +1,37 @@
+<?xml version="1.0"?>
+<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+<fontconfig>
+ <!-- Replace generic bitmap font names by generic font families.
+ These font-families will get replaced by other rules and
+ default to scaled ones. -->
+ <match target="pattern" name="family">
+ <test name="family" qual="any">
+ <string>Helvetica</string>
+ </test>
+ <edit mode="assign" name="family">
+ <string>Arial</string>
+ <string>Liberation Sans</string>
+ <string>sans-serif</string>
+ </edit>
+ </match>
+ <match target="pattern" name="family">
+ <test name="family" qual="any">
+ <string>Courier</string>
+ </test>
+ <edit mode="assign" name="family">
+ <string>Courier New</string>
+ <string>Liberation Mono</string>
+ <string>monospace</string>
+ </edit>
+ </match>
+ <match target="pattern" name="family">
+ <test name="family" qual="any">
+ <string>Times</string>
+ </test>
+ <edit mode="assign" name="family">
+ <string>Times New Roman</string>
+ <string>Liberation Serif</string>
+ <string>serif</string>
+ </edit>
+ </match>
+</fontconfig>
diff --git a/extra/fontconfig/30-urw-aliases.patch b/extra/fontconfig/30-urw-aliases.patch
new file mode 100644
index 000000000..8077b869e
--- /dev/null
+++ b/extra/fontconfig/30-urw-aliases.patch
@@ -0,0 +1,13 @@
+--- a/conf.d/30-urw-aliases.conf 2009-08-06 16:23:57.000000000 +0100
++++ b/conf.d/30-urw-aliases.conf 2009-08-06 16:25:07.000000000 +0100
+@@ -29,6 +29,10 @@
+ <family>Zapf Dingbats</family>
+ <accept><family>Dingbats</family></accept>
+ </alias>
++ <alias binding="same">
++ <family>ZapfDingbats</family>
++ <accept><family>Dingbats</family></accept>
++ </alias>
+ <match target="pattern">
+ <test name="family">
+ <string>Symbol</string>
diff --git a/extra/fontconfig/PKGBUILD b/extra/fontconfig/PKGBUILD
new file mode 100644
index 000000000..701f308a0
--- /dev/null
+++ b/extra/fontconfig/PKGBUILD
@@ -0,0 +1,35 @@
+# $Id: PKGBUILD 59982 2009-11-29 20:19:34Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+pkgname=fontconfig
+pkgver=2.8.0
+pkgrel=1
+pkgdesc="A library for configuring and customizing font access"
+arch=(i686 x86_64)
+url="http://www.fontconfig.org/release/"
+license=('custom')
+depends=('expat>=2.0.1' 'freetype2>=2.3.11')
+options=('!libtool')
+install=fontconfig.install
+source=(http://www.fontconfig.org/release/${pkgname}-${pkgver}.tar.gz
+ 29-replace-bitmap-fonts.conf
+ 30-urw-aliases.patch)
+md5sums=('77e15a92006ddc2adbb06f840d591c0e'
+ 'f6b67e8cc79197ed6abd4701911e83da'
+ '51bc6cb633b50f3c28793361738aac5b')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i "${srcdir}/30-urw-aliases.patch" || return 1
+ # enable Position Independent Code for prelinking
+ export CFLAGS="${CFLAGS} -fPIC"
+ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+ install -m644 "${srcdir}/29-replace-bitmap-fonts.conf" \
+ "${pkgdir}/etc/fonts/conf.avail" || return 1
+ rm -f ${pkgdir}/etc/fonts/conf.d/*.conf
+
+ #Install license
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1
+}
diff --git a/extra/fontconfig/fontconfig.install b/extra/fontconfig/fontconfig.install
new file mode 100644
index 000000000..20feb6e52
--- /dev/null
+++ b/extra/fontconfig/fontconfig.install
@@ -0,0 +1,100 @@
+configs=('20-fix-globaladvance.conf'
+ '20-unhint-small-vera.conf'
+ '29-replace-bitmap-fonts.conf'
+ '30-metric-aliases.conf'
+ '30-urw-aliases.conf'
+ '40-nonlatin.conf'
+ '45-latin.conf'
+ '49-sansserif.conf'
+ '50-user.conf'
+ '51-local.conf'
+ '60-latin.conf'
+ '65-fonts-persian.conf'
+ '65-nonlatin.conf'
+ '69-unifont.conf'
+ '80-delicious.conf'
+ '90-synthetic.conf')
+
+post_install() {
+ echo -n "updating font cache... "
+ /sbin/ldconfig -r .
+ pushd /etc/fonts/conf.d > /dev/null
+ for config in "${configs[@]}"; do
+ ln -sf ../conf.avail/${config} .
+ done
+ popd > /dev/null
+ /usr/bin/fc-cache -f
+ echo "done."
+}
+
+post_upgrade() {
+ rm -f /etc/fonts/conf.d/10-bitmaps.conf
+ cat << _EOF
+
+===> Important Fontconfig configuration change <===
+
+ The way fontconfig is configured has been changed.
+ Configuration is done via /etc/fonts/conf.avail and conf.d.
+ Read /etc/fonts/conf.d/README for more information.
+
+ Configuration via /etc/fonts/local.conf is still possible,
+ but is no longer recommended for options available in conf.avail.
+
+_EOF
+
+ if [ `vercmp 2.4.1-1 $2` -gt 0 ]; then
+ # Upgrade from old version, place all symlinks. pre-symlink package version
+ echo -n "Linking configuration files... "
+ pushd /etc/fonts/conf.d > /dev/null
+ for config in "${configs[@]}"; do
+ ln -sf ../conf.avail/${config} .
+ done
+ popd > /dev/null
+ echo "done."
+ fi
+
+ if [ `vercmp 2.6.0-1 $2` -gt 0 ]; then
+ # pre-2.6.0 versions have missing config
+ echo -n "Adding missing configuration files... "
+ pushd /etc/fonts/conf.d > /dev/null
+ ln -sf ../conf.avail/30-metric-aliases.conf .
+ ln -sf ../conf.avail/40-nonlatin.conf .
+ ln -sf ../conf.avail/45-latin.conf .
+ popd > /dev/null
+ echo "done."
+ fi
+
+ # Remove dead links
+ echo -n "Removing outdated configuration files... "
+ for config in /etc/fonts/conf.d/*; do
+ if [ ! -f ${config} ]; then
+ rm -f ${config}
+ fi
+ done
+ echo "done."
+
+ echo -n "updating font cache... "
+ /usr/bin/fc-cache -f
+ echo "done."
+}
+
+pre_upgrade() {
+ # Link new config files not present on system yet
+ echo -n "Symlinking new configuration files... "
+ pushd /etc/fonts/conf.d > /dev/null
+ for config in "${configs[@]}"; do
+ if [ ! -f ../conf.avail/${config} ]; then
+ ln -sf ../conf.avail/${config} .
+ fi
+ done
+ popd > /dev/null
+ echo "done."
+}
+
+post_remove() {
+ pushd /etc/fonts/conf.d > /dev/null
+ for config in "${configs[@]}"; do
+ rm -f ${config}
+ done
+ popd > /dev/null
+}
diff --git a/extra/fontforge/PKGBUILD b/extra/fontforge/PKGBUILD
new file mode 100644
index 000000000..ce36e895a
--- /dev/null
+++ b/extra/fontforge/PKGBUILD
@@ -0,0 +1,38 @@
+# $Id: PKGBUILD 110943 2011-02-23 09:57:15Z bisson $
+# Maintainer: Gaetan Bisson <bisson@archlinux.org>
+# Contributor: Eric Belanger <eric@archlinux.org>
+# Contributor: William Rea <sillywilly@gmail.com>
+
+pkgname=fontforge
+pkgver=20110222
+pkgrel=1
+pkgdesc='Outline and bitmap font editor'
+arch=('i686' 'x86_64')
+url='http://fontforge.sourceforge.net'
+license=('BSD')
+depends=('libxkbui' 'libxi' 'libxml2' 'pango' 'giflib' 'libtiff' 'python2')
+options=('!libtool' '!makeflags')
+source=("http://downloads.sourceforge.net/${pkgname}/${pkgname}_full-${pkgver}.tar.bz2")
+sha1sums=('8fada07647f102351bb1d7d1c4da487356e7142f')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ sed -i 's/python /python2 /g' Makefile.dynamic.in
+ export CFLAGS="${CFLAGS// -O2 / -O1 }" # on i686, -O2 yields FS#20430
+ ./configure \
+ --prefix=/usr \
+ --mandir=/usr/share/man \
+ --enable-type3 \
+ --enable-double \
+ --enable-devicetables \
+ --with-regular-link \
+ --with-python=python2 \
+ --enable-pyextension
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+ install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+}
diff --git a/extra/foobillard/03_bugfixes b/extra/foobillard/03_bugfixes
new file mode 100644
index 000000000..99f282b10
--- /dev/null
+++ b/extra/foobillard/03_bugfixes
@@ -0,0 +1,36 @@
+Index: foobillard-3.0a/src/ball.c
+===================================================================
+--- foobillard-3.0a.orig/src/ball.c 2006-10-12 16:42:39.000000000 +0200
++++ foobillard-3.0a/src/ball.c 2006-10-12 16:42:48.000000000 +0200
+@@ -1821,6 +1821,7 @@
+ } else if( options_cuberef && cuberef_binds!=0 ){
+ glBindTexture(GL_TEXTURE_CUBE_MAP_ARB, cuberef_binds[i]);
+ #ifdef GL_VERTEX_PROGRAM_NV
++#ifdef USE_BALL_FRESNEL
+ {
+ myvec cam_pos2;
+ // cam_pos2=vec_scale(vec_unit(vec_diff(cam_pos,balls.ball[i].r)),BALL_D/2.5);
+@@ -1829,6 +1830,7 @@
+ BALL_D/2.0,BALL_D/2.5,0,0 );
+ }
+ #endif
++#endif
+ draw_ball(&balls.ball[i],cam_pos,cam_FOV,win_width,0);
+ }else{
+ draw_ball(&balls.ball[i],cam_pos,cam_FOV,win_width,0);
+Index: foobillard-3.0a/src/evaluate_move.c
+===================================================================
+--- foobillard-3.0a.orig/src/evaluate_move.c 2006-10-12 16:42:43.000000000 +0200
++++ foobillard-3.0a/src/evaluate_move.c 2006-10-12 16:42:48.000000000 +0200
+@@ -385,6 +385,11 @@
+ int ball_out;
+ int other_player=(act_player==1)?0:1;
+ int b1hit = BM_get_1st_ball_hit(); if (b1hit>=8) b1hit=1;
++ if(st.to_play==SN_DONE)
++ {
++ BM_reset_move_info();
++ return;
++ }
+
+ if( player[act_player].place_cue_ball ) player[act_player].place_cue_ball=0;
+ printf("EVAL start\n");
diff --git a/extra/foobillard/05_foul_explanation b/extra/foobillard/05_foul_explanation
new file mode 100644
index 000000000..af89c5e95
--- /dev/null
+++ b/extra/foobillard/05_foul_explanation
@@ -0,0 +1,262 @@
+Index: foobillard-3.0a/src/billard3d.c
+===================================================================
+--- foobillard-3.0a.orig/src/billard3d.c 2006-10-12 16:44:17.000000000 +0200
++++ foobillard-3.0a/src/billard3d.c 2006-10-12 16:44:31.000000000 +0200
+@@ -331,6 +331,8 @@
+ static textObj * winner_name_text_obj;
+ static textObj * winner_text_obj;
+
++textObj * last_fault_text;
++
+ #ifndef _WIN32
+
+ enum optionType
+@@ -3322,6 +3324,13 @@
+ if( player[act_player].text != 0 ){
+ textObj_draw( player[act_player].text );
+ }
++ /* last fault */
++ if (strcmp("x", last_fault_text->str)!=0) {
++ glTranslatef(0.0, 70.0, 0.0);
++ textObj_draw(last_fault_text);
++ glTranslatef(0.0,-70.0,0.0);
++ }
++
+ glTranslatef(0,30,0);
+ if (gametype==GAME_8BALL){
+ switch(player[act_player].half_full){
+@@ -5197,6 +5206,9 @@
+ }
+ DPRINTF("created winner text obj's\n");
+
++
++ last_fault_text = textObj_new( "x", options_help_fontname, 20 );
++
+ init_menu();
+
+ sys_set_timer(frametime_ms, Idle_timer); /* assure a framerate of max 50 fps (1frame/20ms) */
+Index: foobillard-3.0a/src/evaluate_move.c
+===================================================================
+--- foobillard-3.0a.orig/src/evaluate_move.c 2006-10-12 16:44:22.000000000 +0200
++++ foobillard-3.0a/src/evaluate_move.c 2006-10-12 16:44:31.000000000 +0200
+@@ -4,6 +4,9 @@
+ ** Copyright (C) 2001 Florian Berger
+ ** Email: harpin_floh@yahoo.de, florian.berger@jk.uni-linz.ac.at
+ **
++** Small changes to output a reason why the last shot was a fault by
++** Thorsten Gunkel <tgunkel-lists@tgunkel.de>
++**
+ ** This program is free software; you can redistribute it and/or modify
+ ** it under the terms of the GNU General Public License Version 2 as
+ ** published by the Free Software Foundation;
+@@ -108,11 +111,12 @@
+
+ /* wenn fremde kugel zuerst angespielt -> foul */
+ first_ball_hit=BM_get_1st_ball_hit();
+- if( player[act_player].half_full == BALL_FULL ){
+- if ( first_ball_hit>8 && first_ball_hit<16 ) foul=1;
+- }
+- if( player[act_player].half_full == BALL_HALF ){
+- if ( first_ball_hit>0 && first_ball_hit<8 ) foul=1;
++ if(
++ ( player[act_player].half_full == BALL_FULL && first_ball_hit>8 && first_ball_hit<16 ) ||
++ ( player[act_player].half_full == BALL_HALF && first_ball_hit>0 && first_ball_hit<8 )
++ ){
++ foul=1;
++ textObj_setText(last_fault_text, "First ball hit was not one of yours");
+ }
+
+ /* erst an 2. stelle, da oben kein foul bei break */
+@@ -146,7 +150,10 @@
+ }
+ }
+ }
+- if(eigene_da) foul=1;
++ if(eigene_da){
++ foul=1;
++ textObj_setText(last_fault_text, "You hit the 8-Ball too soon");
++ }
+ }
+
+ /* wenn angespielte kugel im strafraum */
+@@ -154,6 +161,7 @@
+ in_strafraum(BM_get_1st_ball_hit_pos()) &&
+ !BM_get_non_strafraum_wall_hit_before_1st_ball(in_strafraum) ){
+ foul=1;
++ textObj_setText(last_fault_text, "You hit a ball not behind the head string");
+ }
+
+ /* wenn eigene rein naechster */
+@@ -169,7 +177,10 @@
+ }
+
+
+- if( BM_get_balls_hit()==0 ) foul=1;
++ if( BM_get_balls_hit()==0 ){
++ foul=1;
++ textObj_setText(last_fault_text, "No Ball hit");
++ }
+
+ /* wenn weisse rein */
+ if( BM_get_white_out() ){
+@@ -177,6 +188,7 @@
+ foul=1;
+ balls.ball[0].in_game=1;
+ balls.ball[0].in_hole=0;
++ textObj_setText(last_fault_text, "White ball potted");
+ }
+
+ /* wenn foul */
+@@ -188,6 +200,8 @@
+ balls.ball[0].w=vec_xyz(0.0,0.0,0.0);
+ balls.ball[0].r=vec_xyz(0.0,-TABLE_L/4.0,0.0);
+ // balls.ball[0].r=vec_xyz(x,y,0.0);
++ } else {
++ textObj_setText(last_fault_text, "x");
+ }
+
+ /* if 8 out */
+@@ -221,6 +235,7 @@
+ else
+ {
+ player[(act_player==1)?0:1].winner=1;
++ textObj_setText(last_fault_text, "8 ball potted too soon");
+ }
+
+ }
+@@ -277,9 +292,15 @@
+ nextplayer=0;
+ }
+
+- if( BM_get_balls_hit()==0 ) foul=1;
+-
+- if( BM_get_1st_ball_hit()!=minball ) foul=1;
++ if( BM_get_balls_hit()==0 ){
++ textObj_setText(last_fault_text, "No Ball hit");
++ foul=1;
++ } else {
++ if( BM_get_1st_ball_hit()!=minball ){
++ textObj_setText(last_fault_text, "First ball hit was not the lowest");
++ foul=1;
++ }
++ }
+
+ /* wenn weisse rein */
+ if( BM_get_white_out() ){
+@@ -287,6 +308,7 @@
+ nextplayer=1;
+ pballs->ball[0].in_game=1;
+ pballs->ball[0].in_hole=0;
++ textObj_setText(last_fault_text, "White ball is potted");
+ }
+
+ /* wenn foul - weisse platzieren */
+@@ -297,6 +319,8 @@
+ pballs->ball[0].v=vec_xyz(0.0,0.0,0.0);
+ pballs->ball[0].w=vec_xyz(0.0,0.0,0.0);
+ pballs->ball[0].r=vec_xyz(0,-TABLE_L/4.0,0.0);
++ } else {
++ textObj_setText(last_fault_text, "x");
+ }
+
+ fprintf(stderr,"foul:%d, nextplayer:%d, BM_get_ball_out(9):%d\n",foul,nextplayer,BM_get_ball_out(9));
+@@ -409,6 +433,7 @@
+ act_penalty =MAX(act_penalty,(BM_get_1st_ball_hit()<=7?BM_get_1st_ball_hit():4));
+ spot_snooker_ball(pballs,0);
+ player[other_player].place_cue_ball=1;
++ textObj_setText(last_fault_text, "White ball is potted");
+ }
+
+ switch(st.to_play)
+@@ -420,6 +445,11 @@
+ foul=1;
+ act_penalty=MAX(act_penalty,b1hit);
+ printf("EVAL foul 1\n");
++ if( BM_get_balls_hit()==0 ){
++ textObj_setText(last_fault_text, "No Ball hit");
++ } else {
++ textObj_setText(last_fault_text, "First ball hit was not a red one");
++ }
+ }
+ i=1;
+ while((ball_out=BM_get_nth_ball_out(i++))>=0)
+@@ -434,6 +464,11 @@
+ act_penalty=MAX(act_penalty,ball_out);
+ foul=1;
+ printf("EVAL foul 2\n");
++ if (BM_get_white_out()){
++ textObj_setText(last_fault_text, "White ball potted");
++ } else {
++ textObj_setText(last_fault_text, "Potted ball was not a red one");
++ }
+ }
+ }
+ for(i=2;i<8;i++)
+@@ -449,6 +484,11 @@
+ foul=1;
+ printf("EVAL foul 3\n");
+ act_penalty=MAX(act_penalty,7);
++ if( BM_get_balls_hit()==0 ){
++ textObj_setText(last_fault_text, "No Ball hit");
++ } else {
++ textObj_setText(last_fault_text, "First ball hit was not a colored one");
++ }
+ }
+ color_to_pot=b1hit;
+ i=1;
+@@ -464,6 +504,11 @@
+ foul=1;
+ printf("EVAL foul 4\n");
+ act_penalty=MAX(act_penalty,ball_out==1?7:ball_out);
++ if (BM_get_white_out()){
++ textObj_setText(last_fault_text, "White ball potted");
++ } else {
++ textObj_setText(last_fault_text, "Potted ball was not a colored one");
++ }
+ }
+ }
+ if(red_balls_are_in_game)
+@@ -490,6 +535,11 @@
+ printf("EVAL foul 5\n");
+ act_penalty=MAX(act_penalty,b1hit);
+ act_penalty=MAX(act_penalty,color_to_pot);
++ if( BM_get_balls_hit()==0 ){
++ textObj_setText(last_fault_text, "No Ball hit");
++ } else {
++ textObj_setText(last_fault_text, "First ball hit was not the correct one");
++ }
+ }
+ i=1;
+ while((ball_out=BM_get_nth_ball_out(i++))>=0)
+@@ -505,6 +555,11 @@
+ printf("EVAL foul 6\n");
+ act_penalty=MAX(act_penalty,b1hit);
+ act_penalty=MAX(act_penalty,color_to_pot);
++ if (BM_get_white_out()){
++ textObj_setText(last_fault_text, "White ball potted");
++ } else {
++ textObj_setText(last_fault_text, "Potted ball was not the correct one");
++ }
+ }
+ }
+ if(!foul && act_score>0) st.to_play++;
+@@ -528,6 +583,7 @@
+ {
+ player[act_player].score += act_score ;
+ printf("EVAL no foul\n");
++ textObj_setText(last_fault_text, "x");
+ }
+ if(act_score==0 || foul)
+ {
+Index: foobillard-3.0a/src/evaluate_move.h
+===================================================================
+--- foobillard-3.0a.orig/src/evaluate_move.h 2006-10-12 16:44:24.000000000 +0200
++++ foobillard-3.0a/src/evaluate_move.h 2006-10-12 16:44:31.000000000 +0200
+@@ -31,6 +31,7 @@
+ BallsType * pballs, int * pqueue_view, float * pXque );
+ #endif
+
++extern textObj * last_fault_text;
+
+ void evaluate_last_move_8ball ( struct Player * player, int * actual_player,
+ BallsType * pballs, int * pqueue_view, float * pXque );
diff --git a/extra/foobillard/06_show_ball_to_hit b/extra/foobillard/06_show_ball_to_hit
new file mode 100644
index 000000000..9c49f58cc
--- /dev/null
+++ b/extra/foobillard/06_show_ball_to_hit
@@ -0,0 +1,255 @@
+Index: foobillard-3.0a/src/billard.c
+===================================================================
+--- foobillard-3.0a.orig/src/billard.c 2006-10-12 16:45:04.000000000 +0200
++++ foobillard-3.0a/src/billard.c 2006-10-12 16:45:23.000000000 +0200
+@@ -31,6 +31,8 @@
+ void * (*billard_malloc)( size_t size ) = malloc;
+ void (*billard_free)( void * ptr ) = free;
+
++SnookerState snooker_state={SN_PLAY_RED};
++
+ void setfunc_create_scene( void (*func)( BallsType * balls ) )
+ {
+ create_scene=func;
+Index: foobillard-3.0a/src/billard.h
+===================================================================
+--- foobillard-3.0a.orig/src/billard.h 2006-10-12 16:45:05.000000000 +0200
++++ foobillard-3.0a/src/billard.h 2006-10-12 16:45:23.000000000 +0200
+@@ -76,9 +76,30 @@
+ #define BALL_HALF 2
+ #define BALL_ANY 0
+
++typedef enum
++{
++ SN_PLAY_RED,
++ SN_PLAY_ANY_COLOR,
++ SN_PLAY_YELLOW,
++ SN_PLAY_GREEN,
++ SN_PLAY_BROWN,
++ SN_PLAY_BLUE,
++ SN_PLAY_PINK,
++ SN_PLAY_BLACK,
++ SN_DONE
++}
++SnookerBallToPlay;
++
++typedef struct
++{
++ SnookerBallToPlay to_play;
++}
++SnookerState;
++
+ #ifndef BILLARD_C
+ extern void (*create_scene)( BallsType * balls );
+ extern void (*create_walls)( BordersType * walls );
++extern SnookerState snooker_state;
+ #endif
+
+ void create_0hole_walls( BordersType * walls ); /* carambol */
+Index: foobillard-3.0a/src/billard3d.c
+===================================================================
+--- foobillard-3.0a.orig/src/billard3d.c 2006-10-12 16:45:08.000000000 +0200
++++ foobillard-3.0a/src/billard3d.c 2006-10-12 16:45:23.000000000 +0200
+@@ -829,6 +829,7 @@
+ player[act_player].place_cue_ball=1;
+ human_player_roster.player[0].cue_ball=0; human_player_roster.player[1].cue_ball=0;
+ human_player_roster.player[act_player].place_cue_ball=1;
++ snooker_state.to_play=SN_PLAY_RED;
+ }
+ }
+
+@@ -1787,6 +1788,7 @@
+ /* score text */
+ for(i=0;i<2;i++){
+ char str[256];
++ char *color;
+ switch(gametype){
+ case GAME_8BALL: strcpy(str,"0"); break;
+ case GAME_9BALL:
+@@ -1805,7 +1807,44 @@
+ sprintf( str, "%d", player[i].score );
+ break;
+ case GAME_SNOOKER:
+- sprintf( str, "%c%03d %s", (player[i].score<0)?'-':'+', abs(player[i].score), player[i].snooker_on_red ? "red":"col" );
++ switch(snooker_state.to_play)
++ {
++ case SN_PLAY_RED:
++ color="red";
++ break;
++ case SN_PLAY_ANY_COLOR:
++ color="color";
++ break;
++ case SN_PLAY_YELLOW:
++ color="yellow";
++ break;
++ case SN_PLAY_GREEN:
++ color="green";
++ break;
++ case SN_PLAY_BROWN:
++ color="brown";
++ break;
++ case SN_PLAY_BLUE:
++ color="blue";
++ break;
++ case SN_PLAY_PINK:
++ color="pink";
++ break;
++ case SN_PLAY_BLACK:
++ color="black";
++ break;
++ case SN_DONE:
++ color="";
++ break;
++ }
++ if(i==act_player)
++ {
++ sprintf( str, "%.3d %s", player[i].score, color);
++ }
++ else
++ {
++ sprintf( str, "%.3d", player[i].score);
++ }
+ break;
+ }
+ textObj_setText( player[i].score_text, str );
+Index: foobillard-3.0a/src/evaluate_move.c
+===================================================================
+--- foobillard-3.0a.orig/src/evaluate_move.c 2006-10-12 16:45:12.000000000 +0200
++++ foobillard-3.0a/src/evaluate_move.c 2006-10-12 16:45:23.000000000 +0200
+@@ -30,26 +30,6 @@
+
+ #define MAX(x,y) ((x)>(y)?(x):(y));
+
+-typedef enum
+-{
+- SN_PLAY_RED,
+- SN_PLAY_ANY_COLOR,
+- SN_PLAY_YELLOW,
+- SN_PLAY_GREEN,
+- SN_PLAY_BROWN,
+- SN_PLAY_BLUE,
+- SN_PLAY_PINK,
+- SN_PLAY_BLACK,
+- SN_DONE
+-}
+-SnookerBallToPlay;
+-
+-typedef struct
+-{
+- SnookerBallToPlay to_play;
+-}
+-SnookerState;
+-
+
+ void spot_snooker_ball(BallsType *balls,int nr);
+
+@@ -400,7 +380,6 @@
+ #define act_player (*pact_player)
+ #define IS_RED(x) ( x==1 || x>=8 )
+ int red_balls_are_in_game=0;
+- static SnookerState st={SN_PLAY_RED};
+ int color_to_pot;
+ int i;
+ int act_score=0;
+@@ -409,7 +388,7 @@
+ int ball_out;
+ int other_player=(act_player==1)?0:1;
+ int b1hit = BM_get_1st_ball_hit(); if (b1hit>=8) b1hit=1;
+- if(st.to_play==SN_DONE)
++ if(snooker_state.to_play==SN_DONE)
+ {
+ BM_reset_move_info();
+ return;
+@@ -417,7 +396,7 @@
+
+ if( player[act_player].place_cue_ball ) player[act_player].place_cue_ball=0;
+ printf("EVAL start\n");
+- printf("EVAL to_play=%d\n",st.to_play);
++ printf("EVAL to_play=%d\n",snooker_state.to_play);
+ printf("EVAL b1hit=%d\n",b1hit);
+ for(i=0;i<pballs->nr;i++){
+ if( IS_RED(pballs->ball[i].nr) && pballs->ball[i].in_game ){
+@@ -436,7 +415,7 @@
+ textObj_setText(last_fault_text, "White ball is potted");
+ }
+
+- switch(st.to_play)
++ switch(snooker_state.to_play)
+ {
+ case SN_PLAY_RED:
+ color_to_pot=1;
+@@ -476,7 +455,7 @@
+ if( BM_get_ball_out(i))
+ spot_snooker_ball(pballs,i);
+ }
+- st.to_play=SN_PLAY_ANY_COLOR;
++ snooker_state.to_play=SN_PLAY_ANY_COLOR;
+ break;
+ case SN_PLAY_ANY_COLOR:
+ if(b1hit==1)
+@@ -512,9 +491,9 @@
+ }
+ }
+ if(red_balls_are_in_game)
+- st.to_play=SN_PLAY_RED;
++ snooker_state.to_play=SN_PLAY_RED;
+ else
+- st.to_play=SN_PLAY_YELLOW;
++ snooker_state.to_play=SN_PLAY_YELLOW;
+
+ for(i=2;i<8;i++)
+ {
+@@ -528,7 +507,7 @@
+ case SN_PLAY_BLUE:
+ case SN_PLAY_PINK:
+ case SN_PLAY_BLACK:
+- color_to_pot=st.to_play;
++ color_to_pot=snooker_state.to_play;
+ if(b1hit!=color_to_pot)
+ {
+ foul=1;
+@@ -562,9 +541,9 @@
+ }
+ }
+ }
+- if(!foul && act_score>0) st.to_play++;
++ if(!foul && act_score>0) snooker_state.to_play++;
+
+- for(i=st.to_play;i<8;i++)
++ for(i=snooker_state.to_play;i<8;i++)
+ {
+ if( BM_get_ball_out(i))
+ spot_snooker_ball(pballs,i);
+@@ -590,13 +569,13 @@
+ printf("EVAL next player\n");
+ if(red_balls_are_in_game)
+ {
+- st.to_play=SN_PLAY_RED;
++ snooker_state.to_play=SN_PLAY_RED;
+ }
+ else
+ {
+- if(st.to_play<=SN_PLAY_ANY_COLOR)
++ if(snooker_state.to_play<=SN_PLAY_ANY_COLOR)
+ {
+- st.to_play=SN_PLAY_YELLOW;
++ snooker_state.to_play=SN_PLAY_YELLOW;
+ }
+ }
+ player[act_player].queue_view=*pqueue_view;
+@@ -605,11 +584,11 @@
+ *pqueue_view=player[act_player].queue_view;
+ }
+
+- player[act_player].snooker_on_red=st.to_play==SN_PLAY_RED;
+- player[act_player].snooker_next_color=st.to_play;
+- printf("EVAL to_play=%d\n",st.to_play);
++ player[act_player].snooker_on_red=snooker_state.to_play==SN_PLAY_RED;
++ player[act_player].snooker_next_color=snooker_state.to_play;
++ printf("EVAL to_play=%d\n",snooker_state.to_play);
+
+- if(st.to_play==SN_DONE)
++ if(snooker_state.to_play==SN_DONE)
+ {
+ int other_player;
+
diff --git a/extra/foobillard/ChangeLog b/extra/foobillard/ChangeLog
new file mode 100644
index 000000000..0b82e7aec
--- /dev/null
+++ b/extra/foobillard/ChangeLog
@@ -0,0 +1,16 @@
+2010-07-10 Eric Belanger <eric@archlinux.org>
+
+ * foobillard 3.0a-6
+ * Fixed hang after a draw in snooker (close FS#18631)
+ * Removed unneeded libxaw and libxi depends
+
+2010-01-18 Eric Belanger <eric@archlinux.org>
+
+ * foobillard 3.0a-4
+ * Rebuilt for libpng 1.4 and libjpeg 8
+ * Added bug fix and improvement patches
+ * Fixed license
+ * Updated url
+ * Added man page
+ * Added desktop file and icon
+ * Added ChangeLog
diff --git a/extra/foobillard/PKGBUILD b/extra/foobillard/PKGBUILD
new file mode 100644
index 000000000..decb5c49d
--- /dev/null
+++ b/extra/foobillard/PKGBUILD
@@ -0,0 +1,46 @@
+# $Id: PKGBUILD 85242 2010-07-11 02:23:37Z eric $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=foobillard
+pkgver=3.0a
+pkgrel=6
+pkgdesc="An OpenGL billiard game for Linux"
+arch=('i686' 'x86_64')
+url="http://foobillard.sourceforge.net/"
+license=('GPL2' 'custom')
+depends=('sdl' 'freetype2' 'libpng' 'mesa')
+changelog=ChangeLog
+source=(ftp://ftp.archlinux.org/other/${pkgname}/${pkgname}-${pkgver}.tar.gz \
+ foobillard.desktop foobillard.png 03_bugfixes 05_foul_explanation \
+ 06_show_ball_to_hit snooker_reset.patch snooker_draw.patch)
+md5sums=('c2d92edeaaf8bfb18aa26f1c79931b7d' '436f76ad44910a2524a38ff158bc32fc'\
+ '4bb47566197a252388bf49583536dd4d' '4400c87674b8a442c0cbbd619e118cd3'\
+ '0b79b9b71bebd7e0e1584f0593cc348d' 'eed13569ab099054619137eabce96045'\
+ '329ddc735af17f33df99c5fe7ff672b9' '97f04be3ad4a0f78c6d7a8b658099a5d')
+sha1sums=('1caa51a201b55883640b5c5b1e9fde20fc71a095' '7e820e047497eae5f3d495cc8c61870d7b438a2e'\
+ '67db7b2a96784ff3baaeca9610414376210e5c49' '119aa2bfcfb2b074e0d9b441441808c22eacf625'\
+ '347535e3db4b04caab2f040779576229b2ce71ac' '11cff3e62fccd101cc85d58cc0d0eb4a1b99670f'\
+ '405a64db7e92e7ba046dd9007d4bf1433914ef79' 'a3151458667488117524ce8948b0d101657ad425')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ sed -i -e 's/-lXaw//' -e 's/-lXi//' src/Makefile.in
+ patch -p1 < ../03_bugfixes
+ patch -p1 < ../05_foul_explanation
+ patch -p1 < ../06_show_ball_to_hit
+ patch -p0 < ../snooker_reset.patch
+ patch -p0 < ../snooker_draw.patch
+
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+ install -D -m644 foobillard.6 "${pkgdir}/usr/share/man/man6/foobillard.6"
+ install -D -m644 README.FONTS "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE.FONTS"
+ install -D -m644 ../foobillard.desktop "${pkgdir}/usr/share/applications/foobillard.desktop"
+ install -D -m644 ../foobillard.png "${pkgdir}/usr/share/pixmaps/foobillard.png"
+}
diff --git a/extra/foobillard/foobillard.desktop b/extra/foobillard/foobillard.desktop
new file mode 100644
index 000000000..1028c19f5
--- /dev/null
+++ b/extra/foobillard/foobillard.desktop
@@ -0,0 +1,9 @@
+[Desktop Entry]
+Name=Foobillard
+Comment=A 3D billiards game using OpenGL
+Exec=foobillard
+Icon=foobillard.png
+Terminal=false
+Type=Application
+Categories=Game;SportsGame;
+StartupNotify=false
diff --git a/extra/foobillard/foobillard.png b/extra/foobillard/foobillard.png
new file mode 100644
index 000000000..c57fadb30
--- /dev/null
+++ b/extra/foobillard/foobillard.png
Binary files differ
diff --git a/extra/foobillard/snooker_draw.patch b/extra/foobillard/snooker_draw.patch
new file mode 100644
index 000000000..1d45e9498
--- /dev/null
+++ b/extra/foobillard/snooker_draw.patch
@@ -0,0 +1,48 @@
+Index: src/evaluate_move.c
+===================================================================
+--- src/evaluate_move.c (revision 6)
++++ src/evaluate_move.c (working copy)
+@@ -602,6 +602,11 @@
+ player[act_player].winner=0;
+ player[other_player].winner=1;
+ }
++ if(player[act_player].score==player[other_player].score) {
++ player[act_player].winner=1;
++ player[other_player].winner=1;
++ }
++
+ }
+
+ printf("EVAL done\n");
+Index: src/billard3d.c
+===================================================================
+--- src/billard3d.c (revision 6)
++++ src/billard3d.c (working copy)
+@@ -1760,8 +1760,17 @@
+ options_gamemode==options_gamemode_tournament &&
+ (player[0].winner || player[1].winner) )
+ {
+- tournament_evaluate_last_match( &tournament_state );
+- tournament_state.wait_for_next_match=1;
++ if ( player[0].winner == player[1].winner )
++ { // Draw
++ restart_game_common();
++ player[act_player].winner=0;
++ player[other_player].winner=0;
++ }
++ else
++ {
++ tournament_evaluate_last_match( &tournament_state );
++ tournament_state.wait_for_next_match=1;
++ }
+ }
+ } else {
+ int old_cueball_ind;
+@@ -3654,6 +3663,7 @@
+ create_walls( &walls );
+ create_scene( &balls );
+ g_shot_due=1;
++ snooker_state.to_play=SN_PLAY_RED;
+ }
+
+
diff --git a/extra/foobillard/snooker_reset.patch b/extra/foobillard/snooker_reset.patch
new file mode 100644
index 000000000..392226ec3
--- /dev/null
+++ b/extra/foobillard/snooker_reset.patch
@@ -0,0 +1,11 @@
+--- src/billard3d.c 2010-02-27 04:01:40.000000000 -0600
++++ src/billard3d.c 2010-02-27 04:02:59.000000000 -0600
+@@ -1219,6 +1219,8 @@
+ printf("tournament_state_setup_next_match 7\n");
+ queue_view=player[act_player].queue_view;
+ printf("tournament_state_setup_next_match 8\n");
++ snooker_state.to_play = SN_PLAY_RED;
++ printf("tournament_state_setup_next_match 9\n");
+ }
+
+ void create_players_text()
diff --git a/extra/foomatic/PKGBUILD b/extra/foomatic/PKGBUILD
new file mode 100644
index 000000000..8c58575cd
--- /dev/null
+++ b/extra/foomatic/PKGBUILD
@@ -0,0 +1,97 @@
+# $Id: PKGBUILD 103148 2010-12-15 21:11:48Z andyrtr $
+# Maintainer: Andreas Radke <andyrtr@archlinux.org>
+
+pkgbase="foomatic"
+pkgname=('foomatic-db' 'foomatic-filters' 'foomatic-db-engine' 'foomatic-db-nonfree')
+arch=('i686' 'x86_64') # needs to be changed in the subpackages when makepkg will support it
+_snapdate=20101215
+_relver=4.0.6
+pkgver=${_relver}_${_snapdate}
+pkgrel=1
+makedepends=('cups>=1.4.2' 'perl' 'libxml2' 'enscript' 'perl' 'net-snmp' 'bash')
+source=(http://www.linuxprinting.org/download/foomatic/$pkgbase-{filters,db-engine}-${_relver}.tar.gz
+ http://www.linuxprinting.org/download/foomatic/$pkgbase-db-4.0-${_snapdate}.tar.gz
+ http://www.linuxprinting.org/download/foomatic/$pkgbase-db-nonfree-${_snapdate}.tar.gz)
+url="http://www.linuxprinting.org/foomatic.html"
+options=('force' '!emptydirs')
+md5sums=('fd99dac3a36807a47ffa4f9eb15c1b07'
+ '0893a4a9705ffd7305bc50cbb951daf9'
+ 'f801fab0b210cc61f217bede1963cd0e'
+ 'f51e447404b32949057307a1bc4d1b5e')
+md5sums=('9bca3d3d83192a3741a34bd9b1859b1e'
+ 'b34f17b56304b48e3e90c1c6c8f2c287'
+ 'f99807cb4d5da437ddf02c843f92eaca'
+ '21040845f5fcb2bbdfa814bae934fd8d')
+
+build() {
+ /bin/true
+}
+
+package_foomatic-db() {
+
+ pkgdesc="Foomatic - The collected knowledge about printers, drivers, and driver options in XML files, used by foomatic-db-engine to generate PPD files."
+# arch=('any')
+ license=('GPL' 'custom')
+ depends=('perl' 'libxml2')
+ replaces=('foomatic-db-ppd' 'foomatic-db-hpijs')
+ conflicts=('foomatic-db-ppd' 'foomatic-db-hpijs')
+ provides=('foomatic-db-hpijs')
+
+ cd ${srcdir}/${pkgname}-${_snapdate}
+ ./configure --prefix=/usr
+ make DESTDIR=${pkgdir} install || return 1
+ install -v -Dm644 ${srcdir}/${pkgname}-${_snapdate}/COPYING ${pkgdir}/usr/share/licenses/${pkgname}/COPYING || return 1
+}
+
+package_foomatic-filters() {
+
+ pkgdesc="Foomatic - Filter scripts used by the printer spoolers to convert the incoming PostScript data into the printer's native format."
+# arch=('i686' 'x86_64')
+ license=('GPL')
+ backup=(etc/foomatic/filter.conf)
+ depends=('glibc')
+ optdepends=('perl: for the "beh" Backend End Handler used by cups'
+ 'net-snmp: certain (mostly HP) printers need it to work')
+
+# cd ${srcdir}/${pkgname}-${pkgver}
+ cd ${srcdir}/foomatic-filters-${_relver}
+ ./configure --prefix=/usr --sysconfdir=/etc
+ make || return 1
+ make DESTDIR=${pkgdir} install || return 1
+}
+
+package_foomatic-db-engine() {
+
+ pkgdesc="Foomatic - Foomatic's database engine generates PPD files from the data in Foomatic's XML database. It also contains scripts to directly generate print queues and handle jobs."
+# arch=(i686 x86_64)
+ license=('GPL')
+ depends=('perl' 'libxml2' 'foomatic-filters' 'bash')
+
+# cd ${srcdir}/${pkgname}-${pkgver}
+ cd ${srcdir}/foomatic-db-engine-${_relver}
+ ./configure --prefix=/usr
+ make || return 1
+ eval `perl -V:archname`
+ make DESTDIR=${pkgdir} \
+ INSTALLARCHLIB=/usr/lib/perl5/vendor_perl/ \
+ INSTALLSITELIB=/usr/lib/perl5/vendor_perl/ \
+ INSTALLSITEARCH=/usr/lib/perl5/vendor_perl/ install || return 1
+ /usr/bin/find ${pkgdir} -name '.packlist' -delete
+ # fix permissions
+ chmod 755 ${pkgdir}/usr/lib{,/perl5,/perl5/vendor_perl}
+}
+
+package_foomatic-db-nonfree() {
+
+ pkgdesc="Foomatic - database extension consisting of manufacturer-supplied PPD files released under non-free licenses"
+# arch=('any')
+ license=('custom')
+ depends=('perl' 'libxml2' "foomatic-db-engine" 'foomatic-db')
+
+# cd ${srcdir}/${pkgname}-${_snapdate}
+ cd ${srcdir}/foomatic-db-nonfree-${_snapdate}
+ ./configure --prefix=/usr
+ make DESTDIR=${pkgdir} install || return 1
+# install -Dm644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/COPYING || return 1
+ install -Dm644 COPYING ${pkgdir}/usr/share/licenses/foomatic-db-nonfree/COPYING || return 1
+}
diff --git a/extra/fortune-mod/01_all_fortune_all-fix.patch b/extra/fortune-mod/01_all_fortune_all-fix.patch
new file mode 100644
index 000000000..b4175ac81
--- /dev/null
+++ b/extra/fortune-mod/01_all_fortune_all-fix.patch
@@ -0,0 +1,21 @@
+--- fortune/fortune.c.old 2006-03-11 15:33:14.000000000 +0100
++++ fortune/fortune.c 2006-03-11 15:43:16.000000000 +0100
+@@ -974,7 +974,7 @@
+ if (!ret)
+ ret=add_file(percent, fullpathname, NULL, &File_list,
+ &File_tail, NULL);
+- if ( (!ret && fullpathname != locpathname) || strcmp(sp, "all") == 0 )
++ if (!ret && strncmp(fullpathname, locpathname, sizeof(fullpathname)))
+ ret=add_file(percent, locpathname, NULL, &File_list,
+ &File_tail, NULL);
+
+@@ -985,7 +985,8 @@
+ }
+ if (!ret)
+ return FALSE;
+-
++ if (strncmp(fullpathname, locpathname, sizeof(fullpathname)) && strcmp(sp, "all") == 0)
++ add_file(percent, locpathname, NULL, &File_list, &File_tail, NULL);
+ }
+ else
+ if (!add_file(percent, fullpathname, NULL, &File_list,
diff --git a/extra/fortune-mod/LICENSE b/extra/fortune-mod/LICENSE
new file mode 100644
index 000000000..d0ad75977
--- /dev/null
+++ b/extra/fortune-mod/LICENSE
@@ -0,0 +1,35 @@
+/*-
+ * Copyright (c) 1986, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Ken Arnold.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
diff --git a/extra/fortune-mod/PKGBUILD b/extra/fortune-mod/PKGBUILD
new file mode 100644
index 000000000..0737c5ab2
--- /dev/null
+++ b/extra/fortune-mod/PKGBUILD
@@ -0,0 +1,32 @@
+# $Id: PKGBUILD 30775 2009-03-21 22:49:21Z eric $
+# Maintainer: Kevin Piche <kevin@archlinux.org>
+# Contributor: Dale Blount <archlinux@dale.us>
+
+pkgname=fortune-mod
+pkgver=1.99.1
+pkgrel=4
+pkgdesc="The Fortune Cookie Program from BSD games"
+arch=('i686' 'x86_64')
+url="http://www.redellipse.net/code/fortune"
+license=('BSD')
+depends=('recode')
+source=(ftp://ftp.archlinux.org/other/fortune-mod/$pkgname-$pkgver.tar.gz LICENSE 01_all_fortune_all-fix.patch)
+md5sums=('f208805b3b712e32997d7667e0ec52d8' '0217481ae93971296cfb7872157cabb7'\
+ 'e85b073f16dc6f0e8f0ed90044797aa3')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ patch -p0 < ../01_all_fortune_all-fix.patch || return 1
+ make REGEXDEFS='-DHAVE_REGEX_H -DPOSIX_REGEX -DHAVE_STDBOOL' \
+ COOKIEDIR=/usr/share/fortune \
+ LOCALDIR=/usr/local/share/fortune || return 1
+ make COOKIEDIR=/usr/share/fortune fortune/fortune.man || return 1
+ make FORTDIR=$pkgdir/usr/bin \
+ COOKIEDIR=$pkgdir/usr/share/fortune \
+ BINDIR=$pkgdir/usr/sbin \
+ BINMANDIR=$pkgdir/usr/share/man/man1 \
+ FORTMANDIR=$pkgdir/usr/share/man/man6 install || return 1
+ rm $pkgdir/usr/share/fortune/*.u8
+ rm $pkgdir/usr/share/fortune/off/*.u8
+ install -D -m644 ../LICENSE $pkgdir/usr/share/licenses/$pkgname/LICENSE
+}
diff --git a/extra/fping/PKGBUILD b/extra/fping/PKGBUILD
new file mode 100644
index 000000000..409850594
--- /dev/null
+++ b/extra/fping/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 68034 2010-02-10 15:03:09Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=fping
+pkgver=2.4b2
+pkgrel=3
+pkgdesc="A utility to ping multiple hosts at once"
+arch=('i686' 'x86_64')
+url="http://www.fping.com/"
+license=('custom')
+depends=('glibc')
+source=(http://fping.sourceforge.net/download/fping.tar.gz)
+md5sums=('d5e8be59e307cef76bc479e1684df705')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver\_to
+
+ ./configure --prefix=/usr \
+ --mandir=/usr/share/man || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+ install -D -m644 COPYING "${pkgdir}/usr/share/licenses/$pkgname/LICENSE" || return 1
+ chmod 4755 ${pkgdir}/usr/sbin/fping
+}
diff --git a/extra/fprint_demo/PKGBUILD b/extra/fprint_demo/PKGBUILD
new file mode 100644
index 000000000..c03d8e516
--- /dev/null
+++ b/extra/fprint_demo/PKGBUILD
@@ -0,0 +1,21 @@
+# $Id: PKGBUILD 49882 2009-08-16 19:52:26Z jgc $
+# Maintainer: Thomas Baechler <thomas@archlinux.org>
+
+pkgname=fprint_demo
+pkgver=0.4
+pkgrel=2
+pkgdesc="Simple GTK+ application to demonstrate and test libfprint's capabilities"
+arch=('i686' 'x86_64')
+url="http://reactivated.net/fprint/wiki/Main_Page"
+license=('LGPL')
+groups=('fprint')
+depends=('libfprint')
+source=(http://downloads.sourceforge.net/sourceforge/fprint/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('32e663a938e19801bdd17105d5c4d310')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/freealut/PKGBUILD b/extra/freealut/PKGBUILD
new file mode 100644
index 000000000..b334ea987
--- /dev/null
+++ b/extra/freealut/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: PKGBUILD 27261 2009-02-18 02:47:12Z eric $
+# Maintainer: Dorphell
+# Maintainer: Travis Willard <travisw@wmpub.ca>
+# Contributor: Arkamririon <Arkamririon@gmx.net>
+
+pkgname=freealut
+pkgver=1.1.0
+pkgrel=3
+pkgdesc="OpenAL Utility Toolkit (ALUT)"
+arch=('i686' 'x86_64')
+url="http://www.openal.org"
+license=("LGPL")
+depends=('openal>=1.6.372')
+source=(http://connect.creativelabs.com/openal/Downloads/ALUT/$pkgname-$pkgver.tar.gz)
+md5sums=('e089b28a0267faabdb6c079ee173664a')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ ./configure --prefix=/usr
+ make || return 1
+ make DESTDIR=$pkgdir install
+ find $startdir/pkg -name '*.la' -exec rm {} \;
+}
diff --git a/extra/freeciv/PKGBUILD b/extra/freeciv/PKGBUILD
new file mode 100644
index 000000000..a43010488
--- /dev/null
+++ b/extra/freeciv/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 115046 2011-03-16 15:19:54Z eric $
+# Maintainer: Eric Bélanger <eric@archlinux.org>
+
+pkgname=freeciv
+pkgver=2.2.5
+pkgrel=1
+pkgdesc="A multiuser clone of the famous Microprose game of Civilization"
+arch=('i686' 'x86_64')
+url="http://www.freeciv.org/"
+license=('GPL')
+depends=('gtk2' 'sdl_mixer' 'readline' 'bzip2')
+options=('!libtool')
+install=freeciv.install
+source=(http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('e717de02c77139593f21b930245d1709')
+sha1sums=('b204c4ae581be632fd2385517ada62558d48e702')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --enable-client=gtk --enable-shared
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/freeciv/freeciv.install b/extra/freeciv/freeciv.install
new file mode 100644
index 000000000..17ca8f78a
--- /dev/null
+++ b/extra/freeciv/freeciv.install
@@ -0,0 +1,11 @@
+post_install() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ post_install $1
+}
diff --git a/extra/freeglut/2.6.0-GFX_radeon.patch b/extra/freeglut/2.6.0-GFX_radeon.patch
new file mode 100644
index 000000000..8806fe849
--- /dev/null
+++ b/extra/freeglut/2.6.0-GFX_radeon.patch
@@ -0,0 +1,28 @@
+Index: src/freeglut_window.c
+===================================================================
+--- src/freeglut_window.c (Revision 832)
++++ src/freeglut_window.c (Arbeitskopie)
+@@ -594,10 +594,9 @@
+ #if TARGET_HOST_POSIX_X11
+ if ( window )
+ {
+- glXMakeContextCurrent(
++ glXMakeCurrent(
+ fgDisplay.Display,
+ window->Window.Handle,
+- window->Window.Handle,
+ window->Window.Context
+ );
+
+@@ -932,10 +932,9 @@
+ XSetWMProtocols( fgDisplay.Display, window->Window.Handle,
+ &fgDisplay.DeleteWindow, 1 );
+
+- glXMakeContextCurrent(
++ glXMakeCurrent(
+ fgDisplay.Display,
+ window->Window.Handle,
+- window->Window.Handle,
+ window->Window.Context
+ );
+
diff --git a/extra/freeglut/ChangeLog b/extra/freeglut/ChangeLog
new file mode 100644
index 000000000..7dd6847f9
--- /dev/null
+++ b/extra/freeglut/ChangeLog
@@ -0,0 +1,8 @@
+2009-12-30 Eric Belanger <eric@archlinux.org>
+
+ * freeglut 2.6.0-1
+ * Upstream update
+ * Added libxi depends
+ * Changed license to MIT
+ * Added patch to fix an issue with the radeon[hd] ATI opensource drivers
+ * Added ChangeLog
diff --git a/extra/freeglut/PKGBUILD b/extra/freeglut/PKGBUILD
new file mode 100644
index 000000000..ac748f8ee
--- /dev/null
+++ b/extra/freeglut/PKGBUILD
@@ -0,0 +1,32 @@
+# $Id: PKGBUILD 62079 2010-01-01 23:53:58Z eric $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=freeglut
+pkgver=2.6.0
+pkgrel=1
+pkgdesc="Provides functionality for small OpenGL programs"
+arch=('i686' 'x86_64')
+url="http://freeglut.sourceforge.net/"
+license=('MIT')
+depends=('libxxf86vm' 'mesa' 'libxi')
+replaces=('glut')
+provides=('glut')
+conflicts=('glut')
+options=('!libtool')
+source=(http://downloads.sourceforge.net/freeglut/${pkgname}-${pkgver}.tar.gz \
+ 2.6.0-GFX_radeon.patch)
+md5sums=('39f0f2de89f399529d2b981188082218' '6d0a018fe4f0bc9ace2b244ca59514d3')
+sha1sums=('68306c4486c13d005a4e4d54035e0c0b1bdc220b' '2e392c7d0b60016ec89e6a5edf504f5722351b95')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+# fixes an issue with the radeon[hd] ATI opensource drivers
+# ref: http://bugs.gentoo.org/show_bug.cgi?id=295163
+ patch -p0 -i "${srcdir}/2.6.0-GFX_radeon.patch" || return 1
+
+ ./configure --prefix=/usr || return 1
+ make all || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+ install -D -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" || return 1
+}
diff --git a/extra/freenx/PKGBUILD b/extra/freenx/PKGBUILD
new file mode 100644
index 000000000..bbaa11d59
--- /dev/null
+++ b/extra/freenx/PKGBUILD
@@ -0,0 +1,77 @@
+# $Id: PKGBUILD 108550 2011-02-01 08:10:47Z tpowa $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+#Contributed: eliott <eliott@solarblue.net>, Andre Naumann <anaumann@SPARCed.org>
+pkgname=freenx
+pkgver=0.7.3
+pkgrel=8
+pkgdesc="Free Software (GPL) Implementation of the NX Server"
+arch=(i686 x86_64)
+url="http://freenx.berlios.de"
+license=('GPL')
+depends=('nxserver' 'gnu-netcat' 'openssh' 'expect' 'xorg-xauth' 'xorg-apps' 'xorg-fonts-misc' 'coreutils' 'xorg-xmessage')
+backup=(opt/NX/etc/node.conf)
+install=freenx.install
+source=(http://download.berlios.de/freenx/$pkgname-server-$pkgver.tar.gz
+ keymap.patch
+ nxagent-startup.patch
+ freenx-latest-svn.patch
+ remove-dialog.patch)
+
+
+build() {
+ # patch and install nxserver
+ cd $startdir/src/$pkgname-server-$pkgver
+ # add latest svn fixes
+ patch -Np3 -i ../freenx-latest-svn.patch
+ # patch from inside nx
+ patch < gentoo-nomachine.diff
+ # patch broken keymap remapping
+ patch -Np0 -i ${srcdir}/keymap.patch
+ # patch nxagent startup to avoid login issues
+ patch -Np0 -i ${srcdir}/nxagent-startup.patch
+ # remove broken dialog function
+ patch -Np0 -i ${srcdir}/remove-dialog.patch
+ sed -i -e 's,authorized_keys2,authorized_keys,g' nxloadconfig
+ sed -i -e 's,/usr/NX,/opt/NX,g' nxloadconfig
+ sed -i -e 's,netcat,nc,g' nxloadconfig
+ sed -i -e 's/utmp/nx/g' nxsetup
+ sed -i -e 's,/usr/X11R6/bin/xauth,/usr/bin/xauth,g' nxloadconfig
+ sed -i -e 's,COMMAND_FOOMATIC="/usr/lib/cups/driver/foomatic-ppdfile",COMMAND_FOOMATIC="/usr/bin/foomatic-ppdfile",g' nxloadconfig
+ sed -i -e 's,COMMAND_MD5SUM="openssl md5",COMMAND_MD5SUM="md5sum",g' nxloadconfig
+ sed -i -e 's|AGENT_EXTRA_OPTIONS_X=""|AGENT_EXTRA_OPTIONS_X="-co /usr/share/X11/rgb -fp /usr/share/fonts/misc,/usr/share/fonts/75dpi,/usr/share/fonts/100dpi,/usr/share/fonts/TTF,/usr/share/fonts/Type1 -xkbdir /usr/share/X11/xkb"|g' nxloadconfig
+ sed -i -e 's/ENABLE_AUTORECONNECT_BEFORE_140="1"/ENABLE_AUTORECONNECT_BEFORE_140="0"/g' nxloadconfig
+ sed -i -e 's,/etc/init.d/ssh,/etc/rc.d/sshd,g' nxsetup
+ sed -i -e 's,libXcomp.so,libXcomp.so.3,g' nxloadconfig
+ sed -i -e 's,libXcompext.so,libXcompext.so.3,g' nxloadconfig
+ sed -i -e 's,libXrender.so.1.2,libXrender.so.1.2.2:$APPLICATION_LIBRARY_PATH/libXcompsh.so.3:$APPLICATION_LIBRARY_PATH/libXcompshad.so.3,g' nxloadconfig
+ # fix key generation
+ sed -i -e 's,AUTOMATIC="no",AUTOMATIC="yes",g' nxsetup
+}
+
+package() {
+ cd $startdir/src/$pkgname-server-$pkgver
+ install -D -m755 nxnode $startdir/pkg/opt/NX/bin/nxnode
+ install -D -m755 nxserver $startdir/pkg/opt/NX/bin/nxserver
+ install -D -m755 nxsetup $startdir/pkg/opt/NX/bin/nxsetup
+ install -D -m755 nxkeygen $startdir/pkg/opt/NX/bin/nxkeygen
+ install -D -m755 nxnode-login $startdir/pkg/opt/NX/bin/nxnode-login
+ install -D -m755 nxloadconfig $startdir/pkg/opt/NX/bin/nxloadconfig
+ install -D -m755 nxdialog $startdir/pkg/opt/NX/bin/nxdialog
+ install -D -m755 nxviewer_helper $startdir/pkg/opt/NX/bin/nxviever_helper
+ install -D -m755 nxcups-gethost $startdir/pkg/opt/NX/bin/nxcups-gethost
+ install -D -m755 nxdesktop_helper $startdir/pkg/opt/NX/bin/nxdesktop_helper
+ # provided by nxclient!
+ #install -D -m755 nxprint $startdir/pkg/opt/NX/bin/nxprint
+ install -D -m755 node.conf.sample $startdir/pkg/opt/NX/etc/node.conf
+ # install nxhelper
+ cd nxserver-helper
+ make
+ install -D -m755 nxserver-helper $startdir/pkg/opt/NX/bin/nxserver-helper
+ # create nxserver homedir
+ mkdir -m700 -p $startdir/pkg/opt/NX/home/nx
+}
+md5sums=('856f597e139018f7ed62713c9d6c9ed5'
+ 'f0867659c925f6363fb2b7661f349248'
+ '30dc16d8e2093ff71d5834a169ad9d00'
+ '788f30322783cf2c2dc833e2e4d5e8ad'
+ 'cae1773312506eeefe6a8de07c492bd8')
diff --git a/extra/freenx/freenx-latest-svn.patch b/extra/freenx/freenx-latest-svn.patch
new file mode 100644
index 000000000..bcc8ddd17
--- /dev/null
+++ b/extra/freenx/freenx-latest-svn.patch
@@ -0,0 +1,288 @@
+diff -ur freenx-server-0.7.3//ChangeLog ../trunk/freenx-server//ChangeLog
+--- freenx-server-0.7.3//ChangeLog 2008-08-22 02:44:43.000000000 +0200
++++ ../trunk/freenx-server//ChangeLog 2011-01-26 23:23:36.850005855 +0100
+@@ -1,3 +1,20 @@
++xx.11.2008 FreeNX 0.7.4
++ * Opened the 0.7.4 development.
++ * Fixed missing export of NX_ETC_DIR in Makefile,
++ so node.conf.sample is installed correctly.
++ (fabianx@bat.berlios.de)
++ * Fixed broken round-robin load balance algorithm.
++ (fabianx@bat.berlios.de)
++ * Fixed --terminate|--suspend|--force-terminate for
++ load balancing case.
++ (fabianx@bat.berlios.de)
++ * Fixed --terminate|--suspend|--force-terminate for
++ usermode case.
++ (fabianx@bat.berlios.de)
++ * Fixed non-encrypted session mode. You might need to
++ set EXTERNAL_PROXY_IP in node.conf.
++ (fabianx@bat.berlios.de)
++
+ 18.08.2008 FreeNX 0.7.3 "Priscilla One Year Edition"
+ * Opened the 0.7.3 development.
+ * Added logging of failed authentication attempts
+diff -ur freenx-server-0.7.3//Makefile ../trunk/freenx-server//Makefile
+--- freenx-server-0.7.3//Makefile 2008-08-18 04:16:25.000000000 +0200
++++ ../trunk/freenx-server//Makefile 2011-01-26 23:23:36.856672521 +0100
+@@ -8,7 +8,7 @@
+ all:
+ cd nxviewer-passwd && xmkmf && make Makefiles && make depend
+ source nxloadconfig &&\
+- export PATH_BIN PATH_LIB CUPS_BACKEND NX_VERSION &&\
++ export PATH_BIN PATH_LIB CUPS_BACKEND NX_VERSION NX_ETC_DIR &&\
+ for i in $(SUBDIRS) ; \
+ do\
+ echo "making" all "in $$i..."; \
+@@ -44,5 +44,5 @@
+
+ install:
+ source nxloadconfig &&\
+- export PATH_BIN PATH_LIB CUPS_BACKEND NX_VERSION &&\
++ export PATH_BIN PATH_LIB CUPS_BACKEND NX_VERSION NX_ETC_DIR &&\
+ $(MAKE) nxenv_install
+diff -ur freenx-server-0.7.3//node.conf.sample ../trunk/freenx-server//node.conf.sample
+--- freenx-server-0.7.3//node.conf.sample 2008-08-22 02:44:43.000000000 +0200
++++ ../trunk/freenx-server//node.conf.sample 2011-01-26 23:23:36.850005855 +0100
+@@ -37,7 +37,7 @@
+ #
+ # https://mail.kde.org/mailman/listinfo/freenx-knx
+ #
+-# SVN: $Id: node.conf.sample 580 2008-08-22 00:44:43Z fabianx $
++# SVN: $Id: node.conf.sample 613 2008-09-01 20:42:31Z fabianx $
+
+ #########################################################################
+ # General FreeNX directives
+@@ -47,6 +47,11 @@
+ # different than the default hostname (as returned by `hostname`)
+ #SERVER_NAME="$(hostname)"
+
++# The node ip which is used by NX Node in unecnrypted session mode.
++# Set it if you want to use a specific external ip or the autodetection
++# is not working.
++#EXTERNAL_PROXY_IP=""
++
+ # The port number where local 'sshd' is listening.
+ #SSHD_PORT=22
+
+diff -ur freenx-server-0.7.3//nxloadconfig ../trunk/freenx-server//nxloadconfig
+--- freenx-server-0.7.3//nxloadconfig 2008-08-22 02:44:43.000000000 +0200
++++ ../trunk/freenx-server//nxloadconfig 2011-01-26 23:23:36.856672521 +0100
+@@ -5,7 +5,7 @@
+ #
+ # License: GPL, version 2
+ #
+-# SVN: $Id: nxloadconfig 580 2008-08-22 00:44:43Z fabianx $
++# SVN: $Id: nxloadconfig 613 2008-09-01 20:42:31Z fabianx $
+ #
+ # ========================================================================
+
+@@ -52,7 +52,7 @@
+ # DO NOT TOUCH unless you REALLY know what you are doing
+ #########################################################################
+
+-NX_VERSION=3.2.0-73
++NX_VERSION=3.2.0-74-SVN
+ NX_LICENSE="OS (GPL, using backend: %BACKEND%)"
+
+ # Where can different nx components be found
+@@ -85,6 +85,7 @@
+ # General FreeNX directives
+
+ SERVER_NAME="$(hostname)"
++EXTERNAL_PROXY_IP=""
+ SSHD_PORT=22
+
+ # Authentication / Security directives
+diff -ur freenx-server-0.7.3//nxnode ../trunk/freenx-server//nxnode
+--- freenx-server-0.7.3//nxnode 2008-08-22 02:44:43.000000000 +0200
++++ ../trunk/freenx-server//nxnode 2011-01-26 23:23:36.853339188 +0100
+@@ -13,7 +13,7 @@
+ #
+ # License: GNU GPL, version 2
+ #
+-# SVN: $Id: nxnode 580 2008-08-22 00:44:43Z fabianx $
++# SVN: $Id: nxnode 613 2008-09-01 20:42:31Z fabianx $
+ #
+ # 21.06.2004: - Full reconnection support
+
+@@ -1184,6 +1184,17 @@
+ [ -z "$userip" -a "$host" = "127.0.0.1" ] && userip="127.0.0.1"
+ [ -z "$userip" ] && userip="*"
+ fi
++
++ # We need our own external IP
++ proxyip="$EXTERNAL_PROXY_IP"
++
++ if [ -z "$proxyip" -a -n "$host" ]
++ then
++ [ "$host" = "127.0.0.1" ] && host=$(hostname)
++ proxyip=$(ping -c1 "$host" | grep 'PING' | cut -d'(' -f2 | cut -d')' -f1)
++ fi
++
++ [ -z "$proxyip" ] && proxyip="127.0.0.1"
+
+ # ok, lets make the session dir first:
+
+@@ -1316,7 +1327,7 @@
+ NX> 705 Session display: $display
+ NX> 703 Session type: $type
+ NX> 701 Proxy cookie: $proxy_cookie
+-NX> 702 Proxy IP: $userip
++NX> 702 Proxy IP: $proxyip
+ NX> 706 Agent cookie: $cookie
+ NX> 704 Session cache: $type
+ NX> 707 SSL tunneling: $ssl_tunnel
+diff -ur freenx-server-0.7.3//nxserver ../trunk/freenx-server//nxserver
+--- freenx-server-0.7.3//nxserver 2008-08-22 02:44:43.000000000 +0200
++++ ../trunk/freenx-server//nxserver 2011-01-26 23:23:36.856672521 +0100
+@@ -11,7 +11,7 @@
+ #
+ # License: GNU GPL, version 2
+ #
+-# SVN: $Id: nxserver 580 2008-08-22 00:44:43Z fabianx $
++# SVN: $Id: nxserver 612 2008-08-25 03:28:15Z fabianx $
+ #
+
+ # Read the config file
+@@ -1192,7 +1192,7 @@
+ # Lock held
+
+ SERVER_LB_NR=$(cat $NX_SESS_DIR/round-robin 2>/dev/null)
+- let SERVER_LB_NR=(SERVER_LB_NR+1) % SERVER_LB_NR_OF_HOSTS
++ let SERVER_LB_NR=(SERVER_LB_NR+1)%SERVER_LB_NR_OF_HOSTS
+ echo $SERVER_LB_NR >$NX_SESS_DIR/round-robin
+
+ # Exit critical section
+@@ -1961,71 +1961,71 @@
+ session_history "$user" "$sessid"
+ }
+
+-cmd_terminate()
++cmd_execute()
+ {
+- CMD_PARAMS=$(cmd_parse_3_params "$2")
+- [ -z "$CMD_PARAMS" ] && exit 1
+- for i in $CMD_PARAMS;
++ cmd_host="$1"
++ cmd_user="$2"
++ cmd_cmd="$3"
++
++ if [ "$ENABLE_USERMODE_AUTHENTICATION" = "1" ]
++ then
++ sh -c "$cmd_cmd"
++ elif [ "$cmd_host" = "127.0.0.1" -o "$cmd_host" = "localhost" ]
++ then
++ su - "$cmd_user" -c "$cmd_cmd"
++ else
++ ssh "$cmd_host" su - "$cmd_user" -c "'$cmd_cmd'"
++ fi
++}
++
++cmd_terminate_or_send()
++{
++ CMD="$1"
++
++ if [ "$CMD" = "--broadcast" ]
++ then
++ CMD_PARAMS=$(session_find_all)
++ [ -z "$CMD_PARAMS" ] && cmd_abort "Error: No running session could be found."
++ else
++ CMD_PARAMS=$(cmd_parse_3_params "$2")
++ [ -z "$CMD_PARAMS" ] && exit 1
++ shift
++ fi
++ shift
++
++ for i in $CMD_PARAMS
+ do
+ CMDLINE=$(session_get_cmdline $i)
+ cmd_sessionid=$(getparam sessionId)
++ cmd_display=$(getparam display)
+ cmd_user=$(getparam userName)
+ cmd_type=$(getparam type)
+ cmd_status=$(getparam status)
++ cmd_host=$(getparam host)
+
+ # is it a "good" session?
+- case "$1" in
++ case "$CMD" in
+ --suspend)
+ if [ "$cmd_status" = "Running" ] && stringinstring "unix-" "$cmd_type"
+ then
+- echo "sessionid=$cmd_sessionid" | su - "$cmd_user" -c "$PATH_BIN/nxnode --suspend"
++ echo "sessionid=$cmd_sessionid" | cmd_execute "$cmd_host" "$cmd_user" "$PATH_BIN/nxnode --suspend"
+ fi
+ ;;
+ --terminate)
+- echo "sessionid=$cmd_sessionid" | su - "$cmd_user" -c "$PATH_BIN/nxnode --terminate"
++ echo "sessionid=$cmd_sessionid" | cmd_execute "$cmd_host" "$cmd_user" "$PATH_BIN/nxnode --terminate"
+ ;;
+ --force-terminate)
+- echo "sessionid=$cmd_sessionid" | su - "$cmd_user" -c "$PATH_BIN/nxnode --terminate"
++ echo "sessionid=$cmd_sessionid" | cmd_execute "$cmd_host" "$cmd_user" "$PATH_BIN/nxnode --terminate"
+ session_close $cmd_sessionid
+ ;;
+- esac
+- done
+-
+-}
+-
+-cmd_send()
+-{
+- if [ "$1" = "--broadcast" ]
+- then
+- CMD_PARAMS=$(session_find_all)
+- [ -z "$CMD_PARAMS" ] && cmd_abort "Error: No running session could be found."
+- else
+- CMD_PARAMS=$(cmd_parse_3_params "$2")
+- [ -z "$CMD_PARAMS" ] && exit 1
+- shift
+- fi
+- shift
+- for i in $CMD_PARAMS;
+- do
+- CMDLINE=$(session_get_cmdline $i)
+- cmd_display=$(getparam display)
+- cmd_user=$(getparam userName)
+- cmd_type=$(getparam type)
+- cmd_status=$(getparam status)
+- cmd_host=$(getparam host)
+-
+- # is it a "good" session?
+- if [ "$cmd_status" = "Running" ] && stringinstring "unix-" "$cmd_type"
+- then
+- if [ "$cmd_host" = "127.0.0.1" -o "$cmd_host" = "localhost" ]
++ --send|--broadcast)
++ # is it a "good" session?
++ if [ "$cmd_status" = "Running" ] && stringinstring "unix-" "$cmd_type"
+ then
+- su - "$cmd_user" -c "$PATH_BIN/nxdialog --dialog ok --caption \"NX Administrator Message\" --message \"$@\" -display \":$cmd_display\" &"
+- else
+- ssh $cmd_host su - "$cmd_user" -c "'$PATH_BIN/nxdialog --dialog ok --caption \"NX Administrator Message\" --message \"$@\" -display \":$cmd_display\" &'"
++ cmd_execute "$cmd_host" "$cmd_user" "$PATH_BIN/nxdialog --dialog ok --caption \"NX Administrator Message\" --message \"$@\" -display \":$cmd_display\" &"
+ fi
+- fi
++ esac
+ done
+- #nxnode_start --send "$CMD_PARAMS"
+ }
+
+ #
+@@ -2099,13 +2099,13 @@
+ cmd_history "$@"
+ ;;
+ --terminate|--suspend|--force-terminate)
+- cmd_terminate "$@"
++ cmd_terminate_or_send "$@"
+ ;;
+ --cleanup)
+- cmd_terminate "--force-terminate" "*"
++ cmd_terminate_or_send "--force-terminate" "*"
+ ;;
+ --send|--broadcast)
+- cmd_send "$@"
++ cmd_terminate_or_send "$@"
+ ;;
+ *)
+ cmd_abort "Error: Function $CMD not implemented yet."
diff --git a/extra/freenx/freenx.install b/extra/freenx/freenx.install
new file mode 100644
index 000000000..93a28656f
--- /dev/null
+++ b/extra/freenx/freenx.install
@@ -0,0 +1,27 @@
+# arg 1: the new package version
+post_install() {
+# setting up freenx
+echo 'Generating keys ...'
+/opt/NX/bin/nxsetup --install --uid 85 --gid 85 2>&1 >/dev/null
+/bin/cat <<THEEND
+ATTENTION FREENX:
+For correct setup please take a look at the wiki:
+http://wiki.archlinux.org/index.php/FreeNX
+THEEND
+}
+
+post_upgrade() {
+# setting up freenx
+echo 'Rerunning nxsetup ...'
+/opt/NX/bin/nxsetup --install --uid 85 --gid 85 2>&1 >/dev/null
+/bin/cat <<THEEND
+ATTENTION FREENX:
+For correct setup please take a look at the wiki:
+http://wiki.archlinux.org/index.php/FreeNX
+THEEND
+}
+# arg 1: the old package version
+pre_remove() {
+ /opt/NX/bin/nxsetup --uninstall --purge 2>&1 >/dev/null
+ usr/sbin/groupdel nx &>/dev/null
+}
diff --git a/extra/freenx/keymap.patch b/extra/freenx/keymap.patch
new file mode 100644
index 000000000..a0bb678e4
--- /dev/null
+++ b/extra/freenx/keymap.patch
@@ -0,0 +1,32 @@
+=== modified file 'nxnode'
+--- nxnode 2009-01-14 04:22:40 +0000
++++ nxnode 2009-01-14 04:24:02 +0000
+@@ -555,7 +555,8 @@
+
+ # Start the agent
+
+- PATH="$PATH_BIN:$PATH" $PATH_BIN/nxagent $P $R -name "NX - $user@$SERVER_NAME:$display - $session (GPL Edition)" -option "$USER_FAKE_HOME/.nx/C-$sess_id/options" $K $G $B $FP $AGENT_EXTRA_OPTIONS_X :$display 2>&3 &
++ #PATH="$PATH_BIN:$PATH" $PATH_BIN/nxagent $P $R -name "NX - $user@$SERVER_NAME:$display - $session (GPL Edition)" -option "$USER_FAKE_HOME/.nx/C-$sess_id/options" $K $G $B $FP $AGENT_EXTRA_OPTIONS_X :$display 2>&3 &
++ PATH="$PATH_BIN:$PATH" $PATH_BIN/nxagent $R -name "NX - $user@$SERVER_NAME:$display - $session (GPL Edition)" -option "$USER_FAKE_HOME/.nx/C-$sess_id/options" $B $FP $AGENT_EXTRA_OPTIONS_X :$display 2>&3 &
+ fi
+
+ #
+@@ -1094,6 +1095,8 @@
+ # Rootless fix from 2x nxserver 1.5.0
+ realtype=$type
+ [ "$type" = "unix-application" -o "$type" = "unix-default" ] && realtype="unix-desktop"
++ [ "$type" = "unix-gnome" ] && realtype="gnome"
++ [ "$type" = "unix-kde" ] && realtype="kde"
+
+ # NX 2.1.0 file-sharing port options
+ client=$(getparam client)
+@@ -1272,7 +1275,7 @@
+ umask 0077
+
+ cat << EOF > "$USER_FAKE_HOME/.nx/C-$sess_id/options"
+-${keyboard:+keyboard=$keyboard,}${kbtype:+kbtype=$kbtype,}${kbload:+kbload=$kbload,}${keymap:+keymap=$keymap,}${resize:+resize=$resize,}${CACHE}${IMAGES}${PACK}link=$link,nodelay=$nodelay,type=$realtype,cleanup=0,${ACCEPT}cookie=$proxy_cookie,id=$sess_id,samba=$samba,media=$media${sync:+,sync=$sync}${cups:+,cups=$cups}${keybd:+,keybd=$keybd}${aux:+,aux=$aux}${http:+,http=$http}${rdpcolors:+,rdpcolors=$rdpcolors}${rdpcache:+,rdpcache=$rdpcache}${fullscreen:+,fullscreen=1}${clipboard:+,clipboard=$clipboard}${menu:+,menu=$menu}:$display
++nx/nx,${keyboard:+keyboard=$keyboard,}${kbtype:+kbtype=$kbtype,}${kbload:+kbload=$kbload,}${keymap:+keymap=$keymap,}${geometry:+geometry=$geometry,}${client:+client=$client,}${resize:+resize=$resize,}${CACHE}${IMAGES}${PACK}link=$link,nodelay=$nodelay,type=$realtype${clipboard:+,clipboard=$clipboard}${composite:+composite=$composite},cleanup=0,product=LFE/None/LFEN/None,shmem=1,${backingstore:+backingstore=$backingstore,}shpix=1,${ACCEPT}cookie=$proxy_cookie,id=$sess_id,samba=$samba,media=$media${sync:+,sync=$sync}${cups:+,cups=$cups}${keybd:+,keybd=$keybd}${aux:+,aux=$aux}${http:+,http=$http}${rdpcolors:+,rdpcolors=$rdpcolors}${rdpcache:+,rdpcache=$rdpcache}${fullscreen:+,fullscreen=1}${menu:+,menu=$menu}:$display
+ EOF
+ umask $OLD_UMASK
+ #samba=$samba,
+
diff --git a/extra/freenx/nxagent-startup.patch b/extra/freenx/nxagent-startup.patch
new file mode 100644
index 000000000..e3c5497c1
--- /dev/null
+++ b/extra/freenx/nxagent-startup.patch
@@ -0,0 +1,12 @@
+--- nxnode~ 2010-04-30 15:42:46.000000000 +0200
++++ nxnode 2010-04-30 15:42:46.000000000 +0200
+@@ -328,6 +328,9 @@
+ NODE_WM_PID=$!
+ fi
+
++ # Patch - delay to allow nxagent to complete launching
++ sleep 4
++
+ echo "Xft.dpi: 96" | DISPLAY=:$display xrdb -merge >>"$USER_FAKE_HOME/.nx/C-$sess_id/session" 2>&1
+ [ -d /etc/X11/Xresources ] && xrdb -display :$display -merge /etc/X11/Xresources/* >>"$USER_FAKE_HOME/.nx/C-$sess_id/session" 2>&1
+
diff --git a/extra/freenx/remove-dialog.patch b/extra/freenx/remove-dialog.patch
new file mode 100644
index 000000000..054f1f6c4
--- /dev/null
+++ b/extra/freenx/remove-dialog.patch
@@ -0,0 +1,32 @@
+--- nxdialog~ 2011-02-01 09:05:28.993333438 +0100
++++ nxdialog 2011-02-01 09:05:29.010000106 +0100
+@@ -85,29 +85,6 @@
+ then
+ dialog_interface="xdialog"
+ DIALOG=/usr/bin/Xdialog # just in case that we have no good path
+-elif [ -x /usr/bin/dialog ]
+-then
+- #JJK: Added 'dialog_interface=dialog' option because Xdialog not standard
+- #JJK: on some distros such as Fedora and xmessage won't handle long
+- #JJK: lists of ppd files while the combination of 'dialog' and 'xterm'
+- #JJK: should be present on most setups.
+-
+- dialog_interface="dialog"
+- DIALOG=/usr/bin/dialog
+- if [ -z "$NXCLIENT_FIRST_TIME" ]
+- then
+- # Run only once in case of subdialogs. Capture result in tempfile
+- TMPFILE=$(mktemp /tmp/nxclient.XXXXX)
+- export NXCLIENT_FIRST_TIME=1
+-
+- xterm -geometry 120x24+100+100 +sb -title "NXclient" -e \
+- /bin/bash -c "$DIALOG --infobox 'Please wait...' 3 25; $0 $INPUTS | tee $TMPFILE" || exit 1
+-
+- #Need to recover the last line output (and not remove non-printing chars, because --stdout is used)
+- tail -1 $TMPFILE
+- rm -f $TMPFILE
+- exit 0
+- fi
+ else
+ dialog_interface="xmessage"
+ xmessage=$(which xmessage 2>/dev/null)
diff --git a/extra/freetds/PKGBUILD b/extra/freetds/PKGBUILD
new file mode 100644
index 000000000..2912f9b39
--- /dev/null
+++ b/extra/freetds/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 11362 2010-02-09 23:57:26Z dgriffiths $
+# Contributor: Aaron Malone <aaron@munge.net>
+
+pkgname=freetds
+pkgver=0.82
+pkgrel=5
+pkgdesc='Library for accessing Sybase and MS SQL Server databases'
+url='http://www.freetds.org'
+arch=('i686' 'x86_64')
+license=('LGPL')
+depends=('unixodbc')
+options=('!libtool')
+backup=('etc/freetds/freetds.conf'
+ 'etc/freetds/locales.conf'
+ 'etc/freetds/pool.conf')
+source=("ftp://ftp.ibiblio.org/pub/Linux/ALPHA/freetds/stable/${pkgname}-${pkgver}.tar.gz")
+md5sums=('3df6b2e83fd420e90f1becbd1162990a')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr --sysconfdir=/etc/freetds --mandir=/usr/share/man --enable-msdblib --with-tdsver=7.0
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/freetype2/PKGBUILD b/extra/freetype2/PKGBUILD
new file mode 100644
index 000000000..cfaffb725
--- /dev/null
+++ b/extra/freetype2/PKGBUILD
@@ -0,0 +1,34 @@
+# $Id: PKGBUILD 105523 2011-01-10 10:25:14Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=freetype2
+pkgver=2.4.4
+pkgrel=2
+pkgdesc="TrueType font rendering library"
+arch=(i686 x86_64)
+license=('GPL')
+url="http://freetype.sourceforge.net"
+depends=('zlib')
+options=('!libtool')
+source=(http://downloads.sourceforge.net/sourceforge/freetype/freetype-${pkgver}.tar.bz2
+ freetype-2.3.0-enable-spr.patch
+ freetype-2.2.1-enable-valid.patch
+ allow-hlineto-vlineto-without-arguments.patch)
+md5sums=('b3e2b6e2f1c3e0dffa1fd2a0f848b671'
+ '816dc8619a6904a7385769433c0a8653'
+ '214119610444c9b02766ccee5e220680')
+
+build() {
+ cd "${srcdir}/freetype-${pkgver}"
+ patch -Np1 -i "${srcdir}/freetype-2.3.0-enable-spr.patch"
+ patch -Np1 -i "${srcdir}/freetype-2.2.1-enable-valid.patch"
+ patch -Np1 -i "${srcdir}/allow-hlineto-vlineto-without-arguments.patch"
+
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+}
+md5sums=('b3e2b6e2f1c3e0dffa1fd2a0f848b671'
+ '816dc8619a6904a7385769433c0a8653'
+ '214119610444c9b02766ccee5e220680'
+ 'bb094e147b25892f1d04cfb5ff877bce')
diff --git a/extra/freetype2/allow-hlineto-vlineto-without-arguments.patch b/extra/freetype2/allow-hlineto-vlineto-without-arguments.patch
new file mode 100644
index 000000000..5990041aa
--- /dev/null
+++ b/extra/freetype2/allow-hlineto-vlineto-without-arguments.patch
@@ -0,0 +1,57 @@
+From 396b11b840f84e8bff62f3c361d0b592e77ee703 Mon Sep 17 00:00:00 2001
+From: Werner Lemberg <wl@gnu.org>
+Date: Thu, 09 Dec 2010 22:16:18 +0000
+Subject: [cff] Allow `hlineto' and `vlineto' without arguments.
+
+We simply ignore such instructions. This is invalid, but it doesn't
+harm; and indeed, there exist such subsetted fonts in PDFs.
+
+Reported by Albert Astals Cid <aacid@kde.org>.
+
+* src/cff/cffgload.c (cff_decoder_parse_charstrings)
+[cff_op_hlineto]: Ignore instruction if there aren't any arguments
+on the stack.
+---
+diff --git a/ChangeLog b/ChangeLog
+index b7aea52..579ae62 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,16 @@
++2010-12-09 Werner Lemberg <wl@gnu.org>
++
++ [cff] Allow `hlineto' and `vlineto' without arguments.
++
++ We simply ignore such instructions. This is invalid, but it doesn't
++ harm; and indeed, there exist such subsetted fonts in PDFs.
++
++ Reported by Albert Astals Cid <aacid@kde.org>.
++
++ * src/cff/cffgload.c (cff_decoder_parse_charstrings)
++ [cff_op_hlineto]: Ignore instruction if there aren't any arguments
++ on the stack.
++
+ 2010-11-28 Werner Lemberg <wl@gnu.org>
+
+ * Version 2.4.4 released.
+diff --git a/src/cff/cffgload.c b/src/cff/cffgload.c
+index e99ee70..99c5b0c 100644
+--- a/src/cff/cffgload.c
++++ b/src/cff/cffgload.c
+@@ -1438,9 +1438,14 @@
+ FT_TRACE4(( op == cff_op_hlineto ? " hlineto\n"
+ : " vlineto\n" ));
+
+- if ( num_args < 1 )
++ if ( num_args < 0 )
+ goto Stack_Underflow;
+
++ /* there exist subsetted fonts (found in PDFs) */
++ /* which call `hlineto' without arguments */
++ if ( num_args == 0 )
++ break;
++
+ if ( cff_builder_start_point ( builder, x, y ) ||
+ check_points( builder, num_args ) )
+ goto Fail;
+--
+cgit v0.8.3.2
diff --git a/extra/freetype2/freetype-2.2.1-enable-valid.patch b/extra/freetype2/freetype-2.2.1-enable-valid.patch
new file mode 100644
index 000000000..c78b6b70f
--- /dev/null
+++ b/extra/freetype2/freetype-2.2.1-enable-valid.patch
@@ -0,0 +1,20 @@
+--- freetype-2.2.1/modules.cfg.orig 2006-07-07 21:01:09.000000000 -0400
++++ freetype-2.2.1/modules.cfg 2006-07-07 21:01:54.000000000 -0400
+@@ -110,7 +110,7 @@
+ AUX_MODULES += cache
+
+ # TrueType GX/AAT table validation. Needs ftgxval.c below.
+-# AUX_MODULES += gxvalid
++AUX_MODULES += gxvalid
+
+ # Support for streams compressed with gzip (files with suffix .gz).
+ #
+@@ -124,7 +124,7 @@
+
+ # OpenType table validation. Needs ftotval.c below.
+ #
+-# AUX_MODULES += otvalid
++AUX_MODULES += otvalid
+
+ # Auxiliary PostScript driver component to share common code.
+ #
diff --git a/extra/freetype2/freetype-2.3.0-enable-spr.patch b/extra/freetype2/freetype-2.3.0-enable-spr.patch
new file mode 100644
index 000000000..8432e28a4
--- /dev/null
+++ b/extra/freetype2/freetype-2.3.0-enable-spr.patch
@@ -0,0 +1,11 @@
+--- freetype-2.3.0/include/freetype/config/ftoption.h.spf 2007-01-18 14:27:34.000000000 -0500
++++ freetype-2.3.0/include/freetype/config/ftoption.h 2007-01-18 14:27:48.000000000 -0500
+@@ -92,7 +92,7 @@
+ /* This is done to allow FreeType clients to run unmodified, forcing */
+ /* them to display normal gray-level anti-aliased glyphs. */
+ /* */
+-/* #define FT_CONFIG_OPTION_SUBPIXEL_RENDERING */
++#define FT_CONFIG_OPTION_SUBPIXEL_RENDERING
+
+
+ /*************************************************************************/
diff --git a/extra/fribidi/ChangeLog b/extra/fribidi/ChangeLog
new file mode 100644
index 000000000..43b17a515
--- /dev/null
+++ b/extra/fribidi/ChangeLog
@@ -0,0 +1,5 @@
+2008-02-16 Travis Willard <travis@archlinux.org>
+
+ * 0.10.9
+ Added ChangeLog
+ New upstream release.
diff --git a/extra/fribidi/PKGBUILD b/extra/fribidi/PKGBUILD
new file mode 100644
index 000000000..edeaa1f4b
--- /dev/null
+++ b/extra/fribidi/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: PKGBUILD 68037 2010-02-10 15:07:38Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Nezmer <Nezmer@gmail.com>
+
+pkgname=fribidi
+pkgver=0.19.2
+pkgrel=1
+pkgdesc="A Free Implementation of the Unicode Bidirectional Algorithm"
+arch=('i686' 'x86_64')
+license=('LGPL')
+url="http://fribidi.org"
+depends=('glibc')
+options=('!libtool')
+source=(http://fribidi.org/download/${pkgname}-${pkgver}.tar.gz)
+md5sums=('626db17d2d99b43615ad9d12500f568a')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ ./configure --prefix=/usr
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/frozen-bubble/PKGBUILD b/extra/frozen-bubble/PKGBUILD
new file mode 100644
index 000000000..883852aa4
--- /dev/null
+++ b/extra/frozen-bubble/PKGBUILD
@@ -0,0 +1,32 @@
+# $Id: PKGBUILD 112696 2011-03-06 00:54:34Z heftig $
+# Maintainer: Jan "heftig" Steffens <jan.steffens@gmail.com>
+# Contributor: Allan McRae <allan@archlinux.org>
+# Contributor: Brandon Niemczyk <maccorin@cfl.rr.com>
+
+pkgname=frozen-bubble
+_pkgver=2.2.1-beta1
+pkgver=${_pkgver/-/}
+pkgrel=1
+pkgdesc="A game in which you throw colorful bubbles and build groups to destroy the bubbles"
+arch=(i686 x86_64)
+url="http://www.frozen-bubble.org"
+license=(GPL2)
+depends=(perl-sdl perl-ipc-system-simple perl-compress-bzip2 perl-file-which)
+makedepends=(perl-file-slurp perl-locale-maketext-lexicon)
+options=('!emptydirs')
+source=(http://www.frozen-bubble.org/data/$pkgname-$_pkgver.tar.bz2 \
+ frozen-bubble.desktop)
+md5sums=('825cc23ed806838b9d86de9982a5687a'
+ '01b10b77ba6ad856f5c199121c582272')
+
+package() {
+ cd "$srcdir/$pkgname-$_pkgver"
+ # install module in vendor directories
+ perl Build.PL installdirs=vendor destdir="$pkgdir"
+
+ perl Build
+ perl Build install
+
+ install -D -m644 share/icons/frozen-bubble-icon-64x64.png "$pkgdir/usr/share/pixmaps/frozen-bubble.png"
+ install -D -m644 "$srcdir/frozen-bubble.desktop" "$pkgdir/usr/share/applications/frozen-bubble.desktop"
+}
diff --git a/extra/frozen-bubble/frozen-bubble.desktop b/extra/frozen-bubble/frozen-bubble.desktop
new file mode 100644
index 000000000..76a7bcd88
--- /dev/null
+++ b/extra/frozen-bubble/frozen-bubble.desktop
@@ -0,0 +1,9 @@
+[Desktop Entry]
+Type=Application
+Version=1.0
+Encoding=UTF-8
+Name=Frozen Bubble
+Icon=frozen-bubble.png
+Exec=/usr/bin/vendor_perl/frozen-bubble
+Terminal=false
+Categories=Game;
diff --git a/extra/fsarchiver/PKGBUILD b/extra/fsarchiver/PKGBUILD
new file mode 100644
index 000000000..306172fac
--- /dev/null
+++ b/extra/fsarchiver/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 104058 2010-12-27 16:47:09Z andrea $
+# Maintainer:
+# Contributor: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=fsarchiver
+pkgver=0.6.12
+pkgrel=1
+pkgdesc="A safe and flexible file-system backup and deployment tool"
+arch=('i686' 'x86_64')
+url="http://www.fsarchiver.org/"
+license=('GPL')
+depends=('bzip2' 'e2fsprogs' 'lzo2' 'xz' 'libgcrypt')
+source=("http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.gz")
+md5sums=('dc54cefcf9c2bc331063d82a7ad54133')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/fssos-nsvs/PKGBUILD b/extra/fssos-nsvs/PKGBUILD
new file mode 100644
index 000000000..16e8be8cc
--- /dev/null
+++ b/extra/fssos-nsvs/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 115056 2011-03-16 15:27:06Z andrea $
+# Maintainer: Dale Blount <dale@archlinux.org>
+
+pkgname=fssos-nsvs
+pkgver=0.5
+pkgrel=7
+pkgdesc="NSVS for FSSOS"
+arch=('i686' 'x86_64')
+url="http://fssos.sourceforge.net/"
+license=('GPL')
+depends=('bash' 'mysql>=5.5')
+backup=('etc/nsvsd.conf')
+options=('!libtool' '!makeflags')
+install=$pkgname.install
+source=(http://downloads.sourceforge.net/sourceforge/fssos/nsvs-$pkgver.tar.gz
+ nsvsd)
+md5sums=('3f17c2f6339f1a322b712b467023d825' '4dfd9dc0d69b375587e39ab2621d9ea9')
+
+build() {
+ cd $srcdir/nsvs-$pkgver
+ ./configure --prefix=/usr --sysconfdir=/etc
+ make CFLAGS="${CFLAGS} -D_GNU_SOURCE"
+}
+
+package() {
+ cd $srcdir/nsvs-$pkgver
+ make DESTDIR=$pkgdir install
+ install -D -m755 $srcdir/nsvsd $pkgdir/etc/rc.d/nsvsd
+}
diff --git a/extra/fssos-nsvs/fssos-nsvs.install b/extra/fssos-nsvs/fssos-nsvs.install
new file mode 100644
index 000000000..253ae64d2
--- /dev/null
+++ b/extra/fssos-nsvs/fssos-nsvs.install
@@ -0,0 +1,17 @@
+post_install() {
+ if [ -z "`grep '^nsvsd::' /etc/group`" ]; then
+ groupadd -g 83 nsvsd
+ fi
+ if [ -z "`grep '^nsvsd:' /etc/passwd`" ]; then
+ useradd -u 83 -d /tmp -g nsvsd -s /bin/false nsvsd
+ fi
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ userdel nsvsd &> /dev/null
+ groupdel nsvsd &> /dev/null
+}
diff --git a/extra/fssos-nsvs/nsvsd b/extra/fssos-nsvs/nsvsd
new file mode 100755
index 000000000..f9b4845ab
--- /dev/null
+++ b/extra/fssos-nsvs/nsvsd
@@ -0,0 +1,36 @@
+#!/bin/bash
+
+# general config
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+case "$1" in
+ start)
+ stat_busy "Starting nsvsd"
+ /usr/sbin/nsvsd -f /etc/nsvsd.conf
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon nsvsd
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping nsvsd"
+ kill `cat /var/run/nsvsd.pid` &>/dev/null
+ rm -f /var/run/nsvsd.pid
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon nsvsd
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 3
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
diff --git a/extra/ftgl/PKGBUILD b/extra/ftgl/PKGBUILD
new file mode 100644
index 000000000..b284d4289
--- /dev/null
+++ b/extra/ftgl/PKGBUILD
@@ -0,0 +1,34 @@
+# $Id: PKGBUILD 114670 2011-03-15 12:17:12Z heftig $
+# Maintainer: Jan "heftig" Steffens <jan.steffens@gmail.com>
+# Contributor: Alexander Baldeck <alexander@archlinux.org>
+# Contributor: tobias <tobias@archlinux.org>
+
+pkgname=ftgl
+_pkgver=2.1.3-rc5
+pkgver=${_pkgver/-/}
+pkgrel=2
+pkgdesc="OpenGL library to use arbitrary fonts"
+arch=(i686 x86_64)
+url="http://ftgl.wiki.sourceforge.net/"
+license=(MIT)
+depends=(freetype2 glut)
+makedepends=(doxygen)
+options=('!libtool')
+source=("http://downloads.sourceforge.net/$pkgname/$pkgname-$_pkgver.tar.bz2")
+md5sums=('c7879018cde844059495b3029b0b6503')
+
+build() {
+ cd "$srcdir/$pkgname-${_pkgver/-/~}"
+ ./configure --prefix=/usr --with-pic
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-${_pkgver/-/~}"
+ make DESTDIR="$pkgdir" install
+
+ # FS#23283: install missing headers for OpenCascade
+ install -m644 src/FT{Face,Library,Size}.h "$pkgdir/usr/include/FTGL/"
+
+ install -Dm644 COPYING "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
+}
diff --git a/extra/ftjam/PKGBUILD b/extra/ftjam/PKGBUILD
new file mode 100644
index 000000000..b78dac253
--- /dev/null
+++ b/extra/ftjam/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 49903 2009-08-16 20:18:01Z jgc $
+# Maintainer: Roman Kyrylych <roman@archlinux.org>
+# Contributor: Roman Kyrylych <roman@archlinux.org>
+
+pkgname=ftjam
+pkgver=2.5.3rc2
+pkgrel=2
+pkgdesc='FT Jam - an enhanced version of the Jam build tool'
+arch=('i686' 'x86_64')
+url="http://freetype.org/jam/"
+license=('custom')
+depends=('glibc')
+provides=('jam')
+conflicts=('jam')
+replaces=('jam')
+#source=(http://downloads.sourceforge.net/freetype/$pkgname-$pkgver.tar.bz2 \
+source=(http://david.freetype.org/jam/${pkgname}-${pkgver}.tar.bz2
+ license.txt)
+md5sums=('911cc4191b3e7213905d107962b4529b'
+ '2addc259114b4f50a870fa04881e1200')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 "${srcdir}/license.txt" "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1
+}
diff --git a/extra/ftjam/license.txt b/extra/ftjam/license.txt
new file mode 100644
index 000000000..d111145cc
--- /dev/null
+++ b/extra/ftjam/license.txt
@@ -0,0 +1,8 @@
+Copyright 1993-2002 Christopher Seiwald and Perforce Software, Inc.
+
+License is hereby granted to use this software and distribute it
+freely, as long as this copyright notice is retained and modifications
+are clearly marked.
+
+ALL WARRANTIES ARE HEREBY DISCLAIMED.
+ \ No newline at end of file
diff --git a/extra/fuse/PKGBUILD b/extra/fuse/PKGBUILD
new file mode 100644
index 000000000..f3863969e
--- /dev/null
+++ b/extra/fuse/PKGBUILD
@@ -0,0 +1,55 @@
+# $Id: PKGBUILD 94450 2010-10-07 10:30:45Z ronald $
+# Maintainer: Ronald van Haren <ronald.archlinux.org>
+# Contributor: Mark Rosenstand <mark@archlinux.org>
+
+pkgname=fuse
+pkgver=2.8.5
+pkgrel=1
+pkgdesc="A library that makes it possible to implement a filesystem in a userspace program."
+arch=('i686' 'x86_64')
+url="http://fuse.sourceforge.net/"
+license="GPL2"
+depends=('glibc')
+makedepends=('pkg-config')
+backup=(etc/fuse.conf)
+install=fuse.install
+source=(http://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.gz
+ 'fuse.conf')
+options=(!libtool)
+sha1sums=('862320b56d6bc4ad5e7be2b1e0b5029166aae09b'
+ '3b42e37a741d4651099225987dc40e7f02a716ad')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr --enable-lib \
+ --enable-util --bindir=/bin
+ make || return 1
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ make DESTDIR=${pkgdir} install || return 1
+
+ # static device nodes will cause collision.
+ rm -rf ${pkgdir}/dev
+
+ # Remove init script in wrong path
+ # Don't add our own for now, as fusectl fs oopses on 2.6.18
+ rm -rf ${pkgdir}/etc/init.d
+ #install -D -m755 ${srcdir}/fuse.rc.d ${pkgdir}/etc/rc.d/fuse
+
+ install -d ${pkgdir}/lib
+ mv ${pkgdir}/usr/lib/libfuse.so.${pkgver} ${pkgdir}/lib/ || return 1
+ ln -s ../../lib/libfuse.so.${pkgver} ${pkgdir}/usr/lib/libfuse.so.${pkgver} || return 1
+ ln -s libfuse.so.${pkgver} ${pkgdir}/lib/libfuse.so.2 || return 1
+ mv ${pkgdir}/usr/lib/libulockmgr.so.1.0.1 ${pkgdir}/lib/ || return 1
+ ln -s ../../lib/libulockmgr.so.1.0.1 ${pkgdir}/usr/lib/libulockmgr.so.1.0.1 || return 1
+ ln -s libulockmgr.so.1.0.1 ${pkgdir}/lib/libulockmgr.so.1 || return 1
+
+ # install sample config file
+ install -Dm644 ${srcdir}/fuse.conf ${pkgdir}/etc/fuse.conf || return 1
+ # Fix udev rule location
+ install -d -m755 "${pkgdir}/lib"
+ mv "${pkgdir}/etc/udev" "${pkgdir}/lib/"
+}
diff --git a/extra/fuse/fuse.conf b/extra/fuse/fuse.conf
new file mode 100644
index 000000000..cb6c631e0
--- /dev/null
+++ b/extra/fuse/fuse.conf
@@ -0,0 +1,9 @@
+# Set the maximum number of FUSE mounts allowed to non-root users.
+# The default is 1000.
+#
+#mount_max = 1000
+
+# Allow non-root users to specify the 'allow_other' or 'allow_root'
+# mount options.
+#
+#user_allow_other
diff --git a/extra/fuse/fuse.install b/extra/fuse/fuse.install
new file mode 100644
index 000000000..595ac7c12
--- /dev/null
+++ b/extra/fuse/fuse.install
@@ -0,0 +1,14 @@
+post_install() {
+ cat << 'EOM'
+==> You must load the fuse kernel module to use FUSE.
+ -> Run 'modprobe fuse' to load the module now.
+ -> Add fuse to $MODULES in /etc/rc.conf to load on every boot.
+==> You will need a /dev/fuse device node to use FUSE.
+ -> If you use udev, nothing needs to be done
+ -> For a static /dev, run: mknod /dev/fuse -m 0666 c 10 229
+EOM
+}
+
+op=$1
+shift
+$op $*
diff --git a/extra/fuse/fuse.rc.d b/extra/fuse/fuse.rc.d
new file mode 100755
index 000000000..768da5b02
--- /dev/null
+++ b/extra/fuse/fuse.rc.d
@@ -0,0 +1,49 @@
+#!/bin/bash
+#
+# fuse Init script for Filesystem in Userspace
+# Based on the script by Miklos Szeredi <miklos@szeredi.hu>
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+FUSECTL=/sys/fs/fuse/connections
+
+case "$1" in
+ start)
+ stat_busy "Starting fuse"
+ if ! grep -qw fuse /proc/filesystems; then
+ modprobe fuse >/dev/null 2>&1
+ if [ $? -gt 0 ]; then
+ stat_fail
+ exit 1
+ fi
+ fi
+ if grep -qw fusectl /proc/filesystems && ! grep -qw $FUSECTL /proc/mounts; then
+ mount -t fusectl none $FUSECTL >/dev/null 2>&1
+ if [ $? -gt 0 ]; then
+ stat_fail
+ exit 1
+ fi
+ fi
+ add_daemon fuse
+ stat_done
+ ;;
+ stop)
+ stat_busy "Stopping fuse"
+ umount $FUSECTL >/dev/null 2>&1
+ rmmod fuse >/dev/null 2>&1
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon fuse
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
diff --git a/extra/fvwm-devel/ChangeLog b/extra/fvwm-devel/ChangeLog
new file mode 100644
index 000000000..f338d7485
--- /dev/null
+++ b/extra/fvwm-devel/ChangeLog
@@ -0,0 +1,44 @@
+2010-08-09 Eric Belanger <eric@archlinux.org>
+
+ * fvwm-devel 2.5.31-1
+ * Upstream update
+
+2010-05-13 Eric Belanger <eric@archlinux.org>
+
+ * fvwm-devel 2.5.30-1
+ * Upstream update
+
+2010-04-07 Eric Belanger <eric@archlinux.org>
+
+ * fvwm-devel 2.5.29-1
+ * Upstream update
+
+2010-01-19 Eric Belanger <eric@archlinux.org>
+
+ * fvwm-devel 2.5.28-3
+ * Fixed libpng patch
+
+2010-01-18 Eric Belanger <eric@archlinux.org>
+
+ * fvwm-devel 2.5.28-2
+ * Rebuilt for libpng 1.4 and libjpeg 8
+
+2009-09-27 Eric Belanger <eric@archlinux.org>
+
+ * fvwm-devel 2.5.28-1
+ * Upstream update
+
+2009-06-18 Eric Belanger <eric@archlinux.org>
+
+ * fvwm-devel 2.5.27-2
+ * Rebuilt against readline 6.0.00
+
+2009-03-29 Eric Belanger <eric@archlinux.org>
+
+ * fvwm-devel 2.5.27-1
+ * Upstream update
+
+2008-05-09 Eric Belanger <eric@archlinux.org>
+
+ * fvwm-devel 2.5.26-1
+ * Upstream update
diff --git a/extra/fvwm-devel/PKGBUILD b/extra/fvwm-devel/PKGBUILD
new file mode 100644
index 000000000..f5fd92bc6
--- /dev/null
+++ b/extra/fvwm-devel/PKGBUILD
@@ -0,0 +1,36 @@
+# $Id: PKGBUILD 87047 2010-08-10 02:32:22Z eric $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+# Contributor: Tobias Kieslich <tobias@archlinux.org>
+
+pkgname=fvwm-devel
+pkgver=2.5.31
+pkgrel=1
+pkgdesc="A multiple large virtual desktop window manager originally derived from twm"
+arch=('i686' 'x86_64')
+url="http://www.fvwm.org"
+license=('GPL' 'custom')
+depends=('imlib' 'fribidi' 'perl' 'libstroke' 'libxpm' 'readline' 'librsvg')
+makedepends=('pkg-config')
+conflicts=('fvwm')
+provides=("fvwm=${pkgver}")
+changelog=ChangeLog
+source=(ftp://ftp.fvwm.org/pub/fvwm/version-2/fvwm-${pkgver}.tar.bz2 fvwm-devel.desktop)
+md5sums=('bc0a64cee2b76a91b1b3f1aa716f564d' '3f5bcb246e035ff29aa5bf54487a3db4')
+sha1sums=('0a59ac1c17f37dbfb1e042f4df3f86a5eb2d719c' '17db773870637b410ceb4f68743dbd517bc5c599')
+
+build() {
+ cd "${srcdir}/fvwm-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib --with-stroke-library
+ make
+}
+
+package() {
+ cd "${srcdir}/fvwm-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+
+ install -d "${pkgdir}/etc/fvwm"
+ install -D -m644 sample.fvwmrc/* "${pkgdir}/etc/fvwm"
+ rm -f "${pkgdir}"/etc/fvwm/Makefile*
+ install -D -m644 ../fvwm-devel.desktop "${pkgdir}/etc/X11/sessions/fvwm-devel.desktop"
+ install -D -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/COPYING"
+}
diff --git a/extra/fvwm-devel/fvwm-devel.desktop b/extra/fvwm-devel/fvwm-devel.desktop
new file mode 100644
index 000000000..dac786fb8
--- /dev/null
+++ b/extra/fvwm-devel/fvwm-devel.desktop
@@ -0,0 +1,6 @@
+[Desktop Entry]
+Encoding=UTF-8
+Type=XSession
+Exec=/usr/bin/fvwm
+TryExec=/usr/bin/fvwm
+Name=fvwm-devel
diff --git a/extra/fvwm/ChangeLog b/extra/fvwm/ChangeLog
new file mode 100644
index 000000000..2b16765b7
--- /dev/null
+++ b/extra/fvwm/ChangeLog
@@ -0,0 +1,5 @@
+2009-06-18 Eric Belanger <eric@archlinux.org>
+
+ * fvwm 2.4.20-4
+ * Rebuilt against readline 6.0.00
+ * Added ChangeLog
diff --git a/extra/fvwm/PKGBUILD b/extra/fvwm/PKGBUILD
new file mode 100644
index 000000000..e32a5e22d
--- /dev/null
+++ b/extra/fvwm/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 42788 2009-06-18 20:20:03Z eric $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+# Contributor: judd <jvinet@zeroflux.org>
+
+pkgname=fvwm
+pkgver=2.4.20
+pkgrel=4
+pkgdesc="A multiple large virtual desktop window manager originally derived from twm"
+arch=('i686' 'x86_64')
+url="http://www.fvwm.org"
+license=('GPL' 'custom')
+depends=('readline>=6.0.00' 'libxpm' 'libxinerama' 'gtk' 'imlib' 'libstroke')
+conflicts=('fvwm-devel')
+source=(ftp://ftp.fvwm.org/pub/fvwm/version-2/${pkgname}-${pkgver}.tar.gz fvwm2.desktop)
+md5sums=('3ac10558411c896f3afba285697cf42c' 'e52a6ef25a936dcf3ad0e58f2e9ed0ea')
+sha1sums=('2130a16590462cbbf15f255a46abe8b8a6cb4401' 'e0924164329e7eb14e0d6137d8ff18cf6230191c')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --libexecdir=/usr/lib --with-stroke || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+ install -D -m644 ../fvwm2.desktop "${pkgdir}/etc/X11/sessions/fvwm2.desktop" || return 1
+ install -D -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/COPYING" || return 1
+}
diff --git a/extra/fvwm/fvwm2.desktop b/extra/fvwm/fvwm2.desktop
new file mode 100644
index 000000000..5df7750b1
--- /dev/null
+++ b/extra/fvwm/fvwm2.desktop
@@ -0,0 +1,8 @@
+[Desktop Entry]
+Encoding=UTF-8
+Name=FVWM2
+Comment=The fvwm2 window manager
+Exec=fvwm2
+# no icon yet, only the top three are currently used
+Icon=
+Type=Application
diff --git a/extra/fwbuilder/PKGBUILD b/extra/fwbuilder/PKGBUILD
new file mode 100644
index 000000000..055db9e92
--- /dev/null
+++ b/extra/fwbuilder/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 109609 2011-02-11 02:28:42Z kevin $
+# Maintainer: Kevin Piche <kevin@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=fwbuilder
+pkgver=4.1.3
+pkgrel=1
+pkgdesc="Object-oriented GUI and set of compilers for various firewall platforms"
+url="http://www.fwbuilder.org/"
+arch=('i686' 'x86_64')
+license=('GPL')
+depends=("libfwbuilder=${pkgver}" 'qt' 'net-snmp' 'hicolor-icon-theme')
+source=("http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.gz")
+md5sums=('7cb6d50ce6f02b485525405bd00d8c33')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./autogen.sh
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make INSTALL_ROOT=${pkgdir} install
+}
diff --git a/extra/fwbuilder/fwbuilder.install b/extra/fwbuilder/fwbuilder.install
new file mode 100644
index 000000000..45f0c2242
--- /dev/null
+++ b/extra/fwbuilder/fwbuilder.install
@@ -0,0 +1,12 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
+
diff --git a/extra/fyre/ChangeLog b/extra/fyre/ChangeLog
new file mode 100644
index 000000000..edb09672c
--- /dev/null
+++ b/extra/fyre/ChangeLog
@@ -0,0 +1,7 @@
+2008-11-03 Eric Belanger <eric@archlinux.org>
+
+ * fyre 1.0.1-3
+ * Fixed mime file conflict
+ * Fixed install scriptlet
+ * Added shared-mime-info depends
+ * Added ChangeLog
diff --git a/extra/fyre/PKGBUILD b/extra/fyre/PKGBUILD
new file mode 100644
index 000000000..cb1a914af
--- /dev/null
+++ b/extra/fyre/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 18314 2008-11-04 04:33:02Z eric $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+# Contributor: damir <damir@archlinux.org>
+
+pkgname=fyre
+pkgver=1.0.1
+pkgrel=3
+pkgdesc="Rendering of the Peter de Jong map"
+arch=("i686" "x86_64")
+url="http://fyre.navi.cx/"
+license=('GPL')
+depends=('openexr>=1.6' 'libglade' 'gnet' 'shared-mime-info')
+install=${pkgname}.install
+source=(http://flapjack.navi.cx/releases/fyre/fyre-${pkgver}.tar.gz)
+md5sums=('44d5830c527325c1ee6fa6ea92b4ba03')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr || return 1
+ make || return 1
+ make prefix=${pkgdir}/usr install || return 1
+ rm ${pkgdir}/usr/share/mime/{XMLnamespaces,globs,magic,aliases,subclasses} || return 1
+ rm ${pkgdir}/usr/share/mime/{generic-icons,globs2,icons,treemagic,types} || return 1
+ rm ${pkgdir}/usr/share/mime/mime.cache || return 1
+ rm ${pkgdir}/usr/share/icons/hicolor/icon-theme.cache || return 1
+}
diff --git a/extra/fyre/fyre.install b/extra/fyre/fyre.install
new file mode 100644
index 000000000..0f4a73633
--- /dev/null
+++ b/extra/fyre/fyre.install
@@ -0,0 +1,11 @@
+post_install() {
+ usr/bin/update-mime-database /usr/share/mime > /dev/null 2>&1
+}
+
+post_upgrade() {
+ usr/bin/update-mime-database /usr/share/mime > /dev/null 2>&1
+}
+
+pre_remove() {
+ usr/bin/update-mime-database /usr/share/mime > /dev/null 2>&1
+}
diff --git a/extra/garcon/PKGBUILD b/extra/garcon/PKGBUILD
new file mode 100644
index 000000000..c602bed7e
--- /dev/null
+++ b/extra/garcon/PKGBUILD
@@ -0,0 +1,35 @@
+# $Id: PKGBUILD 106319 2011-01-16 16:09:00Z andyrtr $
+# Maintainer: AndyRTR <andyrtr@archlinux.org>
+# Contributor: Xavier Devlamynck <magicrhesus@ouranos.be>
+
+pkgname=garcon
+pkgver=0.1.5
+pkgrel=1
+pkgdesc="implementation of the freedesktop.org menu specification"
+arch=('i686' 'x86_64')
+license=('LGPL')
+url="http://wiki.xfce.org/dev/garcon"
+groups=('xfce4')
+depends=('glib2') # 'perl')
+makedepends=('pkgconfig' 'intltool' 'xfce4-dev-tools>=4.7.4')
+conflicts=('garcon-git')
+replaces=('libxfce4menu')
+options=('!libtool')
+source=(http://archive.xfce.org/src/libs/garcon/0.1/garcon-${pkgver}.tar.bz2)
+md5sums=('c4fd42082b4ae157aa4c7abb6d6570aa')
+
+build() {
+ cd ${srcdir}/garcon-${pkgver}
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --libexecdir=/usr/lib \
+ --localstatedir=/var \
+ --disable-static \
+ --disable-debug
+ make
+}
+
+package() {
+ cd ${srcdir}/garcon-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/gc/PKGBUILD b/extra/gc/PKGBUILD
new file mode 100644
index 000000000..11898fa33
--- /dev/null
+++ b/extra/gc/PKGBUILD
@@ -0,0 +1,21 @@
+# $Id: PKGBUILD 18876 2008-11-09 22:41:09Z andyrtr $
+# Maintainer: Daniel Isenmann <daniel [at] archlinux.org>
+# Contributor: dorphell <dorphell@gmx.net>
+pkgname=gc
+pkgver=7.1
+pkgrel=1
+pkgdesc="A garbage collector for C and C++"
+arch=(i686 x86_64)
+url="http://www.hpl.hp.com/personal/Hans_Boehm/gc/"
+license=('GPL')
+source=(http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/${pkgname}-${pkgver}.tar.gz)
+depends=('gcc-libs')
+options=(!libtool)
+md5sums=('2ff9924c7249ef7f736ecfe6f08f3f9b')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --enable-cplusplus || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/gcalctool/PKGBUILD b/extra/gcalctool/PKGBUILD
new file mode 100644
index 000000000..57978318b
--- /dev/null
+++ b/extra/gcalctool/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 100386 2010-11-23 05:21:28Z heftig $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=gcalctool
+pkgver=5.32.2
+pkgrel=1
+pkgdesc="GNOME Scientific calculator"
+arch=('i686' 'x86_64')
+license=('GPL')
+depends=('gtk2>=2.22.0' 'dconf')
+makedepends=('intltool' 'gnome-doc-utils>=0.20.1')
+groups=('gnome-extra')
+options=(!emptydirs)
+url="http://www.gnome.org"
+install=gcalctool.install
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/5.32/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('b281cc545f27b37a0fd120366b1be517574d9f505b59dfc34f9860007df0b788')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc --disable-schemas-compile \
+ --localstatedir=/var --disable-scrollkeeper
+ make
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/gcalctool/gcalctool.install b/extra/gcalctool/gcalctool.install
new file mode 100644
index 000000000..2ef26aaa9
--- /dev/null
+++ b/extra/gcalctool/gcalctool.install
@@ -0,0 +1,11 @@
+post_install() {
+ usr/bin/glib-compile-schemas usr/share/glib-2.0/schemas
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ post_install $1
+}
diff --git a/extra/gcin/PKGBUILD b/extra/gcin/PKGBUILD
new file mode 100644
index 000000000..42d692c41
--- /dev/null
+++ b/extra/gcin/PKGBUILD
@@ -0,0 +1,36 @@
+# $Id: PKGBUILD 116389 2011-03-23 02:55:06Z bisson $
+# Contributor: Andreas Radke <andyrtr@archlinux.org>
+# Contributor: damir <damir@archlinux.org>
+# Maintainer: Gaetan Bisson <bisson@archlinux.org>
+
+pkgname=gcin
+pkgver=1.6.0
+pkgrel=1
+pkgdesc='Input method server supporting various input methods'
+arch=('i686' 'x86_64')
+license=('LGPL')
+url='http://www.csie.nctu.edu.tw/~cp76/gcin/'
+depends=('gtk2' 'libxtst')
+makedepends=('anthy' 'qt')
+optdepends=('qt: support for qt4 input method')
+source=("${url}download/${pkgname}-${pkgver}.tar.bz2"
+ 'fix_x86_64_libdir.patch'
+ 'fix_qt4_paths.patch')
+sha1sums=('72d05f85e0cd410420eef539e034167172b8c34c'
+ 'e5c113e50420bf4750f5547641df6ec4b7e437e0'
+ '16d004424caed541d5baaa6874f708b1c138ab08')
+
+install=install
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -p1 -i "${srcdir}/fix_x86_64_libdir.patch"
+ patch -p1 -i "${srcdir}/fix_qt4_paths.patch"
+ ./configure --prefix=/usr --use_i18n=Y
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/gcin/fix_qt4_paths.patch b/extra/gcin/fix_qt4_paths.patch
new file mode 100644
index 000000000..b029c17e5
--- /dev/null
+++ b/extra/gcin/fix_qt4_paths.patch
@@ -0,0 +1,31 @@
+diff -aur old/configure new/configure
+--- old/configure 2011-02-10 20:34:48.153348697 +0100
++++ new/configure 2011-02-10 20:35:09.623348816 +0100
+@@ -174,7 +174,7 @@
+
+
+ QT4_IM='N'
+-QT4_IM_DIR=/usr/$LIB/qt4/plugins/inputmethods
++QT4_IM_DIR=/usr/$LIB/qt/plugins/inputmethods
+ echo "testing if you have qt4 support"
+ if [ -d $QT4_IM_DIR ]; then
+ QT4_IM='Y'
+diff -aur old/qt4-im/Makefile new/qt4-im/Makefile
+--- old/qt4-im/Makefile 2011-02-10 20:34:23.236682152 +0100
++++ new/qt4-im/Makefile 2011-02-10 20:35:09.623348816 +0100
+@@ -1,5 +1,5 @@
+ include ../config.mak
+-QT=qt4
++QT=qt
+ QTIM=$(QT)/plugins/inputmethods
+ IMMODULES=$(libdir)/$(QTIM)
+
+@@ -15,7 +15,7 @@
+ $(CXX) -E $(CFLAGS) $(INCS) $< > $@
+
+ moc_gcin-qt.cpp: gcin-qt.h
+- /usr/lib/$(QT)/bin/moc $< -o moc_gcin-qt.cpp
++ /usr/bin/moc $< -o moc_gcin-qt.cpp
+
+ im-gcin.so: $(OBJS)
+ export LD_RUN_PATH=$(gcinlibdir) ;\
diff --git a/extra/gcin/fix_x86_64_libdir.patch b/extra/gcin/fix_x86_64_libdir.patch
new file mode 100644
index 000000000..5f4df6a9e
--- /dev/null
+++ b/extra/gcin/fix_x86_64_libdir.patch
@@ -0,0 +1,12 @@
+diff -aur old/configure new/configure
+--- old/configure 2011-02-10 20:34:20.943348819 +0100
++++ new/configure 2011-02-10 20:34:48.153348697 +0100
+@@ -151,7 +151,7 @@
+
+ LIB='lib'
+ if [ -d /lib64 ]; then
+-LIB='lib64'
++LIB='lib'
+ fi
+
+ QT_IM='N'
diff --git a/extra/gcin/install b/extra/gcin/install
new file mode 100644
index 000000000..1097ea400
--- /dev/null
+++ b/extra/gcin/install
@@ -0,0 +1,13 @@
+post_install() {
+ echo -n "updating gtk.immodules... "
+ /usr/bin/gtk-query-immodules-2.0 > /etc/gtk-2.0/gtk.immodules
+ echo "done."
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/extra/gconf-editor/PKGBUILD b/extra/gconf-editor/PKGBUILD
new file mode 100644
index 000000000..90c51b78b
--- /dev/null
+++ b/extra/gconf-editor/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 91657 2010-09-27 15:41:20Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=gconf-editor
+pkgver=2.32.0
+pkgrel=1
+pkgdesc="Graphical gconf registry editor"
+arch=(i686 x86_64)
+license=('GPL')
+depends=('gconf>=2.31.91' 'hicolor-icon-theme')
+makedepends=('pkgconfig' 'intltool' 'gnome-doc-utils>=0.20.0')
+url="http://www.gnome.org"
+groups=('gnome-extra')
+options=(!emptydirs)
+install=gconf-editor.install
+source=(http://ftp.gnome.org/pub/gnome/sources/gconf-editor/2.32/gconf-editor-${pkgver}.tar.bz2)
+sha256sums=('c6d1d35ce5d136121ad76efe1c4033425bb2ad3800e711bd1bca9ce869c12a1f')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-scrollkeeper
+ make
+ 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 gconf-editor ${pkgdir}/etc/gconf/schemas/*.schemas
+ rm -f ${pkgdir}/etc/gconf/schemas/*.schemas
+}
diff --git a/extra/gconf-editor/gconf-editor.install b/extra/gconf-editor/gconf-editor.install
new file mode 100644
index 000000000..307eaa047
--- /dev/null
+++ b/extra/gconf-editor/gconf-editor.install
@@ -0,0 +1,22 @@
+pkgname=gconf-editor
+
+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/extra/gconf-perl/PKGBUILD b/extra/gconf-perl/PKGBUILD
new file mode 100644
index 000000000..c95f1eba2
--- /dev/null
+++ b/extra/gconf-perl/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: PKGBUILD 104906 2011-01-05 14:35:54Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=gconf-perl
+_realname=Gnome2-GConf
+pkgver=1.044
+pkgrel=4
+pkgdesc="Gnome2-GConf perl bindings for gconf"
+arch=('i686' 'x86_64')
+license=('LGPL')
+url="http://gtk2-perl.sourceforge.net/"
+makedepends=('perl-extutils-pkgconfig' 'perl-extutils-depends')
+depends=('glib-perl' 'gconf' 'perl')
+options=(!emptydirs)
+source=(http://downloads.sourceforge.net/sourceforge/gtk2-perl/${_realname}-${pkgver}.tar.gz)
+md5sums=('ea386003b18f067524833b0eeb271330')
+
+build() {
+ cd "${srcdir}/${_realname}-${pkgver}"
+ perl Makefile.PL INSTALLDIRS=vendor
+ make
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/gconf/01_xml-gettext-domain.patch b/extra/gconf/01_xml-gettext-domain.patch
new file mode 100644
index 000000000..d1323f61f
--- /dev/null
+++ b/extra/gconf/01_xml-gettext-domain.patch
@@ -0,0 +1,362 @@
+# Description: Support calling gettext at runtime and putting the gettext domain into the .schemas file instead of replicating translations in /usr/share/gconf/schemas/*.schemas *and* /var/lib/gconf/defaults/%gconf-tree-$LANG.xml. This saves in the order of 90 MB uncompressed/10 MB compressed on hard disks.
+# Ubuntu: https://bugs.launchpad.net/bugs/123025
+# Upstream: http://bugzilla.gnome.org/show_bug.cgi?id=568845
+--- GConf-2.26.0/backends/markup-tree.c.gettext 2009-04-26 23:33:05.258484987 -0400
++++ GConf-2.26.0/backends/markup-tree.c 2009-04-26 23:34:25.026700526 -0400
+@@ -52,6 +52,7 @@ struct _MarkupEntry
+ char *schema_name;
+ char *mod_user;
+ GTime mod_time;
++ const char *gettext_domain;
+ };
+
+ static LocalSchemaInfo* local_schema_info_new (void);
+@@ -1593,6 +1594,8 @@ markup_entry_set_value (MarkupEntry
+ gconf_schema_get_type (schema));
+ gconf_schema_set_owner (current_schema,
+ gconf_schema_get_owner (schema));
++ gconf_schema_set_gettext_domain (current_schema,
++ gconf_schema_get_gettext_domain (schema));
+ }
+
+ /* Update mod time */
+@@ -1805,6 +1808,8 @@ markup_entry_get_value (MarkupEntry *ent
+ else if (c_local_schema && c_local_schema->long_desc)
+ gconf_schema_set_long_desc (schema, c_local_schema->long_desc);
+
++ gconf_schema_set_gettext_domain (schema, entry->gettext_domain);
++
+ return retval;
+ }
+ }
+@@ -2339,8 +2344,9 @@ parse_value_element (GMarkupParseContext
+ const char *ltype;
+ const char *list_type;
+ const char *owner;
++
+ GConfValueType vtype;
+- const char *dummy1, *dummy2, *dummy3, *dummy4;
++ const char *dummy1, *dummy2, *dummy3, *dummy4, *dummy5;
+
+ #if 0
+ g_assert (ELEMENT_IS ("entry") ||
+@@ -2377,6 +2383,7 @@ parse_value_element (GMarkupParseContext
+ "muser", &dummy2,
+ "mtime", &dummy3,
+ "schema", &dummy4,
++ "gettext_domain", &dummy5,
+
+ NULL))
+ return;
+@@ -2683,6 +2690,7 @@ parse_entry_element (GMarkupParseContext
+ const char *mtime;
+ const char *schema;
+ const char *type;
++ const char *gettext_domain;
+ const char *dummy1, *dummy2, *dummy3, *dummy4;
+ const char *dummy5, *dummy6, *dummy7;
+ GConfValue *value;
+@@ -2693,6 +2701,7 @@ parse_entry_element (GMarkupParseContext
+ mtime = NULL;
+ schema = NULL;
+ type = NULL;
++ gettext_domain = NULL;
+
+ if (!locate_attributes (context, element_name, attribute_names, attribute_values,
+ error,
+@@ -2701,6 +2710,7 @@ parse_entry_element (GMarkupParseContext
+ "mtime", &mtime,
+ "schema", &schema,
+ "type", &type,
++ "gettext_domain", &gettext_domain,
+
+ /* These are allowed but we don't use them until
+ * parse_value_element
+@@ -2768,6 +2778,9 @@ parse_entry_element (GMarkupParseContext
+ */
+ if (schema)
+ entry->schema_name = g_strdup (schema);
++
++ if (gettext_domain)
++ entry->gettext_domain = g_intern_string (gettext_domain);
+ }
+ else
+ {
+@@ -3716,6 +3729,7 @@ write_value_element (GConfValue *value,
+ GConfSchema *schema;
+ GConfValueType stype;
+ const char *owner;
++ const char *gettext_domain;
+
+ schema = gconf_value_get_schema (value);
+
+@@ -3741,6 +3755,23 @@ write_value_element (GConfValue *value,
+
+ g_free (s);
+ }
++
++ gettext_domain = gconf_schema_get_gettext_domain (schema);
++
++ if (gettext_domain)
++ {
++ char *s;
++
++ s = g_markup_escape_text (gettext_domain, -1);
++
++ if (fprintf (f, " gettext_domain=\"%s\"", s) < 0)
++ {
++ g_free (s);
++ return FALSE;
++ }
++
++ g_free (s);
++ }
+
+ if (stype == GCONF_VALUE_LIST)
+ {
+diff -up GConf-2.26.0/doc/gconf-1.0.dtd.gettext GConf-2.26.0/doc/gconf-1.0.dtd
+--- GConf-2.26.0/doc/gconf-1.0.dtd.gettext 2009-04-26 23:33:17.240736103 -0400
++++ GConf-2.26.0/doc/gconf-1.0.dtd 2009-04-26 23:34:25.027700384 -0400
+@@ -7,7 +7,7 @@
+ <!-- A single schema. What I am trying to say is "this set of
+ elements, in any order". Duplicate elements (apart from <locale>) are
+ not allowed). -->
+-<!ELEMENT schema (key|applyto*|owner?|type|(list_type|(car_type,cdr_type))?|default?|locale*)*>
++<!ELEMENT schema (key|applyto*|owner?|type|(list_type|(car_type,cdr_type))?|default?|locale*|gettext_domain?)*>
+
+ <!-- The key for this schema (e.g. /schemas/apps/foo/bar) -->
+ <!ELEMENT key (#PCDATA)>
+diff -up GConf-2.26.0/gconf/gconf-internals.c.gettext GConf-2.26.0/gconf/gconf-internals.c
+--- GConf-2.26.0/gconf/gconf-internals.c.gettext 2009-04-26 23:34:10.994700035 -0400
++++ GConf-2.26.0/gconf/gconf-internals.c 2009-04-26 23:34:53.767450191 -0400
+@@ -513,6 +513,7 @@ gconf_fill_corba_schema_from_gconf_schem
+ cs->short_desc = CORBA_string_dup (gconf_schema_get_short_desc (sc) ? gconf_schema_get_short_desc (sc) : "");
+ cs->long_desc = CORBA_string_dup (gconf_schema_get_long_desc (sc) ? gconf_schema_get_long_desc (sc) : "");
+ cs->owner = CORBA_string_dup (gconf_schema_get_owner (sc) ? gconf_schema_get_owner (sc) : "");
++ cs->gettext_domain = CORBA_string_dup (gconf_schema_get_gettext_domain (sc) ? gconf_schema_get_gettext_domain (sc) : "");
+
+ {
+ gchar* encoded;
+@@ -600,6 +601,14 @@ gconf_schema_from_corba_schema(const Con
+ gconf_schema_set_owner(sc, cs->owner);
+ }
+
++ if (*cs->gettext_domain != '\0')
++ {
++ if (!g_utf8_validate (cs->gettext_domain, -1, NULL))
++ gconf_log (GCL_ERR, _("Invalid UTF-8 in gettext domain for schema"));
++ else
++ gconf_schema_set_gettext_domain(sc, cs->gettext_domain);
++ }
++
+ {
+ GConfValue* val;
+
+diff -up GConf-2.26.0/gconf/gconf-schema.c.gettext GConf-2.26.0/gconf/gconf-schema.c
+--- GConf-2.26.0/gconf/gconf-schema.c.gettext 2009-04-26 23:33:26.787483545 -0400
++++ GConf-2.26.0/gconf/gconf-schema.c 2009-04-26 23:35:54.240450142 -0400
+@@ -32,9 +32,10 @@ typedef struct {
+ GConfValueType car_type; /* Pair car type of the described entry */
+ GConfValueType cdr_type; /* Pair cdr type of the described entry */
+ gchar* locale; /* Schema locale */
+- gchar* owner; /* Name of creating application */
++ const gchar* owner; /* Name of creating application */
+ gchar* short_desc; /* 40 char or less description, no newlines */
+ gchar* long_desc; /* could be a paragraph or so */
++ const gchar* gettext_domain; /* description gettext domain */
+ GConfValue* default_value; /* Default value of the key */
+ } GConfRealSchema;
+
+@@ -63,7 +64,6 @@ gconf_schema_free (GConfSchema* sc)
+ g_free (real->locale);
+ g_free (real->short_desc);
+ g_free (real->long_desc);
+- g_free (real->owner);
+
+ if (real->default_value)
+ gconf_value_free (real->default_value);
+@@ -91,7 +91,9 @@ gconf_schema_copy (const GConfSchema* sc
+
+ dest->long_desc = g_strdup (real->long_desc);
+
+- dest->owner = g_strdup (real->owner);
++ dest->gettext_domain = real->gettext_domain;
++
++ dest->owner = real->owner;
+
+ dest->default_value = real->default_value ? gconf_value_copy (real->default_value) : NULL;
+
+@@ -136,6 +138,17 @@ gconf_schema_set_locale (GConfSchema* sc
+ REAL_SCHEMA (sc)->locale = NULL;
+ }
+
++void
++gconf_schema_set_gettext_domain (GConfSchema* sc, const gchar* domain)
++{
++ g_return_if_fail (domain == NULL || g_utf8_validate (domain, -1, NULL));
++
++ if (domain)
++ REAL_SCHEMA (sc)->gettext_domain = g_intern_string (domain);
++ else
++ REAL_SCHEMA (sc)->gettext_domain = NULL;
++}
++
+ void
+ gconf_schema_set_short_desc (GConfSchema* sc, const gchar* desc)
+ {
+@@ -169,11 +182,8 @@ gconf_schema_set_owner (GConfSchema* sc,
+ {
+ g_return_if_fail (owner == NULL || g_utf8_validate (owner, -1, NULL));
+
+- if (REAL_SCHEMA (sc)->owner)
+- g_free (REAL_SCHEMA (sc)->owner);
+-
+ if (owner)
+- REAL_SCHEMA (sc)->owner = g_strdup (owner);
++ REAL_SCHEMA (sc)->owner = g_intern_string (owner);
+ else
+ REAL_SCHEMA (sc)->owner = NULL;
+ }
+@@ -228,6 +238,14 @@ gconf_schema_validate (const GConfSchema
+ return FALSE;
+ }
+
++ if (real->gettext_domain && !g_utf8_validate (real->gettext_domain, -1, NULL))
++ {
++ g_set_error (err, GCONF_ERROR,
++ GCONF_ERROR_FAILED,
++ _("Schema contains invalid UTF-8"));
++ return FALSE;
++ }
++
+ if (real->owner && !g_utf8_validate (real->owner, -1, NULL))
+ {
+ g_set_error (err, GCONF_ERROR,
+@@ -299,11 +317,32 @@ gconf_schema_get_locale (const GConfSche
+ }
+
+ const char*
++gconf_schema_get_gettext_domain (const GConfSchema *schema)
++{
++ g_return_val_if_fail (schema != NULL, NULL);
++
++ return REAL_SCHEMA (schema)->gettext_domain;
++}
++
++static inline const char *
++schema_translate (const GConfSchema *schema,
++ const char *string)
++{
++ if (REAL_SCHEMA (schema)->gettext_domain)
++ {
++ bind_textdomain_codeset (REAL_SCHEMA (schema)->gettext_domain, "UTF-8");
++ return g_dgettext(REAL_SCHEMA (schema)->gettext_domain, string);
++ }
++ else
++ return string;
++}
++
++const char*
+ gconf_schema_get_short_desc (const GConfSchema *schema)
+ {
+ g_return_val_if_fail (schema != NULL, NULL);
+
+- return REAL_SCHEMA (schema)->short_desc;
++ return schema_translate (schema, REAL_SCHEMA (schema)->short_desc);
+ }
+
+ const char*
+@@ -311,7 +350,7 @@ gconf_schema_get_long_desc (const GConfS
+ {
+ g_return_val_if_fail (schema != NULL, NULL);
+
+- return REAL_SCHEMA (schema)->long_desc;
++ return schema_translate (schema, REAL_SCHEMA (schema)->long_desc);
+ }
+
+ const char*
+diff -up GConf-2.26.0/gconf/gconf-schema.h.gettext GConf-2.26.0/gconf/gconf-schema.h
+--- GConf-2.26.0/gconf/gconf-schema.h.gettext 2009-04-26 23:33:33.979744088 -0400
++++ GConf-2.26.0/gconf/gconf-schema.h 2009-04-26 23:34:25.030737043 -0400
+@@ -48,6 +48,8 @@ void gconf_schema_set_cdr_type
+ GConfValueType type);
+ void gconf_schema_set_locale (GConfSchema *sc,
+ const gchar *locale);
++void gconf_schema_set_gettext_domain (GConfSchema *sc,
++ const gchar *domain);
+ void gconf_schema_set_short_desc (GConfSchema *sc,
+ const gchar *desc);
+ void gconf_schema_set_long_desc (GConfSchema *sc,
+@@ -65,6 +67,7 @@ GConfValueType gconf_schema_get_list_typ
+ GConfValueType gconf_schema_get_car_type (const GConfSchema *schema);
+ GConfValueType gconf_schema_get_cdr_type (const GConfSchema *schema);
+ const char* gconf_schema_get_locale (const GConfSchema *schema);
++const char* gconf_schema_get_gettext_domain(const GConfSchema *schema);
+ const char* gconf_schema_get_short_desc (const GConfSchema *schema);
+ const char* gconf_schema_get_long_desc (const GConfSchema *schema);
+ const char* gconf_schema_get_owner (const GConfSchema *schema);
+diff -up GConf-2.26.0/gconf/gconftool.c.gettext GConf-2.26.0/gconf/gconftool.c
+--- GConf-2.26.0/gconf/gconftool.c.gettext 2009-04-26 23:33:41.907451190 -0400
++++ GConf-2.26.0/gconf/gconftool.c 2009-04-26 23:34:25.034736752 -0400
+@@ -3295,6 +3295,7 @@ struct _SchemaInfo {
+ GConfValueType cdr_type;
+ GConfValue* global_default;
+ GHashTable* hash;
++ gchar* gettext_domain;
+ };
+
+ static int
+@@ -3547,6 +3548,15 @@ extract_global_info(xmlNodePtr node,
+ else
+ g_printerr (_("WARNING: empty <applyto> node"));
+ }
++ else if (strcmp((char *)iter->name, "gettext_domain") == 0)
++ {
++ tmp = (char *)xmlNodeGetContent(iter);
++ if (tmp)
++ {
++ info->gettext_domain = g_strdup(tmp);
++ xmlFree(tmp);
++ }
++ }
+ else
+ g_printerr (_("WARNING: node <%s> not understood below <schema>\n"),
+ iter->name);
+@@ -3636,6 +3646,9 @@ process_locale_info(xmlNodePtr node, Sch
+ if (info->owner != NULL)
+ gconf_schema_set_owner(schema, info->owner);
+
++ if (info->gettext_domain != NULL)
++ gconf_schema_set_gettext_domain(schema, info->gettext_domain);
++
+ xmlFree(name);
+
+ /* Locale-specific info */
+@@ -3765,6 +3778,7 @@ get_schema_from_xml(xmlNodePtr node, gch
+ info.apply_to = NULL;
+ info.owner = NULL;
+ info.global_default = NULL;
++ info.gettext_domain = NULL;
+ info.hash = g_hash_table_new(g_str_hash, g_str_equal);
+
+ extract_global_info(node, &info);
+@@ -3801,6 +3815,8 @@ get_schema_from_xml(xmlNodePtr node, gch
+ ; /* nothing */
+ else if (strcmp((char *)iter->name, "applyto") == 0)
+ ; /* nothing */
++ else if (strcmp((char *)iter->name, "gettext_domain") == 0)
++ ; /* nothing */
+ else if (strcmp((char *)iter->name, "locale") == 0)
+ {
+ process_locale_info(iter, &info);
+diff -up GConf-2.26.0/gconf/GConfX.idl.gettext GConf-2.26.0/gconf/GConfX.idl
+--- GConf-2.26.0/gconf/GConfX.idl.gettext 2009-04-26 23:33:58.457483190 -0400
++++ GConf-2.26.0/gconf/GConfX.idl 2009-04-26 23:34:53.764448732 -0400
+@@ -16,6 +16,7 @@ struct ConfigSchema {
+ string short_desc;
+ string long_desc;
+ string owner;
++ string gettext_domain;
+ // Work around lack of recursive data types
+ string encoded_default_value;
+ };
diff --git a/extra/gconf/PKGBUILD b/extra/gconf/PKGBUILD
new file mode 100644
index 000000000..367e28f0f
--- /dev/null
+++ b/extra/gconf/PKGBUILD
@@ -0,0 +1,42 @@
+# $Id: PKGBUILD 91729 2010-09-27 18:54:15Z ibiru $
+# Maintainer: Jan de Groot <jan@archlinux.org>
+
+pkgname=gconf
+pkgver=2.32.0
+pkgrel=1
+pkgdesc="A configuration database system"
+arch=(i686 x86_64)
+license=('LGPL')
+depends=('orbit2>=2.14.18' 'gtk2>=2.22.0' 'libxml2>=2.7.7' 'polkit>=0.98' 'libldap>=2.4.23' 'dbus-glib>=0.86')
+makedepends=('pkgconfig' 'intltool' 'gtk-doc' 'gobject-introspection')
+options=('!libtool')
+install=gconf.install
+url="http://www.gnome.org"
+source=(http://ftp.gnome.org/pub/gnome/sources/GConf/2.32/GConf-${pkgver}.tar.bz2
+ gconf-merge-schema
+ gconfpkg
+ gconf-reload.patch
+ 01_xml-gettext-domain.patch)
+sha256sums=('54dd1dd7f49928a9cc42574bef6ef0481753770fc19986dc2004bbb7fac977a0'
+ 'ee6b6e6f4975dad13a8c45f1c1f0547a99373bdecdcd6604bfc12965c328a028'
+ 'bf1928718caa5df2b9e54a13cfd0f15a8fe0e09e86b84385ce023616a114e898'
+ '567b78d8b4b4bbcb77c5f134d57bc503c34867fcc6341c0b01716bcaa4a21694'
+ 'c883dec2b96978874a53700cfe7f26f24f8296767203e970bc6402b4b9945eb8')
+
+build() {
+ cd "${srcdir}/GConf-${pkgver}"
+ # Patch from fedora - reloads gconf after installing schemas
+ patch -Np1 -i "${srcdir}/gconf-reload.patch"
+ # http://bugzilla.gnome.org/show_bug.cgi?id=568845
+ patch -Np1 -i "${srcdir}/01_xml-gettext-domain.patch"
+
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --libexecdir=/usr/lib/GConf \
+ --disable-static --enable-defaults-service
+ make pkglibdir=/usr/lib/GConf
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/etc/gconf/gconf.xml.system"
+ install -m755 "${srcdir}/gconf-merge-schema" "${pkgdir}/usr/bin/"
+ install -d -m755 "${pkgdir}/usr/sbin"
+ install -m755 "${srcdir}/gconfpkg" "${pkgdir}/usr/sbin/"
+}
diff --git a/extra/gconf/gconf-merge-schema b/extra/gconf/gconf-merge-schema
new file mode 100755
index 000000000..992c162e6
--- /dev/null
+++ b/extra/gconf/gconf-merge-schema
@@ -0,0 +1,34 @@
+#!/bin/bash
+if [ ! "$1" -a ! "$2" ]; then
+ echo "Usage: $0 output.schemas [--domain gettextdomain] file1.schemas [file2.schemas [...]]"
+ exit 1
+fi
+
+OUTFILE="$1"
+DOMAIN=""
+shift
+
+if [ "$1" = "--domain" ]; then
+ shift
+ DOMAIN=$1
+ shift
+fi
+
+echo '<?xml version="1.0"?>' > "$OUTFILE"
+echo '<gconfschemafile><schemalist>' >> "$OUTFILE"
+
+while [ "$1" ]; do
+ if [ -f "$1" ]; then
+ sed -e '/<?xml/d' \
+ -e 's|<gconfschemafile>||g' \
+ -e 's|</gconfschemafile>||g' \
+ -e 's|<schemalist>||g' \
+ -e 's|</schemalist>||g' "$1" >> "$OUTFILE"
+ fi
+ shift
+done
+
+echo '</schemalist></gconfschemafile>' >> "$OUTFILE"
+if [ "$DOMAIN" != "" ]; then
+ sed -ri "s/^([[:space:]]*)(<locale name=\"C\">)/\1<gettext_domain>$DOMAIN<\/gettext_domain>\n\1\2/; /^[[:space:]]*<locale name=\"[^C]/,/^[[:space:]]*<\/locale>[[:space:]]*\$/ d; /^$/d; s/<\/schema>$/&\n/" "$OUTFILE"
+fi
diff --git a/extra/gconf/gconf-reload.patch b/extra/gconf/gconf-reload.patch
new file mode 100644
index 000000000..910f0dae4
--- /dev/null
+++ b/extra/gconf/gconf-reload.patch
@@ -0,0 +1,20 @@
+--- GConf-2.16.0/gconf/gconftool.c.orig 2006-10-14 17:37:14.000000000 +0000
++++ GConf-2.16.0/gconf/gconftool.c 2006-10-14 17:39:27.000000000 +0000
+@@ -963,6 +963,8 @@ main (int argc, char** argv)
+
+ gconf_engine_unref (conf);
+
++ g_spawn_command_line_sync ("/usr/bin/killall -q -TERM " GCONF_SERVERDIR "/" GCONFD, NULL, NULL, NULL, NULL);
++
+ return retval;
+ }
+
+@@ -975,6 +977,8 @@ main (int argc, char** argv)
+
+ gconf_engine_unref (conf);
+
++ g_spawn_command_line_sync ("/usr/bin/killall -q -TERM " GCONF_SERVERDIR "/" GCONFD, NULL, NULL, NULL, NULL);
++
+ return retval;
+ }
+
diff --git a/extra/gconf/gconf.install b/extra/gconf/gconf.install
new file mode 100644
index 000000000..f7945d165
--- /dev/null
+++ b/extra/gconf/gconf.install
@@ -0,0 +1,20 @@
+post_install() {
+ ldconfig -r .
+ chmod 755 etc/gconf/gconf.xml.system
+ usr/bin/gio-querymodules usr/lib/gio/modules
+}
+
+post_upgrade() {
+ ldconfig -r .
+ chmod 755 etc/gconf/gconf.xml.system
+ usr/bin/gio-querymodules usr/lib/gio/modules
+
+ PID=`pidof gconfd-2`
+ if [ ! -z "${PID}" ]; then
+ kill ${PID}
+ fi
+}
+
+post_remove() {
+ usr/bin/gio-querymodules usr/lib/gio/modules
+}
diff --git a/extra/gconf/gconfpkg b/extra/gconf/gconfpkg
new file mode 100755
index 000000000..72021e45e
--- /dev/null
+++ b/extra/gconf/gconfpkg
@@ -0,0 +1,50 @@
+#!/bin/sh
+
+usage() {
+cat << _EOF
+Usage:
+ gconfpkg [OPTION] [PACKAGE]
+
+ Help Options:
+ -?, --help Show help options
+
+ Application Options:
+ --install Install schemas for a given package
+ --uninstall Uninstall schemas for a given package
+
+_EOF
+}
+
+install() {
+ GCONF_CONFIG_SOURCE=`/usr/bin/gconftool-2 --get-default-source` \
+ /usr/bin/gconftool-2 --makefile-install-rule /usr/share/gconf/schemas/${pkgname}.schemas >/dev/null
+}
+
+uninstall() {
+ if [ -f /usr/share/gconf/schemas/${pkgname}.schemas ]; then
+ schemas=/usr/share/gconf/schemas/${pkgname}.schemas
+ elif [ -f /opt/gnome/share/gconf/schemas/${pkgname}.schemas ]; then
+ schemas=/opt/gnome/share/gconf/schemas/${pkgname}.schemas
+ else
+ schemas=`pacman -Ql ${pkgname} | grep 'gconf/schemas/.*schemas$' | awk '{ print $2 }'`
+ fi
+ GCONF_CONFIG_SOURCE=`/usr/bin/gconftool-2 --get-default-source` \
+ /usr/bin/gconftool-2 --makefile-uninstall-rule ${schemas} >/dev/null
+}
+
+if [ -z "$2" ]; then
+ usage
+else
+ pkgname="$2"
+ case "$1" in
+ --install)
+ install
+ ;;
+ --uninstall)
+ uninstall
+ ;;
+ *)
+ usage
+ ;;
+ esac
+fi
diff --git a/extra/gconfmm/PKGBUILD b/extra/gconfmm/PKGBUILD
new file mode 100644
index 000000000..d151b32d1
--- /dev/null
+++ b/extra/gconfmm/PKGBUILD
@@ -0,0 +1,38 @@
+#$Id: PKGBUILD 81933 2010-06-07 10:58:32Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Kritoke <typeolinux@yahoo.com>
+
+pkgbase=gconfmm
+pkgname=('gconfmm' 'gconfmm-docs')
+pkgver=2.28.2
+pkgrel=1
+arch=(i686 x86_64)
+license=('LGPL')
+makedepends=('pkgconfig' 'gtkmm>=2.20.3' 'glibmm-docs' 'gconf>=2.28.1' 'glibmm>=2.24.2')
+options=('!libtool')
+url="http://gtkmm.sourceforge.net/"
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.28/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('3e9575208ed1f43f0d0f42e62169a4e14d367a69829b3a531b943655f9db2ab9')
+
+build() {
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var || return 1
+ make || return 1
+}
+
+package_gconfmm() {
+ pkgdesc="C++ bindings for GConf"
+ depends=('gconf>=2.28.1' 'glibmm>=2.24.2')
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ sed -i -e 's/^doc_subdirs/#doc_subdirs/' Makefile || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
+
+package_gconfmm-docs() {
+ pkgdesc="Developer documentation for gconfmm"
+
+ cd "${srcdir}/${pkgbase}-${pkgver}/docs"
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/gd/ChangeLog b/extra/gd/ChangeLog
new file mode 100644
index 000000000..813a49e46
--- /dev/null
+++ b/extra/gd/ChangeLog
@@ -0,0 +1,11 @@
+2010-01-17 Ionut Biru <ionut@archlinux.ro>
+
+ * gd 2.0.36RC1-2
+ * libpng 1.4.0/libjpeg 8 rebuild
+
+2009-10-30 Eric Belanger <eric@archlinux.org>
+
+ * gd 2.0.36RC1-1
+ * Upstream update
+ * Added perl depends
+ * Added ChangeLog
diff --git a/extra/gd/PKGBUILD b/extra/gd/PKGBUILD
new file mode 100644
index 000000000..d00cc4b2c
--- /dev/null
+++ b/extra/gd/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 64438 2010-01-20 12:11:26Z ibiru $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+
+pkgname=gd
+pkgver=2.0.36RC1
+pkgrel=3
+pkgdesc="Library for the dynamic creation of images by programmers"
+arch=('i686' 'x86_64')
+url="http://www.libgd.org/"
+license=('custom')
+depends=('perl' 'libpng>=1.4.0' 'fontconfig' 'libjpeg>=8')
+options=('!libtool')
+source=(http://www.libgd.org/releases/${pkgname}-${pkgver}.tar.bz2 libpng14.patch)
+md5sums=('e876979ca3130623a4e7866d9579171a'
+ '7921556f4960e8d66cf4fb67ea7101b5')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ patch -Np1 -i ${srcdir}/libpng14.patch || return 1
+
+ ./configure --prefix=/usr --without-xpm || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+ install -D -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/COPYING" || return 1
+}
diff --git a/extra/gd/libpng14.patch b/extra/gd/libpng14.patch
new file mode 100644
index 000000000..19a3fda91
--- /dev/null
+++ b/extra/gd/libpng14.patch
@@ -0,0 +1,12 @@
+diff -Nur gd-2.0.36RC1.orig/gd_png.c gd-2.0.36RC1/gd_png.c
+--- gd-2.0.36RC1.orig/gd_png.c 2007-11-27 10:30:34.000000000 +0200
++++ gd-2.0.36RC1/gd_png.c 2010-01-17 17:14:11.000000000 +0200
+@@ -151,7 +151,7 @@
+ return NULL;
+ }
+
+- if (!png_check_sig (sig, 8)) { /* bad signature */
++ if (png_sig_cmp (sig, 0, 8)) { /* bad signature */
+ return NULL; /* bad signature */
+ }
+
diff --git a/extra/gdb/PKGBUILD b/extra/gdb/PKGBUILD
new file mode 100644
index 000000000..385774b89
--- /dev/null
+++ b/extra/gdb/PKGBUILD
@@ -0,0 +1,44 @@
+# $Id: PKGBUILD 90312 2010-09-10 14:58:18Z allan $
+# Maintainer: Allan McRae <allan@archlinux.org>
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=gdb
+pkgver=7.2
+pkgrel=2
+pkgdesc="The GNU Debugger"
+arch=('i686' 'x86_64')
+url="http://www.gnu.org/software/gdb/"
+license=('GPL3')
+depends=('ncurses' 'expat' 'python2')
+makedepends=('texinfo')
+backup=('etc/gdb/gdbinit')
+options=('!libtool')
+install=gdb.install
+source=(http://ftp.gnu.org/gnu/gdb/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('64260e6c56979ee750a01055f16091a5')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ ./configure --prefix=/usr --disable-nls \
+ --with-system-readline \
+ --with-system-gdbinit=/etc/gdb/gdbinit
+ make
+
+ # requires dejagnu
+ #make check
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+
+ # install "custom" system gdbinit
+ install -dm755 $pkgdir/etc/gdb
+ touch $pkgdir/etc/gdb/gdbinit
+
+ # resolve conflicts with binutils
+ rm ${pkgdir}/usr/include/{ansidecl,bfd,bfdlink,dis-asm,symcat}.h
+ rm ${pkgdir}/usr/lib/{libbfd,libiberty,libopcodes}.a
+ rm ${pkgdir}/usr/share/info/{bfd,configure,standards}.info
+}
diff --git a/extra/gdb/gdb.install b/extra/gdb/gdb.install
new file mode 100644
index 000000000..44302170f
--- /dev/null
+++ b/extra/gdb/gdb.install
@@ -0,0 +1,18 @@
+infodir=/usr/share/info
+filelist=(annotate.info gdb.info gdb.info-1 gdb.info-2 gdb.info-3 gdb.info-4 gdbint.info gdbint.info-1 gdbint.info-2 stabs.info)
+
+post_install() {
+ for file in ${filelist[@]}; do
+ install-info $infodir/$file.gz $infodir/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ for file in ${filelist[@]}; do
+ install-info --delete $infodir/$file.gz $infodir/dir 2> /dev/null
+ done
+}
diff --git a/extra/gdk-pixbuf2/PKGBUILD b/extra/gdk-pixbuf2/PKGBUILD
new file mode 100644
index 000000000..a2720d803
--- /dev/null
+++ b/extra/gdk-pixbuf2/PKGBUILD
@@ -0,0 +1,32 @@
+# $Id: PKGBUILD 114338 2011-03-12 18:07:51Z ibiru $
+# Maintainer: Ionut Biru <ibiru@archlinux.org>
+pkgname=gdk-pixbuf2
+pkgver=2.22.1
+pkgrel=2
+pkgdesc="An image loading library for gtk2"
+arch=('i686' 'x86_64')
+url="http://www.gtk.org/"
+license=('GPL2')
+depends=('glib2>=2.26.0' 'libpng>=1.4.3' 'libtiff>=3.9.4' 'libjpeg' 'libx11')
+makedepends=('gtk-doc' 'gobject-introspection')
+options=('!libtool')
+install=gdk-pixbuf2.install
+source=(http://download.gnome.org/sources/gdk-pixbuf/2.22/gdk-pixbuf-${pkgver}.tar.bz2)
+sha256sums=('6ce87eda24af9362307b2593c154d0b660f4e26d0abf2e71d46d0ddd55fd953d')
+
+build() {
+ cd "${srcdir}/gdk-pixbuf-${pkgver}"
+
+ ./configure --prefix=/usr \
+ --without-libjasper \
+ --with-included-loaders=png
+ make
+}
+
+package() {
+ cd "${srcdir}/gdk-pixbuf-${pkgver}"
+
+ make DESTDIR="${pkgdir}" install
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/extra/gdk-pixbuf2/gdk-pixbuf2.install b/extra/gdk-pixbuf2/gdk-pixbuf2.install
new file mode 100644
index 000000000..1b35942cb
--- /dev/null
+++ b/extra/gdk-pixbuf2/gdk-pixbuf2.install
@@ -0,0 +1,11 @@
+post_install() {
+ usr/bin/gdk-pixbuf-query-loaders --update-cache
+}
+
+post_upgrade() {
+ post_install
+}
+
+pre_remove() {
+ rm -f usr/lib/gdk-pixbuf-2.0/2.10.0/loaders/loaders.cache
+}
diff --git a/extra/gdl/PKGBUILD b/extra/gdl/PKGBUILD
new file mode 100644
index 000000000..7f32c0e0d
--- /dev/null
+++ b/extra/gdl/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: PKGBUILD 92053 2010-09-28 17:35:04Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=gdl
+pkgver=2.30.1
+pkgrel=1
+pkgdesc="Gnome Devtool Libraries"
+arch=(i686 x86_64)
+license=('GPL')
+url="http://www.gnome.org/"
+depends=('gtk2>=2.22.0')
+makedepends=('pkgconfig' 'intltool')
+options=('!libtool')
+source=(http://ftp.gnome.org/pub/GNOME/sources/gdl/2.30/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('027dd1cd0191996fe1a0dc902da857698cc79564cb057ba13b09097e56e30cc1')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-static
+ make
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/gdm/0001-port-to-libpanel-applet-3.0.patch b/extra/gdm/0001-port-to-libpanel-applet-3.0.patch
new file mode 100644
index 000000000..91ada7835
--- /dev/null
+++ b/extra/gdm/0001-port-to-libpanel-applet-3.0.patch
@@ -0,0 +1,506 @@
+diff --git a/configure.ac b/configure.ac
+index ed07dce..bf98669 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -45,7 +45,7 @@ GTK_REQUIRED_VERSION=2.20.0
+ PANGO_REQUIRED_VERSION=1.3.0
+ SCROLLKEEPER_REQUIRED_VERSION=0.1.4
+ GCONF_REQUIRED_VERSION=2.31.3
+-GNOME_PANEL_REQUIRED_VERSION=2.0.0
++GNOME_PANEL_REQUIRED_VERSION=2.31.90
+ LIBXKLAVIER_REQUIRED_VERSION=4.0
+ LIBCANBERRA_GTK_REQUIRED_VERSION=0.4
+ #FONTCONFIG_REQUIRED_VERSION=2.6.0
+@@ -152,7 +152,7 @@ AC_SUBST(SIMPLE_CHOOSER_LIBS)
+ PKG_CHECK_MODULES(APPLET,
+ dbus-glib-1 >= $DBUS_GLIB_REQUIRED_VERSION
+ gtk+-2.0 >= $GTK_REQUIRED_VERSION
+- libpanelapplet-2.0 >= $GNOME_PANEL_REQUIRED_VERSION)
++ libpanelapplet-3.0 >= $GNOME_PANEL_REQUIRED_VERSION)
+ AC_SUBST(APPLET_CFLAGS)
+ AC_SUBST(APPLET_LIBS)
+
+diff --git a/gui/user-switch-applet/GNOME_FastUserSwitchApplet.server.in.in b/gui/user-switch-applet/GNOME_FastUserSwitchApplet.server.in.in
+deleted file mode 100644
+index a9b775f..0000000
+--- a/gui/user-switch-applet/GNOME_FastUserSwitchApplet.server.in.in
++++ /dev/null
+@@ -1,38 +0,0 @@
+-<oaf_info>
+- <oaf_server iid="OAFIID:GNOME_FastUserSwitchApplet_Factory" type="exe"
+- location="@LIBEXECDIR@/gdm-user-switch-applet">
+-
+- <oaf_attribute name="repo_ids" type="stringv">
+- <item value="IDL:Bonobo/GenericFactory:1.0"/>
+- <item value="IDL:Bonobo/Unknown:1.0"/>
+- </oaf_attribute>
+- <oaf_attribute name="name" type="string" _value="User Switcher Applet Factory"/>
+- <oaf_attribute name="description" type="string" _value="User Switcher Applet Factory"/>
+- <oaf_attribute name="bonobo:environment" type="stringv">
+- <item value="DBUS_SESSION_BUS_ADDRESS"/>
+- <oaf_attribute name="bugzilla:bugzilla" type="string" value="GNOME"/>
+- <oaf_attribute name="bugzilla:product" type="string" value="gdm"/>
+- <oaf_attribute name="bugzilla:component" type="string" value="general"/>
+- <oaf_attribute name="bugzilla:version" type="string" value="@VERSION@"/>
+- <oaf_attribute name="bugzilla:other_binaries" type="string" value="gdm-user-switch-applet"/>
+- </oaf_attribute>
+- </oaf_server>
+-
+- <oaf_server iid="OAFIID:GNOME_FastUserSwitchApplet" type="factory"
+- location="OAFIID:GNOME_FastUserSwitchApplet_Factory">
+-
+- <oaf_attribute name="repo_ids" type="stringv">
+- <item value="IDL:GNOME/Vertigo/PanelAppletShell:1.0"/>
+- <item value="IDL:Bonobo/Control:1.0"/>
+- <item value="IDL:Bonobo/Unknown:1.0"/>
+- </oaf_attribute>
+- <oaf_attribute name="name" type="string" _value="User Switcher"/>
+- <oaf_attribute name="description" type="string" _value="A menu to quickly switch between users"/>
+- <oaf_attribute name="panel:icon" type="string" value="stock_people"/>
+- <oaf_attribute name="bugzilla:bugzilla" type="string" value="GNOME"/>
+- <oaf_attribute name="bugzilla:product" type="string" value="gdm"/>
+- <oaf_attribute name="bugzilla:component" type="string" value="general"/>
+- <oaf_attribute name="bugzilla:version" type="string" value="@VERSION@"/>
+- <oaf_attribute name="bugzilla:other_binaries" type="string" value="gdm-user-switch-applet"/>
+- </oaf_server>
+-</oaf_info>
+diff --git a/gui/user-switch-applet/GNOME_FastUserSwitchApplet.xml b/gui/user-switch-applet/GNOME_FastUserSwitchApplet.xml
+deleted file mode 100644
+index e1845c8..0000000
+--- a/gui/user-switch-applet/GNOME_FastUserSwitchApplet.xml
++++ /dev/null
+@@ -1,20 +0,0 @@
+-<Root>
+- <popups>
+- <popup name="button3">
+- <menuitem
+- name="About Me Item"
+- verb="GdmAboutMe"
+- _label="Edit Personal _Information"/>
+- <menuitem
+- name="Users and Groups Admin Item"
+- verb="GdmUsersGroupsAdmin"
+- _label="_Edit Users and Groups"/>
+- <menuitem
+- name="About Item"
+- verb="GdmAbout"
+- _label="_About"
+- pixtype="stock"
+- pixname="gtk-about"/>
+- </popup>
+- </popups>
+-</Root>
+diff --git a/gui/user-switch-applet/Makefile.am b/gui/user-switch-applet/Makefile.am
+index 2d2cdc0..cebe890 100644
+--- a/gui/user-switch-applet/Makefile.am
++++ b/gui/user-switch-applet/Makefile.am
+@@ -13,6 +13,7 @@ AM_CPPFLAGS = \
+ -DLIBEXECDIR=\""$(libexecdir)"\" \
+ -DSBINDIR=\""$(sbindir)"\" \
+ -DGDMCONFDIR=\"$(gdmconfdir)\" \
++ -DGDM_USER_SWITCH_MENU_UI_DIR="\"$(uidir)\"" \
+ $(GTK_CFLAGS) \
+ $(APPLET_CFLAGS) \
+ $(NULL)
+@@ -34,34 +35,31 @@ gdm_user_switch_applet_LDADD = \
+ $(APPLET_LIBS) \
+ $(NULL)
+
+-# Bonobo UI
+-uidir = $(datadir)/gnome-2.0/ui
+-ui_DATA = \
+- GNOME_FastUserSwitchApplet.xml \
+- $(NULL)
++uidir = $(datadir)/gnome-2.0/ui
++ui_DATA = gdm-user-switch-applet-menu.xml
+
+-# Bonobo .server
+-serverdir = $(libdir)/bonobo/servers
+-server_in_files = \
+- GNOME_FastUserSwitchApplet.server.in \
+- $(NULL)
+-server_DATA = $(server_in_files:.server.in=.server)
++appletdir = $(datadir)/gnome-panel/applets
++applet_in_files = org.gnome.gdm.UserSwitch.panel-applet.in
++applet_DATA = $(applet_in_files:.panel-applet.in=.panel-applet)
+
+-$(server_in_files): $(server_in_files:.server.in=.server.in.in)
+- sed -e "s|\@LIBEXECDIR\@|$(libexecdir)|" -e "s|\@VERSION\@|$(VERSION)|" $< > $@
++$(applet_in_files): $(applet_in_files).in Makefile
++ $(AM_V_GEN)$(SED) -e "s|\@LIBEXECDIR\@|$(libexecdir)|" -e "s|\@VERSION\@|$(VERSION)|" $< > $@
+
+-@INTLTOOL_SERVER_RULE@
++%.panel-applet: %.panel-applet.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*po) ; $(INTLTOOL_MERGE) $(top_srcdir)/po $< $@ -d -u -c $(top_builddir)/po/.intltool-merge-cache
+
+-EXTRA_DIST = \
+- $(ui_DATA) \
+- GNOME_FastUserSwitchApplet.server.in.in \
+- $(NULL)
++servicedir = $(datadir)/dbus-1/services
++service_in_files = org.gnome.panel.applet.GdmUserSwitchAppletFactory.service.in
++service_DATA = $(service_in_files:.service.in=.service)
++
++org.gnome.panel.applet.GdmUserSwitchAppletFactory.service: $(service_in_files)
++ $(AM_V_GEN)$(SED) -e "s|\@LIBEXECDIR\@|$(libexecdir)|" $< > $@
++
++EXTRA_DIST = org.gnome.gdm.UserSwitch.panel-applet.in.in \
++ $(service_in_files) \
++ $(ui_DATA) \
++ $(NULL)
++
++CLEANFILES = $(applet_DATA) $(applet_DATA).in $(service_DATA)
+
+-DISTCLEANFILES = \
+- $(server_in_files) \
+- $(server_DATA) \
+- $(NULL)
++MAINTAINERCLEANFILES = *~ Makefile.in
+
+-MAINTAINERCLEANFILES = \
+- *~ \
+- Makefile.in
+diff --git a/gui/user-switch-applet/applet.c b/gui/user-switch-applet/applet.c
+index b4f944c..74f7882 100644
+--- a/gui/user-switch-applet/applet.c
++++ b/gui/user-switch-applet/applet.c
+@@ -34,9 +34,6 @@
+
+ #include <dbus/dbus-glib.h>
+
+-#include <bonobo/bonobo-main.h>
+-#include <bonobo/bonobo-ui-util.h>
+-
+ #include <panel-applet.h>
+ #include <panel-applet-gconf.h>
+
+@@ -102,16 +99,15 @@ static gboolean applet_factory (PanelApplet *applet,
+ const char *iid,
+ gpointer data);
+
+-PANEL_APPLET_BONOBO_FACTORY ("OAFIID:GNOME_FastUserSwitchApplet_Factory",
+- PANEL_TYPE_APPLET,
+- "gdm-user-switch-applet", "0",
+- (PanelAppletFactoryCallback)applet_factory,
+- NULL)
++PANEL_APPLET_OUT_PROCESS_FACTORY ("GdmUserSwitchAppletFactory",
++ PANEL_TYPE_APPLET,
++ "gdm-user-switch-applet",
++ applet_factory,
++ NULL)
+
+ static void
+-about_me_cb (BonoboUIComponent *ui_container,
+- gpointer data,
+- const char *cname)
++about_me_cb (GtkAction *action,
++ gpointer data)
+ {
+ GError *err;
+
+@@ -120,10 +116,7 @@ about_me_cb (BonoboUIComponent *ui_container,
+ g_critical ("Could not run `gnome-about-me': %s",
+ err->message);
+ g_error_free (err);
+- bonobo_ui_component_set_prop (ui_container,
+- "/commands/GdmAboutMe",
+- "hidden", "1",
+- NULL);
++ gtk_action_set_visible (action, FALSE);
+ }
+ }
+
+@@ -149,9 +142,8 @@ menubar_button_press_event_cb (GtkWidget *menubar,
+ }
+
+ static void
+-about_cb (BonoboUIComponent *ui_container,
+- gpointer data,
+- const char *cname)
++about_cb (GtkAction *action,
++ gpointer data)
+ {
+ static const char *authors[] = {
+ "James M. Cape <jcape@ignore-your.tv>",
+@@ -195,9 +187,8 @@ about_cb (BonoboUIComponent *ui_container,
+
+
+ static void
+-admin_cb (BonoboUIComponent *ui_container,
+- gpointer data,
+- const char *cname)
++admin_cb (GtkAction *action,
++ gpointer data)
+ {
+ #ifdef USERS_ADMIN
+ char **args;
+@@ -231,82 +222,6 @@ admin_cb (BonoboUIComponent *ui_container,
+ }
+
+ static void
+-set_menuitem_icon (BonoboUIComponent *component,
+- const char *item_path,
+- GtkIconTheme *theme,
+- const char *icon_name,
+- gint icon_size)
+-{
+- GdkPixbuf *pixbuf;
+- int width;
+- int height;
+-
+- pixbuf = gtk_icon_theme_load_icon (theme, icon_name, icon_size, 0, NULL);
+- if (pixbuf == NULL) {
+- return;
+- }
+-
+- width = gdk_pixbuf_get_width (pixbuf);
+- height = gdk_pixbuf_get_height (pixbuf);
+- if (width > icon_size + 4 || height > icon_size + 4) {
+- GdkPixbuf *tmp;
+- if (height > width) {
+- width *= (gdouble) icon_size / (gdouble) height;
+- height = icon_size;
+- } else {
+- height *= (gdouble) icon_size / (gdouble) width;
+- width = icon_size;
+- }
+- tmp = gdk_pixbuf_scale_simple (pixbuf, width, height, GDK_INTERP_BILINEAR);
+- g_object_unref (pixbuf);
+- pixbuf = tmp;
+- }
+-
+- bonobo_ui_util_set_pixbuf (component, item_path, pixbuf, NULL);
+- g_object_unref (pixbuf);
+-}
+-
+-static void
+-applet_style_set_cb (GtkWidget *widget,
+- GtkStyle *old_style,
+- gpointer data)
+-{
+- BonoboUIComponent *component;
+- GdkScreen *screen;
+- GtkIconTheme *theme;
+- int width;
+- int height;
+- int icon_size;
+-
+- if (gtk_widget_has_screen (widget)) {
+- screen = gtk_widget_get_screen (widget);
+- } else {
+- screen = gdk_screen_get_default ();
+- }
+-
+- if (gtk_icon_size_lookup_for_settings (gtk_settings_get_for_screen (screen),
+- GTK_ICON_SIZE_MENU, &width, &height)) {
+- icon_size = MAX (width, height);
+- } else {
+- icon_size = 16;
+- }
+-
+- theme = gtk_icon_theme_get_for_screen (screen);
+- component = panel_applet_get_popup_component (PANEL_APPLET (widget));
+-
+- set_menuitem_icon (component,
+- "/commands/GdmAboutMe",
+- theme,
+- "user-info",
+- icon_size);
+- set_menuitem_icon (component,
+- "/commands/GdmUsersGroupsAdmin",
+- theme,
+- "stock_people",
+- icon_size);
+-}
+-
+-static void
+ applet_change_background_cb (PanelApplet *applet,
+ PanelAppletBackgroundType type,
+ GdkColor *color,
+@@ -1389,18 +1304,23 @@ on_presence_status_text_changed (DBusGProxy *presence_proxy,
+ static gboolean
+ fill_applet (PanelApplet *applet)
+ {
+- static const BonoboUIVerb menu_verbs[] = {
+- BONOBO_UI_VERB ("GdmAboutMe", about_me_cb),
+- BONOBO_UI_VERB ("GdmUsersGroupsAdmin", admin_cb),
+- BONOBO_UI_VERB ("GdmAbout", about_cb),
+- BONOBO_UI_VERB_END
++ static const GtkActionEntry gdm_user_switch_applet_actions[] = {
++ { "GdmAboutMe", "user-info", N_("Edit Personal _Information"),
++ NULL, NULL,
++ G_CALLBACK (about_me_cb) },
++ { "GdmUsersGroupsAdmin", "stock-people", N_("_Edit Users and Groups"),
++ NULL, NULL,
++ G_CALLBACK (admin_cb) },
++ { "GdmAbout", GTK_STOCK_ABOUT, N_("_About"),
++ NULL, NULL,
++ G_CALLBACK (about_cb) },
+ };
+ static gboolean first_time = FALSE;
+ char *tmp;
+- BonoboUIComponent *popup_component;
+ GdmAppletData *adata;
+ GError *error;
+ DBusGConnection *bus;
++ GtkActionGroup *action_group;
+
+ if (!first_time) {
+ first_time = TRUE;
+@@ -1438,52 +1358,51 @@ fill_applet (PanelApplet *applet)
+ gtk_container_set_border_width (GTK_CONTAINER (applet), 0);
+ gtk_widget_set_name (GTK_WIDGET (applet), "gdm-user-switch-applet");
+ panel_applet_set_flags (applet, PANEL_APPLET_EXPAND_MINOR);
+- panel_applet_setup_menu_from_file (applet, NULL,
+- DATADIR "/gnome-2.0/ui/GNOME_FastUserSwitchApplet.xml",
+- NULL, menu_verbs, adata);
+
+- popup_component = panel_applet_get_popup_component (applet);
++ action_group = gtk_action_group_new ("GDM User Switch Applet Actions");
++ gtk_action_group_set_translation_domain (action_group, GETTEXT_PACKAGE);
++ gtk_action_group_add_actions (action_group,
++ gdm_user_switch_applet_actions,
++ G_N_ELEMENTS (gdm_user_switch_applet_actions),
++ adata);
++
++ panel_applet_setup_menu_from_file (applet,
++ GDM_USER_SWITCH_MENU_UI_DIR G_DIR_SEPARATOR_S "gdm-user-switch-applet-menu.xml",
++ action_group);
+
+ /* Hide the admin context menu items if locked down or no cmd-line */
+ if (gconf_client_get_bool (adata->client,
+ LOCKDOWN_COMMAND_LINE_KEY,
+ NULL) ||
+ panel_applet_get_locked_down (applet)) {
+- bonobo_ui_component_set_prop (popup_component,
+- "/popups/button3/GdmSeparator",
+- "hidden", "1", NULL);
+- bonobo_ui_component_set_prop (popup_component,
+- "/commands/GdmUsersGroupsAdmin",
+- "hidden", "1", NULL);
++ GtkAction *action;
++
++ action = gtk_action_group_get_action (action_group, "GdmUsersGroupsAdmin");
++ gtk_action_set_visible (action, FALSE);
+ } else {
++ GtkAction *action;
++
+ #ifndef USERS_ADMIN
+ # ifdef GDM_SETUP
+- bonobo_ui_component_set_prop (popup_component,
+- "/popups/button3/GdmSeparator",
+- "hidden", "1",
+- NULL);
+ # endif /* !GDM_SETUP */
+- bonobo_ui_component_set_prop (popup_component,
+- "/commands/GdmUsersGroupsAdmin",
+- "hidden", "1",
+- NULL);
++ action = gtk_action_group_get_action (action_group, "GdmUsersGroupsAdmin");
++ gtk_action_set_visible (action, FALSE);
+ #endif /* !USERS_ADMIN */
+ }
+
+ /* Hide the gdmphotosetup item if it can't be found in the path. */
+ tmp = g_find_program_in_path ("gnome-about-me");
+ if (!tmp) {
+- bonobo_ui_component_set_prop (popup_component,
+- "/commands/GdmAboutMe",
+- "hidden", "1",
+- NULL);
++ GtkAction *action;
++
++ action = gtk_action_group_get_action (action_group, "GdmAboutMe");
++ gtk_action_set_visible (action, FALSE);
+ } else {
+ g_free (tmp);
+ }
+
+- g_signal_connect (adata->applet,
+- "style-set",
+- G_CALLBACK (applet_style_set_cb), adata);
++ g_object_unref (action_group);
++
+ g_signal_connect (applet,
+ "change-background",
+ G_CALLBACK (applet_change_background_cb), adata);
+@@ -1655,7 +1574,7 @@ applet_factory (PanelApplet *applet,
+ {
+ gboolean ret;
+ ret = FALSE;
+- if (strcmp (iid, "OAFIID:GNOME_FastUserSwitchApplet") == 0) {
++ if (strcmp (iid, "GdmUserSwitchApplet") == 0) {
+ ret = fill_applet (applet);
+ }
+ return ret;
+diff --git a/gui/user-switch-applet/gdm-user-switch-applet-menu.xml b/gui/user-switch-applet/gdm-user-switch-applet-menu.xml
+new file mode 100644
+index 0000000..78301b3
+--- /dev/null
++++ b/gui/user-switch-applet/gdm-user-switch-applet-menu.xml
+@@ -0,0 +1,4 @@
++<menuitem name="About Me Item" action="GdmAboutMe"/>
++<menuitem name="Users and Groups Admin Item" action="GdmUsersGroupsAdmin"/>
++<menuitem name="About Item" action="GdmAbout"/>
++
+diff --git a/gui/user-switch-applet/org.gnome.gdm.UserSwitch.panel-applet.in.in b/gui/user-switch-applet/org.gnome.gdm.UserSwitch.panel-applet.in.in
+new file mode 100644
+index 0000000..3c77dfb
+--- /dev/null
++++ b/gui/user-switch-applet/org.gnome.gdm.UserSwitch.panel-applet.in.in
+@@ -0,0 +1,16 @@
++[Applet Factory]
++Id=GdmUserSwitchAppletFactory
++Location=@LIBEXECDIR@/gdm-user-switch-applet
++_Name=User Switcher Applet Factory
++_Description=User Switcher Applet Factory
++
++[GdmUserSwitchApplet]
++_Name=User Switcher
++_Description=A menu to quickly switch between users
++BonoboId=OAFIID:GNOME_FastUserSwitchApplet
++X-GNOME-Bugzilla-Bugzilla=GNOME
++X-GNOME-Bugzilla-Product=gdm
++X-GNOME-Bugzilla-Component=general
++X-GNOME-Bugzilla-Version=@VERSION@
++X-GNOME-Bugzilla-OtherBinaries=gdm-user-switch-applet
++
+diff --git a/gui/user-switch-applet/org.gnome.panel.applet.GdmUserSwitchAppletFactory.service.in b/gui/user-switch-applet/org.gnome.panel.applet.GdmUserSwitchAppletFactory.service.in
+new file mode 100644
+index 0000000..7bf900f
+--- /dev/null
++++ b/gui/user-switch-applet/org.gnome.panel.applet.GdmUserSwitchAppletFactory.service.in
+@@ -0,0 +1,4 @@
++[D-BUS Service]
++Name=org.gnome.panel.applet.GdmUserSwitchAppletFactory
++Exec=@LIBEXECDIR@/gdm-user-switch-applet
++
+diff --git a/po/POTFILES.in b/po/POTFILES.in
+index 1fccb90..5340391 100644
+--- a/po/POTFILES.in
++++ b/po/POTFILES.in
+@@ -86,8 +86,7 @@ gui/simple-greeter/gdm-user-chooser-widget.c
+ gui/simple-greeter/greeter-main.c
+ gui/user-switch-applet/applet.c
+ gui/user-switch-applet/gdm-entry-menu-item.c
+-gui/user-switch-applet/GNOME_FastUserSwitchApplet.server.in.in
+-gui/user-switch-applet/GNOME_FastUserSwitchApplet.xml
++gui/user-switch-applet/org.gnome.gdm.UserSwitch.panel-applet.in.in
+ utils/gdmflexiserver.c
+ utils/gdm-screenshot.c
+
+diff --git a/po/POTFILES.skip b/po/POTFILES.skip
+index 0269a0f..9032c03 100644
+--- a/po/POTFILES.skip
++++ b/po/POTFILES.skip
+@@ -7,7 +7,7 @@
+ # remove these unless you fix "make distcheck" a different way.
+ #
+ data/gdm.schemas.in
+-gui/user-switch-applet/GNOME_FastUserSwitchApplet.server.in
++gui/user-switch-applet/org.gnome.gdm.UserSwitch.panel-applet.in
+ data/greeter-autostart/at-spi-registryd-wrapper.desktop.in
+ data/greeter-autostart/gdm-simple-greeter.desktop.in
+ data/greeter-autostart/gnome-power-manager.desktop.in
+--
+1.7.2.3
+
diff --git a/extra/gdm/04_fix_external_program_directories.patch b/extra/gdm/04_fix_external_program_directories.patch
new file mode 100644
index 000000000..7ccc28644
--- /dev/null
+++ b/extra/gdm/04_fix_external_program_directories.patch
@@ -0,0 +1,48 @@
+diff -Nur gdm-2.30.2.orig/daemon/gdm-server.c gdm-2.30.2/daemon/gdm-server.c
+--- gdm-2.30.2.orig/daemon/gdm-server.c 2010-04-26 20:08:42.000000000 +0300
++++ gdm-2.30.2/daemon/gdm-server.c 2010-04-29 22:55:49.631648355 +0300
+@@ -127,7 +127,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.30.2.orig/data/greeter-autostart/gnome-settings-daemon.desktop.in.in gdm-2.30.2/data/greeter-autostart/gnome-settings-daemon.desktop.in.in
+--- gdm-2.30.2.orig/data/greeter-autostart/gnome-settings-daemon.desktop.in.in 2010-03-17 23:27:16.000000000 +0200
++++ gdm-2.30.2/data/greeter-autostart/gnome-settings-daemon.desktop.in.in 2010-04-29 22:53:54.984878068 +0300
+@@ -1,8 +1,8 @@
+ [Desktop Entry]
+ Type=Application
+ _Name=GNOME Settings Daemon
+-TryExec=@LIBEXECDIR@/gnome-settings-daemon
+-Exec=@LIBEXECDIR@/gnome-settings-daemon --gconf-prefix=/apps/gdm/simple-greeter/settings-manager-plugins
++TryExec=/usr/bin/gnome-settings-daemon
++Exec=/usr/bin/gnome-settings-daemon --gconf-prefix=/apps/gdm/simple-greeter/settings-manager-plugins
+ OnlyShowIn=GNOME;
+ X-GNOME-Autostart-Phase=Initialization
+ X-GNOME-Autostart-Notify=true
+diff -Nur gdm-2.30.2.orig/data/greeter-autostart/polkit-gnome-authentication-agent-1.desktop.in.in gdm-2.30.2/data/greeter-autostart/polkit-gnome-authentication-agent-1.desktop.in.in
+--- gdm-2.30.2.orig/data/greeter-autostart/polkit-gnome-authentication-agent-1.desktop.in.in 2010-03-26 15:28:03.000000000 +0200
++++ gdm-2.30.2/data/greeter-autostart/polkit-gnome-authentication-agent-1.desktop.in.in 2010-04-29 22:54:24.638396328 +0300
+@@ -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.30.2.orig/gui/simple-chooser/gdm-chooser-session.c gdm-2.30.2/gui/simple-chooser/gdm-chooser-session.c
+--- gdm-2.30.2.orig/gui/simple-chooser/gdm-chooser-session.c 2010-03-17 23:27:16.000000000 +0200
++++ gdm-2.30.2/gui/simple-chooser/gdm-chooser-session.c 2010-04-29 22:57:08.691626507 +0300
+@@ -131,7 +131,7 @@
+ ret = FALSE;
+
+ error = NULL;
+- g_spawn_command_line_async (LIBEXECDIR "/gnome-settings-daemon --gconf-prefix=/apps/gdm/simple-chooser/settings-manager-plugins", &error);
++ g_spawn_command_line_async ("/usr/bin/gnome-settings-daemon --gconf-prefix=/apps/gdm/simple-chooser/settings-manager-plugins", &error);
+ if (error != NULL) {
+ g_warning ("Error starting settings daemon: %s", error->message);
+ g_error_free (error);
diff --git a/extra/gdm/PKGBUILD b/extra/gdm/PKGBUILD
new file mode 100644
index 000000000..b5a06693f
--- /dev/null
+++ b/extra/gdm/PKGBUILD
@@ -0,0 +1,62 @@
+# $Id: PKGBUILD 117177 2011-03-29 06:49:52Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+pkgname=gdm
+pkgver=2.32.1
+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>=0.26' 'libxklavier>=5.0' 'tcp_wrappers' 'gnome-session>=2.32.1' 'upower>=0.9.7' 'consolekit>=0.4.1-4')
+makedepends=('intltool' 'gnome-doc-utils>=0.20.1' 'xorg-server' 'gnome-panel>=2.32.0')
+optdepends=('gnome-panel: needed for user switch applet')
+conflicts=('fast-user-switch-applet')
+replaces=('fast-user-switch-applet')
+install=gdm.install
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.32/${pkgname}-${pkgver}.tar.bz2
+ 04_fix_external_program_directories.patch
+ gdm-vt-allocation-hack.patch
+ 0001-port-to-libpanel-applet-3.0.patch
+ correctly-give-focus-to-user-chooser.patch
+ gdm.pam
+ gdm-autologin.pam
+ gdm)
+sha256sums=('7ba9cb2a8efb9856994467b14e4837a281fcf6d9dc9a267ea38a9aae1ec55abc'
+ 'cb585c39c6671387b5a25f21a99c97e3a20eaf4188fea1b62871681a1ebf8bff'
+ '3c8b588d4af08d94dc93bcd5e4c2a983c3f4fbbbe40833bceac2a1df4f1e8215'
+ '41ca4b2408d61776ab42c50834374a90664d43d33ad7034c7c52862d9bf3234a'
+ 'ab6d9739c0cc3631d077a897291d6a38fea1c713a3647d008e2635f48c503cb4'
+ 'f1dfa4d88288d4b0a631a68a51b46c2da537bee8fe5a99f9f288c8ff75a50b19'
+ '3daff680ff6b7ea56f84f40843e46e72477c81e9e405028203c942af04d07ae5'
+ '272c08d8e8b50bf424d0705ac864d4c18c47ec4f6893b1af732c2efbc86c9550')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i "${srcdir}/04_fix_external_program_directories.patch"
+ patch -Np1 -i "${srcdir}/gdm-vt-allocation-hack.patch"
+ patch -Np1 -i "${srcdir}/0001-port-to-libpanel-applet-3.0.patch"
+ patch -Np1 -i "${srcdir}/correctly-give-focus-to-user-chooser.patch"
+ autoreconf -fi
+
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --libexecdir=/usr/lib/gdm --localstatedir=/var --disable-static \
+ --with-at-spi-registryd-directory=/usr/lib/at-spi \
+ --disable-scrollkeeper
+ make
+ 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/schemas/"
+
+ install -m644 "${srcdir}/gdm.pam" "${pkgdir}/etc/pam.d/gdm"
+ install -m644 "${srcdir}/gdm-autologin.pam" "${pkgdir}/etc/pam.d/gdm-autologin"
+
+ 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"
+}
diff --git a/extra/gdm/correctly-give-focus-to-user-chooser.patch b/extra/gdm/correctly-give-focus-to-user-chooser.patch
new file mode 100644
index 000000000..e08675a36
--- /dev/null
+++ b/extra/gdm/correctly-give-focus-to-user-chooser.patch
@@ -0,0 +1,46 @@
+From b971eb1038cb92ed8211b68a7d2a99a98d86ed7f Mon Sep 17 00:00:00 2001
+From: Vincent Untz <vuntz@gnome.org>
+Date: Wed, 12 Jan 2011 18:38:46 +0100
+Subject: [PATCH] Correctly give focus to the user chooser on startup
+
+We manually handle how focus works in the GdmChooserWidget container,
+and we try to automatically move the focus to the treeview inside the
+chooser. However, it fails the first time because the treeview is not
+realized yet and the logic in the code assumes that if focus moved to
+the chooser, it moved to the treeview, so later attempt to get the focus
+grabbed by the treeview are just ignored.
+
+It works fine when using gtk_widget_child_focus() to give the focus to
+the treeview. And this makes more sense since the chooser is a container
+anyway.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=629310
+---
+ gui/simple-greeter/gdm-chooser-widget.c | 6 +-----
+ 1 files changed, 1 insertions(+), 5 deletions(-)
+
+diff --git a/gui/simple-greeter/gdm-chooser-widget.c b/gui/simple-greeter/gdm-chooser-widget.c
+index db2d9b2..ebbfdb9 100644
+--- a/gui/simple-greeter/gdm-chooser-widget.c
++++ b/gui/simple-greeter/gdm-chooser-widget.c
+@@ -910,17 +910,13 @@ _grab_focus (GtkWidget *widget)
+
+ foc_widget = GDM_CHOOSER_WIDGET (widget)->priv->items_view;
+ g_debug ("GdmChooserWidget: grabbing focus");
+- if (! gtk_widget_get_realized (foc_widget)) {
+- g_debug ("GdmChooserWidget: not grabbing focus - not realized");
+- return;
+- }
+
+ if (gtk_widget_has_focus (foc_widget)) {
+ g_debug ("GdmChooserWidget: not grabbing focus - already has it");
+ return;
+ }
+
+- gtk_widget_grab_focus (foc_widget);
++ gtk_widget_child_focus (foc_widget, GTK_DIR_TAB_FORWARD);
+ }
+
+ static void
+--
+1.7.3.4
diff --git a/extra/gdm/gdm b/extra/gdm/gdm
new file mode 100755
index 000000000..c3e635a6d
--- /dev/null
+++ b/extra/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/extra/gdm/gdm-autologin.pam b/extra/gdm/gdm-autologin.pam
new file mode 100644
index 000000000..7c2f9a985
--- /dev/null
+++ b/extra/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/extra/gdm/gdm-vt-allocation-hack.patch b/extra/gdm/gdm-vt-allocation-hack.patch
new file mode 100644
index 000000000..56fa5a151
--- /dev/null
+++ b/extra/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/extra/gdm/gdm.install b/extra/gdm/gdm.install
new file mode 100644
index 000000000..c2b5e375e
--- /dev/null
+++ b/extra/gdm/gdm.install
@@ -0,0 +1,44 @@
+pkgname=gdm
+
+post_install() {
+ getent group gdm >/dev/null 2>&1 || groupadd -g 120 gdm
+ if getent passwd gdm > /dev/null 2>&1; then
+ usr/sbin/usermod -d /var/lib/gdm -c 'Gnome Display Manager' -s /sbin/nologin gdm > /dev/null 2>&1
+ else
+ usr/sbin/useradd -c 'Gnome Display Manager' -u 120 -g gdm -d /var/lib/gdm -s /sbin/nologin gdm
+ fi
+ passwd -l gdm > /dev/null
+ chown gdm:gdm /var/lib/gdm > /dev/null
+ chown -R gdm:gdm /var/lib/gdm/.gconf.mandatory
+
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+ gconfpkg --install ${pkgname}
+}
+
+pre_upgrade() {
+ if [ -f opt/gnome/etc/gdm/custom.conf ]; then
+ mkdir -p etc/gdm
+ sed -e 's|/opt/gnome/libexec|usr/lib/gdm|g' \
+ -e 's|/opt/gnome/etc|/etc|g' \
+ -e 's|/opt/gnome/|/usr/|g' \
+ opt/gnome/etc/gdm/custom.conf > etc/gdm/custom.conf
+ mv opt/gnome/etc/gdm/custom.conf opt/gnome/etc/gdm/custom.conf.pacsave
+ fi
+ pre_remove
+}
+
+pre_remove() {
+ if [ -f usr/share/gconf/schemas/${pkgname}.schemas ]; then
+ gconfpkg --uninstall ${pkgname}
+ fi
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ 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/extra/gdm/gdm.pam b/extra/gdm/gdm.pam
new file mode 100644
index 000000000..655299cb7
--- /dev/null
+++ b/extra/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/extra/gdome2/PKGBUILD b/extra/gdome2/PKGBUILD
new file mode 100644
index 000000000..b51c8539a
--- /dev/null
+++ b/extra/gdome2/PKGBUILD
@@ -0,0 +1,21 @@
+# $Id: PKGBUILD 42368 2009-06-13 12:47:50Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=gdome2
+pkgver=0.8.1
+pkgrel=2
+pkgdesc="Gnome DOM Engine"
+url="http://gdome2.cs.unibo.it/"
+arch=('i686' 'x86_64')
+license=('LGPL')
+depends=('libxml2>=2.7.3' 'glib2>=2.20.3')
+options=(!libtool)
+source=(http://gdome2.cs.unibo.it/tarball/${pkgname}-${pkgver}.tar.gz)
+md5sums=('bfc114e59eec50cbda8e4ece751ff022')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --mandir=/usr/share/man || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/gecko-sharp-2.0/PKGBUILD b/extra/gecko-sharp-2.0/PKGBUILD
new file mode 100644
index 000000000..a9fc4bf26
--- /dev/null
+++ b/extra/gecko-sharp-2.0/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id: PKGBUILD 44373 2009-07-01 20:54:06Z jgc $
+# Maintainer: Daniel Isenmann <daniel@archlinux.org>
+# Contributor: Brice Carpentier <brice@daknet.org>
+
+pkgname=gecko-sharp-2.0
+pkgver=0.13
+pkgrel=3
+pkgdesc="C# bindings for gtkmozembed"
+arch=(i686 x86_64)
+license=('LGPL' 'MPL')
+url="http://www.mono-project.com/"
+depends=('xulrunner>=1.9.1' 'gtk-sharp-2>=2.12.1')
+makedepends=('monodoc' 'pkgconfig')
+source=(http://go-mono.com/sources/gecko-sharp-2.0/gecko-sharp-2.0-${pkgver}.tar.bz2
+ gecko-sharp-2.0-0.12-xulrunner.patch)
+md5sums=('f88eaa06e71f8d8fa34cf59a3e034a6b'
+ '4f2c07c3fb0c1a94adaa4e4c8d57608b')
+
+build() {
+ # get rid of that .wapi errors; thanks to brice
+ export MONO_SHARED_DIR="${startdir}/src/weird"
+ mkdir -p "${MONO_SHARED_DIR}"
+
+ # build
+ cd ${srcdir}/gecko-sharp-2.0-${pkgver}
+ patch -Np1 -i ${srcdir}/gecko-sharp-2.0-0.12-xulrunner.patch || return 1
+ ./configure --prefix=/usr || return 1
+ make || return 1
+ make GACUTIL="/usr/bin/gacutil /root ${startdir}/pkg/usr/lib" \
+ DESTDIR=${pkgdir} install || return 1
+}
diff --git a/extra/gecko-sharp-2.0/gecko-sharp-2.0-0.12-xulrunner.patch b/extra/gecko-sharp-2.0/gecko-sharp-2.0-0.12-xulrunner.patch
new file mode 100644
index 000000000..5d19fea72
--- /dev/null
+++ b/extra/gecko-sharp-2.0/gecko-sharp-2.0-0.12-xulrunner.patch
@@ -0,0 +1,42 @@
+diff -up gecko-sharp-2.0-0.12/gtkmozembed/gtkgecko-api.raw.xl gecko-sharp-2.0-0.12/gtkmozembed/gtkgecko-api.raw
+--- gecko-sharp-2.0-0.12/gtkmozembed/gtkgecko-api.raw.xl 2006-12-22 20:57:47.000000000 +0100
++++ gecko-sharp-2.0-0.12/gtkmozembed/gtkgecko-api.raw 2007-11-27 15:54:41.000000000 +0100
+@@ -349,6 +349,12 @@
+ <parameter type="const-char*" name="aPath" />
+ </parameters>
+ </method>
++ <method name="SetPath" cname="gtk_moz_embed_set_path" shared="true">
++ <return-type type="void" />
++ <parameters>
++ <parameter type="const-char*" name="aPath" />
++ </parameters>
++ </method>
+ <method name="SetProfilePath" cname="gtk_moz_embed_set_profile_path" shared="true">
+ <return-type type="void" />
+ <parameters>
+diff -up gecko-sharp-2.0-0.12/gtkmozembed/gtkgecko-api.xml.xl gecko-sharp-2.0-0.12/gtkmozembed/gtkgecko-api.xml
+--- gecko-sharp-2.0-0.12/gtkmozembed/gtkgecko-api.xml.xl 2006-12-22 20:57:54.000000000 +0100
++++ gecko-sharp-2.0-0.12/gtkmozembed/gtkgecko-api.xml 2007-11-27 15:54:41.000000000 +0100
+@@ -349,6 +349,12 @@
+ <parameter type="const-char*" name="aPath" />
+ </parameters>
+ </method>
++ <method name="SetPath" cname="gtk_moz_embed_set_path" shared="true">
++ <return-type type="void" />
++ <parameters>
++ <parameter type="const-char*" name="aPath" />
++ </parameters>
++ </method>
+ <method name="SetProfilePath" cname="gtk_moz_embed_set_profile_path" shared="true">
+ <return-type type="void" />
+ <parameters>
+diff -up gecko-sharp-2.0-0.12/gtkmozembed/gecko-sharp.dll.config.in.xl gecko-sharp-2.0-0.12/gtkmozembed/gecko-sharp.dll.config.in
+--- gecko-sharp-2.0-0.12/gtkmozembed/gecko-sharp.dll.config.in.xl 2006-12-22 20:57:47.000000000 +0100
++++ gecko-sharp-2.0-0.12/gtkmozembed/gecko-sharp.dll.config.in 2007-11-27 16:05:02.000000000 +0100
+@@ -3,5 +3,5 @@
+ <dllmap dll="libgobject-2.0-0.dll" target="libgobject-2.0@LIB_PREFIX@.0@LIB_SUFFIX@"/>
+ <dllmap dll="libatk-1.0-0.dll" target="libatk-1.0@LIB_PREFIX@.0@LIB_SUFFIX@"/>
+ <dllmap dll="libgtk-win32-2.0-0.dll" target="libgtk-x11-2.0@LIB_PREFIX@.0@LIB_SUFFIX@"/>
+- <dllmap dll="gtkembedmoz.dll" target="libgtkembedmoz@LIB_PREFIX@@LIB_SUFFIX@"/>
++ <dllmap dll="gtkembedmoz.dll" target="libxul@LIB_PREFIX@@LIB_SUFFIX@"/>
+ </configuration>
diff --git a/extra/gedit/PKGBUILD b/extra/gedit/PKGBUILD
new file mode 100644
index 000000000..213f21952
--- /dev/null
+++ b/extra/gedit/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 101119 2010-11-28 10:04:15Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=gedit
+pkgver=2.30.4
+pkgrel=3
+pkgdesc="A text editor for GNOME"
+arch=('i686' 'x86_64')
+license=('GPL')
+depends=('gconf>=2.32.0' 'pygtksourceview2>=2.10.1' 'enchant>=1.5.0' 'desktop-file-utils' 'iso-codes>=3.10.1' 'libsm')
+makedepends=('pkgconfig' 'gnome-doc-utils>=0.20.2' 'intltool')
+groups=('gnome-extra')
+options=('!libtool' '!emptydirs')
+url="http://www.gnome.org"
+install=gedit.install
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.30/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('a561fe3dd1d199baede1bd07c4ee65f06fc7c494dd4d3327117f04149a608e3c')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ PYTHON=python2 ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \
+ --libexecdir=/usr/lib --disable-scrollkeeper
+ make
+ make -j1 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 gedit ${pkgdir}/etc/gconf/schemas/*.schemas
+ rm -f ${pkgdir}/etc/gconf/schemas/*.schemas
+}
diff --git a/extra/gedit/gedit.install b/extra/gedit/gedit.install
new file mode 100644
index 000000000..ed7a67459
--- /dev/null
+++ b/extra/gedit/gedit.install
@@ -0,0 +1,22 @@
+pkgname=gedit
+
+post_install() {
+ usr/sbin/gconfpkg --install ${pkgname}
+ update-desktop-database -q
+}
+
+pre_upgrade() {
+ pre_remove $1
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ usr/sbin/gconfpkg --uninstall ${pkgname}
+}
+
+post_remove() {
+ update-desktop-database -q
+}
diff --git a/extra/geeqie/PKGBUILD b/extra/geeqie/PKGBUILD
new file mode 100644
index 000000000..af38bc2a6
--- /dev/null
+++ b/extra/geeqie/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 110925 2011-02-23 07:41:06Z eric $
+# Maintainer: Eric Bélanger <eric@archlinux.org>
+# Contributor: Lukas Jirkovsky <l.jirkovsky@gmail.com>
+
+pkgname=geeqie
+pkgver=1.0
+pkgrel=4
+pkgdesc="A lightweight image browser and viewer (fork of GQview)"
+arch=('i686' 'x86_64')
+url="http://geeqie.sourceforge.net/"
+license=('GPL3')
+depends=('exiv2' 'gtk2' 'lcms')
+makedepends=('intltool' 'doxygen')
+optdepends=('librsvg: SVG rendering')
+replaces=('gqview-devel')
+source=(http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.gz)
+md5sums=('1d67ef990390224c5052697d93bb49c0')
+sha1sums=('8494a557d67d20e6ad720645ec789dd2b33a3266')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ CPPFLAGS="-D_FILE_OFFSET_BITS=64" ./configure --prefix=/usr
+ make
+}
+
+package(){
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/gegl/PKGBUILD b/extra/gegl/PKGBUILD
new file mode 100644
index 000000000..4a018da9c
--- /dev/null
+++ b/extra/gegl/PKGBUILD
@@ -0,0 +1,32 @@
+# $Id: PKGBUILD 110564 2011-02-20 03:00:42Z eric $
+# Maintainer: Eric Bélanger <eric@archlinux.org>
+
+pkgname=gegl
+pkgver=0.1.6
+pkgrel=1
+pkgdesc="Graph based image processing framework"
+arch=('i686' 'x86_64')
+url="http://www.gegl.org/"
+license=('GPL3' 'LGPL3')
+depends=('babl' 'libpng' 'libjpeg' 'gtk2')
+makedepends=('ruby' 'lua' 'openexr' 'ffmpeg' 'librsvg' 'jasper' 'exiv2')
+optdepends=('openexr: for using the openexr plugin' \
+ 'ffmpeg: for using the ffmpeg plugin' \
+ 'librsvg: for using the svg plugin' \
+ 'jasper: for using the jasper plugin')
+options=('!libtool')
+source=(ftp://ftp.gimp.org/pub/${pkgname}/${pkgver%.*}/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('af5e5a7d3c7ddfaa2b3414de2a7e9113')
+sha1sums=('27bedcfd077da7a6913b82966dbec904b22c121d')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --with-sdl --with-openexr --with-librsvg \
+ --with-libavformat --with-jasper --disable-docs
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/genius/PKGBUILD b/extra/genius/PKGBUILD
new file mode 100644
index 000000000..48afa7f0c
--- /dev/null
+++ b/extra/genius/PKGBUILD
@@ -0,0 +1,32 @@
+# $Id: PKGBUILD 100391 2010-11-23 05:28:18Z heftig $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Arjan Timmerman <arjan@soulfly.nl>
+
+pkgname=genius
+pkgver=1.0.12
+pkgrel=1
+pkgdesc="Advanced calculator including a mathematical programming language"
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://www.jirka.org/genius.html"
+depends=('vte>=0.26.2' 'gtksourceview2>=2.10.5' 'mpfr>=3.0.0' 'desktop-file-utils' 'hicolor-icon-theme')
+makedepends=('intltool' 'pkgconfig' 'gnome-doc-utils>=0.20.0')
+options=('!libtool' '!makeflags')
+install=genius.install
+source=(http://ftp.gnome.org/pub/GNOME/sources/genius/1.0/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('e94f92474140d1549f44cd84a09e62760f4e0e6af555c565559d132556f5fde4')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --libexecdir=/usr/lib/genius \
+ --localstatedir=/var --disable-static \
+ --enable-gtksourceview --disable-scrollkeeper \
+ --disable-update-mimedb
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/genius/genius.install b/extra/genius/genius.install
new file mode 100644
index 000000000..45931222a
--- /dev/null
+++ b/extra/genius/genius.install
@@ -0,0 +1,13 @@
+post_install() {
+ update-desktop-database -q
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+ update-mime-database usr/share/mime
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ post_install $1
+}
diff --git a/extra/geoip/PKGBUILD b/extra/geoip/PKGBUILD
new file mode 100644
index 000000000..13b4ead43
--- /dev/null
+++ b/extra/geoip/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 40077 2009-05-27 06:02:01Z juergen $
+# Maintainer: Dan McGee <dan@archlinux.org>
+# Contributor: Manolis Tzanidakis <manolis@archlinux.org>
+
+pkgname=geoip
+pkgver=1.4.6
+pkgrel=1
+pkgdesc="Non-DNS IP-to-country resolver C library & utils"
+arch=(i686 x86_64)
+license=('GPL')
+url="http://www.maxmind.com/app/c"
+depends=('zlib')
+backup=(etc/geoip/GeoIP.conf)
+options=('!libtool')
+source=(http://www.maxmind.com/download/geoip/api/c/GeoIP-${pkgver}.tar.gz)
+md5sums=('cb14b1beeb40631a12676b11ca0c309a')
+
+build() {
+ cd ${startdir}/src/GeoIP-${pkgver}
+ ./configure --prefix=/usr --mandir=/usr/share/man --sysconfdir=/etc/geoip
+ make || return 1
+ make check || return 1
+ make DESTDIR=${startdir}/pkg install
+}
+
diff --git a/extra/gettext-mono/PKGBUILD b/extra/gettext-mono/PKGBUILD
new file mode 100644
index 000000000..4ecbe0a05
--- /dev/null
+++ b/extra/gettext-mono/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id: PKGBUILD 69576 2010-02-21 06:28:43Z allan $
+# Maintainer: Daniel Isenmann <daniel@archlinux.org>
+
+pkgname=gettext-mono
+pkgver=0.17
+pkgrel=4
+pkgdesc="mono assemblies for GNU internationalization library"
+arch=('i686' 'x86_64')
+url="http://www.gnu.org/software/gettext"
+license=('GPL3')
+depends=('mono>=1.9')
+source=(ftp://ftp.gnu.org/pub/gnu/gettext/gettext-$pkgver.tar.gz)
+md5sums=('58a2bc6d39c0ba57823034d55d65d606')
+
+build() {
+ # get rid of that .wapi errors; thanks to brice
+ mkdir -p $srcdir/weird
+ export MONO_SHARED_DIR=$srcdir/weird
+
+ cd $srcdir/gettext-$pkgver
+ ./configure --prefix=/usr --enable-csharp=mono || return 1
+ make || return 1
+ # libraries are installed manually
+ install -Dm644 gettext-runtime/intl-csharp/GNU.Gettext.dll \
+ $pkgdir/usr/lib/GNU.Gettext.dll || return 1
+ install -Dm644 gettext-tools/src/msgfmt.net.exe \
+ $pkgdir/usr/lib/gettext/msgfmt.net.exe || return 1
+ install -Dm644 gettext-tools/src/msgunfmt.net.exe \
+ $pkgdir/usr/lib/gettext/msgunfmt.net.exe || return 1
+}
+# vim: ft=sh ts=2 et
diff --git a/extra/gftp/PKGBUILD b/extra/gftp/PKGBUILD
new file mode 100644
index 000000000..4d4bdd661
--- /dev/null
+++ b/extra/gftp/PKGBUILD
@@ -0,0 +1,21 @@
+# $Id: PKGBUILD 75329 2010-04-01 10:29:24Z giovanni $
+# Maintainer: Hugo Doria <hugo@archlinux.org>
+# Contributor: Lucien Immink <l.immink@student.fnt.hvu.nl>
+
+pkgname=gftp
+pkgver=2.0.19
+pkgrel=3
+pkgdesc="A multithreaded ftp client for X Windows"
+arch=('i686' 'x86_64')
+depends=('gtk2' 'openssl' 'readline')
+source=(http://www.gftp.org/$pkgname-$pkgver.tar.bz2)
+url="http://www.gftp.org/"
+license=('GPL2')
+md5sums=('5183cb4955d94be0e03c892585547c64')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr --mandir=/usr/share/man
+ make || return 1
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/ggv/PKGBUILD b/extra/ggv/PKGBUILD
new file mode 100644
index 000000000..40401e1c7
--- /dev/null
+++ b/extra/ggv/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 40229 2009-05-28 22:48:30Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+pkgname=ggv
+pkgver=2.12.0
+pkgrel=3
+pkgdesc="Postscript viewer"
+arch=(i686 x86_64)
+license=('GPL')
+depends=('libgnomeui>=2.14.1' 'ghostscript' 'desktop-file-utils')
+makedepends=('intltool' 'gnome-doc-utils' 'pkgconfig')
+url="http://www.gnome.org"
+install=ggv.install
+source=(http://ftp.gnome.org/pub/gnome/sources/ggv/2.12/ggv-${pkgver}.tar.bz2)
+md5sums=('418f0ef3f8b82bb0c423a2a1cf6769f7')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --libexecdir=/usr/lib/ggv \
+ --localstatedir=/var || return 1
+ make || return 1
+ make GCONF_DISABLE_SCHEMA_INSTALL=1 DESTDIR="${pkgdir}" install || return 1
+
+ install -m755 -d "${pkgdir}/usr/share/gconf/schemas"
+ gconf-merge-schema ${startdir}/pkg/usr/share/gconf/schemas/${pkgname}.schemas --domain ggv ${pkgdir}/etc/gconf/schemas/*.schemas || return 1
+ rm -f ${pkgdir}/etc/gconf/schemas/*.schemas
+
+}
diff --git a/extra/ggv/ggv.install b/extra/ggv/ggv.install
new file mode 100644
index 000000000..99a67d0e5
--- /dev/null
+++ b/extra/ggv/ggv.install
@@ -0,0 +1,22 @@
+pkgname=ggv
+
+post_install() {
+ usr/sbin/gconfpkg --install ${pkgname}
+ update-desktop-database -q
+}
+
+pre_upgrade() {
+ pre_remove $1
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ usr/sbin/gconfpkg --uninstall ${pkgname}
+}
+
+post_remove() {
+ update-desktop-database -q
+}
diff --git a/extra/ggz-client-libs/PKGBUILD b/extra/ggz-client-libs/PKGBUILD
new file mode 100644
index 000000000..b750c7f79
--- /dev/null
+++ b/extra/ggz-client-libs/PKGBUILD
@@ -0,0 +1,21 @@
+# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=ggz-client-libs
+pkgver=0.0.14.1
+pkgrel=1
+pkgdesc="GGZ client library, used by the GGZ Gaming Zone server (ggzd), the ggzcore library and other components"
+arch=(i686 x86_64)
+url="http://www.ggzgamingzone.org/"
+license=('LGPL')
+depends=('libggz>=0.0.14.1' 'expat>=2.0.1')
+options=('!libtool')
+source=(http://ftp.ggzgamingzone.org/pub/ggz/${pkgver}/${pkgname}-${pkgver}.tar.gz)
+md5sums=('299eaa93721b1d867b5bf7dc6ac764b0')
+
+build() {
+ cd ${startdir}/src/${pkgname}-${pkgver}
+ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var || return 1
+ make || return 1
+ make DESTDIR=${startdir}/pkg install || return 1
+}
diff --git a/extra/ghc/PKGBUILD b/extra/ghc/PKGBUILD
new file mode 100644
index 000000000..19887fef4
--- /dev/null
+++ b/extra/ghc/PKGBUILD
@@ -0,0 +1,69 @@
+# $Id: PKGBUILD 112131 2011-03-04 07:57:42Z vesa $
+# Maintainer: Vesa Kaihlavirta <vesa@archlinux.org>
+pkgname=ghc
+pkgver=7.0.2
+pkgrel=1
+pkgdesc="The Glasgow Haskell Compiler"
+arch=(i686 x86_64)
+url="http://www.haskell.org/ghc/"
+license=("custom")
+depends=('perl' 'gmp>=5.0' gcc)
+makedepends=(ghc happy perl)
+provides=("haskell-array=0.3.0.2"
+ "haskell-bytestring=0.9.1.10"
+ "haskell-cabal=1.10.1.0"
+ "haskell-containers=0.4.0.0"
+ "haskell-directory=1.1.0.0"
+ "haskell-extensible-exceptions=0.1.1.2"
+ "haskell-filepath=1.2.0.0"
+ "haskell-haskell98=1.1.0.1"
+ "haskell-hpc=0.5.0.6"
+ "haskell-old-locale=1.0.0.2"
+ "haskell-old-time=1.0.0.6"
+ "haskell-pretty=1.0.1.2"
+ "haskell-process=1.0.1.5"
+ "haskell-random=1.0.0.3"
+ "haskell-template-haskell=2.5.0.0"
+ "haskell-time=1.2.0.3"
+ "haskell-unix=2.4.2.0"
+ "haddock=2.9.2"
+ )
+replaces=("haskell-array<0.3.0.2"
+ "haskell-bytestring<0.9.1.10"
+ "haskell-cabal<1.10.1.0"
+ "haskell-containers<0.4.0.0"
+ "haskell-directory<1.1.0.0"
+ "haskell-extensible-exceptions<0.1.1.2"
+ "haskell-filepath<1.2.0.0"
+ "haskell-haskell98<1.1.0.1"
+ "haskell-hpc<0.5.0.6"
+ "haskell-old-locale<1.0.0.2"
+ "haskell-old-time<1.0.0.6"
+ "haskell-pretty<1.0.1.2"
+ "haskell-process<1.0.1.5"
+ "haskell-random<1.0.0.3"
+ "haskell-template-haskell<2.5.0.0"
+ "haskell-time<1.2.0.3"
+ "haskell-unix<2.4.2.0"
+ "haddock<2.9.2"
+ )
+
+install=ghc.install
+
+source=("http://www.haskell.org/ghc/dist/$pkgver/ghc-$pkgver-src.tar.bz2"
+ build.mk)
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+
+ cp $srcdir/build.mk mk/build.mk
+
+ ./configure --prefix=/usr
+ make -j1 || return 1
+ make DESTDIR=$pkgdir install
+
+ install -Dm644 LICENSE ${pkgdir}/usr/share/licenses/ghc/license
+}
+
+md5sums=('946a18a0dc30437db72c0d3fdf26ca42'
+ '5a3e0880c80b1dcecf779ff2e63a9c0d')
diff --git a/extra/ghc/build.mk b/extra/ghc/build.mk
new file mode 100644
index 000000000..f918a0f16
--- /dev/null
+++ b/extra/ghc/build.mk
@@ -0,0 +1,150 @@
+# -----------------------------------------------------------------------------
+# A Sample build.mk
+#
+# Uncomment one of the following BuildFlavour settings to get the desired
+# overall build type, and then tweak the options in the relevant section
+# below.
+
+# Uncomment one of these to select a build profile below:
+
+# Full build with max optimisation (slow build)
+BuildFlavour = perf
+
+# Fastest build (libs unoptimised):
+#BuildFlavour = quickest
+
+# Fast build with optimised libraries:
+#BuildFlavour = quick
+
+# Profile the stage2 compiler:
+#BuildFlavour = prof
+
+# A development build, working on the stage 1 compiler:
+#BuildFlavour = devel1
+
+# A development build, working on the stage 2 compiler:
+#BuildFlavour = devel2
+
+GhcLibWays = v
+
+# -------- 1. A Performance/Distribution build--------------------------------
+
+ifeq "$(BuildFlavour)" "perf"
+
+# perf matches the default settings, repeated here for comparison:
+
+SRC_HC_OPTS = -O -H64m
+GhcStage1HcOpts = -O -fasm
+GhcStage2HcOpts = -O2 -fasm
+GhcHcOpts = -Rghc-timing
+GhcLibHcOpts = -O2 -XGenerics
+GhcLibWays += p
+
+ifeq "$(PlatformSupportsSharedLibs)" "YES"
+GhcLibWays += dyn
+endif
+
+endif
+
+# -------- A Fast build ------------------------------------------------------
+
+ifeq "$(BuildFlavour)" "quickest"
+
+SRC_HC_OPTS = -H64m -O0 -fasm
+GhcStage1HcOpts = -O -fasm
+GhcStage2HcOpts = -O0 -fasm
+GhcLibHcOpts = -O0 -fasm
+SplitObjs = NO
+HADDOCK_DOCS = NO
+BUILD_DOCBOOK_HTML = NO
+BUILD_DOCBOOK_PS = NO
+BUILD_DOCBOOK_PDF = NO
+
+endif
+
+# -------- A Fast build with optimised libs ----------------------------------
+
+ifeq "$(BuildFlavour)" "quick"
+
+SRC_HC_OPTS = -H64m -O0 -fasm
+GhcStage1HcOpts = -O -fasm
+GhcStage2HcOpts = -O0 -fasm
+GhcLibHcOpts = -O -fasm
+SplitObjs = NO
+HADDOCK_DOCS = NO
+BUILD_DOCBOOK_HTML = NO
+BUILD_DOCBOOK_PS = NO
+BUILD_DOCBOOK_PDF = NO
+
+endif
+
+# -------- Profile the stage2 compiler ---------------------------------------
+
+ifeq "$(BuildFlavour)" "prof"
+
+SRC_HC_OPTS = -H64m -O0 -fasm
+GhcStage1HcOpts = -O -fasm
+GhcStage2HcOpts = -O -fasm
+GhcLibHcOpts = -O -fasm
+
+GhcLibWays += p
+GhcProfiled = YES
+
+SplitObjs = NO
+HADDOCK_DOCS = NO
+BUILD_DOCBOOK_HTML = NO
+BUILD_DOCBOOK_PS = NO
+BUILD_DOCBOOK_PDF = NO
+
+endif
+
+
+# -------- A Development build (stage 1) -------------------------------------
+
+ifeq "$(BuildFlavour)" "devel1"
+
+SRC_HC_OPTS = -H64m -O -fasm
+GhcLibHcOpts = -O -dcore-lint
+GhcStage1HcOpts = -Rghc-timing -O0 -DDEBUG
+GhcStage2HcOpts = -Rghc-timing -O -fasm
+SplitObjs = NO
+HADDOCK_DOCS = NO
+BUILD_DOCBOOK_HTML = NO
+BUILD_DOCBOOK_PS = NO
+BUILD_DOCBOOK_PDF = NO
+
+endif
+
+# -------- A Development build (stage 2) -------------------------------------
+
+ifeq "$(BuildFlavour)" "devel2"
+
+SRC_HC_OPTS = -H64m -O -fasm
+GhcLibHcOpts = -O -dcore-lint
+GhcStage1HcOpts = -Rghc-timing -O -fasm
+GhcStage2HcOpts = -Rghc-timing -O0 -DDEBUG
+SplitObjs = NO
+HADDOCK_DOCS = NO
+BUILD_DOCBOOK_HTML = NO
+BUILD_DOCBOOK_PS = NO
+BUILD_DOCBOOK_PDF = NO
+
+endif
+
+# -----------------------------------------------------------------------------
+# Other settings that might be useful
+
+# profiled RTS
+#GhcRtsCcOpts = -pg -g
+
+# Optimised/profiled RTS
+#GhcRtsCcOpts = -O2 -pg
+
+#GhcRtsWithFrontPanel = YES
+#SRC_HC_OPTS += `gtk-config --libs`
+
+# NoFib settings
+NoFibWays =
+STRIP=:
+
+
diff --git a/extra/ghc/ghc.install b/extra/ghc/ghc.install
new file mode 100644
index 000000000..7d56083bc
--- /dev/null
+++ b/extra/ghc/ghc.install
@@ -0,0 +1,19 @@
+pkgname=ghc
+
+pre_upgrade() {
+ cat << EOF
+ ==> Unregistering cabalized packages...
+EOF
+ cd /usr/share/haskell/ && (for a in *; do ghc-pkg unregister --force $a &> /dev/null; done; cd - > /dev/null )
+ cat << EOF
+ ==> Done.
+EOF
+
+}
+
+post_upgrade() {
+ cat << EOF
+ ==> All cabalized and yaourt-installed packages need to be reinstalled now.
+ ==> See /usr/share/haskell/ and ghc-pkg list --user for a tentative list of affected packages.
+EOF
+}
diff --git a/extra/ghex/PKGBUILD b/extra/ghex/PKGBUILD
new file mode 100644
index 000000000..700075f98
--- /dev/null
+++ b/extra/ghex/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 56292 2009-10-21 10:30:09Z jgc $
+# Maintainer: tobias <tobias@archlinux.org>
+# Contributor: Tobias Kieslich <tobias@justdreams.de>
+
+pkgname=ghex
+pkgver=2.24.0
+pkgrel=1
+pkgdesc="A simple binary editor for the Gnome desktop"
+arch=(i686 x86_64)
+license=('GPL')
+url="http://live.gnome.org/Ghex"
+depends=('libgnomeui>=2.24.2' 'libgnomeprintui>=2.18.4' 'hicolor-icon-theme')
+makedepends=('intltool' 'pkgconfig' 'gnome-doc-utils>=0.18.0')
+options=('!libtool' '!emptydirs')
+install=ghex.install
+source=(http://ftp.gnome.org/pub/GNOME/sources/ghex/2.24/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('6fd8e0df1cb6fb9fcf60cfa2bc88877713e4366c')
+
+build() {
+ cd ${startdir}/src/${pkgname}-${pkgver}
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-static || return 1
+ make || return 1
+ make GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 DESTDIR=${startdir}/pkg install || return 1
+
+ install -d -m755 ${startdir}/pkg/usr/share/gconf/schemas
+ gconf-merge-schema ${startdir}/pkg/usr/share/gconf/schemas/${pkgname}.schemas --domain ghex-2.0 ${startdir}/pkg/etc/gconf/schemas/*.schemas || return 1
+ rm -f ${startdir}/pkg/etc/gconf/schemas/*.schemas
+}
diff --git a/extra/ghex/ghex.install b/extra/ghex/ghex.install
new file mode 100644
index 000000000..d2fd968ea
--- /dev/null
+++ b/extra/ghex/ghex.install
@@ -0,0 +1,22 @@
+pkgname=ghex
+
+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/extra/giblib/PKGBUILD b/extra/giblib/PKGBUILD
new file mode 100644
index 000000000..611d84137
--- /dev/null
+++ b/extra/giblib/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 68041 2010-02-10 15:14:45Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=giblib
+pkgver=1.2.4
+pkgrel=4
+pkgdesc="A library that feh uses as a wrapper to imlib2"
+arch=('i686' 'x86_64')
+url="http://freshmeat.net/projects/giblib/"
+license=('MIT')
+depends=('imlib2' 'libxext' 'freetype2')
+options=('!libtool')
+source=(ftp://ftp.archlinux.org/other/giblib/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('ff61760ef73421c5f02d2f6c8d3ac913')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ ./configure --prefix=/usr || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" docsdir=/usr/share/doc/giblib install || return 1
+
+ # Install custom license
+ install -Dm644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" || return 1
+}
diff --git a/extra/gif2png/PKGBUILD b/extra/gif2png/PKGBUILD
new file mode 100644
index 000000000..b2a2ecc36
--- /dev/null
+++ b/extra/gif2png/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 108710 2011-02-02 17:26:37Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: eric <eric@archlinux.org>
+# Contributor: Andrew Rose <ody@netrux.com>
+
+pkgname=gif2png
+pkgver=2.5.4
+pkgrel=1
+pkgdesc="A GIF to PNG image format converter"
+arch=('i686' 'x86_64')
+url="http://www.catb.org/~esr/gif2png/"
+license=('ZLIB')
+depends=('libpng')
+optdepends=('python2: for using web2png')
+source=("http://www.catb.org/~esr/${pkgname}/${pkgname}-${pkgver}.tar.gz")
+md5sums=('d63ea3fc6b6119589e8d4d6fead30df9')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ sed -i 's#env python#env python2#' web2png
+ ./configure --prefix=/usr \
+ --mandir=/usr/share/man || return 1
+ make || return 1
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install || return 1
+ install -D -m644 COPYING "${pkgdir}/usr/share/licenses/$pkgname/LICENSE"
+}
diff --git a/extra/giflib/PKGBUILD b/extra/giflib/PKGBUILD
new file mode 100644
index 000000000..86d445528
--- /dev/null
+++ b/extra/giflib/PKGBUILD
@@ -0,0 +1,39 @@
+# $Id: PKGBUILD 117538 2011-04-04 10:27:03Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Baptiste Daroussin <baptiste.daroussin@gmail.com>
+# Contributor: Grigorios Bouzakis <grbzks[at]gmail[dot]com>
+# Contributor: mightyjaym <jm.ambrosino@free.fr>
+
+pkgname=giflib
+pkgver=4.1.6
+pkgrel=4
+pkgdesc="A library for reading and writing gif images"
+url="http://sourceforge.net/projects/giflib/"
+arch=('i686' 'x86_64')
+license=('MIT')
+depends=('libx11')
+provides=("libungif=${pkgver}")
+conflicts=('libungif')
+replaces=('libungif')
+options=('!libtool')
+source=(http://downloads.sourceforge.net/sourceforge/giflib/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('7125644155ae6ad33dbc9fc15a14735f')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ sed -i '/AC_PATH_XTRA/d' configure.ac
+ libtoolize -f
+ autoreconf
+ ./configure --prefix=/usr --disable-static
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+
+ # libungif compatibility - instructions taken from Redhat specfile
+ MAJOR=`echo ${pkgver} | sed 's/\([0-9]\+\)\..*/\1/'`
+ gcc -shared -Wl,-soname,libungif.so.${MAJOR} -Llib/.libs -lgif -o libungif.so.${pkgver}
+ install -m755 libungif.so.${pkgver} "${pkgdir}/usr/lib/"
+ ln -sf libungif.so.${pkgver} "${pkgdir}/usr/lib/libungif.so.4"
+ ln -sf libungif.so.4 "${pkgdir}/usr/lib/libungif.so"
+}
diff --git a/extra/gifsicle/PKGBUILD b/extra/gifsicle/PKGBUILD
new file mode 100644
index 000000000..d4bbf366d
--- /dev/null
+++ b/extra/gifsicle/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 114736 2011-03-15 20:13:11Z eric $
+# Maintainer: Eric Bélanger <eric@archlinux.org>
+
+pkgname=gifsicle
+pkgver=1.61
+pkgrel=1
+pkgdesc="A powerful command-line program for creating, editing, manipulating and getting information about GIF images and animations"
+arch=('i686' 'x86_64')
+url="http://www.lcdf.org/gifsicle/"
+license=('GPL')
+depends=('libx11')
+source=(http://www.lcdf.org/${pkgname}/${pkgname}-${pkgver}.tar.gz)
+md5sums=('3d9e45873daaf960a35d1b89505f1101')
+sha1sums=('2b9e1c83a926731c10153ab8aa77470627b48583')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/gimp-dbp/PKGBUILD b/extra/gimp-dbp/PKGBUILD
new file mode 100644
index 000000000..9cec2e706
--- /dev/null
+++ b/extra/gimp-dbp/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 37038 2009-04-30 05:11:53Z eric $
+# Maintainer: tobias <tobias@archlinux.org>
+# Contributor: Tobias Kieslich <tobias@justdreams.de>
+
+pkgname=gimp-dbp
+_srcname=dbp
+pkgver=1.1.9
+pkgrel=1
+pkgdesc="David's batch processor for the GIMP"
+arch=(i686 x86_64)
+license=('GPL')
+depends=('gimp>=2.4')
+url="http://members.ozemail.com.au/~hodsond/dbp.html"
+source=(http://www.ozemail.com.au/~hodsond/${_srcname}Src-${pkgver//./-}.tgz)
+md5sums=('1106625707798ab8ea1317ac6bece1c5')
+
+build() {
+ cd ${srcdir}/${_srcname}-${pkgver}
+ # Tweak Makefile -- remove auto-install
+ sed -i 's|^\tgimptool.*$||' Makefile || return 1
+ sed -i "s|<string>|<cstring>|" op.h || return 1
+ #sed -i '/DISABLE_DEPRECATED/d' Makefile
+ # create gimp-2.0 plugin and install it
+ make ${_srcname} || return 1
+ install -Dsm755 ${_srcname} ${pkgdir}/usr/lib/gimp/2.0/plug-ins/${_srcname} || return 1
+}
diff --git a/extra/gimp-devel/PKGBUILD b/extra/gimp-devel/PKGBUILD
new file mode 100644
index 000000000..7ab681075
--- /dev/null
+++ b/extra/gimp-devel/PKGBUILD
@@ -0,0 +1,54 @@
+# $Id: PKGBUILD 108258 2011-01-30 15:58:48Z ibiru $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+
+pkgname=gimp-devel
+pkgver=2.7.1
+pkgrel=4
+pkgdesc="GNU Image Manipulation Program (Development Version)"
+arch=('i686' 'x86_64')
+url="http://www.gimp.org/"
+license=('GPL')
+depends=('gtk2' 'lcms' 'libxpm' 'libwmf' 'libxmu' 'librsvg' 'libmng' 'dbus-glib' \
+ 'libexif' 'pygtk' 'desktop-file-utils' 'gegl')
+makedepends=('gutenprint' 'intltool' 'libwebkit' 'gnome-python' 'poppler-glib' \
+ 'pkg-config' 'alsa-lib' 'iso-codes')
+optdepends=('gutenprint: for sophisticated printing only as gimp has built-in cups print support'
+ 'libwebkit: for the help browser'
+ 'poppler-glib: for pdf support'
+ 'hal: for Linux input event controller module'
+ 'alsa-lib: for MIDI event controller module')
+options=('!libtool' '!makeflags')
+conflicts=('gimp')
+provides=("gimp=${pkgver}")
+install=gimp-devel.install
+source=(ftp://ftp.gimp.org/pub/gimp/v${pkgver%.*}/gimp-${pkgver}.tar.bz2 linux.gpl)
+md5sums=('4932a0a1645ecd5b23ea6155ddda013d' 'bb27bc214261d36484093e857f015f38')
+sha1sums=('3dcfc08ddccbdf541449e4ea6be252b449f6d872' '110ce9798173b19a662d086ed7b882b4729f06cf')
+
+build() {
+ cd "${srcdir}/gimp-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --enable-mp --enable-gimp-console --enable-gimp-remote \
+ --enable-python --with-gif-compression=lzw \
+ --without-aa
+ make
+}
+
+package() {
+ cd "${srcdir}/gimp-${pkgver}"
+ make DESTDIR="${pkgdir}" install-strip
+ sed -i 's|#!/usr/bin/env python|#!/usr/bin/env python2|' "${pkgdir}"/usr/lib/gimp/2.0/plug-ins/*.py
+
+ install -D -m644 "${srcdir}/linux.gpl" "${pkgdir}/usr/share/gimp/2.0/palettes/Linux.gpl"
+
+ ln -sf gimp-console-${pkgver%.*}.1.gz "${pkgdir}/usr/share/man/man1/gimp-console.1.gz"
+ ln -sf gimp-remote-${pkgver%.*}.1.gz "${pkgdir}/usr/share/man/man1/gimp-remote.1.gz"
+ ln -sf gimprc-${pkgver%.*}.5.gz "${pkgdir}/usr/share/man/man5/gimprc.5.gz"
+ ln -sf gimptool-2.0.1.gz "${pkgdir}/usr/share/man/man1/gimptool.1.gz"
+ ln -s gimp-${pkgver%.*}.1.gz "${pkgdir}/usr/share/man/man1/gimp.1.gz"
+
+ ln -s gimp-${pkgver%.*} "${pkgdir}/usr/bin/gimp"
+ ln -s gimp-console-${pkgver%.*} "${pkgdir}/usr/bin/gimp-console"
+ ln -s gimp-remote-${pkgver%.*} "${pkgdir}/usr/bin/gimp-remote"
+ ln -s gimptool-2.0 "${pkgdir}/usr/bin/gimptool"
+}
diff --git a/extra/gimp-devel/gimp-devel.install b/extra/gimp-devel/gimp-devel.install
new file mode 100644
index 000000000..c317fbaca
--- /dev/null
+++ b/extra/gimp-devel/gimp-devel.install
@@ -0,0 +1,12 @@
+post_install() {
+ update-desktop-database -q
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/extra/gimp-devel/linux.gpl b/extra/gimp-devel/linux.gpl
new file mode 100644
index 000000000..0a73d8979
--- /dev/null
+++ b/extra/gimp-devel/linux.gpl
@@ -0,0 +1,19 @@
+GIMP Palette
+Name: linux
+#
+ 0 0 0
+ 0 0 170
+ 0 170 0
+ 0 170 170
+170 0 0
+170 0 170
+170 85 0
+170 170 170
+ 85 85 85
+ 85 85 255
+ 85 255 85
+ 85 255 255
+255 85 85
+255 85 255
+255 255 85
+255 255 255
diff --git a/extra/gimp-gap/PKGBUILD b/extra/gimp-gap/PKGBUILD
new file mode 100644
index 000000000..997bb3fe2
--- /dev/null
+++ b/extra/gimp-gap/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 64731 2010-01-22 02:05:13Z eric $
+# Maintainer: tobias <tobias@archlinux.org>
+# Contributor: Tobias Kieslich <tobias@justdreams.de>
+
+pkgname=gimp-gap
+pkgver=2.6.0
+pkgrel=2
+pkgdesc="A Plug-In collection to edit and create animations for the Gimp"
+arch=(i686 x86_64)
+license=('GPL')
+url="http://www.gimp.org/downloads/"
+depends=('gimp>=2.6.0' 'xvidcore' 'bash' 'libjpeg')
+makedepends=('intltool')
+options=('!makeflags')
+source=(ftp://ftp.gimp.org/pub/gimp/plug-ins/v2.6/gap/$pkgname-$pkgver.tar.bz2)
+md5sums=('249ed829de8b78675c0fe4ef4212089f')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ #Arch64 fix
+ if [ "$CARCH" = "x86_64" ]; then
+ ./configure --prefix=/usr CFLAGS="$CFLAGS -fPIC" || return 1
+ else
+ ./configure --prefix=/usr || return 1
+ fi
+
+ make || return 1
+ make DESTDIR="$pkgdir" install || return 1
+}
diff --git a/extra/gimp-refocus/PKGBUILD b/extra/gimp-refocus/PKGBUILD
new file mode 100644
index 000000000..6d78aad67
--- /dev/null
+++ b/extra/gimp-refocus/PKGBUILD
@@ -0,0 +1,34 @@
+# $Id: PKGBUILD 54791 2009-10-11 19:30:09Z giovanni $
+# Maintainer: Tobias Kieslich <tobias@justdreams.de>
+# Contributor: Tobias Kieslich <tobias@justdreams.de>
+
+pkgname=gimp-refocus
+_pname=refocus
+pkgver=0.9.0
+pkgrel=2
+arch=(i686 x86_64)
+license=(GPL2)
+pkgdesc="a sharpen plugin for gimp using FIR Wiener filtering"
+depends=('gimp>=2.0.0')
+url="http://refocus.sourceforge.net/"
+source=(http://downloads.sourceforge.net/sourceforge/${_pname}/${_pname}-${pkgver}.tar.gz
+\
+ ${_pname}-gimp-2.0.patch ${_pname}-mirror-fix.patch ${_pname}-gimp-preview.patch)
+md5sums=('8d4eac4ef45c904fb5e73021696bec94' '8ef9dfe697cd20be2be14c1ee53a240a'\
+ '532593cba030feab8ffa7800fc9cd782' '6b55dbdc656646c765064cf21e1a3c57')
+
+build() {
+ cd ${startdir}/src/${_pname}-${pkgver}
+ # we need a *load of patches now to compile
+ patch -Np0 -i ../${_pname}-gimp-2.0.patch || return 1
+ patch -Np0 -i ../${_pname}-mirror-fix.patch || return 1
+ patch -Np0 -i ../${_pname}-gimp-preview.patch || return 1
+ aclocal
+ automake -a --gnu --include-deps Makefile
+ automake -a --gnu --include-deps lib/Makefile
+ autoconf
+ echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
+ ./configure --prefix=/usr --bindir=/usr/lib/gimp/2.0/plug-ins
+ make || return 1
+ make DESTDIR=${startdir}/pkg install
+}
diff --git a/extra/gimp-refocus/refocus-gimp-2.0.patch b/extra/gimp-refocus/refocus-gimp-2.0.patch
new file mode 100644
index 000000000..259ee9f87
--- /dev/null
+++ b/extra/gimp-refocus/refocus-gimp-2.0.patch
@@ -0,0 +1,209 @@
+Index: configure.in
+===================================================================
+RCS file: /cvsroot/refocus/refocus/configure.in,v
+retrieving revision 1.1.1.1
+diff -u -u -r1.1.1.1 configure.in
+--- configure.in 30 Jan 2003 21:29:29 -0000 1.1.1.1
++++ configure.in 6 Apr 2004 20:26:54 -0000
+@@ -1,8 +1,8 @@
+ dnl Process this file with autoconf to produce a configure script.
+
+-AC_INIT(README)
+-
+-AM_INIT_AUTOMAKE(refocus, 0.9.0)
++AC_INIT([refocus],[0.9.0])
++AC_CONFIG_SRCDIR(README)
++AM_INIT_AUTOMAKE
+
+ AC_PROG_CC
+ AC_CHECK_PROG(GCC3, gcc3, gcc3)
+@@ -12,7 +12,7 @@
+ AC_MSG_RESULT([using $CC as compiler])
+ fi
+
+-AC_STDC_HEADERS
++AC_HEADER_STDC([])
+ AC_PROG_RANLIB
+
+ # Check if the user has ATLAS installed in ./lib-atlas
+@@ -36,7 +36,7 @@
+ AC_SUBST(LAPACK_INCLUDE_DIR)
+ AM_CONDITIONAL(HAVE_ATLAS, test x${have_atlas} = xyes)
+
+-AM_PATH_GIMP(1.2.0)
++AM_PATH_GIMP_2_0(2.0.0)
+ AM_PATH_GTK_2_0(2.0.0)
+ AM_PATH_GLIB_2_0(2.0.0)
+
+@@ -106,5 +106,6 @@
+ #Check if erf is defined in the mathlibrary
+ AC_CHECK_LIB(m, erf, AC_DEFINE(HAVE_ERF))
+
+-AC_OUTPUT([Makefile src/Makefile lib/Makefile doc/Makefile gtk-doc/Makefile ])
++AC_CONFIG_FILES([Makefile src/Makefile lib/Makefile doc/Makefile gtk-doc/Makefile ])
++AC_OUTPUT
+
+Index: lib/Makefile.am
+===================================================================
+RCS file: /cvsroot/refocus/refocus/lib/Makefile.am,v
+retrieving revision 1.1.1.1
+diff -u -u -r1.1.1.1 Makefile.am
+--- lib/Makefile.am 30 Jan 2003 21:29:52 -0000 1.1.1.1
++++ lib/Makefile.am 6 Apr 2004 20:26:55 -0000
+@@ -1,4 +1,4 @@
+-CFLAGS=-fomit-frame-pointer -O3 -funroll-all-loops
++AM_CFLAGS=-fomit-frame-pointer -O3 -funroll-all-loops
+
+
+ noinst_LIBRARIES = liblapack.a libatlas.a libcblas.a
+Index: src/Makefile.am
+===================================================================
+RCS file: /cvsroot/refocus/refocus/src/Makefile.am,v
+retrieving revision 1.1.1.1
+diff -u -u -r1.1.1.1 Makefile.am
+--- src/Makefile.am 30 Jan 2003 21:30:18 -0000 1.1.1.1
++++ src/Makefile.am 6 Apr 2004 20:26:55 -0000
+@@ -11,7 +11,7 @@
+ EXTRA_DIST = dummy-plugin.c
+
+ refocus_SOURCES = refocus.c conv.c gimppreview.c prevman.c util.c matrix.c tilebuf.c bdclosure.c fwlapack.c
+-refocus_LDADD = @GTK_LIBS@ -lgimp ${ldadd_atlas}
++refocus_LDADD = @GIMP_LIBS@ ${ldadd_atlas}
+ refocus_DEPENDENCIES=@LAPACK_LIB_DIR@/liblapack.a
+
+ test_matrix_SOURCES = matrix.c test-matrix.c fwlapack.c
+Index: src/gimppreview.c
+===================================================================
+RCS file: /cvsroot/refocus/refocus/src/gimppreview.c,v
+retrieving revision 1.1.1.1
+diff -u -u -r1.1.1.1 gimppreview.c
+--- src/gimppreview.c 30 Jan 2003 21:30:18 -0000 1.1.1.1
++++ src/gimppreview.c 6 Apr 2004 20:26:55 -0000
+@@ -344,7 +344,7 @@
+
+ /* Save the drawable info. */
+ preview->drawable = drawable;
+- preview->drawable_has_alpha = gimp_drawable_has_alpha (drawable->id);
++ preview->drawable_has_alpha = gimp_drawable_has_alpha (drawable->drawable_id);
+
+ /* Calculate our preview size. */
+ if (preview_size == PREVIEW_FIXED_SIZE)
+Index: src/prevman.c
+===================================================================
+RCS file: /cvsroot/refocus/refocus/src/prevman.c,v
+retrieving revision 1.1.1.1
+diff -u -u -r1.1.1.1 prevman.c
+--- src/prevman.c 30 Jan 2003 21:30:18 -0000 1.1.1.1
++++ src/prevman.c 6 Apr 2004 20:26:56 -0000
+@@ -52,7 +52,7 @@
+ tile_source->width = drawable->width;
+ tile_source->height = drawable->height;
+ tile_source->bpp = drawable->bpp;
+- tile_source->has_alpha = gimp_drawable_has_alpha (drawable->id);
++ tile_source->has_alpha = gimp_drawable_has_alpha (drawable->drawable_id);
+ tile_source->un.drw.drawable = drawable;
+ gimp_pixel_rgn_init (&tile_source->un.drw.pixel_rgn, drawable, x, y, width,
+ height, FALSE, FALSE);
+@@ -144,7 +144,7 @@
+ tile_sink->width = drawable->width;
+ tile_sink->height = drawable->height;
+ tile_sink->bpp = drawable->bpp;
+- tile_sink->has_alpha = gimp_drawable_has_alpha (drawable->id);
++ tile_sink->has_alpha = gimp_drawable_has_alpha (drawable->drawable_id);
+ gimp_pixel_rgn_init (&tile_sink->un.drw.pixel_rgn, drawable, x, y, width,
+ height, TRUE, TRUE);
+ }
+@@ -159,7 +159,7 @@
+ tile_sink->width = width;
+ tile_sink->height = height;
+ tile_sink->bpp = drawable->bpp;
+- tile_sink->has_alpha = gimp_drawable_has_alpha (drawable->id);
++ tile_sink->has_alpha = gimp_drawable_has_alpha (drawable->drawable_id);
+ tile_sink->un.prv.data = g_new (guchar,
+ tile_sink->width * tile_sink->height *
+ tile_sink->bpp);
+Index: src/refocus.c
+===================================================================
+RCS file: /cvsroot/refocus/refocus/src/refocus.c,v
+retrieving revision 1.1.1.1
+diff -u -u -r1.1.1.1 refocus.c
+--- src/refocus.c 30 Jan 2003 21:30:19 -0000 1.1.1.1
++++ src/refocus.c 6 Apr 2004 20:26:56 -0000
+@@ -45,9 +45,9 @@
+
+ /* Declare local functions. */
+ static void query (void);
+-static void run (char *name,
++static void run (const gchar *name,
+ gint nparams,
+- GimpParam * param,
++ const GimpParam * param,
+ gint * nreturn_vals, GimpParam ** return_vals);
+ static gint dialog ();
+ static void doit (void);
+@@ -111,7 +111,6 @@
+ {GIMP_PDB_FLOAT, "noise", "Noise to Signal ratio"},
+ };
+ static GimpParamDef *return_vals = NULL;
+- static gint nargs = (gint) (sizeof (args) / sizeof (args[0]));
+ static gint nreturn_vals = 0;
+
+ gimp_install_procedure ("plug_in_refocus",
+@@ -123,15 +122,15 @@
+ "<Image>/Filters/Enhance/Refocus ...",
+ "RGB*, GRAY*",
+ GIMP_PLUGIN,
+- nargs, nreturn_vals, args, return_vals);
++ G_N_ELEMENTS(args), nreturn_vals, args, return_vals);
+ }
+
+ static void
+-run (char *name, gint n_params, GimpParam * param,
++run (const gchar *name, gint n_params, const GimpParam * param,
+ gint * nreturn_vals, GimpParam ** return_vals)
+ {
+ static GimpParam values[1];
+- GimpRunModeType run_mode;
++ GimpRunMode run_mode;
+ GimpPDBStatusType status = GIMP_PDB_SUCCESS;
+
+ (void) name; /* Shut up warnings about unused parameters. */
+@@ -186,8 +185,8 @@
+ {
+
+ /* Make sure that the drawable is gray or RGB color */
+- if (gimp_drawable_is_rgb (drawable->id) ||
+- gimp_drawable_is_gray (drawable->id))
++ if (gimp_drawable_is_rgb (drawable->drawable_id) ||
++ gimp_drawable_is_gray (drawable->drawable_id))
+ {
+ doit ();
+
+@@ -411,7 +410,7 @@
+ event_is_current =
+ gimp_preview_draw_unscaled_row (GIMP_PREVIEW (my_widgets.preview),
+ event->event_id,
+- gimp_drawable_type (drawable->id),
++ gimp_drawable_type (drawable->drawable_id),
+ row, buf);
+ };
+ g_free (buf);
+@@ -608,7 +607,7 @@
+ gimp_progress_init ("Computing matrix");
+ update_matrix ();
+ gimp_progress_init ("Applying convolution");
+- gimp_drawable_mask_bounds (drawable->id, &sx1, &sy1, &sx2, &sy2);
++ gimp_drawable_mask_bounds (drawable->drawable_id, &sx1, &sy1, &sx2, &sy2);
+ width = sx2 - sx1;
+ height = sy2 - sy1;
+ tile_source_init_from_drawable (&source, drawable, sx1, sy1, width, height);
+@@ -618,7 +617,7 @@
+ matrix, 2 * my_config.mat_width + 1,
+ &update_progress_closure);
+ gimp_drawable_flush (drawable);
+- gimp_drawable_merge_shadow (drawable->id, TRUE);
+- gimp_drawable_update (drawable->id, sx1, sy1, width, height);
++ gimp_drawable_merge_shadow (drawable->drawable_id, TRUE);
++ gimp_drawable_update (drawable->drawable_id, sx1, sy1, width, height);
+ g_free (matrix);
+ }
diff --git a/extra/gimp-refocus/refocus-gimp-preview.patch b/extra/gimp-refocus/refocus-gimp-preview.patch
new file mode 100644
index 000000000..089365dcb
--- /dev/null
+++ b/extra/gimp-refocus/refocus-gimp-preview.patch
@@ -0,0 +1,440 @@
+diff -ur src/gimppreview.c src/gimppreview.c
+--- src/gimppreview.c 2008-03-17 17:20:49.000000000 -0700
++++ src/gimppreview.c 2008-03-17 17:15:51.000000000 -0700
+@@ -36,18 +36,18 @@
+ #include "gimppreview.h"
+
+
+-static void gimp_preview_init (GimpPreview * preview);
+-static void gimp_preview_class_init (GimpPreviewClass * klass);
++static void gimp_preview_init (RefocusPreview * preview);
++static void gimp_preview_class_init (RefocusPreviewClass * klass);
+
+ static void gimp_preview_plus_callback (GtkWidget * widget, gpointer data);
+ static void gimp_preview_minus_callback (GtkWidget * widget, gpointer data);
+ static gint gimp_preview_event (GtkWidget * widget, GdkEvent * event,
+ gpointer data);
+-static void gimp_preview_recompute_sizes (GimpPreview * preview,
++static void gimp_preview_recompute_sizes (RefocusPreview * preview,
+ gdouble newscale);
+-static void gimp_preview_update_preview (GimpPreview * preview);
++static void gimp_preview_update_preview (RefocusPreview * preview);
+
+-static void gimp_preview_image_set_size (GimpPreview * preview, gint width,
++static void gimp_preview_image_set_size (RefocusPreview * preview, gint width,
+ gint height);
+ static void gimp_preview_size_request (GtkWidget * widget,
+ GtkRequisition * requisition);
+@@ -58,7 +58,7 @@
+ GtkCallback callback,
+ gpointer callback_data);
+ gboolean gimp_preview_update_preview_idle_fun (gpointer data);
+-void gimp_preview_schedule_update (GimpPreview * preview);
++void gimp_preview_schedule_update (RefocusPreview * preview);
+
+ #define PROGRESS_BAR_HEIGHT (10)
+ #define PREVIEW_SIZE (100)
+@@ -94,11 +94,11 @@
+
+
+ /*
+- * Apps which use a GimpPreview widget should not be accessing the private
++ * Apps which use a RefocusPreview widget should not be accessing the private
+ * data!
+ */
+ #define PREVIEW_DATA(preview) \
+- ((GimpPreviewData*)(GIMP_PREVIEW (preview)->private_data))
++ ((RefocusPreviewData*)(GIMP_PREVIEW (preview)->private_data))
+
+ typedef struct
+ {
+@@ -126,7 +126,7 @@
+ GtkWidget *image;
+ GtkWidget *progress_bar;
+ }
+-GimpPreviewData;
++RefocusPreviewData;
+
+
+ /* Convert coordinate in preview space to image coordinates */
+@@ -155,20 +155,20 @@
+ if (!preview_type)
+ {
+ GTypeInfo preview_info = {
+- sizeof (GimpPreviewClass),
++ sizeof (RefocusPreviewClass),
+ (GBaseInitFunc) NULL,
+ (GBaseFinalizeFunc) NULL,
+ (GClassInitFunc) gimp_preview_class_init,
+ (GClassFinalizeFunc) NULL,
+ (gconstpointer) NULL, /* class_data */
+- sizeof (GimpPreview),
++ sizeof (RefocusPreview),
+ 0, /* n_preallocs */
+ (GInstanceInitFunc) gimp_preview_init,
+ (GTypeValueTable *) NULL /* value_table */
+ };
+
+ preview_type =
+- g_type_register_static (GTK_TYPE_CONTAINER, "GimpPreview",
++ g_type_register_static (GTK_TYPE_CONTAINER, "RefocusPreview",
+ &preview_info, 0);
+ }
+
+@@ -181,7 +181,7 @@
+ * by GTK's internal mechanisms.
+ */
+ static void
+-gimp_preview_class_init (GimpPreviewClass * klass)
++gimp_preview_class_init (RefocusPreviewClass * klass)
+ {
+ GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
+ GtkContainerClass *container_class = GTK_CONTAINER_CLASS (klass);
+@@ -190,7 +190,7 @@
+ g_signal_new ("update_preview",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_FIRST,
+- G_STRUCT_OFFSET (GimpPreviewClass, update_preview),
++ G_STRUCT_OFFSET (RefocusPreviewClass, update_preview),
+ NULL,
+ NULL,
+ g_cclosure_marshal_VOID__POINTER,
+@@ -200,7 +200,7 @@
+ g_signal_new ("preview_changed",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_FIRST,
+- G_STRUCT_OFFSET (GimpPreviewClass, preview_changed),
++ G_STRUCT_OFFSET (RefocusPreviewClass, preview_changed),
+ NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
+
+ klass->update_preview = NULL;
+@@ -212,7 +212,7 @@
+
+
+ void
+-gimp_preview_set_scale_amount(GimpPreview *preview, gdouble scale_amount)
++gimp_preview_set_scale_amount(RefocusPreview *preview, gdouble scale_amount)
+ {
+ /*
+ * If the caller wants to set the scale amount, let them do so.
+@@ -269,7 +269,7 @@
+ * by GTK's internal mechanisms.
+ */
+ static void
+-gimp_preview_init (GimpPreview * preview)
++gimp_preview_init (RefocusPreview * preview)
+ {
+ gchar buffer[10];
+
+@@ -277,7 +277,7 @@
+ GTK_WIDGET_SET_FLAGS (preview, GTK_NO_WINDOW);
+ GTK_CONTAINER (preview)->resize_mode = GTK_RESIZE_IMMEDIATE;
+
+- preview->private_data = g_malloc0 (sizeof (GimpPreviewData));
++ preview->private_data = g_malloc0 (sizeof (RefocusPreviewData));
+
+
+ PREVIEW_DATA (preview)->label = gtk_label_new ("");
+@@ -307,7 +307,7 @@
+ gimp_preview_new_with_args (GimpDrawable * drawable, gint cb_preview_size,
+ gdouble cb_scale_amount, gint cb_allow_scale)
+ {
+- GimpPreview *preview;
++ RefocusPreview *preview;
+ GtkWidget *frame;
+ GtkWidget *hbox;
+ GtkWidget *event_box;
+@@ -454,7 +454,7 @@
+ static void
+ gimp_preview_size_request (GtkWidget * widget, GtkRequisition * requisition)
+ {
+- GimpPreview *preview = GIMP_PREVIEW (widget);
++ RefocusPreview *preview = GIMP_PREVIEW (widget);
+ GtkRequisition resize_box_requisition;
+
+ #ifdef PREVIEW_DEBUG
+@@ -478,7 +478,7 @@
+ static void
+ gimp_preview_size_allocate (GtkWidget * widget, GtkAllocation * allocation)
+ {
+- GimpPreview *preview = GIMP_PREVIEW (widget);
++ RefocusPreview *preview = GIMP_PREVIEW (widget);
+ GtkAllocation resize_box_allocation, progress_bar_allocation,
+ event_box_allocation;
+ GtkRequisition resize_box_requisition;
+@@ -543,7 +543,7 @@
+ gboolean include_internals,
+ GtkCallback callback, gpointer callback_data)
+ {
+- GimpPreview *preview = GIMP_PREVIEW (container);
++ RefocusPreview *preview = GIMP_PREVIEW (container);
+
+ if (PREVIEW_DATA (preview)->resize_box)
+ {
+@@ -564,7 +564,7 @@
+ * Plug-ins call this to do an update of the preview area.
+ */
+ void
+-gimp_preview_update (GimpPreview * preview)
++gimp_preview_update (RefocusPreview * preview)
+ {
+ gimp_preview_recompute_sizes (preview, preview->scale);
+ gimp_preview_update_preview (preview);
+@@ -579,7 +579,7 @@
+ static void
+ gimp_preview_plus_callback (GtkWidget * widget, gpointer data)
+ {
+- GimpPreview *preview;
++ RefocusPreview *preview;
+ gchar buffer[10];
+ gdouble new_scale;
+
+@@ -616,7 +616,7 @@
+ static void
+ gimp_preview_minus_callback (GtkWidget * widget, gpointer data)
+ {
+- GimpPreview *preview;
++ RefocusPreview *preview;
+ gchar buffer[10];
+ gdouble new_scale;
+
+@@ -651,7 +651,7 @@
+ static gint
+ gimp_preview_event (GtkWidget * widget, GdkEvent * event, gpointer data)
+ {
+- GimpPreview *preview;
++ RefocusPreview *preview;
+ GdkEventButton *button_event;
+ gint x, y;
+ gint dx, dy;
+@@ -733,7 +733,7 @@
+ * This function is also used for initializing the preview.
+ */
+ static void
+-gimp_preview_recompute_sizes (GimpPreview * preview, gdouble new_scale)
++gimp_preview_recompute_sizes (RefocusPreview * preview, gdouble new_scale)
+ {
+
+ /* The center of the preview in image coordinates.
+@@ -765,7 +765,7 @@
+ }
+
+ void
+-gimp_preview_generate_update_event (GimpPreview * preview)
++gimp_preview_generate_update_event (RefocusPreview * preview)
+ /* Signal the user that the preview must be updated */
+ {
+ const gdouble scale = preview->scale;
+@@ -783,7 +783,7 @@
+ 0,
+ preview->drawable->height - image_y);
+
+- GimpPreviewEvent preview_event;
++ RefocusPreviewEvent preview_event;
+
+ preview_event.event_id = PREVIEW_DATA (preview)->current_event_id;
+ preview_event.scale = preview->scale;
+@@ -814,7 +814,7 @@
+ * to step through source and destination!
+ */
+ static void
+-gimp_preview_update_preview (GimpPreview * preview)
++gimp_preview_update_preview (RefocusPreview * preview)
+ {
+ GimpPixelRgn region;
+ guchar *image_data = NULL;
+@@ -1012,7 +1012,7 @@
+
+
+ void
+-gimp_preview_force_redraw (GimpPreview * preview)
++gimp_preview_force_redraw (RefocusPreview * preview)
+ {
+ gtk_widget_queue_draw (GTK_WIDGET (PREVIEW_DATA (preview)->image));
+ }
+@@ -1022,7 +1022,7 @@
+ gboolean
+ gimp_preview_update_preview_idle_fun (gpointer data)
+ {
+- GimpPreview *preview = GIMP_PREVIEW (data);
++ RefocusPreview *preview = GIMP_PREVIEW (data);
+ gint event_id = PREVIEW_DATA (preview)->current_event_id;
+
+ #ifdef PREVIEW_DEBUG
+@@ -1041,7 +1041,7 @@
+ }
+
+ void
+-gimp_preview_schedule_update (GimpPreview * preview)
++gimp_preview_schedule_update (RefocusPreview * preview)
+ {
+ PREVIEW_DATA (preview)->current_event_id++;
+
+@@ -1082,7 +1082,7 @@
+ }
+
+ void
+-gimp_preview_image_set_size (GimpPreview * preview, gint width, gint height)
++gimp_preview_image_set_size (RefocusPreview * preview, gint width, gint height)
+ {
+ const gint real_width = MIN (preview->max_width, width);
+ const gint real_height = MIN (preview->max_height, height);
+@@ -1120,8 +1120,8 @@
+
+ /**
+ * gimp_preview_draw_row:
+- * @preview: the #GimpPreview
+- * @event_id: event_id that was sent with the #GimpPreviewEvent.
++ * @preview: the #RefocusPreview
++ * @event_id: event_id that was sent with the #RefocusPreviewEvent.
+ * @type: the format of the data (e.g. %GIMP_RGBA_IMAGE).
+ * @row:the relative number of the row within the preview.
+ * The top row of the preview is number 0.
+@@ -1137,7 +1137,7 @@
+ * with the same event-id will be ignored by the preview.
+ **/
+ gboolean
+-gimp_preview_draw_row (GimpPreview * preview, const gint event_id,
++gimp_preview_draw_row (RefocusPreview * preview, const gint event_id,
+ GimpImageType type, gint row,
+ const guchar * const data)
+ {
+@@ -1247,8 +1247,8 @@
+
+ /**
+ * gimp_preview_draw_unscaled_row:
+- * @preview: the #GimpPreview
+- * @event_id: event_id that was sent with the #GimpPreviewEvent.
++ * @preview: the #RefocusPreview
++ * @event_id: event_id that was sent with the #RefocusPreviewEvent.
+ * @type: the format of the data (e.g. %GIMP_RGBA_IMAGE).
+ * @row:row is the relative position of the row w.r.t. preview_event->image_y.
+ * The top row has number 0.
+@@ -1267,7 +1267,7 @@
+ * with the same event-id will be ignored by the preview.
+ **/
+ gboolean
+-gimp_preview_draw_unscaled_row (GimpPreview * preview, const gint event_id,
++gimp_preview_draw_unscaled_row (RefocusPreview * preview, const gint event_id,
+ GimpImageType type, const gint row,
+ const guchar * const data)
+ {
+@@ -1445,8 +1445,8 @@
+
+ /**
+ * gimp_preview_progress_set_fraction:
+- * @preview: the #GimpPreview.
+- * @event_id: event_id that was sent with the #GimpPreviewEvent.
++ * @preview: the #RefocusPreview.
++ * @event_id: event_id that was sent with the #RefocusPreviewEvent.
+ * @fraction: the fraction completed.
+ *
+ * Set the progress bar of the preview to @fraction completed.
+@@ -1456,7 +1456,7 @@
+ * with the same event-id will be ignored by the preview.
+ **/
+ gboolean
+-gimp_preview_progress_set_fraction (GimpPreview * preview,
++gimp_preview_progress_set_fraction (RefocusPreview * preview,
+ const gint event_id, double fraction)
+ {
+ const gboolean return_status =
+diff -ur src/gimppreview.h src/gimppreview.h
+--- src/gimppreview.h 2003-01-30 13:30:18.000000000 -0800
++++ src/gimppreview.h 2008-03-17 17:16:29.000000000 -0700
+@@ -33,24 +33,24 @@
+ #define PREVIEW_FIXED_SIZE 0
+ #define PREVIEW_DEFAULT_SIZE -1
+ #define GIMP_TYPE_PREVIEW (gimp_preview_get_type ())
+-#define GIMP_PREVIEW(obj) (GTK_CHECK_CAST ((obj), GIMP_TYPE_PREVIEW, GimpPreview))
+-#define GIMP_PREVIEW_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), GIMP_TYPE_PREVIEW, GimpPreviewClass))
++#define GIMP_PREVIEW(obj) (GTK_CHECK_CAST ((obj), GIMP_TYPE_PREVIEW, RefocusPreview))
++#define GIMP_PREVIEW_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), GIMP_TYPE_PREVIEW, RefocusPreviewClass))
+ #define GIMP_IS_PREVIEW(obj) (GTK_CHECK_TYPE ((obj), GIMP_TYPE_PREVIEW))
+ #define GIMP_IS_PREVIEW_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), GIMP_TYPE_PREVIEW))
+-typedef struct _GimpPreview GimpPreview;
+-typedef struct _GimpPreviewClass GimpPreviewClass;
+-typedef struct _GimpPreviewEvent GimpPreviewEvent;
++typedef struct _RefocusPreview RefocusPreview;
++typedef struct _RefocusPreviewClass RefocusPreviewClass;
++typedef struct _RefocusPreviewEvent RefocusPreviewEvent;
+
+-struct _GimpPreviewClass
++struct _RefocusPreviewClass
+ {
+ GtkContainerClass parent_class;
+
+- void (*update_preview) (GimpPreview * preview, GimpPreviewEvent * event);
+- void (*preview_changed) (GimpPreview * preview);
++ void (*update_preview) (RefocusPreview * preview, RefocusPreviewEvent * event);
++ void (*preview_changed) (RefocusPreview * preview);
+ };
+
+
+-struct _GimpPreview
++struct _RefocusPreview
+ {
+ GtkContainer parent;
+
+@@ -75,13 +75,13 @@
+ };
+
+ /**
+- * GimpPreviewEvent:
++ * RefocusPreviewEvent:
+ * @event_id: Id of this event. This is needed for gimp_preview_draw_row,
+ * gimp_preview_draw_unscaled_row and gimp_preview_progress_set_fraction.
+ * @scale: Current scale of the preview.
+ *
+ **/
+-struct _GimpPreviewEvent
++struct _RefocusPreviewEvent
+ {
+ gint event_id; /* Id of this event */
+ gdouble scale; /* Scale of preview */
+@@ -113,20 +113,20 @@
+ gint preview_size,
+ gdouble scale_amount,
+ gint allow_scale);
+-void gimp_preview_update (GimpPreview * preview);
++void gimp_preview_update (RefocusPreview * preview);
+
+-gboolean gimp_preview_draw_row (GimpPreview * preview, const gint event_id,
++gboolean gimp_preview_draw_row (RefocusPreview * preview, const gint event_id,
+ GimpImageType type, const gint row,
+ const guchar * const data);
+
+-gboolean gimp_preview_draw_unscaled_row (GimpPreview * preview,
++gboolean gimp_preview_draw_unscaled_row (RefocusPreview * preview,
+ const gint event_id,
+ GimpImageType type, const gint row,
+ const guchar * const data);
+
+-void gimp_preview_force_redraw (GimpPreview * preview);
++void gimp_preview_force_redraw (RefocusPreview * preview);
+
+-gboolean gimp_preview_progress_set_fraction (GimpPreview * preview,
++gboolean gimp_preview_progress_set_fraction (RefocusPreview * preview,
+ const gint event_id,
+ double fraction);
+
+diff -ur src/refocus.c src/refocus.c
+--- src/refocus.c 2008-03-17 17:20:49.000000000 -0700
++++ src/refocus.c 2008-03-17 17:18:48.000000000 -0700
+@@ -25,6 +25,7 @@
+ #include <time.h>
+ #include <string.h>
+ #include <libgimp/gimp.h>
++#include <libgimp/gimpcompat.h>
+ #include <gtk/gtk.h>
+ #include <sys/types.h>
+ #include <signal.h>
+@@ -372,7 +373,7 @@
+ }
+
+ static void
+-preview_callback (GtkWidget * widget, GimpPreviewEvent * event, gpointer data)
++preview_callback (GtkWidget * widget, RefocusPreviewEvent * event, gpointer data)
+ {
+ TileSource source;
+ TileSink sink;
diff --git a/extra/gimp-refocus/refocus-mirror-fix.patch b/extra/gimp-refocus/refocus-mirror-fix.patch
new file mode 100644
index 000000000..af79dd893
--- /dev/null
+++ b/extra/gimp-refocus/refocus-mirror-fix.patch
@@ -0,0 +1,54 @@
+Index: src/tilebuf.c
+===================================================================
+RCS file: /cvsroot/refocus/refocus/src/tilebuf.c,v
+retrieving revision 1.1.1.1
+diff -u -u -r1.1.1.1 tilebuf.c
+--- src/tilebuf.c 30 Jan 2003 21:30:19 -0000 1.1.1.1
++++ src/tilebuf.c 6 Apr 2004 20:26:56 -0000
+@@ -140,7 +140,10 @@
+
+ for (x = x_lo - 1; x >= buf->real_x; x--)
+ {
+- copy_col (buf, 2 * x_lo - x, y_start, y_end - y_start, x);
++ gint sx = 2 * x_lo - x;
++ copy_col (buf,
++ sx<=buf->real_x+buf->real_width-1?sx:buf->real_x+buf->real_width-1,
++ y_start, y_end - y_start, x);
+ };
+ }
+ break;
+@@ -171,7 +174,9 @@
+
+ for (x = x_hi; x < buf->real_x + buf->real_width; x++)
+ {
+- copy_col (buf, 2 * (x_hi - 1) - x, y_start, y_end - y_start, x);
++ gint sx = 2 * (x_hi - 1) - x;
++ copy_col (buf, sx>=buf->real_x?sx:buf->real_x,
++ y_start, y_end - y_start, x);
+ };
+ }
+ break;
+@@ -200,7 +205,10 @@
+
+ for (y = y_lo - 1; y >= buf->real_y; y--)
+ {
+- copy_row (buf, buf->real_x, 2 * y_lo - y, buf->real_width, y);
++ gint sy = 2 * y_lo - y;
++ copy_row (buf, buf->real_x,
++ sy<=buf->real_y+buf->real_height-1?sy:buf->real_y+buf->real_height-1,
++ buf->real_width, y);
+ };
+ }
+ break;
+@@ -230,8 +238,9 @@
+
+ for (y = y_hi; y < buf->real_y + buf->real_height; y++)
+ {
+- copy_row (buf, buf->real_x, 2 * (y_hi - 1) - y, buf->real_width,
+- y);
++ gint sy = 2 * (y_hi - 1) - y;
++ copy_row (buf, buf->real_x, sy>=buf->real_y?sy:buf->real_y,
++ buf->real_width, y);
+ };
+ }
+ break;
diff --git a/extra/gimp-ufraw/PKGBUILD b/extra/gimp-ufraw/PKGBUILD
new file mode 100644
index 000000000..98a22bbc8
--- /dev/null
+++ b/extra/gimp-ufraw/PKGBUILD
@@ -0,0 +1,34 @@
+# $Id: PKGBUILD 110928 2011-02-23 07:43:56Z eric $
+# Maintainer: Tobias Kieslich <tobias@archlinux.org>
+
+pkgname=gimp-ufraw
+pkgver=0.18
+pkgrel=1
+pkgdesc="Standalone or gimp plugin converter for raw files"
+url="http://ufraw.sourceforge.net/"
+arch=('i686' 'x86_64')
+license=('GPL2')
+depends=('gtkimageview' 'exiv2')
+makedepends=('gimp' 'cinepaint' 'pkg-config')
+optdepends=('gimp: to use the gimp import plugin for raw images'
+ 'cinepaint: to use the cinepaint import plugin for raw images')
+source=(http://downloads.sourceforge.net/ufraw/ufraw-${pkgver}.tar.gz)
+md5sums=('454f40a402928998a82e2645d9265d96')
+sha1sums=('41c9ad7aa7f1cbb63a6b0b330b3599b18a7e8cd2')
+
+build() {
+ cd "${srcdir}/ufraw-${pkgver}"
+
+ ./configure --prefix=/usr \
+ --enable-extras \
+ --enable-mime \
+ --enable-openmp
+ sed -i "s/-ffast-math -fomit-frame-pointer -W -Wall -O3/${CFLAGS}/" Makefile
+ make
+}
+
+package() {
+ cd "${srcdir}/ufraw-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+ rm -f "${pkgdir}/usr/bin/dcraw"
+}
diff --git a/extra/gimp/PKGBUILD b/extra/gimp/PKGBUILD
new file mode 100644
index 000000000..970897b33
--- /dev/null
+++ b/extra/gimp/PKGBUILD
@@ -0,0 +1,46 @@
+# $Id: PKGBUILD 109732 2011-02-12 08:33:51Z eric $
+# Maintainer: tobias <tobias@archlinux.org>
+
+pkgname=gimp
+pkgver=2.6.11
+pkgrel=3
+pkgdesc="GNU Image Manipulation Program"
+arch=('i686' 'x86_64')
+url="http://www.gimp.org/"
+license=('GPL')
+depends=('gtk2' 'lcms' 'libxpm' 'libwmf' 'libxmu' 'librsvg' 'libmng' 'dbus-glib' \
+ 'libexif' 'pygtk' 'desktop-file-utils' 'gegl')
+makedepends=('gutenprint' 'intltool' 'libwebkit' 'gnome-python' 'poppler-glib' \
+ 'pkg-config' 'alsa-lib' 'iso-codes')
+optdepends=('gutenprint: for sophisticated printing only as gimp has built-in cups print support'
+ 'libwebkit: for the help browser'
+ 'poppler-glib: for pdf support'
+ 'hal: for Linux input event controller module'
+ 'alsa-lib: for MIDI event controller module')
+options=('!libtool' '!makeflags')
+conflicts=('gimp-devel')
+install=gimp.install
+source=(ftp://ftp.gimp.org/pub/gimp/v${pkgver%.*}/${pkgname}-${pkgver}.tar.bz2 linux.gpl)
+md5sums=('bb2939fe13e54fc7255cef5d097bb5dd' 'bb27bc214261d36484093e857f015f38')
+sha1sums=('2f9d596e727bdbf304fa78257c1731d9faf3934c' '110ce9798173b19a662d086ed7b882b4729f06cf')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --enable-mp --enable-gimp-console --enable-gimp-remote \
+ --enable-python --with-gif-compression=lzw \
+ --without-aa
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install-strip
+ sed -i 's|#!/usr/bin/env python|#!/usr/bin/env python2|' "${pkgdir}"/usr/lib/gimp/2.0/plug-ins/*.py
+ install -D -m644 "${srcdir}/linux.gpl" "${pkgdir}/usr/share/gimp/2.0/palettes/Linux.gpl"
+
+ rm "${pkgdir}/usr/share/man/man1/gimp-console.1"
+ ln -s gimp-console-${pkgver%.*}.1.gz "${pkgdir}/usr/share/man/man1/gimp-console.1.gz"
+ ln -s gimptool-2.0 "${pkgdir}/usr/bin/gimptool"
+ ln -sf gimptool-2.0.1.gz "${pkgdir}/usr/share/man/man1/gimptool.1.gz"
+}
diff --git a/extra/gimp/gimp.install b/extra/gimp/gimp.install
new file mode 100644
index 000000000..c317fbaca
--- /dev/null
+++ b/extra/gimp/gimp.install
@@ -0,0 +1,12 @@
+post_install() {
+ update-desktop-database -q
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/extra/gimp/linux.gpl b/extra/gimp/linux.gpl
new file mode 100644
index 000000000..0a73d8979
--- /dev/null
+++ b/extra/gimp/linux.gpl
@@ -0,0 +1,19 @@
+GIMP Palette
+Name: linux
+#
+ 0 0 0
+ 0 0 170
+ 0 170 0
+ 0 170 170
+170 0 0
+170 0 170
+170 85 0
+170 170 170
+ 85 85 85
+ 85 85 255
+ 85 255 85
+ 85 255 255
+255 85 85
+255 85 255
+255 255 85
+255 255 255
diff --git a/extra/git/ChangeLog b/extra/git/ChangeLog
new file mode 100644
index 000000000..8ed0884fe
--- /dev/null
+++ b/extra/git/ChangeLog
@@ -0,0 +1,36 @@
+Simple version bumps are ommitted from the following ChangeLog.
+
+2010-06-29 Dan McGee <dan@archlinux.org>
+ Version 1.7.1.1-1
+ * Add emacs completion files (FS#17968)
+ * Add git-daemon RC scripts (FS#19291)
+
+2009-06-05 Dan McGee <dan@archlinux.org>
+ Version 1.6.3.2-1
+ * Remove gitweb from /usr/share; it needs customization to be helpful
+ * Add NO_CROSS_DIRECTORY_HARDLINKS option to build (FS#13683)
+
+2008-09-14 Dan McGee <dan@archlinux.org>
+ Version 1.6.0.2-1
+ * Moved optional depends from install file to optdepends array
+
+2008-06-15 Dan McGee <dan@archlinux.org>
+ Version 1.5.6-1
+ * Removed 'cpio' dependency, clone is now a builtin and no longer needs it
+
+2008-02-02 Dan McGee <dan@archlinux.org>
+ Version 1.5.4-1
+ * Upstream version 1.5.4
+ * Enable pthreads support in pack-objects. To use, set the pack.threads
+ git config option. Read manpages of pack-objects and config for more
+ details.
+ * Changelog added (with entries going back a bit).
+
+2008-01-28 Kevin Piche <kevin@archlinux.org>
+ Version 1.5.3.7-2
+ * Updated for new perl policy (vendor dirs)
+ * Change license to GPL2
+
+2007-11-01 Eric Belanger <eric@archlinux.org>
+ Version 1.5.3.5-2
+ * Fix Perl module location
diff --git a/extra/git/PKGBUILD b/extra/git/PKGBUILD
new file mode 100644
index 000000000..5438fad7d
--- /dev/null
+++ b/extra/git/PKGBUILD
@@ -0,0 +1,79 @@
+# $Id: PKGBUILD 117957 2011-04-05 00:05:54Z dan $
+# Maintainer: Dan McGee <dan@archlinux.org>
+
+pkgname=git
+pkgver=1.7.4.3
+pkgrel=1
+pkgdesc="the fast distributed version control system"
+arch=(i686 x86_64)
+url="http://git-scm.com/"
+license=('GPL2')
+depends=('curl' 'expat>=2.0' 'perl-error' 'perl>=5.12.2')
+makedepends=('python2')
+optdepends=('tk: gitk and git gui'
+ 'perl-libwww: git svn'
+ 'perl-term-readkey: git svn'
+ 'perl-net-smtp-ssl: git send-email TLS support'
+ 'python2: various helper scripts'
+ 'subversion: git svn'
+ 'cvsps: git cvsimport')
+replaces=('git-core')
+provides=('git-core')
+backup=('etc/conf.d/git-daemon.conf')
+source=("http://kernel.org/pub/software/scm/git/${pkgname}-${pkgver}.tar.bz2" \
+ "http://kernel.org/pub/software/scm/git/git-manpages-${pkgver}.tar.bz2"
+ git-daemon
+ git-daemon.conf)
+changelog=ChangeLog
+
+build() {
+ export PYTHON_PATH='/usr/bin/python2'
+ cd "$srcdir/$pkgname-$pkgver"
+ make prefix=/usr gitexecdir=/usr/lib/git-core
+}
+
+package() {
+ export PYTHON_PATH='/usr/bin/python2'
+ cd "$srcdir/$pkgname-$pkgver"
+ make prefix=/usr gitexecdir=/usr/lib/git-core \
+ NO_CROSS_DIRECTORY_HARDLINKS=1 \
+ INSTALLDIRS=vendor DESTDIR=${pkgdir} install
+
+ # bash completion
+ mkdir -p $pkgdir/etc/bash_completion.d/
+ install -m644 ./contrib/completion/git-completion.bash $pkgdir/etc/bash_completion.d/git
+ # more contrib stuff
+ cp -a ./contrib $pkgdir/usr/share/git/
+ # scripts are for python 2.x
+ sed -i 's|#![ ]*/usr/bin/env python|#!/usr/bin/env python2|' \
+ $(find "$pkgdir" -name '*.py') \
+ "$pkgdir"/usr/share/git/{fast-import/git-p4,gitview/gitview}
+
+ # emacs interface
+ mkdir -p $pkgdir/usr/share/emacs/site-lisp
+ mv $pkgdir/usr/share/git/emacs $pkgdir/usr/share/emacs/site-lisp/git
+ rm $pkgdir/usr/share/emacs/site-lisp/git/.gitignore
+
+ # how 'bout some manpages?
+ for mansect in man1 man5 man7; do
+ for manpage in $srcdir/$mansect/*; do
+ install -D -m644 $manpage $pkgdir/usr/share/man/$mansect/$(basename $manpage)
+ done
+ done
+
+ # remove perllocal.pod, .packlist, and empty directories.
+ rm -rf $pkgdir/usr/lib/perl5
+
+ # git daemon script
+ install -D -m755 $srcdir/git-daemon $pkgdir/etc/rc.d/git-daemon
+ install -D -m644 $srcdir/git-daemon.conf $pkgdir/etc/conf.d/git-daemon.conf
+}
+
+md5sums=('da6c8f4967393342a4397b955db72cb1'
+ '0d29c91eb213391b4ecb1419568555ef'
+ '8e2648910fd5dd4f1c41d3c7fa9e9156'
+ '2e42bf97779a1c6411d89043334c9e78')
+sha256sums=('44b3ebc87d83b34468718fb6fa424420877e1f66c190389d693d090662a3556d'
+ '3a43b28fde68fceba479e2374ed4df989233ec92973c5c49130aca97d4dd03bb'
+ '2e0a50bdaf8f387a499895e1c204bff78244eaa72b78187c8a84ef40c0b82598'
+ 'e8bfe29d8393d2b87517c4dd56ea834b213aa00bf3d7fcde4ead3457cadbbc68')
diff --git a/extra/git/git-daemon b/extra/git/git-daemon
new file mode 100644
index 000000000..21ba73ed5
--- /dev/null
+++ b/extra/git/git-daemon
@@ -0,0 +1,70 @@
+#!/bin/bash
+
+daemon_bin="/usr/lib/git-core/git-daemon"
+daemon_name=$(basename $daemon_bin)
+PIDF="/var/run/$daemon_name.pid"
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+. /etc/conf.d/$daemon_name.conf
+
+get_pid() {
+ pidof -o %PPID $daemon_name
+}
+
+case "$1" in
+ start)
+ stat_busy "Starting $daemon_name daemon"
+
+ PID=$(get_pid)
+ if [ -z "$PID" ]; then
+ [ -f $PIDF ] && rm -f $PIDF
+ # RUN
+ $daemon_bin --pid-file=$PIDF $GIT_DAEMON_ARGS
+ #
+ if [ $? -gt 0 ]; then
+ stat_fail
+ exit 1
+ else
+ echo $(get_pid) > $PIDF
+ add_daemon $daemon_name
+ stat_done
+ fi
+ else
+ stat_fail
+ exit 1
+ fi
+ ;;
+
+ stop)
+ stat_busy "Stopping $daemon_name daemon"
+ PID=$(get_pid)
+ # KILL
+ [ ! -z "$PID" ] && kill $PID &> /dev/null
+ #
+ if [ $? -gt 0 ]; then
+ stat_fail
+ exit 1
+ else
+ rm -f $PIDF &> /dev/null
+ rm_daemon $daemon_name
+ stat_done
+ fi
+ ;;
+
+ restart)
+ $0 stop
+ sleep 3
+ $0 start
+ ;;
+
+ status)
+ stat_busy "Checking $daemon_name status";
+ ck_status $daemon_name
+ ;;
+
+ *)
+ echo "usage: $0 {start|stop|restart|status}"
+esac
+
+exit 0
diff --git a/extra/git/git-daemon.conf b/extra/git/git-daemon.conf
new file mode 100644
index 000000000..3f9a12060
--- /dev/null
+++ b/extra/git/git-daemon.conf
@@ -0,0 +1,5 @@
+# path to git repositories served
+GIT_REPO="/srv/git/"
+# see `man git-daemon` for all available options
+# $GIT_REPO will be present twice in most configs
+GIT_DAEMON_ARGS="--detach --syslog --verbose --base-path=$GIT_REPO $GIT_REPO"
diff --git a/extra/gksu/PKGBUILD b/extra/gksu/PKGBUILD
new file mode 100644
index 000000000..d48fdb3a7
--- /dev/null
+++ b/extra/gksu/PKGBUILD
@@ -0,0 +1,37 @@
+# $Id: PKGBUILD 109132 2011-02-06 11:40:19Z andyrtr $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Eduardo Lopes (eduol@gmx.net)
+
+pkgname=gksu
+pkgver=2.0.2
+pkgrel=3
+pkgdesc="A graphical frontend for su"
+arch=('i686' 'x86_64')
+url="http://www.nongnu.org/gksu/index.html"
+license=('GPL')
+depends=('libgksu>=2.0.12' 'xorg-xauth')
+makedepends=('gtk-doc' 'nautilus>=2.26.0' 'intltool')
+optdepends=('nautilus')
+options=('!libtool')
+source=(http://people.debian.org/~kov/gksu/${pkgname}-${pkgver}.tar.gz)
+md5sums=('cacbcac3fc272dce01c6ea38354489e2')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ sed -i -e 's|/usr/bin/x-terminal-emulator|-l gnome-terminal|g' gksu.desktop
+ echo "TryExec=gnome-terminal" >> gksu.desktop
+# libtoolize --force
+# aclocal
+# autoconf
+# automake
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --disable-static
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/glade-perl/PKGBUILD b/extra/glade-perl/PKGBUILD
new file mode 100644
index 000000000..aa8e6ed13
--- /dev/null
+++ b/extra/glade-perl/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: PKGBUILD 104918 2011-01-05 15:15:03Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=glade-perl
+_realname=Gtk2-GladeXML
+pkgver=1.007
+pkgrel=3
+pkgdesc="Gtk2-GladeXML perl bindings for glade 2.x"
+arch=(i686 x86_64)
+license=('LGPL')
+url="http://gtk2-perl.sourceforge.net/"
+makedepends=('perl-extutils-pkgconfig' 'perl-extutils-depends')
+depends=('libglade' 'gtk2-perl' 'perl')
+options=('!emptydirs')
+source=(http://downloads.sourceforge.net/sourceforge/gtk2-perl/${_realname}-${pkgver}.tar.gz)
+md5sums=('e6ca234e2a9f0221263acd2a593c583b')
+
+build() {
+ cd "${srcdir}/${_realname}-${pkgver}"
+ perl Makefile.PL INSTALLDIRS=vendor
+ make
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/glade/PKGBUILD b/extra/glade/PKGBUILD
new file mode 100644
index 000000000..f5f96e94b
--- /dev/null
+++ b/extra/glade/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 44620 2009-07-02 21:38:57Z jgc $
+# Maintainer: Douglas Soares de Andrade <douglas@archlinux.org>
+
+pkgname=glade
+pkgver=3.6.7
+pkgrel=1
+pkgdesc="user interface builder for GTK+ and GNOME."
+arch=(i686 x86_64)
+license=('GPL' 'LGPL')
+depends=('gtk2>=2.16.2' 'libxml2>=2.6.32' 'desktop-file-utils')
+makedepends=('intltool' 'pkgconfig' 'python>=2.6' 'libgnomeui>=2.24.1' 'gtk-doc')
+optdepends=('libgnomeui: GNOME UI widgets'
+ 'python: Python widgets support')
+options=('!libtool')
+url="http://glade.gnome.org/"
+install=glade.install
+source=(http://ftp.gnome.org/pub/GNOME/sources/glade3/3.6/glade3-${pkgver}.tar.bz2)
+md5sums=('0fbe06e4babb2adeaf9725577ff43395')
+
+build() {
+ cd "${srcdir}/glade3-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-static || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/glade/glade.install b/extra/glade/glade.install
new file mode 100644
index 000000000..bce670aff
--- /dev/null
+++ b/extra/glade/glade.install
@@ -0,0 +1,12 @@
+post_install() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+ update-desktop-database -q
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/extra/glew/PKGBUILD b/extra/glew/PKGBUILD
new file mode 100644
index 000000000..baee8c467
--- /dev/null
+++ b/extra/glew/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 108690 2011-02-02 16:13:23Z stephane $
+# Maintainer: Stéphane Gaudreault <stephane@archlinux.org>
+# Contributor: SleepyDog
+
+pkgname=glew
+pkgver=1.5.8
+pkgrel=1
+pkgdesc="The OpenGL Extension Wrangler Library"
+arch=('i686' 'x86_64')
+url="http://glew.sourceforge.net"
+license=('BSD' 'MIT' 'GPL')
+depends=('libxmu' 'libxi' 'mesa')
+source=(http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tgz)
+sha1sums=('450946935faa20ac4950cb42ff025be2c1f7c22e')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ sed -i 's|lib64|lib|' config/Makefile.linux
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make GLEW_DEST="${pkgdir}/usr" install
+ install -D -m644 LICENSE.txt "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+ chmod 0755 "${pkgdir}/usr/lib/libGLEW.so.${pkgver}"
+}
diff --git a/extra/glhack/ChangeLog b/extra/glhack/ChangeLog
new file mode 100644
index 000000000..cc13a2560
--- /dev/null
+++ b/extra/glhack/ChangeLog
@@ -0,0 +1,12 @@
+2010-01-18 Eric Belanger <eric@archlinux.org>
+
+ * glhack 1.2-4
+ * Rebuilt for libpng 1.4 and libjpeg 8
+ * Fixed man page conflict with nethack (close FS#17226)
+
+2009-06-29 Eric Belanger <eric@archlinux.org>
+
+ * glhack 1.2-3
+ * Moved binaries to /usr/bin (close FS#15303)
+ * Moved saved games to /var
+ * Added ChangeLog
diff --git a/extra/glhack/PKGBUILD b/extra/glhack/PKGBUILD
new file mode 100644
index 000000000..27ef966e4
--- /dev/null
+++ b/extra/glhack/PKGBUILD
@@ -0,0 +1,50 @@
+# $Id: PKGBUILD 63897 2010-01-19 01:01:11Z eric $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+# Contributor : Markus Meissner <markus@meissna.de>
+
+pkgname=glhack
+pkgver=1.2
+pkgrel=4
+pkgdesc="A port of Nethack, a single player dungeon exploration game in 2D"
+arch=('i686' 'x86_64')
+url="http://glhack.sourceforge.net/"
+license=('custom')
+depends=('sdl' 'libpng' 'mesa')
+options=('!makeflags')
+install=glhack.install
+source=(http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.gz)
+md5sums=('b4c68e3ab689610ca638b7660c1b05bd')
+sha1sums=('7dc46e6bd4a3c2ec10ab4d314acfbb30cefc6eae')
+
+build(){
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ sed -i 's|/usr/lib/games|/usr/share|' include/config.h || return 1
+ sed -i 's|/var/lib/games/glhack|/var/games/glhack|' include/unixconf.h || return 1
+ sed -i -e 's|PREFIX = /usr|PREFIX = $(DESTDIR)/usr|' Makefile || return 1
+ sed -i -e 's|VARDIR = /var/lib/games/glhack|VARDIR = $(DESTDIR)/var/games/glhack|' Makefile || return 1
+ sed -i -e 's|/usr/man/man6|$(DESTDIR)/usr/share/man/man6|' doc/Makefile || return 1
+ sed -i -e 's|GAMEDIR = $(PREFIX)/lib/games/$(GAME)|GAMEDIR = $(PREFIX)/share/$(GAME)|' Makefile || return 1
+
+ make || return 1
+ install -d "${pkgdir}"/usr/share/man/man{5,6}
+ make DESTDIR="$pkgdir" install || return 1
+ install -D -m644 dat/license "${pkgdir}/usr/share/licenses/${pkgname}/license"
+
+# Renaming man pages which conflicts with nethack
+ cd "${pkgdir}/usr/share/man/man6"
+ for manpage in dgn_comp dlb lev_comp nethack recover; do
+ mv $manpage.6 $manpage-glhack.6
+ done
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ mv "${pkgdir}/usr/share/glhack/glhack" "${pkgdir}/usr/bin/glhack"
+ mv "${pkgdir}/usr/share/glhack/recover_glhack" "${pkgdir}/usr/bin/recover_glhack"
+
+ chown -R root:root "${pkgdir}/usr/share/glhack"
+
+ rm -r "${pkgdir}"/var/games/glhack
+ install -d "${pkgdir}/var/games/glhack/save"
+ chmod -R 775 "${pkgdir}/var/games"
+ chown -R root:games "${pkgdir}/var/games"
+}
diff --git a/extra/glhack/glhack.install b/extra/glhack/glhack.install
new file mode 100644
index 000000000..78e1655bc
--- /dev/null
+++ b/extra/glhack/glhack.install
@@ -0,0 +1,24 @@
+post_install() {
+ touch var/games/glhack/{record,perm,logfile}
+ chown root:games var/games/glhack/{record,perm,logfile}
+ chmod 664 var/games/glhack/{record,perm,logfile}
+}
+
+pre_upgrade() {
+ install -d -m775 var/games/glhack
+ chown root:games var/games/glhack
+ [ -e usr/share/glhack/record ] && cp usr/share/glhack/record var/games/glhack
+ [ -e usr/share/glhack/perm ] && cp usr/share/glhack/perm var/games/glhack
+ [ -e usr/share/glhack/logfile ] && cp usr/share/glhack/logfile var/games/glhack
+ if [ -d usr/share/glhack/save ]; then
+ chmod g-s usr/share/glhack/save
+ mv usr/share/glhack/save var/games/glhack
+ else
+ install -d -m775 var/games/glhack/save
+ fi
+ chown root:games var/games/glhack/save
+}
+
+post_upgrade() {
+ post_install
+}
diff --git a/extra/glib-perl/PKGBUILD b/extra/glib-perl/PKGBUILD
new file mode 100644
index 000000000..4b57e3065
--- /dev/null
+++ b/extra/glib-perl/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 104386 2011-01-02 04:08:45Z kevin $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Sarah Hay <sarah@archlinux.org>
+
+pkgname=glib-perl
+_realname=Glib
+pkgver=1.223
+pkgrel=2
+pkgdesc="Perl wrappers for glib 2.x, including GObject"
+arch=(i686 x86_64)
+license=('LGPL')
+url="http://gtk2-perl.sourceforge.net/"
+options=('!emptydirs')
+depends=('glib2>=2.24.1' 'perl>=5.12.1')
+makedepends=('perl-extutils-depends>=0.302' 'perl-extutils-pkgconfig>=1.12')
+source=(http://downloads.sourceforge.net/sourceforge/gtk2-perl/${_realname}-${pkgver}.tar.gz)
+md5sums=('cfdeaa8c95448f86c30b505e4701abf1')
+
+build() {
+ cd "${srcdir}/${_realname}-${pkgver}"
+ perl Makefile.PL INSTALLDIRS=vendor
+ make
+ make test
+}
+
+package() {
+ cd "${srcdir}/${_realname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/glib/ChangeLog b/extra/glib/ChangeLog
new file mode 100644
index 000000000..a809a01d1
--- /dev/null
+++ b/extra/glib/ChangeLog
@@ -0,0 +1,11 @@
+2009-10-14 Eric Belanger <eric@archlinux.org>
+
+ * glib 1.2.10-8.1
+ * Fixed configure options for x86_64 (close FS#16658)
+
+2009-08-01 Eric Belanger <eric@archlinux.org>
+
+ * glib 1.2.10-8
+ * FHS man pages
+ * Added info pages
+ * Added ChangeLog
diff --git a/extra/glib/PKGBUILD b/extra/glib/PKGBUILD
new file mode 100644
index 000000000..48945164c
--- /dev/null
+++ b/extra/glib/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id: PKGBUILD 55861 2009-10-15 02:42:14Z eric $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+# Contributor: dorphell <dorphell@archlinux.org>
+
+pkgname=glib
+pkgver=1.2.10
+pkgrel=8.1
+pkgdesc="Common C routines used by Gtk+ and other libs"
+arch=('i686' 'x86_64')
+url="http://www.gtk.org/"
+license=('LGPL')
+depends=('glibc' 'texinfo')
+options=('!libtool')
+install=glib.install
+source=(ftp://ftp.gtk.org/pub/gtk/v1.2/${pkgname}-${pkgver}.tar.gz \
+ gcc340.patch aclocal-fixes.patch)
+md5sums=('6fe30dad87c77b91b632def29dd69ef9' '877b3330e822a4be69a0f8a8c268cfd7'\
+ 'e52c4b88427b9785bb8049dbdc9ff6fb')
+sha1sums=('e5a9361c594608d152d5d9650154c2e3260b87fa' 'a2cc224a66aeffdcac16ebd9e8af18143cf54918'\
+ 'ae4438cf56c0c9264ee36f6973fb445f9a820be0')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i ../gcc340.patch || return 1
+ patch -Np0 -i ../aclocal-fixes.patch || return 1
+
+ [ "$CARCH" = "x86_64" ] && CONFIGFLAG="--host=x86_64-unknown-linux-gnu --target=x86_64-unknown-linux-gnu"
+ ./configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info $CONFIGFLAG || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/glib/aclocal-fixes.patch b/extra/glib/aclocal-fixes.patch
new file mode 100644
index 000000000..b064074aa
--- /dev/null
+++ b/extra/glib/aclocal-fixes.patch
@@ -0,0 +1,11 @@
+--- glib.m4.orig 2006-03-05 13:13:24.000000000 +0000
++++ glib.m4 2006-03-05 13:13:35.000000000 +0000
+@@ -5,7 +5,7 @@
+ dnl Test for GLIB, and define GLIB_CFLAGS and GLIB_LIBS, if "gmodule" or
+ dnl gthread is specified in MODULES, pass to glib-config
+ dnl
+-AC_DEFUN(AM_PATH_GLIB,
++AC_DEFUN([AM_PATH_GLIB],
+ [dnl
+ dnl Get the cflags and libraries from the glib-config script
+ dnl
diff --git a/extra/glib/gcc340.patch b/extra/glib/gcc340.patch
new file mode 100644
index 000000000..941111ae7
--- /dev/null
+++ b/extra/glib/gcc340.patch
@@ -0,0 +1,15 @@
+diff -Naur glib-1.2.10.orig/glib.h glib-1.2.10/glib.h
+--- glib-1.2.10.orig/glib.h 2001-02-27 04:44:38.000000000 +0100
++++ glib-1.2.10/glib.h 2004-05-27 15:50:32.436527848 +0200
+@@ -271,8 +271,10 @@
+
+ /* Wrap the gcc __PRETTY_FUNCTION__ and __FUNCTION__ variables with
+ * macros, so we can refer to them as strings unconditionally.
++ *
++ * Unfortunately these are _not_ treated as strings anymore in GCC3.4.
+ */
+-#ifdef __GNUC__
++#if defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ < 4)
+ #define G_GNUC_FUNCTION __FUNCTION__
+ #define G_GNUC_PRETTY_FUNCTION __PRETTY_FUNCTION__
+ #else /* !__GNUC__ */
diff --git a/extra/glib/glib.install b/extra/glib/glib.install
new file mode 100644
index 000000000..140fd2fe9
--- /dev/null
+++ b/extra/glib/glib.install
@@ -0,0 +1,20 @@
+infodir=/usr/share/info
+filelist=(glib.info.gz)
+
+post_install() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info --delete $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
diff --git a/extra/glibmm/PKGBUILD b/extra/glibmm/PKGBUILD
new file mode 100644
index 000000000..7c008cb87
--- /dev/null
+++ b/extra/glibmm/PKGBUILD
@@ -0,0 +1,35 @@
+# $Id: PKGBUILD 79559 2010-05-04 13:57:18Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgbase=glibmm
+pkgname=('glibmm' 'glibmm-docs')
+pkgver=2.24.2
+pkgrel=1
+arch=('i686' 'x86_64')
+license=('LGPL')
+makedepends=('glib2>=2.24.1' 'libsigc++2.0>=2.2.5' 'pkgconfig')
+source=(http://ftp.gnome.org/pub/GNOME/sources/${pkgname}/2.24/${pkgname}-${pkgver}.tar.bz2)
+options=('!libtool')
+url="http://gtkmm.sourceforge.net/"
+sha256sums=('d4687c0b27f9c9f955a5306649008a1f8d8935edff916278fb7b65b44292ff7a')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr || return 1
+ make || return 1
+}
+
+package_glibmm() {
+ pkgdesc="Glib-- (glibmm) is a C++ interface for glib"
+ depends=('glib2>=2.24.0' 'libsigc++2.0>=2.2.5')
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ sed -i -e 's/^doc_subdirs/#doc_subdirs/' Makefile
+ make DESTDIR="${pkgdir}" install || return 1
+}
+
+package_glibmm-docs() {
+ pkgdesc="Developer documentation for glibmm"
+ cd "${srcdir}/${pkgbase}-${pkgver}/docs"
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/glpk/PKGBUILD b/extra/glpk/PKGBUILD
new file mode 100644
index 000000000..0ec9479fc
--- /dev/null
+++ b/extra/glpk/PKGBUILD
@@ -0,0 +1,32 @@
+# Maintainer: Ronald van Haren <ronald.archlinux.org>
+# Contributor: bzklrm <bzklrm@gmail.com>
+# Additional contributors Senjin, Xavier, dundee
+
+pkgname=glpk
+pkgver=4.44
+pkgrel=1
+pkgdesc="GNU Linear Programming Kit : solve LP, MIP and other problems."
+arch=('i686' 'x86_64')
+url="http://www.gnu.org/software/glpk/glpk.html"
+license=('GPL')
+depends=('glibc')
+options=('!libtool')
+source=("http://ftp.gnu.org/gnu/glpk/${pkgname}-${pkgver}.tar.gz")
+md5sums=('f2ac7013bc0420d730d052e7ba24bdb1')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ ./configure --prefix=/usr
+
+ if [ "$CARCH" == "x86_64" ]; then
+ make CFLAGS="$CFLAGS -fPIC"
+ else
+ make
+ fi
+}
+
+package(){
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/glsof/ChangeLog b/extra/glsof/ChangeLog
new file mode 100644
index 000000000..e941c8b45
--- /dev/null
+++ b/extra/glsof/ChangeLog
@@ -0,0 +1,6 @@
+2009-03-14 Eric Belanger <eric@archlinux.org>
+
+ * glsof 0.9.16-5
+ * Added license
+ * Added .desktop file
+ * Added ChangeLog
diff --git a/extra/glsof/PKGBUILD b/extra/glsof/PKGBUILD
new file mode 100644
index 000000000..bd8ccc1fa
--- /dev/null
+++ b/extra/glsof/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 30064 2009-03-16 01:17:32Z eric $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+# Contributor: Damir Perisa <damir.perisa@bluewin.ch>
+
+pkgname=glsof
+pkgver=0.9.16
+pkgrel=5
+pkgdesc="A gtk-GUI for lsof (aka GTK-lsof)"
+arch=('i686' 'x86_64')
+url="http://glsof.sourceforge.net/"
+license=('GPL')
+depends=('libxml2' 'gtk2' 'lsof')
+source=(http://download.sourceforge.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.gz glsof.desktop)
+md5sums=('5ad5f2a6908be713753d9826c38e3e2c' '1a6ab5bf5ef44ae31b8b7461b76f62db')
+sha1sums=('80f4596ad09c5ddb463bad299a76ce275c0ecd4d' '647be33bea11fec6ba0bfd59c02034dc64925e52')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr || return 1
+ make || return 1
+ make DESTDIR=${pkgdir} install || return 1
+ install -D -m644 ../glsof.desktop ${pkgdir}/usr/share/applications/glsof.desktop || return 1
+ install -d ${pkgdir}/usr/share/pixmaps
+ ln -s /usr/share/glsof/pixmaps/logo.png ${pkgdir}/usr/share/pixmaps/glsof.png
+}
diff --git a/extra/glsof/glsof.desktop b/extra/glsof/glsof.desktop
new file mode 100644
index 000000000..fb13ffd6d
--- /dev/null
+++ b/extra/glsof/glsof.desktop
@@ -0,0 +1,12 @@
+[Desktop Entry]
+Name=glsof
+Comment=A GUI for lsof
+Comment[pl]=GUI do lsof
+Exec=glsof
+Icon=glsof.png
+StartupNotify=false
+Terminal=false
+Type=Application
+Categories=GTK;System;Monitor;
+Encoding=UTF-8
+# vi: encoding=utf-8
diff --git a/extra/gluezilla/PKGBUILD b/extra/gluezilla/PKGBUILD
new file mode 100644
index 000000000..224068bd6
--- /dev/null
+++ b/extra/gluezilla/PKGBUILD
@@ -0,0 +1,29 @@
+# Maintainer: Daniel Isenmann <daniel@archlinux.org>
+
+pkgname=gluezilla
+pkgver=2.6
+pkgrel=3
+pkgdesc="Web browser implementation (Gecko) for Mono, the free .NET runtime"
+arch=(i686 x86_64)
+license=('LGPL2' 'MPL')
+url="http://www.mono-project.com/"
+depends=('mono' 'xulrunner>=2.0')
+makedepends=('pkgconfig')
+options=('!libtool')
+source=(http://ftp.novell.com/pub/mono/sources/${pkgname}/${pkgname}-${pkgver}.tar.bz2 xulrunner2.0.patch xulrunner2.0_configure.patch)
+md5sums=('bd4eb89747498945227877295fcd36b5'
+ '26ea3af3ef5ce045a13a3f3ee54cf0f6'
+ '06faa671dd791868701d98e610fcbc7e')
+
+build() {
+ cd ${srcdir}/gluezilla-${pkgver}
+ patch -p1 < ${srcdir}/xulrunner2.0.patch || return 1
+ patch -p1 < ${srcdir}/xulrunner2.0_configure.patch || return 1
+
+ rm configure
+ autoconf
+ ./configure --prefix=/usr
+ make || return 1
+ make DESTDIR=${pkgdir} install || return 1
+
+}
diff --git a/extra/gluezilla/configure_xulrunner.patch b/extra/gluezilla/configure_xulrunner.patch
new file mode 100644
index 000000000..6537a2066
--- /dev/null
+++ b/extra/gluezilla/configure_xulrunner.patch
@@ -0,0 +1,11 @@
+--- configure_old 2009-10-01 20:27:13.000000000 +0200
++++ configure 2010-03-25 12:31:10.000000000 +0100
+@@ -19988,7 +19988,7 @@
+
+ { echo "$as_me:$LINENO: checking Mozilla XPCOM > 1.8" >&5
+ echo $ECHO_N "checking Mozilla XPCOM > 1.8... $ECHO_C" >&6; }
+- mozilla_xpcom_pcs="libxul-embedding-unstable"
++ mozilla_xpcom_pcs="libxul-embedding"
+ for pc in $mozilla_xpcom_pcs; do
+ if $PKG_CONFIG --exists $pc; then
+ { echo "$as_me:$LINENO: result: $pc" >&5
diff --git a/extra/gluezilla/xulrunner2.0.patch b/extra/gluezilla/xulrunner2.0.patch
new file mode 100644
index 000000000..913795908
--- /dev/null
+++ b/extra/gluezilla/xulrunner2.0.patch
@@ -0,0 +1,150 @@
+diff --git a/src/BrowserWindow.cpp b/src/BrowserWindow.cpp
+index f260295..10ae7bd 100755
+--- a/src/BrowserWindow.cpp
++++ b/src/BrowserWindow.cpp
+@@ -28,23 +28,6 @@
+ NS_GENERIC_FACTORY_CONSTRUCTOR(SecurityWarningDialogs)
+ NS_GENERIC_FACTORY_CONSTRUCTOR(PromptService)
+
+-static const nsModuleComponentInfo components[] = {
+- {
+- SECURITYWARNINGSDIALOGS_CLASSNAME,
+- SECURITYWARNINGSDIALOGS_CID,
+- NS_SECURITYWARNINGDIALOGS_CONTRACTID,
+- SecurityWarningDialogsConstructor
+- },
+- {
+- PROMPTSERVICE_CLASSNAME,
+- PROMPTSERVICE_CID,
+- NS_PROMPTSERVICE_CONTRACTID,
+- PromptServiceConstructor
+- }
+-
+-};
+-
+-
+ BrowserWindow::BrowserWindow (void)
+ {
+ owner = nsnull;
+@@ -162,17 +145,17 @@ nsresult BrowserWindow::RegisterComponents ()
+ nsCOMPtr<nsIFactory> componentFactory;
+ rv = NS_NewSecurityWarningServiceFactory(getter_AddRefs(componentFactory));
+ if (NS_SUCCEEDED(rv)) {
+- compReg->RegisterFactory(components[0].mCID,
+- components[0].mDescription,
+- components[0].mContractID,
++ compReg->RegisterFactory(kSECURITYWARNINGSDIALOGS_CID,
++ SECURITYWARNINGSDIALOGS_CLASSNAME,
++ NS_SECURITYWARNINGDIALOGS_CONTRACTID,
+ componentFactory);
+ }
+
+ rv = NS_NewPromptServiceFactory(getter_AddRefs(componentFactory), this);
+ if (NS_SUCCEEDED(rv)) {
+- compReg->RegisterFactory(components[1].mCID,
+- components[1].mDescription,
+- components[1].mContractID,
++ compReg->RegisterFactory(kPROMPTSERVICE_CID,
++ PROMPTSERVICE_CLASSNAME,
++ NS_PROMPTSERVICE_CONTRACTID,
+ componentFactory);
+ }
+
+diff --git a/src/Makefile.am b/src/Makefile.am
+index 3b7bce3..cd6ec99 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -26,7 +26,7 @@ libgluezilla_la_SOURCES = \
+ gluezilla.h \
+ FastDelegate.h
+
+-if OLDXUL
++if XUL_2
+ libgluezilla_la_SOURCES += \
+ gluezilla_nsIScriptContext.h \
+ gluezilla_nsIScriptGlobalObject.h
+diff --git a/src/PromptService.h b/src/PromptService.h
+index 04fddb9..174bca4 100644
+--- a/src/PromptService.h
++++ b/src/PromptService.h
+@@ -20,8 +20,9 @@
+ // {77686174-2061-6d20-6920-746F20646F20}
+ #define PROMPTSERVICE_CID \
+ { 0x77686174, 0x2061, 0x6d20, { 0x69, 0x20, 0x74, 0x6F, 0x20, 0x64, 0x6F, 0x20 } }
+-
+-
++
++static NS_DEFINE_CID(kPROMPTSERVICE_CID, PROMPTSERVICE_CID);
++
+ class PromptService : public nsIPromptService
+ {
+ NS_DECL_ISUPPORTS
+diff --git a/src/SecurityWarningsDialogs.h b/src/SecurityWarningsDialogs.h
+index b75f529..ae352ad 100644
+--- a/src/SecurityWarningsDialogs.h
++++ b/src/SecurityWarningsDialogs.h
+@@ -21,8 +21,9 @@
+ // {696E7465-7265-7374-696E-67206C696665}
+ #define SECURITYWARNINGSDIALOGS_CID \
+ { 0x696E7465, 0x7265, 0x7374, { 0x69, 0x6E, 0x67, 0x20, 0x6C, 0x69, 0x66, 0x65 } }
+-
+-
++
++static NS_DEFINE_CID(kSECURITYWARNINGSDIALOGS_CID, SECURITYWARNINGSDIALOGS_CID);
++
+ class SecurityWarningDialogs : public nsISecurityWarningDialogs
+ {
+ public:
+diff --git a/src/interfaces.h b/src/interfaces.h
+index 3a9f9dd..6acebb8 100644
+--- a/src/interfaces.h
++++ b/src/interfaces.h
+@@ -4,7 +4,18 @@
+ #define TO_STRING(x) #x
+
+ //Gecko Embedding API
++#if XUL_VERSION < 4
+ #include <nsEmbedAPI.h>
++#else
++#include <nscore.h>
++#include <nsXPCOM.h>
++#include <nsILocalFile.h>
++#include <nsIDirectoryService.h>
++#define NS_GRE_COMPONENT_DIR "GreComsD"
++#define NS_XPCOM_COMPONENT_DIR "ComsD"
++#define NS_XPCOM_COMPONENT_REGISTRY_FILE "ComRegF"
++#define NS_XPCOM_XPTI_REGISTRY_FILE "XptiRegF"
++#endif
+
+ //XPCOM API
+ #include <nsCOMPtr.h>
+@@ -78,8 +89,12 @@
+ #include <nsIPromptService.h>
+ #include <nsISecurityWarningDialogs.h>
+ #include <nsIComponentRegistrar.h>
++#if XUL_VERSION < 4
+ #include <nsIGenericFactory.h>
+-
++#else
++#include <mozilla/ModuleUtils.h>
++struct nsModuleComponentInfo;
++#endif
+ // preferences
+ #include <nsIPrefBranch.h>
+ #include <nsIPrefService.h>
+@@ -131,12 +146,15 @@
+ typedef type (NS_FROZENCALL * name##Type) params; \
+ extern name##Type name NS_HIDDEN;
+
++#if XUL_VERSION < 4
+ XRE_API(nsresult,
+ XRE_InitEmbedding, (nsILocalFile *aLibXULDirectory,
+ nsILocalFile *aAppDirectory,
+ nsIDirectoryServiceProvider *aAppDirProvider,
+ nsStaticModuleInfo const *aStaticComponents,
+ PRUint32 aStaticComponentCount))
++#endif
++
+
+ XRE_API(void, XRE_TermEmbedding, ())
+
diff --git a/extra/gluezilla/xulrunner2.0_configure.patch b/extra/gluezilla/xulrunner2.0_configure.patch
new file mode 100644
index 000000000..cb64208e3
--- /dev/null
+++ b/extra/gluezilla/xulrunner2.0_configure.patch
@@ -0,0 +1,51 @@
+--- a/configure.ac
++++ b/configure.ac_new
+@@ -87,16 +87,23 @@
+
+ if test "x${oldxul}" != xyes ; then
+
+- AC_MSG_CHECKING(Mozilla XPCOM > 1.8)
+- mozilla_xpcom_pcs="libxul-embedding-unstable"
+- for pc in $mozilla_xpcom_pcs; do
+- if $PKG_CONFIG --exists $pc; then
+- AC_MSG_RESULT($pc)
+- mozilla_xpcom=$pc
+- XUL_VERSION=3
+- break;
+- fi
+- done
++ if test -z $mozilla_xpcom; then
++ AC_MSG_CHECKING(Mozilla XPCOM > 1.8)
++ mozilla_xpcom_pcs="libxul-embedding libxul-embedding-unstable"
++ for pc in $mozilla_xpcom_pcs; do
++ if $PKG_CONFIG --exists $pc; then
++ mozilla_xpcom=$pc
++ XUL_VERSION=3
++ version="$(pkg-config --modversion $pc)"
++ minor=`echo "$version" | sed -e 's,\([[0-9]]*\)\..*,\1,'`
++ if test $minor -ge 2; then
++ XUL_VERSION=4
++ fi
++ AC_MSG_RESULT(Found $version)
++ break;
++ fi
++ done
++ fi
+ fi
+
+ if test -z $mozilla_xpcom; then
+@@ -121,9 +128,12 @@
+ XPCOM_PKGS="$mozilla_xpcom"
+ fi
+
+-AM_CONDITIONAL([OLDXUL], [test x$XUL_VERSION = x2])
+-
+ AC_SUBST(XUL_VERSION)
++
++AM_CONDITIONAL([XUL_4], [test x$XUL_VERSION = x4])
++AM_CONDITIONAL([XUL_3], [test x$XUL_VERSION = x3])
++AM_CONDITIONAL([XUL_2], [test x$XUL_VERSION = x2])
++
+
+ AC_ARG_ENABLE([optimize],
+ AC_HELP_STRING([--enable-optimize], [Enable optimizations (-O2)]),
diff --git a/extra/gmetadom/PKGBUILD b/extra/gmetadom/PKGBUILD
new file mode 100644
index 000000000..64be3c3b7
--- /dev/null
+++ b/extra/gmetadom/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 37443 2009-05-01 20:50:35Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Jan de Groot <jgc@archlinux.org>
+
+pkgname=gmetadom
+pkgver=0.2.6
+pkgrel=2
+pkgdesc="C++ bindings for GDome2 DOM implementation"
+arch=('i686' 'x86_64')
+url="http://gmetadom.sourceforge.net/"
+license=('LGPL')
+depends=('gdome2')
+makedepends=('pkgconfig' 'ocaml')
+options=('!libtool' '!makeflags')
+source=(http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.gz
+ gmetadom-0.2.6-gcc43.patch)
+md5sums=('7bfb5d9c6f20ffa5e790b63d1f8cb481'
+ 'ea0271007f8650733029327823353d0d')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ patch -Np1 -i ${srcdir}/gmetadom-0.2.6-gcc43.patch || return 1
+ ./configure --prefix=/usr
+ make || return 1
+ make DESTDIR=${pkgdir}/ install
+}
diff --git a/extra/gmetadom/gmetadom-0.2.6-gcc43.patch b/extra/gmetadom/gmetadom-0.2.6-gcc43.patch
new file mode 100644
index 000000000..c16c3d6ba
--- /dev/null
+++ b/extra/gmetadom/gmetadom-0.2.6-gcc43.patch
@@ -0,0 +1,18 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 01_gcc43-fix.dpatch by Michael Bienia <geser@ubuntu.com>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: No description.
+
+@DPATCH@
+diff -urNad gmetadom-0.2.5-3ubuntu1~/src/gdome_cpp_smart/include/GdomeSmartDOMTraits.hh gmetadom-0.2.5-3ubuntu1/src/gdome_cpp_smart/include/GdomeSmartDOMTraits.hh
+--- gmetadom-0.2.5-3ubuntu1~/src/gdome_cpp_smart/include/GdomeSmartDOMTraits.hh 2007-11-21 18:27:08.000000000 +0100
++++ gmetadom-0.2.5-3ubuntu1/src/gdome_cpp_smart/include/GdomeSmartDOMTraits.hh 2007-11-28 12:16:00.000000000 +0100
+@@ -26,6 +26,7 @@
+ */
+
+ #include <string>
++#include <cstring>
+
+ #include "GdomeSmartDOMChar.hh"
+
diff --git a/extra/gmime/PKGBUILD b/extra/gmime/PKGBUILD
new file mode 100644
index 000000000..663f51870
--- /dev/null
+++ b/extra/gmime/PKGBUILD
@@ -0,0 +1,35 @@
+# $Id: PKGBUILD 113007 2011-03-08 07:02:20Z heftig $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Ben <ben@benmazer.net>
+
+pkgname=gmime
+pkgver=2.4.23
+pkgrel=1
+pkgdesc="Core mime parsing library"
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://spruce.sourceforge.net/gmime/"
+depends=('glib2' 'zlib')
+makedepends=('gtk-sharp-2' 'pkgconfig')
+options=('!libtool')
+source=(http://ftp.gnome.org/pub/GNOME/sources/${pkgname}/${pkgver%.*}/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('0cfd38cd8960979fd6e36a36afa9aec89f33dfe787f2bb11b8e8cdb0809e8377')
+
+build() {
+ # get rid of that .wapi errors in fakeroot
+ export MONO_SHARED_DIR="${srcdir}/weird"
+ mkdir -p "${MONO_SHARED_DIR}"
+
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+
+ # These are gmime alternatives for the same shareutils tools
+ mv "${pkgdir}/usr/bin/uuencode" "${pkgdir}/usr/bin/guuencode"
+ mv "${pkgdir}/usr/bin/uudecode" "${pkgdir}/usr/bin/guudecode"
+}
diff --git a/extra/gmpc/PKGBUILD b/extra/gmpc/PKGBUILD
new file mode 100644
index 000000000..7cee8fc09
--- /dev/null
+++ b/extra/gmpc/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 80683 2010-05-20 18:05:37Z ibiru $
+# Contributor: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Tobias Kieslich <tobias@archlinux.org>
+
+pkgname=gmpc
+pkgver=0.20.0
+pkgrel=1
+pkgdesc="A GTK2 client for MPD"
+arch=('i686' 'x86_64')
+url="http://gmpc.wikia.com/wiki/Gnome_Music_Player_Client"
+license=("GPL")
+depends=('libglade' 'libmpd>=0.20.0' 'curl' 'libsm' 'libsoup' 'libsexy' 'hicolor-icon-theme')
+makedepends=('gob2' 'intltool' 'vala')
+options=('!libtool')
+install=gmpc.install
+source=(http://download.sarine.nl/Programs/${pkgname}/${pkgver}/${pkgname}-${pkgver}.tar.gz)
+md5sums=('902fd69b0b6bb40abb647604080dd7ef')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr \
+ --enable-system-libsexy
+ make || return 1
+ sed -i 's|GNOME;Application;AudioVideo;|GTK;Application;AudioVideo;Player;|' \
+ data/${pkgname}.desktop
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/gmpc/gmpc.install b/extra/gmpc/gmpc.install
new file mode 100644
index 000000000..e70c054ec
--- /dev/null
+++ b/extra/gmpc/gmpc.install
@@ -0,0 +1,11 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/extra/gnet/ChangeLog b/extra/gnet/ChangeLog
new file mode 100644
index 000000000..b8975af31
--- /dev/null
+++ b/extra/gnet/ChangeLog
@@ -0,0 +1,5 @@
+2008-05-04 Eric Belanger <eric@archlinux.org>
+
+ * gnet 2.0.8-1
+ * Upstream update
+ * Added ChangeLog
diff --git a/extra/gnet/PKGBUILD b/extra/gnet/PKGBUILD
new file mode 100644
index 000000000..983807f31
--- /dev/null
+++ b/extra/gnet/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: PKGBUILD 1327 2008-05-05 00:54:40Z eric $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=gnet
+pkgver=2.0.8
+pkgrel=1
+pkgdesc="GNet is a simple network library"
+arch=('i686' 'x86_64')
+url="http://www.gnetlibrary.org/"
+license=('LGPL')
+depends=('glib2')
+options=('!libtool')
+source=(http://ftp.gnome.org/pub/GNOME/sources/gnet/${pkgver%.*}/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('93327d2fca333d7e54ba2cf54e071165')
+sha1sums=('74a33dd25cc594b874e3a5171795efd99e567387')
+
+build() {
+ cd ${startdir}/src/${pkgname}-${pkgver}
+ ./configure --prefix=/usr
+ make || return 1
+ make DESTDIR=${startdir}/pkg install
+}
diff --git a/extra/gnokii/PKGBUILD b/extra/gnokii/PKGBUILD
new file mode 100644
index 000000000..ecd996b4d
--- /dev/null
+++ b/extra/gnokii/PKGBUILD
@@ -0,0 +1,45 @@
+# $Id: PKGBUILD 114760 2011-03-15 22:43:17Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Roman Kyrylych <roman@archlinux.org>
+# Contributor: Aurelien Foret <orelien@chez.com>
+
+pkgname=gnokii
+pkgver=0.6.30
+pkgrel=1
+pkgdesc="Tools and user space driver for use with mobile phones"
+arch=('i686' 'x86_64')
+url="http://www.gnokii.org/"
+license=('GPL')
+depends=('libusb-compat' 'libxpm' 'bluez' 'libical' 'postgresql-libs')
+makedepends=('gtk2' 'libmysqlclient' 'intltool')
+optdepends=('gtk2: xgnokii GUI'
+ 'libmysqlclient: smsd mysql backend'
+ 'postgresql-libs: smsd postgresql backend')
+backup=('etc/gnokiirc')
+options=('!libtool' '!makeflags')
+source=(http://www.gnokii.org/download/$pkgname/$pkgname-${pkgver}.tar.bz2
+ 'gnokii.patch')
+md5sums=('c90137d403febbc16712d64f0eb196de'
+ '4d764727686ee34bc73489c8b1321c82')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ # FS#13249
+ sed -i 's|cellphone|phone|' xgnokii/xgnokii.desktop.in
+
+ patch -Np1 -i "${srcdir}/gnokii.patch"
+
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --enable-security \
+ --disable-unix98test
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+
+ install -Dm644 Docs/sample/gnokiirc "${pkgdir}/etc/gnokiirc"
+}
diff --git a/extra/gnokii/gnokii.patch b/extra/gnokii/gnokii.patch
new file mode 100644
index 000000000..e64d81aa1
--- /dev/null
+++ b/extra/gnokii/gnokii.patch
@@ -0,0 +1,12 @@
+diff -ur gnokii-0.6.7-old/Docs/sample/gnokiirc gnokii-0.6.7/Docs/sample/gnokiirc
+--- gnokii-0.6.7-old/Docs/sample/gnokiirc 2005-05-16 20:55:13.000000000 +0200
++++ gnokii-0.6.7/Docs/sample/gnokiirc 2005-06-03 10:49:42.000000000 +0200
+@@ -112,7 +112,7 @@
+ # permissions 4750, owned by root, group gnokii. Ensure you
+ # are in the gnokii group and that the group exists...
+ [gnokiid]
+-bindir = /usr/local/sbin/
++bindir = /usr/sbin/
+
+ # Any entries in the following two sections will be set as environment
+ # variables when running the scripts.
diff --git a/extra/gnome-alsamixer/PKGBUILD b/extra/gnome-alsamixer/PKGBUILD
new file mode 100644
index 000000000..277ddcbde
--- /dev/null
+++ b/extra/gnome-alsamixer/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 49919 2009-08-16 21:30:55Z jgc $
+# Maintainer: damir <damir@archlinux.org>
+# Contributor: Ben <ben@benmazer.net>
+
+pkgname=gnome-alsamixer
+pkgver=0.9.6
+pkgrel=3
+pkgdesc="Gnome ALSA mixer"
+arch=('i686' 'x86_64')
+url="http://www.paw.za.org"
+license=('GPL')
+depends=('libgnomeui>=2.24.1')
+source=(ftp://ftp.archlinux.org/other/gnome-alsamixer/${pkgname}-${pkgver}.tar.gz
+ gnome-alsamixer-0.9.6-gtk24.patch)
+md5sums=('387623cfeb079d78325eed2d6bc94251'
+ '82b95a0df43429da5098b4da883f6bd0')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i "${srcdir}/gnome-alsamixer-0.9.6-gtk24.patch" || return 1
+ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/gnome-alsamixer/gnome-alsamixer-0.9.6-gtk24.patch b/extra/gnome-alsamixer/gnome-alsamixer-0.9.6-gtk24.patch
new file mode 100644
index 000000000..9e5f4eeb1
--- /dev/null
+++ b/extra/gnome-alsamixer/gnome-alsamixer-0.9.6-gtk24.patch
@@ -0,0 +1,15 @@
+diff -ur gnome-alsamixer-0.9.6/src/Makefile.in gnome-alsamixer-0.9.6.new/src/Makefile.in
+--- gnome-alsamixer-0.9.6/src/Makefile.in 2003-09-09 12:44:25.000000000 +0100
++++ gnome-alsamixer-0.9.6.new/src/Makefile.in 2004-04-04 18:51:36.000000000 +0100
+@@ -86,10 +86,6 @@
+ -DPACKAGE_DATA_DIR=\""$(datadir)/gnome-alsamixer"\" \
+ -DPIXMAP_ICONDIR=\""$(datadir)/pixmaps/gnome-alsamixer"\" \
+ -DPACKAGE_LOCALE_DIR=\""$(prefix)/$(DATADIRNAME)/locale"\" \
+- -DG_DISABLE_DEPRECATED \
+- -DGDK_DISABLE_DEPRECATED \
+- -DGTK_DISABLE_DEPRECATED \
+- -DGNOME_DISABLE_DEPRECATED \
+ @PACKAGE_CFLAGS@
+
+
+Only in gnome-alsamixer-0.9.6.new/src: Makefile.in~
diff --git a/extra/gnome-applets/PKGBUILD b/extra/gnome-applets/PKGBUILD
new file mode 100644
index 000000000..49f1f80f1
--- /dev/null
+++ b/extra/gnome-applets/PKGBUILD
@@ -0,0 +1,45 @@
+# $Id: PKGBUILD 112787 2011-03-06 19:39:31Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=gnome-applets
+pkgver=2.32.1.1
+pkgrel=2
+pkgdesc="GNOME Applets"
+arch=(i686 x86_64)
+license=('GPL')
+depends=('gstreamer0.10-base-plugins>=0.10.30' 'gnome-panel>=2.31.92' 'libgtop>=2.28.1' 'gucharmap>=2.32.0' 'libnotify>=0.7.1' 'cpufrequtils')
+makedepends=('gnome-doc-utils>=0.20.1' 'pkgconfig' 'gnome-settings-daemon>=2.31.92' 'intltool' 'gnome-icon-theme>=2.31.0' 'gnome-python-desktop>=2.31.1' 'networkmanager>=0.8')
+optdepends=('python-gnomeapplet: invest-applet')
+options=('!emptydirs' '!libtool')
+url="http://www.gnome.org"
+groups=(gnome)
+install=gnome-applets.install
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.32/${pkgname}-${pkgver}.tar.bz2
+ gnome-applets-2.32.1.1-libnotify-0.7.patch
+ add-dbus-glib.patch)
+sha256sums=('2b92fe4b3062dfbe264f45472b4db3a27d1e69e13260d37da9fb36b2cbd40327'
+ '1e0b1f9545029bda0f4aadc28ef6eba34a5dbd1c3d1e5cec45627be7b0c32eda'
+ '6c79b77aa731f82d9b7c9704e5c6d3cb06252eea3c2d21fa35245d2f02ca0346')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i "${srcdir}/add-dbus-glib.patch"
+ patch -Np0 -i "${srcdir}/gnome-applets-2.32.1.1-libnotify-0.7.patch"
+ autoreconf -fi
+ PYTHON=python2 ./configure --prefix=/usr --sysconfdir=/etc \
+ --libexecdir=/usr/lib/gnome-applets \
+ --localstatedir=/var --disable-static \
+ --disable-scrollkeeper --enable-mixer-applet \
+ --disable-schemas-install --without-hal
+ make
+ make GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 DESTDIR="${pkgdir}" install
+
+ sed -i "s|#!/usr/bin/env python$|#!/usr/bin/env python2|" \
+ $pkgdir/usr/bin/invest-chart \
+ $pkgdir/usr/lib/gnome-applets/invest-applet \
+ $pkgdir/usr/lib/python2.7/site-packages/invest/chart.py
+
+ install -m755 -d "${pkgdir}/usr/share/gconf/schemas"
+ gconf-merge-schema "${pkgdir}/usr/share/gconf/schemas/${pkgname}.schemas" --domain gnome-applets-2.0 ${pkgdir}/etc/gconf/schemas/*.schemas
+ rm -f ${pkgdir}/etc/gconf/schemas/*.schemas
+}
diff --git a/extra/gnome-applets/add-dbus-glib.patch b/extra/gnome-applets/add-dbus-glib.patch
new file mode 100644
index 000000000..16c2999a8
--- /dev/null
+++ b/extra/gnome-applets/add-dbus-glib.patch
@@ -0,0 +1,28 @@
+From fe72f63c91a1458d97d455ab0078d042464366e7 Mon Sep 17 00:00:00 2001
+From: Enrico Minack <enrico-minack@gmx.de>
+Date: Mon, 03 Jan 2011 19:58:13 +0000
+Subject: gweather: fixes NetworkManager support to compile, see bug 636217
+
+---
+diff --git a/gweather/Makefile.am b/gweather/Makefile.am
+index ea6ac96..165efda 100644
+--- a/gweather/Makefile.am
++++ b/gweather/Makefile.am
+@@ -6,6 +6,7 @@ INCLUDES = \
+ -I$(srcdir) \
+ -I$(top_srcdir) \
+ -DGWEATHER_MENU_UI_DIR=\""$(uidir)"\" \
++ $(DBUS_CFLAGS) \
+ $(GNOME_APPLETS3_CFLAGS) \
+ $(LIBNOTIFY_CFLAGS) \
+ $(LIBGWEATHER_CFLAGS) \
+@@ -22,6 +23,7 @@ gweather_applet_2_SOURCES = \
+ gweather-applet.c gweather-applet.h
+
+ gweather_applet_2_LDADD = \
++ $(DBUS_LIBS) \
+ $(LIBNOTIFY_LIBS) \
+ $(GNOME_APPLETS3_LIBS) \
+ $(GNOME_LIBS2_LIBS) \
+--
+cgit v0.8.3.4
diff --git a/extra/gnome-applets/gnome-applets-2.32.1.1-libnotify-0.7.patch b/extra/gnome-applets/gnome-applets-2.32.1.1-libnotify-0.7.patch
new file mode 100644
index 000000000..f2b889ec0
--- /dev/null
+++ b/extra/gnome-applets/gnome-applets-2.32.1.1-libnotify-0.7.patch
@@ -0,0 +1,53 @@
+--- battstat/battstat_applet.c
++++ battstat/battstat_applet.c
+@@ -42,6 +42,9 @@
+
+ #ifdef HAVE_LIBNOTIFY
+ #include <libnotify/notify.h>
++#ifndef NOTIFY_CHECK_VERSION
++#define NOTIFY_CHECK_VERSION(x,y,z) 0
++#endif
+ #endif
+
+ #include "battstat.h"
+@@ -435,7 +438,12 @@
+ GTK_ICON_LOOKUP_USE_BUILTIN,
+ NULL);
+
+- NotifyNotification *n = notify_notification_new (_("Your battery is now fully recharged"), "", /* "battery" */ NULL, applet);
++ NotifyNotification *n = notify_notification_new (_("Your battery is now fully recharged"), "", /* "battery" */ NULL
++#if NOTIFY_CHECK_VERSION (0, 7, 0)
++ );
++#else
++ , applet);
++#endif
+
+ /* XXX: it would be nice to pass this as a named icon */
+ notify_notification_set_icon_from_pixbuf (n, icon);
+--- gweather/gweather-applet.c
++++ gweather/gweather-applet.c
+@@ -30,6 +30,9 @@
+ #ifdef HAVE_LIBNOTIFY
+ #include <libnotify/notify.h>
+ #include <libnotify/notification.h>
++#ifndef NOTIFY_CHECK_VERSION
++#define NOTIFY_CHECK_VERSION(x,y,z) 0
++#endif
+ #endif
+
+ #define GWEATHER_I_KNOW_THIS_IS_UNSTABLE
+@@ -471,8 +474,12 @@
+ if (icon == NULL)
+ icon = "stock-unknown";
+
+- n = notify_notification_new (message, detail, icon,
+- gw_applet->container);
++ n = notify_notification_new (message, detail, icon
++#if NOTIFY_CHECK_VERSION (0, 7, 0)
++ );
++#else
++ , gw_applet->container);
++#endif
+
+ notify_notification_show (n, &error);
+ if (error)
diff --git a/extra/gnome-applets/gnome-applets.install b/extra/gnome-applets/gnome-applets.install
new file mode 100644
index 000000000..dd9c34269
--- /dev/null
+++ b/extra/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/extra/gnome-bluetooth/61-gnome-bluetooth-rfkill.rules b/extra/gnome-bluetooth/61-gnome-bluetooth-rfkill.rules
new file mode 100644
index 000000000..a76c1e73c
--- /dev/null
+++ b/extra/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/extra/gnome-bluetooth/PKGBUILD b/extra/gnome-bluetooth/PKGBUILD
new file mode 100644
index 000000000..d5a483f72
--- /dev/null
+++ b/extra/gnome-bluetooth/PKGBUILD
@@ -0,0 +1,43 @@
+# $Id: PKGBUILD 112788 2011-03-06 19:49:19Z ibiru $
+# Maintainer:
+# Contributor: Roman Kyrylych <roman@archlinux.org>
+
+pkgname=gnome-bluetooth
+pkgver=2.32.0
+pkgrel=2
+pkgdesc="The GNOME Bluetooth Subsystem"
+arch=('i686' 'x86_64')
+url="http://live.gnome.org/GnomeBluetooth"
+license=('GPL' 'LGPL')
+depends=('libunique>=1.1.6' 'libnotify>=0.7.1' 'hicolor-icon-theme' 'gvfs-obexftp>=1.6.3' 'obexd-client>=0.33' 'dconf')
+makedepends=('intltool' 'pygtk>=2.22' 'gnome-doc-utils>=0.20.1' 'nautilus-sendto>=2.28.4')
+replaces=('bluez-gnome')
+conflicts=('bluez-gnome')
+options=('!libtool' '!emptydirs' '!makeflags')
+install=gnome-bluetooth.install
+source=(http://ftp.gnome.org/pub/GNOME/sources/${pkgname}/2.32/${pkgname}-${pkgver}.tar.bz2
+ 61-gnome-bluetooth-rfkill.rules
+ gnome-bluetooth-2.32.0-libnotify-0.7.patch)
+sha256sums=('57b1f06c96a1b85e1c19ff919d708cc38e95edae658881ed99968c325839a973'
+ 'b8acb8ea2e7f3588575cffd8ea14ec50c8641f518f2ea899771a508b299ea474'
+ '42b8388156249bd7c8a18db6d6aef18895ce861f2a79cb937e55eda864245838')
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np0 -i "${srcdir}/gnome-bluetooth-2.32.0-libnotify-0.7.patch"
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --disable-desktop-update \
+ --disable-icon-update \
+ --disable-schemas-compile \
+ --enable-introspection=no
+ 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"
+}
diff --git a/extra/gnome-bluetooth/gnome-bluetooth-2.32.0-libnotify-0.7.patch b/extra/gnome-bluetooth/gnome-bluetooth-2.32.0-libnotify-0.7.patch
new file mode 100644
index 000000000..72a726521
--- /dev/null
+++ b/extra/gnome-bluetooth/gnome-bluetooth-2.32.0-libnotify-0.7.patch
@@ -0,0 +1,27 @@
+--- applet/notify.c
++++ applet/notify.c
+@@ -31,6 +31,10 @@
+ #include <libnotify/notify.h>
+ #include "notify.h"
+
++#ifndef NOTIFY_CHECK_VERSION
++#define NOTIFY_CHECK_VERSION(x,y,z) 0
++#endif
++
+ static GtkStatusIcon *statusicon = NULL;
+ static char *icon_name = NULL;
+ static char *tooltip = NULL;
+@@ -71,7 +75,12 @@
+ notify_notification_close(notify, NULL);
+ }
+
+- notify = notify_notification_new(summary, message, icon_name, NULL);
++ notify = notify_notification_new(summary, message, icon_name
++#if NOTIFY_CHECK_VERSION (0, 7, 0)
++ );
++#else
++ , NULL);
++#endif
+
+ notify_notification_set_timeout(notify, timeout);
+
diff --git a/extra/gnome-bluetooth/gnome-bluetooth.install b/extra/gnome-bluetooth/gnome-bluetooth.install
new file mode 100644
index 000000000..bddac2574
--- /dev/null
+++ b/extra/gnome-bluetooth/gnome-bluetooth.install
@@ -0,0 +1,13 @@
+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/extra/gnome-control-center/PKGBUILD b/extra/gnome-control-center/PKGBUILD
new file mode 100644
index 000000000..de8604ceb
--- /dev/null
+++ b/extra/gnome-control-center/PKGBUILD
@@ -0,0 +1,33 @@
+# $Id: PKGBUILD 99871 2010-11-18 22:10:52Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=gnome-control-center
+pkgver=2.32.1
+pkgrel=1
+pkgdesc="The Control Center for GNOME"
+arch=('i686' 'x86_64')
+depends=('metacity>=2.30.2' 'libxss' 'desktop-file-utils' 'gnome-settings-daemon>=2.32.1' 'libgnomekbd>=2.32.0' 'libcanberra>=0.25' 'sound-theme-freedesktop' 'libunique>=1.1.6' 'gnome-menus>=2.30.5' 'evolution-data-server>=2.32.1' 'librsvg>=2.32.1')
+makedepends=('gnome-doc-utils>=0.20.1' 'intltool')
+url="http://www.gnome.org"
+groups=('gnome')
+install=gnome-control-center.install
+license=('GPL')
+options=('!libtool' '!emptydirs')
+source=(http://ftp.gnome.org/pub/GNOME/sources/${pkgname}/2.32/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('7c568b57358e5c08f4d8dd76dbac7df2539135ad081872b60514b7a8ac797e66')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-static --enable-aboutme \
+ --disable-scrollkeeper --disable-update-mimedb
+ make
+ 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-control-center-2.0 ${pkgdir}/etc/gconf/schemas/*.schemas
+ rm -f ${pkgdir}/etc/gconf/schemas/*.schemas
+
+ # --disable-update-mimedb?
+ rm -f "${pkgdir}/usr/share/applications/mimeinfo.cache"
+}
diff --git a/extra/gnome-control-center/gnome-control-center.install b/extra/gnome-control-center/gnome-control-center.install
new file mode 100644
index 000000000..6d6b5678d
--- /dev/null
+++ b/extra/gnome-control-center/gnome-control-center.install
@@ -0,0 +1,29 @@
+pkgname=gnome-control-center
+
+post_install() {
+ usr/sbin/gconfpkg --install ${pkgname}
+ update-desktop-database -q
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+ update-mime-database usr/share/mime
+}
+
+pre_upgrade() {
+ pre_remove $1
+}
+
+post_upgrade() {
+ if [ "`vercmp $2 2.22.0-3`" -lt 0 ]; then
+ usr/sbin/gconfpkg --install gnome-settings-daemon
+ fi
+ post_install $1
+}
+
+pre_remove() {
+ usr/sbin/gconfpkg --uninstall ${pkgname}
+}
+
+post_remove() {
+ update-desktop-database -q
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+ update-mime-database usr/share/mime
+}
diff --git a/extra/gnome-desktop-sharp/PKGBUILD b/extra/gnome-desktop-sharp/PKGBUILD
new file mode 100644
index 000000000..ee004785b
--- /dev/null
+++ b/extra/gnome-desktop-sharp/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id: PKGBUILD 70241 2010-02-25 17:21:11Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=gnome-desktop-sharp
+pkgver=2.26.0
+pkgrel=5
+pkgdesc="GNOME desktop bindings for C#"
+arch=('i686' 'x86_64')
+license=(LGPL)
+url="http://gtk-sharp.sourceforge.net"
+depends=('gnome-sharp>=2.24.1' 'vte>=0.23.5' 'librsvg>=2.26.0' 'gnome-panel>=2.29.91' 'libwnck>=2.29.91' 'gtkhtml>=3.29.91' 'gtksourceview2>=2.9.2')
+makedepends=('pkgconfig' 'monodoc' 'libgnomeprintui>=2.18.4')
+optdepends=('libgnomeprintui')
+options=('!libtool')
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.26/${pkgname}-${pkgver}.tar.bz2
+ gnome-desktop-sharp-lib-target.patch)
+md5sums=('4bc990900bb318b2ba0b0e7998bb47d1'
+ '980cd3adf5e745f4caee0a172a51dcc3')
+
+build() {
+ # get rid of that .wapi errors; thanks to brice
+ export MONO_SHARED_DIR="${srcdir}/weird"
+ mkdir -p "${MONO_SHARED_DIR}"
+
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i ${srcdir}/gnome-desktop-sharp-lib-target.patch || return 1
+ ./configure --prefix=/usr --sysconfdir=/etc || return 1
+ make || return 1
+ make GACUTIL="/usr/bin/gacutil /root ${pkgdir}/usr/lib" \
+ DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/gnome-desktop-sharp/gnome-desktop-sharp-lib-target.patch b/extra/gnome-desktop-sharp/gnome-desktop-sharp-lib-target.patch
new file mode 100644
index 000000000..3f0ea4933
--- /dev/null
+++ b/extra/gnome-desktop-sharp/gnome-desktop-sharp-lib-target.patch
@@ -0,0 +1,9 @@
+--- gnome-desktop-sharp-2.26.0/gnomedesktop/gnomedesktop-sharp.dll.config.in.false 2009-02-23 19:01:27.000000000 +0100
++++ gnome-desktop-sharp-2.26.0/gnomedesktop/gnomedesktop-sharp.dll.config.in 2010-02-11 15:59:36.000000000 +0100
+@@ -3,5 +3,5 @@
+ <dllmap dll="libgobject-2.0-0.dll" target="libgobject-2.0@LIB_PREFIX@.0@LIB_SUFFIX@"/>
+ <dllmap dll="libgthread-2.0-0.dll" target="libgthread-2.0@LIB_PREFIX@.0@LIB_SUFFIX@"/>
+ <dllmap dll="libgtk-win32-2.0-0.dll" target="libgtk-x11-2.0@LIB_PREFIX@.0@LIB_SUFFIX@"/>
+- <dllmap dll="gnome-desktop-2" target="libgnome-desktop-2@LIB_PREFIX@.11@LIB_SUFFIX@"/>
++ <dllmap dll="gnome-desktop-2" target="libgnome-desktop-2@LIB_PREFIX@.17@LIB_SUFFIX@"/>
+ </configuration>
diff --git a/extra/gnome-desktop/PKGBUILD b/extra/gnome-desktop/PKGBUILD
new file mode 100644
index 000000000..6c98a52fa
--- /dev/null
+++ b/extra/gnome-desktop/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 99767 2010-11-17 12:13:39Z ibiru $
+# Maintainer: Jan de Groot <jan@archlinux.org>
+
+pkgname=gnome-desktop
+pkgver=2.32.1
+pkgrel=1
+pkgdesc="The GNOME Desktop"
+arch=('i686' 'x86_64')
+license=('GPL' 'LGPL')
+depends=('gconf>=2.32.0' 'startup-notification>=0.10')
+makedepends=('gnome-doc-utils>=0.20.1' 'intltool')
+optdepends=('pygtk: gnome-about')
+url="http://www.gnome.org"
+groups=('gnome')
+options=('!libtool')
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.32/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('55cbecf67efe1fa1e57ac966520a7c46d799c8ba3c652a1219f60cafccb3739d')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-static \
+ --with-gnome-distributor="Archlinux" \
+ --disable-scrollkeeper
+ make
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/gnome-device-manager/PKGBUILD b/extra/gnome-device-manager/PKGBUILD
new file mode 100644
index 000000000..f452e9190
--- /dev/null
+++ b/extra/gnome-device-manager/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 49923 2009-08-16 21:34:36Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=gnome-device-manager
+pkgver=0.2
+pkgrel=2
+pkgdesc="GNOME Device Manager, replaces hal-device-manager"
+arch=(i686 x86_64)
+license=('GPL')
+depends=('libgnomeui>=2.24.1' 'hal>=0.5.11' 'hicolor-icon-theme')
+makedepends=('intltool' 'pkgconfig' 'gnome-doc-utils>=0.16.0')
+replaces=('hal-device-manager')
+options=('!libtool' '!emptydirs')
+install=gnome-device-manager.install
+url="http://www.gnome.org"
+source=(http://hal.freedesktop.org/releases/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('b833a90c940dd6cc992c42ad05ca6831')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-scrollkeeper \
+ --disable-static || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/gnome-device-manager/gnome-device-manager.install b/extra/gnome-device-manager/gnome-device-manager.install
new file mode 100644
index 000000000..1a05f573e
--- /dev/null
+++ b/extra/gnome-device-manager/gnome-device-manager.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/extra/gnome-disk-utility/PKGBUILD b/extra/gnome-disk-utility/PKGBUILD
new file mode 100644
index 000000000..0c6b57e76
--- /dev/null
+++ b/extra/gnome-disk-utility/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 112789 2011-03-06 20:08:19Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=gnome-disk-utility
+pkgver=2.32.1
+pkgrel=1
+pkgdesc="GNOME libraries and applications for dealing with storage devices"
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://www.gnome.org"
+depends=('dbus-glib>=0.86' 'libgnome-keyring>=2.31.92' 'libunique>=1.1.6' 'udisks>=1.0.1' 'libnotify>=0.7.1' 'hicolor-icon-theme' 'avahi')
+makedepends=('gnome-doc-utils>=0.20.0' 'intltool')
+replaces=('gnome-mount')
+conflicts=('gnome-mount')
+options=('!libtool' '!emptydirs' '!makeflags')
+install=gnome-disk-utility.install
+source=(http://ftp.gnome.org/pub/GNOME/sources/${pkgname}/2.32/${pkgname}-${pkgver}.tar.bz2
+ fix-freeze.patch)
+sha256sums=('fb3f6c8962eca9706fd96e1f0b431c1284536298bc927e8413e763054c618e99'
+'818b70360978968457d2c50738347c6726ed8d0c007eb57074881a7e33652526')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i "${srcdir}/fix-freeze.patch"
+ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \
+ --libexecdir=/usr/lib/gnome-disk-utility \
+ --disable-scrollkeeper --disable-nautilus --disable-gtk-doc
+ make
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/gnome-disk-utility/fix-freeze.patch b/extra/gnome-disk-utility/fix-freeze.patch
new file mode 100644
index 000000000..262748bfb
--- /dev/null
+++ b/extra/gnome-disk-utility/fix-freeze.patch
@@ -0,0 +1,32 @@
+From 82489b51443e1280dfb9fb251ea2693df1809aec Mon Sep 17 00:00:00 2001
+From: Pascal Terjan <pterjan@mandriva.com>
+Date: Mon, 3 May 2010 14:01:22 +0200
+Subject: [PATCH] Force GduPresentable ids to be UTF-8 (#616198)
+
+GduPresentable created in gdu pool include intheir id some strings
+in local encoding like _("Peripheral Devices"). This patch
+enforces them to be UTF-8.
+
+This fixes a crash of gvfs-gdu-volume-monitor when USB devices are
+available on a non UTF-8 system.
+---
+ src/gdu/gdu-pool.c | 3 +++
+ 1 files changed, 3 insertions(+), 0 deletions(-)
+
+diff --git a/src/gdu/gdu-pool.c b/src/gdu/gdu-pool.c
+index bd5eccf..cf6be53 100644
+--- a/src/gdu/gdu-pool.c
++++ b/src/gdu/gdu-pool.c
+@@ -473,6 +473,9 @@ gdu_pool_class_init (GduPoolClass *klass)
+ g_cclosure_marshal_VOID__OBJECT,
+ G_TYPE_NONE, 1,
+ GDU_TYPE_PRESENTABLE);
++#ifdef HAVE_BIND_TEXTDOMAIN_CODESET
++ bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
++#endif
+ }
+
+ static void
+--
+1.7.1
+
diff --git a/extra/gnome-disk-utility/gnome-disk-utility.install b/extra/gnome-disk-utility/gnome-disk-utility.install
new file mode 100644
index 000000000..43ed0a554
--- /dev/null
+++ b/extra/gnome-disk-utility/gnome-disk-utility.install
@@ -0,0 +1,11 @@
+post_install() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+post_upgrade() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+post_remove() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
diff --git a/extra/gnome-games/03_missing_icons.patch b/extra/gnome-games/03_missing_icons.patch
new file mode 100644
index 000000000..c9bfe9be5
--- /dev/null
+++ b/extra/gnome-games/03_missing_icons.patch
@@ -0,0 +1,38 @@
+Index: gnome-games-2.30.2/libgames-support/games-stock.c
+===================================================================
+--- gnome-games-2.30.2.orig/libgames-support/games-stock.c 2010-07-04 11:33:16.880062363 +0200
++++ gnome-games-2.30.2/libgames-support/games-stock.c 2010-07-04 12:23:59.035567621 +0200
+@@ -282,15 +282,14 @@ games_stock_init (void)
+ #ifdef HAVE_GTK_ICON_FACTORY_ADD_ALIAS
+ { GAMES_STOCK_REDO_MOVE, GTK_STOCK_REDO },
+ { GAMES_STOCK_UNDO_MOVE, GTK_STOCK_UNDO },
++ { GAMES_STOCK_RESUME_GAME, GTK_STOCK_MEDIA_PLAY },
+ #endif
+ #ifndef HAVE_HILDON
+ { GAMES_STOCK_NETWORK_GAME, GTK_STOCK_NETWORK },
+ { GAMES_STOCK_NETWORK_LEAVE, GTK_STOCK_STOP },
+ { GAMES_STOCK_PLAYER_LIST, GTK_STOCK_INFO },
+
+- { GAMES_STOCK_PAUSE_GAME, "stock_timer_stopped" },
+- { GAMES_STOCK_RESUME_GAME, "stock_timer" },
+- { GAMES_STOCK_SCORES, "stock_scores" },
++ { GAMES_STOCK_PAUSE_GAME, GTK_STOCK_MEDIA_PAUSE },
+ #endif /* !HAVE_HILDON */
+ };
+
+@@ -298,6 +297,7 @@ games_stock_init (void)
+ const char *stock_icon_aliases_bidi[][3] = {
+ { GAMES_STOCK_REDO_MOVE, GTK_STOCK_REDO "-ltr", GTK_STOCK_REDO "-rtl" },
+ { GAMES_STOCK_UNDO_MOVE, GTK_STOCK_UNDO "-ltr", GTK_STOCK_UNDO "-rtl" },
++ { GAMES_STOCK_RESUME_GAME, GTK_STOCK_MEDIA_PLAY "-ltr", GTK_STOCK_MEDIA_PLAY "-rtl" },
+ };
+ #endif
+
+@@ -306,6 +306,7 @@ games_stock_init (void)
+ #ifndef HAVE_HILDON
+ { GAMES_STOCK_TELEPORT, "teleport" },
+ { GAMES_STOCK_RTELEPORT, "teleport-random" },
++ { GAMES_STOCK_SCORES, "scores" },
+ #endif /* !HAVE_HILDON */
+ { GAMES_STOCK_DEAL_CARDS, "cards-deal" }
+ };
diff --git a/extra/gnome-games/PKGBUILD b/extra/gnome-games/PKGBUILD
new file mode 100644
index 000000000..82a3b0221
--- /dev/null
+++ b/extra/gnome-games/PKGBUILD
@@ -0,0 +1,53 @@
+# $Id: PKGBUILD 105513 2011-01-10 10:03:28Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=gnome-games
+pkgver=2.32.1
+pkgrel=2
+pkgdesc="Some Games for GNOME"
+arch=('i686' 'x86_64')
+license=('GPL')
+depends=('pygtk' 'libsm' 'gconf>=2.32.0' 'guile>=1.8.7' 'filesystem>=2010.09' 'desktop-file-utils' 'libcanberra>=0.25' 'clutter-gtk>=0.10.8' 'hicolor-icon-theme' 'librsvg>=2.32.0' 'python-rsvg>=2.32.0' 'python2-gconf')
+makedepends=('gnome-doc-utils>=0.20.1' 'intltool' 'glproto' 'gobject-introspection')
+optdepends=('python-gtkglext: glchess 3D mode')
+provides=('glchess' 'gnome-sudoku')
+conflicts=('glchess' 'gnome-sudoku')
+options=('!emptydirs' '!libtool')
+install=gnome-games.install
+url="http://www.gnome.org"
+groups=('gnome-extra')
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.32/${pkgname}-${pkgver}.tar.bz2
+ 03_missing_icons.patch
+ scores.png)
+sha256sums=('1a3b2e82102eed3780f05db4378111c475456678deed82fd4ca379da1c5593d9'
+ '05d63319773e5389b87672a20b03c4c1e91a33fd1678b5e76335bf7e4daa46a6'
+ '2f818741bbf20fc83a68d71908de76f5f1b2b9e27691a4767aebf0e4a39fee85')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i "${srcdir}/03_missing_icons.patch"
+ PYTHON=python2 ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-scrollkeeper \
+ --disable-static \
+ --with-scores-user=root --with-scores-group=games \
+ --enable-introspection=yes \
+ --enable-omitgames=swell-foop,lightsoff
+ make
+ make -j1 GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 DESTDIR="${pkgdir}" install
+
+ # Remove all scores, we generate them from postinstall
+ rm -rf "${pkgdir}/var"
+
+ sed -i "s|#!/usr/bin/python$|#!/usr/bin/python2|" \
+ $pkgdir/usr/lib/python2.7/site-packages/gnome_sudoku/{tracker_info,number_box}.py
+
+ sed -i "s|#![ ]*/usr/bin/env python$|#!/usr/bin/env python2|" \
+ $pkgdir/usr/bin/{gnome-sudoku,glchess}
+
+ install -m755 -d "${pkgdir}/usr/share/icons/hicolor/24x24/actions"
+ install -m644 "${srcdir}/scores.png" "${pkgdir}/usr/share/icons/hicolor/24x24/actions/"
+
+ 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
+}
diff --git a/extra/gnome-games/gnome-games.install b/extra/gnome-games/gnome-games.install
new file mode 100644
index 000000000..ac7091f45
--- /dev/null
+++ b/extra/gnome-games/gnome-games.install
@@ -0,0 +1,151 @@
+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/sbin/gconfpkg --install ${pkgname}
+ update-desktop-database -q
+ gtk-update-icon-cache -q -f -t 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() {
+ 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/extra/gnome-games/scores.png b/extra/gnome-games/scores.png
new file mode 100644
index 000000000..fb8ea036f
--- /dev/null
+++ b/extra/gnome-games/scores.png
Binary files differ
diff --git a/extra/gnome-keyring-sharp/02_gnome_2.30_compatibility.patch b/extra/gnome-keyring-sharp/02_gnome_2.30_compatibility.patch
new file mode 100644
index 000000000..8d61a862a
--- /dev/null
+++ b/extra/gnome-keyring-sharp/02_gnome_2.30_compatibility.patch
@@ -0,0 +1,1484 @@
+Description: Reimplement using libgnome-keyring
+ GNOME Keyring daemon in 2.30 no longer exports the socket interface which
+ gnome-keyring-sharp used. This makes gnome-keyring-sharp totally useless.
+ .
+ This patch reimplements the gnome-keyring-sharp functions as a p/invoke
+ wrapper around libgnome-keyring. API and ABI is unchanged.
+Author: Christopher Halse Rogers <christopher.halse.rogers@canonical.com>
+Bug-Launchpad: https://bugs.edge.launchpad.net/ubuntu/lucid/+source/gnome-keyring-sharp/+bug/536925
+Bug: https://bugzilla.novell.com/show_bug.cgi?id=589166
+
+diff -urNad gnome-keyring-sharp-1.0.0~/Makefile.am gnome-keyring-sharp-1.0.0/Makefile.am
+--- gnome-keyring-sharp-1.0.0~/Makefile.am 2008-08-09 03:36:12.000000000 +1000
++++ gnome-keyring-sharp-1.0.0/Makefile.am 2010-03-30 17:32:02.733918042 +1100
+@@ -1,3 +1,2 @@
+-SUBDIRS=src docs sample
++SUBDIRS=src gnome-keyring-sharp-glue docs sample
+ EXTRA_DIST=Gnome.Keyring.snk
+-
+diff -urNad gnome-keyring-sharp-1.0.0~/autogen.sh gnome-keyring-sharp-1.0.0/autogen.sh
+--- gnome-keyring-sharp-1.0.0~/autogen.sh 1970-01-01 10:00:00.000000000 +1000
++++ gnome-keyring-sharp-1.0.0/autogen.sh 2010-03-30 17:32:02.733918042 +1100
+@@ -0,0 +1,4 @@
++#! /bin/sh
++
++autoreconf -v -i -s
++./configure $*
+\ No newline at end of file
+diff -urNad gnome-keyring-sharp-1.0.0~/configure.ac gnome-keyring-sharp-1.0.0/configure.ac
+--- gnome-keyring-sharp-1.0.0~/configure.ac 2008-08-09 03:36:12.000000000 +1000
++++ gnome-keyring-sharp-1.0.0/configure.ac 2010-03-30 17:32:02.733918042 +1100
+@@ -3,6 +3,9 @@
+ AC_INIT(src/Gnome.Keyring/Ring.cs)
+ AC_CANONICAL_SYSTEM
+
++AC_PROG_CC
++AC_PROG_LIBTOOL
++
+ API_VERSION=1.0
+ VERSION=$API_VERSION.0
+
+@@ -47,28 +50,13 @@
+ GACUTIL_FLAGS='/gacdir $(DESTDIR)$(prefix)'
+ AC_SUBST(GACUTIL_FLAGS)
+
+-#
+-# Use D-Bus as a fallback to get the keyring socket address
+-#
+-AC_ARG_ENABLE(dbus,
+- [ --enable-dbus[[=no/yes]] compile with D-Bus support [[default: yes]]],
+- ENABLE_DBUS="$enableval")
+-AM_CONDITIONAL(ENABLE_DBUS, test "x$ENABLE_DBUS" != "xno")
+-
+-CSFLAGS=
+-DBUS_LIBS=
+-if test "x$ENABLE_DBUS" != "xno" ; then
+- PKG_CHECK_MODULES(DBUS, ndesk-dbus-1.0 >= 0.4, HAVE_DBUS="yes", HAVE_DBUS="no")
+-
+- if test "x$HAVE_DBUS" = "xno"; then
+- AC_MSG_ERROR($DBUS_PKG_ERRORS: consider passing --enable-dbus=no to configure)
+- fi
++PKG_CHECK_MODULES(GLIB_SHARP, [glib-sharp-2.0])
++PKG_CHECK_MODULES(GNOME_KEYRING, [gnome-keyring-1])
+
+- CSFLAGS=" -d:WITH_DBUS "
+-fi
+ AC_SUBST(CSFLAGS)
+-AC_SUBST(DBUS_LIBS)
+-
++AC_SUBST(GLIB_SHARP_LIBS)
++AC_SUBST(GNOME_KEYRING_CFLAGS)
++AC_SUBST(GNOME_KEYRING_LIBS)
+
+ AC_PATH_PROG(MDASSEMBLER, mdassembler, no)
+ AC_PATH_PROG(MONODOCER, monodocer, no)
+@@ -91,6 +79,7 @@
+ src/gnome-keyring-sharp-1.0.pc
+ src/Gnome.Keyring/Makefile
+ src/Gnome.Keyring/AssemblyInfo.cs
++ gnome-keyring-sharp-glue/Makefile
+ docs/Makefile
+ sample/Makefile
+ ])
+diff -urNad gnome-keyring-sharp-1.0.0~/gnome-keyring-sharp-glue/Makefile.am gnome-keyring-sharp-1.0.0/gnome-keyring-sharp-glue/Makefile.am
+--- gnome-keyring-sharp-1.0.0~/gnome-keyring-sharp-glue/Makefile.am 1970-01-01 10:00:00.000000000 +1000
++++ gnome-keyring-sharp-1.0.0/gnome-keyring-sharp-glue/Makefile.am 2010-03-30 17:32:02.733918042 +1100
+@@ -0,0 +1,6 @@
++lib_LTLIBRARIES = libgnome-keyring-sharp-glue.la
++
++libgnome_keyring_sharp_glue_la_SOURCES = glue.c
++libgnome_keyring_sharp_glue_la_LDFLAGS = -module -avoid-version -no-undefined
++libgnome_keyring_sharp_glue_la_LIBADD = $(GNOME_KEYRING_LIBS)
++libgnome_keyring_sharp_glue_la_CFLAGS = $(GNOME_KEYRING_CFLAGS)
+diff -urNad gnome-keyring-sharp-1.0.0~/gnome-keyring-sharp-glue/glue.c gnome-keyring-sharp-1.0.0/gnome-keyring-sharp-glue/glue.c
+--- gnome-keyring-sharp-1.0.0~/gnome-keyring-sharp-glue/glue.c 1970-01-01 10:00:00.000000000 +1000
++++ gnome-keyring-sharp-1.0.0/gnome-keyring-sharp-glue/glue.c 2010-03-30 17:32:02.733918042 +1100
+@@ -0,0 +1,36 @@
++#include <gnome-keyring.h>
++
++gpointer gks_attribute_list_new ()
++{
++ return gnome_keyring_attribute_list_new ();
++}
++
++gint32 gks_item_attribute_list_get_length (GnomeKeyringAttributeList *attrs)
++{
++ return (*attrs).len;
++}
++
++gboolean gks_item_attribute_list_index_is_string (GnomeKeyringAttributeList *attrs, gint32 index)
++{
++ return gnome_keyring_attribute_list_index (attrs, index).type == GNOME_KEYRING_ATTRIBUTE_TYPE_STRING;
++}
++
++gboolean gks_item_attribute_list_index_is_uint32 (GnomeKeyringAttributeList *attrs, gint32 index)
++{
++ return gnome_keyring_attribute_list_index (attrs, index).type == GNOME_KEYRING_ATTRIBUTE_TYPE_UINT32;
++}
++
++char * gks_item_attribute_list_get_index_string (GnomeKeyringAttributeList *attrs, gint32 index)
++{
++ return gnome_keyring_attribute_list_index (attrs, index).value.string;
++}
++
++guint32 gks_item_attribute_list_get_index_uint32 (GnomeKeyringAttributeList *attrs, gint32 index)
++{
++ return gnome_keyring_attribute_list_index (attrs, index).value.integer;
++}
++
++char * gks_item_attribute_list_get_index_key (GnomeKeyringAttributeList *attrs, gint32 index)
++{
++ return gnome_keyring_attribute_list_index (attrs, index).name;
++}
+diff -urNad gnome-keyring-sharp-1.0.0~/src/Gnome.Keyring/Makefile.am gnome-keyring-sharp-1.0.0/src/Gnome.Keyring/Makefile.am
+--- gnome-keyring-sharp-1.0.0~/src/Gnome.Keyring/Makefile.am 2008-08-09 03:36:12.000000000 +1000
++++ gnome-keyring-sharp-1.0.0/src/Gnome.Keyring/Makefile.am 2010-03-30 17:32:02.733918042 +1100
+@@ -10,8 +10,5 @@
+ KeyringInfo.cs \
+ NetItemData.cs \
+ NoteItemData.cs \
+- Operation.cs \
+- RequestMessage.cs \
+- ResponseMessage.cs \
+ ResultCode.cs \
+ Ring.cs
+diff -urNad gnome-keyring-sharp-1.0.0~/src/Gnome.Keyring/Operation.cs gnome-keyring-sharp-1.0.0/src/Gnome.Keyring/Operation.cs
+--- gnome-keyring-sharp-1.0.0~/src/Gnome.Keyring/Operation.cs 2008-08-09 03:36:12.000000000 +1000
++++ gnome-keyring-sharp-1.0.0/src/Gnome.Keyring/Operation.cs 1970-01-01 10:00:00.000000000 +1000
+@@ -1,54 +0,0 @@
+-//
+-// Gnome.Keyring.Operation.cs
+-//
+-// Authors:
+-// Gonzalo Paniagua Javier (gonzalo@ximian.com)
+-//
+-// (C) Copyright 2006 Novell, Inc. (http://www.novell.com)
+-//
+-
+-// Permission is hereby granted, free of charge, to any person obtaining
+-// a copy of this software and associated documentation files (the
+-// "Software"), to deal in the Software without restriction, including
+-// without limitation the rights to use, copy, modify, merge, publish,
+-// distribute, sublicense, and/or sell copies of the Software, and to
+-// permit persons to whom the Software is furnished to do so, subject to
+-// the following conditions:
+-//
+-// The above copyright notice and this permission notice shall be
+-// included in all copies or substantial portions of the Software.
+-//
+-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+-//
+-
+-namespace Gnome.Keyring {
+- enum Operation {
+- LockAll,
+- SetDefaultKeyring,
+- GetDefaultKeyring,
+- ListKeyrings,
+- CreateKeyring,
+- LockKeyring,
+- UnlockKeyring,
+- DeleteKeyring,
+- GetKeyringInfo,
+- SetKeyringInfo,
+- ListItems,
+- Find,
+- CreateItem,
+- DeleteItem,
+- GetItemInfo,
+- SetItemInfo,
+- GetItemAttributes,
+- SetItemAttributes,
+- GetItemACL,
+- SetItemACL
+- }
+-}
+-
+diff -urNad gnome-keyring-sharp-1.0.0~/src/Gnome.Keyring/RequestMessage.cs gnome-keyring-sharp-1.0.0/src/Gnome.Keyring/RequestMessage.cs
+--- gnome-keyring-sharp-1.0.0~/src/Gnome.Keyring/RequestMessage.cs 2008-08-09 03:36:12.000000000 +1000
++++ gnome-keyring-sharp-1.0.0/src/Gnome.Keyring/RequestMessage.cs 1970-01-01 10:00:00.000000000 +1000
+@@ -1,173 +0,0 @@
+-//
+-// Gnome.Keyring.RequestMessage.cs
+-//
+-// Authors:
+-// Gonzalo Paniagua Javier (gonzalo@ximian.com)
+-//
+-// (C) Copyright 2006 Novell, Inc. (http://www.novell.com)
+-//
+-
+-// Permission is hereby granted, free of charge, to any person obtaining
+-// a copy of this software and associated documentation files (the
+-// "Software"), to deal in the Software without restriction, including
+-// without limitation the rights to use, copy, modify, merge, publish,
+-// distribute, sublicense, and/or sell copies of the Software, and to
+-// permit persons to whom the Software is furnished to do so, subject to
+-// the following conditions:
+-//
+-// The above copyright notice and this permission notice shall be
+-// included in all copies or substantial portions of the Software.
+-//
+-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+-//
+-
+-using System;
+-using System.Collections;
+-using System.IO;
+-using System.Text;
+-
+-namespace Gnome.Keyring {
+- class RequestMessage {
+- MemoryStream stream = new MemoryStream ();
+- int op_start = -1;
+-
+- public MemoryStream Stream {
+- get { return stream; }
+- }
+-
+- public void CreateSimpleOperation (Operation op)
+- {
+- StartOperation (op);
+- EndOperation ();
+- }
+-
+- public void CreateSimpleOperation (Operation op, string str1)
+- {
+- StartOperation (op);
+- Write (str1);
+- EndOperation ();
+- }
+-
+- public void CreateSimpleOperation (Operation op, string str1, string str2)
+- {
+- StartOperation (op);
+- Write (str1);
+- Write (str2);
+- EndOperation ();
+- }
+-
+- public void CreateSimpleOperation (Operation op, string str1, int i1)
+- {
+- StartOperation (op);
+- Write (str1);
+- Write (i1);
+- EndOperation ();
+- }
+-
+- public void StartOperation (Operation op)
+- {
+- string appname = Ring.ApplicationName;
+- BinaryWriter writer = new BinaryWriter (stream);
+- writer.Write (0);
+-
+- Write (appname);
+- int curpos = (int) stream.Position;
+- stream.Position = 0;
+- writer = new BinaryWriter (stream);
+- writer.Write (SwapBytes (curpos));
+- stream.Position = curpos;
+-
+- op_start = (int) stream.Length;
+- writer.Write (0);
+- writer.Write (SwapBytes ((int) op));
+- }
+-
+- public void EndOperation ()
+- {
+- int current = (int) stream.Length;
+- int size = SwapBytes (current - op_start);
+- stream.Position = op_start;
+- BinaryWriter writer = new BinaryWriter (stream);
+- writer.Write (size);
+- }
+-
+- public void Write (string str)
+- {
+- WriteString (new BinaryWriter (stream), str);
+- }
+-
+- static void WriteString (BinaryWriter writer, string str)
+- {
+- if (str == null) {
+- writer.Write ((int) -1);
+- return;
+- }
+- byte [] bytes = Encoding.UTF8.GetBytes (str);
+- writer.Write (SwapBytes (bytes.Length));
+- writer.Write (bytes);
+- }
+-
+- public void Write (int i)
+- {
+- BinaryWriter writer = new BinaryWriter (stream);
+- writer.Write (SwapBytes (i));
+- }
+-
+- public void WriteAttributes (Hashtable atts)
+- {
+- Hashtable copy = new Hashtable ();
+- foreach (string key in atts.Keys) {
+- object o = atts [key];
+- if (o != null)
+- copy [key] = o;
+-
+- }
+- BinaryWriter writer = new BinaryWriter (stream);
+- writer.Write (SwapBytes (copy.Count));
+- foreach (string key in copy.Keys) {
+- object o = atts [key];
+- if (o is string) {
+- EncodeAttribute (writer, key, (string) o);
+- } else if (o is int) {
+- int i = (int) o;
+- if (key == "port" && i == 0)
+- continue;
+- EncodeAttribute (writer, key, i);
+- } else {
+- throw new Exception ("Should not happen.");
+- }
+- }
+- }
+-
+- static void EncodeAttribute (BinaryWriter writer, string name, string val)
+- {
+- WriteString (writer, name);
+- writer.Write (SwapBytes ((int) AttributeType.String));
+- WriteString (writer, val);
+- }
+-
+- static void EncodeAttribute (BinaryWriter writer, string name, int val)
+- {
+- WriteString (writer, name);
+- writer.Write (SwapBytes ((int) AttributeType.UInt32));
+- writer.Write (SwapBytes (val));
+- }
+-
+- static int SwapBytes (int i)
+- {
+- byte b0 = (byte) ((i >> 24) & 0xFF);
+- byte b1 = (byte) ((i >> 16) & 0xFF);
+- byte b2 = (byte) ((i >> 8) & 0xFF);
+- byte b3 = (byte) (i & 0xFF);
+- return b0 + (b1 << 8) + (b2 << 16) + (b3 << 24);
+- }
+-
+- }
+-}
+-
+diff -urNad gnome-keyring-sharp-1.0.0~/src/Gnome.Keyring/ResponseMessage.cs gnome-keyring-sharp-1.0.0/src/Gnome.Keyring/ResponseMessage.cs
+--- gnome-keyring-sharp-1.0.0~/src/Gnome.Keyring/ResponseMessage.cs 2008-08-09 03:36:12.000000000 +1000
++++ gnome-keyring-sharp-1.0.0/src/Gnome.Keyring/ResponseMessage.cs 1970-01-01 10:00:00.000000000 +1000
+@@ -1,108 +0,0 @@
+-//
+-// Gnome.Keyring.ResponseMessage.cs
+-//
+-// Authors:
+-// Gonzalo Paniagua Javier (gonzalo@ximian.com)
+-//
+-// (C) Copyright 2006 Novell, Inc. (http://www.novell.com)
+-//
+-
+-// Permission is hereby granted, free of charge, to any person obtaining
+-// a copy of this software and associated documentation files (the
+-// "Software"), to deal in the Software without restriction, including
+-// without limitation the rights to use, copy, modify, merge, publish,
+-// distribute, sublicense, and/or sell copies of the Software, and to
+-// permit persons to whom the Software is furnished to do so, subject to
+-// the following conditions:
+-//
+-// The above copyright notice and this permission notice shall be
+-// included in all copies or substantial portions of the Software.
+-//
+-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+-//
+-
+-using System;
+-using System.Collections;
+-using System.IO;
+-using System.Text;
+-
+-using Mono.Unix.Native;
+-
+-namespace Gnome.Keyring {
+- class ResponseMessage {
+- byte [] buffer;
+- MemoryStream stream;
+-
+- public ResponseMessage (byte [] buffer)
+- {
+- this.buffer = buffer;
+- stream = new MemoryStream (buffer);
+- }
+-
+- public bool DataAvailable {
+- get { return (stream.Position < stream.Length); }
+- }
+-
+- public string [] GetStringList ()
+- {
+- int nstrings = GetInt32 ();
+- string [] list = new string [nstrings];
+- for (int i = 0; i < nstrings; i++) {
+- list [i] = GetString ();
+- }
+-
+- return list;
+- }
+-
+- public string GetString ()
+- {
+- int len = GetInt32 ();
+- if (len == -1) {
+- return null;
+- }
+- int offset = (int) stream.Position;
+- string result = Encoding.UTF8.GetString (buffer, offset, len);
+- stream.Position += len;
+- return result;
+- }
+-
+- public int GetInt32 ()
+- {
+- byte b3 = (byte) stream.ReadByte ();
+- byte b2 = (byte) stream.ReadByte ();
+- byte b1 = (byte) stream.ReadByte ();
+- byte b0 = (byte) stream.ReadByte ();
+- return (b0 + (b1 << 8) + (b2 << 16) + (b3 << 24));
+- }
+-
+- public DateTime GetDateTime ()
+- {
+- return NativeConvert.FromTimeT ((GetInt32 () << 32) + GetInt32 ());
+- }
+-
+- public void ReadAttributes (Hashtable tbl)
+- {
+- int natts = GetInt32 ();
+- for (int i = 0; i < natts; i++) {
+- object val;
+- string name = GetString ();
+- AttributeType type = (AttributeType) GetInt32 ();
+- if (AttributeType.String == type) {
+- val = GetString ();
+- } else if (type == AttributeType.UInt32) {
+- val = GetInt32 ();
+- } else {
+- throw new Exception ("This should not happen: " + type);
+- }
+- tbl [name] = val;
+- }
+- }
+- }
+-}
+-
+diff -urNad gnome-keyring-sharp-1.0.0~/src/Gnome.Keyring/Ring.cs gnome-keyring-sharp-1.0.0/src/Gnome.Keyring/Ring.cs
+--- gnome-keyring-sharp-1.0.0~/src/Gnome.Keyring/Ring.cs 2008-08-09 03:36:12.000000000 +1000
++++ gnome-keyring-sharp-1.0.0/src/Gnome.Keyring/Ring.cs 2010-03-30 17:32:02.733918042 +1100
+@@ -31,16 +31,16 @@
+
+ using System;
+ using System.Collections;
++using System.Collections.Generic;
+ using System.IO;
+ using System.Net;
+ using System.Net.Sockets;
+ using System.Reflection;
++using System.Runtime.InteropServices;
+
+ using Mono.Unix;
+
+-#if WITH_DBUS
+-using NDesk.DBus;
+-#endif
++using GLib;
+
+ namespace Gnome.Keyring {
+ public class Ring {
+@@ -70,394 +70,579 @@
+ }
+ }
+
++ [DllImport ("libgnome-keyring.dll")]
++ static extern bool gnome_keyring_is_available ();
++
+ public static bool Available {
+ get {
+- Socket sock = Connect ();
+- if (sock != null) {
+- sock.Close ();
+- return true;
+- }
+- return false;
+- }
+- }
+-
+- static Socket Connect ()
+- {
+- string filename;
+- Socket sock;
+-
+- filename = Environment.GetEnvironmentVariable ("GNOME_KEYRING_SOCKET");
+- sock = Connect (filename);
+-
+-#if WITH_DBUS
+- if (sock == null) {
+- try {
+- filename = Bus.Session.GetObject<IDaemon> ("org.gnome.keyring", new ObjectPath ("/org/gnome/keyring/daemon")).GetSocketPath ();
+- } catch (Exception) {
+- filename = null;
+- }
+- sock = Connect (filename);
+- }
+-#endif
+-
+- return sock;
+- }
+-
+- static Socket Connect (string filename)
+- {
+- if (filename == null || filename == "")
+- return null;
+-
+- EndPoint ep = new UnixEndPoint (filename);
+- Socket sock = new Socket (AddressFamily.Unix, SocketType.Stream, ProtocolType.IP);
+- try {
+- sock.Connect (ep);
+- } catch (Exception) {
+- sock.Close ();
+- return null;
+- }
+- return sock;
+- }
+-
+- static int GetInt32 (Socket sock)
+- {
+- byte [] cuatro = new byte [4];
+- if (sock.Receive (cuatro) != 4)
+- throw new KeyringException (ResultCode.IOError);
+- return (cuatro [3] + (cuatro [2] << 8) + (cuatro [1] << 16) + (cuatro [0] << 24));
+- }
+-
+- static byte [] one = new byte [1];
+- static ResponseMessage SendRequest (MemoryStream stream)
+- {
+- Socket sock = Connect ();
+- if (sock == null)
+- throw new KeyringException (ResultCode.NoKeyringDaemon);
+-
+- try {
+- sock.Send (one); // Credentials byte
+- byte [] buffer = stream.ToArray ();
+- sock.Send (buffer);
+- int packet_size = GetInt32 (sock) - 4;
+- if (packet_size < 0)
+- throw new KeyringException (ResultCode.IOError);
+- byte [] response = new byte [packet_size];
+- int nbytes = sock.Receive (response);
+- if (nbytes != response.Length)
+- throw new KeyringException (ResultCode.IOError);
+- ResponseMessage resp = new ResponseMessage (response);
+- ResultCode result = (ResultCode) resp.GetInt32 ();
+- if (result != 0)
+- throw new KeyringException (result);
+-
+- return resp;
+- } finally {
+- sock.Close ();
++ return gnome_keyring_is_available ();
+ }
+ }
+
++ [DllImport ("libgnome-keyring.dll")]
++ static extern ResultCode gnome_keyring_lock_all_sync ();
++
+ public static void LockAll ()
+ {
+- RequestMessage req = new RequestMessage ();
+- req.CreateSimpleOperation (Operation.LockAll);
+- SendRequest (req.Stream);
++ ResultCode result = gnome_keyring_lock_all_sync ();
++ if (result != ResultCode.Ok) {
++ throw new KeyringException (result);
++ }
+ }
+
++ [DllImport ("libgnome-keyring.dll")]
++ static extern ResultCode gnome_keyring_set_default_keyring_sync (string keyring);
++
+ public static void SetDefaultKeyring (string newKeyring)
+ {
+ if (newKeyring == null)
+ throw new ArgumentNullException ("newKeyring");
+- RequestMessage req = new RequestMessage ();
+- req.CreateSimpleOperation (Operation.SetDefaultKeyring, newKeyring);
+- SendRequest (req.Stream);
++ ResultCode result = gnome_keyring_set_default_keyring_sync (newKeyring);
++ if (result != ResultCode.Ok) {
++ throw new KeyringException (result);
++ }
+ }
+
++ [DllImport ("libgnome-keyring.dll")]
++ static extern ResultCode gnome_keyring_get_default_keyring_sync (out IntPtr keyring);
++
+ public static string GetDefaultKeyring ()
+ {
+- RequestMessage req = new RequestMessage ();
+- req.CreateSimpleOperation (Operation.GetDefaultKeyring);
+- ResponseMessage resp = SendRequest (req.Stream);
+- return resp.GetString ();
++ IntPtr keyring_name;
++ ResultCode result = gnome_keyring_get_default_keyring_sync (out keyring_name);
++ if (result != ResultCode.Ok) {
++ throw new KeyringException (result);
++ }
++ return GLib.Marshaller.PtrToStringGFree (keyring_name);
+ }
+
+- public static string [] GetKeyrings ()
++ [DllImport ("libgnome-keyring.dll")]
++ static extern ResultCode gnome_keyring_list_keyring_names_sync (out IntPtr keyringList);
++
++ [DllImport ("libgnome-keyring.dll")]
++ static extern void gnome_keyring_string_list_free (IntPtr stringList);
++
++ public static string[] GetKeyrings ()
+ {
+- RequestMessage req = new RequestMessage ();
+- req.CreateSimpleOperation (Operation.ListKeyrings);
+- ResponseMessage resp = SendRequest (req.Stream);
+- return resp.GetStringList ();
++ IntPtr keyring_list;
++ ResultCode result = gnome_keyring_list_keyring_names_sync (out keyring_list);
++ if (result != ResultCode.Ok) {
++ throw new KeyringException (result);
++ }
++ var retval = (string[])GLib.Marshaller.ListPtrToArray (keyring_list, typeof(GLib.List), false, false, typeof(string));
++ gnome_keyring_string_list_free (keyring_list);
++ return retval;
+ }
+
++ [DllImport ("libgnome-keyring.dll")]
++ static extern ResultCode gnome_keyring_create_sync (string keyringName, string password);
++
+ public static void CreateKeyring (string name, string password)
+ {
+- RequestMessage req = new RequestMessage ();
+- req.CreateSimpleOperation (Operation.CreateKeyring, name, password);
+- SendRequest (req.Stream);
++ ResultCode result = gnome_keyring_create_sync (name, password);
++ if (result != ResultCode.Ok) {
++ throw new KeyringException (result);
++ }
+ }
+-
++
++ [DllImport ("libgnome-keyring.dll")]
++ static extern ResultCode gnome_keyring_lock_sync (string keyring);
++
+ public static void Lock (string keyring)
+ {
+ if (keyring == null)
+ throw new ArgumentNullException ("keyring");
+
+- RequestMessage req = new RequestMessage ();
+- req.CreateSimpleOperation (Operation.LockKeyring, keyring);
+- SendRequest (req.Stream);
++ ResultCode result = gnome_keyring_lock_sync (keyring);
++ if (result != ResultCode.Ok) {
++ throw new KeyringException (result);
++ }
+ }
++
++ [DllImport ("libgnome-keyring.dll")]
++ static extern ResultCode gnome_keyring_unlock_sync (string keyring, string password);
+
+ public static void Unlock (string keyring, string password)
+ {
+- if (keyring == null)
+- throw new ArgumentNullException ("keyring");
+-
+- if (password == null)
+- throw new ArgumentNullException ("password");
+-
+- RequestMessage req = new RequestMessage ();
+- req.CreateSimpleOperation (Operation.UnlockKeyring, keyring, password);
+- try {
+- SendRequest (req.Stream);
+- } catch (KeyringException ke) {
+- if (ke.ResultCode != ResultCode.AlreadyUnlocked)
+- throw;
++ ResultCode result = gnome_keyring_unlock_sync (keyring, password);
++
++ if (!(result == ResultCode.Ok || result == ResultCode.AlreadyUnlocked)) {
++ throw new KeyringException (result);
+ }
+ }
+
++ [DllImport ("libgnome-keyring.dll")]
++ static extern ResultCode gnome_keyring_delete_sync (string keyring);
++
+ public static void DeleteKeyring (string keyring)
+ {
+ if (keyring == null)
+ throw new ArgumentNullException ("keyring");
+
+- RequestMessage req = new RequestMessage ();
+- req.CreateSimpleOperation (Operation.DeleteKeyring, keyring);
+- SendRequest (req.Stream);
++ ResultCode result = gnome_keyring_delete_sync (keyring);
++ if (result != ResultCode.Ok) {
++ throw new KeyringException (result);
++ }
+ }
+
+- public static int [] ListItemIDs (string keyring)
++ [DllImport ("libgnome-keyring.dll")]
++ static extern ResultCode gnome_keyring_list_item_ids_sync (string keyring, out IntPtr ids);
++
++ public static int[] ListItemIDs (string keyring)
+ {
+ if (keyring == null)
+ throw new ArgumentNullException ("keyring");
+
+- RequestMessage req = new RequestMessage ();
+- req.CreateSimpleOperation (Operation.ListItems, keyring);
+- ResponseMessage resp = SendRequest (req.Stream);
+- int len = resp.GetInt32 ();
+- int [] result = new int [len];
+- for (int i = 0; i < len; i++) {
+- result [i] = resp.GetInt32 ();
++ IntPtr idlist;
++ ResultCode result = gnome_keyring_list_item_ids_sync (keyring, out idlist);
++
++ if (result != ResultCode.Ok) {
++ throw new KeyringException (result);
+ }
+-
+- return result;
++
++ IntPtr[] ptrArray = (IntPtr[])GLib.Marshaller.ListPtrToArray (idlist, typeof(GLib.List), true, false, typeof(IntPtr));
++ int[] ids = new int[ptrArray.Length];
++ for (int i = 0; i < ptrArray.Length; i++) {
++ ids[i] = ptrArray[i].ToInt32 ();
++ }
++
++ return ids;
+ }
+
++
++ static void NativeListFromAttributes (IntPtr attrList, Hashtable attributes)
++ {
++ foreach (string key in attributes.Keys) {
++ if (attributes[key] is string) {
++ gnome_keyring_attribute_list_append_string (attrList, key, (string)attributes[key]);
++ } else if (attributes[key] is int) {
++ gnome_keyring_attribute_list_append_uint32 (attrList, key, (uint)((int)attributes[key]));
++ } else {
++ throw new ArgumentException (String.Format ("Attribute \"{0}\" has invalid parameter type: {1}", key, attributes[key].GetType ()));
++ }
++ }
++ }
++
++ static void AttributesFromNativeList (IntPtr attrList, Hashtable attributes)
++ {
++ int listLength = gks_item_attribute_list_get_length (attrList);
++ for (int i = 0; i < listLength; i++) {
++ string key = Marshal.PtrToStringAnsi (gks_item_attribute_list_get_index_key (attrList, i));
++ if (gks_item_attribute_list_index_is_string (attrList, i)) {
++ attributes[key] = Marshal.PtrToStringAnsi (gks_item_attribute_list_get_index_string (attrList, i));
++ } else if (gks_item_attribute_list_index_is_uint32 (attrList, i)) {
++ attributes[key] = (int)gks_item_attribute_list_get_index_uint32 (attrList, i);
++ }
++ }
++ }
++
++ [StructLayout(LayoutKind.Sequential)]
++ struct GnomeKeyringFound
++ {
++ public IntPtr keyring;
++ public UInt32 item_id;
++ public IntPtr attrList;
++ public IntPtr secret;
++ }
++
++ [DllImport ("libgnome-keyring.dll")]
++ static extern ResultCode gnome_keyring_find_items_sync (ItemType type, IntPtr attrList, out IntPtr foundList);
++ [DllImport ("libgnome-keyring.dll")]
++ static extern void gnome_keyring_found_list_free (IntPtr foundList);
++
+ static ItemData [] empty_item_data = new ItemData [0];
+- public static ItemData [] Find (ItemType type, Hashtable atts)
++ public static ItemData[] Find (ItemType type, Hashtable atts)
+ {
+ if (atts == null)
+ throw new ArgumentNullException ("atts");
+- RequestMessage req = new RequestMessage ();
+- req.StartOperation (Operation.Find);
+- req.Write ((int) type);
+- req.WriteAttributes (atts);
+- req.EndOperation ();
+-
+- ResponseMessage resp = null;
+- try {
+- resp = SendRequest (req.Stream);
+- } catch (KeyringException ke) {
+- if (ke.ResultCode == ResultCode.Denied)
+- return empty_item_data;
+- throw;
++
++ IntPtr passwordList;
++ IntPtr attrList = gks_attribute_list_new ();
++
++ NativeListFromAttributes (attrList, atts);
++
++ ResultCode result = gnome_keyring_find_items_sync (type, attrList, out passwordList);
++
++ if (result == ResultCode.Denied) {
++ return empty_item_data;
++ }
++
++ if (result != ResultCode.Ok) {
++ throw new KeyringException (result);
++ }
++
++ IntPtr[] passwordStructs = (IntPtr[])GLib.Marshaller.ListPtrToArray (passwordList, typeof(GLib.List), false, false, typeof(IntPtr));
++ List<GnomeKeyringFound> passwords = new List<GnomeKeyringFound> ();
++
++ foreach (IntPtr ptr in passwordStructs) {
++ passwords.Add ((GnomeKeyringFound)Marshal.PtrToStructure (ptr, typeof(GnomeKeyringFound)));
+ }
+
+ ArrayList list = new ArrayList ();
+- while (resp.DataAvailable) {
++ foreach (var password in passwords) {
+ ItemData found = ItemData.GetInstanceFromItemType (type);
+- found.Keyring = resp.GetString ();
+- found.ItemID = resp.GetInt32 ();
+- found.Secret = resp.GetString ();
++ found.ItemID = (int)password.item_id;
++ found.Secret = Marshal.PtrToStringAnsi (password.secret);
++ found.Keyring = Marshal.PtrToStringAnsi (password.keyring);
+ found.Attributes = new Hashtable ();
+- resp.ReadAttributes (found.Attributes);
++ AttributesFromNativeList (password.attrList, found.Attributes);
+ found.SetValuesFromAttributes ();
+ list.Add (found);
+ }
+
++ gnome_keyring_found_list_free (passwordList);
++ gnome_keyring_attribute_list_free (attrList);
++
+ return (ItemData []) list.ToArray (typeof (ItemData));
+ }
+
++ [StructLayout (LayoutKind.Sequential)]
++ struct GnomeKeyringNetworkPasswordData
++ {
++ public IntPtr keyring;
++ public UInt32 item_id;
++
++ public IntPtr protocol;
++ public IntPtr server;
++ public IntPtr @object;
++ public IntPtr authtype;
++ public UInt32 port;
++
++ public IntPtr user;
++ public IntPtr domain;
++ public IntPtr password;
++ }
++
++ [DllImport ("libgnome-keyring.dll")]
++ static extern ResultCode gnome_keyring_find_network_password_sync (string user, string domain, string server,
++ string @object, string protocol, string authtype, UInt32 port, out IntPtr passwordList);
++
+ static NetItemData [] empty_net_item_data = new NetItemData [0];
+- public static NetItemData [] FindNetworkPassword (string user, string domain, string server, string obj,
++ public static NetItemData[] FindNetworkPassword (string user, string domain, string server, string obj,
+ string protocol, string authtype, int port)
+ {
+- RequestMessage req = new RequestMessage ();
+- req.StartOperation (Operation.Find);
+- req.Write ((int) ItemType.NetworkPassword);
+- Hashtable tbl = new Hashtable ();
+- tbl ["user"] = user;
+- tbl ["domain"] = domain;
+- tbl ["server"] = server;
+- tbl ["object"] = obj;
+- tbl ["protocol"] = protocol;
+- tbl ["authtype"] = authtype;
+- if (port != 0)
+- tbl ["port"] = port;
+- req.WriteAttributes (tbl);
+- req.EndOperation ();
+-
+- ResponseMessage resp = null;
+- try {
+- resp = SendRequest (req.Stream);
+- } catch (KeyringException ke) {
+- if (ke.ResultCode == ResultCode.Denied)
+- return empty_net_item_data;
+- throw;
++ IntPtr passwordList;
++
++ ResultCode result = gnome_keyring_find_network_password_sync (user, domain, server, obj, protocol, authtype, (uint)port, out passwordList);
++
++ if (result == ResultCode.Denied) {
++ return empty_net_item_data;
++ }
++
++ if (result != ResultCode.Ok) {
++ throw new KeyringException (result);
+ }
++
++ IntPtr[] passwordStructs = (IntPtr[])GLib.Marshaller.ListPtrToArray (passwordList, typeof(GLib.List), false, false, typeof(IntPtr));
++ List<GnomeKeyringNetworkPasswordData> passwords = new List<GnomeKeyringNetworkPasswordData> ();
++
++ foreach (IntPtr ptr in passwordStructs) {
++ passwords.Add ((GnomeKeyringNetworkPasswordData)Marshal.PtrToStructure (ptr, typeof(GnomeKeyringNetworkPasswordData)));
++ }
++
+ ArrayList list = new ArrayList ();
+- while (resp.DataAvailable) {
++ foreach (var password in passwords) {
+ NetItemData found = new NetItemData ();
+- found.Keyring = resp.GetString ();
+- found.ItemID = resp.GetInt32 ();
+- found.Secret = resp.GetString ();
++ found.Keyring = Marshal.PtrToStringAnsi (password.keyring);
++ found.ItemID = (int)password.item_id;
++ found.Secret = Marshal.PtrToStringAnsi (password.password);
+ found.Attributes = new Hashtable ();
+- resp.ReadAttributes (found.Attributes);
++
++ SetAttributeIfNonNull (found.Attributes, "protocol", password.protocol);
++ SetAttributeIfNonNull (found.Attributes, "server", password.server);
++ SetAttributeIfNonNull (found.Attributes, "object", password.@object);
++ SetAttributeIfNonNull (found.Attributes, "authtype", password.authtype);
++ SetAttributeIfNonNull (found.Attributes, "user", password.user);
++ SetAttributeIfNonNull (found.Attributes, "domain", password.domain);
++
++ if (password.port != 0) {
++ found.Attributes["port"] = (int)password.port;
++ }
++
+ found.SetValuesFromAttributes ();
+ list.Add (found);
+ }
+
+ return (NetItemData []) list.ToArray (typeof (NetItemData));
+ }
++
++ static void SetAttributeIfNonNull (Hashtable attrs, string key, IntPtr maybeString)
++ {
++ if (maybeString != IntPtr.Zero) {
++ attrs[key] = Marshal.PtrToStringAnsi (maybeString);
++ }
++ }
+
++ [DllImport ("libgnome-keyring.dll")]
++ static extern ResultCode gnome_keyring_item_create_sync (string keyring,
++ ItemType type,
++ string displayName,
++ IntPtr attributes,
++ IntPtr secret,
++ bool updateIfExists,
++ out UInt32 itemId);
++
++ [DllImport ("libgnome-keyring.dll")]
++ static extern IntPtr gnome_keyring_memory_strdup (string str);
++ [DllImport ("libgnome-keyring.dll")]
++ static extern void gnome_keyring_memory_free (IntPtr str);
++ [DllImport ("libgnome-keyring.dll")]
++ static extern void gnome_keyring_attribute_list_append_string (IntPtr attributes, string name, string val);
++ [DllImport("libgnome-keyring.dll")]
++ static extern void gnome_keyring_attribute_list_append_uint32 (IntPtr attributes, string name, UInt32 val);
++ [DllImport ("libgnome-keyring.dll")]
++ static extern void gnome_keyring_attribute_list_free (IntPtr attributes);
++ [DllImport ("gnome-keyring-sharp-glue.dll")]
++ static extern IntPtr gks_attribute_list_new ();
++
+ public static int CreateItem (string keyring, ItemType type, string displayName, Hashtable attributes,
+ string secret, bool updateIfExists)
+ {
+- RequestMessage req = new RequestMessage ();
+- req.StartOperation (Operation.CreateItem);
+- req.Write (keyring);
+- req.Write (displayName);
+- req.Write (secret);
+- req.WriteAttributes (attributes);
+- req.Write ((int) type);
+- req.Write (updateIfExists ? 1 : 0);
+- req.EndOperation ();
+- ResponseMessage resp = SendRequest (req.Stream);
+- return resp.GetInt32 ();
++ uint id;
++ IntPtr secure_secret = gnome_keyring_memory_strdup (secret);
++ IntPtr attrs = gks_attribute_list_new ();
++
++ NativeListFromAttributes (attrs, attributes);
++
++ ResultCode result = gnome_keyring_item_create_sync (keyring, type, displayName, attrs, secure_secret, updateIfExists, out id);
++
++ gnome_keyring_attribute_list_free (attrs);
++ gnome_keyring_memory_free (secure_secret);
++
++ if (result != ResultCode.Ok) {
++ throw new KeyringException (result);
++ }
++
++ return (int)id;
+ }
+
++ [DllImport ("libgnome-keyring.dll")]
++ static extern ResultCode gnome_keyring_item_delete_sync (string keyring, UInt32 id);
++
+ public static void DeleteItem (string keyring, int id)
+ {
+ if (keyring == null)
+ throw new ArgumentNullException ("keyring");
+
+- RequestMessage req = new RequestMessage ();
+- req.CreateSimpleOperation (Operation.DeleteItem, keyring, id);
+- SendRequest (req.Stream);
++ ResultCode result = gnome_keyring_item_delete_sync (keyring, (uint)id);
++
++ if (result != ResultCode.Ok) {
++ throw new KeyringException (result);
++ }
+ }
+
++ [DllImport ("libgnome-keyring.dll")]
++ static extern ResultCode gnome_keyring_set_network_password_sync (string keyring,
++ string user,
++ string domain,
++ string server,
++ string @object,
++ string protocol,
++ string authType,
++ UInt32 port,
++ string password,
++ out UInt32 id);
++
+ public static int CreateOrModifyNetworkPassword (string keyring, string user, string domain, string server, string obj,
+ string protocol, string authtype, int port, string password)
+ {
+- Hashtable tbl = new Hashtable ();
+- tbl ["user"] = user;
+- tbl ["domain"] = domain;
+- tbl ["server"] = server;
+- tbl ["object"] = obj;
+- tbl ["protocol"] = protocol;
+- tbl ["authtype"] = authtype;
+- if (port != 0)
+- tbl ["port"] = port;
+-
+- string display_name;
+- if (port != 0)
+- display_name = String.Format ("{0}@{1}:{3}/{2}", user, server, obj, port);
+- else
+- display_name = String.Format ("{0}@{1}/{2}", user, server, obj);
+-
+- return CreateItem (keyring, ItemType.NetworkPassword, display_name, tbl, password, true);
++ uint id;
++ ResultCode result = gnome_keyring_set_network_password_sync (keyring, user, domain, server, obj, protocol, authtype, (uint)port, password, out id);
++
++ if (result != ResultCode.Ok) {
++ throw new KeyringException (result);
++ }
++
++ return (int)id;
+ }
+
++ [DllImport ("libgnome-keyring.dll")]
++ static extern ResultCode gnome_keyring_item_get_info_sync (string keyring, UInt32 id, out IntPtr itemInfo);
++ [DllImport ("libgnome-keyring.dll")]
++ static extern ItemType gnome_keyring_item_info_get_type (IntPtr itemInfo);
++ [DllImport("libgnome-keyring.dll")]
++ static extern IntPtr gnome_keyring_item_info_get_ctime (IntPtr itemInfo);
++ [DllImport("libgnome-keyring.dll")]
++ static extern IntPtr gnome_keyring_item_info_get_mtime (IntPtr itemInfo);
++ [DllImport("libgnome-keyring.dll")]
++ static extern IntPtr gnome_keyring_item_info_get_display_name (IntPtr itemInfo);
++ [DllImport("libgnome-keyring.dll")]
++ static extern IntPtr gnome_keyring_item_info_get_secret (IntPtr itemInfo);
++ [DllImport("libgnome-keyring.dll")]
++ static extern void gnome_keyring_item_info_free (IntPtr itemInfo);
++
+ public static ItemData GetItemInfo (string keyring, int id)
+ {
+ if (keyring == null)
+ throw new ArgumentNullException ("keyring");
+
+- RequestMessage req = new RequestMessage ();
+- req.CreateSimpleOperation (Operation.GetItemInfo, keyring, id);
+- ResponseMessage resp = SendRequest (req.Stream);
+- ItemType itype = (ItemType) resp.GetInt32 ();
+- ItemData item = ItemData.GetInstanceFromItemType (itype);
+- string name = resp.GetString ();
+- string secret = resp.GetString ();
+- DateTime mtime = resp.GetDateTime ();
+- DateTime ctime = resp.GetDateTime ();
++ IntPtr itemInfo;
++
++ ResultCode result = gnome_keyring_item_get_info_sync (keyring, (uint)id, out itemInfo);
++
++ if (result != ResultCode.Ok) {
++ throw new KeyringException (result);
++ }
++
++ ItemData item = ItemData.GetInstanceFromItemType (gnome_keyring_item_info_get_type (itemInfo));
++ item.Attributes = new Hashtable ();
++ item.Attributes["keyring_ctime"] = GLib.Marshaller.time_tToDateTime (gnome_keyring_item_info_get_ctime (itemInfo));
++ item.Attributes["keyring_mtime"] = GLib.Marshaller.time_tToDateTime (gnome_keyring_item_info_get_mtime (itemInfo));
++ item.Attributes["name"] = Marshal.PtrToStringAnsi (gnome_keyring_item_info_get_display_name (itemInfo));
++
+ item.Keyring = keyring;
+ item.ItemID = id;
+- item.Secret = secret;
+- Hashtable tbl = new Hashtable ();
+- tbl ["name"] = name;
+- tbl ["keyring_ctime"] = ctime;
+- tbl ["keyring_mtime"] = mtime;
+- item.Attributes = tbl;
++ item.Secret = Marshal.PtrToStringAnsi (gnome_keyring_item_info_get_secret (itemInfo));
++
+ item.SetValuesFromAttributes ();
++
++ gnome_keyring_item_info_free (itemInfo);
++
+ return item;
+ }
++
++ [DllImport ("libgnome-keyring.dll")]
++ static extern ResultCode gnome_keyring_item_set_info_sync (string keyring, UInt32 id, IntPtr itemInfo);
++ [DllImport ("libgnome-keyring.dll")]
++ static extern IntPtr gnome_keyring_item_info_new ();
++ [DllImport ("libgnome-keyring.dll")]
++ static extern void gnome_keyring_item_info_set_display_name (IntPtr itemInfo, string displayName);
++ [DllImport("libgnome-keyring.dll")]
++ static extern void gnome_keyring_item_info_set_type (IntPtr itemInfo, ItemType type);
++ [DllImport("libgnome-keyring.dll")]
++ static extern void gnome_keyring_item_info_set_secret (IntPtr itemInfo, string secret);
+
+ public static void SetItemInfo (string keyring, int id, ItemType type, string displayName, string secret)
+ {
+ if (keyring == null)
+ throw new ArgumentNullException ("keyring");
+
+- RequestMessage req = new RequestMessage ();
+- req.StartOperation (Operation.SetItemInfo);
+- req.Write (keyring);
+- req.Write (id);
+- req.Write ((int) type);
+- req.Write (displayName);
+- req.Write (secret);
+- req.EndOperation ();
+- SendRequest (req.Stream);
++ IntPtr itemInfo = gnome_keyring_item_info_new ();
++ gnome_keyring_item_info_set_display_name (itemInfo, displayName);
++ gnome_keyring_item_info_set_type (itemInfo, type);
++ gnome_keyring_item_info_set_secret (itemInfo, secret);
++
++ ResultCode result = gnome_keyring_item_set_info_sync (keyring, (uint)id, itemInfo);
++
++ gnome_keyring_item_info_free (itemInfo);
++
++ if (result != ResultCode.Ok) {
++ throw new KeyringException (result);
++ }
+ }
+
++ [DllImport ("libgnome-keyring.dll")]
++ static extern ResultCode gnome_keyring_item_get_attributes_sync (string keyring, UInt32 id, out IntPtr attributes);
++ [DllImport ("gnome-keyring-sharp-glue.dll")]
++ static extern int gks_item_attribute_list_get_length (IntPtr attrList);
++ [DllImport ("gnome-keyring-sharp-glue.dll")]
++ static extern bool gks_item_attribute_list_index_is_string (IntPtr attrList, int index);
++ [DllImport("gnome-keyring-sharp-glue.dll")]
++ static extern bool gks_item_attribute_list_index_is_uint32 (IntPtr attrList, int index);
++ [DllImport ("gnome-keyring-sharp-glue.dll")]
++ static extern IntPtr gks_item_attribute_list_get_index_string (IntPtr attrList, int index);
++ [DllImport ("gnome-keyring-sharp-glue.dll")]
++ static extern UInt32 gks_item_attribute_list_get_index_uint32 (IntPtr attrList, int index);
++ [DllImport ("gnome-keyring-sharp-glue.dll")]
++ static extern IntPtr gks_item_attribute_list_get_index_key (IntPtr attrList, int index);
++
+ public static Hashtable GetItemAttributes (string keyring, int id)
+ {
+ if (keyring == null)
+ throw new ArgumentNullException ("keyring");
+
+- RequestMessage req = new RequestMessage ();
+- req.CreateSimpleOperation (Operation.GetItemAttributes, keyring, id);
+- ResponseMessage resp = SendRequest (req.Stream);
+- Hashtable tbl = new Hashtable ();
+- resp.ReadAttributes (tbl);
+- return tbl;
++ IntPtr attributes;
++ Hashtable retVal = new Hashtable ();
++
++ ResultCode result = gnome_keyring_item_get_attributes_sync (keyring, (uint)id, out attributes);
++
++ if (result != ResultCode.Ok) {
++ throw new KeyringException (result);
++ }
++
++ AttributesFromNativeList (attributes, retVal);
++
++ gnome_keyring_attribute_list_free (attributes);
++
++ return retVal;
+ }
+
++ [DllImport ("libgnome-keyring.dll")]
++ static extern ResultCode gnome_keyring_item_set_attributes_sync (string keyring, UInt32 id, IntPtr attrList);
++
+ public static void SetItemAttributes (string keyring, int id, Hashtable atts)
+ {
+ if (keyring == null)
+ throw new ArgumentNullException ("keyring");
+
+- RequestMessage req = new RequestMessage ();
+- req.StartOperation (Operation.SetItemAttributes);
+- req.Write (keyring);
+- req.Write (id);
+- req.WriteAttributes (atts);
+- req.EndOperation ();
+- SendRequest (req.Stream);
++ IntPtr attrList = gks_attribute_list_new ();
++ foreach (string key in atts.Keys) {
++ if (atts[key] is string) {
++ gnome_keyring_attribute_list_append_string (attrList, key, (string)atts[key]);
++ } else if (atts[key] is int) {
++ gnome_keyring_attribute_list_append_uint32 (attrList, key, (uint)((int)atts[key]));
++ } else {
++ throw new ArgumentException (String.Format ("Attribute \"{0}\" has invalid parameter type: {1}", key, atts[key].GetType ()));
++ }
++ }
++
++ ResultCode result = gnome_keyring_item_set_attributes_sync (keyring, (uint)id, attrList);
++
++ gnome_keyring_attribute_list_free (attrList);
++
++ if (result != ResultCode.Ok) {
++ throw new KeyringException (result);
++ }
+ }
+
++ [DllImport ("libgnome-keyring.dll")]
++ static extern ResultCode gnome_keyring_get_info_sync (string keyringName, out IntPtr keyringInfo);
++ [DllImport ("libgnome-keyring.dll")]
++ static extern void gnome_keyring_info_free (IntPtr keyringInfo);
++ [DllImport ("libgnome-keyring.dll")]
++ static extern IntPtr gnome_keyring_info_get_ctime (IntPtr keyringInfo);
++ [DllImport ("libgnome-keyring.dll")]
++ static extern IntPtr gnome_keyring_info_get_mtime (IntPtr keyringInfo);
++ [DllImport ("libgnome-keyring.dll")]
++ static extern int gnome_keyring_info_get_lock_timeout (IntPtr keyringInfo);
++ [DllImport("libgnome-keyring.dll")]
++ static extern bool gnome_keyring_info_get_is_locked (IntPtr keyringInfo);
++ [DllImport("libgnome-keyring.dll")]
++ static extern bool gnome_keyring_info_get_lock_on_idle (IntPtr keyringInfo);
++
+ public static KeyringInfo GetKeyringInfo (string keyring)
+ {
+ if (keyring == null)
+ throw new ArgumentNullException ("keyring");
+
+- RequestMessage req = new RequestMessage ();
+- req.CreateSimpleOperation (Operation.GetKeyringInfo, keyring);
+- ResponseMessage resp = SendRequest (req.Stream);
+- return new KeyringInfo (keyring, (resp.GetInt32 () != 0),
+- resp.GetInt32 (),
+- resp.GetDateTime (),
+- resp.GetDateTime (),
+- (resp.GetInt32 () != 0));
++ IntPtr keyring_info = IntPtr.Zero;
++ ResultCode result = gnome_keyring_get_info_sync (keyring, out keyring_info);
++
++ if (result != ResultCode.Ok) {
++ throw new KeyringException (result);
++ }
++
++ DateTime ctime = GLib.Marshaller.time_tToDateTime (gnome_keyring_info_get_ctime (keyring_info));
++ DateTime mtime = GLib.Marshaller.time_tToDateTime (gnome_keyring_info_get_mtime (keyring_info));
++ KeyringInfo retval = new KeyringInfo (keyring,
++ gnome_keyring_info_get_lock_on_idle (keyring_info),
++ gnome_keyring_info_get_lock_timeout (keyring_info),
++ mtime,
++ ctime,
++ gnome_keyring_info_get_is_locked (keyring_info)
++ );
++
++
++ gnome_keyring_info_free (keyring_info);
++ return retval;
+ }
++
++ [DllImport ("libgnome-keyring.dll")]
++ static extern ResultCode gnome_keyring_set_info_sync (string keyring, IntPtr keyringInfo);
++ [DllImport ("libgnome-keyring.dll")]
++ static extern void gnome_keyring_info_set_lock_timeout (IntPtr keyringInfo, UInt32 timeout);
++ [DllImport ("libgnome-keyring.dll")]
++ static extern void gnome_keyring_info_set_lock_on_idle (IntPtr keyringInfo, bool lockOnIdle);
+
+ public static void SetKeyringInfo (string keyring, KeyringInfo info)
+ {
+@@ -467,41 +652,47 @@
+ if (info == null)
+ throw new ArgumentNullException ("info");
+
+- RequestMessage req = new RequestMessage ();
+- req.StartOperation (Operation.SetKeyringInfo);
+- req.Write (keyring);
+- req.Write (info.LockOnIdle ? 1 : 0);
+- req.Write (info.LockTimeoutSeconds);
+- req.EndOperation ();
+- SendRequest (req.Stream);
++
++ IntPtr keyring_info;
++ ResultCode result = gnome_keyring_get_info_sync (keyring, out keyring_info);
++
++ if (result != ResultCode.Ok) {
++ throw new KeyringException (result);
++ }
++
++ gnome_keyring_info_set_lock_timeout (keyring_info, (uint)info.LockTimeoutSeconds);
++ gnome_keyring_info_set_lock_on_idle (keyring_info, info.LockOnIdle);
++
++ result = gnome_keyring_set_info_sync (keyring, keyring_info);
++
++ gnome_keyring_info_free (keyring_info);
++
++ if (result != ResultCode.Ok) {
++ throw new KeyringException (result);
++ }
+ }
+
++ [Obsolete ("Item ACLs are deprecated. GetItemACL never returns any ACLs")]
+ public static ArrayList GetItemACL (string keyring, int id)
+ {
+ if (keyring == null)
+ throw new ArgumentNullException ("keyring");
+
+- RequestMessage req = new RequestMessage ();
+- req.CreateSimpleOperation (Operation.GetItemACL, keyring, id);
+- ResponseMessage resp = SendRequest (req.Stream);
+- int count = resp.GetInt32 ();
+- ArrayList list = new ArrayList (count);
+- for (int i = 0; i < count; i++) {
+- list.Add (new ItemACL (resp.GetString (), resp.GetString (), (AccessRights) resp.GetInt32 ()));
+- }
+- return list;
++ return new ArrayList ();
+ }
+
++ [Obsolete("Item ACLs are deprecated. SetItemACL has no effect.")]
+ public static void SetItemACL (string keyring, int id, ICollection acls)
+ {
+ if (acls == null)
+ throw new ArgumentNullException ("acls");
+
+- ItemACL [] arr = new ItemACL [acls.Count];
++ ItemACL[] arr = new ItemACL[acls.Count];
+ acls.CopyTo (arr, 0);
+ SetItemACL (keyring, id, arr);
+ }
+-
++
++ [Obsolete("Item ACLs are deprecated. SetItemACL has no effect.")]
+ public static void SetItemACL (string keyring, int id, ItemACL [] acls)
+ {
+ if (keyring == null)
+@@ -512,28 +703,6 @@
+
+ if (acls.Length == 0)
+ throw new ArgumentException ("Empty ACL set.", "acls");
+-
+- RequestMessage req = new RequestMessage ();
+- req.StartOperation (Operation.SetItemACL);
+- req.Write (keyring);
+- req.Write (id);
+- req.Write (acls.Length);
+- foreach (ItemACL acl in acls) {
+- req.Write (acl.DisplayName);
+- req.Write (acl.FullPath);
+- req.Write ((int) acl.Access);
+- }
+- req.EndOperation ();
+- SendRequest (req.Stream);
+ }
+ }
+-
+-#if WITH_DBUS
+- [Interface ("org.gnome.keyring.Daemon")]
+- interface IDaemon
+- {
+- string GetSocketPath ();
+- }
+-#endif
+ }
+-
+diff -urNad gnome-keyring-sharp-1.0.0~/src/Gnome.Keyring.dll.config gnome-keyring-sharp-1.0.0/src/Gnome.Keyring.dll.config
+--- gnome-keyring-sharp-1.0.0~/src/Gnome.Keyring.dll.config 1970-01-01 10:00:00.000000000 +1000
++++ gnome-keyring-sharp-1.0.0/src/Gnome.Keyring.dll.config 2010-03-30 17:34:12.346423305 +1100
+@@ -0,0 +1,4 @@
++<configuration>
++ <dllmap dll="libgnome-keyring.dll" target="libgnome-keyring.so.0"/>
++ <dllmap dll="gnome-keyring-sharp-glue.dll" target="libgnome-keyring-sharp-glue.so"/>
++</configuration>
+diff -urNad gnome-keyring-sharp-1.0.0~/src/Makefile.am gnome-keyring-sharp-1.0.0/src/Makefile.am
+--- gnome-keyring-sharp-1.0.0~/src/Makefile.am 2008-08-09 03:36:12.000000000 +1000
++++ gnome-keyring-sharp-1.0.0/src/Makefile.am 2010-03-30 17:32:02.733918042 +1100
+@@ -5,13 +5,13 @@
+ SNK=$(ASSEMBLY_NAME).snk
+
+ pkgconfigdir=$(libdir)/pkgconfig
+-CSFLAGS+= -debug+ -debug:full -nologo -r:Mono.Posix.dll
++CSFLAGS += -debug+ -debug:full -nologo -r:Mono.Posix.dll
+
+ pkgconfig_DATA = gnome-keyring-sharp-1.0.pc
+
+-CLEANFILES = $(ASSEMBLY_NAME).*
++CLEANFILES = $(ASSEMBLY_NAME).dll $(ASSEMBLY_NAME).dll.mdb $(ASSEMBLY_NAME).snk
+
+-gnomekeyring_references = $(DBUS_LIBS)
++gnomekeyring_references = $(GLIB_SHARP_LIBS)
+
+ gnomekeyring_sources = \
+ Gnome.Keyring/AccessRights.cs \
+@@ -24,9 +24,6 @@
+ Gnome.Keyring/KeyringInfo.cs \
+ Gnome.Keyring/NetItemData.cs \
+ Gnome.Keyring/NoteItemData.cs \
+- Gnome.Keyring/Operation.cs \
+- Gnome.Keyring/RequestMessage.cs \
+- Gnome.Keyring/ResponseMessage.cs \
+ Gnome.Keyring/ResultCode.cs \
+ Gnome.Keyring/Ring.cs
+
+@@ -50,3 +47,4 @@
+ echo "$(GACUTIL) /u $(ASSEMBLY_NAME) $(GACUTIL_FLAGS)"; \
+ $(GACUTIL) /u $(ASSEMBLY_NAME) /package $(PACKAGE)-$(API_VERSION) $(GACUTIL_FLAGS) || exit 1;
+
++EXTRA_DIST=Gnome.Keyring.dll.config
diff --git a/extra/gnome-keyring-sharp/PKGBUILD b/extra/gnome-keyring-sharp/PKGBUILD
new file mode 100644
index 000000000..e8d024129
--- /dev/null
+++ b/extra/gnome-keyring-sharp/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 104610 2011-01-04 16:15:34Z ibiru $
+# Maintainer: Ionut Biru <ibiru@archlinux.org>
+pkgname=gnome-keyring-sharp
+pkgver=1.0.2
+pkgrel=2
+pkgdesc="A fully managed implementation of libgnome-keyring"
+arch=('i686' 'x86_64')
+url="http://www.mono-project.com/Libraries"
+license=('custom')
+depends=('ndesk-dbus>=0.4' 'libgnome-keyring')
+makedepends=('gtk-sharp-2')
+replaces=('gnome-keyring-sharp-svn')
+source=(http://www.go-mono.com/archive/${pkgname}/${pkgname}-${pkgver}.tar.gz)
+options=('!makeflags')
+md5sums=('f9a48319f3fe6123017b000d714d68b1')
+
+build() {
+ export MONO_SHARED_DIR="${srcdir}/.wapi"
+ mkdir -p "${MONO_SHARED_DIR}"
+
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc --disable-static
+ make
+ make DESTDIR="${pkgdir}" install
+ rm -rf "${MONO_SHARED_DIR}"
+ ln -sf gnome-keyring-sharp-1.0.pc "${pkgdir}/usr/lib/pkgconfig/gnome-keyring-sharp.pc"
+ install -Dm644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/license
+}
diff --git a/extra/gnome-keyring/PKGBUILD b/extra/gnome-keyring/PKGBUILD
new file mode 100644
index 000000000..5da3d2855
--- /dev/null
+++ b/extra/gnome-keyring/PKGBUILD
@@ -0,0 +1,28 @@
+#$Id: PKGBUILD 97123 2010-10-26 16:27:27Z ibiru $
+# Maintainer: Jan De Groot <jgc@archlinux.org>
+
+pkgname=gnome-keyring
+pkgver=2.32.1
+pkgrel=1
+pkgdesc="GNOME Password Management daemon"
+arch=(i686 x86_64)
+license=('GPL' 'LGPL')
+depends=('gtk2>=2.22.0' 'dconf')
+makedepends=('intltool' 'pkgconfig' 'python2')
+groups=('gnome')
+options=('!libtool' '!emptydirs')
+url="http://www.gnome.org"
+install=gnome-keyring.install
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.32/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('31fecec1430a97f59a6159a5a2ea8d6a1b44287f1e9e595b3594df46bf7f18f9')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-static \
+ --libexecdir=/usr/lib/gnome-keyring \
+ --with-pam-dir=/lib/security --with-root-certs=/etc/ssl/certs \
+ --disable-schemas-compile
+ make
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/gnome-keyring/gnome-keyring.install b/extra/gnome-keyring/gnome-keyring.install
new file mode 100644
index 000000000..e5204bcab
--- /dev/null
+++ b/extra/gnome-keyring/gnome-keyring.install
@@ -0,0 +1,11 @@
+post_install() {
+ usr/bin/glib-compile-schemas usr/share/glib-2.0/schemas
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ post_install $1
+}
diff --git a/extra/gnome-mag/PKGBUILD b/extra/gnome-mag/PKGBUILD
new file mode 100644
index 000000000..eb14dcf95
--- /dev/null
+++ b/extra/gnome-mag/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 74622 2010-03-31 19:18:45Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=gnome-mag
+pkgver=0.16.1
+pkgrel=1
+pkgdesc="Gnome magnifier"
+arch=(i686 x86_64)
+license=('GPL')
+url="http://www.gnome.org"
+depends=('at-spi>=1.30.0')
+makedepends=('intltool' 'pkgconfig')
+options=('!libtool')
+groups=('gnome-extra')
+source=(http://ftp.gnome.org/pub/gnome/sources/gnome-mag/0.16/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('92541c30a70a6cf59ec3fb3f46d27a598173984f786f7c6bc1bd3e4be65ad3fa')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/gnome-media/PKGBUILD b/extra/gnome-media/PKGBUILD
new file mode 100644
index 000000000..66e8ef31c
--- /dev/null
+++ b/extra/gnome-media/PKGBUILD
@@ -0,0 +1,71 @@
+# $Id: PKGBUILD 104482 2011-01-03 16:03:30Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgbase=gnome-media
+pkgname=(gnome-media gnome-media-pulse)
+pkgver=2.32.0
+pkgrel=3
+pkgdesc="GNOME Media Tools"
+arch=('i686' 'x86_64')
+license=('GPL')
+depends=('gstreamer0.10-good-plugins>=0.10.24' 'gstreamer0.10-base-plugins>=0.10.30' 'libcanberra>=0.25' 'hicolor-icon-theme')
+makedepends=('intltool' 'pkgconfig' 'gnome-doc-utils>=0.20.1' 'libunique>=1.1.6' 'libpulse')
+url="http://www.gnome.org"
+groups=('gnome')
+options=('!libtool' '!emptydirs')
+install=gnome-media.install
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgbase}/2.32/${pkgbase}-${pkgver}.tar.bz2
+ gnome_volume_control_fix_channel_bars.patch)
+sha256sums=('2b0ad4decd75406398f46e82a170e53bcbc6e1bdc3363f03a07b00f59c2fe5e6'
+ '51e59fb42114d70118f4b750a06a33e0e40b0a03ed6509dc1348c641cc274d74' )
+
+build() {
+ cd "${srcdir}"
+ patch -Np0 -i "${srcdir}/gnome_volume_control_fix_channel_bars.patch"
+ cp -a "${pkgbase}-${pkgver}"{,-pulse}
+
+ cd "${pkgbase}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --libexecdir=/usr/lib/gnome-media \
+ --localstatedir=/var --disable-static \
+ --disable-scrollkeeper --disable-pulseaudio
+ make
+
+ cd "${srcdir}/${pkgbase}-${pkgver}-pulse"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --libexecdir=/usr/lib/gnome-media \
+ --localstatedir=/var --disable-static \
+ --disable-scrollkeeper --enable-pulseaudio
+ make
+}
+
+_commonpackage() {
+ 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/${pkgbase}.schemas" --domain gnome-media-2.0 ${pkgdir}/etc/gconf/schemas/*.schemas
+ rm -f ${pkgdir}/etc/gconf/schemas/*.schemas
+
+ # remove it from Xfce menu that ships its own thingy
+ echo "NotShowIn=XFCE" >> ${pkgdir}/usr/share/applications/gnome-volume-control.desktop
+}
+
+package_gnome-media() {
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ _commonpackage
+}
+
+package_gnome-media-pulse() {
+ pkgdesc+=" with PulseAudio support"
+ depends+=(libpulse)
+ groups=(pulseaudio-gnome)
+ conflicts=(gnome-media)
+ provides=("gnome-media=${pkgver}-${pkgrel}")
+
+ cd "${srcdir}/${pkgbase}-${pkgver}-pulse"
+ _commonpackage
+
+ # Install missing icon
+ install -Dm644 \
+ gst-mixer/icons/16x16/status/audio-input-microphone-muted.png \
+ "${pkgdir}/usr/share/icons/hicolor/16x16/status/audio-input-microphone-muted.png"
+}
diff --git a/extra/gnome-media/gnome-media.install b/extra/gnome-media/gnome-media.install
new file mode 100644
index 000000000..97488b6d0
--- /dev/null
+++ b/extra/gnome-media/gnome-media.install
@@ -0,0 +1,22 @@
+pkgname=gnome-media
+
+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/extra/gnome-media/gnome_volume_control_fix_channel_bars.patch b/extra/gnome-media/gnome_volume_control_fix_channel_bars.patch
new file mode 100644
index 000000000..9d3de0331
--- /dev/null
+++ b/extra/gnome-media/gnome_volume_control_fix_channel_bars.patch
@@ -0,0 +1,12 @@
+diff -aur gnome-media-2.32.0/gnome-volume-control/src/gvc-channel-bar.c gnome-media-2.32.0.new/gnome-volume-control/src/gvc-channel-bar.c
+--- gnome-media-2.32.0/gnome-volume-control/src/gvc-channel-bar.c 2010-09-28 15:46:15.000000000 +0100
++++ gnome-media-2.32.0.new/gnome-volume-control/src/gvc-channel-bar.c 2010-12-31 15:14:23.964994328 +0000
+@@ -449,7 +449,7 @@
+ /* Switch side scroll to vertical */
+ if (direction == GDK_SCROLL_RIGHT)
+ direction = GDK_SCROLL_UP;
+- else if (GDK_SCROLL_LEFT)
++ else if (direction == GDK_SCROLL_LEFT)
+ direction = GDK_SCROLL_DOWN;
+ }
+
diff --git a/extra/gnome-menus/PKGBUILD b/extra/gnome-menus/PKGBUILD
new file mode 100644
index 000000000..c7f0d577d
--- /dev/null
+++ b/extra/gnome-menus/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 101155 2010-11-28 13:11:57Z ibiru $
+# Maintainer: Jan de Groot <jan@archlinux.org>
+
+pkgname=gnome-menus
+pkgver=2.30.5
+pkgrel=1
+pkgdesc="GNOME menu specifications"
+arch=('i686' 'x86_64')
+depends=('pygtk>=2.22.0')
+makedepends=('pkg-config' 'intltool' 'gobject-introspection')
+options=('!libtool' '!makeflags')
+license=('GPL' 'LGPL')
+url="http://www.gnome.org"
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.30/${pkgname}-${pkgver}.tar.bz2
+ menus.patch)
+sha256sums=('6dcc565006d6e8c2025ae83ab1f82edf6bd04d61c804c0dc9bf5ea50629c4caa'
+ 'df2779777906b038fa911dc745534564ede9524a64ab368e2f6f8e38d54e7acc')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np0 -i "${srcdir}/menus.patch"
+ PYTHON=python2 ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var \
+ --disable-static
+ make
+ make DESTDIR="${pkgdir}" install
+
+ sed -i "s|#!/usr/bin/env python|#!/usr/bin/env python2|" \
+ $pkgdir/usr/lib/python2.7/site-packages/GMenuSimpleEditor/config.py
+}
diff --git a/extra/gnome-menus/menus.patch b/extra/gnome-menus/menus.patch
new file mode 100644
index 000000000..bf73e86cd
--- /dev/null
+++ b/extra/gnome-menus/menus.patch
@@ -0,0 +1,25 @@
+--- layout/applications.menu 2005-06-28 10:16:39.000000000 +0200
++++ layout/applications.menu 2005-09-12 23:21:20.000000000 +0200
+@@ -7,7 +7,6 @@
+ <Directory>Applications.directory</Directory>
+
+ <!-- Scan legacy dirs first, as later items take priority -->
+- <KDELegacyDirs/>
+ <LegacyDir>/etc/X11/applnk</LegacyDir>
+ <LegacyDir>/usr/share/gnome/apps</LegacyDir>
+
+@@ -18,6 +17,14 @@
+ <!-- Read in overrides and child menus from applications-merged/ -->
+ <DefaultMergeDirs/>
+
++ <!-- Archlinux submenu -->
++ <Menu>
++ <Name>Archlinux</Name>
++ <Directory>Archlinux.directory</Directory>
++ <Include>
++ <Category>Archlinux</Category>
++ </Include>
++ </Menu> <!-- End Archlinux -->
+ <!-- Accessories submenu -->
+ <Menu>
+ <Name>Accessories</Name>
diff --git a/extra/gnome-netstatus/PKGBUILD b/extra/gnome-netstatus/PKGBUILD
new file mode 100644
index 000000000..b661b1ee8
--- /dev/null
+++ b/extra/gnome-netstatus/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id: PKGBUILD 92034 2010-09-28 17:08:48Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=gnome-netstatus
+pkgver=2.28.2
+pkgrel=1
+pkgdesc="A GNOME applet that shows network status"
+arch=(i686 x86_64)
+license=('GPL')
+url="http://www.gnome.org"
+depends=('gnome-panel-bonobo>=2.32.0' 'hicolor-icon-theme')
+makedepends=('intltool' 'pkgconfig' 'gnome-doc-utils>=0.20.2')
+options=(!emptydirs)
+groups=('gnome-extra')
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.28/${pkgname}-${pkgver}.tar.bz2)
+install=gnome-netstatus.install
+sha256sums=('d1ad0a668a1344898d4f47b5591adddc7791edb6c2e92136ebcf8d278d959119')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --libexecdir=/usr/lib/gnome-netstatus \
+ --localstatedir=/var --disable-static \
+ --disable-scrollkeeper
+ make
+ 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-netstatus ${pkgdir}/etc/gconf/schemas/*.schemas
+ rm -f ${pkgdir}/etc/gconf/schemas/*.schemas
+}
diff --git a/extra/gnome-netstatus/gnome-netstatus.install b/extra/gnome-netstatus/gnome-netstatus.install
new file mode 100644
index 000000000..deb8b6773
--- /dev/null
+++ b/extra/gnome-netstatus/gnome-netstatus.install
@@ -0,0 +1,22 @@
+pkgname=gnome-netstatus
+
+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 --install ${pkgname}
+}
+
+post_remove() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
diff --git a/extra/gnome-nettool/PKGBUILD b/extra/gnome-nettool/PKGBUILD
new file mode 100644
index 000000000..757d378d7
--- /dev/null
+++ b/extra/gnome-nettool/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 91819 2010-09-28 07:23:49Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Kritoke <kritoke@nospam.gmail.com>
+
+pkgname=gnome-nettool
+pkgver=2.32.0
+pkgrel=1
+pkgdesc="A Collection of GNOME2 Networking Tools."
+arch=(i686 x86_64)
+license=('GPL')
+depends=('gconf>=2.32.0' 'libgtop>=2.28.1' 'dnsutils' 'netkit-bsd-finger' 'whois' 'hicolor-icon-theme')
+makedepends=('gnome-doc-utils>=0.20.1' 'pkgconfig' 'intltool')
+conflicts=('gnome-network')
+replaces=('gnome-netinfo')
+groups=('gnome-extra')
+url="http://www.gnome.org"
+install=gnome-nettool.install
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.32/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('8c70f85952760170114b2fa4be3ccaa3fc6298f802bacda2503ed482b8a0539c')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-scrollkeeper
+ make
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/gnome-nettool/gnome-nettool.install b/extra/gnome-nettool/gnome-nettool.install
new file mode 100644
index 000000000..d7d985045
--- /dev/null
+++ b/extra/gnome-nettool/gnome-nettool.install
@@ -0,0 +1,11 @@
+post_install() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ post_install
+}
diff --git a/extra/gnome-panel/PKGBUILD b/extra/gnome-panel/PKGBUILD
new file mode 100644
index 000000000..d7014aab0
--- /dev/null
+++ b/extra/gnome-panel/PKGBUILD
@@ -0,0 +1,54 @@
+# $Id: PKGBUILD 108473 2011-01-31 14:15:15Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgbase=gnome-panel
+pkgname=('gnome-panel' 'gnome-panel-bonobo')
+pkgver=2.32.1
+pkgrel=2
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://www.gnome.org"
+makedepends=('libwnck' 'gnome-menus' 'evolution-data-server' 'gnome-desktop' 'libgweather' 'librsvg' 'hicolor-icon-theme' 'libcanberra' 'libbonoboui' 'gnome-doc-utils' 'intltool' 'networkmanager' 'gobject-introspection')
+options=('!libtool' '!emptydirs')
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgbase}/2.32/${pkgbase}-${pkgver}.tar.bz2
+ evolution-appointments.patch)
+sha256sums=('8f7828eb7a21c817a73b697844a4e20256059b32386414a10f97d51e7d9fca5f'
+ 'c42168cc1377f9dfb2e02ed0b47ee89bdb89d46e82551b9582801fdc375294bb')
+
+build() {
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+
+ #https://bugzilla.gnome.org/show_bug.cgi?id=633566
+ patch -Np1 -i "${srcdir}/evolution-appointments.patch"
+
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-static \
+ --libexecdir=/usr/lib/gnome-panel \
+ --disable-scrollkeeper
+ make
+ sed -e 's/$(am__append_1)//' -i Makefile
+}
+
+package_gnome-panel() {
+ pkgdesc="The GNOME Panel"
+ depends=('gnome-menus>=2.30.5' 'gnome-desktop>=2.32.1' 'evolution-data-server>=2.32.1' 'librsvg>=2.32.1' 'libcanberra>=0.25' 'libwnck>=2.30.6' 'hicolor-icon-theme')
+ optdepends=('gnome-panel-bonobo: libbonoboui-based applet support')
+ groups=('gnome')
+ install=gnome-panel.install
+ cd "${srcdir}/${pkgbase}-${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-2.0 ${pkgdir}/etc/gconf/schemas/*.schemas
+ rm -f ${pkgdir}/etc/gconf/schemas/*.schemas
+}
+
+package_gnome-panel-bonobo() {
+ pkgdesc="Modules for libbonoboui-based applet support for the GNOME Panel"
+ depends=('libbonoboui>=2.24.3' "gnome-panel=${pkgver}")
+ conflicts=('gnome-panel<2.31.92')
+ install=gnome-panel-bonobo.install
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ make -C bonobo "${pkgdir}" DESTDIR="${pkgdir}" install
+}
diff --git a/extra/gnome-panel/evolution-appointments.patch b/extra/gnome-panel/evolution-appointments.patch
new file mode 100644
index 000000000..c4831adf2
--- /dev/null
+++ b/extra/gnome-panel/evolution-appointments.patch
@@ -0,0 +1,13 @@
+diff --git a/applets/clock/calendar-window.c b/applets/clock/calendar-window.c
+index 932ebda..bfad14e 100644
+--- a/applets/clock/calendar-window.c
++++ b/applets/clock/calendar-window.c
+@@ -450,6 +450,8 @@ is_appointment (GtkTreeModel *model,
+ gtk_tree_model_get (model, iter, APPOINTMENT_COLUMN_URI, &uri, -1);
+ if (uri)
+ return (g_ascii_strcasecmp (uri, "file") == 0 ||
++ g_ascii_strcasecmp (uri, "local") == 0 ||
++ g_ascii_strcasecmp (uri, "mapi") == 0 ||
+ g_ascii_strcasecmp (uri, "webcal") == 0 ||
+ g_ascii_strcasecmp (uri, "caldav") == 0 ||
+ g_ascii_strcasecmp (uri, "exchange") == 0 ||
diff --git a/extra/gnome-panel/gnome-panel-bonobo.install b/extra/gnome-panel/gnome-panel-bonobo.install
new file mode 100644
index 000000000..0bc8c431e
--- /dev/null
+++ b/extra/gnome-panel/gnome-panel-bonobo.install
@@ -0,0 +1,11 @@
+post_install() {
+ usr/bin/gio-querymodules usr/lib/gnome-panel/modules
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ post_install $1
+}
diff --git a/extra/gnome-panel/gnome-panel.install b/extra/gnome-panel/gnome-panel.install
new file mode 100644
index 000000000..7fef8cf05
--- /dev/null
+++ b/extra/gnome-panel/gnome-panel.install
@@ -0,0 +1,34 @@
+pkgname=gnome-panel
+
+post_install() {
+ GCONF_CONFIG_SOURCE=`usr/bin/gconftool-2 --get-default-source`
+ usr/bin/gconftool-2 --config-source="${GCONF_CONFIG_SOURCE}" --direct --load \
+ etc/gconf/schemas/panel-default-setup.entries >/dev/null
+ 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() {
+ GCONF_CONFIG_SOURCE=`usr/bin/gconftool-2 --get-default-source`
+ if [ -f opt/gnome/etc/gconf/schemas/panel-default-setup.entries ]; then
+ usr/bin/gconftool-2 --config-source="${GCONF_CONFIG_SOURCE}" --direct --unload \
+ opt/gnome/etc/gconf/schemas/panel-default-setup.entries >/dev/null
+ else
+ usr/bin/gconftool-2 --config-source="${GCONF_CONFIG_SOURCE}" --direct --unload \
+ etc/gconf/schemas/panel-default-setup.entries > /dev/null
+ fi
+ usr/sbin/gconfpkg --uninstall ${pkgname}
+}
+
+post_remove() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
diff --git a/extra/gnome-perl/PKGBUILD b/extra/gnome-perl/PKGBUILD
new file mode 100644
index 000000000..e4e4271a1
--- /dev/null
+++ b/extra/gnome-perl/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: PKGBUILD 104940 2011-01-05 16:02:27Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=gnome-perl
+_realname=Gnome2
+pkgver=1.042
+pkgrel=5
+pkgdesc="Perl bindings for libgnome"
+arch=('i686' 'x86_64')
+license=('LGPL')
+url="http://gtk2-perl.sourceforge.net/"
+makedepends=('perl-extutils-pkgconfig' 'perl-extutils-depends')
+depends=('gnomecanvas-perl' 'gnome-vfs-perl' 'libgnomeui' 'perl')
+options=('!emptydirs')
+source=(http://downloads.sourceforge.net/sourceforge/gtk2-perl/${_realname}-${pkgver}.tar.gz)
+md5sums=('eb7b624114e45e54e022a633ffc1cce6')
+
+build() {
+ cd "${srcdir}/${_realname}-${pkgver}"
+ perl Makefile.PL INSTALLDIRS=vendor
+ make
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/gnome-phone-manager/PKGBUILD b/extra/gnome-phone-manager/PKGBUILD
new file mode 100644
index 000000000..ac4f8d245
--- /dev/null
+++ b/extra/gnome-phone-manager/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 91582 2010-09-27 13:16:18Z ibiru $
+# Maintainer: Roman Kyrylych <roman@archlinux.org>
+
+pkgname=gnome-phone-manager
+pkgver=0.65
+pkgrel=3
+pkgdesc="Control your mobile phone from your GNOME 2 desktop."
+arch=('i686' 'x86_64')
+url="http://live.gnome.org/PhoneManager"
+license=('GPL')
+depends=('evolution-data-server>=2.31.92' 'gnokii>=0.6.29' 'gnome-bluetooth>=2.31.90' 'gnome-icon-theme>=2.30.3' 'gtkspell' 'libcanberra>=0.25' 'libglade')
+makedepends=('intltool')
+options=('!emptydirs')
+install=gnome-phone-manager.install
+source=(http://ftp.gnome.org/pub/GNOME/sources/gnome-phone-manager/0.65/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('7fd6854702446133511650e0a24698a71bf4096a11546a25b453d5dd74890e96')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var
+ make
+ make DESTDIR="${pkgdir}" install
+
+ install -m755 -d "${pkgdir}/usr/share/gconf/schemas"
+ gconf-merge-schema "${pkgdir}/usr/share/gconf/schemas/${pkgname}.schemas" --domain gnome-phone-manager ${pkgdir}/etc/gconf/schemas/*.schemas
+ rm -f ${pkgdir}/etc/gconf/schemas/*.schemas
+}
diff --git a/extra/gnome-phone-manager/gnome-phone-manager.install b/extra/gnome-phone-manager/gnome-phone-manager.install
new file mode 100644
index 000000000..91212fa2e
--- /dev/null
+++ b/extra/gnome-phone-manager/gnome-phone-manager.install
@@ -0,0 +1,17 @@
+pkgname=gnome-phone-manager
+
+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/extra/gnome-pilot/PKGBUILD b/extra/gnome-pilot/PKGBUILD
new file mode 100644
index 000000000..aa400cb3a
--- /dev/null
+++ b/extra/gnome-pilot/PKGBUILD
@@ -0,0 +1,35 @@
+# $Id: PKGBUILD 91505 2010-09-27 09:43:43Z ibiru $
+# Jan de Groot <jgc@archlinux.org>
+
+pkgname=gnome-pilot
+pkgver=2.32.0
+pkgrel=1
+pkgdesc="Pilot Support for Gnome"
+arch=(i686 x86_64)
+license=('GPL')
+depends=('pilot-link>=0.12.5' 'evolution-data-server>=2.31.92')
+makedepends=('pkgconfig' 'intltool' 'gob2' 'gnome-doc-utils>=0.20.1' 'gnome-panel-bonobo>=2.31.92')
+optdepends=('gnome-panel')
+options=('!libtool' '!emptydirs')
+url="http://www.gnome.org"
+install=gnome-pilot.install
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.32/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('2b62b1c3578f51c9eceaed4cb49c841ae700a172787a8bcdc04768c59cb26bbf')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --libexecdir=/usr/lib/gnome-pilot \
+ --localstatedir=/var --disable-static \
+ --without-hal
+ make
+ make GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 DESTDIR="${pkgdir}" install
+
+ rm -f "${pkgdir}/usr/share/applications/gpilot-applet.desktop"
+
+ 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
+
+ rm -f "${pkgdir}/usr/lib/gnome-pilot/gpilot-applet"
+}
diff --git a/extra/gnome-pilot/gnome-pilot.install b/extra/gnome-pilot/gnome-pilot.install
new file mode 100644
index 000000000..616daa0e4
--- /dev/null
+++ b/extra/gnome-pilot/gnome-pilot.install
@@ -0,0 +1,17 @@
+pkgname=gnome-pilot
+
+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/extra/gnome-power-manager/PKGBUILD b/extra/gnome-power-manager/PKGBUILD
new file mode 100644
index 000000000..f9aa58f27
--- /dev/null
+++ b/extra/gnome-power-manager/PKGBUILD
@@ -0,0 +1,37 @@
+# $Id: PKGBUILD 112791 2011-03-06 21:31:20Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=gnome-power-manager
+pkgver=2.32.0
+pkgrel=2
+pkgdesc="Session daemon that makes it easy to manage your laptop or desktop system."
+arch=(i686 x86_64)
+url="http://www.gnome.org/projects/gnome-power-manager/"
+license=('GPL')
+depends=('libnotify>=0.7.1' 'libunique>=1.1.6' 'libcanberra>=0.25' 'hicolor-icon-theme' 'upower>=0.9.5' 'libgnome-keyring>=2.31.92')
+makedepends=('intltool' 'pkgconfig' 'gnome-doc-utils>=0.20.1' 'gnome-panel-bonobo>=2.31.92')
+optdepends=('gnome-panel-bonobo: panel applets')
+options=(!emptydirs)
+install=gnome-power-manager.install
+groups=(gnome-extra)
+source=(http://ftp.gnome.org/pub/GNOME/sources/gnome-power-manager/2.32/${pkgname}-${pkgver}.tar.bz2
+ gnome-power-manager-2.32.0-libnotify-0.7.patch)
+sha256sums=('17fa301bf7e133285c0e054ae3be2b0f690c48f59b09f67e04d6ed339b330476'
+ '50e2f726281805f2b1eb3fbce2e8aa7a4258de12a20bb09e57527235c82760d2')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np0 -i "${srcdir}/gnome-power-manager-2.32.0-libnotify-0.7.patch"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var \
+ --libexecdir=/usr/lib/gnome-power-manager \
+ --disable-scrollkeeper \
+ --with-dbus-services=/usr/share/dbus-1/services \
+ --enable-applets
+ make
+ 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-power-manager ${pkgdir}/etc/gconf/schemas/*.schemas
+ rm -f ${pkgdir}/etc/gconf/schemas/*.schemas
+}
diff --git a/extra/gnome-power-manager/gnome-power-manager-2.32.0-libnotify-0.7.patch b/extra/gnome-power-manager/gnome-power-manager-2.32.0-libnotify-0.7.patch
new file mode 100644
index 000000000..d021f2930
--- /dev/null
+++ b/extra/gnome-power-manager/gnome-power-manager-2.32.0-libnotify-0.7.patch
@@ -0,0 +1,30 @@
+--- src/gpm-manager.c
++++ src/gpm-manager.c
+@@ -43,6 +43,10 @@
+ #include <libupower-glib/upower.h>
+ #include <libnotify/notify.h>
+
++#ifndef NOTIFY_CHECK_VERSION
++#define NOTIFY_CHECK_VERSION(x,y,z) 0
++#endif
++
+ #include "egg-debug.h"
+ #include "egg-console-kit.h"
+
+@@ -480,12 +484,16 @@
+ /* close any existing notification of this class */
+ gpm_manager_notify_close (manager, *notification_class);
+
++#if NOTIFY_CHECK_VERSION (0, 7, 0)
++ notification = notify_notification_new (title, message, icon);
++#else
+ /* if the status icon is hidden, don't point at it */
+ if (manager->priv->status_icon != NULL &&
+ gtk_status_icon_is_embedded (manager->priv->status_icon))
+ notification = notify_notification_new_with_status_icon (title, message, icon, manager->priv->status_icon);
+ else
+ notification = notify_notification_new (title, message, icon, NULL);
++#endif
+ notify_notification_set_timeout (notification, timeout);
+ notify_notification_set_urgency (notification, urgency);
+ g_signal_connect (notification, "closed", G_CALLBACK (gpm_manager_notification_closed_cb), notification_class);
diff --git a/extra/gnome-power-manager/gnome-power-manager.install b/extra/gnome-power-manager/gnome-power-manager.install
new file mode 100644
index 000000000..ee19ac94d
--- /dev/null
+++ b/extra/gnome-power-manager/gnome-power-manager.install
@@ -0,0 +1,22 @@
+pkgname=gnome-power-manager
+
+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/extra/gnome-python-desktop/PKGBUILD b/extra/gnome-python-desktop/PKGBUILD
new file mode 100644
index 000000000..8173d0d40
--- /dev/null
+++ b/extra/gnome-python-desktop/PKGBUILD
@@ -0,0 +1,163 @@
+# $Id: PKGBUILD 108483 2011-01-31 14:39:43Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Arjan Timmerman <arjan@soulfly.nl>
+# Contributor: Wael Nasreddine <gandalf@siemens-mobiles.org>
+
+pkgbase=gnome-python-desktop
+pkgname=('gnome-python-desktop' 'python-brasero' 'python-bugbuddy' 'python-evince' 'python-evolution' 'python-gnomeapplet' 'python-gnomedesktop' 'python-gnomekeyring' 'python-gtop' 'python-mediaprofiles' 'python-metacity' 'python-rsvg' 'python-totem-plparser' 'python-wnck' 'python-gtksourceview' 'python-gnomeprint')
+pkgver=2.32.0
+pkgrel=4
+arch=(i686 x86_64)
+license=('GPL' 'LGPL')
+options=('!libtool')
+makedepends=('intltool' 'pkg-config' 'gnome-media' 'gnome-panel-bonobo' 'gnome-python' 'gtksourceview' 'libgnomeprintui' 'libgtop' 'totem-plparser' 'evince' 'bug-buddy' 'brasero' 'gnome-desktop' 'metacity')
+url="http://www.gnome.org"
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgbase}/2.32/${pkgbase}-${pkgver}.tar.bz2)
+sha256sums=('09dbd580bf3b0ef60f91b090eafe6d08ddcc50a609e2b425a7f8eca46d4e0ee9')
+
+build() {
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ sed -i 's|evince-document-2.30|evince-document-2.32|g' configure
+ sed -i 's|evince-view-2.30|evince-view-2.32|g' configure
+ PYTHON=/usr/bin/python2 ./configure --prefix=/usr --enable-metacity
+ make
+}
+
+package_gnome-python-desktop() {
+ depends=('python-brasero' 'python-bugbuddy' 'python-evince' 'python-evolution' 'python-gnomeapplet' 'python-gnomedesktop' 'python-gnomekeyring' 'python-gtop' 'python-mediaprofiles' 'python-metacity' 'python-rsvg' 'python-totem-plparser' 'python-wnck' 'python-gtksourceview' 'python-gnomeprint' 'gnome-python')
+ pkgdesc="Python bindings for the GNOME desktop environment"
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ make install-pkgconfigDATA DESTDIR="${pkgdir}"
+}
+
+package_python-brasero() {
+ depends=('pygtk' 'brasero')
+ pkgdesc="Python bindings for brasero"
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ make -C braseroburn install DESTDIR="${pkgdir}"
+ make -C braseromedia install DESTDIR="${pkgdir}"
+}
+
+package_python-bugbuddy() {
+ depends=('pygtk' 'bug-buddy')
+ pkgdesc="Python module for bug-buddy"
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ make install-pkgpyexecPYTHON DESTDIR="${pkgdir}"
+}
+
+package_python-evince() {
+ depends=('pygtk' 'evince')
+ pkgdesc="Python bindings for evince"
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ make -C evince install DESTDIR="${pkgdir}"
+}
+
+package_python-evolution() {
+ depends=('pygtk' 'evolution-data-server' 'python2-bonobo')
+ pkgdesc="Python bindings for evolution"
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ make -C evolution install DESTDIR="${pkgdir}"
+ PYTHON=/usr/bin/python2 ./py-compile --destdir "${pkgdir}" --basedir /usr/lib/python2.7/site-packages/gtk-2.0 evolution/__init__.py
+ install -m644 evolution/ecal.defs "${pkgdir}/usr/share/pygtk/2.0/defs/"
+}
+
+package_python-gnomeapplet() {
+ depends=('pygtk' 'libgnomeui' 'gnome-panel-bonobo' 'python2-bonobo')
+ pkgdesc="Python bindings for gnome-panel"
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ make -C gnomeapplet install DESTDIR="${pkgdir}"
+}
+
+package_python-gnomedesktop() {
+ depends=('pygtk' 'gnome-desktop' 'python2-gnomevfs')
+ pkgdesc="Python bindings for gnome-desktop"
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ make -C gnomedesktop install DESTDIR="${pkgdir}"
+}
+
+package_python-gnomekeyring() {
+ depends=('pygtk' 'libgnome-keyring')
+ pkgdesc="Python bindings for libgnome-keyring"
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ make -C gnomekeyring install DESTDIR="${pkgdir}"
+}
+
+package_python-gtop() {
+ depends=('pygtk' 'libgtop')
+ pkgdesc="Python bindings for libgtop"
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ make -C gtop install DESTDIR="${pkgdir}"
+}
+
+package_python-mediaprofiles() {
+ depends=('pygtk' 'gnome-media')
+ pkgdesc="Python bindings for gnome-media"
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ make -C mediaprofiles install DESTDIR="${pkgdir}"
+}
+
+package_python-metacity() {
+ depends=('pygtk' 'metacity')
+ pkgdesc="Python bindings for metacity"
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ make -C metacity install DESTDIR="${pkgdir}"
+}
+
+package_python-rsvg() {
+ depends=('pygtk' 'librsvg')
+ pkgdesc="Python bindings for librsvg"
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ make -C rsvg install DESTDIR="${pkgdir}"
+ install -m755 -d "${pkgdir}/usr/share/pygtk/2.0/defs"
+ install -m644 rsvg/rsvg.defs "${pkgdir}/usr/share/pygtk/2.0/defs/"
+}
+
+package_python-totem-plparser() {
+ depends=('pygtk' 'totem-plparser' 'python2-gnomevfs')
+ pkgdesc="Python bindings for totem-plparser"
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ make -C totem install DESTDIR="${pkgdir}"
+ install -m755 -d "${pkgdir}/usr/share/pygtk/2.0/defs"
+ install -m644 totem/plparser.defs "${pkgdir}/usr/share/pygtk/2.0/defs/"
+}
+
+package_python-wnck() {
+ depends=('pygtk' 'libwnck')
+ pkgdesc="Python bindings for libwnck"
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ make -C wnck install DESTDIR="${pkgdir}"
+}
+
+package_python-gtksourceview() {
+ depends=('pygtk' 'gtksourceview' 'python-gnomeprint')
+ pkgdesc="Python bindings for gtksourceview"
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ for dir in gtksourceview docs/gtksourceview; do
+ make -C ${dir} install DESTDIR="${pkgdir}"
+ done
+}
+
+package_python-gnomeprint() {
+ depends=('pygtk' 'libgnomeprintui')
+ pkgdesc="Python bindings for libgnomeprintui"
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ for dir in gnomeprint docs/gnomeprint docs/gnomeprintui; do
+ make -C ${dir} install DESTDIR="${pkgdir}"
+ done
+}
diff --git a/extra/gnome-python-extras/PKGBUILD b/extra/gnome-python-extras/PKGBUILD
new file mode 100644
index 000000000..9114b9fe4
--- /dev/null
+++ b/extra/gnome-python-extras/PKGBUILD
@@ -0,0 +1,87 @@
+# $Id: PKGBUILD 115120 2011-03-17 01:42:57Z eric $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgbase=gnome-python-extras
+pkgname=('gnome-python-extras' 'python2-egg' 'python2-gda' 'python2-gdl' 'python2-gksu2' 'python2-gtkhtml2' 'python2-gtkmozembed' 'python2-gtkspell')
+pkgver=2.25.3
+pkgrel=9
+arch=('i686' 'x86_64')
+url="http://www.daa.com.au/~james/pygtk/"
+license=('GPL' 'LGPL')
+makedepends=('libgtkhtml' 'gtkspell' 'gdl' 'xulrunner>=1.9.2' 'libgksu' 'libgnomeui' 'libgda' 'python2' 'pygtk' 'gnome-python')
+options=('!libtool')
+source=(http://ftp.gnome.org/pub/gnome/sources/gnome-python-extras/2.25/gnome-python-extras-${pkgver}.tar.bz2
+ gnome-python-extras-2.25.3-update-for-2.27.2.patch)
+md5sums=('9f3b7ec5c57130b96061cb486b79c076' '0b0a4d93016d14f2306682301de3bda3')
+sha1sums=('e69e5288466c960ed6f985bb10c9969b21ed85a4' 'b065efb7f7f5baa7b95b63bcadb6a4623d1bc9e5')
+
+build() {
+ cd "${srcdir}/gnome-python-extras-${pkgver}"
+ patch -Np1 -i "${srcdir}"/gnome-python-extras-2.25.3-update-for-2.27.2.patch
+ PYTHON=/usr/bin/python2 ./configure --prefix=/usr
+ make MOZILLA_HOME=/usr/lib/xulrunner-2.0
+}
+
+package_gnome-python-extras() {
+ pkgdesc="Gnome Python interfaces for libraries not part of the core platform"
+ depends=('python2-egg' 'python2-gda' 'python2-gdl' 'python2-gksu2' 'python2-gtkhtml2' 'python2-gtkmozembed' 'python2-gtkspell')
+
+ cd "${srcdir}/gnome-python-extras-${pkgver}"
+ make install-pkgconfigDATA DESTDIR="${pkgdir}"
+}
+
+package_python2-egg(){
+ pkgdesc="Python bindings for interacting with egg"
+ depends=('libgnomeui' 'pygtk')
+
+ cd "${srcdir}/gnome-python-extras-${pkgver}"
+ make -C egg install DESTDIR="${pkgdir}"
+}
+
+package_python2-gda(){
+ pkgdesc="Python bindings for interacting with gda"
+ depends=('libgda' 'pygtk')
+
+ cd "${srcdir}/gnome-python-extras-${pkgver}"
+ make -C gda install DESTDIR="${pkgdir}"
+}
+
+package_python2-gdl() {
+ pkgdesc="Python bindings for gdl"
+ depends=('gdl' 'pygtk')
+
+ cd "${srcdir}/gnome-python-extras-${pkgver}"
+ make -C gdl install DESTDIR="${pkgdir}"
+}
+
+package_python2-gksu2() {
+ pkgdesc="Python bindings for the gksu2"
+ depends=('libgksu' 'pygtk')
+
+ cd "${srcdir}/gnome-python-extras-${pkgver}"
+ make -C gksu2 install DESTDIR="${pkgdir}"
+}
+
+package_python2-gtkhtml2() {
+ pkgdesc="Python bindings for the gtkhtml2"
+ depends=('libgtkhtml' 'pygtk')
+
+ cd "${srcdir}/gnome-python-extras-${pkgver}"
+ make -C gtkhtml2 install DESTDIR="${pkgdir}"
+}
+
+package_python2-gtkmozembed() {
+ pkgdesc="Python bindings for the gtkmozembed"
+ depends=('xulrunner>=1.9.2' 'pygtk')
+
+ cd "${srcdir}/gnome-python-extras-${pkgver}"
+ make -C gtkmozembed install DESTDIR="${pkgdir}"
+}
+
+package_python2-gtkspell() {
+ pkgdesc="Python bindings for the gtkspell"
+ depends=('gtkspell' 'pygtk')
+
+ cd "${srcdir}/gnome-python-extras-${pkgver}"
+ make -C gtkspell install DESTDIR="${pkgdir}"
+}
diff --git a/extra/gnome-python-extras/gnome-python-extras-2.25.3-update-for-2.27.2.patch b/extra/gnome-python-extras/gnome-python-extras-2.25.3-update-for-2.27.2.patch
new file mode 100644
index 000000000..5aa0b0dd4
--- /dev/null
+++ b/extra/gnome-python-extras/gnome-python-extras-2.25.3-update-for-2.27.2.patch
@@ -0,0 +1,145 @@
+diff -Nur gnome-python-extras-2.25.3.old/gdl/gdl.defs gnome-python-extras-2.25.3/gdl/gdl.defs
+--- gnome-python-extras-2.25.3.old/gdl/gdl.defs 2008-12-12 03:06:29.000000000 +0200
++++ gnome-python-extras-2.25.3/gdl/gdl.defs 2009-11-17 00:54:03.141234153 +0200
+@@ -46,13 +46,6 @@
+ (gtype-id "GDL_TYPE_DOCK_ITEM")
+ )
+
+-(define-object DockNotebook
+- (in-module "Gdl")
+- (parent "GdlDockItem")
+- (c-name "GdlDockNotebook")
+- (gtype-id "GDL_TYPE_DOCK_NOTEBOOK")
+-)
+-
+ (define-object Dock
+ (in-module "Gdl")
+ (parent "GdlDockObject")
+@@ -60,13 +53,6 @@
+ (gtype-id "GDL_TYPE_DOCK")
+ )
+
+-(define-object DockPaned
+- (in-module "Gdl")
+- (parent "GdlDockItem")
+- (c-name "GdlDockPaned")
+- (gtype-id "GDL_TYPE_DOCK_PANED")
+-)
+-
+ (define-object DockPlaceholder
+ (in-module "Gdl")
+ (parent "GdlDockObject")
+@@ -74,12 +60,6 @@
+ (gtype-id "GDL_TYPE_DOCK_PLACEHOLDER")
+ )
+
+-(define-object DockTablabel
+- (in-module "Gdl")
+- (parent "GtkBin")
+- (c-name "GdlDockTablabel")
+- (gtype-id "GDL_TYPE_DOCK_TABLABEL")
+-)
+
+ (ifdef HAVE_GDL_0_7
+
+@@ -590,18 +570,6 @@
+ (return-type "gboolean")
+ )
+
+-(define-method get_ui
+- (of-object "GdlDockLayout")
+- (c-name "gdl_dock_layout_get_ui")
+- (return-type "GtkWidget*")
+-)
+-
+-(define-method get_items_ui
+- (of-object "GdlDockLayout")
+- (c-name "gdl_dock_layout_get_items_ui")
+- (return-type "GtkWidget*")
+-)
+-
+ (define-method get_layouts_ui
+ (of-object "GdlDockLayout")
+ (c-name "gdl_dock_layout_get_layouts_ui")
+@@ -682,21 +650,6 @@
+
+
+
+-;; From gdl-dock-notebook.h
+-
+-(define-function gdl_dock_notebook_new
+- (c-name "gdl_dock_notebook_new")
+- (is-constructor-of "GdlDockNotebook")
+- (return-type "GtkWidget*")
+-)
+-
+-(define-function gdl_dock_notebook_get_type
+- (c-name "gdl_dock_notebook_get_type")
+- (return-type "GType")
+-)
+-
+-
+-
+ ;; From gdl-dock-object.h
+
+ (define-function gdl_dock_object_get_type
+@@ -848,24 +801,6 @@
+
+
+
+-;; From gdl-dock-paned.h
+-
+-(define-function gdl_dock_paned_get_type
+- (c-name "gdl_dock_paned_get_type")
+- (return-type "GType")
+-)
+-
+-(define-function gdl_dock_paned_new
+- (c-name "gdl_dock_paned_new")
+- (is-constructor-of "GdlDockPaned")
+- (return-type "GtkWidget*")
+- (properties
+- '("orientation")
+- )
+-)
+-
+-
+-
+ ;; From gdl-dock-placeholder.h
+
+ (define-function gdl_dock_placeholder_get_type
+@@ -896,34 +831,6 @@
+
+
+
+-;; From gdl-dock-tablabel.h
+-
+-(define-function gdl_dock_tablabel_new
+- (c-name "gdl_dock_tablabel_new")
+- (is-constructor-of "GdlDockTablabel")
+- (return-type "GtkWidget*")
+- (properties
+- '("item")
+- )
+-)
+-
+-(define-function gdl_dock_tablabel_get_type
+- (c-name "gdl_dock_tablabel_get_type")
+- (return-type "GType")
+-)
+-
+-(define-method activate
+- (of-object "GdlDockTablabel")
+- (c-name "gdl_dock_tablabel_activate")
+- (return-type "none")
+-)
+-
+-(define-method deactivate
+- (of-object "GdlDockTablabel")
+- (c-name "gdl_dock_tablabel_deactivate")
+- (return-type "none")
+-)
+-
+ ;; From gdl-icons.h
+
+ (ifdef HAVE_GDL_0_7
diff --git a/extra/gnome-python/PKGBUILD b/extra/gnome-python/PKGBUILD
new file mode 100644
index 000000000..b7a0e897f
--- /dev/null
+++ b/extra/gnome-python/PKGBUILD
@@ -0,0 +1,69 @@
+# $Id: PKGBUILD 107445 2011-01-25 10:20:52Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Sarah Hay <sarah@archlinux.org>
+
+pkgbase=gnome-python
+pkgname=('gnome-python' 'python2-bonobo' 'python2-gconf' 'python2-libgnome' 'python2-gnomecanvas' 'python2-gnomevfs')
+pkgver=2.28.1
+pkgrel=7
+arch=(i686 x86_64)
+license=('LGPL')
+makedepends=('pygtk' 'pyorbit' 'libgnomeui')
+options=('!libtool')
+url="http://www.pygtk.org/"
+source=(http://ftp.gnome.org/pub/gnome/sources/gnome-python/2.28/gnome-python-${pkgver}.tar.bz2)
+sha256sums=('759ce9344cbf89cf7f8449d945822a0c9f317a494f56787782a901e4119b96d8')
+
+build() {
+ cd "${srcdir}/gnome-python-${pkgver}"
+ PYTHON=python2 ./configure --prefix=/usr
+ make
+}
+
+package_gnome-python() {
+ pkgdesc="PyGNOME Python extension module"
+ depends=('python2-bonobo' 'python2-gconf' 'python2-libgnome' 'python2-gnomecanvas' 'python2-gnomevfs')
+
+ cd "${srcdir}/gnome-python-${pkgver}"
+ make install-pkgconfigDATA DESTDIR="${pkgdir}"
+}
+
+package_python2-bonobo(){
+ pkgdesc="Python bindings for interacting with Bonobo"
+ depends=('pygtk' 'libbonoboui' 'pyorbit' 'python2-gnomecanvas')
+
+ cd "${srcdir}/gnome-python-${pkgver}"
+ make -C bonobo install DESTDIR="${pkgdir}"
+}
+
+package_python2-gconf(){
+ pkgdesc="Python bindings for interacting with GConf"
+ depends=('pygtk' 'gconf')
+
+ cd "${srcdir}/gnome-python-${pkgver}"
+ make -C gconf install DESTDIR="${pkgdir}"
+}
+
+package_python2-libgnome() {
+ pkgdesc="Python bindings for libgnome"
+ depends=('pygtk' 'libgnomeui' 'python2-gnomevfs' 'python2-gnomecanvas' 'python2-bonobo')
+
+ cd "${srcdir}/gnome-python-${pkgver}"
+ make -C gnome install DESTDIR="${pkgdir}"
+}
+
+package_python2-gnomecanvas() {
+ pkgdesc="Python bindings for the GNOME Canvas"
+ depends=('pygtk' 'libgnomecanvas')
+
+ cd "${srcdir}/gnome-python-${pkgver}"
+ make -C gnomecanvas install DESTDIR="${pkgdir}"
+}
+
+package_python2-gnomevfs() {
+ pkgdesc="Python bindings for interacting with gnome-vfs"
+ depends=('python2' 'libbonobo' 'gnome-vfs')
+
+ cd "${srcdir}/gnome-python-${pkgver}"
+ make -C gnomevfs install DESTDIR="${pkgdir}"
+}
diff --git a/extra/gnome-screensaver/PKGBUILD b/extra/gnome-screensaver/PKGBUILD
new file mode 100644
index 000000000..703142f16
--- /dev/null
+++ b/extra/gnome-screensaver/PKGBUILD
@@ -0,0 +1,50 @@
+# $Id: PKGBUILD 112853 2011-03-07 09:08:52Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=gnome-screensaver
+pkgver=2.30.2
+pkgrel=2
+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=('gnome-menus>=2.30.4' 'libgnomekbd>=2.32.0' 'libgl' 'libnotify>=0.7.1' 'gnome-desktop>=2.32.0')
+makedepends=('pkgconfig' 'intltool' 'mesa' 'xscreensaver' 'libxss' 'libxslt')
+optdepends=('xscreensaver')
+groups=('gnome')
+options=(!emptydirs)
+install=gnome-screensaver.install
+source=(http://ftp.gnome.org/pub/GNOME/sources/${pkgname}/2.30/${pkgname}-${pkgver}.tar.bz2
+ gnome-screensaver.pam
+ gnome-screensaver-2.30.2-libnotify-0.7.patch)
+sha256sums=('dd52ef278b23ec5abe5974548c2d576eeaeb5294c85e9f2efd6231ecc9ca09fa'
+ '2744d1fc39da46fc681b7cf1c9230d2035b2bb8d9f510213fbe439c114eb76a2'
+ 'fd79843008fb93d6caa5f84dd4766c99895ce520517b17a2a334da8c869041bb')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i "${srcdir}/gnome-screensaver-2.30.2-libnotify-0.7.patch"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --libexecdir=/usr/lib/gnome-screensaver \
+ --localstatedir=/var \
+ --with-xscreensaverdir=/usr/share/xscreensaver/config \
+ --with-xscreensaverhackdir=/usr/lib/xscreensaver \
+ --with-mit-ext
+
+ make
+ make DESTDIR="${pkgdir}" install
+
+ install -m644 "${srcdir}/gnome-screensaver.pam" "${pkgdir}/etc/pam.d/gnome-screensaver"
+
+ #Migrate xscreensaver configuration files
+ sed -e 's|Exec=|Exec=/usr/lib/xscreensaver/|' \
+ -i data/xscreensaver-config.xsl
+ cd "${pkgdir}/usr/share/applications/screensavers"
+ "${srcdir}/${pkgname}-${pkgver}/data/migrate-xscreensaver-config.sh" \
+ /usr/share/xscreensaver/config/*.xml
+
+ install -m755 -d "${pkgdir}/usr/share/gconf/schemas"
+ gconf-merge-schema "${pkgdir}/usr/share/gconf/schemas/${pkgname}.schemas" --domain gnome-screensaver ${pkgdir}/etc/gconf/schemas/*.schemas
+ rm -f ${pkgdir}/etc/gconf/schemas/*.schemas
+}
diff --git a/extra/gnome-screensaver/gnome-screensaver-2.30.2-libnotify-0.7.patch b/extra/gnome-screensaver/gnome-screensaver-2.30.2-libnotify-0.7.patch
new file mode 100644
index 000000000..6eeb16819
--- /dev/null
+++ b/extra/gnome-screensaver/gnome-screensaver-2.30.2-libnotify-0.7.patch
@@ -0,0 +1,26 @@
+diff -Nur gnome-screensaver-2.30.2.orig/src/gs-lock-plug.c gnome-screensaver-2.30.2/src/gs-lock-plug.c
+--- gnome-screensaver-2.30.2.orig/src/gs-lock-plug.c 2010-09-28 13:36:51.000000000 -0700
++++ gnome-screensaver-2.30.2/src/gs-lock-plug.c 2011-03-07 00:54:44.086669840 -0800
+@@ -47,6 +47,10 @@
+ #include <libnotify/notify.h>
+ #endif
+
++#ifndef NOTIFY_CHECK_VERSION
++#define NOTIFY_CHECK_VERSION(x,y,z) 0
++#endif
++
+ #include "gs-lock-plug.h"
+
+ #include "gs-debug.h"
+@@ -1090,7 +1094,11 @@
+ strftime (summary, 128, "%X", tmp);
+
+ notify_init ("gnome-screensaver-dialog");
++#if NOTIFY_CHECK_VERSION (0, 7, 0)
++ note = notify_notification_new (summary, escaped_text, NULL);
++#else
+ note = notify_notification_new (summary, escaped_text, NULL, NULL);
++#endif
+ notify_notification_set_timeout (note, NOTIFY_EXPIRES_NEVER);
+ notify_notification_show (note, NULL);
+ g_object_unref (note);
diff --git a/extra/gnome-screensaver/gnome-screensaver.install b/extra/gnome-screensaver/gnome-screensaver.install
new file mode 100644
index 000000000..d79cf1a1e
--- /dev/null
+++ b/extra/gnome-screensaver/gnome-screensaver.install
@@ -0,0 +1,17 @@
+pkgname=gnome-screensaver
+
+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/extra/gnome-screensaver/gnome-screensaver.pam b/extra/gnome-screensaver/gnome-screensaver.pam
new file mode 100644
index 000000000..c776a5410
--- /dev/null
+++ b/extra/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/extra/gnome-session/PKGBUILD b/extra/gnome-session/PKGBUILD
new file mode 100644
index 000000000..d243882b2
--- /dev/null
+++ b/extra/gnome-session/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 99762 2010-11-17 12:08:07Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=gnome-session
+pkgver=2.32.1
+pkgrel=1
+pkgdesc="The GNOME Session Handler"
+arch=(i686 x86_64)
+license=('GPL' 'LGPL')
+depends=('upower>=0.9.7' 'gtk2>=2.22.0' 'gconf>=2.32.0' 'startup-notification>=0.10' 'hicolor-icon-theme' 'libxtst' 'polkit-gnome>=0.97')
+makedepends=('intltool' 'xtrans')
+options=('!emptydirs')
+install=gnome-session.install
+url="http://www.gnome.org"
+groups=('gnome')
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.32/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('22d93ce433fcf9c7ce6b5f36dd81f64e692ea0e41faaa0f61159ddac28c3686a')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \
+ --libexecdir=/usr/lib
+ make
+ make DESTDIR="${pkgdir}" GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 install
+
+ install -d -m755 "${pkgdir}/usr/share/gconf/schemas"
+ gconf-merge-schema "${pkgdir}/usr/share/gconf/schemas/${pkgname}.schemas" --domain gnome-session-2.0 ${pkgdir}/etc/gconf/schemas/*.schemas
+ rm -f ${pkgdir}/etc/gconf/schemas/*.schemas
+}
diff --git a/extra/gnome-session/gnome-session.install b/extra/gnome-session/gnome-session.install
new file mode 100644
index 000000000..9fc55e1a5
--- /dev/null
+++ b/extra/gnome-session/gnome-session.install
@@ -0,0 +1,22 @@
+pkgname=gnome-session
+
+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/extra/gnome-settings-daemon/PKGBUILD b/extra/gnome-settings-daemon/PKGBUILD
new file mode 100644
index 000000000..6888f8164
--- /dev/null
+++ b/extra/gnome-settings-daemon/PKGBUILD
@@ -0,0 +1,74 @@
+# $Id: PKGBUILD 115412 2011-03-17 20:09:00Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgbase=gnome-settings-daemon
+pkgname=(gnome-settings-daemon gnome-settings-daemon-pulse)
+pkgver=2.32.1
+pkgrel=4
+pkgdesc="The GNOME Settings daemon"
+arch=('i686' 'x86_64')
+license=('GPL')
+depends=('libgnomekbd>=2.32.0' 'gnome-desktop>=2.32.0' 'libnotify>=0.7.1' 'hicolor-icon-theme' 'libgnome-data')
+makedepends=('intltool' 'libpulse' 'gstreamer0.10-base>=0.10.30' 'libcanberra')
+options=('!emptydirs' '!libtool')
+install=gnome-settings-daemon.install
+url="http://www.gnome.org"
+groups=('gnome')
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgbase}/2.32/${pkgbase}-${pkgver}.tar.bz2
+ gstreamer-volume-2.30.patch
+ gnome-settings-daemon-2.32.1-libnotify-0.7.patch
+ add_notify_init.patch)
+sha256sums=('0074b3fec3ad6e3ab91a05dc20906b06101ea8bca0cd2caf394a5cc141b05e86'
+ '4b2a14c0e238f3cde71619b74f178544151bb319dee84b52133a254b85548582'
+ 'da836e61ddaea8b3a90692951296a28c4533e1e117412a0602f6c76e564e837d'
+ '3f81b1bf76b4e01fe6264be0de987fe9d346eee305a898dca630dea7d77b61f3')
+
+build() {
+ cd "$srcdir"
+ cp -a "$pkgbase-$pkgver"{,-pulse}
+
+ cd "$pkgbase-$pkgver"
+ patch -Np0 -i "${srcdir}/gnome-settings-daemon-2.32.1-libnotify-0.7.patch"
+ patch -Np1 -i "${srcdir}/add_notify_init.patch"
+ patch -Np1 -i "${srcdir}/gstreamer-volume-2.30.patch"
+ libtoolize --force
+ aclocal
+ autoconf
+ automake
+ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \
+ --libexecdir=/usr/bin --disable-static --disable-pulse --enable-gstreamer
+ make
+
+ cd "$srcdir/$pkgbase-$pkgver-pulse"
+ patch -Np0 -i "${srcdir}/gnome-settings-daemon-2.32.1-libnotify-0.7.patch"
+ patch -Np1 -i "${srcdir}/add_notify_init.patch"
+ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \
+ --libexecdir=/usr/bin --disable-static --enable-pulse
+ make
+}
+
+_commonpackage() {
+ make DESTDIR="${pkgdir}" GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 install
+
+ install -d -m755 "${pkgdir}/usr/share/gconf/schemas"
+ gconf-merge-schema "${pkgdir}/usr/share/gconf/schemas/${pkgbase}.schemas" --domain gnome-settings-daemon ${pkgdir}/etc/gconf/schemas/*.schemas
+ rm -f ${pkgdir}/etc/gconf/schemas/*.schemas
+}
+
+package_gnome-settings-daemon() {
+ depends+=(gstreamer0.10-base)
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ _commonpackage
+}
+
+package_gnome-settings-daemon-pulse() {
+ pkgdesc+=" with PulseAudio support"
+ depends+=(libpulse libcanberra)
+ groups=(pulseaudio-gnome)
+ conflicts=(gnome-settings-daemon)
+ provides=("gnome-settings-daemon=$pkgver-$pkgrel")
+
+ cd "${srcdir}/${pkgbase}-${pkgver}-pulse"
+ _commonpackage
+}
diff --git a/extra/gnome-settings-daemon/add_notify_init.patch b/extra/gnome-settings-daemon/add_notify_init.patch
new file mode 100644
index 000000000..b1e644f5d
--- /dev/null
+++ b/extra/gnome-settings-daemon/add_notify_init.patch
@@ -0,0 +1,14 @@
+diff -Nur gnome-settings-daemon-2.32.1.orig/plugins/xrandr/gsd-xrandr-manager.c gnome-settings-daemon-2.32.1/plugins/xrandr/gsd-xrandr-manager.c
+--- gnome-settings-daemon-2.32.1.orig/plugins/xrandr/gsd-xrandr-manager.c 2010-11-15 05:11:00.000000000 -0800
++++ gnome-settings-daemon-2.32.1/plugins/xrandr/gsd-xrandr-manager.c 2011-03-17 11:52:57.516694024 -0700
+@@ -2530,6 +2530,10 @@
+
+ manager->priv->current_fn_f7_config = -1;
+ manager->priv->fn_f7_configs = NULL;
++
++#ifdef HAVE_LIBNOTIFY
++ notify_init ("gnome-settings-daemon");
++#endif /* HAVE_LIBNOTIFY */
+ }
+
+ static void
diff --git a/extra/gnome-settings-daemon/gnome-settings-daemon-2.32.1-libnotify-0.7.patch b/extra/gnome-settings-daemon/gnome-settings-daemon-2.32.1-libnotify-0.7.patch
new file mode 100644
index 000000000..f755f24ac
--- /dev/null
+++ b/extra/gnome-settings-daemon/gnome-settings-daemon-2.32.1-libnotify-0.7.patch
@@ -0,0 +1,76 @@
+--- plugins/a11y-keyboard/gsd-a11y-keyboard-manager.c
++++ plugins/a11y-keyboard/gsd-a11y-keyboard-manager.c
+@@ -48,6 +48,9 @@
+
+ #ifdef HAVE_LIBNOTIFY
+ #include <libnotify/notify.h>
++#ifndef NOTIFY_CHECK_VERSION
++#define NOTIFY_CHECK_VERSION(x,y,z) 0
++#endif
+ #endif /* HAVE_LIBNOTIFY */
+
+ #include "gnome-settings-profile.h"
+@@ -608,9 +611,13 @@
+ gsd_a11y_keyboard_manager_ensure_status_icon (manager);
+ manager->priv->notification = notify_notification_new (title,
+ message,
+- "preferences-desktop-accessibility",
+- NULL);
++ "preferences-desktop-accessibility"
++#if NOTIFY_CHECK_VERSION (0, 7, 0)
++ );
++#else
++ , NULL);
+ notify_notification_attach_to_status_icon (manager->priv->notification, manager->priv->status_icon);
++#endif
+ notify_notification_set_timeout (manager->priv->notification, NOTIFICATION_TIMEOUT * 1000);
+
+ notify_notification_add_action (manager->priv->notification,
+@@ -747,9 +754,13 @@
+ gsd_a11y_keyboard_manager_ensure_status_icon (manager);
+ manager->priv->notification = notify_notification_new (title,
+ message,
+- "preferences-desktop-accessibility",
+- NULL);
++ "preferences-desktop-accessibility"
++#if NOTIFY_CHECK_VERSION (0, 7, 0)
++ );
++#else
++ , NULL);
+ notify_notification_attach_to_status_icon (manager->priv->notification, manager->priv->status_icon);
++#endif
+ notify_notification_set_timeout (manager->priv->notification, NOTIFICATION_TIMEOUT * 1000);
+
+ notify_notification_add_action (manager->priv->notification,
+--- plugins/xrandr/gsd-xrandr-manager.c
++++ plugins/xrandr/gsd-xrandr-manager.c
+@@ -48,6 +48,9 @@
+
+ #ifdef HAVE_LIBNOTIFY
+ #include <libnotify/notify.h>
++#ifndef NOTIFY_CHECK_VERSION
++#define NOTIFY_CHECK_VERSION(x,y,z) 0
++#endif
+ #endif
+
+ #include "gnome-settings-profile.h"
+@@ -1086,6 +1089,11 @@
+
+ g_assert (error_to_display == NULL || secondary_text == NULL);
+
++#if NOTIFY_CHECK_VERSION (0, 7, 0)
++ notification = notify_notification_new (primary_text,
++ error_to_display ? error_to_display->message : secondary_text,
++ GSD_XRANDR_ICON_NAME);
++#else
+ if (priv->status_icon)
+ notification = notify_notification_new_with_status_icon (primary_text,
+ error_to_display ? error_to_display->message : secondary_text,
+@@ -1096,6 +1104,7 @@
+ error_to_display ? error_to_display->message : secondary_text,
+ GSD_XRANDR_ICON_NAME,
+ NULL);
++#endif
+
+ notify_notification_show (notification, NULL); /* NULL-GError */
+ #else
diff --git a/extra/gnome-settings-daemon/gnome-settings-daemon.install b/extra/gnome-settings-daemon/gnome-settings-daemon.install
new file mode 100644
index 000000000..004705d03
--- /dev/null
+++ b/extra/gnome-settings-daemon/gnome-settings-daemon.install
@@ -0,0 +1,22 @@
+pkgname=gnome-settings-daemon
+
+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/extra/gnome-settings-daemon/gstreamer-volume-2.29.91.patch b/extra/gnome-settings-daemon/gstreamer-volume-2.29.91.patch
new file mode 100644
index 000000000..847a57622
--- /dev/null
+++ b/extra/gnome-settings-daemon/gstreamer-volume-2.29.91.patch
@@ -0,0 +1,809 @@
+diff -Nur gnome-settings-daemon-2.29.91.1.orig/configure.ac gnome-settings-daemon-2.29.91.1/configure.ac
+--- gnome-settings-daemon-2.29.91.1.orig/configure.ac 2010-02-24 16:39:10.000000000 +0200
++++ gnome-settings-daemon-2.29.91.1/configure.ac 2010-02-25 18:18:35.000000000 +0200
+@@ -248,6 +248,48 @@
+ AC_SUBST(PULSE_CFLAGS)
+ AC_SUBST(PULSE_LIBS)
+
++dnl ==============================================
++dnl GStreamer section
++dnl ==============================================
++GST_MAJORMINOR=auto
++
++AC_ARG_ENABLE(gstreamer,
++AC_HELP_STRING([--enable-gstreamer],[use gstreamer if available (and optionally specify a version)]),
++[case "${enableval}" in
++ yes) ENABLE_GSTREAMER=yes ;;
++ 0.10) ENABLE_GSTREAMER=yes && GST_MAJORMINOR=0.10 ;;
++ no) ENABLE_GSTREAMER=no ;;
++ *) AC_MSG_ERROR([
++ *** Bad value ${enableval} for --enable-gstreamer
++ *** Please use one of the following:
++ *** --enable-gstreamer=0.10
++ ]) ;;
++esac],
++[ENABLE_GSTREAMER=yes]) dnl Default value
++
++have_gstreamer=no
++if test "x$ENABLE_GSTREAMER" = "xyes"; then
++ GST_REQS=0.10.1.2
++ PKGS="gstreamer-0.10 >= $GST_REQS gstreamer-plugins-base-0.10 >= $GST_REQS"
++
++ PKG_CHECK_MODULES(GST, $PKGS, have_gstreamer=yes,
++ AC_MSG_RESULT([no]))
++
++ if test "x$have_pulse" = "xtrue"; then
++ AC_MSG_ERROR([*** GStreamer & Pulseaudio both are selected ***])
++ fi
++
++ if test "x$have_gstreamer" = "xyes"; then
++ GST_LIBS="$GST_LIBS -lgstinterfaces-0.10 -lgstaudio-0.10"
++ AC_DEFINE(HAVE_GSTREAMER,1,[enable gstreamer])
++ fi
++else
++ AC_MSG_NOTICE([*** GStreamer support disabled ***])
++fi
++AM_CONDITIONAL(HAVE_GSTREAMER, test "x$have_gstreamer" = "xyes")
++AC_SUBST(GST_LIBS)
++AC_SUBST(GST_CFLAGS)
++
+ # ---------------------------------------------------------------------------
+ # Enable Profiling
+ # ---------------------------------------------------------------------------
+@@ -386,6 +428,7 @@
+ dbus-1 system.d dir: ${DBUS_SYS_DIR}
+
+ Libnotify support: ${have_libnotify}
++ GStreamer support: ${have_gstreamer}
+ PulseAudio support: ${have_pulse}
+ Profiling support: ${enable_profiling}
+ "
+diff -Nur gnome-settings-daemon-2.29.91.1.orig/plugins/media-keys/cut-n-paste/gvc-gstreamer-acme-vol.c gnome-settings-daemon-2.29.91.1/plugins/media-keys/cut-n-paste/gvc-gstreamer-acme-vol.c
+--- gnome-settings-daemon-2.29.91.1.orig/plugins/media-keys/cut-n-paste/gvc-gstreamer-acme-vol.c 1970-01-01 02:00:00.000000000 +0200
++++ gnome-settings-daemon-2.29.91.1/plugins/media-keys/cut-n-paste/gvc-gstreamer-acme-vol.c 2010-02-25 18:18:35.000000000 +0200
+@@ -0,0 +1,402 @@
++/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
++
++/* acme-volume.c
++
++ Copyright (C) 2002, 2003 Bastien Nocera
++ Copyright (C) 2004 Novell, Inc.
++ Copyright (C) 2009 PERIER Romain <mrpouet@tuxfamily.org>
++
++ The Gnome Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Library General Public License as
++ published by the Free Software Foundation; either version 2 of the
++ License, or (at your option) any later version.
++
++ The Gnome Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Library General Public License for more details.
++
++ You should have received a copy of the GNU Library General Public
++ License along with the Gnome Library; see the file COPYING.LIB. If not,
++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
++ Boston, MA 02111-1307, USA.
++
++ Author: Bastien Nocera <hadess@hadess.net>
++ Jon Trowbridge <trow@ximian.com>
++*/
++
++#include "config.h"
++#include "gvc-gstreamer-acme-vol.h"
++
++#include <gst/gst.h>
++#include <gst/audio/mixerutils.h>
++#include <gst/interfaces/mixer.h>
++#include <gst/interfaces/propertyprobe.h>
++
++#include <gconf/gconf-client.h>
++
++#include <string.h>
++
++#define TIMEOUT 4
++
++#define DEFAULT_MIXER_DEVICE_KEY "/desktop/gnome/sound/default_mixer_device"
++#define DEFAULT_MIXER_TRACKS_KEY "/desktop/gnome/sound/default_mixer_tracks"
++
++#define ACME_VOLUME_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), ACME_TYPE_VOLUME, AcmeVolumePrivate))
++
++struct AcmeVolumePrivate {
++ GstMixer *mixer;
++ GList *mixer_tracks;
++ guint timer_id;
++ gdouble volume;
++ gboolean mute;
++ GConfClient *gconf_client;
++};
++
++G_DEFINE_TYPE (AcmeVolume, acme_volume, G_TYPE_OBJECT)
++
++static gboolean acme_volume_open (AcmeVolume *acme);
++static void acme_volume_close (AcmeVolume *acme);
++static gboolean acme_volume_close_real (AcmeVolume *self);
++
++static gpointer acme_volume_object = NULL;
++
++static void
++acme_volume_finalize (GObject *object)
++{
++ AcmeVolume *self;
++
++ g_return_if_fail (object != NULL);
++ g_return_if_fail (ACME_IS_VOLUME (object));
++
++ self = ACME_VOLUME (object);
++
++ if (self->_priv->timer_id != 0)
++ g_source_remove (self->_priv->timer_id);
++ acme_volume_close_real (self);
++
++ if (self->_priv->gconf_client != NULL) {
++ g_object_unref (self->_priv->gconf_client);
++ self->_priv->gconf_client = NULL;
++ }
++
++ G_OBJECT_CLASS (acme_volume_parent_class)->finalize (object);
++}
++
++void
++acme_volume_set_mute (AcmeVolume *self, gboolean val)
++{
++ GList *t;
++
++ g_return_if_fail(ACME_IS_VOLUME(self));
++ g_return_if_fail(acme_volume_open(self));
++
++ for (t = self->_priv->mixer_tracks; t != NULL; t = t->next) {
++ GstMixerTrack *track = GST_MIXER_TRACK (t->data);
++ gst_mixer_set_mute (self->_priv->mixer, track, val);
++ }
++ self->_priv->mute = val;
++ acme_volume_close (self);
++}
++
++static void
++update_state (AcmeVolume * self)
++{
++ gint *volumes, n;
++ gdouble vol = 0;
++ GstMixerTrack *track = GST_MIXER_TRACK (self->_priv->mixer_tracks->data);
++
++ /* update mixer by getting volume */
++ volumes = g_new0 (gint, track->num_channels);
++ gst_mixer_get_volume (self->_priv->mixer, track, volumes);
++ for (n = 0; n < track->num_channels; n++)
++ vol += volumes[n];
++ g_free (volumes);
++ vol /= track->num_channels;
++ vol = 100 * vol / (track->max_volume - track->min_volume);
++
++ /* update mute flag, and volume if not muted */
++ if (GST_MIXER_TRACK_HAS_FLAG (track, GST_MIXER_TRACK_MUTE))
++ self->_priv->mute = TRUE;
++ self->_priv->volume = vol;
++}
++
++gboolean
++acme_volume_get_mute (AcmeVolume *self)
++{
++ g_return_val_if_fail(acme_volume_open(self), FALSE);
++
++ update_state (self);
++ acme_volume_close (self);
++
++ return self->_priv->mute;
++}
++
++gint
++acme_volume_get_volume (AcmeVolume *self)
++{
++
++ g_return_val_if_fail(acme_volume_open(self), 0);
++
++ update_state (self);
++
++ acme_volume_close (self);
++
++ return (gint) (self->_priv->volume + 0.5);
++}
++
++void
++acme_volume_set_volume (AcmeVolume *self, gint val)
++{
++ GList *t;
++
++ g_return_if_fail(acme_volume_open(self));
++
++ val = CLAMP (val, 0, 100);
++
++ for (t = self->_priv->mixer_tracks; t != NULL; t = t->next) {
++ GstMixerTrack *track = GST_MIXER_TRACK (t->data);
++ gint *volumes, n;
++ gdouble scale = (track->max_volume - track->min_volume) / 100.0;
++ gint vol = (gint) (val * scale + track->min_volume + 0.5);
++
++ volumes = g_new (gint, track->num_channels);
++ for (n = 0; n < track->num_channels; n++)
++ volumes[n] = vol;
++ gst_mixer_set_volume (self->_priv->mixer, track, volumes);
++ g_free (volumes);
++ }
++
++ /* update state */
++ self->_priv->volume = val;
++
++ acme_volume_close (self);
++}
++
++void
++acme_volume_mute_toggle (AcmeVolume *self)
++{
++ gboolean muted;
++
++ g_return_if_fail (self != NULL);
++ g_return_if_fail (ACME_IS_VOLUME(self));
++
++ muted = acme_volume_get_mute(self);
++ acme_volume_set_mute(self, !muted);
++}
++
++gint
++acme_volume_get_threshold (AcmeVolume *self)
++{
++ GList *t;
++ gint steps = 101;
++
++ g_return_val_if_fail(acme_volume_open(self), 1);
++
++ for (t = self->_priv->mixer_tracks; t != NULL; t = t->next) {
++ GstMixerTrack *track = GST_MIXER_TRACK (t->data);
++ gint track_steps = track->max_volume - track->min_volume;
++ if (track_steps > 0 && track_steps < steps)
++ steps = track_steps;
++ }
++
++ acme_volume_close (self);
++
++ return 100 / steps + 1;
++}
++
++static gboolean
++acme_volume_close_real (AcmeVolume *self)
++{
++ if (self->_priv->mixer != NULL)
++ {
++ gst_element_set_state (GST_ELEMENT (self->_priv->mixer), GST_STATE_NULL);
++ gst_object_unref (GST_OBJECT (self->_priv->mixer));
++ g_list_foreach (self->_priv->mixer_tracks, (GFunc) g_object_unref, NULL);
++ g_list_free (self->_priv->mixer_tracks);
++ self->_priv->mixer = NULL;
++ self->_priv->mixer_tracks = NULL;
++ }
++
++ self->_priv->timer_id = 0;
++ return FALSE;
++}
++
++/*
++ * _acme_set_mixer
++ * @mixer A pointer to mixer element
++ * @data A pointer to user data (AcmeVolume instance to be modified)
++ * @return A gboolean indicating success if Master track was found, failed otherwises.
++ */
++static gboolean
++_acme_set_mixer(GstMixer *mixer, gpointer user_data)
++{
++ const GList *tracks;
++
++ for (tracks = gst_mixer_list_tracks (mixer); tracks != NULL; tracks = tracks->next) {
++ GstMixerTrack *track = GST_MIXER_TRACK (tracks->data);
++
++ if (GST_MIXER_TRACK_HAS_FLAG (track, GST_MIXER_TRACK_MASTER)) {
++ AcmeVolume *self;
++
++ self = ACME_VOLUME (user_data);
++
++ self->_priv->mixer = mixer;
++ self->_priv->mixer_tracks = g_list_append (self->_priv->mixer_tracks, g_object_ref (track));
++ return TRUE;
++ }
++
++ continue;
++ }
++
++ return FALSE;
++}
++
++/* This is a modified version of code from gnome-media's gst-mixer */
++static gboolean
++acme_volume_open (AcmeVolume *self)
++{
++ gchar *mixer_device, **factory_and_device = NULL;
++ GList *mixer_list;
++
++ if (self->_priv->timer_id != 0) {
++ g_source_remove (self->_priv->timer_id);
++ self->_priv->timer_id = 0;
++ return TRUE;
++ }
++
++ mixer_device = gconf_client_get_string (self->_priv->gconf_client, DEFAULT_MIXER_DEVICE_KEY, NULL);
++ if (mixer_device != NULL)
++ factory_and_device = g_strsplit (mixer_device, ":", 2);
++
++ if (factory_and_device != NULL && factory_and_device[0] != NULL) {
++ GstElement *element;
++
++ element = gst_element_factory_make (factory_and_device[0], NULL);
++
++ if (element != NULL) {
++ if (factory_and_device[1] != NULL &&
++ g_object_class_find_property (G_OBJECT_GET_CLASS (element), "device"))
++ g_object_set (G_OBJECT (element), "device", factory_and_device[1], NULL);
++ gst_element_set_state (element, GST_STATE_READY);
++
++ if (GST_IS_MIXER (element))
++ self->_priv->mixer = GST_MIXER (element);
++ else {
++ gst_element_set_state (element, GST_STATE_NULL);
++ gst_object_unref (element);
++ }
++ }
++ }
++
++ g_free (mixer_device);
++ g_strfreev (factory_and_device);
++
++ if (self->_priv->mixer != NULL) {
++ const GList *m;
++ GSList *tracks, *t;
++ GError *error = NULL;
++
++ /* Try to use tracks saved in GConf
++ Note: errors need to be treated , for example if the user set a non type list for this key
++ or if the elements type_list are not "matched" */
++ tracks = gconf_client_get_list (self->_priv->gconf_client, DEFAULT_MIXER_TRACKS_KEY,
++ GCONF_VALUE_STRING, &error);
++
++ if (error) {
++ g_warning("ERROR: %s\n", error->message);
++ g_error_free(error);
++ }
++
++ /* We use these tracks ONLY if they are supported on the system with the following mixer */
++ for (m = gst_mixer_list_tracks (self->_priv->mixer); m != NULL; m = m->next) {
++ GstMixerTrack *track = GST_MIXER_TRACK (m->data);
++
++ for (t = tracks; t != NULL; t = t->next)
++ if (!strcmp (t->data, track->label))
++ self->_priv->mixer_tracks = g_list_append (self->_priv->mixer_tracks, g_object_ref (track));
++
++ }
++
++ g_slist_foreach (tracks, (GFunc)g_free, NULL);
++ g_slist_free (tracks);
++
++ /* If no track stored in GConf is avaiable try to use Master track */
++ if (self->_priv->mixer_tracks == NULL) {
++ for (m = gst_mixer_list_tracks (self->_priv->mixer); m != NULL; m = m->next) {
++ GstMixerTrack *track = GST_MIXER_TRACK (m->data);
++
++ if (GST_MIXER_TRACK_HAS_FLAG (track, GST_MIXER_TRACK_MASTER)) {
++ self->_priv->mixer_tracks = g_list_append (self->_priv->mixer_tracks, g_object_ref (track));
++ break;
++ }
++ }
++ }
++
++ if (self->_priv->mixer_tracks != NULL)
++ return TRUE;
++ else {
++ gst_element_set_state (GST_ELEMENT (self->_priv->mixer), GST_STATE_NULL);
++ gst_object_unref (self->_priv->mixer);
++ }
++ }
++
++ /* Go through all elements of a certain class and check whether
++ * they implement a mixer. If so, walk through the tracks and look
++ * for first one named "volume".
++ *
++ * We should probably do something intelligent if we don't find an
++ * appropriate mixer/track. But now we do something stupid...
++ * everything just becomes a no-op.
++ */
++ mixer_list = gst_audio_default_registry_mixer_filter (_acme_set_mixer,
++ TRUE,
++ self);
++
++ if (mixer_list == NULL)
++ return FALSE;
++
++ /* do not unref the mixer as we keep the ref for self->priv->mixer */
++ g_list_free (mixer_list);
++
++ return TRUE;
++}
++
++static void
++acme_volume_close (AcmeVolume *self)
++{
++ self->_priv->timer_id = g_timeout_add_seconds (TIMEOUT,
++ (GSourceFunc) acme_volume_close_real, self);
++}
++
++static void
++acme_volume_init (AcmeVolume *self)
++{
++ self->_priv = ACME_VOLUME_GET_PRIVATE (self);
++ self->_priv->gconf_client = gconf_client_get_default ();
++}
++
++static void
++acme_volume_class_init (AcmeVolumeClass *klass)
++{
++ G_OBJECT_CLASS (klass)->finalize = acme_volume_finalize;
++
++ gst_init (NULL, NULL);
++
++ g_type_class_add_private (klass, sizeof (AcmeVolumePrivate));
++}
++
++/* acme_volume_new
++ * @return A singleton instance of type AcmeVolume
++ */
++AcmeVolume *
++acme_volume_new (void)
++{
++ if (acme_volume_object == NULL) {
++ acme_volume_object = g_object_new (ACME_TYPE_VOLUME, NULL);
++ return ACME_VOLUME(acme_volume_object);
++ }
++ g_object_ref(acme_volume_object);
++ return ACME_VOLUME(acme_volume_object);
++}
++
+diff -Nur gnome-settings-daemon-2.29.91.1.orig/plugins/media-keys/cut-n-paste/gvc-gstreamer-acme-vol.h gnome-settings-daemon-2.29.91.1/plugins/media-keys/cut-n-paste/gvc-gstreamer-acme-vol.h
+--- gnome-settings-daemon-2.29.91.1.orig/plugins/media-keys/cut-n-paste/gvc-gstreamer-acme-vol.h 1970-01-01 02:00:00.000000000 +0200
++++ gnome-settings-daemon-2.29.91.1/plugins/media-keys/cut-n-paste/gvc-gstreamer-acme-vol.h 2010-02-25 18:18:35.000000000 +0200
+@@ -0,0 +1,56 @@
++/* acme-volume.h
++
++ Copyright (C) 2002, 2003 Bastien Nocera
++ Copyright (C) 2004 Novell, Inc.
++ Copyright (C) 2009 PERIER Romain <mrpouet@tuxfamily.org>
++
++ The Gnome Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Library General Public License as
++ published by the Free Software Foundation; either version 2 of the
++ License, or (at your option) any later version.
++
++ The Gnome Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Library General Public License for more details.
++
++ You should have received a copy of the GNU Library General Public
++ License along with the Gnome Library; see the file COPYING.LIB. If not,
++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
++ Boston, MA 02111-1307, USA.
++
++ Author: Bastien Nocera <hadess@hadess.net>
++ Jon Trowbridge <trow@ximian.com>
++ */
++
++#include <glib-object.h>
++
++#define ACME_TYPE_VOLUME (acme_volume_get_type ())
++#define ACME_VOLUME(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), ACME_TYPE_VOLUME, AcmeVolume))
++#define ACME_VOLUME_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), ACME_TYPE_VOLUME, AcmeVolumeClass))
++#define ACME_IS_VOLUME(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ACME_TYPE_VOLUME))
++#define ACME_VOLUME_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), ACME_TYPE_VOLUME, AcmeVolumeClass))
++
++typedef struct AcmeVolume AcmeVolume;
++typedef struct AcmeVolumeClass AcmeVolumeClass;
++typedef struct AcmeVolumePrivate AcmeVolumePrivate;
++
++struct AcmeVolume {
++ GObject parent;
++ AcmeVolumePrivate *_priv;
++};
++
++struct AcmeVolumeClass {
++ GObjectClass parent;
++};
++
++GType acme_volume_get_type (void);
++AcmeVolume *acme_volume_new (void);
++void acme_volume_set_mute (AcmeVolume *self, gboolean val);
++void acme_volume_mute_toggle (AcmeVolume *self);
++gboolean acme_volume_get_mute (AcmeVolume *self);
++void acme_volume_set_volume (AcmeVolume *self, gint val);
++gint acme_volume_get_volume (AcmeVolume *self);
++gint acme_volume_get_threshold (AcmeVolume *self);
++
++
+diff -Nur gnome-settings-daemon-2.29.91.1.orig/plugins/media-keys/cut-n-paste/Makefile.am gnome-settings-daemon-2.29.91.1/plugins/media-keys/cut-n-paste/Makefile.am
+--- gnome-settings-daemon-2.29.91.1.orig/plugins/media-keys/cut-n-paste/Makefile.am 2009-08-19 19:16:15.000000000 +0300
++++ gnome-settings-daemon-2.29.91.1/plugins/media-keys/cut-n-paste/Makefile.am 2010-02-25 18:18:35.000000000 +0200
+@@ -4,16 +4,24 @@
+
+ INCLUDES = \
+ $(WARN_CFLAGS) \
+- $(VOLUME_CONTROL_CFLAGS) \
+- $(PULSE_CFLAGS) \
+ $(NULL)
+
+ libgvc_la_LIBADD = \
+- $(VOLUME_CONTROL_LIBS) \
+- $(PULSE_LIBS) \
+ $(NULL)
+
+ libgvc_la_SOURCES = \
++ $(NULL)
++
++if HAVE_PULSE
++INCLUDES += \
++ $(VOLUME_CONTROL_CFLAGS) \
++ $(PULSE_CFLAGS)
++
++libgvc_la_LIBADD += \
++ $(VOLUME_CONTROL_LIBS) \
++ $(PULSE_LIBS)
++
++libgvc_la_SOURCES += \
+ gvc-mixer-stream.h \
+ gvc-mixer-stream.c \
+ gvc-channel-map.h \
+@@ -31,8 +39,22 @@
+ gvc-mixer-event-role.h \
+ gvc-mixer-event-role.c \
+ gvc-mixer-control.h \
+- gvc-mixer-control.c \
+- $(NULL)
++ gvc-mixer-control.c
++endif
++
++if HAVE_GSTREAMER
++INCLUDES += \
++ $(SETTINGS_PLUGIN_CFLAGS) \
++ $(AM_CFLAGS) \
++ $(GST_CFLAGS)
++
++libgvc_la_LIBADD += \
++ $(GST_LIBS)
++
++libgvc_la_SOURCES += \
++ gvc-gstreamer-acme-vol.c \
++ gvc-gstreamer-acme-vol.h
++endif
+
+ MAINTAINERCLEANFILES = \
+ *~ \
+diff -Nur gnome-settings-daemon-2.29.91.1.orig/plugins/media-keys/gsd-media-keys-manager.c gnome-settings-daemon-2.29.91.1/plugins/media-keys/gsd-media-keys-manager.c
+--- gnome-settings-daemon-2.29.91.1.orig/plugins/media-keys/gsd-media-keys-manager.c 2010-02-17 00:40:19.000000000 +0200
++++ gnome-settings-daemon-2.29.91.1/plugins/media-keys/gsd-media-keys-manager.c 2010-02-25 18:21:00.000000000 +0200
+@@ -53,6 +53,8 @@
+ #ifdef HAVE_PULSE
+ #include <canberra-gtk.h>
+ #include "gvc-mixer-control.h"
++#elif defined(HAVE_GSTREAMER)
++#include "gvc-gstreamer-acme-vol.h"
+ #endif /* HAVE_PULSE */
+
+ #define GSD_DBUS_PATH "/org/gnome/SettingsDaemon"
+@@ -84,6 +86,8 @@
+ /* Volume bits */
+ GvcMixerControl *volume;
+ GvcMixerStream *stream;
++#elif defined(HAVE_GSTREAMER)
++ AcmeVolume *volume;
+ #endif /* HAVE_PULSE */
+ GtkWidget *dialog;
+ GConfClient *conf_client;
+@@ -647,7 +651,9 @@
+ CA_PROP_APPLICATION_ID, "org.gnome.VolumeControl",
+ NULL);
+ }
++#endif /* HAVE_PULSE */
+
++#if defined(HAVE_PULSE) || defined(HAVE_GSTREAMER)
+ static void
+ do_sound_action (GsdMediaKeysManager *manager,
+ int type)
+@@ -656,7 +662,11 @@
+ guint vol, norm_vol_step;
+ int vol_step;
+
++#ifdef HAVE_PULSE
+ if (manager->priv->stream == NULL)
++#else
++ if (manager->priv->volume == NULL)
++#endif
+ return;
+
+ vol_step = gconf_client_get_int (manager->priv->conf_client,
+@@ -666,18 +676,34 @@
+ if (vol_step <= 0 || vol_step > 100)
+ vol_step = VOLUME_STEP;
+
++#ifdef HAVE_PULSE
+ norm_vol_step = PA_VOLUME_NORM * vol_step / 100;
+
+ /* FIXME: this is racy */
+ vol = gvc_mixer_stream_get_volume (manager->priv->stream);
+ muted = gvc_mixer_stream_get_is_muted (manager->priv->stream);
+
++#else
++ if (vol_step > 0) {
++ gint threshold = acme_volume_get_threshold (manager->priv->volume);
++ if (vol_step < threshold)
++ vol_step = threshold;
++ g_debug ("Using volume step of %d", vol_step);
++ }
++ vol = acme_volume_get_volume (manager->priv->volume);
++ muted = acme_volume_get_mute (manager->priv->volume);
++#endif
+ switch (type) {
+ case MUTE_KEY:
++#ifdef HAVE_PULSE
+ muted = !muted;
+ gvc_mixer_stream_change_is_muted (manager->priv->stream, muted);
++#else
++ acme_volume_mute_toggle (manager->priv->volume);
++#endif
+ break;
+ case VOLUME_DOWN_KEY:
++#ifdef HAVE_PULSE
+ if (!muted && (vol <= norm_vol_step)) {
+ muted = !muted;
+ vol = 0;
+@@ -689,11 +715,17 @@
+ if (gvc_mixer_stream_set_volume (manager->priv->stream, vol) != FALSE)
+ gvc_mixer_stream_push_volume (manager->priv->stream);
+ }
++#else
++ if (!muted && (vol <= vol_step))
++ acme_volume_mute_toggle (manager->priv->volume);
++ acme_volume_set_volume (manager->priv->volume, vol - vol_step);
++#endif
+ break;
+ case VOLUME_UP_KEY:
+ if (muted) {
+ muted = !muted;
+ if (vol == 0) {
++#ifdef HAVE_PULSE
+ vol = vol + norm_vol_step;
+ gvc_mixer_stream_change_is_muted (manager->priv->stream, muted);
+ if (gvc_mixer_stream_set_volume (manager->priv->stream, vol) != FALSE)
+@@ -701,7 +733,15 @@
+ } else {
+ gvc_mixer_stream_change_is_muted (manager->priv->stream, muted);
+ }
++#else
++ /* We need to unmute otherwise vol is blocked (and muted) */
++ acme_volume_set_mute (manager->priv->volume, FALSE);
++ }
++ acme_volume_set_volume (manager->priv->volume, vol + vol_step);
++
++#endif
+ } else {
++#ifdef HAVE_PULSE
+ if (vol < MAX_VOLUME) {
+ if (vol + norm_vol_step >= MAX_VOLUME) {
+ vol = MAX_VOLUME;
+@@ -711,13 +751,35 @@
+ if (gvc_mixer_stream_set_volume (manager->priv->stream, vol) != FALSE)
+ gvc_mixer_stream_push_volume (manager->priv->stream);
+ }
++#else
++ acme_volume_set_volume (manager->priv->volume, vol + vol_step);
++#endif
+ }
+ break;
+ }
+
++#ifdef HAVE_PULSE
+ update_dialog (manager, vol, muted);
++#else
++ muted = acme_volume_get_mute (manager->priv->volume);
++ vol = acme_volume_get_volume (manager->priv->volume);
++
++ /* FIXME: AcmeVolume should probably emit signals
++ instead of doing it like this */
++ dialog_init (manager);
++ gsd_media_keys_window_set_volume_muted (GSD_MEDIA_KEYS_WINDOW (manager->priv->dialog),
++ muted);
++ gsd_media_keys_window_set_volume_level (GSD_MEDIA_KEYS_WINDOW (manager->priv->dialog),
++ vol);
++ gsd_media_keys_window_set_action (GSD_MEDIA_KEYS_WINDOW (manager->priv->dialog),
++ GSD_MEDIA_KEYS_WINDOW_ACTION_VOLUME);
++ dialog_show (manager);
++#endif /* HAVE_PULSE */
+ }
+
++#endif /* defined(HAVE_PULSE) || defined(HAVE_GSTREAMER) */
++
++#ifdef HAVE_PULSE
+ static void
+ update_default_sink (GsdMediaKeysManager *manager)
+ {
+@@ -879,9 +941,9 @@
+ case MUTE_KEY:
+ case VOLUME_DOWN_KEY:
+ case VOLUME_UP_KEY:
+-#ifdef HAVE_PULSE
++#if defined(HAVE_PULSE) || defined(HAVE_GSTREAMER)
+ do_sound_action (manager, type);
+-#endif /* HAVE_PULSE */
++#endif /* HAVE_PULSE || HAVE_GSTREAMER */
+ break;
+ case POWER_KEY:
+ do_exit_action (manager);
+@@ -1081,6 +1143,10 @@
+ gvc_mixer_control_open (manager->priv->volume);
+
+ gnome_settings_profile_end ("gvc_mixer_control_new");
++#elif defined(HAVE_GSTREAMER)
++ gnome_settings_profile_start ("acme_volume_new");
++ manager->priv->volume = acme_volume_new ();
++ gnome_settings_profile_end ("acme_volume_new");
+ #endif /* HAVE_PULSE */
+ g_idle_add ((GSourceFunc) start_media_keys_idle_cb, manager);
+
+@@ -1153,6 +1219,7 @@
+ g_object_unref (priv->stream);
+ priv->stream = NULL;
+ }
++#elif defined(HAVE_GSTREAMER)
+
+ if (priv->volume) {
+ g_object_unref (priv->volume);
+diff -Nur gnome-settings-daemon-2.29.91.1.orig/plugins/media-keys/Makefile.am gnome-settings-daemon-2.29.91.1/plugins/media-keys/Makefile.am
+--- gnome-settings-daemon-2.29.91.1.orig/plugins/media-keys/Makefile.am 2010-02-17 00:40:19.000000000 +0200
++++ gnome-settings-daemon-2.29.91.1/plugins/media-keys/Makefile.am 2010-02-25 18:18:35.000000000 +0200
+@@ -3,13 +3,8 @@
+
+ NULL =
+
+-SUBDIRS =
+-plugin_LTLIBRARIES =
+-
+-if HAVE_PULSE
+-SUBDIRS += cut-n-paste
+-plugin_LTLIBRARIES += libmedia-keys.la
+-endif
++SUBDIRS = cut-n-paste
++plugin_LTLIBRARIES = libmedia-keys.la
+
+ BUILT_SOURCES = \
+ gsd-media-keys-manager-glue.h \
+@@ -100,16 +95,14 @@
+
+ libmedia_keys_la_LIBADD = \
+ $(top_builddir)/plugins/common/libcommon.la \
+- $(top_builddir)/plugins/media-keys/cut-n-paste/libgvc.la \
++ $(top_builddir)/plugins/media-keys/cut-n-paste/libgvc.la \
+ $(SETTINGS_PLUGIN_LIBS) \
+ $(XF86MISC_LIBS)
+
+ plugin_in_files = \
+ media-keys.gnome-settings-plugin.in
+
+-if HAVE_PULSE
+ plugin_DATA = $(plugin_in_files:.gnome-settings-plugin.in=.gnome-settings-plugin)
+-endif
+
+ noinst_PROGRAMS = \
+ test-media-keys \
+@@ -173,9 +166,7 @@
+ $(XF86MISC_LIBS) \
+ $(GST_LIBS)
+
+-if HAVE_PULSE
+ test_media_keys_LDADD += $(top_builddir)/plugins/media-keys/cut-n-paste/libgvc.la
+-endif
+
+ gtkbuilderdir = $(pkgdatadir)
+ gtkbuilder_DATA = \
diff --git a/extra/gnome-settings-daemon/gstreamer-volume-2.30.patch b/extra/gnome-settings-daemon/gstreamer-volume-2.30.patch
new file mode 100644
index 000000000..1169df1ed
--- /dev/null
+++ b/extra/gnome-settings-daemon/gstreamer-volume-2.30.patch
@@ -0,0 +1,861 @@
+diff -Nur gnome-settings-daemon-2.30.0.orig/configure.ac gnome-settings-daemon-2.30.0/configure.ac
+--- gnome-settings-daemon-2.30.0.orig/configure.ac 2010-03-29 17:03:47.000000000 +0300
++++ gnome-settings-daemon-2.30.0/configure.ac 2010-03-29 21:35:17.974333715 +0300
+@@ -251,6 +251,48 @@
+ AC_SUBST(PULSE_CFLAGS)
+ AC_SUBST(PULSE_LIBS)
+
++dnl ==============================================
++dnl GStreamer section
++dnl ==============================================
++GST_MAJORMINOR=auto
++
++AC_ARG_ENABLE(gstreamer,
++AC_HELP_STRING([--enable-gstreamer],[use gstreamer if available (and optionally specify a version)]),
++[case "${enableval}" in
++ yes) ENABLE_GSTREAMER=yes ;;
++ 0.10) ENABLE_GSTREAMER=yes && GST_MAJORMINOR=0.10 ;;
++ no) ENABLE_GSTREAMER=no ;;
++ *) AC_MSG_ERROR([
++ *** Bad value ${enableval} for --enable-gstreamer
++ *** Please use one of the following:
++ *** --enable-gstreamer=0.10
++ ]) ;;
++esac],
++[ENABLE_GSTREAMER=yes]) dnl Default value
++
++have_gstreamer=no
++if test "x$ENABLE_GSTREAMER" = "xyes"; then
++ GST_REQS=0.10.1.2
++ PKGS="gstreamer-0.10 >= $GST_REQS gstreamer-plugins-base-0.10 >= $GST_REQS"
++
++ PKG_CHECK_MODULES(GST, $PKGS, have_gstreamer=yes,
++ AC_MSG_RESULT([no]))
++
++ if test "x$have_pulse" = "xtrue"; then
++ AC_MSG_ERROR([*** GStreamer & Pulseaudio both are selected ***])
++ fi
++
++ if test "x$have_gstreamer" = "xyes"; then
++ GST_LIBS="$GST_LIBS -lgstinterfaces-0.10 -lgstaudio-0.10"
++ AC_DEFINE(HAVE_GSTREAMER,1,[enable gstreamer])
++ fi
++else
++ AC_MSG_NOTICE([*** GStreamer support disabled ***])
++fi
++AM_CONDITIONAL(HAVE_GSTREAMER, test "x$have_gstreamer" = "xyes")
++AC_SUBST(GST_LIBS)
++AC_SUBST(GST_CFLAGS)
++
+ # ---------------------------------------------------------------------------
+ # Enable Profiling
+ # ---------------------------------------------------------------------------
+@@ -389,6 +431,7 @@
+ dbus-1 system.d dir: ${DBUS_SYS_DIR}
+
+ Libnotify support: ${have_libnotify}
++ GStreamer support: ${have_gstreamer}
+ PulseAudio support: ${have_pulse}
+ Profiling support: ${enable_profiling}
+ "
+diff -Nur gnome-settings-daemon-2.30.0.orig/plugins/media-keys/cut-n-paste/gvc-gstreamer-acme-vol.c gnome-settings-daemon-2.30.0/plugins/media-keys/cut-n-paste/gvc-gstreamer-acme-vol.c
+--- gnome-settings-daemon-2.30.0.orig/plugins/media-keys/cut-n-paste/gvc-gstreamer-acme-vol.c 1970-01-01 02:00:00.000000000 +0200
++++ gnome-settings-daemon-2.30.0/plugins/media-keys/cut-n-paste/gvc-gstreamer-acme-vol.c 2010-03-29 21:35:17.977471980 +0300
+@@ -0,0 +1,402 @@
++/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
++
++/* acme-volume.c
++
++ Copyright (C) 2002, 2003 Bastien Nocera
++ Copyright (C) 2004 Novell, Inc.
++ Copyright (C) 2009 PERIER Romain <mrpouet@tuxfamily.org>
++
++ The Gnome Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Library General Public License as
++ published by the Free Software Foundation; either version 2 of the
++ License, or (at your option) any later version.
++
++ The Gnome Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Library General Public License for more details.
++
++ You should have received a copy of the GNU Library General Public
++ License along with the Gnome Library; see the file COPYING.LIB. If not,
++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
++ Boston, MA 02111-1307, USA.
++
++ Author: Bastien Nocera <hadess@hadess.net>
++ Jon Trowbridge <trow@ximian.com>
++*/
++
++#include "config.h"
++#include "gvc-gstreamer-acme-vol.h"
++
++#include <gst/gst.h>
++#include <gst/audio/mixerutils.h>
++#include <gst/interfaces/mixer.h>
++#include <gst/interfaces/propertyprobe.h>
++
++#include <gconf/gconf-client.h>
++
++#include <string.h>
++
++#define TIMEOUT 4
++
++#define DEFAULT_MIXER_DEVICE_KEY "/desktop/gnome/sound/default_mixer_device"
++#define DEFAULT_MIXER_TRACKS_KEY "/desktop/gnome/sound/default_mixer_tracks"
++
++#define ACME_VOLUME_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), ACME_TYPE_VOLUME, AcmeVolumePrivate))
++
++struct AcmeVolumePrivate {
++ GstMixer *mixer;
++ GList *mixer_tracks;
++ guint timer_id;
++ gdouble volume;
++ gboolean mute;
++ GConfClient *gconf_client;
++};
++
++G_DEFINE_TYPE (AcmeVolume, acme_volume, G_TYPE_OBJECT)
++
++static gboolean acme_volume_open (AcmeVolume *acme);
++static void acme_volume_close (AcmeVolume *acme);
++static gboolean acme_volume_close_real (AcmeVolume *self);
++
++static gpointer acme_volume_object = NULL;
++
++static void
++acme_volume_finalize (GObject *object)
++{
++ AcmeVolume *self;
++
++ g_return_if_fail (object != NULL);
++ g_return_if_fail (ACME_IS_VOLUME (object));
++
++ self = ACME_VOLUME (object);
++
++ if (self->_priv->timer_id != 0)
++ g_source_remove (self->_priv->timer_id);
++ acme_volume_close_real (self);
++
++ if (self->_priv->gconf_client != NULL) {
++ g_object_unref (self->_priv->gconf_client);
++ self->_priv->gconf_client = NULL;
++ }
++
++ G_OBJECT_CLASS (acme_volume_parent_class)->finalize (object);
++}
++
++void
++acme_volume_set_mute (AcmeVolume *self, gboolean val)
++{
++ GList *t;
++
++ g_return_if_fail(ACME_IS_VOLUME(self));
++ g_return_if_fail(acme_volume_open(self));
++
++ for (t = self->_priv->mixer_tracks; t != NULL; t = t->next) {
++ GstMixerTrack *track = GST_MIXER_TRACK (t->data);
++ gst_mixer_set_mute (self->_priv->mixer, track, val);
++ }
++ self->_priv->mute = val;
++ acme_volume_close (self);
++}
++
++static void
++update_state (AcmeVolume * self)
++{
++ gint *volumes, n;
++ gdouble vol = 0;
++ GstMixerTrack *track = GST_MIXER_TRACK (self->_priv->mixer_tracks->data);
++
++ /* update mixer by getting volume */
++ volumes = g_new0 (gint, track->num_channels);
++ gst_mixer_get_volume (self->_priv->mixer, track, volumes);
++ for (n = 0; n < track->num_channels; n++)
++ vol += volumes[n];
++ g_free (volumes);
++ vol /= track->num_channels;
++ vol = 100 * vol / (track->max_volume - track->min_volume);
++
++ /* update mute flag, and volume if not muted */
++ if (GST_MIXER_TRACK_HAS_FLAG (track, GST_MIXER_TRACK_MUTE))
++ self->_priv->mute = TRUE;
++ self->_priv->volume = vol;
++}
++
++gboolean
++acme_volume_get_mute (AcmeVolume *self)
++{
++ g_return_val_if_fail(acme_volume_open(self), FALSE);
++
++ update_state (self);
++ acme_volume_close (self);
++
++ return self->_priv->mute;
++}
++
++gint
++acme_volume_get_volume (AcmeVolume *self)
++{
++
++ g_return_val_if_fail(acme_volume_open(self), 0);
++
++ update_state (self);
++
++ acme_volume_close (self);
++
++ return (gint) (self->_priv->volume + 0.5);
++}
++
++void
++acme_volume_set_volume (AcmeVolume *self, gint val)
++{
++ GList *t;
++
++ g_return_if_fail(acme_volume_open(self));
++
++ val = CLAMP (val, 0, 100);
++
++ for (t = self->_priv->mixer_tracks; t != NULL; t = t->next) {
++ GstMixerTrack *track = GST_MIXER_TRACK (t->data);
++ gint *volumes, n;
++ gdouble scale = (track->max_volume - track->min_volume) / 100.0;
++ gint vol = (gint) (val * scale + track->min_volume + 0.5);
++
++ volumes = g_new (gint, track->num_channels);
++ for (n = 0; n < track->num_channels; n++)
++ volumes[n] = vol;
++ gst_mixer_set_volume (self->_priv->mixer, track, volumes);
++ g_free (volumes);
++ }
++
++ /* update state */
++ self->_priv->volume = val;
++
++ acme_volume_close (self);
++}
++
++void
++acme_volume_mute_toggle (AcmeVolume *self)
++{
++ gboolean muted;
++
++ g_return_if_fail (self != NULL);
++ g_return_if_fail (ACME_IS_VOLUME(self));
++
++ muted = acme_volume_get_mute(self);
++ acme_volume_set_mute(self, !muted);
++}
++
++gint
++acme_volume_get_threshold (AcmeVolume *self)
++{
++ GList *t;
++ gint steps = 101;
++
++ g_return_val_if_fail(acme_volume_open(self), 1);
++
++ for (t = self->_priv->mixer_tracks; t != NULL; t = t->next) {
++ GstMixerTrack *track = GST_MIXER_TRACK (t->data);
++ gint track_steps = track->max_volume - track->min_volume;
++ if (track_steps > 0 && track_steps < steps)
++ steps = track_steps;
++ }
++
++ acme_volume_close (self);
++
++ return 100 / steps + 1;
++}
++
++static gboolean
++acme_volume_close_real (AcmeVolume *self)
++{
++ if (self->_priv->mixer != NULL)
++ {
++ gst_element_set_state (GST_ELEMENT (self->_priv->mixer), GST_STATE_NULL);
++ gst_object_unref (GST_OBJECT (self->_priv->mixer));
++ g_list_foreach (self->_priv->mixer_tracks, (GFunc) g_object_unref, NULL);
++ g_list_free (self->_priv->mixer_tracks);
++ self->_priv->mixer = NULL;
++ self->_priv->mixer_tracks = NULL;
++ }
++
++ self->_priv->timer_id = 0;
++ return FALSE;
++}
++
++/*
++ * _acme_set_mixer
++ * @mixer A pointer to mixer element
++ * @data A pointer to user data (AcmeVolume instance to be modified)
++ * @return A gboolean indicating success if Master track was found, failed otherwises.
++ */
++static gboolean
++_acme_set_mixer(GstMixer *mixer, gpointer user_data)
++{
++ const GList *tracks;
++
++ for (tracks = gst_mixer_list_tracks (mixer); tracks != NULL; tracks = tracks->next) {
++ GstMixerTrack *track = GST_MIXER_TRACK (tracks->data);
++
++ if (GST_MIXER_TRACK_HAS_FLAG (track, GST_MIXER_TRACK_MASTER)) {
++ AcmeVolume *self;
++
++ self = ACME_VOLUME (user_data);
++
++ self->_priv->mixer = mixer;
++ self->_priv->mixer_tracks = g_list_append (self->_priv->mixer_tracks, g_object_ref (track));
++ return TRUE;
++ }
++
++ continue;
++ }
++
++ return FALSE;
++}
++
++/* This is a modified version of code from gnome-media's gst-mixer */
++static gboolean
++acme_volume_open (AcmeVolume *self)
++{
++ gchar *mixer_device, **factory_and_device = NULL;
++ GList *mixer_list;
++
++ if (self->_priv->timer_id != 0) {
++ g_source_remove (self->_priv->timer_id);
++ self->_priv->timer_id = 0;
++ return TRUE;
++ }
++
++ mixer_device = gconf_client_get_string (self->_priv->gconf_client, DEFAULT_MIXER_DEVICE_KEY, NULL);
++ if (mixer_device != NULL)
++ factory_and_device = g_strsplit (mixer_device, ":", 2);
++
++ if (factory_and_device != NULL && factory_and_device[0] != NULL) {
++ GstElement *element;
++
++ element = gst_element_factory_make (factory_and_device[0], NULL);
++
++ if (element != NULL) {
++ if (factory_and_device[1] != NULL &&
++ g_object_class_find_property (G_OBJECT_GET_CLASS (element), "device"))
++ g_object_set (G_OBJECT (element), "device", factory_and_device[1], NULL);
++ gst_element_set_state (element, GST_STATE_READY);
++
++ if (GST_IS_MIXER (element))
++ self->_priv->mixer = GST_MIXER (element);
++ else {
++ gst_element_set_state (element, GST_STATE_NULL);
++ gst_object_unref (element);
++ }
++ }
++ }
++
++ g_free (mixer_device);
++ g_strfreev (factory_and_device);
++
++ if (self->_priv->mixer != NULL) {
++ const GList *m;
++ GSList *tracks, *t;
++ GError *error = NULL;
++
++ /* Try to use tracks saved in GConf
++ Note: errors need to be treated , for example if the user set a non type list for this key
++ or if the elements type_list are not "matched" */
++ tracks = gconf_client_get_list (self->_priv->gconf_client, DEFAULT_MIXER_TRACKS_KEY,
++ GCONF_VALUE_STRING, &error);
++
++ if (error) {
++ g_warning("ERROR: %s\n", error->message);
++ g_error_free(error);
++ }
++
++ /* We use these tracks ONLY if they are supported on the system with the following mixer */
++ for (m = gst_mixer_list_tracks (self->_priv->mixer); m != NULL; m = m->next) {
++ GstMixerTrack *track = GST_MIXER_TRACK (m->data);
++
++ for (t = tracks; t != NULL; t = t->next)
++ if (!strcmp (t->data, track->label))
++ self->_priv->mixer_tracks = g_list_append (self->_priv->mixer_tracks, g_object_ref (track));
++
++ }
++
++ g_slist_foreach (tracks, (GFunc)g_free, NULL);
++ g_slist_free (tracks);
++
++ /* If no track stored in GConf is avaiable try to use Master track */
++ if (self->_priv->mixer_tracks == NULL) {
++ for (m = gst_mixer_list_tracks (self->_priv->mixer); m != NULL; m = m->next) {
++ GstMixerTrack *track = GST_MIXER_TRACK (m->data);
++
++ if (GST_MIXER_TRACK_HAS_FLAG (track, GST_MIXER_TRACK_MASTER)) {
++ self->_priv->mixer_tracks = g_list_append (self->_priv->mixer_tracks, g_object_ref (track));
++ break;
++ }
++ }
++ }
++
++ if (self->_priv->mixer_tracks != NULL)
++ return TRUE;
++ else {
++ gst_element_set_state (GST_ELEMENT (self->_priv->mixer), GST_STATE_NULL);
++ gst_object_unref (self->_priv->mixer);
++ }
++ }
++
++ /* Go through all elements of a certain class and check whether
++ * they implement a mixer. If so, walk through the tracks and look
++ * for first one named "volume".
++ *
++ * We should probably do something intelligent if we don't find an
++ * appropriate mixer/track. But now we do something stupid...
++ * everything just becomes a no-op.
++ */
++ mixer_list = gst_audio_default_registry_mixer_filter (_acme_set_mixer,
++ TRUE,
++ self);
++
++ if (mixer_list == NULL)
++ return FALSE;
++
++ /* do not unref the mixer as we keep the ref for self->priv->mixer */
++ g_list_free (mixer_list);
++
++ return TRUE;
++}
++
++static void
++acme_volume_close (AcmeVolume *self)
++{
++ self->_priv->timer_id = g_timeout_add_seconds (TIMEOUT,
++ (GSourceFunc) acme_volume_close_real, self);
++}
++
++static void
++acme_volume_init (AcmeVolume *self)
++{
++ self->_priv = ACME_VOLUME_GET_PRIVATE (self);
++ self->_priv->gconf_client = gconf_client_get_default ();
++}
++
++static void
++acme_volume_class_init (AcmeVolumeClass *klass)
++{
++ G_OBJECT_CLASS (klass)->finalize = acme_volume_finalize;
++
++ gst_init (NULL, NULL);
++
++ g_type_class_add_private (klass, sizeof (AcmeVolumePrivate));
++}
++
++/* acme_volume_new
++ * @return A singleton instance of type AcmeVolume
++ */
++AcmeVolume *
++acme_volume_new (void)
++{
++ if (acme_volume_object == NULL) {
++ acme_volume_object = g_object_new (ACME_TYPE_VOLUME, NULL);
++ return ACME_VOLUME(acme_volume_object);
++ }
++ g_object_ref(acme_volume_object);
++ return ACME_VOLUME(acme_volume_object);
++}
++
+diff -Nur gnome-settings-daemon-2.30.0.orig/plugins/media-keys/cut-n-paste/gvc-gstreamer-acme-vol.h gnome-settings-daemon-2.30.0/plugins/media-keys/cut-n-paste/gvc-gstreamer-acme-vol.h
+--- gnome-settings-daemon-2.30.0.orig/plugins/media-keys/cut-n-paste/gvc-gstreamer-acme-vol.h 1970-01-01 02:00:00.000000000 +0200
++++ gnome-settings-daemon-2.30.0/plugins/media-keys/cut-n-paste/gvc-gstreamer-acme-vol.h 2010-03-29 21:35:17.977471980 +0300
+@@ -0,0 +1,56 @@
++/* acme-volume.h
++
++ Copyright (C) 2002, 2003 Bastien Nocera
++ Copyright (C) 2004 Novell, Inc.
++ Copyright (C) 2009 PERIER Romain <mrpouet@tuxfamily.org>
++
++ The Gnome Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Library General Public License as
++ published by the Free Software Foundation; either version 2 of the
++ License, or (at your option) any later version.
++
++ The Gnome Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Library General Public License for more details.
++
++ You should have received a copy of the GNU Library General Public
++ License along with the Gnome Library; see the file COPYING.LIB. If not,
++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
++ Boston, MA 02111-1307, USA.
++
++ Author: Bastien Nocera <hadess@hadess.net>
++ Jon Trowbridge <trow@ximian.com>
++ */
++
++#include <glib-object.h>
++
++#define ACME_TYPE_VOLUME (acme_volume_get_type ())
++#define ACME_VOLUME(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), ACME_TYPE_VOLUME, AcmeVolume))
++#define ACME_VOLUME_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), ACME_TYPE_VOLUME, AcmeVolumeClass))
++#define ACME_IS_VOLUME(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ACME_TYPE_VOLUME))
++#define ACME_VOLUME_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), ACME_TYPE_VOLUME, AcmeVolumeClass))
++
++typedef struct AcmeVolume AcmeVolume;
++typedef struct AcmeVolumeClass AcmeVolumeClass;
++typedef struct AcmeVolumePrivate AcmeVolumePrivate;
++
++struct AcmeVolume {
++ GObject parent;
++ AcmeVolumePrivate *_priv;
++};
++
++struct AcmeVolumeClass {
++ GObjectClass parent;
++};
++
++GType acme_volume_get_type (void);
++AcmeVolume *acme_volume_new (void);
++void acme_volume_set_mute (AcmeVolume *self, gboolean val);
++void acme_volume_mute_toggle (AcmeVolume *self);
++gboolean acme_volume_get_mute (AcmeVolume *self);
++void acme_volume_set_volume (AcmeVolume *self, gint val);
++gint acme_volume_get_volume (AcmeVolume *self);
++gint acme_volume_get_threshold (AcmeVolume *self);
++
++
+diff -Nur gnome-settings-daemon-2.30.0.orig/plugins/media-keys/cut-n-paste/Makefile.am gnome-settings-daemon-2.30.0/plugins/media-keys/cut-n-paste/Makefile.am
+--- gnome-settings-daemon-2.30.0.orig/plugins/media-keys/cut-n-paste/Makefile.am 2009-08-12 12:15:00.000000000 +0300
++++ gnome-settings-daemon-2.30.0/plugins/media-keys/cut-n-paste/Makefile.am 2010-03-29 21:35:17.977471980 +0300
+@@ -4,16 +4,24 @@
+
+ INCLUDES = \
+ $(WARN_CFLAGS) \
+- $(VOLUME_CONTROL_CFLAGS) \
+- $(PULSE_CFLAGS) \
+ $(NULL)
+
+ libgvc_la_LIBADD = \
+- $(VOLUME_CONTROL_LIBS) \
+- $(PULSE_LIBS) \
+ $(NULL)
+
+ libgvc_la_SOURCES = \
++ $(NULL)
++
++if HAVE_PULSE
++INCLUDES += \
++ $(VOLUME_CONTROL_CFLAGS) \
++ $(PULSE_CFLAGS)
++
++libgvc_la_LIBADD += \
++ $(VOLUME_CONTROL_LIBS) \
++ $(PULSE_LIBS)
++
++libgvc_la_SOURCES += \
+ gvc-mixer-stream.h \
+ gvc-mixer-stream.c \
+ gvc-channel-map.h \
+@@ -31,8 +39,22 @@
+ gvc-mixer-event-role.h \
+ gvc-mixer-event-role.c \
+ gvc-mixer-control.h \
+- gvc-mixer-control.c \
+- $(NULL)
++ gvc-mixer-control.c
++endif
++
++if HAVE_GSTREAMER
++INCLUDES += \
++ $(SETTINGS_PLUGIN_CFLAGS) \
++ $(AM_CFLAGS) \
++ $(GST_CFLAGS)
++
++libgvc_la_LIBADD += \
++ $(GST_LIBS)
++
++libgvc_la_SOURCES += \
++ gvc-gstreamer-acme-vol.c \
++ gvc-gstreamer-acme-vol.h
++endif
+
+ MAINTAINERCLEANFILES = \
+ *~ \
+diff -Nur gnome-settings-daemon-2.30.0.orig/plugins/media-keys/gsd-media-keys-manager.c gnome-settings-daemon-2.30.0/plugins/media-keys/gsd-media-keys-manager.c
+--- gnome-settings-daemon-2.30.0.orig/plugins/media-keys/gsd-media-keys-manager.c 2010-03-29 11:15:04.000000000 +0300
++++ gnome-settings-daemon-2.30.0/plugins/media-keys/gsd-media-keys-manager.c 2010-03-29 21:56:13.293985485 +0300
+@@ -53,6 +53,8 @@
+ #ifdef HAVE_PULSE
+ #include <canberra-gtk.h>
+ #include "gvc-mixer-control.h"
++#elif defined(HAVE_GSTREAMER)
++#include "gvc-gstreamer-acme-vol.h"
+ #endif /* HAVE_PULSE */
+
+ #define GSD_DBUS_PATH "/org/gnome/SettingsDaemon"
+@@ -78,11 +80,12 @@
+ /* Volume bits */
+ GvcMixerControl *volume;
+ GvcMixerStream *stream;
++#elif defined(HAVE_GSTREAMER)
++ AcmeVolume *volume;
+ #endif /* HAVE_PULSE */
+ GtkWidget *dialog;
+ GConfClient *conf_client;
+- GVolumeMonitor *volume_monitor;
+-
++ GVolumeMonitor *volume_monitor;
+ /* Multihead stuff */
+ GdkScreen *current_screen;
+ GSList *screens;
+@@ -601,15 +604,15 @@
+ if (score < SCORE_CAN_EJECT) {
+ fav_drive = drive;
+ score = SCORE_CAN_EJECT;
+- }
++ }
+ if (g_drive_has_media (drive) == FALSE)
+ continue;
+ if (score < SCORE_HAS_MEDIA) {
+ fav_drive = drive;
+ score = SCORE_HAS_MEDIA;
+ break;
+- }
+- }
++ }
++ }
+
+ /* Show the dialogue */
+ dialog_init (manager);
+@@ -632,7 +635,7 @@
+ NULL, NULL,
+ (GAsyncReadyCallback) do_eject_action_cb,
+ manager);
+- g_object_unref (fav_drive);
++ g_object_unref (fav_drive);
+ }
+
+ static void
+@@ -675,7 +678,9 @@
+ CA_PROP_APPLICATION_ID, "org.gnome.VolumeControl",
+ NULL);
+ }
++#endif /* HAVE_PULSE */
+
++#if defined(HAVE_PULSE) || defined(HAVE_GSTREAMER)
+ static void
+ do_sound_action (GsdMediaKeysManager *manager,
+ int type)
+@@ -685,7 +690,11 @@
+ int vol_step;
+ gboolean sound_changed;
+
++#ifdef HAVE_PULSE
+ if (manager->priv->stream == NULL)
++#else
++ if (manager->priv->volume == NULL)
++#endif
+ return;
+
+ vol_step = gconf_client_get_int (manager->priv->conf_client,
+@@ -695,6 +704,7 @@
+ if (vol_step <= 0 || vol_step > 100)
+ vol_step = VOLUME_STEP;
+
++#ifdef HAVE_PULSE
+ norm_vol_step = PA_VOLUME_NORM * vol_step / 100;
+
+ /* FIXME: this is racy */
+@@ -702,13 +712,28 @@
+ muted = gvc_mixer_stream_get_is_muted (manager->priv->stream);
+ sound_changed = FALSE;
+
++#else
++ if (vol_step > 0) {
++ gint threshold = acme_volume_get_threshold (manager->priv->volume);
++ if (vol_step < threshold)
++ vol_step = threshold;
++ g_debug ("Using volume step of %d", vol_step);
++ }
++ vol = acme_volume_get_volume (manager->priv->volume);
++ muted = acme_volume_get_mute (manager->priv->volume);
++#endif
+ switch (type) {
+ case MUTE_KEY:
++#ifdef HAVE_PULSE
+ muted = !muted;
+ gvc_mixer_stream_change_is_muted (manager->priv->stream, muted);
+ sound_changed = TRUE;
++#else
++ acme_volume_mute_toggle (manager->priv->volume);
++#endif
+ break;
+ case VOLUME_DOWN_KEY:
++#ifdef HAVE_PULSE
+ if (!muted && (vol <= norm_vol_step)) {
+ muted = !muted;
+ vol = 0;
+@@ -722,24 +747,37 @@
+ if (gvc_mixer_stream_set_volume (manager->priv->stream, vol) != FALSE) {
+ gvc_mixer_stream_push_volume (manager->priv->stream);
+ sound_changed = TRUE;
+- }
+ }
++#else
++ if (!muted && (vol <= vol_step))
++ acme_volume_mute_toggle (manager->priv->volume);
++ acme_volume_set_volume (manager->priv->volume, vol - vol_step);
++#endif
+ break;
+ case VOLUME_UP_KEY:
+ if (muted) {
+ muted = !muted;
+ if (vol == 0) {
++#ifdef HAVE_PULSE
+ vol = vol + norm_vol_step;
+ gvc_mixer_stream_change_is_muted (manager->priv->stream, muted);
+ if (gvc_mixer_stream_set_volume (manager->priv->stream, vol) != FALSE) {
+ gvc_mixer_stream_push_volume (manager->priv->stream);
+ sound_changed = TRUE;
+- }
++ }
+ } else {
+ gvc_mixer_stream_change_is_muted (manager->priv->stream, muted);
+ sound_changed = TRUE;
+ }
++#else
++ /* We need to unmute otherwise vol is blocked (and muted) */
++ acme_volume_set_mute (manager->priv->volume, FALSE);
++ }
++ acme_volume_set_volume (manager->priv->volume, vol + vol_step);
++
++#endif
+ } else {
++#ifdef HAVE_PULSE
+ if (vol < MAX_VOLUME) {
+ if (vol + norm_vol_step >= MAX_VOLUME) {
+ vol = MAX_VOLUME;
+@@ -751,13 +789,35 @@
+ sound_changed = TRUE;
+ }
+ }
++#else
++ acme_volume_set_volume (manager->priv->volume, vol + vol_step);
++#endif
+ }
+ break;
+ }
+
++#ifdef HAVE_PULSE
+ update_dialog (manager, vol, muted, sound_changed);
++#else
++ muted = acme_volume_get_mute (manager->priv->volume);
++ vol = acme_volume_get_volume (manager->priv->volume);
++
++ /* FIXME: AcmeVolume should probably emit signals
++ instead of doing it like this */
++ dialog_init (manager);
++ gsd_media_keys_window_set_volume_muted (GSD_MEDIA_KEYS_WINDOW (manager->priv->dialog),
++ muted);
++ gsd_media_keys_window_set_volume_level (GSD_MEDIA_KEYS_WINDOW (manager->priv->dialog),
++ vol);
++ gsd_media_keys_window_set_action (GSD_MEDIA_KEYS_WINDOW (manager->priv->dialog),
++ GSD_MEDIA_KEYS_WINDOW_ACTION_VOLUME);
++ dialog_show (manager);
++#endif /* HAVE_PULSE */
+ }
+
++#endif /* defined(HAVE_PULSE) || defined(HAVE_GSTREAMER) */
++
++#ifdef HAVE_PULSE
+ static void
+ update_default_sink (GsdMediaKeysManager *manager)
+ {
+@@ -919,9 +979,9 @@
+ case MUTE_KEY:
+ case VOLUME_DOWN_KEY:
+ case VOLUME_UP_KEY:
+-#ifdef HAVE_PULSE
++#if defined(HAVE_PULSE) || defined(HAVE_GSTREAMER)
+ do_sound_action (manager, type);
+-#endif /* HAVE_PULSE */
++#endif /* HAVE_PULSE || HAVE_GSTREAMER */
+ break;
+ case POWER_KEY:
+ do_exit_action (manager);
+@@ -1064,7 +1124,7 @@
+
+ g_debug ("Starting media_keys manager");
+ gnome_settings_profile_start (NULL);
+- manager->priv->volume_monitor = g_volume_monitor_get ();
++ manager->priv->volume_monitor = g_volume_monitor_get();
+ manager->priv->conf_client = gconf_client_get_default ();
+
+ gconf_client_add_dir (manager->priv->conf_client,
+@@ -1122,6 +1182,10 @@
+ gvc_mixer_control_open (manager->priv->volume);
+
+ gnome_settings_profile_end ("gvc_mixer_control_new");
++#elif defined(HAVE_GSTREAMER)
++ gnome_settings_profile_start ("acme_volume_new");
++ manager->priv->volume = acme_volume_new ();
++ gnome_settings_profile_end ("acme_volume_new");
+ #endif /* HAVE_PULSE */
+ g_idle_add ((GSourceFunc) start_media_keys_idle_cb, manager);
+
+@@ -1199,6 +1263,7 @@
+ g_object_unref (priv->stream);
+ priv->stream = NULL;
+ }
++#elif defined(HAVE_GSTREAMER)
+
+ if (priv->volume) {
+ g_object_unref (priv->volume);
+diff -Nur gnome-settings-daemon-2.30.0.orig/plugins/media-keys/Makefile.am gnome-settings-daemon-2.30.0/plugins/media-keys/Makefile.am
+--- gnome-settings-daemon-2.30.0.orig/plugins/media-keys/Makefile.am 2010-03-10 13:59:38.000000000 +0200
++++ gnome-settings-daemon-2.30.0/plugins/media-keys/Makefile.am 2010-03-29 22:18:20.077410522 +0300
+@@ -3,13 +3,8 @@
+
+ NULL =
+
+-SUBDIRS =
+-plugin_LTLIBRARIES =
+-
+-if HAVE_PULSE
+-SUBDIRS += cut-n-paste
+-plugin_LTLIBRARIES += libmedia-keys.la
+-endif
++SUBDIRS = cut-n-paste
++plugin_LTLIBRARIES = libmedia-keys.la
+
+ BUILT_SOURCES = \
+ gsd-media-keys-manager-glue.h \
+@@ -100,7 +95,7 @@
+
+ libmedia_keys_la_LIBADD = \
+ $(top_builddir)/plugins/common/libcommon.la \
+- $(top_builddir)/plugins/media-keys/cut-n-paste/libgvc.la \
++ $(top_builddir)/plugins/media-keys/cut-n-paste/libgvc.la \
+ $(SETTINGS_PLUGIN_LIBS) \
+ $(XF86MISC_LIBS) \
+ -lm
+@@ -108,9 +103,7 @@
+ plugin_in_files = \
+ media-keys.gnome-settings-plugin.in
+
+-if HAVE_PULSE
+ plugin_DATA = $(plugin_in_files:.gnome-settings-plugin.in=.gnome-settings-plugin)
+-endif
+
+ noinst_PROGRAMS = \
+ test-media-keys \
+@@ -176,9 +169,7 @@
+ $(GST_LIBS) \
+ -lm
+
+-if HAVE_PULSE
+ test_media_keys_LDADD += $(top_builddir)/plugins/media-keys/cut-n-paste/libgvc.la
+-endif
+
+ gtkbuilderdir = $(pkgdatadir)
+ gtkbuilder_DATA = \
diff --git a/extra/gnome-settings-daemon/gstreamer-volume.patch b/extra/gnome-settings-daemon/gstreamer-volume.patch
new file mode 100644
index 000000000..0a32dcd7d
--- /dev/null
+++ b/extra/gnome-settings-daemon/gstreamer-volume.patch
@@ -0,0 +1,808 @@
+diff -ruN gnome-settings-daemon-2.27.91/configure.ac gnome-settings-daemon-2.27.91.gst/configure.ac
+--- gnome-settings-daemon-2.27.91/configure.ac 2009-08-24 12:20:55.000000000 +0200
++++ gnome-settings-daemon-2.27.91.gst/configure.ac 2009-08-24 15:25:47.000000000 +0200
+@@ -257,6 +257,48 @@
+ AC_SUBST(PULSE_CFLAGS)
+ AC_SUBST(PULSE_LIBS)
+
++dnl ==============================================
++dnl GStreamer section
++dnl ==============================================
++GST_MAJORMINOR=auto
++
++AC_ARG_ENABLE(gstreamer,
++AC_HELP_STRING([--enable-gstreamer],[use gstreamer if available (and optionally specify a version)]),
++[case "${enableval}" in
++ yes) ENABLE_GSTREAMER=yes ;;
++ 0.10) ENABLE_GSTREAMER=yes && GST_MAJORMINOR=0.10 ;;
++ no) ENABLE_GSTREAMER=no ;;
++ *) AC_MSG_ERROR([
++ *** Bad value ${enableval} for --enable-gstreamer
++ *** Please use one of the following:
++ *** --enable-gstreamer=0.10
++ ]) ;;
++esac],
++[ENABLE_GSTREAMER=yes]) dnl Default value
++
++have_gstreamer=no
++if test "x$ENABLE_GSTREAMER" = "xyes"; then
++ GST_REQS=0.10.1.2
++ PKGS="gstreamer-0.10 >= $GST_REQS gstreamer-plugins-base-0.10 >= $GST_REQS"
++
++ PKG_CHECK_MODULES(GST, $PKGS, have_gstreamer=yes,
++ AC_MSG_RESULT([no]))
++
++ if test "x$have_pulse" = "xtrue"; then
++ AC_MSG_ERROR([*** GStreamer & Pulseaudio both are selected ***])
++ fi
++
++ if test "x$have_gstreamer" = "xyes"; then
++ GST_LIBS="$GST_LIBS -lgstinterfaces-0.10 -lgstaudio-0.10"
++ AC_DEFINE(HAVE_GSTREAMER,1,[enable gstreamer])
++ fi
++else
++ AC_MSG_NOTICE([*** GStreamer support disabled ***])
++fi
++AM_CONDITIONAL(HAVE_GSTREAMER, test "x$have_gstreamer" = "xyes")
++AC_SUBST(GST_LIBS)
++AC_SUBST(GST_CFLAGS)
++
+ # ---------------------------------------------------------------------------
+ # Enable Profiling
+ # ---------------------------------------------------------------------------
+@@ -395,6 +437,7 @@
+ dbus-1 system.d dir: ${DBUS_SYS_DIR}
+
+ Libnotify support: ${have_libnotify}
++ GStreamer support: ${have_gstreamer}
+ PulseAudio support: ${have_pulse}
+ Profiling support: ${enable_profiling}
+ "
+diff -ruN gnome-settings-daemon-2.27.91/plugins/media-keys/Makefile.am gnome-settings-daemon-2.27.91.gst/plugins/media-keys/Makefile.am
+--- gnome-settings-daemon-2.27.91/plugins/media-keys/Makefile.am 2009-07-14 11:21:12.000000000 +0200
++++ gnome-settings-daemon-2.27.91.gst/plugins/media-keys/Makefile.am 2009-08-24 15:25:47.000000000 +0200
+@@ -1,12 +1,7 @@
+ NULL =
+
+-SUBDIRS =
+-plugin_LTLIBRARIES =
+-
+-if HAVE_PULSE
+-SUBDIRS += cut-n-paste
+-plugin_LTLIBRARIES += libmedia-keys.la
+-endif
++SUBDIRS = cut-n-paste
++plugin_LTLIBRARIES = libmedia-keys.la
+
+ BUILT_SOURCES = \
+ gsd-media-keys-manager-glue.h \
+@@ -54,16 +49,14 @@
+
+ libmedia_keys_la_LIBADD = \
+ $(top_builddir)/plugins/common/libcommon.la \
+- $(top_builddir)/plugins/media-keys/cut-n-paste/libgvc.la \
++ $(top_builddir)/plugins/media-keys/cut-n-paste/libgvc.la \
+ $(SETTINGS_PLUGIN_LIBS) \
+ $(XF86MISC_LIBS)
+
+ plugin_in_files = \
+ media-keys.gnome-settings-plugin.in
+
+-if HAVE_PULSE
+ plugin_DATA = $(plugin_in_files:.gnome-settings-plugin.in=.gnome-settings-plugin)
+-endif
+
+ noinst_PROGRAMS = \
+ test-media-keys \
+@@ -124,9 +117,7 @@
+ $(XF86MISC_LIBS) \
+ $(GST_LIBS)
+
+-if HAVE_PULSE
+ test_media_keys_LDADD += $(top_builddir)/plugins/media-keys/cut-n-paste/libgvc.la
+-endif
+
+ gtkbuilderdir = $(pkgdatadir)
+ gtkbuilder_DATA = \
+diff -ruN gnome-settings-daemon-2.27.91/plugins/media-keys/cut-n-paste/Makefile.am gnome-settings-daemon-2.27.91.gst/plugins/media-keys/cut-n-paste/Makefile.am
+--- gnome-settings-daemon-2.27.91/plugins/media-keys/cut-n-paste/Makefile.am 2009-08-12 11:15:00.000000000 +0200
++++ gnome-settings-daemon-2.27.91.gst/plugins/media-keys/cut-n-paste/Makefile.am 2009-08-24 15:25:47.000000000 +0200
+@@ -4,16 +4,24 @@
+
+ INCLUDES = \
+ $(WARN_CFLAGS) \
+- $(VOLUME_CONTROL_CFLAGS) \
+- $(PULSE_CFLAGS) \
+ $(NULL)
+
+ libgvc_la_LIBADD = \
+- $(VOLUME_CONTROL_LIBS) \
+- $(PULSE_LIBS) \
+ $(NULL)
+
+ libgvc_la_SOURCES = \
++ $(NULL)
++
++if HAVE_PULSE
++INCLUDES += \
++ $(VOLUME_CONTROL_CFLAGS) \
++ $(PULSE_CFLAGS)
++
++libgvc_la_LIBADD += \
++ $(VOLUME_CONTROL_LIBS) \
++ $(PULSE_LIBS)
++
++libgvc_la_SOURCES += \
+ gvc-mixer-stream.h \
+ gvc-mixer-stream.c \
+ gvc-channel-map.h \
+@@ -31,8 +39,22 @@
+ gvc-mixer-event-role.h \
+ gvc-mixer-event-role.c \
+ gvc-mixer-control.h \
+- gvc-mixer-control.c \
+- $(NULL)
++ gvc-mixer-control.c
++endif
++
++if HAVE_GSTREAMER
++INCLUDES += \
++ $(SETTINGS_PLUGIN_CFLAGS) \
++ $(AM_CFLAGS) \
++ $(GST_CFLAGS)
++
++libgvc_la_LIBADD += \
++ $(GST_LIBS)
++
++libgvc_la_SOURCES += \
++ gvc-gstreamer-acme-vol.c \
++ gvc-gstreamer-acme-vol.h
++endif
+
+ MAINTAINERCLEANFILES = \
+ *~ \
+diff -ruN gnome-settings-daemon-2.27.91/plugins/media-keys/cut-n-paste/gvc-gstreamer-acme-vol.c gnome-settings-daemon-2.27.91.gst/plugins/media-keys/cut-n-paste/gvc-gstreamer-acme-vol.c
+--- gnome-settings-daemon-2.27.91/plugins/media-keys/cut-n-paste/gvc-gstreamer-acme-vol.c 1970-01-01 01:00:00.000000000 +0100
++++ gnome-settings-daemon-2.27.91.gst/plugins/media-keys/cut-n-paste/gvc-gstreamer-acme-vol.c 2009-08-24 15:25:47.000000000 +0200
+@@ -0,0 +1,402 @@
++/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
++
++/* acme-volume.c
++
++ Copyright (C) 2002, 2003 Bastien Nocera
++ Copyright (C) 2004 Novell, Inc.
++ Copyright (C) 2009 PERIER Romain <mrpouet@tuxfamily.org>
++
++ The Gnome Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Library General Public License as
++ published by the Free Software Foundation; either version 2 of the
++ License, or (at your option) any later version.
++
++ The Gnome Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Library General Public License for more details.
++
++ You should have received a copy of the GNU Library General Public
++ License along with the Gnome Library; see the file COPYING.LIB. If not,
++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
++ Boston, MA 02111-1307, USA.
++
++ Author: Bastien Nocera <hadess@hadess.net>
++ Jon Trowbridge <trow@ximian.com>
++*/
++
++#include "config.h"
++#include "gvc-gstreamer-acme-vol.h"
++
++#include <gst/gst.h>
++#include <gst/audio/mixerutils.h>
++#include <gst/interfaces/mixer.h>
++#include <gst/interfaces/propertyprobe.h>
++
++#include <gconf/gconf-client.h>
++
++#include <string.h>
++
++#define TIMEOUT 4
++
++#define DEFAULT_MIXER_DEVICE_KEY "/desktop/gnome/sound/default_mixer_device"
++#define DEFAULT_MIXER_TRACKS_KEY "/desktop/gnome/sound/default_mixer_tracks"
++
++#define ACME_VOLUME_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), ACME_TYPE_VOLUME, AcmeVolumePrivate))
++
++struct AcmeVolumePrivate {
++ GstMixer *mixer;
++ GList *mixer_tracks;
++ guint timer_id;
++ gdouble volume;
++ gboolean mute;
++ GConfClient *gconf_client;
++};
++
++G_DEFINE_TYPE (AcmeVolume, acme_volume, G_TYPE_OBJECT)
++
++static gboolean acme_volume_open (AcmeVolume *acme);
++static void acme_volume_close (AcmeVolume *acme);
++static gboolean acme_volume_close_real (AcmeVolume *self);
++
++static gpointer acme_volume_object = NULL;
++
++static void
++acme_volume_finalize (GObject *object)
++{
++ AcmeVolume *self;
++
++ g_return_if_fail (object != NULL);
++ g_return_if_fail (ACME_IS_VOLUME (object));
++
++ self = ACME_VOLUME (object);
++
++ if (self->_priv->timer_id != 0)
++ g_source_remove (self->_priv->timer_id);
++ acme_volume_close_real (self);
++
++ if (self->_priv->gconf_client != NULL) {
++ g_object_unref (self->_priv->gconf_client);
++ self->_priv->gconf_client = NULL;
++ }
++
++ G_OBJECT_CLASS (acme_volume_parent_class)->finalize (object);
++}
++
++void
++acme_volume_set_mute (AcmeVolume *self, gboolean val)
++{
++ GList *t;
++
++ g_return_if_fail(ACME_IS_VOLUME(self));
++ g_return_if_fail(acme_volume_open(self));
++
++ for (t = self->_priv->mixer_tracks; t != NULL; t = t->next) {
++ GstMixerTrack *track = GST_MIXER_TRACK (t->data);
++ gst_mixer_set_mute (self->_priv->mixer, track, val);
++ }
++ self->_priv->mute = val;
++ acme_volume_close (self);
++}
++
++static void
++update_state (AcmeVolume * self)
++{
++ gint *volumes, n;
++ gdouble vol = 0;
++ GstMixerTrack *track = GST_MIXER_TRACK (self->_priv->mixer_tracks->data);
++
++ /* update mixer by getting volume */
++ volumes = g_new0 (gint, track->num_channels);
++ gst_mixer_get_volume (self->_priv->mixer, track, volumes);
++ for (n = 0; n < track->num_channels; n++)
++ vol += volumes[n];
++ g_free (volumes);
++ vol /= track->num_channels;
++ vol = 100 * vol / (track->max_volume - track->min_volume);
++
++ /* update mute flag, and volume if not muted */
++ if (GST_MIXER_TRACK_HAS_FLAG (track, GST_MIXER_TRACK_MUTE))
++ self->_priv->mute = TRUE;
++ self->_priv->volume = vol;
++}
++
++gboolean
++acme_volume_get_mute (AcmeVolume *self)
++{
++ g_return_val_if_fail(acme_volume_open(self), FALSE);
++
++ update_state (self);
++ acme_volume_close (self);
++
++ return self->_priv->mute;
++}
++
++gint
++acme_volume_get_volume (AcmeVolume *self)
++{
++
++ g_return_val_if_fail(acme_volume_open(self), 0);
++
++ update_state (self);
++
++ acme_volume_close (self);
++
++ return (gint) (self->_priv->volume + 0.5);
++}
++
++void
++acme_volume_set_volume (AcmeVolume *self, gint val)
++{
++ GList *t;
++
++ g_return_if_fail(acme_volume_open(self));
++
++ val = CLAMP (val, 0, 100);
++
++ for (t = self->_priv->mixer_tracks; t != NULL; t = t->next) {
++ GstMixerTrack *track = GST_MIXER_TRACK (t->data);
++ gint *volumes, n;
++ gdouble scale = (track->max_volume - track->min_volume) / 100.0;
++ gint vol = (gint) (val * scale + track->min_volume + 0.5);
++
++ volumes = g_new (gint, track->num_channels);
++ for (n = 0; n < track->num_channels; n++)
++ volumes[n] = vol;
++ gst_mixer_set_volume (self->_priv->mixer, track, volumes);
++ g_free (volumes);
++ }
++
++ /* update state */
++ self->_priv->volume = val;
++
++ acme_volume_close (self);
++}
++
++void
++acme_volume_mute_toggle (AcmeVolume *self)
++{
++ gboolean muted;
++
++ g_return_if_fail (self != NULL);
++ g_return_if_fail (ACME_IS_VOLUME(self));
++
++ muted = acme_volume_get_mute(self);
++ acme_volume_set_mute(self, !muted);
++}
++
++gint
++acme_volume_get_threshold (AcmeVolume *self)
++{
++ GList *t;
++ gint steps = 101;
++
++ g_return_val_if_fail(acme_volume_open(self), 1);
++
++ for (t = self->_priv->mixer_tracks; t != NULL; t = t->next) {
++ GstMixerTrack *track = GST_MIXER_TRACK (t->data);
++ gint track_steps = track->max_volume - track->min_volume;
++ if (track_steps > 0 && track_steps < steps)
++ steps = track_steps;
++ }
++
++ acme_volume_close (self);
++
++ return 100 / steps + 1;
++}
++
++static gboolean
++acme_volume_close_real (AcmeVolume *self)
++{
++ if (self->_priv->mixer != NULL)
++ {
++ gst_element_set_state (GST_ELEMENT (self->_priv->mixer), GST_STATE_NULL);
++ gst_object_unref (GST_OBJECT (self->_priv->mixer));
++ g_list_foreach (self->_priv->mixer_tracks, (GFunc) g_object_unref, NULL);
++ g_list_free (self->_priv->mixer_tracks);
++ self->_priv->mixer = NULL;
++ self->_priv->mixer_tracks = NULL;
++ }
++
++ self->_priv->timer_id = 0;
++ return FALSE;
++}
++
++/*
++ * _acme_set_mixer
++ * @mixer A pointer to mixer element
++ * @data A pointer to user data (AcmeVolume instance to be modified)
++ * @return A gboolean indicating success if Master track was found, failed otherwises.
++ */
++static gboolean
++_acme_set_mixer(GstMixer *mixer, gpointer user_data)
++{
++ const GList *tracks;
++
++ for (tracks = gst_mixer_list_tracks (mixer); tracks != NULL; tracks = tracks->next) {
++ GstMixerTrack *track = GST_MIXER_TRACK (tracks->data);
++
++ if (GST_MIXER_TRACK_HAS_FLAG (track, GST_MIXER_TRACK_MASTER)) {
++ AcmeVolume *self;
++
++ self = ACME_VOLUME (user_data);
++
++ self->_priv->mixer = mixer;
++ self->_priv->mixer_tracks = g_list_append (self->_priv->mixer_tracks, g_object_ref (track));
++ return TRUE;
++ }
++
++ continue;
++ }
++
++ return FALSE;
++}
++
++/* This is a modified version of code from gnome-media's gst-mixer */
++static gboolean
++acme_volume_open (AcmeVolume *self)
++{
++ gchar *mixer_device, **factory_and_device = NULL;
++ GList *mixer_list;
++
++ if (self->_priv->timer_id != 0) {
++ g_source_remove (self->_priv->timer_id);
++ self->_priv->timer_id = 0;
++ return TRUE;
++ }
++
++ mixer_device = gconf_client_get_string (self->_priv->gconf_client, DEFAULT_MIXER_DEVICE_KEY, NULL);
++ if (mixer_device != NULL)
++ factory_and_device = g_strsplit (mixer_device, ":", 2);
++
++ if (factory_and_device != NULL && factory_and_device[0] != NULL) {
++ GstElement *element;
++
++ element = gst_element_factory_make (factory_and_device[0], NULL);
++
++ if (element != NULL) {
++ if (factory_and_device[1] != NULL &&
++ g_object_class_find_property (G_OBJECT_GET_CLASS (element), "device"))
++ g_object_set (G_OBJECT (element), "device", factory_and_device[1], NULL);
++ gst_element_set_state (element, GST_STATE_READY);
++
++ if (GST_IS_MIXER (element))
++ self->_priv->mixer = GST_MIXER (element);
++ else {
++ gst_element_set_state (element, GST_STATE_NULL);
++ gst_object_unref (element);
++ }
++ }
++ }
++
++ g_free (mixer_device);
++ g_strfreev (factory_and_device);
++
++ if (self->_priv->mixer != NULL) {
++ const GList *m;
++ GSList *tracks, *t;
++ GError *error = NULL;
++
++ /* Try to use tracks saved in GConf
++ Note: errors need to be treated , for example if the user set a non type list for this key
++ or if the elements type_list are not "matched" */
++ tracks = gconf_client_get_list (self->_priv->gconf_client, DEFAULT_MIXER_TRACKS_KEY,
++ GCONF_VALUE_STRING, &error);
++
++ if (error) {
++ g_warning("ERROR: %s\n", error->message);
++ g_error_free(error);
++ }
++
++ /* We use these tracks ONLY if they are supported on the system with the following mixer */
++ for (m = gst_mixer_list_tracks (self->_priv->mixer); m != NULL; m = m->next) {
++ GstMixerTrack *track = GST_MIXER_TRACK (m->data);
++
++ for (t = tracks; t != NULL; t = t->next)
++ if (!strcmp (t->data, track->label))
++ self->_priv->mixer_tracks = g_list_append (self->_priv->mixer_tracks, g_object_ref (track));
++
++ }
++
++ g_slist_foreach (tracks, (GFunc)g_free, NULL);
++ g_slist_free (tracks);
++
++ /* If no track stored in GConf is avaiable try to use Master track */
++ if (self->_priv->mixer_tracks == NULL) {
++ for (m = gst_mixer_list_tracks (self->_priv->mixer); m != NULL; m = m->next) {
++ GstMixerTrack *track = GST_MIXER_TRACK (m->data);
++
++ if (GST_MIXER_TRACK_HAS_FLAG (track, GST_MIXER_TRACK_MASTER)) {
++ self->_priv->mixer_tracks = g_list_append (self->_priv->mixer_tracks, g_object_ref (track));
++ break;
++ }
++ }
++ }
++
++ if (self->_priv->mixer_tracks != NULL)
++ return TRUE;
++ else {
++ gst_element_set_state (GST_ELEMENT (self->_priv->mixer), GST_STATE_NULL);
++ gst_object_unref (self->_priv->mixer);
++ }
++ }
++
++ /* Go through all elements of a certain class and check whether
++ * they implement a mixer. If so, walk through the tracks and look
++ * for first one named "volume".
++ *
++ * We should probably do something intelligent if we don't find an
++ * appropriate mixer/track. But now we do something stupid...
++ * everything just becomes a no-op.
++ */
++ mixer_list = gst_audio_default_registry_mixer_filter (_acme_set_mixer,
++ TRUE,
++ self);
++
++ if (mixer_list == NULL)
++ return FALSE;
++
++ /* do not unref the mixer as we keep the ref for self->priv->mixer */
++ g_list_free (mixer_list);
++
++ return TRUE;
++}
++
++static void
++acme_volume_close (AcmeVolume *self)
++{
++ self->_priv->timer_id = g_timeout_add_seconds (TIMEOUT,
++ (GSourceFunc) acme_volume_close_real, self);
++}
++
++static void
++acme_volume_init (AcmeVolume *self)
++{
++ self->_priv = ACME_VOLUME_GET_PRIVATE (self);
++ self->_priv->gconf_client = gconf_client_get_default ();
++}
++
++static void
++acme_volume_class_init (AcmeVolumeClass *klass)
++{
++ G_OBJECT_CLASS (klass)->finalize = acme_volume_finalize;
++
++ gst_init (NULL, NULL);
++
++ g_type_class_add_private (klass, sizeof (AcmeVolumePrivate));
++}
++
++/* acme_volume_new
++ * @return A singleton instance of type AcmeVolume
++ */
++AcmeVolume *
++acme_volume_new (void)
++{
++ if (acme_volume_object == NULL) {
++ acme_volume_object = g_object_new (ACME_TYPE_VOLUME, NULL);
++ return ACME_VOLUME(acme_volume_object);
++ }
++ g_object_ref(acme_volume_object);
++ return ACME_VOLUME(acme_volume_object);
++}
++
+diff -ruN gnome-settings-daemon-2.27.91/plugins/media-keys/cut-n-paste/gvc-gstreamer-acme-vol.h gnome-settings-daemon-2.27.91.gst/plugins/media-keys/cut-n-paste/gvc-gstreamer-acme-vol.h
+--- gnome-settings-daemon-2.27.91/plugins/media-keys/cut-n-paste/gvc-gstreamer-acme-vol.h 1970-01-01 01:00:00.000000000 +0100
++++ gnome-settings-daemon-2.27.91.gst/plugins/media-keys/cut-n-paste/gvc-gstreamer-acme-vol.h 2009-08-24 15:25:47.000000000 +0200
+@@ -0,0 +1,56 @@
++/* acme-volume.h
++
++ Copyright (C) 2002, 2003 Bastien Nocera
++ Copyright (C) 2004 Novell, Inc.
++ Copyright (C) 2009 PERIER Romain <mrpouet@tuxfamily.org>
++
++ The Gnome Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Library General Public License as
++ published by the Free Software Foundation; either version 2 of the
++ License, or (at your option) any later version.
++
++ The Gnome Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Library General Public License for more details.
++
++ You should have received a copy of the GNU Library General Public
++ License along with the Gnome Library; see the file COPYING.LIB. If not,
++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
++ Boston, MA 02111-1307, USA.
++
++ Author: Bastien Nocera <hadess@hadess.net>
++ Jon Trowbridge <trow@ximian.com>
++ */
++
++#include <glib-object.h>
++
++#define ACME_TYPE_VOLUME (acme_volume_get_type ())
++#define ACME_VOLUME(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), ACME_TYPE_VOLUME, AcmeVolume))
++#define ACME_VOLUME_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), ACME_TYPE_VOLUME, AcmeVolumeClass))
++#define ACME_IS_VOLUME(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ACME_TYPE_VOLUME))
++#define ACME_VOLUME_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), ACME_TYPE_VOLUME, AcmeVolumeClass))
++
++typedef struct AcmeVolume AcmeVolume;
++typedef struct AcmeVolumeClass AcmeVolumeClass;
++typedef struct AcmeVolumePrivate AcmeVolumePrivate;
++
++struct AcmeVolume {
++ GObject parent;
++ AcmeVolumePrivate *_priv;
++};
++
++struct AcmeVolumeClass {
++ GObjectClass parent;
++};
++
++GType acme_volume_get_type (void);
++AcmeVolume *acme_volume_new (void);
++void acme_volume_set_mute (AcmeVolume *self, gboolean val);
++void acme_volume_mute_toggle (AcmeVolume *self);
++gboolean acme_volume_get_mute (AcmeVolume *self);
++void acme_volume_set_volume (AcmeVolume *self, gint val);
++gint acme_volume_get_volume (AcmeVolume *self);
++gint acme_volume_get_threshold (AcmeVolume *self);
++
++
+diff -ruN gnome-settings-daemon-2.27.91/plugins/media-keys/gsd-media-keys-manager.c gnome-settings-daemon-2.27.91.gst/plugins/media-keys/gsd-media-keys-manager.c
+--- gnome-settings-daemon-2.27.91/plugins/media-keys/gsd-media-keys-manager.c 2009-08-24 12:20:18.000000000 +0200
++++ gnome-settings-daemon-2.27.91.gst/plugins/media-keys/gsd-media-keys-manager.c 2009-08-24 16:38:50.000000000 +0200
+@@ -52,6 +52,8 @@
+
+ #ifdef HAVE_PULSE
+ #include "gvc-mixer-control.h"
++#elif defined(HAVE_GSTREAMER)
++#include "gvc-gstreamer-acme-vol.h"
+ #endif /* HAVE_PULSE */
+
+ #define GSD_DBUS_PATH "/org/gnome/SettingsDaemon"
+@@ -87,6 +89,8 @@
+ /* Volume bits */
+ GvcMixerControl *volume;
+ GvcMixerStream *stream;
++#elif defined(HAVE_GSTREAMER)
++ AcmeVolume *volume;
+ #endif /* HAVE_PULSE */
+ GtkWidget *dialog;
+ GConfClient *conf_client;
+@@ -626,7 +630,9 @@
+ GSD_MEDIA_KEYS_WINDOW_ACTION_VOLUME);
+ dialog_show (manager);
+ }
++#endif /* HAVE_PULSE */
+
++#if defined(HAVE_PULSE) || defined(HAVE_GSTREAMER)
+ static void
+ do_sound_action (GsdMediaKeysManager *manager,
+ int type)
+@@ -635,7 +641,11 @@
+ guint vol, norm_vol_step;
+ int vol_step;
+
++#ifdef HAVE_PULSE
+ if (manager->priv->stream == NULL)
++#else
++ if (manager->priv->volume == NULL)
++#endif
+ return;
+
+ vol_step = gconf_client_get_int (manager->priv->conf_client,
+@@ -645,18 +655,34 @@
+ if (vol_step <= 0 || vol_step > 100)
+ vol_step = VOLUME_STEP;
+
++#ifdef HAVE_PULSE
+ norm_vol_step = PA_VOLUME_NORM * vol_step / 100;
+
+ /* FIXME: this is racy */
+ vol = gvc_mixer_stream_get_volume (manager->priv->stream);
+ muted = gvc_mixer_stream_get_is_muted (manager->priv->stream);
+
++#else
++ if (vol_step > 0) {
++ gint threshold = acme_volume_get_threshold (manager->priv->volume);
++ if (vol_step < threshold)
++ vol_step = threshold;
++ g_debug ("Using volume step of %d", vol_step);
++ }
++ vol = acme_volume_get_volume (manager->priv->volume);
++ muted = acme_volume_get_mute (manager->priv->volume);
++#endif
+ switch (type) {
+ case MUTE_KEY:
++#ifdef HAVE_PULSE
+ muted = !muted;
+ gvc_mixer_stream_change_is_muted (manager->priv->stream, muted);
++#else
++ acme_volume_mute_toggle (manager->priv->volume);
++#endif
+ break;
+ case VOLUME_DOWN_KEY:
++#ifdef HAVE_PULSE
+ if (!muted && (vol <= norm_vol_step)) {
+ muted = !muted;
+ vol = 0;
+@@ -668,11 +694,17 @@
+ if (gvc_mixer_stream_set_volume (manager->priv->stream, vol) != FALSE)
+ gvc_mixer_stream_push_volume (manager->priv->stream);
+ }
++#else
++ if (!muted && (vol <= vol_step))
++ acme_volume_mute_toggle (manager->priv->volume);
++ acme_volume_set_volume (manager->priv->volume, vol - vol_step);
++#endif
+ break;
+ case VOLUME_UP_KEY:
+ if (muted) {
+ muted = !muted;
+ if (vol == 0) {
++#ifdef HAVE_PULSE
+ vol = vol + norm_vol_step;
+ gvc_mixer_stream_change_is_muted (manager->priv->stream, muted);
+ if (gvc_mixer_stream_set_volume (manager->priv->stream, vol) != FALSE)
+@@ -680,7 +712,15 @@
+ } else {
+ gvc_mixer_stream_change_is_muted (manager->priv->stream, muted);
+ }
++#else
++ /* We need to unmute otherwise vol is blocked (and muted) */
++ acme_volume_set_mute (manager->priv->volume, FALSE);
++ }
++ acme_volume_set_volume (manager->priv->volume, vol + vol_step);
++
++#endif
+ } else {
++#ifdef HAVE_PULSE
+ if (vol < MAX_VOLUME) {
+ gboolean set;
+ if (vol + norm_vol_step >= MAX_VOLUME) {
+@@ -691,13 +731,35 @@
+ if (gvc_mixer_stream_set_volume (manager->priv->stream, vol) != FALSE)
+ gvc_mixer_stream_push_volume (manager->priv->stream);
+ }
++#else
++ acme_volume_set_volume (manager->priv->volume, vol + vol_step);
++#endif
+ }
+ break;
+ }
+
++#ifdef HAVE_PULSE
+ update_dialog (manager, vol, muted);
++#else
++ muted = acme_volume_get_mute (manager->priv->volume);
++ vol = acme_volume_get_volume (manager->priv->volume);
++
++ /* FIXME: AcmeVolume should probably emit signals
++ instead of doing it like this */
++ dialog_init (manager);
++ gsd_media_keys_window_set_volume_muted (GSD_MEDIA_KEYS_WINDOW (manager->priv->dialog),
++ muted);
++ gsd_media_keys_window_set_volume_level (GSD_MEDIA_KEYS_WINDOW (manager->priv->dialog),
++ vol);
++ gsd_media_keys_window_set_action (GSD_MEDIA_KEYS_WINDOW (manager->priv->dialog),
++ GSD_MEDIA_KEYS_WINDOW_ACTION_VOLUME);
++ dialog_show (manager);
++#endif /* HAVE_PULSE */
+ }
+
++#endif /* defined(HAVE_PULSE) || defined(HAVE_GSTREAMER) */
++
++#ifdef HAVE_PULSE
+ static void
+ update_default_sink (GsdMediaKeysManager *manager)
+ {
+@@ -856,9 +918,9 @@
+ case MUTE_KEY:
+ case VOLUME_DOWN_KEY:
+ case VOLUME_UP_KEY:
+-#ifdef HAVE_PULSE
++#if defined(HAVE_PULSE) || defined(HAVE_GSTREAMER)
+ do_sound_action (manager, type);
+-#endif /* HAVE_PULSE */
++#endif /* HAVE_PULSE || HAVE_GSTREAMER */
+ break;
+ case POWER_KEY:
+ do_exit_action (manager);
+@@ -1061,6 +1123,10 @@
+ gvc_mixer_control_open (manager->priv->volume);
+
+ gnome_settings_profile_end ("gvc_mixer_control_new");
++#elif defined(HAVE_GSTREAMER)
++ gnome_settings_profile_start ("acme_volume_new");
++ manager->priv->volume = acme_volume_new ();
++ gnome_settings_profile_end ("acme_volume_new");
+ #endif /* HAVE_PULSE */
+ g_idle_add ((GSourceFunc) start_media_keys_idle_cb, manager);
+
+@@ -1133,6 +1199,7 @@
+ g_object_unref (priv->stream);
+ priv->stream = NULL;
+ }
++#elif defined(HAVE_GSTREAMER)
+
+ if (priv->volume) {
+ g_object_unref (priv->volume);
diff --git a/extra/gnome-sharp/PKGBUILD b/extra/gnome-sharp/PKGBUILD
new file mode 100644
index 000000000..edf33dc78
--- /dev/null
+++ b/extra/gnome-sharp/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 30955 2009-03-22 19:41:36Z jgc $
+# Maintainer: tobias <tobias@archlinux.org>
+
+pkgname=gnome-sharp
+pkgver=2.24.1
+pkgrel=1
+pkgdesc="GNOME bindings for C#"
+arch=(i686 x86_64)
+license=(LGPL)
+url="http://gtk-sharp.sourceforge.net"
+depends=('gtk-sharp-2>=2.12.8' 'libgnomeui>=2.24.1')
+makedepends=('pkgconfig' 'monodoc')
+options=('!libtool')
+source=(http://ftp.gnome.org/pub/gnome/sources/gnome-sharp/2.24/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('408f83f790a5189bcf76ea9299bc6410')
+
+build() {
+ # get rid of that .wapi errors; thanks to brice
+ export MONO_SHARED_DIR="${srcdir}/weird"
+ mkdir -p "${MONO_SHARED_DIR}"
+
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc || return 1
+ make || return 1
+ make GACUTIL="/usr/bin/gacutil /root ${pkgdir}/usr/lib" \
+ DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/gnome-speech/PKGBUILD b/extra/gnome-speech/PKGBUILD
new file mode 100644
index 000000000..81b95f890
--- /dev/null
+++ b/extra/gnome-speech/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 30819 2009-03-22 00:34:44Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=gnome-speech
+pkgver=0.4.25
+pkgrel=1
+pkgdesc="Gnome Text-to-Speech"
+arch=(i686 x86_64)
+license=('LGPL')
+url="http://www.gnome.org"
+depends=('libbonobo>=2.24.1')
+makedepends=('intltool' 'pkgconfig' 'espeak' 'java-access-bridge' 'openjdk6')
+optdepends=('espeak: Text to speech engine'
+ 'festival: Text to speech engine'
+ 'java-access-bridge: Speech support for java')
+options=('!libtool')
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/0.4/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('89cbc23fc131c33396c0346085759f63')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-static || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/gnome-spell/PKGBUILD b/extra/gnome-spell/PKGBUILD
new file mode 100644
index 000000000..020398658
--- /dev/null
+++ b/extra/gnome-spell/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 49931 2009-08-16 21:48:16Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=gnome-spell
+pkgver=1.0.8
+pkgrel=2
+pkgdesc="Spell Checking Support for Gnome"
+arch=(i686 x86_64)
+license=('GPL')
+depends=('libgnomeui>=2.24.1' 'enchant>=1.4.2')
+makedepends=('pkgconfig' 'intltool')
+options=('!libtool')
+url="http://www.gnome.org"
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/1.0/${pkgname}-${pkgver}.tar.bz2
+ gnome-spell-enchant.diff)
+md5sums=('6ccc46b4e3dc7cb1c6d413358e35d445' '12a357212809e0f0aba8c08d1372e60a')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np0 -i "${srcdir}/gnome-spell-enchant.diff" || return 1
+ libtoolize --force || return 1
+ aclocal || return 1
+ autoconf || return 1
+ automake || return 1
+
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-static || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/gnome-spell/gnome-spell-enchant.diff b/extra/gnome-spell/gnome-spell-enchant.diff
new file mode 100644
index 000000000..7c0493813
--- /dev/null
+++ b/extra/gnome-spell/gnome-spell-enchant.diff
@@ -0,0 +1,551 @@
+? INSTALL
+? autom4te.cache
+? depcomp
+? gnome-spell-enchant.diff
+? gnome-spell-zip
+? intltool-extract
+? intltool-extract.in
+? intltool-merge
+? intltool-merge.in
+? intltool-update
+? intltool-update.in
+? missing
+? mkinstalldirs
+? stamp-h1
+? gnome-spell/GNOME_Spell.server
+? gnome-spell/GNOME_Spell.server.in
+? gnome-spell/
+Index: configure.in
+===================================================================
+RCS file: /cvs/gnome/gnome-spell/configure.in,v
+retrieving revision 1.86
+diff -u -p -u -p -r1.86 configure.in
+--- configure.in 10 Feb 2006 12:08:11 -0000 1.86
++++ configure.in 2 Apr 2006 14:31:45 -0000
+@@ -68,34 +68,6 @@ AC_DEFINE_UNQUOTED(API_VERSION, "${API_V
+ AC_SUBST(API_VERSION)
+
+ dnl
+-dnl aspell
+-dnl
+-
+-AC_ARG_WITH(aspell-prefix, [ --with-aspell-prefix=DIR
+- specify under which prefix aspell is installed.], with_aspell_prefix="$withval", )
+-
+-if test "x$with_aspell_prefix" != "x"; then
+- saved_LDFLAGS=$LDFLAGS
+- LDFLAGS="-L$with_aspell_prefix/lib "$LDFLAGS
+- ASPELL_INC="-I$with_aspell_prefix/include"
+- ASPELL_LIBS="-L$with_aspell_prefix/lib -laspell"
+- ASPELL_DATA="$with_aspell_prefix/lib/aspell"
+-else
+- LDFLAGS="-L`aspell config prefix`/lib "$LDFLAGS
+- ASPELL_INC="-I`aspell config prefix`/include"
+- ASPELL_LIBS="-L`aspell config prefix`/lib -laspell"
+- ASPELL_DICT="`aspell config dict-dir`"
+-fi
+-AC_CHECK_LIB(aspell,new_aspell_config,,AC_MSG_ERROR([gnome-spell cannot be built without aspell library]),)
+-if test "x$with_aspell_prefix" != "x"; then
+- LDFLAGS=$saved_LDFLAGS
+-fi
+-
+-AC_SUBST(ASPELL_DICT)
+-AC_SUBST(ASPELL_INC)
+-AC_SUBST(ASPELL_LIBS)
+-
+-dnl
+ dnl flags
+ dnl
+
+@@ -104,7 +76,7 @@ AC_SUBST(CFLAGS)
+ AC_SUBST(CPPFLAGS)
+ AC_SUBST(LDFLAGS)
+
+-GNOME_SPELL_MODULES="libgnomeui-2.0 >= 1.112.1 libbonoboui-2.0 >= 1.112.1 libglade-2.0 >= 1.99.9"
++GNOME_SPELL_MODULES="libgnomeui-2.0 >= 1.112.1 libbonoboui-2.0 >= 1.112.1 libglade-2.0 >= 1.99.9 enchant >= 1.2.5"
+ PKG_CHECK_MODULES(GNOME_SPELL, $GNOME_SPELL_MODULES)
+ AC_SUBST(GNOME_SPELL_CFLAGS)
+ AC_SUBST(GNOME_SPELL_LIBS)
+Index: gnome-spell/Makefile.am
+===================================================================
+RCS file: /cvs/gnome/gnome-spell/gnome-spell/Makefile.am,v
+retrieving revision 1.34
+diff -u -p -u -p -r1.34 Makefile.am
+--- gnome-spell/Makefile.am 19 Jan 2006 23:37:50 -0000 1.34
++++ gnome-spell/Makefile.am 2 Apr 2006 14:31:46 -0000
+@@ -7,13 +7,11 @@ END =
+
+ INCLUDES = \
+ -I$(srcdir) \
+- $(ASPELL_INC) \
+ -DPREFIX=\""$(prefix)"\" \
+ -DGNOMEDATADIR=\""$(datadir)"\" \
+ -DGNOMELOCALEDIR=\""$(datadir)/locale"\" \
+ -DGLADE_DATADIR=\"$(gladedir)\" \
+ -DPLUGIN_DIR=\""$(PLUGIN_DIR)"\" \
+- -DASPELL_DICT=\""$(ASPELL_DICT)"\" \
+ $(GNOME_SPELL_CFLAGS) \
+ $(END)
+
+@@ -55,7 +53,6 @@ libgnome_spell_idl_la_SOURCES = \
+ libgnome_spell_component_la_LDFLAGS = -release $(API_VERSION) $(NO_UNDEFINED)
+ libgnome_spell_component_la_LIBADD = \
+ libgnome-spell-idl.la \
+- $(ASPELL_LIBS) \
+ $(GNOME_SPELL_LIBS) \
+ $(END)
+
+@@ -69,7 +66,6 @@ libgnome_spell_component_la_SOURCES = \
+
+ test_gnome_spell_component_LDADD = \
+ libgnome-spell-idl.la \
+- $(ASPELL_LIBS) \
+ $(GNOME_SPELL_LIBS) \
+ $(END)
+
+Index: gnome-spell/dictionary.c
+===================================================================
+RCS file: /cvs/gnome/gnome-spell/gnome-spell/dictionary.c,v
+retrieving revision 1.39
+diff -u -p -u -p -r1.39 dictionary.c
+--- gnome-spell/dictionary.c 5 Feb 2006 21:31:09 -0000 1.39
++++ gnome-spell/dictionary.c 2 Apr 2006 14:31:46 -0000
+@@ -30,16 +30,21 @@
+ #include <glib.h>
+ #include <libgnome/gnome-i18n.h>
+ #include <libgnome/gnome-config.h>
+-#include <gconf/gconf-client.h>
+ #include <bonobo.h>
+
+ #include "Spell.h"
+ #include "dictionary.h"
+
++#include <enchant.h>
++
++typedef struct {
++ EnchantBroker * config;
++ EnchantDict * speller;
++} SpellEngine;
++
+ static BonoboObjectClass *dictionary_parent_class;
+
+ #define DICT_DEBUG(x)
+-#define GNOME_SPELL_GCONF_DIR "/GNOME/Spell"
+
+ static void release_engines (GNOMESpellDictionary *dict);
+
+@@ -72,12 +77,24 @@ gnome_spell_dictionary_init (GObject *ob
+ {
+ GNOMESpellDictionary *dict = GNOME_SPELL_DICTIONARY (object);
+
+- dict->changed = TRUE;
+ dict->engines = NULL;
+ dict->languages = g_hash_table_new (g_str_hash, g_str_equal);
+ dict->engines_ht = g_hash_table_new (NULL, NULL);
+ }
+
++static char **
++dup_string_list (char ** str_list, size_t list_len)
++{
++ char ** new_str_list;
++ size_t i;
++
++ new_str_list = g_new0 (char *, list_len + 1);
++ for (i = 0; i < list_len; i++)
++ new_str_list [i] = g_strdup (str_list [i]);
++
++ return new_str_list;
++}
++
+ static void
+ dictionary_finalize (GObject *object)
+ {
+@@ -93,15 +110,16 @@ dictionary_finalize (GObject *object)
+ }
+
+ static SpellEngine *
+-new_engine (const gchar *language)
++new_engine (const gchar *language, CORBA_Environment *ev)
+ {
+ SpellEngine *se;
+
+ se = g_new0 (SpellEngine, 1);
+- se->config = new_aspell_config ();
+- aspell_config_replace (se->config, "language-tag", language);
+- aspell_config_replace (se->config, "encoding", "utf-8");
+- se->changed = TRUE;
++ se->config = enchant_broker_init ();
++ se->speller = enchant_broker_request_dict (se->config, language);
++
++ if(se->speller == NULL)
++ raise_error (ev, enchant_broker_get_error (se->config));
+
+ return se;
+ }
+@@ -129,9 +147,9 @@ release_engines (GNOMESpellDictionary *d
+ SpellEngine *se = dict->engines->data;
+
+ if (se->speller)
+- delete_aspell_speller (se->speller);
++ enchant_broker_free_dict (se->config, se->speller);
+ if (se->config)
+- delete_aspell_config (se->config);
++ enchant_broker_free (se->config);
+ g_free (se);
+ dict->engines = g_slist_remove (dict->engines, se);
+ }
+@@ -140,7 +158,6 @@ release_engines (GNOMESpellDictionary *d
+ g_hash_table_foreach_remove (dict->languages, remove_engine_ht, NULL);
+
+ dict->engines = NULL;
+- dict->changed = TRUE;
+ }
+
+ static LangInfo known_languages [] = {
+@@ -352,88 +369,31 @@ static LangInfo known_languages [] = {
+ };
+
+ static GSList *
+-get_languages_real (gint *ln)
++get_languages (gint *ln)
+ {
+ GSList *langs;
+- AspellCanHaveError *err;
+- AspellConfig *config;
+- AspellSpeller *speller;
+- gint i;
++ EnchantBroker *broker;
++ gint i, nb_langs;
+
+- DICT_DEBUG (printf ("get_languages_real\n"));
++ DICT_DEBUG (printf ("get_languages\n"));
+
++ /* todo: this could probably be better done by enchant_broker_list_dicts(), but let's keep
++ the initial code change to a minimum */
++
++ broker = enchant_broker_init ();
+ langs = NULL;
+- *ln = 0;
++ nb_langs = 0;
+ for (i=0; i < G_N_ELEMENTS (known_languages); i++) {
+- config = new_aspell_config ();
+- aspell_config_replace (config, "language-tag", known_languages [i].abbreviation);
+- err = new_aspell_speller (config);
+- if (aspell_error_number (err) == 0) {
+- speller = to_aspell_speller (err);
++ if (enchant_broker_dict_exists (broker, known_languages [i].abbreviation)) {
+ DICT_DEBUG (printf ("Language: %s\n", known_languages [i].name));
+- delete_aspell_speller (speller);
+ langs = g_slist_prepend (langs, GINT_TO_POINTER (i));
+- (*ln) ++;
++ nb_langs++;
+ }
+ }
+
+- return langs;
+-}
+-
+-static GSList *
+-get_languages_load (GConfClient *gc, gint *ln)
+-{
+- GString *str;
+- GSList *langs = NULL;
+- gint i, lang_num;
+-
+- /* printf ("get_languages_load\n"); */
+-
+- str = g_string_new (NULL);
+- *ln = gconf_client_get_int (gc, GNOME_SPELL_GCONF_DIR "/languages", NULL);
+- for (i = 0; i < *ln; i++) {
+- g_string_sprintf (str, GNOME_SPELL_GCONF_DIR "/language%d", i);
+- lang_num = gconf_client_get_int (gc, str->str, NULL);
+- langs = g_slist_prepend (langs, GINT_TO_POINTER (lang_num));
+- }
+-
+- return langs;
+-}
+-
+-static GSList *
+-get_languages (gint *ln)
+-{
+- GSList *langs, *l;
+- GConfClient *gc;
+- time_t mtime;
+- struct stat buf;
+- gint i, kl;
+-
+- gc = gconf_client_get_default ();
+-
+- mtime = gconf_client_get_int (gc, GNOME_SPELL_GCONF_DIR "/mtime", NULL);
+- kl = gconf_client_get_int (gc, GNOME_SPELL_GCONF_DIR "/known_languages", NULL);
+-
+- if (stat (ASPELL_DICT, &buf) || buf.st_mtime != mtime || kl != G_N_ELEMENTS(known_languages)) {
+- GString *str;
+- langs = get_languages_real (ln);
+-
+- str = g_string_new (NULL);
+- gconf_client_set_int (gc, GNOME_SPELL_GCONF_DIR "/languages", *ln, NULL);
+- for (l = langs, i = 0; i < *ln; i ++) {
+- g_string_sprintf (str, GNOME_SPELL_GCONF_DIR "/language%d", *ln - i - 1);
+- gconf_client_set_int (gc, str->str, GPOINTER_TO_INT (l->data), NULL);
+- l = l->next;
+- }
+- gconf_client_set_int (gc, GNOME_SPELL_GCONF_DIR "/mtime", buf.st_mtime, NULL);
+- gconf_client_set_int (gc, GNOME_SPELL_GCONF_DIR "/known_languages", G_N_ELEMENTS(known_languages), NULL);
+- g_string_free (str, TRUE);
+- gnome_config_sync ();
+- } else
+- langs = get_languages_load (gc, ln);
++ *ln = nb_langs;
+
+- gconf_client_suggest_sync (gc, NULL);
+- g_object_unref (gc);
++ enchant_broker_free (broker);
+
+ return langs;
+ }
+@@ -504,59 +464,19 @@ impl_gnome_spell_dictionary_set_language
+ SpellEngine *se;
+
+ one_language = g_strndup (begin, len);
+- se = new_engine (one_language);
++ se = new_engine (one_language, ev);
+ dict->engines = g_slist_prepend (dict->engines, se);
+ g_hash_table_insert (dict->languages, one_language, se);
+ g_hash_table_insert (dict->engines_ht, se, g_strdup (one_language));
+-
+- dict->changed = TRUE;
+- }
+- }
+-}
+-
+-static void
+-update_engine (SpellEngine *se, CORBA_Environment * ev)
+-{
+- AspellCanHaveError *err;
+-
+- DICT_DEBUG (printf ("Dictionary: creating new aspell speller\n"));
+-
+- if (se->changed) {
+- if (se->speller)
+- delete_aspell_speller (se->speller);
+- err = new_aspell_speller (se->config);
+- if (aspell_error_number (err) != 0) {
+- g_warning ("aspell error: %s\n", aspell_error_message (err));
+- se->speller = NULL;
+- raise_error (ev, aspell_error_message (err));
+- } else {
+- se->speller = to_aspell_speller (err);
+- se->changed = FALSE;
+ }
+ }
+ }
+
+-static void
+-update_engines (GNOMESpellDictionary *dict, CORBA_Environment * ev)
+-{
+- g_return_if_fail (IS_GNOME_SPELL_DICTIONARY (dict));
+-
+- if (dict->changed) {
+- GSList *l;
+-
+- for (l = dict->engines; l; l = l->next) {
+- update_engine ((SpellEngine *) l->data, ev);
+- }
+-
+- dict->changed = FALSE;
+- }
+-}
+-
+ static CORBA_boolean
+ engine_check_word (SpellEngine *se, const gchar *word, CORBA_Environment *ev)
+ {
+- CORBA_boolean result = CORBA_TRUE;
+- gint aspell_result;
++ CORBA_boolean result = CORBA_FALSE;
++ gint enchant_result;
+
+ #ifndef G_DISABLE_CHECKS
+ g_return_val_if_fail (se->speller, CORBA_TRUE);
+@@ -564,12 +484,12 @@ engine_check_word (SpellEngine *se, cons
+ if (!se->speller)
+ return CORBA_TRUE;
+ #endif
+- aspell_result = aspell_speller_check (se->speller, word, strlen (word));
+- if (aspell_result == 0)
+- result = CORBA_FALSE;
+- if (aspell_result == -1) {
+- g_warning ("aspell error: %s\n", aspell_speller_error_message (se->speller));
+- raise_error (ev, aspell_speller_error_message (se->speller));
++ enchant_result = enchant_dict_check (se->speller, word, strlen (word));
++ if (enchant_result == 0)
++ result = CORBA_TRUE;
++ if (enchant_result == -1) {
++ g_warning ("enchant error: %s\n", enchant_dict_get_error (se->speller));
++ raise_error (ev, enchant_dict_get_error (se->speller));
+ }
+
+ return result;
+@@ -592,7 +512,6 @@ impl_gnome_spell_dictionary_check_word (
+ if (!strcmp (word, "Ximian"))
+ return CORBA_TRUE;
+
+- update_engines (dict, ev);
+ for (l = dict->engines; l; l = l->next) {
+ if (((SpellEngine *) l->data)->speller) {
+ valid_speller = TRUE;
+@@ -621,11 +540,10 @@ impl_gnome_spell_dictionary_add_word_to_
+ if (!word)
+ return;
+ #endif
+- update_engines (dict, ev);
+ DICT_DEBUG (printf ("Dictionary add_word_to_session: %s\n", word));
+ for (l = dict->engines; l; l = l->next) {
+ if (((SpellEngine *) l->data)->speller)
+- aspell_speller_add_to_session (((SpellEngine *) l->data)->speller, word, strlen (word));
++ enchant_dict_add_to_session (((SpellEngine *) l->data)->speller, word, strlen (word));
+ }
+ }
+
+@@ -642,13 +560,11 @@ impl_gnome_spell_dictionary_add_word_to_
+ if (!word || !language)
+ return;
+ #endif
+- update_engines (dict, ev);
+ DICT_DEBUG (printf ("Dictionary add_word_to_personal: %s (%s)\n", word, language));
+ se = (SpellEngine *) g_hash_table_lookup (dict->languages, language);
+
+ if (se && se->speller) {
+- aspell_speller_add_to_personal (se->speller, word, strlen (word));
+- aspell_speller_save_all_word_lists (se->speller);
++ enchant_dict_add_to_pwl (se->speller, word, strlen (word));
+ DICT_DEBUG (printf ("Added and saved.\n"));
+ }
+ }
+@@ -666,14 +582,12 @@ impl_gnome_spell_dictionary_set_correcti
+ if (!word || !replacement)
+ return;
+ #endif
+- update_engines (dict, ev);
+ DICT_DEBUG (printf ("Dictionary correction: %s <-- %s\n", word, replacement));
+ se = (SpellEngine *) g_hash_table_lookup (dict->languages, language);
+
+ if (se && se->speller) {
+- aspell_speller_store_replacement (se->speller, word, strlen (word),
+- replacement, strlen (replacement));
+- aspell_speller_save_all_word_lists (se->speller);
++ enchant_dict_store_replacement (se->speller, word, strlen (word),
++ replacement, strlen (replacement));
+ DICT_DEBUG (printf ("Set and saved.\n"));
+ }
+ }
+@@ -683,8 +597,8 @@ impl_gnome_spell_dictionary_get_suggesti
+ const CORBA_char *word, CORBA_Environment *ev)
+ {
+ GNOMESpellDictionary *dict = GNOME_SPELL_DICTIONARY (bonobo_object_from_servant (servant));
+- const AspellWordList *suggestions;
+- AspellStringEnumeration *elements;
++ char **suggestions;
++ size_t number_of_suggestions;
+ GNOME_Spell_StringSeq *seq = NULL;
+ GSList *l, *suggestion_list = NULL;
+ gint i, len, pos;
+@@ -696,17 +610,19 @@ impl_gnome_spell_dictionary_get_suggesti
+ return NULL;
+ #endif
+ DICT_DEBUG (printf ("Dictionary correction: %s\n", word));
+- update_engines (dict, ev);
+
+ len = 0;
+ for (l = dict->engines; l; l = l->next) {
+ SpellEngine *se = (SpellEngine *) l->data;
+
+ if (se->speller) {
+- suggestions = aspell_speller_suggest (se->speller, word, strlen (word));
+- suggestion_list = g_slist_prepend (suggestion_list, (gpointer) suggestions);
+- len += 2*aspell_word_list_size (suggestions);
++ suggestions = enchant_dict_suggest (se->speller, word, strlen (word), &number_of_suggestions);
++ suggestion_list = g_slist_prepend (suggestion_list,
++ (gpointer) dup_string_list (suggestions, number_of_suggestions));
++ len += 2*number_of_suggestions;
+ suggestion_list = g_slist_prepend (suggestion_list, engine_to_language (dict, se));
++ suggestion_list = g_slist_prepend (suggestion_list, GINT_TO_POINTER (number_of_suggestions));
++ enchant_dict_free_string_list (se->speller, suggestions);
+ }
+ }
+
+@@ -723,17 +639,18 @@ impl_gnome_spell_dictionary_get_suggesti
+ gint list_len;
+ gchar *language;
+
++ list_len = GPOINTER_TO_INT (l->data);
++ l = l->next;
+ language = (gchar *) l->data;
+ l = l->next;
+- suggestions = (const AspellWordList *) l->data;
+- elements = aspell_word_list_elements (suggestions);
+- list_len = aspell_word_list_size (suggestions);
++ suggestions = (char **) l->data;
+ for (i = 0; i < list_len; i ++, pos ++) {
+- seq->_buffer [pos] = CORBA_string_dup (aspell_string_enumeration_next (elements));
++ seq->_buffer [pos] = CORBA_string_dup (suggestions [i]);
+ pos ++;
+ seq->_buffer [pos] = CORBA_string_dup (language);
+ }
+- delete_aspell_string_enumeration (elements);
++
++ g_strfreev (suggestions);
+ }
+ CORBA_sequence_set_release (seq, CORBA_TRUE);
+ g_slist_free (suggestion_list);
+Index: gnome-spell/dictionary.h
+===================================================================
+RCS file: /cvs/gnome/gnome-spell/gnome-spell/dictionary.h,v
+retrieving revision 1.8
+diff -u -p -u -p -r1.8 dictionary.h
+--- gnome-spell/dictionary.h 5 Feb 2006 21:31:09 -0000 1.8
++++ gnome-spell/dictionary.h 2 Apr 2006 14:31:46 -0000
+@@ -26,7 +26,6 @@
+ G_BEGIN_DECLS
+
+ #include <bonobo/bonobo-object.h>
+-#include <aspell.h>
+
+ #define GNOME_SPELL_DICTIONARY_TYPE (gnome_spell_dictionary_get_type ())
+ #define GNOME_SPELL_DICTIONARY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), \
+@@ -37,12 +36,6 @@ G_BEGIN_DECLS
+ #define IS_GNOME_SPELL_DICTIONARY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GNOME_SPELL_DICTIONARY_TYPE))
+
+ typedef struct {
+- AspellConfig *config;
+- AspellSpeller *speller;
+- gboolean changed;
+-} SpellEngine;
+-
+-typedef struct {
+ gchar *abbreviation;
+ gchar *name;
+ } LangInfo;
+@@ -50,7 +43,6 @@ typedef struct {
+ typedef struct {
+ BonoboObject parent;
+
+- gboolean changed;
+ GSList *engines;
+ GHashTable *languages;
+ GHashTable *engines_ht;
+Index: gnome-spell/test-spell.c
+===================================================================
+RCS file: /cvs/gnome/gnome-spell/gnome-spell/test-spell.c,v
+retrieving revision 1.12
+diff -u -p -u -p -r1.12 test-spell.c
+--- gnome-spell/test-spell.c 6 Mar 2003 16:37:36 -0000 1.12
++++ gnome-spell/test-spell.c 2 Apr 2006 14:31:46 -0000
+@@ -52,7 +52,6 @@ main (int argc, char *argv [])
+ * test dictionary
+ */
+
+- GNOME_Spell_Dictionary_getLanguages (en, &ev);
+ GNOME_Spell_Dictionary_setLanguage (en, "en", &ev);
+
+ printf ("check: %s --> %d\n",
diff --git a/extra/gnome-system-monitor/PKGBUILD b/extra/gnome-system-monitor/PKGBUILD
new file mode 100644
index 000000000..994524036
--- /dev/null
+++ b/extra/gnome-system-monitor/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 92037 2010-09-28 17:18:42Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=gnome-system-monitor
+pkgver=2.28.2
+pkgrel=1
+pkgdesc="A system monitor for GNOME"
+arch=(i686 x86_64)
+license=('GPL')
+depends=('libgksu>=2.0.5' 'libwnck>=2.30.5' 'gconf>=2.32.0' 'libgtop>=2.28.2' 'gtkmm>=2.20.' 'librsvg>=2.32.0' 'gnome-icon-theme>=2.31.0')
+makedepends=('pkgconfig' 'gnome-doc-utils>=0.20.0' 'intltool')
+options=(!emptydirs)
+url="http://www.gnome.org"
+groups=('gnome-extra')
+install=gnome-system-monitor.install
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.28/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('b628edfd39e3a6b374ce133f367d3568475eb4e981a367f4f9d62a9784e5ae59')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-scrollkeeper
+ make
+ 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" ${pkgdir}/etc/gconf/schemas/*.schemas || return 1
+ rm -f ${pkgdir}/etc/gconf/schemas/*.schemas
+}
diff --git a/extra/gnome-system-monitor/gnome-system-monitor.install b/extra/gnome-system-monitor/gnome-system-monitor.install
new file mode 100644
index 000000000..b20f5f3b9
--- /dev/null
+++ b/extra/gnome-system-monitor/gnome-system-monitor.install
@@ -0,0 +1,17 @@
+pkgname=gnome-system-monitor
+
+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/extra/gnome-terminal/PKGBUILD b/extra/gnome-terminal/PKGBUILD
new file mode 100644
index 000000000..5a4700efd
--- /dev/null
+++ b/extra/gnome-terminal/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 99463 2010-11-14 19:45:28Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=gnome-terminal
+pkgver=2.32.1
+pkgrel=1
+pkgdesc="The GNOME Terminal Emulator"
+arch=('i686' 'x86_64')
+license=('GPL')
+depends=('gconf>=2.32.0' 'vte>=0.26.2' 'libgnome-data' 'libsm')
+makedepends=('gnome-doc-utils>=0.20.1' 'intltool')
+options=('!emptydirs')
+url="http://www.gnome.org"
+groups=('gnome')
+install=gnome-terminal.install
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.32/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('7f41e4b185a2cf65ff417b89e429fc3b625c5e3f042ee1763bda6490fa4676fb')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-scrollkeeper
+ make
+ 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-terminal ${pkgdir}/etc/gconf/schemas/*.schemas
+ rm -f ${pkgdir}/etc/gconf/schemas/*.schemas
+}
diff --git a/extra/gnome-terminal/gnome-terminal.install b/extra/gnome-terminal/gnome-terminal.install
new file mode 100644
index 000000000..04c2b3c2c
--- /dev/null
+++ b/extra/gnome-terminal/gnome-terminal.install
@@ -0,0 +1,17 @@
+pkgname=gnome-terminal
+
+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/extra/gnome-user-share/PKGBUILD b/extra/gnome-user-share/PKGBUILD
new file mode 100644
index 000000000..75b1ad846
--- /dev/null
+++ b/extra/gnome-user-share/PKGBUILD
@@ -0,0 +1,32 @@
+# $Id: PKGBUILD 112854 2011-03-07 09:18:18Z ibiru $
+# Maintainer: Roman Kyrylych <roman@archlinux.org>
+
+pkgname=gnome-user-share
+pkgver=2.30.1
+pkgrel=2
+pkgdesc="Easy to use user-level file sharing for GNOME."
+arch=('i686' 'x86_64')
+url="http://ftp.gnome.org/pub/GNOME/sources/gnome-user-share/"
+license=('GPL')
+depends=('mod_dnssd>=0.6-3' 'gconf>=2.32.0' 'hicolor-icon-theme' 'libnotify>=0.7.1' 'gnome-bluetooth>=2.31.90' 'libcanberra>=0.25')
+makedepends=('intltool' 'gnome-doc-utils>=0.20.1' 'nautilus')
+options=('!emptydirs' '!libtool')
+install=gnome-user-share.install
+source=(http://ftp.gnome.org/pub/GNOME/sources/${pkgname}/2.30/${pkgname}-${pkgver}.tar.bz2
+ gnome-user-share-2.30.1-libnotify-0.7.patch)
+sha256sums=('30ba07420a495450f80b4be001601150453ddc3504ff23c486fd1541ff5a1bfe'
+ '60fcfe4a7120b7a917e2aec227f3a40fe4993bc9c80f2722f856fbe4e6e4994e')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np0 -i "${srcdir}/gnome-user-share-2.30.1-libnotify-0.7.patch"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --libexecdir=/usr/lib/gnome-user-share \
+ --localstatedir=/var
+ make
+ 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-user-share ${pkgdir}/etc/gconf/schemas/*.schemas
+ rm -f ${pkgdir}/etc/gconf/schemas/*.schemas
+}
diff --git a/extra/gnome-user-share/gnome-user-share-2.30.1-libnotify-0.7.patch b/extra/gnome-user-share/gnome-user-share-2.30.1-libnotify-0.7.patch
new file mode 100644
index 000000000..73c5a9ab8
--- /dev/null
+++ b/extra/gnome-user-share/gnome-user-share-2.30.1-libnotify-0.7.patch
@@ -0,0 +1,31 @@
+http://pkgs.fedoraproject.org/gitweb/?p=gnome-user-share.git;a=blob;f=notify.patch;hb=HEAD
+
+--- src/obexpush.c
++++ src/obexpush.c
+@@ -139,10 +139,9 @@ show_notification (const char *filename)
+ /* Translators: %s is the name of the filename received */
+ notification_text = g_strdup_printf(_("You received \"%s\" via Bluetooth"), display);
+ g_free (display);
+- notification = notify_notification_new_with_status_icon (_("You received a file"),
+- notification_text,
+- "dialog-information",
+- GTK_STATUS_ICON (statusicon));
++ notification = notify_notification_new (_("You received a file"),
++ notification_text,
++ "dialog-information");
+
+ notify_notification_set_timeout (notification, NOTIFY_EXPIRES_DEFAULT);
+
+@@ -218,10 +217,10 @@ device_is_authorised (const char *bdaddr
+ char *device_path;
+ GHashTable *props;
+
+- g_message ("checking adapter %s", g_ptr_array_index (adapters, i));
++ g_message ("checking adapter %s", (char *)g_ptr_array_index (adapters, i));
+
+ adapter = dbus_g_proxy_new_for_name (connection, "org.bluez",
+- g_ptr_array_index (adapters, i), "org.bluez.Adapter");
++ (char *)g_ptr_array_index (adapters, i), "org.bluez.Adapter");
+
+ if (dbus_g_proxy_call (adapter, "FindDevice", NULL,
+ G_TYPE_STRING, bdaddr, G_TYPE_INVALID,
diff --git a/extra/gnome-user-share/gnome-user-share.install b/extra/gnome-user-share/gnome-user-share.install
new file mode 100644
index 000000000..3cc1b5286
--- /dev/null
+++ b/extra/gnome-user-share/gnome-user-share.install
@@ -0,0 +1,22 @@
+pkgname=gnome-user-share
+
+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/extra/gnome-utils/PKGBUILD b/extra/gnome-utils/PKGBUILD
new file mode 100644
index 000000000..a2040b23d
--- /dev/null
+++ b/extra/gnome-utils/PKGBUILD
@@ -0,0 +1,35 @@
+# $Id: PKGBUILD 91827 2010-09-28 07:52:07Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=gnome-utils
+pkgver=2.32.0
+pkgrel=1
+pkgdesc="Common utilities for GNOME"
+arch=(i686 x86_64)
+license=('GPL')
+depends=('libgtop>=2.28.1' 'libcanberra>=0.25' 'libsm' 'gconf>=2.32.0')
+makedepends=('gnome-doc-utils>=0.20.1' 'pkgconfig' 'intltool' 'gnome-panel-bonobo>=2.32.0.2')
+optdepends=('gnome-panel-bonobo: GDict panel applet')
+options=('!libtool' '!emptydirs')
+url="http://www.gnome.org"
+groups=('gnome-extra')
+install=gnome-utils.install
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.32/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('033a55cf442096b28ea6292043354feafe000d1e5f4ebb962a9b6d72eb9a93fa')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --libexecdir=/usr/lib/gnome-utils \
+ --localstatedir=/var --disable-static \
+ --disable-scrollkeeper
+ make
+ 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-utils-2.0 ${pkgdir}/etc/gconf/schemas/*.schemas
+ rm -f ${pkgdir}/etc/gconf/schemas/*.schemas
+
+ # remove it also from Xfce menu that ships its own thingy
+ sed -i -e "s/NotShowIn\=KDE\;/NotShowIn\=KDE\;XFCE\;/" ${pkgdir}/usr/share/applications/gnome-dictionary.desktop
+}
diff --git a/extra/gnome-utils/gnome-utils.install b/extra/gnome-utils/gnome-utils.install
new file mode 100644
index 000000000..20d53f2b5
--- /dev/null
+++ b/extra/gnome-utils/gnome-utils.install
@@ -0,0 +1,22 @@
+pkgname=gnome-utils
+
+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/extra/gnome-vfs-perl/PKGBUILD b/extra/gnome-vfs-perl/PKGBUILD
new file mode 100644
index 000000000..5f8707948
--- /dev/null
+++ b/extra/gnome-vfs-perl/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: PKGBUILD 104927 2011-01-05 15:25:06Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=gnome-vfs-perl
+_realname=Gnome2-VFS
+pkgver=1.081
+pkgrel=3
+pkgdesc="Gnome2-VFS perl bindings for gnome-vfs"
+arch=(i686 x86_64)
+license=('LGPL')
+url="http://gtk2-perl.sourceforge.net/"
+makedepends=('perl-extutils-pkgconfig' 'perl-extutils-depends')
+depends=('gtk2-perl' 'gnome-vfs' 'perl')
+options=('!emptydirs')
+source=(http://downloads.sourceforge.net/sourceforge/gtk2-perl/${_realname}-${pkgver}.tar.gz)
+md5sums=('3d220cbbe9f1ebc78d7047593f9cd633')
+
+build() {
+ cd "${srcdir}/${_realname}-${pkgver}"
+ perl Makefile.PL INSTALLDIRS=vendor
+ make
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/gnome-vfs/PKGBUILD b/extra/gnome-vfs/PKGBUILD
new file mode 100644
index 000000000..61fbe0212
--- /dev/null
+++ b/extra/gnome-vfs/PKGBUILD
@@ -0,0 +1,49 @@
+# $Id: PKGBUILD 92007 2010-09-28 16:42:58Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=gnome-vfs
+pkgver=2.24.4
+pkgrel=1
+pkgdesc="The GNOME Virtual File System"
+arch=(i686 x86_64)
+license=('LGPL')
+depends=('fam' 'gconf>=2.32.0' 'hal>=0.5.13' 'bzip2' 'avahi>=0.6.27' 'smbclient>=3.5.5' 'gnome-mime-data>=2.18.0-2' 'heimdal>=1.3.3' 'gnutls>=2.8.6')
+makedepends=('pkgconfig' 'intltool' 'gtk-doc' 'gnome-common')
+options=('!libtool' '!emptydirs' '!makeflags')
+conflicts=(gnome-vfs-samba)
+provides=(gnome-vfs-samba)
+replaces=(gnome-vfs-samba gnome-vfs-extras)
+url="http://www.gnome.org"
+install=gnome-vfs.install
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.24/gnome-vfs-${pkgver}.tar.bz2
+ hal-show-volume-names.patch
+ gnutls-config.patch)
+sha256sums=('62de64b5b804eb04104ff98fcd6a8b7276d510a49fbd9c0feb568f8996444faa'
+ 'b38b86d6c966dcf64f9140d800aebe8a14845bb8ce7c045f52d4df483cacd23b'
+ '66c7cfb12995c0dd94a2caea95c7e3c55981993f05a79c585d60915ff131955d')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ #Archlinux patch (b.g.o #321498)
+ patch -Np1 -i "${srcdir}/hal-show-volume-names.patch"
+
+ #Fix build with new gnutls
+ patch -Np1 -i "${srcdir}/gnutls-config.patch"
+ libtoolize --force
+ gtkdocize
+ aclocal
+ autoconf
+ automake
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-static \
+ --libexecdir=/usr/lib/gnome-vfs-2.0 \
+ --enable-samba --enable-hal \
+ --enable-avahi --disable-howl \
+ --disable-openssl --enable-gnutls
+ make
+ make GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 DESTDIR="${pkgdir}" install
+
+ install -d -m755 "${pkgdir}/usr/share/gconf/schemas"
+ gconf-merge-schema "${pkgdir}/usr/share/gconf/schemas/${pkgname}.schemas" --domain gnome-vfs-2.0 ${startdir}/pkg/etc/gconf/schemas/*.schemas
+ rm -f ${pkgdir}/etc/gconf/schemas/*.schemas
+}
diff --git a/extra/gnome-vfs/gnome-vfs.install b/extra/gnome-vfs/gnome-vfs.install
new file mode 100644
index 000000000..793a3e7ab
--- /dev/null
+++ b/extra/gnome-vfs/gnome-vfs.install
@@ -0,0 +1,17 @@
+pkgname=gnome-vfs
+
+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/extra/gnome-vfs/gnutls-config.patch b/extra/gnome-vfs/gnutls-config.patch
new file mode 100644
index 000000000..f6fa18b17
--- /dev/null
+++ b/extra/gnome-vfs/gnutls-config.patch
@@ -0,0 +1,25 @@
+# Allow gnome-vfs-2.24 to build with gnutls >= 2.7.0
+# Use pkg-config in place of gnutls own macro since it's not present anymore.
+--- a/configure.in 2009-03-07 19:59:53.805507753 +0100
++++ b/configure.in 2009-03-07 18:34:36.928169018 +0100
+@@ -686,14 +686,14 @@
+ AC_MSG_ERROR([*** Can't use both openssl and gnutls at the same time. Please pick one only. ***])
+ else
+ AC_CHECK_HEADER(gcrypt.h,, AC_MSG_ERROR([*** Need gcrypt.h to compile with GnuTLS support ***]))
+- AM_PATH_LIBGNUTLS(1.0.0, [AC_DEFINE(HAVE_GNUTLS, 1, [Define to 1 if GnuTLS is available])
+- have_ssl=true])
++ PKG_CHECK_MODULES(LIBGNUTLS, gnutls >= 1.0.0, [AC_DEFINE(HAVE_GNUTLS, 1, [Define to 1 if GnuTLS is available])
++ have_ssl=true])
+
+ if test "x${LIBGNUTLS_LIBS}" = "x"; then
+- AM_PATH_LIBGNUTLS(0.5.1, [AC_DEFINE(HAVE_GNUTLS, 1, [Define to 1 if GnuTLS is available])
+- AC_DEFINE(GNUTLS_COMPAT, 1, [FIXME])
+- have_ssl=true],
+- AC_MSG_ERROR([Unable to find GNUTLS]))
++ PKG_CHECK_MODULES(LIBGNUTLS, gnutls >= 0.5.1, [AC_DEFINE(HAVE_GNUTLS, 1, [Define to 1 if GnuTLS is available])
++ AC_DEFINE(GNUTLS_COMPAT, 1, [FIXME])
++ have_ssl=true],
++ AC_MSG_ERROR([Unable to find GNUTLS]))
+ fi
+ fi
+ fi
diff --git a/extra/gnome-vfs/hal-show-volume-names.patch b/extra/gnome-vfs/hal-show-volume-names.patch
new file mode 100644
index 000000000..5b8420c2b
--- /dev/null
+++ b/extra/gnome-vfs/hal-show-volume-names.patch
@@ -0,0 +1,46 @@
+Index: gnome-vfs-hal-mounts.c
+===================================================================
+RCS file: /cvs/gnome/gnome-vfs/libgnomevfs/gnome-vfs-hal-mounts.c,v
+retrieving revision 1.33
+diff -u -p -r1.33 gnome-vfs-hal-mounts.c
+--- gnome-vfs/libgnomevfs/gnome-vfs-hal-mounts.c 7 Jul 2006 15:56:57 -0000 1.33
++++ gnome-vfs/libgnomevfs/gnome-vfs-hal-mounts.c 14 Jul 2006 18:48:51 -0000
+@@ -877,6 +877,7 @@ _hal_add_volume (GnomeVFSVolumeMonitorDa
+ GnomeVFSDrive *drive;
+ GnomeVFSVolumeMonitor *volume_monitor;
+ char *name;
++ char *icon;
+ gboolean allowed_by_policy;
+ const char *backing_udi;
+
+@@ -975,6 +976,8 @@ _hal_add_volume (GnomeVFSVolumeMonitorDa
+ */
+ drive = _gnome_vfs_volume_monitor_find_drive_by_hal_udi (volume_monitor, libhal_volume_get_udi (hal_volume));
+ if (drive == NULL && allowed_by_policy) {
++ name = _hal_drive_policy_get_display_name (volume_monitor_daemon, hal_drive, hal_volume);
++ icon = _hal_drive_policy_get_icon (volume_monitor_daemon, hal_drive, hal_volume);
+ drive = g_object_new (GNOME_VFS_TYPE_DRIVE, NULL);
+ if (libhal_volume_disc_has_audio (hal_volume)) {
+ drive->priv->activation_uri = g_strdup_printf ("cdda://%s",
+@@ -989,16 +992,16 @@ _hal_add_volume (GnomeVFSVolumeMonitorDa
+ * So just set it to the empty string
+ */
+ drive->priv->activation_uri = g_strdup ("");
++ g_free (name);
++ name = _hal_volume_policy_get_display_name (volume_monitor_daemon, hal_drive, hal_volume);
++ g_free (icon);
++ icon = _hal_volume_policy_get_icon (volume_monitor_daemon, hal_drive, hal_volume);
+ }
+ drive->priv->is_connected = TRUE;
+ drive->priv->device_path = g_strdup (libhal_volume_get_device_file (hal_volume));
+ drive->priv->device_type = _hal_get_gnome_vfs_device_type (hal_drive);
+
+- /* TODO: could add an icon of a drive with media in it since this codepath only
+- * handles drives with media in them
+- */
+- drive->priv->icon = _hal_drive_policy_get_icon (volume_monitor_daemon, hal_drive, NULL);
+- name = _hal_drive_policy_get_display_name (volume_monitor_daemon, hal_drive, hal_volume);
++ drive->priv->icon = icon;
+ drive->priv->display_name = _gnome_vfs_volume_monitor_uniquify_drive_name (volume_monitor, name);
+ g_free (name);
+ name = g_utf8_casefold (drive->priv->display_name, -1);
diff --git a/extra/gnome-vfsmm/PKGBUILD b/extra/gnome-vfsmm/PKGBUILD
new file mode 100644
index 000000000..cb81726bd
--- /dev/null
+++ b/extra/gnome-vfsmm/PKGBUILD
@@ -0,0 +1,24 @@
+#$Id: PKGBUILD 33797 2009-04-04 20:05:13Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Kritoke <typeolinux@yahoo.com>
+
+pkgname=gnome-vfsmm
+pkgver=2.26.0
+pkgrel=1
+pkgdesc="A C++ wrapper for gnome-vfs."
+arch=(i686 x86_64)
+license=('LGPL')
+depends=('gnome-vfs>=2.24.1' 'glibmm>=2.20.0')
+makedepends=('pkgconfig' 'doxygen')
+options=('!libtool')
+url="http://gtkmm.sourceforge.net/"
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.26/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('d27d34b6a8722c557366729071c1baab')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/gnomecanvas-perl/PKGBUILD b/extra/gnomecanvas-perl/PKGBUILD
new file mode 100644
index 000000000..da6af9368
--- /dev/null
+++ b/extra/gnomecanvas-perl/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: PKGBUILD 104924 2011-01-05 15:20:58Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=gnomecanvas-perl
+_realname=Gnome2-Canvas
+pkgver=1.002
+pkgrel=7
+pkgdesc="Gnome2-Canvas perl bindings for libgnomecanvas"
+arch=('i686' 'x86_64')
+license=('LGPL')
+url="http://gtk2-perl.sourceforge.net/"
+makedepends=('perl-extutils-pkgconfig' 'perl-extutils-depends')
+depends=('gtk2-perl' 'libgnomecanvas' 'perl')
+options=(!emptydirs)
+source=(http://downloads.sourceforge.net/sourceforge/gtk2-perl/${_realname}-${pkgver}.tar.gz)
+md5sums=('93405a987ba4bbd03c2f91592b88f5cb')
+
+build() {
+ cd "${srcdir}/${_realname}-${pkgver}"
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+ make install DESTDIR="${pkgdir}"
+}
diff --git a/extra/gnu-netcat/PKGBUILD b/extra/gnu-netcat/PKGBUILD
new file mode 100644
index 000000000..7a1868d37
--- /dev/null
+++ b/extra/gnu-netcat/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: PKGBUILD 54891 2009-10-11 20:04:37Z giovanni $
+# Maintainer: Tom K <tomk@runbox.com>
+
+pkgname=gnu-netcat
+pkgver=0.7.1
+pkgrel=3
+pkgdesc="GNU rewrite of netcat, the network piping application"
+depends=('glibc' 'texinfo')
+arch=('i686' 'x86_64')
+url="http://netcat.sourceforge.net/"
+license=('GPL')
+replaces=('netcat')
+provides=('netcat')
+install=gnu-netcat.install
+source=(http://downloads.sourceforge.net/sourceforge/netcat/netcat-$pkgver.tar.bz2)
+md5sums=('0a29eff1736ddb5effd0b1ec1f6fe0ef')
+
+build() {
+ cd "${srcdir}/netcat-${pkgver}"
+ ./configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/gnu-netcat/gnu-netcat.install b/extra/gnu-netcat/gnu-netcat.install
new file mode 100644
index 000000000..a946aa2ee
--- /dev/null
+++ b/extra/gnu-netcat/gnu-netcat.install
@@ -0,0 +1,13 @@
+infodir=/usr/share/info
+
+post_install() {
+ install-info $infodir/netcat.info.gz $infodir/dir 2> /dev/null
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ install-info --delete $infodir/netcat.info.gz $infodir/dir 2> /dev/null
+}
diff --git a/extra/gnucash/PKGBUILD b/extra/gnucash/PKGBUILD
new file mode 100644
index 000000000..21700489e
--- /dev/null
+++ b/extra/gnucash/PKGBUILD
@@ -0,0 +1,40 @@
+# $Id: PKGBUILD 114787 2011-03-16 02:24:49Z eric $
+# Maintainer: Aaron Griffin <aaron@archlinux.org>
+# Contributor: Mark Schneider <queueRAM@gmail.com>
+
+pkgname=gnucash
+pkgver=2.4.4
+pkgrel=1
+pkgdesc="A personal and small-business financial-accounting application"
+arch=('i686' 'x86_64')
+url="http://www.gnucash.org"
+license=("GPL")
+depends=('gtkhtml' 'slib' 'goffice' 'guile' 'libofx'
+ 'libgnomeui' 'hicolor-icon-theme' 'libdbi' 'aqbanking'
+ 'desktop-file-utils')
+makedepends=('intltool')
+optdepends=('evince: for print preview'
+ 'gnucash-docs: (AUR) for user documentation'
+ 'perl-finance-quote: for stock information lookups'
+ 'perl-date-manip: for stock information lookups')
+options=('!libtool' '!makeflags')
+install=gnucash.install
+source=(http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('6ae973bf925cde0721c7c465536bc096')
+sha1sums=('016fccdfe5134783c95dcd5add5190270ade59f2')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --mandir=/usr/share/man \
+ --sysconfdir=/etc --libexecdir=/usr/lib --enable-ofx --enable-aqbanking
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 DESTDIR="${pkgdir}" install
+
+ install -dm755 "${pkgdir}/usr/share/gconf/schemas"
+ gconf-merge-schema "${pkgdir}/usr/share/gconf/schemas/${pkgname}.schemas" --domain gnucash "${pkgdir}"/etc/gconf/schemas/*.schemas
+ rm -f "${pkgdir}"/etc/gconf/schemas/*.schemas
+}
diff --git a/extra/gnucash/gnucash.install b/extra/gnucash/gnucash.install
new file mode 100644
index 000000000..d6a48c31b
--- /dev/null
+++ b/extra/gnucash/gnucash.install
@@ -0,0 +1,34 @@
+pkgname=gnucash
+info_dir=usr/share/info
+info_files=(gnucash-design.info)
+
+post_install() {
+ usr/sbin/gconfpkg --install ${pkgname}
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+ update-desktop-database -q
+ [ -x usr/bin/install-info ] || return 0
+ for f in ${info_files[@]}; do
+ usr/bin/install-info ${info_dir}/$f.gz ${info_dir}/dir 2> /dev/null
+ done
+}
+
+pre_upgrade() {
+ pre_remove $1
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ usr/sbin/gconfpkg --uninstall ${pkgname}
+ [ -x usr/bin/install-info ] || return 0
+ for f in ${info_files[@]}; do
+ usr/bin/install-info --delete ${info_dir}/$f.gz ${info_dir}/dir 2> /dev/null
+ done
+}
+
+post_remove() {
+ update-desktop-database -q
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
diff --git a/extra/gnuchess/PKGBUILD b/extra/gnuchess/PKGBUILD
new file mode 100644
index 000000000..d24bc17cf
--- /dev/null
+++ b/extra/gnuchess/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 108753 2011-02-02 19:55:44Z jgc $
+# Maintainer: Allan McRae <allan@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=gnuchess
+pkgver=5.08
+pkgrel=1
+pkgdesc="Lets most modern computers play a full game of chess"
+url="http://www.gnu.org/software/chess/chess.html"
+arch=('i686' 'x86_64')
+license=('GPL')
+depends=('glibc' 'ncurses' 'readline')
+source=(ftp://ftp.gnu.org/pub/gnu/chess/$pkgname-$pkgver.tar.gz)
+md5sums=('9db91dbac6b5b86de0c57a420a9fea57')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd $srcdir/$pkgname-$pkgver
+ make prefix=$pkgdir/usr install
+}
diff --git a/extra/gnugo/LICENSE b/extra/gnugo/LICENSE
new file mode 100644
index 000000000..3d6f6878b
--- /dev/null
+++ b/extra/gnugo/LICENSE
@@ -0,0 +1,70 @@
+ Copyrights and License
+
+All files Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+2007, 2008 and 2009 by the Free Software Foundation except as noted below.
+
+All files are under the GNU General Public License, which may be
+found in the file COPYING, with the following exceptions.
+
+* The files interface/gtp.c and gtp.h are copyright 2001 by
+ the Free Software Foundation. In the interests of promoting
+ the Go Text Protocol these two files are licensed under a less
+ restrictive license than the GPL and are free for unrestricted use.
+ The GTP license appears in each file.
+
+* The files gmp.c and gmp.h are copyright Bill Shubert. These
+ are free for unrestricted use.
+
+* The files regression/golois/* and the tests vie.tst, connect.tst,
+ capture.tst and global.tst are copyright Tristan Cazenave and are
+ used with his permission
+
+* The SGF files in regression/games/handtalk are copyright Jessie Annala
+ and are used with permission.
+
+* The SGF files in regression/games/mertin13x13 are copyright Stefan
+ Mertin and are used with permission.
+
+* The remaining SGF files are either copyright by the FSF or are in
+ the public domain.
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\
+ * This is GNU Go, a Go program. Contact gnugo@gnu.org, or see *
+ * http://www.gnu.org/software/gnugo/ for more information. *
+ * *
+ * To facilitate development of the Go Text Protocol, the two *
+ * files gtp.c and gtp.h are licensed under less restrictive *
+ * terms than the rest of GNU Go. *
+ * *
+ * Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 and *
+ * 2009 by the Free Software Foundation. *
+ * *
+ * Permission is hereby granted, free of charge, to any person *
+ * obtaining a copy of this file gtp.c, to deal in the Software *
+ * without restriction, including without limitation the rights *
+ * to use, copy, modify, merge, publish, distribute, and/or *
+ * sell copies of the Software, and to permit persons to whom *
+ * the Software is furnished to do so, provided that the above *
+ * copyright notice(s) and this permission notice appear in all *
+ * copies of the Software and that both the above copyright *
+ * notice(s) and this permission notice appear in supporting *
+ * documentation. *
+ * *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY *
+ * KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE *
+ * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR *
+ * PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO *
+ * EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS *
+ * NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR *
+ * CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING *
+ * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF *
+ * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT *
+ * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS *
+ * SOFTWARE. *
+ * *
+ * Except as contained in this notice, the name of a copyright *
+ * holder shall not be used in advertising or otherwise to *
+ * promote the sale, use or other dealings in this Software *
+ * without prior written authorization of the copyright holder. *
+\* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
diff --git a/extra/gnugo/PKGBUILD b/extra/gnugo/PKGBUILD
new file mode 100644
index 000000000..e959d7bf8
--- /dev/null
+++ b/extra/gnugo/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 27575 2009-02-23 03:41:08Z eric $
+# Maintainer: Jason Chu <jason@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+# Commiter: damir <damir@archlinux.org>
+
+pkgname=gnugo
+pkgver=3.8
+pkgrel=1
+pkgdesc="This sofware is a program that plays the game of Go"
+arch=('i686' 'x86_64')
+url="http://www.gnu.org/software/gnugo/"
+license=('GPL3' 'custom')
+depends=('ncurses' 'glibc' 'texinfo')
+install=gnugo.install
+source=(http://ftp.gnu.org/gnu/gnugo/$pkgname-$pkgver.tar.gz LICENSE)
+md5sums=('6db0a528df58876d2b0ef1659c374a9a' '4df5819356804397c553c95ea8164f11')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ ./configure --prefix=/usr || return 1
+ make || return 1
+ make DESTDIR=$pkgdir install || return 1
+ rm -r ${pkgdir}/usr/share/info/dir
+ gzip ${pkgdir}/usr/share/info/*
+ install -Dm644 $srcdir/LICENSE $pkgdir/usr/share/licenses/$pkgname/LICENSE
+}
diff --git a/extra/gnugo/gnugo.install b/extra/gnugo/gnugo.install
new file mode 100644
index 000000000..b0271070c
--- /dev/null
+++ b/extra/gnugo/gnugo.install
@@ -0,0 +1,18 @@
+infodir=/usr/share/info
+filelist=(gnugo.info.gz gnugo.info-1.gz gnugo.info-2.gz gnugo.info-3.gz)
+
+post_install() {
+ for file in ${filelist[@]}; do
+ install-info $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ for file in ${filelist[@]}; do
+ install-info --delete $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
diff --git a/extra/gnumeric/PKGBUILD b/extra/gnumeric/PKGBUILD
new file mode 100644
index 000000000..53d5e3c82
--- /dev/null
+++ b/extra/gnumeric/PKGBUILD
@@ -0,0 +1,36 @@
+# $Id: PKGBUILD 116890 2011-03-26 01:00:08Z heftig $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+# Contributor: Kritoke <typeolinux@yahoo.com>
+
+pkgname=gnumeric
+pkgver=1.10.14
+pkgrel=1
+pkgdesc="A GNOME Spreadsheet Program"
+arch=('i686' 'x86_64')
+url="http://www.gnome.org/projects/gnumeric/"
+license=('GPL')
+depends=('goffice' 'gconf' 'desktop-file-utils')
+makedepends=('intltool' 'python2' 'gnome-doc-utils' 'pygobject' 'psiconv')
+optdepends=('pygobject: for python plugin support'
+ 'psiconv: for Psion 5 file support'
+ 'yelp: for viewing the help manual')
+install=gnumeric.install
+options=('libtool')
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/${pkgver%.*}/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('b655fa76dd2e6654b8543fbcd92982e9fdcb4c0ae113aa577ce114109deb1587')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \
+ --disable-schemas-install --enable-ssindex
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+
+ install -d "${pkgdir}/usr/share/gconf/schemas"
+ gconf-merge-schema "${pkgdir}/usr/share/gconf/schemas/${pkgname}.schemas" --domain gnumeric "${pkgdir}"/etc/gconf/schemas/*.schemas
+ rm -rf "${pkgdir}/etc/gconf"
+}
diff --git a/extra/gnumeric/gnumeric.install b/extra/gnumeric/gnumeric.install
new file mode 100644
index 000000000..50ee0a7e2
--- /dev/null
+++ b/extra/gnumeric/gnumeric.install
@@ -0,0 +1,26 @@
+pkgname=gnumeric
+
+post_install() {
+ usr/bin/glib-compile-schemas usr/share/glib-2.0/schemas
+ usr/sbin/gconfpkg --install ${pkgname}
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+ update-desktop-database -q
+}
+
+pre_upgrade() {
+ pre_remove $1
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+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
+ update-desktop-database -q
+}
diff --git a/extra/gnupg/PKGBUILD b/extra/gnupg/PKGBUILD
new file mode 100644
index 000000000..56b0c2274
--- /dev/null
+++ b/extra/gnupg/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 101334 2010-11-28 23:08:17Z tpowa $
+# Maintainer: Andreas Radke <andyrtr at archlinux.org>
+# Committer: Judd Vinet <jvinet@zeroflux.org>
+pkgname=gnupg
+pkgver=1.4.11
+pkgrel=2
+pkgdesc="GNU Privacy Guard - a PGP replacement tool"
+arch=('i686' 'x86_64')
+license=('GPL3')
+depends=('zlib' 'bzip2' 'libldap>=2.4.18' 'libusb-compat' 'curl>=7.16.2' 'readline>=6.0.00')
+source=(ftp://ftp.franken.de/pub/crypt/mirror/ftp.gnupg.org/gcrypt/gnupg/$pkgname-$pkgver.tar.bz2)
+install=gnupg.install
+url="http://www.gnupg.org/"
+md5sums=('411744e1ef8ce90b87938c4203f001f1')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr --libexecdir=/usr/lib # docdir can't be set properly
+ make || return 1
+ ln -s ${pkgname}-${pkgver}/scripts ..
+}
+
+package () {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install || return 1
+
+ # fix fileconflict with gnupg2 pkg
+ rm ${pkgdir}/usr/share/man/man1/gpg-zip.1
+}
diff --git a/extra/gnupg/gnupg.install b/extra/gnupg/gnupg.install
new file mode 100644
index 000000000..5a6704716
--- /dev/null
+++ b/extra/gnupg/gnupg.install
@@ -0,0 +1,21 @@
+info_dir=/usr/share/info
+info_files=(gnupg1.info)
+
+post_install() {
+ [ -x usr/bin/install-info ] || return 0
+ for f in ${info_files[@]}; do
+ usr/bin/install-info ${info_dir}/$f.gz ${info_dir}/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ [ -x usr/bin/install-info ] || return 0
+ for f in ${info_files[@]}; do
+ usr/bin/install-info --delete ${info_dir}/$f.gz ${info_dir}/dir 2> /dev/null
+ done
+}
+# vim:set ts=2 sw=2 et:
diff --git a/extra/gnupg2/PKGBUILD b/extra/gnupg2/PKGBUILD
new file mode 100644
index 000000000..e2711da0d
--- /dev/null
+++ b/extra/gnupg2/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 106675 2011-01-17 20:37:07Z tpowa $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+# Contributor: Andreas Radke <andyrtr@archlinux.org>
+
+pkgname=gnupg2
+pkgver=2.0.17
+pkgrel=1
+pkgdesc="GNU Privacy Guard 2 - a PGP replacement tool"
+arch=('i686' 'x86_64')
+depends=('libldap' 'curl' 'bzip2' 'zlib' 'libksba' 'libgcrypt'
+ 'pth' 'libusb-compat' 'libassuan' 'texinfo' 'readline' 'pinentry' 'dirmngr')
+license=('GPL')
+url="http://www.gnupg.org/"
+install=${pkgname}.install
+source=(ftp://ftp.gnupg.org/gcrypt/gnupg/gnupg-$pkgver.tar.bz2)
+
+build() {
+ cd ${srcdir}/gnupg-$pkgver
+ ./configure --prefix=/usr --libexecdir=/usr/lib/gnupg2 #$EXTRAOPTS
+ make
+}
+
+package() {
+ cd ${srcdir}/gnupg-$pkgver
+ make DESTDIR=${pkgdir} install
+ # move conflicting files
+ mv ${pkgdir}/usr/share/gnupg{,2}
+ rm -f ${pkgdir}/usr/share/info/dir
+}
+md5sums=('123af099740fd159c73a0352a274ec81')
diff --git a/extra/gnupg2/gnupg2-2.0.16-security.patch b/extra/gnupg2/gnupg2-2.0.16-security.patch
new file mode 100644
index 000000000..b265c1532
--- /dev/null
+++ b/extra/gnupg2/gnupg2-2.0.16-security.patch
@@ -0,0 +1,11 @@
+--- kbx/keybox-blob.c (revision 5367)
++++ kbx/keybox-blob.c (working copy)
+@@ -898,6 +898,7 @@
+ rc = gpg_error_from_syserror ();
+ goto leave;
+ }
++ names = tmp;
+ }
+ names[blob->nuids++] = p;
+ if (!i && (p=x509_email_kludge (p)))
+
diff --git a/extra/gnupg2/gnupg2.install b/extra/gnupg2/gnupg2.install
new file mode 100644
index 000000000..27c121ffd
--- /dev/null
+++ b/extra/gnupg2/gnupg2.install
@@ -0,0 +1,20 @@
+infodir=/usr/share/info
+filelist=(gnupg.info gnupg.info-1 gnupg.info-2)
+
+post_install() {
+ for file in ${filelist[@]}; do
+ install-info $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ for file in ${filelist[@]}; do
+ install-info --delete $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/extra/gnuplot/PKGBUILD b/extra/gnuplot/PKGBUILD
new file mode 100644
index 000000000..3c7388288
--- /dev/null
+++ b/extra/gnuplot/PKGBUILD
@@ -0,0 +1,50 @@
+# $Id: PKGBUILD 94793 2010-10-11 09:23:28Z ronald $
+# Maintainer: Ronald van Haren <ronald.archlinux.org>
+# Contributor: damir <damir@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=gnuplot
+pkgver=4.4.2
+pkgrel=2
+pkgdesc="Plotting package which outputs to X11, PostScript, PNG, GIF, and others"
+arch=('i686' 'x86_64')
+url="http://www.gnuplot.info"
+license=('custom')
+depends=('readline' 'gd' 'wxgtk' 'cairo' 'libjpeg')
+makedepends=('texinfo' 'emacs' 'texlive-core')
+install=gnuplot.install
+source=("http://downloads.sourceforge.net/sourceforge/$pkgname/$pkgname-$pkgver.tar.gz")
+md5sums=('a4f0dd89f9b9334890464f687ddd9f50')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+
+ # fix default source location; use the GDFONTPATH variable to modify at runtime
+ sed -i 's|/usr/X11R6/lib/X11/fonts/truetype|/usr/share/fonts/TTF|' src/variable.c
+ sed -i 's|/X11R6/lib/X11/fonts/Type1|/usr/share/fonts/Type1|' src/variable.c
+
+ ./configure --prefix=/usr --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --libexecdir=/usr/bin \
+ --with-gihdir=/usr/share/gnuplot \
+ --datadir=/usr/share \
+ --with-readline=gnu \
+ --with-texdir=$pkgdir/usr/share/texmf/tex/latex/gnuplot
+ make pkglibexecdir=/usr/bin
+}
+
+
+package() {
+ cd $srcdir/$pkgname-$pkgver
+ make prefix=$pkgdir/usr libexecdir=$pkgdir/usr/bin \
+ mandir=$pkgdir/usr/share/man \
+ infodir=$pkgdir/usr/share/info \
+ pkglibexecdir=$pkgdir/usr/bin \
+ GIHDIR=$pkgdir/usr/share/gnuplot \
+ datadir=$pkgdir/usr/share install
+
+ install -Dm644 lisp/dotemacs $pkgdir/usr/share/emacs/site-lisp/dotemacs
+ install -Dm644 Copyright $pkgdir/usr/share/licenses/$pkgname/Copyright
+
+ rm -f $pkgdir/usr/share/texmf-dist/ls-R
+}
diff --git a/extra/gnuplot/gnuplot.install b/extra/gnuplot/gnuplot.install
new file mode 100644
index 000000000..b7a5746ad
--- /dev/null
+++ b/extra/gnuplot/gnuplot.install
@@ -0,0 +1,35 @@
+info_dir=/usr/share/info
+info_files=(gnuplot.info)
+
+post_install() {
+cat << EOF
+==> To add the gnuplot mode in Emacs, add the content of /usr/share/emacs/site-lisp/dotemacs to your ~/.emacs file.
+EOF
+
+ if [ -f /usr/bin/mktexlsr ]; then
+ echo "Updating TeX tree..."
+ mktexlsr
+ fi
+
+for f in ${info_files[@]}; do
+ install-info ${info_dir}/$f.gz ${info_dir}/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ for f in ${info_files[@]}; do
+ install-info --delete ${info_dir}/$f.gz ${info_dir}/dir 2> /dev/null
+ done
+}
+
+post_remove() {
+ if [ -f /usr/bin/mktexlsr ]; then
+ echo "Updating TeX tree..."
+ mktexlsr
+ fi
+}
+
diff --git a/extra/gnutls/PKGBUILD b/extra/gnutls/PKGBUILD
new file mode 100644
index 000000000..5eaa97b02
--- /dev/null
+++ b/extra/gnutls/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 114396 2011-03-13 09:54:42Z andyrtr $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=gnutls
+pkgver=2.10.5
+pkgrel=1
+pkgdesc="A library which provides a secure layer over a reliable transport layer"
+arch=('i686' 'x86_64')
+license=('GPL3' 'LGPL')
+url="http://www.gnu.org/software/gnutls/"
+install=gnutls.install
+options=('!libtool')
+depends=('gcc-libs>=4.4.3' 'libtasn1>=2.5' 'readline>=6.0' 'zlib' 'libgcrypt>=1.4.5')
+source=(ftp://ftp.gnu.org/gnu/gnutls/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('1b032e07ccd22f71a5df78aa73bd91f2')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr \
+ --with-zlib \
+ --disable-static \
+ --disable-guile
+ make
+ make check # passes all || /bin/true
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/gnutls/gnutls.install b/extra/gnutls/gnutls.install
new file mode 100644
index 000000000..9ce7c6edc
--- /dev/null
+++ b/extra/gnutls/gnutls.install
@@ -0,0 +1,20 @@
+infodir=usr/share/info
+filelist=(gnutls.info-1.gz gnutls.info-2.gz gnutls.info-3.gz gnutls.info.gz)
+
+post_install() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info --delete $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
diff --git a/extra/gob2/PKGBUILD b/extra/gob2/PKGBUILD
new file mode 100644
index 000000000..72f0a35df
--- /dev/null
+++ b/extra/gob2/PKGBUILD
@@ -0,0 +1,21 @@
+# $Id: PKGBUILD 79820 2010-05-08 10:48:54Z jgc $
+# Contributor: Sarah Hay <sarahhay@mb.sympatico.ca>
+# Maintainer: Kevin Piche <kevin@archlinux.org>
+
+pkgname=gob2
+pkgver=2.0.17
+pkgrel=1
+pkgdesc="GTK Object Builder (GOB) is a simple preprocessor for easily creating GTK objects"
+arch=(i686 x86_64)
+license=('GPL')
+depends=('glib2')
+url="http://www.5z.com/jirka/gob.html"
+source=(http://ftp.gnome.org/pub/GNOME/sources/${pkgname}/2.0/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('e9f52fff7ada88a36da1d412f8b2b57b44cc0527e545cf2f5d873c002c0da7f4')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/gobject-introspection/PKGBUILD b/extra/gobject-introspection/PKGBUILD
new file mode 100644
index 000000000..c536fc824
--- /dev/null
+++ b/extra/gobject-introspection/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 104477 2011-01-03 16:00:03Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+pkgname=gobject-introspection
+pkgver=0.9.12
+pkgrel=1
+pkgdesc="Introspection system for GObject-based libraries"
+url="http://live.gnome.org/GObjectInstrospection"
+arch=('x86_64' 'i686')
+license=('LGPL' 'GPL')
+depends=('libffi>=3.0.9' 'glib2>=2.26.0' 'python2')
+makedepends=('cairo')
+conflicts=('gir-repository')
+replaces=('gir-repository')
+options=('!libtool')
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/0.9/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('9c0060d66d14a060057a1fc005be73675a1b8a00d4968ce8e78ff2d6b9f84e81')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ PYTHON=/usr/bin/python2 ./configure --prefix=/usr --disable-static
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+
+ sed -i "s|#!/usr/bin/env python|#!/usr/bin/env python2|" \
+ "${pkgdir}"/usr/lib/gobject-introspection/giscanner/*.py
+}
diff --git a/extra/goffice/PKGBUILD b/extra/goffice/PKGBUILD
new file mode 100644
index 000000000..72e67dcec
--- /dev/null
+++ b/extra/goffice/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 116834 2011-03-25 22:19:46Z heftig $
+# Maintainer: Aaron Griffin <aaron@archlinux.org>
+
+pkgname=goffice
+pkgver=0.8.14
+pkgrel=1
+pkgdesc="A library of document-centric objects and utilities built on top of GLib and Gtk+"
+arch=('i686' 'x86_64')
+url="http://www.gnome.org"
+license=('GPL')
+options=('!libtool')
+depends=('gconf' 'libgsf')
+makedepends=('pkgconfig' 'intltool')
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/${pkgver%.*}/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('6f86a5361ef49c60a4a87c0d5913b001f67782c2cc3eaa13c6557087bee976de')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-static
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/gok/PKGBUILD b/extra/gok/PKGBUILD
new file mode 100644
index 000000000..062ce91b4
--- /dev/null
+++ b/extra/gok/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 92436 2010-09-29 22:05:23Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=gok
+pkgver=2.30.1
+pkgrel=1
+pkgdesc="Gnome Onscreen Keyboard"
+arch=(i686 x86_64)
+license=('GPL')
+url="http://www.gnome.org"
+depends=('gnome-speech>=0.4.25' 'at-spi>=1.32' 'libwnck>=2.30.5' 'hicolor-icon-theme' 'libcanberra>=0.25' 'gconf>=2.32.0')
+makedepends=('intltool' 'pkgconfig' 'gnome-doc-utils>=0.20.0')
+options=('!emptydirs')
+groups=('gnome-extra')
+install=gok.install
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.30/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('6422dedb80c2cb3d5ee47238227960dc0e6dde0d0d1351cc7d11de06089c36c0')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var
+ make
+ 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 gok ${pkgdir}/etc/gconf/schemas/*.schemas
+ rm -f ${pkgdir}/etc/gconf/schemas/*.schemas
+}
diff --git a/extra/gok/gok.install b/extra/gok/gok.install
new file mode 100644
index 000000000..d3d5a9bae
--- /dev/null
+++ b/extra/gok/gok.install
@@ -0,0 +1,22 @@
+pkgname=gok
+
+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/extra/gok/lm.patch b/extra/gok/lm.patch
new file mode 100644
index 000000000..b74ce19b7
--- /dev/null
+++ b/extra/gok/lm.patch
@@ -0,0 +1,12 @@
+diff -up gok-2.27.2/gok/Makefile.in.lm gok-2.27.2/gok/Makefile.in
+--- gok-2.27.2/gok/Makefile.in.lm 2009-06-13 00:59:29.162580117 -0400
++++ gok-2.27.2/gok/Makefile.in 2009-06-13 00:59:11.583583888 -0400
+@@ -374,7 +374,7 @@ INCLUDES = -DGOK_LOCALEDIR=\""$(datadir)
+ -DDATADIR=\""$(datadir)"\" -DLIBDIR=\""$(libdir)"\" \
+ -I$(top_srcdir) -I$(top_builddir) $(GOK_CFLAGS) \
+ $(am__append_1)
+-LDADD = $(GOK_LIBS) $(X_LIBS) @LT_VERSION_INFO@ $(am__append_2)
++LDADD = $(GOK_LIBS) $(X_LIBS) -lm @LT_VERSION_INFO@ $(am__append_2)
+ gok_LDFLAGS = -export-dynamic
+ gok_SOURCES = callbacks.c callbacks.h gok-branchback-stack.c \
+ gok-branchback-stack.h gok-button.c gok-button.h gok-chunker.c \
diff --git a/extra/gpart/PKGBUILD b/extra/gpart/PKGBUILD
new file mode 100644
index 000000000..8798449cd
--- /dev/null
+++ b/extra/gpart/PKGBUILD
@@ -0,0 +1,43 @@
+# $Id: PKGBUILD 112735 2011-03-06 12:44:20Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: dale <dale@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=gpart
+pkgver=0.1h
+pkgrel=4
+pkgdesc="A program for recovering corrupt partition tables"
+arch=('i686' 'x86_64')
+url="http://www.stud.uni-hannover.de/user/76201/gpart/"
+license=('GPL')
+depends=('glibc')
+source=(http://www.sfr-fresh.com/linux/misc/${pkgname}-${pkgver}.tar.gz
+ gpart-0.1h-errno.patch
+ gpart-0.1h-vfat.patch
+ gpart-0.1h-ntfs.patch
+ gpart-0.1h-PIC.patch
+ gpart-0.1h-no-_syscall.patch)
+md5sums=('ee3a2d2dde70bcf404eb354b3d1ee6d4'
+ '81eee5d9985df9bf9c23624e46cf945f'
+ 'ae6d86b0268618d34e618824dcd82754'
+ '8161c02116ee4575906587eb09e35bde'
+ 'd3f5b05d12816375f5dcd9a251f72f61'
+ 'f811c6e132b2c0cd2d9cb0fd4933063a')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ patch -Np1 -i ${srcdir}/gpart-0.1h-errno.patch
+ patch -Np1 -i ${srcdir}/gpart-0.1h-vfat.patch
+ patch -Np1 -i ${srcdir}/gpart-0.1h-ntfs.patch
+ patch -Np1 -i ${srcdir}/gpart-0.1h-PIC.patch
+ patch -Np0 -i ${srcdir}/gpart-0.1h-no-_syscall.patch
+
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ make prefix=${pkgdir}/usr mandir=${pkgdir}/usr/share/man install
+}
diff --git a/extra/gpart/gpart-0.1h-PIC.patch b/extra/gpart/gpart-0.1h-PIC.patch
new file mode 100644
index 000000000..e810bd999
--- /dev/null
+++ b/extra/gpart/gpart-0.1h-PIC.patch
@@ -0,0 +1,20 @@
+--- gpart-0.1h/src/l64seek.c
++++ gpart-0.1h/src/l64seek.c
+@@ -26,7 +26,7 @@
+ } ostck[OSTACKLEN];
+ static int osptr = -1;
+
+-#if defined(__linux__) && defined(__i386__)
++#if defined(__linux__) && defined(__i386__) && ! defined(__PIC__)
+ _syscall5(int,_llseek,uint,fd,ulong,hi,ulong,lo,loff_t *,res,uint,wh)
+ #endif
+
+@@ -36,7 +36,7 @@
+ {
+ off64_t ret = (off64_t)-1;
+
+-#if defined(__linux__) && defined(__i386__)
++#if defined(__linux__) && defined(__i386__) && ! defined(__PIC__)
+ int iret;
+ unsigned long ohi, olo;
+
diff --git a/extra/gpart/gpart-0.1h-errno.patch b/extra/gpart/gpart-0.1h-errno.patch
new file mode 100644
index 000000000..13041c202
--- /dev/null
+++ b/extra/gpart/gpart-0.1h-errno.patch
@@ -0,0 +1,20 @@
+--- gpart-0.1h/src/l64seek.c
++++ gpart-0.1h-working/src/l64seek.c
+@@ -16,6 +16,7 @@
+
+ #include "l64seek.h"
+
++#include <errno.h>
+
+ #define OSTACKLEN 16
+ static struct
+--- gpart-0.1h/src/disku.c
++++ gpart-0.1h-working/src/disku.c
+@@ -20,6 +20,7 @@
+ #include <string.h>
+ #include <sys/ioctl.h>
+ #include "gpart.h"
++#include <errno.h>
+
+ #if defined(__linux__)
+ #include <sys/mount.h>
diff --git a/extra/gpart/gpart-0.1h-no-_syscall.patch b/extra/gpart/gpart-0.1h-no-_syscall.patch
new file mode 100644
index 000000000..fe68d08b6
--- /dev/null
+++ b/extra/gpart/gpart-0.1h-no-_syscall.patch
@@ -0,0 +1,15 @@
+use syscall() rather than _syscall#()
+
+http://bugs.gentoo.org/163800
+
+--- src/l64seek.c
++++ src/l64seek.c
+@@ -27,7 +27,7 @@
+ static int osptr = -1;
+
+ #if defined(__linux__) && defined(__i386__) && ! defined(__PIC__)
+-_syscall5(int,_llseek,uint,fd,ulong,hi,ulong,lo,loff_t *,res,uint,wh)
++#define _llseek(fd,hi,lo,res,wh) syscall(__NR__llseek,fd,hi,lo,res,wh)
+ #endif
+
+
diff --git a/extra/gpart/gpart-0.1h-ntfs.patch b/extra/gpart/gpart-0.1h-ntfs.patch
new file mode 100644
index 000000000..1f887ac47
--- /dev/null
+++ b/extra/gpart/gpart-0.1h-ntfs.patch
@@ -0,0 +1,75 @@
+Ripped out of debian
+
+--- gpart-0.1h.orig/src/gm_ntfs.h
++++ gpart-0.1h/src/gm_ntfs.h
+@@ -14,6 +14,9 @@
+ *
+ */
+
++#include <stdint.h>
++#include <asm/byteorder.h>
++
+ #ifndef _GM_NTFS_H
+ #define _GM_NTFS_H
+
+@@ -29,32 +32,38 @@
+ /* 'NTFS' in little endian */
+ #define NTFS_SUPER_MAGIC 0x5346544E
+
+-#if defined(i386) || defined(__i386__) || defined(__alpha__)
+-
+ /* unsigned integral types */
+ #ifndef NTFS_INTEGRAL_TYPES
+ #define NTFS_INTEGRAL_TYPES
+-typedef unsigned char ntfs_u8;
+-typedef unsigned short ntfs_u16;
+-typedef unsigned int ntfs_u32;
+-typedef s64_t ntfs_u64;
++typedef uint8_t ntfs_u8;
++typedef uint16_t ntfs_u16;
++typedef uint32_t ntfs_u32;
++typedef uint64_t ntfs_u64;
++typedef int8_t ntfs_s8;
++typedef int16_t ntfs_s16;
+ #endif /* NTFS_INTEGRAL_TYPES */
+-#endif /* defined(i386) || defined(__i386__) || defined(__alpha__) */
+-
+-
+-/* Macros reading unsigned integers from a byte pointer */
+-/* these should work for all little endian machines */
+-#define NTFS_GETU8(p) (*(ntfs_u8*)(p))
+-#define NTFS_GETU16(p) (*(ntfs_u16*)(p))
+-#define NTFS_GETU24(p) (NTFS_GETU32(p) & 0xFFFFFF)
+-#define NTFS_GETU32(p) (*(ntfs_u32*)(p))
+-#define NTFS_GETU64(p) (*(ntfs_u64*)(p))
+-
+-/* Macros reading signed integers, returning int */
+-#define NTFS_GETS8(p) ((int)(*(char*)(p)))
+-#define NTFS_GETS16(p) ((int)(*(short*)(p)))
+-#define NTFS_GETS24(p) (NTFS_GETU24(p) < 0x800000 ? (int)NTFS_GETU24(p) :
+-
+
++#define CPU_TO_LE16(a) __cpu_to_le16(a)
++#define CPU_TO_LE32(a) __cpu_to_le32(a)
++#define CPU_TO_LE64(a) __cpu_to_le64(a)
++
++#define LE16_TO_CPU(a) __cpu_to_le16(a)
++#define LE32_TO_CPU(a) __cpu_to_le32(a)
++#define LE64_TO_CPU(a) __cpu_to_le64(a)
++
++/* Macros reading unsigned integers */
++#define NTFS_GETU8(p) (*(ntfs_u8*)(p))
++#define NTFS_GETU16(p) ((ntfs_u16)LE16_TO_CPU(*(ntfs_u16*)(p)))
++#define NTFS_GETU24(p) ((ntfs_u32)NTFS_GETU16(p) | \
++ ((ntfs_u32)NTFS_GETU8(((char*)(p)) + 2) << 16))
++#define NTFS_GETU32(p) ((ntfs_u32)LE32_TO_CPU(*(ntfs_u32*)(p)))
++#define NTFS_GETU64(p) ((ntfs_u64)LE64_TO_CPU(*(ntfs_u64*)(p)))
++
++/* Macros reading signed integers */
++#define NTFS_GETS8(p) ((*(ntfs_s8*)(p)))
++#define NTFS_GETS16(p) ((ntfs_s16)LE16_TO_CPU(*(short*)(p)))
++#define NTFS_GETS24(p) (NTFS_GETU24(p) < 0x800000 ? \
++ (int)NTFS_GETU24(p) : \
++ (int)(NTFS_GETU24(p) - 0x1000000))
+
+ #endif /* _GM_NTFS_H */
diff --git a/extra/gpart/gpart-0.1h-vfat.patch b/extra/gpart/gpart-0.1h-vfat.patch
new file mode 100644
index 000000000..7234ac689
--- /dev/null
+++ b/extra/gpart/gpart-0.1h-vfat.patch
@@ -0,0 +1,17 @@
+Ripped out of debian
+
+--- gpart-0.1h.orig/src/gm_fat.h
++++ gpart-0.1h/src/gm_fat.h
+@@ -60,6 +60,10 @@
+ __u16 info_sector; /* filesystem info sector */
+ __u16 backup_boot; /* backup boot sector */
+ __u16 reserved2[6]; /* Unused */
+-};
+-
++} __attribute__ ((packed));
++/* "__attribute__ ((packed))"
++ added by davidc@debian.org,
++ as suggested by falk@zxmjz18.extern.uni-tuebingen.de
++ Fri Jul 07 18:04:15 2000
++ in debian bug report #66893 "FAT detection broken on Alpha" */
+ #endif /* _GM_FAT_H */
diff --git a/extra/gparted/PKGBUILD b/extra/gparted/PKGBUILD
new file mode 100644
index 000000000..f9921fc8b
--- /dev/null
+++ b/extra/gparted/PKGBUILD
@@ -0,0 +1,38 @@
+# $Id: PKGBUILD 112741 2011-03-06 12:56:57Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Andrew Simmons <andrew.simmons@gmail.com>
+
+pkgname=gparted
+pkgver=0.8.0
+pkgrel=2
+pkgdesc="A Partition Magic clone, frontend to GNU Parted"
+arch=('i686' 'x86_64')
+url="http://gparted.sourceforge.net"
+license=('GPL')
+depends=('parted' 'gtkmm' 'libsigc++')
+makedepends=('intltool' 'pkgconfig' 'gnome-doc-utils')
+optdepends=('e2fsprogs: for ext2/ext3 partitions'
+ 'dosfstools: for fat16/32 partitions'
+ 'jfsutils: for jfs partitions'
+ 'ntfsprogs: for ntfs partitions'
+ 'reiserfsprogs: for reiser partitions'
+ 'xfsprogs: for xfs partitions'
+ 'gksu: to run gparted directly from menu'
+ 'gpart: for recovering corrupt partition tables')
+install=gparted.install
+source=(http://downloads.sourceforge.net/project/${pkgname}/${pkgname}/${pkgname}-${pkgver}/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('29adfe33df34c03b7f800ce5374e957a')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ ./configure --prefix=/usr
+ make || return 1
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ make DESTDIR="${pkgdir}" install || return 1
+ sed -i -e "s:Exec= /usr/sbin:Exec=gksu /usr/sbin:g" ${pkgdir}/usr/share/applications/gparted.desktop || return 1
+}
diff --git a/extra/gparted/gparted.install b/extra/gparted/gparted.install
new file mode 100644
index 000000000..21b79d2d4
--- /dev/null
+++ b/extra/gparted/gparted.install
@@ -0,0 +1,11 @@
+post_install() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
diff --git a/extra/gperf/PKGBUILD b/extra/gperf/PKGBUILD
new file mode 100644
index 000000000..58bd118a6
--- /dev/null
+++ b/extra/gperf/PKGBUILD
@@ -0,0 +1,22 @@
+#$Id: PKGBUILD 37369 2009-05-01 06:35:08Z eric $
+#Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=gperf
+pkgver=3.0.4
+pkgrel=1
+pkgdesc="Perfect hash function generator."
+arch=('x86_64' 'i686')
+url="http://www.gnu.org/software/gperf/"
+license=('GPL3')
+depends=('gcc-libs' 'texinfo')
+install=gperf.install
+source=(ftp://ftp.gnu.org/gnu/gperf/${pkgname}-${pkgver}.tar.gz)
+md5sums=('c1f1db32fb6598d6a93e6e88796a8632')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr || return 1
+ make || return 1
+ make DESTDIR=${pkgdir} install || return 1
+ gzip ${pkgdir}/usr/share/info/gperf.info
+}
diff --git a/extra/gperf/gperf.install b/extra/gperf/gperf.install
new file mode 100644
index 000000000..1c20e2f5c
--- /dev/null
+++ b/extra/gperf/gperf.install
@@ -0,0 +1,20 @@
+infodir=/usr/share/info
+filelist=(gperf.info.gz)
+
+post_install() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info --delete $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
diff --git a/extra/gpgme/PKGBUILD b/extra/gpgme/PKGBUILD
new file mode 100644
index 000000000..7fe998fc2
--- /dev/null
+++ b/extra/gpgme/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 78424 2010-04-23 17:42:52Z andrea $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+# Contributor: Roman Kyrylych <roman@archlinux.org>
+# Contributor: Sarah Hay <sarah@archlinux.org>
+
+pkgname=gpgme
+pkgver=1.3.0
+pkgrel=1
+pkgdesc="A C wrapper library for GnuPG"
+arch=('i686' 'x86_64')
+url="http://www.gnupg.org/related_software/gpgme/"
+license=('GPL')
+depends=('libgpg-error' 'pth' 'gnupg' 'gnupg2')
+install=${pkgname}.install
+options=('!libtool' '!emptydirs')
+source=(ftp://ftp.gnupg.org/gcrypt/${pkgname}/${pkgname}-${pkgver}.tar.gz)
+md5sums=('f148c73f6f540f91e02141df72844f62')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr
+ make || return 1
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install || return 1
+ rm ${pkgdir}/usr/share/info/dir
+ gzip ${pkgdir}/usr/share/info/*
+}
diff --git a/extra/gpgme/gpgme.install b/extra/gpgme/gpgme.install
new file mode 100644
index 000000000..b54620d9a
--- /dev/null
+++ b/extra/gpgme/gpgme.install
@@ -0,0 +1,18 @@
+infodir=/usr/share/info
+filelist=(gpgme.info gpgme.info-1 gpgme.info-2)
+
+post_install() {
+ for file in ${filelist[@]}; do
+ install-info $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ for file in ${filelist[@]}; do
+ install-info --delete $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
diff --git a/extra/gphoto2/PKGBUILD b/extra/gphoto2/PKGBUILD
new file mode 100644
index 000000000..87e3e619f
--- /dev/null
+++ b/extra/gphoto2/PKGBUILD
@@ -0,0 +1,21 @@
+# $Id: PKGBUILD 97700 2010-11-01 13:01:49Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Eduardo Romero <eduardo@archlinux.org>
+# Contributor: Jason Chu <jason@archlinux.org>
+pkgname=gphoto2
+pkgver=2.4.10
+pkgrel=1
+pkgdesc="A digital camera download and access program."
+arch=(i686 x86_64)
+url="http://www.gphoto.org"
+license=('GPL' 'LGPL')
+depends=('libgphoto2>=2.4.10' 'popt' 'aalib' 'readline>=6.1')
+source=(http://downloads.sourceforge.net/gphoto/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('3c86c9824b9bfc57a52be5f84ad205f7')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/gpsd/LICENSE b/extra/gpsd/LICENSE
new file mode 100644
index 000000000..076538678
--- /dev/null
+++ b/extra/gpsd/LICENSE
@@ -0,0 +1,38 @@
+ COPYRIGHTS
+
+Compilation copyright is held by the GPSD project. All rights reserved.
+
+GPSD project copyrights are assigned to the project lead, currently
+Eric S. Raymond. Other portions of the GPSD code are Copyright (c)
+1997, 1998, 1999, 2000, 2001, 2002 by Remco Treffkorn, and others
+Copyright (c) 2005 by Eric S. Raymond. For other copyrights, see
+individual files.
+
+ BSD LICENSE
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:<P>
+
+Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.<P>
+
+Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in the
+documentation and/or other materials provided with the distribution.<P>
+
+Neither name of the GPSD project nor the names of its contributors
+may be used to endorse or promote products derived from this software
+without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/extra/gpsd/PKGBUILD b/extra/gpsd/PKGBUILD
new file mode 100644
index 000000000..674351838
--- /dev/null
+++ b/extra/gpsd/PKGBUILD
@@ -0,0 +1,77 @@
+# $Id: PKGBUILD 116080 2011-03-22 18:18:49Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Sergej Pupykin <pupykin.s+arch@gmail.com>
+# Contributor: dibblethewrecker dibblethewrecker.at.jiwe.dot.org
+# Contributor: Giacomo Rizzo <alt@free-os.it>
+
+pkgname=gpsd
+pkgver=2.95
+pkgrel=8
+pkgdesc="GPS daemon and library to support USB/serial GPS devices"
+arch=('i686' 'x86_64')
+url="http://gpsd.berlios.de"
+license=('BSD')
+depends=('lesstif' 'libxaw' 'python2' 'pth' 'libusb' 'desktop-file-utils')
+optdepends=('php: generate a PHP status page for your GPS'
+ 'php-gd: image support for the PHP status page')
+makedepends=('docbook-xsl')
+backup=('etc/conf.d/gpsd' 'lib/udev/rules.d/99-gpsd-usb.rules')
+options=('!libtool')
+install="${pkgname}.install"
+source=("http://download.berlios.de/${pkgname}/${pkgname}-${pkgver}.tar.gz"
+ 'gpsd' 'LICENSE')
+md5sums=('12535a9ed9fecf9ea2c5bdc9840da5ae'
+ 'f929322fc4670543fcb36dafc7bb9e03'
+ 'd217a23f408e91c94359447735bc1800')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ # install python to the same DESTDIR given make
+ sed -i 's|--prefix=${prefix} # --root=$(DESTDIR)|--prefix=${prefix} --root=$(DESTDIR)|' Makefile.am Makefile.in
+
+ # fix python 2.7 path
+ sed -i 's|/usr/bin/python|/usr/bin/python2|' gpsd.hotplug{,.wrapper}
+ sed -i 's|/usr/bin/python2.6|/usr/bin/python2|' valgrind-audit
+ sed -i 's|/usr/bin/env python|/usr/bin/env python2|' gpscat \
+ gpsfake gpsprof xgps xgpsspeed gps/gps.py
+
+ PYTHON=/usr/bin/python2 ./configure --prefix=/usr \
+ --disable-libQgpsmm \
+ --disable-static
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ # Fix man pages path (FS#21715)
+ sed -i 's|.so gps.1|.so man1/gps.1|' cgps.1 lcdgps.1 xgps.1 xgpsspeed.1
+
+ make DESTDIR="${pkgdir}" install
+
+ # Our own udev-install since the Makefile uses absolute paths
+ # Original file names are [mostly] unmodified: useful to match process name in case of error
+ # Following the switch from hotplug to udev helper scripts now live in /lib/udev/ instead of /etc/hotplug/
+ sed -i 's|GPSD_OPTIONS=""|GPSD_OPTIONS="-P /var/run/gpsd.pid"|' packaging/deb/etc_default_gpsd
+ sed -i 's|"/var/run/gpsd.sock"|"/var/run/gpsd/gpsd.sock"|' packaging/deb/etc_default_gpsd
+ install -D -m644 "packaging/deb/etc_default_gpsd" "${pkgdir}/etc/conf.d/gpsd"
+
+ sed -i 's|Id: gpsd.rules|Id: 99-gpsd-usb.rules|' gpsd.rules
+ install -D -m644 "gpsd.rules" "${pkgdir}/lib/udev/rules.d/99-gpsd-usb.rules"
+
+ sed -i 's|/etc/default/gpsd|/etc/conf.d/gpsd|' gpsd.hotplug.wrapper
+ install -D -m755 gpsd.hotplug.wrapper "${pkgdir}/lib/udev/gpsd.hotplug.wrapper"
+
+ # Patch a path bug. Check to see if fixed in ensuing releases
+ sed -i 's|gpsdcmd = "gpsd %s|gpsdcmd = "/usr/sbin/gpsd %s|' gpsd.hotplug
+ install -D -m755 gpsd.hotplug "${pkgdir}/lib/udev/gpsd.hotplug"
+
+ install -D -m644 packaging/X11/xgps.desktop ${pkgdir}/usr/share/applications/xgps.desktop
+ install -D -m644 packaging/X11/xgpsspeed.desktop ${pkgdir}/usr/share/applications/xgpsspeed.desktop
+ install -D -m644 packaging/X11/gpsd-logo.png ${pkgdir}/usr/share/gpsd/gpsd-logo.png
+
+ install -D -m755 "${srcdir}/gpsd" "${pkgdir}/etc/rc.d/gpsd"
+
+ install -D -m644 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+}
diff --git a/extra/gpsd/gpsd b/extra/gpsd/gpsd
new file mode 100755
index 000000000..b0f22c735
--- /dev/null
+++ b/extra/gpsd/gpsd
@@ -0,0 +1,43 @@
+#! /bin/sh
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+[ -f /etc/conf.d/gpsd ] && . /etc/conf.d/gpsd
+
+NAME=gpsd
+DAEMON=/usr/sbin/$NAME
+PID=$(pidof -o %PPID /usr/sbin/gpsd)
+
+case "$1" in
+ start)
+ stat_busy "Starting gpsd"
+ [ ! -d /var/run/gpsd ] && install -d /var/run/gpsd
+ [ -z "$PID" ] && "$DAEMON" ${GPSD_OPTIONS} -F ${GPSD_SOCKET} ${DEVICES}
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon gpsd
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping gpsd"
+ [ ! -z "$PID" ] && kill $PID &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm -f /var/run/$PID.pid &>/dev/null
+ rm_daemon gpsd
+ stat_done
+ fi
+ ;;
+
+ restart)
+ $0 stop
+ sleep 2
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
diff --git a/extra/gpsd/gpsd.install b/extra/gpsd/gpsd.install
new file mode 100644
index 000000000..ee661fcb1
--- /dev/null
+++ b/extra/gpsd/gpsd.install
@@ -0,0 +1,16 @@
+post_install() {
+ echo ">>> Note: the supplied gpsd udev rules are device-specific, so"
+ echo ">>> if your device isn't detected correctly, please use lsusb or"
+ echo ">>> another suitable tool to determine the proper device IDs and"
+ echo ">>> use the commented rules to fill in the blanks for your device."
+
+ update-desktop-database -q
+}
+
+post_upgrade() {
+ update-desktop-database -q
+}
+
+post_remove() {
+ update-desktop-database -q
+}
diff --git a/extra/gptfdisk/PKGBUILD b/extra/gptfdisk/PKGBUILD
new file mode 100644
index 000000000..9da2ea890
--- /dev/null
+++ b/extra/gptfdisk/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 116996 2011-03-27 12:25:01Z tpowa $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org
+# Contributor: Hokum <hokum_at_mail_dot_ru>
+pkgname=gptfdisk
+pkgver=0.7.1
+pkgrel=1
+pkgdesc="A text-mode partitioning tool that works on Globally Unique Identifier (GUID) Partition Table (GPT) disks."
+arch=('i686' 'x86_64')
+url="http://www.rodsbooks.com/gdisk"
+depends=('gcc-libs' 'util-linux' 'popt' 'icu')
+replaces=('gdisk')
+license=('GPL2')
+source=(http://www.rodsbooks.com/gdisk/$pkgname-$pkgver.tgz)
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ make
+}
+
+package () {
+ cd $srcdir/$pkgname-$pkgver
+ install -D -m755 gdisk $pkgdir/sbin/gdisk
+ install -D -m755 sgdisk $pkgdir/sbin/sgdisk
+ install -D -m755 fixparts $pkgdir/sbin/fixparts
+ install -D -m644 gdisk.8 $pkgdir/usr/share/man/man8/gdisk.8
+ install -D -m644 sgdisk.8 $pkgdir/usr/share/man/man8/sgdisk.8
+ install -D -m644 README $pkgdir/usr/share/gdisk/README
+ install -D -m644 NEWS pkgdir/usr/share/gdisk/NEWS
+}
+md5sums=('7c8d810df61e81c821bef399b832e89e')
diff --git a/extra/gqmpeg/PKGBUILD b/extra/gqmpeg/PKGBUILD
new file mode 100644
index 000000000..c89d063ca
--- /dev/null
+++ b/extra/gqmpeg/PKGBUILD
@@ -0,0 +1,21 @@
+# $Id: PKGBUILD 64726 2010-01-22 01:20:44Z eric $
+# Maintainer: damir <damir@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=gqmpeg
+pkgver=0.91.1
+pkgrel=4
+pkgdesc="A frontend to mpg123 with extensive themeability and playlist support"
+arch=('i686' 'x86_64')
+url="http://gqmpeg.sourceforge.net/"
+license=('GPL2')
+depends=('bash' 'gtk2' 'imlib' 'mpg123')
+source=(http://downloads.sourceforge.net/sourceforge/$pkgname/$pkgname-$pkgver.tar.gz)
+md5sums=('e22eda86fc3e59108c8d04abc37b3e56')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ ./configure --prefix=/usr --mandir=/usr/share/man
+ make || return 1
+ make prefix=$pkgdir/usr mandir=$pkgdir/usr/share/man install
+}
diff --git a/extra/gqview/PKGBUILD b/extra/gqview/PKGBUILD
new file mode 100644
index 000000000..2d61ae442
--- /dev/null
+++ b/extra/gqview/PKGBUILD
@@ -0,0 +1,20 @@
+# $Id: PKGBUILD 68535 2010-02-13 03:58:08Z dgriffiths $
+# Maintainer: dorphell <dorphell@archlinux.org>
+# Committer: Judd Vinet <jvinet@zeroflux.org>
+pkgname=gqview
+pkgver=2.0.4
+pkgrel=3
+pkgdesc="An image browser and viewer"
+arch=('i686' 'x86_64')
+url="http://gqview.sourceforge.net/"
+license=('GPL')
+depends=('gtk2')
+source=(http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.gz)
+md5sums=('7196deab04db94cec2167637cddc02f9')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ CPPFLAGS="-D_FILE_OFFSET_BITS=64" ./configure --prefix=/usr --mandir=/usr/share/man || return 1
+ make || return 1
+ make DESTDIR=${pkgdir} install || return 1
+}
diff --git a/extra/grantlee/PKGBUILD b/extra/grantlee/PKGBUILD
new file mode 100644
index 000000000..fb95cc7b9
--- /dev/null
+++ b/extra/grantlee/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id$
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+
+pkgname=grantlee
+pkgver=0.1.8
+pkgrel=1
+pkgdesc="A string template engine based on the Django template system and written in Qt"
+arch=('i686' 'x86_64')
+url="http://www.gitorious.org/grantlee/pages/Home"
+license=('LGPL3')
+depends=('qt')
+makedepends=('cmake')
+source=("http://downloads.grantlee.org/${pkgname}-${pkgver}.tar.gz")
+md5sums=('67c24d9eb6be66997ac5d0803bde06de')
+
+build() {
+ cd ${srcdir}
+ mkdir build
+ cd build
+ cmake ../${pkgname}-${pkgver} \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_BUILD_TYPE=Release
+ make
+}
+
+package() {
+ cd ${srcdir}/build
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/graphicsmagick/PKGBUILD b/extra/graphicsmagick/PKGBUILD
new file mode 100644
index 000000000..82f855ed9
--- /dev/null
+++ b/extra/graphicsmagick/PKGBUILD
@@ -0,0 +1,48 @@
+# $Id: PKGBUILD 103133 2010-12-15 19:32:43Z ronald $
+# Maintainer: Ronald van Haren <ronald.archlinux.org>
+# Contributor: Jaroslav Lichtblau <dragonlord@aur.archlinux.org>
+# Contributor: Anton Leontiev <bunder@t-25.ru>
+
+pkgname=graphicsmagick
+pkgver=1.3.12
+pkgrel=1
+pkgdesc="Image processing system"
+arch=('i686' 'x86_64')
+url="http://www.graphicsmagick.org/"
+license=('MIT')
+makedepends=('perl')
+depends=('bzip2' 'freetype2' 'ghostscript' 'jasper' 'lcms' 'libsm'
+ 'libtiff' 'libwmf' 'libxml2' 'libtool')
+options=('!libtool')
+source=(http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}-history/1.3/GraphicsMagick-${pkgver}.tar.gz)
+md5sums=('2cf6e2eea0d7af3019c9a89b81aad624')
+
+build() {
+ cd "${srcdir}/GraphicsMagick-$pkgver"
+
+ ./configure --prefix=/usr --with-perl --enable-shared --with-gs-font-dir=/usr/share/fonts/Type1
+ make
+}
+
+package() {
+ cd "${srcdir}/GraphicsMagick-$pkgver"
+
+ make DESTDIR="${pkgdir}" install
+
+ # Install MIT license
+ install -Dm644 "Copyright.txt" "${pkgdir}/usr/share/licenses/$pkgname/Copyright.txt"
+
+ # Install perl bindings
+ # The patching was introduced in order to build perl module without installing package itself and
+ # not to introduce unnecessary path into LD_RUN_PATH
+ cd PerlMagick
+ sed -i -e "s:'LDDLFLAGS' => \"\(.*\)\":'LDDLFLAGS' => \"-L${pkgdir}/usr/lib \1\":" Makefile.PL
+ perl Makefile.PL INSTALLDIRS=vendor PREFIX=/usr DESTDIR="${pkgdir}"
+ sed -i -e "s/LDLOADLIBS =/LDLOADLIBS = -lGraphicsMagick/" Makefile
+ make
+ make install
+
+ # Remove perllocal.pod and .packlist
+ rm -rf "${pkgdir}/usr/lib/perl5/core_perl"
+ rm "${pkgdir}/usr/lib/perl5/vendor_perl/auto/Graphics/Magick/.packlist"
+}
diff --git a/extra/graphite/PKGBUILD b/extra/graphite/PKGBUILD
new file mode 100644
index 000000000..622ab8eb0
--- /dev/null
+++ b/extra/graphite/PKGBUILD
@@ -0,0 +1,51 @@
+# $Id: PKGBUILD 51199 2009-09-05 20:11:42Z andyrtr $
+# Maintainer: AndyRTR <andyrtr@archlinux.org>
+
+# build twice that pango-graphite can pickup the new libgraphite dependency - take care when .so names happen!
+
+pkgbase=graphite
+pkgname=('libgraphite' 'pango-graphite')
+pkgver=2.3.1
+pkgrel=1
+arch=('i686' 'x86_64')
+url="http://graphite.sil.org/"
+makedepends=('pango' 'gcc-libs')
+options=('!libtool' '!emptydirs')
+source=(http://downloads.sourceforge.net/project/silgraphite/silgraphite/${pkgver}/silgraphite-${pkgver}.tar.gz)
+md5sums=('d35724900f6a4105550293686688bbb3')
+
+build() {
+ cd "${srcdir}/silgraphite-${pkgver}"
+ pushd engine
+ ./configure --prefix=/usr --disable-static
+ make || return 1
+ popd
+
+ pushd wrappers/pangographite
+ ./configure --prefix=/usr --disable-static
+ make || return 1
+ popd
+}
+
+package_libgraphite() {
+ pkgdesc="SILGraphite - a \"smart font\" rendering engine - the libs and headers"
+ license=('custom_SIL Dual license')
+ depends=('gcc-libs')
+
+ cd "${srcdir}/silgraphite-${pkgver}"/engine
+ make DESTDIR="$pkgdir/" install || return 1
+
+ # licenses
+ mkdir -p "${pkgdir}"/usr/share/licenses/${pkgname}
+ install -m644 license/*.txt "${pkgdir}"/usr/share/licenses/${pkgname}/
+}
+
+package_pango-graphite() {
+ pkgdesc="SILGraphite support for pango"
+ license=('LGPL')
+ depends=('pango' 'libgraphite')
+ install=pango-graphite.install
+
+ cd "${srcdir}/silgraphite-${pkgver}"/wrappers/pangographite
+ make DESTDIR="$pkgdir/" install || return 1
+} \ No newline at end of file
diff --git a/extra/graphite/pango-graphite.install b/extra/graphite/pango-graphite.install
new file mode 100644
index 000000000..46bc44611
--- /dev/null
+++ b/extra/graphite/pango-graphite.install
@@ -0,0 +1,12 @@
+post_install() {
+ usr/bin/pango-querymodules >etc/pango/pango.modules
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ post_install $1
+}
+
diff --git a/extra/graphviz/LICENSE b/extra/graphviz/LICENSE
new file mode 100644
index 000000000..16cc69a52
--- /dev/null
+++ b/extra/graphviz/LICENSE
@@ -0,0 +1,87 @@
+Eclipse Public License - v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+
+b) in the case of each subsequent Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents" mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form.
+
+b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+
+c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+
+d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose;
+
+ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and
+
+iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation.
diff --git a/extra/graphviz/PKGBUILD b/extra/graphviz/PKGBUILD
new file mode 100644
index 000000000..3fd2a00e1
--- /dev/null
+++ b/extra/graphviz/PKGBUILD
@@ -0,0 +1,49 @@
+# $Id: PKGBUILD 110525 2011-02-19 18:19:40Z bisson $
+# Maintainer: kevin <kevin@archlinux.org>
+# Contributor: John Proctor <jproctor@prium.net>
+
+pkgname=graphviz
+pkgver=2.26.3
+pkgrel=3
+pkgdesc='Graph visualization software'
+url='http://www.graphviz.org/'
+license=('custom:EPL')
+arch=('i686' 'x86_64')
+depends=('gd' 'librsvg' 'libxaw' 'ghostscript' 'pango')
+makedepends=('swig' 'mono' 'guile' 'lua' 'ocaml' 'perl' 'php' 'python2' 'r' 'ruby' 'tk')
+optdepends=('mono: sharp bindings'
+ 'guile: guile bindings'
+ 'lua: lua bindings'
+ 'ocaml: ocaml bindings'
+ 'perl: perl bindings'
+ 'php: php bindings'
+ 'python2: python bindings'
+ 'r: r bindings'
+ 'ruby: ruby bindings'
+ 'tcl: tcl bindings')
+source=("${url}/pub/${pkgname}/stable/SOURCES/${pkgname}-${pkgver}.tar.gz"
+ 'LICENSE')
+sha1sums=('04503ac5a9eaa579859f0d017811fa245717edec'
+ 'e78277e502c29abb74b9587a5dc951ec392554ea')
+
+options=('!libtool')
+install=install
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ sed -i "/RUBY_INCLUDES=\"/s|\"$| `eval echo -I/usr/include/ruby-1.9.1/{$CARCH-linux,ruby/backward,}`\"|" configure
+ sed -i '/LIBPOSTFIX="64"/d' configure
+ export PYTHON=python2
+
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+
+ # cf. http://www.graphviz.org/License.php
+ install -Dm644 ../LICENSE "${pkgdir}"/usr/share/licenses/graphviz/LICENSE
+}
diff --git a/extra/graphviz/install b/extra/graphviz/install
new file mode 100644
index 000000000..00510e3f6
--- /dev/null
+++ b/extra/graphviz/install
@@ -0,0 +1,17 @@
+# arg 1: the new package version
+post_install() {
+ # Create plugin config /usr/lib/graphviz/config6
+ rm -f usr/lib/graphviz/config{,6}
+ usr/bin/dot -c
+}
+
+# arg 1: the new package version
+# arg 2: the old package version
+post_upgrade() {
+ post_install $1
+}
+
+# arg 1: the old package version
+pre_remove() {
+ rm -f usr/lib/graphviz/config{,6}
+}
diff --git a/extra/grip/PKGBUILD b/extra/grip/PKGBUILD
new file mode 100644
index 000000000..9cc95af96
--- /dev/null
+++ b/extra/grip/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id: PKGBUILD 57044 2009-10-31 11:06:52Z allan $
+# Maintainer: tobias <tobias@archlinux.org>
+# Contributor: Todd Musall <tmusall@comcast.net>
+
+pkgname=grip
+pkgver=3.3.1
+pkgrel=8
+pkgdesc="A cd-player and ripper for the Gnome desktop"
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://nostatic.org/grip/"
+depends=('vte' 'curl' 'libgnomeui' 'id3lib' 'cdparanoia')
+install=grip.install
+source=(http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.gz)
+md5sums=('4b4233999b9f2bc85c711092553ea9aa')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var
+ make || return 1
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/grip/grip.install b/extra/grip/grip.install
new file mode 100644
index 000000000..db4c764ac
--- /dev/null
+++ b/extra/grip/grip.install
@@ -0,0 +1,33 @@
+
+# This is a default template for a post-install scriptlet. You can
+# remove any functions you don't need (and this header).
+
+# arg 1: the new package version
+post_install() {
+ cat << EOM
+
+ --> please note that you will need "yelp" to display the help and the notices
+ --> of grip. Every other functionality can be used out of the box.
+
+EOM
+}
+
+# arg 1: the new package version
+# arg 2: the old package version
+post_upgrade() {
+ post_install $1
+}
+
+# arg 1: the old package version
+pre_remove() {
+ /bin/true
+}
+
+# arg 1: the old package version
+post_remove() {
+ /bin/true
+}
+
+op=$1
+shift
+$op $*
diff --git a/extra/gsf-sharp/PKGBUILD b/extra/gsf-sharp/PKGBUILD
new file mode 100644
index 000000000..c0857719e
--- /dev/null
+++ b/extra/gsf-sharp/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 78202 2010-04-20 01:26:27Z dgriffiths $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: William Rea <sillywilly@gmail.com>
+
+pkgname=gsf-sharp
+pkgver=0.8.1
+pkgrel=3
+pkgdesc="libgsf .NET binding"
+arch=(i686 x86_64)
+url="http://go-mono.org/"
+license=('LGPL2')
+depends=('libgsf>=1.14.1' 'gtk-sharp-2>=2.10')
+makedepends=('pkgconfig')
+options=(!libtool)
+source=(http://primates.ximian.com/~joe/${pkgname}-${pkgver}.tar.gz)
+md5sums=('92bb68612bdcd8ca3c475b3fee097968')
+
+build() {
+ export MONO_SHARED_DIR=${srcdir}/.wabi
+ mkdir -p ${MONO_SHARED_DIR}
+
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr || return 1
+ make || return 1
+ make DESTDIR=${pkgdir} install || return 1
+
+ rm -rf ${MONO_SHARED_DIR}
+}
+
diff --git a/extra/gsl/PKGBUILD b/extra/gsl/PKGBUILD
new file mode 100644
index 000000000..e78080979
--- /dev/null
+++ b/extra/gsl/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 77275 2010-04-11 19:10:03Z ronald $
+# Maintainer: Ronald van Haren <ronald.archlinux.org>
+# Contributor: Juergen Hoetzel <juergen.archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=gsl
+pkgver=1.14
+pkgrel=1
+pkgdesc="The GNU Scientific Library (GSL) is a modern numerical library for C and C++ programmers"
+url="http://www.gnu.org/software/gsl/gsl.html"
+source=(http://ftp.belnet.be/mirror/ftp.gnu.org/gnu/gsl/$pkgname-$pkgver.tar.gz)
+install=gsl.install
+license=('GPL')
+arch=('i686' 'x86_64')
+depends=('glibc' 'bash')
+options=('!libtool')
+md5sums=('d55e7b141815412a072a3f0e12442042')
+
+build() {
+ unset LDFLAGS
+
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr
+ make || return 1
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install || return 1
+}
diff --git a/extra/gsl/gsl.install b/extra/gsl/gsl.install
new file mode 100644
index 000000000..c5697deda
--- /dev/null
+++ b/extra/gsl/gsl.install
@@ -0,0 +1,21 @@
+ infodir=/usr/share/info
+ filelist=(gsl-ref.info.gz)
+
+ post_install() {
+ for file in ${filelist[@]}; do
+ install-info $infodir/$file $infodir/dir 2> /dev/null
+ done
+
+ }
+
+ post_upgrade() {
+ post_install $1
+ }
+
+ pre_remove() {
+ for file in ${filelist[@]}; do
+ install-info --delete $infodir/$file $infodir/dir 2> /dev/null
+ done
+
+ }
+
diff --git a/extra/gsm/PKGBUILD b/extra/gsm/PKGBUILD
new file mode 100644
index 000000000..647cd2778
--- /dev/null
+++ b/extra/gsm/PKGBUILD
@@ -0,0 +1,43 @@
+# $Id: $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Maxime de Roucy <maxime.deroucy@gmail.com>
+# Contributor: Darwin Bautista <djclue917@gmail.com>
+
+pkgname=gsm
+pkgver=1.0.13
+pkgrel=6
+pkgdesc="Shared libraries for GSM 06.10 lossy speech compression"
+arch=('i686' 'x86_64')
+url="http://www.quut.com/gsm/"
+license=('custom')
+depends=('glibc')
+source=(http://www.quut.com/${pkgname}/${pkgname}-${pkgver}.tar.gz
+ gsm.patch)
+md5sums=('c1ba392ce61dc4aff1c29ea4e92f6df4'
+ '30f46c92d0a5e5654258e707a9e8b5a6')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver%.*}-pl${pkgver##*.}/"
+
+ patch -Np0 -i "${srcdir}/${pkgname}.patch"
+
+ # flags for shared lib
+ CFLAGS="${CFLAGS} -fPIC"
+ make CCFLAGS="-c ${CFLAGS}"
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver%.*}-pl${pkgver##*.}/"
+
+ # Prepare directories
+ install -m755 -d "${pkgdir}"/usr/{bin,lib,include/gsm,share/{licenses/${pkgname},man/man{1,3}}}
+
+ make -j1 INSTALL_ROOT="${pkgdir}/usr" \
+ GSM_INSTALL_INC="${pkgdir}/usr/include/gsm" \
+ GSM_INSTALL_MAN="${pkgdir}/usr/share/man/man3" \
+ TOAST_INSTALL_MAN="${pkgdir}/usr/share/man/man1" \
+ install
+
+ # Install license
+ install -m644 COPYRIGHT ${pkgdir}/usr/share/licenses/${pkgname}/license.txt || return 1
+}
diff --git a/extra/gsm/gsm.patch b/extra/gsm/gsm.patch
new file mode 100644
index 000000000..821f3a599
--- /dev/null
+++ b/extra/gsm/gsm.patch
@@ -0,0 +1,198 @@
+--- Makefile 2006-04-26 15:14:26.000000000 -0400
++++ Makefile 2010-06-19 16:53:25.000000000 -0400
+@@ -44,7 +44,7 @@
+ # CCFLAGS = -c -O
+
+ CC = gcc -ansi -pedantic
+-CCFLAGS = -c -O2 -DNeedFunctionPrototypes=1
++CCFLAGS = -c -O2 -fPIC -DNeedFunctionPrototypes=1
+
+ LD = $(CC)
+
+@@ -96,11 +96,11 @@
+ # Other tools
+
+ SHELL = /bin/sh
+-LN = ln
++LN = ln -s -f
+ BASENAME = basename
+ AR = ar
+ ARFLAGS = cr
+-RMFLAGS =
++RMFLAGS = -f
+ FIND = find
+ COMPRESS = compress
+ COMPRESSFLAGS =
+@@ -139,7 +139,7 @@
+
+ # Targets
+
+-LIBGSM = $(LIB)/libgsm.a
++LIBGSMSO = $(LIB)/libgsm.so
+
+ TOAST = $(BIN)/toast
+ UNTOAST = $(BIN)/untoast
+@@ -257,7 +257,7 @@
+ # Install targets
+
+ GSM_INSTALL_TARGETS = \
+- $(GSM_INSTALL_LIB)/libgsm.a \
++ $(GSM_INSTALL_LIB)/libgsm.so \
+ $(GSM_INSTALL_INC)/gsm.h \
+ $(GSM_INSTALL_MAN)/gsm.3 \
+ $(GSM_INSTALL_MAN)/gsm_explode.3 \
+@@ -279,7 +279,7 @@
+
+ # Target rules
+
+-all: $(LIBGSM) $(TOAST) $(TCAT) $(UNTOAST)
++all: $(LIBGSMSO) $(TOAST) $(TCAT) $(UNTOAST)
+ @-echo $(ROOT): Done.
+
+ tst: $(TST)/lin2cod $(TST)/cod2lin $(TOAST) $(TST)/test-result
+@@ -299,24 +299,23 @@
+
+ # The basic API: libgsm
+
+-$(LIBGSM): $(LIB) $(GSM_OBJECTS)
+- -rm $(RMFLAGS) $(LIBGSM)
+- $(AR) $(ARFLAGS) $(LIBGSM) $(GSM_OBJECTS)
+- $(RANLIB) $(LIBGSM)
+-
++$(LIBGSMSO): $(LIB) $(GSM_OBJECTS)
++ $(LD) -shared -Wl,-soname,libgsm.so.1 -o $@.1.0.13 $(GSM_OBJECTS)
++ $(LN) libgsm.so.1.0.13 $(LIBGSMSO).1
++ $(LN) libgsm.so.1.0.13 $(LIBGSMSO)
+
+ # Toast, Untoast and Tcat -- the compress-like frontends to gsm.
+
+-$(TOAST): $(BIN) $(TOAST_OBJECTS) $(LIBGSM)
+- $(LD) $(LFLAGS) -o $(TOAST) $(TOAST_OBJECTS) $(LIBGSM) $(LDLIB)
++$(TOAST): $(BIN) $(TOAST_OBJECTS) $(LIBGSMSO)
++ $(LD) $(LFLAGS) -o $(TOAST) $(TOAST_OBJECTS) $(LIBGSMSO) $(LDLIB)
+
+ $(UNTOAST): $(BIN) $(TOAST)
+ -rm $(RMFLAGS) $(UNTOAST)
+- $(LN) $(TOAST) $(UNTOAST)
++ $(LN) toast $(UNTOAST)
+
+ $(TCAT): $(BIN) $(TOAST)
+ -rm $(RMFLAGS) $(TCAT)
+- $(LN) $(TOAST) $(TCAT)
++ $(LN) toast $(TCAT)
+
+
+ # The local bin and lib directories
+@@ -351,53 +350,54 @@
+ fi
+
+ $(TOAST_INSTALL_BIN)/toast: $(TOAST)
+- -rm $@
++ -rm $(RMFLAGS) $@
+ cp $(TOAST) $@
+ chmod 755 $@
+
+ $(TOAST_INSTALL_BIN)/untoast: $(TOAST_INSTALL_BIN)/toast
+- -rm $@
+- ln $? $@
++ -rm $(RMFLAGS) $@
++ $(LN) toast $@
+
+ $(TOAST_INSTALL_BIN)/tcat: $(TOAST_INSTALL_BIN)/toast
+- -rm $@
+- ln $? $@
++ -rm $(RMFLAGS) $@
++ $(LN) toast $@
+
+ $(TOAST_INSTALL_MAN)/toast.1: $(MAN)/toast.1
+- -rm $@
++ -rm $(RMFLAGS) $@
+ cp $? $@
+ chmod 444 $@
+
+ $(GSM_INSTALL_MAN)/gsm.3: $(MAN)/gsm.3
+- -rm $@
++ -rm $(RMFLAGS) $@
+ cp $? $@
+ chmod 444 $@
+
+ $(GSM_INSTALL_MAN)/gsm_option.3: $(MAN)/gsm_option.3
+- -rm $@
++ -rm $(RMFLAGS) $@
+ cp $? $@
+ chmod 444 $@
+
+ $(GSM_INSTALL_MAN)/gsm_explode.3: $(MAN)/gsm_explode.3
+- -rm $@
++ -rm $(RMFLAGS) $@
+ cp $? $@
+ chmod 444 $@
+
+ $(GSM_INSTALL_MAN)/gsm_print.3: $(MAN)/gsm_print.3
+- -rm $@
++ -rm $(RMFLAGS) $@
+ cp $? $@
+ chmod 444 $@
+
+ $(GSM_INSTALL_INC)/gsm.h: $(INC)/gsm.h
+- -rm $@
+- cp $? $@
+- chmod 444 $@
+-
+-$(GSM_INSTALL_LIB)/libgsm.a: $(LIBGSM)
+- -rm $@
++ -rm $(RMFLAGS) $@
+ cp $? $@
+ chmod 444 $@
+
++$(GSM_INSTALL_LIB)/libgsm.so: $(LIBGSMSO)
++ -rm $(RMFLAGS) $@ $@.1 $@.1.0.13
++ cp $?.1.0.13 $@.1.0.13
++ chmod 755 $@.1.0.13
++ $(LN) libgsm.so.1.0.13 $@
++ $(LN) libgsm.so.1.0.13 $@.1
+
+ # Distribution
+
+@@ -425,7 +425,7 @@
+ -print | xargs rm $(RMFLAGS)
+
+ clean: semi-clean
+- -rm $(RMFLAGS) $(LIBGSM) $(ADDTST)/add \
++ -rm $(RMFLAGS) $(LIBGSMSO)* $(ADDTST)/add \
+ $(TOAST) $(TCAT) $(UNTOAST) \
+ $(ROOT)/gsm-1.0.tar.Z
+
+@@ -473,22 +473,22 @@
+ $(TST)/test-result: $(TST)/lin2cod $(TST)/cod2lin $(TOAST) $(TST)/run
+ ( cd $(TST); ./run )
+
+-$(TST)/lin2txt: $(TST)/lin2txt.o $(LIBGSM)
++$(TST)/lin2txt: $(TST)/lin2txt.o $(LIBGSMSO)
+ $(LD) $(LFLAGS) -o $(TST)/lin2txt \
+- $(TST)/lin2txt.o $(LIBGSM) $(LDLIB)
++ $(TST)/lin2txt.o $(LIBGSMSO) $(LDLIB)
+
+-$(TST)/lin2cod: $(TST)/lin2cod.o $(LIBGSM)
++$(TST)/lin2cod: $(TST)/lin2cod.o $(LIBGSMSO)
+ $(LD) $(LFLAGS) -o $(TST)/lin2cod \
+- $(TST)/lin2cod.o $(LIBGSM) $(LDLIB)
++ $(TST)/lin2cod.o $(LIBGSMSO) $(LDLIB)
+
+-$(TST)/gsm2cod: $(TST)/gsm2cod.o $(LIBGSM)
++$(TST)/gsm2cod: $(TST)/gsm2cod.o $(LIBGSMSO)
+ $(LD) $(LFLAGS) -o $(TST)/gsm2cod \
+- $(TST)/gsm2cod.o $(LIBGSM) $(LDLIB)
++ $(TST)/gsm2cod.o $(LIBGSMSO) $(LDLIB)
+
+-$(TST)/cod2txt: $(TST)/cod2txt.o $(LIBGSM)
++$(TST)/cod2txt: $(TST)/cod2txt.o $(LIBGSMSO)
+ $(LD) $(LFLAGS) -o $(TST)/cod2txt \
+- $(TST)/cod2txt.o $(LIBGSM) $(LDLIB)
++ $(TST)/cod2txt.o $(LIBGSMSO) $(LDLIB)
+
+-$(TST)/cod2lin: $(TST)/cod2lin.o $(LIBGSM)
++$(TST)/cod2lin: $(TST)/cod2lin.o $(LIBGSMSO)
+ $(LD) $(LFLAGS) -o $(TST)/cod2lin \
+- $(TST)/cod2lin.o $(LIBGSM) $(LDLIB)
++ $(TST)/cod2lin.o $(LIBGSMSO) $(LDLIB)
diff --git a/extra/gstreamer0.10-base/PKGBUILD b/extra/gstreamer0.10-base/PKGBUILD
new file mode 100644
index 000000000..ff6f6b65a
--- /dev/null
+++ b/extra/gstreamer0.10-base/PKGBUILD
@@ -0,0 +1,48 @@
+# $Id: PKGBUILD 117562 2011-04-04 10:54:18Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgbase=('gstreamer0.10-base')
+pkgname=('gstreamer0.10-base' 'gstreamer0.10-base-plugins')
+pkgver=0.10.32
+pkgrel=4
+arch=('i686' 'x86_64')
+license=('LGPL')
+makedepends=('pkgconfig' 'gstreamer0.10>=0.10.32' 'orc' 'libxv' 'alsa-lib' 'cdparanoia' 'libvisual' 'libvorbis' 'libtheora' 'pango' 'udev' 'gobject-introspection')
+options=(!libtool !emptydirs)
+url="http://gstreamer.freedesktop.org/"
+source=(${url}/src/gst-plugins-base/gst-plugins-base-${pkgver}.tar.bz2)
+md5sums=('2920af2b3162f3d9fbaa7fabc8ed4d38')
+
+build() {
+ cd "${srcdir}/gst-plugins-base-${pkgver}"
+ sed -i '/AC_PATH_XTRA/d' configure.ac
+ autoreconf
+ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \
+ --disable-static --enable-experimental --disable-gnome_vfs \
+ --with-package-name="GStreamer Base Plugins (Archlinux)" \
+ --with-package-origin="http://www.archlinux.org/"
+
+ make || return 1
+ sed -e 's/^SUBDIRS_EXT =.*/SUBDIRS_EXT =/' -i Makefile
+}
+
+package_gstreamer0.10-base() {
+ pkgdesc="GStreamer Multimedia Framework Base plugin libraries"
+ depends=('gstreamer0.10>=0.10.32' 'orc' 'libxv' 'udev')
+
+ cd "${srcdir}/gst-plugins-base-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
+
+package_gstreamer0.10-base-plugins() {
+ pkgdesc="GStreamer Multimedia Framework Base Plugins (gst-plugins-base)"
+ depends=("gstreamer0.10-base=${pkgver}" 'alsa-lib' 'cdparanoia' 'libvisual' 'libvorbis' 'libtheora' 'pango')
+ replaces=('gstreamer0.10-alsa' 'gstreamer0.10-theora' 'gstreamer0.10-libvisual' 'gstreamer0.10-pango' 'gstreamer0.10-cdparanoia' 'gstreamer0.10-vorbis' 'gstreamer0.10-ogg')
+ conflicts=('gstreamer0.10-alsa' 'gstreamer0.10-theora' 'gstreamer0.10-libvisual' 'gstreamer0.10-pango' 'gstreamer0.10-cdparanoia' 'gstreamer0.10-vorbis' 'gstreamer0.10-ogg')
+ groups=('gstreamer0.10-plugins')
+
+ cd "${srcdir}/gst-plugins-base-${pkgver}"
+ make -C gst-libs DESTDIR="${pkgdir}" install
+ make -C ext DESTDIR="${pkgdir}" install
+ make -C gst-libs DESTDIR="${pkgdir}" uninstall
+}
diff --git a/extra/gstreamer0.10-ffmpeg/PKGBUILD b/extra/gstreamer0.10-ffmpeg/PKGBUILD
new file mode 100644
index 000000000..eb0592572
--- /dev/null
+++ b/extra/gstreamer0.10-ffmpeg/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 100249 2010-11-22 10:52:57Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=gstreamer0.10-ffmpeg
+pkgver=0.10.11
+pkgrel=1
+pkgdesc="Gstreamer FFMpeg Plugin"
+arch=('i686' 'x86_64')
+license=('GPL')
+depends=('gstreamer0.10-base>=0.10.30' 'bzip2')
+makedepends=('pkgconfig' 'yasm' 'sdl')
+url="http://www.gstreamer.net"
+groups=('gstreamer0.10-plugins')
+source=(http://gstreamer.freedesktop.org/src/gst-ffmpeg/gst-ffmpeg-${pkgver}.tar.bz2)
+sha256sums=('ff36a138e5af4ed8dcc459d6d6521fe66ed31ec29ba9a924dc3675c6749a692e')
+
+build() {
+ cd "${srcdir}/gst-ffmpeg-${pkgver}"
+ unset CFLAGS
+ unset CXXFLAGS
+ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --disable-static --with-ffmpeg-extra-configure="--enable-runtime-cpudetect"
+ make
+ make DESTDIR="${pkgdir}" install
+ rm -f "${pkgdir}"/usr/lib/gstreamer-0.10/*.la
+}
diff --git a/extra/gstreamer0.10-good/PKGBUILD b/extra/gstreamer0.10-good/PKGBUILD
new file mode 100644
index 000000000..0ecd69a45
--- /dev/null
+++ b/extra/gstreamer0.10-good/PKGBUILD
@@ -0,0 +1,52 @@
+# $Id: PKGBUILD 110101 2011-02-16 12:15:43Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgbase=gstreamer0.10-good
+pkgname=('gstreamer0.10-good' 'gstreamer0.10-good-plugins')
+pkgver=0.10.27
+pkgrel=2
+arch=('i686' 'x86_64')
+license=('LGPL')
+makedepends=('intltool' 'pkgconfig' 'gstreamer0.10-base>=0.10.32' 'libavc1394' 'libiec61883' 'aalib' 'libshout' 'libdv' 'esound' 'flac' 'gconf' 'wavpack' 'taglib' 'libsoup-gnome' 'v4l-utils' 'libcaca' 'bzip2' 'gdk-pixbuf2' 'libpulse' 'jack')
+url="http://gstreamer.freedesktop.org/"
+options=(!libtool !emptydirs)
+source=(${url}/src/gst-plugins-good/gst-plugins-good-${pkgver}.tar.bz2)
+md5sums=('c25d6c51916424009dfde4ee42ae1feb')
+
+build() {
+ cd "${srcdir}/gst-plugins-good-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \
+ --disable-static --enable-experimental \
+ --disable-schemas-install \
+ --disable-hal \
+ --with-package-name="GStreamer Good Plugins (Archlinux)" \
+ --with-package-origin="http://www.archlinux.org/"
+
+ make
+ sed -e 's/gst sys ext/gst/' -i Makefile
+}
+
+package_gstreamer0.10-good() {
+ depends=('gstreamer0.10-base>=0.10.32' 'bzip2')
+ pkgdesc="GStreamer Multimedia Framework Good plugin libraries"
+ conflicts=('gstreamer0.10-bad<=0.10.17')
+
+ cd "${srcdir}/gst-plugins-good-${pkgver}"
+ make GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 DESTDIR="${pkgdir}" install
+ rm -rf "${pkgdir}/etc/gconf"
+}
+
+package_gstreamer0.10-good-plugins() {
+ depends=("gstreamer0.10-good=${pkgver}" 'libavc1394' 'libiec61883' 'aalib' 'libshout' 'libdv' 'esound' 'flac' 'gconf' 'wavpack' 'taglib' 'libsoup-gnome' 'v4l-utils' 'libcaca' 'libpng' 'libjpeg' 'jack' 'libpulse')
+ pkgdesc="GStreamer Multimedia Framework Good Plugins (gst-plugins-good)"
+ groups=('gstreamer0.10-plugins')
+ replaces=('gstreamer0.10-aalib' 'gstreamer0.10-wavpack' 'gstreamer0.10-shout2' 'gstreamer0.10-taglib' 'gstreamer0.10-libcaca' 'gstreamer0.10-libpng' 'gstreamer0.10-jpeg' 'gstreamer0.10-cairo' 'gstreamer0.10-flac' 'gstreamer0.10-speex' 'gstreamer0.10-gdkpixbuf' 'gstreamer0.10-dv1394' 'gstreamer0.10-annodex' 'gstreamer0.10-gconf' 'gstreamer0.10-esd' 'gstreamer0.10-cdio' 'gstreamer0.10-dv' 'gstreamer0.10-soup' 'gstreamer0.10-pulse')
+ conflicts=('gstreamer0.10-aalib' 'gstreamer0.10-wavpack' 'gstreamer0.10-shout2' 'gstreamer0.10-taglib' 'gstreamer0.10-libcaca' 'gstreamer0.10-libpng' 'gstreamer0.10-jpeg' 'gstreamer0.10-cairo' 'gstreamer0.10-flac' 'gstreamer0.10-speex' 'gstreamer0.10-gdkpixbuf' 'gstreamer0.10-dv1394' 'gstreamer0.10-annodex' 'gstreamer0.10-gconf' 'gstreamer0.10-esd' 'gstreamer0.10-cdio' 'gstreamer0.10-dv' 'gstreamer0.10-bad-plugins<0.10.7' 'gstreamer0.10-soup' 'gstreamer0.10-pulse')
+ install=gstreamer0.10-good-plugins.install
+
+ cd "${srcdir}/gst-plugins-good-${pkgver}"
+ make -C sys DESTDIR="${pkgdir}" install || return 1
+ make -C ext GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/gconf/schemas"
+ install -m644 gconf/gstreamer-0.10.schemas "${pkgdir}/usr/share/gconf/schemas/gstreamer0.10-good-plugins.schemas" || return 1
+}
diff --git a/extra/gstreamer0.10-good/gstreamer0.10-good-plugins.install b/extra/gstreamer0.10-good/gstreamer0.10-good-plugins.install
new file mode 100644
index 000000000..e343beea5
--- /dev/null
+++ b/extra/gstreamer0.10-good/gstreamer0.10-good-plugins.install
@@ -0,0 +1,19 @@
+pkgname=gstreamer0.10-good-plugins
+
+post_install() {
+ usr/sbin/gconfpkg --install ${pkgname}
+}
+
+pre_upgrade() {
+ if [ -f usr/share/gconf/schemas/${pkgname}.schemas ]; then
+ pre_remove
+ fi
+}
+
+post_upgrade() {
+ post_install
+}
+
+pre_remove() {
+ usr/sbin/gconfpkg --uninstall ${pkgname}
+}
diff --git a/extra/gstreamer0.10-python/PKGBUILD b/extra/gstreamer0.10-python/PKGBUILD
new file mode 100644
index 000000000..a4e6c86ec
--- /dev/null
+++ b/extra/gstreamer0.10-python/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 109061 2011-02-05 16:24:50Z andyrtr $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=gstreamer0.10-python
+pkgver=0.10.21
+pkgrel=1
+pkgdesc="Python bindings for GStreamer 0.10"
+arch=('i686' 'x86_64')
+license=('LGPL')
+url="http://gstreamer.freedesktop.org/"
+depends=('pygobject>=2.20.0' 'gstreamer0.10-base>=0.10.32')
+makedepends=('pkgconfig')
+options=('!libtool')
+source=(http://gstreamer.freedesktop.org/src/gst-python/gst-python-${pkgver}.tar.bz2)
+md5sums=('31340ae3e877797a10d088a226d74b16')
+
+build() {
+ cd "${srcdir}/gst-python-${pkgver}"
+ export PYTHON=python2
+ sed -i -e 's%^#!.*env python$%#!/usr/bin/env python2%' examples/* gst/extend/*.py
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}/gst-python-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/gstreamer0.10-ugly/PKGBUILD b/extra/gstreamer0.10-ugly/PKGBUILD
new file mode 100644
index 000000000..ad3fe3b57
--- /dev/null
+++ b/extra/gstreamer0.10-ugly/PKGBUILD
@@ -0,0 +1,43 @@
+# $Id: PKGBUILD 117108 2011-03-28 19:26:10Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgbase=gstreamer0.10-ugly
+pkgname=('gstreamer0.10-ugly' 'gstreamer0.10-ugly-plugins')
+pkgver=0.10.17
+pkgrel=2
+arch=('i686' 'x86_64')
+license=('LGPL')
+makedepends=('pkgconfig' 'gstreamer0.10-base>=0.10.32' 'libdvdread' 'lame' 'libmpeg2' 'a52dec' 'libid3tag' 'libmad' 'libsidplay' 'libcdio' 'x264' 'opencore-amr')
+url="http://gstreamer.freedesktop.org/"
+options=(!libtool)
+source=(${url}/src/gst-plugins-ugly/gst-plugins-ugly-${pkgver}.tar.bz2)
+md5sums=('504ed6508c3a8f035a2002ed69d68506')
+
+build() {
+ cd "${srcdir}/gst-plugins-ugly-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \
+ --disable-static --enable-experimental \
+ --with-package-name="GStreamer Ugly Plugins (Archlinux)" \
+ --with-package-origin="http://www.archlinux.org/"
+ make
+ sed -e 's/gst-libs gst ext/gst-libs gst/' -i Makefile
+}
+
+package_gstreamer0.10-ugly() {
+ pkgdesc="GStreamer Multimedia Framework Ugly plugin libraries"
+ depends=('gstreamer0.10-base>=0.10.32')
+
+ cd "${srcdir}/gst-plugins-ugly-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
+
+package_gstreamer0.10-ugly-plugins() {
+ pkgdesc="GStreamer Multimedia Framework Ugly Plugins (gst-plugins-ugly)"
+ depends=("gstreamer0.10-ugly=${pkgver}" 'libdvdread' 'lame' 'libmpeg2' 'a52dec' 'libid3tag' 'libmad' 'libsidplay' 'libcdio' 'x264' 'opencore-amr')
+ groups=('gstreamer0.10-plugins')
+ replaces=('gstreamer0.10-dvdread' 'gstreamer0.10-mpeg2dec' 'gstreamer0.10-mad' 'gstreamer0.10-lame' 'gstreamer0.10-sidplay' 'gstreamer0.10-a52dec')
+ conflicts=('gstreamer0.10-dvdread' 'gstreamer0.10-mpeg2dec' 'gstreamer0.10-mad' 'gstreamer0.10-lame' 'gstreamer0.10-sidplay' 'gstreamer0.10-a52dec')
+
+ cd "${srcdir}/gst-plugins-ugly-${pkgver}"
+ make -C ext DESTDIR="${pkgdir}" install
+}
diff --git a/extra/gstreamer0.10/PKGBUILD b/extra/gstreamer0.10/PKGBUILD
new file mode 100644
index 000000000..b02a3633d
--- /dev/null
+++ b/extra/gstreamer0.10/PKGBUILD
@@ -0,0 +1,36 @@
+# $Id: PKGBUILD 109030 2011-02-05 14:26:26Z andyrtr $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=gstreamer0.10
+pkgver=0.10.32
+pkgrel=1
+pkgdesc="GStreamer Multimedia Framework"
+arch=('i686' 'x86_64')
+license=('LGPL')
+url="http://gstreamer.freedesktop.org/"
+depends=('libxml2>=2.7.8' 'glib2>=2.24.1')
+optdepends=('sh: for feedback script')
+makedepends=('intltool' 'pkgconfig' 'gtk-doc' 'gobject-introspection')
+options=('!libtool')
+source=(${url}/src/gstreamer/gstreamer-${pkgver}.tar.bz2)
+md5sums=('442bc3d37b8511a73379143e7531d726')
+
+build() {
+ cd "${srcdir}/gstreamer-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --libexecdir=/usr/lib \
+ --with-package-name="GStreamer (Archlinux)" \
+ --with-package-origin="http://www.archlinux.org/" \
+ --enable-gtk-doc --disable-static
+ make
+}
+
+package() {
+ cd "${srcdir}/gstreamer-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+
+ #Remove unversioned gst-* binaries to get rid of conflicts
+ cd "${pkgdir}/usr/bin"
+ for bins in `ls *-0.10`; do
+ rm -f ${bins/-0.10/}
+ done
+}
diff --git a/extra/gthumb/PKGBUILD b/extra/gthumb/PKGBUILD
new file mode 100644
index 000000000..8fb5fc720
--- /dev/null
+++ b/extra/gthumb/PKGBUILD
@@ -0,0 +1,34 @@
+# $Id: PKGBUILD 110931 2011-02-23 07:45:35Z eric $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Tobias Kieslich <tobias@justdreams.de>
+
+pkgname=gthumb
+pkgver=2.12.2
+pkgrel=2
+pkgdesc="Image browser and viewer for the GNOME Desktop"
+arch=(i686 x86_64)
+license=('GPL')
+url="http://gthumb.sourceforge.net/"
+depends=('desktop-file-utils' 'libunique>=1.1.2' 'gconf' 'exiv2' 'libsoup-gnome')
+makedepends=('intltool' 'gnome-doc-utils>=0.20.1' 'libsm' 'gstreamer0.10-base' 'brasero')
+optdepends=('gstreamer0.10-base: video support')
+options=('!libtool' '!emptydirs')
+install=gthumb.install
+source=(http://ftp.gnome.org/pub/GNOME/sources/${pkgname}/2.12/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('bce8111e4d699620ae0399963798ff25929df8c8546f4949e2a871b330277091')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --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 gthumb "${pkgdir}"/etc/gconf/schemas/*.schemas
+ rm -f "${pkgdir}"/etc/gconf/schemas/*.schemas
+}
diff --git a/extra/gthumb/gthumb.install b/extra/gthumb/gthumb.install
new file mode 100644
index 000000000..6046ebb6f
--- /dev/null
+++ b/extra/gthumb/gthumb.install
@@ -0,0 +1,24 @@
+pkgname=gthumb
+
+post_install() {
+ usr/sbin/gconfpkg --install ${pkgname}
+ update-desktop-database -q
+ 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() {
+ update-desktop-database -q
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
diff --git a/extra/gtk-engines/PKGBUILD b/extra/gtk-engines/PKGBUILD
new file mode 100644
index 000000000..d614c9def
--- /dev/null
+++ b/extra/gtk-engines/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 92895 2010-10-01 18:33:37Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=gtk-engines
+pkgver=2.20.2
+pkgrel=1
+pkgdesc="Theme engines for GTK+ 2"
+arch=(i686 x86_64)
+license=('GPL' 'LGPL')
+depends=('gtk2>=2.22.0')
+makedepends=('pkgconfig' 'intltool')
+options=('!libtool')
+url="http://live.gnome.org/GnomeArt"
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.20/${pkgname}-${pkgver}.tar.bz2)
+conflicts=('lighthouse-gtk2' 'clearlooks-gtk2')
+replaces=('lighthouse-gtk2')
+sha256sums=('15b680abca6c773ecb85253521fa100dd3b8549befeecc7595b10209d62d66b5')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --enable-animation
+ make
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/gtk-qt-engine/PKGBUILD b/extra/gtk-qt-engine/PKGBUILD
new file mode 100644
index 000000000..81cd26667
--- /dev/null
+++ b/extra/gtk-qt-engine/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 67433 2010-02-07 00:15:22Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Jake VanderKolk <jakevanderkolk@gmail.com>
+
+pkgname=gtk-qt-engine
+pkgver=1.1
+pkgrel=2
+pkgdesc="A GTK engine which makes your GTK2 Apps match your QT theme"
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://code.google.com/p/gtk-qt-engine/"
+depends=('libbonoboui' 'kdelibs')
+makedepends=('cmake>=2.4.7' 'automoc4' 'pkgconfig')
+source=(http://gtk-qt-engine.googlecode.com/files/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('de8048baef7dfe6c97cd97c463d66152')
+
+build() {
+ cd "${srcdir}/${pkgname}"
+
+ cmake . -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_SKIP_RPATH=ON \
+ -DCMAKE_{SHARED,MODULE,EXE}_LINKER_FLAGS='-Wl,--no-undefined -Wl,--as-needed' \
+ -DCMAKE_INSTALL_PREFIX=/usr
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/gtk-sharp-2/PKGBUILD b/extra/gtk-sharp-2/PKGBUILD
new file mode 100644
index 000000000..8b8e86e0b
--- /dev/null
+++ b/extra/gtk-sharp-2/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 72892 2010-03-21 15:11:50Z ibiru $
+# Maintainer: tobias <tobias@archlinux.org>
+
+pkgname=gtk-sharp-2
+pkgver=2.12.10
+pkgrel=1
+pkgdesc="gtk2 bindings for C#"
+arch=(i686 x86_64)
+license=('LGPL')
+url="http://gtk-sharp.sourceforge.net"
+depends=('mono>=2.4' 'libglade>=2.6.4' 'gtk2>=2.18.0')
+makedepends=('pkgconfig' 'monodoc')
+conflicts=('gtk#')
+options=('!libtool' '!makeflags')
+source=(http://ftp.gnome.org/pub/GNOME/sources/gtk-sharp/2.12/gtk-sharp-${pkgver}.tar.bz2)
+sha256sums=('aaa53f7916f25f0f83760b6ffbf0d465d13ecfa55aa645603f1ca876b7d0f770')
+
+build() {
+ # get rid of that .wapi errors; thanks to brice
+ export MONO_SHARED_DIR="${srcdir}/weird"
+ mkdir -p "${MONO_SHARED_DIR}"
+
+ cd "${srcdir}/gtk-sharp-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc --disable-static || return 1
+ make || return 1
+ make GACUTIL="/usr/bin/gacutil /root ${pkgdir}/usr/lib" \
+ DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/gtk-theme-switch2/PKGBUILD b/extra/gtk-theme-switch2/PKGBUILD
new file mode 100644
index 000000000..650dd50f7
--- /dev/null
+++ b/extra/gtk-theme-switch2/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id: PKGBUILD 75632 2010-04-02 01:24:28Z dgriffiths $
+# Contributor: Eddie Lozon <almostlucky@attbi.com>
+# Contributor: Jason Chu <jason@archlinux.org>
+# Contributor: Thayer Williams <thayer@archlinux.org>
+# Maintainer: Daniel J Griffiths <ghost1227@archlinux.us>
+
+pkgname=gtk-theme-switch2
+pkgver=2.1.0
+pkgrel=1
+pkgdesc="Gtk2 theme switcher"
+url="http://muhri.net/nav.php3?node=gts"
+arch=('i686' 'x86_64')
+license=('GPL2')
+depends=('gtk2')
+source=(http://ftp.de.debian.org/debian/pool/main/g/gtk-theme-switch/gtk-theme-switch_${pkgver}.orig.tar.gz)
+md5sums=('a9e7e62701cd4fba4d277dc210cd4317')
+
+build() {
+ cd ${srcdir}/gtk-theme-switch-${pkgver}
+
+ make || return 1
+}
+
+package() {
+ cd ${srcdir}/gtk-theme-switch-${pkgver}
+
+ install -Dm755 gtk-theme-switch2 \
+ ${pkgdir}/usr/bin/gtk-theme-switch2 || return 1
+ install -Dm644 gtk-theme-switch2.1 \
+ ${pkgdir}/usr/share/man/man1/gtk-theme-switch2.1 || return 1
+}
diff --git a/extra/gtk-vnc/PKGBUILD b/extra/gtk-vnc/PKGBUILD
new file mode 100644
index 000000000..9223f1ecd
--- /dev/null
+++ b/extra/gtk-vnc/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 103626 2010-12-22 00:02:22Z andrea $
+# Maintainer:
+# Contributor: Jan de Groot <jgc@archlinux.org>
+# Contributor: Allan McRae <mcrae_allan@hotmail.com>
+# Contributor: lp76 <l.peduto@gmail.com>
+
+pkgname=gtk-vnc
+pkgver=0.4.2
+pkgrel=2
+pkgdesc="A VNC viewer widget for GTK"
+arch=('i686' 'x86_64')
+url="http://live.gnome.org/gtk-vnc"
+license=('LGPL')
+depends=('gtk2' 'gobject-introspection')
+makedepends=('pkgconfig' 'intltool' 'pygtk' 'perl-text-csv')
+options=('!libtool' '!makeflags')
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/0.4/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('96e948b62984a1a3a32fd83793fb645c493c1bc93b303eb831ecafee01a956d2')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --with-python \
+ --with-examples --disable-static
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/gtk-xfce-engine/PKGBUILD b/extra/gtk-xfce-engine/PKGBUILD
new file mode 100644
index 000000000..bdf87e2cb
--- /dev/null
+++ b/extra/gtk-xfce-engine/PKGBUILD
@@ -0,0 +1,33 @@
+# $Id: PKGBUILD 112937 2011-03-07 19:48:01Z andyrtr $
+# Maintainer: AndyRTR <andyrtr@archlinux.org>
+# Contributor: tobias <tobias funnychar archlinux.org>
+
+pkgname=gtk-xfce-engine
+pkgver=2.8.1
+pkgrel=1
+pkgdesc="A port of Xfce engine to GTK+-2.0"
+arch=('i686' 'x86_64')
+license=('GPL2')
+url="http://www.xfce.org/"
+groups=('xfce4')
+depends=("gtk2>=2.14.7")
+makedepends=('pkgconfig')
+options=('!libtool')
+source=(http://archive.xfce.org/src/xfce/$pkgname/2.8/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('8a6527b61b0554cda11d06f66a567314')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --libexecdir=/usr/lib \
+ --localstatedir=/var \
+ --disable-static \
+ --disable-debug
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/gtk/PKGBUILD b/extra/gtk/PKGBUILD
new file mode 100644
index 000000000..4895b5942
--- /dev/null
+++ b/extra/gtk/PKGBUILD
@@ -0,0 +1,33 @@
+# $Id: PKGBUILD 62736 2010-01-11 15:31:11Z eric $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+# Contributor: Judd Vinet <jvinet@zeroflux.org>
+
+pkgname=gtk
+pkgver=1.2.10
+pkgrel=10
+pkgdesc="The GTK+ toolkit"
+arch=('i686' 'x86_64')
+url="http://www.gtk.org/"
+license=('LGPL')
+depends=('libxi' 'glib' 'sh')
+makedepends=('libxt')
+options=('!libtool')
+install=gtk.install
+source=(ftp://ftp.gtk.org/pub/gtk/v1.2/gtk+-$pkgver.tar.gz aclocal-fixes.patch)
+md5sums=('4d5cb2fc7fb7830e4af9747a36bfce20' 'c59d4906602d99a7468f7334b6fc3b4e')
+sha1sums=('a5adcb909257da01ae4d4761e1d41081d06e4d7c' 'b034e33efb85d27f3f3fb082c404e3b6ea79259f')
+
+build() {
+ cd "${srcdir}/gtk+-${pkgver}"
+ if [ "${CARCH}" = "x86_64" ]; then
+ rm config.guess config.sub
+ ln -s /usr/share/libtool/config/config.guess config.guess
+ ln -s /usr/share/libtool/config/config.sub config.sub
+ fi
+ patch -Np0 -i "${srcdir}/aclocal-fixes.patch" || return 1
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --mandir=/usr/share/man --infodir=/usr/share/info \
+ --with-xinput=xfree || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/gtk/aclocal-fixes.patch b/extra/gtk/aclocal-fixes.patch
new file mode 100644
index 000000000..dd2ffbd44
--- /dev/null
+++ b/extra/gtk/aclocal-fixes.patch
@@ -0,0 +1,11 @@
+--- gtk.m4.orig 2006-03-05 13:18:09.000000000 +0000
++++ gtk.m4 2006-03-05 13:18:20.000000000 +0000
+@@ -4,7 +4,7 @@
+ dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
+ dnl Test for GTK, and define GTK_CFLAGS and GTK_LIBS
+ dnl
+-AC_DEFUN(AM_PATH_GTK,
++AC_DEFUN([AM_PATH_GTK],
+ [dnl
+ dnl Get the cflags and libraries from the gtk-config script
+ dnl
diff --git a/extra/gtk/gtk.install b/extra/gtk/gtk.install
new file mode 100644
index 000000000..3c48904fd
--- /dev/null
+++ b/extra/gtk/gtk.install
@@ -0,0 +1,20 @@
+infodir=/usr/share/info
+filelist=(gdk.info.gz gtk.info.gz)
+
+post_install() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info --delete $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
diff --git a/extra/gtk2-perl/PKGBUILD b/extra/gtk2-perl/PKGBUILD
new file mode 100644
index 000000000..c684e5578
--- /dev/null
+++ b/extra/gtk2-perl/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 104912 2011-01-05 15:05:46Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Sarah Hay <sarah@archlinux.org>
+
+pkgname=gtk2-perl
+_realname=Gtk2
+pkgver=1.222
+pkgrel=2
+pkgdesc="Gtk2-Perl allows Perl developers to write GTK+ 2.x applications."
+arch=(i686 x86_64)
+license=('LGPL')
+url="http://gtk2-perl.sourceforge.net/"
+makedepends=('perl-extutils-pkgconfig' 'perl-extutils-depends')
+depends=('gtk2' 'pango-perl')
+options=('!emptydirs')
+source=(http://downloads.sourceforge.net/sourceforge/gtk2-perl/${_realname}-${pkgver}.tar.gz)
+md5sums=('8f8a170b33dc2cf4e69769e97c05185a')
+
+build() {
+ cd "${srcdir}/${_realname}-${pkgver}"
+ # install module in vendor directories.
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+ make install DESTDIR="${pkgdir}"
+}
diff --git a/extra/gtk2/PKGBUILD b/extra/gtk2/PKGBUILD
new file mode 100644
index 000000000..0526600ea
--- /dev/null
+++ b/extra/gtk2/PKGBUILD
@@ -0,0 +1,40 @@
+# $Id: PKGBUILD 99604 2010-11-15 19:29:19Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=gtk2
+pkgver=2.22.1
+pkgrel=1
+pkgdesc="The GTK+ Toolkit (v2)"
+arch=('i686' 'x86_64')
+url="http://www.gtk.org/"
+install=gtk2.install
+depends=('atk>=1.30.0' 'pango>=1.28.0' 'libxcursor' 'libxinerama' 'libxrandr>=1.3.0' 'libxi>=1.3' 'libxcomposite' 'libxdamage' 'heimdal>=1.3.2' 'gnutls>=2.8.6' 'shared-mime-info' 'cairo>=1.10.0' 'libcups>=1.4.4' 'gdk-pixbuf2>=2.22.1')
+makedepends=('gtk-doc' 'gobject-introspection')
+replaces=('gtkprint-cups' 'gail')
+conflicts=('gtkprint-cups' 'gail')
+provides=('gail=1.22.3')
+options=('!libtool' '!docs')
+backup=(etc/gtk-2.0/gtkrc)
+license=('LGPL')
+source=(http://ftp.gnome.org/pub/gnome/sources/gtk+/2.22/gtk+-${pkgver}.tar.bz2
+ xid-collision-debug.patch old-icon-symlinks.patch)
+sha256sums=('965bc124f0d25087c4cb2a64cbfd7e4f896e05be8d560fbba68dd8685ba24d07'
+ 'd758bb93e59df15a4ea7732cf984d1c3c19dff67c94b957575efea132b8fe558'
+ '1298e4103f71d0304378f1e7503011150f6f68398ae8ebae5522a48feaea7c0d')
+
+build() {
+ cd "${srcdir}/gtk+-${pkgver}"
+ patch -Np1 -i "${srcdir}/xid-collision-debug.patch"
+ patch -Np1 -i "${srcdir}/old-icon-symlinks.patch"
+
+ CXX=/bin/false ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --with-xinput=yes
+ make
+ make DESTDIR="${pkgdir}" install
+
+ sed -i "s#env python#env python2#" $pkgdir/usr/bin/gtk-builder-convert
+
+ echo 'gtk-fallback-icon-theme = "gnome"' > "${pkgdir}/etc/gtk-2.0/gtkrc"
+}
diff --git a/extra/gtk2/gtk2.install b/extra/gtk2/gtk2.install
new file mode 100644
index 000000000..4e2b72f1b
--- /dev/null
+++ b/extra/gtk2/gtk2.install
@@ -0,0 +1,16 @@
+post_install() {
+ usr/bin/gtk-query-immodules-2.0 > etc/gtk-2.0/gtk.immodules
+}
+
+pre_upgrade() {
+ pre_remove
+}
+
+post_upgrade() {
+ post_install
+}
+
+pre_remove() {
+ rm -f etc/gtk-2.0/gtk.immodules &>/dev/null
+ rm -f etc/gtk-2.0/gdk-pixbuf.loaders &>/dev/null
+}
diff --git a/extra/gtk2/old-icon-symlinks.patch b/extra/gtk2/old-icon-symlinks.patch
new file mode 100644
index 000000000..046dd4df4
--- /dev/null
+++ b/extra/gtk2/old-icon-symlinks.patch
@@ -0,0 +1,269 @@
+diff -aur gtk+-2.22.0.orig//gtk/Makefile.in gtk+-2.22.0/gtk/Makefile.in
+--- gtk+-2.22.0.orig//gtk/Makefile.in 2010-10-15 04:57:50.810006145 +0800
++++ gtk+-2.22.0/gtk/Makefile.in 2010-10-15 05:13:49.083339478 +0800
+@@ -1598,7 +1598,172 @@
+ stock-icons/24/folder-remote.png \
+ stock-icons/24/user-home.png \
+ stock-icons/24/user-desktop.png \
+- stock-icons/24/text-x-generic.png
++ stock-icons/24/text-x-generic.png \
++ stock-icons/16/gtk-quit.png \
++ stock-icons/16/gtk-info.png \
++ stock-icons/16/gtk-file.png \
++ stock-icons/16/gtk-open.png \
++ stock-icons/16/gtk-print-preview.png \
++ stock-icons/16/gtk-print.png \
++ stock-icons/16/gtk-properties.png \
++ stock-icons/16/gtk-revert-to-saved-ltr.png \
++ stock-icons/16/gtk-revert-to-saved-rtl.png \
++ stock-icons/16/gtk-save-as.png \
++ stock-icons/16/gtk-new.png \
++ stock-icons/16/gtk-harddisk.png \
++ stock-icons/16/gtk-clear.png \
++ stock-icons/16/gtk-copy.png \
++ stock-icons/16/gtk-cut.png \
++ stock-icons/16/gtk-delete.png \
++ stock-icons/16/gtk-find-and-replace.png \
++ stock-icons/16/gtk-find.png \
++ stock-icons/16/gtk-paste.png \
++ stock-icons/16/gtk-redo-ltr.png \
++ stock-icons/16/gtk-redo-rtl.png \
++ stock-icons/16/gtk-select-all.png \
++ stock-icons/16/gtk-undo-ltr.png \
++ stock-icons/16/gtk-undo-rtl.png \
++ stock-icons/16/gtk-directory.png \
++ stock-icons/16/gtk-unindent-ltr.png \
++ stock-icons/16/gtk-unindent-rtl.png \
++ stock-icons/16/gtk-indent-ltr.png \
++ stock-icons/16/gtk-indent-rtl.png \
++ stock-icons/16/gtk-justify-center.png \
++ stock-icons/16/gtk-justify-fill.png \
++ stock-icons/16/gtk-justify-left.png \
++ stock-icons/16/gtk-justify-right.png \
++ stock-icons/16/gtk-bold.png \
++ stock-icons/16/gtk-italic.png \
++ stock-icons/16/gtk-strikethrough.png \
++ stock-icons/16/gtk-underline.png \
++ stock-icons/16/gtk-goto-bottom.png \
++ stock-icons/16/gtk-go-down.png \
++ stock-icons/16/gtk-goto-first-ltr.png \
++ stock-icons/16/gtk-home.png \
++ stock-icons/16/gtk-jump-to-ltr.png \
++ stock-icons/16/gtk-jump-to-rtl.png \
++ stock-icons/16/gtk-goto-last-ltr.png \
++ stock-icons/16/gtk-go-forward-ltr.png \
++ stock-icons/16/gtk-go-back-ltr.png \
++ stock-icons/16/gtk-goto-top.png \
++ stock-icons/16/gtk-go-up.png \
++ stock-icons/16/gtk-about.png \
++ stock-icons/16/gtk-help.png \
++ stock-icons/16/gtk-missing-image.png \
++ stock-icons/16/gtk-add.png \
++ stock-icons/16/gtk-remove.png \
++ stock-icons/16/gtk-floppy.png \
++ stock-icons/16/gtk-cdrom.png \
++ stock-icons/16/gtk-media-pause.png \
++ stock-icons/16/gtk-media-play-ltr.png \
++ stock-icons/16/gtk-media-play-rtl.png \
++ stock-icons/16/gtk-media-stop.png \
++ stock-icons/16/gtk-media-record.png \
++ stock-icons/16/gtk-media-rewind-ltr.png \
++ stock-icons/16/gtk-media-forward-ltr.png \
++ stock-icons/16/gtk-media-previous-ltr.png \
++ stock-icons/16/gtk-media-next-ltr.png \
++ stock-icons/16/gtk-network.png \
++ stock-icons/16/gtk-print-error.png \
++ stock-icons/16/gtk-print-report.png \
++ stock-icons/16/gtk-print-paused.png \
++ stock-icons/16/gtk-print-warning.png \
++ stock-icons/16/gtk-stop.png \
++ stock-icons/16/gtk-execute.png \
++ stock-icons/16/gtk-spell-check.png \
++ stock-icons/16/gtk-fullscreen.png \
++ stock-icons/16/gtk-refresh.png \
++ stock-icons/16/gtk-leave-fullscreen.png \
++ stock-icons/16/gtk-sort-ascending.png \
++ stock-icons/16/gtk-sort-descending.png \
++ stock-icons/16/gtk-close.png \
++ stock-icons/16/gtk-zoom-fit.png \
++ stock-icons/16/gtk-zoom-in.png \
++ stock-icons/16/gtk-zoom-100.png \
++ stock-icons/16/gtk-zoom-out.png \
++ stock-icons/24/gtk-quit.png \
++ stock-icons/24/gtk-info.png \
++ stock-icons/24/gtk-file.png \
++ stock-icons/24/gtk-open.png \
++ stock-icons/24/gtk-print-preview.png \
++ stock-icons/24/gtk-print.png \
++ stock-icons/24/gtk-properties.png \
++ stock-icons/24/gtk-revert-to-saved-ltr.png \
++ stock-icons/24/gtk-revert-to-saved-rtl.png \
++ stock-icons/24/gtk-save-as.png \
++ stock-icons/24/gtk-new.png \
++ stock-icons/24/gtk-harddisk.png \
++ stock-icons/24/gtk-clear.png \
++ stock-icons/24/gtk-copy.png \
++ stock-icons/24/gtk-cut.png \
++ stock-icons/24/gtk-delete.png \
++ stock-icons/24/gtk-find-and-replace.png \
++ stock-icons/24/gtk-find.png \
++ stock-icons/24/gtk-paste.png \
++ stock-icons/24/gtk-redo-ltr.png \
++ stock-icons/24/gtk-redo-rtl.png \
++ stock-icons/24/gtk-select-all.png \
++ stock-icons/24/gtk-undo-ltr.png \
++ stock-icons/24/gtk-undo-rtl.png \
++ stock-icons/24/gtk-directory.png \
++ stock-icons/24/gtk-unindent-ltr.png \
++ stock-icons/24/gtk-unindent-rtl.png \
++ stock-icons/24/gtk-indent-ltr.png \
++ stock-icons/24/gtk-indent-rtl.png \
++ stock-icons/24/gtk-justify-center.png \
++ stock-icons/24/gtk-justify-fill.png \
++ stock-icons/24/gtk-justify-left.png \
++ stock-icons/24/gtk-justify-right.png \
++ stock-icons/24/gtk-bold.png \
++ stock-icons/24/gtk-italic.png \
++ stock-icons/24/gtk-strikethrough.png \
++ stock-icons/24/gtk-underline.png \
++ stock-icons/24/gtk-goto-bottom.png \
++ stock-icons/24/gtk-go-down.png \
++ stock-icons/24/gtk-goto-first-ltr.png \
++ stock-icons/24/gtk-home.png \
++ stock-icons/24/gtk-jump-to-ltr.png \
++ stock-icons/24/gtk-jump-to-rtl.png \
++ stock-icons/24/gtk-goto-last-ltr.png \
++ stock-icons/24/gtk-go-forward-ltr.png \
++ stock-icons/24/gtk-go-back-ltr.png \
++ stock-icons/24/gtk-goto-top.png \
++ stock-icons/24/gtk-go-up.png \
++ stock-icons/24/gtk-about.png \
++ stock-icons/24/gtk-help.png \
++ stock-icons/24/gtk-missing-image.png \
++ stock-icons/24/gtk-add.png \
++ stock-icons/24/gtk-remove.png \
++ stock-icons/24/gtk-floppy.png \
++ stock-icons/24/gtk-cdrom.png \
++ stock-icons/24/gtk-media-pause.png \
++ stock-icons/24/gtk-media-play-ltr.png \
++ stock-icons/24/gtk-media-play-rtl.png \
++ stock-icons/24/gtk-media-stop.png \
++ stock-icons/24/gtk-media-record.png \
++ stock-icons/24/gtk-media-rewind-ltr.png \
++ stock-icons/24/gtk-media-forward-ltr.png \
++ stock-icons/24/gtk-media-previous-ltr.png \
++ stock-icons/24/gtk-media-next-ltr.png \
++ stock-icons/24/gtk-network.png \
++ stock-icons/24/gtk-print-error.png \
++ stock-icons/24/gtk-print-report.png \
++ stock-icons/24/gtk-print-paused.png \
++ stock-icons/24/gtk-print-warning.png \
++ stock-icons/24/gtk-stop.png \
++ stock-icons/24/gtk-execute.png \
++ stock-icons/24/gtk-spell-check.png \
++ stock-icons/24/gtk-fullscreen.png \
++ stock-icons/24/gtk-refresh.png \
++ stock-icons/24/gtk-leave-fullscreen.png \
++ stock-icons/24/gtk-sort-ascending.png \
++ stock-icons/24/gtk-sort-descending.png \
++ stock-icons/24/gtk-close.png \
++ stock-icons/24/gtk-zoom-fit.png \
++ stock-icons/24/gtk-zoom-in.png \
++ stock-icons/24/gtk-zoom-100.png \
++ stock-icons/24/gtk-zoom-out.png \
++ stock-icons/48/gtk-dialog-error.png
+
+ @CROSS_COMPILING_FALSE@gtk_update_icon_cache_program = \
+ @CROSS_COMPILING_FALSE@ ./gtk-update-icon-cache
+@@ -2869,7 +3034,91 @@
+ && $(LN_S) folder.png user-desktop.png \
+ && $(RM) text-x-generic.png \
+ && $(LN_S) document-x-generic.png text-x-generic.png \
++ && $(LN_S) application-exit.png gtk-quit.png \
++ && $(LN_S) dialog-information.png gtk-info.png \
++ && $(LN_S) document-new.png gtk-file.png \
++ && $(LN_S) document-open.png gtk-open.png \
++ && $(LN_S) document-print-preview.png gtk-print-preview.png \
++ && $(LN_S) document-print.png gtk-print.png \
++ && $(LN_S) document-properties.png gtk-properties.png \
++ && $(LN_S) document-revert-ltr.png gtk-revert-to-saved-ltr.png \
++ && $(LN_S) document-revert-rtl.png gtk-revert-to-saved-rtl.png \
++ && $(LN_S) document-save-as.png gtk-save-as.png \
++ && $(LN_S) document-x-generic.png gtk-new.png \
++ && $(LN_S) drive-harddisk.png gtk-harddisk.png \
++ && $(LN_S) edit-clear.png gtk-clear.png \
++ && $(LN_S) edit-copy.png gtk-copy.png \
++ && $(LN_S) edit-cut.png gtk-cut.png \
++ && $(LN_S) edit-delete.png gtk-delete.png \
++ && $(LN_S) edit-find-replace.png gtk-find-and-replace.png \
++ && $(LN_S) edit-find.png gtk-find.png \
++ && $(LN_S) edit-paste.png gtk-paste.png \
++ && $(LN_S) edit-redo-ltr.png gtk-redo-ltr.png \
++ && $(LN_S) edit-redo-rtl.png gtk-redo-rtl.png \
++ && $(LN_S) edit-select-all.png gtk-select-all.png \
++ && $(LN_S) edit-undo-ltr.png gtk-undo-ltr.png \
++ && $(LN_S) edit-undo-rtl.png gtk-undo-rtl.png \
++ && $(LN_S) folder.png gtk-directory.png \
++ && $(LN_S) format-indent-less-ltr.png gtk-unindent-ltr.png \
++ && $(LN_S) format-indent-less-rtl.png gtk-unindent-rtl.png \
++ && $(LN_S) format-indent-more-ltr.png gtk-indent-ltr.png \
++ && $(LN_S) format-indent-more-rtl.png gtk-indent-rtl.png \
++ && $(LN_S) format-justify-center.png gtk-justify-center.png \
++ && $(LN_S) format-justify-fill.png gtk-justify-fill.png \
++ && $(LN_S) format-justify-left.png gtk-justify-left.png \
++ && $(LN_S) format-justify-right.png gtk-justify-right.png \
++ && $(LN_S) format-text-bold.png gtk-bold.png \
++ && $(LN_S) format-text-italic.png gtk-italic.png \
++ && $(LN_S) format-text-strikethrough.png gtk-strikethrough.png \
++ && $(LN_S) format-text-underline.png gtk-underline.png \
++ && $(LN_S) go-bottom.png gtk-goto-bottom.png \
++ && $(LN_S) go-down.png gtk-go-down.png \
++ && $(LN_S) go-first-ltr.png gtk-goto-first-ltr.png \
++ && $(LN_S) go-home.png gtk-home.png \
++ && $(LN_S) go-jump-ltr.png gtk-jump-to-ltr.png \
++ && $(LN_S) go-jump-rtl.png gtk-jump-to-rtl.png \
++ && $(LN_S) go-last-ltr.png gtk-goto-last-ltr.png \
++ && $(LN_S) go-next-ltr.png gtk-go-forward-ltr.png \
++ && $(LN_S) go-previous-ltr.png gtk-go-back-ltr.png \
++ && $(LN_S) go-top.png gtk-goto-top.png \
++ && $(LN_S) go-up.png gtk-go-up.png \
++ && $(LN_S) help-about.png gtk-about.png \
++ && $(LN_S) help-contents.png gtk-help.png \
++ && $(LN_S) image-missing.png gtk-missing-image.png \
++ && $(LN_S) list-add.png gtk-add.png \
++ && $(LN_S) list-remove.png gtk-remove.png \
++ && $(LN_S) media-floppy.png gtk-floppy.png \
++ && $(LN_S) media-optical.png gtk-cdrom.png \
++ && $(LN_S) media-playback-pause.png gtk-media-pause.png \
++ && $(LN_S) media-playback-start-ltr.png gtk-media-play-ltr.png \
++ && $(LN_S) media-playback-start-rtl.png gtk-media-play-rtl.png \
++ && $(LN_S) media-playback-stop.png gtk-media-stop.png \
++ && $(LN_S) media-record.png gtk-media-record.png \
++ && $(LN_S) media-seek-backward-ltr.png gtk-media-rewind-ltr.png \
++ && $(LN_S) media-seek-forward-ltr.png gtk-media-forward-ltr.png \
++ && $(LN_S) media-skip-backward-ltr.png gtk-media-previous-ltr.png \
++ && $(LN_S) media-skip-forward-ltr.png gtk-media-next-ltr.png \
++ && $(LN_S) network-idle.png gtk-network.png \
++ && $(LN_S) printer-error.png gtk-print-error.png \
++ && $(LN_S) printer-info.png gtk-print-report.png \
++ && $(LN_S) printer-paused.png gtk-print-paused.png \
++ && $(LN_S) printer-warning.png gtk-print-warning.png \
++ && $(LN_S) process-stop.png gtk-stop.png \
++ && $(LN_S) system-run.png gtk-execute.png \
++ && $(LN_S) tools-check-spelling.png gtk-spell-check.png \
++ && $(LN_S) view-fullscreen.png gtk-fullscreen.png \
++ && $(LN_S) view-refresh.png gtk-refresh.png \
++ && $(LN_S) view-restore.png gtk-leave-fullscreen.png \
++ && $(LN_S) view-sort-ascending.png gtk-sort-ascending.png \
++ && $(LN_S) view-sort-descending.png gtk-sort-descending.png \
++ && $(LN_S) window-close.png gtk-close.png \
++ && $(LN_S) zoom-fit-best.png gtk-zoom-fit.png \
++ && $(LN_S) zoom-in.png gtk-zoom-in.png \
++ && $(LN_S) zoom-original.png gtk-zoom-100.png \
++ && $(LN_S) zoom-out.png gtk-zoom-out.png \
+ ) done \
++ && (cd stock-icons/48 \
++ && $(LN_S) dialog-error.png gtk-dialog-error.png) \
+ && touch stamp-icons
+
+ gtkbuiltincache.h: @REBUILD@ stamp-icons
diff --git a/extra/gtk2/xid-collision-debug.patch b/extra/gtk2/xid-collision-debug.patch
new file mode 100644
index 000000000..d61238c3b
--- /dev/null
+++ b/extra/gtk2/xid-collision-debug.patch
@@ -0,0 +1,15 @@
+--- gtk+-2.18.3/gdk/x11/gdkxid.c 2009-06-19 04:59:18.000000000 +0200
++++ gtk+-2.18.3/gdk/x11/gdkxid.c.new 2009-07-22 11:30:12.000000000 +0200
+@@ -56,10 +56,10 @@
+ if (!display_x11->xid_ht)
+ display_x11->xid_ht = g_hash_table_new ((GHashFunc) gdk_xid_hash,
+ (GEqualFunc) gdk_xid_equal);
+-
++/*
+ if (g_hash_table_lookup (display_x11->xid_ht, xid))
+ g_warning ("XID collision, trouble ahead");
+-
++*/
+ g_hash_table_insert (display_x11->xid_ht, xid, data);
+ }
+
diff --git a/extra/gtkglext/PKGBUILD b/extra/gtkglext/PKGBUILD
new file mode 100644
index 000000000..a8a67f7fe
--- /dev/null
+++ b/extra/gtkglext/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 78325 2010-04-20 22:14:28Z ibiru $
+# Maintainer: damir <damir@archlinux.org>
+# Contributor: Ben <ben@benmazer.net>
+
+pkgname=gtkglext
+pkgver=1.2.0
+pkgrel=5
+pkgdesc="opengl extensions for gtk2"
+arch=('i686' 'x86_64')
+url="http://gtkglext.sourceforge.net/"
+license=('LGPL')
+depends=('gtk2' 'mesa' 'libxmu')
+makedepends=('gcc')
+options=('!libtool')
+source=("http://downloads.sourceforge.net/sourceforge/gtkglext/${pkgname}-${pkgver}.tar.bz2"
+ gtk2.20.patch)
+md5sums=('ed7ba24ce06a8630c07f2d0ee5f04ab4'
+ 'e5a87ec3f2d0e616c6f32f90c3f7237f')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ patch -Np1 -i ${srcdir}/gtk2.20.patch || return 1
+ autoconf --force || return 1
+ ./configure --prefix=/usr || return 1
+ make || return 1
+ make DESTDIR=${pkgdir} install || return 1
+}
diff --git a/extra/gtkglext/gtk2.20.patch b/extra/gtkglext/gtk2.20.patch
new file mode 100644
index 000000000..54b34c11e
--- /dev/null
+++ b/extra/gtkglext/gtk2.20.patch
@@ -0,0 +1,77 @@
+diff -Nur gtkglext-1.2.0.orig/gtk/gtkglwidget.c gtkglext-1.2.0/gtk/gtkglwidget.c
+--- gtkglext-1.2.0.orig/gtk/gtkglwidget.c 2004-02-20 11:38:36.000000000 +0200
++++ gtkglext-1.2.0/gtk/gtkglwidget.c 2010-04-20 19:29:42.941917275 +0300
+@@ -127,7 +127,7 @@
+ * Synchronize OpenGL and window resizing request streams.
+ */
+
+- if (GTK_WIDGET_REALIZED (widget) && private->is_realized)
++ if (gtk_widget_get_realized (widget) && private->is_realized)
+ {
+ gldrawable = gdk_window_get_gl_drawable (widget->window);
+ gdk_gl_drawable_wait_gdk (gldrawable);
+@@ -154,7 +154,7 @@
+ * Remove OpenGL-capability from widget->window.
+ */
+
+- if (GTK_WIDGET_REALIZED (widget))
++ if (gtk_widget_get_realized (widget))
+ gdk_window_unset_gl_capability (widget->window);
+
+ private->is_realized = FALSE;
+@@ -174,7 +174,7 @@
+ */
+
+ toplevel = gtk_widget_get_toplevel (widget);
+- if (GTK_WIDGET_TOPLEVEL (toplevel) && !GTK_WIDGET_REALIZED (toplevel))
++ if (gtk_widget_is_toplevel (toplevel) && !gtk_widget_get_realized (toplevel))
+ {
+ GTK_GL_NOTE (MISC,
+ g_message (" - Install colormap to the top-level window."));
+@@ -194,7 +194,7 @@
+ * Set a background of "None" on window to avoid AIX X server crash.
+ */
+
+- if (GTK_WIDGET_REALIZED (widget))
++ if (gtk_widget_get_realized (widget))
+ {
+ GTK_GL_NOTE (MISC,
+ g_message (" - window->bg_pixmap = %p",
+@@ -250,8 +250,8 @@
+ GTK_GL_NOTE_FUNC ();
+
+ g_return_val_if_fail (GTK_IS_WIDGET (widget), FALSE);
+- g_return_val_if_fail (!GTK_WIDGET_NO_WINDOW (widget), FALSE);
+- g_return_val_if_fail (!GTK_WIDGET_REALIZED (widget), FALSE);
++ g_return_val_if_fail (gtk_widget_get_has_window (widget), FALSE);
++ g_return_val_if_fail (!gtk_widget_get_realized (widget), FALSE);
+ g_return_val_if_fail (GDK_IS_GL_CONFIG (glconfig), FALSE);
+
+ /*
+@@ -432,7 +432,7 @@
+ GTK_GL_NOTE_FUNC ();
+
+ g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL);
+- g_return_val_if_fail (GTK_WIDGET_REALIZED (widget), NULL);
++ g_return_val_if_fail (gtk_widget_get_realized (widget), NULL);
+
+ gldrawable = gdk_window_get_gl_drawable (widget->window);
+ if (gldrawable == NULL)
+@@ -474,7 +474,7 @@
+ GLWidgetPrivate *private;
+
+ g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL);
+- g_return_val_if_fail (GTK_WIDGET_REALIZED (widget), NULL);
++ g_return_val_if_fail (gtk_widget_get_realized (widget), NULL);
+
+ private = g_object_get_qdata (G_OBJECT (widget), quark_gl_private);
+ if (private == NULL)
+@@ -501,7 +501,7 @@
+ gtk_widget_get_gl_window (GtkWidget *widget)
+ {
+ g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL);
+- g_return_val_if_fail (GTK_WIDGET_REALIZED (widget), NULL);
++ g_return_val_if_fail (gtk_widget_get_realized (widget), NULL);
+
+ return gdk_window_get_gl_window (widget->window);
+ }
diff --git a/extra/gtkglext/gtkglext-1.0.6-pangox.patch b/extra/gtkglext/gtkglext-1.0.6-pangox.patch
new file mode 100644
index 000000000..8cd589ed6
--- /dev/null
+++ b/extra/gtkglext/gtkglext-1.0.6-pangox.patch
@@ -0,0 +1,30 @@
+--- gtkglext-1.0.6/configure.in 2005-09-10 16:45:06.000000000 +0200
++++ gtkglext-1.0.6.az/configure.in 2005-09-10 16:46:01.000000000 +0200
+@@ -59,6 +59,10 @@
+ m4_define([pango_pkg], [pango])
+ m4_define([pango_required_version], [1.0.0])
+
++# Pangox
++m4_define([pangox_pkg], [pangox])
++m4_define([pangox_required_version], [1.0.0])
++
+ # PangoFT2
+ m4_define([pangoft2_pkg], [pangoft2])
+ m4_define([pangoft2_required_version], [1.0.0])
+@@ -345,6 +349,7 @@
+ gtk_pkg >= gtk_required_version \
+ gdk_pkg >= gdk_required_version \
+ pango_pkg >= pango_required_version \
++pangox_pkg >= pango_required_version \
+ gmodule_pkg >= gmodule_required_version \
+ ])
+
+@@ -789,7 +794,7 @@
+ # CFLAGS and LIBS
+ ##################################################
+
+-GDKGLEXT_PACKAGES="gdk_pkg pango_pkg gmodule_pkg"
++GDKGLEXT_PACKAGES="gdk_pkg pango_pkg pangox_pkg gmodule_pkg"
+ GDKGLEXT_EXTRA_CFLAGS="$GL_CFLAGS $GDKGLEXT_WIN_CFLAGS"
+ GDKGLEXT_EXTRA_LIBS="$GL_LIBS $GDKGLEXT_WIN_LIBS"
+ GDKGLEXT_DEP_CFLAGS="$GDKGLEXT_EXTRA_CFLAGS `$PKG_CONFIG --cflags $GDKGLEXT_PACKAGES`"
diff --git a/extra/gtkglextmm/PKGBUILD b/extra/gtkglextmm/PKGBUILD
new file mode 100644
index 000000000..a0e738c96
--- /dev/null
+++ b/extra/gtkglextmm/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 47716 2009-07-25 16:36:45Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Bastien Bouclet <bastien.bouclet@gmail.com>
+
+pkgname=gtkglextmm
+pkgver=1.2.0
+pkgrel=4
+pkgdesc="Cpp C++ bindings for gtkglext"
+arch=('i686' 'x86_64')
+url="http://gtkglext.sourceforge.net/"
+depends=('gtkmm>=2.10.1' 'gtkglext')
+makedepends=('pkgconfig')
+options=('!libtool')
+license=('GPL')
+source=(http://downloads.sourceforge.net/sourceforge/gtkglext/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('27c05f4d45c5fd07b6fb0f044add3056')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr \
+ --disable-gtkglext-test
+ make || return 1
+ make DESTDIR=${pkgdir}/ install
+}
diff --git a/extra/gtkhtml/PKGBUILD b/extra/gtkhtml/PKGBUILD
new file mode 100644
index 000000000..c92e9fcaf
--- /dev/null
+++ b/extra/gtkhtml/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 109846 2011-02-13 13:40:17Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=gtkhtml
+pkgver=3.32.2
+pkgrel=2
+pkgdesc="A lightweight HTML renderer/editor widget for GTK2"
+arch=(i686 x86_64)
+license=('GPL')
+depends=('gconf' 'gtk2' 'gnome-icon-theme' 'enchant' 'iso-codes' 'libsoup')
+makedepends=('intltool')
+url="http://www.gnome.org"
+options=('!libtool')
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/3.32/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('8746053cf709e1de37c7ac775ab1364ddda4b75167660ed7f98a237b3797e39f')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --libexecdir=/usr/lib/gtkhtml \
+ --localstatedir=/var --disable-static \
+ --disable-deprecated-warning-flags
+ make
+ make DESTDIR="${pkgdir}" install
+
+ rm -f "${pkgdir}/usr/bin/gtkhtml-editor-test"
+}
diff --git a/extra/gtkimageview/PKGBUILD b/extra/gtkimageview/PKGBUILD
new file mode 100644
index 000000000..1b90282d8
--- /dev/null
+++ b/extra/gtkimageview/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 60213 2009-12-02 11:47:56Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Jan Blazek <appolito@gmail.com>
+# Contributor: Jose Valecillos <valecillosjg (at) gmail (dot) com>
+
+pkgname=gtkimageview
+pkgver=1.6.4
+pkgrel=1
+pkgdesc="Simple image viewer widget for GTK"
+arch=('i686' 'x86_64')
+url="http://trac.bjourne.webfactional.com/"
+license=('LGPL2.1')
+depends=('gtk2')
+makedepends=('pkgconfig')
+options=('!libtool')
+source=(http://trac.bjourne.webfactional.com/attachment/wiki/WikiStart/${pkgname}-${pkgver}.tar.gz?format=raw)
+md5sums=('501367b3f50e69a12208dc9c6ad00b18')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ ./configure --prefix=/usr \
+ --disable-static || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+ rm -rf "${pkgdir}/usr/share"
+}
diff --git a/extra/gtkmathview/PKGBUILD b/extra/gtkmathview/PKGBUILD
new file mode 100644
index 000000000..58e10f4df
--- /dev/null
+++ b/extra/gtkmathview/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 42290 2009-06-12 15:51:28Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Jan de Groot <jgc@archlinux.org>
+
+pkgname=gtkmathview
+pkgver=0.8.0
+pkgrel=2
+pkgdesc="C++ rendering engine for MathML documents"
+arch=('i686' 'x86_64')
+url="http://helm.cs.unibo.it/mml-widget/"
+license=('GPL')
+depends=('popt' 'gtk2' 't1lib' 'gmetadom>=0.2.6')
+options=('!libtool')
+source=(http://helm.cs.unibo.it/mml-widget/sources/${pkgname}-${pkgver}.tar.gz
+ gtkmathview-0.8.0-gcc44.patch
+ gtkmathview-0.8.0-cond-t1.patch)
+md5sums=('b53564e553728d4b69f7d366dfeb5299'
+ '9fd261db865336c89ebf0f3545af9bc4'
+ 'a79a27e00908e75712bc9453b669fe61')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ patch -Np1 -i ${srcdir}/gtkmathview-0.8.0-gcc44.patch || return 1
+ patch -Np1 -i ${srcdir}/gtkmathview-0.8.0-cond-t1.patch || return 1
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc
+ make || return 1
+ make DESTDIR=${pkgdir}/ install
+}
+
diff --git a/extra/gtkmathview/gtkmathview-0.8.0-cond-t1.patch b/extra/gtkmathview/gtkmathview-0.8.0-cond-t1.patch
new file mode 100644
index 000000000..9f134745d
--- /dev/null
+++ b/extra/gtkmathview/gtkmathview-0.8.0-cond-t1.patch
@@ -0,0 +1,22 @@
+diff --exclude-from=/home/dang/.scripts/diffrc -up -ruN gtkmathview-0.8.0.old/src/backend/ps/PS_StreamRenderingContext.cc gtkmathview-0.8.0/src/backend/ps/PS_StreamRenderingContext.cc
+--- gtkmathview-0.8.0.old/src/backend/ps/PS_StreamRenderingContext.cc 2007-08-17 06:02:40.000000000 -0400
++++ gtkmathview-0.8.0/src/backend/ps/PS_StreamRenderingContext.cc 2008-06-26 14:46:31.000000000 -0400
+@@ -24,7 +24,6 @@
+ #include "PS_StreamRenderingContext.hh"
+ #include "String.hh"
+ #include "FontDataBase.hh"
+-#include "T1_FontDataBase.hh"
+
+ PS_StreamRenderingContext::PS_StreamRenderingContext(const SmartPtr<AbstractLogger>& logger,
+ std::ostream& os,
+diff --exclude-from=/home/dang/.scripts/diffrc -up -ruN gtkmathview-0.8.0.old/src/backend/ps/PS_StreamRenderingContext.hh gtkmathview-0.8.0/src/backend/ps/PS_StreamRenderingContext.hh
+--- gtkmathview-0.8.0.old/src/backend/ps/PS_StreamRenderingContext.hh 2007-08-17 06:02:40.000000000 -0400
++++ gtkmathview-0.8.0/src/backend/ps/PS_StreamRenderingContext.hh 2008-06-26 14:46:31.000000000 -0400
+@@ -25,7 +25,6 @@
+ #include "PS_RenderingContext.hh"
+ #include "String.hh"
+ #include "FontDataBase.hh"
+-#include "T1_FontDataBase.hh"
+
+ class GMV_BackEnd_EXPORT PS_StreamRenderingContext : public PS_RenderingContext
+ {
diff --git a/extra/gtkmathview/gtkmathview-0.8.0-gcc44.patch b/extra/gtkmathview/gtkmathview-0.8.0-gcc44.patch
new file mode 100644
index 000000000..a9069056b
--- /dev/null
+++ b/extra/gtkmathview/gtkmathview-0.8.0-gcc44.patch
@@ -0,0 +1,67 @@
+diff -urN gtkmathview-0.8.0-orig/mathmlps/main.cc gtkmathview-0.8.0/mathmlps/main.cc
+--- gtkmathview-0.8.0-orig/mathmlps/main.cc 2008-04-03 22:43:06.000000000 +0400
++++ gtkmathview-0.8.0/mathmlps/main.cc 2008-04-03 23:53:16.000000000 +0400
+@@ -20,6 +20,7 @@
+
+ #include <cassert>
+ #include <fstream>
++#include <cstring>
+
+ #include <popt.h>
+
+diff -urN gtkmathview-0.8.0-orig/mathmlsvg/main.cc gtkmathview-0.8.0/mathmlsvg/main.cc
+--- gtkmathview-0.8.0-orig/mathmlsvg/main.cc 2008-04-03 22:43:05.000000000 +0400
++++ gtkmathview-0.8.0/mathmlsvg/main.cc 2008-04-03 23:43:31.000000000 +0400
+@@ -20,6 +20,7 @@
+
+ #include <cassert>
+ #include <fstream>
++#include <cstring>
+
+ #include <popt.h>
+
+diff -urN gtkmathview-0.8.0-orig/mathmlsvg/SMS.cc gtkmathview-0.8.0/mathmlsvg/SMS.cc
+--- gtkmathview-0.8.0-orig/mathmlsvg/SMS.cc 2008-04-03 22:43:05.000000000 +0400
++++ gtkmathview-0.8.0/mathmlsvg/SMS.cc 2008-04-03 23:25:12.000000000 +0400
+@@ -19,6 +19,7 @@
+ #include <config.h>
+
+ #include <sstream>
++#include <cstring>
+ #include "defs.h"
+ #include "AbstractLogger.hh"
+ #include "ValueConversion.hh"
+diff -urN gtkmathview-0.8.0-orig/src/engine/mathml/mathVariantAux.cc gtkmathview-0.8.0/src/engine/mathml/mathVariantAux.cc
+--- gtkmathview-0.8.0-orig/src/engine/mathml/mathVariantAux.cc 2008-04-03 22:43:05.000000000 +0400
++++ gtkmathview-0.8.0/src/engine/mathml/mathVariantAux.cc 2008-04-03 23:10:05.000000000 +0400
+@@ -20,6 +20,8 @@
+
+ #include <cassert>
+
++#include <cstring>
++
+ #include "mathVariantAux.hh"
+
+ static MathVariantAttributes vattr[] = {
+diff -urN gtkmathview-0.8.0-orig/src/backend/ps/T1_FontDataBase.cc gtkmathview-0.8.0/src/backend/ps/T1_FontDataBase.cc
+--- gtkmathview-0.8.0-orig/src/backend/ps/T1_FontDataBase.cc 2007-08-17 12:02:40.000000000 +0200
++++ gtkmathview-0.8.0/src/backend/ps/T1_FontDataBase.cc 2008-06-07 12:26:01.000000000 +0200
+@@ -23,6 +23,7 @@
+ #include <stdlib.h>
+ #include <iostream>
+ #include <list>
++#include <cstring>
+
+ #include "String.hh"
+ #include "T1_FontDataBase.hh"
+--- a/src/common/AbstractLogger.cc 2009-06-12 16:29:57.000000000 -0700
++++ b/src/common/AbstractLogger.cc 2009-06-12 16:29:57.000000000 -0700
+@@ -18,6 +18,8 @@
+
+ #include <config.h>
+
++#include <cstdio>
++
+ #include <stdarg.h>
+
+ #include "AbstractLogger.hh"
diff --git a/extra/gtkmm/PKGBUILD b/extra/gtkmm/PKGBUILD
new file mode 100644
index 000000000..f6e870c28
--- /dev/null
+++ b/extra/gtkmm/PKGBUILD
@@ -0,0 +1,38 @@
+# $Id: PKGBUILD 100506 2010-11-23 19:11:38Z heftig $
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgbase=gtkmm
+pkgname=('gtkmm' 'gtkmm-docs')
+pkgver=2.22.0
+pkgrel=1
+arch=('i686' 'x86_64')
+makedepends=('gtk2>=2.22.1' 'pangomm>=2.26.2' 'atkmm>=2.22.1' 'glibmm-docs>=2.24.2')
+license=('LGPL')
+options=('!libtool' '!emptydirs')
+url="http://gtkmm.sourceforge.net/"
+source=(http://ftp.gnome.org/pub/GNOME/sources/${pkgbase}/2.22/${pkgbase}-${pkgver}.tar.bz2)
+sha256sums=('8478d80d8d4793c2e1c459a71bad6a767a43eaf2664da06a9bd65a2b98bb07b1')
+
+build() {
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+}
+
+package_gtkmm() {
+ pkgdesc="C++ bindings for gtk2"
+ depends=('gtk2>=2.22.1' 'pangomm>=2.26.2' 'atkmm>=2.22.1')
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+
+ sed -i -e 's/^doc_subdirs/#doc_subdirs/' Makefile
+
+ make DESTDIR="${pkgdir}" install
+}
+
+package_gtkmm-docs() {
+ pkgdesc="Developer documentation for gtkmm"
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ make -C docs DESTDIR="${pkgdir}" install
+}
diff --git a/extra/gtkpod/PKGBUILD b/extra/gtkpod/PKGBUILD
new file mode 100644
index 000000000..7fa7f8e4f
--- /dev/null
+++ b/extra/gtkpod/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 96753 2010-10-24 16:27:54Z ibiru $
+# Maintainer: Kevin Piche <kevin@archlinux.org>
+# Contributor: Aaron Griffin <aaron@archlinux.org>
+
+pkgname=gtkpod
+pkgver=1.0.0
+pkgrel=1
+pkgdesc="A platform independent GUI for Apple's iPod using GTK2"
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://gtkpod.sourceforge.net"
+install=gtkpod.install
+depends=('libgpod>=0.8.0' 'libid3tag' 'flac' 'libvorbis' 'curl' 'libglade' 'hicolor-icon-theme')
+optdepends=('libmp4v2: MP4/h264 support')
+makedepends=('intltool')
+source=(http://downloads.sourceforge.net/gtkpod/${pkgname}-${pkgver}.tar.gz)
+md5sums=('cadd402dcd1cfbedda0357bf24965a7c')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ sed -i 's#python#python2#' scripts/sync-palm-jppy.py
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/gtkpod/gtkpod.install b/extra/gtkpod/gtkpod.install
new file mode 100644
index 000000000..17ca8f78a
--- /dev/null
+++ b/extra/gtkpod/gtkpod.install
@@ -0,0 +1,11 @@
+post_install() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ post_install $1
+}
diff --git a/extra/gtksourceview-sharp-2.0/PKGBUILD b/extra/gtksourceview-sharp-2.0/PKGBUILD
new file mode 100644
index 000000000..1f51ac1f0
--- /dev/null
+++ b/extra/gtksourceview-sharp-2.0/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id: PKGBUILD 22404 2008-12-26 18:25:17Z jgc $
+# Maintainer: tobias <tobias@archlinux.org>
+# Contributor: Brice Carpentier <brice@daknet.org>
+
+pkgname=gtksourceview-sharp-2.0
+pkgver=0.12
+pkgrel=1
+pkgdesc="a C# binding to gtksourceview"
+url="http://www.mono-project.com/"
+depends=('gtksourceview' 'gtk-sharp-2>=2.12.7' 'gnome-sharp>=2.24.0')
+makedepends=('monodoc')
+conflicts=('gtksourceview-sharp')
+provides=('gtksourceview-sharp')
+source=(http://ftp.novell.com/pub/mono/sources/gtksourceview-sharp2/${pkgname}-${pkgver}.tar.bz2
+ gtksourceview-sharp2-gnome-print.patch)
+license=('LGPL2')
+arch=('i686' 'x86_64')
+
+build() {
+ export MONO_SHARED_DIR="${srcdir}/weird"
+ mkdir -p "${MONO_SHARED_DIR}"
+
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np0 -i "${srcdir}/gtksourceview-sharp2-gnome-print.patch" || return 1
+ autoreconf || return 1
+ ./configure --prefix=/usr || return 1
+ make || return 1
+ make GACUTIL="/usr/bin/gacutil /root ${pkgdir}/usr/lib" \
+ DESTDIR="${pkgdir}" install || return 1
+ rm -rf "${pkgdir}/usr/share/gtksourceview-1.0"
+}
diff --git a/extra/gtksourceview-sharp-2.0/gtksourceview-sharp-2.0.install b/extra/gtksourceview-sharp-2.0/gtksourceview-sharp-2.0.install
new file mode 100644
index 000000000..4d9d891f6
--- /dev/null
+++ b/extra/gtksourceview-sharp-2.0/gtksourceview-sharp-2.0.install
@@ -0,0 +1,24 @@
+post_install() {
+ echo "recreating monodoc index ... this could take a while..."
+ monodoc --make-index > /dev/null 2>&1
+}
+
+# arg 1: the new package version
+# arg 2: the old package version
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ /bin/true
+}
+
+post_remove() {
+ echo "recreating monodoc index ... this could take a while..."
+ monodoc --make-index > /dev/null 2>&1
+}
+
+op=$1
+shift
+
+$op $*
diff --git a/extra/gtksourceview-sharp-2.0/gtksourceview-sharp2-gnome-print.patch b/extra/gtksourceview-sharp-2.0/gtksourceview-sharp2-gnome-print.patch
new file mode 100644
index 000000000..618f3f94e
--- /dev/null
+++ b/extra/gtksourceview-sharp-2.0/gtksourceview-sharp2-gnome-print.patch
@@ -0,0 +1,57 @@
+--- configure.in 2008-02-26 16:30:05.000000000 -0700
++++ configure.in 2008-09-05 13:36:30.000000000 -0600
+@@ -69,6 +69,16 @@
+ gtksharp_prefix=`pkg-config --variable=prefix gtk-sharp-2.0`
+ AC_SUBST(gtksharp_prefix)
+
++PKG_CHECK_MODULES(GNOMEPRINT_SHARP, gnome-print-sharp-2.18, use_gnomeprint=yes, use_gnomeprint=no)
++if test "x$use_gnomeprint" = "xyes" ; then
++GNOMEPRINT_SHARP_REQUIRES=gnome-print-sharp-2.18
++else
++GNOMEPRINT_SHARP_REQUIRES=
++fi
++AC_SUBST(GNOMEPRINT_SHARP_CFLAGS)
++AC_SUBST(GNOMEPRINT_SHARP_LIBS)
++AC_SUBST(GNOMEPRINT_SHARP_REQUIRES)
++
+ PKG_CHECK_MODULES(GTKSOURCEVIEW, gtksourceview-1.0 >= 1.0.0)
+ AC_SUBST(GTKSOURCEVIEW_LIBS)
+ gtksourceview_prefix=`pkg-config --variable=prefix gtksourceview-1.0`
+--- gtksourceview/Makefile.am 2008-02-26 16:30:05.000000000 -0700
++++ gtksourceview/Makefile.am 2008-09-05 13:14:53.000000000 -0600
+@@ -2,7 +2,7 @@
+ LIBRARY= $(LIBRARY_NAME).dll
+ APIS= gtksourceview-api.xml
+
+-ASSEMBLIES= /pkg:gnome-sharp-2.0
++ASSEMBLIES= $(GTK_SHARP_LIBS) $(GNOMEPRINT_SHARP_LIBS)
+
+ EXTRA_DIST = $(sources) $(customs) Gtk.metadata gtksourceview-api.raw AssemblyInfo.cs.in
+
+@@ -21,7 +21,7 @@
+ $(GAPI_FIXUP) --api=gtksourceview-api.xml --metadata=$(srcdir)/Gtk.metadata
+
+ generated-stamp: $(APIS) $(customs) $(sources) Gtk.metadata
+- $(GAPI_CODEGEN) $(GTK_SHARP_CFLAGS) --generate $(APIS) \
++ $(GAPI_CODEGEN) $(GTK_SHARP_CFLAGS) $(GNOMEPRINT_SHARP_CFLAGS) --generate $(APIS) \
+ --outdir=generated --customdir=. --assembly-name=gtksourceview-sharp && touch generated-stamp
+
+ sources = \
+--- gtksourceview-sharp-2.0.pc.in 2008-02-26 16:30:05.000000000 -0700
++++ gtksourceview-sharp-2.0.pc.in 2008-09-05 13:22:33.000000000 -0600
+@@ -6,5 +6,5 @@
+ Name: GtkSourceView#
+ Description: GtkSourceView# - gtksourceview .NET Binding
+ Version: @VERSION@
+-Requires: gnome-sharp-2.0
++Requires: gnome-sharp-2.0 @GNOMEPRINT_SHARP_REQUIRES@
+ Libs: -r:${prefix}/lib/mono/gtksourceview-sharp-2.0/gtksourceview-sharp.dll
+--- sample/Makefile.am 2008-02-26 16:30:05.000000000 -0700
++++ sample/Makefile.am 2008-09-05 13:35:34.000000000 -0600
+@@ -10,5 +10,5 @@
+ $(CSC) -out:$@ $(srcdir)/SourceViewTest.cs -r:../gtksourceview/gtksourceview-sharp.dll -pkg:gtk-sharp-2.0
+
+ $(PRINT): $(srcdir)/PrintSample.cs
+- $(CSC) -out:$@ $(srcdir)/PrintSample.cs -r:../gtksourceview/gtksourceview-sharp.dll -pkg:gtk-sharp-2.0 -pkg:gnome-sharp-2.0
++ $(CSC) -out:$@ $(srcdir)/PrintSample.cs -r:../gtksourceview/gtksourceview-sharp.dll -pkg:gtk-sharp-2.0 -pkg:gnome-sharp-2.0 $(GNOMEPRINT_SHARP_LIBS)
+
diff --git a/extra/gtksourceview/PKGBUILD b/extra/gtksourceview/PKGBUILD
new file mode 100644
index 000000000..cd93c5bbc
--- /dev/null
+++ b/extra/gtksourceview/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 57064 2009-10-31 11:55:39Z allan $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=gtksourceview
+pkgver=1.8.5
+pkgrel=3
+pkgdesc="A text widget adding syntax highlighting and more to GNOME"
+arch=('i686' 'x86_64')
+license=('GPL')
+depends=('libgnomeprint' 'gtk2')
+makedepends=('perlxml' 'libgnomeprintui' 'pkgconfig')
+options=('!libtool')
+url="http://www.gnome.org"
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/1.8/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('de67df2944c1cccbc2d0b4a738e11050')
+
+build() {
+ export CFLAGS="$CFLAGS -D_GNU_SOURCE"
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-static
+ make || return 1
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/gtksourceview2/PKGBUILD b/extra/gtksourceview2/PKGBUILD
new file mode 100644
index 000000000..21473004f
--- /dev/null
+++ b/extra/gtksourceview2/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 92017 2010-09-28 16:54:55Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=gtksourceview2
+pkgver=2.10.5
+pkgrel=1
+pkgdesc="A text widget adding syntax highlighting and more to GNOME"
+arch=('i686' 'x86_64')
+license=('GPL')
+depends=('gtk2>=2.22.0' 'libxml2>=2.7.7')
+makedepends=('intltool' 'pkgconfig')
+options=('!libtool')
+url="http://www.gnome.org"
+source=(http://ftp.gnome.org/pub/gnome/sources/gtksourceview/2.10/gtksourceview-${pkgver}.tar.bz2)
+sha256sums=('c585773743b1df8a04b1be7f7d90eecdf22681490d6810be54c81a7ae152191e')
+
+build() {
+ cd "${srcdir}/gtksourceview-${pkgver}"
+ sed -i 's#python#python2#' gtksourceview/language-specs/convert.py
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-static
+ make
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/gtkspell/PKGBUILD b/extra/gtkspell/PKGBUILD
new file mode 100644
index 000000000..162584730
--- /dev/null
+++ b/extra/gtkspell/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: PKGBUILD 58462 2009-11-08 16:00:59Z jgc $
+# Maintainer: Roman Kyrylych <roman@archlinux.org>
+# Contributer: Ben <ben@benmazer.net>
+
+pkgname=gtkspell
+pkgver=2.0.16
+pkgrel=1
+url="http://gtkspell.sourceforge.net/"
+pkgdesc="GtkSpell provides word-processor-style highlighting and replacement of misspelled words in a GtkTextView widget"
+arch=('i686' 'x86_64')
+license=('GPL')
+depends=('gtk2>=2.18.3' 'enchant>=1.5.0')
+makedepends=('intltool' 'gtk-doc')
+options=('!libtool')
+source=(http://gtkspell.sourceforge.net/download/${pkgname}-${pkgver}.tar.gz)
+md5sums=('f75dcc9338f182c571b321d37c606a94')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/gucharmap/PKGBUILD b/extra/gucharmap/PKGBUILD
new file mode 100644
index 000000000..c2269c46e
--- /dev/null
+++ b/extra/gucharmap/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 99468 2010-11-14 19:46:42Z ibiru $
+# Maintainer: Jan De Groot <jgc@archlinux.org>
+
+pkgname=gucharmap
+pkgver=2.32.1
+pkgrel=1
+pkgdesc="Gnome Unicode Charmap"
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://www.gnome.org"
+depends=('gconf>=2.32.0' 'hicolor-icon-theme')
+makedepends=('gnome-doc-utils>=0.20.1' 'intltool')
+groups=('gnome-extra')
+options=('!libtool' '!emptydirs')
+install=gucharmap.install
+source=(http://ftp.gnome.org/pub/gnome/sources/gucharmap/2.32/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('fdef066f35f4301bc128b91f15a30d64a2459721cb50daa53f923789df315c28')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-static \
+ --disable-scrollkeeper
+ make
+ make -j1 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 gucharmap ${pkgdir}/etc/gconf/schemas/*.schemas
+ rm -f ${pkgdir}/etc/gconf/schemas/*.schemas
+}
diff --git a/extra/gucharmap/gucharmap.install b/extra/gucharmap/gucharmap.install
new file mode 100644
index 000000000..4de3253f6
--- /dev/null
+++ b/extra/gucharmap/gucharmap.install
@@ -0,0 +1,22 @@
+pkgname=gucharmap
+
+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/extra/guile/PKGBUILD b/extra/guile/PKGBUILD
new file mode 100644
index 000000000..eafece87a
--- /dev/null
+++ b/extra/guile/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 109127 2011-02-06 11:24:26Z andyrtr $
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=guile
+pkgver=1.8.8
+pkgrel=1
+pkgdesc="a portable, embeddable Scheme implementation written in C"
+url="http://www.gnu.org/software/guile/"
+arch=(i686 x86_64)
+license=('GPL')
+depends=('gmp' 'libtool' 'ncurses>=5.7' 'texinfo')
+install=guile.install
+source=(ftp://ftp.gnu.org/pub/gnu/${pkgname}/${pkgname}-${pkgver}.tar.gz)
+options=('!libtool')
+md5sums=('18661a8fdfef13e2fcb7651720aa53f3')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr \
+ --disable-static \
+ --disable-error-on-warning
+ make LDFLAGS+="-lpthread"
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/guile/guile.install b/extra/guile/guile.install
new file mode 100644
index 000000000..5d1eeaf24
--- /dev/null
+++ b/extra/guile/guile.install
@@ -0,0 +1,30 @@
+infodir=/usr/share/info
+files=(goops.info
+ guile-tut.info
+ guile.info
+ guile.info-1
+ guile.info-2
+ guile.info-3
+ guile.info-4
+ guile.info-5
+ guile.info-6
+ guile.info-7
+ r5rs.info)
+
+post_install() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info $infodir/$file.gz $infodir/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info --delete $infodir/$file.gz $infodir/dir 2> /dev/null
+ done
+}
diff --git a/extra/gutenprint/PKGBUILD b/extra/gutenprint/PKGBUILD
new file mode 100644
index 000000000..a06b6bc0a
--- /dev/null
+++ b/extra/gutenprint/PKGBUILD
@@ -0,0 +1,39 @@
+# $Id: PKGBUILD 87283 2010-08-11 20:42:35Z andyrtr $
+# Maintainer: Andreas Radke <andyrtr@archlinux.org>
+
+pkgname=gutenprint
+pkgver=5.2.6
+pkgrel=1
+pkgdesc="Top quality printer drivers for POSIX systems"
+arch=('i686' 'x86_64')
+license=('GPL')
+install=gutenprint.install
+depends=('readline' 'gnutls>=2.8.5') # needs to be checked. build log says -Lgnutls but namcap doesn't detect it
+makedepends=('gimp>=2.6.8' 'gtk2>=2.18.6' 'cups>=1.4.2' 'foomatic-db-engine' 'ghostscript>=8.71')
+optdepends=('cups: to use cups printer spooler(recommended)'
+ 'foomatic-db-engine: to use foomatic spooler'
+ 'ghostscript: adds postscript support for ijsgutenprint'
+ 'gimp: adds gutenprint plugin to gimp')
+source=(http://downloads.sourceforge.net/gimp-print/$pkgname-$pkgver.tar.bz2)
+url="http://gimp-print.sourceforge.net/"
+replaces=('gimp-print')
+options=('!libtool' '!emptydirs')
+md5sums=('1f0d0cbef6c089f4f095e21869fa70db')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr --disable-samples --with-cups --with-gimp2 \
+ --disable-translated-cups-ppds --with-gimp2-as-gutenprint \
+ --disable-libgutenprintui --enable-libgutenprintui2 --disable-gtktest \
+ --enable-cups-ppds --enable-cups-ppds-at-top-level \
+ --with-foomatic --with-foomatic3 --with-ghostscript \
+ --disable-static --disable-static-genppd --with-ijs \
+ --disable-globalized-cups-ppds
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
+
diff --git a/extra/gutenprint/gutenprint.install b/extra/gutenprint/gutenprint.install
new file mode 100644
index 000000000..05e8bec38
--- /dev/null
+++ b/extra/gutenprint/gutenprint.install
@@ -0,0 +1,9 @@
+post_install() {
+ echo ">>please run /usr/sbin/cups-genppdupdate"
+ echo ">>and restart cups deamon"
+}
+
+post_upgrade() {
+ post_install
+}
+
diff --git a/extra/gv/PKGBUILD b/extra/gv/PKGBUILD
new file mode 100644
index 000000000..edf76955e
--- /dev/null
+++ b/extra/gv/PKGBUILD
@@ -0,0 +1,32 @@
+# $Id: PKGBUILD 103001 2010-12-13 22:11:14Z eric $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+
+pkgname=gv
+pkgver=3.7.1
+pkgrel=2
+pkgdesc="A program to view PostScript and PDF documents"
+arch=('i686' 'x86_64')
+url="http://www.gnu.org/software/gv/"
+license=('GPL')
+depends=('xaw3d' 'ghostscript')
+install=gv.install
+source=(http://ftp.gnu.org/gnu/${pkgname}/${pkgname}-${pkgver}.tar.gz gv.desktop gv.png aplinedel.patch)
+md5sums=('bf4823d00d8e431f97dbcb7dd87c46ac' 'cf04652952f2d0903bc7578b4826f50c'\
+ 'ab0e3879dbe39e59ad1c923020c28a86' '8a57a5d50a0d68dc1d98108e9665bd2d')
+sha1sums=('05fcf76f29de77e67379bae7e9ca1c8a26bbf6e1' 'c8230fe08ee6d22525678a97832f44941237d174'\
+ '35b9168e526527001b1b5b8ee34a5b69d9369590' 'e6358e74ec2641730b44443a49df36322df2bdd8')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -p1 < ../aplinedel.patch
+ sed -i -e "s:-dGraphicsAlphaBits=2:\0 -dAlignToPixels=0:" src/Makefile.{am,in}
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+ install -D -m644 ../gv.desktop "${pkgdir}/usr/share/applications/gv.desktop"
+ install -D -m644 ../gv.png "${pkgdir}/usr/share/pixmaps/gv.png"
+}
diff --git a/extra/gv/aplinedel.patch b/extra/gv/aplinedel.patch
new file mode 100644
index 000000000..3026e426c
--- /dev/null
+++ b/extra/gv/aplinedel.patch
@@ -0,0 +1,11 @@
+diff -ur a/src/gv_misc_res.dat b/src/gv_misc_res.dat
+--- a/src/gv_misc_res.dat 2010-10-15 09:21:36.000000000 +0200
++++ b/src/gv_misc_res.dat 2010-10-15 09:21:48.000000000 +0200
+@@ -476,7 +476,6 @@
+ <Key>BackSpace: GV_Page(up,left-bottom,!page-1,bottom-rightedge)\n\
+ <Key>Insert: GV_Page(page-5) \n\
+ <Key>Delete: GV_Page(page+5) \n\
+- <Key>apLineDel: GV_Page(page+5) \n\
+ <Key>Home: GV_Page(page=0) \n\
+ <Key>End: GV_Page(page=99999) \n\
+ <Key>Prior: GV_Page(page-1) \n\
diff --git a/extra/gv/gv.desktop b/extra/gv/gv.desktop
new file mode 100644
index 000000000..6332ee859
--- /dev/null
+++ b/extra/gv/gv.desktop
@@ -0,0 +1,11 @@
+[Desktop Entry]
+Encoding=UTF-8
+Name=GV
+MimeType=application/pdf;application/postscript;image/x-eps;application/illustrator
+GenericName=Postscript Viewer
+Exec=gv
+Icon=gv
+Categories=Application;Graphics;Viewer;Office;
+Type=Application
+Terminal=false
+StartupNotify=true
diff --git a/extra/gv/gv.install b/extra/gv/gv.install
new file mode 100644
index 000000000..dd0e8c9c6
--- /dev/null
+++ b/extra/gv/gv.install
@@ -0,0 +1,16 @@
+infodir=/usr/share/info
+file=gv.info.gz
+
+post_install() {
+ [ -x usr/bin/install-info ] || return 0
+ install-info $infodir/$file $infodir/dir 2> /dev/null
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ [ -x usr/bin/install-info ] || return 0
+ install-info --delete $infodir/$file $infodir/dir 2> /dev/null
+}
diff --git a/extra/gv/gv.png b/extra/gv/gv.png
new file mode 100644
index 000000000..59e832a48
--- /dev/null
+++ b/extra/gv/gv.png
Binary files differ
diff --git a/extra/gvfs/PKGBUILD b/extra/gvfs/PKGBUILD
new file mode 100644
index 000000000..282dcf7a3
--- /dev/null
+++ b/extra/gvfs/PKGBUILD
@@ -0,0 +1,100 @@
+# $Id: PKGBUILD 98674 2010-11-12 16:49:58Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgbase=gvfs
+pkgname=('gvfs' 'gvfs-smb' 'gvfs-afc' 'gvfs-gphoto2' 'gvfs-obexftp')
+pkgver=1.6.6
+pkgrel=1
+arch=('i686' 'x86_64')
+license=('LGPL')
+makedepends=('libsoup-gnome>=2.32.0' 'libcdio>=0.82' 'fuse>=2.8.4' 'bluez>=4.77' 'smbclient>=3.5.5' 'libgphoto2>=2.4.10' 'libarchive>=2.8.4' 'gnome-disk-utility>=2.32.0' 'pkgconfig' 'intltool' 'libimobiledevice>=1.0.2')
+url="http://www.gnome.org"
+options=(!libtool)
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgbase}/1.6/${pkgbase}-${pkgver}.tar.bz2)
+sha256sums=('902890deb6a670f642180ea958406ebb02af1d5867a464c87e493d56f1dde7bd')
+
+build() {
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-static \
+ --libexecdir=/usr/lib/gvfs \
+ --with-bash-completion-dir=/etc/bash_completion.d
+ make
+}
+
+package_gvfs() {
+ pkgdesc="Userspace virtual filesystem implemented as a pluggable module for gio"
+ depends=('libsoup-gnome>=2.32.0' 'gnome-disk-utility>=2.32.0' 'libcdio>=0.82' 'fuse>=2.8.4' 'libarchive>=2.8.4')
+ optdepends=('gvfs-afc: AFC (mobile devices) support'
+ 'gvfs-smb: SMB/CIFS (Windows client) support'
+ 'gvfs-gphoto2: gphoto2 (PTP camera/MTP media player) support'
+ 'gvfs-obexftp: ObexFTP (bluetooth) support')
+ install=gvfs.install
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ sed -e 's/^am__append_3/#am__append_3/' \
+ -e 's/^am__append_4/#am__append_4/' \
+ -i monitor/Makefile
+ make DESTDIR="${pkgdir}" install
+ cd "${pkgdir}"
+ rm -f usr/lib/gvfs/gvfsd-{smb,smb-browse,afc,gphoto2,obexftp}
+ rm -f usr/share/gvfs/mounts/{smb,smb-browse,afc,gphoto2,obexftp}.mount
+}
+
+package_gvfs-smb() {
+ pkgdesc="SMB/CIFS (Windows client) backend for gvfs"
+ depends=("gvfs=${pkgver}" 'smbclient>=3.5.5' 'libgnome-keyring>=2.32.0')
+ install=gvfs-module.install
+
+ cd "${srcdir}/${pkgbase}-${pkgver}/daemon"
+ install -m755 -d "${pkgdir}/usr/lib/gvfs"
+ install -m755 -d "${pkgdir}/usr/share/gvfs/mounts"
+
+ install -m755 .libs/gvfsd-smb{,-browse} "${pkgdir}/usr/lib/gvfs/"
+ install -m644 smb{,-browse}.mount "${pkgdir}/usr/share/gvfs/mounts/"
+}
+
+package_gvfs-afc() {
+ pkgdesc="AFC (mobile devices) backend for gvfs"
+ depends=("gvfs=${pkgver}" 'libimobiledevice>=1.0.2')
+ install=gvfs-module.install
+
+ cd "${srcdir}/${pkgbase}-${pkgver}/daemon"
+ install -m755 -d "${pkgdir}/usr/lib/gvfs"
+ install -m755 -d "${pkgdir}/usr/share/gvfs/mounts"
+
+ install -m755 .libs/gvfsd-afc "${pkgdir}/usr/lib/gvfs/"
+ install -m644 afc.mount "${pkgdir}/usr/share/gvfs/mounts/"
+
+ cd "${srcdir}/${pkgbase}-${pkgver}/monitor/afc"
+ make DESTDIR="${pkgdir}" install
+}
+
+package_gvfs-gphoto2() {
+ pkgdesc="gphoto2 (PTP camera/MTP media player) backend for gvfs"
+ depends=("gvfs=${pkgver}" 'dbus-core>=1.4.0' 'libgphoto2>=2.4.10' 'udev>=163')
+ install=gvfs-module.install
+
+ cd "${srcdir}/${pkgbase}-${pkgver}/daemon"
+ install -m755 -d "${pkgdir}/usr/lib/gvfs"
+ install -m755 -d "${pkgdir}/usr/share/gvfs/mounts"
+
+ install -m755 .libs/gvfsd-gphoto2 "${pkgdir}/usr/lib/gvfs/"
+ install -m644 gphoto2.mount "${pkgdir}/usr/share/gvfs/mounts/"
+
+ cd "${srcdir}/${pkgbase}-${pkgver}/monitor/gphoto2"
+ make DESTDIR="${pkgdir}" install
+}
+
+package_gvfs-obexftp() {
+ pkgdesc="ObexFTP (bluetooth) backend for gvfs"
+ depends=("gvfs=${pkgver}" 'dbus-glib>=0.86' 'bluez>=4.77' 'obex-data-server')
+ install=gvfs-module.install
+
+ cd "${srcdir}/${pkgbase}-${pkgver}/daemon"
+ install -m755 -d "${pkgdir}/usr/lib/gvfs"
+ install -m755 -d "${pkgdir}/usr/share/gvfs/mounts"
+
+ install -m755 .libs/gvfsd-obexftp "${pkgdir}/usr/lib/gvfs/"
+ install -m644 obexftp.mount "${pkgdir}/usr/share/gvfs/mounts/"
+}
diff --git a/extra/gvfs/gvfs-module.install b/extra/gvfs/gvfs-module.install
new file mode 100644
index 000000000..09d1f11ec
--- /dev/null
+++ b/extra/gvfs/gvfs-module.install
@@ -0,0 +1,7 @@
+post_install() {
+ killall -USR1 gvfsd >&/dev/null || :
+}
+
+post_upgrade() {
+ post_install
+}
diff --git a/extra/gvfs/gvfs.install b/extra/gvfs/gvfs.install
new file mode 100644
index 000000000..5acc60f8f
--- /dev/null
+++ b/extra/gvfs/gvfs.install
@@ -0,0 +1,12 @@
+post_install() {
+ usr/bin/gio-querymodules usr/lib/gio/modules
+ killall -USR1 gvfsd >&/dev/null || :
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ usr/bin/gio-querymodules usr/lib/gio/modules
+}
diff --git a/extra/gweled/PKGBUILD b/extra/gweled/PKGBUILD
new file mode 100644
index 000000000..16ea76bef
--- /dev/null
+++ b/extra/gweled/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id: PKGBUILD 108818 2011-02-03 20:50:44Z eric $
+# Maintainer: Eric Bélanger <eric@archlinux.org>
+
+pkgname=gweled
+pkgver=0.9
+pkgrel=1
+pkgdesc="A puzzle game similar to Bejeweled (aka Diamond Mine)"
+arch=('i686' 'x86_64')
+license=('GPL')
+url="https://launchpad.net/gweled/"
+depends=('librsvg' 'libmikmod')
+makedepends=('intltool')
+install=gweled.install
+source=(http://launchpad.net/${pkgname}/trunk/${pkgver}/+download/${pkgname}-${pkgver}.tar.gz)
+md5sums=('a3aeec75190710758bbd3c487b637112')
+sha1sums=('70358e0557eaee370a9183e1ea34e95a09d57619')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \
+ --with-scores-user=root --with-scores-group=games
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+
+# We generate these files on post-install to prevent score resets on upgrade
+ rm -rf "${pkgdir}/var"
+}
diff --git a/extra/gweled/gweled.install b/extra/gweled/gweled.install
new file mode 100644
index 000000000..c24563d6d
--- /dev/null
+++ b/extra/gweled/gweled.install
@@ -0,0 +1,24 @@
+scores=(
+ 'gweled.Normal.scores'
+ 'gweled.Timed.scores'
+)
+
+post_install() {
+ for score in "${scores[@]}" ; do
+ if [ -e "var/games/${score}" ]; then
+ continue
+ fi
+ touch "var/games/${score}"
+ chown root:games "var/games/${score}"
+ chmod 664 "var/games/${score}"
+ done
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
diff --git a/extra/habak/PKGBUILD b/extra/habak/PKGBUILD
new file mode 100644
index 000000000..5ef6cde6f
--- /dev/null
+++ b/extra/habak/PKGBUILD
@@ -0,0 +1,19 @@
+# $Id: PKGBUILD 4097 2008-07-03 14:48:26Z ronald $
+# Maintainer: Ronald van Haren <ronald@archlinux.org>
+# Contributor: Simo Leone <simo@archlinux.org>
+pkgname=habak
+pkgver=0.2.5
+pkgrel=3
+pkgdesc="A background changing app"
+url="http://fvwm-crystal.org"
+license=('GPL2')
+depends=('imlib2')
+source=(http://download.gna.org/fvwm-crystal/habak/$pkgver/$pkgname-$pkgver.tar.gz)
+arch=('i686' 'x86_64')
+md5sums=('bee5c394989367f7a4c5cb9ec99d307c')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ make || return 1
+ install -m755 -D habak $pkgdir/usr/bin/habak || return 1
+}
diff --git a/extra/hal/PKGBUILD b/extra/hal/PKGBUILD
new file mode 100644
index 000000000..6eaf1c847
--- /dev/null
+++ b/extra/hal/PKGBUILD
@@ -0,0 +1,86 @@
+# $Id: PKGBUILD 105528 2011-01-10 10:53:12Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Link Dupont <link@subpop.net>
+
+pkgname=hal
+pkgver=0.5.14
+pkgrel=6
+pkgdesc="Hardware Abstraction Layer"
+arch=(i686 x86_64)
+license=('GPL' 'custom')
+url="http://www.freedesktop.org/wiki/Software/hal"
+depends=('dbus-glib>=0.82' 'libusb-compat' 'udev>=146' 'filesystem>=0.7.1-5' 'hal-info>=0.20090716' 'eject' 'dmidecode' 'pciutils>=3.0.2' 'usbutils>=0.73-5' 'pm-utils>=1.2.5' 'consolekit>=0.4.1' 'util-linux-ng>=2.16')
+makedepends=('pkgconfig' 'gperf')
+options=('!libtool' '!makeflags')
+install=hal.install
+source=(http://hal.freedesktop.org/releases/${pkgname}-${pkgver}.tar.gz
+ hal
+ hal-0.5.9-hide-diagnostic.patch
+ hal-remove-dell-killswitch.patch
+ hal-KVM-evdev.patch
+ hal-HDAPS-blacklist.patch
+ hal-xen-unignore-axes.patch
+ hal-use-at-console.patch
+ fix-libusb-detection.patch
+ dbus-error-init.patch
+ path-max.patch
+ handle-input-touchpad.patch
+ macbook-fix-ioperm.patch
+ hal-ignore-internal-dm-devices.patch)
+md5sums=('e9163df591a6f38f59fdbfe33e73bf20'
+ '277e96ac130d7bfce0b30f0b80db8782'
+ '4d4b6801a1cedca22b8bdd9db73b16fb'
+ '6d87c3e63184ae3a69caafc846f538a3'
+ '6507e5091ee2d11a87ae738a8e2caecb'
+ '1171c2d83b76059f2da7a3538e08fa4e'
+ '52bd305299aa22ae07f1a862c22d30fa'
+ '3f11234fb5e5044fbfc5199ec65b182c'
+ 'da088f12cfc2d190bbf95b747e19ab9e'
+ '634f4ec2203eff7de8fa2ed2c6b9cbe0'
+ 'f8c9b3a40d03907b498feef571d42466'
+ '0575677614db0632b17b1a719798c7e0'
+ '46a5db3ff896ee37762aa8d7e70942c4'
+ '17bc2b911f245cef4a1d98769d5c4d14')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i "${srcdir}/hal-0.5.9-hide-diagnostic.patch"
+ patch -Np1 -i "${srcdir}/hal-remove-dell-killswitch.patch"
+ patch -Np1 -i "${srcdir}/hal-KVM-evdev.patch"
+ patch -Np1 -i "${srcdir}/hal-HDAPS-blacklist.patch"
+ patch -Np1 -i "${srcdir}/hal-xen-unignore-axes.patch"
+ patch -Np1 -i "${srcdir}/hal-use-at-console.patch"
+ patch -Np1 -i "${srcdir}/fix-libusb-detection.patch"
+ patch -Np1 -i "${srcdir}/dbus-error-init.patch"
+ patch -Np1 -i "${srcdir}/path-max.patch"
+ patch -Np1 -i "${srcdir}/handle-input-touchpad.patch"
+ patch -Np1 -i "${srcdir}/macbook-fix-ioperm.patch"
+ patch -Np1 -i "${srcdir}/hal-ignore-internal-dm-devices.patch"
+
+ libtoolize --force
+ aclocal
+ autoconf
+ automake
+
+ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \
+ --libexecdir=/usr/lib/hal --with-udev-prefix=/etc \
+ --enable-static=no --disable-acpi-ibm \
+ --disable-docbook-docs --disable-console-kit \
+ --disable-policy-kit --disable-acl-management \
+ --enable-umount-helper --disable-smbios \
+ --with-hal-user=hal --with-hal-group=hal \
+ --with-pid-file=/var/run/hald.pid \
+ --disable-gtk-doc
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/etc/rc.d"
+ install -m755 -d "${pkgdir}/media"
+ install -m755 "${srcdir}/hal" "${pkgdir}/etc/rc.d/"
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+
+ # Fix udev rule location
+ install -d -m755 "${pkgdir}/lib"
+ mv "${pkgdir}/etc/udev" "${pkgdir}/lib/"
+}
diff --git a/extra/hal/dbus-error-init.patch b/extra/hal/dbus-error-init.patch
new file mode 100644
index 000000000..fb3ad020a
--- /dev/null
+++ b/extra/hal/dbus-error-init.patch
@@ -0,0 +1,231 @@
+From dcb2829b8eff61463b0869614ddb07b1c86cecaa Mon Sep 17 00:00:00 2001
+From: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
+Date: Wed, 30 Dec 2009 11:42:52 +0000
+Subject: linux/probe-input: don't use error prio init
+
+it may happen in the out: case that LIBHAL_FREE_DBUS_ERROR (&error) is
+called before the error structure is initialized via
+dbus_error_init (&error). This could lead to a segfault during startup
+as seen in dmesg:
+
+|Intel AES-NI instructions are not detected.
+|padlock: VIA PadLock not detected.
+|hald-probe-inpu[1793]: segfault at 2 ip 00007f656fb68969 sp 00007fff39eeb950 error 4 in libc-2.10.2.so[7f656faf3000+14a000]
+|hald-probe-inpu[1796]: segfault at 2 ip 00007fa2c3293969 sp 00007fffd92a5dd0 error 4 in libc-2.10.2.so[7fa2c321e000+14a000]
+|hald-probe-inpu[1797]: segfault at 2 ip 00007f1d08ba2969 sp 00007fff34244e30 error 4 in libc-2.10.2.so[7f1d08b2d000+14a000]
+|hald-probe-inpu[1799]: segfault at 2 ip 00007f35c0e3d969 sp 00007fffe5ec7ee0 error 4 in libc-2.10.2.so[7f35c0dc8000+14a000]
+|hald-probe-inpu[1800]: segfault at 2 ip 00007f931c556969 sp 00007fffe1825b60 error 4 in libc-2.10.2.so[7f931c4e1000+14a000]
+|hald-probe-inpu[1801]: segfault at 2 ip 00007f5156d9a969 sp 00007fff4e620af0 error 4 in libc-2.10.2.so[7f5156d25000+14a000]
+|RPC: Registered udp transport module.
+|RPC: Registered tcp transport module.
+
+What I run into seems to be reported as Debian #562068 [0]. This patch
+makes the segfault go away on my machine.
+
+[0] http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=562068
+
+Signed-off-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
+Signed-off-by: Martin Pitt <martin.pitt@ubuntu.com>
+---
+diff --git a/hald/linux/probing/probe-input.c b/hald/linux/probing/probe-input.c
+index 94e9929..cad47d3 100644
+--- a/hald/linux/probing/probe-input.c
++++ b/hald/linux/probing/probe-input.c
+@@ -70,6 +70,7 @@ main (int argc, char *argv[])
+ fd = -1;
+
+ setup_logger ();
++ dbus_error_init (&error);
+
+ button_type = getenv ("HAL_PROP_BUTTON_TYPE");
+ if (button_type == NULL)
+@@ -96,7 +97,6 @@ main (int argc, char *argv[])
+ if (udi == NULL)
+ goto out;
+
+- dbus_error_init (&error);
+ if ((ctx = libhal_ctx_init_direct (&error)) == NULL)
+ goto out;
+
+--
+cgit v0.8.3-6-g21f6
+From baa61a879985d63f549854518ef14efd40e62e8c Mon Sep 17 00:00:00 2001
+From: Peter Jones <pjones@redhat.com>
+Date: Wed, 24 Feb 2010 16:19:28 +0000
+Subject: Make sure dbus_error_init() is called before LIBHAL_FREE_DBUS_ERROR()
+
+If dbus_error_init() is not called before LIBHAL_FREE_DBUS_ERROR() is
+called on that error, then it is uninitialized and may segfault. This
+means that dbus_error_init() must be called before any "goto out" if
+"out:" calls LIBHAL_FREE_DBUS_ERROR().
+
+Signed-off-by: Martin Pitt <martin.pitt@ubuntu.com>
+---
+diff --git a/hald/linux/probing/probe-hiddev.c b/hald/linux/probing/probe-hiddev.c
+index 45d2084..bffc040 100644
+--- a/hald/linux/probing/probe-hiddev.c
++++ b/hald/linux/probing/probe-hiddev.c
+@@ -57,11 +57,12 @@ main (int argc, char *argv[])
+ /* assume failure */
+ ret = 1;
+
++ dbus_error_init (&error);
++
+ udi = getenv ("UDI");
+ if (udi == NULL)
+ goto out;
+
+- dbus_error_init (&error);
+ if ((ctx = libhal_ctx_init_direct (&error)) == NULL)
+ goto out;
+
+diff --git a/hald/linux/probing/probe-ieee1394-unit.c b/hald/linux/probing/probe-ieee1394-unit.c
+index 70b0f86..aaa92e2 100644
+--- a/hald/linux/probing/probe-ieee1394-unit.c
++++ b/hald/linux/probing/probe-ieee1394-unit.c
+@@ -388,6 +388,8 @@ int main (int argc, char *argv[])
+
+ setup_logger ();
+
++ dbus_error_init (&error);
++
+ udi = getenv ("UDI");
+ if (udi == NULL)
+ goto out;
+@@ -396,7 +398,6 @@ int main (int argc, char *argv[])
+ if (ieee1394_udi == NULL)
+ goto out;
+
+- dbus_error_init (&error);
+ if ((ctx = libhal_ctx_init_direct (&error)) == NULL)
+ goto out;
+
+diff --git a/hald/linux/probing/probe-net-bluetooth.c b/hald/linux/probing/probe-net-bluetooth.c
+index 0b1b912..e911eea 100644
+--- a/hald/linux/probing/probe-net-bluetooth.c
++++ b/hald/linux/probing/probe-net-bluetooth.c
+@@ -141,6 +141,8 @@ main (int argc, char *argv[])
+ DBusMessage *reply = NULL;
+ DBusError error;
+
++ dbus_error_init (&error);
++
+ udi = getenv ("UDI");
+ if (udi == NULL)
+ goto out;
+@@ -151,8 +153,6 @@ main (int argc, char *argv[])
+
+ HAL_INFO (("Investigating '%s'", iface));
+
+- dbus_error_init (&error);
+-
+ if ((conn = dbus_bus_get (DBUS_BUS_SYSTEM, &error)) == NULL)
+ goto out;
+
+diff --git a/hald/linux/probing/probe-printer.c b/hald/linux/probing/probe-printer.c
+index 91ed7bc..7c6d1c6 100644
+--- a/hald/linux/probing/probe-printer.c
++++ b/hald/linux/probing/probe-printer.c
+@@ -66,6 +66,8 @@ main (int argc, char *argv[])
+ ret = 1;
+
+ setup_logger ();
++
++ dbus_error_init (&error);
+
+ udi = getenv ("UDI");
+ if (udi == NULL) {
+@@ -73,7 +75,6 @@ main (int argc, char *argv[])
+ goto out;
+ }
+
+- dbus_error_init (&error);
+ if ((ctx = libhal_ctx_init_direct (&error)) == NULL) {
+ HAL_ERROR (("ctx init failed"));
+ goto out;
+diff --git a/hald/linux/probing/probe-smbios.c b/hald/linux/probing/probe-smbios.c
+index 0bc9689..15c0d4f 100644
+--- a/hald/linux/probing/probe-smbios.c
++++ b/hald/linux/probing/probe-smbios.c
+@@ -129,6 +129,8 @@ main (int argc, char *argv[])
+ ret = 1;
+
+ setup_logger ();
++
++ dbus_error_init (&error);
+
+ udi = getenv ("UDI");
+ if (udi == NULL) {
+@@ -136,7 +138,6 @@ main (int argc, char *argv[])
+ goto out;
+ }
+
+- dbus_error_init (&error);
+ if ((ctx = libhal_ctx_init_direct (&error)) == NULL) {
+ HAL_ERROR (("ctx init failed"));
+ goto out;
+diff --git a/hald/linux/probing/probe-storage.c b/hald/linux/probing/probe-storage.c
+index 824a82e..dd524ca 100644
+--- a/hald/linux/probing/probe-storage.c
++++ b/hald/linux/probing/probe-storage.c
+@@ -109,6 +109,8 @@ main (int argc, char *argv[])
+ /* assume failure */
+ ret = 1;
+
++ dbus_error_init (&error);
++
+ if ((udi = getenv ("UDI")) == NULL)
+ goto out;
+ if ((device_file = getenv ("HAL_PROP_BLOCK_DEVICE")) == NULL)
+@@ -127,7 +129,6 @@ main (int argc, char *argv[])
+ else
+ only_check_for_fs = FALSE;
+
+- dbus_error_init (&error);
+ if ((ctx = libhal_ctx_init_direct (&error)) == NULL)
+ goto out;
+
+diff --git a/hald/linux/probing/probe-video4linux.c b/hald/linux/probing/probe-video4linux.c
+index cf913c0..7bc13e8 100644
+--- a/hald/linux/probing/probe-video4linux.c
++++ b/hald/linux/probing/probe-video4linux.c
+@@ -58,6 +58,8 @@ main (int argc, char *argv[])
+
+ setup_logger ();
+
++ dbus_error_init (&error);
++
+ device_file = getenv ("HAL_PROP_VIDEO4LINUX_DEVICE");
+ if (device_file == NULL)
+ goto out;
+@@ -66,7 +68,6 @@ main (int argc, char *argv[])
+ if (udi == NULL)
+ goto out;
+
+- dbus_error_init (&error);
+ ctx = libhal_ctx_init_direct (&error);
+ if (ctx == NULL)
+ goto out;
+diff --git a/hald/linux/probing/probe-volume.c b/hald/linux/probing/probe-volume.c
+index 0de1b91..7268fff 100644
+--- a/hald/linux/probing/probe-volume.c
++++ b/hald/linux/probing/probe-volume.c
+@@ -318,6 +318,8 @@ main (int argc, char *argv[])
+ /* assume failure */
+ ret = 1;
+
++ dbus_error_init (&error);
++
+ if ((udi = getenv ("UDI")) == NULL)
+ goto out;
+ if ((device_file = getenv ("HAL_PROP_BLOCK_DEVICE")) == NULL)
+@@ -346,7 +348,6 @@ main (int argc, char *argv[])
+
+ fsusage = getenv ("HAL_PROP_VOLUME_FSUSAGE");
+
+- dbus_error_init (&error);
+ if ((ctx = libhal_ctx_init_direct (&error)) == NULL)
+ goto out;
+
+--
+cgit v0.8.3-6-g21f6
diff --git a/extra/hal/fix-libusb-detection.patch b/extra/hal/fix-libusb-detection.patch
new file mode 100644
index 000000000..d4f966dec
--- /dev/null
+++ b/extra/hal/fix-libusb-detection.patch
@@ -0,0 +1,66 @@
+From fce91df8ba7f305c624baf1f06961c040b088ecc Mon Sep 17 00:00:00 2001
+From: Joe Marcus Clarke <marcus@FreeBSD.org>
+Date: Tue, 08 Dec 2009 00:05:27 +0000
+Subject: Fix libusb detection on Linux
+
+Adjust the FreeBSD libusb20 code so that it does not interfere with the
+Linux libusb detection.
+
+Reported by: Robby Workman <rw@rlworkman.net>
+---
+diff --git a/configure.in b/configure.in
+index a8fda51..8363595 100644
+--- a/configure.in
++++ b/configure.in
+@@ -479,9 +479,6 @@ if test "x$with_libpci" != xno ; then
+ fi
+ AM_CONDITIONAL([HAVE_LIBPCI], [test "x$USE_LIBPCI" = "xyes"])
+
+-USE_LIBUSB20=no
+-USE_LIBUSB=no
+-LIBUSB20_LIBS=""
+ AC_ARG_WITH([backend],
+ AS_HELP_STRING([--with-backend=<name>],
+ [backend to use (linux/solaris/freebsd/dummy)]),
+@@ -510,21 +507,25 @@ AM_CONDITIONAL(HALD_COMPILE_FREEBSD, [test x$HALD_BACKEND = xfreebsd], [Compilin
+ AM_CONDITIONAL(HALD_COMPILE_SOLARIS, [test x$HALD_BACKEND = xsolaris], [Compiling for Solaris])
+ AC_SUBST(HALD_BACKEND)
+ if test "x$HALD_BACKEND" = "xfreebsd"; then
+- AC_CHECK_LIB([usb20], [libusb20_dev_get_info], [USE_LIBUSB20=yes], [USE_LIBUSB20=no])
+-fi
+-if test "x$USE_LIBUSB20" = "xno"; then
+- AC_CHECK_LIB([usb], [libusb20_dev_get_info], [USE_LIBUSB=yes], [USE_LIBUSB=no])
+-fi
+-AM_CONDITIONAL([HAVE_LIBUSB20],[test "x$USE_LIBUSB20" = "xyes"])
+-AM_CONDITIONAL([HAVE_LIBUSB20],[test "x$USE_LIBUSB" = "xyes"])
+-if test "x$USE_LIBUSB20" = "xyes"; then
+- AC_DEFINE(HAVE_LIBUSB20, 1, [Set if we need libusb20])
+- LIBUSB20_LIBS="-lusb20"
+-elif test "x$USE_LIBUSB" = "xyes"; then
+- AC_DEFINE(HAVE_LIBUSB20, 1, [Set if we need libsub20])
+- LIBUSB20_LIBS="-lusb"
++ USE_BSDLIBUSB20=no
++ USE_BSDLIBUSB=no
++ LIBUSB20_LIBS=""
++ AC_CHECK_LIB([usb20], [libusb20_dev_get_info], [USE_BSDLIBUSB20=yes], [USE_BSDLIBUSB20=no])
++ if test "x$USE_BSDLIBUSB20" = "xno"; then
++ AC_CHECK_LIB([usb], [libusb20_dev_get_info], [USE_BSDLIBUSB=yes], [USE_BSDLIBUSB=no])
++ fi
++ AM_CONDITIONAL([HAVE_LIBUSB20],[test "x$USE_BSDLIBUSB20" = "xyes" -o "x$USE_BSDLIBUSB" = "xyes"])
++ if test "x$USE_BSDLIBUSB20" = "xyes"; then
++ AC_DEFINE(HAVE_LIBUSB20, 1, [Set if we need libusb20])
++ LIBUSB20_LIBS="-lusb20"
++ elif test "x$USE_BSDLIBUSB" = "xyes"; then
++ AC_DEFINE(HAVE_LIBUSB20, 1, [Set if we need libsub20])
++ LIBUSB20_LIBS="-lusb"
++ fi
++ AC_SUBST(LIBUSB20_LIBS)
++else
++ AM_CONDITIONAL([HAVE_LIBUSB20], [false])
+ fi
+-AC_SUBST(LIBUSB20_LIBS)
+
+ dnl DBUS API is subject to changes
+ AC_DEFINE_UNQUOTED(DBUS_API_SUBJECT_TO_CHANGE, [], [DBUS API is subject to change])
+--
+cgit v0.8.3-6-g21f6
diff --git a/extra/hal/hal b/extra/hal/hal
new file mode 100644
index 000000000..012d456ed
--- /dev/null
+++ b/extra/hal/hal
@@ -0,0 +1,54 @@
+#!/bin/bash
+
+# general config
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+case "$1" in
+ start)
+ #Check for running dbus, start when not running
+ ck_daemon dbus && /etc/rc.d/dbus start
+ if [ -x /etc/rc.d/acpid ]; then
+ ck_daemon acpid && /etc/rc.d/acpid start
+ fi
+ stat_busy "Starting Hardware Abstraction Layer"
+ if [ ! -x /var/cache/hald ] ; then
+ install -m755 -g 82 -o 82 -d /var/cache/hald
+ fi
+ if [ ! -x /var/run/hald ]; then
+ install -m755 -g 82 -o 82 -d /var/run/hald
+ fi
+ if [ ! -x /var/run/hald/hald-local ]; then
+ install -m755 -g 0 -o 0 -d /var/run/hald/hald-local
+ fi
+ if [ ! -x /var/run/hald/hald-runner ]; then
+ install -m755 -g 0 -o 0 -d /var/run/hald/hald-runner
+ fi
+ /usr/sbin/hald
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon hal
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping Hardware Abstraction Layer"
+ [ -f /var/run/hald.pid ] && kill `cat /var/run/hald.pid` &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon hal
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+ ;;
+esac
+exit 0
diff --git a/extra/hal/hal-0.5.9-hide-diagnostic.patch b/extra/hal/hal-0.5.9-hide-diagnostic.patch
new file mode 100644
index 000000000..58c882d77
--- /dev/null
+++ b/extra/hal/hal-0.5.9-hide-diagnostic.patch
@@ -0,0 +1,14 @@
+--- hal-0.5.9/fdi/policy/10osvendor/20-storage-methods.fdi.orig 2007-05-01 21:39:31.000000000 +0000
++++ hal-0.5.9/fdi/policy/10osvendor/20-storage-methods.fdi 2007-05-01 21:51:14.000000000 +0000
+@@ -100,6 +100,11 @@
+ </match>
+ </match>
+
++ <!-- Hide partitions marked as Compaq Diagnostics -->
++ <match key="volume.partition.type" string="0x12">
++ <merge key="volume.ignore" type="bool">true</merge>
++ </match>
++
+ <!-- EFI firmware partitions -->
+ <match key="volume.fstype" string="vfat">
+ <match key="volume.label" string="EFI">
diff --git a/extra/hal/hal-HDAPS-blacklist.patch b/extra/hal/hal-HDAPS-blacklist.patch
new file mode 100644
index 000000000..8a6822817
--- /dev/null
+++ b/extra/hal/hal-HDAPS-blacklist.patch
@@ -0,0 +1,30 @@
+From e1f85fe0cdfa7e4d4ce7a811d0b0c90bf38fba0c Mon Sep 17 00:00:00 2001
+From: Peter Hutterer <peter.hutterer@who-t.net>
+Date: Thu, 25 Jun 2009 09:47:27 +1000
+Subject: [PATCH] Blacklist HDAPS accelerometer device from being picked up in X.
+
+This device posts accelerometer data through ABS_X/ABS_Y, making X unusable
+if it's controlling the pointer.
+---
+ fdi/policy/10osvendor/10-x11-input.fdi | 6 ++++++
+ 1 files changed, 6 insertions(+), 0 deletions(-)
+
+diff --git a/fdi/policy/10osvendor/10-x11-input.fdi b/fdi/policy/10osvendor/10-x11-input.fdi
+index a342421..89ba672 100644
+--- a/fdi/policy/10osvendor/10-x11-input.fdi
++++ b/fdi/policy/10osvendor/10-x11-input.fdi
+@@ -38,5 +38,11 @@
+ <merge key="input.x11_driver" type="string">evdev</merge>
+ </match>
+ </match>
++
++ <!-- http://bugs.freedesktop.org/show_bug.cgi?id=22442
++ Posts accel data through ABS_X/ABS_Y, makes X unusable -->
++ <match key="info.product" contains="ThinkPad HDAPS accelerometer data">
++ <remove key="input.x11_driver" />
++ </match>
+ </device>
+ </deviceinfo>
+--
+1.6.3.rc1.2.g0164.dirty
+
diff --git a/extra/hal/hal-KVM-evdev.patch b/extra/hal/hal-KVM-evdev.patch
new file mode 100644
index 000000000..917655ed1
--- /dev/null
+++ b/extra/hal/hal-KVM-evdev.patch
@@ -0,0 +1,36 @@
+From 7618498eec840cb26474dc47821e083957772706 Mon Sep 17 00:00:00 2001
+From: Peter Hutterer <peter.hutterer@who-t.net>
+Date: Fri, 20 Mar 2009 14:37:24 +1000
+Subject: [PATCH] Add x11_driver for American Megatrends KVM.
+
+This device exposes only ABS_X, ABS_Y and buttons. It gets input.joystick
+assigned but not input.mouse, hence the default evdev mapping doesn't pick up
+on it.
+
+Red Hat Bug 484776 <https://bugzilla.redhat.com/show_bug.cgi?id=484776>
+
+Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+---
+ fdi/policy/10osvendor/10-x11-input.fdi | 6 ++++++
+ 1 files changed, 6 insertions(+), 0 deletions(-)
+
+diff --git a/fdi/policy/10osvendor/10-x11-input.fdi b/fdi/policy/10osvendor/10-x11-input.fdi
+index 769f75b..eb9767e 100644
+--- a/fdi/policy/10osvendor/10-x11-input.fdi
++++ b/fdi/policy/10osvendor/10-x11-input.fdi
+@@ -2,6 +2,12 @@
+ <deviceinfo version="0.2">
+ <device>
+
++ <!-- This KVMS has abs x/y and buttons. It only has inputInfo.joystick
++ set by hal and doesn't get picked up by default -->
++ <match key="input.product" contains="American Megatrends Inc. Virtual Keyboard and Mouse">
++ <merge key="input.x11_driver" type="string">evdev</merge>
++ </match>
++
+ <!-- KVM emulates a USB graphics tablet which works in absolute coordinate mode -->
+ <match key="input.product" contains="QEMU USB Tablet">
+ <merge key="input.x11_driver" type="string">evdev</merge>
+--
+1.6.0.6
+
diff --git a/extra/hal/hal-ignore-internal-dm-devices.patch b/extra/hal/hal-ignore-internal-dm-devices.patch
new file mode 100644
index 000000000..9ad8656ca
--- /dev/null
+++ b/extra/hal/hal-ignore-internal-dm-devices.patch
@@ -0,0 +1,43 @@
+From 6f16321da13f6a7cbd9c424ddba2e727e434fa25 Mon Sep 17 00:00:00 2001
+From: Milan Broz <mbroz@redhat.com>
+Date: Tue, 13 Jul 2010 14:07:32 +0000
+Subject: HAL: Ignore internal DM devices with new DM udev rules
+
+With new device-mapper udev rules are /dev/mapper/* symlinks
+to basic device name /dev/dm-X.
+(Change requested by udev upstream.)
+
+This change breaks temporary-cryptsetup workaround inside hal.
+
+With new dm-udev rules (uncluded since device-mapper 1.02.39)
+there is DM_UDEV_DISABLE_OTHER_RULES_FLAG variable
+which controls that scan should be ignored for this device
+(it is set for all internal devices, including temporary cryptsetup,
+internal parts of lvm devices etc.)
+
+Ignore device if this flag is set.
+
+See bugs
+https://bugzilla.redhat.com/show_bug.cgi?id=613909
+http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=586286
+
+Signed-off-by: Milan Broz <mbroz@redhat.com>
+---
+diff --git a/hald/linux/osspec.c b/hald/linux/osspec.c
+index a8233fd..6d616bc 100644
+--- a/hald/linux/osspec.c
++++ b/hald/linux/osspec.c
+@@ -215,6 +215,11 @@ hald_udev_data (GIOChannel *source, GIOCondition condition, gpointer user_data)
+ g_free (str);
+ }
+ g_free (dstr);
++ } else if (strncmp(key, "DM_UDEV_DISABLE_OTHER_RULES_FLAG=", 33) == 0) {
++ if (strtoul(&key[33], NULL, 10) == 1) {
++ HAL_INFO (("ignoring device requested by DM udev rules"));
++ goto invalid;
++ }
+ }
+ }
+
+--
+cgit v0.8.3-6-g21f6
diff --git a/extra/hal/hal-remove-dell-killswitch.patch b/extra/hal/hal-remove-dell-killswitch.patch
new file mode 100644
index 000000000..ae0cf7a2b
--- /dev/null
+++ b/extra/hal/hal-remove-dell-killswitch.patch
@@ -0,0 +1,201 @@
+diff -upr hal-0.5.12/tools/linux/hal-system-killswitch-get-power-linux hal-0.5.12.new/tools/linux/hal-system-killswitch-get-power-linux
+--- hal-0.5.12/tools/linux/hal-system-killswitch-get-power-linux 2008-08-22 07:34:47.000000000 +0100
++++ hal-0.5.12.new/tools/linux/hal-system-killswitch-get-power-linux 2009-03-03 10:45:20.000000000 +0000
+@@ -8,11 +8,6 @@
+ # the Free Software Foundation; either version 2 of the License, or
+ # (at your option) any later version.
+
+-DELL_WCTL=/usr/bin/dellWirelessCtl
+-if [ -x "/usr/sbin/dellWirelessCtl" ]; then
+- DELL_WCTL=/usr/sbin/dellWirelessCtl
+-fi
+-
+ if [ "$HAL_PROP_KILLSWITCH_TYPE" = "bluetooth" ]; then
+ if [ "$HAL_PROP_KILLSWITCH_ACCESS_METHOD" = "sonypic" ]; then
+ value="`hal-system-sonypic getbluetooth`"
+@@ -22,25 +17,6 @@ if [ "$HAL_PROP_KILLSWITCH_TYPE" = "blue
+ exit 1
+ fi
+ exit ${value}
+- elif [ "$HAL_PROP_KILLSWITCH_ACCESS_METHOD" = "dell" ]; then
+- if [ -x "$DELL_WCTL" ]; then
+- # TODO: write our own binary that links with libsmbios?
+- $DELL_WCTL --st_bt
+- value=$?
+- if [ "$value" = "0" ]; then
+- exit 1
+- elif [ "$value" = "1" ]; then
+- exit 0
+- else
+- echo "org.freedesktop.Hal.Device.KillSwitch.NotSupported" >&2
+- echo "dellWirelessCtl returned $value" >&2
+- exit 1
+- fi
+- else
+- echo "org.freedesktop.Hal.Device.KillSwitch.NotSupported" >&2
+- echo "dellWirelessCtl ($DELL_WCTL) not available or executable" >&2
+- exit 1
+- fi
+ elif [ "$HAL_PROP_KILLSWITCH_ACCESS_METHOD" = thinkpad -a -r "$HAL_PROP_LINUX_SYSFS_PATH" ]; then
+ read value < $HAL_PROP_LINUX_SYSFS_PATH 2> /dev/null
+ if [ $? -eq 0 ]; then
+@@ -55,56 +31,6 @@ if [ "$HAL_PROP_KILLSWITCH_TYPE" = "blue
+ echo "Access type not supported" >&2
+ exit 1
+ fi
+-elif [ "$HAL_PROP_KILLSWITCH_TYPE" = "wlan" ]; then
+- if [ "$HAL_PROP_KILLSWITCH_ACCESS_METHOD" = "dell" ]; then
+- if [ -x "$DELL_WCTL" ]; then
+- # TODO: write our own binary that links with libsmbios?
+- $DELL_WCTL --st_wlan
+- value=$?
+- if [ "$value" = "0" ]; then
+- exit 1
+- elif [ "$value" = "1" ]; then
+- exit 0
+- else
+- echo "org.freedesktop.Hal.Device.KillSwitch.NotSupported" >&2
+- echo "dellWirelessCtl returned $value" >&2
+- exit 1
+- fi
+- else
+- echo "org.freedesktop.Hal.Device.KillSwitch.NotSupported" >&2
+- echo "dellWirelessCtl ($DELL_WCTL) not available or executable" >&2
+- exit 1
+- fi
+- else
+- echo "org.freedesktop.Hal.Device.KillSwitch.NotSupported" >&2
+- echo "Access type not supported" >&2
+- exit 1
+- fi
+-elif [ "$HAL_PROP_KILLSWITCH_TYPE" = "wwan" ]; then
+- if [ "$HAL_PROP_KILLSWITCH_ACCESS_METHOD" = "dell" ]; then
+- if [ -x "$DELL_WCTL" ]; then
+- # TODO: write our own binary that links with libsmbios?
+- $DELL_WCTL --st_wwan
+- value=$?
+- if [ "$value" = "0" ]; then
+- exit 1
+- elif [ "$value" = "1" ]; then
+- exit 0
+- else
+- echo "org.freedesktop.Hal.Device.KillSwitch.NotSupported" >&2
+- echo "dellWirelessCtl returned $value" >&2
+- exit 1
+- fi
+- else
+- echo "org.freedesktop.Hal.Device.KillSwitch.NotSupported" >&2
+- echo "dellWirelessCtl ($DELL_WCTL) not available or executable" >&2
+- exit 1
+- fi
+- else
+- echo "org.freedesktop.Hal.Device.KillSwitch.NotSupported" >&2
+- echo "Access type not supported" >&2
+- exit 1
+- fi
+ else
+ echo "org.freedesktop.Hal.Device.KillSwitch.NotSupported" >&2
+ echo "Killswitch type not supported" >&2
+diff -upr hal-0.5.12/tools/linux/hal-system-killswitch-set-power-linux hal-0.5.12.new/tools/linux/hal-system-killswitch-set-power-linux
+--- hal-0.5.12/tools/linux/hal-system-killswitch-set-power-linux 2008-10-24 09:45:54.000000000 +0100
++++ hal-0.5.12.new/tools/linux/hal-system-killswitch-set-power-linux 2009-03-03 10:44:49.000000000 +0000
+@@ -8,11 +8,6 @@
+ # the Free Software Foundation; either version 2 of the License, or
+ # (at your option) any later version.
+
+-DELL_WCTL=/usr/bin/dellWirelessCtl
+-if [ -x "/usr/sbin/dellWirelessCtl" ]; then
+- DELL_WCTL=/usr/sbin/dellWirelessCtl
+-fi
+-
+ if [ "$HAL_PROP_KILLSWITCH_TYPE" = "bluetooth" ]; then
+ if [ "$HAL_PROP_KILLSWITCH_ACCESS_METHOD" = "sonypic" ]; then
+ hal-system-sonypic setbluetooth $value
+@@ -23,26 +18,6 @@ if [ "$HAL_PROP_KILLSWITCH_TYPE" = "blue
+ exit 1
+ fi
+ exit 0
+- elif [ "$HAL_PROP_KILLSWITCH_ACCESS_METHOD" = "dell" ]; then
+- if [ -x "$DELL_WCTL" ]; then
+- # TODO: write our own binary that links with libsmbios?
+- if [ "$value" = "true" ]; then
+- $DELL_WCTL --bt 1
+- ret=$?
+- else
+- $DELL_WCTL --bt 0
+- ret=$?
+- fi
+- if [ "$ret" != "0" ]; then
+- echo "org.freedesktop.Hal.Device.KillSwitch.NotSupported" >&2
+- echo "dellWirelessCtl returned $ret" >&2
+- exit 1
+- fi
+- else
+- echo "org.freedesktop.Hal.Device.KillSwitch.NotSupported" >&2
+- echo "dellWirelessCtl ($DELL_WCTL) not available or executable" >&2
+- exit 1
+- fi
+ elif [ "$HAL_PROP_KILLSWITCH_ACCESS_METHOD" = thinkpad -a -w "$HAL_PROP_LINUX_SYSFS_PATH" ]; then
+ if [ "$value" = "true" ]; then
+ bit=1;
+@@ -61,60 +36,6 @@ if [ "$HAL_PROP_KILLSWITCH_TYPE" = "blue
+ echo "Access type not supported" >&2
+ exit 1
+ fi
+-elif [ "$HAL_PROP_KILLSWITCH_TYPE" = "wlan" ]; then
+- if [ "$HAL_PROP_KILLSWITCH_ACCESS_METHOD" = "dell" ]; then
+- if [ -x "$DELL_WCTL" ]; then
+- # As a side effect we disable the physical kill switch
+- # TODO: write our own binary that links with libsmbios?
+- if [ "$value" = "true" ]; then
+- $DELL_WCTL --sw_wlan 0 --wlan 1
+- ret=$?
+- else
+- $DELL_WCTL --sw_wlan 0 --wlan 0
+- ret=$?
+- fi
+- if [ "$ret" != "0" ]; then
+- echo "org.freedesktop.Hal.Device.KillSwitch.NotSupported" >&2
+- echo "dellWirelessCtl returned $ret" >&2
+- exit 1
+- fi
+- else
+- echo "org.freedesktop.Hal.Device.KillSwitch.NotSupported" >&2
+- echo "dellWirelessCtl ($DELL_WCTL) not available or executable" >&2
+- exit 1
+- fi
+- else
+- echo "org.freedesktop.Hal.Device.KillSwitch.NotSupported" >&2
+- echo "Access type not supported" >&2
+- exit 1
+- fi
+-elif [ "$HAL_PROP_KILLSWITCH_TYPE" = "wwan" ]; then
+- if [ "$HAL_PROP_KILLSWITCH_ACCESS_METHOD" = "dell" ]; then
+- if [ -x "$DELL_WCTL" ]; then
+- # As a side effect we disable the physical kill switch
+- # TODO: write our own binary that links with libsmbios?
+- if [ "$value" = "true" ]; then
+- $DELL_WCTL --sw_wwan 0 --wwan 1
+- ret=$?
+- else
+- $DELL_WCTL --sw_wwan 0 --wwan 0
+- ret=$?
+- fi
+- if [ "$ret" != "0" ]; then
+- echo "org.freedesktop.Hal.Device.KillSwitch.NotSupported" >&2
+- echo "dellWirelessCtl returned $ret" >&2
+- exit 1
+- fi
+- else
+- echo "org.freedesktop.Hal.Device.KillSwitch.NotSupported" >&2
+- echo "dellWirelessCtl ($DELL_WCTL) not available or executable" >&2
+- exit 1
+- fi
+- else
+- echo "org.freedesktop.Hal.Device.KillSwitch.NotSupported" >&2
+- echo "Access type not supported" >&2
+- exit 1
+- fi
+ else
+ echo "org.freedesktop.Hal.Device.KillSwitch.NotSupported" >&2
+ echo "Killswitch type not supported" >&2
diff --git a/extra/hal/hal-use-at-console.patch b/extra/hal/hal-use-at-console.patch
new file mode 100644
index 000000000..0b32f17f0
--- /dev/null
+++ b/extra/hal/hal-use-at-console.patch
@@ -0,0 +1,45 @@
+diff -up hal-0.5.13/hal.conf.in.drop-polkit hal-0.5.13/hal.conf.in
+--- hal-0.5.13/hal.conf.in.drop-polkit 2009-02-04 17:07:23.000000000 -0500
++++ hal-0.5.13/hal.conf.in 2009-07-29 23:15:16.866766074 -0400
+@@ -25,7 +25,41 @@
+ send_interface="org.freedesktop.Hal.Device"/>
+ <allow send_destination="org.freedesktop.Hal"
+ send_interface="org.freedesktop.Hal.Manager"/>
++ </policy>
++
++ <!-- Only allow users at the local console to manipulate devices -->
++ <policy at_console="true">
++ <allow send_destination="org.freedesktop.Hal"
++ send_interface="org.freedesktop.Hal.Device.CPUFreq"/>
++ <allow send_destination="org.freedesktop.Hal"
++ send_interface="org.freedesktop.Hal.Device.DockStation"/>
++ <allow send_destination="org.freedesktop.Hal"
++ send_interface="org.freedesktop.Hal.Device.KillSwitch"/>
++ <allow send_destination="org.freedesktop.Hal"
++ send_interface="org.freedesktop.Hal.Device.KeyboardBacklight"/>
++ <allow send_destination="org.freedesktop.Hal"
++ send_interface="org.freedesktop.Hal.Device.LaptopPanel"/>
++ <allow send_destination="org.freedesktop.Hal"
++ send_interface="org.freedesktop.Hal.Device.Leds"/>
++ <allow send_destination="org.freedesktop.Hal"
++ send_interface="org.freedesktop.Hal.Device.LightSensor"/>
++ <allow send_destination="org.freedesktop.Hal"
++ send_interface="org.freedesktop.Hal.Device.Storage"/>
++ <allow send_destination="org.freedesktop.Hal"
++ send_interface="org.freedesktop.Hal.Device.Storage.Removable"/>
++ <allow send_destination="org.freedesktop.Hal"
++ send_interface="org.freedesktop.Hal.Device.SystemPowerManagement"/>
++ <allow send_destination="org.freedesktop.Hal"
++ send_interface="org.freedesktop.Hal.Device.Volume"/>
++ <allow send_destination="org.freedesktop.Hal"
++ send_interface="org.freedesktop.Hal.Device.Volume.Crypto"/>
++ <allow send_destination="org.freedesktop.Hal"
++ send_interface="org.freedesktop.Hal.Device.WakeOnLan"/>
++
++ </policy>
+
++ <!-- well,...and root too -->
++ <policy user="root">
+ <allow send_destination="org.freedesktop.Hal"
+ send_interface="org.freedesktop.Hal.Device.CPUFreq"/>
+ <allow send_destination="org.freedesktop.Hal"
diff --git a/extra/hal/hal-xen-unignore-axes.patch b/extra/hal/hal-xen-unignore-axes.patch
new file mode 100644
index 000000000..b248639b7
--- /dev/null
+++ b/extra/hal/hal-xen-unignore-axes.patch
@@ -0,0 +1,39 @@
+From e48f59d2b9bcb43ea8a7b8c884dcb73c8f65b170 Mon Sep 17 00:00:00 2001
+From: Peter Hutterer <peter.hutterer@who-t.net>
+Date: Mon, 19 Oct 2009 14:27:20 +1000
+Subject: [PATCH] Un-ignore absolute axes for the Xen Virtual Pointer.
+
+The evdev-internal axis type picking fails for the Xen Virtual Pointer as it
+exposes both relative and absolute axes. Evdev picks the relative axes by
+default, leading to a immovable pointer if the Xen backend only sends
+absolute coordinates.
+
+Explicitly tell evdev to not ignore the absolute axes.
+
+https://bugzilla.redhat.com/show_bug.cgi?id=523914
+
+Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+---
+ fdi/policy/10osvendor/10-x11-input.fdi | 7 +++++++
+ 1 files changed, 7 insertions(+), 0 deletions(-)
+
+diff --git a/fdi/policy/10osvendor/10-x11-input.fdi b/fdi/policy/10osvendor/10-x11-input.fdi
+index 89ba672..752c4ab 100644
+--- a/fdi/policy/10osvendor/10-x11-input.fdi
++++ b/fdi/policy/10osvendor/10-x11-input.fdi
+@@ -44,5 +44,12 @@
+ <match key="info.product" contains="ThinkPad HDAPS accelerometer data">
+ <remove key="input.x11_driver" />
+ </match>
++
++ <!-- https://bugzilla.redhat.com/show_bug.cgi?id=523914
++ Mouse does not move in PV Xen guest -->
++ <match key="info.product" contains="Xen Virtual Pointer">
++ <merge key="input.x11_options.IgnoreAbsoluteAxes" type="string">false</merge>
++ <merge key="input.x11_options.IgnoreRelativeAxes" type="string">false</merge>
++ </match>
+ </device>
+ </deviceinfo>
+--
+1.6.2.5
+
diff --git a/extra/hal/hal.install b/extra/hal/hal.install
new file mode 100644
index 000000000..d6afee384
--- /dev/null
+++ b/extra/hal/hal.install
@@ -0,0 +1,24 @@
+post_install() {
+ getent group hal >/dev/null || usr/sbin/groupadd -g 82 hal
+ getent group optical >/dev/null || usr/sbin/groupadd -g 93 optical
+ getent group floppy >/dev/null || usr/sbin/groupadd -g 94 floppy
+ getent group storage >/dev/null || usr/sbin/groupadd -g 95 storage
+ getent passwd hal >/dev/null || usr/sbin/useradd -c 'HAL daemon' -u 82 -g hal -G optical,floppy,storage -d '/' -s /bin/false hal
+ usr/bin/passwd -l hal &>/dev/null
+}
+
+# arg 1: the new package version
+# arg 2: the old package version
+post_upgrade() {
+ post_install $1
+}
+
+# arg 1: the old package version
+post_remove() {
+ if getent passwd hal &>/dev/null; then
+ usr/sbin/userdel hal
+ fi
+ if getent group hal &>/dev/null; then
+ usr/sbin/groupdel hal
+ fi
+}
diff --git a/extra/hal/handle-input-touchpad.patch b/extra/hal/handle-input-touchpad.patch
new file mode 100644
index 000000000..9cd646422
--- /dev/null
+++ b/extra/hal/handle-input-touchpad.patch
@@ -0,0 +1,101 @@
+From 6dccf8e3ad181e8f56b1d2a994ec50a1953a1c2d Mon Sep 17 00:00:00 2001
+From: Michael Witten <mfwitten@gmail.com>
+Date: Wed, 06 Jan 2010 00:53:17 +0000
+Subject: Policy: handle `input.touchpad' explicitly
+
+This commit essentially duplicates the policy for:
+
+ <match key="info.capabilities" contains="input.mouse">
+
+and then changes `input.mouse' to `input.touchpad'. This
+is necessary because in Linus Torvalds's Linux repo:
+
+ git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
+
+the following commit:
+
+ commit 7105d2ea73e1391b681d0e1212c42f561c64d429
+ Author: Dmitry Torokhov <dmitry.torokhov@gmail.com>
+ Date: Fri Dec 11 23:54:54 2009 -0800
+
+ Input: ALPS - do not set REL_X/REL_Y capabilities on the touchpad
+
+ Relative events are only reported via secondary device therefore device
+ associated with the touchpad should not advertise these capabilities.
+
+ Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
+
+made these few changes:
+
+ diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c
+ index a3f492a..b03e7e0 100644
+ /--- a/drivers/input/mouse/alps.c
+ /+++ b/drivers/input/mouse/alps.c
+ /@@ -487,6 +487,17 @@ int alps_init(struct psmouse *psmouse)
+ if (alps_hw_init(psmouse))
+ goto init_fail;
+
+ + /*
+ + * Undo part of setup done for us by psmouse core since touchpad
+ + * is not a relative device.
+ + */
+ + __clear_bit(EV_REL, dev1->evbit);
+ + __clear_bit(REL_X, dev1->relbit);
+ + __clear_bit(REL_Y, dev1->relbit);
+ +
+ + /*
+ + * Now set up our capabilities.
+ + */
+ dev1->evbit[BIT_WORD(EV_KEY)] |= BIT_MASK(EV_KEY);
+ dev1->keybit[BIT_WORD(BTN_TOUCH)] |= BIT_MASK(BTN_TOUCH);
+ dev1->keybit[BIT_WORD(BTN_TOOL_FINGER)] |= BIT_MASK(BTN_TOOL_FINGER);
+
+so that HAL no longer adds:
+
+ input.mouse
+
+to an ALPS touchpad's:
+
+ info.capabilities
+
+so that HAL no longer marks the ALPS touchpad with:
+
+ input.x11_driver = 'evdev'
+
+because the policy file:
+
+ fdi/policy/10osvendor/10-x11-input.fdi
+
+doesn't define the policy for:
+
+ <match key="info.capabilities" contains="input.touchpad">
+
+which was previous unnecessary because everything used to
+be caught by the policy for:
+
+ <match key="info.capabilities" contains="input.mouse">
+
+Signed-off-by: Michael Witten <mfwitten@gmail.com>
+Signed-off-by: Martin Pitt <martin.pitt@ubuntu.com>
+---
+diff --git a/fdi/policy/10osvendor/10-x11-input.fdi b/fdi/policy/10osvendor/10-x11-input.fdi
+index cff8fc5..8bbe263 100644
+--- a/fdi/policy/10osvendor/10-x11-input.fdi
++++ b/fdi/policy/10osvendor/10-x11-input.fdi
+@@ -16,6 +16,14 @@
+ </match>
+ </match>
+
++ <match key="info.capabilities" contains="input.touchpad">
++ <merge key="input.x11_driver" type="string">mouse</merge>
++ <match key="/org/freedesktop/Hal/devices/computer:system.kernel.name"
++ string="Linux">
++ <merge key="input.x11_driver" type="string">evdev</merge>
++ </match>
++ </match>
++
+ <match key="info.capabilities" contains="input.tablet">
+ <match key="/org/freedesktop/Hal/devices/computer:system.kernel.name"
+ string="Linux">
+--
+cgit v0.8.3-6-g21f6
diff --git a/extra/hal/macbook-fix-ioperm.patch b/extra/hal/macbook-fix-ioperm.patch
new file mode 100644
index 000000000..14d0b392d
--- /dev/null
+++ b/extra/hal/macbook-fix-ioperm.patch
@@ -0,0 +1,41 @@
+From 597c1ffffd61a15a334ce42f2a569c59f0270bcb Mon Sep 17 00:00:00 2001
+From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
+Date: Thu, 25 Feb 2010 10:25:18 +0000
+Subject: Fix incorrect arguments to ioperm() call
+
+The second argument of ioperm() is not the last port to be accessed
+but rather length of the port range [port, port + len).
+
+Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
+Signed-off-by: Martin Pitt <martin.pitt@ubuntu.com>
+---
+diff --git a/hald/linux/addons/addon-imac-backlight.c b/hald/linux/addons/addon-imac-backlight.c
+index e869192..54e4ea3 100644
+--- a/hald/linux/addons/addon-imac-backlight.c
++++ b/hald/linux/addons/addon-imac-backlight.c
+@@ -158,7 +158,8 @@ main (int argc, char **argv)
+ goto out;
+ }
+
+- if (ioperm(0xB2, 0xB3, 1) < 0)
++ /* Allow access to ports 0xB2 and 0xB3 */
++ if (ioperm(0xB2, 2, 1) < 0)
+ {
+ HAL_ERROR (("ioperm failed (you should be root)."));
+ exit(1);
+diff --git a/hald/linux/addons/addon-macbookpro-backlight.c b/hald/linux/addons/addon-macbookpro-backlight.c
+index 2a6fef6..c1bbbac 100644
+--- a/hald/linux/addons/addon-macbookpro-backlight.c
++++ b/hald/linux/addons/addon-macbookpro-backlight.c
+@@ -507,7 +507,8 @@ main (int argc, char *argv[])
+ state = INREG(0x7ae4);
+ OUTREG(0x7ae4, state);
+
+- if (ioperm (0x300, 0x304, 1) < 0) {
++ /* Allow access to porta 0x300 through 0x304 */
++ if (ioperm (0x300, 5, 1) < 0) {
+ HAL_ERROR (("ioperm failed (you should be root)."));
+ exit(1);
+ }
+--
+cgit v0.8.3-6-g21f6
diff --git a/extra/hal/path-max.patch b/extra/hal/path-max.patch
new file mode 100644
index 000000000..304185d7d
--- /dev/null
+++ b/extra/hal/path-max.patch
@@ -0,0 +1,31 @@
+From a2c3dd5a04d79265772c09c4280606d5c2ed72c6 Mon Sep 17 00:00:00 2001
+From: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Mon, 04 Jan 2010 15:56:13 +0000
+Subject: Bump HAL_PATH_MAX to 4096
+
+Some bits in the code use realpath() with destination paths of size
+HAL_PATH_MAX. This potentially breaks on systems where PATH_MAX is bigger than
+HAL_PATH_MAX (which was 512 until now).
+
+Since we can't use PATH_MAX directly (due to platforms like GNU/Hurd, which
+apparently don't have it), just bump HAL_PATH_MAX to 4096 (as PATH_MAX is on
+Linux), to avoid potential buffer overflows and also fix hal on Linux when
+enabling FORTIFY in gcc.
+
+https://bugs.freedesktop.org/show_bug.cgi?id=25888
+---
+diff --git a/hald/util.h b/hald/util.h
+index c2a1584..7883333 100644
+--- a/hald/util.h
++++ b/hald/util.h
+@@ -38,7 +38,7 @@
+ #endif
+
+ #define HAL_NAME_MAX 256
+-#define HAL_PATH_MAX 512
++#define HAL_PATH_MAX 4096
+
+ gboolean hal_util_remove_trailing_slash (gchar *path);
+
+--
+cgit v0.8.3-6-g21f6
diff --git a/extra/happy/PKGBUILD b/extra/happy/PKGBUILD
new file mode 100644
index 000000000..47445be85
--- /dev/null
+++ b/extra/happy/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 103748 2010-12-22 17:23:27Z remy $
+# Maintainer: simo <simo@archlinux.org>
+# Contributor: Vesa Kaihlavirta <vegai@iki.fi>
+
+pkgname=happy
+pkgver=1.18.6
+pkgrel=1
+pkgdesc="The Parser Generator for Haskell"
+url="http://www.haskell.org/happy/"
+arch=('i686' 'x86_64')
+license=("custom:BSD3")
+depends=(gmp)
+makedepends=(ghc=7.0.1 haskell-mtl=2.0.1.0)
+options=(strip)
+source=(http://hackage.haskell.org/packages/archive/$pkgname/$pkgver/$pkgname-$pkgver.tar.gz)
+md5sums=('7d4d1425f5068633cd477a2b2216880d')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ runhaskell Setup.lhs configure -O --prefix=/usr
+ runhaskell Setup.lhs build
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ runhaskell Setup.lhs copy --destdir=${pkgdir}
+ install -D -m644 LICENSE $startdir/pkg/usr/share/licenses/$pkgname/LICENSE
+}
+
diff --git a/extra/haskell-binary/PKGBUILD b/extra/haskell-binary/PKGBUILD
new file mode 100644
index 000000000..a5e1b2b9a
--- /dev/null
+++ b/extra/haskell-binary/PKGBUILD
@@ -0,0 +1,39 @@
+# Maintainer: Vesa Kaihlavirta <vesa@archlinux.org>
+# Contributor: Arch Haskell Team <arch-haskell@haskell.org>
+# Package generated by cabal2arch 0.7.5
+_hkgname=binary
+pkgname=haskell-binary
+pkgver=0.5.0.2
+pkgrel=7
+pkgdesc="Binary serialisation for Haskell values using lazy ByteStrings"
+url="http://hackage.haskell.org/package/binary"
+license=('custom:BSD3')
+arch=('i686' 'x86_64')
+depends=(ghc=7.0.2 sh)
+options=('strip')
+source=(http://hackage.haskell.org/packages/archive/${_hkgname}/${pkgver}/${_hkgname}-${pkgver}.tar.gz)
+install=${pkgname}.install
+md5sums=('6bf8f3d1441602c9ab09a75e3bd6e926')
+
+build() {
+ cd ${srcdir}/${_hkgname}-${pkgver}
+ runhaskell Setup configure -O -p --enable-split-objs --enable-shared \
+ --prefix=/usr --docdir=/usr/share/doc/${pkgname} \
+ --libsubdir=\$compiler/site-local/\$pkgid
+ runhaskell Setup build
+ runhaskell Setup haddock
+ runhaskell Setup register --gen-script
+ runhaskell Setup unregister --gen-script
+ sed -i -r -e "s|ghc-pkg.*unregister[^ ]* |&'--force' |" unregister.sh
+}
+
+package() {
+ cd ${srcdir}/${_hkgname}-${pkgver}
+ install -D -m744 register.sh ${pkgdir}/usr/share/haskell/${pkgname}/register.sh
+ install -m744 unregister.sh ${pkgdir}/usr/share/haskell/${pkgname}/unregister.sh
+ install -d -m755 ${pkgdir}/usr/share/doc/ghc/html/libraries
+ ln -s /usr/share/doc/${pkgname}/html ${pkgdir}/usr/share/doc/ghc/html/libraries/${_hkgname}
+ runhaskell Setup copy --destdir=${pkgdir}
+ install -D -m644 LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+ rm -f ${pkgdir}/usr/share/doc/${pkgname}/LICENSE
+}
diff --git a/extra/haskell-binary/haskell-binary.install b/extra/haskell-binary/haskell-binary.install
new file mode 100644
index 000000000..0084ebef8
--- /dev/null
+++ b/extra/haskell-binary/haskell-binary.install
@@ -0,0 +1,18 @@
+HS_DIR=usr/share/haskell/haskell-binary
+post_install() {
+ ${HS_DIR}/register.sh
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
+pre_upgrade() {
+ ${HS_DIR}/unregister.sh
+}
+post_upgrade() {
+ ${HS_DIR}/register.sh
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
+pre_remove() {
+ ${HS_DIR}/unregister.sh
+}
+post_remove() {
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
diff --git a/extra/haskell-cgi/PKGBUILD b/extra/haskell-cgi/PKGBUILD
new file mode 100644
index 000000000..608249fff
--- /dev/null
+++ b/extra/haskell-cgi/PKGBUILD
@@ -0,0 +1,39 @@
+# Maintainer: Rémy Oudompheng <remy@archlinux.org>
+# Contributor: Arch Haskell Team <arch-haskell@haskell.org>
+# Package generated by cabal2arch 0.7.6
+_hkgname=cgi
+pkgname=haskell-cgi
+pkgver=3001.1.7.4
+pkgrel=2.1
+pkgdesc="A library for writing CGI programs"
+url="http://hackage.haskell.org/package/${_hkgname}"
+license=('custom:BSD3')
+arch=('i686' 'x86_64')
+depends=('ghc=7.0.2' 'haskell-mtl=2.0.1.0' 'haskell-network=2.3.0.2' 'haskell-parsec=3.1.1' 'haskell-xhtml=3000.2.0.1')
+options=('strip')
+source=(http://hackage.haskell.org/packages/archive/${_hkgname}/${pkgver}/${_hkgname}-${pkgver}.tar.gz)
+install=${pkgname}.install
+md5sums=('0e551afc8d6f39aaa70520e31de26506')
+
+build() {
+ cd ${srcdir}/${_hkgname}-${pkgver}
+ runhaskell Setup configure -O -p --enable-split-objs --enable-shared \
+ --prefix=/usr --docdir=/usr/share/doc/${pkgname} \
+ --libsubdir=\$compiler/site-local/\$pkgid
+ runhaskell Setup build
+ runhaskell Setup haddock
+ runhaskell Setup register --gen-script
+ runhaskell Setup unregister --gen-script
+ sed -i -r -e "s|ghc-pkg.*unregister[^ ]* |&'--force' |" unregister.sh
+}
+
+package() {
+ cd ${srcdir}/${_hkgname}-${pkgver}
+ install -D -m744 register.sh ${pkgdir}/usr/share/haskell/${pkgname}/register.sh
+ install -m744 unregister.sh ${pkgdir}/usr/share/haskell/${pkgname}/unregister.sh
+ install -d -m755 ${pkgdir}/usr/share/doc/ghc/html/libraries
+ ln -s /usr/share/doc/${pkgname}/html ${pkgdir}/usr/share/doc/ghc/html/libraries/${_hkgname}
+ runhaskell Setup copy --destdir=${pkgdir}
+ install -D -m644 LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+ rm -f ${pkgdir}/usr/share/doc/${pkgname}/LICENSE
+}
diff --git a/extra/haskell-cgi/haskell-cgi.install b/extra/haskell-cgi/haskell-cgi.install
new file mode 100644
index 000000000..533fe4dc5
--- /dev/null
+++ b/extra/haskell-cgi/haskell-cgi.install
@@ -0,0 +1,18 @@
+HS_DIR=usr/share/haskell/haskell-cgi
+post_install() {
+ ${HS_DIR}/register.sh
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
+pre_upgrade() {
+ ${HS_DIR}/unregister.sh
+}
+post_upgrade() {
+ ${HS_DIR}/register.sh
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
+pre_remove() {
+ ${HS_DIR}/unregister.sh
+}
+post_remove() {
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
diff --git a/extra/haskell-dataenc/PKGBUILD b/extra/haskell-dataenc/PKGBUILD
new file mode 100644
index 000000000..cee342409
--- /dev/null
+++ b/extra/haskell-dataenc/PKGBUILD
@@ -0,0 +1,39 @@
+# Maintainer: Vesa Kaihlavirta <vesa@archlinux.org>
+# Contributor: Arch Haskell Team <arch-haskell@haskell.org>
+# Package generated by cabal2arch 0.7.5
+_hkgname=dataenc
+pkgname=haskell-dataenc
+pkgver=0.13.0.4
+pkgrel=3.1
+pkgdesc="Data encoding library"
+url="http://hackage.haskell.org/package/dataenc"
+license=('custom:BSD3')
+arch=('i686' 'x86_64')
+depends=(ghc=7.0.2 sh)
+options=('strip')
+source=(http://hackage.haskell.org/packages/archive/${_hkgname}/${pkgver}/${_hkgname}-${pkgver}.tar.gz)
+install=${pkgname}.install
+md5sums=('4764fa7f75ed3ee95a759d67d1347d46')
+
+build() {
+ cd ${srcdir}/${_hkgname}-${pkgver}
+ runhaskell Setup configure -O -p --enable-split-objs --enable-shared \
+ --prefix=/usr --docdir=/usr/share/doc/${pkgname} \
+ --libsubdir=\$compiler/site-local/\$pkgid
+ runhaskell Setup build
+ runhaskell Setup haddock
+ runhaskell Setup register --gen-script
+ runhaskell Setup unregister --gen-script
+ sed -i -r -e "s|ghc-pkg.*unregister[^ ]* |&'--force' |" unregister.sh
+}
+
+package() {
+ cd ${srcdir}/${_hkgname}-${pkgver}
+ install -D -m744 register.sh ${pkgdir}/usr/share/haskell/${pkgname}/register.sh
+ install -m744 unregister.sh ${pkgdir}/usr/share/haskell/${pkgname}/unregister.sh
+ install -d -m755 ${pkgdir}/usr/share/doc/ghc/html/libraries
+ ln -s /usr/share/doc/${pkgname}/html ${pkgdir}/usr/share/doc/ghc/html/libraries/${_hkgname}
+ runhaskell Setup copy --destdir=${pkgdir}
+ install -D -m644 LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+ rm -f ${pkgdir}/usr/share/doc/${pkgname}/LICENSE
+}
diff --git a/extra/haskell-dataenc/haskell-dataenc.install b/extra/haskell-dataenc/haskell-dataenc.install
new file mode 100644
index 000000000..9c1bbff01
--- /dev/null
+++ b/extra/haskell-dataenc/haskell-dataenc.install
@@ -0,0 +1,18 @@
+HS_DIR=usr/share/haskell/haskell-dataenc
+post_install() {
+ ${HS_DIR}/register.sh
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
+pre_upgrade() {
+ ${HS_DIR}/unregister.sh
+}
+post_upgrade() {
+ ${HS_DIR}/register.sh
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
+pre_remove() {
+ ${HS_DIR}/unregister.sh
+}
+post_remove() {
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
diff --git a/extra/haskell-deepseq/PKGBUILD b/extra/haskell-deepseq/PKGBUILD
new file mode 100644
index 000000000..f9a01956b
--- /dev/null
+++ b/extra/haskell-deepseq/PKGBUILD
@@ -0,0 +1,38 @@
+# Maintainer: Vesa Kaihlavirta <vesa@archlinux.org>
+# Contributor: Arch Haskell Team <arch-haskell@haskell.org>
+# Package generated by cabal2arch 0.7.6
+_hkgname=deepseq
+pkgname=haskell-deepseq
+pkgver=1.1.0.2
+pkgrel=1.1
+pkgdesc="Fully evaluate data structures"
+url="http://hackage.haskell.org/package/${_hkgname}"
+license=('custom:BSD3')
+arch=('i686' 'x86_64')
+depends=(ghc=7.0.2 sh)
+options=('strip')
+source=(http://hackage.haskell.org/packages/archive/${_hkgname}/${pkgver}/${_hkgname}-${pkgver}.tar.gz)
+install=${pkgname}.install
+md5sums=('90b66480f0eb659c1db209ee703e0162')
+
+build() {
+ cd ${srcdir}/${_hkgname}-${pkgver}
+ runhaskell Setup configure -O -p --enable-split-objs --enable-shared --prefix=/usr \
+ --docdir=/usr/share/doc/${pkgname} --libsubdir=\$compiler/site-local/\$pkgid
+ runhaskell Setup build
+ runhaskell Setup haddock
+ runhaskell Setup register --gen-script
+ runhaskell Setup unregister --gen-script
+ sed -i -r -e "s|ghc-pkg.*unregister[^ ]* |&'--force' |" unregister.sh
+}
+
+package() {
+ cd ${srcdir}/${_hkgname}-${pkgver}
+ install -D -m744 register.sh ${pkgdir}/usr/share/haskell/${pkgname}/register.sh
+ install -m744 unregister.sh ${pkgdir}/usr/share/haskell/${pkgname}/unregister.sh
+ install -d -m755 ${pkgdir}/usr/share/doc/ghc/html/libraries
+ ln -s /usr/share/doc/${pkgname}/html ${pkgdir}/usr/share/doc/ghc/html/libraries/${_hkgname}
+ runhaskell Setup copy --destdir=${pkgdir}
+ install -D -m644 LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+ rm -f ${pkgdir}/usr/share/doc/${pkgname}/LICENSE
+}
diff --git a/extra/haskell-deepseq/haskell-deepseq.install b/extra/haskell-deepseq/haskell-deepseq.install
new file mode 100644
index 000000000..8ba51eac7
--- /dev/null
+++ b/extra/haskell-deepseq/haskell-deepseq.install
@@ -0,0 +1,18 @@
+HS_DIR=usr/share/haskell/haskell-deepseq
+post_install() {
+ ${HS_DIR}/register.sh
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
+pre_upgrade() {
+ ${HS_DIR}/unregister.sh
+}
+post_upgrade() {
+ ${HS_DIR}/register.sh
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
+pre_remove() {
+ ${HS_DIR}/unregister.sh
+}
+post_remove() {
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
diff --git a/extra/haskell-fgl/PKGBUILD b/extra/haskell-fgl/PKGBUILD
new file mode 100644
index 000000000..840016e0e
--- /dev/null
+++ b/extra/haskell-fgl/PKGBUILD
@@ -0,0 +1,36 @@
+# Maintainer: Arch Haskell Team <arch-haskell@haskell.org>
+_hkgname=fgl
+pkgname=haskell-fgl
+pkgver=5.4.2.3
+pkgrel=3.2
+pkgdesc="Martin Erwig's Functional Graph Library"
+url="http://hackage.haskell.org/package/${_hkgname}"
+license=('custom:BSD3')
+arch=('i686' 'x86_64')
+makedepends=()
+depends=('ghc=7.0.2' 'haskell-mtl=2.0.1.0')
+options=('strip')
+source=(http://hackage.haskell.org/packages/archive/${_hkgname}/${pkgver}/${_hkgname}-${pkgver}.tar.gz)
+install=${pkgname}.install
+md5sums=('29ccab8bebed16a8d7346c3ed52c5d9c')
+build() {
+ cd ${srcdir}/${_hkgname}-${pkgver}
+ runhaskell Setup configure -O --enable-split-objs --enable-shared \
+ --prefix=/usr --docdir=/usr/share/doc/${pkgname} --libsubdir=\$compiler/site-local/\$pkgid
+ runhaskell Setup build
+ runhaskell Setup haddock
+ runhaskell Setup register --gen-script
+ runhaskell Setup unregister --gen-script
+ sed -i -r -e "s|ghc-pkg.*unregister[^ ]* |&'--force' |" unregister.sh
+}
+package() {
+ cd ${srcdir}/${_hkgname}-${pkgver}
+ install -D -m744 register.sh ${pkgdir}/usr/share/haskell/${pkgname}/register.sh
+ install -m744 unregister.sh ${pkgdir}/usr/share/haskell/${pkgname}/unregister.sh
+ install -d -m755 ${pkgdir}/usr/share/doc/ghc/html/libraries
+ ln -s /usr/share/doc/${pkgname}/html ${pkgdir}/usr/share/doc/ghc/html/libraries/${_hkgname}
+ runhaskell Setup copy --destdir=${pkgdir}
+ install -D -m644 LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+ rm -f ${pkgdir}/usr/share/doc/${pkgname}/LICENSE
+}
+md5sums=('29ccab8bebed16a8d7346c3ed52c5d9c')
diff --git a/extra/haskell-fgl/haskell-fgl.install b/extra/haskell-fgl/haskell-fgl.install
new file mode 100644
index 000000000..0da0edb7b
--- /dev/null
+++ b/extra/haskell-fgl/haskell-fgl.install
@@ -0,0 +1,18 @@
+HS_DIR=usr/share/haskell/haskell-fgl
+post_install() {
+ ${HS_DIR}/register.sh
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
+pre_upgrade() {
+ ${HS_DIR}/unregister.sh
+}
+post_upgrade() {
+ ${HS_DIR}/register.sh
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
+pre_remove() {
+ ${HS_DIR}/unregister.sh
+}
+post_remove() {
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
diff --git a/extra/haskell-glut/PKGBUILD b/extra/haskell-glut/PKGBUILD
new file mode 100644
index 000000000..3682828e0
--- /dev/null
+++ b/extra/haskell-glut/PKGBUILD
@@ -0,0 +1,36 @@
+# Maintainer: Arch Haskell Team <arch-haskell@haskell.org>
+_hkgname=GLUT
+pkgname=haskell-glut
+pkgver=2.1.2.1
+pkgrel=5.2
+pkgdesc="A binding for the OpenGL Utility Toolkit"
+url="http://hackage.haskell.org/package/${_hkgname}"
+license=('custom:BSD3')
+arch=('i686' 'x86_64')
+makedepends=()
+depends=('ghc=7.0.2' 'haskell-opengl=2.2.3.0' 'freeglut')
+options=('strip')
+source=(http://hackage.haskell.org/packages/archive/${_hkgname}/${pkgver}/${_hkgname}-${pkgver}.tar.gz)
+install=${pkgname}.install
+md5sums=('b97f476a04098701e330e86c1f89ed52')
+
+build() {
+ cd ${srcdir}/${_hkgname}-${pkgver}
+ runhaskell Setup configure -O --enable-split-objs --enable-shared \
+ --prefix=/usr --docdir=/usr/share/doc/${pkgname} --libsubdir=\$compiler/site-local/\$pkgid
+ runhaskell Setup build
+ runhaskell Setup haddock
+ runhaskell Setup register --gen-script
+ runhaskell Setup unregister --gen-script
+ sed -i -r -e "s|ghc-pkg.*unregister[^ ]* |&'--force' |" unregister.sh
+}
+package() {
+ cd ${srcdir}/${_hkgname}-${pkgver}
+ install -D -m744 register.sh ${pkgdir}/usr/share/haskell/${pkgname}/register.sh
+ install -m744 unregister.sh ${pkgdir}/usr/share/haskell/${pkgname}/unregister.sh
+ install -d -m755 ${pkgdir}/usr/share/doc/ghc/html/libraries
+ ln -s /usr/share/doc/${pkgname}/html ${pkgdir}/usr/share/doc/ghc/html/libraries/${_hkgname}
+ runhaskell Setup copy --destdir=${pkgdir}
+ install -D -m644 LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+ rm -f ${pkgdir}/usr/share/doc/${pkgname}/LICENSE
+}
diff --git a/extra/haskell-glut/haskell-glut.install b/extra/haskell-glut/haskell-glut.install
new file mode 100644
index 000000000..44c7cb3c1
--- /dev/null
+++ b/extra/haskell-glut/haskell-glut.install
@@ -0,0 +1,18 @@
+HS_DIR=usr/share/haskell/haskell-glut
+post_install() {
+ ${HS_DIR}/register.sh
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
+pre_upgrade() {
+ ${HS_DIR}/unregister.sh
+}
+post_upgrade() {
+ ${HS_DIR}/register.sh
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
+pre_remove() {
+ ${HS_DIR}/unregister.sh
+}
+post_remove() {
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
diff --git a/extra/haskell-hashed-storage/PKGBUILD b/extra/haskell-hashed-storage/PKGBUILD
new file mode 100644
index 000000000..244d3f851
--- /dev/null
+++ b/extra/haskell-hashed-storage/PKGBUILD
@@ -0,0 +1,40 @@
+# Maintainer: Vesa Kaihlavirta <vegai@iki.fi>
+# Contributor: Arch Haskell Team <arch-haskell@haskell.org>
+# As generated by cabal2arch 0.7.6
+_hkgname=hashed-storage
+pkgname=haskell-hashed-storage
+pkgver=0.5.4
+pkgrel=3.1
+pkgdesc="Hashed file storage support code."
+url="http://hackage.haskell.org/package/${_hkgname}"
+license=('custom:BSD3')
+arch=('i686' 'x86_64')
+depends=('ghc=7.0.2' 'haskell-binary=0.5.0.2' 'haskell-mmap=0.5.7'
+ 'haskell-zlib=0.5.3.1' 'haskell-mtl=2.0.1.0' 'haskell-dataenc=0.13.0.4')
+options=('strip')
+source=(http://hackage.haskell.org/packages/archive/${_hkgname}/${pkgver}/${_hkgname}-${pkgver}.tar.gz)
+install=${pkgname}.install
+md5sums=('e182a3fe6f977b0df85641da5df8e4f2')
+
+build() {
+ cd ${srcdir}/${_hkgname}-${pkgver}
+ runhaskell Setup configure -O -p --enable-split-objs --enable-shared \
+ --prefix=/usr --docdir=/usr/share/doc/${pkgname} \
+ --libsubdir=\$compiler/site-local/\$pkgid
+ runhaskell Setup build
+ runhaskell Setup haddock
+ runhaskell Setup register --gen-script
+ runhaskell Setup unregister --gen-script
+ sed -i -r -e "s|ghc-pkg.*unregister[^ ]* |&'--force' |" unregister.sh
+}
+
+package() {
+ cd ${srcdir}/${_hkgname}-${pkgver}
+ install -D -m744 register.sh ${pkgdir}/usr/share/haskell/${pkgname}/register.sh
+ install -m744 unregister.sh ${pkgdir}/usr/share/haskell/${pkgname}/unregister.sh
+ install -d -m755 ${pkgdir}/usr/share/doc/ghc/html/libraries
+ ln -s /usr/share/doc/${pkgname}/html ${pkgdir}/usr/share/doc/ghc/html/libraries/${_hkgname}
+ runhaskell Setup copy --destdir=${pkgdir}
+ install -D -m644 LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+ rm -f ${pkgdir}/usr/share/doc/${pkgname}/LICENSE
+}
diff --git a/extra/haskell-hashed-storage/haskell-hashed-storage.install b/extra/haskell-hashed-storage/haskell-hashed-storage.install
new file mode 100644
index 000000000..6f9a6904c
--- /dev/null
+++ b/extra/haskell-hashed-storage/haskell-hashed-storage.install
@@ -0,0 +1,18 @@
+HS_DIR=usr/share/haskell/haskell-hashed-storage
+post_install() {
+ ${HS_DIR}/register.sh
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
+pre_upgrade() {
+ ${HS_DIR}/unregister.sh
+}
+post_upgrade() {
+ ${HS_DIR}/register.sh
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
+pre_remove() {
+ ${HS_DIR}/unregister.sh
+}
+post_remove() {
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
diff --git a/extra/haskell-haskeline/PKGBUILD b/extra/haskell-haskeline/PKGBUILD
new file mode 100644
index 000000000..7756390fa
--- /dev/null
+++ b/extra/haskell-haskeline/PKGBUILD
@@ -0,0 +1,39 @@
+# Maintainer: Vesa Kaihlavirta <vegai@iki.fi>
+# Contributor: Arch Haskell Team <arch-haskell@haskell.org>
+# Package generated by cabal2arch 0.7.6
+_hkgname=haskeline
+pkgname=haskell-haskeline
+pkgver=0.6.3.2
+pkgrel=2.1
+pkgdesc="A command-line interface for user input, written in Haskell."
+url="http://hackage.haskell.org/package/haskeline"
+license=('custom:BSD3')
+arch=('i686' 'x86_64')
+depends=('ghc=7.0.2' sh 'haskell-utf8-string=0.3.6' 'haskell-mtl=2.0.1.0' 'haskell-terminfo=0.3.1.3')
+options=('strip')
+source=(http://hackage.haskell.org/packages/archive/${_hkgname}/${pkgver}/${_hkgname}-${pkgver}.tar.gz)
+install=${pkgname}.install
+md5sums=('d75863f63a1cfb499d0198e4f28ac2af')
+
+build() {
+ cd ${srcdir}/${_hkgname}-${pkgver}
+ runhaskell Setup configure \
+ -O -p --enable-split-objs --enable-shared -fterminfo --prefix=/usr \
+ --docdir=/usr/share/doc/${pkgname} --libsubdir=\$compiler/site-local/\$pkgid
+ runhaskell Setup build
+ runhaskell Setup haddock
+ runhaskell Setup register --gen-script
+ runhaskell Setup unregister --gen-script
+ sed -i -r -e "s|ghc-pkg.*unregister[^ ]* |&'--force' |" unregister.sh
+}
+
+package() {
+ cd ${srcdir}/${_hkgname}-${pkgver}
+ install -D -m744 register.sh ${pkgdir}/usr/share/haskell/${pkgname}/register.sh
+ install -m744 unregister.sh ${pkgdir}/usr/share/haskell/${pkgname}/unregister.sh
+ install -d -m755 ${pkgdir}/usr/share/doc/ghc/html/libraries
+ ln -s /usr/share/doc/${pkgname}/html ${pkgdir}/usr/share/doc/ghc/html/libraries/${_hkgname}
+ runhaskell Setup copy --destdir=${pkgdir}
+ install -D -m644 LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+ rm -f ${pkgdir}/usr/share/doc/${pkgname}/LICENSE
+}
diff --git a/extra/haskell-haskeline/haskell-haskeline.install b/extra/haskell-haskeline/haskell-haskeline.install
new file mode 100644
index 000000000..27cb4a093
--- /dev/null
+++ b/extra/haskell-haskeline/haskell-haskeline.install
@@ -0,0 +1,18 @@
+HS_DIR=usr/share/haskell/haskell-haskeline
+post_install() {
+ ${HS_DIR}/register.sh
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
+pre_upgrade() {
+ ${HS_DIR}/unregister.sh
+}
+post_upgrade() {
+ ${HS_DIR}/register.sh
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
+pre_remove() {
+ ${HS_DIR}/unregister.sh
+}
+post_remove() {
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
diff --git a/extra/haskell-haskell-src/PKGBUILD b/extra/haskell-haskell-src/PKGBUILD
new file mode 100644
index 000000000..6dbed0bed
--- /dev/null
+++ b/extra/haskell-haskell-src/PKGBUILD
@@ -0,0 +1,39 @@
+# Maintainer: Vesa Kaihlavirta <vesa@archlinux.org>
+# Contributor: Arch Haskell Team <arch-haskell@haskell.org>
+_hkgname=haskell-src
+pkgname=haskell-haskell-src
+pkgver=1.0.1.4
+pkgrel=1.1
+pkgdesc="Facilities for manipulating Haskell source code: an abstract syntax, lexer, parser and pretty-printer."
+url="http://hackage.haskell.org/package/${_hkgname}"
+license=('custom:BSD3')
+arch=('i686' 'x86_64')
+depends=('ghc=7.0.2' 'haskell-syb=0.3' sh)
+makedepends=(happy)
+options=('strip')
+source=(http://hackage.haskell.org/packages/archive/${_hkgname}/$pkgver/${_hkgname}-$pkgver.tar.gz)
+install=${pkgname}.install
+md5sums=('32d181c082393ab859e72610803bac6e')
+
+build() {
+ cd ${srcdir}/${_hkgname}-${pkgver}
+ runhaskell Setup configure -O -p --enable-split-objs --enable-shared --prefix=/usr \
+ --docdir=/usr/share/doc/${pkgname} --libsubdir=\$compiler/site-local/\$pkgid
+ runhaskell Setup build
+ runhaskell Setup haddock
+ runhaskell Setup register --gen-script
+ runhaskell Setup unregister --gen-script
+ sed -i -r -e "s|ghc-pkg.*unregister[^ ]* |&'--force' |" unregister.sh
+}
+
+package() {
+ cd ${srcdir}/${_hkgname}-${pkgver}
+ install -D -m744 register.sh ${pkgdir}/usr/share/haskell/${pkgname}/register.sh
+ install -m744 unregister.sh ${pkgdir}/usr/share/haskell/${pkgname}/unregister.sh
+ install -d -m755 ${pkgdir}/usr/share/doc/ghc/html/libraries
+ ln -s /usr/share/doc/${pkgname}/html ${pkgdir}/usr/share/doc/ghc/html/libraries/${_hkgname}
+ runhaskell Setup copy --destdir=${pkgdir}
+ install -D -m644 LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+ rm -f ${pkgdir}/usr/share/doc/${pkgname}/LICENSE
+}
+
diff --git a/extra/haskell-haskell-src/haskell-haskell-src.install b/extra/haskell-haskell-src/haskell-haskell-src.install
new file mode 100644
index 000000000..03ce601bc
--- /dev/null
+++ b/extra/haskell-haskell-src/haskell-haskell-src.install
@@ -0,0 +1,18 @@
+HS_DIR=usr/share/haskell/haskell-haskell-src
+post_install() {
+ ${HS_DIR}/register.sh
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
+pre_upgrade() {
+ ${HS_DIR}/unregister.sh
+}
+post_upgrade() {
+ ${HS_DIR}/register.sh
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
+pre_remove() {
+ ${HS_DIR}/unregister.sh
+}
+post_remove() {
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
diff --git a/extra/haskell-html/PKGBUILD b/extra/haskell-html/PKGBUILD
new file mode 100644
index 000000000..255e98645
--- /dev/null
+++ b/extra/haskell-html/PKGBUILD
@@ -0,0 +1,39 @@
+# Maintainer: Vesa Kaihlavirta <vesa@archlinux.org>
+# Contributor: Arch Haskell Team <arch-haskell@haskell.org>
+# Package generated by cabal2arch 0.7.6
+_hkgname=html
+pkgname=haskell-html
+pkgver=1.0.1.2
+pkgrel=8.1
+pkgdesc="HTML combinator library"
+url="http://hackage.haskell.org/package/html"
+license=('custom:BSD3')
+arch=('i686' 'x86_64')
+depends=(ghc=7.0.2 sh)
+options=('strip')
+source=(http://hackage.haskell.org/packages/archive/${_hkgname}/${pkgver}/${_hkgname}-${pkgver}.tar.gz)
+install=${pkgname}.install
+md5sums=('2a7de5a2af9a2f80d39825d6a95ee445')
+
+build() {
+ cd ${srcdir}/${_hkgname}-${pkgver}
+ runhaskell Setup configure -O -p --enable-split-objs --enable-shared \
+ --prefix=/usr --docdir=/usr/share/doc/${pkgname} \
+ --libsubdir=\$compiler/site-local/\$pkgid
+ runhaskell Setup build
+ runhaskell Setup haddock
+ runhaskell Setup register --gen-script
+ runhaskell Setup unregister --gen-script
+ sed -i -r -e "s|ghc-pkg.*unregister[^ ]* |&'--force' |" unregister.sh
+}
+
+package() {
+ cd ${srcdir}/${_hkgname}-${pkgver}
+ install -D -m744 register.sh ${pkgdir}/usr/share/haskell/${pkgname}/register.sh
+ install -m744 unregister.sh ${pkgdir}/usr/share/haskell/${pkgname}/unregister.sh
+ install -d -m755 ${pkgdir}/usr/share/doc/ghc/html/libraries
+ ln -s /usr/share/doc/${pkgname}/html ${pkgdir}/usr/share/doc/ghc/html/libraries/${_hkgname}
+ runhaskell Setup copy --destdir=${pkgdir}
+ install -D -m644 LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+ rm -f ${pkgdir}/usr/share/doc/${pkgname}/LICENSE
+}
diff --git a/extra/haskell-html/haskell-html.install b/extra/haskell-html/haskell-html.install
new file mode 100644
index 000000000..768297e0a
--- /dev/null
+++ b/extra/haskell-html/haskell-html.install
@@ -0,0 +1,19 @@
+HS_DIR=usr/share/haskell/haskell-html
+post_install() {
+ ${HS_DIR}/register.sh
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
+pre_upgrade() {
+ ${HS_DIR}/unregister.sh &> /dev/null
+ exit 0
+}
+post_upgrade() {
+ ${HS_DIR}/register.sh
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
+pre_remove() {
+ ${HS_DIR}/unregister.sh
+}
+post_remove() {
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
diff --git a/extra/haskell-http/PKGBUILD b/extra/haskell-http/PKGBUILD
new file mode 100644
index 000000000..974119394
--- /dev/null
+++ b/extra/haskell-http/PKGBUILD
@@ -0,0 +1,40 @@
+# Maintainer: Vesa Kaihlavirta <vesa@archlinux.org>
+# Contributor: Arch Haskell Team <arch-haskell@haskell.org>
+# Package generated by cabal2arch 0.7.6
+_hkgname=HTTP
+pkgname=haskell-http
+pkgver=4000.1.1
+pkgrel=2.1
+pkgdesc="A library for client-side HTTP"
+url="http://hackage.haskell.org/package/${_hkgname}"
+license=('custom:BSD3')
+arch=('i686' 'x86_64')
+depends=('ghc=7.0.2' sh 'haskell-network=2.3.0.2' 'haskell-parsec=3.1.1' 'haskell-mtl=2.0.1.0')
+options=('strip')
+source=(http://hackage.haskell.org/packages/archive/${_hkgname}/${pkgver}/${_hkgname}-${pkgver}.tar.gz)
+install=${pkgname}.install
+md5sums=('ddf23d46c4d6dc0048c454e3d01caa57')
+
+build() {
+ cd ${srcdir}/${_hkgname}-${pkgver}
+ runhaskell Setup configure -O -p --enable-split-objs --enable-shared \
+ --prefix=/usr --docdir=/usr/share/doc/${pkgname} \
+ --libsubdir=\$compiler/site-local/\$pkgid
+ runhaskell Setup build
+ runhaskell Setup haddock
+ runhaskell Setup register --gen-script
+ runhaskell Setup unregister --gen-script
+ sed -i -r -e "s|ghc-pkg.*unregister[^ ]* |&'--force' |" unregister.sh
+}
+
+package() {
+ cd ${srcdir}/${_hkgname}-${pkgver}
+ install -D -m744 register.sh ${pkgdir}/usr/share/haskell/${pkgname}/register.sh
+ install -m744 unregister.sh ${pkgdir}/usr/share/haskell/${pkgname}/unregister.sh
+ install -d -m755 ${pkgdir}/usr/share/doc/ghc/html/libraries
+ ln -s /usr/share/doc/${pkgname}/html ${pkgdir}/usr/share/doc/ghc/html/libraries/${_hkgname}
+ runhaskell Setup copy --destdir=${pkgdir}
+ install -D -m644 LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+ rm -f ${pkgdir}/usr/share/doc/${pkgname}/LICENSE
+}
+
diff --git a/extra/haskell-http/haskell-http.install b/extra/haskell-http/haskell-http.install
new file mode 100644
index 000000000..fdebb1cb8
--- /dev/null
+++ b/extra/haskell-http/haskell-http.install
@@ -0,0 +1,18 @@
+HS_DIR=usr/share/haskell/haskell-http
+post_install() {
+ ${HS_DIR}/register.sh
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
+pre_upgrade() {
+ ${HS_DIR}/unregister.sh
+}
+post_upgrade() {
+ ${HS_DIR}/register.sh
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
+pre_remove() {
+ ${HS_DIR}/unregister.sh
+}
+post_remove() {
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
diff --git a/extra/haskell-hunit/PKGBUILD b/extra/haskell-hunit/PKGBUILD
new file mode 100644
index 000000000..a64b87af8
--- /dev/null
+++ b/extra/haskell-hunit/PKGBUILD
@@ -0,0 +1,37 @@
+# Maintainer: Vesa Kaihlavirta <vesa@archlinux.org>
+# Contributor: Arch Haskell Team <arch-haskell@haskell.org>
+_hkgname=HUnit
+pkgname=haskell-hunit
+pkgver=1.2.2.3
+pkgrel=1.1
+pkgdesc="A unit testing framework for Haskell"
+url="http://hackage.haskell.org/package/${_hkgname}"
+license=('custom:BSD3')
+arch=('i686' 'x86_64')
+depends=(ghc=7.0.2 sh)
+options=('strip')
+source=(http://hackage.haskell.org/packages/archive/${_hkgname}/$pkgver/${_hkgname}-$pkgver.tar.gz)
+install=${pkgname}.install
+md5sums=('f179add502f88153e5c9fdc69056b657')
+
+build() {
+ cd ${srcdir}/${_hkgname}-${pkgver}
+ runhaskell Setup configure -O -p --enable-split-objs --enable-shared --prefix=/usr \
+ --docdir=/usr/share/doc/${pkgname} --libsubdir=\$compiler/site-local/\$pkgid
+ runhaskell Setup build
+ runhaskell Setup haddock
+ runhaskell Setup register --gen-script
+ runhaskell Setup unregister --gen-script
+ sed -i -r -e "s|ghc-pkg.*unregister[^ ]* |&'--force' |" unregister.sh
+}
+
+package() {
+ cd ${srcdir}/${_hkgname}-${pkgver}
+ install -D -m744 register.sh ${pkgdir}/usr/share/haskell/${pkgname}/register.sh
+ install -m744 unregister.sh ${pkgdir}/usr/share/haskell/${pkgname}/unregister.sh
+ install -d -m755 ${pkgdir}/usr/share/doc/ghc/html/libraries
+ ln -s /usr/share/doc/${pkgname}/html ${pkgdir}/usr/share/doc/ghc/html/libraries/${_hkgname}
+ runhaskell Setup copy --destdir=${pkgdir}
+ install -D -m644 LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+ rm -f ${pkgdir}/usr/share/doc/${pkgname}/LICENSE
+}
diff --git a/extra/haskell-hunit/haskell-hunit.install b/extra/haskell-hunit/haskell-hunit.install
new file mode 100644
index 000000000..ceb108b5b
--- /dev/null
+++ b/extra/haskell-hunit/haskell-hunit.install
@@ -0,0 +1,19 @@
+HS_DIR=usr/share/haskell/haskell-hunit
+post_install() {
+ ${HS_DIR}/register.sh
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
+pre_upgrade() {
+ ${HS_DIR}/unregister.sh &> /dev/null
+ exit 0
+}
+post_upgrade() {
+ ${HS_DIR}/register.sh
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
+pre_remove() {
+ ${HS_DIR}/unregister.sh
+}
+post_remove() {
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
diff --git a/extra/haskell-mmap/PKGBUILD b/extra/haskell-mmap/PKGBUILD
new file mode 100644
index 000000000..838275675
--- /dev/null
+++ b/extra/haskell-mmap/PKGBUILD
@@ -0,0 +1,38 @@
+# Maintainer: Vesa Kaihlavirta <vegai@iki.fi>
+# Contributor: Arch Haskell Team <arch-haskell@haskell.org>
+_hkgname=mmap
+pkgname=haskell-mmap
+pkgver=0.5.7
+pkgrel=3.1
+pkgdesc="Memory mapped files for POSIX and Windows"
+url="http://hackage.haskell.org/package/mmap"
+license=('custom:BSD3')
+arch=('i686' 'x86_64')
+depends=('ghc=7.0.2' sh)
+options=('strip')
+source=(http://hackage.haskell.org/packages/archive/${_hkgname}/${pkgver}/${_hkgname}-${pkgver}.tar.gz)
+install=${pkgname}.install
+md5sums=('1f74b3f59617332b06e277f5212423c1')
+
+build() {
+ cd ${srcdir}/${_hkgname}-${pkgver}
+ runhaskell Setup configure -O -p --enable-split-objs --enable-shared \
+ --prefix=/usr --docdir=/usr/share/doc/${pkgname} \
+ --libsubdir=\$compiler/site-local/\$pkgid
+ runhaskell Setup build
+ runhaskell Setup haddock
+ runhaskell Setup register --gen-script
+ runhaskell Setup unregister --gen-script
+ sed -i -r -e "s|ghc-pkg.*unregister[^ ]* |&'--force' |" unregister.sh
+}
+
+package() {
+ cd ${srcdir}/${_hkgname}-${pkgver}
+ install -D -m744 register.sh ${pkgdir}/usr/share/haskell/${pkgname}/register.sh
+ install -m744 unregister.sh ${pkgdir}/usr/share/haskell/${pkgname}/unregister.sh
+ install -d -m755 ${pkgdir}/usr/share/doc/ghc/html/libraries
+ ln -s /usr/share/doc/${pkgname}/html ${pkgdir}/usr/share/doc/ghc/html/libraries/${_hkgname}
+ runhaskell Setup copy --destdir=${pkgdir}
+ install -D -m644 LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+ rm -f ${pkgdir}/usr/share/doc/${pkgname}/LICENSE
+}
diff --git a/extra/haskell-mmap/haskell-mmap.install b/extra/haskell-mmap/haskell-mmap.install
new file mode 100644
index 000000000..68fe74f4e
--- /dev/null
+++ b/extra/haskell-mmap/haskell-mmap.install
@@ -0,0 +1,18 @@
+HS_DIR=usr/share/haskell/haskell-mmap
+post_install() {
+ ${HS_DIR}/register.sh
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
+pre_upgrade() {
+ ${HS_DIR}/unregister.sh
+}
+post_upgrade() {
+ ${HS_DIR}/register.sh
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
+pre_remove() {
+ ${HS_DIR}/unregister.sh
+}
+post_remove() {
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
diff --git a/extra/haskell-mtl/PKGBUILD b/extra/haskell-mtl/PKGBUILD
new file mode 100644
index 000000000..48ba57a3a
--- /dev/null
+++ b/extra/haskell-mtl/PKGBUILD
@@ -0,0 +1,38 @@
+# Maintainer: Vesa Kaihlavirta <vesa@archlinux.org>
+# Contributor: Arch Haskell Team <arch-haskell@haskell.org>
+_hkgname=mtl
+pkgname=haskell-mtl
+pkgver=2.0.1.0
+pkgrel=1.1
+pkgdesc="Monad transformer library"
+url="http://hackage.haskell.org/package/${_hkgname}"
+license=('custom:BSD3')
+arch=('i686' 'x86_64')
+depends=(ghc=7.0.2 sh 'haskell-transformers=0.2.2.0')
+options=('strip')
+source=(http://hackage.haskell.org/packages/archive/${_hkgname}/$pkgver/${_hkgname}-$pkgver.tar.gz)
+install=${pkgname}.install
+md5sums=('934fa813625ef7e88a6a96a09815ff95')
+
+build() {
+ cd ${srcdir}/${_hkgname}-${pkgver}
+ runhaskell Setup configure -O -p --enable-split-objs --enable-shared --prefix=/usr \
+ --docdir=/usr/share/doc/${pkgname} --libsubdir=\$compiler/site-local/\$pkgid
+ runhaskell Setup build
+ runhaskell Setup haddock
+ runhaskell Setup register --gen-script
+ runhaskell Setup unregister --gen-script
+ sed -i -r -e "s|ghc-pkg.*unregister[^ ]* |&'--force' |" unregister.sh
+}
+
+package() {
+ cd ${srcdir}/${_hkgname}-${pkgver}
+ install -D -m744 register.sh ${pkgdir}/usr/share/haskell/${pkgname}/register.sh
+ install -m744 unregister.sh ${pkgdir}/usr/share/haskell/${pkgname}/unregister.sh
+ install -d -m755 ${pkgdir}/usr/share/doc/ghc/html/libraries
+ ln -s /usr/share/doc/${pkgname}/html ${pkgdir}/usr/share/doc/ghc/html/libraries/${_hkgname}
+ runhaskell Setup copy --destdir=${pkgdir}
+ install -D -m644 LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+ rm -f ${pkgdir}/usr/share/doc/${pkgname}/LICENSE
+}
+md5sums=('934fa813625ef7e88a6a96a09815ff95')
diff --git a/extra/haskell-mtl/haskell-mtl.install b/extra/haskell-mtl/haskell-mtl.install
new file mode 100644
index 000000000..9325811e8
--- /dev/null
+++ b/extra/haskell-mtl/haskell-mtl.install
@@ -0,0 +1,18 @@
+HS_DIR=usr/share/haskell/haskell-mtl
+post_install() {
+ ${HS_DIR}/register.sh
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
+pre_upgrade() {
+ ${HS_DIR}/unregister.sh
+}
+post_upgrade() {
+ ${HS_DIR}/register.sh
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
+pre_remove() {
+ ${HS_DIR}/unregister.sh
+}
+post_remove() {
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
diff --git a/extra/haskell-network/PKGBUILD b/extra/haskell-network/PKGBUILD
new file mode 100644
index 000000000..0aad81e65
--- /dev/null
+++ b/extra/haskell-network/PKGBUILD
@@ -0,0 +1,39 @@
+# Maintainer: Vesa Kaihlavirta <vesa@archlinux.org>
+# Contributor: Arch Haskell Team <arch-haskell@haskell.org>
+# Package generated by cabal2arch 0.7.6
+_hkgname=network
+pkgname=haskell-network
+pkgver=2.3.0.2
+pkgrel=1.1
+pkgdesc="Networking-related facilities"
+url="http://hackage.haskell.org/package/network"
+license=('custom:BSD3')
+arch=('i686' 'x86_64')
+depends=(ghc=7.0.2 sh 'haskell-parsec=3.1.1')
+options=('strip')
+source=(http://hackage.haskell.org/packages/archive/${_hkgname}/${pkgver}/${_hkgname}-${pkgver}.tar.gz)
+install=${pkgname}.install
+md5sums=('a739fe9b75af744cfa1c05e39d41ac1f')
+
+build() {
+ cd ${srcdir}/${_hkgname}-${pkgver}
+ runhaskell Setup configure -O -p --enable-split-objs --enable-shared \
+ --prefix=/usr --docdir=/usr/share/doc/${pkgname} \
+ --libsubdir=\$compiler/site-local/\$pkgid
+ runhaskell Setup build
+ runhaskell Setup haddock
+ runhaskell Setup register --gen-script
+ runhaskell Setup unregister --gen-script
+ sed -i -r -e "s|ghc-pkg.*unregister[^ ]* |&'--force' |" unregister.sh
+}
+
+package() {
+ cd ${srcdir}/${_hkgname}-${pkgver}
+ install -D -m744 register.sh ${pkgdir}/usr/share/haskell/${pkgname}/register.sh
+ install -m744 unregister.sh ${pkgdir}/usr/share/haskell/${pkgname}/unregister.sh
+ install -d -m755 ${pkgdir}/usr/share/doc/ghc/html/libraries
+ ln -s /usr/share/doc/${pkgname}/html ${pkgdir}/usr/share/doc/ghc/html/libraries/${_hkgname}
+ runhaskell Setup copy --destdir=${pkgdir}
+ install -D -m644 LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+ rm -f ${pkgdir}/usr/share/doc/${pkgname}/LICENSE
+}
diff --git a/extra/haskell-network/haskell-network.install b/extra/haskell-network/haskell-network.install
new file mode 100644
index 000000000..a56c31d0a
--- /dev/null
+++ b/extra/haskell-network/haskell-network.install
@@ -0,0 +1,18 @@
+HS_DIR=usr/share/haskell/haskell-network
+post_install() {
+ ${HS_DIR}/register.sh
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
+pre_upgrade() {
+ ${HS_DIR}/unregister.sh
+}
+post_upgrade() {
+ ${HS_DIR}/register.sh
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
+pre_remove() {
+ ${HS_DIR}/unregister.sh
+}
+post_remove() {
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
diff --git a/extra/haskell-opengl/PKGBUILD b/extra/haskell-opengl/PKGBUILD
new file mode 100644
index 000000000..e07975cf9
--- /dev/null
+++ b/extra/haskell-opengl/PKGBUILD
@@ -0,0 +1,35 @@
+# Maintainer: Arch Haskell Team <arch-haskell@haskell.org>
+_hkgname=OpenGL
+pkgname=haskell-opengl
+pkgver=2.2.3.0
+pkgrel=5.2
+pkgdesc="A binding for the OpenGL graphics system"
+url="http://hackage.haskell.org/package/${_hkgname}"
+license=('custom:BSD3')
+arch=('i686' 'x86_64')
+makedepends=()
+depends=('ghc=7.0.2' 'mesa')
+options=('strip')
+source=(http://hackage.haskell.org/packages/archive/${_hkgname}/${pkgver}/${_hkgname}-${pkgver}.tar.gz)
+install=${pkgname}.install
+md5sums=('f4e3ccb471034a6a74921d4dab9dd32d')
+build() {
+ cd ${srcdir}/${_hkgname}-${pkgver}
+ runhaskell Setup configure -O --enable-split-objs --enable-shared \
+ --prefix=/usr --docdir=/usr/share/doc/${pkgname} --libsubdir=\$compiler/site-local/\$pkgid
+ runhaskell Setup build
+ runhaskell Setup haddock
+ runhaskell Setup register --gen-script
+ runhaskell Setup unregister --gen-script
+ sed -i -r -e "s|ghc-pkg.*unregister[^ ]* |&'--force' |" unregister.sh
+}
+package() {
+ cd ${srcdir}/${_hkgname}-${pkgver}
+ install -D -m744 register.sh ${pkgdir}/usr/share/haskell/${pkgname}/register.sh
+ install -m744 unregister.sh ${pkgdir}/usr/share/haskell/${pkgname}/unregister.sh
+ install -d -m755 ${pkgdir}/usr/share/doc/ghc/html/libraries
+ ln -s /usr/share/doc/${pkgname}/html ${pkgdir}/usr/share/doc/ghc/html/libraries/${_hkgname}
+ runhaskell Setup copy --destdir=${pkgdir}
+ install -D -m644 LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+ rm -f ${pkgdir}/usr/share/doc/${pkgname}/LICENSE
+}
diff --git a/extra/haskell-opengl/haskell-opengl.install b/extra/haskell-opengl/haskell-opengl.install
new file mode 100644
index 000000000..d0f3474b3
--- /dev/null
+++ b/extra/haskell-opengl/haskell-opengl.install
@@ -0,0 +1,18 @@
+HS_DIR=usr/share/haskell/haskell-opengl
+post_install() {
+ ${HS_DIR}/register.sh
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
+pre_upgrade() {
+ ${HS_DIR}/unregister.sh
+}
+post_upgrade() {
+ ${HS_DIR}/register.sh
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
+pre_remove() {
+ ${HS_DIR}/unregister.sh
+}
+post_remove() {
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
diff --git a/extra/haskell-parallel/PKGBUILD b/extra/haskell-parallel/PKGBUILD
new file mode 100644
index 000000000..93f43095e
--- /dev/null
+++ b/extra/haskell-parallel/PKGBUILD
@@ -0,0 +1,38 @@
+# Maintainer: Vesa Kaihlavirta <vesa@archlinux.org>
+# Contributor: Arch Haskell Team <arch-haskell@haskell.org>
+# Package generated by cabal2arch 0.7.6
+_hkgname=parallel
+pkgname=haskell-parallel
+pkgver=3.1.0.1
+pkgrel=2.1
+pkgdesc="Parallel programming library"
+url="http://hackage.haskell.org/package/${_hkgname}"
+license=('custom:BSD3')
+arch=('i686' 'x86_64')
+depends=(ghc=7.0.2 sh 'haskell-deepseq=1.1.0.2')
+options=('strip')
+source=(http://hackage.haskell.org/packages/archive/${_hkgname}/$pkgver/${_hkgname}-$pkgver.tar.gz)
+install=${pkgname}.install
+md5sums=('591979e7897dbc09157edf73a4614957')
+
+build() {
+ cd ${srcdir}/${_hkgname}-${pkgver}
+ runhaskell Setup configure -O -p --enable-split-objs --enable-shared --prefix=/usr \
+ --docdir=/usr/share/doc/${pkgname} --libsubdir=\$compiler/site-local/\$pkgid
+ runhaskell Setup build
+ runhaskell Setup haddock
+ runhaskell Setup register --gen-script
+ runhaskell Setup unregister --gen-script
+ sed -i -r -e "s|ghc-pkg.*unregister[^ ]* |&'--force' |" unregister.sh
+}
+
+package() {
+ cd ${srcdir}/${_hkgname}-${pkgver}
+ install -D -m744 register.sh ${pkgdir}/usr/share/haskell/${pkgname}/register.sh
+ install -m744 unregister.sh ${pkgdir}/usr/share/haskell/${pkgname}/unregister.sh
+ install -d -m755 ${pkgdir}/usr/share/doc/ghc/html/libraries
+ ln -s /usr/share/doc/${pkgname}/html ${pkgdir}/usr/share/doc/ghc/html/libraries/${_hkgname}
+ runhaskell Setup copy --destdir=${pkgdir}
+ install -D -m644 LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+ rm -f ${pkgdir}/usr/share/doc/${pkgname}/LICENSE
+}
diff --git a/extra/haskell-parallel/haskell-parallel.install b/extra/haskell-parallel/haskell-parallel.install
new file mode 100644
index 000000000..e6ec0c449
--- /dev/null
+++ b/extra/haskell-parallel/haskell-parallel.install
@@ -0,0 +1,18 @@
+HS_DIR=usr/share/haskell/haskell-parallel
+post_install() {
+ ${HS_DIR}/register.sh
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
+pre_upgrade() {
+ ${HS_DIR}/unregister.sh
+}
+post_upgrade() {
+ ${HS_DIR}/register.sh
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
+pre_remove() {
+ ${HS_DIR}/unregister.sh
+}
+post_remove() {
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
diff --git a/extra/haskell-parsec/PKGBUILD b/extra/haskell-parsec/PKGBUILD
new file mode 100644
index 000000000..e6928946c
--- /dev/null
+++ b/extra/haskell-parsec/PKGBUILD
@@ -0,0 +1,39 @@
+# Maintainer: Vesa Kaihlavirta <vesa@archlinux.org>
+# Contributor: Arch Haskell Team <arch-haskell@haskell.org>
+# As generated by cabal2arch 0.7.6
+_hkgname=parsec
+pkgname=haskell-parsec
+pkgver=3.1.1
+pkgrel=1.1
+pkgdesc="Monadic parser combinators"
+url="http://hackage.haskell.org/package/${_hkgname}"
+license=('custom:BSD3')
+arch=('i686' 'x86_64')
+depends=(ghc=7.0.2 sh 'haskell-mtl=2.0.1.0')
+options=('strip')
+source=(http://hackage.haskell.org/packages/archive/${_hkgname}/${pkgver}/${_hkgname}-${pkgver}.tar.gz)
+install=${pkgname}.install
+md5sums=('3d5500847cac09f6f658db825b6c5df8')
+
+build() {
+ cd ${srcdir}/${_hkgname}-${pkgver}
+ runhaskell Setup configure -O -p --enable-split-objs --enable-shared --prefix=/usr \
+ --docdir=/usr/share/doc/${pkgname} --libsubdir=\$compiler/site-local/\$pkgid
+ runhaskell Setup build
+ runhaskell Setup haddock
+ runhaskell Setup register --gen-script
+ runhaskell Setup unregister --gen-script
+ sed -i -r -e "s|ghc-pkg.*unregister[^ ]* |&'--force' |" unregister.sh
+}
+
+package() {
+ cd ${srcdir}/${_hkgname}-${pkgver}
+ install -D -m744 register.sh ${pkgdir}/usr/share/haskell/${pkgname}/register.sh
+ install -m744 unregister.sh ${pkgdir}/usr/share/haskell/${pkgname}/unregister.sh
+ install -d -m755 ${pkgdir}/usr/share/doc/ghc/html/libraries
+ ln -s /usr/share/doc/${pkgname}/html ${pkgdir}/usr/share/doc/ghc/html/libraries/${_hkgname}
+ runhaskell Setup copy --destdir=${pkgdir}
+ install -D -m644 LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+ rm -f ${pkgdir}/usr/share/doc/${pkgname}/LICENSE
+}
+
diff --git a/extra/haskell-parsec/haskell-parsec.install b/extra/haskell-parsec/haskell-parsec.install
new file mode 100644
index 000000000..dfa0701b9
--- /dev/null
+++ b/extra/haskell-parsec/haskell-parsec.install
@@ -0,0 +1,18 @@
+HS_DIR=usr/share/haskell/haskell-parsec
+post_install() {
+ ${HS_DIR}/register.sh
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
+pre_upgrade() {
+ ${HS_DIR}/unregister.sh
+}
+post_upgrade() {
+ ${HS_DIR}/register.sh
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
+pre_remove() {
+ ${HS_DIR}/unregister.sh
+}
+post_remove() {
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
diff --git a/extra/haskell-platform/PKGBUILD b/extra/haskell-platform/PKGBUILD
new file mode 100644
index 000000000..57a3a2c9b
--- /dev/null
+++ b/extra/haskell-platform/PKGBUILD
@@ -0,0 +1,39 @@
+# Maintainer: Vesa Kaihlavirta <vegai@iki.fi>
+pkgname=haskell-platform
+pkgver=2011.2.0.0
+pkgrel=2.1
+pkgdesc="The Haskell Platform"
+url="http://hackage.haskell.org/platform/"
+license=('custom:BSD3')
+arch=('i686' 'x86_64')
+depends=('ghc=7.0.2'
+ 'haskell-glut=2.1.2.1'
+ 'haskell-http=4000.1.1'
+ 'haskell-hunit=1.2.2.3'
+ 'haskell-opengl=2.2.3.0'
+ 'haskell-quickcheck=2.4.0.1'
+ 'haskell-cgi=3001.1.7.4'
+ 'haskell-deepseq=1.1.0.2'
+ 'haskell-fgl=5.4.2.3'
+ 'haskell-haskell-src=1.0.1.4'
+ 'haskell-html=1.0.1.2'
+ 'haskell-mtl=2.0.1.0'
+ 'haskell-network=2.3.0.2'
+ 'haskell-parallel=3.1.0.1'
+ 'haskell-parsec=3.1.1'
+ 'haskell-regex-base=0.93.2'
+ 'haskell-regex-compat=0.93.1'
+ 'haskell-regex-posix=0.94.4'
+ 'haskell-stm=2.2.0.1'
+ 'haskell-syb=0.3'
+ 'haskell-text=0.11.0.5'
+ 'haskell-transformers=0.2.2.0'
+ 'haskell-xhtml=3000.2.0.1'
+ 'haskell-zlib=0.5.3.1'
+ 'cabal-install=0.10.2'
+ 'alex=2.3.5'
+ 'happy=1.18.6')
+
+build() {
+ return 0
+}
diff --git a/extra/haskell-quickcheck/PKGBUILD b/extra/haskell-quickcheck/PKGBUILD
new file mode 100644
index 000000000..bf911846b
--- /dev/null
+++ b/extra/haskell-quickcheck/PKGBUILD
@@ -0,0 +1,38 @@
+# Maintainer: Vesa Kaihlavirta <vesa@archlinux.org>
+# Contributor: Arch Haskell Team <arch-haskell@haskell.org>
+# Package generated by cabal2arch 0.7.5
+_hkgname=QuickCheck
+pkgname=haskell-quickcheck
+pkgver=2.4.0.1
+pkgrel=2.1
+pkgdesc="Automatic testing of Haskell programs"
+url="http://hackage.haskell.org/package/QuickCheck"
+license=('custom:BSD3')
+arch=('i686' 'x86_64')
+depends=(ghc=7.0.2 haskell-mtl=2.0.1.0 sh)
+options=('strip')
+source=(http://hackage.haskell.org/packages/archive/${_hkgname}/$pkgver/${_hkgname}-$pkgver.tar.gz)
+install=${pkgname}.install
+md5sums=('e8c86e95fd1fa4c58fc8e53e2853db5e')
+
+build() {
+ cd ${srcdir}/${_hkgname}-${pkgver}
+ runhaskell Setup configure -O -p --enable-split-objs --enable-shared --prefix=/usr \
+ --docdir=/usr/share/doc/${pkgname} --libsubdir=\$compiler/site-local/\$pkgid
+ runhaskell Setup build
+ runhaskell Setup haddock
+ runhaskell Setup register --gen-script
+ runhaskell Setup unregister --gen-script
+ sed -i -r -e "s|ghc-pkg.*unregister[^ ]* |&'--force' |" unregister.sh
+}
+
+package() {
+ cd ${srcdir}/${_hkgname}-${pkgver}
+ install -D -m744 register.sh ${pkgdir}/usr/share/haskell/${pkgname}/register.sh
+ install -m744 unregister.sh ${pkgdir}/usr/share/haskell/${pkgname}/unregister.sh
+ install -d -m755 ${pkgdir}/usr/share/doc/ghc/html/libraries
+ ln -s /usr/share/doc/${pkgname}/html ${pkgdir}/usr/share/doc/ghc/html/libraries/${_hkgname}
+ runhaskell Setup copy --destdir=${pkgdir}
+ install -D -m644 LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+ rm -f ${pkgdir}/usr/share/doc/${pkgname}/LICENSE
+}
diff --git a/extra/haskell-quickcheck/haskell-quickcheck.install b/extra/haskell-quickcheck/haskell-quickcheck.install
new file mode 100644
index 000000000..c9e12fadc
--- /dev/null
+++ b/extra/haskell-quickcheck/haskell-quickcheck.install
@@ -0,0 +1,18 @@
+HS_DIR=usr/share/haskell/haskell-quickcheck
+post_install() {
+ ${HS_DIR}/register.sh
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
+pre_upgrade() {
+ ${HS_DIR}/unregister.sh
+}
+post_upgrade() {
+ ${HS_DIR}/register.sh
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
+pre_remove() {
+ ${HS_DIR}/unregister.sh
+}
+post_remove() {
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
diff --git a/extra/haskell-regex-base/PKGBUILD b/extra/haskell-regex-base/PKGBUILD
new file mode 100644
index 000000000..e73d781d5
--- /dev/null
+++ b/extra/haskell-regex-base/PKGBUILD
@@ -0,0 +1,37 @@
+# Maintainer: Vesa Kaihlavirta <vesa@archlinux.org>
+# Contributor: Arch Haskell Team <arch-haskell@haskell.org>
+_hkgname=regex-base
+pkgname=haskell-regex-base
+pkgver=0.93.2
+pkgrel=3.1
+pkgdesc="Interface API for regex-posix,pcre,parsec,tdfa,dfa"
+url="http://hackage.haskell.org/cgi-bin/hackage-scripts/package/regex-base"
+license=('custom:BSD3')
+arch=('i686' 'x86_64')
+depends=(ghc=7.0.2 sh 'haskell-mtl=2.0.1.0')
+options=('strip')
+source=(http://hackage.haskell.org/packages/archive/${_hkgname}/$pkgver/${_hkgname}-$pkgver.tar.gz)
+install=${pkgname}.install
+md5sums=('e7b93b0b17eff8d3068ecb2f5d5f6ea3')
+
+build() {
+ cd ${srcdir}/${_hkgname}-${pkgver}
+ runhaskell Setup configure -O -p --enable-split-objs --enable-shared --prefix=/usr \
+ --docdir=/usr/share/doc/${pkgname} --libsubdir=\$compiler/site-local/\$pkgid
+ runhaskell Setup build
+ runhaskell Setup haddock
+ runhaskell Setup register --gen-script
+ runhaskell Setup unregister --gen-script
+ sed -i -r -e "s|ghc-pkg.*unregister[^ ]* |&'--force' |" unregister.sh
+}
+
+package() {
+ cd ${srcdir}/${_hkgname}-${pkgver}
+ install -D -m744 register.sh ${pkgdir}/usr/share/haskell/${pkgname}/register.sh
+ install -m744 unregister.sh ${pkgdir}/usr/share/haskell/${pkgname}/unregister.sh
+ install -d -m755 ${pkgdir}/usr/share/doc/ghc/html/libraries
+ ln -s /usr/share/doc/${pkgname}/html ${pkgdir}/usr/share/doc/ghc/html/libraries/${_hkgname}
+ runhaskell Setup copy --destdir=${pkgdir}
+ install -D -m644 LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+ rm -f ${pkgdir}/usr/share/doc/${pkgname}/LICENSE
+}
diff --git a/extra/haskell-regex-base/haskell-regex-base.install b/extra/haskell-regex-base/haskell-regex-base.install
new file mode 100644
index 000000000..3ad2fea28
--- /dev/null
+++ b/extra/haskell-regex-base/haskell-regex-base.install
@@ -0,0 +1,18 @@
+HS_DIR=usr/share/haskell/haskell-regex-base
+post_install() {
+ ${HS_DIR}/register.sh
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
+pre_upgrade() {
+ ${HS_DIR}/unregister.sh
+}
+post_upgrade() {
+ ${HS_DIR}/register.sh
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
+pre_remove() {
+ ${HS_DIR}/unregister.sh
+}
+post_remove() {
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
diff --git a/extra/haskell-regex-compat/PKGBUILD b/extra/haskell-regex-compat/PKGBUILD
new file mode 100644
index 000000000..cb643a135
--- /dev/null
+++ b/extra/haskell-regex-compat/PKGBUILD
@@ -0,0 +1,37 @@
+# Maintainer: Vesa Kaihlavirta <vesa@archlinux.org>
+# Contributor: Arch Haskell Team <arch-haskell@haskell.org>
+_hkgname=regex-compat
+pkgname=haskell-regex-compat
+pkgver=0.93.1
+pkgrel=3.1
+pkgdesc="Replaces and enhances Text.Regex"
+url="http://hackage.haskell.org/package/${_hkgname}"
+license=('custom:BSD3')
+arch=('i686' 'x86_64')
+depends=(ghc=7.0.2 sh 'haskell-regex-base' 'haskell-regex-posix=0.94.4')
+options=('strip')
+source=(http://hackage.haskell.org/packages/archive/${_hkgname}/${pkgver}/${_hkgname}-${pkgver}.tar.gz)
+install=${pkgname}.install
+md5sums=('d6becec95ea8098cab663116fdce60a5')
+
+build() {
+ cd ${srcdir}/${_hkgname}-${pkgver}
+ runhaskell Setup configure -O -p --enable-split-objs --enable-shared --prefix=/usr \
+ --docdir=/usr/share/doc/${pkgname} --libsubdir=\$compiler/site-local/\$pkgid
+ runhaskell Setup build
+ runhaskell Setup haddock
+ runhaskell Setup register --gen-script
+ runhaskell Setup unregister --gen-script
+ sed -i -r -e "s|ghc-pkg.*unregister[^ ]* |&'--force' |" unregister.sh
+}
+
+package() {
+ cd ${srcdir}/${_hkgname}-${pkgver}
+ install -D -m744 register.sh ${pkgdir}/usr/share/haskell/${pkgname}/register.sh
+ install -m744 unregister.sh ${pkgdir}/usr/share/haskell/${pkgname}/unregister.sh
+ install -d -m755 ${pkgdir}/usr/share/doc/ghc/html/libraries
+ ln -s /usr/share/doc/${pkgname}/html ${pkgdir}/usr/share/doc/ghc/html/libraries/${_hkgname}
+ runhaskell Setup copy --destdir=${pkgdir}
+ install -D -m644 LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+ rm -f ${pkgdir}/usr/share/doc/${pkgname}/LICENSE
+}
diff --git a/extra/haskell-regex-compat/haskell-regex-compat.install b/extra/haskell-regex-compat/haskell-regex-compat.install
new file mode 100644
index 000000000..898c0bba1
--- /dev/null
+++ b/extra/haskell-regex-compat/haskell-regex-compat.install
@@ -0,0 +1,18 @@
+HS_DIR=usr/share/haskell/haskell-regex-compat
+post_install() {
+ ${HS_DIR}/register.sh
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
+pre_upgrade() {
+ ${HS_DIR}/unregister.sh
+}
+post_upgrade() {
+ ${HS_DIR}/register.sh
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
+pre_remove() {
+ ${HS_DIR}/unregister.sh
+}
+post_remove() {
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
diff --git a/extra/haskell-regex-posix/PKGBUILD b/extra/haskell-regex-posix/PKGBUILD
new file mode 100644
index 000000000..84d157d4a
--- /dev/null
+++ b/extra/haskell-regex-posix/PKGBUILD
@@ -0,0 +1,37 @@
+# Maintainer: Vesa Kaihlavirta <vesa@archlinux.org>
+# Contributor: Arch Haskell Team <arch-haskell@haskell.org>
+_hkgname=regex-posix
+pkgname=haskell-regex-posix
+pkgver=0.94.4
+pkgrel=1.1
+pkgdesc="The posix regex backend for regex-base"
+url="http://hackage.haskell.org/package/${_hkgname}"
+license=('custom:BSD3')
+arch=('i686' 'x86_64')
+depends=(ghc=7.0.2 sh 'haskell-regex-base=0.93.2')
+options=('strip')
+source=(http://hackage.haskell.org/packages/archive/${_hkgname}/${pkgver}/${_hkgname}-${pkgver}.tar.gz)
+install=${pkgname}.install
+md5sums=('c28a13e8329e93a19bbb51708bf64abb')
+
+build() {
+ cd ${srcdir}/${_hkgname}-${pkgver}
+ runhaskell Setup configure -O -p --enable-split-objs --enable-shared --prefix=/usr \
+ --docdir=/usr/share/doc/${pkgname} --libsubdir=\$compiler/site-local/\$pkgid
+ runhaskell Setup build
+ runhaskell Setup haddock
+ runhaskell Setup register --gen-script
+ runhaskell Setup unregister --gen-script
+ sed -i -r -e "s|ghc-pkg.*unregister[^ ]* |&'--force' |" unregister.sh
+}
+
+package() {
+ cd ${srcdir}/${_hkgname}-${pkgver}
+ install -D -m744 register.sh ${pkgdir}/usr/share/haskell/${pkgname}/register.sh
+ install -m744 unregister.sh ${pkgdir}/usr/share/haskell/${pkgname}/unregister.sh
+ install -d -m755 ${pkgdir}/usr/share/doc/ghc/html/libraries
+ ln -s /usr/share/doc/${pkgname}/html ${pkgdir}/usr/share/doc/ghc/html/libraries/${_hkgname}
+ runhaskell Setup copy --destdir=${pkgdir}
+ install -D -m644 LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+ rm -f ${pkgdir}/usr/share/doc/${pkgname}/LICENSE
+}
diff --git a/extra/haskell-regex-posix/haskell-regex-posix.install b/extra/haskell-regex-posix/haskell-regex-posix.install
new file mode 100644
index 000000000..2b89fae7b
--- /dev/null
+++ b/extra/haskell-regex-posix/haskell-regex-posix.install
@@ -0,0 +1,18 @@
+HS_DIR=usr/share/haskell/haskell-regex-posix
+post_install() {
+ ${HS_DIR}/register.sh
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
+pre_upgrade() {
+ ${HS_DIR}/unregister.sh
+}
+post_upgrade() {
+ ${HS_DIR}/register.sh
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
+pre_remove() {
+ ${HS_DIR}/unregister.sh
+}
+post_remove() {
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
diff --git a/extra/haskell-stm/PKGBUILD b/extra/haskell-stm/PKGBUILD
new file mode 100644
index 000000000..0506c9dbf
--- /dev/null
+++ b/extra/haskell-stm/PKGBUILD
@@ -0,0 +1,38 @@
+# Maintainer: Vesa Kaihlavirta <vesa@archlinux.org>
+# Contributor: Arch Haskell Team <arch-haskell@haskell.org>
+# Package generated by cabal2arch 0.7.5
+_hkgname=stm
+pkgname=haskell-stm
+pkgver=2.2.0.1
+pkgrel=1.1
+pkgdesc="A modular composable concurrency abstraction."
+url="http://hackage.haskell.org/package/stm"
+license=('custom:BSD3')
+arch=('i686' 'x86_64')
+depends=(ghc=7.0.2 sh)
+options=('strip')
+source=(http://hackage.haskell.org/packages/archive/${_hkgname}/$pkgver/${_hkgname}-$pkgver.tar.gz)
+install=${pkgname}.install
+md5sums=('b1cf03ed315e00c33160746feeee8682')
+
+build() {
+ cd ${srcdir}/${_hkgname}-$pkgver
+ runhaskell Setup configure -O -p --enable-split-objs --enable-shared --prefix=/usr \
+ --docdir=/usr/share/doc/${pkgname} --libsubdir=\$compiler/site-local/\$pkgid
+ runhaskell Setup build
+ runhaskell Setup haddock
+ runhaskell Setup register --gen-script
+ runhaskell Setup unregister --gen-script
+ sed -i -r -e "s|ghc-pkg.*unregister[^ ]* |&'--force' |" unregister.sh
+}
+
+package() {
+ cd ${srcdir}/${_hkgname}-$pkgver
+ install -D -m744 register.sh ${pkgdir}/usr/share/haskell/${pkgname}/register.sh
+ install -m744 unregister.sh ${pkgdir}/usr/share/haskell/${pkgname}/unregister.sh
+ install -d -m755 ${pkgdir}/usr/share/doc/ghc/html/libraries
+ ln -s /usr/share/doc/${pkgname}/html ${pkgdir}/usr/share/doc/ghc/html/libraries/${_hkgname}
+ runhaskell Setup copy --destdir=${pkgdir}
+ install -D -m644 LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+ rm -f ${pkgdir}/usr/share/doc/${pkgname}/LICENSE
+}
diff --git a/extra/haskell-stm/haskell-stm.install b/extra/haskell-stm/haskell-stm.install
new file mode 100644
index 000000000..0283c2fc5
--- /dev/null
+++ b/extra/haskell-stm/haskell-stm.install
@@ -0,0 +1,18 @@
+HS_DIR=usr/share/haskell/haskell-stm
+post_install() {
+ ${HS_DIR}/register.sh
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
+pre_upgrade() {
+ ${HS_DIR}/unregister.sh
+}
+post_upgrade() {
+ ${HS_DIR}/register.sh
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
+pre_remove() {
+ ${HS_DIR}/unregister.sh
+}
+post_remove() {
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
diff --git a/extra/haskell-syb/PKGBUILD b/extra/haskell-syb/PKGBUILD
new file mode 100644
index 000000000..c2325d7cc
--- /dev/null
+++ b/extra/haskell-syb/PKGBUILD
@@ -0,0 +1,37 @@
+# Maintainer: Rémy Oudompheng <remy@archlinux.org>
+# Contributor: Arch Haskell Team <arch-haskell@haskell.org>
+_hkgname=syb
+pkgname=haskell-syb
+pkgver=0.3
+pkgrel=1.2
+pkgdesc="A library for client-side HTTP"
+url="http://hackage.haskell.org/package/${_hkgname}"
+license=('custom:BSD3')
+arch=('i686' 'x86_64')
+depends=('ghc=7.0.2' sh)
+options=('strip')
+source=(http://hackage.haskell.org/packages/archive/${_hkgname}/${pkgver}/${_hkgname}-${pkgver}.tar.gz)
+install=${pkgname}.install
+md5sums=('c4f6771fa32d467a029e6e813757a9fe')
+
+build() {
+ cd ${srcdir}/${_hkgname}-${pkgver}
+ runhaskell Setup configure -O -p --enable-split-objs --enable-shared --prefix=/usr --docdir=/usr/share/doc/${pkgname}
+ runhaskell Setup build
+ runhaskell Setup haddock
+ runhaskell Setup register --gen-script
+ runhaskell Setup unregister --gen-script
+ sed -i -r -e "s|ghc-pkg.*unregister[^ ]* |&'--force' |" unregister.sh
+}
+
+package() {
+ cd ${srcdir}/${_hkgname}-${pkgver}
+ install -D -m744 register.sh ${pkgdir}/usr/share/haskell/${pkgname}/register.sh
+ install -m744 unregister.sh ${pkgdir}/usr/share/haskell/${pkgname}/unregister.sh
+ install -d -m755 ${pkgdir}/usr/share/doc/ghc/html/libraries
+ ln -s /usr/share/doc/${pkgname}/html ${pkgdir}/usr/share/doc/ghc/html/libraries/${_hkgname}
+ runhaskell Setup copy --destdir=${pkgdir}
+ install -D -m644 LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+ rm -f ${pkgdir}/usr/share/doc/${pkgname}/LICENSE
+}
+
diff --git a/extra/haskell-syb/haskell-syb.install b/extra/haskell-syb/haskell-syb.install
new file mode 100644
index 000000000..080055165
--- /dev/null
+++ b/extra/haskell-syb/haskell-syb.install
@@ -0,0 +1,18 @@
+HS_DIR=usr/share/haskell/haskell-syb
+post_install() {
+ ${HS_DIR}/register.sh
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
+pre_upgrade() {
+ ${HS_DIR}/unregister.sh
+}
+post_upgrade() {
+ ${HS_DIR}/register.sh
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
+pre_remove() {
+ ${HS_DIR}/unregister.sh
+}
+post_remove() {
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
diff --git a/extra/haskell-tar/PKGBUILD b/extra/haskell-tar/PKGBUILD
new file mode 100644
index 000000000..98e92b594
--- /dev/null
+++ b/extra/haskell-tar/PKGBUILD
@@ -0,0 +1,37 @@
+# Contributor: Arch Haskell Team <arch-haskell@haskell.org>
+_hkgname=tar
+pkgname=haskell-tar
+pkgver=0.3.1.0
+pkgrel=4.1
+pkgdesc="Reading, writing and manipulating \".tar\" archive files."
+url="http://hackage.haskell.org/package/tar"
+license=('custom:BSD3')
+arch=('i686' 'x86_64')
+depends=('ghc=7.0.2' sh)
+options=('strip')
+source=(http://hackage.haskell.org/packages/archive/${_hkgname}/${pkgver}/${_hkgname}-${pkgver}.tar.gz)
+install=${pkgname}.install
+md5sums=('10b54856495f9ef0a42aa270085c7d5e')
+
+build() {
+ cd ${srcdir}/${_hkgname}-${pkgver}
+ runhaskell Setup configure -O -p --enable-split-objs --enable-shared \
+ --prefix=/usr --docdir=/usr/share/doc/${pkgname} \
+ --libsubdir=\$compiler/site-local/\$pkgid
+ runhaskell Setup build
+ runhaskell Setup haddock
+ runhaskell Setup register --gen-script
+ runhaskell Setup unregister --gen-script
+ sed -i -r -e "s|ghc-pkg.*unregister[^ ]* |&'--force' |" unregister.sh
+}
+
+package() {
+ cd ${srcdir}/${_hkgname}-${pkgver}
+ install -D -m744 register.sh ${pkgdir}/usr/share/haskell/${pkgname}/register.sh
+ install -m744 unregister.sh ${pkgdir}/usr/share/haskell/${pkgname}/unregister.sh
+ install -d -m755 ${pkgdir}/usr/share/doc/ghc/html/libraries
+ ln -s /usr/share/doc/${pkgname}/html ${pkgdir}/usr/share/doc/ghc/html/libraries/${_hkgname}
+ runhaskell Setup copy --destdir=${pkgdir}
+ install -D -m644 LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+ rm -f ${pkgdir}/usr/share/doc/${pkgname}/LICENSE
+}
diff --git a/extra/haskell-tar/haskell-tar.install b/extra/haskell-tar/haskell-tar.install
new file mode 100644
index 000000000..e8c2f6293
--- /dev/null
+++ b/extra/haskell-tar/haskell-tar.install
@@ -0,0 +1,18 @@
+HS_DIR=usr/share/haskell/haskell-tar
+post_install() {
+ ${HS_DIR}/register.sh
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
+pre_upgrade() {
+ ${HS_DIR}/unregister.sh
+}
+post_upgrade() {
+ ${HS_DIR}/register.sh
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
+pre_remove() {
+ ${HS_DIR}/unregister.sh
+}
+post_remove() {
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
diff --git a/extra/haskell-terminfo/PKGBUILD b/extra/haskell-terminfo/PKGBUILD
new file mode 100644
index 000000000..f8339b0a4
--- /dev/null
+++ b/extra/haskell-terminfo/PKGBUILD
@@ -0,0 +1,38 @@
+# Maintainer: Vesa Kaihlavirta <vegai@iki.fi>
+# Contributor: Arch Haskell Team <arch-haskell@haskell.org>
+_hkgname=terminfo
+pkgname=haskell-terminfo
+pkgver=0.3.1.3
+pkgrel=4.1
+pkgdesc="Haskell bindings to the terminfo library."
+url="http://hackage.haskell.org/package/${_hkgname}"
+license=('custom:BSD3')
+arch=('i686' 'x86_64')
+depends=('ghc=7.0.2' sh)
+options=('strip')
+source=(http://hackage.haskell.org/packages/archive/${_hkgname}/${pkgver}/${_hkgname}-${pkgver}.tar.gz)
+install=${pkgname}.install
+md5sums=('8c0e052340f628b76f5687fa23379628')
+
+build() {
+ cd ${srcdir}/${_hkgname}-${pkgver}
+ runhaskell Setup configure -O -p --enable-split-objs --enable-shared \
+ --prefix=/usr --docdir=/usr/share/doc/${pkgname} \
+ --libsubdir=\$compiler/site-local/\$pkgid
+ runhaskell Setup build
+ runhaskell Setup haddock
+ runhaskell Setup register --gen-script
+ runhaskell Setup unregister --gen-script
+ sed -i -r -e "s|ghc-pkg.*unregister[^ ]* |&'--force' |" unregister.sh
+}
+
+package() {
+ cd ${srcdir}/${_hkgname}-${pkgver}
+ install -D -m744 register.sh ${pkgdir}/usr/share/haskell/${pkgname}/register.sh
+ install -m744 unregister.sh ${pkgdir}/usr/share/haskell/${pkgname}/unregister.sh
+ install -d -m755 ${pkgdir}/usr/share/doc/ghc/html/libraries
+ ln -s /usr/share/doc/${pkgname}/html ${pkgdir}/usr/share/doc/ghc/html/libraries/${_hkgname}
+ runhaskell Setup copy --destdir=${pkgdir}
+ install -D -m644 LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+ rm -f ${pkgdir}/usr/share/doc/${pkgname}/LICENSE
+}
diff --git a/extra/haskell-terminfo/haskell-terminfo.install b/extra/haskell-terminfo/haskell-terminfo.install
new file mode 100644
index 000000000..40d39f42b
--- /dev/null
+++ b/extra/haskell-terminfo/haskell-terminfo.install
@@ -0,0 +1,18 @@
+HS_DIR=usr/share/haskell/haskell-terminfo
+post_install() {
+ ${HS_DIR}/register.sh
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
+pre_upgrade() {
+ ${HS_DIR}/unregister.sh
+}
+post_upgrade() {
+ ${HS_DIR}/register.sh
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
+pre_remove() {
+ ${HS_DIR}/unregister.sh
+}
+post_remove() {
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
diff --git a/extra/haskell-text/PKGBUILD b/extra/haskell-text/PKGBUILD
new file mode 100644
index 000000000..20b0d25e5
--- /dev/null
+++ b/extra/haskell-text/PKGBUILD
@@ -0,0 +1,38 @@
+# Maintainer: Vesa Kaihlavirta <vesa@archlinux.org>
+# Contributor: Arch Haskell Team <arch-haskell@haskell.org>
+_hkgname=text
+pkgname=haskell-text
+pkgver=0.11.0.5
+pkgrel=1.1
+pkgdesc="An efficient packed Unicode text type."
+url="http://hackage.haskell.org/package/${_hkgname}"
+license=('custom:BSD3')
+arch=('i686' 'x86_64')
+depends=('ghc=7.0.2' sh 'haskell-deepseq=1.1.0.2')
+options=('strip')
+source=(http://hackage.haskell.org/packages/archive/${_hkgname}/${pkgver}/${_hkgname}-${pkgver}.tar.gz)
+install=${pkgname}.install
+md5sums=('516a6813a6b9061fabdc9f0c3bbb1592')
+
+build() {
+ cd ${srcdir}/${_hkgname}-${pkgver}
+ runhaskell Setup configure -O -p --enable-split-objs --enable-shared --prefix=/usr \
+ --docdir=/usr/share/doc/${pkgname} --libsubdir=\$compiler/site-local/\$pkgid
+ runhaskell Setup build
+ runhaskell Setup haddock
+ runhaskell Setup register --gen-script
+ runhaskell Setup unregister --gen-script
+ sed -i -r -e "s|ghc-pkg.*unregister[^ ]* |&'--force' |" unregister.sh
+}
+
+package() {
+ cd ${srcdir}/${_hkgname}-${pkgver}
+ install -D -m744 register.sh ${pkgdir}/usr/share/haskell/${pkgname}/register.sh
+ install -m744 unregister.sh ${pkgdir}/usr/share/haskell/${pkgname}/unregister.sh
+ install -d -m755 ${pkgdir}/usr/share/doc/ghc/html/libraries
+ ln -s /usr/share/doc/${pkgname}/html ${pkgdir}/usr/share/doc/ghc/html/libraries/${_hkgname}
+ runhaskell Setup copy --destdir=${pkgdir}
+ install -D -m644 LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+ rm -f ${pkgdir}/usr/share/doc/${pkgname}/LICENSE
+}
+
diff --git a/extra/haskell-text/haskell-text.install b/extra/haskell-text/haskell-text.install
new file mode 100644
index 000000000..620db3921
--- /dev/null
+++ b/extra/haskell-text/haskell-text.install
@@ -0,0 +1,18 @@
+HS_DIR=usr/share/haskell/haskell-text
+post_install() {
+ ${HS_DIR}/register.sh
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
+pre_upgrade() {
+ ${HS_DIR}/unregister.sh
+}
+post_upgrade() {
+ ${HS_DIR}/register.sh
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
+pre_remove() {
+ ${HS_DIR}/unregister.sh
+}
+post_remove() {
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
diff --git a/extra/haskell-transformers/PKGBUILD b/extra/haskell-transformers/PKGBUILD
new file mode 100644
index 000000000..3e5d66a47
--- /dev/null
+++ b/extra/haskell-transformers/PKGBUILD
@@ -0,0 +1,38 @@
+# Maintainer: Rémy Oudompheng <remy@archlinux.org>
+# $Id: PKGBUILD 114165 2011-03-11 05:13:33Z vesa $
+
+_hkgname=transformers
+pkgname=haskell-transformers
+pkgver=0.2.2.0
+pkgrel=1.2
+pkgdesc="Concrete functor and monad transformers"
+url="http://hackage.haskell.org/package/${_hkgname}"
+license=('custom:BSD3')
+arch=('i686' 'x86_64')
+depends=(ghc=7.0.2 sh)
+options=('strip')
+source=(http://hackage.haskell.org/packages/archive/${_hkgname}/$pkgver/${_hkgname}-$pkgver.tar.gz)
+install=${pkgname}.install
+md5sums=('3470ac66116900cd1ba84d3744474e49')
+
+build() {
+ cd ${srcdir}/${_hkgname}-${pkgver}
+ runhaskell Setup configure -O -p --enable-split-objs --enable-shared --prefix=/usr \
+ --docdir=/usr/share/doc/${pkgname} --libsubdir=\$compiler/site-local/\$pkgid
+ runhaskell Setup build
+ runhaskell Setup haddock
+ runhaskell Setup register --gen-script
+ runhaskell Setup unregister --gen-script
+ sed -i -r -e "s|ghc-pkg.*unregister[^ ]* |&'--force' |" unregister.sh
+}
+
+package() {
+ cd ${srcdir}/${_hkgname}-${pkgver}
+ install -D -m744 register.sh ${pkgdir}/usr/share/haskell/${pkgname}/register.sh
+ install -m744 unregister.sh ${pkgdir}/usr/share/haskell/${pkgname}/unregister.sh
+ install -d -m755 ${pkgdir}/usr/share/doc/ghc/html/libraries
+ ln -s /usr/share/doc/${pkgname}/html ${pkgdir}/usr/share/doc/ghc/html/libraries/${_hkgname}
+ runhaskell Setup copy --destdir=${pkgdir}
+ install -D -m644 LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+ rm -f ${pkgdir}/usr/share/doc/${pkgname}/LICENSE
+}
diff --git a/extra/haskell-transformers/haskell-transformers.install b/extra/haskell-transformers/haskell-transformers.install
new file mode 100644
index 000000000..eec2af6e1
--- /dev/null
+++ b/extra/haskell-transformers/haskell-transformers.install
@@ -0,0 +1,18 @@
+HS_DIR=usr/share/haskell/haskell-transformers
+post_install() {
+ ${HS_DIR}/register.sh
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
+pre_upgrade() {
+ ${HS_DIR}/unregister.sh
+}
+post_upgrade() {
+ ${HS_DIR}/register.sh
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
+pre_remove() {
+ ${HS_DIR}/unregister.sh
+}
+post_remove() {
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
diff --git a/extra/haskell-utf8-string/PKGBUILD b/extra/haskell-utf8-string/PKGBUILD
new file mode 100644
index 000000000..6bc5d5292
--- /dev/null
+++ b/extra/haskell-utf8-string/PKGBUILD
@@ -0,0 +1,39 @@
+# Maintainer: Vesa Kaihlavirta <vegai@iki.fi>
+# Contributor: Arch Haskell Team <arch-haskell@haskell.org>
+# Package generated by cabal2arch 0.7.6
+_hkgname=utf8-string
+pkgname=haskell-utf8-string
+pkgver=0.3.6
+pkgrel=7.1
+pkgdesc="Support for reading and writing UTF8 Strings"
+url="http://hackage.haskell.org/package/${_hkgname}"
+license=('custom:BSD3')
+arch=('i686' 'x86_64')
+depends=('ghc=7.0.2' sh)
+options=('strip')
+source=(http://hackage.haskell.org/packages/archive/${_hkgname}/${pkgver}/${_hkgname}-${pkgver}.tar.gz)
+install=${pkgname}.install
+md5sums=('be8c5ef52a0824babdc89d60c1e9b600')
+
+build() {
+ cd ${srcdir}/${_hkgname}-${pkgver}
+ runhaskell Setup configure -O -p --enable-split-objs --enable-shared \
+ --prefix=/usr --docdir=/usr/share/doc/${pkgname} \
+ --libsubdir=\$compiler/site-local/\$pkgid
+ runhaskell Setup build
+ runhaskell Setup haddock
+ runhaskell Setup register --gen-script
+ runhaskell Setup unregister --gen-script
+ sed -i -r -e "s|ghc-pkg.*unregister[^ ]* |&'--force' |" unregister.sh
+}
+
+package() {
+ cd ${srcdir}/${_hkgname}-${pkgver}
+ install -D -m744 register.sh ${pkgdir}/usr/share/haskell/${pkgname}/register.sh
+ install -m744 unregister.sh ${pkgdir}/usr/share/haskell/${pkgname}/unregister.sh
+ install -d -m755 ${pkgdir}/usr/share/doc/ghc/html/libraries
+ ln -s /usr/share/doc/${pkgname}/html ${pkgdir}/usr/share/doc/ghc/html/libraries/${_hkgname}
+ runhaskell Setup copy --destdir=${pkgdir}
+ install -D -m644 LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+ rm -f ${pkgdir}/usr/share/doc/${pkgname}/LICENSE
+}
diff --git a/extra/haskell-utf8-string/haskell-utf8-string.install b/extra/haskell-utf8-string/haskell-utf8-string.install
new file mode 100644
index 000000000..0f64366b2
--- /dev/null
+++ b/extra/haskell-utf8-string/haskell-utf8-string.install
@@ -0,0 +1,18 @@
+HS_DIR=usr/share/haskell/haskell-utf8-string
+post_install() {
+ ${HS_DIR}/register.sh
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
+pre_upgrade() {
+ ${HS_DIR}/unregister.sh
+}
+post_upgrade() {
+ ${HS_DIR}/register.sh
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
+pre_remove() {
+ ${HS_DIR}/unregister.sh
+}
+post_remove() {
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
diff --git a/extra/haskell-xhtml/PKGBUILD b/extra/haskell-xhtml/PKGBUILD
new file mode 100644
index 000000000..cbe80cfbe
--- /dev/null
+++ b/extra/haskell-xhtml/PKGBUILD
@@ -0,0 +1,38 @@
+# Maintainer: Vesa Kaihlavirta <vesa@archlinux.org>
+# Contributor: Arch Haskell Team <arch-haskell@haskell.org>
+# Package generated by cabal2arch 0.7.6
+_hkgname=xhtml
+pkgname=haskell-xhtml
+pkgver=3000.2.0.1
+pkgrel=6.1
+pkgdesc="Combinators for producing XHTML 1.0, including the Strict, Transitional and Frameset variants."
+url="http://hackage.haskell.org/package/xhtml"
+license=('custom:BSD3')
+arch=('i686' 'x86_64')
+depends=(ghc=7.0.2 sh)
+options=('strip')
+source=(http://hackage.haskell.org/packages/archive/${_hkgname}/$pkgver/${_hkgname}-$pkgver.tar.gz)
+install=${pkgname}.install
+md5sums=('9e3e7d9c66618c5e29716f90e54363c9')
+
+build() {
+ cd ${srcdir}/${_hkgname}-${pkgver}
+ runhaskell Setup configure -O -p --enable-split-objs --enable-shared --prefix=/usr \
+ --docdir=/usr/share/doc/${pkgname} --libsubdir=\$compiler/site-local/\$pkgid
+ runhaskell Setup build
+ runhaskell Setup haddock
+ runhaskell Setup register --gen-script
+ runhaskell Setup unregister --gen-script
+ sed -i -r -e "s|ghc-pkg.*unregister[^ ]* |&'--force' |" unregister.sh
+}
+
+package() {
+ cd ${srcdir}/${_hkgname}-${pkgver}
+ install -D -m744 register.sh ${pkgdir}/usr/share/haskell/${pkgname}/register.sh
+ install -m744 unregister.sh ${pkgdir}/usr/share/haskell/${pkgname}/unregister.sh
+ install -d -m755 ${pkgdir}/usr/share/doc/ghc/html/libraries
+ ln -s /usr/share/doc/${pkgname}/html ${pkgdir}/usr/share/doc/ghc/html/libraries/${_hkgname}
+ runhaskell Setup copy --destdir=${pkgdir}
+ install -D -m644 LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+ rm -f ${pkgdir}/usr/share/doc/${pkgname}/LICENSE
+}
diff --git a/extra/haskell-xhtml/haskell-xhtml.install b/extra/haskell-xhtml/haskell-xhtml.install
new file mode 100644
index 000000000..d03b8a053
--- /dev/null
+++ b/extra/haskell-xhtml/haskell-xhtml.install
@@ -0,0 +1,19 @@
+HS_DIR=usr/share/haskell/haskell-xhtml
+post_install() {
+ ${HS_DIR}/register.sh
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
+pre_upgrade() {
+ ${HS_DIR}/unregister.sh &> /dev/null
+ exit 0
+}
+post_upgrade() {
+ ${HS_DIR}/register.sh
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
+pre_remove() {
+ ${HS_DIR}/unregister.sh
+}
+post_remove() {
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
diff --git a/extra/haskell-zlib/PKGBUILD b/extra/haskell-zlib/PKGBUILD
new file mode 100644
index 000000000..eabdd83c2
--- /dev/null
+++ b/extra/haskell-zlib/PKGBUILD
@@ -0,0 +1,39 @@
+# Maintainer: Vesa Kaihlavirta <vesa@archlinux.org>
+# Contributor: Arch Haskell Team <arch-haskell@haskell.org>
+# Package originally generated by cabal2arch 0.7.6
+_hkgname=zlib
+pkgname=haskell-zlib
+pkgver=0.5.3.1
+pkgrel=1.1
+pkgdesc="Compression and decompression in the gzip and zlib formats"
+url="http://hackage.haskell.org/package/zlib"
+license=('custom:BSD3')
+arch=('i686' 'x86_64')
+depends=(ghc=7.0.2 'zlib' sh)
+options=('strip')
+source=(http://hackage.haskell.org/packages/archive/${_hkgname}/${pkgver}/${_hkgname}-${pkgver}.tar.gz)
+install=${pkgname}.install
+md5sums=('8fb2988b112e38d04a527b892f770507')
+
+build() {
+ cd ${srcdir}/${_hkgname}-${pkgver}
+ runhaskell Setup configure -O -p --enable-split-objs --enable-shared \
+ --prefix=/usr --docdir=/usr/share/doc/${pkgname} \
+ --libsubdir=\$compiler/site-local/\$pkgid
+ runhaskell Setup build
+ runhaskell Setup haddock
+ runhaskell Setup register --gen-script
+ runhaskell Setup unregister --gen-script
+ sed -i -r -e "s|ghc-pkg.*unregister[^ ]* |&'--force' |" unregister.sh
+}
+
+package() {
+ cd ${srcdir}/${_hkgname}-${pkgver}
+ install -D -m744 register.sh ${pkgdir}/usr/share/haskell/${pkgname}/register.sh
+ install -m744 unregister.sh ${pkgdir}/usr/share/haskell/${pkgname}/unregister.sh
+ install -d -m755 ${pkgdir}/usr/share/doc/ghc/html/libraries
+ ln -s /usr/share/doc/${pkgname}/html ${pkgdir}/usr/share/doc/ghc/html/libraries/${_hkgname}
+ runhaskell Setup copy --destdir=${pkgdir}
+ install -D -m644 LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+ rm -f ${pkgdir}/usr/share/doc/${pkgname}/LICENSE
+}
diff --git a/extra/haskell-zlib/haskell-zlib.install b/extra/haskell-zlib/haskell-zlib.install
new file mode 100644
index 000000000..d387b7b65
--- /dev/null
+++ b/extra/haskell-zlib/haskell-zlib.install
@@ -0,0 +1,18 @@
+HS_DIR=usr/share/haskell/haskell-zlib
+post_install() {
+ ${HS_DIR}/register.sh
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
+pre_upgrade() {
+ ${HS_DIR}/unregister.sh
+}
+post_upgrade() {
+ ${HS_DIR}/register.sh
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
+pre_remove() {
+ ${HS_DIR}/unregister.sh
+}
+post_remove() {
+ (cd usr/share/doc/ghc/html/libraries; ./gen_contents_index)
+}
diff --git a/extra/hd2u/PKGBUILD b/extra/hd2u/PKGBUILD
new file mode 100644
index 000000000..a06530a7a
--- /dev/null
+++ b/extra/hd2u/PKGBUILD
@@ -0,0 +1,21 @@
+# $Id: PKGBUILD 13826 2008-09-29 02:37:37Z douglas $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Damir Perisa <damir.perisa@bluewin.ch>
+
+pkgname=hd2u
+pkgver=1.0.3
+pkgrel=1
+pkgdesc="Dos2Unix text file converter"
+arch=('i686' 'x86_64')
+license=('GPL2')
+url="http://hany.sk/~hany/software/hd2u/"
+depends=('popt')
+source=(http://hany.sk/~hany/_data/hd2u/$pkgname-$pkgver.tgz)
+md5sums=('8f6668fafb279aa19f956ec0515717b6')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ ./configure --prefix=/usr
+ make || return 1
+ make prefix=$pkgdir/usr install
+}
diff --git a/extra/hddtemp/PKGBUILD b/extra/hddtemp/PKGBUILD
new file mode 100644
index 000000000..f43fb8f50
--- /dev/null
+++ b/extra/hddtemp/PKGBUILD
@@ -0,0 +1,41 @@
+# $Id: PKGBUILD 98707 2010-11-12 20:24:41Z ibiru $
+# Maintainer: Andrea Scarpino <bash@archlinux.it>
+# Contributor: Roman Kyrylych <roman@archlinux.org>
+# Contributor: Damir Perisa <damir@archlinux.org>
+
+pkgname=hddtemp
+pkgver=0.3.beta15.46
+_origver=0.3-beta15
+_patchver=46
+pkgrel=1
+pkgdesc="Gives you the temperature of your hard drive by reading S.M.A.R.T. information"
+arch=('i686' 'x86_64')
+url="http://www.guzu.net/linux/hddtemp.php"
+license=('GPL')
+depends=('glibc')
+backup=('etc/conf.d/hddtemp')
+source=(http://www.guzu.net/files/hddtemp-${_origver}.tar.bz2
+ http://ftp.debian.org/debian/pool/main/h/hddtemp/hddtemp_${_origver}-${_patchver}.diff.gz
+ 'hddtemp' 'hddtemp.confd' 'hddtemp-0.3-beta15-reg-eip.patch')
+md5sums=('8b829339e1ae9df701684ec239021bb8'
+ '040437845e28771c560b4bb40e41f933'
+ 'b7ebb86dfeef3bc4577ed1040307e36b'
+ 'fdca5c43900406f0be76534ef2a5a697'
+ '526ef28549dd0da7e38d32cfc8523592')
+options=('!libtool')
+
+build() {
+ cd "$srcdir/$pkgname-${_origver}"
+
+ patch -Np1 -i "$srcdir/${pkgname}_${_origver}-${_patchver}.diff"
+ patch -Np1 -i "$srcdir/hddtemp-0.3-beta15-reg-eip.patch"
+
+ ./configure --prefix=/usr --mandir=/usr/share/man --with-db-path=/usr/share/$pkgname/hddtemp.db
+ make
+ make DESTDIR=$pkgdir install
+
+ install -D -m644 "$srcdir/$pkgname-${_origver}/debian/hddtemp.db" \
+ "$pkgdir/usr/share/${pkgname}/hddtemp.db"
+ install -D -m644 "$srcdir/hddtemp.confd" "$pkgdir/etc/conf.d/hddtemp"
+ install -D -m755 "$srcdir/hddtemp" "$pkgdir/etc/rc.d/hddtemp"
+}
diff --git a/extra/hddtemp/hddtemp b/extra/hddtemp/hddtemp
new file mode 100644
index 000000000..62f090808
--- /dev/null
+++ b/extra/hddtemp/hddtemp
@@ -0,0 +1,39 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+PARAMS=
+DRIVES=
+[ -f /etc/conf.d/hddtemp ] && . /etc/conf.d/hddtemp
+PID=$(pidof -o %PPID /usr/sbin/hddtemp)
+case "$1" in
+ start)
+ stat_busy "Starting HDDTemp"
+ [ -z "$PID" ] && /usr/sbin/hddtemp -d $PARAMS $DRIVES
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon hddtemp
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping HDDTemp"
+ [ ! -z "$PID" ] && kill $PID &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon hddtemp
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 2
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
diff --git a/extra/hddtemp/hddtemp-0.3-beta15-reg-eip.patch b/extra/hddtemp/hddtemp-0.3-beta15-reg-eip.patch
new file mode 100644
index 000000000..504a0366e
--- /dev/null
+++ b/extra/hddtemp/hddtemp-0.3-beta15-reg-eip.patch
@@ -0,0 +1,22 @@
+__USE_GNU needs to be in effect when including sys/ucontext.h,
+and signal.h pulls it in in some setups.
+
+diff -up hddtemp-0.3-beta15/src/backtrace.c~ hddtemp-0.3-beta15/src/backtrace.c
+--- hddtemp-0.3-beta15/src/backtrace.c~ 2006-04-19 05:38:14.000000000 +0300
++++ hddtemp-0.3-beta15/src/backtrace.c 2010-02-14 21:59:47.000000000 +0200
+@@ -27,13 +27,12 @@
+ #include <stdlib.h>
+ #include <unistd.h>
+ #include <linux/ptrace.h>
++#define __USE_GNU
++#include <ucontext.h>
+ #include <signal.h>
+ #include <bits/sigcontext.h>
+ #include <sys/param.h>
+
+-#define __USE_GNU
+-#include <ucontext.h>
+-
+ #define MAX_BTSIZE 64
+
+ void backtrace_handler(int n, siginfo_t *ist, void *extra) {
diff --git a/extra/hddtemp/hddtemp.confd b/extra/hddtemp/hddtemp.confd
new file mode 100644
index 000000000..6a1e18e0b
--- /dev/null
+++ b/extra/hddtemp/hddtemp.confd
@@ -0,0 +1,2 @@
+PARAMS="-q -l 127.0.0.1"
+DRIVES="/dev/sda"
diff --git a/extra/hdf5/PKGBUILD b/extra/hdf5/PKGBUILD
new file mode 100644
index 000000000..b419b96cc
--- /dev/null
+++ b/extra/hdf5/PKGBUILD
@@ -0,0 +1,44 @@
+# Maintainer: Ronald van Haren <ronald.archlinux.org>
+# Contributor: Stefan Husmann <stefan-husmann@t-online.de>
+# Contributor: damir <damir@archlinux.org>
+# Contributor: Tom K <tomk@runbox.com>
+
+pkgname=hdf5
+pkgver=1.8.5_patch1
+pkgrel=1
+arch=('i686' 'x86_64')
+pkgdesc="General purpose library and file format for storing scientific data"
+url="http://www.hdfgroup.org/HDF5/"
+license=('custom')
+depends=('zlib' 'sh')
+makedepends=('time')
+source=(ftp://ftp.hdfgroup.org/HDF5/current/src/${pkgname}-${pkgver/_/-}.tar.bz2)
+options=('!libtool')
+md5sums=('27308a145e6c208d57db3f6f2634a0f6')
+
+build() {
+ cd $srcdir/${pkgname}-${pkgver/_/-}
+ export CFLAGS="${CFLAGS/O2/O0}"
+ export CXXFLAGS="${CFLAGS}"
+ ./configure --prefix=/usr --disable-static \
+ --enable-hl \
+ --enable-threadsafe \
+ --enable-linux-lfs \
+ --enable-production \
+ --with-pic \
+ --docdir=/usr/share/doc/hdf5/ \
+ --with-pthread=/usr/lib/ \
+ --disable-sharedlib-rpath
+ make || return 1
+}
+
+package() {
+ cd $srcdir/${pkgname}-${pkgver/_/-}
+
+ make -j1 prefix=$pkgdir/usr install
+
+ install -d -m755 $pkgdir/usr/share/licenses/${pkgname}
+ install -m644 $srcdir/${pkgname}-${pkgver/_/-}/COPYING \
+ $pkgdir/usr/share/licenses/${pkgname}/LICENSE
+}
+
diff --git a/extra/help2man/PKGBUILD b/extra/help2man/PKGBUILD
new file mode 100644
index 000000000..171eb100d
--- /dev/null
+++ b/extra/help2man/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 116002 2011-03-22 15:28:48Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Paul Mattal <paul@mattal.com>
+
+pkgname=help2man
+pkgver=1.39.2
+pkgrel=1
+pkgdesc="Conversion tool to create man files"
+arch=('i686' 'x86_64')
+url="http://www.gnu.org/software/help2man/"
+license=('GPL')
+depends=('perl-locale-gettext')
+source=("http://ftp.gnu.org/gnu/${pkgname}/${pkgname}-${pkgver}.tar.gz")
+md5sums=('36659da3ba7a9a51813e1c4848900a28')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ ./configure --prefix=/usr \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --libdir=/lib
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/hercules/PKGBUILD b/extra/hercules/PKGBUILD
new file mode 100644
index 000000000..e78a2bee3
--- /dev/null
+++ b/extra/hercules/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 94782 2010-10-10 23:27:33Z kevin $
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+# Maintainer: Kevin Piche <kevin@archlinux.org>
+
+pkgname=hercules
+pkgver=3.07
+pkgrel=1
+pkgdesc="A software implementation of the mainframe System/370 and ESA/390 architectures"
+url="http://www.hercules-390.org/"
+source=(http://www.hercules-390.org/$pkgname-$pkgver.tar.gz)
+arch=(i686 x86_64)
+license=('custom')
+options=(!libtool)
+depends=('bzip2' 'libgcrypt' 'zlib')
+md5sums=('a12aa1645b0695b25b7fc0c9a3ccab3a')
+
+build() {
+ cd $startdir/src/$pkgname-$pkgver
+ # Change module extension from .la to .so.
+ sed '/HDL_MODULE_SUFFIX/ s/\.la/.so/' -i hdl.h
+ ./configure --prefix=/usr
+ make || return 1
+ make prefix=$startdir/pkg/usr install
+ # license
+ install -D -m644 COPYRIGHT \
+ $startdir/pkg/usr/share/licenses/hercules/qpl1
+}
diff --git a/extra/hexedit/PKGBUILD b/extra/hexedit/PKGBUILD
new file mode 100644
index 000000000..32f9749df
--- /dev/null
+++ b/extra/hexedit/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id: PKGBUILD 68045 2010-02-10 15:26:23Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Paul Mattal <pjmattal@elys.com>
+
+pkgname=hexedit
+pkgver=1.2.12
+pkgrel=2
+pkgdesc="Hex Editor for Linux"
+arch=('i686' 'x86_64')
+url="http://merd.net/pixel/hexedit.html"
+license=('GPL')
+depends=('ncurses')
+source=(http://merd.net/pixel/${pkgname}-${pkgver}.src.tgz)
+md5sums=('0d2f48610006278cd93359fea9a06d5c')
+
+build() {
+ cd "${srcdir}/${pkgname}"
+
+ ./configure || return 1
+ make || return 1
+ make prefix="${pkgdir}/usr" install || return 1
+}
diff --git a/extra/hplip/PKGBUILD b/extra/hplip/PKGBUILD
new file mode 100644
index 000000000..21b65a2b2
--- /dev/null
+++ b/extra/hplip/PKGBUILD
@@ -0,0 +1,61 @@
+# $Id: PKGBUILD 116953 2011-03-26 16:48:46Z tpowa $
+# Maintainer : Tobias Powalowski <tpowa@archlinux.org>
+# Contributor: Morgan LEFIEUX <comete@archlinuxfr.org>
+
+pkgname=hplip
+pkgver=3.11.3
+pkgrel=1
+pkgdesc="Drivers for HP DeskJet, OfficeJet, Photosmart, Business Inkjet and some LaserJet"
+arch=('i686' 'x86_64')
+url="http://hplipopensource.com"
+license=('GPL')
+makedepends=('python2-qt' 'pygobject' 'pkgconfig' 'sane' 'rpcbind' 'cups')
+depends=('python2' 'ghostscript>=8.64-6' 'foomatic-db' 'foomatic-db-engine'
+ 'libcups>=1.3.10-3' 'net-snmp>=5.6.1' 'libusb-compat')
+optdepends=('cups: for printing support'
+ 'dbus-python: for dbus support'
+ 'sane: for scanner support'
+ 'python-imaging: for commandline scanning support'
+ 'python-notify: for Desktop notification support'
+ 'rpcbind: for network support'
+ 'python2-qt: for running hp-toolbox'
+ 'pygobject: for running hp-toolbox')
+replaces=('hpijs')
+options=('!libtool')
+install=hplip.install
+source=(http://downloads.sourceforge.net/${pkgname}/$pkgname-$pkgver.tar.gz)
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ find . -type f -exec sed -i 's~^#.*env python~#!/usr/bin/env python2~' {} +
+ ./configure --prefix=/usr \
+ --enable-qt4 \
+ --enable-foomatic-rip-hplip-install \
+ --enable-foomatic-ppd-install \
+ --enable-hpcups-install \
+ --enable-cups-drv-install \
+ --enable-hpijs-install \
+ --enable-foomatic-drv-install \
+ --enable-pp-build \
+ --enable-udev-acl-rules
+
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make DESTDIR="$pkgdir/" install
+
+ rm -rf "$pkgdir/etc/sane.d"
+ # remove autostart of hp-daemon
+ rm -r "$pkgdir/etc/xdg"
+ # move udev rules to /lib/udev/rules.d
+ mkdir -p "$pkgdir/lib/udev/rules.d"
+ mv "$pkgdir"/etc/udev/rules.d/* "$pkgdir/lib/udev/rules.d/"
+ rm -r "$pkgdir/etc/udev"
+ # remove lp user, it's not used on archlinux
+ sed -i 's|OWNER="lp", ||g' "$pkgdir/lib/udev/rules.d/40-hplip.rules"
+ # fix sysfs rules
+ sed -i -e "s|SYSFS|ATTRS|g" -e "s|sysfs|attrs|g" "$pkgdir/lib/udev/rules.d/56-hpmud_support.rules"
+}
+md5sums=('9a2f39cb02214ee0def550defac0d240')
diff --git a/extra/hplip/hplip.install b/extra/hplip/hplip.install
new file mode 100644
index 000000000..cb0eaf8e8
--- /dev/null
+++ b/extra/hplip/hplip.install
@@ -0,0 +1,10 @@
+post_install() {
+ cat << EOF
+
+NOTE
+----
+# If you want to use this driver with sane:
+# echo "hpaio" >> /etc/sane.d/dll.conf
+
+EOF
+}
diff --git a/extra/hpoj/PKGBUILD b/extra/hpoj/PKGBUILD
new file mode 100644
index 000000000..f7a775365
--- /dev/null
+++ b/extra/hpoj/PKGBUILD
@@ -0,0 +1,52 @@
+# $Id: PKGBUILD 112539 2011-03-05 07:01:59Z eric $
+# Maintainer : Tobias Powalowski <tpowa@archlinux.org>
+
+
+pkgname=hpoj
+pkgver=0.91
+pkgrel=16
+pkgdesc="Hewlett-Packard OfficeJet, PSC, LaserJet, and PhotoSmart printer multi-function peripherals (MFPs) drivers"
+arch=('i686' 'x86_64')
+url="http://hpoj.sourceforge.net"
+license=('GPL' 'custom')
+depends=('perl' 'libusb-compat' 'net-snmp>=5.6.1' 'hplip>=1.7.2')
+makedepends=('qt3')
+optdepends=('qt3: for using xojpanel')
+install=hpoj.install
+source=(http://downloads.sourceforge.net/sourceforge/hpoj/$pkgname-$pkgver.tgz \
+ hpoj-gcc4.patch hpoj-kernel26.patch hpoj-pack.patch \
+ hpoj_gcc43.diff hpoj0.91-snmp5.5.patch)
+md5sums=('0e083aeab9b00495aa433fa9465456e0' '347bb155c5dde443a93d92d8e64579a2'\
+ '18481d3dcf6e9cadf0a3d196ee164e37' '1c3b99f1a2178675d56ece29daba0fd7'\
+ '42bb57791cacf83e4d339e3653ad003e' 'af1cf13e95ff2654b84e470d0e18f537')
+sha1sums=('36785cf1a925f569ed3983b8c068620e2c9b4456' 'cd2d37c2620e29b92b96fe779d10a6635c7f31b7'\
+ 'fe3328fd7a43ec83d76d0d7fb7be6c41027cddb3' '80258e3190ffb514c20386e8a7cf70ee18df95a5'\
+ '22409b96d7bc67a10384a88c6b710981c0b90078' '4827cfa319bcd74ff8956e1bc69360f319a26c6a')
+
+build() {
+ cd "$srcdir"/$pkgname-$pkgver
+ # adding various patches
+ patch -Np1 -i ../hpoj-gcc4.patch
+ patch -Np1 -i ../hpoj-kernel26.patch
+ patch -Np1 -i ../hpoj-pack.patch
+ patch -Np1 -i ../hpoj_gcc43.diff
+ patch -Np1 -i ../hpoj0.91-snmp5.5.patch
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "$srcdir"/$pkgname-$pkgver
+ make prefix="$pkgdir"/usr/ user_install
+ mkdir -p "$pkgdir"/etc/rc.d
+ mkdir -p "$pkgdir"/usr/lib/sane
+ mkdir -p "$pkgdir"/usr/lib/cups/backend
+ install -m 644 lib/sane/libsane-hpoj.so.1.0 "$pkgdir"/usr/lib/sane
+ install -D -m644 LICENSE $pkgdir/usr/share/licenses/$pkgname/LICENSE
+ install -D -m644 LICENSE.OpenSSL $pkgdir/usr/share/licenses/$pkgname/LICENSE.OpenSSL
+ cd "$pkgdir"/usr/lib/sane
+ ln -s libsane-hpoj.so.1.0 libsane-hpoj.so
+ ln -s libsane-hpoj.so.1.0 libsane-hpoj.so.1
+ ln -s /usr/sbin/ptal-init "$pkgdir"/etc/rc.d
+ ln -s /usr/sbin/ptal-cups "$pkgdir"/usr/lib/cups/backend/ptal
+ }
diff --git a/extra/hpoj/hpoj-gcc4.patch b/extra/hpoj/hpoj-gcc4.patch
new file mode 100644
index 000000000..ab1c125dd
--- /dev/null
+++ b/extra/hpoj/hpoj-gcc4.patch
@@ -0,0 +1,194 @@
+--- hpoj-0.91/lib/hpojip/xjpg_fix.c.gcc4 2002-07-25 11:01:24.000000000 +0200
++++ hpoj-0.91/lib/hpojip/xjpg_fix.c 2005-03-01 23:05:52.905482223 +0100
+@@ -389,7 +389,7 @@
+ \*****************************************************************************/
+
+
+-#define MYLOCATE(p) (void *)(p)=(g->headerBuffer+lenAddedHeader)
++#define MYLOCATE(p) (p)=(typeof(p))(g->headerBuffer+lenAddedHeader)
+ #define MYWRITE(p) lenAddedHeader+=sizeof(*(p))
+ #define MYWRITEBUF(data,datalen) \
+ do { \
+--- hpoj-0.91/mlcd/ExMgr.h.gcc4 2003-11-04 02:03:18.000000000 +0100
++++ hpoj-0.91/mlcd/ExMgr.h 2005-03-01 23:38:34.297977986 +0100
+@@ -127,8 +127,8 @@
+ QueueEntry(): prev(0),next(0) { }
+ #ifdef JD_DEBUGLITE
+ void dump(void) {
+- printf("QueueEntry(0x%8.8X): prev=0x%8.8X, next=0x%8.8X\n",
+- (int)this,(int)prev,(int)next);
++ printf("QueueEntry(%p): prev=%p, next=%p\n",
++ this,prev,next);
+ }
+ #endif
+ int isEnqueued(void) { return (prev || next); }
+--- hpoj-0.91/mlcd/ExMgr.cpp.gcc4 2003-11-04 02:03:18.000000000 +0100
++++ hpoj-0.91/mlcd/ExMgr.cpp 2005-03-01 23:41:49.408864110 +0100
+@@ -248,8 +248,8 @@
+
+ #ifdef JD_DEBUGLITE
+ void ExWatchdogTimer::dump(void) {
+- printf("pMsgHandler=0x%8.8X\n",(int)pMsgHandler);
+- printf("pMsg=0x%8.8X\n",(int)pMsg);
++ printf("pMsgHandler=%p\n",pMsgHandler);
++ printf("pMsg=%p\n",pMsg);
+ printf("delay=%d seconds, %d usec\n",
+ (int)delay.tv_sec,(int)delay.tv_usec);
+ printf("cancelled=%d\n",cancelled);
+@@ -1307,13 +1307,13 @@
+ printf("\tstate=%d\n",session[scd].state);
+ printf("\tfd=%d\n",session[scd].fd);
+ printf("\tscdlink=%d\n",session[scd].scdlink);
+- printf("\tpLookup=0x%8.8X\n",(int)session[scd].pLookup);
++ printf("\tpLookup=%p\n",session[scd].pLookup);
+ printf("\toutstandingForwardBdrCount=%d\n",
+ session[scd].outstandingForwardBdrCount);
+ printf("\tpReverseBdrQueue: depth=%d\n",
+ session[scd].pReverseBdrQueue->depth());
+- printf("\ttcd=0x%8.8X\n",(int)session[scd].tcd);
+- printf("\tpCommandBdr=0x%8.8X\n",(int)session[scd].pCommandBdr);
++ printf("\ttcd=%p\n",session[scd].tcd);
++ printf("\tpCommandBdr=%p\n",session[scd].pCommandBdr);
+ printf("\tpmlTrapsRegistered=%d\n",session[scd].pmlTrapsRegistered);
+ printf("\tbitbucketSocket=%d\n",session[scd].bitbucketSocket);
+
+@@ -2407,8 +2407,8 @@
+ }
+ printf("llioPossibleNameCount=%d\n",llioPossibleNameCount);
+ printf("llioName=<%s>\n",SAFE_STRING(llioName));
+- printf("llioGlobBuffer.gl_pathc=%d\n",llioGlobBuffer.gl_pathc);
+- printf("llioGlobBuffer.gl_offs=%d\n",llioGlobBuffer.gl_offs);
++ printf("llioGlobBuffer.gl_pathc=%lu\n",(unsigned long)llioGlobBuffer.gl_pathc);
++ printf("llioGlobBuffer.gl_offs=%lu\n",(unsigned long)llioGlobBuffer.gl_offs);
+ printf("llioGlobFlags=%d\n",llioGlobFlags);
+ for (i=0;i<llioMatchDeviceIDCount;i++) {
+ printf("llioMatchDeviceID[%d]=<%s>\n",i,
+--- hpoj-0.91/mlcd/transport/ExTransport.cpp.gcc4 2005-03-04 14:00:57.000000000 +0000
++++ hpoj-0.91/mlcd/transport/ExTransport.cpp 2005-03-04 14:03:37.000000000 +0000
+@@ -70,6 +70,7 @@
+
+ #ifdef JD_DEBUGLITE
+ void ExLookup::dump(void) {
++#if 0
+ printf("sizeof(ExLookup)=%d, this=0x%8.8X\n",
+ sizeof(ExLookup),(int)this);
+ printf("pService=0x%8.8X\n",
+@@ -82,6 +83,7 @@
+ lastSet);
+ printf("status=%d\n",
+ status);
++#endif
+ }
+ void ExLookup__dump(ExLookup *_this) {
+ return _this->dump();
+@@ -316,6 +318,7 @@
+
+ #ifdef JD_DEBUGLITE
+ void ExTransportChannel::dump(void) {
++#if 0
+ printf("this=0x%8.8X\n",
+ (int)this);
+ printf("port=%d\n",
+@@ -378,6 +381,7 @@
+ currentGrabbedCredit);
+ printf("currentGrabbedTransaction=%d\n",
+ currentGrabbedTransaction);
++#endif
+ }
+ #endif
+
+@@ -922,6 +926,7 @@
+ #ifdef JD_DEBUGLITE
+
+ void ExTransport::dump(void) {
++#if 0
+ int channel;
+
+ printf("this=0x%8.8X\n",
+@@ -971,6 +976,7 @@
+ if (pLookupRequest) {
+ pLookupRequest->dump();
+ }
++#endif
+ }
+
+ void ExTransport::dumpall(void) {
+@@ -1101,7 +1107,7 @@
+ ExMsg *pMsg=pMgr->getFreeMsg();
+
+ pMsg->setType(eEXMSG_ACTIVATE_WAIT);
+- pMsg->setParams(eEXCLASS_TRANSPORT,(int)this);
++ pMsg->setParams(eEXCLASS_TRANSPORT,(int)(long)this); // HACK
+ pMsg->send(pMgr);
+ }
+
+@@ -1248,7 +1254,7 @@
+ ExMsg *pMsg=pMgr->getFreeMsg();
+
+ pMsg->setType(eEXMSG_ACTIVATE_RESPONSE);
+- pMsg->setParams(eEXCLASS_TRANSPORT,(int)this,status);
++ pMsg->setParams(eEXCLASS_TRANSPORT,(int)(long)this,status); // HACK
+ pMsg->send(pMgr);
+ }
+
+@@ -1282,7 +1288,7 @@
+ ExMsg *pMsg=pMgr->getFreeMsg();
+
+ pMsg->setType(eEXMSG_DEACTIVATE_RESPONSE);
+- pMsg->setParams(eEXCLASS_TRANSPORT,(int)this,status);
++ pMsg->setParams(eEXCLASS_TRANSPORT,(int)(long)this,status); // HACK
+ pMsg->send(pMgr);
+ }
+
+--- hpoj-0.91/mlcd/transport/ExMlcTransport.cpp.gcc4 2005-03-04 14:28:28.000000000 +0000
++++ hpoj-0.91/mlcd/transport/ExMlcTransport.cpp 2005-03-04 14:29:40.000000000 +0000
+@@ -409,6 +409,7 @@
+
+ #ifdef JD_DEBUGLITE
+ void ExMlcTransportChannel::dump(void) {
++#if 0
+ ExTransportChannel::dump();
+ printf("----------------\n");
+ printf("pMlcTransport=0x%8.8X\n",
+@@ -487,6 +488,7 @@
+ countHandleEmptyCreditRequestReply.get());
+ printf("isGusher=%d\n",
+ isGusher());
++#endif
+ }
+ #endif
+
+@@ -1597,6 +1599,7 @@
+
+ #ifdef JD_DEBUGLITE
+ void ExMlcTransport::dump(void) {
++#if 0
+ int i;
+
+ ExTransport::dump();
+@@ -1631,6 +1634,7 @@
+ remoteSocketArray[i].maxForwardPacketSize,
+ remoteSocketArray[i].maxReversePacketSize);
+ }
++#endif
+ }
+ #endif
+
+--- hpoj-0.91/mlcd/transport/ExMlcCommandChannel.cpp.gcc4 2005-03-04 14:37:19.000000000 +0000
++++ hpoj-0.91/mlcd/transport/ExMlcCommandChannel.cpp 2005-03-04 14:37:46.000000000 +0000
+@@ -214,6 +214,7 @@
+
+ #ifdef JD_DEBUGLITE
+ void ExMlcCommandChannel::dump(void) {
++#if 0
+ ExMlcTransportChannel::dump();
+ printf("----------------\n");
+ printf("pForwardCommandPool=0x%8.8X\n",
+@@ -238,6 +239,7 @@
+ lastPsid);
+ printf("lastSsid=%d\n",
+ lastSsid);
++#endif
+ }
+ #endif
+
diff --git a/extra/hpoj/hpoj-kernel26.patch b/extra/hpoj/hpoj-kernel26.patch
new file mode 100644
index 000000000..38b8d0464
--- /dev/null
+++ b/extra/hpoj/hpoj-kernel26.patch
@@ -0,0 +1,86 @@
+--- hpoj-0.91/scripts/ptal-init.in.kernel26 2004-03-03 17:30:47.000000000 +0000
++++ hpoj-0.91/scripts/ptal-init.in 2004-03-03 17:30:59.000000000 +0000
+@@ -90,6 +90,11 @@
+ my $varLock="/var/lock";
+ my $varLockSubsys="$varLock/subsys";
+ my $osPlatform=`uname -s 2>/dev/null`;
++chomp $osPlatform;
++my $linuxVersion=($osPlatform eq 'Linux' ? `uname -r 2>/dev/null` : '');
++$linuxVersion=~s/^(\s*)(\d+\.\d+)(\..*)$/$2/;
++chomp $linuxVersion;
++my $usbprintermodule = ($linuxVersion eq '2.6' ? "usblp" : "printer");
+ my %devnames;
+ my %obsoleteDevnames;
+ my %configInfo;
+@@ -1222,12 +1227,12 @@
+ # undef -- skip USB probe
+ # 0 -- do nothing, proceed with USB probe
+ # >0 -- load printer.o
+-# <0 -- disable and unload printer.o
++# <0 -- disable and unload printer.o/usblp.o
+ sub linuxWhatShouldWeDoAboutUsbPrinterModule {
+ my $isSmp=&linuxIsSmp;
+ my $libusbSupported=&ptalMlcdSupportsLibusb;
+ my $usblpIsLoaded=&linuxUsblpIsLoaded;
+- my $printerIsLoaded=&linuxModuleIsLoaded("printer");
++ my $printerIsLoaded=&linuxModuleIsLoaded($usbprintermodule);
+
+ # non-SMP:
+ if (!$isSmp) {
+@@ -1261,9 +1266,10 @@
+ }
+ goto allowInsmodPrinter;
+
+- # SMP, libusb support, some sort of printer.c functionality loaded:
++ # SMP, libusb support, some sort of printer.c/usblp.c
++ # functionality loaded:
+ } elsif ($usblpIsLoaded) {
+- # printer.c compiled into the kernel:
++ # printer.c/usblp.c compiled into the kernel:
+ if (!$printerIsLoaded) {
+ if (!&askYN(
+ "\n".
+@@ -1280,7 +1286,7 @@
+ return undef;
+ }
+
+- # printer.c compiled and loaded as a module:
++ # printer.c/usblp.c compiled and loaded as a module:
+ } else {
+ promptDisableRmmodPrinter:
+ my $r=&askYN(
+@@ -1301,8 +1307,9 @@
+ }
+ }
+
+- # SMP, libusb support, printer.c enabled although not loaded:
+- } elsif (!&linuxModuleIsDisabled("printer")) {
++ # SMP, libusb support, printer.c/usblp.c enabled although not
++ # loaded:
++ } elsif (!&linuxModuleIsDisabled($usbprintermodule)) {
+ goto promptDisableRmmodPrinter;
+ }
+
+@@ -1326,11 +1333,11 @@
+ return 1;
+ }
+ if ($r<0) {
+- $r=&linuxDisableAndUnloadModule("printer",
++ $r=&linuxDisableAndUnloadModule($usbprintermodule,
+ "to prevent possible system instability due to SMP+USB");
+ } else {
+ linuxJustLoad:
+- $r=&linuxInsmod("printer",$quiet);
++ $r=&linuxInsmod($usbprintermodule,$quiet);
+ }
+ if (!$r && !$quiet &&
+ &askYN("\n*** Continue with the USB probe anyway".$msg,0)) {
+@@ -1601,7 +1608,7 @@
+
+ } else {
+ my $parModulesLoaded=0;
+- # Don't "modprobe printer" on SMP Linux with libusb support:
++ # Don't "modprobe printer/usblp" on SMP Linux with libusb support:
+ my $usbModulesLoaded=
+ (&ptalMlcdSupportsLibusb &&
+ $osPlatform=~/Linux/ && &linuxIsSmp);
diff --git a/extra/hpoj/hpoj-pack.patch b/extra/hpoj/hpoj-pack.patch
new file mode 100644
index 000000000..beb7040dc
--- /dev/null
+++ b/extra/hpoj/hpoj-pack.patch
@@ -0,0 +1,59 @@
+There is a rather scary and longstanding GCC bug [1] which causes
+instant crashes if a program defines a struct with function-pointers
+and that structure happens to be "packed". Why anybody would want to
+do such a thing is beyond me, but suffice it to say that hpoj v0.91 is
+doing precisely that. The current Debian/sarge package for hpoj is
+definitely affected (any attempt to scan an image results in an
+instant crash).
+
+A patch to work around the problem is attached.
+
+Perhaps the hpoj developers can tell us whether it was really
+intentional to have the #pragma pack(1) span all of <stdlib.h> and
+<xform.h>?
+
+Thanks,
+
+ --david
+
+[1] http://gcc.gnu.org/bugzilla/show_bug.cgi?id=1844
+
+--- hpoj-0.91/include/hpojip.h 2002-07-25 02:01:24.000000000 -0700
++++ hpoj-0.91-davidm/include/hpojip.h 2004-11-11 21:19:58.775236374 -0800
+@@ -131,12 +132,15 @@
+ float fl;
+ } DWORD_OR_PVOID;
+
++#pragma pack ()
++
+ #ifdef HPOJIP_INTERNAL
+ #include "../lib/hpojip/xform.h" // this file uses the above definitions
+ #else
+ typedef struct IP_XFORM_TBL_s FAR *LPIP_XFORM_TBL;
+ #endif
+
++#pragma pack (1)
+
+ /****************************************************************************\
+ ****************************************************************************
+@@ -587,8 +591,6 @@
+
+ EXPORT(WORD) ipGetFuncPtrs (LPIP_JUMP_TBL lpJumpTbl);
+
+-#pragma pack ()
+-
+ /****************************************************************************\
+ ****************************************************************************
+ *
+
+
+-------------------------------------------------------
+This SF.Net email is sponsored by:
+Sybase ASE Linux Express Edition - download now for FREE
+LinuxWorld Reader's Choice Award Winner for best database on Linux.
+http://ads.osdn.com/?ad_id=5588&alloc_id=12065&op=click
+
+_______________________________________________
+hpoj-devel mailing list
+hpoj-devel@lists.sourceforge.net
+https://lists.sourceforge.net/lists/listinfo/hpoj-devel
diff --git a/extra/hpoj/hpoj.install b/extra/hpoj/hpoj.install
new file mode 100644
index 000000000..acce9b033
--- /dev/null
+++ b/extra/hpoj/hpoj.install
@@ -0,0 +1,7 @@
+post_install() {
+cat << EOF
+==> To get the HP-Officejet working run as root: ptal-init setup
+==> Add ptal-init to /etc/rc.conf daemon list and place it before cups is started!
+==> To access scanner enable in /etc/sane.d/dll.conf hpoj line.
+EOF
+}
diff --git a/extra/hpoj/hpoj0.91-snmp5.5.patch b/extra/hpoj/hpoj0.91-snmp5.5.patch
new file mode 100644
index 000000000..2042d6f1a
--- /dev/null
+++ b/extra/hpoj/hpoj0.91-snmp5.5.patch
@@ -0,0 +1,11 @@
+diff -Naur hpoj-0.91-orig/lib/ptal/ptal-hpjd.c hpoj-0.91/lib/ptal/ptal-hpjd.c
+--- hpoj-0.91-orig/lib/ptal/ptal-hpjd.c 2010-02-19 22:33:54.000000000 -0500
++++ hpoj-0.91/lib/ptal/ptal-hpjd.c 2010-02-19 22:34:45.000000000 -0500
+@@ -45,6 +45,7 @@
+ #include <stdlib.h>
+
+ #ifdef HAVE_SNMP
++#include <net-snmp/net-snmp-config.h>
+ #include <asn1.h>
+ #include <snmp.h>
+ #include <snmp_api.h>
diff --git a/extra/hpoj/hpoj_gcc43.diff b/extra/hpoj/hpoj_gcc43.diff
new file mode 100644
index 000000000..099c9d755
--- /dev/null
+++ b/extra/hpoj/hpoj_gcc43.diff
@@ -0,0 +1,20 @@
+diff -Nru --exclude changelog hpoj-0.91/mlcd/transport/ExMlcTransport.h hpoj-0.91/mlcd/transport/ExMlcTransport.h
+--- hpoj-0.91/mlcd/transport/ExMlcTransport.h 2003-11-04 06:33:19.000000000 +0530
++++ hpoj-0.91/mlcd/transport/ExMlcTransport.h 2008-03-20 10:14:02.000000000 +0530
+@@ -888,14 +888,14 @@
+ void remsockReset(void);
+ public:
+ STATUS remsockLookup(int socketID,int *pState,
+- int *pMaxForwardPacketSize,int *pMaxForwardPacketSize);
++ int *pMaxForwardPacketSize,int *pMaxForwardPacketSize2);
+ STATUS remsockAdd(int socketID);
+ void handleConfigSocketReply(int result,int socketID,
+ int maxPriToSecPacketSize,int maxSecToPriPacketSize,
+ int statusLevel);
+ protected:
+ STATUS remsockUpdate(int socketID,
+- int maxForwardPacketSize,int maxForwardPacketSize);
++ int maxForwardPacketSize,int maxForwardPacketSize2);
+ STATUS remsockDelete(int socketID);
+
+ // Peripheral-initiated opens (not supported):
diff --git a/extra/hspell/PKGBUILD b/extra/hspell/PKGBUILD
new file mode 100644
index 000000000..81b12ed44
--- /dev/null
+++ b/extra/hspell/PKGBUILD
@@ -0,0 +1,57 @@
+# $Id: PKGBUILD 109025 2011-02-05 13:53:55Z andyrtr $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgbase=hspell
+pkgname=('hspell' 'hunspell-he')
+pkgver=1.1
+pkgrel=1
+arch=(i686 x86_64)
+license=('GPL')
+url="http://www.ivrix.org.il/projects/spell-checker/"
+makedepends=('glibc' 'zlib' 'perl' 'hunspell' 'gawk')
+options=('!libtool' '!makeflags')
+source=(http://hspell.ivrix.org.il/${pkgname}-${pkgver}.tar.gz
+ hspell-1.0.sharedlib.patch)
+md5sums=('e79e75180ce529c008ea085954a52f2c'
+ '0df6764bb37500ee936b9355fee0c7a5')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i ${srcdir}/hspell-1.0.sharedlib.patch
+ autoreconf -v
+ sed -i -e 's|/usr/bin/awk|/bin/awk|' wzip
+ ./configure --prefix=/usr --mandir=/usr/share/man \
+ --enable-linginfo --enable-fatverb
+ make
+ make hunspell
+}
+
+package_hspell() {
+
+ pkgdesc="Hebrew spell-checker"
+ depends=('glibc' 'zlib' 'perl')
+
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+
+ rm -f ${pkgdir}/usr/lib/libhspell.a
+}
+
+package_hunspell-he() {
+
+ pkgdesc="Hebrew hunspell dictionary"
+
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ install -dm755 ${pkgdir}/usr/share/hunspell
+ cp -p hunspell/new_he.dic ${pkgdir}/usr/share/hunspell/he_IL.dic
+ cp -p hunspell/new_he.aff ${pkgdir}/usr/share/hunspell/he_IL.aff
+
+ # the symlinks
+ install -dm755 ${pkgdir}/usr/share/myspell/dicts
+ pushd $pkgdir/usr/share/myspell/dicts
+ for file in $pkgdir/usr/share/hunspell/*; do
+ ln -sv /usr/share/hunspell/$(basename $file) .
+ done
+ popd
+}
diff --git a/extra/hspell/hspell-1.0.sharedlib.patch b/extra/hspell/hspell-1.0.sharedlib.patch
new file mode 100644
index 000000000..81467c3e9
--- /dev/null
+++ b/extra/hspell/hspell-1.0.sharedlib.patch
@@ -0,0 +1,66 @@
+Index: hspell-1.0/Makefile.in
+===================================================================
+--- hspell-1.0.orig/Makefile.in
++++ hspell-1.0/Makefile.in
+@@ -51,7 +51,7 @@ LDFLAGS=@LDFLAGS@
+
+ # Our TARGETS variable chooses what to compile. Some things are
+ # optionally compiled depending on --enable-* paramters to configure.
+-TARGETS = @TARGETS@
++TARGETS = @TARGETS@ libhspell.a
+ all: $(TARGETS)
+
+ # SEDCMD controls on whether objective-kinuyim - about 130,000 rare verb
+@@ -76,7 +76,8 @@ clean:
+ hebrew.wgz.lingsizes.tmp dmask.c install.js \
+ spell-he.xpi he.dic he.aff README-he.txt \
+ README_he_IL.txt he_IL.dic he_IL.aff he_IL.zip \
+- specfilter.o specfilter
++ specfilter.o specfilter \
++ libhspell.so.0 libhspell.so *.lo
+ rm -f hebeng/install.js hebeng/heb-eng.aff hebeng/heb-eng.dic \
+ hebeng/README-he.txt hebeng/README-en-US.txt \
+ hebeng/spell-heb-eng.xpi
+@@ -113,6 +114,9 @@ install: all
+ test -d $(DESTDIR)$(LIBDIR) || mkdir -m 755 -p $(DESTDIR)$(LIBDIR)
+ cp libhspell.a $(DESTDIR)$(LIBDIR)/
+ chmod 644 $(DESTDIR)$(LIBDIR)/libhspell.a
++ cp libhspell.so.0 $(DESTDIR)$(LIBDIR)/
++ chmod 755 $(DESTDIR)$(LIBDIR)/libhspell.so.0
++ ln -sf libhspell.so.0 $(DESTDIR)$(LIBDIR)/libhspell.so
+ test -d $(DESTDIR)$(INCLUDEDIR) || mkdir -m 755 -p $(DESTDIR)$(INCLUDEDIR)
+ cp hspell.h linginfo.h $(DESTDIR)$(INCLUDEDIR)/
+ chmod 644 $(DESTDIR)$(INCLUDEDIR)/hspell.h $(DESTDIR)$(INCLUDEDIR)/linginfo.h
+@@ -166,19 +170,30 @@ libhspell.a: dict_radix.o gimatria.o cor
+ ar cr $@ $^
+ -ranlib $@
+
+-$(HSPELL_EXECUTABLE): hspell.o tclHash.o libhspell.a
+- $(CC) $(CFLAGS) $(LDFLAGS) -o $(HSPELL_EXECUTABLE) hspell.o tclHash.o libhspell.a $(LIBS)
++EXTRAOBJECTSPIC=$(EXTRAOBJECTS:.o=.lo)
++
++%.lo: %.c
++ $(CC) -c $(CFLAGS) $(CPPFLAGS) $(DEFS) -fPIC -DPIC -o $@ $<
++
++libhspell.so.0: dict_radix.lo gimatria.lo corlist.lo libhspell.lo $(EXTRAOBJECTSPIC)
++ $(CC) $(CFLAGS) $(LDFLAGS) -o $@ -shared -Wl,-soname,libhspell.so.0 $^ -lz
++ ln -sf libhspell.so.0 libhspell.so
++
++$(HSPELL_EXECUTABLE): hspell.o tclHash.o libhspell.so.0
++ $(CC) $(CFLAGS) $(LDFLAGS) -o $(HSPELL_EXECUTABLE) hspell.o tclHash.o libhspell.so.0 $(LIBS)
+
+ # remember to update this dependency list once in a while...
+ libhspell.o dict_radix.o find_sizes.o: dict_radix.h
+ dict_radix.o linginfo.o: gzbuffered.h
+ libhspell.o mk_he_affix.o: prefixes.c
++libhspell.lo mk_he_affix.lo: prefixes.c
+ hspell.o: hash.h tclHash.h
+ tclHash.o: tclHash.h
+ corlist.o gimatria.o hspell.o libhspell.o: hspell.h
+ hspell.o libhspell.o linginfo.o: linginfo.h hspell.h
+ linginfo.o: dmask.c
+ specfilter.o: prefixes.c
++specfilter.lo: prefixes.c
+
+ prefixes.c: genprefixes.pl PrefixBits.pl
+ $(PERL) -w ./genprefixes.pl >prefixes.c
diff --git a/extra/htdig/PKGBUILD b/extra/htdig/PKGBUILD
new file mode 100644
index 000000000..6e6f12ab2
--- /dev/null
+++ b/extra/htdig/PKGBUILD
@@ -0,0 +1,39 @@
+# $Id: $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Giovanni Scafora <giovanni@archlinux.org>
+
+pkgname=htdig
+pkgver=3.2.0b6
+pkgrel=6
+pkgdesc="A complete world wide web indexing and searching system for a domain or intranet."
+url="http://www.htdig.org"
+arch=('i686' 'x86_64')
+license=('GPL')
+depends=('gcc-libs' 'zlib' 'bash')
+options=('!libtool' '!emptydirs')
+source=(http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.bz2
+ gcc4.3.patch
+ quoting.patch)
+md5sums=('8b9b9587a411ac7dd278fa5413428960'
+ '2aeda683f95b58efc0978d7fe951de59'
+ '0d9099d3b5a32d322a8e0240f85a3578')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ patch -p1 -i ${srcdir}/gcc4.3.patch
+ patch -p1 -i ${srcdir}/quoting.patch || return 1
+
+ ./configure --prefix=/usr \
+ --mandir=/usr/share/man \
+ --with-config-dir=/etc/htdig \
+ --with-default-config-file=/etc/htdig/htdig.conf \
+ --with-database-dir=/var/lib/htdig/db \
+ --with-cgi-bin-dir=/usr/bin \
+ --with-common-dir=/usr/share/doc/htdig \
+ --with-search-dir=/usr/share/doc/htdig \
+ --with-image-dir=/usr/share/doc/htdig
+ make || return 1
+ make DESTDIR=${pkgdir} install
+}
+
diff --git a/extra/htdig/gcc4.3.patch b/extra/htdig/gcc4.3.patch
new file mode 100644
index 000000000..58dec1395
--- /dev/null
+++ b/extra/htdig/gcc4.3.patch
@@ -0,0 +1,15 @@
+diff -Naurp htdig-3.2.0b6.orig/htsearch/Collection.h htdig-3.2.0b6/htsearch/Collection.h
+--- htdig-3.2.0b6.orig/htsearch/Collection.h 2004-05-28 06:15:24.000000000 -0700
++++ htdig-3.2.0b6/htsearch/Collection.h 2006-03-22 11:35:40.000000000 -0800
+@@ -36,9 +36,9 @@ public:
+ const char *docExcerpt);
+ ~Collection();
+
+- void Collection::Open();
++ void Open();
+
+- void Collection::Close();
++ void Close();
+
+ char *getWordFile() { return wordFile.get(); }
+ DocumentRef *getDocumentRef(int id);
diff --git a/extra/htdig/quoting.patch b/extra/htdig/quoting.patch
new file mode 100644
index 000000000..57b0e3b78
--- /dev/null
+++ b/extra/htdig/quoting.patch
@@ -0,0 +1,26 @@
+Index: htdig-3.2.0b6/htsearch/Display.cc
+===================================================================
+--- htdig-3.2.0b6.orig/htsearch/Display.cc
++++ htdig-3.2.0b6/htsearch/Display.cc
+@@ -137,7 +137,7 @@ Display::display(int pageNumber)
+ // Must temporarily stash the message in a String, since
+ // displaySyntaxError will overwrite the static temp used in form.
+
+- String s(form("No such sort method: `%s'", (const char*)config->Find("sort")));
++ String s("invalid sort method");
+
+ displaySyntaxError(s);
+ return;
+Index: htdig-3.2.0b6/libhtdig/ResultFetch.cc
+===================================================================
+--- htdig-3.2.0b6.orig/libhtdig/ResultFetch.cc
++++ htdig-3.2.0b6/libhtdig/ResultFetch.cc
+@@ -142,7 +142,7 @@ ResultFetch::fetch()
+ // Must temporarily stash the message in a String, since
+ // displaySyntaxError will overwrite the static temp used in form.
+
+- String s(form("No such sort method: `%s'", (const char *) config->Find("sort")));
++ String s("invalid sort method");
+
+ displaySyntaxError(s);
+ //return;
diff --git a/extra/htop/ChangeLog b/extra/htop/ChangeLog
new file mode 100644
index 000000000..686b0e181
--- /dev/null
+++ b/extra/htop/ChangeLog
@@ -0,0 +1,14 @@
+2009-09-21 Eric Belanger <eric@archlinux.org>
+
+ * htop 0.8.3-1
+ * Upstream update
+ * Built with vserver and openvz support (close FS#12755)
+
+2008-12-09 Alexander Fehr <pizzapunk gmail com>
+
+ * htop-0.8.1-1:
+ * New upstream release
+ * New maintainer
+ * Added patch to fix FS#12235
+ * Enabled Unicode support
+ * Added ChangeLog
diff --git a/extra/htop/PKGBUILD b/extra/htop/PKGBUILD
new file mode 100644
index 000000000..dce19cc82
--- /dev/null
+++ b/extra/htop/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 105144 2011-01-06 20:57:13Z angvp $
+# Contributor: Eric Belanger <eric@archlinux.org>
+# Maintainer: Daniel J Griffiths <ghost1227@archlinux.us>
+
+pkgname=htop
+pkgver=0.9
+pkgrel=1
+pkgdesc="Interactive process viewer"
+arch=('i686' 'x86_64')
+url="http://htop.sourceforge.net/"
+license=('GPL')
+depends=('ncurses')
+makedepends=('python2')
+options=('!emptydirs')
+source=(http://downloads.sourceforge.net/htop/${pkgname}-${pkgver}.tar.gz)
+md5sums=('7c5507f35f363f3f40183a2ba3c561f8')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ sed -i 's|ncursesw/curses.h|curses.h|' RichString.h RichString.c configure
+ sed -i 's|python|python2|' scripts/MakeHeader.py
+ ./configure --prefix=/usr --enable-unicode --enable-openvz \
+ --enable-vserver
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/hugin/PKGBUILD b/extra/hugin/PKGBUILD
new file mode 100644
index 000000000..23aa5c7e8
--- /dev/null
+++ b/extra/hugin/PKGBUILD
@@ -0,0 +1,38 @@
+# $Id: PKGBUILD 112014 2011-03-03 05:10:44Z eric $
+# Maintainer: Tobias Kieslich <tobias@archlinux.org>
+# Contributor: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Dominik Ryba <domryba@post.pl>
+
+pkgname=hugin
+pkgver=2010.4.0
+pkgrel=2
+pkgdesc="A frontend to the panorama-tools"
+arch=('i686' 'x86_64')
+url="http://hugin.sourceforge.net/"
+license=('LGPL')
+depends=('wxgtk' 'libpano13' 'boost-libs' 'enblend-enfuse' 'exiv2' 'openexr'
+ 'autopano-sift-c' 'lapack' 'desktop-file-utils' 'make' 'perl-exiftool')
+makedepends=('zip' 'cmake' 'boost')
+install=${pkgname}.install
+source=(http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('bfd716655461987312b2f2f00c90dcc5')
+sha1sums=('47f25c0a8b97c27108e567bcd22203c87f268d07')
+
+build() {
+ cd "${srcdir}"
+
+ mkdir build && cd build
+
+ cmake "${srcdir}/${pkgname}-${pkgver}" \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_EXE_LINKER_FLAGS="-lpthread" \
+ -DENABLE_LAPACK=yes
+
+ make
+}
+
+package(){
+ cd "${srcdir}/build"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/hugin/hugin.install b/extra/hugin/hugin.install
new file mode 100644
index 000000000..362749233
--- /dev/null
+++ b/extra/hugin/hugin.install
@@ -0,0 +1,15 @@
+post_install() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/gnome
+ update-desktop-database -q
+ update-mime-database usr/share/mime > /dev/null
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/gnome
+ update-desktop-database -q
+ update-mime-database usr/share/mime > /dev/null
+}
diff --git a/extra/hunspell/PKGBUILD b/extra/hunspell/PKGBUILD
new file mode 100644
index 000000000..e73e0e875
--- /dev/null
+++ b/extra/hunspell/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 108140 2011-01-30 10:19:56Z andyrtr $
+# Maintainer: Andreas Radke <andyrtr@archlinux.org>
+# Contributor: Hussam Al-Tayeb <ht990332@gmail.com>
+
+pkgname=hunspell
+pkgver=1.2.15
+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' 'readline')
+optdepends=('perl: for ispellaff2myspell')
+options=('!libtool')
+source=(http://downloads.sourceforge.net/hunspell/hunspell-$pkgver.tar.gz)
+md5sums=('3fa2644b8d48cae48cb0967ffba91c9d')
+
+build() {
+ cd "$srcdir/hunspell-$pkgver"
+ ./configure --prefix=/usr --disable-static \
+ --with-ui --with-readline --with-experimental
+ make
+}
+
+package() {
+ cd "$srcdir/hunspell-$pkgver"
+ make DESTDIR="$pkgdir" install
+}
diff --git a/extra/hwloc/PKGBUILD b/extra/hwloc/PKGBUILD
new file mode 100644
index 000000000..e1cf1b850
--- /dev/null
+++ b/extra/hwloc/PKGBUILD
@@ -0,0 +1,36 @@
+# $Id: PKGBUILD 114641 2011-03-15 00:30:43Z stephane $
+# Maintainer : Stéphane Gaudreault <stephane@archlinux.org>
+# Contributor: Sylvain HENRY <hsyl20@yahoo.fr>
+# Contributor: Hervé YVIQUEL <elldekaa@gmail.com>
+
+pkgname=hwloc
+pkgver=1.1.1
+pkgrel=2
+pkgdesc="Portable Hardware Locality is a portable abstraction of hierarchical architectures"
+arch=('i686' 'x86_64')
+url="http://www.open-mpi.org/projects/hwloc/"
+license=('BSD')
+depends=('sh')
+makedepends=('pkg-config')
+optdepends=('cairo: Graphical output' 'libxml2: XML export')
+options=('!libtool' '!docs')
+source=(http://www.open-mpi.org/software/hwloc/v1.1/downloads/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('ca99f6e7c9cb41ca0ce89171c817c1de1d9bbde1')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+
+ install -Dm644 COPYING "${pkgdir}"/usr/share/licenses/${pkgname}/LICENSE
+
+ # Rename hwloc-gather-topology.sh script to be consistent with the upcoming version 1.2
+ mv "${pkgdir}"/usr/bin/hwloc-gather-topology{.sh,}
+ mv "${pkgdir}"/usr/share/man/man1/hwloc-gather-topology{.sh.1,.1}
+ sed -i -e 's/hwloc-gather-topology.sh/hwloc-gather-topology/g' "${pkgdir}"/usr/share/man/man1/hwloc-gather-topology.1
+}
diff --git a/extra/hydrogen/PKGBUILD b/extra/hydrogen/PKGBUILD
new file mode 100644
index 000000000..33e3805b1
--- /dev/null
+++ b/extra/hydrogen/PKGBUILD
@@ -0,0 +1,33 @@
+# $Id: PKGBUILD 115128 2011-03-17 06:06:23Z schiv $
+# Maintainer: tobias <tobias@archlinux.org>
+# Maintainer: Ray Rashif <schiv@archlinux.org>
+# Contributor: K. Piche <kpiche@rogers.com>
+# Contributor: Giovanni Scafora <giovanni@archlinux.org>
+
+pkgname=hydrogen
+pkgver=0.9.5
+pkgrel=1
+pkgdesc="Advanced Drum Machine"
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://www.hydrogen-music.org/"
+depends=('libarchive' 'liblrdf' 'qt' 'jack')
+makedepends=('scons')
+options=('!makeflags')
+source=(http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.gz)
+md5sums=('e96f291d60e58f5d62fe616cee577dc0')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ export QTDIR=/usr
+ scons prefix=/usr libarchive=1
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ scons DESTDIR="${pkgdir}" install
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/extra/hylafax/PKGBUILD b/extra/hylafax/PKGBUILD
new file mode 100644
index 000000000..f0e678297
--- /dev/null
+++ b/extra/hylafax/PKGBUILD
@@ -0,0 +1,56 @@
+# $Id: PKGBUILD 62528 2010-01-09 20:34:27Z tpowa $
+# Maintainer: Paul Mattal <paul@archlinux.org>
+pkgname=hylafax
+pkgver=6.0.4
+pkgrel=1
+pkgdesc="Fax Server"
+arch=('i686' 'x86_64')
+install='hylafax.install'
+license=('custom')
+depends=('libtiff' 'pam' 'ghostscript')
+makedepends=('smtp-server')
+url="http://www.hylafax.org/"
+backup=(var/spool/hylafax/bin/{faxrcvd,notify} \
+ usr/lib/fax/{faxcover.ps,hfaxd.conf,pagesizes,typerules} \
+ var/spool/hylafax/etc/hosts.hfaxd)
+source=(ftp://ftp.hylafax.org/source/${pkgname}-${pkgver}.tar.gz hylafax \
+ hylafax.cron.daily config.local)
+options=('!makeflags')
+
+# build as root for successful build!
+build() {
+ uucp_created=0
+ if ! grep 'uucp' /etc/passwd > /dev/null; then
+ uucp_created=1
+ groupadd -g 14 uucp &>/dev/null
+ useradd -u 10 -g uucp -d '/' -s /bin/false uucp &>/dev/null
+ useradd -u 69 -g daemon -d '/' -s /bin/false fax &>/dev/null
+ fi
+ mkdir -p $pkgdir/usr/{bin,lib/fax,sbin,share/ghostscript/fonts} || return 1
+ mkdir -p $pkgdir/var/{spool/hylafax,lock} || return 1
+ cd $srcdir/${pkgname}-${pkgver} || return 1
+
+ cp ../config.local . || return 1
+ ./configure --nointeractive --with-OPTIMIZER="${CFLAGS}" || return 1
+ make || return 1
+ make ROOT=$pkgdir install || return 1
+ install -D -m 755 $srcdir/hylafax $pkgdir/etc/rc.d/hylafax || return 1
+ install -D -m 744 $srcdir/hylafax.cron.daily $pkgdir/etc/cron.daily/hylafax || return 1
+ # remove group if created
+ if [ $uucp_created -eq 1 ]; then
+ userdel uucp &>/dev/null
+ groupdel uucp &>/dev/null
+ userdel fax &>/dev/null
+ fi
+ # add missing awk file for notify-4.1 script
+ install -D -m 755 $srcdir/${pkgname}-${pkgver}/util/notify.awk \
+ $spkgdir/var/spool/hylafax/bin/notify.awk || return 1
+ # fix permission on /var/lock
+ chmod 1777 $pkgdir/var/lock
+
+ install -D -m644 COPYRIGHT $startdir/pkg/usr/share/licenses/$pkgname/COPYRIGHT
+}
+md5sums=('6ba4bc3a47c9d2634de1b14f4ab34c80'
+ '6602288a405324d8c8e3c5eac2bf19fd'
+ '52beffe7dc296b4f9ce9fd0387f7804e'
+ '0d2ce24d918226a852539aebf57d3f4a')
diff --git a/extra/hylafax/config.local b/extra/hylafax/config.local
new file mode 100644
index 000000000..0d8e2bcd8
--- /dev/null
+++ b/extra/hylafax/config.local
@@ -0,0 +1,273 @@
+# $Id: config.local,v 1.1 2003/06/28 00:24:49 jproctor Exp $
+#
+# HylaFAX Facsimile Software
+#
+# Copyright (c) 1990-1996 Sam Leffler
+# Copyright (c) 1991-1996 Silicon Graphics, Inc.
+# HylaFAX is a trademark of Silicon Graphics, Inc.
+#
+# Permission to use, copy, modify, distribute, and sell this software and
+# its documentation for any purpose is hereby granted without fee, provided
+# that (i) the above copyright notices and this permission notice appear in
+# all copies of the software and related documentation, and (ii) the names of
+# Sam Leffler and Silicon Graphics may not be used in any advertising or
+# publicity relating to the software without the specific, prior written
+# permission of Sam Leffler and Silicon Graphics.
+#
+# THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
+# EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
+# WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+#
+# IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
+# ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
+# OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+# WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
+# LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
+# OF THIS SOFTWARE.
+#
+
+#
+# This file holds site-specific configuration parameters.
+#
+# Nothing is defined in here by default, the definitions
+# commented out below serve as documentation for what you
+# can set in this file or a config.local file.
+#
+# Note that you do not need to set anything here unless you
+# want to override the auto-configuration behaviour and/or
+# interactive prompting done by the configure script.
+#
+
+#
+# Package controls.
+#
+#DSO="auto" # configure DSO support (auto|IRIX|no)
+#GETTY="auto" # type of getty support (auto|BSD|SysV)
+#HTML="no" # install HTML documentation (yes|no)
+#PS="auto" # PostScript support to use (auto|gs|dps|imp)
+#SGI2FAX="auto" # configure SGI image support (auto|yes|no)
+#DPS="no" # install SGI DPS-based RIP (yes|no)
+#GS="no" # install Ghostscript RIP (yes|no)
+#IMP="no" # install SGI Impressario 2.1 support (yes|no)
+#REGEX="yes" # use distributed regular expression package
+#UTMP="utmpx" # type of utmp+wtmp handling (auto|utmp|utmpx)
+#DBLIB="no" # use distributed libdb distribution
+
+#
+# Directory parameters.
+#
+DIR_BIN="/usr/bin" # directory for client apps
+DIR_LIB="/usr/lib"
+DIR_LIBDATA="/usr/lib/fax" # directory for client data
+DIR_LIBEXEC="/usr/lib/fax" # directory for libraries&hidden apps
+DIR_MAN="/usr/share/man" # directory for manual pages
+DIR_SPOOL="/var/spool/hylafax" # directory for spooling area
+DIR_SBIN="/usr/sbin" # directory for system apps
+DIR_LOCKS="/var/lock" # directory for UUCP lock files
+FONTMAP="/usr/share/ghostscript/fonts" # directorys containing Fontmap files
+DIR_LOCALE="/usr/share/locale"
+#PATH_AFM="/usr/lib/DPS/AFM" # directorys for AFM files
+
+#
+# HTML-specific parameters; only used when the
+# HTML package is configured for installation.
+#
+# Note that ``PATH''s are the virtual pathnames used
+# in forming URLs; they are not directory pathnames
+# in the filesystem.
+#
+DIR_HTML="/usr/share/hylafax/httpd" # directory for HTML documentation
+#DIR_CGI="/var/httpd/cgi-bin" # directory for CGI scripts
+#HTMLPATH="/hylafax" # virtual path to HTML materials
+#CGIPATH="/cgi-bin" # virtual path to CGI scripts
+
+#
+# Miscellaneous parameters.
+#
+#DEFVRES="196" # default vertical res for outbound fax
+#FILLORDER="MS2LSB" # bit order of cpu (MSB2LSB/LSB2MSB)
+#AXGID="uucp" # group ID for fax user
+#FAXUID="uucp" # user ID for fax user
+#PAGESIZE="North American Letter" # default page size
+SYSGID="root" # group ID for system installs
+SYSUID="root" # user ID for system installs
+#LOCKS="ascii" # default UUCP lockfile scheme
+#
+#PATH_GETTY="/etc/getty" # pathname of suitable getty program
+#PATH_VGETTY="/bin/vgetty" # pathname of voice getty program
+#PATH_EGETTY="/bin/egetty" # pathname of external getty program
+#PATH_SENDMAIL="/usr/lib/sendmail" # pathname of suitable sendmail program
+#PATH_GSRIP="/usr/local/bin/gs" # pathname of Ghostscript-based RIP
+#PATH_DPSRIP="/var/spool/hylafax/bin/ps2fax.exe" # pathname of DPS-based RIP
+#PATH_IMPRIP="/usr/lib/print/psrip" # pathname of Impressario 2.1 RIP
+#MANSCHEME="sysv-source-cat-strip" # manual page installation scheme
+#SYSVINIT="auto" # install SysV-style init support (auto|yes|no)
+#DIR_SYSVINIT="/etc/init.d" # location of SysV-style init script
+#DIR_SYSVINITSTART="../rc2.d" # location of SysV-style start script
+#DIR_SYSVINITSTOP="../rc0.d" # location of SysV-style stop script
+#NAME_SYSVINITSTART="S80fax" # name of SysV-style start script
+#NAME_SYSVINITSTOP="K80fax" # name of SysV-style stop script
+#FAXQ_SERVER=yes # init script starts faxq
+#HFAXD_SERVER=yes # init script starts hfaxd
+#HFAXD_OLD_PROTOCOL=no # don't start old protocol
+#HFAXD_SNPP_SERVER=no # don't start paging protocol
+
+# SVR4 packaging stuff
+#PKG_ARCH= # ARCH variable in pkginfo file
+#PKG_EMAIL=someone@somehost.somedomain # EMAIL variable in pkginfo file
+#PKG_VENDOR="Your Name Here" # VENDOR variable in pkginfo file
+#
+
+#
+# Parameters used when building the software.
+#
+# Note that configure has several ENVOPTS built into it that are
+# set according to the target. This is done to help naive folks.
+#
+# Beware of changing the INSTALL definition; you *must* have an
+# install script that emulates the Silicon Graphics install program!
+#
+#AR="/bin/ar" # pathname of suitable ar program
+#AROPTS="rc" # options to ar for creating archive
+#CC="gcc" # name/pathname of C compiler
+#CXX="gcc" # name/pathname of C++ compiler
+#CXXFILE="-x c++" # options for proper C++ processing
+#ENVOPTS="-Aa" # options for getting ANSI C
+#GCOPTS="-g" # options to pass C compiler
+#GCXXOPTS="-g" # options to pass C++ compiler
+#GENDIST="/sbin/gendist" # pathname of SGI inst generator program
+#INSTALL='${SHELL} ${PORT}/install.sh' # SGI install program/emulator
+#LIBMALLOC="auto" # yes|no|auto configure -lmalloc use
+#LIBPORT='${PORT}/libport.a' # library with emulation code
+#LIBSUN="auto" # yes|no|auto configure -lsun use
+#LLDOPTS="" # extra link line options
+#MACHDEPLIBS="" # extra libraries for linking
+#PORTFUNCS="" # non-standard functions to emulate
+#PROTOTYPES="-prototypes" # C compiler options for checking function prototypes
+#RANLIB=":" # pathname of suitable ranlib program
+#SHDLIBC="-lc_s" # shared C library, if not standard
+#SIGHANDLERTYPES='(void(*)(int,...))' # types to check for signal handler
+#STRIP="/bin/strip" # strip program used by install.sh
+
+#
+# The source for the TIFF library is not required
+# to build this software, but the library is required
+# to link against. If libtiff is installed in a
+# non-standard location then setup LIBTIFF accordingly.
+#
+#LIBTIFF="-L/usr/local/lib -ltiff" # linkage convention for libtiff
+#TIFFINC="/usr/local/include" # place to find tiffio.h
+#TIFFBIN="/usr/local/bin" # where TIFF tools live
+
+#
+# The source for the ZLIB library is not required
+# to build this software, but the library is required
+# to link against. If ZLIB is installed in a
+# non-standard location then setup LIBZ accordingly.
+#
+#LIBZ="-L/usr/local/lib -lz" # linkage convention for libz
+#ZLIBINC="-I/usr/local/include" # place to find zlib.h
+
+#
+# The source for the POSIX regular expression package
+# is not required to build this software, but the package
+# is required to link against. If the copy of the software
+# that is included in this distribution is not to be used
+# then set REGEX=no and supply the following definitions.
+#
+#LIBREGEX=" " # linkage convention for regex package
+#REGEXINC="/usr/include" # place to find regex.h
+
+#
+# The LIBDB hashed database package is (currently) used
+# only by the MLA tools that are not publicly available
+# but which are built from within this source tree. In
+# the future the fax software may use the libdb software
+# for the remote client capabilities database (so these
+# hooks are included now).
+#
+# The source for the LIBDB hashed database package
+# is not required to build this software, but the package
+# is required to link against. If the copy of the software
+# that is included in this distribution is not to be used
+# then set DBLIB=no and supply the following definitions.
+#
+#LIBDB=" " # linkage convention for libdb package
+#DBLIBINC="/usr/include" # place to find db.h
+
+#
+# Parameters to control various workarounds for system bugs.
+#
+# These parameters are normally set in configure based on
+# the target system. If they are set here, then they will
+# override anything done by configure.
+#
+#CONFIG_OPENFIFO="O_RDONLY" # mode to open FIFOs in server proc's
+#CONFIG_FIFOBUG="yes" # enable workaround for FIFO select bug
+#CONFIG_TIOCMBISBYREF="yes" # pass arg by reference to ioctl
+#CONFIG_WINSZHACK="no" # include extra files for TIOCWINSZ use
+#CONFIG_ABORTBUG="no" # enable workaround for abort problems
+#CONFIG_NOREOPEN="yes" # reopen tty device after toggling DTR
+#CONFIG_NOSTDINDUP="yes" # do not redirect stdout to stdin in ondelay
+#CONFIG_BADEXECVPROTO="no" # system has incorrect execv func decl
+#CONFIG_BADEXECVEPROTO="no" # system has incorrect execve func decl
+#CONFIG_BADGETOPTPROTO="no" # system has incorrect getopt func decl
+#CONFIG_SOCKARGLENTYPE="unsigned long" # call-by-ref arg type for socket funcs
+#CONFIG_BADSELECTPROTO="no" # system has way old select func decl
+#CONFIG_MAXGID="5999" # maximum permissable GID
+#CONFIG_OSFCNH="auto" # control inclusion of <osfcn.h>
+
+#
+# Dynamic Shared Object (DSO) support.
+#
+# Beware that adding new support for DSOs may require some
+# modifications to the */Makefile.dso files.
+#
+#DSOSUF="so" # DSO filename suffix
+#DSODELAY="-delay_load" # DSO option for delayed loading
+#DSOOPTS="-shared -rdata_shared" # options for building DSOs
+
+#
+# Makefile construction parameters.
+#
+# These should not normally be set; configure will
+# deduce the appropriate syntax to use for includes.
+#
+#MAKECXXOVERRIDE="=.C" # make override stuff for SunPRO C++
+#MAKEDEPINCLUDE="include" # make include for dependency files
+#MAKEDSOINCLUDE="#" # make include for DSO support
+#MAKEINCLUDE=".include" # make include syntax
+#MAKELQUOTE="<" # make include syntax
+#MAKERQUOTE=">" # make include syntax
+#SETMAKE='MAKE = ${MAKE}' # define if make does not setup $MAKE
+#MKDEPCOPTS="" # C compiler opts to supply w/ -M
+#MKDEPCXXOPTS="" # C++ compiler opts to supply w/ -M
+
+#
+# General system stuff used by the distribution.
+#
+# Beware of setting these as configure selects several programs
+# based on whether or not they are capable of processing scripts
+# included in the distribution (e.g AWK and SCRIPT_SH, SED).
+#
+#AWK="/bin/awk" # pathname of suitable awk program
+#CAT="/bin/cat" # pathname of suitable cat program
+#CHGRP="/etc/chgrp" # pathname of suitable chgrp program
+#CHMOD="/etc/chmod" # pathname of suitable chmod program
+#CHOWN="/etc/chown" # pathname of suitable chown program
+#CMP="/bin/cmp" # pathname of suitable cmp program
+#COL="/bin/col" # pathname of suitable col program
+#CP="/bin/cp" # pathname of suitable cp program
+#ECHO="/bin/echo" # pathname of suitable echo program
+#GREP="/bin/grep" # pathname of suitable grep program
+#LN="/bin/ln" # pathname of suitable ln program
+#LN_S="-s" # option to ${LN} to create symlink
+#MAN="/usr/bin/man" # pathname of suitable man program
+#MKDIR="/bin/mkdir" # pathname of suitable mkdir program
+#MKFIFO="/bin/mkfifo" # pathname of suitable mkfifo program
+#MV="/bin/mv" # pathname of suitable mv program
+#MV_F="-f" # option to ${MV} to force operation
+#RMCMD="/bin/rm" # pathname of suitable rm program
+#SED="/bin/sed" # pathname of suitable sed program
+#SCRIPT_SH="/bin/sh" # pathname of suitable shell
+#SORT="/bin/sort" # pathname of suitable sort program
diff --git a/extra/hylafax/hylafax b/extra/hylafax/hylafax
new file mode 100755
index 000000000..9f949c2ac
--- /dev/null
+++ b/extra/hylafax/hylafax
@@ -0,0 +1,71 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+DAEMON_NAME="hylafax"
+FAXQ_BIN=/usr/sbin/faxq
+FAXQ_PID=`pidof -o %PPID $FAXQ_BIN`
+HFAXD_BIN=/usr/lib/fax/hfaxd
+HFAXD_PID=`pidof -o %PPID $HFAXD_BIN`
+HFAXD_OPTS="-i hylafax"
+FAXQUIT_BIN=/usr/sbin/faxquit
+
+. /var/spool/hylafax/etc/setup.cache
+
+case "$1" in
+ start)
+ stat_busy "Starting $DAEMON_NAME"
+ [ -z "$FAXQ_PID" ] && $FAXQ_BIN
+ if [ $? -gt 0 ]; then
+ stat_fail
+ exit 1
+ else
+ echo `pidof -o %PPID $FAXQ_BIN` > /var/run/faxq.pid
+ fi
+ [ -z "$HFAXD_PID" ] && $HFAXD_BIN $HFAXD_OPTS
+ if [ $? -gt 0 ]; then
+ stat_fail
+ exit 1
+ else
+ echo `pidof -o %PPID $HFAXD_BIN` > /var/run/hfaxd.pid
+ fi
+ add_daemon $DAEMON_NAME
+ stat_done
+ ;;
+
+ stop)
+ stat_busy "Stopping $DAEMON_NAME"
+ $FAXQUIT_BIN >/dev/null 2>&1
+ if [ $? -gt 0 ]; then
+ [ ! -z "$FAXQ_PID" ] && kill $FAXQ_PID &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ exit 1
+ else
+ rm /var/run/faxq.pid &> /dev/null
+ fi
+ else
+ rm /var/run/faxq.pid &> /dev/null
+ fi
+ [ ! -z "$HFAXD_PID" ] && kill $HFAXD_PID &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ exit 1
+ else
+ rm /var/run/hfaxd.pid &> /dev/null
+ fi
+ rm_daemon $DAEMON_NAME
+ stat_done
+ ;;
+
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
diff --git a/extra/hylafax/hylafax.cron.daily b/extra/hylafax/hylafax.cron.daily
new file mode 100644
index 000000000..2d1a77e5c
--- /dev/null
+++ b/extra/hylafax/hylafax.cron.daily
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+/usr/sbin/faxqclean
+/usr/sbin/faxcron -rcv 30
diff --git a/extra/hylafax/hylafax.install b/extra/hylafax/hylafax.install
new file mode 100644
index 000000000..d9d991e6b
--- /dev/null
+++ b/extra/hylafax/hylafax.install
@@ -0,0 +1,49 @@
+
+print_install() {
+ printf "\n"
+ echo "If installing new:"
+ printf "\n"
+ echo "Add the following to /etc/inittab and run telinit q"
+ echo " f1:2345:respawn:/usr/lib/fax/faxgetty ttyS0"
+ echo "faxgetty should now be running"
+ printf "\n"
+ echo "Run faxsetup to configure and be sure to set..."
+ echo " The device to configure is usually ttyS0"
+ echo " The number of pages to accept to more than 25"
+ echo " The country code and area code"
+ echo " The faxclass to 2.0"
+ echo " Most other defaults are OK"
+ printf "\n"
+}
+
+print_remove() {
+ printf "\n\n"
+ echo "You may manually remove /var/spool/hylafax and /usr/lib/fax if you do not need anything."
+ echo "You may also remove any aliases added to /etc/mail/aliases."
+ printf "\n"
+}
+
+post_install() {
+ groupadd -g 14 uucp &>/dev/null
+ useradd -u 10 -g uucp -d '/' -s /bin/false uucp &>/dev/null
+ useradd -u 69 -g daemon -d '/' -s /bin/false fax &>/dev/null
+ print_install
+}
+
+post_upgrade() {
+ post_install
+ usermod -d '/' uucp
+ usermod -d '/' fax
+}
+
+pre_remove() {
+ userdel uucp &>/dev/null
+ groupdel uucp &>/dev/null
+ userdel fax &>/dev/null
+ print_remove
+}
+
+op=$1
+shift
+
+$op $*
diff --git a/extra/hyphen/PKGBUILD b/extra/hyphen/PKGBUILD
new file mode 100644
index 000000000..c50ecd886
--- /dev/null
+++ b/extra/hyphen/PKGBUILD
@@ -0,0 +1,61 @@
+# $Id: PKGBUILD 104194 2010-12-30 18:07:33Z andyrtr $
+# Maintainer: AndyRTR <andyrtr@archlinux.org>
+
+pkgbase=hyphen
+pkgname=('hyphen' 'hyphen-en')
+pkgver=2.7.1
+pkgrel=2
+arch=('i686' 'x86_64')
+url="http://hunspell.sf.net"
+license=('GPL' 'LGPL' 'MPL')
+groups=()
+makedepends=('glibc' 'perl')
+options=('!libtool')
+source=(http://downloads.sourceforge.net/hunspell/${pkgname}-${pkgver}.tar.gz)
+md5sums=('48a9f787f43a09c0a9b7b00cd1fddbbf')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ # libtool fix
+# autoreconf -vfi
+
+ ./configure --prefix=/usr --disable-static
+ make
+}
+
+package_hyphen() {
+ pkgdesc="library for high quality hyphenation and justification"
+ depends=('glibc' 'perl')
+
+ cd "$srcdir/$pkgname-$pkgver"
+ make DESTDIR="$pkgdir/" install-libLTLIBRARIES
+ make DESTDIR="$pkgdir/" install-binSCRIPTS
+ make DESTDIR="$pkgdir/" install-includeHEADERS
+
+ # license
+ install -D -m644 COPYING "${pkgdir}"/usr/share/licenses/${pkgname}/LICENSE
+}
+
+package_hyphen-en() {
+ pkgdesc="English hyphenation rules"
+ # arch=('any')
+ optdepends=('hyphen: offers hyphenation library functions')
+
+ cd "$srcdir/$pkgname-$pkgver"
+ make DESTDIR="$pkgdir/" install-hyphDATA
+
+ pushd ${pkgdir}/usr/share/hyphen/
+ en_US_aliases="en_AG en_AU en_BS en_BW en_BZ en_CA en_DK en_GB en_GH en_HK en_IE en_IN en_JM en_NA en_NZ en_PH en_SG en_TT en_ZA en_ZW"
+ for lang in $en_US_aliases; do
+ ln -s hyph_en_US.dic hyph_$lang.dic
+ done
+ popd
+
+ # the symlinks
+ install -dm755 ${pkgdir}/usr/share/myspell/dicts
+ pushd $pkgdir/usr/share/myspell/dicts
+ for file in $pkgdir/usr/share/hyphen/*; do
+ ln -sv /usr/share/hyphen/$(basename $file) .
+ done
+ popd
+} \ No newline at end of file
diff --git a/extra/i8kutils/PKGBUILD b/extra/i8kutils/PKGBUILD
new file mode 100644
index 000000000..51329a77f
--- /dev/null
+++ b/extra/i8kutils/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 66619 2010-02-01 02:26:09Z giovanni $
+# Contributor: Eric Johnson <eric@coding-zone.com>
+# Maintainer: Thayer Williams <thayer@archlinux.org>
+
+pkgname=i8kutils
+pkgver=1.33
+pkgrel=1
+pkgdesc="Dell Inspiron/Latitude kernel driver and utilities"
+url="http://people.debian.org/~dz/i8k/"
+license=('GPL2')
+arch=('i686' 'x86_64')
+depends=('glibc')
+source=(http://ftp.archlinux.org/other/i8kutils/$pkgname\_$pkgver.tar.gz)
+md5sums=('1ab077b301dbb0f4be8ef52eb3b97628')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ make || return 1
+
+ # no configure script, and Makefile has /usr hardcoded
+ install -D -m755 i8kctl $pkgdir/usr/bin/i8kctl || return 1
+ install -D -m755 i8kbuttons $pkgdir/usr/bin/i8kbuttons || return 1
+ install -D -m755 i8kbuttons $pkgdir/usr/bin/i8kbuttons || return 1
+ install -D -m644 i8kbuttons.1 $pkgdir/usr/share/man/man1/i8kbuttons.1 || return 1
+ install -D -m644 i8kctl.1 $pkgdir/usr/share/man/man1/i8kctl.1 || return 1
+ ln -fs ./i8kctl $pkgdir/usr/bin/i8kfan || return 1
+}
+# vim: ts=2 sw=2 et ft=sh
diff --git a/extra/icecast/PKGBUILD b/extra/icecast/PKGBUILD
new file mode 100644
index 000000000..f30833ed4
--- /dev/null
+++ b/extra/icecast/PKGBUILD
@@ -0,0 +1,54 @@
+# $Id: PKGBUILD 109082 2011-02-05 20:09:03Z andrea $
+# Maintainer:
+# Contributor: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Andreas Radke <andyrtr@archlinux.org>
+# Contributor: Jason Chu <jchu@xentac.net>
+
+pkgname=icecast
+pkgver=2.3.2
+pkgrel=5
+pkgdesc="Streaming audio over the Internet"
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://www.icecast.org/"
+depends=('libxslt' 'libvorbis' 'curl' 'speex' 'libtheora')
+backup=('etc/icecast.xml'
+ 'etc/logrotate.d/icecast')
+source=("http://downloads.us.xiph.org/releases/${pkgname}/${pkgname}-${pkgver}.tar.gz"
+ 'icecastd' 'icecast.logrotate'
+ 'start-by-nobody.patch')
+md5sums=('ff516b3ccd2bcc31e68f460cd316093f'
+ 'e823c1fdb080aae3d0c54ef8be95f7cb'
+ '59c6552bcb1dd9fb542af8670dfabd3c'
+ 'd8e929d2214123a1954da4383bf16583')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ patch -Np1 -i ${srcdir}/start-by-nobody.patch
+
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --localstatedir=/var
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+
+ # install man-page
+ sed -i -e 's/icecast2/icecast/g' debian/icecast2.1
+ install -Dm644 debian/icecast2.1 \
+ ${pkgdir}/usr/share/man/man1/icecast.1
+
+ # init file
+ install -Dm755 ${srcdir}/icecastd \
+ ${pkgdir}/etc/rc.d/icecast
+ # rotate the logs (taken from Fedora)
+ install -Dm644 ${srcdir}/icecast.logrotate \
+ ${pkgdir}/etc/logrotate.d/icecast
+
+ # install log dir
+ install -d -g99 -o99 ${pkgdir}/var/log/icecast
+}
diff --git a/extra/icecast/icecast.logrotate b/extra/icecast/icecast.logrotate
new file mode 100644
index 000000000..0fb014c06
--- /dev/null
+++ b/extra/icecast/icecast.logrotate
@@ -0,0 +1,8 @@
+/var/log/icecast/*log {
+ missingok
+ notifempty
+ sharedscripts
+ postrotate
+ endscript
+}
+
diff --git a/extra/icecast/icecastd b/extra/icecast/icecastd
new file mode 100644
index 000000000..e6c91b08c
--- /dev/null
+++ b/extra/icecast/icecastd
@@ -0,0 +1,66 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+timeo=30
+
+getPID() {
+ pgrep -u nobody icecast 2>/dev/null
+}
+
+case $1 in
+ start)
+ stat_busy "Starting Icecast Server"
+ if getPID >/dev/null; then
+ # already running
+ stat_fail
+ exit 1
+ else
+ /usr/bin/icecast -b -c /etc/icecast.xml &>/dev/null
+ while (( timeo > 0 )); do
+ if getPID >/dev/null; then
+ add_daemon icecast
+ stat_done
+ exit 0
+ fi
+ sleep 1
+ (( timeo-- ))
+ done
+ stat_fail
+ exit 1
+ fi
+ ;;
+
+ stop)
+ stat_busy "Stopping Icecast Server"
+ if ! getPID >/dev/null; then
+ # not running
+ stat_done
+ exit 1
+ fi
+ if ! kill $(getPID) &> /dev/null; then
+ stat_fail
+ exit 1
+ fi
+ while (( timeo > 0 )); do
+ if getPID >/dev/null; then
+ rm_daemon icecast
+ stat_done
+ exit 0
+ fi
+ sleep 1
+ (( timeo-- ))
+ done
+ stat_fail
+ exit 1
+ ;;
+
+ restart)
+ $0 stop
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
diff --git a/extra/icecast/start-by-nobody.patch b/extra/icecast/start-by-nobody.patch
new file mode 100644
index 000000000..d218e5afe
--- /dev/null
+++ b/extra/icecast/start-by-nobody.patch
@@ -0,0 +1,15 @@
+--- icecast-2.3.2/conf/icecast.xml.in~ 2010-11-12 16:47:54.750000918 +0100
++++ icecast-2.3.2/conf/icecast.xml.in 2010-11-12 16:48:08.086667585 +0100
+@@ -164,11 +164,9 @@
+
+ <security>
+ <chroot>0</chroot>
+- <!--
+ <changeowner>
+ <user>nobody</user>
+- <group>nogroup</group>
++ <group>nobody</group>
+ </changeowner>
+- -->
+ </security>
+ </icecast>
diff --git a/extra/icedtea-web/PKGBUILD b/extra/icedtea-web/PKGBUILD
new file mode 100644
index 000000000..19cd1fd16
--- /dev/null
+++ b/extra/icedtea-web/PKGBUILD
@@ -0,0 +1,82 @@
+# $Id: PKGBUILD 117733 2011-04-04 17:37:15Z andyrtr $
+# Maintainer: Andreas Radke <andyrtr@archlinux.org>
+
+pkgbase=icedtea-web
+pkgname=('icedtea-web' 'icedtea-web-doc')
+pkgver=1.0.2
+pkgrel=1
+arch=('i686' 'x86_64')
+url="http://icedtea.classpath.org/wiki/IcedTea-Web"
+license=('GPL2')
+makedepends=('openjdk6' 'zip' 'xulrunner')
+install=$pkgname.install
+source=(http://icedtea.classpath.org/download/source/$pkgname-$pkgver.tar.gz
+ fix-man-location.patch)
+md5sums=('4b5d80f4b82e53f4947e6782a0472d54'
+ '58e305aa0d27d59f543d9cfddc6e175a')
+
+build() {
+ _javaver=6
+ _jvmdir=/usr/lib/jvm/java-${_javaver}-openjdk
+
+ cd "$srcdir/$pkgname-$pkgver"
+ patch -Np0 -i $srcdir/fix-man-location.patch
+ autoreconf -v
+ ./configure --prefix=/usr/lib/jvm/java-6-openjdk \
+ --datarootdir=/usr/share
+ make
+}
+
+package_icedtea-web() {
+
+ pkgdesc="provides a Free Software web browser plugin running applets written in the Java programming language and an implementation of Java Web Start, originally based on the NetX project"
+ depends=('openjdk6' 'gtk2' 'desktop-file-utils')
+
+ if [ "${CARCH}" = "x86_64" ]; then
+ _arch=amd64
+ else
+ _arch=i586
+ fi
+
+ _javaver=6
+ _jvmdir=/usr/lib/jvm/java-${_javaver}-openjdk
+
+ cd "$srcdir/$pkgname-$pkgver"
+ make DESTDIR="$pkgdir" install
+ # Install desktop files.
+ install -m755 -d ${pkgdir}/usr/share/{applications,pixmaps}
+ install -m644 javaws.png ${pkgdir}/usr/share/pixmaps
+ install -m644 {javaws,itweb-settings}.desktop ${pkgdir}/usr/share/applications
+ # remove splitted doc files
+ rm -vrf ${pkgdir}/usr/share/doc
+
+ # link binaries into /usr/bin + jre/bin
+ install -m755 -d ${pkgdir}/usr/bin
+ pushd ${pkgdir}/${_jvmdir}/bin
+ for file in *; do
+ ln -sf ${_jvmdir}/bin/${file} ${pkgdir}/usr/bin
+ ln -sf ${_jvmdir}/bin/${file} ${pkgdir}/${_jvmdir}/jre/bin
+ done
+ popd
+
+ # link the mozilla-plugin - test it here http://www.java.com/en/download/help/testvm.xml
+ install -m755 -d ${pkgdir}/usr/lib/mozilla/plugins/
+ ln -sf ${_jvmdir}/jre/lib/${_arch/i586/i386}/IcedTeaPlugin.so ${pkgdir}/usr/lib/mozilla/plugins/
+}
+
+package_icedtea-web-doc() {
+
+ pkgdesc="icedtea-web browser plugin + Java WebStart - documentation files"
+
+ _javaver=6
+ _jvmdir=/usr/lib/jvm/java-${_javaver}-openjdk
+
+ cd "$srcdir/$pkgbase-$pkgver"
+ install -m755 -d $pkgdir/${_jvmdir}/jre/lib
+ make DESTDIR="$pkgdir" install-data-local
+ # remove javaws about and man page
+ rm -vrf ${pkgdir}/usr/lib
+ rm -vrf ${pkgdir}/usr/share/man
+}
+
+# plugin test here http://www.java.com/en/download/help/testvm.xml \ No newline at end of file
diff --git a/extra/icedtea-web/fix-man-location.patch b/extra/icedtea-web/fix-man-location.patch
new file mode 100644
index 000000000..8108c7182
--- /dev/null
+++ b/extra/icedtea-web/fix-man-location.patch
@@ -0,0 +1,13 @@
+--- Makefile.am 2011-02-02 03:43:25.000000000 +0100
++++ Makefile.am.new 2011-02-03 14:37:55.556053388 +0100
+@@ -130,8 +130,8 @@
+ endif
+
+ install-data-local:
+- ${mkinstalldirs} -d $(DESTDIR)$(prefix)/man/man1
+- ${INSTALL_DATA} $(NETX_SRCDIR)/javaws.1 $(DESTDIR)$(prefix)/man/man1
++ ${mkinstalldirs} -d $(DESTDIR)$(mandir)/man1
++ ${INSTALL_DATA} $(NETX_SRCDIR)/javaws.1 $(DESTDIR)$(mandir)/man1
+ ${INSTALL_DATA} $(NETX_RESOURCE_DIR)/about.jnlp $(DESTDIR)$(prefix)$(JRE_DIR_PREFIX)/lib
+ if ENABLE_DOCS
+ ${mkinstalldirs} $(DESTDIR)$(htmldir)
diff --git a/extra/icedtea-web/icedtea-web.install b/extra/icedtea-web/icedtea-web.install
new file mode 100644
index 000000000..80312d4a6
--- /dev/null
+++ b/extra/icedtea-web/icedtea-web.install
@@ -0,0 +1,11 @@
+post_install() {
+ update-desktop-database -q
+}
+
+post_upgrade() {
+ update-desktop-database -q
+}
+
+post_remove() {
+ update-desktop-database -q
+}
diff --git a/extra/icewm/ChangeLog b/extra/icewm/ChangeLog
new file mode 100644
index 000000000..b3e46cb6f
--- /dev/null
+++ b/extra/icewm/ChangeLog
@@ -0,0 +1,15 @@
+2010-01-18 Eric Belanger <eric@archlinux.org>
+
+ * icewm 1.2.37-3
+ * Rebuilt for libpng 1.4 and libjpeg 8
+
+2009-01-30 Eric Belanger <eric@archlinux.org>
+
+ * icewm 1.2.37-1
+ * Upstream update
+
+2008-10-18 Eric Belanger <eric@archlinux.org>
+
+ * icewm 1.2.36-1
+ * Upstream update
+ * Added ChangeLog
diff --git a/extra/icewm/PKGBUILD b/extra/icewm/PKGBUILD
new file mode 100644
index 000000000..c8e7f282c
--- /dev/null
+++ b/extra/icewm/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 63924 2010-01-19 03:33:08Z eric $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+# Contributor: dorphell <dorphell@gmx.net>
+
+pkgname=icewm
+pkgver=1.2.37
+pkgrel=3
+pkgdesc="A Window Manager designed for speed, usability, and consistency"
+arch=('i686' 'x86_64')
+url="http://www.icewm.org/"
+license=('LGPL')
+depends=('gcc-libs' 'imlib' 'libxrandr' 'libxft' 'libsm' 'libxinerama' 'giflib')
+source=(http://downloads.sourceforge.net/sourceforge/icewm/${pkgname}-${pkgver}.tar.gz icewm.desktop)
+md5sums=('970a21588d26eb361020fd60a61a482c' 'a3ed467f0199792205b04272402a9945')
+sha1sums=('bee1ca66d2282888807551bc28a65b08e4108027' '7dcb1f2c89792a35b687182584ed9baa0d34cc80')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc --with-imlib \
+ --enable-shaped-decorations --enable-gradients || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install install-man install-docs || return 1
+ install -D -m644 "${srcdir}/icewm.desktop" "${pkgdir}/etc/X11/sessions/icewm.desktop" || return 1
+}
diff --git a/extra/icewm/icewm.desktop b/extra/icewm/icewm.desktop
new file mode 100644
index 000000000..e5ff5dce6
--- /dev/null
+++ b/extra/icewm/icewm.desktop
@@ -0,0 +1,6 @@
+[Desktop Entry]
+Encoding=UTF-8
+Type=XSession
+Exec=/usr/bin/icewm-session
+TryExec=/usr/bin/icewm-session
+Name=icewm
diff --git a/extra/icon-naming-utils/PKGBUILD b/extra/icon-naming-utils/PKGBUILD
new file mode 100644
index 000000000..0fcffc493
--- /dev/null
+++ b/extra/icon-naming-utils/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 33029 2009-04-03 21:35:27Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: William Rea <sillywilly@gmail.com>
+
+pkgname=icon-naming-utils
+pkgver=0.8.90
+pkgrel=1
+pkgdesc="Maps the new names of icons for Tango to the legacy names used by the GNOME and KDE desktops."
+arch=(i686 x86_64)
+license=('GPL')
+url="http://tango.freedesktop.org/"
+depends=('perl-xml-simple')
+source=(http://tango.freedesktop.org/releases/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('dd8108b56130b9eedc4042df634efa66')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --libexecdir=/usr/lib/icon-naming-utils \
+ --localstatedir=/var || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+ mv "${pkgdir}/usr/share/pkgconfig" "${pkgdir}/usr/lib/pkgconfig" || return 1
+}
diff --git a/extra/icu/PKGBUILD b/extra/icu/PKGBUILD
new file mode 100644
index 000000000..b6a8f2be3
--- /dev/null
+++ b/extra/icu/PKGBUILD
@@ -0,0 +1,32 @@
+# $Id: PKGBUILD 114724 2011-03-15 19:35:12Z andyrtr $
+# Maintainer: Andreas Radke <andyrtr@archlinux.org>
+# Contributor: Art Gramlich <art@gramlich-net.com>
+
+pkgname=icu
+pkgver=4.6.1
+pkgrel=1
+pkgdesc="International Components for Unicode library"
+arch=(i686 x86_64)
+url="http://www.icu-project.org/"
+license=('custom:"icu"')
+depends=('gcc-libs' 'sh')
+source=(http://download.icu-project.org/files/${pkgname}4c/${pkgver}/${pkgname}4c-${pkgver//./_}-src.tgz
+ #http://download.icu-project.org/files/${pkgname}4c/${pkgver}/${pkgname}4c-${pkgver/./_}-src.tgz
+)
+md5sums=('da64675d85f0c2191cef93a8cb5eea88')
+
+build() {
+ cd ${srcdir}/icu/source
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man
+ make
+}
+
+package() {
+ cd ${srcdir}/icu/source
+ make -j1 DESTDIR=${pkgdir} install
+
+ # Install license
+ install -Dm644 ${srcdir}/icu/license.html ${pkgdir}/usr/share/licenses/icu/license.html
+}
diff --git a/extra/id3/PKGBUILD b/extra/id3/PKGBUILD
new file mode 100644
index 000000000..046797e07
--- /dev/null
+++ b/extra/id3/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 42386 2009-06-13 14:30:24Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Jochem Kossen <j.kossen@home.nl>
+
+pkgname=id3
+pkgver=0.78
+pkgrel=2
+pkgdesc="Utility to edit id3v1 and id3v2 tags"
+arch=('i686' 'x86_64')
+license=('custom')
+depends=('gcc-libs')
+source=(http://home.wanadoo.nl/squell/files/${pkgname}-${pkgver}.tar.gz
+ id3-0.78-gcc44.patch)
+url="http://home.wanadoo.nl/squell/id3.html"
+md5sums=('bbc2a5d8022006330e6bb51034fafb43'
+ '51370be8d2624efee3683efab608a7f1')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ patch -Np1 -i ${srcdir}/id3-0.78-gcc44.patch || return 1
+ make || return 1
+ make prefix=${pkgdir}/usr mandir=${pkgdir}/usr/share/man install
+
+ #install license
+ install -Dm644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+}
+
diff --git a/extra/id3/id3-0.78-gcc44.patch b/extra/id3/id3-0.78-gcc44.patch
new file mode 100644
index 000000000..63c4d93b1
--- /dev/null
+++ b/extra/id3/id3-0.78-gcc44.patch
@@ -0,0 +1,29 @@
+--- a/charconv.cpp 2006-02-14 16:44:58.000000000 -0500
++++ b/charconv.cpp 2009-06-12 17:59:54.332486433 -0400
+@@ -5,6 +5,7 @@
+ #include <cstdlib>
+ #include <clocale>
+ #include <climits>
++#include <cstring>
+ #if defined(__STDC_ISO_10646__) || defined(__WIN32__)
+ # include <wchar.h>
+ # define fallback(call) (0)
+--- a/getid3v2.cpp 2006-02-10 22:23:14.000000000 -0500
++++ b/getid3v2.cpp 2009-06-12 18:06:49.582446332 -0400
+@@ -1,5 +1,6 @@
+ #include <vector>
+ #include <cstdio>
++#include <cstring>
+ #include "char_ucs.h"
+ #include "id3v2.h"
+ #include "getid3v2.h"
+--- a/setfname.cpp 2006-03-19 06:13:36.000000000 -0500
++++ b/setfname.cpp 2009-06-12 18:09:35.759097380 -0400
+@@ -1,6 +1,7 @@
+ #include <cstdio>
+ #include <cctype>
+ #include <ctime> // borland needs this
++#include <cstring>
+ #include <sys/stat.h>
+ #include <utime.h>
+ #if defined(__WIN32__)
diff --git a/extra/id3lib/PKGBUILD b/extra/id3lib/PKGBUILD
new file mode 100644
index 000000000..44263c9c9
--- /dev/null
+++ b/extra/id3lib/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 2130 2008-05-26 00:08:23Z eric $
+# Maintainer:
+# Contributor: Jochem Kossen <j.kossen@home.nl>
+pkgname=id3lib
+pkgver=3.8.3
+pkgrel=10
+pkgdesc="An open-source, cross-platform software development library for reading, writing, and manipulating ID3v1 and ID3v2 tags"
+arch=(i686 x86_64)
+license=('LGPL')
+url="http://id3lib.sourceforge.net/"
+depends=('zlib' 'gcc-libs')
+options=('!libtool')
+source=(http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.gz
+ patch_id3lib_3.8.3_UTF16_writing_bug.diff
+ id3lib-3.8.3-CVE-2007-4460.patch
+ id3lib-3.8.3-gcc-4.3.patch)
+md5sums=('19f27ddd2dda4b2d26a559a4f0f402a7' '196c65adee1ba511ddacef2de0dfd102'\
+ '78e90e15ddd1122b66da352b6c3b00ff' 'fdbffd2d9d289ed0d730950c78d4ebc4')
+
+build() {
+ cd ${startdir}/src/${pkgname}-${pkgver}
+ patch -Np1 -i ${startdir}/src/patch_id3lib_3.8.3_UTF16_writing_bug.diff || return 1
+ patch -Np0 -i ${startdir}/src/id3lib-3.8.3-CVE-2007-4460.patch || return 1
+ patch -Np1 -i ${startdir}/src/id3lib-3.8.3-gcc-4.3.patch || return 1
+ ./configure --prefix=/usr
+ sed -i -e 's/^LIBS =/LIBS = -lz -lstdc++/' src/Makefile || return 1
+ make || return 1
+ make DESTDIR=${startdir}/pkg install
+}
diff --git a/extra/id3lib/id3lib-3.8.3-CVE-2007-4460.patch b/extra/id3lib/id3lib-3.8.3-CVE-2007-4460.patch
new file mode 100644
index 000000000..daa08667b
--- /dev/null
+++ b/extra/id3lib/id3lib-3.8.3-CVE-2007-4460.patch
@@ -0,0 +1,49 @@
+--- src/tag_file.cpp
++++ src/tag_file.cpp
+@@ -242,8 +242,8 @@
+ strcpy(sTempFile, filename.c_str());
+ strcat(sTempFile, sTmpSuffix.c_str());
+
+-#if ((defined(__GNUC__) && __GNUC__ >= 3 ) || !defined(HAVE_MKSTEMP))
+- // This section is for Windows folk && gcc 3.x folk
++#if !defined(HAVE_MKSTEMP)
++ // This section is for Windows folk
+ fstream tmpOut;
+ createFile(sTempFile, tmpOut);
+
+@@ -257,7 +257,7 @@
+ tmpOut.write((char *)tmpBuffer, nBytes);
+ }
+
+-#else //((defined(__GNUC__) && __GNUC__ >= 3 ) || !defined(HAVE_MKSTEMP))
++#else //!defined(HAVE_MKSTEMP)
+
+ // else we gotta make a temp file, copy the tag into it, copy the
+ // rest of the old file after the tag, delete the old file, rename
+@@ -270,7 +270,7 @@
+ //ID3_THROW_DESC(ID3E_NoFile, "couldn't open temp file");
+ }
+
+- ofstream tmpOut(fd);
++ ofstream tmpOut(sTempFile);
+ if (!tmpOut)
+ {
+ tmpOut.close();
+@@ -285,14 +285,14 @@
+ uchar tmpBuffer[BUFSIZ];
+ while (file)
+ {
+- file.read(tmpBuffer, BUFSIZ);
++ file.read((char *)tmpBuffer, BUFSIZ);
+ size_t nBytes = file.gcount();
+- tmpOut.write(tmpBuffer, nBytes);
++ tmpOut.write((char *)tmpBuffer, nBytes);
+ }
+
+ close(fd); //closes the file
+
+-#endif ////((defined(__GNUC__) && __GNUC__ >= 3 ) || !defined(HAVE_MKSTEMP))
++#endif ////!defined(HAVE_MKSTEMP)
+
+ tmpOut.close();
+ file.close();
diff --git a/extra/id3lib/id3lib-3.8.3-gcc-4.3.patch b/extra/id3lib/id3lib-3.8.3-gcc-4.3.patch
new file mode 100644
index 000000000..f5ec498b6
--- /dev/null
+++ b/extra/id3lib/id3lib-3.8.3-gcc-4.3.patch
@@ -0,0 +1,83 @@
+diff -Naur id3lib-3.8.3-orig/configure id3lib-3.8.3/configure
+--- id3lib-3.8.3-orig/configure 2008-05-24 23:39:36.000000000 -0400
++++ id3lib-3.8.3/configure 2008-05-24 23:39:57.000000000 -0400
+@@ -10296,8 +10296,7 @@
+
+ for ac_header in \
+ string \
+- iomanip.h \
+
+ do
+ as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+
+diff -Naur id3lib-3.8.3-orig/include/id3/id3lib_strings.h id3lib-3.8.3/include/id3/id3lib_strings.h
+--- id3lib-3.8.3-orig/include/id3/id3lib_strings.h 2008-03-05 18:19:46.000000000 -0600
++++ id3lib-3.8.3/include/id3/id3lib_strings.h 2008-03-05 18:19:38.000000000 -0600
+@@ -30,6 +30,7 @@
+ #define _ID3LIB_STRINGS_H_
+
+ #include <string>
++#include <cstring>
+
+ #if (defined(__GNUC__) && (__GNUC__ >= 3) || (defined(_MSC_VER) && _MSC_VER > 1000))
+ namespace std
+diff -Naur id3lib-3.8.3-orig/include/id3/writers.h id3lib-3.8.3/include/id3/writers.h
+--- id3lib-3.8.3-orig/include/id3/writers.h 2003-03-01 18:23:00.000000000 -0600
++++ id3lib-3.8.3/include/id3/writers.h 2008-03-05 18:23:05.000000000 -0600
+@@ -30,7 +30,7 @@
+
+ #include "id3/writer.h"
+ #include "id3/id3lib_streams.h"
+-//#include <string.h>
++#include <string.h>
+
+ class ID3_CPP_EXPORT ID3_OStreamWriter : public ID3_Writer
+ {
+diff -Naur id3lib-3.8.3-orig/examples/demo_convert.cpp id3lib-3.8.3/examples/demo_convert.cpp
+--- id3lib-3.8.3-orig/examples/demo_convert.cpp 2003-03-01 18:23:00.000000000 -0600
++++ id3lib-3.8.3/examples/demo_convert.cpp 2008-03-05 18:26:50.000000000 -0600
+@@ -84,7 +84,7 @@
+ }
+ }
+
+-int main( unsigned int argc, char * const argv[])
++int main( int argc, char * const argv[])
+ {
+ flags_t ulFlag = ID3TT_ALL;
+ gengetopt_args_info args;
+diff -Naur id3lib-3.8.3-orig/examples/demo_info.cpp id3lib-3.8.3/examples/demo_info.cpp
+--- id3lib-3.8.3-orig/examples/demo_info.cpp 2003-03-01 18:23:00.000000000 -0600
++++ id3lib-3.8.3/examples/demo_info.cpp 2008-03-05 18:27:40.000000000 -0600
+@@ -309,7 +309,7 @@
+
+ #define DEBUG
+
+-int main( unsigned int argc, char * const argv[])
++int main( int argc, char * const argv[])
+ {
+ ID3D_INIT_DOUT();
+
+diff -Naur id3lib-3.8.3-orig/examples/demo_tag.cpp id3lib-3.8.3/examples/demo_tag.cpp
+--- id3lib-3.8.3-orig/examples/demo_tag.cpp 2003-03-01 18:23:00.000000000 -0600
++++ id3lib-3.8.3/examples/demo_tag.cpp 2008-03-05 18:31:20.000000000 -0600
+@@ -46,7 +46,7 @@
+ os << "v2";
+ }
+
+-int main( unsigned int argc, char * const argv[])
++int main( int argc, char * const argv[])
+ {
+ int ulFlag = ID3TT_ID3;
+ ID3D_INIT_DOUT();
+diff -Naur id3lib-3.8.3-orig/examples/demo_copy.cpp id3lib-3.8.3/examples/demo_copy.cpp
+--- id3lib-3.8.3-orig/examples/demo_copy.cpp 2003-03-01 18:23:00.000000000 -0600
++++ id3lib-3.8.3/examples/demo_copy.cpp 2008-03-05 18:32:44.000000000 -0600
+@@ -81,7 +81,7 @@
+ }
+ }
+
+-int main( unsigned int argc, char * const argv[])
++int main( int argc, char * const argv[])
+ {
+ int ulFlag = ID3TT_ID3;
+ ID3D_INIT_DOUT();
diff --git a/extra/id3lib/patch_id3lib_3.8.3_UTF16_writing_bug.diff b/extra/id3lib/patch_id3lib_3.8.3_UTF16_writing_bug.diff
new file mode 100644
index 000000000..b05d2cf29
--- /dev/null
+++ b/extra/id3lib/patch_id3lib_3.8.3_UTF16_writing_bug.diff
@@ -0,0 +1,39 @@
+diff -ruN id3lib-3.8.3.orig/ChangeLog id3lib-3.8.3/ChangeLog
+--- id3lib-3.8.3.orig/ChangeLog 2003-03-02 01:23:00.000000000 +0100
++++ id3lib-3.8.3/ChangeLog 2006-02-22 00:33:59.946214472 +0100
+@@ -1,3 +1,8 @@
++2006-02-17 Jerome Couderc
++
++ * Patch from Spoon to fix UTF-16 writing bug
++ http://sourceforge.net/tracker/index.php?func=detail&aid=1016290&group_id=979&atid=300979
++
+ 2003-03-02 Sunday 17:38 Thijmen Klok <thijmen@id3lib.org>
+
+ * THANKS (1.20): added more people
+diff -ruN id3lib-3.8.3.orig/src/io_helpers.cpp id3lib-3.8.3/src/io_helpers.cpp
+--- id3lib-3.8.3.orig/src/io_helpers.cpp 2003-03-02 01:23:00.000000000 +0100
++++ id3lib-3.8.3/src/io_helpers.cpp 2006-02-22 00:35:02.926639992 +0100
+@@ -363,11 +363,22 @@
+ // Write the BOM: 0xFEFF
+ unicode_t BOM = 0xFEFF;
+ writer.writeChars((const unsigned char*) &BOM, 2);
++ // Patch from Spoon : 2004-08-25 14:17
++ // http://sourceforge.net/tracker/index.php?func=detail&aid=1016290&group_id=979&atid=300979
++ // Wrong code
++ //for (size_t i = 0; i < size; i += 2)
++ //{
++ // unicode_t ch = (data[i] << 8) | data[i+1];
++ // writer.writeChars((const unsigned char*) &ch, 2);
++ //}
++ // Right code
++ unsigned char *pdata = (unsigned char *) data.c_str();
+ for (size_t i = 0; i < size; i += 2)
+ {
+- unicode_t ch = (data[i] << 8) | data[i+1];
++ unicode_t ch = (pdata[i] << 8) | pdata[i+1];
+ writer.writeChars((const unsigned char*) &ch, 2);
+ }
++ // End patch
+ }
+ return writer.getCur() - beg;
+ }
diff --git a/extra/id3v2/PKGBUILD b/extra/id3v2/PKGBUILD
new file mode 100644
index 000000000..ab90dcfba
--- /dev/null
+++ b/extra/id3v2/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 110376 2011-02-19 05:32:13Z eric $
+# Contributor: Jochem Kossen <j.kossen@home.nl>
+# Maintainer: Hugo Doria <hugo@archlinux.org>
+
+pkgname=id3v2
+pkgver=0.1.12
+pkgrel=1
+pkgdesc="Utility to edit id3v2 tags"
+arch=('i686' 'x86_64')
+url="http://id3v2.sourceforge.net/"
+license=('LGPL')
+depends=('gcc-libs' 'glibc' 'id3lib' 'zlib')
+source=(http://downloads.sourceforge.net/sourceforge/$pkgname/$pkgname-$pkgver.tar.gz)
+md5sums=('be91b4a41710b3a926e913a24ba0ed3b')
+sha1sums=('8f42153b2f53098c221da2e8fe42170e727cd9ad')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make clean
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ install -d -m755 "${pkgdir}"/usr/{bin,share/man/man1}
+ make PREFIX="${pkgdir}/usr" install
+}
diff --git a/extra/ifplugd/PKGBUILD b/extra/ifplugd/PKGBUILD
new file mode 100644
index 000000000..e3162ac9a
--- /dev/null
+++ b/extra/ifplugd/PKGBUILD
@@ -0,0 +1,47 @@
+# $Id: PKGBUILD 70831 2010-03-01 22:51:10Z dgriffiths $
+# Contributor: Manolis Tzanidakis
+# Contributor: kevin <kevin@archlinux.org>
+# Maintainer: Thayer Williams <thayer@archlinux.org>
+
+pkgname=ifplugd
+pkgver=0.28
+pkgrel=7
+pkgdesc="A daemon which brings up/down network interfaces upon cable insertion/removal."
+arch=('i686' 'x86_64')
+url="http://0pointer.de/lennart/projects/ifplugd"
+license=('GPL2')
+depends=('libdaemon' 'bash')
+backup=('etc/ifplugd/ifplugd.conf' 'etc/ifplugd/ifplugd.action')
+options=('!makeflags')
+source=($url/${pkgname}-${pkgver}.tar.gz 'ifplugd' 'ifplugd.action' 'ifplugd-0.28-interface.patch' 'ifdown.01-route.sh' 'ifup.01-route.sh' 'ifup.02-ntpdate.sh')
+md5sums=('df6f4bab52f46ffd6eb1f5912d4ccee3' '70d66121ae5163348855236951e069a2'\
+ 'e91a3d77d707ae79fbc10146848032dc' '54eb22844b5aeed161c0b80aa9008570'\
+ 'd6ce6c7bd481a0b3944c944c5b277c0b' 'c35f0a637911b747f8dc3bd3c6156a1b'\
+ 'f8690ee18a5ca72555585ee96826c2cf')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ patch -p0 < ../ifplugd-0.28-interface.patch
+ ./configure --prefix=/usr --mandir=/usr/share/man --sysconfdir=/etc \
+ --with-initdir=/etc/rc.d --disable-xmltoman --disable-subversion --disable-lynx
+ /usr/bin/make || return 1
+ /usr/bin/make DESTDIR=${pkgdir} install
+
+ # replace INTERFACES with NET_IFS since AL already uses it in /etc/rc.conf
+ /bin/sed -i "s:INTERFACES:NET_IFS:g" \
+ ${pkgdir}/etc/ifplugd/ifplugd.conf || return 1
+
+ # replace the default init script & action files with ours.
+ #/bin/rm -rf $/pkgdir/etc/init.d
+ /bin/install -D -m755 ${srcdir}/ifplugd ${pkgdir}/etc/rc.d/ifplugd || return 1
+ /bin/install -D -m755 ${srcdir}/ifplugd.action \
+ ${pkgdir}/etc/ifplugd/ifplugd.action || return 1
+
+ /bin/install -Dm755 ${srcdir}/ifdown.01-route.sh \
+ ${pkgdir}/etc/ifplugd/ifdown.d/01-route.sh || return 1
+ /bin/install -Dm755 ${srcdir}/ifup.01-route.sh \
+ ${pkgdir}/etc/ifplugd/ifup.d/01-route.sh || return 1
+ /bin/install -Dm755 ${srcdir}/ifup.02-ntpdate.sh \
+ ${pkgdir}/etc/ifplugd/ifup.d/02-ntpdate.sh || return 1
+}
+
diff --git a/extra/ifplugd/ifdown.01-route.sh b/extra/ifplugd/ifdown.01-route.sh
new file mode 100755
index 000000000..cfa0e0069
--- /dev/null
+++ b/extra/ifplugd/ifdown.01-route.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+# same as up...
+/sbin/route del $1 \ No newline at end of file
diff --git a/extra/ifplugd/ifplugd b/extra/ifplugd/ifplugd
new file mode 100644
index 000000000..44019d0ee
--- /dev/null
+++ b/extra/ifplugd/ifplugd
@@ -0,0 +1,89 @@
+#!/bin/bash
+#
+# ifplugd daemon script for Arch Linux
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+# env vars
+NAME=ifplugd
+CFG=/etc/ifplugd/ifplugd.conf
+IFPLUGD=/usr/sbin/ifplugd
+PID=`pidof -o %PPID $IFPLUGD`
+
+# source configuration file
+[ -f $CFG ] && . $CFG
+
+# discover interfaces to monitor
+# (replacing INTERFACES with NET_IFS, since AL
+# already uses it in /etc/rc.conf)
+[ -z "$NET_IFS" ] &&
+ NET_IFS=$(sed -ne 's/.*\<\(eth[0-9]*\):.*/\1/p' /proc/net/dev)
+
+case "$1" in
+ start)
+ stat_busy "Starting $NAME"
+ [ -z "$PID" ] && ( for IF in $NET_IFS ; do
+ A="`eval echo \$\{ARGS_${IF}\}`"
+ [ -z "$A" ] && A="$ARGS"
+ $IFPLUGD -i $IF $A
+ echo -n " $IF"
+ done )
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon $NAME
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping $NAME"
+ [ ! -z "$PID" ] && ( for IF in $NET_IFS ; do
+ $IFPLUGD -k -i $IF
+ echo -n " $IF"
+ done )
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon $NAME
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ status)
+ for IF in $NET_IFS; do
+ $IFPLUGD -c -i $IF
+ done
+ ;;
+ suspend)
+ stat_busy "Suspending $NAME"
+ for IF in $NET_IFS; do
+ $IFPLUGD -S -i $IF
+ echo -n " $IF"
+ done
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ stat_done
+ fi
+ ;;
+ resume)
+ stat_busy "Resuming $NAME"
+ for IF in $NET_IFS; do
+ $IFPLUGD -R -i $IF
+ echo -n " $IF"
+ done
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ stat_done
+ fi
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart|status|suspend|resume}"
+esac
+exit 0
diff --git a/extra/ifplugd/ifplugd-0.28-interface.patch b/extra/ifplugd/ifplugd-0.28-interface.patch
new file mode 100644
index 000000000..9c2de464b
--- /dev/null
+++ b/extra/ifplugd/ifplugd-0.28-interface.patch
@@ -0,0 +1,13 @@
+--- src/interface.c 2004/12/19 00:08:01 114
++++ src/interface.c 2006/03/07 13:15:11 133
+@@ -22,9 +22,9 @@
+ #include <config.h>
+ #endif
+
++#include <sys/types.h>
+ #include <linux/sockios.h>
+ #include <linux/if_ether.h>
+-#include <sys/types.h>
+ #include <sys/socket.h>
+ #include <sys/ioctl.h>
+ #include <linux/if.h>
diff --git a/extra/ifplugd/ifplugd.action b/extra/ifplugd/ifplugd.action
new file mode 100644
index 000000000..23b74c60d
--- /dev/null
+++ b/extra/ifplugd/ifplugd.action
@@ -0,0 +1,29 @@
+#!/bin/sh
+#
+# ifplugd.action script for Arch Linux
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+plugscript(){ #argumets are ifup|ifdown, interface_name
+ for script in /etc/ifplugd/$1.d/*.sh; do
+ [ -x $script ] && $script $2
+ done
+ return 0
+}
+
+case "$2" in
+ up)
+ /etc/rc.d/network ifup $1
+ plugscript ifup $1
+ ;;
+ down)
+ plugscript ifdown $1
+ /etc/rc.d/network ifdown $1
+ ;;
+ *)
+ echo "Wrong arguments" > /dev/stderr
+ ;;
+esac
+
+exit 1
diff --git a/extra/ifplugd/ifup.01-route.sh b/extra/ifplugd/ifup.01-route.sh
new file mode 100755
index 000000000..6be07208d
--- /dev/null
+++ b/extra/ifplugd/ifup.01-route.sh
@@ -0,0 +1,5 @@
+#!/bin/sh
+# ugly way to load up gateway, since
+# al's net configuration doesn't associate
+# gateways with specific interfaces.
+/sbin/route add $gateway
diff --git a/extra/ifplugd/ifup.02-ntpdate.sh b/extra/ifplugd/ifup.02-ntpdate.sh
new file mode 100755
index 000000000..4e53daff9
--- /dev/null
+++ b/extra/ifplugd/ifup.02-ntpdate.sh
@@ -0,0 +1,2 @@
+#!/bin/sh
+ntpdate ru.pool.ntp.org | logger
diff --git a/extra/ilmbase/PKGBUILD b/extra/ilmbase/PKGBUILD
new file mode 100644
index 000000000..b8930a55e
--- /dev/null
+++ b/extra/ilmbase/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=ilmbase
+pkgver=1.0.1
+pkgrel=1
+depends=('gcc-libs')
+pkgdesc="IlmThread is a thread abstraction library for use with OpenEXR"
+arch=(i686 x86_64)
+license=('custom')
+options=('!libtool')
+source=(http://savannah.nongnu.org/download/openexr/$pkgname-$pkgver.tar.gz)
+url="http://www.openexr.org"
+md5sums=('f76f094e69a6079b0beb93d97e2a217e')
+
+build() {
+ cd $startdir/src/$pkgname-$pkgver
+ ./configure --prefix=/usr
+ make || return 1
+ make DESTDIR=$startdir/pkg install
+ install -D -m644 COPYING $pkgdir/usr/share/licenses/$pkgname/COPYING
+}
diff --git a/extra/imagemagick/PKGBUILD b/extra/imagemagick/PKGBUILD
new file mode 100644
index 000000000..9c1ab3533
--- /dev/null
+++ b/extra/imagemagick/PKGBUILD
@@ -0,0 +1,74 @@
+# $Id: PKGBUILD 117332 2011-03-31 05:07:13Z eric $
+# Maintainer: Eric Bélanger <eric@archlinux.org>
+
+pkgbase=imagemagick
+pkgname=('imagemagick' 'imagemagick-doc')
+pkgver=6.6.9.1
+pkgrel=1
+arch=('i686' 'x86_64')
+url="http://www.imagemagick.org/"
+license=('custom')
+depends=('libtool' 'lcms' 'libxt' 'gcc-libs' 'bzip2' 'xz' 'freetype2' 'fontconfig' \
+ 'libxext' 'libjpeg-turbo')
+makedepends=('ghostscript' 'openexr' 'libwmf' 'librsvg' 'libxml2' 'jasper' 'libpng')
+source=(ftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick-${pkgver%.*}-${pkgver##*.}.tar.xz \
+ libpng_mmx_patch_x86_64.patch perlmagick.rpath.patch)
+md5sums=('b8c7dfbad2eb9b9c39666af07cb6db83'
+ '069980fc2590c02aed86420996259302'
+ 'ff9974decbfe9846f8e347239d87e4eb')
+sha1sums=('924e1841a1518bf394f5a18d4fd25414bdf9f63d'
+ 'e42f3acbe85b6098af75c5cecc9a254baaa0482c'
+ '23405f80904b1de94ebd7bd6fe2a332471b8c283')
+
+
+build() {
+ cd "${srcdir}"/ImageMagick-${pkgver%.*}-${pkgver##*.}
+
+ if [ "${CARCH}" = 'x86_64' ]; then
+ patch -Np1 < ../libpng_mmx_patch_x86_64.patch
+ fi
+
+ patch -p0 < ../perlmagick.rpath.patch
+ ./configure --prefix=/usr --sysconfdir=/etc --with-modules --disable-static \
+ --enable-openmp --with-x --with-wmf --with-openexr --with-xml \
+ --with-gslib --with-gs-font-dir=/usr/share/fonts/Type1 \
+ --with-perl --with-perl-options="INSTALLDIRS=vendor" \
+ --without-gvc --without-djvu --without-autotrace --with-jp2 \
+ --without-jbig --without-fpx --without-dps --without-fftw
+ make
+}
+
+package_imagemagick() {
+ pkgdesc="An image viewing/manipulation program"
+ optdepends=('ghostscript: for Ghostscript support'
+ 'openexr: for OpenEXR support'
+ 'libwmf: for WMF support'
+ 'librsvg: for SVG support'
+ 'libxml2: for XML support'
+ 'jasper: for JPEG-2000 support'
+ 'libpng: for PNG support')
+ backup=('etc/ImageMagick/colors.xml' 'etc/ImageMagick/log.xml' 'etc/ImageMagick/policy.xml'
+ 'etc/ImageMagick/type-dejavu.xml' 'etc/ImageMagick/type-ghostscript.xml'
+ 'etc/ImageMagick/type-windows.xml' 'etc/ImageMagick/type.xml')
+ options=('!makeflags' '!docs')
+
+ cd "${srcdir}"/ImageMagick-${pkgver%.*}-${pkgver##*.}
+ make DESTDIR="${pkgdir}" install
+ install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/imagemagick/LICENSE"
+ install -Dm644 NOTICE "${pkgdir}/usr/share/licenses/imagemagick/NOTICE"
+
+#Cleaning
+ find "${pkgdir}" -name '*.bs' -exec rm {} \;
+ rm -f "${pkgdir}"/usr/lib/*.la
+}
+
+package_imagemagick-doc() {
+ pkgdesc="The ImageMagick documentation (utilities manuals and libraries API)"
+ depends=()
+ options=('!makeflags')
+
+ cd "${srcdir}"/ImageMagick-${pkgver%.*}-${pkgver##*.}
+ make DESTDIR="${pkgdir}" install-data-html
+ install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/imagemagick-doc/LICENSE"
+ install -Dm644 NOTICE "${pkgdir}/usr/share/licenses/imagemagick-doc/NOTICE"
+}
diff --git a/extra/imagemagick/libpng_mmx_patch_x86_64.patch b/extra/imagemagick/libpng_mmx_patch_x86_64.patch
new file mode 100644
index 000000000..d86449a28
--- /dev/null
+++ b/extra/imagemagick/libpng_mmx_patch_x86_64.patch
@@ -0,0 +1,12 @@
+diff -Naur ImageMagick-6.2.7.orig/coders/png.c ImageMagick-6.2.7/coders/png.c
+--- ImageMagick-6.2.7.orig/coders/png.c 2006-05-21 12:35:55.784852536 +0200
++++ ImageMagick-6.2.7/coders/png.c 2006-05-21 12:36:50.698504392 +0200
+@@ -164,6 +164,8 @@
+ #define PNG_MAX_UINT (png_uint_32) 0x7fffffffL
+ #endif
+
++#undef PNG_ASSEMBLER_CODE_SUPPORTED
++
+ /*
+ Constant strings for known chunk types. If you need to add a chunk,
+ add a string holding the name here. To make the code more
diff --git a/extra/imagemagick/perlmagick.rpath.patch b/extra/imagemagick/perlmagick.rpath.patch
new file mode 100644
index 000000000..958c0f2ee
--- /dev/null
+++ b/extra/imagemagick/perlmagick.rpath.patch
@@ -0,0 +1,10 @@
+--- Makefile.in.orig 2009-05-26 16:22:11.000000000 -0300
++++ Makefile.in 2009-05-26 16:23:27.000000000 -0300
+@@ -10067,6 +10067,7 @@
+
+ @WITH_PERL_DYNAMIC_TRUE@@WITH_PERL_TRUE@$(PERLMAKEFILE): perl-sources $(PERLMAKEMAKER)
+ @WITH_PERL_DYNAMIC_TRUE@@WITH_PERL_TRUE@ cd $(PERLMAGICK) && @PERL@ Makefile.PL $(PERL_MAKE_OPTIONS)
++@WITH_PERL_DYNAMIC_TRUE@@WITH_PERL_TRUE@ cd $(PERLMAGICK) && @SED@ -i 's|LD_RUN_PATH|DIE_LD_RUN_PATH_DIE|g' Makefile
+
+ @WITH_PERL_DYNAMIC_TRUE@@WITH_PERL_TRUE@install-exec-perl: $(MAGICKCORE_LIBS) $(MAGICKWAND_LIBS) $(PERLMAKEFILE)
+ @WITH_PERL_DYNAMIC_TRUE@@WITH_PERL_TRUE@ cd $(PERLMAGICK) && $(MAKE) CC='@CC@' install
diff --git a/extra/imake/LICENSE b/extra/imake/LICENSE
new file mode 100644
index 000000000..cc6d1a326
--- /dev/null
+++ b/extra/imake/LICENSE
@@ -0,0 +1,131 @@
+gccmakedep:
+
+ XFree86 code without an explicit copyright is covered by the following copy-
+ right/license:
+
+ Copyright (C) 1994-2003 The XFree86 Project, Inc. All Rights Reserved.
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is fur-
+ nished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in
+ all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT-
+ NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ XFREE86 PROJECT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CON-
+ NECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ Except as contained in this notice, the name of the XFree86 Project shall not
+ be used in advertising or otherwise to promote the sale, use or other deal-
+ ings in this Software without prior written authorization from the XFree86
+ Project.
+
+imake:
+
+ Copyright (c) 1985, 1986, 1987, 1998 The Open Group
+
+ Permission to use, copy, modify, distribute, and sell this software and its
+ documentation for any purpose is hereby granted without fee, provided that
+ the above copyright notice appear in all copies and that both that
+ copyright notice and this permission notice appear in supporting
+ documentation.
+
+ The above copyright notice and this permission notice shall be included in
+ all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ Except as contained in this notice, the name of The Open Group shall not be
+ used in advertising or otherwise to promote the sale, use or other dealings
+ in this Software without prior written authorization from The Open Group.
+ *
+ * Original Author:
+ * Todd Brunhoff
+ * Tektronix, inc.
+ * While a guest engineer at Project Athena, MIT
+
+lndir:
+
+ Copyright (c) 1990, 1998 The Open Group
+
+ Permission to use, copy, modify, distribute, and sell this software and its
+ documentation for any purpose is hereby granted without fee, provided that
+ the above copyright notice appear in all copies and that both that
+ copyright notice and this permission notice appear in supporting
+ documentation.
+
+ The above copyright notice and this permission notice shall be included in
+ all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ Except as contained in this notice, the name of The Open Group shall not be
+ used in advertising or otherwise to promote the sale, use or other dealings
+ in this Software without prior written authorization from The Open Group.
+
+makedepend:
+
+ Copyright (c) 1993, 1994, 1998 The Open Group
+
+ Permission to use, copy, modify, distribute, and sell this software and its
+ documentation for any purpose is hereby granted without fee, provided that
+ the above copyright notice appear in all copies and that both that
+ copyright notice and this permission notice appear in supporting
+ documentation.
+
+ The above copyright notice and this permission notice shall be included in
+ all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ Except as contained in this notice, the name of The Open Group shall not be
+ used in advertising or otherwise to promote the sale, use or other dealings
+ in this Software without prior written authorization from The Open Group.
+
+util-macros:
+
+ Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+
+ Permission to use, copy, modify, distribute, and sell this software and its
+ documentation for any purpose is hereby granted without fee, provided that
+ the above copyright notice appear in all copies and that both that
+ copyright notice and this permission notice appear in supporting
+ documentation.
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+ OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ OTHER DEALINGS IN THE SOFTWARE.
+
+ Except as contained in this notice, the name of the copyright holders shall
+ not be used in advertising or otherwise to promote the sale, use or
+ other dealings in this Software without prior written authorization
+ from the copyright holders.
diff --git a/extra/imake/PKGBUILD b/extra/imake/PKGBUILD
new file mode 100644
index 000000000..9a879d865
--- /dev/null
+++ b/extra/imake/PKGBUILD
@@ -0,0 +1,46 @@
+# $Id: PKGBUILD 87585 2010-08-17 07:28:34Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=imake
+pkgver=1.0.3
+pkgrel=2
+pkgdesc="X.Org imake program and related utilities"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=(glibc)
+makedepends=(pkgconfig xproto perl)
+optdepends=('perl: for mkhtmlindex')
+source=(http://xorg.freedesktop.org/releases/individual/util/imake-1.0.3.tar.bz2
+ http://xorg.freedesktop.org/releases/individual/util/gccmakedep-1.0.2.tar.bz2
+ http://xorg.freedesktop.org/releases/individual/util/lndir-1.0.2.tar.bz2
+ http://xorg.freedesktop.org/releases/individual/util/makedepend-1.0.2.tar.bz2
+ http://xorg.freedesktop.org/releases/individual/util/xorg-cf-files-1.0.3.tar.bz2
+ linuxconfig.patch
+ xorg-cf-files-1.0.2-xprint.patch
+ LICENSE)
+md5sums=('ff553c4646edcc9e76b7308991ad421a'
+ 'b533c0771dbbaf9b041ff35bb941d3a2'
+ '619acbb2ed766d7762f02328513b1f72'
+ '62e58330fe8d1e3e28c7a45779833a48'
+ '10546b5ddda3cdda7950bb56bf98e0ea'
+ 'b3385d8efbbe7c7fc50ed3a96ce37a16'
+ '82356cfc8a761c85b0b37736fc91f604'
+ 'f5767133ef7a98a0bfa15139e0e3d32e')
+
+build() {
+ cd ${srcdir}/xorg-cf-files-1.0.3*
+ patch -Np1 -i "${srcdir}/linuxconfig.patch" || return 1
+ patch -Np1 -i "${srcdir}/xorg-cf-files-1.0.2-xprint.patch" || return 1
+ cd "${srcdir}"
+ for i in *; do
+ if [ -d "${i}" ]; then
+ pushd "${i}"
+ ./configure --prefix=/usr --mandir=/usr/share/man || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+ popd
+ fi
+ done
+ install -D -m644 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" || return 1
+}
diff --git a/extra/imake/linuxconfig.patch b/extra/imake/linuxconfig.patch
new file mode 100644
index 000000000..e5579223c
--- /dev/null
+++ b/extra/imake/linuxconfig.patch
@@ -0,0 +1,31 @@
+--- xorg-cf-files-1.0.1/linux.cf.orig 2006-03-04 18:40:43.000000000 +0000
++++ xorg-cf-files-1.0.1/linux.cf 2006-03-04 18:41:48.000000000 +0000
+@@ -193,6 +193,13 @@
+ #define FSUseSyslog YES
+ #endif
+
++#define FSUseSyslog YES
++#define BuildRman NO
++#define BuildHtmlManPages NO
++#define ProjectRoot /usr
++#define ManPath /usr/share/man
++#define XappLoadDir /usr/share/X11/app-defaults
++
+ #ifndef HasDevRandom
+ # define HasDevRandom YES
+ # ifndef RandomDeviceName
+--- xorg-cf-files-1.0.2/X11.tmpl.orig 2006-07-15 10:45:23.000000000 +0000
++++ xorg-cf-files-1.0.2/X11.tmpl 2006-07-15 10:46:19.000000000 +0000
+@@ -1502,10 +1502,10 @@
+ #define DocPdfDir $(DOCDIR)/PDF
+ #endif
+ #ifndef FontDir
+-#define FontDir $(LIBDIR)/fonts
++#define FontDir /usr/share/fonts
+ #endif
+ #ifndef FontEncDir
+-#define FontEncDir $(LIBDIR)/fonts/encodings
++#define FontEncDir /usr/share/fonts/encodings
+ #endif
+ #ifndef AdmDir
+ #define AdmDir /usr/adm
diff --git a/extra/imake/xorg-cf-files-1.0.2-xprint.patch b/extra/imake/xorg-cf-files-1.0.2-xprint.patch
new file mode 100644
index 000000000..3926d724a
--- /dev/null
+++ b/extra/imake/xorg-cf-files-1.0.2-xprint.patch
@@ -0,0 +1,39 @@
+--- xorg-cf-files-1.0.3/X11.tmpl.xprint 2005-10-01 12:45:48.000000000 -0400
++++ xorg-cf-files-1.0.3/X11.tmpl 2006-04-25 20:24:02.000000000 -0400
+@@ -3920,21 +3920,13 @@
+ #endif
+
+ #ifndef ExtraXawReqs
+-# if BuildXaw
+-# define ExtraXawReqs $(XPLIB)
+-# else
+-# define ExtraXawReqs /**/
+-# endif
++# define ExtraXawReqs /**/
+ #endif
+
+ EXTRAXAWREQS = ExtraXawReqs
+
+ #ifndef ExtraXawClientDepLibs
+-# if BuildXaw
+-# define ExtraXawClientDepLibs $(DEPXPLIB)
+-# else
+-# define ExtraXawClientDepLibs /**/
+-# endif
++# define ExtraXawClientDepLibs /**/
+ #endif
+
+ EXTRAXAWCLIENTDEPLIBS = ExtraXawClientDepLibs
+@@ -3944,11 +3936,7 @@
+ #endif
+
+ #ifndef ExtraXawClientLibs
+-# if BuildXaw
+-# define ExtraXawClientLibs $(XPLIB)
+-# else
+-# define ExtraXawClientLibs /**/
+-# endif
++# define ExtraXawClientLibs /**/
+ #endif
+
+ EXTRAXAWCLIENTLIBS = ExtraXawClientLibs
diff --git a/extra/imap/PKGBUILD b/extra/imap/PKGBUILD
new file mode 100644
index 000000000..2aed4adbb
--- /dev/null
+++ b/extra/imap/PKGBUILD
@@ -0,0 +1,85 @@
+# $Id: PKGBUILD 75284 2010-04-01 07:07:12Z pierre $
+# Maintainer: judd <jvinet@zeroflux.org>
+pkgname=imap
+pkgver=2007e
+pkgrel=2
+pkgdesc="An IMAP/POP server"
+arch=('i686' 'x86_64')
+license=('APACHE')
+url="http://www.washington.edu/imap"
+depends=('openssl' 'pam')
+provides=('imap-server' 'pop3-server')
+conflicts=('courier-mta' 'courier-imap')
+source=("ftp://ftp.cac.washington.edu/imap/${pkgname}-${pkgver}.tar.gz"
+ 'imap' 'ipop2' 'ipop3')
+backup=(etc/xinetd.d/{imap,ipop2,ipop3} etc/ssl/certs/{imapd,ipop3d}.pem)
+md5sums=('7903800dc2604000016de070e0c55840'
+ 'e77dedb80c2fec9bf2ef784ed5f976fb'
+ 'cc3eba6453242aa0b1bc8881160b2136'
+ '0a5e27183a9b7e8ec5f6703125371e0a')
+
+
+build() {
+ # fix Makefile
+ cd $srcdir/$pkgname-$pkgver/src/osdep/unix
+ cp Makefile Makefile.orig
+ sed \
+ -e "s:-g -fno-omit-frame-pointer -O6:\${CFLAGS}:" \
+ -e "s:SSLDIR=/usr/local/ssl:SSLDIR=/usr:" \
+ -e "s:SSLCERTS=\$(SSLDIR)/certs:SSLCERTS=/etc/ssl/certs:" \
+ < Makefile.orig > Makefile
+
+ cd $srcdir/$pkgname-$pkgver
+ # NOTE: if you wish to enforce SSL, use SSLTYPE=unix.nopwd
+
+ if [ "$CARCH" == "x86_64" ]; then
+ yes "y" | make lnp SPECIALAUTHENTICATORS=ssl SSLTYPE=unix EXTRACFLAGS="${CFLAGS} -fPIC" || return 1
+ else yes "y" | make lnp SPECIALAUTHENTICATORS=ssl SSLTYPE=unix || return 1
+ fi
+}
+
+package() {
+ cd $srcdir/$pkgname-$pkgver
+ mkdir -p $pkgdir/usr/sbin
+ install -D -m755 imapd/imapd $pkgdir/usr/sbin/imapd
+ install -D -m755 ipopd/ipop2d $pkgdir/usr/sbin/ipop2d
+ install -D -m755 ipopd/ipop3d $pkgdir/usr/sbin/ipop3d
+ for i in c-client mail imap4r1 rfc822 linkage misc smtp nntp \
+ osdep env_unix env fs ftl nl tcp sslio utf8 utf8aux; do
+ install -D -m644 c-client/${i}.h $pkgdir/usr/include/imap/${i}.h
+ done
+ install -D -m644 c-client/c-client.a $pkgdir/usr/lib/c-client.a
+ ln -sf c-client.a $pkgdir/usr/lib/libc-client.a
+
+ # create ssl certs for secure imap
+ for i in imapd ipop3d; do
+ umask 077
+ PEM1=`/usr/bin/mktemp /tmp/openssl.XXXXXX`
+ PEM2=`/usr/bin/mktemp /tmp/openssl.XXXXXX`
+ /usr/bin/openssl req -newkey rsa:1024 -keyout $$PEM1 \
+ -nodes -x509 -days 365 -out $$PEM2 << EOF
+--
+SomeState
+SomeCity
+SomeOrganization
+SomeOrganizationalUnit
+localhost.localdomain
+root@localhost.localdomain
+EOF
+
+ cat $$PEM1 > ${i}.pem
+ echo "" >> ${i}.pem
+ cat $$PEM2 >> ${i}.pem
+ rm $$PEM1 $$PEM2
+ umask 022
+ done
+
+ # install 'em
+ install -D -m600 imapd.pem $pkgdir/etc/ssl/certs/imapd.pem
+ install -D -m600 ipop3d.pem $pkgdir/etc/ssl/certs/ipop3d.pem
+
+ # install xinetd.d configs
+ install -D -m644 ../imap $pkgdir/etc/xinetd.d/imap
+ install -D -m644 ../ipop2 $pkgdir/etc/xinetd.d/ipop2
+ install -D -m644 ../ipop3 $pkgdir/etc/xinetd.d/ipop3
+}
diff --git a/extra/imap/imap b/extra/imap/imap
new file mode 100644
index 000000000..da45739d4
--- /dev/null
+++ b/extra/imap/imap
@@ -0,0 +1,10 @@
+service imap2
+{
+ socket_type = stream
+ wait = no
+ user = root
+ server = /usr/sbin/imapd
+ log_on_success += HOST DURATION
+ log_on_failure += HOST
+ disable = yes
+}
diff --git a/extra/imap/ipop2 b/extra/imap/ipop2
new file mode 100644
index 000000000..bd74c8380
--- /dev/null
+++ b/extra/imap/ipop2
@@ -0,0 +1,10 @@
+service pop2
+{
+ socket_type = stream
+ wait = no
+ user = root
+ server = /usr/sbin/ipop2d
+ log_on_success += HOST DURATION
+ log_on_failure += HOST
+ disable = yes
+}
diff --git a/extra/imap/ipop3 b/extra/imap/ipop3
new file mode 100644
index 000000000..410a45a64
--- /dev/null
+++ b/extra/imap/ipop3
@@ -0,0 +1,10 @@
+service pop3
+{
+ socket_type = stream
+ wait = no
+ user = root
+ server = /usr/sbin/ipop3d
+ log_on_success += HOST DURATION
+ log_on_failure += HOST
+ disable = yes
+}
diff --git a/extra/imlib/CAN-2004-1026.patch b/extra/imlib/CAN-2004-1026.patch
new file mode 100644
index 000000000..c820270d4
--- /dev/null
+++ b/extra/imlib/CAN-2004-1026.patch
@@ -0,0 +1,510 @@
+diff -urN imlib-1.9.13.orig/Imlib/load.c imlib-1.9.13/Imlib/load.c
+--- imlib-1.9.13.orig/Imlib/load.c Wed Mar 13 19:06:29 2002
++++ imlib-1.9.13/Imlib/load.c Thu Sep 16 17:21:01 2004
+@@ -4,6 +4,8 @@
+ #include "Imlib_private.h"
+ #include <setjmp.h>
+
++#define G_MAXINT ((int) 0x7fffffff)
++
+ /* Split the ID - damages input */
+
+ static char *
+@@ -41,13 +43,17 @@
+
+ /*
+ * Make sure we don't wrap on our memory allocations
++ * we check G_MAXINT/4 because rend.c malloc's w * h * bpp
++ * + 3 is safety margin
+ */
+
+ void * _imlib_malloc_image(unsigned int w, unsigned int h)
+ {
+- if( w > 32767 || h > 32767)
+- return NULL;
+- return malloc(w * h * 3);
++ if (w <= 0 || w > 32767 ||
++ h <= 0 || h > 32767 ||
++ h >= (G_MAXINT/4 - 1) / w)
++ return NULL;
++ return malloc(w * h * 3 + 3);
+ }
+
+ #ifdef HAVE_LIBJPEG
+@@ -360,7 +366,9 @@
+ npix = ww * hh;
+ *w = (int)ww;
+ *h = (int)hh;
+- if(ww > 32767 || hh > 32767)
++ if (ww <= 0 || ww > 32767 ||
++ hh <= 0 || hh > 32767 ||
++ hh >= (G_MAXINT/sizeof(uint32)) / ww)
+ {
+ TIFFClose(tif);
+ return NULL;
+@@ -463,7 +471,7 @@
+ }
+ *w = gif->Image.Width;
+ *h = gif->Image.Height;
+- if (*h > 32767 || *w > 32767)
++ if (*h <= 0 || *h > 32767 || *w <= 0 || *w > 32767)
+ {
+ return NULL;
+ }
+@@ -965,7 +973,12 @@
+ comment = 0;
+ quote = 0;
+ context = 0;
++ memset(lookup, 0, sizeof(lookup));
++
+ line = malloc(lsz);
++ if (!line)
++ return NULL;
++
+ while (!done)
+ {
+ pc = c;
+@@ -994,25 +1007,25 @@
+ {
+ /* Header */
+ sscanf(line, "%i %i %i %i", w, h, &ncolors, &cpp);
+- if (ncolors > 32766)
++ if (ncolors <= 0 || ncolors > 32766)
+ {
+ fprintf(stderr, "IMLIB ERROR: XPM files wth colors > 32766 not supported\n");
+ free(line);
+ return NULL;
+ }
+- if (cpp > 5)
++ if (cpp <= 0 || cpp > 5)
+ {
+ fprintf(stderr, "IMLIB ERROR: XPM files with characters per pixel > 5 not supported\n");
+ free(line);
+ return NULL;
+ }
+- if (*w > 32767)
++ if (*w <= 0 || *w > 32767)
+ {
+ fprintf(stderr, "IMLIB ERROR: Image width > 32767 pixels for file\n");
+ free(line);
+ return NULL;
+ }
+- if (*h > 32767)
++ if (*h <= 0 || *h > 32767)
+ {
+ fprintf(stderr, "IMLIB ERROR: Image height > 32767 pixels for file\n");
+ free(line);
+@@ -1045,11 +1058,13 @@
+ {
+ int slen;
+ int hascolor, iscolor;
++ int space;
+
+ iscolor = 0;
+ hascolor = 0;
+ tok[0] = 0;
+ col[0] = 0;
++ space = sizeof(col) - 1;
+ s[0] = 0;
+ len = strlen(line);
+ strncpy(cmap[j].str, line, cpp);
+@@ -1072,10 +1087,10 @@
+ {
+ if (k >= len)
+ {
+- if (col[0])
+- strcat(col, " ");
+- if (strlen(col) + strlen(s) < sizeof(col))
+- strcat(col, s);
++ if (col[0] && space > 0)
++ strcat(col, " "), space -= 1;
++ if (slen <= space)
++ strcat(col, s), space -= slen;
+ }
+ if (col[0])
+ {
+@@ -1105,14 +1120,17 @@
+ }
+ }
+ }
+- strcpy(tok, s);
++ if (slen < sizeof(tok));
++ strcpy(tok, s);
+ col[0] = 0;
++ space = sizeof(col) - 1;
+ }
+ else
+ {
+- if (col[0])
+- strcat(col, " ");
+- strcat(col, s);
++ if (col[0] && space > 0)
++ strcat(col, " "), space -=1;
++ if (slen <= space)
++ strcat(col, s), space -= slen;
+ }
+ }
+ }
+@@ -1341,12 +1359,12 @@
+ sscanf(s, "%i %i", w, h);
+ a = *w;
+ b = *h;
+- if (a > 32767)
++ if (a <= 0 || a > 32767)
+ {
+ fprintf(stderr, "IMLIB ERROR: Image width > 32767 pixels for file\n");
+ return NULL;
+ }
+- if (b > 32767)
++ if (b <= 0 || b > 32767)
+ {
+ fprintf(stderr, "IMLIB ERROR: Image height > 32767 pixels for file\n");
+ return NULL;
+diff -urN imlib-1.9.13.orig/Imlib/utils.c imlib-1.9.13/Imlib/utils.c
+--- imlib-1.9.13.orig/Imlib/utils.c Mon Mar 4 17:45:28 2002
++++ imlib-1.9.13/Imlib/utils.c Thu Sep 16 17:21:15 2004
+@@ -1496,36 +1496,56 @@
+ context = 0;
+ ptr = NULL;
+ end = NULL;
++ memset(lookup, 0, sizeof(lookup));
+
+ while (!done)
+ {
+ line = data[count++];
++ if (!line)
++ break;
++ line = strdup(line);
++ if (!line)
++ break;
++ len = strlen(line);
++ for (i = 0; i < len; ++i)
++ {
++ c = line[i];
++ if (c < 32)
++ line[i] = 32;
++ else if (c > 127)
++ line[i] = 127;
++ }
++
+ if (context == 0)
+ {
+ /* Header */
+ sscanf(line, "%i %i %i %i", &w, &h, &ncolors, &cpp);
+- if (ncolors > 32766)
++ if (ncolors <= 0 || ncolors > 32766)
+ {
+ fprintf(stderr, "IMLIB ERROR: XPM data wth colors > 32766 not supported\n");
+ free(im);
++ free(line);
+ return NULL;
+ }
+- if (cpp > 5)
++ if (cpp <= 0 || cpp > 5)
+ {
+ fprintf(stderr, "IMLIB ERROR: XPM data with characters per pixel > 5 not supported\n");
+ free(im);
++ free(line);
+ return NULL;
+ }
+- if (w > 32767)
++ if (w <= 0 || w > 32767)
+ {
+ fprintf(stderr, "IMLIB ERROR: Image width > 32767 pixels for data\n");
+ free(im);
++ free(line);
+ return NULL;
+ }
+- if (h > 32767)
++ if (h <= 0 || h > 32767)
+ {
+ fprintf(stderr, "IMLIB ERROR: Image height > 32767 pixels for data\n");
+ free(im);
++ free(line);
+ return NULL;
+ }
+ cmap = malloc(sizeof(struct _cmap) * ncolors);
+@@ -1533,6 +1553,7 @@
+ if (!cmap)
+ {
+ free(im);
++ free(line);
+ return NULL;
+ }
+ im->rgb_width = w;
+@@ -1542,6 +1563,7 @@
+ {
+ free(cmap);
+ free(im);
++ free(line);
+ return NULL;
+ }
+ im->alpha_data = NULL;
+@@ -1817,6 +1839,7 @@
+ }
+ if ((ptr) && ((ptr - im->rgb_data) >= w * h * 3))
+ done = 1;
++ free(line);
+ }
+ if (!transp)
+ {
+diff -urN imlib-1.9.13.orig/gdk_imlib/io-gif.c imlib-1.9.13/gdk_imlib/io-gif.c
+--- imlib-1.9.13.orig/gdk_imlib/io-gif.c Mon Mar 4 17:26:51 2002
++++ imlib-1.9.13/gdk_imlib/io-gif.c Thu Sep 16 16:11:31 2004
+@@ -55,7 +55,7 @@
+ }
+ *w = gif->Image.Width;
+ *h = gif->Image.Height;
+- if(*h > 32767 || *w > 32767)
++ if(*h <= 0 || *h > 32767 || *w <= 0 || *w > 32767)
+ {
+ return NULL;
+ }
+diff -urN imlib-1.9.13.orig/gdk_imlib/io-ppm.c imlib-1.9.13/gdk_imlib/io-ppm.c
+--- imlib-1.9.13.orig/gdk_imlib/io-ppm.c Mon Mar 4 17:26:51 2002
++++ imlib-1.9.13/gdk_imlib/io-ppm.c Thu Sep 16 16:13:13 2004
+@@ -53,12 +53,12 @@
+ sscanf(s, "%i %i", w, h);
+ a = *w;
+ b = *h;
+- if (a > 32767)
++ if (a <= 0 || a > 32767)
+ {
+ fprintf(stderr, "gdk_imlib ERROR: Image width > 32767 pixels for file\n");
+ return NULL;
+ }
+- if (b > 32767)
++ if (b <= 0 || b > 32767)
+ {
+ fprintf(stderr, "gdk_imlib ERROR: Image height > 32767 pixels for file\n");
+ return NULL;
+diff -urN imlib-1.9.13.orig/gdk_imlib/io-tiff.c imlib-1.9.13/gdk_imlib/io-tiff.c
+--- imlib-1.9.13.orig/gdk_imlib/io-tiff.c Mon Mar 4 17:26:51 2002
++++ imlib-1.9.13/gdk_imlib/io-tiff.c Thu Sep 16 16:13:57 2004
+@@ -36,7 +36,9 @@
+ npix = ww * hh;
+ *w = (int)ww;
+ *h = (int)hh;
+- if(ww > 32767 || hh > 32767)
++ if (ww <= 0 || ww > 32767 ||
++ hh <= 0 || hh > 32767 ||
++ hh >= (G_MAXINT/sizeof(uint32)) / ww)
+ {
+ TIFFClose(tif);
+ return NULL;
+diff -urN imlib-1.9.13.orig/gdk_imlib/io-xpm.c imlib-1.9.13/gdk_imlib/io-xpm.c
+--- imlib-1.9.13.orig/gdk_imlib/io-xpm.c Mon Mar 4 17:26:51 2002
++++ imlib-1.9.13/gdk_imlib/io-xpm.c Thu Sep 16 17:08:24 2004
+@@ -40,8 +40,12 @@
+ context = 0;
+ i = j = 0;
+ cmap = NULL;
++ memset(lookup, 0, sizeof(lookup));
+
+ line = malloc(lsz);
++ if (!line)
++ return NULL;
++
+ while (!done)
+ {
+ pc = c;
+@@ -70,25 +74,25 @@
+ {
+ /* Header */
+ sscanf(line, "%i %i %i %i", w, h, &ncolors, &cpp);
+- if (ncolors > 32766)
++ if (ncolors <= 0 || ncolors > 32766)
+ {
+ fprintf(stderr, "gdk_imlib ERROR: XPM files wth colors > 32766 not supported\n");
+ free(line);
+ return NULL;
+ }
+- if (cpp > 5)
++ if (cpp <= 0 || cpp > 5)
+ {
+ fprintf(stderr, "gdk_imlib ERROR: XPM files with characters per pixel > 5 not supported\n");
+ free(line);
+ return NULL;
+ }
+- if (*w > 32767)
++ if (*w <= 0 || *w > 32767)
+ {
+ fprintf(stderr, "gdk_imlib ERROR: Image width > 32767 pixels for file\n");
+ free(line);
+ return NULL;
+ }
+- if (*h > 32767)
++ if (*h <= 0 || *h > 32767)
+ {
+ fprintf(stderr, "gdk_imlib ERROR: Image height > 32767 pixels for file\n");
+ free(line);
+@@ -120,11 +124,13 @@
+ {
+ int slen;
+ int hascolor, iscolor;
++ int space;
+
+ hascolor = 0;
+ iscolor = 0;
+ tok[0] = 0;
+ col[0] = 0;
++ space = sizeof(col) - 1;
+ s[0] = 0;
+ len = strlen(line);
+ strncpy(cmap[j].str, line, cpp);
+@@ -147,10 +153,10 @@
+ {
+ if (k >= len)
+ {
+- if (col[0])
+- strcat(col, " ");
+- if (strlen(col) + strlen(s) < sizeof(col))
+- strcat(col, s);
++ if (col[0] && space > 0)
++ strncat(col, " ", space), space -= 1;
++ if (slen <= space)
++ strcat(col, s), space -= slen;
+ }
+ if (col[0])
+ {
+@@ -180,14 +186,17 @@
+ }
+ }
+ }
+- strcpy(tok, s);
++ if (slen < sizeof(tok))
++ strcpy(tok, s);
+ col[0] = 0;
++ space = sizeof(col) - 1;
+ }
+ else
+ {
+- if (col[0])
+- strcat(col, " ");
+- strcat(col, s);
++ if (col[0] && space > 0)
++ strcat(col, " "), space -= 1;
++ if (slen <= space)
++ strcat(col, s), space -= slen;
+ }
+ }
+ }
+diff -urN imlib-1.9.13.orig/gdk_imlib/misc.c imlib-1.9.13/gdk_imlib/misc.c
+--- imlib-1.9.13.orig/gdk_imlib/misc.c Mon Mar 4 17:26:51 2002
++++ imlib-1.9.13/gdk_imlib/misc.c Thu Sep 16 16:35:32 2004
+@@ -1355,11 +1355,16 @@
+
+ /*
+ * Make sure we don't wrap on our memory allocations
++ * we check G_MAX_INT/4 because rend.c malloc's w * h * bpp
++ * + 3 is safety margin
+ */
+
+ void *_gdk_malloc_image(unsigned int w, unsigned int h)
+ {
+- if( w > 32767 || h > 32767)
++ if (w <= 0 || w > 32767 ||
++ h <= 0 || h > 32767 ||
++ h >= (G_MAXINT/4 - 1) / w)
+ return NULL;
+- return malloc(w * h * 3);
++ return malloc(w * h * 3 + 3);
+ }
++
+diff -urN imlib-1.9.13.orig/gdk_imlib/utils.c imlib-1.9.13/gdk_imlib/utils.c
+--- imlib-1.9.13.orig/gdk_imlib/utils.c Mon Mar 4 17:26:51 2002
++++ imlib-1.9.13/gdk_imlib/utils.c Thu Sep 16 17:28:35 2004
+@@ -1236,36 +1236,56 @@
+ context = 0;
+ ptr = NULL;
+ end = NULL;
++ memset(lookup, 0, sizeof(lookup));
+
+ while (!done)
+ {
+ line = data[count++];
++ if (!line)
++ break;
++ line = strdup(line);
++ if (!line)
++ break;
++ len = strlen(line);
++ for (i = 0; i < len; ++i)
++ {
++ c = line[i];
++ if (c < 32)
++ line[i] = 32;
++ else if (c > 127)
++ line[i] = 127;
++ }
++
+ if (context == 0)
+ {
+ /* Header */
+ sscanf(line, "%i %i %i %i", &w, &h, &ncolors, &cpp);
+- if (ncolors > 32766)
++ if (ncolors <= 0 || ncolors > 32766)
+ {
+ fprintf(stderr, "gdk_imlib ERROR: XPM data wth colors > 32766 not supported\n");
+ free(im);
++ free(line);
+ return NULL;
+ }
+- if (cpp > 5)
++ if (cpp <= 0 || cpp > 5)
+ {
+ fprintf(stderr, "gdk_imlib ERROR: XPM data with characters per pixel > 5 not supported\n");
+ free(im);
++ free(line);
+ return NULL;
+ }
+- if (w > 32767)
++ if (w <= 0 || w > 32767)
+ {
+ fprintf(stderr, "gdk_imlib ERROR: Image width > 32767 pixels for data\n");
+ free(im);
++ free(line);
+ return NULL;
+ }
+- if (h > 32767)
++ if (h <= 0 || h > 32767)
+ {
+ fprintf(stderr, "gdk_imlib ERROR: Image height > 32767 pixels for data\n");
+ free(im);
++ free(line);
+ return NULL;
+ }
+ cmap = malloc(sizeof(struct _cmap) * ncolors);
+@@ -1273,6 +1293,7 @@
+ if (!cmap)
+ {
+ free(im);
++ free(line);
+ return NULL;
+ }
+ im->rgb_width = w;
+@@ -1282,6 +1303,7 @@
+ {
+ free(cmap);
+ free(im);
++ free(line);
+ return NULL;
+ }
+ im->alpha_data = NULL;
+@@ -1355,7 +1377,7 @@
+ strcpy(col + colptr, " ");
+ colptr++;
+ }
+- if (colptr + ls <= sizeof(col))
++ if (colptr + ls < sizeof(col))
+ {
+ strcpy(col + colptr, s);
+ colptr += ls;
+@@ -1558,6 +1580,7 @@
+ }
+ if ((ptr) && ((ptr - im->rgb_data) >= w * h * 3))
+ done = 1;
++ free(line);
+ }
+ if (!transp)
+ {
diff --git a/extra/imlib/ChangeLog b/extra/imlib/ChangeLog
new file mode 100644
index 000000000..3a4bcdf0f
--- /dev/null
+++ b/extra/imlib/ChangeLog
@@ -0,0 +1,13 @@
+2009-07-01 Eric Belanger <eric@archlinux.org>
+
+ * imlib 1.9.15-6
+ * Rebuild for libjpeg 7
+
+2009-06-14 Eric Belanger <eric@archlinux.org>
+
+ * imlib 1.9.15-5
+ * Added libxt makedepends (close FS#15086)
+ * Changed libungif depends to giflib
+ * Updated url
+ * FHS man pages
+ * Added ChangeLog
diff --git a/extra/imlib/PKGBUILD b/extra/imlib/PKGBUILD
new file mode 100644
index 000000000..ccd17deb5
--- /dev/null
+++ b/extra/imlib/PKGBUILD
@@ -0,0 +1,33 @@
+# $Id: PKGBUILD 64376 2010-01-20 03:40:51Z eric $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+# Contributor: Judd Vinet <jvinet@zeroflux.org>
+
+pkgname=imlib
+pkgver=1.9.15
+pkgrel=9
+pkgdesc="General image handling library for X11 and Gtk"
+arch=('i686' 'x86_64')
+url="http://freshmeat.net/projects/imlib/"
+license=('GPL')
+depends=('gtk' 'giflib' 'libpng>=1.4.0' 'libtiff>=3.9.2-2' 'libjpeg>=8' 'libsm')
+makedepends=('libxt')
+options=('!libtool')
+source=(http://ftp.gnome.org/pub/GNOME/sources/imlib/1.9/${pkgname}-${pkgver}.tar.bz2
+ debian-bug448360.patch CAN-2004-1026.patch aclocal-fixes.patch libpng14.patch)
+md5sums=('7db987e6c52e4daf70d7d0f471238eae' '5f9da697934b6bd3b497ac9160ce4f5c'\
+ 'b273d36aa60adbfaacaf6062234e4c1f' '33b832f0dc6c9723cd0dfe9c8d0a6797'\
+ '9d8a029f5fb05978db0dbcd4ff38fe23')
+sha1sums=('c9a732a354fbb3c7e1a426e5d19fc92d73f8f720' 'fe2fd9ce4d7bc62271e724153de39012de8ec5ee'\
+ 'ec1b47281c1a7fb21abe841f948ecc56ed13f310' 'af54cb1ee0c8c6122b277284ebdd1022e31df3b5'\
+ '20ed6063ba787ac7c2677bb4b135c0b7285c52af')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i "${srcdir}/debian-bug448360.patch" || return 1
+ patch -Np1 -i "${srcdir}/CAN-2004-1026.patch" || return 1
+ patch -Np0 -i "${srcdir}/aclocal-fixes.patch" || return 1
+ patch -Np1 -i "${srcdir}/libpng14.patch" || return 1
+ ./configure --prefix=/usr --sysconfdir=/etc --mandir=/usr/share/man --enable-shm || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/imlib/aclocal-fixes.patch b/extra/imlib/aclocal-fixes.patch
new file mode 100644
index 000000000..04ef737e7
--- /dev/null
+++ b/extra/imlib/aclocal-fixes.patch
@@ -0,0 +1,20 @@
+--- imlib.m4.orig 2006-03-05 12:41:14.000000000 +0000
++++ imlib.m4 2006-03-05 12:44:15.000000000 +0000
+@@ -6,7 +6,7 @@
+ dnl AM_PATH_IMLIB([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
+ dnl Test for IMLIB, and define IMLIB_CFLAGS and IMLIB_LIBS
+ dnl
+-AC_DEFUN(AM_PATH_IMLIB,
++AC_DEFUN([AM_PATH_IMLIB],
+ [dnl
+ dnl Get the cflags and libraries from the imlib-config script
+ dnl
+@@ -164,7 +164,7 @@
+ ])
+
+ # Check for gdk-imlib
+-AC_DEFUN(AM_PATH_GDK_IMLIB,
++AC_DEFUN([AM_PATH_GDK_IMLIB],
+ [dnl
+ dnl Get the cflags and libraries from the imlib-config script
+ dnl
diff --git a/extra/imlib/debian-bug448360.patch b/extra/imlib/debian-bug448360.patch
new file mode 100644
index 000000000..f1c0ef111
--- /dev/null
+++ b/extra/imlib/debian-bug448360.patch
@@ -0,0 +1,92 @@
+diff -up -ru imlib-1.9.15.orig/gdk_imlib/misc.c imlib-1.9.15/gdk_imlib/misc.c
+--- imlib-1.9.15.orig/gdk_imlib/misc.c 2002-03-04 18:06:32.000000000 +0100
++++ imlib-1.9.15/gdk_imlib/misc.c 2007-10-28 14:00:04.000000000 +0100
+@@ -674,6 +674,10 @@ gdk_imlib_init_params(GdkImlibInitParams
+ visual = gdk_rgb_get_visual();
+ id->x.visual = GDK_VISUAL_XVISUAL(visual); /* the visual type */
+ id->x.depth = visual->depth; /* the depth of the screen in bpp */
++
++ id->x.shm = 0;
++ id->x.shmp = 0;
++ id->max_shm = 0;
+ #ifdef HAVE_SHM
+ if (XShmQueryExtension(id->x.disp))
+ {
+@@ -689,17 +693,14 @@ gdk_imlib_init_params(GdkImlibInitParams
+ id->x.last_xim = NULL;
+ id->x.last_sxim = NULL;
+ id->max_shm = 0x7fffffff;
+- if (XShmPixmapFormat(id->x.disp) == ZPixmap)
++ if ((XShmPixmapFormat(id->x.disp) == ZPixmap) &&
++ (pm == True))
+ id->x.shmp = 1;
+ }
+ }
+ }
+- else
+ #endif
+- {
+- id->x.shm = 0;
+- id->x.shmp = 0;
+- }
++
+ id->cache.on_image = 0;
+ id->cache.size_image = 0;
+ id->cache.num_image = 0;
+@@ -935,8 +936,8 @@ gdk_imlib_init_params(GdkImlibInitParams
+ }
+ if (p->flags & PARAMS_SHAREDPIXMAPS)
+ {
+- if (id->x.shm)
+- id->x.shmp = p->sharedpixmaps;
++ if (!p->sharedpixmaps)
++ id->x.shmp = 0;
+ }
+ if (p->flags & PARAMS_PALETTEOVERRIDE)
+ override = p->paletteoverride;
+diff -up -ru imlib-1.9.15.orig/Imlib/misc.c imlib-1.9.15/Imlib/misc.c
+--- imlib-1.9.15.orig/Imlib/misc.c 2004-09-21 02:22:59.000000000 +0200
++++ imlib-1.9.15/Imlib/misc.c 2007-10-28 14:00:23.000000000 +0100
+@@ -675,6 +675,10 @@ Imlib_init_with_params(Display * disp, I
+ id->x.root = DefaultRootWindow(disp); /* the root window id */
+ id->x.visual = DefaultVisual(disp, id->x.screen); /* the visual type */
+ id->x.depth = DefaultDepth(disp, id->x.screen); /* the depth of the screen in bpp */
++
++ id->x.shm = 0;
++ id->x.shmp = 0;
++ id->max_shm = 0;
+ #ifdef HAVE_SHM
+ if (XShmQueryExtension(id->x.disp))
+ {
+@@ -690,17 +694,14 @@ Imlib_init_with_params(Display * disp, I
+ id->x.last_xim = NULL;
+ id->x.last_sxim = NULL;
+ id->max_shm = 0x7fffffff;
+- if (XShmPixmapFormat(id->x.disp) == ZPixmap)
++ if ((XShmPixmapFormat(id->x.disp) == ZPixmap &&
++ (pm == True)))
+ id->x.shmp = 1;
+ }
+ }
+ }
+- else
+ #endif
+- {
+- id->x.shm = 0;
+- id->x.shmp = 0;
+- }
++
+ id->cache.on_image = 0;
+ id->cache.size_image = 0;
+ id->cache.num_image = 0;
+@@ -952,8 +953,8 @@ Imlib_init_with_params(Display * disp, I
+ }
+ if (p->flags & PARAMS_SHAREDPIXMAPS)
+ {
+- if (id->x.shm)
+- id->x.shmp = p->sharedpixmaps;
++ if (!p->sharedpixmaps)
++ id->x.shmp = 0;
+ }
+ if (p->flags & PARAMS_PALETTEOVERRIDE)
+ override = p->paletteoverride;
diff --git a/extra/imlib/libpng14.patch b/extra/imlib/libpng14.patch
new file mode 100644
index 000000000..2cc174e29
--- /dev/null
+++ b/extra/imlib/libpng14.patch
@@ -0,0 +1,12 @@
+diff -Naur imlib-1.9.15-orig/Imlib/load.c imlib-1.9.15/Imlib/load.c
+--- imlib-1.9.15-orig/Imlib/load.c 2010-01-18 20:58:27.000000000 -0500
++++ imlib-1.9.15/Imlib/load.c 2010-01-18 21:02:04.000000000 -0500
+@@ -1619,7 +1619,7 @@
+ return 0;
+ fread(buf, 1, 8, f);
+ rewind(f);
+- return (int)png_check_sig(buf, 8);
++ return (int)png_sig_cmp(buf, 0, 8)==0;
+ #else
+ return 0;
+ #endif
diff --git a/extra/imlib2/PKGBUILD b/extra/imlib2/PKGBUILD
new file mode 100644
index 000000000..03075191b
--- /dev/null
+++ b/extra/imlib2/PKGBUILD
@@ -0,0 +1,34 @@
+# $Id: PKGBUILD 79752 2010-05-06 13:39:04Z ronald $
+# Maintainer: Ronald van Haren <ronald.archlinux.org>
+# Contributor: Arjan Timmerman <arjan.archlinux.org>
+# Contributor: Tom Newsom <Jeepster.gmx.co.uk>
+
+pkgname=imlib2
+pkgver=1.4.4
+pkgrel=1
+pkgdesc="Library that does image file loading and saving as well as rendering, manipulation, arbitrary polygon support"
+url="http://sourceforge.net/projects/enlightenment/"
+arch=('i686' 'x86_64')
+license=('BSD')
+depends=('libtiff>=3.9.2-2' 'giflib' 'bzip2' 'freetype2' 'libxext' 'libpng>=1.4.0' 'libid3tag' 'libjpeg>=8')
+options=('!libtool')
+source=("http://downloads.sourceforge.net/enlightenment/$pkgname-$pkgver.tar.bz2")
+sha1sums=('aca2cf5d40ddcd8a3acfde605f319fccce7c2a2b')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+
+ # disable optimizations, they cause problems (e.g. FS#12268)
+ [ $CARCH = "i686" ] && EXTRAOPTS="--disable-mmx"
+ [ $CARCH = "x86_64" ] && EXTRAOPTS="--disable-amd64"
+
+ # Configure and Build
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc/imlib2 \
+ --x-libraries=/usr/lib $EXTRAOPTS || return 1
+ make || return 1
+ make DESTDIR=$pkgdir install || return 1
+
+ # Install License
+ install -Dm644 COPYING $pkgdir/usr/share/licenses/$pkgname/COPYING
+}
diff --git a/extra/indent/PKGBUILD b/extra/indent/PKGBUILD
new file mode 100644
index 000000000..de378611e
--- /dev/null
+++ b/extra/indent/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id: PKGBUILD 53903 2009-10-03 20:21:21Z eric $
+# Maintainer: Aaron Griffin <aaron@archlinux.org>
+# Contributor: aurelien <aurelien@archlinux.org>
+# Contributor: Herb Rose (hrose56@yahoo.com)
+
+pkgname=indent
+pkgver=2.2.10
+pkgrel=4
+pkgdesc="The GNU Pretty-printer"
+arch=('i686' 'x86_64')
+url="http://indent.isidore-it.eu/beautify.html"
+depends=('glibc' 'texinfo')
+license=('GPL3')
+install=indent.install
+source=(http://indent.isidore-it.eu/$pkgname-$pkgver.tar.gz)
+md5sums=('be35ea62705733859fbf8caf816d8959')
+sha1sums=('20fa8a7a4af6670c3254c8b87020291c3db37ed1')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ # Fix doc install path
+ sed -i 's|^docdir = .*$|docdir = @docdir@|' doc/Makefile.in || return 1
+
+ # Fix manpage installation
+ sed -i 's|\(info texinfo2man\)\.c Makefile\.am|\1|' man/Makefile.in || return 1
+ rm man/indent.1
+
+ ./configure --prefix=/usr --datadir=/usr/share --docdir=/usr/share/doc/indent || return 1
+ make || return 1
+ make DESTDIR="$pkgdir" install || return 1
+}
diff --git a/extra/indent/indent-2.2.9-file.diff b/extra/indent/indent-2.2.9-file.diff
new file mode 100644
index 000000000..511995c0b
--- /dev/null
+++ b/extra/indent/indent-2.2.9-file.diff
@@ -0,0 +1,12 @@
+diff -Naur indent-2.2.9.orig/src/indent.h indent-2.2.9/src/indent.h
+--- indent-2.2.9.orig/src/indent.h 2002-11-10 22:02:48.000000000 +0100
++++ indent-2.2.9/src/indent.h 2005-10-30 11:53:10.000000000 +0100
+@@ -96,8 +96,6 @@
+ /* Size of the input program, not including the ' \n\0' we add at the end */
+ extern unsigned long in_prog_size;
+
+-/* The output file. */
+-extern FILE *output;
+
+
+
diff --git a/extra/indent/indent.install b/extra/indent/indent.install
new file mode 100644
index 000000000..c48622c55
--- /dev/null
+++ b/extra/indent/indent.install
@@ -0,0 +1,14 @@
+info_dir=/usr/share/info
+info_file=indent.info.gz
+
+post_install() {
+ install-info ${info_dir}/$info_file ${info_dir}/dir 2> /dev/null
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ install-info --delete ${info_dir}/$info_file ${info_dir}/dir 2> /dev/null
+}
diff --git a/extra/inkscape/PKGBUILD b/extra/inkscape/PKGBUILD
new file mode 100644
index 000000000..888adcdfc
--- /dev/null
+++ b/extra/inkscape/PKGBUILD
@@ -0,0 +1,45 @@
+# $Id: PKGBUILD 114609 2011-03-14 15:02:27Z jgc $
+# Maintainer: tobias <tobias@archlinux.org>
+# Contributor: Tobias Kieslich <tobias@justdreams.de>
+
+pkgname=inkscape
+pkgver=0.48.1
+pkgrel=2
+pkgdesc='Vector graphics editor using the SVG file format'
+url='http://inkscape.sourceforge.net/'
+arch=('i686' 'x86_64')
+license=('GPL' 'LGPL')
+makedepends=('boost' 'pkg-config' 'intltool')
+depends=('gc' 'gtkmm' 'poppler-glib' 'pyxml' 'libxslt' 'gsl' 'popt' 'python2'
+ 'gtkspell' 'imagemagick' 'desktop-file-utils' 'hicolor-icon-theme')
+optdepends=('python2-numpy: some extensions'
+ 'python-lxml: some extensions and filters')
+options=('!libtool')
+install=inkscape.install
+source=("http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.gz")
+sha1sums=('a43467119925aee70d1d63d746f9846abb4dea91')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr \
+ --with-python \
+ --with-perl \
+ --without-gnome-vfs \
+ --with-xft \
+ --enable-lcms \
+ --enable-poppler-cairo \
+ --disable-dependency-tracking
+
+ sed -i 's|/usr/bin/python\>|/usr/bin/python2|g' cxxtest/*.py
+ sed -i 's|/usr/bin/env python\>|/usr/bin/env python2|g' share/*/{test/,}*.py
+ sed -i 's|"python" },|"python2" },|g' src/extension/implementation/script.cpp
+ sed -i 's|\<python -c |python2 -c|g' share/extensions/uniconv*.py
+ sed -i 's|"python"|"python2"|g' src/main.cpp
+
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/inkscape/inkscape.install b/extra/inkscape/inkscape.install
new file mode 100644
index 000000000..c4b2efa09
--- /dev/null
+++ b/extra/inkscape/inkscape.install
@@ -0,0 +1,13 @@
+post_install() {
+ update-desktop-database -q
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+post_upgrade() {
+ post_install
+}
+
+
+post_remove() {
+ post_install
+}
diff --git a/extra/iperf/PKGBUILD b/extra/iperf/PKGBUILD
new file mode 100644
index 000000000..d37cd1c6c
--- /dev/null
+++ b/extra/iperf/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 86402 2010-08-01 10:53:45Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Dale Blount <dale@archlinux.org>
+
+pkgname=iperf
+pkgver=2.0.5
+pkgrel=1
+pkgdesc="A tool to measure maximum TCP bandwidth"
+arch=('i686' 'x86_64')
+license=('custom')
+url="http://iperf.sourceforge.net"
+depends=(gcc-libs)
+source=(http://downloads.sourceforge.net/iperf/iperf-2.0.5.tar.gz
+ license)
+md5sums=('44b5536b67719f4250faed632a3cd016'
+ 'a2879f900b76668b28a1cc922909db18')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ ./configure --prefix=/usr
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+ install -Dm644 ${srcdir}/license "${pkgdir}/usr/share/licenses/iperf/LICENSE" || return 1
+}
diff --git a/extra/iperf/license b/extra/iperf/license
new file mode 100644
index 000000000..e31f98080
--- /dev/null
+++ b/extra/iperf/license
@@ -0,0 +1,25 @@
+Copyright (c) 1999-2006, The Board of Trustees of the University of Illinois
+All Rights Reserved.
+
+Iperf performance test
+Mark Gates
+Ajay Tirumala
+Jim Ferguson
+Jon Dugan
+Feng Qin
+Kevin Gibbs
+John Estabrook
+National Laboratory for Applied Network Research
+National Center for Supercomputing Applications
+University of Illinois at Urbana-Champaign
+http://www.ncsa.uiuc.edu
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software (Iperf) and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+ * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimers.
+
+ * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimers in the documentation and/or other materials provided with the distribution.
+
+ * Neither the names of the University of Illinois, NCSA, nor the names of its contributors may be used to endorse or promote products derived from this Software without specific prior written permission.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE CONTIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/extra/ipod-sharp/PKGBUILD b/extra/ipod-sharp/PKGBUILD
new file mode 100644
index 000000000..a5dd0f755
--- /dev/null
+++ b/extra/ipod-sharp/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 59294 2009-11-21 20:34:51Z jgc $
+# Maintainer: Hugo Doria <hugo@archlinux.org>
+
+pkgname=ipod-sharp
+pkgver=0.8.5
+pkgrel=1
+pkgdesc="C# bindings for libipoddevice"
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://download.banshee-project.org/ipod-sharp/"
+depends=('podsleuth' 'ndesk-dbus-glib' 'gtk-sharp-2')
+options=(!makeflags)
+source=(http://download.banshee-project.org/${pkgname}/${pkgver}/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('7c5b02872c75a7d61662e266e6f7a2a1aae14f71d9820a59faef2813dcd825fd')
+
+build() {
+ export MONO_SHARED_DIR="${srcdir}/.wabi"
+ mkdir -p "${MONO_SHARED_DIR}"
+
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --disable-docs || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+
+ rm -fr "${MONO_SHARED_DIR}"
+}
diff --git a/extra/iptraf/PKGBUILD b/extra/iptraf/PKGBUILD
new file mode 100644
index 000000000..455619c26
--- /dev/null
+++ b/extra/iptraf/PKGBUILD
@@ -0,0 +1,39 @@
+# $Id: PKGBUILD 32907 2009-04-02 15:33:32Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Kevin Piche <kevin@archlinux.org>
+# Contributor: Manolis Tzanidakis
+
+pkgname=iptraf
+pkgver=3.0.0
+pkgrel=2
+pkgdesc="An IP network monitor."
+arch=('i686' 'x86_64')
+url="http://iptraf.seul.org/"
+depends=('ncurses>=5.6-7')
+license=('GPL')
+options=('!makeflags')
+source=(ftp://iptraf.seul.org/pub/$pkgname/$pkgname-$pkgver.tar.gz
+ iptraf-$pkgver-headerfix.patch)
+md5sums=('377371c28ee3c21a76f7024920649ea8'
+ '1d7f4a5c81086463452e73dae1799acf')
+
+build() {
+ cd ${srcdir}/$pkgname-$pkgver
+ patch -Np1 -i ../$pkgname-$pkgver-headerfix.patch || return 1
+ cd src/
+ sed -i -e s:/var/local/iptraf:/var/lib/iptraf: \
+ -e s:/usr/local/bin:/usr/sbin: dirs.h
+ make CFLAGS="$CFLAGS" DEBUG="" TARGET="/usr/sbin" \
+ WORKDIR="/var/lib/iptraf" clean all || return 1
+
+ for sbin in iptraf rvnamed; do
+ install -D -m755 $sbin ${pkgdir}/usr/sbin/$sbin
+ done
+
+ cd ../Documentation
+ for man in *.8; do
+ install -D -m644 $man ${pkgdir}/usr/share/man/man8/$man
+ done
+ mkdir -p ${pkgdir}/var/{lib,log,run}/iptraf
+}
+# vim: ts=2: ft=sh
diff --git a/extra/iptraf/iptraf-3.0.0-headerfix.patch b/extra/iptraf/iptraf-3.0.0-headerfix.patch
new file mode 100644
index 000000000..604d63e26
--- /dev/null
+++ b/extra/iptraf/iptraf-3.0.0-headerfix.patch
@@ -0,0 +1,25 @@
+diff -Naur iptraf-3.0.0-minus/src/othptab.c iptraf-3.0.0/src/othptab.c
+--- iptraf-3.0.0-minus/src/othptab.c 2006-09-27 03:30:33.000000000 +0200
++++ iptraf-3.0.0/src/othptab.c 2006-09-27 03:34:24.000000000 +0200
+@@ -17,6 +17,7 @@
+ ***/
+
+ #include <asm/types.h>
++#include <sys/types.h>
+ #include <linux/if_ether.h>
+ #include <winops.h>
+ #include "arphdr.h"
+diff -Naur iptraf-3.0.0-minus/src/tr.c iptraf-3.0.0/src/tr.c
+--- iptraf-3.0.0-minus/src/tr.c 2005-09-13 08:42:54.000000000 +0200
++++ iptraf-3.0.0/src/tr.c 2006-09-27 03:32:54.000000000 +0200
+@@ -7,8 +7,8 @@
+ */
+
+ #include <asm/types.h>
+-#include <linux/if_tr.h>
+ #include <netinet/in.h>
++#include <linux/if_tr.h>
+
+ unsigned int get_tr_ip_offset(unsigned char *pkt)
+ {
+
diff --git a/extra/irqbalance/PKGBUILD b/extra/irqbalance/PKGBUILD
new file mode 100644
index 000000000..13db8d06b
--- /dev/null
+++ b/extra/irqbalance/PKGBUILD
@@ -0,0 +1,34 @@
+# Maintainer: Dan McGee <dan@archlinux.org>
+# Contributor: Martin Striz <ms@poruba.net>
+
+pkgname=irqbalance
+pkgver=0.56
+pkgrel=1
+pkgdesc="IRQ balancing daemon for SMP systems"
+arch=('i686' 'x86_64')
+url="http://www.irqbalance.org/"
+license=('GPL')
+depends=(glib2)
+makedepends=(pkgconfig)
+backup=(etc/conf.d/irqbalance)
+source=(http://irqbalance.googlecode.com/files/irqbalance-$pkgver.tbz2
+ irqbalance.conf.d
+ irqbalance.rc.d)
+md5sums=('cd0c4d3b2bb84778a04fc594ad83949a'
+ '336c1ee99818f9ecda1687e34c69fd6b'
+ 'fb82fc5d267d39110baf720d81282a7c')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ ./autogen.sh
+ ./configure
+ make
+}
+
+package() {
+ cd $srcdir/$pkgname-$pkgver
+ install -D -m755 irqbalance $pkgdir/usr/sbin/irqbalance
+ install -D -m644 irqbalance.1 $pkgdir/usr/share/man/man1/irqbalance.1
+ install -D -m644 ../irqbalance.conf.d $pkgdir/etc/conf.d/irqbalance
+ install -D -m755 ../irqbalance.rc.d $pkgdir/etc/rc.d/irqbalance
+}
diff --git a/extra/irqbalance/irqbalance.conf.d b/extra/irqbalance/irqbalance.conf.d
new file mode 100644
index 000000000..ef1bdfd75
--- /dev/null
+++ b/extra/irqbalance/irqbalance.conf.d
@@ -0,0 +1,6 @@
+#
+# Settings for irqbalance daemon
+#
+
+# one shot mode - set to 1 if you have Pentium 4 with HT
+ONESHOT=0
diff --git a/extra/irqbalance/irqbalance.rc.d b/extra/irqbalance/irqbalance.rc.d
new file mode 100644
index 000000000..987c26b51
--- /dev/null
+++ b/extra/irqbalance/irqbalance.rc.d
@@ -0,0 +1,46 @@
+#!/bin/bash
+
+# source application-specific settings
+ONESHOT=0
+[ -f /etc/conf.d/irqbalance ] && . /etc/conf.d/irqbalance
+
+if [ "$ONESHOT" -ne 0 ]; then
+ ONESHOT_CMD="--oneshot"
+fi
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+PID=`pidof -o %PPID /usr/sbin/irqbalance`
+case "$1" in
+ start)
+ stat_busy "Starting IRQ balancing"
+ [ -z "$PID" ] && /usr/sbin/irqbalance $ONESHOT_CMD
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ if [ "$ONESHOT" -eq 0 ]; then
+ add_daemon irqbalance
+ fi
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping IRQ balancing"
+ [ ! -z "$PID" ] && kill $PID &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon irqbalance
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
diff --git a/extra/irssi/PKGBUILD b/extra/irssi/PKGBUILD
new file mode 100644
index 000000000..9fe5258a1
--- /dev/null
+++ b/extra/irssi/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 102836 2010-12-12 08:15:33Z angvp $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Dan McGee <dan@archlinux.org>
+
+pkgname=irssi
+pkgver=0.8.15
+pkgrel=4
+pkgdesc="Modular text mode IRC client with Perl scripting"
+arch=('i686' 'x86_64')
+url="http://irssi.org/"
+license=('GPL')
+depends=('glib2' 'openssl' 'perl')
+optdepends=('perl-libwww: for the scriptassist script')
+backup=(etc/irssi.conf)
+source=(http://irssi.org/files/${pkgname}-${pkgver}.tar.bz2)
+options=('!libtool')
+md5sums=('1dcb3f511b88df94b0c996f36668c7da')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ ./configure --prefix=/usr \
+ --enable-ipv6 \
+ --with-proxy \
+ --sysconfdir=/etc \
+ --with-perl-lib=vendor
+ make
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/isapnptools/PKGBUILD b/extra/isapnptools/PKGBUILD
new file mode 100644
index 000000000..e29d4cf94
--- /dev/null
+++ b/extra/isapnptools/PKGBUILD
@@ -0,0 +1,21 @@
+# $Id: PKGBUILD 68051 2010-02-10 15:42:28Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+
+pkgname=isapnptools
+pkgver=1.27
+pkgrel=2
+pkgdesc="Allow ISA Plug-And-Play devices to be configured on a Linux machine"
+url="http://www.roestock.demon.co.uk/isapnptools/"
+depends=('glibc')
+arch=('i686' 'x86_64')
+license=('GPL')
+source=(ftp://metalab.unc.edu/pub/Linux/system/hardware/${pkgname}-${pkgver}.tgz)
+md5sums=('b997ba56583dc850fce9b93d658dfa0c')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ ./configure --prefix=/usr
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/ispell/ChangeLog b/extra/ispell/ChangeLog
new file mode 100644
index 000000000..edb12c3bb
--- /dev/null
+++ b/extra/ispell/ChangeLog
@@ -0,0 +1,6 @@
+2008-03-31 Eric Belanger <eric@archlinux.org>
+
+ * ispell 3.3.02-2
+ * FSH man pages
+ * Added ChangeLog
+
diff --git a/extra/ispell/PKGBUILD b/extra/ispell/PKGBUILD
new file mode 100644
index 000000000..c634a1962
--- /dev/null
+++ b/extra/ispell/PKGBUILD
@@ -0,0 +1,60 @@
+# $Id: PKGBUILD 80733 2010-05-20 21:55:16Z dgriffiths $
+# Contributor: Eric Belanger <eric@archlinux.org>
+# Maintainer: Daniel J Griffiths <ghost1227@archlinux.us>
+
+pkgname=ispell
+pkgver=3.3.02
+pkgrel=4
+pkgdesc="An interactive spell-checking program for Unix"
+arch=('i686' 'x86_64')
+url="http://ficus-www.cs.ucla.edu/geoff/ispell.html"
+license=('BSD')
+depends=('ncurses')
+options=('!makeflags')
+source=(http://fmg-www.cs.ucla.edu/geoff/tars/${pkgname}-${pkgver}.tar.gz
+ license.txt getline.patch)
+md5sums=('12087d7555fc2b746425cd167af480fe' 'bf51b6181b9914dedc266ba970bb7319'
+ '1dca21c5d56405fe592175c3dde2fda2')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ patch -p0 < ${srcdir}/getline.patch || return 1
+
+ sed -i 's/#undef USG/#define USG/' local.h.linux
+ sed -i 's|/usr/local|/usr|' local.h.linux
+ sed -i 's|/lib|/lib/ispell|' local.h.linux
+ cp local.h.linux local.h
+ make TMPDIR=/tmp all || return 1
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ # Installing binary tools
+ install -Dm755 buildhash ${pkgdir}/usr/bin/buildhash
+ install -Dm755 findaffix ${pkgdir}/usr/bin/findaffix
+ install -Dm755 icombine ${pkgdir}/usr/bin/icombine
+ install -Dm755 ijoin ${pkgdir}/usr/bin/ijoin
+ install -Dm755 ispell ${pkgdir}/usr/bin/ispell
+ install -Dm755 iwhich ${pkgdir}/usr/bin/iwhich
+ install -Dm755 munchlist ${pkgdir}/usr/bin/munchlist
+ install -Dm755 tryaffix ${pkgdir}/usr/bin/tryaffix
+
+ # Installing man pages
+ install -Dm644 ispell.1 ${pkgdir}/usr/share/man/man1/ispell.1
+ install -Dm644 ispell.5 ${pkgdir}/usr/share/man/man5/ispell.5
+
+ # Installing dictionnaries
+ install -d ${pkgdir}/usr/bin ${pkgdir}/usr/lib/ispell
+ install -m644 languages/american/americanmed.hash \
+ ${pkgdir}/usr/lib/ispell/americanmed.hash
+ install -m644 languages/english/english.aff \
+ ${pkgdir}/usr/lib/ispell/english.aff
+ ln -s americanmed.hash ${pkgdir}/usr/lib/ispell/american.hash
+ ln -s americanmed.hash ${pkgdir}/usr/lib/ispell/english.hash
+
+ # Installing license
+ install -Dm644 ${srcdir}/license.txt \
+ ${pkgdir}/usr/share/licenses/${pkgname}/license.txt
+}
diff --git a/extra/ispell/getline.patch b/extra/ispell/getline.patch
new file mode 100644
index 000000000..196077218
--- /dev/null
+++ b/extra/ispell/getline.patch
@@ -0,0 +1,47 @@
+--- ispell-3.3.02/correct.c 2005-04-28 09:46:51.000000000 -0500
++++ correct.c 2010-05-20 16:36:37.000000000 -0500
+@@ -245,7 +245,7 @@
+ struct flagent * sufent,
+ ichar_t savearea[MAX_CAPS][INPUTWORDLEN + MAXAFFIXLEN],
+ int * nsaved));
+-static char * getline P ((char * buf, int bufsize));
++static char * mygetline P ((char * buf, int bufsize));
+ void askmode P ((void));
+ void copyout P ((unsigned char ** cc, int cnt));
+ static void lookharder P ((unsigned char * string));
+@@ -571,7 +571,7 @@
+
+ imove (li - 1, 0);
+ (void) putchar ('!');
+- if (getline ((char *) buf, sizeof buf) == NULL)
++ if (mygetline ((char *) buf, sizeof buf) == NULL)
+ {
+ (void) putchar (7);
+ ierase ();
+@@ -596,7 +596,7 @@
+ (void) printf ("%s ", CORR_C_READONLY);
+ }
+ (void) printf (CORR_C_REPLACE_WITH);
+- if (getline ((char *) ctok, ctokl) == NULL)
++ if (mygetline ((char *) ctok, ctokl) == NULL)
+ {
+ (void) putchar (7);
+ /* Put it back */
+@@ -664,7 +664,7 @@
+ unsigned char buf[100];
+ imove (li - 1, 0);
+ (void) printf (CORR_C_LOOKUP_PROMPT);
+- if (getline ((char *) buf, sizeof buf) == NULL)
++ if (mygetline ((char *) buf, sizeof buf) == NULL)
+ {
+ (void) putchar (7);
+ ierase ();
+@@ -1583,7 +1583,7 @@
+ return;
+ }
+
+-static char * getline (s, len)
++static char * mygetline (s, len)
+ register char * s;
+ register int len;
+ {
diff --git a/extra/ispell/license.txt b/extra/ispell/license.txt
new file mode 100644
index 000000000..6d6569a3a
--- /dev/null
+++ b/extra/ispell/license.txt
@@ -0,0 +1,35 @@
+ Copyright (c), 1983, by Pace Willisson
+
+ Copyright 1992, 1993, 1999, 2001, 2005, Geoff Kuenning, Claremont, CA
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ 3. All modifications to the source code must be clearly marked as
+ such. Binary redistributions based on modified source code
+ must be clearly marked as modified versions in the documentation
+ and/or other materials provided with the distribution.
+ 4. The code that causes the 'ispell -v' command to display a prominent
+ link to the official ispell Web site may not be removed.
+ 5. The name of Geoff Kuenning may not be used to endorse or promote
+ products derived from this software without specific prior
+ written permission.
+
+ THIS SOFTWARE IS PROVIDED BY GEOFF KUENNING AND CONTRIBUTORS ``AS IS'' AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL GEOFF KUENNING OR CONTRIBUTORS BE LIABLE
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ SUCH DAMAGE.
diff --git a/extra/ivtv-utils/PKGBUILD b/extra/ivtv-utils/PKGBUILD
new file mode 100644
index 000000000..57d810d9d
--- /dev/null
+++ b/extra/ivtv-utils/PKGBUILD
@@ -0,0 +1,36 @@
+# $Id: PKGBUILD 89079 2010-08-29 10:28:03Z thomas $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Andrea Scarpino <bash.lnx@gmail.com>
+
+pkgname=ivtv-utils
+pkgver=1.4.1
+pkgrel=3
+pkgdesc="Userspace utilities for Hauppauge PVR cards"
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://ivtvdriver.org"
+source=(http://dl.ivtvdriver.org/ivtv/stable/${pkgname}-${pkgver}.tar.gz
+ http://dl.ivtvdriver.org/ivtv/firmware/ivtv-firmware.tar.gz)
+depends=('gcc-libs')
+md5sums=('3a4219d698262ca2b28e41f0f547b0a2'
+ 'b9a871f1c569025be9c48a77b3515faf')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" PREFIX=/usr install
+
+ cd "${srcdir}"
+ for file in v4l-cx2341x-dec.fw v4l-cx2341x-enc.fw v4l-pvrusb2-24xxx-01.fw v4l-pvrusb2-29xxx-01.fw v4l-cx2341x-init.mpg; do
+ install -D -m644 $file "${pkgdir}/lib/firmware/$file"
+ done
+
+ # FS#15133 - files already provided by the kernel-headers package
+ rm -rf "${pkgdir}"/usr/include
+ # Resolve conflict with v4l-utils
+ rm -f "${pkgdir}"/usr/bin/v4l2-ctl
+}
diff --git a/extra/jack/PKGBUILD b/extra/jack/PKGBUILD
new file mode 100644
index 000000000..ae9cd0ab2
--- /dev/null
+++ b/extra/jack/PKGBUILD
@@ -0,0 +1,38 @@
+# $Id: PKGBUILD 112020 2011-03-03 07:49:00Z schiv $
+# Maintainer: Ray Rashif <schiv@archlinux.org>
+# Contributor: tobias <tobias@archlinux.net>
+# Contributor: Robert Emil Berge <robert@rebi.no>
+
+pkgname=jack
+_longname=jack-audio-connection-kit
+pkgver=0.120.1
+pkgrel=1
+pkgdesc="A low-latency audio server"
+arch=('i686' 'x86_64')
+license=('GPL' 'LGPL')
+depends=('libsamplerate' 'readline')
+makedepends=('doxygen' 'libffado')
+optdepends=('libffado: FireWire support')
+url="http://jackaudio.org/"
+options=('!libtool')
+provides=("$_longname=$pkgver")
+replaces=("$_longname")
+changelog=$pkgname.changelog
+source=("http://jackaudio.org/downloads/$_longname-$pkgver.tar.gz")
+md5sums=('e45bab906be64e4e2752cbd855a8efd5')
+
+build() {
+ cd "$srcdir/$_longname-$pkgver"
+
+ ./configure --prefix=/usr \
+ --libdir=/usr/lib
+ make
+}
+
+package() {
+ cd "$srcdir/$_longname-$pkgver"
+
+ make DESTDIR="$pkgdir/" install
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/extra/jack/jack.changelog b/extra/jack/jack.changelog
new file mode 100644
index 000000000..04c0c73ec
--- /dev/null
+++ b/extra/jack/jack.changelog
@@ -0,0 +1,19 @@
+3 Mar 2011 (GMT+8) Ray Rashif <schiv@archlinux.org>
+
+ * 0.120.1-1:
+ Upstream release
+
+8 Aug 2010 (GMT+8) Ray Rashif <schiv@archlinux.org>
+
+ * 0.118.0-4 :
+ Built against libffado
+ - for FireWire support (see FS#19626)
+ Removed init scripts (no longer in tarball; unsupported).
+
+ * PKGBUILD :
+ URL updated.
+ Licenses now GPL, LGPL according to 2-or-later convention
+ - removed custom installation (both are common)
+
+ * jack.changelog :
+ Added this changelog.
diff --git a/extra/jade/PKGBUILD b/extra/jade/PKGBUILD
new file mode 100644
index 000000000..de49761b0
--- /dev/null
+++ b/extra/jade/PKGBUILD
@@ -0,0 +1,37 @@
+# $Id: PKGBUILD 102540 2010-12-07 23:38:21Z andrea $
+# Maintainer:
+# Contributor: 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' '!makeflags')
+source=(ftp://ftp.jclark.com/pub/${pkgname}/${pkgname}-${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
+ chmod 755 configure
+ ./configure --prefix=/usr --enable-default-catalog=/usr/share/sgml/catalog
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ install -d -m755 ${pkgdir}/usr/lib
+ make prefix=${pkgdir}/usr install
+ mv ${pkgdir}/usr/bin/sx ${pkgdir}/usr/bin/sgml2xml
+ install -m755 -d ${pkgdir}/usr/share/licenses/${pkgname}
+ install -m644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/
+}
diff --git a/extra/jasper/PKGBUILD b/extra/jasper/PKGBUILD
new file mode 100644
index 000000000..542f1a91e
--- /dev/null
+++ b/extra/jasper/PKGBUILD
@@ -0,0 +1,44 @@
+# $Id: PKGBUILD 87502 2010-08-15 02:53:20Z eric $
+# Contributor: Eric Belanger <eric@archlinux.org>
+# Contributor: Tobias Powalowski <tpowa@archlinux.org>
+# Maintainer: Daniel J Griffiths <ghost1227@archlinux.us>
+
+pkgname=jasper
+pkgver=1.900.1
+pkgrel=6
+pkgdesc="A software-based implementation of the codec specified in the emerging JPEG-2000 Part-1 standard"
+arch=('i686' 'x86_64')
+url="http://www.ece.uvic.ca/~mdadams/jasper/"
+license=('custom:JasPer2.0')
+depends=('libjpeg' 'freeglut' 'libxi' 'libxmu' 'mesa')
+makedepends=('unzip')
+options=('!libtool')
+source=(http://www.ece.uvic.ca/~mdadams/${pkgname}/software/${pkgname}-${pkgver}.zip jpc_dec.c.patch
+ patch-libjasper-stepsizes-overflow.diff jasper-1.900.1-CVE-2008-3520.patch
+ jasper-1.900.1-CVE-2008-3522.patch)
+md5sums=('a342b2b4495b3e1394e161eb5d85d754' '36de7128eea6f701c1e2e13ce5bd8d37'\
+ '24785d8eb3eea19eec7e77d59f3e6a25' '911bb13529483c093d12c15eed4e9243'\
+ 'ed441f30c4231f319d9ff77d86db2ef9')
+sha1sums=('9c5735f773922e580bf98c7c7dfda9bbed4c5191' 'c1a0176a15210c0af14d85e55ce566921957d780'\
+ 'f298566fef08c8a589d072582112cd51c72c3983' '2483dba925670bf29f531d85d73c4e5ada513b01'\
+ '0e7b6142cd9240ffb15a1ed7297c43c76fa09ee4')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ patch -Np1 < "${srcdir}/jpc_dec.c.patch"
+ patch -Np1 < "${srcdir}/patch-libjasper-stepsizes-overflow.diff"
+ patch -Np1 < "${srcdir}/jasper-1.900.1-CVE-2008-3520.patch"
+ patch -Np1 < "${srcdir}/jasper-1.900.1-CVE-2008-3522.patch"
+
+ ./configure --prefix=/usr --mandir=/usr/share/man --enable-shared
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ make DESTDIR="${pkgdir}" install
+ install -Dm644 LICENSE \
+ "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+}
diff --git a/extra/jasper/jasper-1.900.1-CVE-2008-3520.patch b/extra/jasper/jasper-1.900.1-CVE-2008-3520.patch
new file mode 100644
index 000000000..0f5e3b746
--- /dev/null
+++ b/extra/jasper/jasper-1.900.1-CVE-2008-3520.patch
@@ -0,0 +1,928 @@
+https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2008-3520
+
+OpenBSD jas_malloc hardening patches
+
+diff -pruN jasper-1.900.1.orig/src/libjasper/base/jas_cm.c jasper-1.900.1/src/libjasper/base/jas_cm.c
+--- jasper-1.900.1.orig/src/libjasper/base/jas_cm.c 2007-01-19 22:43:05.000000000 +0100
++++ jasper-1.900.1/src/libjasper/base/jas_cm.c 2009-10-22 10:27:45.000000000 +0200
+@@ -704,8 +704,7 @@ static int jas_cmpxformseq_resize(jas_cm
+ {
+ jas_cmpxform_t **p;
+ assert(n >= pxformseq->numpxforms);
+- p = (!pxformseq->pxforms) ? jas_malloc(n * sizeof(jas_cmpxform_t *)) :
+- jas_realloc(pxformseq->pxforms, n * sizeof(jas_cmpxform_t *));
++ p = jas_realloc2(pxformseq->pxforms, n, sizeof(jas_cmpxform_t *));
+ if (!p) {
+ return -1;
+ }
+@@ -889,13 +888,13 @@ static int jas_cmshapmatlut_set(jas_cmsh
+ jas_cmshapmatlut_cleanup(lut);
+ if (curv->numents == 0) {
+ lut->size = 2;
+- if (!(lut->data = jas_malloc(lut->size * sizeof(jas_cmreal_t))))
++ if (!(lut->data = jas_alloc2(lut->size, sizeof(jas_cmreal_t))))
+ goto error;
+ lut->data[0] = 0.0;
+ lut->data[1] = 1.0;
+ } else if (curv->numents == 1) {
+ lut->size = 256;
+- if (!(lut->data = jas_malloc(lut->size * sizeof(jas_cmreal_t))))
++ if (!(lut->data = jas_alloc2(lut->size, sizeof(jas_cmreal_t))))
+ goto error;
+ gamma = curv->ents[0] / 256.0;
+ for (i = 0; i < lut->size; ++i) {
+@@ -903,7 +902,7 @@ static int jas_cmshapmatlut_set(jas_cmsh
+ }
+ } else {
+ lut->size = curv->numents;
+- if (!(lut->data = jas_malloc(lut->size * sizeof(jas_cmreal_t))))
++ if (!(lut->data = jas_alloc2(lut->size, sizeof(jas_cmreal_t))))
+ goto error;
+ for (i = 0; i < lut->size; ++i) {
+ lut->data[i] = curv->ents[i] / 65535.0;
+@@ -953,7 +952,7 @@ static int jas_cmshapmatlut_invert(jas_c
+ return -1;
+ }
+ }
+- if (!(invlut->data = jas_malloc(n * sizeof(jas_cmreal_t))))
++ if (!(invlut->data = jas_alloc2(n, sizeof(jas_cmreal_t))))
+ return -1;
+ invlut->size = n;
+ for (i = 0; i < invlut->size; ++i) {
+diff -pruN jasper-1.900.1.orig/src/libjasper/base/jas_icc.c jasper-1.900.1/src/libjasper/base/jas_icc.c
+--- jasper-1.900.1.orig/src/libjasper/base/jas_icc.c 2007-01-19 22:43:05.000000000 +0100
++++ jasper-1.900.1/src/libjasper/base/jas_icc.c 2009-10-22 10:27:45.000000000 +0200
+@@ -373,7 +373,7 @@ int jas_iccprof_save(jas_iccprof_t *prof
+ jas_icctagtab_t *tagtab;
+
+ tagtab = &prof->tagtab;
+- if (!(tagtab->ents = jas_malloc(prof->attrtab->numattrs *
++ if (!(tagtab->ents = jas_alloc2(prof->attrtab->numattrs,
+ sizeof(jas_icctagtabent_t))))
+ goto error;
+ tagtab->numents = prof->attrtab->numattrs;
+@@ -522,7 +522,7 @@ static int jas_iccprof_gettagtab(jas_str
+ }
+ if (jas_iccgetuint32(in, &tagtab->numents))
+ goto error;
+- if (!(tagtab->ents = jas_malloc(tagtab->numents *
++ if (!(tagtab->ents = jas_alloc2(tagtab->numents,
+ sizeof(jas_icctagtabent_t))))
+ goto error;
+ tagtabent = tagtab->ents;
+@@ -743,8 +743,7 @@ static int jas_iccattrtab_resize(jas_icc
+ {
+ jas_iccattr_t *newattrs;
+ assert(maxents >= tab->numattrs);
+- newattrs = tab->attrs ? jas_realloc(tab->attrs, maxents *
+- sizeof(jas_iccattr_t)) : jas_malloc(maxents * sizeof(jas_iccattr_t));
++ newattrs = jas_realloc2(tab->attrs, maxents, sizeof(jas_iccattr_t));
+ if (!newattrs)
+ return -1;
+ tab->attrs = newattrs;
+@@ -999,7 +998,7 @@ static int jas_icccurv_input(jas_iccattr
+
+ if (jas_iccgetuint32(in, &curv->numents))
+ goto error;
+- if (!(curv->ents = jas_malloc(curv->numents * sizeof(jas_iccuint16_t))))
++ if (!(curv->ents = jas_alloc2(curv->numents, sizeof(jas_iccuint16_t))))
+ goto error;
+ for (i = 0; i < curv->numents; ++i) {
+ if (jas_iccgetuint16(in, &curv->ents[i]))
+@@ -1100,7 +1099,7 @@ static int jas_icctxtdesc_input(jas_icca
+ if (jas_iccgetuint32(in, &txtdesc->uclangcode) ||
+ jas_iccgetuint32(in, &txtdesc->uclen))
+ goto error;
+- if (!(txtdesc->ucdata = jas_malloc(txtdesc->uclen * 2)))
++ if (!(txtdesc->ucdata = jas_alloc2(txtdesc->uclen, 2)))
+ goto error;
+ if (jas_stream_read(in, txtdesc->ucdata, txtdesc->uclen * 2) !=
+ JAS_CAST(int, txtdesc->uclen * 2))
+@@ -1292,17 +1291,17 @@ static int jas_icclut8_input(jas_iccattr
+ jas_iccgetuint16(in, &lut8->numouttabents))
+ goto error;
+ clutsize = jas_iccpowi(lut8->clutlen, lut8->numinchans) * lut8->numoutchans;
+- if (!(lut8->clut = jas_malloc(clutsize * sizeof(jas_iccuint8_t))) ||
+- !(lut8->intabsbuf = jas_malloc(lut8->numinchans *
+- lut8->numintabents * sizeof(jas_iccuint8_t))) ||
+- !(lut8->intabs = jas_malloc(lut8->numinchans *
++ if (!(lut8->clut = jas_alloc2(clutsize, sizeof(jas_iccuint8_t))) ||
++ !(lut8->intabsbuf = jas_alloc3(lut8->numinchans,
++ lut8->numintabents, sizeof(jas_iccuint8_t))) ||
++ !(lut8->intabs = jas_alloc2(lut8->numinchans,
+ sizeof(jas_iccuint8_t *))))
+ goto error;
+ for (i = 0; i < lut8->numinchans; ++i)
+ lut8->intabs[i] = &lut8->intabsbuf[i * lut8->numintabents];
+- if (!(lut8->outtabsbuf = jas_malloc(lut8->numoutchans *
+- lut8->numouttabents * sizeof(jas_iccuint8_t))) ||
+- !(lut8->outtabs = jas_malloc(lut8->numoutchans *
++ if (!(lut8->outtabsbuf = jas_alloc3(lut8->numoutchans,
++ lut8->numouttabents, sizeof(jas_iccuint8_t))) ||
++ !(lut8->outtabs = jas_alloc2(lut8->numoutchans,
+ sizeof(jas_iccuint8_t *))))
+ goto error;
+ for (i = 0; i < lut8->numoutchans; ++i)
+@@ -1461,17 +1460,17 @@ static int jas_icclut16_input(jas_iccatt
+ jas_iccgetuint16(in, &lut16->numouttabents))
+ goto error;
+ clutsize = jas_iccpowi(lut16->clutlen, lut16->numinchans) * lut16->numoutchans;
+- if (!(lut16->clut = jas_malloc(clutsize * sizeof(jas_iccuint16_t))) ||
+- !(lut16->intabsbuf = jas_malloc(lut16->numinchans *
+- lut16->numintabents * sizeof(jas_iccuint16_t))) ||
+- !(lut16->intabs = jas_malloc(lut16->numinchans *
++ if (!(lut16->clut = jas_alloc2(clutsize, sizeof(jas_iccuint16_t))) ||
++ !(lut16->intabsbuf = jas_alloc3(lut16->numinchans,
++ lut16->numintabents, sizeof(jas_iccuint16_t))) ||
++ !(lut16->intabs = jas_alloc2(lut16->numinchans,
+ sizeof(jas_iccuint16_t *))))
+ goto error;
+ for (i = 0; i < lut16->numinchans; ++i)
+ lut16->intabs[i] = &lut16->intabsbuf[i * lut16->numintabents];
+- if (!(lut16->outtabsbuf = jas_malloc(lut16->numoutchans *
+- lut16->numouttabents * sizeof(jas_iccuint16_t))) ||
+- !(lut16->outtabs = jas_malloc(lut16->numoutchans *
++ if (!(lut16->outtabsbuf = jas_alloc3(lut16->numoutchans,
++ lut16->numouttabents, sizeof(jas_iccuint16_t))) ||
++ !(lut16->outtabs = jas_alloc2(lut16->numoutchans,
+ sizeof(jas_iccuint16_t *))))
+ goto error;
+ for (i = 0; i < lut16->numoutchans; ++i)
+diff -pruN jasper-1.900.1.orig/src/libjasper/base/jas_image.c jasper-1.900.1/src/libjasper/base/jas_image.c
+--- jasper-1.900.1.orig/src/libjasper/base/jas_image.c 2007-01-19 22:43:05.000000000 +0100
++++ jasper-1.900.1/src/libjasper/base/jas_image.c 2009-10-22 10:27:45.000000000 +0200
+@@ -142,7 +142,7 @@ jas_image_t *jas_image_create(int numcmp
+ image->inmem_ = true;
+
+ /* Allocate memory for the per-component information. */
+- if (!(image->cmpts_ = jas_malloc(image->maxcmpts_ *
++ if (!(image->cmpts_ = jas_alloc2(image->maxcmpts_,
+ sizeof(jas_image_cmpt_t *)))) {
+ jas_image_destroy(image);
+ return 0;
+@@ -774,8 +774,7 @@ static int jas_image_growcmpts(jas_image
+ jas_image_cmpt_t **newcmpts;
+ int cmptno;
+
+- newcmpts = (!image->cmpts_) ? jas_malloc(maxcmpts * sizeof(jas_image_cmpt_t *)) :
+- jas_realloc(image->cmpts_, maxcmpts * sizeof(jas_image_cmpt_t *));
++ newcmpts = jas_realloc2(image->cmpts_, maxcmpts, sizeof(jas_image_cmpt_t *));
+ if (!newcmpts) {
+ return -1;
+ }
+diff -pruN jasper-1.900.1.orig/src/libjasper/base/jas_malloc.c jasper-1.900.1/src/libjasper/base/jas_malloc.c
+--- jasper-1.900.1.orig/src/libjasper/base/jas_malloc.c 2007-01-19 22:43:05.000000000 +0100
++++ jasper-1.900.1/src/libjasper/base/jas_malloc.c 2009-10-22 10:27:45.000000000 +0200
+@@ -76,6 +76,9 @@
+
+ /* We need the prototype for memset. */
+ #include <string.h>
++#include <limits.h>
++#include <errno.h>
++#include <stdint.h>
+
+ #include "jasper/jas_malloc.h"
+
+@@ -113,18 +116,50 @@ void jas_free(void *ptr)
+
+ void *jas_realloc(void *ptr, size_t size)
+ {
+- return realloc(ptr, size);
++ return ptr ? realloc(ptr, size) : malloc(size);
+ }
+
+-void *jas_calloc(size_t nmemb, size_t size)
++void *jas_realloc2(void *ptr, size_t nmemb, size_t size)
++{
++ if (!ptr)
++ return jas_alloc2(nmemb, size);
++ if (nmemb && SIZE_MAX / nmemb < size) {
++ errno = ENOMEM;
++ return NULL;
++ }
++ return jas_realloc(ptr, nmemb * size);
++
++}
++
++void *jas_alloc2(size_t nmemb, size_t size)
++{
++ if (nmemb && SIZE_MAX / nmemb < size) {
++ errno = ENOMEM;
++ return NULL;
++ }
++
++ return jas_malloc(nmemb * size);
++}
++
++void *jas_alloc3(size_t a, size_t b, size_t c)
+ {
+- void *ptr;
+ size_t n;
+- n = nmemb * size;
+- if (!(ptr = jas_malloc(n * sizeof(char)))) {
+- return 0;
++
++ if (a && SIZE_MAX / a < b) {
++ errno = ENOMEM;
++ return NULL;
+ }
+- memset(ptr, 0, n);
++
++ return jas_alloc2(a*b, c);
++}
++
++void *jas_calloc(size_t nmemb, size_t size)
++{
++ void *ptr;
++
++ ptr = jas_alloc2(nmemb, size);
++ if (ptr)
++ memset(ptr, 0, nmemb*size);
+ return ptr;
+ }
+
+diff -pruN jasper-1.900.1.orig/src/libjasper/base/jas_seq.c jasper-1.900.1/src/libjasper/base/jas_seq.c
+--- jasper-1.900.1.orig/src/libjasper/base/jas_seq.c 2007-01-19 22:43:05.000000000 +0100
++++ jasper-1.900.1/src/libjasper/base/jas_seq.c 2009-10-22 10:27:45.000000000 +0200
+@@ -114,7 +114,7 @@ jas_matrix_t *jas_matrix_create(int numr
+ matrix->datasize_ = numrows * numcols;
+
+ if (matrix->maxrows_ > 0) {
+- if (!(matrix->rows_ = jas_malloc(matrix->maxrows_ *
++ if (!(matrix->rows_ = jas_alloc2(matrix->maxrows_,
+ sizeof(jas_seqent_t *)))) {
+ jas_matrix_destroy(matrix);
+ return 0;
+@@ -122,7 +122,7 @@ jas_matrix_t *jas_matrix_create(int numr
+ }
+
+ if (matrix->datasize_ > 0) {
+- if (!(matrix->data_ = jas_malloc(matrix->datasize_ *
++ if (!(matrix->data_ = jas_alloc2(matrix->datasize_,
+ sizeof(jas_seqent_t)))) {
+ jas_matrix_destroy(matrix);
+ return 0;
+@@ -220,7 +220,7 @@ void jas_matrix_bindsub(jas_matrix_t *ma
+ mat0->numrows_ = r1 - r0 + 1;
+ mat0->numcols_ = c1 - c0 + 1;
+ mat0->maxrows_ = mat0->numrows_;
+- mat0->rows_ = jas_malloc(mat0->maxrows_ * sizeof(jas_seqent_t *));
++ mat0->rows_ = jas_alloc2(mat0->maxrows_, sizeof(jas_seqent_t *));
+ for (i = 0; i < mat0->numrows_; ++i) {
+ mat0->rows_[i] = mat1->rows_[r0 + i] + c0;
+ }
+diff -pruN jasper-1.900.1.orig/src/libjasper/base/jas_stream.c jasper-1.900.1/src/libjasper/base/jas_stream.c
+--- jasper-1.900.1.orig/src/libjasper/base/jas_stream.c 2007-01-19 22:43:05.000000000 +0100
++++ jasper-1.900.1/src/libjasper/base/jas_stream.c 2009-10-22 10:27:45.000000000 +0200
+@@ -212,7 +212,7 @@ jas_stream_t *jas_stream_memopen(char *b
+ if (buf) {
+ obj->buf_ = (unsigned char *) buf;
+ } else {
+- obj->buf_ = jas_malloc(obj->bufsize_ * sizeof(char));
++ obj->buf_ = jas_malloc(obj->bufsize_);
+ obj->myalloc_ = 1;
+ }
+ if (!obj->buf_) {
+@@ -992,7 +992,7 @@ static int mem_resize(jas_stream_memobj_
+ unsigned char *buf;
+
+ assert(m->buf_);
+- if (!(buf = jas_realloc(m->buf_, bufsize * sizeof(unsigned char)))) {
++ if (!(buf = jas_realloc(m->buf_, bufsize))) {
+ return -1;
+ }
+ m->buf_ = buf;
+diff -pruN jasper-1.900.1.orig/src/libjasper/bmp/bmp_dec.c jasper-1.900.1/src/libjasper/bmp/bmp_dec.c
+--- jasper-1.900.1.orig/src/libjasper/bmp/bmp_dec.c 2007-01-19 22:43:07.000000000 +0100
++++ jasper-1.900.1/src/libjasper/bmp/bmp_dec.c 2009-10-22 10:27:45.000000000 +0200
+@@ -283,7 +283,7 @@ static bmp_info_t *bmp_getinfo(jas_strea
+ }
+
+ if (info->numcolors > 0) {
+- if (!(info->palents = jas_malloc(info->numcolors *
++ if (!(info->palents = jas_alloc2(info->numcolors,
+ sizeof(bmp_palent_t)))) {
+ bmp_info_destroy(info);
+ return 0;
+diff -pruN jasper-1.900.1.orig/src/libjasper/include/jasper/jas_malloc.h jasper-1.900.1/src/libjasper/include/jasper/jas_malloc.h
+--- jasper-1.900.1.orig/src/libjasper/include/jasper/jas_malloc.h 2007-01-19 22:43:04.000000000 +0100
++++ jasper-1.900.1/src/libjasper/include/jasper/jas_malloc.h 2009-10-22 10:27:45.000000000 +0200
+@@ -95,6 +95,9 @@ extern "C" {
+ #define jas_free MEMFREE
+ #define jas_realloc MEMREALLOC
+ #define jas_calloc MEMCALLOC
++#define jas_alloc2(a, b) MEMALLOC((a)*(b))
++#define jas_alloc3(a, b, c) MEMALLOC((a)*(b)*(c))
++#define jas_realloc2(p, a, b) MEMREALLOC((p), (a)*(b))
+ #endif
+
+ /******************************************************************************\
+@@ -115,6 +118,12 @@ void *jas_realloc(void *ptr, size_t size
+ /* Allocate a block of memory and initialize the contents to zero. */
+ void *jas_calloc(size_t nmemb, size_t size);
+
++/* size-checked double allocation .*/
++void *jas_alloc2(size_t, size_t);
++
++void *jas_alloc3(size_t, size_t, size_t);
++
++void *jas_realloc2(void *, size_t, size_t);
+ #endif
+
+ #ifdef __cplusplus
+diff -pruN jasper-1.900.1.orig/src/libjasper/jp2/jp2_cod.c jasper-1.900.1/src/libjasper/jp2/jp2_cod.c
+--- jasper-1.900.1.orig/src/libjasper/jp2/jp2_cod.c 2007-01-19 22:43:05.000000000 +0100
++++ jasper-1.900.1/src/libjasper/jp2/jp2_cod.c 2009-10-22 10:30:24.000000000 +0200
+@@ -247,7 +247,7 @@ jp2_box_t *jp2_box_get(jas_stream_t *in)
+ box = 0;
+ tmpstream = 0;
+
+- if (!(box = jas_malloc(sizeof(jp2_box_t)))) {
++ if (!(box = jas_calloc(1, sizeof(jp2_box_t)))) {
+ goto error;
+ }
+ box->ops = &jp2_boxinfo_unk.ops;
+@@ -372,7 +372,7 @@ static int jp2_bpcc_getdata(jp2_box_t *b
+ jp2_bpcc_t *bpcc = &box->data.bpcc;
+ unsigned int i;
+ bpcc->numcmpts = box->datalen;
+- if (!(bpcc->bpcs = jas_malloc(bpcc->numcmpts * sizeof(uint_fast8_t)))) {
++ if (!(bpcc->bpcs = jas_alloc2(bpcc->numcmpts, sizeof(uint_fast8_t)))) {
+ return -1;
+ }
+ for (i = 0; i < bpcc->numcmpts; ++i) {
+@@ -416,7 +416,7 @@ static int jp2_colr_getdata(jp2_box_t *b
+ break;
+ case JP2_COLR_ICC:
+ colr->iccplen = box->datalen - 3;
+- if (!(colr->iccp = jas_malloc(colr->iccplen * sizeof(uint_fast8_t)))) {
++ if (!(colr->iccp = jas_alloc2(colr->iccplen, sizeof(uint_fast8_t)))) {
+ return -1;
+ }
+ if (jas_stream_read(in, colr->iccp, colr->iccplen) != colr->iccplen) {
+@@ -453,7 +453,7 @@ static int jp2_cdef_getdata(jp2_box_t *b
+ if (jp2_getuint16(in, &cdef->numchans)) {
+ return -1;
+ }
+- if (!(cdef->ents = jas_malloc(cdef->numchans * sizeof(jp2_cdefchan_t)))) {
++ if (!(cdef->ents = jas_alloc2(cdef->numchans, sizeof(jp2_cdefchan_t)))) {
+ return -1;
+ }
+ for (channo = 0; channo < cdef->numchans; ++channo) {
+@@ -766,7 +766,7 @@ static int jp2_cmap_getdata(jp2_box_t *b
+ unsigned int i;
+
+ cmap->numchans = (box->datalen) / 4;
+- if (!(cmap->ents = jas_malloc(cmap->numchans * sizeof(jp2_cmapent_t)))) {
++ if (!(cmap->ents = jas_alloc2(cmap->numchans, sizeof(jp2_cmapent_t)))) {
+ return -1;
+ }
+ for (i = 0; i < cmap->numchans; ++i) {
+@@ -828,10 +828,10 @@ static int jp2_pclr_getdata(jp2_box_t *b
+ return -1;
+ }
+ lutsize = pclr->numlutents * pclr->numchans;
+- if (!(pclr->lutdata = jas_malloc(lutsize * sizeof(int_fast32_t)))) {
++ if (!(pclr->lutdata = jas_alloc2(lutsize, sizeof(int_fast32_t)))) {
+ return -1;
+ }
+- if (!(pclr->bpc = jas_malloc(pclr->numchans * sizeof(uint_fast8_t)))) {
++ if (!(pclr->bpc = jas_alloc2(pclr->numchans, sizeof(uint_fast8_t)))) {
+ return -1;
+ }
+ for (i = 0; i < pclr->numchans; ++i) {
+diff -pruN jasper-1.900.1.orig/src/libjasper/jp2/jp2_dec.c jasper-1.900.1/src/libjasper/jp2/jp2_dec.c
+--- jasper-1.900.1.orig/src/libjasper/jp2/jp2_dec.c 2007-01-19 22:43:05.000000000 +0100
++++ jasper-1.900.1/src/libjasper/jp2/jp2_dec.c 2009-10-22 10:27:45.000000000 +0200
+@@ -336,7 +336,7 @@ jas_image_t *jp2_decode(jas_stream_t *in
+ }
+
+ /* Allocate space for the channel-number to component-number LUT. */
+- if (!(dec->chantocmptlut = jas_malloc(dec->numchans * sizeof(uint_fast16_t)))) {
++ if (!(dec->chantocmptlut = jas_alloc2(dec->numchans, sizeof(uint_fast16_t)))) {
+ jas_eprintf("error: no memory\n");
+ goto error;
+ }
+@@ -354,7 +354,7 @@ jas_image_t *jp2_decode(jas_stream_t *in
+ if (cmapent->map == JP2_CMAP_DIRECT) {
+ dec->chantocmptlut[channo] = channo;
+ } else if (cmapent->map == JP2_CMAP_PALETTE) {
+- lutents = jas_malloc(pclrd->numlutents * sizeof(int_fast32_t));
++ lutents = jas_alloc2(pclrd->numlutents, sizeof(int_fast32_t));
+ for (i = 0; i < pclrd->numlutents; ++i) {
+ lutents[i] = pclrd->lutdata[cmapent->pcol + i * pclrd->numchans];
+ }
+diff -pruN jasper-1.900.1.orig/src/libjasper/jp2/jp2_enc.c jasper-1.900.1/src/libjasper/jp2/jp2_enc.c
+--- jasper-1.900.1.orig/src/libjasper/jp2/jp2_enc.c 2007-01-19 22:43:05.000000000 +0100
++++ jasper-1.900.1/src/libjasper/jp2/jp2_enc.c 2009-10-22 10:27:45.000000000 +0200
+@@ -191,7 +191,7 @@ int sgnd;
+ }
+ bpcc = &box->data.bpcc;
+ bpcc->numcmpts = jas_image_numcmpts(image);
+- if (!(bpcc->bpcs = jas_malloc(bpcc->numcmpts *
++ if (!(bpcc->bpcs = jas_alloc2(bpcc->numcmpts,
+ sizeof(uint_fast8_t)))) {
+ goto error;
+ }
+@@ -285,7 +285,7 @@ int sgnd;
+ }
+ cdef = &box->data.cdef;
+ cdef->numchans = jas_image_numcmpts(image);
+- cdef->ents = jas_malloc(cdef->numchans * sizeof(jp2_cdefchan_t));
++ cdef->ents = jas_alloc2(cdef->numchans, sizeof(jp2_cdefchan_t));
+ for (i = 0; i < jas_image_numcmpts(image); ++i) {
+ cdefchanent = &cdef->ents[i];
+ cdefchanent->channo = i;
+diff -pruN jasper-1.900.1.orig/src/libjasper/jpc/jpc_cs.c jasper-1.900.1/src/libjasper/jpc/jpc_cs.c
+--- jasper-1.900.1.orig/src/libjasper/jpc/jpc_cs.c 2009-10-22 09:58:16.000000000 +0200
++++ jasper-1.900.1/src/libjasper/jpc/jpc_cs.c 2009-10-22 10:27:45.000000000 +0200
+@@ -502,7 +502,7 @@ static int jpc_siz_getparms(jpc_ms_t *ms
+ !siz->tileheight || !siz->numcomps) {
+ return -1;
+ }
+- if (!(siz->comps = jas_malloc(siz->numcomps * sizeof(jpc_sizcomp_t)))) {
++ if (!(siz->comps = jas_alloc2(siz->numcomps, sizeof(jpc_sizcomp_t)))) {
+ return -1;
+ }
+ for (i = 0; i < siz->numcomps; ++i) {
+@@ -986,7 +986,7 @@ static int jpc_qcx_getcompparms(jpc_qcxc
+ jpc_qcx_destroycompparms(compparms);
+ return -1;
+ } else if (compparms->numstepsizes > 0) {
+- compparms->stepsizes = jas_malloc(compparms->numstepsizes *
++ compparms->stepsizes = jas_alloc2(compparms->numstepsizes,
+ sizeof(uint_fast16_t));
+ assert(compparms->stepsizes);
+ for (i = 0; i < compparms->numstepsizes; ++i) {
+@@ -1094,7 +1094,7 @@ static int jpc_ppm_getparms(jpc_ms_t *ms
+
+ ppm->len = ms->len - 1;
+ if (ppm->len > 0) {
+- if (!(ppm->data = jas_malloc(ppm->len * sizeof(unsigned char)))) {
++ if (!(ppm->data = jas_malloc(ppm->len))) {
+ goto error;
+ }
+ if (JAS_CAST(uint, jas_stream_read(in, ppm->data, ppm->len)) != ppm->len) {
+@@ -1163,7 +1163,7 @@ static int jpc_ppt_getparms(jpc_ms_t *ms
+ }
+ ppt->len = ms->len - 1;
+ if (ppt->len > 0) {
+- if (!(ppt->data = jas_malloc(ppt->len * sizeof(unsigned char)))) {
++ if (!(ppt->data = jas_malloc(ppt->len))) {
+ goto error;
+ }
+ if (jas_stream_read(in, (char *) ppt->data, ppt->len) != JAS_CAST(int, ppt->len)) {
+@@ -1226,7 +1226,7 @@ static int jpc_poc_getparms(jpc_ms_t *ms
+ uint_fast8_t tmp;
+ poc->numpchgs = (cstate->numcomps > 256) ? (ms->len / 9) :
+ (ms->len / 7);
+- if (!(poc->pchgs = jas_malloc(poc->numpchgs * sizeof(jpc_pocpchg_t)))) {
++ if (!(poc->pchgs = jas_alloc2(poc->numpchgs, sizeof(jpc_pocpchg_t)))) {
+ goto error;
+ }
+ for (pchgno = 0, pchg = poc->pchgs; pchgno < poc->numpchgs; ++pchgno,
+@@ -1331,7 +1331,7 @@ static int jpc_crg_getparms(jpc_ms_t *ms
+ jpc_crgcomp_t *comp;
+ uint_fast16_t compno;
+ crg->numcomps = cstate->numcomps;
+- if (!(crg->comps = jas_malloc(cstate->numcomps * sizeof(uint_fast16_t)))) {
++ if (!(crg->comps = jas_alloc2(cstate->numcomps, sizeof(uint_fast16_t)))) {
+ return -1;
+ }
+ for (compno = 0, comp = crg->comps; compno < cstate->numcomps;
+@@ -1470,7 +1470,7 @@ static int jpc_unk_getparms(jpc_ms_t *ms
+ cstate = 0;
+
+ if (ms->len > 0) {
+- if (!(unk->data = jas_malloc(ms->len * sizeof(unsigned char)))) {
++ if (!(unk->data = jas_malloc(ms->len))) {
+ return -1;
+ }
+ if (jas_stream_read(in, (char *) unk->data, ms->len) != JAS_CAST(int, ms->len)) {
+diff -pruN jasper-1.900.1.orig/src/libjasper/jpc/jpc_dec.c jasper-1.900.1/src/libjasper/jpc/jpc_dec.c
+--- jasper-1.900.1.orig/src/libjasper/jpc/jpc_dec.c 2009-10-22 09:58:16.000000000 +0200
++++ jasper-1.900.1/src/libjasper/jpc/jpc_dec.c 2009-10-22 10:30:50.000000000 +0200
+@@ -449,7 +449,7 @@ static int jpc_dec_process_sot(jpc_dec_t
+
+ if (dec->state == JPC_MH) {
+
+- compinfos = jas_malloc(dec->numcomps * sizeof(jas_image_cmptparm_t));
++ compinfos = jas_alloc2(dec->numcomps, sizeof(jas_image_cmptparm_t));
+ assert(compinfos);
+ for (cmptno = 0, cmpt = dec->cmpts, compinfo = compinfos;
+ cmptno < dec->numcomps; ++cmptno, ++cmpt, ++compinfo) {
+@@ -692,7 +692,7 @@ static int jpc_dec_tileinit(jpc_dec_t *d
+ tile->realmode = 1;
+ }
+ tcomp->numrlvls = ccp->numrlvls;
+- if (!(tcomp->rlvls = jas_malloc(tcomp->numrlvls *
++ if (!(tcomp->rlvls = jas_alloc2(tcomp->numrlvls,
+ sizeof(jpc_dec_rlvl_t)))) {
+ return -1;
+ }
+@@ -764,7 +764,7 @@ rlvl->bands = 0;
+ rlvl->cbgheightexpn);
+
+ rlvl->numbands = (!rlvlno) ? 1 : 3;
+- if (!(rlvl->bands = jas_malloc(rlvl->numbands *
++ if (!(rlvl->bands = jas_alloc2(rlvl->numbands,
+ sizeof(jpc_dec_band_t)))) {
+ return -1;
+ }
+@@ -797,7 +797,7 @@ rlvl->bands = 0;
+
+ assert(rlvl->numprcs);
+
+- if (!(band->prcs = jas_malloc(rlvl->numprcs * sizeof(jpc_dec_prc_t)))) {
++ if (!(band->prcs = jas_alloc2(rlvl->numprcs, sizeof(jpc_dec_prc_t)))) {
+ return -1;
+ }
+
+@@ -834,7 +834,7 @@ rlvl->bands = 0;
+ if (!(prc->numimsbstagtree = jpc_tagtree_create(prc->numhcblks, prc->numvcblks))) {
+ return -1;
+ }
+- if (!(prc->cblks = jas_malloc(prc->numcblks * sizeof(jpc_dec_cblk_t)))) {
++ if (!(prc->cblks = jas_alloc2(prc->numcblks, sizeof(jpc_dec_cblk_t)))) {
+ return -1;
+ }
+
+@@ -1181,7 +1181,7 @@ static int jpc_dec_process_siz(jpc_dec_t
+ return -1;
+ }
+
+- if (!(dec->cmpts = jas_malloc(dec->numcomps * sizeof(jpc_dec_cmpt_t)))) {
++ if (!(dec->cmpts = jas_alloc2(dec->numcomps, sizeof(jpc_dec_cmpt_t)))) {
+ return -1;
+ }
+
+@@ -1204,7 +1204,7 @@ static int jpc_dec_process_siz(jpc_dec_t
+ dec->numhtiles = JPC_CEILDIV(dec->xend - dec->tilexoff, dec->tilewidth);
+ dec->numvtiles = JPC_CEILDIV(dec->yend - dec->tileyoff, dec->tileheight);
+ dec->numtiles = dec->numhtiles * dec->numvtiles;
+- if (!(dec->tiles = jas_malloc(dec->numtiles * sizeof(jpc_dec_tile_t)))) {
++ if (!(dec->tiles = jas_calloc(dec->numtiles, sizeof(jpc_dec_tile_t)))) {
+ return -1;
+ }
+
+@@ -1228,7 +1228,7 @@ static int jpc_dec_process_siz(jpc_dec_t
+ tile->pkthdrstreampos = 0;
+ tile->pptstab = 0;
+ tile->cp = 0;
+- if (!(tile->tcomps = jas_malloc(dec->numcomps *
++ if (!(tile->tcomps = jas_calloc(dec->numcomps,
+ sizeof(jpc_dec_tcomp_t)))) {
+ return -1;
+ }
+@@ -1489,7 +1489,7 @@ static jpc_dec_cp_t *jpc_dec_cp_create(u
+ cp->numlyrs = 0;
+ cp->mctid = 0;
+ cp->csty = 0;
+- if (!(cp->ccps = jas_malloc(cp->numcomps * sizeof(jpc_dec_ccp_t)))) {
++ if (!(cp->ccps = jas_alloc2(cp->numcomps, sizeof(jpc_dec_ccp_t)))) {
+ return 0;
+ }
+ if (!(cp->pchglist = jpc_pchglist_create())) {
+@@ -2048,7 +2048,7 @@ jpc_streamlist_t *jpc_streamlist_create(
+ }
+ streamlist->numstreams = 0;
+ streamlist->maxstreams = 100;
+- if (!(streamlist->streams = jas_malloc(streamlist->maxstreams *
++ if (!(streamlist->streams = jas_alloc2(streamlist->maxstreams,
+ sizeof(jas_stream_t *)))) {
+ jas_free(streamlist);
+ return 0;
+@@ -2068,8 +2068,8 @@ int jpc_streamlist_insert(jpc_streamlist
+ /* Grow the array of streams if necessary. */
+ if (streamlist->numstreams >= streamlist->maxstreams) {
+ newmaxstreams = streamlist->maxstreams + 1024;
+- if (!(newstreams = jas_realloc(streamlist->streams,
+- (newmaxstreams + 1024) * sizeof(jas_stream_t *)))) {
++ if (!(newstreams = jas_realloc2(streamlist->streams,
++ (newmaxstreams + 1024), sizeof(jas_stream_t *)))) {
+ return -1;
+ }
+ for (i = streamlist->numstreams; i < streamlist->maxstreams; ++i) {
+@@ -2155,8 +2155,7 @@ int jpc_ppxstab_grow(jpc_ppxstab_t *tab,
+ {
+ jpc_ppxstabent_t **newents;
+ if (tab->maxents < maxents) {
+- newents = (tab->ents) ? jas_realloc(tab->ents, maxents *
+- sizeof(jpc_ppxstabent_t *)) : jas_malloc(maxents * sizeof(jpc_ppxstabent_t *));
++ newents = jas_realloc2(tab->ents, maxents, sizeof(jpc_ppxstabent_t *));
+ if (!newents) {
+ return -1;
+ }
+diff -pruN jasper-1.900.1.orig/src/libjasper/jpc/jpc_enc.c jasper-1.900.1/src/libjasper/jpc/jpc_enc.c
+--- jasper-1.900.1.orig/src/libjasper/jpc/jpc_enc.c 2007-01-19 22:43:07.000000000 +0100
++++ jasper-1.900.1/src/libjasper/jpc/jpc_enc.c 2009-10-22 10:27:45.000000000 +0200
+@@ -403,7 +403,7 @@ static jpc_enc_cp_t *cp_create(char *opt
+ vsteplcm *= jas_image_cmptvstep(image, cmptno);
+ }
+
+- if (!(cp->ccps = jas_malloc(cp->numcmpts * sizeof(jpc_enc_ccp_t)))) {
++ if (!(cp->ccps = jas_alloc2(cp->numcmpts, sizeof(jpc_enc_ccp_t)))) {
+ goto error;
+ }
+ for (cmptno = 0, ccp = cp->ccps; cmptno < JAS_CAST(int, cp->numcmpts); ++cmptno,
+@@ -656,7 +656,7 @@ static jpc_enc_cp_t *cp_create(char *opt
+
+ if (ilyrrates && numilyrrates > 0) {
+ tcp->numlyrs = numilyrrates + 1;
+- if (!(tcp->ilyrrates = jas_malloc((tcp->numlyrs - 1) *
++ if (!(tcp->ilyrrates = jas_alloc2((tcp->numlyrs - 1),
+ sizeof(jpc_fix_t)))) {
+ goto error;
+ }
+@@ -940,7 +940,7 @@ startoff = jas_stream_getrwcount(enc->ou
+ siz->tilewidth = cp->tilewidth;
+ siz->tileheight = cp->tileheight;
+ siz->numcomps = cp->numcmpts;
+- siz->comps = jas_malloc(siz->numcomps * sizeof(jpc_sizcomp_t));
++ siz->comps = jas_alloc2(siz->numcomps, sizeof(jpc_sizcomp_t));
+ assert(siz->comps);
+ for (i = 0; i < JAS_CAST(int, cp->numcmpts); ++i) {
+ siz->comps[i].prec = cp->ccps[i].prec;
+@@ -977,7 +977,7 @@ startoff = jas_stream_getrwcount(enc->ou
+ return -1;
+ }
+ crg = &enc->mrk->parms.crg;
+- crg->comps = jas_malloc(crg->numcomps * sizeof(jpc_crgcomp_t));
++ crg->comps = jas_alloc2(crg->numcomps, sizeof(jpc_crgcomp_t));
+ if (jpc_putms(enc->out, enc->cstate, enc->mrk)) {
+ jas_eprintf("cannot write CRG marker\n");
+ return -1;
+@@ -1955,7 +1955,7 @@ jpc_enc_tile_t *jpc_enc_tile_create(jpc_
+ tile->mctid = cp->tcp.mctid;
+
+ tile->numlyrs = cp->tcp.numlyrs;
+- if (!(tile->lyrsizes = jas_malloc(tile->numlyrs *
++ if (!(tile->lyrsizes = jas_alloc2(tile->numlyrs,
+ sizeof(uint_fast32_t)))) {
+ goto error;
+ }
+@@ -1964,7 +1964,7 @@ jpc_enc_tile_t *jpc_enc_tile_create(jpc_
+ }
+
+ /* Allocate an array for the per-tile-component information. */
+- if (!(tile->tcmpts = jas_malloc(cp->numcmpts * sizeof(jpc_enc_tcmpt_t)))) {
++ if (!(tile->tcmpts = jas_alloc2(cp->numcmpts, sizeof(jpc_enc_tcmpt_t)))) {
+ goto error;
+ }
+ /* Initialize a few members critical for error recovery. */
+@@ -2110,7 +2110,7 @@ static jpc_enc_tcmpt_t *tcmpt_create(jpc
+ jas_seq2d_ystart(tcmpt->data), jas_seq2d_xend(tcmpt->data),
+ jas_seq2d_yend(tcmpt->data), bandinfos);
+
+- if (!(tcmpt->rlvls = jas_malloc(tcmpt->numrlvls * sizeof(jpc_enc_rlvl_t)))) {
++ if (!(tcmpt->rlvls = jas_alloc2(tcmpt->numrlvls, sizeof(jpc_enc_rlvl_t)))) {
+ goto error;
+ }
+ for (rlvlno = 0, rlvl = tcmpt->rlvls; rlvlno < tcmpt->numrlvls;
+@@ -2213,7 +2213,7 @@ static jpc_enc_rlvl_t *rlvl_create(jpc_e
+ rlvl->numvprcs = JPC_FLOORDIVPOW2(brprcbry - tlprctly, rlvl->prcheightexpn);
+ rlvl->numprcs = rlvl->numhprcs * rlvl->numvprcs;
+
+- if (!(rlvl->bands = jas_malloc(rlvl->numbands * sizeof(jpc_enc_band_t)))) {
++ if (!(rlvl->bands = jas_alloc2(rlvl->numbands, sizeof(jpc_enc_band_t)))) {
+ goto error;
+ }
+ for (bandno = 0, band = rlvl->bands; bandno < rlvl->numbands;
+@@ -2290,7 +2290,7 @@ if (bandinfo->xstart != bandinfo->xend &
+ band->synweight = bandinfo->synenergywt;
+
+ if (band->data) {
+- if (!(band->prcs = jas_malloc(rlvl->numprcs * sizeof(jpc_enc_prc_t)))) {
++ if (!(band->prcs = jas_alloc2(rlvl->numprcs, sizeof(jpc_enc_prc_t)))) {
+ goto error;
+ }
+ for (prcno = 0, prc = band->prcs; prcno < rlvl->numprcs; ++prcno,
+@@ -2422,7 +2422,7 @@ if (!rlvlno) {
+ goto error;
+ }
+
+- if (!(prc->cblks = jas_malloc(prc->numcblks * sizeof(jpc_enc_cblk_t)))) {
++ if (!(prc->cblks = jas_alloc2(prc->numcblks, sizeof(jpc_enc_cblk_t)))) {
+ goto error;
+ }
+ for (cblkno = 0, cblk = prc->cblks; cblkno < prc->numcblks;
+diff -pruN jasper-1.900.1.orig/src/libjasper/jpc/jpc_mqdec.c jasper-1.900.1/src/libjasper/jpc/jpc_mqdec.c
+--- jasper-1.900.1.orig/src/libjasper/jpc/jpc_mqdec.c 2007-01-19 22:43:07.000000000 +0100
++++ jasper-1.900.1/src/libjasper/jpc/jpc_mqdec.c 2009-10-22 10:27:45.000000000 +0200
+@@ -118,7 +118,7 @@ jpc_mqdec_t *jpc_mqdec_create(int maxctx
+ mqdec->in = in;
+ mqdec->maxctxs = maxctxs;
+ /* Allocate memory for the per-context state information. */
+- if (!(mqdec->ctxs = jas_malloc(mqdec->maxctxs * sizeof(jpc_mqstate_t *)))) {
++ if (!(mqdec->ctxs = jas_alloc2(mqdec->maxctxs, sizeof(jpc_mqstate_t *)))) {
+ goto error;
+ }
+ /* Set the current context to the first context. */
+diff -pruN jasper-1.900.1.orig/src/libjasper/jpc/jpc_mqenc.c jasper-1.900.1/src/libjasper/jpc/jpc_mqenc.c
+--- jasper-1.900.1.orig/src/libjasper/jpc/jpc_mqenc.c 2007-01-19 22:43:07.000000000 +0100
++++ jasper-1.900.1/src/libjasper/jpc/jpc_mqenc.c 2009-10-22 10:27:45.000000000 +0200
+@@ -197,7 +197,7 @@ jpc_mqenc_t *jpc_mqenc_create(int maxctx
+ mqenc->maxctxs = maxctxs;
+
+ /* Allocate memory for the per-context state information. */
+- if (!(mqenc->ctxs = jas_malloc(mqenc->maxctxs * sizeof(jpc_mqstate_t *)))) {
++ if (!(mqenc->ctxs = jas_alloc2(mqenc->maxctxs, sizeof(jpc_mqstate_t *)))) {
+ goto error;
+ }
+
+diff -pruN jasper-1.900.1.orig/src/libjasper/jpc/jpc_qmfb.c jasper-1.900.1/src/libjasper/jpc/jpc_qmfb.c
+--- jasper-1.900.1.orig/src/libjasper/jpc/jpc_qmfb.c 2007-01-19 22:43:07.000000000 +0100
++++ jasper-1.900.1/src/libjasper/jpc/jpc_qmfb.c 2009-10-22 10:27:45.000000000 +0200
+@@ -321,7 +321,7 @@ void jpc_qmfb_split_row(jpc_fix_t *a, in
+ #if !defined(HAVE_VLA)
+ /* Get a buffer. */
+ if (bufsize > QMFB_SPLITBUFSIZE) {
+- if (!(buf = jas_malloc(bufsize * sizeof(jpc_fix_t)))) {
++ if (!(buf = jas_alloc2(bufsize, sizeof(jpc_fix_t)))) {
+ /* We have no choice but to commit suicide in this case. */
+ abort();
+ }
+@@ -389,7 +389,7 @@ void jpc_qmfb_split_col(jpc_fix_t *a, in
+ #if !defined(HAVE_VLA)
+ /* Get a buffer. */
+ if (bufsize > QMFB_SPLITBUFSIZE) {
+- if (!(buf = jas_malloc(bufsize * sizeof(jpc_fix_t)))) {
++ if (!(buf = jas_alloc2(bufsize, sizeof(jpc_fix_t)))) {
+ /* We have no choice but to commit suicide in this case. */
+ abort();
+ }
+@@ -460,7 +460,7 @@ void jpc_qmfb_split_colgrp(jpc_fix_t *a,
+ #if !defined(HAVE_VLA)
+ /* Get a buffer. */
+ if (bufsize > QMFB_SPLITBUFSIZE) {
+- if (!(buf = jas_malloc(bufsize * sizeof(jpc_fix_t)))) {
++ if (!(buf = jas_alloc2(bufsize, sizeof(jpc_fix_t)))) {
+ /* We have no choice but to commit suicide in this case. */
+ abort();
+ }
+@@ -549,7 +549,7 @@ void jpc_qmfb_split_colres(jpc_fix_t *a,
+ #if !defined(HAVE_VLA)
+ /* Get a buffer. */
+ if (bufsize > QMFB_SPLITBUFSIZE) {
+- if (!(buf = jas_malloc(bufsize * sizeof(jpc_fix_t)))) {
++ if (!(buf = jas_alloc2(bufsize, sizeof(jpc_fix_t)))) {
+ /* We have no choice but to commit suicide in this case. */
+ abort();
+ }
+@@ -633,7 +633,7 @@ void jpc_qmfb_join_row(jpc_fix_t *a, int
+ #if !defined(HAVE_VLA)
+ /* Allocate memory for the join buffer from the heap. */
+ if (bufsize > QMFB_JOINBUFSIZE) {
+- if (!(buf = jas_malloc(bufsize * sizeof(jpc_fix_t)))) {
++ if (!(buf = jas_alloc2(bufsize, sizeof(jpc_fix_t)))) {
+ /* We have no choice but to commit suicide. */
+ abort();
+ }
+@@ -698,7 +698,7 @@ void jpc_qmfb_join_col(jpc_fix_t *a, int
+ #if !defined(HAVE_VLA)
+ /* Allocate memory for the join buffer from the heap. */
+ if (bufsize > QMFB_JOINBUFSIZE) {
+- if (!(buf = jas_malloc(bufsize * sizeof(jpc_fix_t)))) {
++ if (!(buf = jas_alloc2(bufsize, sizeof(jpc_fix_t)))) {
+ /* We have no choice but to commit suicide. */
+ abort();
+ }
+@@ -766,7 +766,7 @@ void jpc_qmfb_join_colgrp(jpc_fix_t *a,
+ #if !defined(HAVE_VLA)
+ /* Allocate memory for the join buffer from the heap. */
+ if (bufsize > QMFB_JOINBUFSIZE) {
+- if (!(buf = jas_malloc(bufsize * JPC_QMFB_COLGRPSIZE * sizeof(jpc_fix_t)))) {
++ if (!(buf = jas_alloc2(bufsize, JPC_QMFB_COLGRPSIZE * sizeof(jpc_fix_t)))) {
+ /* We have no choice but to commit suicide. */
+ abort();
+ }
+@@ -852,7 +852,7 @@ void jpc_qmfb_join_colres(jpc_fix_t *a,
+ #if !defined(HAVE_VLA)
+ /* Allocate memory for the join buffer from the heap. */
+ if (bufsize > QMFB_JOINBUFSIZE) {
+- if (!(buf = jas_malloc(bufsize * numcols * sizeof(jpc_fix_t)))) {
++ if (!(buf = jas_alloc3(bufsize, numcols, sizeof(jpc_fix_t)))) {
+ /* We have no choice but to commit suicide. */
+ abort();
+ }
+diff -pruN jasper-1.900.1.orig/src/libjasper/jpc/jpc_t1enc.c jasper-1.900.1/src/libjasper/jpc/jpc_t1enc.c
+--- jasper-1.900.1.orig/src/libjasper/jpc/jpc_t1enc.c 2007-01-19 22:43:07.000000000 +0100
++++ jasper-1.900.1/src/libjasper/jpc/jpc_t1enc.c 2009-10-22 10:27:45.000000000 +0200
+@@ -219,7 +219,7 @@ int jpc_enc_enccblk(jpc_enc_t *enc, jas_
+
+ cblk->numpasses = (cblk->numbps > 0) ? (3 * cblk->numbps - 2) : 0;
+ if (cblk->numpasses > 0) {
+- cblk->passes = jas_malloc(cblk->numpasses * sizeof(jpc_enc_pass_t));
++ cblk->passes = jas_alloc2(cblk->numpasses, sizeof(jpc_enc_pass_t));
+ assert(cblk->passes);
+ } else {
+ cblk->passes = 0;
+diff -pruN jasper-1.900.1.orig/src/libjasper/jpc/jpc_t2cod.c jasper-1.900.1/src/libjasper/jpc/jpc_t2cod.c
+--- jasper-1.900.1.orig/src/libjasper/jpc/jpc_t2cod.c 2007-01-19 22:43:07.000000000 +0100
++++ jasper-1.900.1/src/libjasper/jpc/jpc_t2cod.c 2009-10-22 10:27:45.000000000 +0200
+@@ -573,7 +573,7 @@ int jpc_pchglist_insert(jpc_pchglist_t *
+ }
+ if (pchglist->numpchgs >= pchglist->maxpchgs) {
+ newmaxpchgs = pchglist->maxpchgs + 128;
+- if (!(newpchgs = jas_realloc(pchglist->pchgs, newmaxpchgs * sizeof(jpc_pchg_t *)))) {
++ if (!(newpchgs = jas_realloc2(pchglist->pchgs, newmaxpchgs, sizeof(jpc_pchg_t *)))) {
+ return -1;
+ }
+ pchglist->maxpchgs = newmaxpchgs;
+diff -pruN jasper-1.900.1.orig/src/libjasper/jpc/jpc_t2dec.c jasper-1.900.1/src/libjasper/jpc/jpc_t2dec.c
+--- jasper-1.900.1.orig/src/libjasper/jpc/jpc_t2dec.c 2007-01-19 22:43:07.000000000 +0100
++++ jasper-1.900.1/src/libjasper/jpc/jpc_t2dec.c 2009-10-22 10:27:45.000000000 +0200
+@@ -478,7 +478,7 @@ jpc_pi_t *jpc_dec_pi_create(jpc_dec_t *d
+ return 0;
+ }
+ pi->numcomps = dec->numcomps;
+- if (!(pi->picomps = jas_malloc(pi->numcomps * sizeof(jpc_picomp_t)))) {
++ if (!(pi->picomps = jas_alloc2(pi->numcomps, sizeof(jpc_picomp_t)))) {
+ jpc_pi_destroy(pi);
+ return 0;
+ }
+@@ -490,7 +490,7 @@ jpc_pi_t *jpc_dec_pi_create(jpc_dec_t *d
+ for (compno = 0, tcomp = tile->tcomps, picomp = pi->picomps;
+ compno < pi->numcomps; ++compno, ++tcomp, ++picomp) {
+ picomp->numrlvls = tcomp->numrlvls;
+- if (!(picomp->pirlvls = jas_malloc(picomp->numrlvls *
++ if (!(picomp->pirlvls = jas_alloc2(picomp->numrlvls,
+ sizeof(jpc_pirlvl_t)))) {
+ jpc_pi_destroy(pi);
+ return 0;
+@@ -503,7 +503,7 @@ jpc_pi_t *jpc_dec_pi_create(jpc_dec_t *d
+ rlvlno < picomp->numrlvls; ++rlvlno, ++pirlvl, ++rlvl) {
+ /* XXX sizeof(long) should be sizeof different type */
+ pirlvl->numprcs = rlvl->numprcs;
+- if (!(pirlvl->prclyrnos = jas_malloc(pirlvl->numprcs *
++ if (!(pirlvl->prclyrnos = jas_alloc2(pirlvl->numprcs,
+ sizeof(long)))) {
+ jpc_pi_destroy(pi);
+ return 0;
+diff -pruN jasper-1.900.1.orig/src/libjasper/jpc/jpc_t2enc.c jasper-1.900.1/src/libjasper/jpc/jpc_t2enc.c
+--- jasper-1.900.1.orig/src/libjasper/jpc/jpc_t2enc.c 2007-01-19 22:43:07.000000000 +0100
++++ jasper-1.900.1/src/libjasper/jpc/jpc_t2enc.c 2009-10-22 10:27:45.000000000 +0200
+@@ -565,7 +565,7 @@ jpc_pi_t *jpc_enc_pi_create(jpc_enc_cp_t
+ }
+ pi->pktno = -1;
+ pi->numcomps = cp->numcmpts;
+- if (!(pi->picomps = jas_malloc(pi->numcomps * sizeof(jpc_picomp_t)))) {
++ if (!(pi->picomps = jas_alloc2(pi->numcomps, sizeof(jpc_picomp_t)))) {
+ jpc_pi_destroy(pi);
+ return 0;
+ }
+@@ -577,7 +577,7 @@ jpc_pi_t *jpc_enc_pi_create(jpc_enc_cp_t
+ for (compno = 0, tcomp = tile->tcmpts, picomp = pi->picomps;
+ compno < pi->numcomps; ++compno, ++tcomp, ++picomp) {
+ picomp->numrlvls = tcomp->numrlvls;
+- if (!(picomp->pirlvls = jas_malloc(picomp->numrlvls *
++ if (!(picomp->pirlvls = jas_alloc2(picomp->numrlvls,
+ sizeof(jpc_pirlvl_t)))) {
+ jpc_pi_destroy(pi);
+ return 0;
+@@ -591,7 +591,7 @@ jpc_pi_t *jpc_enc_pi_create(jpc_enc_cp_t
+ /* XXX sizeof(long) should be sizeof different type */
+ pirlvl->numprcs = rlvl->numprcs;
+ if (rlvl->numprcs) {
+- if (!(pirlvl->prclyrnos = jas_malloc(pirlvl->numprcs *
++ if (!(pirlvl->prclyrnos = jas_alloc2(pirlvl->numprcs,
+ sizeof(long)))) {
+ jpc_pi_destroy(pi);
+ return 0;
+diff -pruN jasper-1.900.1.orig/src/libjasper/jpc/jpc_tagtree.c jasper-1.900.1/src/libjasper/jpc/jpc_tagtree.c
+--- jasper-1.900.1.orig/src/libjasper/jpc/jpc_tagtree.c 2007-01-19 22:43:07.000000000 +0100
++++ jasper-1.900.1/src/libjasper/jpc/jpc_tagtree.c 2009-10-22 10:27:45.000000000 +0200
+@@ -125,7 +125,7 @@ jpc_tagtree_t *jpc_tagtree_create(int nu
+ ++numlvls;
+ } while (n > 1);
+
+- if (!(tree->nodes_ = jas_malloc(tree->numnodes_ * sizeof(jpc_tagtreenode_t)))) {
++ if (!(tree->nodes_ = jas_alloc2(tree->numnodes_, sizeof(jpc_tagtreenode_t)))) {
+ return 0;
+ }
+
+diff -pruN jasper-1.900.1.orig/src/libjasper/jpc/jpc_util.c jasper-1.900.1/src/libjasper/jpc/jpc_util.c
+--- jasper-1.900.1.orig/src/libjasper/jpc/jpc_util.c 2007-01-19 22:43:07.000000000 +0100
++++ jasper-1.900.1/src/libjasper/jpc/jpc_util.c 2009-10-22 10:27:45.000000000 +0200
+@@ -109,7 +109,7 @@ int jpc_atoaf(char *s, int *numvalues, d
+ }
+
+ if (n) {
+- if (!(vs = jas_malloc(n * sizeof(double)))) {
++ if (!(vs = jas_alloc2(n, sizeof(double)))) {
+ return -1;
+ }
+
+diff -pruN jasper-1.900.1.orig/src/libjasper/mif/mif_cod.c jasper-1.900.1/src/libjasper/mif/mif_cod.c
+--- jasper-1.900.1.orig/src/libjasper/mif/mif_cod.c 2007-01-19 22:43:05.000000000 +0100
++++ jasper-1.900.1/src/libjasper/mif/mif_cod.c 2009-10-22 10:27:45.000000000 +0200
+@@ -438,8 +438,7 @@ static int mif_hdr_growcmpts(mif_hdr_t *
+ int cmptno;
+ mif_cmpt_t **newcmpts;
+ assert(maxcmpts >= hdr->numcmpts);
+- newcmpts = (!hdr->cmpts) ? jas_malloc(maxcmpts * sizeof(mif_cmpt_t *)) :
+- jas_realloc(hdr->cmpts, maxcmpts * sizeof(mif_cmpt_t *));
++ newcmpts = jas_realloc2(hdr->cmpts, maxcmpts, sizeof(mif_cmpt_t *));
+ if (!newcmpts) {
+ return -1;
+ }
diff --git a/extra/jasper/jasper-1.900.1-CVE-2008-3522.patch b/extra/jasper/jasper-1.900.1-CVE-2008-3522.patch
new file mode 100644
index 000000000..4bf2e9b52
--- /dev/null
+++ b/extra/jasper/jasper-1.900.1-CVE-2008-3522.patch
@@ -0,0 +1,14 @@
+https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2008-3522
+
+diff -pruN jasper-1.900.1.orig/src/libjasper/base/jas_stream.c jasper-1.900.1/src/libjasper/base/jas_stream.c
+--- jasper-1.900.1.orig/src/libjasper/base/jas_stream.c 2009-10-22 10:27:45.000000000 +0200
++++ jasper-1.900.1/src/libjasper/base/jas_stream.c 2009-10-22 10:35:53.000000000 +0200
+@@ -553,7 +553,7 @@ int jas_stream_printf(jas_stream_t *stre
+ int ret;
+
+ va_start(ap, fmt);
+- ret = vsprintf(buf, fmt, ap);
++ ret = vsnprintf(buf, sizeof buf, fmt, ap);
+ jas_stream_puts(stream, buf);
+ va_end(ap);
+ return ret;
diff --git a/extra/jasper/jpc_dec.c.patch b/extra/jasper/jpc_dec.c.patch
new file mode 100644
index 000000000..ae1cd0617
--- /dev/null
+++ b/extra/jasper/jpc_dec.c.patch
@@ -0,0 +1,18 @@
+diff -urN jasper-1.900.1/src/libjasper/jpc/jpc_dec.c jasper-1.900.1-fix/src/libjasper/jpc/jpc_dec.c
+--- jasper-1.900.1/src/libjasper/jpc/jpc_dec.c 2007-01-19 14:43:07.000000000 -0700
++++ jasper-1.900.1-fix/src/libjasper/jpc/jpc_dec.c 2008-03-06 16:51:12.000000000 -0700
+@@ -1069,12 +1069,12 @@
+ /* Apply an inverse intercomponent transform if necessary. */
+ switch (tile->cp->mctid) {
+ case JPC_MCT_RCT:
+- assert(dec->numcomps == 3);
++ assert(dec->numcomps >= 3);
+ jpc_irct(tile->tcomps[0].data, tile->tcomps[1].data,
+ tile->tcomps[2].data);
+ break;
+ case JPC_MCT_ICT:
+- assert(dec->numcomps == 3);
++ assert(dec->numcomps >= 3);
+ jpc_iict(tile->tcomps[0].data, tile->tcomps[1].data,
+ tile->tcomps[2].data);
+ break;
diff --git a/extra/jasper/patch-libjasper-stepsizes-overflow.diff b/extra/jasper/patch-libjasper-stepsizes-overflow.diff
new file mode 100644
index 000000000..097559f68
--- /dev/null
+++ b/extra/jasper/patch-libjasper-stepsizes-overflow.diff
@@ -0,0 +1,14 @@
+--- jasper-1.900.1.orig/src/libjasper/jpc/jpc_cs.c 2007-01-19 22:43:07.000000000 +0100
++++ jasper-1.900.1/src/libjasper/jpc/jpc_cs.c 2007-04-06 01:29:02.000000000 +0200
+@@ -982,7 +982,10 @@ static int jpc_qcx_getcompparms(jpc_qcxc
+ compparms->numstepsizes = (len - n) / 2;
+ break;
+ }
+- if (compparms->numstepsizes > 0) {
++ if (compparms->numstepsizes > 3 * JPC_MAXRLVLS + 1) {
++ jpc_qcx_destroycompparms(compparms);
++ return -1;
++ } else if (compparms->numstepsizes > 0) {
+ compparms->stepsizes = jas_malloc(compparms->numstepsizes *
+ sizeof(uint_fast16_t));
+ assert(compparms->stepsizes);
diff --git a/extra/java-access-bridge/PKGBUILD b/extra/java-access-bridge/PKGBUILD
new file mode 100644
index 000000000..4c1bc6460
--- /dev/null
+++ b/extra/java-access-bridge/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: PKGBUILD 49735 2009-08-15 14:19:33Z jgc $
+# Maitnainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=java-access-bridge
+pkgver=1.26.2
+pkgrel=1
+pkgdesc="Java bindings for the GNOME accessibility framework"
+arch=(i686 x86_64)
+license=('LGPL')
+url="http://www.gnome.org"
+depends=('java-runtime' 'gtk2>=2.16.5' 'at-spi>=1.26.0' 'libbonobo>=2.24.1')
+makedepends=('intltool' 'pkgconfig' 'openjdk6' 'xorg-utils')
+options=('!libtool')
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/1.26/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('5f08bba19531954cec82df1bcdb89df67ee890a4')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-static || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/jhead/LICENSE b/extra/jhead/LICENSE
new file mode 100644
index 000000000..63ad89ebc
--- /dev/null
+++ b/extra/jhead/LICENSE
@@ -0,0 +1,12 @@
+License:
+
+ Jhead is public domain software - that is, you can do whatever you want
+ with it, and include it software that is licensesed under the GNU or the
+ BSD license, or whatever other licence you chose, including proprietary
+ closed source licenses. Although not part of the liscense, I do expect
+ common courtesy, please.
+
+ If you do integrate the code into some software of yours, I'd appreciate
+ knowing about it though.
+
+Matthias Wandel
diff --git a/extra/jhead/PKGBUILD b/extra/jhead/PKGBUILD
new file mode 100644
index 000000000..bc442c8a8
--- /dev/null
+++ b/extra/jhead/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 67926 2010-02-09 19:58:32Z giovanni $
+# Maintainer: François Charette <francois ατ archlinux δοτ org>
+# Contributor: Giovanni Scafora <giovanni@archlinux.org>
+
+pkgname=jhead
+pkgver=2.90
+pkgrel=1
+pkgdesc="EXIF JPEG info parser and thumbnail remover"
+arch=(i686 x86_64)
+url="http://www.sentex.net/~mwandel/jhead/"
+arch=('i686' 'x86_64')
+license=('custom')
+depends=('glibc')
+optdepends=('libjpeg: to up-right images according to rotation tag')
+source=(http://www.sentex.net/~mwandel/${pkgname}/${pkgname}-${pkgver}.tar.gz
+ LICENSE)
+md5sums=('661effa9420bb92cb99ced697c5a177f'
+ '1f0db611d2642a981719f45252762a45')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make || return 1
+ install -D -m755 jhead "${pkgdir}/usr/bin/jhead" || return 1
+ install -D -m644 jhead.1 "${pkgdir}/usr/share/man/man1/jhead.1" || return 1
+ install -D -m644 ${srcdir}/LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" || return 1
+}
diff --git a/extra/json-glib/PKGBUILD b/extra/json-glib/PKGBUILD
new file mode 100644
index 000000000..5077ab4af
--- /dev/null
+++ b/extra/json-glib/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id: PKGBUILD 105758 2011-01-11 14:11:29Z ibiru $
+# Maintainer: Ionut Biru <ibiru@archlinux.org>
+
+pkgname=json-glib
+pkgver=0.12.2
+pkgrel=1
+pkgdesc="JSON library built on GLib"
+arch=('i686' 'x86_64')
+url="http://live.gnome.org/JsonGlib"
+license=('GPL')
+depends=('glib2>=2.26.0')
+makedepends=('gobject-introspection')
+source=(http://ftp.gnome.org/pub/GNOME/sources/${pkgname}/0.12/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('89fa9b870dfe2d8b7b00210be76cdbb2d46a8d2cc77ca7cbe5d081bdf8cad780')
+options=('!libtool')
+
+build(){
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr
+ make
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/k3b/PKGBUILD b/extra/k3b/PKGBUILD
new file mode 100644
index 000000000..1b94ed8cd
--- /dev/null
+++ b/extra/k3b/PKGBUILD
@@ -0,0 +1,39 @@
+# $Id: PKGBUILD 106655 2011-01-17 20:23:05Z tpowa $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+# Contributor: jlvsimoes
+# Contributor: damir <damir@archlinux.org>
+
+pkgname=k3b
+pkgver=2.0.2
+pkgrel=1
+depends=('kdebase-runtime' 'kdemultimedia-kioslave' 'libsamplerate' 'libmad'
+ 'ffmpeg' 'taglib' 'libmpcdec' 'libdvdread' 'cdrdao' 'cdrkit'
+ 'shared-mime-info' 'libxft')
+makedepends=('cmake' 'pkgconfig' 'automoc4' )
+pkgdesc="Feature-rich and easy to handle CD burning application"
+url="http://k3b.sourceforge.net/"
+arch=("i686" "x86_64")
+license=('GPL')
+install="${pkgname}.install"
+optdepends=('dvd+rw-tools: for dvd burning support'
+ 'vcdimager: for vcd burning support'
+ 'transcode: for advanced mpeg conversion support'
+ 'emovix: for bootable multimedia cd/dvd support')
+options=('!libtool')
+source=("http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.bz2")
+
+build() {
+ cd "${srcdir}"
+ mkdir build
+ cd build
+ cmake ../${pkgname}-${pkgver} \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_BUILD_TYPE=Release
+ make
+}
+
+package() {
+ cd ${srcdir}/build
+ make DESTDIR=${pkgdir} install
+}
+md5sums=('c86113af31a2032e57fd2f302b5f637a')
diff --git a/extra/k3b/fix-crash-with-qt-4.7.0.patch b/extra/k3b/fix-crash-with-qt-4.7.0.patch
new file mode 100644
index 000000000..a99b5c639
--- /dev/null
+++ b/extra/k3b/fix-crash-with-qt-4.7.0.patch
@@ -0,0 +1,37 @@
+Index: src/option/k3bpluginoptiontab.cpp
+===================================================================
+--- src/option/k3bpluginoptiontab.cpp (revision 1168967)
++++ src/option/k3bpluginoptiontab.cpp (working copy)
+@@ -43,12 +43,28 @@
+ layout->addWidget( label );
+ layout->addWidget( pluginSelector );
+
++ // find all categories
++ QHash<QString, QString> categoryNames;
++
+ foreach( K3b::Plugin* plugin, k3bcore->pluginManager()->plugins() ) {
+- kDebug() << "Adding plugin" << plugin->pluginInfo().name();
+- pluginSelector->addPlugins( QList<KPluginInfo>() << plugin->pluginInfo(),
++ categoryNames[ plugin->category() ] = plugin->categoryName();
++ }
++
++ // add all plugins in each category
++ foreach( const QString &category, categoryNames.keys() ) {
++ QList<KPluginInfo> plugins;
++
++ foreach( K3b::Plugin* plugin, k3bcore->pluginManager()->plugins() ) {
++ if ( plugin->category() == category ) {
++ plugins << plugin->pluginInfo();
++ kDebug() << "Adding plugin" << plugin->pluginInfo().name();
++ }
++ }
++ pluginSelector->addPlugins( plugins,
+ KPluginSelector::ReadConfigFile,
+- plugin->categoryName(),
+- plugin->category() );
++ categoryNames[ category ],
++ category
++ );
+ }
+ }
+
diff --git a/extra/k3b/k3b.install b/extra/k3b/k3b.install
new file mode 100644
index 000000000..a60d358ce
--- /dev/null
+++ b/extra/k3b/k3b.install
@@ -0,0 +1,12 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+ update-mime-database usr/share/mime &> /dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/extra/k9copy/PKGBUILD b/extra/k9copy/PKGBUILD
new file mode 100644
index 000000000..4c53891b7
--- /dev/null
+++ b/extra/k9copy/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 87453 2010-08-13 20:02:16Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Stefano Zamprogno <stefano.zamprogno@gmail.com>
+
+pkgname=k9copy
+pkgver=2.3.6
+pkgrel=1
+pkgdesc="A small utility which allows the copy of DVD under Linux"
+arch=('i686' 'x86_64')
+url="http://k9copy.sourceforge.net"
+license=('GPL')
+depends=('kdebase-runtime' 'libmpeg2' 'xine-lib' 'dvd+rw-tools' 'dvdauthor')
+makedepends=('automoc4' 'cmake')
+install=k9copy.install
+source=(http://downloads.sourceforge.net/project/${pkgname}/k9copy-kde4/${pkgver}/${pkgname}-${pkgver}-Source.tar.gz)
+md5sums=('c062dcb141a0320afe9dae0d36f87965')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}-Source"
+
+ sed -i -e "s:Name=k9copy:Name=K9copy:g" k9copy.desktop k9copy_assistant.desktop
+ cmake -DCMAKE_INSTALL_PREFIX=/usr || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/k9copy/k9copy.install b/extra/k9copy/k9copy.install
new file mode 100644
index 000000000..e70c054ec
--- /dev/null
+++ b/extra/k9copy/k9copy.install
@@ -0,0 +1,11 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/extra/kaffeine/PKGBUILD b/extra/kaffeine/PKGBUILD
new file mode 100644
index 000000000..62a20d6e4
--- /dev/null
+++ b/extra/kaffeine/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 89600 2010-09-02 12:51:01Z tpowa $
+# Contributor: Pierre Schmitz <pierre@archlinux.de>
+
+pkgname=kaffeine
+pkgver=1.1
+pkgrel=1
+pkgdesc='KDE media player'
+license=('GPL')
+arch=('i686' 'x86_64')
+url="http://kaffeine.kde.org"
+depends=('kdelibs' 'kdebase-runtime' 'xine-lib')
+makedepends=('pkgconfig' 'cmake' 'automoc4')
+source=("http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.gz")
+
+build() {
+ cd $srcdir
+ mkdir build
+ cd build
+ cmake ../${pkgname}-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_SKIP_RPATH=ON \
+ -DCMAKE_INSTALL_PREFIX=/usr
+ make
+ make DESTDIR=$pkgdir install
+}
+md5sums=('72284197b1c90adf75149311e4422efe')
diff --git a/extra/kde-agent/PKGBUILD b/extra/kde-agent/PKGBUILD
new file mode 100644
index 000000000..f2cd14dfd
--- /dev/null
+++ b/extra/kde-agent/PKGBUILD
@@ -0,0 +1,20 @@
+# $Id: PKGBUILD 48318 2009-08-01 13:49:37Z tpowa $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=kde-agent
+pkgver=20090801
+pkgrel=2
+pkgdesc="Startup and shutdown scripts for gpg-agent and ssh-agent in KDE"
+arch=('i686' 'x86_64')
+url='http://www.kde.org'
+license=('GPL' 'LGPL' 'FDL')
+depends=('pinentry' 'openssh' 'qt')
+source=(agent-startup.sh
+ agent-shutdown.sh)
+
+build() {
+ install -D -m 755 $srcdir/agent-startup.sh $pkgdir/etc/kde/env/agent-startup.sh
+ install -D -m 755 $srcdir/agent-shutdown.sh $pkgdir/etc/kde/shutdown/agent-shutdown.sh
+}
+md5sums=('7daec96c125e1e238a35f31ea4a476f0'
+ '18e8d01124b19f7df2937c06e177bf7f')
diff --git a/extra/kde-agent/agent-shutdown.sh b/extra/kde-agent/agent-shutdown.sh
new file mode 100644
index 000000000..71b056af3
--- /dev/null
+++ b/extra/kde-agent/agent-shutdown.sh
@@ -0,0 +1,13 @@
+#!/bin/sh
+#
+# This file is executed at kde shutdown.
+# Uncomment the following lines to kill the agents
+# that were started at session startup.
+
+if [ "${GPG_AGENT_INFO}" ]; then
+ kill $(echo ${GPG_AGENT_INFO} | cut -d':' -f 2) >/dev/null 2>&1
+fi
+#
+if [ "${SSH_AGENT_PID}" ]; then
+ ssh-agent -k
+fi
diff --git a/extra/kde-agent/agent-startup.sh b/extra/kde-agent/agent-startup.sh
new file mode 100644
index 000000000..0897a237c
--- /dev/null
+++ b/extra/kde-agent/agent-startup.sh
@@ -0,0 +1,19 @@
+# Agents startup file
+#
+# This file is sourced at kde startup, so that
+# the environment variables set here are available
+# throughout the session.
+
+# Uncomment the following lines to start gpg-agent
+# and/or ssh-agent at kde startup.
+# If you do so, do not forget to uncomment the respective
+# lines in KDEDIR/shutdown/agent-shutdown.sh to
+# properly kill the agents when the session ends.
+
+if [ -x /usr/bin/gpg-agent ]; then
+ eval "$(/usr/bin/gpg-agent --daemon --pinentry-program /usr/bin/pinentry-qt4)"
+fi
+#
+if [ -x /usr/bin/ssh-agent ]; then
+ eval "$(/usr/bin/ssh-agent -s)"
+fi
diff --git a/extra/kdeaccessibility/PKGBUILD b/extra/kdeaccessibility/PKGBUILD
new file mode 100644
index 000000000..deae74e5c
--- /dev/null
+++ b/extra/kdeaccessibility/PKGBUILD
@@ -0,0 +1,98 @@
+# $Id: PKGBUILD 111776 2011-02-28 23:54:09Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Pierre Schmitz <pierre@archlinux.de>
+
+pkgbase=kdeaccessibility
+pkgname=('kdeaccessibility-colorschemes'
+ 'kdeaccessibility-iconthemes'
+ 'kdeaccessibility-jovie'
+ 'kdeaccessibility-kaccessible'
+ 'kdeaccessibility-kmag'
+ 'kdeaccessibility-kmousetool'
+ 'kdeaccessibility-kmouth')
+pkgver=4.6.1
+pkgrel=1
+arch=('i686' 'x86_64')
+url='http://accessibility.kde.org'
+license=('GPL' 'FDL')
+groups=('kde' 'kdeaccessibility')
+makedepends=('pkgconfig' 'cmake' 'automoc4' 'kdebase-runtime'
+ 'speech-dispatcher' 'docbook-xsl')
+source=("http://download.kde.org/stable/${pkgver}/src/${pkgbase}-${pkgver}.tar.bz2")
+sha1sums=('820c3d85b01e0714826a0e00c779d4ca84ddf093')
+
+build() {
+ cd ${srcdir}
+ mkdir build
+ cd build
+ cmake ../${pkgbase}-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_SKIP_RPATH=ON \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DWITH_Opentts=OFF
+ make
+}
+
+package_kdeaccessibility-colorschemes() {
+ pkgdesc='KDE Accessibility color schemes'
+ cd $srcdir/build/ColorSchemes
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeaccessibility-iconthemes() {
+ pkgdesc='KDE Accessibility icon themes'
+ cd $srcdir/build/IconThemes
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeaccessibility-jovie() {
+ pkgdesc='A text to speech application'
+ depends=('kdebase-runtime' 'speech-dispatcher')
+ replaces=('kdeaccessibility-kttsd')
+ install='kdeaccessibility.install'
+ cd $srcdir/build/jovie
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/jovie
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeaccessibility-kaccessible() {
+ pkgdesc='Provides accessibility services like focus tracking and a screenreader'
+ depends=('kdebase-runtime' 'speech-dispatcher')
+ install='kdeaccessibility.install'
+ cd $srcdir/build/kaccessible
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeaccessibility-kmag() {
+ pkgdesc='Screen Magnifier'
+ depends=('kdebase-runtime')
+ url="http://kde.org/applications/utilities/kmag/"
+ install='kdeaccessibility.install'
+ cd $srcdir/build/kmag
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kmag
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeaccessibility-kmousetool() {
+ pkgdesc='Clicks the mouse for you, reducing the effects of RSI'
+ depends=('kdebase-runtime')
+ url="http://kde.org/applications/utilities/kmousetool/"
+ install='kdeaccessibility.install'
+ cd $srcdir/build/kmousetool
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kmousetool
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeaccessibility-kmouth() {
+ pkgdesc='Speech Synthesizer Frontend'
+ depends=('kdebase-runtime')
+ url="http://kde.org/applications/utilities/kmouth/"
+ install='kdeaccessibility.install'
+ cd $srcdir/build/kmouth
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kmouth
+ make DESTDIR=$pkgdir install
+}
diff --git a/extra/kdeaccessibility/kdeaccessibility.install b/extra/kdeaccessibility/kdeaccessibility.install
new file mode 100644
index 000000000..e70c054ec
--- /dev/null
+++ b/extra/kdeaccessibility/kdeaccessibility.install
@@ -0,0 +1,11 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/extra/kdeadmin/PKGBUILD b/extra/kdeadmin/PKGBUILD
new file mode 100644
index 000000000..64b961ece
--- /dev/null
+++ b/extra/kdeadmin/PKGBUILD
@@ -0,0 +1,80 @@
+# $Id: PKGBUILD 111777 2011-02-28 23:55:21Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Pierre Schmitz <pierre@archlinux.de>
+
+pkgbase=kdeadmin
+pkgname=('kdeadmin-kcron'
+ 'kdeadmin-ksystemlog'
+ 'kdeadmin-kuser'
+ 'kdeadmin-system-config-printer-kde')
+pkgver=4.6.1
+pkgrel=1
+arch=('i686' 'x86_64')
+url='http://www.kde.org'
+license=('GPL' 'LGPL' 'FDL')
+groups=('kde' 'kdeadmin')
+makedepends=('pkgconfig' 'cmake' 'automoc4' 'kdebindings-python'
+ 'system-config-printer-common' 'python2-qt' 'docbook-xsl')
+source=("http://download.kde.org/stable/${pkgver}/src/${pkgbase}-${pkgver}.tar.bz2"
+ 'syslog-path.patch')
+sha1sums=('b8eec397c97c19ea12f969134f8cf56886c03a26'
+ '20095ce6e0f3e5b6800a7c6e52de6fddba62c031')
+
+build() {
+ cd ${srcdir}/${pkgbase}-${pkgver}
+ patch -p1 -i ${srcdir}/syslog-path.patch
+
+ cd ${srcdir}
+ mkdir build
+ cd build
+ cmake ../${pkgbase}-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_SKIP_RPATH=ON \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DBUILD_kpackage=OFF \
+ -DBUILD_knetworkconf=OFF \
+ -DBUILD_lilo-config=OFF \
+ -DBUILD_strigi-analyzer=OFF
+ make
+}
+
+package_kdeadmin-kcron() {
+ pkgdesc='Configure and schedule tasks'
+ depends=('kdelibs')
+ cd $srcdir/build/kcron
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kcron
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeadmin-ksystemlog() {
+ pkgdesc='System log viewer tool'
+ depends=('kdebase-runtime')
+ url="http://kde.org/applications/system/ksystemlog/"
+ cd $srcdir/build/ksystemlog
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/ksystemlog
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeadmin-kuser() {
+ pkgdesc='User Manager'
+ depends=('kdepim-runtime')
+ url="http://kde.org/applications/system/kuser/"
+ install='kdeadmin.install'
+ cd $srcdir/build/kuser
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kuser
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeadmin-system-config-printer-kde() {
+ pkgdesc='Configure local and remote Printers'
+ depends=('kdebindings-python' 'system-config-printer-common' 'python2-qt')
+ url="http://kde.org/applications/system/printerapplet/"
+ cd $srcdir/build/system-config-printer-kde
+ make DESTDIR=$pkgdir install
+
+ # Use the python2 executable
+ find ${pkgdir} -name '*.py' | xargs sed -i 's|#!/usr/bin/env python|#!/usr/bin/env python2|'
+}
diff --git a/extra/kdeadmin/kdeadmin.install b/extra/kdeadmin/kdeadmin.install
new file mode 100644
index 000000000..e70c054ec
--- /dev/null
+++ b/extra/kdeadmin/kdeadmin.install
@@ -0,0 +1,11 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/extra/kdeadmin/syslog-path.patch b/extra/kdeadmin/syslog-path.patch
new file mode 100644
index 000000000..8a9142bf6
--- /dev/null
+++ b/extra/kdeadmin/syslog-path.patch
@@ -0,0 +1,11 @@
+--- kdeadmin-4.6.0/ksystemlog/src/modes/system/systemConfiguration.h~ 2011-01-27 14:24:29.840000005 +0100
++++ kdeadmin-4.6.0/ksystemlog/src/modes/system/systemConfiguration.h 2011-01-27 14:24:53.803333335 +0100
+@@ -39,7 +39,7 @@
+ SystemConfiguration() :
+ GenericLogModeConfiguration(
+ QLatin1String( SYSTEM_LOG_MODE_ID ),
+- QStringList() << QLatin1String( "/var/log/syslog" ),
++ QStringList() << QLatin1String( "/var/log/messages.log" ),
+ QList<int>() << INFORMATION_LOG_LEVEL_ID
+ ) {
+
diff --git a/extra/kdeartwork/PKGBUILD b/extra/kdeartwork/PKGBUILD
new file mode 100644
index 000000000..7fbd54db8
--- /dev/null
+++ b/extra/kdeartwork/PKGBUILD
@@ -0,0 +1,102 @@
+# $Id: PKGBUILD 111778 2011-02-28 23:55:25Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Pierre Schmitz <pierre@archlinux.de>
+
+pkgbase=kdeartwork
+pkgname=('kdeartwork-aurorae'
+ 'kdeartwork-colorschemes'
+ 'kdeartwork-desktopthemes'
+ 'kdeartwork-emoticons'
+ 'kdeartwork-iconthemes'
+ 'kdeartwork-kscreensaver'
+ 'kdeartwork-sounds'
+ 'kdeartwork-styles'
+ 'kdeartwork-wallpapers'
+ 'kdeartwork-weatherwallpapers')
+pkgver=4.6.1
+pkgrel=1
+arch=('i686' 'x86_64')
+url='http://www.kde.org'
+license=('GPL' 'LGPL' 'FDL')
+groups=('kde' 'kdeartwork')
+makedepends=('pkgconfig' 'cmake' 'automoc4' 'xscreensaver' 'eigen' 'kdebase-workspace'
+ 'docbook-xsl' 'kdegraphics-libs')
+source=("http://download.kde.org/stable/${pkgver}/src/${pkgbase}-${pkgver}.tar.bz2")
+sha1sums=('47c55cccd39f634a9754e9ff0b2dd9791aaf3ee4')
+
+build() {
+ cd $srcdir
+ mkdir build
+ cd build
+ cmake ../${pkgbase}-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_SKIP_RPATH=ON \
+ -DCMAKE_INSTALL_PREFIX=/usr
+ make
+}
+
+package_kdeartwork-aurorae() {
+ pkgdesc='An Aurorae theme based on the Oxygen plasma theme'
+ cd $srcdir/build/aurorae
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeartwork-colorschemes() {
+ pkgdesc='KDE color schemes'
+ cd $srcdir/build/ColorSchemes
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeartwork-desktopthemes() {
+ pkgdesc='KDE desktop themes'
+ cd $srcdir/build/desktopthemes
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeartwork-emoticons() {
+ pkgdesc='KDE emoticons'
+ cd $srcdir/build/emoticons
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeartwork-iconthemes() {
+ pkgdesc='KDE icon themes'
+ cd $srcdir/build/IconThemes
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeartwork-kscreensaver() {
+ pkgdesc='KDE screensaver'
+ depends=('kdebase-workspace' 'kdegraphics-libs')
+ cd $srcdir/build/kscreensaver
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeartwork-sounds() {
+ pkgdesc='KDE sounds'
+ cd $srcdir/build/sounds
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeartwork-styles() {
+ pkgdesc='KDE styles'
+ depends=('kdebase-workspace')
+ cd $srcdir/build/styles
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/kwin-styles
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeartwork-wallpapers() {
+ pkgdesc='KDE wallpapers'
+ cd $srcdir/build/wallpapers
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/HighResolutionWallpapers
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeartwork-weatherwallpapers() {
+ pkgdesc='KDE weather wallpapers'
+ cd $srcdir/build/WeatherWallpapers
+ make DESTDIR=$pkgdir install
+}
diff --git a/extra/kdebase-runtime/PKGBUILD b/extra/kdebase-runtime/PKGBUILD
new file mode 100644
index 000000000..705cef650
--- /dev/null
+++ b/extra/kdebase-runtime/PKGBUILD
@@ -0,0 +1,39 @@
+# $Id: PKGBUILD 111770 2011-02-28 23:53:48Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Pierre Schmitz <pierre@archlinux.de>
+
+pkgname=kdebase-runtime
+pkgver=4.6.1
+pkgrel=1
+pkgdesc="KDE Base Runtime Environment"
+arch=('i686' 'x86_64')
+url='http://www.kde.org'
+license=('GPL' 'LGPL')
+depends=('kdelibs' 'ntrack' 'smbclient' 'libssh' 'libcanberra' 'oxygen-icons'
+ 'xorg-xauth' 'hicolor-icon-theme')
+makedepends=('pkg-config' 'cmake' 'automoc4' 'kdepimlibs' 'openslp' 'xine-lib'
+ 'docbook-xsl')
+optdepends=('htdig: to build the search index in khelpcenter'
+ 'rarian: needed by khelpcenter'
+ 'gdb: drkonq crash handler')
+install="${pkgname}.install"
+source=("http://download.kde.org/stable/${pkgver}/src/${pkgname}-${pkgver}.tar.bz2")
+sha1sums=('7c6704d72577ed88acccc767d0a6a8adf7e8e9ac')
+
+build() {
+ cd "${srcdir}"
+ mkdir build
+ cd build
+ cmake ../${pkgname}-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_SKIP_RPATH=ON \
+ -DCMAKE_INSTALL_PREFIX=/usr
+ make
+}
+
+package() {
+ cd "$srcdir/build"
+ make DESTDIR="$pkgdir" install
+ rm -f "${pkgdir}/usr/share/icons/hicolor/index.theme"
+ ln -sf /usr/lib/kde4/libexec/kdesu "${pkgdir}/usr/bin/"
+}
diff --git a/extra/kdebase-runtime/kdebase-runtime.install b/extra/kdebase-runtime/kdebase-runtime.install
new file mode 100644
index 000000000..3f06b8deb
--- /dev/null
+++ b/extra/kdebase-runtime/kdebase-runtime.install
@@ -0,0 +1,12 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+ update-mime-database usr/share/mime &> /dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/extra/kdebase-workspace/PKGBUILD b/extra/kdebase-workspace/PKGBUILD
new file mode 100644
index 000000000..9a821f87f
--- /dev/null
+++ b/extra/kdebase-workspace/PKGBUILD
@@ -0,0 +1,71 @@
+# $Id: PKGBUILD 111773 2011-02-28 23:53:58Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Pierre Schmitz <pierre@archlinux.de>
+
+pkgname=kdebase-workspace
+pkgver=4.6.1
+pkgrel=1
+pkgdesc="KDE Base Workspace"
+arch=('i686' 'x86_64')
+url='http://www.kde.org'
+license=('GPL' 'LGPL' 'FDL')
+groups=('kde')
+# note on libxdamage:
+# not detected by namcap because libgl depends on it
+# but nvidia providing libgl does not depend on libxdamage
+depends=('kdepim-runtime' 'lm_sensors' 'libraw1394' 'qimageblitz' 'libqalculate'
+ 'polkit-kde' 'consolekit' 'xorg-xprop' 'libxdamage' 'libxklavier' 'libdmtx')
+makedepends=('pkgconfig' 'cmake' 'automoc4' 'boost' 'networkmanager' 'bluez'
+ 'docbook-xsl' 'python2' 'kdebindings-python')
+replaces=('kdmtheme' 'kde-common' 'guidance-power-manager' 'policykit-kde' 'kdebase-kinfocenter')
+conflicts=('kde-common' 'guidance-power-manager' 'policykit-kde' 'kdebase-kinfocenter')
+install="${pkgname}.install"
+backup=('usr/share/config/kdm/kdmrc'
+ 'etc/pam.d/kde'
+ 'etc/pam.d/kde-np'
+ 'etc/pam.d/kscreensaver')
+source=("http://download.kde.org/stable/${pkgver}/src/${pkgname}-${pkgver}.tar.bz2"
+ 'kdm-zsh-profile.patch' 'kdm' 'kde.pam' 'kde-np.pam' 'kscreensaver.pam'
+ 'fixpath.patch' 'terminate-server.patch')
+sha1sums=('e37691d88ddbf92cc95ec39849a1331404c84fd5'
+ '8c2bdefb23a03b753b78d16944d03fa3939d2d99'
+ '5db3a245201bd4a50e65aa2ef583cf5490e4f646'
+ 'f7b38af38549242a240f1a90ab9964ca8a366129'
+ '603cc79c4d2b4eae62bb5f244aeecb3a778b5516'
+ '106635aa1aae51d6f0668b1853f6c49a4fe9d3d8'
+ 'd7b5883f7e65c6839b1f65f94d58026673dd0226'
+ 'ac7bc292c865bc1ab8c02e6341aa7aeaf1a3eeee')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ patch -p0 -i ${srcdir}/kdm-zsh-profile.patch
+ patch -p0 -i ${srcdir}/fixpath.patch
+ patch -p0 -i ${srcdir}/terminate-server.patch
+
+ cd ${srcdir}
+ mkdir build
+ cd build
+ cmake ../${pkgname}-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_SKIP_RPATH=ON \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DWITH_Xmms=OFF \
+ -DWITH_Googlegadgets=OFF \
+ -DWITH_PolkitQt=OFF
+ make
+}
+
+package() {
+ cd $srcdir/build
+ make DESTDIR=$pkgdir install
+
+ install -D -m755 ${srcdir}/kdm ${pkgdir}/etc/rc.d/kdm
+ install -D -m644 ${srcdir}/kde.pam ${pkgdir}/etc/pam.d/kde
+ install -D -m644 ${srcdir}/kde-np.pam ${pkgdir}/etc/pam.d/kde-np
+ install -D -m644 ${srcdir}/kscreensaver.pam ${pkgdir}/etc/pam.d/kscreensaver
+ install -d -m755 ${pkgdir}/usr/share/xsessions/
+ ln -sf /usr/share/apps/kdm/sessions/kde-plasma{,-safe}.desktop ${pkgdir}/usr/share/xsessions/
+ install -d -m755 ${pkgdir}/etc/kde/{env,shutdown}
+
+ install -d -g 135 -o 135 ${pkgdir}/var/lib/kdm
+}
diff --git a/extra/kdebase-workspace/fixpath.patch b/extra/kdebase-workspace/fixpath.patch
new file mode 100644
index 000000000..be2b8383e
--- /dev/null
+++ b/extra/kdebase-workspace/fixpath.patch
@@ -0,0 +1,34 @@
+--- startkde.cmake.orig 2009-01-15 14:24:44.000000000 +0100
++++ startkde.cmake 2009-01-15 14:33:08.000000000 +0100
+@@ -34,22 +34,6 @@
+ MALLOC_CHECK_=2
+ export MALLOC_CHECK_
+
+-# in case we have been started with full pathname spec without being in PATH
+-bindir=`echo "$0" | sed -n 's,^\(/.*\)/[^/][^/]*$,\1,p'`
+-if [ -n "$bindir" ]; then
+- qbindir=`$bindir/kde4-config --qt-binaries`
+- if [ -n "$qbindir" ]; then
+- case $PATH in
+- $qbindir|$qbindir:*|*:$qbindir|*:$qbindir:*) ;;
+- *) PATH=$qbindir:$PATH; export PATH;;
+- esac
+- fi
+- case $PATH in
+- $bindir|$bindir:*|*:$bindir|*:$bindir:*) ;;
+- *) PATH=$bindir:$PATH; export PATH;;
+- esac
+-fi
+-
+ # Boot sequence:
+ #
+ # kdeinit is used to fork off processes which improves memory usage
+@@ -206,7 +190,7 @@
+ # For anything else (that doesn't set env vars, or that needs a window manager),
+ # better use the Autostart folder.
+
+-libpath=`kde4-config --path lib | tr : '\n'`
++libpath=`kde4-config --path lib | tr : '\n'`$(echo -e '\n/etc/kde/lib/')
+
+ for prefix in `echo "$libpath" | sed -n -e 's,/lib[^/]*/,/env/,p'`; do
+ for file in "$prefix"*.sh; do
diff --git a/extra/kdebase-workspace/kde-np.pam b/extra/kdebase-workspace/kde-np.pam
new file mode 100644
index 000000000..81eeef47b
--- /dev/null
+++ b/extra/kdebase-workspace/kde-np.pam
@@ -0,0 +1,7 @@
+#%PAM-1.0
+auth required pam_nologin.so
+auth required pam_permit.so
+account required pam_unix.so
+password required pam_unix.so
+session required pam_unix.so
+session required pam_limits.so \ No newline at end of file
diff --git a/extra/kdebase-workspace/kde.pam b/extra/kdebase-workspace/kde.pam
new file mode 100644
index 000000000..1a259390f
--- /dev/null
+++ b/extra/kdebase-workspace/kde.pam
@@ -0,0 +1,7 @@
+#%PAM-1.0
+auth required pam_unix.so
+auth required pam_nologin.so
+account required pam_unix.so
+password required pam_unix.so
+session required pam_unix.so
+session required pam_limits.so \ No newline at end of file
diff --git a/extra/kdebase-workspace/kdebase-workspace.install b/extra/kdebase-workspace/kdebase-workspace.install
new file mode 100644
index 000000000..3a1b2404a
--- /dev/null
+++ b/extra/kdebase-workspace/kdebase-workspace.install
@@ -0,0 +1,23 @@
+post_install() {
+ groupadd -g 135 kdm &>/dev/null
+ useradd -u 135 -g kdm -d /var/lib/kdm -s /bin/false -r -M kdm &>/dev/null
+ chown -R 135:135 var/lib/kdm &>/dev/null
+ xdg-icon-resource forceupdate --theme hicolor &>/dev/null
+}
+
+post_upgrade() {
+ getent group kdm >/dev/null 2>&1 || groupadd -g 135 kdm &>/dev/null
+ getent passwd kdm >/dev/null 2>&1 || useradd -u 135 -g kdm -d /var/lib/kdm -s /bin/false -r -M kdm &>/dev/null
+ chown -R 135:135 var/lib/kdm &>/dev/null
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+}
+
+post_remove() {
+ if getent passwd kdm >/dev/null 2>&1; then
+ userdel kdm
+ fi
+ if getent group kdm >/dev/null 2>&1; then
+ groupdel kdm
+ fi
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+}
diff --git a/extra/kdebase-workspace/kdm b/extra/kdebase-workspace/kdm
new file mode 100644
index 000000000..799d58f4b
--- /dev/null
+++ b/extra/kdebase-workspace/kdm
@@ -0,0 +1,36 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+PID=$(pidof -o %PPID /usr/bin/kdm)
+case "$1" in
+ start)
+ stat_busy "Starting KDE Desktop Manager"
+ [ -z "$PID" ] && /usr/bin/kdm &>/dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon kdm
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping KDE Desktop Manager"
+ [ ! -z "$PID" ] && kill $PID &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon kdm
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 3
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
diff --git a/extra/kdebase-workspace/kdm-zsh-profile.patch b/extra/kdebase-workspace/kdm-zsh-profile.patch
new file mode 100644
index 000000000..779456b39
--- /dev/null
+++ b/extra/kdebase-workspace/kdm-zsh-profile.patch
@@ -0,0 +1,11 @@
+--- kdm/kfrontend/genkdmconf.c 2008-02-13 09:40:49.000000000 +0000
++++ kdm/kfrontend/genkdmconf.c 2008-05-16 12:47:36.000000000 +0000
+@@ -662,7 +662,7 @@
+ " [ -d /etc/zsh ] && zdir=/etc/zsh || zdir=/etc\n"
+ " zhome=${ZDOTDIR:-$HOME}\n"
+ " # zshenv is always sourced automatically.\n"
+-" [ -f $zdir/zprofile ] && . $zdir/zprofile\n"
++" [ -f /etc/profile ] && . /etc/profile\n"
+ " [ -f $zhome/.zprofile ] && . $zhome/.zprofile\n"
+ " [ -f $zdir/zlogin ] && . $zdir/zlogin\n"
+ " [ -f $zhome/.zlogin ] && . $zhome/.zlogin\n"
diff --git a/extra/kdebase-workspace/kscreensaver.pam b/extra/kdebase-workspace/kscreensaver.pam
new file mode 100644
index 000000000..b4d80c21f
--- /dev/null
+++ b/extra/kdebase-workspace/kscreensaver.pam
@@ -0,0 +1 @@
+auth required pam_unix_auth.so
diff --git a/extra/kdebase-workspace/terminate-server.patch b/extra/kdebase-workspace/terminate-server.patch
new file mode 100644
index 000000000..094591317
--- /dev/null
+++ b/extra/kdebase-workspace/terminate-server.patch
@@ -0,0 +1,11 @@
+--- kdm/config.def 2009-08-27 10:17:39.000000000 +0200
++++ kdm/config.def 2009-10-31 00:40:21.000000000 +0100
+@@ -1448,7 +1448,7 @@
+
+ Key: TerminateServer
+ Type: bool
+-Default: false
++Default: true
+ User: core
+ Instance: #:*/!
+ Merge: xdm
diff --git a/extra/kdebase/PKGBUILD b/extra/kdebase/PKGBUILD
new file mode 100644
index 000000000..dcbffb065
--- /dev/null
+++ b/extra/kdebase/PKGBUILD
@@ -0,0 +1,129 @@
+# $Id: PKGBUILD 112038 2011-03-03 11:11:13Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Pierre Schmitz <pierre@archlinux.de>
+
+pkgbase=kdebase
+pkgname=('kdebase-dolphin'
+ 'kdebase-kdepasswd'
+ 'kdebase-kdialog'
+ 'kdebase-keditbookmarks'
+ 'kdebase-kfind'
+ 'kdebase-konqueror'
+ 'kdebase-konsole'
+ 'kdebase-kwrite'
+ 'kdebase-lib'
+ 'kdebase-plasma')
+pkgver=4.6.1
+pkgrel=1
+arch=('i686' 'x86_64')
+url='http://www.kde.org'
+license=('GPL' 'LGPL' 'FDL')
+groups=('kde' 'kdebase')
+makedepends=('kdebase-workspace' 'pkgconfig' 'cmake' 'automoc4' 'docbook-xsl')
+source=("http://download.kde.org/stable/${pkgver}/src/${pkgbase}-${pkgver}.tar.bz2")
+sha1sums=('3993cc44ce9c43028bec7f314e354345da9931aa')
+
+build() {
+ cd ${srcdir}
+ mkdir build
+ cd build
+ cmake ../${pkgbase}-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_SKIP_RPATH=ON \
+ -DCMAKE_INSTALL_PREFIX=/usr
+ make
+}
+
+package_kdebase-dolphin() {
+ pkgdesc='File Manager'
+ depends=('kdebase-runtime' 'kdebase-lib')
+ optdepends=('ruby: servicemenu installation')
+ url="http://kde.org/applications/system/dolphin/"
+ cd $srcdir/build/dolphin
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/dolphin
+ make DESTDIR=$pkgdir install
+}
+
+package_kdebase-kdepasswd() {
+ pkgdesc='Change Password'
+ depends=('kdebase-runtime' 'kdebase-lib')
+ cd $srcdir/build/kdepasswd
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kdepasswd
+ make DESTDIR=$pkgdir install
+}
+
+package_kdebase-kdialog() {
+ pkgdesc='A utility for displaying dialog boxes from shell scripts'
+ depends=('kdebase-runtime')
+ cd $srcdir/build/kdialog
+ make DESTDIR=$pkgdir install
+}
+
+package_kdebase-keditbookmarks() {
+ pkgdesc='Bookmark Organizer and Editor'
+ depends=('kdebase-runtime')
+ cd $srcdir/build/keditbookmarks
+ make DESTDIR=$pkgdir install
+}
+
+package_kdebase-kfind() {
+ pkgdesc='Find Files/Folders'
+ depends=('kdebase-runtime' 'kdebase-lib')
+ url="http://kde.org/applications/utilities/kfind/"
+ install='kdebase.install'
+ cd $srcdir/build/kfind
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kfind
+ make DESTDIR=$pkgdir install
+}
+
+package_kdebase-konqueror() {
+ pkgdesc='KDE File Manager & Web Browser'
+ depends=('kdebase-dolphin' 'kdebase-keditbookmarks')
+ optdepends=('kwebkitpart: to enable webkit engine')
+ url="http://kde.org/applications/internet/konqueror/"
+ install='kdebase.install'
+ conflicts=('kdebase-nsplugins')
+ replaces=('kdebase-nsplugins')
+ for i in konqueror doc/konqueror nsplugins; do
+ cd $srcdir/build/${i}
+ make DESTDIR=$pkgdir install
+ done
+}
+
+package_kdebase-konsole() {
+ pkgdesc='Terminal'
+ depends=('kdebase-runtime')
+ url="http://kde.org/applications/system/konsole/"
+ cd $srcdir/build/konsole
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/konsole/doc/manual
+ make DESTDIR=$pkgdir install
+}
+
+package_kdebase-kwrite() {
+ pkgdesc='Text Editor'
+ depends=('kdebase-runtime')
+ url="http://kde.org/applications/utilities/kwrite/"
+ cd $srcdir/build/kwrite
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kwrite
+ make DESTDIR=$pkgdir install
+}
+
+package_kdebase-lib() {
+ pkgdesc='KDE libraries for the basic desktop applications'
+ groups=()
+ depends=('kdelibs')
+ cd $srcdir/build/lib
+ make DESTDIR=$pkgdir install
+}
+
+package_kdebase-plasma() {
+ pkgdesc='Display the contents of folders (User´s home folder as default)'
+ depends=('kdebase-workspace' 'kdebase-lib')
+ cd $srcdir/build/plasma
+ make DESTDIR=$pkgdir install
+}
diff --git a/extra/kdebase/kdebase.install b/extra/kdebase/kdebase.install
new file mode 100644
index 000000000..e70c054ec
--- /dev/null
+++ b/extra/kdebase/kdebase.install
@@ -0,0 +1,11 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/extra/kdebindings/PKGBUILD b/extra/kdebindings/PKGBUILD
new file mode 100644
index 000000000..a2132eeb4
--- /dev/null
+++ b/extra/kdebindings/PKGBUILD
@@ -0,0 +1,70 @@
+# $Id: PKGBUILD 107102 2011-01-21 11:16:03Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Pierre Schmitz <pierre@archlinux.de>
+
+pkgbase=kdebindings
+pkgname=('kdebindings-csharp'
+ 'kdebindings-python'
+ 'kdebindings-ruby'
+ 'kdebindings-smoke')
+pkgver=4.6.1
+pkgrel=1
+arch=('i686' 'x86_64')
+url='http://www.kde.org'
+license=('GPL' 'LGPL')
+makedepends=('pkgconfig' 'cmake' 'automoc4' 'python2-qt' 'kdepim-runtime' 'mono'
+ 'kdegraphics-okular' 'qwt' 'docbook-xsl' 'boost' 'qscintilla' 'ruby')
+source=("http://download.kde.org/stable/${pkgver}/src/${pkgbase}-${pkgver}.tar.bz2")
+sha1sums=('1a71e656df19a4b132546242aa344778554693ff')
+
+build() {
+ export MONO_SHARED_DIR="${srcdir}/build/.mono"
+ mkdir -p "$MONO_SHARED_DIR"
+ cd ${srcdir}/build
+
+ cmake ../${pkgbase}-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DRUBY_SITE_LIB_DIR="/usr/lib/ruby/site_ruby/1.9.1" \
+ -DRUBY_SITE_ARCH_DIR="/usr/lib/ruby/site_ruby/1.9.1/${CARCH}-linux" \
+ -DBUILD_falcon=OFF \
+ -DBUILD_java=OFF \
+ -DBUILD_php=OFF \
+ -DWITH_PolkitQt=OFF
+ make
+}
+
+package_kdebindings-csharp() {
+ pkgdesc='KDE bindings for mono'
+ depends=('kdebindings-smoke' 'mono')
+ export MONO_SHARED_DIR="${srcdir}/build/.mono"
+ mkdir -p "$MONO_SHARED_DIR"
+ cd $srcdir/build/csharp
+ make DESTDIR=$pkgdir install
+}
+
+package_kdebindings-python() {
+ pkgdesc='KDE bindings for python'
+ depends=('kdepim-runtime' 'python2-qt' 'qscintilla')
+ cd $srcdir/build/python
+ make DESTDIR=$pkgdir install
+
+ # Use the python2 executable
+ find "${pkgdir}" -name '*.py' | xargs sed -i 's|#!/usr/bin/env python|#!/usr/bin/env python2|'
+}
+
+package_kdebindings-ruby() {
+ pkgdesc='KDE Bindings for ruby'
+ depends=('kdebindings-smoke' 'ruby')
+ cd $srcdir/build/ruby
+ make DESTDIR=$pkgdir install
+}
+
+package_kdebindings-smoke() {
+ pkgdesc='Language independent library for Qt and KDE bindings'
+ depends=('qscintilla' 'kdegraphics-okular' 'kdepim-runtime')
+ cd $srcdir/build/smoke
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/generator/smokebase
+ make DESTDIR=$pkgdir install
+}
diff --git a/extra/kdeedu/PKGBUILD b/extra/kdeedu/PKGBUILD
new file mode 100644
index 000000000..5a2bb8897
--- /dev/null
+++ b/extra/kdeedu/PKGBUILD
@@ -0,0 +1,276 @@
+# $Id: PKGBUILD 112296 2011-03-04 14:46:49Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Pierre Schmitz <pierre@archlinux.de>
+
+pkgbase=kdeedu
+pkgname=('kdeedu-blinken'
+ 'kdeedu-cantor'
+ 'kdeedu-data'
+ 'kdeedu-kalgebra'
+ 'kdeedu-kalzium'
+ 'kdeedu-kanagram'
+ 'kdeedu-kbruch'
+ 'kdeedu-kgeography'
+ 'kdeedu-khangman'
+ 'kdeedu-kig'
+ 'kdeedu-kiten'
+ 'kdeedu-klettres'
+ 'kdeedu-kmplot'
+ 'kdeedu-kstars'
+ 'kdeedu-ktouch'
+ 'kdeedu-kturtle'
+ 'kdeedu-kwordquiz'
+ 'kdeedu-libkdeedu'
+ 'kdeedu-marble'
+ 'kdeedu-parley'
+ 'kdeedu-rocs'
+ 'kdeedu-step')
+pkgver=4.6.1
+pkgrel=2
+arch=('i686' 'x86_64')
+url='http://www.kde.org'
+license=('GPL' 'LGPL' 'FDL')
+groups=('kde' 'kdeedu')
+makedepends=('pkgconfig' 'cmake' 'automoc4' 'ocaml' 'facile' 'cfitsio' 'gpsd'
+ 'kdebase-runtime' 'libqalculate' 'gsl' 'boost' 'libindi' 'r' 'libspectre'
+ 'python2' 'docbook-xsl' 'avogadro')
+source=("http://download.kde.org/stable/${pkgver}/src/${pkgbase}-${pkgver}.tar.bz2")
+sha1sums=('90843f6a472aa38ece3fc2a237fffd020572fad7')
+
+build() {
+ cd $srcdir
+ mkdir build
+ cd build
+ # rpath is needed for cantor to find R
+ cmake ../${pkgbase}-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_SKIP_RPATH=OFF \
+ -DCMAKE_INSTALL_PREFIX=/usr
+ make
+}
+
+package_kdeedu-blinken() {
+ pkgdesc='A memory enhancement game'
+ depends=('kdebase-runtime' 'kdeedu-libkdeedu')
+ install='kdeedu.install'
+ cd $srcdir/build/blinken
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/blinken
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeedu-cantor() {
+ pkgdesc='KDE Frontend to Mathematical Software'
+ depends=('kdeedu-libkdeedu' 'libspectre')
+ optdepends=('kdeedu-kalgebra: backend'
+ 'maxima: backend'
+ 'r: backend')
+ install='kdeedu.install'
+ cd $srcdir/build/cantor
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/cantor
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeedu-data() {
+ pkgdesc='Data for KDE Educational Software'
+ groups=()
+ cd $srcdir/build/data
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeedu-kalgebra() {
+ pkgdesc='Math Expression Solver and Plotter'
+ depends=('kdebase-runtime')
+ install='kdeedu.install'
+ cd $srcdir/build/kalgebra
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kalgebra
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeedu-kalzium() {
+ pkgdesc='KDE Periodic Table of Elements'
+ depends=('kdebase-runtime' 'kdeedu-libkdeedu' 'avogadro')
+ install='kdeedu.install'
+ cd $srcdir/build/kalzium
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kalzium
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeedu-kanagram() {
+ pkgdesc='KDE Letter Order Game'
+ depends=('kdebase-runtime' 'kdeedu-libkdeedu' 'kdeedu-data')
+ install='kdeedu.install'
+ cd $srcdir/build/kanagram
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kanagram
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeedu-kbruch() {
+ pkgdesc='Practice exercises with fractions'
+ depends=('kdelibs' 'kdebase-runtime')
+ install='kdeedu.install'
+ cd $srcdir/build/kbruch
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kbruch
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeedu-kgeography() {
+ pkgdesc='A Geography Learning Program'
+ depends=('kdebase-runtime')
+ install='kdeedu.install'
+ cd $srcdir/build/kgeography
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kgeography
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeedu-khangman() {
+ pkgdesc='KDE Hangman Game'
+ depends=('kdebase-runtime' 'kdeedu-libkdeedu' 'kdeedu-data')
+ install='kdeedu.install'
+ cd $srcdir/build/khangman
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/khangman
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeedu-kig() {
+ pkgdesc='Explore Geometric Constructions'
+ depends=('kdebase-runtime' 'boost-libs' 'python2')
+ install='kdeedu.install'
+ cd $srcdir/build/kig
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kig
+ make DESTDIR=$pkgdir install
+
+ # Use the python2 executable
+ sed -i 's|#!/usr/bin/env python|#!/usr/bin/env python2|' ${pkgdir}/usr/bin/pykig.py
+}
+
+package_kdeedu-kiten() {
+ pkgdesc='Japanese Reference and Study Tool'
+ depends=('kdebase-runtime')
+ install='kdeedu.install'
+ cd $srcdir/build/kiten
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kiten
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeedu-klettres() {
+ pkgdesc='a KDE program to learn the alphabet'
+ depends=('kdebase-runtime')
+ install='kdeedu.install'
+ cd $srcdir/build/klettres
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/klettres
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeedu-kmplot() {
+ pkgdesc='Function Plotter'
+ depends=('kdebase-runtime')
+ install='kdeedu.install'
+ cd $srcdir/build/kmplot
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kmplot
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeedu-kstars() {
+ pkgdesc='Desktop Planetarium'
+ depends=('kdebase-runtime' 'libindi')
+ install='kdeedu.install'
+ cd $srcdir/build/kstars
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kstars
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeedu-ktouch() {
+ pkgdesc='Touch Typing Tutor'
+ depends=('kdebase-runtime')
+ install='kdeedu.install'
+ cd $srcdir/build/ktouch
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/ktouch
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeedu-kturtle() {
+ pkgdesc='Educational Programming Environment'
+ depends=('kdebase-runtime')
+ install='kdeedu.install'
+ cd $srcdir/build/kturtle
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kturtle
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeedu-kwordquiz() {
+ pkgdesc='A flashcard and vocabulary learning program'
+ depends=('kdebase-runtime' 'kdeedu-libkdeedu' 'kdeedu-data')
+ install='kdeedu.install'
+ cd $srcdir/build/kwordquiz
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kwordquiz
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeedu-libkdeedu() {
+ pkgdesc='Support library for KDE Educational Software'
+ groups=()
+ depends=('kdelibs')
+ install='kdeedu.install'
+ cd $srcdir/build/libkdeedu
+ make DESTDIR=$pkgdir install
+ install -D -m644 $srcdir/${pkgbase}-${pkgver}/cmake/modules/FindKDEEdu.cmake \
+ $pkgdir/usr/share/apps/cmake/modules/FindKDEEdu.cmake
+}
+
+package_kdeedu-marble() {
+ pkgdesc='Desktop Globe'
+ depends=('kdebase-runtime' 'gpsd')
+ install='kdeedu.install'
+ cd $srcdir/build/marble
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/marble
+ make DESTDIR=$pkgdir install
+ install -D -m644 $srcdir/${pkgbase}-${pkgver}/cmake/modules/FindMarbleWidget.cmake \
+ $pkgdir/usr/share/apps/cmake/modules/FindMarbleWidget.cmake
+}
+
+package_kdeedu-parley() {
+ pkgdesc='Vocabulary Trainer'
+ depends=('kdebase-runtime' 'kdeedu-libkdeedu' 'kdeedu-data' 'kdebindings-python')
+ install='kdeedu.install'
+ cd $srcdir/build/parley
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/parley
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeedu-rocs() {
+ pkgdesc='Graph Theory Tool for Professors and Students.'
+ depends=('kdebase-runtime' 'kdeedu-libkdeedu')
+ install='kdeedu.install'
+ cd $srcdir/build/rocs
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/rocs
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeedu-step() {
+ pkgdesc='Simulate physics experiments'
+ depends=('kdebase-runtime' 'gsl' 'libqalculate')
+ install='kdeedu.install'
+ cd $srcdir/build/step
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/step
+ make DESTDIR=$pkgdir install
+}
diff --git a/extra/kdeedu/kdeedu.install b/extra/kdeedu/kdeedu.install
new file mode 100644
index 000000000..e70c054ec
--- /dev/null
+++ b/extra/kdeedu/kdeedu.install
@@ -0,0 +1,11 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/extra/kdegames/PKGBUILD b/extra/kdegames/PKGBUILD
new file mode 100644
index 000000000..d8e1ee62e
--- /dev/null
+++ b/extra/kdegames/PKGBUILD
@@ -0,0 +1,515 @@
+# $Id: PKGBUILD 111779 2011-02-28 23:55:28Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Pierre Schmitz <pierre@archlinux.de>
+
+pkgbase=kdegames
+pkgname=('kdegames-bomber'
+ 'kdegames-bovo'
+ 'kdegames-granatier'
+ 'kdegames-kajongg'
+ 'kdegames-kapman'
+ 'kdegames-katomic'
+ 'kdegames-kbattleship'
+ 'kdegames-kblackbox'
+ 'kdegames-kblocks'
+ 'kdegames-kbounce'
+ 'kdegames-kbreakout'
+ 'kdegames-kdiamond'
+ 'kdegames-kfourinline'
+ 'kdegames-kgoldrunner'
+ 'kdegames-kigo'
+ 'kdegames-killbots'
+ 'kdegames-kiriki'
+ 'kdegames-kjumpingcube'
+ 'kdegames-klines'
+ 'kdegames-klickety'
+ 'kdegames-kmahjongg'
+ 'kdegames-kmines'
+ 'kdegames-knetwalk'
+ 'kdegames-kolf'
+ 'kdegames-kollision'
+ 'kdegames-konquest'
+ 'kdegames-kpatience'
+ 'kdegames-kreversi'
+ 'kdegames-kshisen'
+ 'kdegames-ksirk'
+ 'kdegames-kspaceduel'
+ 'kdegames-ksquares'
+ 'kdegames-ksudoku'
+ 'kdegames-ktron'
+ 'kdegames-ktuberling'
+ 'kdegames-kubrick'
+ 'kdegames-libkdegames'
+ 'kdegames-libkmahjongg'
+ 'kdegames-lskat'
+ 'kdegames-palapeli')
+pkgver=4.6.1
+pkgrel=1
+arch=('i686' 'x86_64')
+url='http://www.kde.org'
+license=('GPL' 'LGPL' 'FDL')
+groups=('kde' 'kdegames')
+makedepends=('pkgconfig' 'cmake' 'automoc4' 'kdebase-runtime' 'ggz-client-libs'
+ 'twisted' 'kdebindings-python' 'docbook-xsl')
+source=("http://download.kde.org/stable/${pkgver}/src/${pkgbase}-${pkgver}.tar.bz2")
+sha1sums=('4c7ef990bcf9eedb1a666491514fbe5e04ab9421')
+
+build() {
+ cd $srcdir
+ mkdir build
+ cd build
+ cmake ../${pkgbase}-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_SKIP_RPATH=ON \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DWITH_OpenAL=OFF
+ make
+}
+
+package_kdegames-bomber() {
+ pkgdesc='Arcade Bombing Game'
+ depends=('kdebase-runtime' 'kdegames-libkdegames')
+ url="http://kde.org/applications/games/bomber/"
+ install='kdegames.install'
+ cd $srcdir/build/bomber
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/bomber
+ make DESTDIR=$pkgdir install
+}
+
+package_kdegames-bovo() {
+ pkgdesc='Five-in-a-row Board Game'
+ depends=('kdebase-runtime' 'kdegames-libkdegames')
+ url="http://kde.org/applications/games/bovo/"
+ install='kdegames.install'
+ cd $srcdir/build/bovo
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/bovo
+ make DESTDIR=$pkgdir install
+}
+
+package_kdegames-granatier() {
+ pkgdesc='Granatier'
+ depends=('kdebase-runtime' 'kdegames-libkdegames')
+ url="http://kde.org/applications/games/granatier/"
+ install='kdegames.install'
+ cd $srcdir/build/granatier
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/granatier
+ make DESTDIR=$pkgdir install
+}
+
+package_kdegames-kajongg() {
+ pkgdesc='The ancient Chinese board game for 4 players'
+ depends=('kdebase-runtime' 'kdegames-libkdegames' 'kdebindings-python' 'twisted')
+ install='kdegames.install'
+ cd $srcdir/build/kajongg
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kajongg
+ make DESTDIR=$pkgdir install
+
+ # Use the python2 executable
+ find "${pkgdir}" -name '*.py' | xargs sed -i 's|#!/usr/bin/env python|#!/usr/bin/env python2|'
+}
+
+package_kdegames-kapman() {
+ pkgdesc='Eat pills escaping ghosts'
+ depends=('kdebase-runtime' 'kdegames-libkdegames')
+ url="http://kde.org/applications/games/kapman/"
+ install='kdegames.install'
+ cd $srcdir/build/kapman
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kapman
+ make DESTDIR=$pkgdir install
+}
+
+package_kdegames-katomic() {
+ pkgdesc='Sokoban-like Logic Game'
+ depends=('kdebase-runtime' 'kdegames-libkdegames')
+ url="http://kde.org/applications/games/katomic/"
+ install='kdegames.install'
+ cd $srcdir/build/katomic
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/katomic
+ make DESTDIR=$pkgdir install
+}
+
+package_kdegames-kbattleship() {
+ pkgdesc='Battleship Game'
+ depends=('kdebase-runtime' 'kdegames-libkdegames' 'ggz-client-libs')
+ url="http://kde.org/applications/games/kbattleship/"
+ install='kdegames-kbattleship.install'
+ cd $srcdir/build/kbattleship
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kbattleship
+ make DESTDIR=$pkgdir install
+ install -D -m644 $srcdir/${pkgbase}-${pkgver}/kbattleship/src/module.dsc \
+ $pkgdir/usr/share/ggz/kbattleship.dsc
+}
+
+package_kdegames-kblackbox() {
+ pkgdesc='Blackbox Logic Game'
+ depends=('kdebase-runtime' 'kdegames-libkdegames')
+ url="http://kde.org/applications/games/kblackbox/"
+ install='kdegames.install'
+ cd $srcdir/build/kblackbox
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kblackbox
+ make DESTDIR=$pkgdir install
+}
+
+package_kdegames-kblocks() {
+ pkgdesc='Falling Blocks Game'
+ depends=('kdebase-runtime' 'kdegames-libkdegames')
+ url="http://kde.org/applications/games/kblocks/"
+ install='kdegames.install'
+ cd $srcdir/build/kblocks
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kblocks
+ make DESTDIR=$pkgdir install
+}
+
+package_kdegames-kbounce() {
+ pkgdesc='Ball Bouncing Game'
+ depends=('kdebase-runtime' 'kdegames-libkdegames')
+ url="http://kde.org/applications/games/kbounce/"
+ install='kdegames.install'
+ cd $srcdir/build/kbounce
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kbounce
+ make DESTDIR=$pkgdir install
+}
+
+package_kdegames-kbreakout() {
+ pkgdesc='Breakout-like Game'
+ depends=('kdebase-runtime' 'kdegames-libkdegames')
+ url="http://kde.org/applications/games/kbreakout/"
+ install='kdegames.install'
+ cd $srcdir/build/kbreakout
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kbreakout
+ make DESTDIR=$pkgdir install
+}
+
+package_kdegames-kdiamond() {
+ pkgdesc='Three-in-a-row game'
+ depends=('kdebase-runtime' 'kdegames-libkdegames')
+ url="http://kde.org/applications/games/kdiamond/"
+ install='kdegames.install'
+ cd $srcdir/build/kdiamond
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kdiamond
+ make DESTDIR=$pkgdir install
+}
+
+package_kdegames-kfourinline() {
+ pkgdesc='Four-in-a-row Board Game'
+ depends=('kdebase-runtime' 'kdegames-libkdegames')
+ url="http://kde.org/applications/games/kfourinline/"
+ install='kdegames.install'
+ cd $srcdir/build/kfourinline
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kfourinline
+ make DESTDIR=$pkgdir install
+}
+
+package_kdegames-kgoldrunner() {
+ pkgdesc='A game of action and puzzle-solving'
+ depends=('kdebase-runtime' 'kdegames-libkdegames')
+ url="http://kde.org/applications/games/kgoldrunner/"
+ install='kdegames.install'
+ cd $srcdir/build/kgoldrunner
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kgoldrunner
+ make DESTDIR=$pkgdir install
+}
+
+package_kdegames-kigo() {
+ pkgdesc='Go Board Game'
+ depends=('kdebase-runtime' 'kdegames-libkdegames' 'gnugo')
+ url="http://kde.org/applications/games/kigo/"
+ install='kdegames.install'
+ cd $srcdir/build/kigo
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kigo
+ make DESTDIR=$pkgdir install
+}
+
+package_kdegames-killbots() {
+ pkgdesc='Killbots'
+ depends=('kdebase-runtime' 'kdegames-libkdegames')
+ url="http://kde.org/applications/games/killbots/"
+ install='kdegames.install'
+ cd $srcdir/build/killbots
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/killbots
+ make DESTDIR=$pkgdir install
+}
+
+package_kdegames-kiriki() {
+ pkgdesc='Yahtzee-like Dice Game'
+ depends=('kdebase-runtime' 'kdegames-libkdegames')
+ url="http://kde.org/applications/games/kiriki/"
+ install='kdegames.install'
+ cd $srcdir/build/kiriki
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kiriki
+ make DESTDIR=$pkgdir install
+}
+
+package_kdegames-kjumpingcube() {
+ pkgdesc='Territory Capture Game'
+ depends=('kdebase-runtime' 'kdegames-libkdegames')
+ url="http://kde.org/applications/games/kjumpingcube/"
+ install='kdegames.install'
+ cd $srcdir/build/kjumpingcube
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kjumpingcube
+ make DESTDIR=$pkgdir install
+}
+
+package_kdegames-klickety() {
+ pkgdesc='Board Game'
+ depends=('kdebase-runtime' 'kdegames-libkdegames')
+ replaces=('kdegames-ksame')
+ conflicts=('kdegames-ksame')
+ url="http://kde.org/applications/games/ksame/"
+ install='kdegames.install'
+ cd $srcdir/build/klickety
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/klickety
+ make DESTDIR=$pkgdir install
+}
+
+package_kdegames-klines() {
+ pkgdesc='Tactical Game'
+ depends=('kdebase-runtime' 'kdegames-libkdegames')
+ url="http://kde.org/applications/games/klines/"
+ install='kdegames.install'
+ cd $srcdir/build/klines
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/klines
+ make DESTDIR=$pkgdir install
+}
+
+package_kdegames-kmahjongg() {
+ pkgdesc='Mahjongg Solitaire'
+ depends=('kdebase-runtime' 'kdegames-libkdegames' 'kdegames-libkmahjongg')
+ url="http://kde.org/applications/games/kmahjongg/"
+ install='kdegames.install'
+ cd $srcdir/build/kmahjongg
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kmahjongg
+ make DESTDIR=$pkgdir install
+}
+
+package_kdegames-kmines() {
+ pkgdesc='Minesweeper-like Game'
+ depends=('kdebase-runtime' 'kdegames-libkdegames')
+ url="http://kde.org/applications/games/kmines/"
+ install='kdegames.install'
+ cd $srcdir/build/kmines
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kmines
+ make DESTDIR=$pkgdir install
+}
+
+package_kdegames-knetwalk() {
+ pkgdesc='Network Construction Game'
+ depends=('kdebase-runtime' 'kdegames-libkdegames')
+ url="http://kde.org/applications/games/knetwalk/"
+ install='kdegames.install'
+ cd $srcdir/build/knetwalk
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/knetwalk
+ make DESTDIR=$pkgdir install
+}
+
+package_kdegames-kolf() {
+ pkgdesc='Miniature Golf'
+ depends=('kdebase-runtime' 'kdegames-libkdegames')
+ url="http://kde.org/applications/games/kolf/"
+ install='kdegames.install'
+ cd $srcdir/build/kolf
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kolf
+ make DESTDIR=$pkgdir install
+}
+
+package_kdegames-kollision() {
+ pkgdesc='A simple ball dodging game'
+ depends=('kdebase-runtime' 'kdegames-libkdegames')
+ url="http://kde.org/applications/games/kollision/"
+ install='kdegames.install'
+ cd $srcdir/build/kollision
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kollision
+ make DESTDIR=$pkgdir install
+}
+
+package_kdegames-konquest() {
+ pkgdesc='Galactic Strategy Game'
+ depends=('kdebase-runtime' 'kdegames-libkdegames')
+ url="http://kde.org/applications/games/konquest/"
+ install='kdegames.install'
+ cd $srcdir/build/konquest
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/konquest
+ make DESTDIR=$pkgdir install
+}
+
+package_kdegames-kpatience() {
+ pkgdesc='Patience Card Game'
+ depends=('kdebase-runtime' 'kdegames-libkdegames')
+ url="http://kde.org/applications/games/kpatience/"
+ install='kdegames.install'
+ replaces=('kdegames-kpat')
+ cd $srcdir/build/kpat
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kpat
+ make DESTDIR=$pkgdir install
+}
+
+package_kdegames-kreversi() {
+ pkgdesc='Reversi Board Game'
+ depends=('kdebase-runtime' 'kdegames-libkdegames' 'ggz-client-libs')
+ url="http://kde.org/applications/games/kreversi/"
+ install='kdegames-kreversi.install'
+ cd $srcdir/build/kreversi
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kreversi
+ make DESTDIR=$pkgdir install
+ install -D -m644 $srcdir/${pkgbase}-${pkgver}/kreversi/module.dsc \
+ $pkgdir/usr/share/ggz/kreversi.dsc
+}
+
+package_kdegames-kshisen() {
+ pkgdesc='Shisen-Sho Mahjongg-like Tile Game'
+ depends=('kdebase-runtime' 'kdegames-libkdegames' 'kdegames-libkmahjongg')
+ url="http://kde.org/applications/games/kshisen/"
+ install='kdegames.install'
+ cd $srcdir/build/kshisen
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kshisen
+ make DESTDIR=$pkgdir install
+}
+
+package_kdegames-ksirk() {
+ pkgdesc='World Domination Strategy Game'
+ depends=('kdebase-runtime' 'kdegames-libkdegames')
+ url="http://kde.org/applications/games/ksirk/"
+ install='kdegames.install'
+ cd $srcdir/build/ksirk
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/ksirk
+ make DESTDIR=$pkgdir install
+}
+
+package_kdegames-kspaceduel() {
+ pkgdesc='Space Arcade Game'
+ depends=('kdebase-runtime' 'kdegames-libkdegames')
+ url="http://kde.org/applications/games/kspaceduel/"
+ install='kdegames.install'
+ cd $srcdir/build/kspaceduel
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kspaceduel
+ make DESTDIR=$pkgdir install
+}
+
+package_kdegames-ksquares() {
+ pkgdesc='Connect the dots to create squares'
+ depends=('kdebase-runtime' 'kdegames-libkdegames' 'ggz-client-libs')
+ url="http://kde.org/applications/games/ksquares/"
+ install='kdegames-ksquares.install'
+ cd $srcdir/build/ksquares
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/ksquares
+ make DESTDIR=$pkgdir install
+ install -D -m644 $srcdir/${pkgbase}-${pkgver}/ksquares/src/module.dsc \
+ $pkgdir/usr/share/ggz/ksquares.dsc
+}
+
+package_kdegames-ksudoku() {
+ pkgdesc='KSudoku, Sudoku game & more for KDE'
+ depends=('kdebase-runtime' 'kdegames-libkdegames')
+ url="http://kde.org/applications/games/ksudoku/"
+ install='kdegames.install'
+ cd $srcdir/build/ksudoku
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/ksudoku
+ make DESTDIR=$pkgdir install
+}
+
+package_kdegames-ktron() {
+ pkgdesc='Tron-like Game'
+ depends=('kdebase-runtime' 'kdegames-libkdegames')
+ url="http://kde.org/applications/games/ktron/"
+ install='kdegames.install'
+ cd $srcdir/build/ktron
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/ktron
+ make DESTDIR=$pkgdir install
+}
+
+package_kdegames-ktuberling() {
+ pkgdesc='Picture Game for Children'
+ depends=('kdebase-runtime' 'kdegames-libkdegames')
+ url="http://kde.org/applications/games/ktuberling/"
+ install='kdegames.install'
+ cd $srcdir/build/ktuberling
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/ktuberling
+ make DESTDIR=$pkgdir install
+}
+
+package_kdegames-kubrick() {
+ pkgdesc='A 3-D game based on Rubik´s Cube'
+ depends=('kdebase-runtime' 'kdegames-libkdegames')
+ url="http://kde.org/applications/games/kubrick/"
+ install='kdegames.install'
+ cd $srcdir/build/kubrick
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kubrick
+ make DESTDIR=$pkgdir install
+}
+
+package_kdegames-libkdegames() {
+ pkgdesc='KDE game library'
+ groups=()
+ depends=('kdelibs')
+ cd $srcdir/build/libkdegames
+ make DESTDIR=$pkgdir install
+ for i in $srcdir/${pkgbase}-${pkgver}/cmake/modules/*.cmake; do
+ install -D -m644 $i $pkgdir/usr/share/apps/cmake/modules/$(basename $i)
+ done
+}
+
+package_kdegames-libkmahjongg() {
+ pkgdesc='Library used for loading and rendering of Mahjongg tilesets'
+ groups=()
+ depends=('kdelibs')
+ cd $srcdir/build/libkmahjongg
+ make DESTDIR=$pkgdir install
+}
+
+package_kdegames-lskat() {
+ pkgdesc='Card Game'
+ depends=('kdebase-runtime' 'kdegames-libkdegames')
+ url="http://kde.org/applications/games/lskat/"
+ install='kdegames.install'
+ cd $srcdir/build/lskat
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/lskat
+ make DESTDIR=$pkgdir install
+}
+
+package_kdegames-palapeli() {
+ pkgdesc='Jigsaw puzzle game'
+ depends=('kdebase-runtime' 'kdegames-libkdegames')
+ url="http://kde.org/applications/games/palapeli/"
+ install='kdegames-palapeli.install'
+ cd $srcdir/build/palapeli
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/palapeli
+ make DESTDIR=$pkgdir install
+}
diff --git a/extra/kdegames/kdegames-kbattleship.install b/extra/kdegames/kdegames-kbattleship.install
new file mode 100644
index 000000000..ae4e089cb
--- /dev/null
+++ b/extra/kdegames/kdegames-kbattleship.install
@@ -0,0 +1,22 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+ ggz-config -i -f -m usr/share/ggz/kbattleship.dsc >& /dev/null
+}
+
+pre_remove() {
+ if [ -f usr/share/ggz/kbattleship.dsc ]; then
+ ggz-config -r -m usr/share/ggz/kbattleship.dsc >& /dev/null
+ fi
+}
+
+pre_upgrade() {
+ pre_remove
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+}
diff --git a/extra/kdegames/kdegames-kreversi.install b/extra/kdegames/kdegames-kreversi.install
new file mode 100644
index 000000000..4623e6e49
--- /dev/null
+++ b/extra/kdegames/kdegames-kreversi.install
@@ -0,0 +1,22 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+ ggz-config -i -f -m usr/share/ggz/kreversi.dsc >& /dev/null
+}
+
+pre_remove() {
+ if [ -f usr/share/ggz/kreversi.dsc ]; then
+ ggz-config -r -m usr/share/ggz/kreversi.dsc >& /dev/null
+ fi
+}
+
+pre_upgrade() {
+ pre_remove
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+}
diff --git a/extra/kdegames/kdegames-ksquares.install b/extra/kdegames/kdegames-ksquares.install
new file mode 100644
index 000000000..5a619897d
--- /dev/null
+++ b/extra/kdegames/kdegames-ksquares.install
@@ -0,0 +1,22 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+ ggz-config -i -f -m usr/share/ggz/ksquares.dsc >& /dev/null
+}
+
+pre_remove() {
+ if [ -f usr/share/ggz/ksquares.dsc ]; then
+ ggz-config -r -m usr/share/ggz/ksquares.dsc >& /dev/null
+ fi
+}
+
+pre_upgrade() {
+ pre_remove
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+}
diff --git a/extra/kdegames/kdegames-palapeli.install b/extra/kdegames/kdegames-palapeli.install
new file mode 100644
index 000000000..ce5c32e1b
--- /dev/null
+++ b/extra/kdegames/kdegames-palapeli.install
@@ -0,0 +1,12 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+ update-mime-database usr/share/mime &> /dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+} \ No newline at end of file
diff --git a/extra/kdegames/kdegames.install b/extra/kdegames/kdegames.install
new file mode 100644
index 000000000..e70c054ec
--- /dev/null
+++ b/extra/kdegames/kdegames.install
@@ -0,0 +1,11 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/extra/kdegraphics/PKGBUILD b/extra/kdegraphics/PKGBUILD
new file mode 100644
index 000000000..9af1e59e2
--- /dev/null
+++ b/extra/kdegraphics/PKGBUILD
@@ -0,0 +1,141 @@
+# $Id: PKGBUILD 111771 2011-02-28 23:53:51Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Pierre Schmitz <pierre@archlinux.de>
+
+pkgbase=kdegraphics
+pkgname=('kdegraphics-gwenview'
+ 'kdegraphics-kamera'
+ 'kdegraphics-kcolorchooser'
+ 'kdegraphics-kgamma'
+ 'kdegraphics-kolourpaint'
+ 'kdegraphics-kruler'
+ 'kdegraphics-ksnapshot'
+ 'kdegraphics-libs'
+ 'kdegraphics-okular')
+pkgver=4.6.1
+pkgrel=1
+arch=('i686' 'x86_64')
+url='http://www.kde.org'
+license=('GPL' 'LGPL' 'FDL')
+groups=('kde' 'kdegraphics')
+makedepends=('pkgconfig' 'cmake' 'automoc4' 'qimageblitz' 'sane' 'lcms'
+ 'libxxf86vm' 'poppler-qt' 'libspectre' 'chmlib' 'djvulibre'
+ 'ebook-tools' 'kdebase-runtime' 'docbook-xsl')
+source=("http://download.kde.org/stable/${pkgver}/src/${pkgbase}-${pkgver}.tar.bz2")
+sha1sums=('8a96d927be9a41ff9a7d222474d0e4759346415b')
+
+build() {
+ cd ${srcdir}
+ mkdir build
+ cd build
+ cmake ../${pkgbase}-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_SKIP_RPATH=ON \
+ -DCMAKE_INSTALL_PREFIX=/usr
+ make
+}
+
+package_kdegraphics-gwenview() {
+ pkgdesc='A simple image viewer'
+ depends=('kdebase-runtime' 'kdegraphics-libs')
+ url="http://kde.org/applications/graphics/gwenview/"
+ replaces=('gwenview' 'gwenview-i18n')
+ install='kdegraphics.install'
+ cd $srcdir/build/gwenview
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/gwenview
+ make DESTDIR=$pkgdir install
+}
+
+package_kdegraphics-kamera() {
+ pkgdesc='Configure Kamera'
+ depends=('kdelibs' 'libgphoto2')
+ cd $srcdir/build/kamera
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kcontrol/kamera
+ make DESTDIR=$pkgdir install
+}
+
+package_kdegraphics-kcolorchooser() {
+ pkgdesc='Color Chooser'
+ depends=('kdebase-runtime')
+ url="http://kde.org/applications/graphics/kcolorchooser/"
+ install='kdegraphics.install'
+ cd $srcdir/build/kcolorchooser
+ make DESTDIR=$pkgdir install
+}
+
+package_kdegraphics-kgamma() {
+ pkgdesc='A monitor calibration tool'
+ # note on libxxf86vm:
+ # not detected by namcap because libgl depends on it
+ # but nvidia providing libgl does not depend on libxxf86vm
+ depends=('kdebase-runtime' 'libxxf86vm')
+ install='kdegraphics.install'
+ cd $srcdir/build/kgamma
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kcontrol/kgamma
+ make DESTDIR=$pkgdir install
+}
+
+package_kdegraphics-kolourpaint() {
+ pkgdesc='Paint Program'
+ depends=('kdebase-runtime' 'qimageblitz' 'kdegraphics-libs')
+ url="http://kde.org/applications/graphics/kolourpaint/"
+ install='kdegraphics.install'
+ cd $srcdir/build/kolourpaint
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kolourpaint
+ make DESTDIR=$pkgdir install
+}
+
+package_kdegraphics-kruler() {
+ pkgdesc='Screen Ruler'
+ depends=('kdebase-runtime')
+ url="http://kde.org/applications/graphics/kruler/"
+ install='kdegraphics.install'
+ cd $srcdir/build/kruler
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kruler
+ make DESTDIR=$pkgdir install
+}
+
+package_kdegraphics-ksnapshot() {
+ pkgdesc='Screen Capture Program'
+ depends=('kdebase-runtime' 'kdegraphics-libs')
+ url="http://kde.org/applications/graphics/ksnapshot/"
+ install='kdegraphics.install'
+ cd $srcdir/build/ksnapshot
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/ksnapshot
+ make DESTDIR=$pkgdir install
+}
+
+package_kdegraphics-libs() {
+ pkgdesc='Support library for KDE Graphics Software'
+ groups=()
+ depends=('kdelibs' 'sane' 'lcms')
+ conflicts=('kdegraphics-ksaneplugin' 'kdegraphics-strigi-analyzer'
+ 'kdegraphics-svgpart' 'kdegraphics-thumbnailers')
+ replaces=('libkexiv2' 'libkdcraw' 'kdegraphics-ksaneplugin'
+ 'kdegraphics-strigi-analyzer' 'kdegraphics-svgpart' 'kdegraphics-thumbnailers')
+ install='kdegraphics.install'
+ for i in libs ksaneplugin strigi-analyzer svgpart thumbnailers; do
+ cd $srcdir/build/${i}
+ make DESTDIR=$pkgdir install
+ done
+ install -D -m644 $srcdir/${pkgbase}-${pkgver}/cmake/modules/FindKSane.cmake \
+ $pkgdir/usr/share/apps/cmake/modules/FindKSane.cmake
+}
+
+package_kdegraphics-okular() {
+ pkgdesc='Document Viewer'
+ depends=('kdebase-runtime' 'qimageblitz' 'poppler-qt' 'chmlib' 'djvulibre'
+ 'ebook-tools' 'libspectre')
+ url="http://kde.org/applications/graphics/okular/"
+ install='kdegraphics.install'
+ cd $srcdir/build/okular
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/okular
+ make DESTDIR=$pkgdir install
+}
diff --git a/extra/kdegraphics/kdegraphics.install b/extra/kdegraphics/kdegraphics.install
new file mode 100644
index 000000000..e70c054ec
--- /dev/null
+++ b/extra/kdegraphics/kdegraphics.install
@@ -0,0 +1,11 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/extra/kdelibs/CVE-2011-1168.patch b/extra/kdelibs/CVE-2011-1168.patch
new file mode 100644
index 000000000..007eef910
--- /dev/null
+++ b/extra/kdelibs/CVE-2011-1168.patch
@@ -0,0 +1,14 @@
+--- a/khtml/khtml_part.cpp
++++ b/khtml/khtml_part.cpp
+@@ -1804,7 +1804,10 @@ void KHTMLPart::htmlError( int errorCode
+ stream >> errorName >> techName >> description >> causes >> solutions;
+
+ QString url, protocol, datetime;
+- url = Qt::escape( reqUrl.prettyUrl() );
++
++ // This is somewhat confusing, but we have to escape the externally-
++ // controlled URL twice: once for i18n, and once for HTML.
++ url = Qt::escape( Qt::escape( reqUrl.prettyUrl() ) );
+ protocol = reqUrl.protocol();
+ datetime = KGlobal::locale()->formatDateTime( QDateTime::currentDateTime(),
+ KLocale::LongDate );
diff --git a/extra/kdelibs/PKGBUILD b/extra/kdelibs/PKGBUILD
new file mode 100644
index 000000000..10122d1a4
--- /dev/null
+++ b/extra/kdelibs/PKGBUILD
@@ -0,0 +1,70 @@
+# $Id: PKGBUILD 117004 2011-03-27 13:27:39Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org
+# Contributor: Pierre Schmitz <pierre@archlinux.de>
+
+pkgname=kdelibs
+pkgver=4.6.1
+pkgrel=3
+pkgdesc="KDE Core Libraries"
+arch=('i686' 'x86_64')
+url='http://www.kde.org'
+license=('GPL' 'LGPL' 'FDL')
+depends=('strigi' 'attica' 'libxss' 'xz' 'openssl' 'soprano' 'heimdal'
+ 'shared-desktop-ontologies' 'qca' 'libdbusmenu-qt' 'polkit-qt' 'grantlee'
+ 'shared-mime-info' 'enchant' 'giflib' 'jasper' 'openexr' 'xdg-utils'
+ 'phonon' 'hicolor-icon-theme' 'upower' 'udisks' 'libxcursor'
+ 'docbook-xsl')
+makedepends=('pkgconfig' 'cmake' 'automoc4' 'intltool' 'avahi' 'libgl'
+ 'hspell')
+replaces=('arts' 'kdelibs-experimental')
+install='kdelibs.install'
+source=("http://download.kde.org/stable/${pkgver}/src/${pkgname}-${pkgver}.tar.bz2"
+ 'kde-applications-menu.patch' 'archlinux-menu.patch' 'abs-syntax-highlight.patch'
+ 'CVE-2011-1168.patch'
+ 'fix-empty-dolphin-home.patch')
+sha1sums=('5868d43084b2dc9de4c0404dbec137375664e893'
+ '86ee8c8660f19de8141ac99cd6943964d97a1ed7'
+ '63a850ab4196b9d06934f2b4a13acd9f7739bc67'
+ 'd994f262356af5b9e4e9619646e471bd98c91efb'
+ '730534a337c88ef2a7c716f5d118f445d06898e7'
+ 'aaec293322f1483990ad8edbb1ec1a6dd69cf3ee')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ # avoid file conflict with gnome-menu
+ patch -p1 -i $srcdir/kde-applications-menu.patch
+ # add Archlinux menu entry
+ patch -p1 -i $srcdir/archlinux-menu.patch
+ # add syntax highlightning for PKGBUILD and .install files
+ patch -p1 -i $srcdir/abs-syntax-highlight.patch
+
+ # Already fixed upstream
+ patch -Np1 -i ${srcdir}/CVE-2011-1168.patch
+ patch -Np1 -i ${srcdir}/fix-empty-dolphin-home.patch
+
+ cd ${srcdir}
+ mkdir build
+ cd build
+ cmake ../${pkgname}-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_SKIP_RPATH=ON \
+ -DKDE_DISTRIBUTION_TEXT='Arch Linux' \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DSYSCONF_INSTALL_DIR=/etc \
+ -DHTML_INSTALL_DIR=/usr/share/doc/kde/html \
+ -DKDE_DEFAULT_HOME='.kde4' \
+ -DWITH_FAM=OFF \
+ -DKAUTH_BACKEND=PolkitQt-1
+ make
+}
+
+package() {
+ cd $srcdir/build
+ make DESTDIR=$pkgdir install
+
+ # cert bundle seems to be hardcoded
+ # link it to the one from ca-certificates
+ rm -f $pkgdir/usr/share/apps/kssl/ca-bundle.crt
+ ln -sf /etc/ssl/certs/ca-certificates.crt $pkgdir/usr/share/apps/kssl/ca-bundle.crt
+}
diff --git a/extra/kdelibs/abs-syntax-highlight.patch b/extra/kdelibs/abs-syntax-highlight.patch
new file mode 100644
index 000000000..477479a9b
--- /dev/null
+++ b/extra/kdelibs/abs-syntax-highlight.patch
@@ -0,0 +1,12 @@
+diff -Nura kdelibs-4.3.0.orig/kate/syntax/data/bash.xml kdelibs-4.3.0/kate/syntax/data/bash.xml
+--- kdelibs-4.3.0.orig/kate/syntax/data/bash.xml 2009-04-15 12:26:37.000000000 +0200
++++ kdelibs-4.3.0/kate/syntax/data/bash.xml 2009-07-30 13:24:01.000000000 +0200
+@@ -8,7 +8,7 @@
+ <!ENTITY noword "(?![\w$+-])"> <!-- no word, $, + or - following -->
+ <!ENTITY pathpart "([\w_@.&#37;*?+-]|\\ )"> <!-- valid character in a file name -->
+ ]>
+-<language name="Bash" version="2.12" kateversion="2.4" section="Scripts" extensions="*.sh;*.bash;*.ebuild;*.eclass;.bashrc;.bash_profile;.bash_login;.profile" mimetype="application/x-shellscript" casesensitive="1" author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL">
++<language name="Bash" version="2.12" kateversion="2.4" section="Scripts" extensions="*.sh;*.bash;*.ebuild;*.eclass;.bashrc;.bash_profile;.bash_login;.profile;PKGBUILD;*.install" mimetype="application/x-shellscript" casesensitive="1" author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL">
+
+ <!-- (c) 2004 by Wilbert Berendsen (wilbert@kde.nl)
+ Changes by Matthew Woehlke (mw_triad@users.sourceforge.net)
diff --git a/extra/kdelibs/archlinux-menu.patch b/extra/kdelibs/archlinux-menu.patch
new file mode 100644
index 000000000..546784fa2
--- /dev/null
+++ b/extra/kdelibs/archlinux-menu.patch
@@ -0,0 +1,22 @@
+--- kdelibs-4.3.98/kded/applications.menu 2010-01-31 19:28:11.000000000 +0000
++++ kdelibs-4.3.98/kded/applications.menu 2010-01-31 22:25:53.556043077 +0000
+@@ -16,11 +16,19 @@
+ </DefaultLayout>
+ <Layout>
+ <Merge type="menus"/>
++ <Menuname>Arch Linux</Menuname>
+ <Menuname>Applications</Menuname>
+ <Merge type="files"/>
+ </Layout>
+
+ <Menu>
++ <Name>Arch Linux</Name>
++ <Directory>Archlinux.directory</Directory>
++ <Include>
++ <Category>Archlinux</Category>
++ </Include>
++ </Menu>
++ <Menu>
+ <Name>Applications</Name>
+ <Directory>kde-unknown.directory</Directory>
+ <OnlyUnallocated/>
diff --git a/extra/kdelibs/fix-empty-dolphin-home.patch b/extra/kdelibs/fix-empty-dolphin-home.patch
new file mode 100644
index 000000000..064a87e04
--- /dev/null
+++ b/extra/kdelibs/fix-empty-dolphin-home.patch
@@ -0,0 +1,389 @@
+commit 51707e7154082b549216b8a8ecde73505302fadc
+Author: David Faure <faure@kde.org>
+Date: Tue Mar 8 11:23:47 2011 +0100
+
+ Fix stop() killing the list job even if another dirlister needs it.
+
+ Regression introduced by me in bef0bd3e3ff.
+ Symptom: "dolphin $HOME" showed up empty.
+
+ In the case of concurrent listings, I made the use of the cached items job
+ conditional (only created if there's anything to emit) so that we can join
+ the current listjob without killing it (updateDirectory) if it hasn't emitted
+ anything yet.
+ The unittest also uncovered inconsistencies in the emission of the cancelled
+ signal, now cacheditemsjob behaves like the listjob in this respect.
+
+ FIXED-IN: 4.6.2
+ BUG: 267709
+
+diff --git a/kio/kio/kdirlister.cpp b/kio/kio/kdirlister.cpp
+index 75360e08f..df81dc8 100644
+--- a/kio/kio/kdirlister.cpp
++++ b/kio/kio/kdirlister.cpp
+@@ -194,7 +194,7 @@ bool KDirListerCache::listDir( KDirLister *lister, const KUrl& _u,
+
+ // List items from the cache in a delayed manner, just like things would happen
+ // if we were not using the cache.
+- new KDirLister::Private::CachedItemsJob(lister, itemU->lstItems, itemU->rootItem, _url, _reload);
++ new KDirLister::Private::CachedItemsJob(lister, _url, _reload);
+
+ } else {
+ // dir not in cache or _reload is true
+@@ -260,8 +260,13 @@ bool KDirListerCache::listDir( KDirLister *lister, const KUrl& _u,
+
+ // List existing items in a delayed manner, just like things would happen
+ // if we were not using the cache.
+- //kDebug() << "Listing" << itemU->lstItems.count() << "cached items soon";
+- new KDirLister::Private::CachedItemsJob(lister, itemU->lstItems, itemU->rootItem, _url, _reload);
++ if (!itemU->lstItems.isEmpty()) {
++ kDebug() << "Listing" << itemU->lstItems.count() << "cached items soon";
++ new KDirLister::Private::CachedItemsJob(lister, _url, _reload);
++ } else {
++ // The other lister hasn't emitted anything yet. Good, we'll just listen to it.
++ // One problem could be if we have _reload=true and the existing job doesn't, though.
++ }
+
+ #ifdef DEBUG_CACHE
+ printDebug();
+@@ -280,11 +285,9 @@ KDirLister::Private::CachedItemsJob* KDirLister::Private::cachedItemsJobForUrl(c
+ return 0;
+ }
+
+-KDirLister::Private::CachedItemsJob::CachedItemsJob(KDirLister* lister, const KFileItemList& items,
+- const KFileItem& rootItem, const KUrl& url, bool reload)
++KDirLister::Private::CachedItemsJob::CachedItemsJob(KDirLister* lister, const KUrl& url, bool reload)
+ : KJob(lister),
+ m_lister(lister), m_url(url),
+- m_items(items), m_rootItem(rootItem),
+ m_reload(reload), m_emitCompleted(true)
+ {
+ //kDebug() << "Creating CachedItemsJob" << this << "for lister" << lister << url;
+@@ -301,40 +304,70 @@ void KDirLister::Private::CachedItemsJob::done()
+ {
+ if (!m_lister) // job was already killed, but waiting deletion due to deleteLater
+ return;
+- kDirListerCache->emitItemsFromCache(this, m_lister, m_items, m_rootItem, m_url, m_reload, m_emitCompleted);
++ kDirListerCache->emitItemsFromCache(this, m_lister, m_url, m_reload, m_emitCompleted);
+ emitResult();
+ }
+
+ bool KDirLister::Private::CachedItemsJob::doKill()
+ {
+- //kDebug() << this;
+- kDirListerCache->emitItemsFromCache(this, m_lister, KFileItemList(), KFileItem(), m_url, false, false);
++ //kDebug(7004) << this;
++ kDirListerCache->forgetCachedItemsJob(this, m_lister, m_url);
++ if (!property("_kdlc_silent").toBool()) {
++ emit m_lister->canceled(m_url);
++ emit m_lister->canceled();
++ }
+ m_lister = 0;
+ return true;
+ }
+
+-void KDirListerCache::emitItemsFromCache(KDirLister::Private::CachedItemsJob* cachedItemsJob, KDirLister* lister, const KFileItemList& items, const KFileItem& rootItem, const KUrl& _url, bool _reload, bool _emitCompleted)
++void KDirListerCache::emitItemsFromCache(KDirLister::Private::CachedItemsJob* cachedItemsJob, KDirLister* lister, const KUrl& _url, bool _reload, bool _emitCompleted)
+ {
+ const QString urlStr = _url.url();
+- DirItem *itemU = kDirListerCache->itemsInUse.value(urlStr);
+- Q_ASSERT(itemU); // hey we're listing that dir, so this can't be 0, right?
+-
+ KDirLister::Private* kdl = lister->d;
+-
+ kdl->complete = false;
+
+- if (kdl->rootFileItem.isNull() && !rootItem.isNull() && kdl->url == _url) {
+- kdl->rootFileItem = rootItem;
++ DirItem *itemU = kDirListerCache->itemsInUse.value(urlStr);
++ if (!itemU) {
++ kWarning(7004) << "Can't find item for directory" << urlStr << "anymore";
++ } else {
++ const KFileItemList items = itemU->lstItems;
++ const KFileItem rootItem = itemU->rootItem;
++ _reload = _reload || !itemU->complete;
++
++ if (kdl->rootFileItem.isNull() && !rootItem.isNull() && kdl->url == _url) {
++ kdl->rootFileItem = rootItem;
++ }
++ if (!items.isEmpty()) {
++ //kDebug(7004) << "emitting" << items.count() << "for lister" << lister;
++ kdl->addNewItems(_url, items);
++ kdl->emitItems();
++ }
+ }
+- if (!items.isEmpty()) {
+- //kDebug(7004) << "emitting" << items.count() << "for lister" << lister;
+- kdl->addNewItems(_url, items);
+- kdl->emitItems();
++
++ forgetCachedItemsJob(cachedItemsJob, lister, _url);
++
++ // Emit completed, unless we were told not to,
++ // or if listDir() was called while another directory listing for this dir was happening,
++ // so we "joined" it. We detect that using jobForUrl to ensure it's a real ListJob,
++ // not just a lister-specific CachedItemsJob (which wouldn't emit completed for us).
++ if (_emitCompleted) {
++
++ kdl->complete = true;
++ emit lister->completed( _url );
++ emit lister->completed();
++
++ if ( _reload ) {
++ updateDirectory( _url );
++ }
+ }
++}
+
++void KDirListerCache::forgetCachedItemsJob(KDirLister::Private::CachedItemsJob* cachedItemsJob, KDirLister* lister, const KUrl& _url)
++{
+ // Modifications to data structures only below this point;
+ // so that addNewItems is called with a consistent state
+
++ const QString urlStr = _url.url();
+ lister->d->m_cachedItemsJobs.removeAll(cachedItemsJob);
+
+ KDirListerCacheDirectoryData& dirData = directoryData[urlStr];
+@@ -343,27 +376,12 @@ void KDirListerCache::emitItemsFromCache(KDirLister::Private::CachedItemsJob* ca
+ KIO::ListJob *listJob = jobForUrl(urlStr);
+ if (!listJob) {
+ Q_ASSERT(!dirData.listersCurrentlyHolding.contains(lister));
+- kDebug(7004) << "Moving from listing to holding, because no more job" << lister << urlStr;
++ //kDebug(7004) << "Moving from listing to holding, because no more job" << lister << urlStr;
+ dirData.listersCurrentlyHolding.append( lister );
+ dirData.listersCurrentlyListing.removeAll( lister );
+ } else {
+ //kDebug(7004) << "Still having a listjob" << listJob << ", so not moving to currently-holding.";
+ }
+-
+- // Emit completed, unless we were told not to,
+- // or if listDir() was called while another directory listing for this dir was happening,
+- // so we "joined" it. We detect that using jobForUrl to ensure it's a real ListJob,
+- // not just a lister-specific CachedItemsJob (which wouldn't emit completed for us).
+- if (_emitCompleted) {
+-
+- kdl->complete = true;
+- emit lister->completed( _url );
+- emit lister->completed();
+-
+- if ( _reload || !itemU->complete ) {
+- updateDirectory( _url );
+- }
+- }
+ }
+
+ bool KDirListerCache::validUrl( const KDirLister *lister, const KUrl& url ) const
+@@ -396,19 +414,13 @@ void KDirListerCache::stop( KDirLister *lister, bool silent )
+ #ifdef DEBUG_CACHE
+ //printDebug();
+ #endif
+- //kDebug(7004) << "lister: " << lister;
++ //kDebug(7004) << "lister:" << lister << "silent=" << silent;
+
+ const KUrl::List urls = lister->d->lstDirs;
+ Q_FOREACH(const KUrl& url, urls) {
+- //kDebug() << "Stopping any listjob for" << url.url();
+- stopListJob(url.url(), silent);
++ stopListingUrl(lister, url, silent);
+ }
+-
+- Q_FOREACH(KDirLister::Private::CachedItemsJob* job, lister->d->m_cachedItemsJobs) {
+- //kDebug() << "Killing cached items job";
+- job->kill(); // removes job from list, too
+- }
+-
++
+ #if 0 // test code
+ QHash<QString,KDirListerCacheDirectoryData>::iterator dirit = directoryData.begin();
+ const QHash<QString,KDirListerCacheDirectoryData>::iterator dirend = directoryData.end();
+@@ -416,6 +428,7 @@ void KDirListerCache::stop( KDirLister *lister, bool silent )
+ KDirListerCacheDirectoryData& dirData = dirit.value();
+ if (dirData.listersCurrentlyListing.contains(lister)) {
+ kDebug(7004) << "ERROR: found lister" << lister << "in list - for" << dirit.key();
++ Q_ASSERT(false);
+ }
+ }
+ #endif
+@@ -429,6 +442,9 @@ void KDirListerCache::stopListingUrl(KDirLister *lister, const KUrl& _u, bool si
+
+ KDirLister::Private::CachedItemsJob* cachedItemsJob = lister->d->cachedItemsJobForUrl(url);
+ if (cachedItemsJob) {
++ if (silent) {
++ cachedItemsJob->setProperty("_kdlc_silent", true);
++ }
+ cachedItemsJob->kill(); // removes job from list, too
+ }
+
+@@ -440,9 +456,18 @@ void KDirListerCache::stopListingUrl(KDirLister *lister, const KUrl& _u, bool si
+ return;
+ KDirListerCacheDirectoryData& dirData = dirit.value();
+ if (dirData.listersCurrentlyListing.contains(lister)) {
+-
+ //kDebug(7004) << " found lister" << lister << "in list - for" << urlStr;
+- stopListJob(urlStr, silent);
++ if (dirData.listersCurrentlyListing.count() == 1) {
++ // This was the only dirlister interested in the list job -> kill the job
++ stopListJob(urlStr, silent);
++ } else {
++ // Leave the job running for the other dirlisters, just unsubscribe us.
++ dirData.listersCurrentlyListing.removeAll(lister);
++ if (!silent) {
++ emit lister->canceled();
++ emit lister->canceled(url);
++ }
++ }
+ }
+ }
+
+@@ -460,9 +485,10 @@ void KDirListerCache::stopListJob(const QString& url, bool silent)
+
+ KIO::ListJob *job = jobForUrl(url);
+ if (job) {
+- //kDebug() << "Killing list job" << job;
+- if (silent)
++ //kDebug() << "Killing list job" << job << "for" << url;
++ if (silent) {
+ job->setProperty("_kdlc_silent", true);
++ }
+ job->kill(KJob::EmitResult);
+ }
+ }
+diff --git a/kio/kio/kdirlister_p.h b/kio/kio/kdirlister_p.h
+index 4464c16..dd4c00f 100644
+--- a/kio/kio/kdirlister_p.h
++++ b/kio/kio/kdirlister_p.h
+@@ -209,10 +209,12 @@ public:
+ KFileItem *findByUrl(const KDirLister *lister, const KUrl &url) const;
+
+ // Called by CachedItemsJob:
+- // Emits those items, for this lister and this url
++ // Emits the cached items, for this lister and this url
+ void emitItemsFromCache(KDirLister::Private::CachedItemsJob* job, KDirLister* lister,
+- const KFileItemList& lst, const KFileItem& rootItem,
+ const KUrl& _url, bool _reload, bool _emitCompleted);
++ // Called by CachedItemsJob:
++ void forgetCachedItemsJob(KDirLister::Private::CachedItemsJob* job, KDirLister* lister,
++ const KUrl& url);
+
+ public Q_SLOTS:
+ /**
+@@ -464,8 +466,7 @@ struct KDirListerCacheDirectoryData
+ class KDirLister::Private::CachedItemsJob : public KJob {
+ Q_OBJECT
+ public:
+- CachedItemsJob(KDirLister* lister, const KFileItemList& items, const KFileItem& rootItem,
+- const KUrl& url, bool reload);
++ CachedItemsJob(KDirLister* lister, const KUrl& url, bool reload);
+
+ /*reimp*/ void start() { QMetaObject::invokeMethod(this, "done", Qt::QueuedConnection); }
+
+@@ -483,8 +484,6 @@ public Q_SLOTS:
+ private:
+ KDirLister* m_lister;
+ KUrl m_url;
+- KFileItemList m_items;
+- KFileItem m_rootItem;
+ bool m_reload;
+ bool m_emitCompleted;
+ };
+diff --git a/kio/tests/kdirlistertest.cpp b/kio/tests/kdirlistertest.cpp
+index e543c1f..3047fdd 100644
+--- a/kio/tests/kdirlistertest.cpp
++++ b/kio/tests/kdirlistertest.cpp
+@@ -678,12 +678,83 @@ void KDirListerTest::testConcurrentHoldingListing()
+ QCOMPARE(m_dirLister.spyClear.count(), 1);
+ QCOMPARE(m_dirLister.spyClearKUrl.count(), 0);
+ QVERIFY(dirLister2.isFinished());
+- disconnect(&dirLister2, 0, this, 0);
+ QVERIFY(m_dirLister.isFinished());
+ disconnect(&m_dirLister, 0, this, 0);
+ QCOMPARE(m_items.count(), origItemCount);
+ }
+
++void KDirListerTest::testConcurrentListingAndStop()
++{
++ m_items.clear();
++ m_items2.clear();
++
++ MyDirLister dirLister2;
++
++ // Use a new tempdir for this test, so that we don't use the cache at all.
++ KTempDir tempDir;
++ const QString path = tempDir.name();
++ createTestFile(path+"file_1");
++ createTestFile(path+"file_2");
++ createTestFile(path+"file_3");
++
++ connect(&m_dirLister, SIGNAL(newItems(KFileItemList)), this, SLOT(slotNewItems(KFileItemList)));
++ connect(&dirLister2, SIGNAL(newItems(KFileItemList)), this, SLOT(slotNewItems2(KFileItemList)));
++
++ // Before m_dirLister has time to emit the items, let's make dirLister2 call stop().
++ // This should not stop the list job for m_dirLister (#267709).
++ dirLister2.openUrl(KUrl(path), KDirLister::Reload);
++ m_dirLister.openUrl(KUrl(path)/*, KDirLister::Reload*/);
++
++ QCOMPARE(m_dirLister.spyStarted.count(), 1);
++ QCOMPARE(m_dirLister.spyCompleted.count(), 0);
++ QCOMPARE(m_dirLister.spyCompletedKUrl.count(), 0);
++ QCOMPARE(m_dirLister.spyCanceled.count(), 0);
++ QCOMPARE(m_dirLister.spyCanceledKUrl.count(), 0);
++ QCOMPARE(m_dirLister.spyClear.count(), 1);
++ QCOMPARE(m_dirLister.spyClearKUrl.count(), 0);
++ QCOMPARE(m_items.count(), 0);
++
++ QCOMPARE(dirLister2.spyStarted.count(), 1);
++ QCOMPARE(dirLister2.spyCompleted.count(), 0);
++ QCOMPARE(dirLister2.spyCompletedKUrl.count(), 0);
++ QCOMPARE(dirLister2.spyCanceled.count(), 0);
++ QCOMPARE(dirLister2.spyCanceledKUrl.count(), 0);
++ QCOMPARE(dirLister2.spyClear.count(), 1);
++ QCOMPARE(dirLister2.spyClearKUrl.count(), 0);
++ QCOMPARE(m_items2.count(), 0);
++ QVERIFY(!m_dirLister.isFinished());
++ QVERIFY(!dirLister2.isFinished());
++
++ dirLister2.stop();
++
++ QCOMPARE(dirLister2.spyStarted.count(), 1);
++ QCOMPARE(dirLister2.spyCompleted.count(), 0);
++ QCOMPARE(dirLister2.spyCompletedKUrl.count(), 0);
++ QCOMPARE(dirLister2.spyCanceled.count(), 1);
++ QCOMPARE(dirLister2.spyCanceledKUrl.count(), 1);
++ QCOMPARE(dirLister2.spyClear.count(), 1);
++ QCOMPARE(dirLister2.spyClearKUrl.count(), 0);
++ QCOMPARE(m_items2.count(), 0);
++
++ // then wait for completed
++ qDebug("waiting for completed");
++ connect(&m_dirLister, SIGNAL(completed()), this, SLOT(exitLoop()));
++ enterLoop();
++
++ QCOMPARE(m_items.count(), 3);
++ QCOMPARE(m_items2.count(), 0);
++
++ //QCOMPARE(m_dirLister.spyStarted.count(), 1); // 2 when in cache
++ QCOMPARE(m_dirLister.spyCompleted.count(), 1);
++ QCOMPARE(m_dirLister.spyCompletedKUrl.count(), 1);
++ QCOMPARE(m_dirLister.spyCanceled.count(), 0);
++ QCOMPARE(m_dirLister.spyCanceledKUrl.count(), 0);
++ QCOMPARE(m_dirLister.spyClear.count(), 1);
++ QCOMPARE(m_dirLister.spyClearKUrl.count(), 0);
++
++ disconnect(&m_dirLister, 0, this, 0);
++}
++
+ void KDirListerTest::testDeleteListerEarly()
+ {
+ // Do the same again, it should behave the same, even with the items in the cache
+diff --git a/kio/tests/kdirlistertest.h b/kio/tests/kdirlistertest.h
+index 531abd5..a781aca 100644
+--- a/kio/tests/kdirlistertest.h
++++ b/kio/tests/kdirlistertest.h
+@@ -101,6 +101,7 @@ private Q_SLOTS:
+ void testRenameAndOverwrite();
+ void testConcurrentListing();
+ void testConcurrentHoldingListing();
++ void testConcurrentListingAndStop();
+ void testDeleteListerEarly();
+ void testOpenUrlTwice();
+ void testOpenUrlTwiceWithKeep();
diff --git a/extra/kdelibs/kde-applications-menu.patch b/extra/kdelibs/kde-applications-menu.patch
new file mode 100644
index 000000000..4b513298a
--- /dev/null
+++ b/extra/kdelibs/kde-applications-menu.patch
@@ -0,0 +1,22 @@
+--- kdelibs-4.3.98/kded/CMakeLists.txt 2009-10-02 14:55:17.000000000 +0000
++++ kdelibs-4.3.98/kded/CMakeLists.txt 2010-01-31 22:16:13.946933892 +0000
+@@ -69,7 +69,7 @@
+ if (WIN32)
+ install( FILES applications.menu DESTINATION ${SHARE_INSTALL_PREFIX}/xdg/menus )
+ else (WIN32)
+-install( FILES applications.menu DESTINATION ${SYSCONF_INSTALL_DIR}/xdg/menus )
++install( FILES applications.menu DESTINATION ${SYSCONF_INSTALL_DIR}/xdg/menus RENAME kde-applications.menu )
+ endif (WIN32)
+ install( FILES kdedmodule.desktop DESTINATION ${SERVICETYPES_INSTALL_DIR} )
+ install( FILES kded.upd DESTINATION ${DATA_INSTALL_DIR}/kconf_update )
+--- kdelibs-4.3.98/kded/kbuildsycoca.cpp 2009-12-04 23:10:18.000000000 +0000
++++ kdelibs-4.3.98/kded/kbuildsycoca.cpp 2010-01-31 22:16:13.962766572 +0000
+@@ -302,7 +302,7 @@
+ if (!m_trackId.isEmpty())
+ g_vfolder->setTrackId(m_trackId);
+
+- VFolderMenu::SubMenu *kdeMenu = g_vfolder->parseMenu("applications.menu", true);
++ VFolderMenu::SubMenu *kdeMenu = g_vfolder->parseMenu("kde-applications.menu", true);
+
+ KServiceGroup::Ptr entry = g_bsgf->addNew("/", kdeMenu->directoryFile, KServiceGroup::Ptr(), false);
+ entry->setLayoutInfo(kdeMenu->layoutList);
diff --git a/extra/kdelibs/kdelibs.install b/extra/kdelibs/kdelibs.install
new file mode 100644
index 000000000..ce5c32e1b
--- /dev/null
+++ b/extra/kdelibs/kdelibs.install
@@ -0,0 +1,12 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+ update-mime-database usr/share/mime &> /dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+} \ No newline at end of file
diff --git a/extra/kdelibs3/PKGBUILD b/extra/kdelibs3/PKGBUILD
new file mode 100644
index 000000000..faa4afb94
--- /dev/null
+++ b/extra/kdelibs3/PKGBUILD
@@ -0,0 +1,85 @@
+# $ Id: $
+# Maintainer: Pierre Schmitz <pierre@archlinux.de>
+# Contributor: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=kdelibs3
+pkgver=3.5.10
+pkgrel=10
+pkgdesc='KDE3 Core Libraries'
+arch=('i686' 'x86_64')
+url='http://www.kde.org'
+license=('GPL' 'LGPL')
+depends=('libxslt' 'pcre' 'libart-lgpl' 'alsa-lib' 'libcups' 'jasper'
+ 'bzip2' 'libidn' 'openexr' 'aspell' 'qt3' 'ca-certificates')
+makedepends=('pkgconfig' 'cups' 'hspell' 'autoconf')
+options=('libtool')
+install='kdelibs3.install'
+source=("ftp://ftp.kde.org/pub/kde/stable/${pkgver}/src/kdelibs-${pkgver}.tar.bz2"
+ 'ftp://ftp.archlinux.org/other/kde/kde-3.5-1074156.patch.gz'
+ 'acinclude.patch'
+ 'kde3.profile'
+ 'kde4-compatibility.patch'
+ 'kconf_updaterc')
+md5sums=('43cd55ed15f63b5738d620ef9f9fd568'
+ 'ca50d4515468cfda80946690c53073f3'
+ 'a5aedcc9550809ce6672a7dddf9f5ad4'
+ 'ab14ce2c40698e24e162284d50c6f466'
+ 'f4e0735475b5de59d738d68a9f467b77'
+ '11e49bc6aca497f55610146afe217751')
+
+build() {
+ cd $srcdir/kdelibs-${pkgver}
+
+ . /etc/profile.d/qt3.sh
+ . $srcdir/kde3.profile
+
+ patch -p0 -i $srcdir/kde-3.5-1074156.patch || return 1
+ patch -p1 -i $srcdir/acinclude.patch || return 1
+ patch -p1 -i $srcdir/kde4-compatibility.patch || return 1
+
+ sed -iautomake -e 's|automake\*1.10\*|automake\*1.1[0-5]\*|' admin/cvs.sh
+ make -f admin/Makefile.common cvs
+
+ ./configure --prefix=/opt/kde \
+ --with-distribution='Arch Linux' \
+ --with-alsa \
+ --disable-debug \
+ --disable-dnssd \
+ --disable-dnotify \
+ --enable-inotify \
+ --enable-sendfile \
+ --without-lua \
+ --with-hspell \
+ --enable-gcc-hidden-visibility \
+ --enable-final \
+ --enable-new-ldflags LDFLAGS="${LDFLAGS} -L/opt/qt/lib" \
+ --without-arts \
+ --disable-libfam || return 1
+ make || return 1
+}
+
+package() {
+ cd $srcdir/kdelibs-${pkgver}
+
+ make DESTDIR=$pkgdir install || return 1
+
+ # disable broken kconf_update by default
+ install -D -m644 $srcdir/kconf_updaterc $pkgdir/opt/kde/share/config/kconf_updaterc
+
+ # install KDE3 profile
+ install -D -m755 $srcdir/kde3.profile $pkgdir/etc/profile.d/kde3.sh
+ # make KDE3 styles available to Qt3
+ install -d -m755 $pkgdir/opt/qt/plugins
+ ln -sf /opt/kde/lib/kde3/plugins/styles $pkgdir/opt/qt/plugins/styles
+
+ # cert bundle seems to be hardcoded
+ # link it to the one from ca-certificates
+ rm -f $pkgdir/opt/kde/share/apps/kssl/ca-bundle.crt
+ ln -sf /etc/ssl/certs/ca-certificates.crt $pkgdir/opt/kde/share/apps/kssl/ca-bundle.crt
+
+ # we don't have khelpcenter anyway
+ rm -rf $pkgdir/opt/kde/share/doc
+
+ install -d -m755 ${pkgdir}/etc/ld.so.conf.d/
+ echo '/opt/kde/lib' > ${pkgdir}/etc/ld.so.conf.d/kdelibs3.conf
+}
diff --git a/extra/kdelibs3/acinclude.patch b/extra/kdelibs3/acinclude.patch
new file mode 100644
index 000000000..0610d6df5
--- /dev/null
+++ b/extra/kdelibs3/acinclude.patch
@@ -0,0 +1,66 @@
+2009-12-10 Stepan Kasal <skasal@redhat.com>
+
+The change of implementation of AC_REQUIRE in 2.64 caused a regression
+in the arts project.
+This can be fixed by shuffling some macro calls.
+
+I suppose that most of this patch will not be needed with a future
+release of Autoconf.
+But the last chunk of this patch is a real bug in this source and
+should go upstream.
+
+--- arts-1.5.10/admin/acinclude.m4.in 2008-08-20 18:07:05.000000000 +0200
++++ arts-1.5.10/admin/acinclude.m4.in 2009-12-09 17:30:57.000000000 +0100
+@@ -3081,8 +3081,18 @@
+ fi
+ ])
+
++AC_DEFUN([AC_CHECK_COMPILERS_CC],
++[
++ dnl this prevents stupid AC_PROG_CC to add "-g" to the default CFLAGS
++ CFLAGS=" $CFLAGS"
++ AC_PROG_CC
++ CXXFLAGS=" $CXXFLAGS"
++ AC_PROG_CXX
++])
++
+ AC_DEFUN([AC_CHECK_COMPILERS],
+ [
++ AC_REQUIRE([AC_CHECK_COMPILERS_CC])
+ AC_ARG_ENABLE(debug,
+ AC_HELP_STRING([--enable-debug=ARG],[enables debug symbols (yes|no|full) [default=no]]),
+ [
+@@ -3141,11 +3151,6 @@
+ [kde_use_profiling="no"]
+ )
+
+- dnl this prevents stupid AC_PROG_CC to add "-g" to the default CFLAGS
+- CFLAGS=" $CFLAGS"
+-
+- AC_PROG_CC
+-
+ AC_PROG_CPP
+
+ if test "$GCC" = "yes"; then
+@@ -3174,10 +3179,6 @@
+ LDFLAGS=""
+ fi
+
+- CXXFLAGS=" $CXXFLAGS"
+-
+- AC_PROG_CXX
+-
+ KDE_CHECK_FOR_BAD_COMPILER
+
+ if test "$GXX" = "yes" || test "$CXX" = "KCC"; then
+@@ -3503,8 +3504,8 @@
+ AC_REQUIRE([AC_LIBTOOL_DLOPEN])
+ AC_REQUIRE([KDE_CHECK_LIB64])
+
+-AC_OBJEXT
+-AC_EXEEXT
++AC_REQUIRE([AC_OBJEXT])
++AC_REQUIRE([AC_EXEEXT])
+
+ AM_PROG_LIBTOOL
+ AC_LIBTOOL_CXX
diff --git a/extra/kdelibs3/kconf_updaterc b/extra/kdelibs3/kconf_updaterc
new file mode 100644
index 000000000..24c2623fb
--- /dev/null
+++ b/extra/kdelibs3/kconf_updaterc
@@ -0,0 +1,2 @@
+updateInfoAdded=false
+autoUpdateDisabled=true
diff --git a/extra/kdelibs3/kde3.profile b/extra/kdelibs3/kde3.profile
new file mode 100755
index 000000000..ef09631ff
--- /dev/null
+++ b/extra/kdelibs3/kde3.profile
@@ -0,0 +1,6 @@
+export PATH=$PATH:/opt/kde/bin
+if [ ! -z $XDG_DATA_DIRS ]; then
+ export XDG_DATA_DIRS=$XDG_DATA_DIRS:/opt/kde/share
+else
+ export XDG_DATA_DIRS=/opt/kde/share
+fi
diff --git a/extra/kdelibs3/kde4-compatibility.patch b/extra/kdelibs3/kde4-compatibility.patch
new file mode 100644
index 000000000..129c314ae
--- /dev/null
+++ b/extra/kdelibs3/kde4-compatibility.patch
@@ -0,0 +1,1012 @@
+diff -Nura kdelibs-3.5.10/kdecore/kcrash.cpp kdelibs-3.5.10.new/kdecore/kcrash.cpp
+--- kdelibs-3.5.10/kdecore/kcrash.cpp 2007-01-15 12:34:17.000000000 +0100
++++ kdelibs-3.5.10.new/kdecore/kcrash.cpp 2009-08-06 06:18:06.000000000 +0200
+@@ -158,7 +158,7 @@
+ int i = 0;
+
+ // argument 0 has to be drkonqi
+- argv[i++] = "drkonqi";
++ argv[i++] = "/usr/lib/kde4/libexec/drkonqi";
+
+ #if defined Q_WS_X11
+ // start up on the correct display
+@@ -325,7 +325,7 @@
+ _exit(253);
+ if(!geteuid() && setuid(getuid()) < 0)
+ _exit(253);
+- execvp("drkonqi", const_cast< char** >( argv ));
++ execvp("/usr/lib/kde4/libexec/drkonqi", const_cast< char** >( argv ));
+ _exit(errno);
+ }
+ else
+diff -Nura kdelibs-3.5.10/kded/Makefile.am kdelibs-3.5.10.new/kded/Makefile.am
+--- kdelibs-3.5.10/kded/Makefile.am 2005-10-10 17:06:29.000000000 +0200
++++ kdelibs-3.5.10.new/kded/Makefile.am 2009-08-06 06:21:37.000000000 +0200
+@@ -58,7 +58,7 @@
+ servicetype_DATA = kdedmodule.desktop
+ servicetypedir = $(kde_servicetypesdir)
+
+-xdg_menu_DATA = applications.menu
++xdg_menu_DATA = kde-applications.menu
+
+ update_DATA = kded.upd
+ updatedir = $(kde_datadir)/kconf_update
+diff -Nura kdelibs-3.5.10/kded/Makefile.in kdelibs-3.5.10.new/kded/Makefile.in
+--- kdelibs-3.5.10/kded/Makefile.in 2008-08-20 18:05:57.000000000 +0200
++++ kdelibs-3.5.10.new/kded/Makefile.in 2009-08-06 06:22:19.000000000 +0200
+@@ -535,7 +535,7 @@
+
+ servicetype_DATA = kdedmodule.desktop
+ servicetypedir = $(kde_servicetypesdir)
+-xdg_menu_DATA = applications.menu
++xdg_menu_DATA = kde-applications.menu
+ update_DATA = kded.upd
+ updatedir = $(kde_datadir)/kconf_update
+ #>- all: all-am
+@@ -1173,7 +1173,7 @@
+ -rm -f kded.moc vfolder_menu.moc kdedmodule.moc kbuildsycoca.moc
+
+ #>+ 2
+-KDE_DIST=DESIGN kded.upd Makefile.in HOWTO vfolder_menu.h applications.menu kded.h kdedmodule.desktop README.kded kctimefactory.h Makefile.am
++KDE_DIST=DESIGN kded.upd Makefile.in HOWTO vfolder_menu.h kde-applications.menu kded.h kdedmodule.desktop README.kded kctimefactory.h Makefile.am
+
+ #>+ 2
+ docs-am:
+diff -Nura kdelibs-3.5.10/kded/applications.menu kdelibs-3.5.10.new/kded/applications.menu
+--- kdelibs-3.5.10/kded/applications.menu 2005-09-10 10:27:40.000000000 +0200
++++ kdelibs-3.5.10.new/kded/applications.menu 1970-01-01 01:00:00.000000000 +0100
+@@ -1,469 +0,0 @@
+- <!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN"
+- "http://www.freedesktop.org/standards/menu-spec/1.0/menu.dtd">
+-
+-<Menu>
+- <Name>Applications</Name>
+- <Directory>kde-main.directory</Directory>
+- <!-- Search the default locations -->
+- <KDELegacyDirs/>
+- <DefaultAppDirs/>
+- <DefaultDirectoryDirs/>
+- <DefaultLayout>
+- <Merge type="menus"/>
+- <Merge type="files"/>
+- <Separator/>
+- <Menuname>More</Menuname>
+- </DefaultLayout>
+- <Layout>
+- <Merge type="menus"/>
+- <Menuname>Applications</Menuname>
+- <Merge type="files"/>
+- </Layout>
+-
+- <Menu>
+- <Name>Applications</Name>
+- <Directory>kde-unknown.directory</Directory>
+- <OnlyUnallocated/>
+- <Include>
+- <Not>
+- <!-- Don't list non-KDE core applications -->
+- <And>
+- <Category>Core</Category>
+- <Not><Category>KDE</Category></Not>
+- </And>
+- <!-- Don't list SUSE's YaST in here -->
+- <Category>X-SuSE-YaST</Category>
+- </Not>
+- </Include>
+- </Menu>
+- <Menu>
+- <Name>Development</Name>
+- <Directory>kde-development.directory</Directory>
+- <Menu>
+- <Name>X-KDE-KDevelopIDE</Name>
+- <Directory>kde-development-kdevelop.directory</Directory>
+- <Include>
+- <And>
+- <Category>Development</Category>
+- <Category>X-KDE-KDevelopIDE</Category>
+- </And>
+- </Include>
+- </Menu>
+- <Menu>
+- <Name>Translation</Name>
+- <Directory>kde-development-translation.directory</Directory>
+- <Include>
+- <And>
+- <Category>Development</Category>
+- <Category>Translation</Category>
+- </And>
+- </Include>
+- </Menu>
+- <Menu>
+- <Name>Web Development</Name>
+- <Directory>kde-development-webdevelopment.directory</Directory>
+- <Include>
+- <And>
+- <Category>Development</Category>
+- <Category>WebDevelopment</Category>
+- </And>
+- </Include>
+- </Menu>
+- <Include>
+- <And>
+- <Category>Development</Category>
+- <Not><Category>X-KDE-KDevelopIDE</Category></Not>
+- <Not><Category>Translation</Category></Not>
+- <Not><Category>WebDevelopment</Category></Not>
+- </And>
+- </Include>
+- </Menu>
+- <Menu>
+- <Name>Science</Name>
+- <Directory>kde-science.directory</Directory>
+- <Include>
+- <And><!-- Include /any/ Science app which is not an Education app -->
+- <Or>
+- <Category>Astronomy</Category>
+- <Category>Biology</Category>
+- <Category>Chemistry</Category>
+- <Category>Geology</Category>
+- <Category>MedicalSoftware</Category>
+- <Category>Physics</Category>
+- <Category>Math</Category>
+- <Category>Science</Category>
+- </Or>
+- <Not><Category>Education</Category></Not>
+- </And>
+- </Include>
+- </Menu>
+- <Menu>
+- <Name>Edutainment</Name>
+- <Directory>kde-edutainment.directory</Directory>
+- <Menu>
+- <Name>Languages</Name>
+- <Directory>kde-edu-languages.directory</Directory>
+- <Include>
+- <And>
+- <Category>Education</Category>
+- <Or>
+- <Category>Languages</Category>
+- <Category>X-KDE-Edu-Language</Category>
+- </Or>
+- </And>
+- </Include>
+- </Menu>
+- <Menu>
+- <Name>Mathematics</Name>
+- <Directory>kde-edu-mathematics.directory</Directory>
+- <Include>
+- <And>
+- <Category>Education</Category>
+- <Category>Math</Category>
+- </And>
+- </Include>
+- </Menu>
+- <Menu>
+- <Name>Miscellaneous</Name>
+- <Directory>kde-edu-miscellaneous.directory</Directory>
+- <Include>
+- <And>
+- <Category>Education</Category>
+- <Not>
+- <Category>Languages</Category>
+- <Category>X-KDE-Edu-Language</Category>
+- <Category>Math</Category>
+- <Category>Science</Category>
+- <Category>Teaching</Category>
+- <Category>X-KDE-Edu-Teaching</Category>
+- </Not>
+- </And>
+- </Include>
+- </Menu>
+- <Menu>
+- <Name>Science</Name>
+- <Directory>kde-edu-science.directory</Directory>
+- <Include>
+- <And>
+- <Category>Education</Category>
+- <Category>Science</Category>
+- </And>
+- </Include>
+- </Menu>
+- <Menu>
+- <Name>Tools</Name>
+- <Directory>kde-edu-tools.directory</Directory>
+- <Include>
+- <And>
+- <Category>Education</Category>
+- <Or>
+- <Category>Teaching</Category>
+- <Category>X-KDE-Edu-Teaching</Category>
+- </Or>
+- </And>
+- </Include>
+- </Menu>
+- </Menu>
+- <Menu>
+- <Name>Games</Name>
+- <Directory>kde-games.directory</Directory>
+- <Menu>
+- <Name>Arcade</Name>
+- <Directory>kde-games-arcade.directory</Directory>
+- <Include>
+- <And>
+- <Category>Game</Category>
+- <Category>ArcadeGame</Category>
+- </And>
+- </Include>
+- </Menu>
+- <Menu>
+- <Name>Board</Name>
+- <Directory>kde-games-board.directory</Directory>
+- <Include>
+- <And>
+- <Category>Game</Category>
+- <Category>BoardGame</Category>
+- </And>
+- </Include>
+- </Menu>
+- <Menu>
+- <Name>Card</Name>
+- <Directory>kde-games-card.directory</Directory>
+- <Include>
+- <And>
+- <Category>Game</Category>
+- <Category>CardGame</Category>
+- </And>
+- </Include>
+- </Menu>
+- <Menu>
+- <Name>Kidsgames</Name>
+- <Directory>kde-games-kids.directory</Directory>
+- <Include>
+- <And>
+- <Category>Game</Category>
+- <Or>
+- <Category>X-KDE-KidsGame</Category>
+- <Category>KidsGame</Category>
+- </Or>
+- </And>
+- </Include>
+- </Menu>
+- <Menu>
+- <Name>TacticStrategy</Name>
+- <Directory>kde-games-strategy.directory</Directory>
+- <Include>
+- <And>
+- <Category>Game</Category>
+- <Category>StrategyGame</Category>
+- </And>
+- </Include>
+- </Menu>
+- <Include>
+- <And>
+- <Category>Game</Category>
+- <Not>
+- <Category>ArcadeGame</Category>
+- <Category>BoardGame</Category>
+- <Category>CardGame</Category>
+- <Category>X-KDE-KidsGame</Category>
+- <Category>KidsGame</Category>
+- <Category>StrategyGame</Category>
+- </Not>
+- </And>
+- </Include>
+- <Menu>
+- <Name>Toys</Name>
+- <Directory>kde-toys.directory</Directory>
+- <Include>
+- <Category>Amusement</Category>
+- </Include>
+- </Menu>
+- </Menu>
+- <Menu>
+- <Name>Graphics</Name>
+- <Directory>kde-graphics.directory</Directory>
+- <Include>
+- <And>
+- <Category>Graphics</Category>
+- <Not><Category>X-KDE-More</Category></Not>
+- </And>
+- </Include>
+- <Menu>
+- <Name>More</Name>
+- <Directory>kde-more.directory</Directory>
+- <Include>
+- <And>
+- <Category>Graphics</Category>
+- <Category>X-KDE-More</Category>
+- </And>
+- </Include>
+- </Menu>
+- </Menu>
+- <Menu>
+- <Name>Internet</Name>
+- <Directory>kde-internet.directory</Directory>
+- <Include>
+- <And>
+- <Category>Network</Category>
+- <Not><Category>X-KDE-More</Category></Not>
+- </And>
+- </Include>
+- <Menu>
+- <Name>Terminal</Name>
+- <Directory>kde-internet-terminal.directory</Directory>
+- </Menu>
+- <Menu>
+- <Name>More</Name>
+- <Directory>kde-more.directory</Directory>
+- <Include>
+- <And>
+- <Category>Network</Category>
+- <Category>X-KDE-More</Category>
+- </And>
+- </Include>
+- </Menu>
+- </Menu>
+- <Menu>
+- <Name>Multimedia</Name>
+- <Directory>kde-multimedia.directory</Directory>
+- <Include>
+- <And>
+- <Category>AudioVideo</Category>
+- <Not><Category>X-KDE-More</Category></Not>
+- </And>
+- </Include>
+- <Menu>
+- <Name>More</Name>
+- <Directory>kde-more.directory</Directory>
+- <Include>
+- <And>
+- <Category>AudioVideo</Category>
+- <Category>X-KDE-More</Category>
+- </And>
+- </Include>
+- </Menu>
+- </Menu>
+- <Menu>
+- <Name>Office</Name>
+- <Directory>kde-office.directory</Directory>
+- <Layout>
+- <Merge type="menus"/>
+- <Filename>kde-koshell.desktop</Filename>
+- <Filename>kde-Kontact.desktop</Filename>
+- <Separator/>
+- <Filename>kde-kword.desktop</Filename>
+- <Filename>kde-kspread.desktop</Filename>
+- <Filename>kde-kpresenter.desktop</Filename>
+- <Merge type="files"/>
+- <Separator/>
+- <Menuname>More</Menuname>
+- </Layout>
+- <Include>
+- <And>
+- <Category>Office</Category>
+- <Not><Category>X-KDE-More</Category></Not>
+- </And>
+- </Include>
+- <Menu>
+- <Name>More</Name>
+- <Directory>kde-more.directory</Directory>
+- <Include>
+- <And>
+- <Category>Office</Category>
+- <Category>X-KDE-More</Category>
+- </And>
+- </Include>
+- </Menu>
+- </Menu>
+- <Menu>
+- <Name>Settingsmenu</Name>
+- <Directory>kde-settingsmenu.directory</Directory>
+- <Include>
+- <Category>Settings</Category>
+- </Include>
+- </Menu>
+- <Menu>
+- <Name>System</Name>
+- <Directory>kde-system.directory</Directory>
+- <Include>
+- <And>
+- <Category>System</Category>
+- <Not><Category>X-KDE-More</Category></Not>
+- </And>
+- </Include>
+- <Menu>
+- <Name>More</Name>
+- <Directory>kde-more.directory</Directory>
+- <Include>
+- <And>
+- <Category>System</Category>
+- <Category>X-KDE-More</Category>
+- </And>
+- </Include>
+- </Menu>
+- <Menu>
+- <Name>ScreenSavers</Name>
+- <Directory>kde-system-screensavers.directory</Directory>
+- </Menu>
+- <Menu>
+- <Name>Terminal</Name>
+- <Directory>kde-system-terminal.directory</Directory>
+- </Menu>
+- </Menu>
+- <Menu>
+- <Name>Utilities</Name>
+- <Directory>kde-utilities.directory</Directory>
+- <Include>
+- <And>
+- <Category>Utility</Category>
+- <Not><Category>Accessibility</Category></Not>
+- <Not><Category>X-KDE-Utilities-Desktop</Category></Not>
+- <Not><Category>X-KDE-Utilities-File</Category></Not>
+- <Not><Category>X-KDE-Utilities-Peripherals</Category></Not>
+- <Not><Category>X-KDE-Utilities-PIM</Category></Not>
+- <Not><Category>X-KDE-More</Category></Not>
+- </And>
+- </Include>
+- <Menu>
+- <Name>Accessibility</Name>
+- <Directory>kde-utilities-accessibility.directory</Directory>
+- <Include>
+- <And>
+- <Category>Utility</Category>
+- <Category>Accessibility</Category>
+- </And>
+- </Include>
+- </Menu>
+- <Menu>
+- <Name>Desktop</Name>
+- <Directory>kde-utilities-desktop.directory</Directory>
+- <Include>
+- <And>
+- <Category>Utility</Category>
+- <Category>X-KDE-Utilities-Desktop</Category>
+- </And>
+- </Include>
+- </Menu>
+- <Menu>
+- <Name>Editors</Name>
+- <Directory>kde-editors.directory</Directory>
+- <Include>
+- <Category>TextEditor</Category>
+- </Include>
+- </Menu>
+- <Menu>
+- <Name>File</Name>
+- <Directory>kde-utilities-file.directory</Directory>
+- <Include>
+- <And>
+- <Category>Utility</Category>
+- <Category>X-KDE-Utilities-File</Category>
+- </And>
+- </Include>
+- </Menu>
+- <Menu>
+- <Name>Peripherals</Name>
+- <Directory>kde-utilities-peripherals.directory</Directory>
+- <Include>
+- <And>
+- <Category>Utility</Category>
+- <Category>X-KDE-Utilities-Peripherals</Category>
+- </And>
+- </Include>
+- </Menu>
+- <Menu>
+- <Name>PIM</Name>
+- <Directory>kde-utilities-pim.directory</Directory>
+- <Include>
+- <And>
+- <Category>Utility</Category>
+- <Category>X-KDE-Utilities-PIM</Category>
+- </And>
+- </Include>
+- </Menu>
+- <Menu>
+- <Name>XUtilities</Name>
+- <Directory>kde-utilities-xutils.directory</Directory>
+- </Menu>
+- <Menu>
+- <Name>More</Name>
+- <Directory>kde-more.directory</Directory>
+- <Include>
+- <And>
+- <Category>Utility</Category>
+- <Category>X-KDE-More</Category>
+- </And>
+- </Include>
+- </Menu>
+- </Menu>
+- <Include>
+- <And>
+- <Category>KDE</Category>
+- <Category>Core</Category>
+- </And>
+- </Include>
+- <DefaultMergeDirs/>
+- <MergeFile>applications-kmenuedit.menu</MergeFile>
+-</Menu>
+diff -Nura kdelibs-3.5.10/kded/kbuildsycoca.cpp kdelibs-3.5.10.new/kded/kbuildsycoca.cpp
+--- kdelibs-3.5.10/kded/kbuildsycoca.cpp 2007-05-14 09:52:43.000000000 +0200
++++ kdelibs-3.5.10.new/kded/kbuildsycoca.cpp 2009-08-06 06:23:48.000000000 +0200
+@@ -379,7 +379,7 @@
+ connect(g_vfolder, SIGNAL(newService(const QString &, KService **)),
+ this, SLOT(slotCreateEntry(const QString &, KService **)));
+
+- VFolderMenu::SubMenu *kdeMenu = g_vfolder->parseMenu("applications.menu", true);
++ VFolderMenu::SubMenu *kdeMenu = g_vfolder->parseMenu("kde-applications.menu", true);
+
+ KServiceGroup *entry = g_bsgf->addNew("/", kdeMenu->directoryFile, 0, false);
+ entry->setLayoutInfo(kdeMenu->layoutList);
+diff -Nura kdelibs-3.5.10/kded/kde-applications.menu kdelibs-3.5.10.new/kded/kde-applications.menu
+--- kdelibs-3.5.10/kded/kde-applications.menu 1970-01-01 01:00:00.000000000 +0100
++++ kdelibs-3.5.10.new/kded/kde-applications.menu 2005-09-10 10:27:40.000000000 +0200
+@@ -0,0 +1,469 @@
++ <!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN"
++ "http://www.freedesktop.org/standards/menu-spec/1.0/menu.dtd">
++
++<Menu>
++ <Name>Applications</Name>
++ <Directory>kde-main.directory</Directory>
++ <!-- Search the default locations -->
++ <KDELegacyDirs/>
++ <DefaultAppDirs/>
++ <DefaultDirectoryDirs/>
++ <DefaultLayout>
++ <Merge type="menus"/>
++ <Merge type="files"/>
++ <Separator/>
++ <Menuname>More</Menuname>
++ </DefaultLayout>
++ <Layout>
++ <Merge type="menus"/>
++ <Menuname>Applications</Menuname>
++ <Merge type="files"/>
++ </Layout>
++
++ <Menu>
++ <Name>Applications</Name>
++ <Directory>kde-unknown.directory</Directory>
++ <OnlyUnallocated/>
++ <Include>
++ <Not>
++ <!-- Don't list non-KDE core applications -->
++ <And>
++ <Category>Core</Category>
++ <Not><Category>KDE</Category></Not>
++ </And>
++ <!-- Don't list SUSE's YaST in here -->
++ <Category>X-SuSE-YaST</Category>
++ </Not>
++ </Include>
++ </Menu>
++ <Menu>
++ <Name>Development</Name>
++ <Directory>kde-development.directory</Directory>
++ <Menu>
++ <Name>X-KDE-KDevelopIDE</Name>
++ <Directory>kde-development-kdevelop.directory</Directory>
++ <Include>
++ <And>
++ <Category>Development</Category>
++ <Category>X-KDE-KDevelopIDE</Category>
++ </And>
++ </Include>
++ </Menu>
++ <Menu>
++ <Name>Translation</Name>
++ <Directory>kde-development-translation.directory</Directory>
++ <Include>
++ <And>
++ <Category>Development</Category>
++ <Category>Translation</Category>
++ </And>
++ </Include>
++ </Menu>
++ <Menu>
++ <Name>Web Development</Name>
++ <Directory>kde-development-webdevelopment.directory</Directory>
++ <Include>
++ <And>
++ <Category>Development</Category>
++ <Category>WebDevelopment</Category>
++ </And>
++ </Include>
++ </Menu>
++ <Include>
++ <And>
++ <Category>Development</Category>
++ <Not><Category>X-KDE-KDevelopIDE</Category></Not>
++ <Not><Category>Translation</Category></Not>
++ <Not><Category>WebDevelopment</Category></Not>
++ </And>
++ </Include>
++ </Menu>
++ <Menu>
++ <Name>Science</Name>
++ <Directory>kde-science.directory</Directory>
++ <Include>
++ <And><!-- Include /any/ Science app which is not an Education app -->
++ <Or>
++ <Category>Astronomy</Category>
++ <Category>Biology</Category>
++ <Category>Chemistry</Category>
++ <Category>Geology</Category>
++ <Category>MedicalSoftware</Category>
++ <Category>Physics</Category>
++ <Category>Math</Category>
++ <Category>Science</Category>
++ </Or>
++ <Not><Category>Education</Category></Not>
++ </And>
++ </Include>
++ </Menu>
++ <Menu>
++ <Name>Edutainment</Name>
++ <Directory>kde-edutainment.directory</Directory>
++ <Menu>
++ <Name>Languages</Name>
++ <Directory>kde-edu-languages.directory</Directory>
++ <Include>
++ <And>
++ <Category>Education</Category>
++ <Or>
++ <Category>Languages</Category>
++ <Category>X-KDE-Edu-Language</Category>
++ </Or>
++ </And>
++ </Include>
++ </Menu>
++ <Menu>
++ <Name>Mathematics</Name>
++ <Directory>kde-edu-mathematics.directory</Directory>
++ <Include>
++ <And>
++ <Category>Education</Category>
++ <Category>Math</Category>
++ </And>
++ </Include>
++ </Menu>
++ <Menu>
++ <Name>Miscellaneous</Name>
++ <Directory>kde-edu-miscellaneous.directory</Directory>
++ <Include>
++ <And>
++ <Category>Education</Category>
++ <Not>
++ <Category>Languages</Category>
++ <Category>X-KDE-Edu-Language</Category>
++ <Category>Math</Category>
++ <Category>Science</Category>
++ <Category>Teaching</Category>
++ <Category>X-KDE-Edu-Teaching</Category>
++ </Not>
++ </And>
++ </Include>
++ </Menu>
++ <Menu>
++ <Name>Science</Name>
++ <Directory>kde-edu-science.directory</Directory>
++ <Include>
++ <And>
++ <Category>Education</Category>
++ <Category>Science</Category>
++ </And>
++ </Include>
++ </Menu>
++ <Menu>
++ <Name>Tools</Name>
++ <Directory>kde-edu-tools.directory</Directory>
++ <Include>
++ <And>
++ <Category>Education</Category>
++ <Or>
++ <Category>Teaching</Category>
++ <Category>X-KDE-Edu-Teaching</Category>
++ </Or>
++ </And>
++ </Include>
++ </Menu>
++ </Menu>
++ <Menu>
++ <Name>Games</Name>
++ <Directory>kde-games.directory</Directory>
++ <Menu>
++ <Name>Arcade</Name>
++ <Directory>kde-games-arcade.directory</Directory>
++ <Include>
++ <And>
++ <Category>Game</Category>
++ <Category>ArcadeGame</Category>
++ </And>
++ </Include>
++ </Menu>
++ <Menu>
++ <Name>Board</Name>
++ <Directory>kde-games-board.directory</Directory>
++ <Include>
++ <And>
++ <Category>Game</Category>
++ <Category>BoardGame</Category>
++ </And>
++ </Include>
++ </Menu>
++ <Menu>
++ <Name>Card</Name>
++ <Directory>kde-games-card.directory</Directory>
++ <Include>
++ <And>
++ <Category>Game</Category>
++ <Category>CardGame</Category>
++ </And>
++ </Include>
++ </Menu>
++ <Menu>
++ <Name>Kidsgames</Name>
++ <Directory>kde-games-kids.directory</Directory>
++ <Include>
++ <And>
++ <Category>Game</Category>
++ <Or>
++ <Category>X-KDE-KidsGame</Category>
++ <Category>KidsGame</Category>
++ </Or>
++ </And>
++ </Include>
++ </Menu>
++ <Menu>
++ <Name>TacticStrategy</Name>
++ <Directory>kde-games-strategy.directory</Directory>
++ <Include>
++ <And>
++ <Category>Game</Category>
++ <Category>StrategyGame</Category>
++ </And>
++ </Include>
++ </Menu>
++ <Include>
++ <And>
++ <Category>Game</Category>
++ <Not>
++ <Category>ArcadeGame</Category>
++ <Category>BoardGame</Category>
++ <Category>CardGame</Category>
++ <Category>X-KDE-KidsGame</Category>
++ <Category>KidsGame</Category>
++ <Category>StrategyGame</Category>
++ </Not>
++ </And>
++ </Include>
++ <Menu>
++ <Name>Toys</Name>
++ <Directory>kde-toys.directory</Directory>
++ <Include>
++ <Category>Amusement</Category>
++ </Include>
++ </Menu>
++ </Menu>
++ <Menu>
++ <Name>Graphics</Name>
++ <Directory>kde-graphics.directory</Directory>
++ <Include>
++ <And>
++ <Category>Graphics</Category>
++ <Not><Category>X-KDE-More</Category></Not>
++ </And>
++ </Include>
++ <Menu>
++ <Name>More</Name>
++ <Directory>kde-more.directory</Directory>
++ <Include>
++ <And>
++ <Category>Graphics</Category>
++ <Category>X-KDE-More</Category>
++ </And>
++ </Include>
++ </Menu>
++ </Menu>
++ <Menu>
++ <Name>Internet</Name>
++ <Directory>kde-internet.directory</Directory>
++ <Include>
++ <And>
++ <Category>Network</Category>
++ <Not><Category>X-KDE-More</Category></Not>
++ </And>
++ </Include>
++ <Menu>
++ <Name>Terminal</Name>
++ <Directory>kde-internet-terminal.directory</Directory>
++ </Menu>
++ <Menu>
++ <Name>More</Name>
++ <Directory>kde-more.directory</Directory>
++ <Include>
++ <And>
++ <Category>Network</Category>
++ <Category>X-KDE-More</Category>
++ </And>
++ </Include>
++ </Menu>
++ </Menu>
++ <Menu>
++ <Name>Multimedia</Name>
++ <Directory>kde-multimedia.directory</Directory>
++ <Include>
++ <And>
++ <Category>AudioVideo</Category>
++ <Not><Category>X-KDE-More</Category></Not>
++ </And>
++ </Include>
++ <Menu>
++ <Name>More</Name>
++ <Directory>kde-more.directory</Directory>
++ <Include>
++ <And>
++ <Category>AudioVideo</Category>
++ <Category>X-KDE-More</Category>
++ </And>
++ </Include>
++ </Menu>
++ </Menu>
++ <Menu>
++ <Name>Office</Name>
++ <Directory>kde-office.directory</Directory>
++ <Layout>
++ <Merge type="menus"/>
++ <Filename>kde-koshell.desktop</Filename>
++ <Filename>kde-Kontact.desktop</Filename>
++ <Separator/>
++ <Filename>kde-kword.desktop</Filename>
++ <Filename>kde-kspread.desktop</Filename>
++ <Filename>kde-kpresenter.desktop</Filename>
++ <Merge type="files"/>
++ <Separator/>
++ <Menuname>More</Menuname>
++ </Layout>
++ <Include>
++ <And>
++ <Category>Office</Category>
++ <Not><Category>X-KDE-More</Category></Not>
++ </And>
++ </Include>
++ <Menu>
++ <Name>More</Name>
++ <Directory>kde-more.directory</Directory>
++ <Include>
++ <And>
++ <Category>Office</Category>
++ <Category>X-KDE-More</Category>
++ </And>
++ </Include>
++ </Menu>
++ </Menu>
++ <Menu>
++ <Name>Settingsmenu</Name>
++ <Directory>kde-settingsmenu.directory</Directory>
++ <Include>
++ <Category>Settings</Category>
++ </Include>
++ </Menu>
++ <Menu>
++ <Name>System</Name>
++ <Directory>kde-system.directory</Directory>
++ <Include>
++ <And>
++ <Category>System</Category>
++ <Not><Category>X-KDE-More</Category></Not>
++ </And>
++ </Include>
++ <Menu>
++ <Name>More</Name>
++ <Directory>kde-more.directory</Directory>
++ <Include>
++ <And>
++ <Category>System</Category>
++ <Category>X-KDE-More</Category>
++ </And>
++ </Include>
++ </Menu>
++ <Menu>
++ <Name>ScreenSavers</Name>
++ <Directory>kde-system-screensavers.directory</Directory>
++ </Menu>
++ <Menu>
++ <Name>Terminal</Name>
++ <Directory>kde-system-terminal.directory</Directory>
++ </Menu>
++ </Menu>
++ <Menu>
++ <Name>Utilities</Name>
++ <Directory>kde-utilities.directory</Directory>
++ <Include>
++ <And>
++ <Category>Utility</Category>
++ <Not><Category>Accessibility</Category></Not>
++ <Not><Category>X-KDE-Utilities-Desktop</Category></Not>
++ <Not><Category>X-KDE-Utilities-File</Category></Not>
++ <Not><Category>X-KDE-Utilities-Peripherals</Category></Not>
++ <Not><Category>X-KDE-Utilities-PIM</Category></Not>
++ <Not><Category>X-KDE-More</Category></Not>
++ </And>
++ </Include>
++ <Menu>
++ <Name>Accessibility</Name>
++ <Directory>kde-utilities-accessibility.directory</Directory>
++ <Include>
++ <And>
++ <Category>Utility</Category>
++ <Category>Accessibility</Category>
++ </And>
++ </Include>
++ </Menu>
++ <Menu>
++ <Name>Desktop</Name>
++ <Directory>kde-utilities-desktop.directory</Directory>
++ <Include>
++ <And>
++ <Category>Utility</Category>
++ <Category>X-KDE-Utilities-Desktop</Category>
++ </And>
++ </Include>
++ </Menu>
++ <Menu>
++ <Name>Editors</Name>
++ <Directory>kde-editors.directory</Directory>
++ <Include>
++ <Category>TextEditor</Category>
++ </Include>
++ </Menu>
++ <Menu>
++ <Name>File</Name>
++ <Directory>kde-utilities-file.directory</Directory>
++ <Include>
++ <And>
++ <Category>Utility</Category>
++ <Category>X-KDE-Utilities-File</Category>
++ </And>
++ </Include>
++ </Menu>
++ <Menu>
++ <Name>Peripherals</Name>
++ <Directory>kde-utilities-peripherals.directory</Directory>
++ <Include>
++ <And>
++ <Category>Utility</Category>
++ <Category>X-KDE-Utilities-Peripherals</Category>
++ </And>
++ </Include>
++ </Menu>
++ <Menu>
++ <Name>PIM</Name>
++ <Directory>kde-utilities-pim.directory</Directory>
++ <Include>
++ <And>
++ <Category>Utility</Category>
++ <Category>X-KDE-Utilities-PIM</Category>
++ </And>
++ </Include>
++ </Menu>
++ <Menu>
++ <Name>XUtilities</Name>
++ <Directory>kde-utilities-xutils.directory</Directory>
++ </Menu>
++ <Menu>
++ <Name>More</Name>
++ <Directory>kde-more.directory</Directory>
++ <Include>
++ <And>
++ <Category>Utility</Category>
++ <Category>X-KDE-More</Category>
++ </And>
++ </Include>
++ </Menu>
++ </Menu>
++ <Include>
++ <And>
++ <Category>KDE</Category>
++ <Category>Core</Category>
++ </And>
++ </Include>
++ <DefaultMergeDirs/>
++ <MergeFile>applications-kmenuedit.menu</MergeFile>
++</Menu>
diff --git a/extra/kdelibs3/kdelibs3.install b/extra/kdelibs3/kdelibs3.install
new file mode 100644
index 000000000..7291ac0a2
--- /dev/null
+++ b/extra/kdelibs3/kdelibs3.install
@@ -0,0 +1,12 @@
+post_install() {
+ post_remove
+}
+
+post_upgrade() {
+ post_remove
+}
+
+post_remove() {
+ # this can be removed in future versions
+ sed -ie '/\/opt\/kde\/lib/d' etc/ld.so.conf
+}
diff --git a/extra/kdemultimedia/PKGBUILD b/extra/kdemultimedia/PKGBUILD
new file mode 100644
index 000000000..f73f5d382
--- /dev/null
+++ b/extra/kdemultimedia/PKGBUILD
@@ -0,0 +1,109 @@
+# $Id: PKGBUILD 111780 2011-02-28 23:55:31Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Pierre Schmitz <pierre@archlinux.de>
+
+pkgbase=kdemultimedia
+pkgname=('kdemultimedia-dragonplayer'
+ 'kdemultimedia-ffmpegthumbs'
+ 'kdemultimedia-juk'
+ 'kdemultimedia-kioslave'
+ 'kdemultimedia-kmix'
+ 'kdemultimedia-kscd'
+ 'kdemultimedia-mplayerthumbs')
+pkgver=4.6.1
+pkgrel=1
+arch=('i686' 'x86_64')
+url='http://www.kde.org'
+license=('GPL' 'LGPL' 'FDL')
+groups=('kde' 'kdemultimedia')
+makedepends=('pkgconfig' 'cmake' 'automoc4' 'kdebase-runtime' 'tunepimp'
+ 'ffmpeg' 'mplayer' 'docbook-xsl' 'pulseaudio' 'libmusicbrainz3')
+source=("http://download.kde.org/stable/${pkgver}/src/${pkgbase}-${pkgver}.tar.bz2"
+ 'mplayerthumbs.config')
+sha1sums=('ad8f6e45d60d2b9cc0fd806e000076fcc0c07a5f'
+ 'ba016fa2563c14ffcba852c62506b66bfc6ee683')
+
+build() {
+ cd $srcdir
+ mkdir build
+ cd build
+ cmake ../${pkgbase}-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_SKIP_RPATH=ON \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DWITH_Xine=OFF
+ make
+}
+
+package_kdemultimedia-dragonplayer() {
+ pkgdesc='Video Player'
+ depends=('kdebase-runtime')
+ url="http://kde.org/applications/multimedia/dragonplayer/"
+ install='kdemultimedia.install'
+ cd $srcdir/build/dragonplayer
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/dragonplayer
+ make DESTDIR=$pkgdir install
+}
+
+package_kdemultimedia-ffmpegthumbs() {
+ pkgdesc='Video Files (ffmpegthumbs)'
+ depends=('kdebase-runtime' 'ffmpeg')
+ install='kdemultimedia.install'
+ cd $srcdir/build/ffmpegthumbs
+ make DESTDIR=$pkgdir install
+}
+
+package_kdemultimedia-juk() {
+ pkgdesc='Music Player'
+ depends=('kdebase-runtime' 'tunepimp')
+ url="http://kde.org/applications/multimedia/juk"
+ install='kdemultimedia.install'
+ cd $srcdir/build/juk
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/juk
+ make DESTDIR=$pkgdir install
+}
+
+package_kdemultimedia-kioslave() {
+ pkgdesc='Audio CD Browser'
+ depends=('kdelibs' 'libmusicbrainz3' 'cdparanoia')
+ conflicts=('kdemultimedia-libkcddb' 'kdemultimedia-libkcompactdisc')
+ replaces=('kdemultimedia-libkcddb' 'kdemultimedia-libkcompactdisc')
+ for i in kioslave doc/kioslave libkcddb libkcompactdisc; do
+ cd $srcdir/build/${i}
+ make DESTDIR=$pkgdir install
+ done
+}
+
+package_kdemultimedia-kmix() {
+ pkgdesc='Sound Mixer'
+ depends=('kdebase-runtime')
+ url="http://kde.org/applications/multimedia/kmix"
+ install='kdemultimedia.install'
+ cd $srcdir/build/kmix
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kmix
+ make DESTDIR=$pkgdir install
+}
+
+package_kdemultimedia-kscd() {
+ pkgdesc='CD Player'
+ depends=('kdebase-runtime' 'libmusicbrainz3')
+ url="http://kde.org/applications/multimedia/kscd"
+ install='kdemultimedia.install'
+ cd $srcdir/build/kscd
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kcontrol/cddbretrieval
+ make DESTDIR=$pkgdir install
+}
+
+package_kdemultimedia-mplayerthumbs() {
+ pkgdesc='Video Files (MPlayerThumbs)'
+ depends=('kdebase-runtime' 'mplayer')
+ replaces=('mplayerthumbs')
+ conflicts=('mplayerthumbs')
+ cd $srcdir/build/mplayerthumbs
+ make DESTDIR=$pkgdir install
+ install -D -m644 $srcdir/mplayerthumbs.config $pkgdir/usr/share/config/mplayerthumbs
+}
diff --git a/extra/kdemultimedia/kdemultimedia.install b/extra/kdemultimedia/kdemultimedia.install
new file mode 100644
index 000000000..e70c054ec
--- /dev/null
+++ b/extra/kdemultimedia/kdemultimedia.install
@@ -0,0 +1,11 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/extra/kdemultimedia/mplayerthumbs.config b/extra/kdemultimedia/mplayerthumbs.config
new file mode 100644
index 000000000..761a17953
--- /dev/null
+++ b/extra/kdemultimedia/mplayerthumbs.config
@@ -0,0 +1,2 @@
+[MPlayerThumbsCfg]
+backend=0
diff --git a/extra/kdenetwork/PKGBUILD b/extra/kdenetwork/PKGBUILD
new file mode 100644
index 000000000..aadd3a7c2
--- /dev/null
+++ b/extra/kdenetwork/PKGBUILD
@@ -0,0 +1,114 @@
+# $Id: PKGBUILD 115153 2011-03-17 09:42:34Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Pierre Schmitz <pierre@archlinux.de>
+
+pkgbase=kdenetwork
+pkgname=('kdenetwork-filesharing'
+ 'kdenetwork-kdnssd'
+ 'kdenetwork-kget'
+ 'kdenetwork-kopete'
+ 'kdenetwork-kppp'
+ 'kdenetwork-krdc'
+ 'kdenetwork-krfb')
+pkgver=4.6.1
+pkgrel=2
+arch=('i686' 'x86_64')
+url='http://www.kde.org'
+license=('GPL' 'LGPL' 'FDL')
+groups=('kde' 'kdenetwork')
+makedepends=('pkgconfig' 'cmake' 'automoc4' 'boost' 'speex' 'ortp' 'libotr'
+ 'qca-ossl' 'kdebase-workspace' 'kdebase-lib' 'libvncserver' 'libmsn'
+ 'ppp' 'v4l-utils' 'libidn' 'rdesktop' 'qimageblitz' 'libxdamage' 'libgadu'
+ 'telepathy-qt4' 'docbook-xsl' 'libktorrent')
+source=("http://download.kde.org/stable/${pkgver}/src/${pkgbase}-${pkgver}.tar.bz2")
+sha1sums=('dc09ffe178070147d67d5c27b9c340a86a2e14c7')
+
+build() {
+ cd ${srcdir}
+ mkdir build
+ cd build
+ cmake ../${pkgbase}-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_SKIP_RPATH=ON \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DMOZPLUGIN_INSTALL_DIR=/usr/lib/mozilla/plugins/ \
+ -DWITH_Xmms=OFF \
+ -DWITH_LibMeanwhile=OFF
+ make
+}
+
+package_kdenetwork-filesharing() {
+ pkgdesc='Konqueror properties dialog plugin to share a directory with the local network'
+ depends=('kdelibs' 'smbclient')
+ install='kdenetwork.install'
+ cd $srcdir/build/filesharing
+ make DESTDIR=$pkgdir install
+}
+
+package_kdenetwork-kdnssd() {
+ pkgdesc='Monitors the network for DNS-SD services'
+ depends=('kdelibs')
+ cd $srcdir/build/kdnssd
+ make DESTDIR=$pkgdir install
+}
+
+package_kdenetwork-kget() {
+ pkgdesc='Download Manager'
+ depends=('kdebase-workspace' 'kdebase-lib' 'libktorrent')
+ optdepends=('python2: YouTube plugin')
+ url="http://kde.org/applications/internet/kget/"
+ install='kdenetwork.install'
+ cd $srcdir/build/kget
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kget
+ make DESTDIR=$pkgdir install
+
+ # Use the python2 executable
+ find ${pkgdir} -name '*.py' | xargs sed -i 's|#!/usr/bin/env python|#!/usr/bin/env python2|'
+}
+
+package_kdenetwork-kopete() {
+ pkgdesc='Instant Messenger'
+ depends=('kdebase-runtime' 'kdepimlibs' 'qca-ossl' 'libotr' 'libmsn'
+ 'libidn' 'qimageblitz' 'v4l-utils' 'libgadu')
+ url="http://kde.org/applications/internet/kopete/"
+ install='kdenetwork.install'
+ cd $srcdir/build/kopete
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kopete
+ make DESTDIR=$pkgdir install
+}
+
+package_kdenetwork-kppp() {
+ pkgdesc='Internet Dial-Up Tool'
+ depends=('kdebase-runtime' 'ppp')
+ url="http://kde.org/applications/internet/kppp/"
+ install='kdenetwork.install'
+ cd $srcdir/build/kppp
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kppp
+ make DESTDIR=$pkgdir install
+}
+
+package_kdenetwork-krdc() {
+ pkgdesc='Remote Desktop Client'
+ depends=('kdebase-runtime' 'libvncserver' 'rdesktop' 'telepathy-qt4')
+ optdepends=('kdebase-keditbookmarks: to edit bookmarks')
+ url="http://kde.org/applications/internet/krdc/"
+ cd $srcdir/build/krdc
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/krdc
+ make DESTDIR=$pkgdir install
+}
+
+package_kdenetwork-krfb() {
+ pkgdesc='Desktop Sharing'
+ # note on libxdamage:
+ # not detected by namcap because libgl depends on it
+ # but nvidia providing libgl does not depend on libxdamage
+ depends=('kdebase-runtime' 'libvncserver' 'libxdamage')
+ cd $srcdir/build/krfb
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/krfb
+ make DESTDIR=$pkgdir install
+}
diff --git a/extra/kdenetwork/kdenetwork.install b/extra/kdenetwork/kdenetwork.install
new file mode 100644
index 000000000..e70c054ec
--- /dev/null
+++ b/extra/kdenetwork/kdenetwork.install
@@ -0,0 +1,11 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/extra/kdepim-runtime/PKGBUILD b/extra/kdepim-runtime/PKGBUILD
new file mode 100644
index 000000000..b8adb55c2
--- /dev/null
+++ b/extra/kdepim-runtime/PKGBUILD
@@ -0,0 +1,32 @@
+# $Id: PKGBUILD 107967 2011-01-28 08:04:50Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Pierre Schmitz <pierre@archlinux.de>
+
+pkgname=kdepim-runtime
+pkgver=4.4.10
+pkgrel=1
+pkgdesc='KDE PIM Runtime Environment'
+arch=('i686' 'x86_64')
+url='http://www.kde.org'
+license=('GPL' 'LGPL' 'FDL')
+depends=('kdepimlibs' 'kdebase-runtime')
+makedepends=('pkgconfig' 'cmake' 'automoc4' 'boost')
+install=${pkgname}.install
+source=("http://download.kde.org/stable/kdepim-${pkgver}/src/${pkgname}-${pkgver}.tar.bz2")
+sha1sums=('a0e74f95daf8c28f7b3bd1ee84b6a86fc509d0ff')
+
+build() {
+ cd $srcdir
+ mkdir build
+ cd build
+ cmake ../${pkgname}-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_SKIP_RPATH=ON \
+ -DCMAKE_INSTALL_PREFIX=/usr
+ make
+}
+
+package() {
+ cd $srcdir/build
+ make DESTDIR=$pkgdir install
+}
diff --git a/extra/kdepim-runtime/kdepim-runtime.install b/extra/kdepim-runtime/kdepim-runtime.install
new file mode 100644
index 000000000..ce5c32e1b
--- /dev/null
+++ b/extra/kdepim-runtime/kdepim-runtime.install
@@ -0,0 +1,12 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+ update-mime-database usr/share/mime &> /dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+} \ No newline at end of file
diff --git a/extra/kdepim/PKGBUILD b/extra/kdepim/PKGBUILD
new file mode 100644
index 000000000..7f70930ed
--- /dev/null
+++ b/extra/kdepim/PKGBUILD
@@ -0,0 +1,237 @@
+# $Id: PKGBUILD 107973 2011-01-28 08:28:57Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Pierre Schmitz <pierre@archlinux.de>
+
+pkgbase=kdepim
+pkgname=('kdepim-akonadiconsole'
+ 'kdepim-akregator'
+ 'kdepim-blogilo'
+ 'kdepim-console'
+ 'kdepim-kaddressbook'
+ 'kdepim-kalarm'
+ 'kdepim-kjots'
+ 'kdepim-kleopatra'
+ 'kdepim-kmail'
+ 'kdepim-knode'
+ 'kdepim-knotes'
+ 'kdepim-kontact'
+ 'kdepim-korganizer'
+ 'kdepim-kresources'
+ 'kdepim-ktimetracker'
+ 'kdepim-libkdepim'
+ 'kdepim-wizards')
+pkgver=4.4.10
+pkgrel=1
+arch=('i686' 'x86_64')
+url='http://www.kde.org'
+license=('GPL' 'LGPL' 'FDL')
+groups=('kde' 'kdepim')
+makedepends=('pkgconfig' 'cmake' 'automoc4' 'boost' 'kdepim-runtime' 'libxss'
+ 'pilot-link' 'kde-agent' 'docbook-xsl')
+source=("http://download.kde.org/stable/${pkgbase}-${pkgver}/src/${pkgbase}-${pkgver}.tar.bz2")
+sha1sums=('b9c45e80dddc3bff201df6ddd76fdf4f1f18d5c3')
+
+build() {
+ cd ${srcdir}
+ mkdir build
+ cd build
+ cmake ../${pkgbase}-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_SKIP_RPATH=ON \
+ -DCMAKE_INSTALL_PREFIX=/usr
+ make
+}
+
+package_kdepim-akonadiconsole() {
+ pkgdesc='Akonadi Management and Debugging Console'
+ depends=('kdepim-libkdepim' 'kdebase-runtime')
+ install='kdepim.install'
+ cd $srcdir/build/akonadiconsole
+ make DESTDIR=$pkgdir install
+}
+
+package_kdepim-akregator() {
+ pkgdesc='A Feed Reader for KDE'
+ depends=('kdepim-libkdepim' 'kdebase-runtime')
+ url="http://kde.org/applications/internet/akregator/"
+ install='kdepim.install'
+ cd $srcdir/build/akregator
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/akregator
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/kontact/plugins/akregator
+ make DESTDIR=$pkgdir install
+}
+
+package_kdepim-blogilo() {
+ pkgdesc='A KDE Blogging Client'
+ depends=('kdebase-runtime' 'kdepimlibs' 'kdepim-runtime')
+ url="http://kde.org/applications/internet/blogilo/"
+ replaces=('blogilo')
+ conflicts=('blogilo')
+ install='kdepim.install'
+ cd $srcdir/build/blogilo
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/blogilo
+ make DESTDIR=$pkgdir install
+}
+
+package_kdepim-console() {
+ pkgdesc='Command line tool for accessing calendar files'
+ depends=('kdebase-runtime' 'kdepimlibs' 'kdepim-runtime')
+ cd $srcdir/build/console
+ make DESTDIR=$pkgdir install
+}
+
+package_kdepim-kaddressbook() {
+ pkgdesc='Contact Manager'
+ depends=('kdepim-libkdepim' 'kdebase-runtime')
+ url="http://kde.org/applications/office/kaddressbook/"
+ install='kdepim.install'
+ cd $srcdir/build/kaddressbook
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/kontact/plugins/kaddressbook
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/plugins/kaddressbook
+ make DESTDIR=$pkgdir install
+}
+
+package_kdepim-kalarm() {
+ pkgdesc='Personal Alarm Scheduler'
+ depends=('kdepim-libkdepim' 'kdebase-runtime')
+ install='kdepim.install'
+ cd $srcdir/build/kalarm
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kalarm
+ make DESTDIR=$pkgdir install
+}
+
+package_kdepim-kjots() {
+ pkgdesc='Note Taker'
+ depends=('kdebase-runtime' 'kdepimlibs' 'kdepim-runtime')
+ install='kdepim.install'
+ cd $srcdir/build/kjots
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kjots
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/kontact/plugins/kjots
+ make DESTDIR=$pkgdir install
+}
+
+package_kdepim-kleopatra() {
+ pkgdesc='Certificate Manager and Unified Crypto GUI'
+ depends=('kdepim-libkdepim' 'kdebase-runtime')
+ cd $srcdir/build/kleopatra
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kleopatra
+ make DESTDIR=$pkgdir install
+}
+
+package_kdepim-kmail() {
+ pkgdesc='Mail Client'
+ depends=('kdepim-libkdepim' 'kdebase-runtime')
+ url="http://kde.org/applications/internet/kmail/"
+ install='kdepim.install'
+ conflicts=('kdepim-kmailcvt' 'kdepim-ksendemail' 'kdepim-libksieve'
+ 'kdepim-mimelib' 'kdepim-plugins')
+ replaces=('kdepim-kmailcvt' 'kdepim-ksendemail' 'kdepim-libksieve'
+ 'kdepim-mimelib' 'kdepim-plugins')
+ for i in kmail doc/kmail mimelib libksieve plugins/kmail ksendemail \
+ kmailcvt ontologies kontact/plugins/kmail; do
+ cd $srcdir/build/${i}
+ make DESTDIR=$pkgdir install
+ done
+}
+
+package_kdepim-knode() {
+ pkgdesc='News Reader'
+ depends=('kdebase-runtime' 'kdepim-libkdepim')
+ url="http://kde.org/applications/internet/knode/"
+ install='kdepim.install'
+ cd $srcdir/build/knode
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/knode
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/kontact/plugins/knode
+ make DESTDIR=$pkgdir install
+}
+
+package_kdepim-knotes() {
+ pkgdesc='Popup Notes'
+ depends=('kdepim-libkdepim' 'kdebase-runtime')
+ install='kdepim.install'
+ cd $srcdir/build/knotes
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/knotes
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/kontact/plugins/knotes
+ make DESTDIR=$pkgdir install
+}
+
+package_kdepim-kontact() {
+ pkgdesc='Personal Information Manager'
+ depends=('kdebase-runtime' 'kdepim-korganizer')
+ url="http://kde.org/applications/office/kontact/"
+ install='kdepim.install'
+ conflcits=('kdepim-kontactinterfaces')
+ replaces=('kdepim-kontactinterfaces')
+ for i in kontact/src kontact/pics doc/kontact\
+ kontact/plugins/summary; do
+ cd $srcdir/build/${i}
+ make DESTDIR=$pkgdir install
+ done
+}
+
+package_kdepim-korganizer() {
+ pkgdesc='Calendar and Scheduling Program'
+ depends=('kdepim-libkdepim' 'kdebase-runtime')
+ url="http://kde.org/applications/office/korganizer"
+ install='kdepim.install'
+ cd $srcdir/build/korganizer
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/korganizer
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/kontact/plugins/korganizer
+ make DESTDIR=$pkgdir install
+}
+
+package_kdepim-kresources() {
+ pkgdesc='KDE PIM resources'
+ depends=('kdebase-runtime' 'kdepim-libkdepim')
+ cd $srcdir/build/kresources
+ make DESTDIR=$pkgdir install
+}
+
+package_kdepim-ktimetracker() {
+ pkgdesc='Personal Time Tracker'
+ depends=('kdebase-runtime' 'kdepim-kresources')
+ install='kdepim.install'
+ cd $srcdir/build/ktimetracker
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/ktimetracker
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/kontact/plugins/ktimetracker
+ make DESTDIR=$pkgdir install
+}
+
+package_kdepim-libkdepim() {
+ pkgdesc='Library for KDE PIM'
+ groups=()
+ depends=('kdepimlibs' 'kde-agent' 'kdepim-runtime')
+ conflicts=('kdepim-icons' 'kdepim-libkleo' 'kdepim-libkpgp'
+ 'kdepim-strigi-analyzer' 'kdepim-akonadi')
+ replaces=('kdepim-icons' 'kdepim-libkleo' 'kdepim-libkpgp'
+ 'kdepim-strigi-analyzer' 'kdepim-akonadi')
+ for i in libkdepim icons libkleo libkpgp strigi-analyzer \
+ messagecore messagelist messageviewer akonadi plugins/ktexteditor; do
+ cd $srcdir/build/${i}
+ make DESTDIR=$pkgdir install
+ done
+}
+
+package_kdepim-wizards() {
+ pkgdesc='KDE Groupware Wizard'
+ depends=('kdebase-runtime' 'kdepim-libkdepim' 'kdepim-kresources')
+ cd $srcdir/build/wizards
+ make DESTDIR=$pkgdir install
+}
diff --git a/extra/kdepim/kdepim.install b/extra/kdepim/kdepim.install
new file mode 100644
index 000000000..e70c054ec
--- /dev/null
+++ b/extra/kdepim/kdepim.install
@@ -0,0 +1,11 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/extra/kdepimlibs/PKGBUILD b/extra/kdepimlibs/PKGBUILD
new file mode 100644
index 000000000..ea81c96fe
--- /dev/null
+++ b/extra/kdepimlibs/PKGBUILD
@@ -0,0 +1,33 @@
+# $Id: PKGBUILD 111768 2011-02-28 23:52:43Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Pierre Schmitz <pierre@archlinux.de>
+
+pkgname=kdepimlibs
+pkgver=4.6.1
+pkgrel=1
+pkgdesc="KDE PIM Libraries"
+arch=('i686' 'x86_64')
+url='http://www.kde.org'
+license=('GPL' 'LGPL')
+depends=('kdelibs' 'gpgme' 'akonadi' 'libical' )
+makedepends=('pkgconfig' 'cmake' 'automoc4' 'boost' 'cyrus-sasl' 'openldap'
+ 'docbook-xsl')
+install='kdepimlibs.install'
+source=("http://download.kde.org/stable/${pkgver}/src/${pkgname}-${pkgver}.tar.bz2")
+sha1sums=('bba2ed4593c8d658efba4d4a4346d514529a3127')
+
+build() {
+ cd ${srcdir}
+ mkdir build
+ cd build
+ cmake ../${pkgname}-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_SKIP_RPATH=ON \
+ -DCMAKE_INSTALL_PREFIX=/usr
+ make
+}
+
+package() {
+ cd $srcdir/build
+ make DESTDIR=$pkgdir install
+}
diff --git a/extra/kdepimlibs/kdepimlibs.install b/extra/kdepimlibs/kdepimlibs.install
new file mode 100644
index 000000000..99262607c
--- /dev/null
+++ b/extra/kdepimlibs/kdepimlibs.install
@@ -0,0 +1,11 @@
+post_install() {
+ update-mime-database usr/share/mime &> /dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+} \ No newline at end of file
diff --git a/extra/kdeplasma-addons/PKGBUILD b/extra/kdeplasma-addons/PKGBUILD
new file mode 100644
index 000000000..3fb82b636
--- /dev/null
+++ b/extra/kdeplasma-addons/PKGBUILD
@@ -0,0 +1,603 @@
+# $Id: PKGBUILD 111782 2011-02-28 23:55:39Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Pierre Schmitz <pierre@archlinux.de>
+
+pkgbase=kdeplasma-addons
+pkgname=('kdeplasma-addons-applets-bball'
+ 'kdeplasma-addons-applets-binary-clock'
+ 'kdeplasma-addons-applets-blackboard'
+ 'kdeplasma-addons-applets-bookmarks'
+ 'kdeplasma-addons-applets-bubblemon'
+ 'kdeplasma-addons-applets-calculator'
+ 'kdeplasma-addons-applets-charselect'
+ 'kdeplasma-addons-applets-comic'
+ 'kdeplasma-addons-applets-community'
+ 'kdeplasma-addons-applets-dict'
+ 'kdeplasma-addons-applets-eyes'
+ 'kdeplasma-addons-applets-fifteenpuzzle'
+ 'kdeplasma-addons-applets-filewatcher'
+ 'kdeplasma-addons-applets-frame'
+ 'kdeplasma-addons-applets-fuzzy-clock'
+ 'kdeplasma-addons-applets-incomingmsg'
+ 'kdeplasma-addons-applets-kdeobservatory'
+ 'kdeplasma-addons-applets-kimpanel'
+ 'kdeplasma-addons-applets-knowledgebase'
+ 'kdeplasma-addons-applets-kolourpicker'
+ 'kdeplasma-addons-applets-konqprofiles'
+ 'kdeplasma-addons-applets-konsoleprofiles'
+ 'kdeplasma-addons-applets-lancelot'
+ 'kdeplasma-addons-applets-leavenote'
+ 'kdeplasma-addons-applets-life'
+ 'kdeplasma-addons-applets-luna'
+ 'kdeplasma-addons-applets-magnifique'
+ 'kdeplasma-addons-applets-mediaplayer'
+ 'kdeplasma-addons-applets-microblog'
+ 'kdeplasma-addons-applets-news'
+ 'kdeplasma-addons-applets-notes'
+ 'kdeplasma-addons-applets-nowplaying'
+ 'kdeplasma-addons-applets-paste'
+ 'kdeplasma-addons-applets-pastebin'
+ 'kdeplasma-addons-applets-plasmaboard'
+ 'kdeplasma-addons-applets-previewer'
+ 'kdeplasma-addons-applets-qalculate'
+ 'kdeplasma-addons-applets-rememberthemilk'
+ 'kdeplasma-addons-applets-rssnow'
+ 'kdeplasma-addons-applets-showdashboard'
+ 'kdeplasma-addons-applets-showdesktop'
+ 'kdeplasma-addons-applets-social-news'
+ 'kdeplasma-addons-applets-spellcheck'
+ 'kdeplasma-addons-applets-systemloadviewer'
+ 'kdeplasma-addons-applets-timer'
+ 'kdeplasma-addons-applets-unitconverter'
+ 'kdeplasma-addons-applets-weather'
+ 'kdeplasma-addons-applets-weatherstation'
+ 'kdeplasma-addons-applets-webslice'
+ 'kdeplasma-addons-containments'
+ 'kdeplasma-addons-libs'
+ 'kdeplasma-addons-runners-audioplayercontrol'
+ 'kdeplasma-addons-runners-browserhistory'
+ 'kdeplasma-addons-runners-characters'
+ 'kdeplasma-addons-runners-contacts'
+ 'kdeplasma-addons-runners-converter'
+ 'kdeplasma-addons-runners-datetime'
+ 'kdeplasma-addons-runners-events'
+ 'kdeplasma-addons-runners-katesessions'
+ 'kdeplasma-addons-runners-konquerorsessions'
+ 'kdeplasma-addons-runners-konsolesessions'
+ 'kdeplasma-addons-runners-kopete'
+ 'kdeplasma-addons-runners-mediawiki'
+ 'kdeplasma-addons-runners-spellchecker'
+ 'kdeplasma-addons-wallpapers-mandelbrot'
+ 'kdeplasma-addons-wallpapers-marble'
+ 'kdeplasma-addons-wallpapers-pattern'
+ 'kdeplasma-addons-wallpapers-virus'
+ 'kdeplasma-addons-wallpapers-weather')
+pkgver=4.6.1
+pkgrel=1
+arch=('i686' 'x86_64')
+url='http://www.kde.org'
+license=('GPL' 'LGPL')
+groups=('kde' 'kdeplasma-addons')
+makedepends=('pkgconfig' 'cmake' 'automoc4' 'kdebase-workspace' 'kdegraphics-libs'
+ 'kdeedu-marble' 'eigen' 'scim' 'qwt' 'docbook-xsl' 'boost')
+source=("http://download.kde.org/stable/${pkgver}/src/${pkgbase}-${pkgver}.tar.bz2")
+sha1sums=('8b959c1e2aa5f00b2f0897c9415ba018b018a3d7')
+
+build() {
+ cd ${srcdir}
+ mkdir build
+ cd build
+ cmake ../${pkgbase}-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_SKIP_RPATH=ON \
+ -DCMAKE_INSTALL_PREFIX=/usr
+ make
+}
+
+package_kdeplasma-addons-applets-bball() {
+ pkgdesc='A bouncy ball for plasma'
+ depends=('kdebase-workspace')
+ install='kdeplasma-addons-applets.install'
+ cd $srcdir/build/applets/bball
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-applets-binary-clock() {
+ pkgdesc='Time displayed in binary format'
+ depends=('kdebase-workspace')
+ cd $srcdir/build/applets/binary-clock
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-applets-blackboard() {
+ pkgdesc='Black Board'
+ depends=('kdebase-workspace')
+ cd $srcdir/build/applets/blackboard
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-applets-bookmarks() {
+ pkgdesc='Quick Access to the Bookmarks'
+ depends=('kdebase-workspace')
+ cd $srcdir/build/applets/bookmarks
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-applets-bubblemon() {
+ pkgdesc='A pretty bubble that monitors your system.'
+ depends=('kdebase-workspace')
+ cd $srcdir/build/applets/bubblemon
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-applets-calculator() {
+ pkgdesc='Calculate simple sums'
+ depends=('kdebase-workspace')
+ cd $srcdir/build/applets/calculator
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-applets-charselect() {
+ pkgdesc='View, select, and copy characters from a font collection'
+ depends=('kdebase-workspace')
+ cd $srcdir/build/applets/charselect
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-applets-comic() {
+ pkgdesc='View comic strips from the Internet'
+ depends=('kdebase-workspace' 'kdeplasma-addons-libs')
+ cd $srcdir/build/applets/comic
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-applets-community() {
+ pkgdesc='Communicate using the Social Desktop'
+ depends=('kdebase-workspace')
+ cd $srcdir/build/applets/community
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-applets-dict() {
+ pkgdesc='Look up the meaning of words and their translation into different languages'
+ depends=('kdebase-workspace')
+ cd $srcdir/build/applets/dict
+ make DESTDIR=$pkgdir install
+ # FIXME
+ # /usr/share/icons/oxygen/scalable/apps/accessories-dictionary.svgz
+ rm -rf $pkgdir/usr/share/icons
+}
+
+package_kdeplasma-addons-applets-eyes() {
+ pkgdesc='XEyes clone'
+ depends=('kdebase-workspace')
+ install='kdeplasma-addons-applets.install'
+ cd $srcdir/build/applets/eyes
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-applets-fifteenpuzzle() {
+ pkgdesc='Put the pieces in order'
+ depends=('kdebase-workspace')
+ install='kdeplasma-addons-applets.install'
+ cd $srcdir/build/applets/fifteenPuzzle
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-applets-filewatcher() {
+ pkgdesc='Watch for changes in specified files'
+ depends=('kdebase-workspace')
+ cd $srcdir/build/applets/fileWatcher
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-applets-frame() {
+ pkgdesc='Display your favorite pictures'
+ depends=('kdebase-workspace' 'kdegraphics-libs')
+ cd $srcdir/build/applets/frame
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-applets-fuzzy-clock() {
+ pkgdesc='Time displayed in a less precise format'
+ depends=('kdebase-workspace')
+ cd $srcdir/build/applets/fuzzy-clock
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-applets-incomingmsg() {
+ pkgdesc='Notification of new messages'
+ depends=('kdebase-workspace')
+ cd $srcdir/build/applets/incomingmsg
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-applets-kdeobservatory() {
+ pkgdesc='Visualize the KDE ecosystem'
+ depends=('kdebase-workspace' 'qwt')
+ install='kdeplasma-addons-applets.install'
+ cd $srcdir/build/applets/kdeobservatory
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-applets-kimpanel() {
+ pkgdesc='A generic input method panel for Oriental languages'
+ depends=('kdebase-workspace')
+ optdepends=('scim: SCIM backend'
+ 'fcitx: FCITX backend')
+ cd $srcdir/build/applets/kimpanel
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-applets-knowledgebase() {
+ pkgdesc='Opendesktop Knowledgebase'
+ depends=('kdebase-workspace')
+ cd $srcdir/build/applets/knowledgebase
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-applets-kolourpicker() {
+ pkgdesc='Pick a color from the desktop'
+ depends=('kdebase-workspace')
+ cd $srcdir/build/applets/kolourpicker
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-applets-konqprofiles() {
+ pkgdesc='List and launch Konqueror profiles'
+ depends=('kdebase-workspace')
+ cd $srcdir/build/applets/konqprofiles
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-applets-konsoleprofiles() {
+ pkgdesc='List and launch Konsole profiles'
+ depends=('kdebase-workspace')
+ cd $srcdir/build/applets/konsoleprofiles
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-applets-lancelot() {
+ pkgdesc='Launcher to start applications'
+ depends=('kdebase-workspace' 'kdeplasma-addons-libs')
+ replaces=('lancelot')
+ provides=('lancelot')
+ conflicts=('lancelot')
+ install='kdeplasma-addons-applets-lancelot.install'
+ cd $srcdir/build/applets/lancelot
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-applets-leavenote() {
+ pkgdesc='Leave notes for users while they are away'
+ depends=('kdebase-workspace')
+ cd $srcdir/build/applets/leavenote
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-applets-life() {
+ pkgdesc='Life'
+ depends=('kdebase-workspace')
+ install='kdeplasma-addons-applets.install'
+ cd $srcdir/build/applets/life
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-applets-luna() {
+ pkgdesc='Display moon phases for your location'
+ depends=('kdebase-workspace')
+ install='kdeplasma-addons-applets.install'
+ cd $srcdir/build/applets/luna
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-applets-magnifique() {
+ pkgdesc='A magnification glass for the Plasma desktop'
+ depends=('kdebase-workspace')
+ cd $srcdir/build/applets/magnifique
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-applets-mediaplayer() {
+ pkgdesc='Widget that can play video and sound'
+ depends=('kdebase-workspace')
+ cd $srcdir/build/applets/mediaplayer
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-applets-microblog() {
+ pkgdesc='Update and view your microblog status.'
+ depends=('kdebase-workspace' 'kdeplasma-addons-libs')
+ cd $srcdir/build/applets/microblog
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-applets-news() {
+ pkgdesc='Show news from various sources'
+ depends=('kdebase-workspace')
+ cd $srcdir/build/applets/news
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-applets-notes() {
+ pkgdesc='Desktop sticky notes'
+ depends=('kdebase-workspace')
+ cd $srcdir/build/applets/notes
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-applets-nowplaying() {
+ pkgdesc='Displays currently playing audio'
+ depends=('kdebase-workspace')
+ cd $srcdir/build/applets/nowplaying
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-applets-paste() {
+ pkgdesc='Paste text snippets'
+ depends=('kdebase-workspace')
+ cd $srcdir/build/applets/paste
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-applets-pastebin() {
+ pkgdesc='Paste text/images to a remote server'
+ depends=('kdebase-workspace')
+ cd $srcdir/build/applets/pastebin
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-applets-plasmaboard() {
+ pkgdesc='A virtual, on-screen keyboard'
+ depends=('kdebase-workspace')
+ cd $srcdir/build/applets/plasmaboard
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-applets-previewer() {
+ pkgdesc='Preview This File'
+ depends=('kdebase-workspace')
+ install='kdeplasma-addons-applets.install'
+ cd $srcdir/build/applets/previewer
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-applets-qalculate() {
+ pkgdesc='A powerful mathematical equation solver'
+ depends=('kdebase-workspace')
+ install='kdeplasma-addons-applets.install'
+ cd $srcdir/build/applets/qalculate
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-applets-rememberthemilk() {
+ pkgdesc='Remember The Milk Todo list applet'
+ depends=('kdebase-workspace' 'kdeplasma-addons-libs')
+ cd $srcdir/build/applets/rememberthemilk
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-applets-rssnow() {
+ pkgdesc='Show news from various sources'
+ depends=('kdebase-workspace')
+ cd $srcdir/build/applets/rssnow
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-applets-showdashboard() {
+ pkgdesc='Show the Plasma widget dashboard above other windows'
+ depends=('kdebase-workspace')
+ cd $srcdir/build/applets/showdashboard
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-applets-showdesktop() {
+ pkgdesc='Show the Plasma desktop'
+ depends=('kdebase-workspace')
+ cd $srcdir/build/applets/showdesktop
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-applets-social-news() {
+ pkgdesc='Stay informed with the Social Desktop'
+ replaces=('kdeplasma-addons-applets-opendesktop' 'kdeplasma-addons-applets-opendesktop-activities')
+ conflicts=('kdeplasma-addons-applets-opendesktop' 'kdeplasma-addons-applets-opendesktop-activities')
+ depends=('kdebase-workspace')
+ cd $srcdir/build/applets/social-news
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-applets-spellcheck() {
+ pkgdesc='Fast spell checking'
+ depends=('kdebase-workspace')
+ cd $srcdir/build/applets/spellcheck
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-applets-systemloadviewer() {
+ pkgdesc='Tiny CPU/RAM/Swap monitor'
+ depends=('kdebase-workspace')
+ cd $srcdir/build/applets/systemloadviewer
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-applets-timer() {
+ pkgdesc='Countdown over a specified time period'
+ depends=('kdebase-workspace')
+ cd $srcdir/build/applets/timer
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-applets-unitconverter() {
+ pkgdesc='Plasmoid for converting units'
+ depends=('kdebase-workspace' 'kdeplasma-addons-libs')
+ cd $srcdir/build/applets/unitconverter
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-applets-weather() {
+ pkgdesc='Displays Weather information'
+ depends=('kdebase-workspace' 'kdeplasma-addons-libs')
+ cd $srcdir/build/applets/weather
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-applets-weatherstation() {
+ pkgdesc='Weather reports with an LCD display style'
+ depends=('kdebase-workspace' 'kdeplasma-addons-libs')
+ cd $srcdir/build/applets/weatherstation
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-applets-webslice() {
+ pkgdesc='Show a part of a webpage'
+ depends=('kdebase-workspace' 'kdeplasma-addons-libs')
+ cd $srcdir/build/applets/webslice
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-containments() {
+ pkgdesc='Activities types for Plasma shells'
+ depends=('kdebase-workspace')
+ cd $srcdir/build/containments
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-libs() {
+ pkgdesc='Plasma Addon Library'
+ depends=('kdebase-workspace')
+ groups=()
+ replaces=('kdeplasma-addons-dataengines')
+ provides=('kdeplasma-addons-dataengines')
+ conflicts=('kdeplasma-addons-dataengines')
+ cd $srcdir/build/libs
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/dataengines
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-runners-audioplayercontrol() {
+ pkgdesc='Allows to control MPRIS audio players (it is able to search through Amarok´s collection, too)'
+ depends=('kdebase-workspace')
+ cd $srcdir/build/runners/audioplayercontrol
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-runners-browserhistory() {
+ pkgdesc='Searches in Konqueror´s history'
+ depends=('kdebase-workspace')
+ cd $srcdir/build/runners/browserhistory
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-runners-characters() {
+ pkgdesc='special Characters'
+ depends=('kdebase-workspace')
+ cd $srcdir/build/runners/characters
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-runners-contacts() {
+ pkgdesc='Finds entries in your address book'
+ depends=('kdebase-workspace')
+ cd $srcdir/build/runners/contacts
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-runners-converter() {
+ pkgdesc='Convert values to different units'
+ depends=('kdebase-workspace' 'kdeplasma-addons-libs')
+ cd $srcdir/build/runners/converter
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-runners-datetime() {
+ pkgdesc='The current date and time, locally or in any timezone'
+ depends=('kdebase-workspace')
+ cd $srcdir/build/runners/datetime
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-runners-events() {
+ pkgdesc='Calendar Events runner'
+ depends=('kdebase-workspace')
+ cd $srcdir/build/runners/events
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-runners-katesessions() {
+ pkgdesc='Matches Kate Sessions'
+ depends=('kdebase-workspace')
+ cd $srcdir/build/runners/katesessions
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-runners-konquerorsessions() {
+ pkgdesc='Matches Konqueror Sessions'
+ depends=('kdebase-workspace')
+ cd $srcdir/build/runners/konquerorsessions
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-runners-konsolesessions() {
+ pkgdesc='Matches Konsole Sessions'
+ depends=('kdebase-workspace')
+ cd $srcdir/build/runners/konsolesessions
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-runners-kopete() {
+ pkgdesc='Kopete Contact runner'
+ depends=('kdebase-workspace')
+ cd $srcdir/build/runners/kopete
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-runners-mediawiki() {
+ pkgdesc='Search on Wikitravel'
+ depends=('kdebase-workspace')
+ cd $srcdir/build/runners/mediawiki
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-runners-spellchecker() {
+ pkgdesc='Check the spelling of a word'
+ depends=('kdebase-workspace')
+ cd $srcdir/build/runners/spellchecker
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-wallpapers-mandelbrot() {
+ pkgdesc='Mandelbrot'
+ depends=('kdebase-workspace')
+ cd $srcdir/build/wallpapers/mandelbrot
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-wallpapers-marble() {
+ pkgdesc='Globe'
+ depends=('kdebase-workspace' 'kdeedu-marble')
+ cd $srcdir/build/wallpapers/marble
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-wallpapers-pattern() {
+ pkgdesc='Pattern'
+ depends=('kdebase-workspace')
+ cd $srcdir/build/wallpapers/pattern
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-wallpapers-virus() {
+ pkgdesc='Virus'
+ depends=('kdebase-workspace')
+ cd $srcdir/build/wallpapers/virus
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeplasma-addons-wallpapers-weather() {
+ pkgdesc='Weather'
+ depends=('kdebase-workspace' 'kdeplasma-addons-libs')
+ cd $srcdir/build/wallpapers/weather
+ make DESTDIR=$pkgdir install
+}
diff --git a/extra/kdeplasma-addons/kdeplasma-addons-applets-lancelot.install b/extra/kdeplasma-addons/kdeplasma-addons-applets-lancelot.install
new file mode 100644
index 000000000..ce5c32e1b
--- /dev/null
+++ b/extra/kdeplasma-addons/kdeplasma-addons-applets-lancelot.install
@@ -0,0 +1,12 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+ update-mime-database usr/share/mime &> /dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+} \ No newline at end of file
diff --git a/extra/kdeplasma-addons/kdeplasma-addons-applets.install b/extra/kdeplasma-addons/kdeplasma-addons-applets.install
new file mode 100644
index 000000000..c4ef46ba8
--- /dev/null
+++ b/extra/kdeplasma-addons/kdeplasma-addons-applets.install
@@ -0,0 +1,11 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+} \ No newline at end of file
diff --git a/extra/kdeplasma-applets-networkmanagement/PKGBUILD b/extra/kdeplasma-applets-networkmanagement/PKGBUILD
new file mode 100644
index 000000000..6d72f56cf
--- /dev/null
+++ b/extra/kdeplasma-applets-networkmanagement/PKGBUILD
@@ -0,0 +1,34 @@
+# $Id: PKGBUILD 105813 2011-01-12 00:25:58Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Jakub Schmidtke <sjakub-at-gmail.com>
+
+pkgname=kdeplasma-applets-networkmanagement
+pkgver=git20110327
+_commit=dfea8bba5d8cef9e7bd70ec74a1df34a1ff6b089
+pkgrel=1
+pkgdesc="KDE control panel and widget network connections"
+arch=('i686' 'x86_64')
+url="http://www.kde.org/"
+license=('GPL')
+depends=('kdebase-workspace' 'networkmanager')
+makedepends=('cmake' 'python2' 'automoc4' 'mobile-broadband-provider-info')
+optdepends=('mobile-broadband-provider-info: allow to add new mobile connection')
+install=${pkgname}.install
+source=("${pkgname}-${_commit}.tar.gz"::"http://quickgit.kde.org/?p=networkmanagement.git&a=snapshot&h=${_commit}")
+md5sums=('760cef41d9b22fa4237bf6539c256cce')
+
+build() {
+ cd ${srcdir}
+ mkdir build
+ cd build
+ cmake ../networkmanagement \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DDBUS_SYSTEM_POLICY_DIR=/etc/dbus-1/system.d
+ make
+}
+
+package() {
+ cd ${srcdir}/build
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/kdeplasma-applets-networkmanagement/kdeplasma-applets-networkmanagement.install b/extra/kdeplasma-applets-networkmanagement/kdeplasma-applets-networkmanagement.install
new file mode 100644
index 000000000..e70c054ec
--- /dev/null
+++ b/extra/kdeplasma-applets-networkmanagement/kdeplasma-applets-networkmanagement.install
@@ -0,0 +1,11 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/extra/kdesdk/PKGBUILD b/extra/kdesdk/PKGBUILD
new file mode 100644
index 000000000..1a77305de
--- /dev/null
+++ b/extra/kdesdk/PKGBUILD
@@ -0,0 +1,243 @@
+# $Id: PKGBUILD 111783 2011-02-28 23:55:42Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Pierre Schmitz <pierre@archlinux.de>
+
+pkgbase=kdesdk
+pkgname=('kdesdk-cervisia'
+ 'kdesdk-dolphin-plugins'
+ 'kdesdk-kapptemplate'
+ 'kdesdk-kate'
+ 'kdesdk-kcachegrind'
+ 'kdesdk-kdeaccounts-plugin'
+ 'kdesdk-kdepalettes'
+ 'kdesdk-kioslave'
+ 'kdesdk-kmtrace'
+ 'kdesdk-kompare'
+ 'kdesdk-kpartloader'
+ 'kdesdk-kprofilemethod'
+ 'kdesdk-kstartperf'
+ 'kdesdk-kuiviewer'
+ 'kdesdk-lokalize'
+ 'kdesdk-okteta'
+ 'kdesdk-poxml'
+ 'kdesdk-scripts'
+ 'kdesdk-strigi-analyzer'
+ 'kdesdk-umbrello')
+pkgver=4.6.1
+pkgrel=1
+arch=('i686' 'x86_64')
+url='http://www.kde.org'
+license=('GPL' 'LGPL' 'FDL')
+groups=('kde' 'kdesdk')
+makedepends=('pkgconfig' 'cmake' 'automoc4' 'boost' 'kdepim-runtime' 'subversion'
+ 'docbook-xsl' 'antlr2' 'kdebase-konqueror')
+source=("http://download.kde.org/stable/${pkgver}/src/${pkgbase}-${pkgver}.tar.bz2"
+ 'fix-python2-path.patch')
+sha1sums=('b46270c338ebee84ee2fd069d1551d19e1f37d30'
+ 'd05ca0231869c484fd3861955d960a60aff7dcfb')
+
+build() {
+ cd ${srcdir}/${pkgbase}-${pkgver}
+
+ # Fix python2 path
+ patch -Np1 -i ${srcdir}/fix-python2-path.patch
+ sed -i -e "s|#![ ]*/usr/bin/python$|#!/usr/bin/python2|" \
+ -e "s|#![ ]*/usr/bin/env python$|#!/usr/bin/env python2|" \
+ $(find . -name '*.py')
+
+ cd ${srcdir}
+ mkdir build
+ cd build
+ cmake ../${pkgbase}-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_SKIP_RPATH=ON \
+ -DCMAKE_INSTALL_PREFIX=/usr
+ make
+}
+
+package_kdesdk-cervisia() {
+ pkgdesc='CVS Frontend'
+ depends=('kdebase-runtime')
+ url="http://kde.org/applications/development/cervisia/"
+ install='kdesdk.install'
+ cd $srcdir/build/cervisia
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/cervisia
+ make DESTDIR=$pkgdir install
+}
+
+package_kdesdk-dolphin-plugins() {
+ pkgdesc='Extra Dolphin plugins'
+ depends=('kdebase-dolphin' 'subversion' 'git' 'kdesdk-kompare')
+ install='kdesdk.install'
+ cd $srcdir/build/dolphin-plugins/git
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/dolphin-plugins/svn
+ make DESTDIR=$pkgdir install
+}
+
+package_kdesdk-kapptemplate() {
+ pkgdesc='KDE Template Generator'
+ depends=('kdebase-runtime')
+ url="http://kde.org/applications/development/kapptemplate/"
+ install='kdesdk.install'
+ cd $srcdir/build/kapptemplate
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kapptemplate
+ make DESTDIR=$pkgdir install
+}
+
+package_kdesdk-kate() {
+ pkgdesc='Advanced Text Editor'
+ depends=('kdebase-runtime')
+ url="http://kde.org/applications/utilities/kate/"
+ install='kdesdk-kate.install'
+ cd $srcdir/build/kate
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kate
+ make DESTDIR=$pkgdir install
+}
+
+package_kdesdk-kcachegrind() {
+ pkgdesc='Visualization of Performance Profiling Data'
+ depends=('kdebase-runtime' 'python2')
+ optdepends=('php: PHP support')
+ url="http://kde.org/applications/development/kcachegrind/"
+ install='kdesdk.install'
+ cd $srcdir/build/kcachegrind
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kcachegrind
+ make DESTDIR=$pkgdir install
+}
+
+package_kdesdk-kdeaccounts-plugin() {
+ pkgdesc='KDE Repository Accounts'
+ depends=('kdepim-runtime')
+ cd $srcdir/build/kdeaccounts-plugin
+ make DESTDIR=$pkgdir install
+}
+
+package_kdesdk-kdepalettes() {
+ pkgdesc='Palettes for the Gimp that match the KDE standard color palette'
+ depends=('gimp')
+ install -D -m644 $srcdir/${pkgbase}-${pkgver}/kdepalettes/KDE_Gimp \
+ $pkgdir/usr/share/gimp/2.0/palettes/KDE.gpl
+}
+
+package_kdesdk-kioslave() {
+ pkgdesc='KDED Subversion Module'
+ depends=('kdebase-runtime' 'subversion')
+ cd $srcdir/build/kioslave
+ make DESTDIR=$pkgdir install
+}
+
+package_kdesdk-kmtrace() {
+ pkgdesc='A KDE tool to assist with malloc debugging using glibc´s "mtrace" functionality'
+ depends=('kdebase-runtime')
+ cd $srcdir/build/kmtrace
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kmtrace
+ make DESTDIR=$pkgdir install
+}
+
+package_kdesdk-kompare() {
+ pkgdesc='Diff/Patch Frontend'
+ depends=('kdebase-runtime')
+ url="http://kde.org/applications/development/kompare/"
+ install='kdesdk.install'
+ cd $srcdir/build/kompare
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kompare
+ make DESTDIR=$pkgdir install
+}
+
+package_kdesdk-kpartloader() {
+ pkgdesc='A test application for KParts'
+ depends=('kdebase-runtime')
+ install='kdesdk.install'
+ cd $srcdir/build/kpartloader
+ make DESTDIR=$pkgdir install
+}
+
+package_kdesdk-kprofilemethod() {
+ pkgdesc='Macros helping to profile'
+ cd $srcdir/build/kprofilemethod
+ make DESTDIR=$pkgdir install
+}
+
+package_kdesdk-kstartperf() {
+ pkgdesc='Startup time measurement tool for KDE applications'
+ depends=('kdebase-runtime')
+ cd $srcdir/build/kstartperf
+ make DESTDIR=$pkgdir install
+}
+
+package_kdesdk-kuiviewer() {
+ pkgdesc='Qt Designer UI File Viewer'
+ depends=('kdebase-runtime')
+ url="http://kde.org/applications/development/kuiviewer/"
+ install='kdesdk.install'
+ cd $srcdir/build/kuiviewer
+ make DESTDIR=$pkgdir install
+}
+
+package_kdesdk-lokalize() {
+ pkgdesc='Computer-Aided Translation System'
+ depends=('kdebase-runtime' 'kdebindings-python')
+ url="http://kde.org/applications/development/lokalize/"
+ optdepends=('translate-toolkit: enable extra python script')
+ install='kdesdk.install'
+ cd $srcdir/build/lokalize
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/lokalize
+ make DESTDIR=$pkgdir install
+}
+
+package_kdesdk-okteta() {
+ pkgdesc='Hex Editor'
+ depends=('kdebase-runtime')
+ replaces=('kdeutils-okteta')
+ conflicts=('kdeutils-okteta')
+ url="http://kde.org/applications/utilities/okteta"
+ install='kdesdk-okteta.install'
+ cd $srcdir/build/okteta
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/okteta
+ make DESTDIR=$pkgdir install
+}
+
+package_kdesdk-poxml() {
+ pkgdesc='Translates DocBook XML files using gettext po files'
+ depends=('qt' 'antlr2')
+ cd $srcdir/build/poxml
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/poxml
+ make DESTDIR=$pkgdir install
+}
+
+package_kdesdk-scripts() {
+ pkgdesc='KDE SDK scripts'
+ depends=('python2')
+ cd $srcdir/build/scripts
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/scripts
+ make DESTDIR=$pkgdir install
+}
+
+package_kdesdk-strigi-analyzer() {
+ pkgdesc='Strigi-Analyzer for KDE SDK'
+ depends=('kdelibs')
+ cd $srcdir/build/strigi-analyzer
+ make DESTDIR=$pkgdir install
+}
+
+package_kdesdk-umbrello() {
+ pkgdesc='UML Modeller'
+ depends=('kdebase-runtime')
+ url="http://kde.org/applications/development/umbrello/"
+ install='kdesdk.install'
+ cd $srcdir/build/umbrello
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/umbrello
+ make DESTDIR=$pkgdir install
+}
diff --git a/extra/kdesdk/fix-python2-path.patch b/extra/kdesdk/fix-python2-path.patch
new file mode 100644
index 000000000..c2c0745d1
--- /dev/null
+++ b/extra/kdesdk/fix-python2-path.patch
@@ -0,0 +1,64 @@
+--- kdesdk-4.5.80/kcachegrind/converters/hotshot2calltree~ 2010-11-24 11:53:38.586666671 +0100
++++ kdesdk-4.5.80/kcachegrind/converters/hotshot2calltree 2010-11-24 11:53:38.623333337 +0100
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python2
+ # _*_ coding: latin1 _*_
+
+ #
+--- kdesdk-4.5.80/lokalize/scripts/msgmerge.py~ 2010-11-24 11:22:42.120000002 +0100
++++ kdesdk-4.5.80/lokalize/scripts/msgmerge.py 2010-11-24 11:22:42.146666670 +0100
+@@ -114,7 +114,7 @@
+ print >>sys.stderr, "Execution failed:", e
+
+ cmd='%s/odf/xliffmerge.py -i %s -t %s -o %s' % (ourPath,xliffpathname,xlifftemplatepathname,xliffpathname)
+- if os.name!='nt': cmd='python '+cmd
++ if os.name!='nt': cmd='python2 '+cmd
+ else: cmd=cmd.replace('/','\\')
+ os.system(cmd)
+
+--- kdesdk-4.5.80/lokalize/scripts/xliff2odf.py~ 2010-11-24 11:24:10.853333336 +0100
++++ kdesdk-4.5.80/lokalize/scripts/xliff2odf.py 2010-11-24 11:24:10.883333336 +0100
+@@ -42,7 +42,7 @@
+ xliff2odf.convertxliff(xliffinput, translatedodfpathname, odf)
+
+ ourpath=([p for p in sys.path if os.path.exists(p+'/xliff2odf.py')]+[''])[0]
+- os.system('python "'+ourpath+'/xliff2odf-standalone.py" "%s" "%s" &'%(translatedodfpathname, Editor.currentEntryId()))
++ os.system('python2 "'+ourpath+'/xliff2odf-standalone.py" "%s" "%s" &'%(translatedodfpathname, Editor.currentEntryId()))
+
+ try: convert()
+ except: print 'error occured'
+--- kdesdk-4.5.80/scripts/rename_source_files~ 2010-11-24 11:45:41.040000004 +0100
++++ kdesdk-4.5.80/scripts/rename_source_files 2010-11-24 11:45:41.093333336 +0100
+@@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#! /usr/bin/env python2
+ #
+ # Copyright David Faure <faure@kde.org>, License LGPL v2
+ #
+--- kdesdk-4.5.80/scripts/svn2log.sh~ 2010-11-24 11:46:24.863333337 +0100
++++ kdesdk-4.5.80/scripts/svn2log.sh 2010-11-24 11:46:24.896666669 +0100
+@@ -17,6 +17,6 @@
+ svn cat svn://anonsvn.kde.org/home/kde/trunk/kde-common/accounts > /tmp/accounts.$PPID
+
+ echo "Creating changelog...";
+-svn log -v --xml $1 | python $CURRENT/svn2log.py --users=/tmp/accounts.$PPID --users-charset=UTF8
++svn log -v --xml $1 | python2 $CURRENT/svn2log.py --users=/tmp/accounts.$PPID --users-charset=UTF8
+
+ rm /tmp/accounts.$PPID
+--- kdesdk-4.5.80/scripts/kde_generate_export_header~ 2010-11-24 11:48:49.696666669 +0100
++++ kdesdk-4.5.80/scripts/kde_generate_export_header 2010-11-24 11:48:49.753333338 +0100
+@@ -1,4 +1,4 @@
+-#! /usr/bin/env python
++#! /usr/bin/env python2
+
+ import os, sys, string
+
+--- kdesdk-4.5.80/scripts/reviewboarddiff~ 2010-11-24 11:49:37.686666670 +0100
++++ kdesdk-4.5.80/scripts/reviewboarddiff 2010-11-24 11:49:37.740000003 +0100
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python2
+ # encoding: utf-8
+ #
+ # Generates reviewboard compatible diffs from git-svn repositories.
diff --git a/extra/kdesdk/kdesdk-kate.install b/extra/kdesdk/kdesdk-kate.install
new file mode 100644
index 000000000..a60d358ce
--- /dev/null
+++ b/extra/kdesdk/kdesdk-kate.install
@@ -0,0 +1,12 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+ update-mime-database usr/share/mime &> /dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/extra/kdesdk/kdesdk-okteta.install b/extra/kdesdk/kdesdk-okteta.install
new file mode 100644
index 000000000..3f06b8deb
--- /dev/null
+++ b/extra/kdesdk/kdesdk-okteta.install
@@ -0,0 +1,12 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+ update-mime-database usr/share/mime &> /dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/extra/kdesdk/kdesdk.install b/extra/kdesdk/kdesdk.install
new file mode 100644
index 000000000..e70c054ec
--- /dev/null
+++ b/extra/kdesdk/kdesdk.install
@@ -0,0 +1,11 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/extra/kdetoys/PKGBUILD b/extra/kdetoys/PKGBUILD
new file mode 100644
index 000000000..dfb5cceb5
--- /dev/null
+++ b/extra/kdetoys/PKGBUILD
@@ -0,0 +1,56 @@
+# $Id: PKGBUILD 111784 2011-02-28 23:55:45Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Pierre Schmitz <pierre@archlinux.de>
+
+pkgbase=kdetoys
+pkgname=('kdetoys-amor'
+ 'kdetoys-kteatime'
+ 'kdetoys-ktux')
+pkgver=4.6.1
+pkgrel=1
+arch=('i686' 'x86_64')
+url='http://www.kde.org'
+license=('GPL' 'LGPL' 'FDL')
+groups=('kde' 'kdetoys')
+makedepends=('pkgconfig' 'cmake' 'automoc4' 'kdebase-workspace' 'docbook-xsl')
+source=("http://download.kde.org/stable/${pkgver}/src/${pkgbase}-${pkgver}.tar.bz2")
+sha1sums=('f4870f9f2c38d7a81b08790957a143b4a9e359b2')
+
+build() {
+ cd $srcdir
+ mkdir build
+ cd build
+ cmake ../${pkgbase}-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_SKIP_RPATH=ON \
+ -DCMAKE_INSTALL_PREFIX=/usr
+ make
+}
+
+package_kdetoys-amor() {
+ pkgdesc='On-Screen Creature'
+ depends=('kdebase-runtime')
+ install='kdetoys.install'
+ cd $srcdir/build/amor
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/amor
+ make DESTDIR=$pkgdir install
+}
+
+package_kdetoys-kteatime() {
+ pkgdesc='Tea Cooker'
+ depends=('kdebase-runtime')
+ install='kdetoys.install'
+ cd $srcdir/build/kteatime
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kteatime
+ make DESTDIR=$pkgdir install
+}
+
+package_kdetoys-ktux() {
+ pkgdesc='KTux'
+ depends=('kdebase-workspace' )
+ install='kdetoys.install'
+ cd $srcdir/build/ktux
+ make DESTDIR=$pkgdir install
+}
diff --git a/extra/kdetoys/kdetoys.install b/extra/kdetoys/kdetoys.install
new file mode 100644
index 000000000..e70c054ec
--- /dev/null
+++ b/extra/kdetoys/kdetoys.install
@@ -0,0 +1,11 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/extra/kdeutils/PKGBUILD b/extra/kdeutils/PKGBUILD
new file mode 100644
index 000000000..af6e02417
--- /dev/null
+++ b/extra/kdeutils/PKGBUILD
@@ -0,0 +1,180 @@
+# $Id: PKGBUILD 111785 2011-02-28 23:55:49Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Pierre Schmitz <pierre@archlinux.de>
+
+pkgbase=kdeutils
+pkgname=('kdeutils-ark'
+ 'kdeutils-filelight'
+ 'kdeutils-kcalc'
+ 'kdeutils-kcharselect'
+ 'kdeutils-kdf'
+ 'kdeutils-kfloppy'
+ 'kdeutils-kgpg'
+ 'kdeutils-kremotecontrol'
+ 'kdeutils-ktimer'
+ 'kdeutils-kwallet'
+ 'kdeutils-printer-applet'
+ 'kdeutils-superkaramba'
+ 'kdeutils-sweeper')
+pkgver=4.6.1
+pkgrel=1
+arch=('i686' 'x86_64')
+url='http://www.kde.org'
+license=('GPL' 'LGPL' 'FDL')
+groups=('kde' 'kdeutils')
+makedepends=('pkgconfig' 'cmake' 'automoc4' 'kdebase-lib' 'kdebase-workspace'
+ 'kdebindings-python' 'system-config-printer-common' 'libarchive' 'qimageblitz'
+ 'docbook-xsl' 'qjson')
+source=("http://download.kde.org/stable/${pkgver}/src/${pkgbase}-${pkgver}.tar.bz2")
+sha1sums=('f3fa79f15bc23cd38c6d72170ce957ec3d96e0db')
+
+build() {
+ cd ${srcdir}
+ mkdir build
+ cd build
+ cmake ../${pkgbase}-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_SKIP_RPATH=ON \
+ -DCMAKE_INSTALL_PREFIX=/usr
+ make
+}
+
+package_kdeutils-ark() {
+ pkgdesc='Archiving Tool'
+ depends=('kdebase-runtime' 'kdebase-lib' 'libarchive')
+ optdepends=('p7zip' 'zip' 'unzip' 'unrar')
+ url="http://kde.org/applications/utilities/ark/"
+ cd $srcdir/build/ark
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/ark
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeutils-filelight() {
+ pkgdesc='View disk usage information'
+ depends=('kdebase-runtime' 'qimageblitz')
+ replaces=('filelight')
+ conflicts=('filelight')
+ install='kdeutils.install'
+ url="http://methylblue.com/filelight/"
+ cd $srcdir/build/filelight
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/filelight
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeutils-kcalc() {
+ pkgdesc='Scientific Calculator'
+ depends=('kdebase-runtime')
+ url="http://kde.org/applications/utilities/kcalc/"
+ cd $srcdir/build/kcalc
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kcalc
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeutils-kcharselect() {
+ pkgdesc='Character Selector'
+ depends=('kdebase-runtime')
+ url="http://kde.org/applications/utilities/kcharselect/"
+ cd $srcdir/build/kcharselect
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kcharselect
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeutils-kdf() {
+ pkgdesc='View Disk Usage'
+ depends=('kdebase-runtime')
+ url="http://kde.org/applications/system/kdiskfree/"
+ install='kdeutils.install'
+ cd $srcdir/build/kdf
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kdf
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeutils-kfloppy() {
+ pkgdesc='Floppy Formatter'
+ depends=('kdebase-runtime')
+ url="http://kde.org/applications/utilities/kfloppy/"
+ install='kdeutils.install'
+ cd $srcdir/build/kfloppy
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kfloppy
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeutils-kgpg() {
+ pkgdesc='A GnuPG frontend'
+ depends=('kdepim-runtime' 'kde-agent')
+ url="http://kde.org/applications/utilities/kgpg"
+ install='kdeutils.install'
+ cd $srcdir/build/kgpg
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kgpg
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeutils-kremotecontrol() {
+ pkgdesc='Configure your remote controls for use with applications'
+ replaces=('kdeutils-kdelirc')
+ conflicts=('kdeutils-kdelirc')
+ depends=('kdebase-workspace')
+ url="http://kde.org/applications/utilities/kremotecontrol"
+ install='kdeutils.install'
+ cd $srcdir/build/kremotecontrol
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kcontrol/kremotecontrol
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeutils-ktimer() {
+ pkgdesc='Countdown Launcher'
+ depends=('kdebase-runtime')
+ url="http://kde.org/applications/utilities/ktimer"
+ install='kdeutils.install'
+ cd $srcdir/build/ktimer
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/ktimer
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeutils-kwallet() {
+ pkgdesc='Wallet Management Tool'
+ depends=('kdebase-runtime')
+ url="http://kde.org/applications/system/kwalletmanager/"
+ install='kdeutils.install'
+ cd $srcdir/build/kwallet
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kwallet
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeutils-printer-applet() {
+ pkgdesc='System tray icon for managing print jobs'
+ depends=('kdebase-runtime' 'kdebindings-python' 'system-config-printer-common')
+ url="http://kde.org/applications/system/printerapplet/"
+ cd $srcdir/build/printer-applet
+ make DESTDIR=$pkgdir install
+
+ # Use the python2 executable
+ find "${pkgdir}" -name '*.py' | xargs sed -i 's|#!/usr/bin/env python|#!/usr/bin/env python2|'
+}
+
+package_kdeutils-superkaramba() {
+ pkgdesc='An engine for cool desktop eyecandy'
+ depends=('kdebase-runtime' 'kdebindings-python' 'qimageblitz')
+ url="http://kde.org/applications/utilities/superkaramba"
+ install='kdeutils.install'
+ cd $srcdir/build/superkaramba
+ make DESTDIR=$pkgdir install
+}
+
+package_kdeutils-sweeper() {
+ pkgdesc='System Cleaner'
+ depends=('kdebase-runtime')
+ url="http://kde.org/applications/utilities/sweeper/"
+ cd $srcdir/build/sweeper
+ make DESTDIR=$pkgdir install
+}
diff --git a/extra/kdeutils/kdeutils.install b/extra/kdeutils/kdeutils.install
new file mode 100644
index 000000000..e70c054ec
--- /dev/null
+++ b/extra/kdeutils/kdeutils.install
@@ -0,0 +1,11 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/extra/kdevelop-pg-qt/PKGBUILD b/extra/kdevelop-pg-qt/PKGBUILD
new file mode 100644
index 000000000..ec6ba8753
--- /dev/null
+++ b/extra/kdevelop-pg-qt/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 112731 2011-03-06 12:25:05Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+
+pkgname=kdevelop-pg-qt
+pkgver=0.9.0
+pkgrel=1
+pkgdesc="KDevelop Parser Generator, a LL(1) parser generator used by KDevelop language plugins"
+arch=('i686' 'x86_64')
+url="http://www.kdevelop.org/"
+license=('GPL')
+depends=('kdelibs')
+makedepends=('cmake' 'automoc4')
+source=("http://download.kde.org/stable/${pkgname}/${pkgver}/src/${pkgname}-${pkgver}.tar.bz2")
+md5sums=('06e25c81cc34a5bddda3091ed3280e71')
+
+build() {
+ cd ${srcdir}
+ mkdir build
+ cd build
+ cmake ../${pkgname}-${pkgver} \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_BUILD_TYPE=Release
+ make
+}
+
+package() {
+ cd ${srcdir}/build
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/kdevelop-php/PKGBUILD b/extra/kdevelop-php/PKGBUILD
new file mode 100644
index 000000000..554d08c5e
--- /dev/null
+++ b/extra/kdevelop-php/PKGBUILD
@@ -0,0 +1,47 @@
+# $Id: PKGBUILD 112807 2011-03-06 23:51:20Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+
+pkgname=kdevelop-php
+pkgver=1.2.0
+_pkgver=4.2.0
+pkgrel=2
+pkgdesc="PHP language and documentation plugin for KDevelop/Quanta"
+arch=('i686' 'x86_64')
+url="http://www.kdevelop.org/"
+license=('GPL')
+depends=('kdevplatform' 'kdevelop-pg-qt')
+makedepends=('cmake' 'automoc4')
+replaces=('kdevelop-php-docs')
+conflicts=('kdevelop-php-docs')
+options=('!makeflags')
+source=("http://download.kde.org/stable/kdevelop/${_pkgver}/src/${pkgname}-${pkgver}.tar.bz2"
+ "http://download.kde.org/stable/kdevelop/${_pkgver}/src/${pkgname}-docs-${pkgver}.tar.bz2")
+md5sums=('fc48c194e7b87c9fd0850b2d7fc2a78b'
+ '5e7c3c33d9e0767bbf3b3df02147dfae')
+
+build() {
+ cd ${srcdir}
+ mkdir build
+ cd build
+ cmake ../${pkgname}-${pkgver} \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_BUILD_TYPE=Release
+ make
+
+ cd ${srcdir}
+ mkdir build-docs
+ cd build-docs
+ # kdevelop-php-docs
+ cmake ../${pkgname}-docs-${pkgver} \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_BUILD_TYPE=Release
+ make
+}
+
+package() {
+ cd ${srcdir}/build
+ make DESTDIR=${pkgdir} install
+
+ cd ${srcdir}/build-docs
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/kdevelop/PKGBUILD b/extra/kdevelop/PKGBUILD
new file mode 100644
index 000000000..87611934d
--- /dev/null
+++ b/extra/kdevelop/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id: PKGBUILD 107402 2011-01-24 17:29:50Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Giovanni Scafora <giovanni@archlinux.org>
+
+pkgname=kdevelop
+pkgver=4.2.0
+pkgrel=1
+pkgdesc="A C/C++ development environment for KDE"
+arch=('i686' 'x86_64')
+url="http://www.kdevelop.org/"
+license=('GPL')
+depends=('kdebase-workspace' 'kdevplatform' 'kdesdk-okteta')
+makedepends=('cmake' 'automoc4' 'perl')
+install="${pkgname}.install"
+source=("http://download.kde.org/stable/${pkgname}/${pkgver}/src/${pkgname}-${pkgver}.tar.bz2")
+sha1sums=('cebd9c00e19a9c27ad65e89b4653ca0b31261275')
+
+build() {
+ cd ${srcdir}
+ mkdir build
+ cd build
+ cmake ../${pkgname}-${pkgver} \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_BUILD_TYPE=Release
+ make
+}
+
+package() {
+ cd ${srcdir}/build
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/kdevelop/kdevelop.install b/extra/kdevelop/kdevelop.install
new file mode 100644
index 000000000..951710b86
--- /dev/null
+++ b/extra/kdevelop/kdevelop.install
@@ -0,0 +1,12 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+ update-mime-database usr/share/mime &> /dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/extra/kdevplatform/PKGBUILD b/extra/kdevplatform/PKGBUILD
new file mode 100644
index 000000000..0b3544576
--- /dev/null
+++ b/extra/kdevplatform/PKGBUILD
@@ -0,0 +1,33 @@
+# $Id: PKGBUILD 107401 2011-01-24 17:29:42Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Giovanni Scafora <giovanni@archlinux.org>
+
+pkgname=kdevplatform
+pkgver=1.2.0
+_pkgver=4.2.0
+pkgrel=1
+pkgdesc="A C/C++ development platform for KDE"
+arch=('i686' 'x86_64')
+url="http://www.kdevelop.org/"
+license=('GPL')
+depends=('kdelibs' 'boost-libs' 'subversion' 'qjson')
+optdepends=("kdesdk-kompare: difference checking")
+makedepends=('cmake' 'automoc4' 'boost')
+install=${pkgname}.install
+source=("http://download.kde.org/stable/kdevelop/${_pkgver}/src/${pkgname}-${pkgver}.tar.bz2")
+sha1sums=('7f0f8c35435f55238483b74bea013a9454e3c7ae')
+
+build() {
+ cd ${srcdir}
+ mkdir build
+ cd build
+ cmake ../${pkgname}-${pkgver} \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_BUILD_TYPE=Release
+ make
+}
+
+package() {
+ cd ${srcdir}/build
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/kdevplatform/kdevplatform.install b/extra/kdevplatform/kdevplatform.install
new file mode 100644
index 000000000..e70c054ec
--- /dev/null
+++ b/extra/kdevplatform/kdevplatform.install
@@ -0,0 +1,11 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/extra/kdewebdev/PKGBUILD b/extra/kdewebdev/PKGBUILD
new file mode 100644
index 000000000..ca35eb33a
--- /dev/null
+++ b/extra/kdewebdev/PKGBUILD
@@ -0,0 +1,67 @@
+# $Id: PKGBUILD 111786 2011-02-28 23:55:56Z andrea $
+# Maintainer: Pierre Schmitz <pierre@archlinux.de>
+
+pkgbase=kdewebdev
+pkgname=('kdewebdev-kfilereplace'
+ 'kdewebdev-kimagemapeditor'
+ 'kdewebdev-klinkstatus'
+ 'kdewebdev-kommander')
+pkgver=4.6.1
+pkgrel=1
+arch=('i686' 'x86_64')
+url='http://www.kde.org'
+license=('GPL' 'LGPL' 'FDL')
+groups=('kde' 'kdewebdev')
+makedepends=('pkgconfig' 'cmake' 'automoc4' 'ruby' 'tidyhtml' 'kdepim-runtime'
+ 'docbook-xsl' 'boost')
+source=("http://download.kde.org/stable/${pkgver}/src/${pkgbase}-${pkgver}.tar.bz2")
+sha1sums=('e915e8ea6d886f46ddc770f60362d3758b593713')
+
+build() {
+ cd $srcdir
+ mkdir build
+ cd build
+ cmake ../${pkgbase}-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_SKIP_RPATH=ON \
+ -DCMAKE_INSTALL_PREFIX=/usr
+ make
+}
+
+package_kdewebdev-kfilereplace() {
+ pkgdesc='Search & Replace Tool'
+ depends=('kdebase-runtime')
+ url="http://kde.org/applications/utilities/kfilereplace/"
+ install='kdewebdev.install'
+ cd $srcdir/build/kfilereplace
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kfilereplace
+ make DESTDIR=$pkgdir install
+}
+
+package_kdewebdev-kimagemapeditor() {
+ pkgdesc='HTML Image Map Editor'
+ depends=('kdebase-runtime')
+ install='kdewebdev.install'
+ cd $srcdir/build/kimagemapeditor
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/kimagemapeditor
+ make DESTDIR=$pkgdir install
+}
+
+package_kdewebdev-klinkstatus() {
+ pkgdesc='Link Checker'
+ depends=('kdepim-runtime' 'tidyhtml')
+ install='kdewebdev.install'
+ cd $srcdir/build/klinkstatus
+ make DESTDIR=$pkgdir install
+ cd $srcdir/build/doc/klinkstatus
+ make DESTDIR=$pkgdir install
+}
+
+package_kdewebdev-kommander() {
+ pkgdesc='Executor for Kommander dialogs'
+ depends=('kdebase-runtime')
+ cd $srcdir/build/kommander
+ make DESTDIR=$pkgdir install
+}
diff --git a/extra/kdewebdev/kdewebdev.install b/extra/kdewebdev/kdewebdev.install
new file mode 100644
index 000000000..e70c054ec
--- /dev/null
+++ b/extra/kdewebdev/kdewebdev.install
@@ -0,0 +1,11 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/extra/kdiff3/PKGBUILD b/extra/kdiff3/PKGBUILD
new file mode 100644
index 000000000..0bf620978
--- /dev/null
+++ b/extra/kdiff3/PKGBUILD
@@ -0,0 +1,32 @@
+# $Id: PKGBUILD 100978 2010-11-27 05:30:04Z eric $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+
+pkgname=kdiff3
+pkgver=0.9.95
+pkgrel=2
+pkgdesc="A KDE file comparator/merge tool"
+arch=('i686' 'x86_64')
+url="http://kdiff3.sourceforge.net/"
+license=('GPL')
+depends=('kdebase-runtime')
+makedepends=('cmake' 'automoc4' 'kdebase-lib' 'docbook-xml')
+optdepends=('kdebase-lib: for the plugin')
+install=kdiff3.install
+source=(http://downloads.sourceforge.net/sourceforge/kdiff3/${pkgname}-${pkgver}.tar.gz docbook.patch)
+md5sums=('652a98bf79ba762a8a646d4a0fddb323' '7a91d1ab6f62c41dc65082ae99bdeff0')
+sha1sums=('1fb27e8b42463ea23ad0169e20819352c1c476b7' '96a856fc7d9829f64bb59853a6dffba8a70d794e')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -p1 < ../docbook.patch
+ sed -i 's|kdiff3_part.rc DESTINATION ${DATA_INSTALL_DIR}/kdiff3|kdiff3_part.rc DESTINATION ${DATA_INSTALL_DIR}/kdiff3part|' src-QT4/CMakeLists.txt
+ mkdir release
+ cd release
+ cmake .. -DCMAKE_INSTALL_PREFIX=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}/release"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/kdiff3/docbook.patch b/extra/kdiff3/docbook.patch
new file mode 100644
index 000000000..b957e51fd
--- /dev/null
+++ b/extra/kdiff3/docbook.patch
@@ -0,0 +1,40 @@
+diff -r --unified kdiff3-0.9.95/doc/de/index.docbook kdiff3-0.9.95-neu/doc/de/index.docbook
+--- kdiff3-0.9.95/doc/de/index.docbook 2010-10-11 23:51:27.575286877 +0200
++++ kdiff3-0.9.95-neu/doc/de/index.docbook 2010-10-11 23:52:40.138829992 +0200
+@@ -1,5 +1,5 @@
+ <?xml version="1.0" ?>
+-<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.1.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [
++<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [
+ <!ENTITY kdiff3 "<application
+ >KDiff3</application
+ >">
+diff -r --unified kdiff3-0.9.95/doc/fr/index.docbook kdiff3-0.9.95-neu/doc/fr/index.docbook
+--- kdiff3-0.9.95/doc/fr/index.docbook 2010-10-11 23:51:27.610931550 +0200
++++ kdiff3-0.9.95-neu/doc/fr/index.docbook 2010-10-11 23:52:23.739728901 +0200
+@@ -1,5 +1,5 @@
+ <?xml version="1.0" ?>
+-<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.1.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [
++<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [
+ <!ENTITY kdiff3 "<application
+ >KDiff3</application
+ >">
+diff -r --unified kdiff3-0.9.95/doc/it/index.docbook kdiff3-0.9.95-neu/doc/it/index.docbook
+--- kdiff3-0.9.95/doc/it/index.docbook 2010-10-11 23:51:27.580378903 +0200
++++ kdiff3-0.9.95-neu/doc/it/index.docbook 2010-10-11 23:52:32.462829209 +0200
+@@ -1,5 +1,5 @@
+ <?xml version="1.0" ?>
+-<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.1.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [
++<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [
+ <!ENTITY kdiff3 "<application
+ >KDiff3</application
+ >">
+diff -r --unified kdiff3-0.9.95/doc/nl/index.docbook kdiff3-0.9.95-neu/doc/nl/index.docbook
+--- kdiff3-0.9.95/doc/nl/index.docbook 2010-10-11 23:51:27.575286877 +0200
++++ kdiff3-0.9.95-neu/doc/nl/index.docbook 2010-10-11 23:52:45.371829602 +0200
+@@ -1,5 +1,5 @@
+ <?xml version="1.0" ?>
+-<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.1.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [
++<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [
+ <!ENTITY kdiff3 "<application
+ >KDiff3</application
+ >">
diff --git a/extra/kdiff3/kdiff3.install b/extra/kdiff3/kdiff3.install
new file mode 100644
index 000000000..1c0de2e4f
--- /dev/null
+++ b/extra/kdiff3/kdiff3.install
@@ -0,0 +1,11 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/extra/kexec-tools/PKGBUILD b/extra/kexec-tools/PKGBUILD
new file mode 100644
index 000000000..533c343aa
--- /dev/null
+++ b/extra/kexec-tools/PKGBUILD
@@ -0,0 +1,37 @@
+# $Id: PKGBUILD 110362 2011-02-19 03:39:03Z allan $
+# Contributor: Camille Moncelier <pix@devlife.org>, simo <simo@archlinux.org>
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=kexec-tools
+pkgver=2.0.2
+pkgrel=3
+pkgdesc="Load another kernel from the currently executing Linux kernel"
+arch=('i686' 'x86_64')
+url="http://kernel.org/pub/linux/utils/kernel/kexec/"
+source=("http://kernel.org/pub/linux/utils/kernel/kexec/kexec-tools-${pkgver}.tar.bz2"
+ 'kexec' 'kexec.conf.d')
+depends=('gawk')
+makedepends=('zlib' 'xz')
+backup=('etc/conf.d/kexec')
+license=('GPL2')
+md5sums=('35d05fed1c97008ac34c5bfb929295eb'
+ '15599234f174ddc4d2611f32effec6ab'
+ 'b9ddfb9fbcc7e4e7e7294fe94fa60aeb')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ export LDFLAGS+=" -static"
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd $srcdir/$pkgname-$pkgver
+ make DESTDIR=$pkgdir install
+
+ mv $pkgdir/usr/sbin $pkgdir/sbin
+
+ install -D -m644 kexec/kexec.8 $pkgdir/usr/share/man/man8/kexec.8
+ install -D -m644 $srcdir/kexec.conf.d $pkgdir/etc/conf.d/kexec
+ install -D -m755 $srcdir/kexec $pkgdir/etc/rc.d/kexec
+}
diff --git a/extra/kexec-tools/kexec b/extra/kexec-tools/kexec
new file mode 100755
index 000000000..bef5b5ef3
--- /dev/null
+++ b/extra/kexec-tools/kexec
@@ -0,0 +1,45 @@
+#!/bin/bash
+
+[ -f /etc/conf.d/kexec ] && . /etc/conf.d/kexec
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+case "$1" in
+ start)
+ stat_busy "Enabled loading kernel for Kexec into running kernel on reboot"
+ add_daemon kexec
+ stat_done
+ ;;
+
+ stop|load)
+ if [ "$RUNLEVEL" = "6" -o "$1" = "load" ]; then
+ stat_busy "Loading kernel for Kexec into running kernel"
+ [ -f "$KPATH" ] || stat_fail
+ [ -f "$INITRD" ] && _INITRD="--initrd=$INITRD"
+ /sbin/kexec -l $KPATH --append="root=$ROOTPART $KPARAM" $_INITRD > /dev/null 2>&1
+ else
+ stat_busy "Skipping loading kernel for Kexec into running kernel"
+ fi
+ if [ $? -eq 0 ] ; then
+ rm_daemon kexec
+ stat_done
+ else
+ stat_fail
+ fi
+ ;;
+
+ unload)
+ stat_busy "Unloading Kexec kernel from running kernel"
+ /sbin/kexec -u
+ if [ $? -eq 0 ] ; then
+ stat_done
+ else
+ stat_fail
+ fi
+ ;;
+
+ *)
+ echo "usage: $0 {start|stop|load|unload}"
+esac
+exit 0
diff --git a/extra/kexec-tools/kexec-vesafb.diff b/extra/kexec-tools/kexec-vesafb.diff
new file mode 100644
index 000000000..ec164226d
--- /dev/null
+++ b/extra/kexec-tools/kexec-vesafb.diff
@@ -0,0 +1,78 @@
+Index: kexec-tools-1.101/kexec/arch/i386/x86-linux-setup.c
+===================================================================
+--- kexec-tools-1.101.orig/kexec/arch/i386/x86-linux-setup.c 2006-03-03 10:51:31.000000000 +0100
++++ kexec-tools-1.101/kexec/arch/i386/x86-linux-setup.c 2006-03-10 14:02:20.000000000 +0100
+@@ -24,6 +24,8 @@
+ #include <sys/stat.h>
+ #include <sys/mman.h>
+ #include <fcntl.h>
++#include <sys/ioctl.h>
++#include <linux/fb.h>
+ #include <unistd.h>
+ #include <x86/x86-linux.h>
+ #include "../../kexec.h"
+@@ -94,6 +96,56 @@ void setup_linux_bootloader_parameters(
+ cmdline_ptr[cmdline_len - 1] = '\0';
+ }
+
++int setup_linux_vesafb(struct x86_linux_param_header *real_mode)
++{
++ struct fb_fix_screeninfo fix;
++ struct fb_var_screeninfo var;
++ int fd;
++
++ fd = open("/dev/fb0", O_RDONLY);
++ if (-1 == fd)
++ return -1;
++
++ if (-1 == ioctl(fd, FBIOGET_FSCREENINFO, &fix))
++ goto out;
++ if (-1 == ioctl(fd, FBIOGET_VSCREENINFO, &var))
++ goto out;
++ if (0 != strcmp(fix.id, "VESA VGA"))
++ goto out;
++ close(fd);
++
++ real_mode->orig_video_isVGA = 0x23 /* VIDEO_TYPE_VLFB */;
++ real_mode->lfb_width = var.xres;
++ real_mode->lfb_height = var.yres;
++ real_mode->lfb_depth = var.bits_per_pixel;
++ real_mode->lfb_base = fix.smem_start;
++ real_mode->lfb_linelength = fix.line_length;
++ real_mode->vesapm_seg = 0;
++
++ /* fixme: better get size from /proc/iomem */
++ real_mode->lfb_size = (fix.smem_len + 65535) / 65536;
++ real_mode->pages = (fix.smem_len + 4095) / 4096;
++
++ if (var.bits_per_pixel > 8) {
++ real_mode->red_pos = var.red.offset;
++ real_mode->red_size = var.red.length;
++ real_mode->green_pos = var.green.offset;
++ real_mode->green_size = var.green.length;
++ real_mode->blue_pos = var.blue.offset;
++ real_mode->blue_size = var.blue.length;
++ real_mode->rsvd_pos = var.transp.offset;
++ real_mode->rsvd_size = var.transp.length;
++ }
++ fprintf(stderr, "%s: %dx%dx%d @ %lx +%lx\n", __FUNCTION__,
++ var.xres, var.yres, var.bits_per_pixel,
++ fix.smem_start, fix.smem_len);
++ return 0;
++
++ out:
++ close(fd);
++ return -1;
++}
++
+ void setup_linux_system_parameters(struct x86_linux_param_header *real_mode)
+ {
+ /* Fill in information the BIOS would usually provide */
+@@ -111,6 +163,7 @@ void setup_linux_system_parameters(struc
+ real_mode->orig_video_ega_bx = 0;
+ real_mode->orig_video_isVGA = 1;
+ real_mode->orig_video_points = 16;
++ setup_linux_vesafb(real_mode);
+
+ /* Fill in the memsize later */
+ real_mode->ext_mem_k = 0;
diff --git a/extra/kexec-tools/kexec.conf.d b/extra/kexec-tools/kexec.conf.d
new file mode 100644
index 000000000..17b10d228
--- /dev/null
+++ b/extra/kexec-tools/kexec.conf.d
@@ -0,0 +1,16 @@
+#
+# Configuration for Kexec
+#
+
+# Path to kernel, default to stock arch kernel
+KPATH="/boot/vmlinuz26"
+
+# Root partition
+# The default attempts to autodetect
+ROOTPART="$(awk '/^[ \t]*[^#]/ { if ($2 == "/") { print $1; }}' /etc/fstab)"
+
+# Additional kernel parameters
+KPARAM="ro"
+
+# Path to initrd image, default to stock arch kernel
+INITRD="/boot/kernel26.img"
diff --git a/extra/keytouch-editor/ChangeLog b/extra/keytouch-editor/ChangeLog
new file mode 100644
index 000000000..0503eb1f7
--- /dev/null
+++ b/extra/keytouch-editor/ChangeLog
@@ -0,0 +1,8 @@
+2008-06-22 Eric Belanger <eric@archlinux.org>
+
+ * keytouch-editor 3.1.3-1
+ * Patched for glibc 2.8
+ * Added to [extra] repo
+ * Added ChangeLog
+
+
diff --git a/extra/keytouch-editor/PKGBUILD b/extra/keytouch-editor/PKGBUILD
new file mode 100644
index 000000000..19addfe4e
--- /dev/null
+++ b/extra/keytouch-editor/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 3507 2008-06-23 04:35:20Z eric $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+# Contributor: mouse256 & AndyRTR
+
+pkgname=keytouch-editor
+pkgver=3.1.3
+pkgrel=1
+pkgdesc="An utility to create keyboard files for keytouch"
+arch=('i686' 'x86_64')
+url="http://keytouch.sourceforge.net/"
+license=('GPL')
+depends=('gtk2')
+install=keytouch-editor.install
+source=(http://downloads.sourceforge.net/keytouch/${pkgname}-${pkgver}.tar.gz keytouch-editor-3.1.3-glibc28.patch)
+md5sums=('046e0525d2b1275f1ec1b5140bd93565' 'def8cf803d7f25dd919b8ad090083bf1')
+sha1sums=('a8c0b28bac4b1f9de3897e1a78dc14b4d994334e' 'c6b725267a628cfc93388044cfd72974f53debaf')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ patch -p1 < ../keytouch-editor-3.1.3-glibc28.patch || return 1
+ autoreconf || return 1
+ ./configure --prefix=/usr || return 1
+ make || return 1
+ make DESTDIR=${pkgdir} install || return 1
+}
diff --git a/extra/keytouch-editor/keytouch-editor-3.1.3-glibc28.patch b/extra/keytouch-editor/keytouch-editor-3.1.3-glibc28.patch
new file mode 100644
index 000000000..885813feb
--- /dev/null
+++ b/extra/keytouch-editor/keytouch-editor-3.1.3-glibc28.patch
@@ -0,0 +1,12 @@
+diff -Naur keytouch-editor-3.1.3-orig/src/Makefile.am keytouch-editor-3.1.3/src/Makefile.am
+--- keytouch-editor-3.1.3-orig/src/Makefile.am 2008-06-22 22:47:34.000000000 -0400
++++ keytouch-editor-3.1.3/src/Makefile.am 2008-06-22 22:49:52.000000000 -0400
+@@ -9,7 +9,7 @@
+
+ bin_PROGRAMS = keytouch-editor-bin
+
+-AM_CFLAGS=@CFLAGS@ -Wall
++AM_CFLAGS=@CFLAGS@ -Wall -D_GNU_SOURCE
+
+ keytouch_editor_bin_SOURCES = \
+ main.c keytouch-editor.h \
diff --git a/extra/keytouch-editor/keytouch-editor.install b/extra/keytouch-editor/keytouch-editor.install
new file mode 100644
index 000000000..8a684997a
--- /dev/null
+++ b/extra/keytouch-editor/keytouch-editor.install
@@ -0,0 +1,10 @@
+post_install() {
+ cat << EOF
+==> To use keytouch-editor:
+You'll need to have either gksu (pacman -S gksu) or kdesu (pacman -S kdebase) installed.
+EOF
+}
+
+post_upgrade() {
+ post_install $1
+}
diff --git a/extra/keytouch/ChangeLog b/extra/keytouch/ChangeLog
new file mode 100644
index 000000000..24105e0d2
--- /dev/null
+++ b/extra/keytouch/ChangeLog
@@ -0,0 +1,18 @@
+2009-10-17 Eric Belanger <eric@archlinux.org>
+
+ * keytouch 2.4.1-2
+ * Fixed daemon script (close FS#15693)
+
+2008-07-20 Eric Belanger <eric@archlinux.org>
+
+ * keytouch 2.4.1-1
+ * Upstream update
+ * Removed unnecessary post-upgrade message
+
+2008-06-16 Eric Belanger <eric@archlinux.org>
+
+ * keytouch 2.4.0-1
+ * Upstream update
+ * Patched for glibc 2.8
+ * Added to [extra] repo
+ * Added ChangeLog
diff --git a/extra/keytouch/PKGBUILD b/extra/keytouch/PKGBUILD
new file mode 100644
index 000000000..34a5c53a6
--- /dev/null
+++ b/extra/keytouch/PKGBUILD
@@ -0,0 +1,46 @@
+# $Id: PKGBUILD 56013 2009-10-17 20:37:01Z eric $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+# Contributor: mouse256 & AndyRTR
+
+pkgname=keytouch
+pkgver=2.4.1
+pkgrel=2
+pkgdesc="A program which allows you to easily configure the extra function keys of your keyboard"
+arch=('i686' 'x86_64')
+url="http://keytouch.sourceforge.net/"
+license=('GPL')
+depends=('libxtst' 'gnome-menus' 'alsa-lib')
+makedepends=('pkgconfig')
+options=('!makeflags')
+install=keytouch.install
+source=(http://downloads.sourceforge.net/sourceforge/keytouch/${pkgname}-${pkgver}.tar.gz \
+ keytouch.daemon keytouch.desktop Xsession)
+md5sums=('c3a917ae9666c9649d43d9aa09ecc96a' 'a35776aee9361577220f718be81c2b4d'\
+ 'c5ffe28988dc74fae812ffe204f8883b' '795430001f4fdb6691d0e93b09a241a9')
+sha1sums=('f1f26dc95c21afd404aebe2b1066e75c8313ca80' 'af23f4526cb1f3e5b9a3680af6a24d1566dabb7d'\
+ '5bac2f62f1ac26caa32da02a8075dc090d981cfb' '960b2fa51cfdeb2bc3fa7e086dc9f3a3be483dff')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc || return 1
+ make || return 1
+ install -d "${pkgdir}"/etc/{rc.d,X11/Xsession.d} || return 1
+ install -d "${pkgdir}/usr/share/keytouch" || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+
+ cd "${srcdir}/${pkgname}-${pkgver}/keytouch-config"
+ ./configure --prefix=/usr --sysconfdir=/etc || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+
+ cd "${srcdir}/${pkgname}-${pkgver}/keytouch-keyboard"
+ ./configure --prefix=/usr --sysconfdir=/etc || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+
+ install -D -m755 "${srcdir}/keytouch.daemon" "${pkgdir}/etc/rc.d/keytouch" || return 1
+ install -D -m644 "${srcdir}/keytouch.desktop" "${pkgdir}/usr/share/applications/keytouch.desktop" || return 1
+ install -D -m755 "${srcdir}/Xsession" "${pkgdir}/etc/X11/Xsession" || return 1
+ chmod 755 "${pkgdir}"/etc/X11/Xsession.d/* || return 1
+ rm "${pkgdir}"/etc/rc.d/*.sh
+}
diff --git a/extra/keytouch/Xsession b/extra/keytouch/Xsession
new file mode 100755
index 000000000..0da89f9aa
--- /dev/null
+++ b/extra/keytouch/Xsession
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+for script in /etc/X11/Xsession.d/*; do
+ if [ -x $script ]; then
+ . $script
+ fi
+done
+unset script
diff --git a/extra/keytouch/keytouch.daemon b/extra/keytouch/keytouch.daemon
new file mode 100755
index 000000000..e43bea979
--- /dev/null
+++ b/extra/keytouch/keytouch.daemon
@@ -0,0 +1,41 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+PID=$(pidof -o %PPID /usr/bin/keytouch-acpid)
+case "$1" in
+ start)
+ stat_busy "Starting keyTouch Daemon"
+ if [ -x /etc/rc.d/acpid ]; then
+ ck_daemon acpid && /etc/rc.d/acpid start
+ fi
+ /usr/bin/keytouch-init
+ if [ -z "$PID" ]; then
+ /usr/bin/keytouch-acpid &> /dev/null &
+ fi
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon keytouch
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping keyTouch Daemon"
+ [ ! -z "$PID" ] && kill $PID &>/dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon keytouch
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
diff --git a/extra/keytouch/keytouch.desktop b/extra/keytouch/keytouch.desktop
new file mode 100644
index 000000000..f127b1041
--- /dev/null
+++ b/extra/keytouch/keytouch.desktop
@@ -0,0 +1,9 @@
+[Desktop Entry]
+Name=keyTouch
+Comment=Keyboard configuration tool
+Icon=/usr/share/keytouch/pixmaps/icon.png
+Exec=/usr/bin/keytouch
+Terminal=false
+Type=Application
+Categories=Application;Utility
+StartupNotify=false
diff --git a/extra/keytouch/keytouch.install b/extra/keytouch/keytouch.install
new file mode 100644
index 000000000..c3b9c9cec
--- /dev/null
+++ b/extra/keytouch/keytouch.install
@@ -0,0 +1,14 @@
+post_install() {
+ cat << EOF
+==> To use keytouch:
+o Add keytouch to your DAEMONS line in /etc/rc.conf
+o Add:
+ /etc/X11/Xsession
+to your ~/.xinitrc
+o You'll need to have either gksu (pacman -S gksu) or kdesu (pacman -S kdebase) installed.
+
+==> If your keyboard is not supported "out of the box":
+o Go to http://keytouch.sourceforge.net/dl-keyboards.html to see if your keyboard has been added
+ or install keytouch-editor to make your custom keyboard file.
+EOF
+}
diff --git a/extra/keyutils/PKGBUILD b/extra/keyutils/PKGBUILD
new file mode 100644
index 000000000..8e1810f9f
--- /dev/null
+++ b/extra/keyutils/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 116950 2011-03-26 15:07:29Z tpowa $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+pkgname=keyutils
+pkgver=1.4
+pkgrel=1
+pkgdesc="Linux Key Management Utilities"
+arch=(i686 x86_64)
+url="http://www.kernel.org"
+license=('GPL2' 'LGPL2.1')
+depends=('glibc' 'sh')
+backup=(etc/request-key.conf)
+source=(http://people.redhat.com/~dhowells/$pkgname/$pkgname-$pkgver.tar.bz2)
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ sed -i -e '/CFLAGS/s|:= -g -O2|+=|' Makefile
+ make CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}"
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make DESTDIR="$pkgdir" install
+}
+md5sums=('e168c1bdaf5aa93c2cbf8a5e7f8ef27b')
diff --git a/extra/kile/PKGBUILD b/extra/kile/PKGBUILD
new file mode 100644
index 000000000..5e2987a07
--- /dev/null
+++ b/extra/kile/PKGBUILD
@@ -0,0 +1,32 @@
+# $Id: PKGBUILD 108891 2011-02-04 17:44:40Z ronald $
+# Maintainer: Ronald van Haren <ronald.archlinux.org>
+# Contributor : Damir Perisa <damir.perisa@bluewin.ch>
+
+pkgname=kile
+pkgver=2.1b5
+pkgrel=1
+pkgdesc="A user friendly TeX/LaTeX frontend for KDE."
+arch=("i686" "x86_64")
+license=('GPL2')
+url="http://kile.sourceforge.net/"
+depends=('kdelibs' 'texlive-core')
+makedepends=('cmake' 'automoc4' 'docbook-xml' 'docbook-xsl')
+install=kile.install
+source=("http://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.bz2")
+sha1sums=('ee805e5210474d42344d690d24383adaad1d8842')
+
+build() {
+ cd ${srcdir}
+ mkdir build
+ cd build
+ cmake ../${pkgname}-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_SKIP_RPATH=ON \
+ -DCMAKE_INSTALL_PREFIX=/usr
+ make
+}
+
+package() {
+ cd ${srcdir}/build
+ make DESTDIR=$pkgdir install
+}
diff --git a/extra/kile/kile.install b/extra/kile/kile.install
new file mode 100644
index 000000000..e70c054ec
--- /dev/null
+++ b/extra/kile/kile.install
@@ -0,0 +1,11 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/extra/kino/PKGBUILD b/extra/kino/PKGBUILD
new file mode 100644
index 000000000..eedf2910f
--- /dev/null
+++ b/extra/kino/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 56265 2009-10-20 20:59:02Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Robert Emil Berge <robert@rebi.no>
+
+pkgname=kino
+pkgver=1.3.4
+pkgrel=2
+pkgdesc="A non-linear DV editor."
+arch=('i686' 'x86_64')
+url="http://www.kinodv.org/"
+license=('GPL')
+depends=('libavc1394' 'libiec61883' 'libdv' 'libglade' 'libxv' 'libsamplerate' 'libsm')
+makedepends=('intltool')
+options=('!libtool')
+install=kino.install
+source=(http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.gz)
+md5sums=('52f8ce690e45a089e3edc6c7af61a05c')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr \
+ --with-udev-rules-dir=/lib/udev/rules.d
+ make || return 1
+ make DESTDIR="${pkgdir}" install
+ chown root:root -R $pkgdir/usr/share/kino/help
+}
diff --git a/extra/kino/kino.install b/extra/kino/kino.install
new file mode 100644
index 000000000..7dc309965
--- /dev/null
+++ b/extra/kino/kino.install
@@ -0,0 +1,14 @@
+post_install() {
+ echo "update desktop mime database..."
+ update-mime-database usr/share/mime 1> /dev/null
+ update-desktop-database -q
+}
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ echo "update desktop mime database..."
+ update-mime-database usr/share/mime 1> /dev/null
+ update-desktop-database -q
+}
diff --git a/extra/kipi-plugins/PKGBUILD b/extra/kipi-plugins/PKGBUILD
new file mode 100644
index 000000000..1a707bb6a
--- /dev/null
+++ b/extra/kipi-plugins/PKGBUILD
@@ -0,0 +1,37 @@
+# $Id: PKGBUILD 112839 2011-03-07 07:34:56Z tpowa $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=kipi-plugins
+pkgver=1.9.0
+pkgrel=1
+pkgdesc="libkipi plugins for digikam and kde apps"
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://www.kipi-plugins.org"
+makedepends=('pkgconfig' 'cmake' 'automoc4' 'libgpod' 'opencv' 'qjson')
+depends=('kdegraphics-libs' 'kdepimlibs')
+source=("http://downloads.sourceforge.net/kipi/$pkgname-$pkgver.tar.bz2")
+optdepends=('imagemagick: for picture manipulation'
+ 'qca: for shwup webservice support'
+ 'libgpod: send images to ipod'
+ 'opencv: red eye removal plugin'
+ 'hugin: for expoblending plugin'
+ 'qjson: for debianscreenshots plugin')
+install=${pkgname}.install
+
+build() {
+ cd $srcdir
+ mkdir build
+ cd build
+ cmake ../${pkgname}-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_SKIP_RPATH=ON
+ make
+}
+
+package() {
+ cd ${srcdir}/build
+ make DESTDIR=$pkgdir install
+}
+md5sums=('a3200b0ce90251bc631fa90ff0818dc0')
diff --git a/extra/kipi-plugins/kipi-plugins.install b/extra/kipi-plugins/kipi-plugins.install
new file mode 100644
index 000000000..e70c054ec
--- /dev/null
+++ b/extra/kipi-plugins/kipi-plugins.install
@@ -0,0 +1,11 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/extra/kismet/PKGBUILD b/extra/kismet/PKGBUILD
new file mode 100644
index 000000000..b381469ad
--- /dev/null
+++ b/extra/kismet/PKGBUILD
@@ -0,0 +1,38 @@
+# $Id: PKGBUILD 94735 2010-10-10 15:05:47Z guillaume $
+# Contributer: Jason Chu <jason@archlinux.org>
+# Maintainer: Juergen Hoetzel <jason@archlinux.org>
+
+pkgname=kismet
+pkgver=2010_07_R1
+_realver="${pkgver//_/-}"
+pkgrel=1
+pkgdesc="802.11b sniffing software"
+arch=('i686' 'x86_64')
+license=('GPL')
+depends=('gmp' 'imagemagick' 'libpcap>=1.0.0' 'ncurses' 'dbus' 'libjpeg>=7')
+optdepends=(perl-libwww)
+url="http://www.kismetwireless.net/"
+backup=('etc/kismet.conf' 'etc/kismet_drone.conf')
+options=('!makeflags')
+source=(http://www.kismetwireless.net/code/kismet-${pkgver//_/-}.tar.gz)
+md5sums=('85e59186eb529889118b5635f35cf57d')
+
+build() {
+ cd "$srcdir/kismet-$_realver"
+
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --localstatedir=/var || return 1
+
+ make dep || return 1
+ make || return 1
+ sed -i 's/prism2/wlanng/g' conf/kismet.conf || return 1
+ make DESTDIR="$pkgdir" install || return 1
+
+ chown root:root "$pkgdir"/usr/share/man/man{1,5}/*
+
+ install -D -m 644 "$srcdir/kismet-$_realver/README" "$pkgdir/usr/share/kismet/README"
+
+ # Fix the *.conf unexpanded ${prefix} problems
+ sed -i 's%\${prefix}%/usr%' "$pkgdir"/etc/*.conf || return 1
+}
diff --git a/extra/kismet/kismet-2008-05-R1-infinite-loop.diff b/extra/kismet/kismet-2008-05-R1-infinite-loop.diff
new file mode 100644
index 000000000..f8417943e
--- /dev/null
+++ b/extra/kismet/kismet-2008-05-R1-infinite-loop.diff
@@ -0,0 +1,20 @@
+--- gpsmap.cc
++++ gpsmap.cc
+@@ -874,7 +874,7 @@
+
+ // Break up the path to the gpsxml file and form a path based on that
+ unsigned int lastslash = 0;
+- for (unsigned int x = origxmlfile.find('/'); x != string::npos;
++ for (string::size_type x = origxmlfile.find('/'); x != string::npos;
+ lastslash = x, x = origxmlfile.find('/', lastslash+1)) {
+ // We don't actually need to do anything...
+ }
+@@ -882,7 +882,7 @@
+ comp = origxmlfile.substr(0, lastslash);
+
+ lastslash = 0;
+- for (unsigned int x = orignetfile.find('/'); x != string::npos;
++ for (string::size_type x = orignetfile.find('/'); x != string::npos;
+ lastslash = x, x = orignetfile.find('/', lastslash+1)) {
+ // We don't actually need to do anything...
+ }
diff --git a/extra/kismet/kismet-build.patch b/extra/kismet/kismet-build.patch
new file mode 100644
index 000000000..9935ca4fa
--- /dev/null
+++ b/extra/kismet/kismet-build.patch
@@ -0,0 +1,11 @@
+--- macaddr.h.orig 2009-07-08 02:29:38.000000000 -0400
++++ macaddr.h 2009-07-08 02:37:54.000000000 -0400
+@@ -73,7 +73,7 @@
+ longmac |= (uint64_t) bs_in[5] << ((MAC_LEN - 5 - 1) * 8);
+
+ // If it has a mask component, get that
+- char *in_mask = strchr(in, '/');
++ const char *in_mask = strchr(in, '/');
+ if (in_mask != NULL) {
+ longmask = 0;
+
diff --git a/extra/kmldonkey/PKGBUILD b/extra/kmldonkey/PKGBUILD
new file mode 100644
index 000000000..234be2119
--- /dev/null
+++ b/extra/kmldonkey/PKGBUILD
@@ -0,0 +1,33 @@
+# $Id: PKGBUILD 104423 2011-01-02 13:07:17Z andrea $
+# Maintainer:
+# Contributor: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Pierre Schmitz <pierre@archlinux.de>
+
+pkgname=kmldonkey
+pkgver=2.0.2
+_kdever=4.4.0
+pkgrel=5
+pkgdesc="An MLDonkey frontend for KDE"
+arch=('i686' 'x86_64')
+url='http://userbase.kde.org/KMLDonkey'
+license=('GPL')
+depends=('kdebase-workspace')
+makedepends=('pkgconfig' 'cmake' 'automoc4' 'docbook-xsl')
+install="${pkgname}.install"
+source=("http://download.kde.org/stable/extragear/${pkgname}-${pkgver}-kde${_kdever}.tar.bz2")
+md5sums=('40ae039dc01a45807111c2d0023eeaa6')
+
+build() {
+ cd ${srcdir}
+ mkdir build
+ cd build
+ cmake ../${pkgname}-${pkgver}-kde${_kdever} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=/usr
+ make
+}
+
+package() {
+ cd ${srcdir}/build
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/kmldonkey/kmldonkey.install b/extra/kmldonkey/kmldonkey.install
new file mode 100644
index 000000000..e70c054ec
--- /dev/null
+++ b/extra/kmldonkey/kmldonkey.install
@@ -0,0 +1,11 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/extra/kmplayer/PKGBUILD b/extra/kmplayer/PKGBUILD
new file mode 100644
index 000000000..b288fed3a
--- /dev/null
+++ b/extra/kmplayer/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id: PKGBUILD 94084 2010-10-04 12:47:37Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: damir <damir@archlinux.org>
+
+pkgname=kmplayer
+pkgver=0.11.2c
+pkgrel=1
+pkgdesc="Video player plugin for Konqueror and basic MPlayer/Xine/ffmpeg/ffserver/VDR frontend for KDE"
+arch=('i686' 'x86_64')
+license=('GPL' 'LGPL' 'FDL')
+url="http://kmplayer.kde.org"
+depends=('kdebase-runtime' 'pango')
+makedepends=('pkgconfig' 'cmake' 'automoc4' 'docbook-xsl')
+install=${pkgname}.install
+source=("http://kmplayer.kde.org/pkgs/$pkgname-$pkgver.tar.bz2")
+md5sums=('7a1363dfaad0c7b563ecbd58f301e704')
+
+build() {
+ cd ${srcdir}
+ mkdir build
+ cd build
+ cmake ../${pkgname}-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=/usr
+ make
+}
+
+package() {
+ cd ${srcdir}/build
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/kmplayer/kmplayer.install b/extra/kmplayer/kmplayer.install
new file mode 100644
index 000000000..e70c054ec
--- /dev/null
+++ b/extra/kmplayer/kmplayer.install
@@ -0,0 +1,11 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/extra/kobodeluxe/ChangeLog b/extra/kobodeluxe/ChangeLog
new file mode 100644
index 000000000..08b4c2dec
--- /dev/null
+++ b/extra/kobodeluxe/ChangeLog
@@ -0,0 +1,8 @@
+2009-01-06 Eric Belanger <eric@archlinux.org>
+
+ * kobodeluxe 0.5.1-2
+ * Fixed build issue
+ * Added game group support
+ * Added .desktop file and icons
+ * Improved package description
+ * Added ChangeLog
diff --git a/extra/kobodeluxe/PKGBUILD b/extra/kobodeluxe/PKGBUILD
new file mode 100644
index 000000000..defcb760c
--- /dev/null
+++ b/extra/kobodeluxe/PKGBUILD
@@ -0,0 +1,44 @@
+# $Id: PKGBUILD 23389 2009-01-09 00:47:54Z eric $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+# Contributor: Damir Perisa <damir.perisa@bluewin.ch>
+
+pkgname=kobodeluxe
+pkgver=0.5.1
+pkgrel=2
+pkgdesc="An enhanced version of Akira Higuchi's game XKobo, an addictive space shoot'em up"
+arch=('i686' 'x86_64')
+url="http://www.olofson.net/kobodl/"
+license=('GPL' 'LGPL')
+depends=('gcc-libs' 'libjpeg' 'libpng' 'sdl' 'sdl_image' 'sdl_mixer')
+install=kobodeluxe.install
+source=(http://www.olofson.net/kobodl/download/KoboDeluxe-${pkgver}.tar.gz kobodeluxe-gcc-4.3.patch)
+md5sums=('cf765559461213d651c7be042507b767' '2b76306ec997fdc64986b4425e5b7814')
+sha1sums=('12abe182ccde52050cd23077092d0424d25c3e75' '274dc8e7909bc6f9fab31306c85d992af8b62674')
+
+build() {
+ cd ${srcdir}/KoboDeluxe-${pkgver}
+ patch -p0 < ../kobodeluxe-gcc-4.3.patch
+ ./configure --prefix=/usr --localstatedir=/var --sharedstatedir=/var/games || return 1
+ make || return 1
+ make DESTDIR=${pkgdir} install || return 1
+
+ tar -xzf icons.tar.gz
+ install -D -m644 icons/KDE/kobo-deluxe.desktop ${pkgdir}/usr/share/applications/kobo-deluxe.desktop
+ install -D -m644 icons/KDE/icons/128x128/kobodl.png ${pkgdir}/usr/share/icons/hicolor/128x128/kobodl.png
+ install -D -m644 icons/KDE/icons/16x16/kobodl.png ${pkgdir}/usr/share/icons/hicolor/16x16/kobodl.png
+ install -D -m644 icons/KDE/icons/22x22/kobodl.png ${pkgdir}/usr/share/icons/hicolor/22x22/kobodl.png
+ install -D -m644 icons/KDE/icons/32x32/kobodl.png ${pkgdir}/usr/share/icons/hicolor/32x32/kobodl.png
+ install -D -m644 icons/KDE/icons/48x48/kobodl.png ${pkgdir}/usr/share/icons/hicolor/48x48/kobodl.png
+ install -D -m644 icons/KDE/icons/64x64/kobodl.png ${pkgdir}/usr/share/icons/hicolor/64x64/kobodl.png
+ install -D -m644 icons/Ubuntu/kobo-icon.xpm ${pkgdir}/usr/share/pixmaps/kobo-icon.xpm
+ ln -s /usr/share/icons/hicolor/48x48/kobodl.png ${pkgdir}/usr/share/icons/kobodl.png
+
+ chown root:games ${pkgdir}/usr/bin/kobodl
+ chmod 2755 ${pkgdir}/usr/bin/kobodl
+ chown root:games ${pkgdir}/var/games
+ chmod 775 ${pkgdir}/var/games
+ chown root:games ${pkgdir}/var/games/kobo-deluxe
+ chmod 775 ${pkgdir}/var/games/kobo-deluxe
+ chown root:games ${pkgdir}/var/games/kobo-deluxe/scores
+ chmod 775 ${pkgdir}/var/games/kobo-deluxe/scores
+}
diff --git a/extra/kobodeluxe/kobodeluxe-gcc-4.3.patch b/extra/kobodeluxe/kobodeluxe-gcc-4.3.patch
new file mode 100644
index 000000000..98451bb29
--- /dev/null
+++ b/extra/kobodeluxe/kobodeluxe-gcc-4.3.patch
@@ -0,0 +1,83 @@
+--- enemies.h
++++ enemies.h
+@@ -70,9 +70,9 @@
+ extern const enemy_kind bomb2;
+ extern const enemy_kind bombdeto;
+ extern const enemy_kind cannon;
+-extern const enemy_kind pipe1;
++extern const enemy_kind pipeone;
+ extern const enemy_kind core;
+-extern const enemy_kind pipe2;
++extern const enemy_kind pipetwo;
+ extern const enemy_kind rock;
+ extern const enemy_kind ring;
+ extern const enemy_kind enemy_m1;
+@@ -430,7 +430,7 @@
+
+ inline int _enemy::is_pipe()
+ {
+- return ((_state != notuse) && ((ek == &pipe1) || (ek == &pipe2)));
++ return ((_state != notuse) && ((ek == &pipeone) || (ek == &pipetwo)));
+ }
+
+
+--- enemy.cpp
++++ enemy.cpp
+@@ -713,7 +713,7 @@
+
+ void _enemy::kill_cannon()
+ {
+- enemies.make(&pipe1, CS2PIXEL(x), CS2PIXEL(y));
++ enemies.make(&pipeone, CS2PIXEL(x), CS2PIXEL(y));
+ sound.g_base_node_explo(x, y);
+ release();
+ }
+@@ -755,10 +755,10 @@
+
+ void _enemy::kill_core()
+ {
+- enemies.make(&pipe2, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 3);
+- enemies.make(&pipe2, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 7);
+- enemies.make(&pipe2, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 1);
+- enemies.make(&pipe2, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 5);
++ enemies.make(&pipetwo, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 3);
++ enemies.make(&pipetwo, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 7);
++ enemies.make(&pipetwo, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 1);
++ enemies.make(&pipetwo, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 5);
+ enemies.make(&explosion4, CS2PIXEL(x), CS2PIXEL(y));
+ sound.g_base_core_explo(x, y);
+ release();
+@@ -851,7 +851,7 @@
+ screen.set_map(x1, y1, m ^ a);
+ release();
+ }
+-const enemy_kind pipe1 = {
++const enemy_kind pipeone = {
+ 0,
+ &_enemy::make_pipe1,
+ &_enemy::move_pipe1,
+@@ -978,19 +978,19 @@
+ }
+ p ^= a;
+ if(p & U_MASK)
+- enemies.make(&pipe2, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 1);
++ enemies.make(&pipetwo, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 1);
+ if(p & R_MASK)
+- enemies.make(&pipe2, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 3);
++ enemies.make(&pipetwo, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 3);
+ if(p & D_MASK)
+- enemies.make(&pipe2, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 5);
++ enemies.make(&pipetwo, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 5);
+ if(p & L_MASK)
+- enemies.make(&pipe2, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 7);
++ enemies.make(&pipetwo, CS2PIXEL(x), CS2PIXEL(y), 0, 0, 7);
+ manage.add_score(10);
+ release();
+ }
+
+
+-const enemy_kind pipe2 = {
++const enemy_kind pipetwo = {
+ 0,
+ &_enemy::make_pipe2,
+ &_enemy::move_pipe2,
diff --git a/extra/kobodeluxe/kobodeluxe.install b/extra/kobodeluxe/kobodeluxe.install
new file mode 100644
index 000000000..7136b4880
--- /dev/null
+++ b/extra/kobodeluxe/kobodeluxe.install
@@ -0,0 +1,21 @@
+post_install() {
+ post_upgrade
+}
+
+post_upgrade() {
+ if [ -d usr/share/kobo-deluxe/kobo-deluxe/scores ] ; then
+ for i in usr/share/kobo-deluxe/kobo-deluxe/scores/* ; do
+ mv $i var/games/kobo-deluxe/scores/
+ done
+ rmdir usr/share/kobo-deluxe/kobo-deluxe/scores
+ rmdir usr/share/kobo-deluxe/kobo-deluxe
+ chgrp -R games /var/games/kobo-deluxe/scores/
+ fi
+ # update icon cache if gtk2 is installed. I don't want to add a gtk2 depends just for that.
+ [ -x usr/bin/gtk-update-icon-cache ] && gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+post_remove() {
+ # update icon cache if gtk2 is installed. I don't want to add a gtk2 depends just for that.
+ [ -x usr/bin/gtk-update-icon-cache ] && gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
diff --git a/extra/koffice/PKGBUILD b/extra/koffice/PKGBUILD
new file mode 100644
index 000000000..66e08bc5c
--- /dev/null
+++ b/extra/koffice/PKGBUILD
@@ -0,0 +1,298 @@
+# $Id: PKGBUILD 115172 2011-03-17 10:46:47Z andrea $
+# Maintainer: Ronald van Haren <ronald.archlinux.org>
+# Contributor: BlackEagle < ike DOT devolder AT gmail DOT com >
+
+pkgbase=koffice
+pkgname=(
+ 'koffice-filters'
+ 'koffice-interfaces'
+ 'koffice-libs'
+ 'koffice-plugins'
+ 'koffice-pics'
+ 'koffice-servicetypes'
+ 'koffice-templates'
+ 'koffice-tools'
+ 'koffice-karbon'
+ 'koffice-karbon-doc'
+# 'koffice-kchart'
+# 'koffice-kchart-doc'
+ 'koffice-kexi'
+ 'koffice-kexi-doc'
+ 'koffice-kformula'
+ 'koffice-kformula-doc'
+ 'koffice-kounavail'
+ 'koffice-kplato'
+# 'koffice-kplato-doc'
+ 'koffice-kpresenter'
+ 'koffice-kpresenter-doc'
+ 'koffice-krita'
+# 'koffice-krita-doc' # no krita-doc anymore upstream
+ 'koffice-kspread'
+ 'koffice-kspread-doc'
+ 'koffice-kword'
+# 'koffice-kword-doc' # see http://userbase.kde.org/KWord/Manual for documentation (not supplied by upstream anymore in the sources)
+ 'koffice-handbook'
+ 'koffice-thesaurus-doc'
+# 'koffice-kdgantt' # still an empty package
+)
+pkgver=2.3.3
+pkgrel=3
+arch=('i686' 'x86_64')
+url='http://koffice.kde.org'
+license=('GPL' 'LGPL' 'FDL')
+makedepends=('pkg-config' 'cmake' 'automoc4' 'boost' 'eigen' \
+ 'kdelibs' 'gsl' 'qca' 'lcms' 'glew' 'qimageblitz' \
+ 'kdepimlibs' 'pstoedit' 'poppler-qt' 'libwpd' 'libwpg' 'openexr' 'opengtl' 'kdegraphics-libs' 'sqlite3' 'docbook-xml' 'docbook-xsl')
+groups=('koffice')
+source=("ftp://ftp.kde.org/pub/kde/stable/${pkgbase}-${pkgver}/${pkgbase}-${pkgver}.tar.bz2"
+ "kde4-koffice-libwpg02.patch")
+sha256sums=('31ba0d98c0d29c7b8ab97efdeb6c618b82177b2b0ec85da088178254da43c099'
+ '69106deb4081d71b5bd8f2e4f5af67ca689e4ce9f2bb49c11dbce5fb3409d612')
+
+build() {
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+
+ patch -Np1 -i "${srcdir}/kde4-koffice-libwpg02.patch"
+
+ cd "${srcdir}"
+ mkdir build
+ cd build
+ cmake ../${pkgbase}-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_SKIP_RPATH=ON \
+ -DCMAKE_INSTALL_PREFIX=/usr
+ make
+}
+
+##### 1st package common files, depends, optdepends of the koffice applications #####
+
+package_koffice-filters(){
+ pkgdesc="Filters for the KDE office suite"
+ optdepends=('libgsf: Microsoft Word document importer' 'libwpd: WordPerfect document importer'
+ 'libwpg: Corel WordPerfect Graphics image importer' 'pstoedit: Karbon EPS import filter'
+ 'kdegraphics-libs: support for raw images')
+ install=filters.install
+ cd "${srcdir}/build/filters"
+ make DESTDIR="${pkgdir}" install
+}
+
+package_koffice-interfaces(){
+ pkgdesc="Interfaces for the KDE office suite"
+ depends=('kdelibs' 'koffice-libs')
+ cd "${srcdir}/build/interfaces"
+ make DESTDIR="${pkgdir}" install
+}
+
+package_koffice-libs(){
+ pkgdesc="Libs for the KDE office suite"
+ depends=('kdepimlibs' 'qca' 'lcms' 'koffice-servicetypes')
+ cd "${srcdir}/build/libs"
+ make DESTDIR="${pkgdir}" install
+}
+
+package_koffice-plugins(){
+ pkgdesc="Plugins for the KDE office suite"
+ depends=('koffice-libs')
+ replaces=('koffice-kchart')
+ conflicts=('koffice-kchart')
+ cd "${srcdir}/build/plugins"
+ make DESTDIR="${pkgdir}" install
+}
+
+package_koffice-pics(){
+ pkgdesc="Icons for the KDE office suite"
+ install=koffice.install
+ cd "${srcdir}/build/pics"
+ make DESTDIR="${pkgdir}" install
+}
+
+package_koffice-servicetypes(){
+ pkgdesc="Servicetypes for the KDE office suite"
+ cd "${srcdir}/build/servicetypes"
+ make DESTDIR="${pkgdir}" install
+}
+
+package_koffice-templates(){
+ pkgdesc="Templates for the KDE office suite"
+ cd "${srcdir}/build/templates"
+ make DESTDIR="${pkgdir}" install
+}
+
+package_koffice-tools(){
+ pkgdesc="Tools for the KDE office suite"
+ depends=('koffice-libs')
+ cd "${srcdir}/build/tools"
+ make DESTDIR="${pkgdir}" install
+}
+
+#### package common files done #####
+
+#### package apps and their docs #####
+
+package_koffice-karbon(){
+ pkgdesc="Vector drawing application for KDE"
+ depends=('hicolor-icon-theme' 'koffice-libs' 'koffice-templates')
+ optdepends=('koffice-filters: import/export filters')
+ install=koffice.install
+ cd "${srcdir}/build/karbon"
+ make DESTDIR="${pkgdir}" install
+}
+
+package_koffice-karbon-doc(){
+ pkgdesc="Documentation for karbon"
+ cd "${srcdir}/build/doc/karbon"
+ make DESTDIR="${pkgdir}" install
+}
+
+package_koffice-kexi(){
+ pkgdesc="Integrated data management application for the KDE office suite"
+ depends=('kdelibs' 'koffice-libs' 'koffice-kspread' 'sqlite3')
+ cd "${srcdir}/build/kexi"
+ make DESTDIR="${pkgdir}" install
+}
+
+package_koffice-kexi-doc(){
+ pkgdesc="Documentation for kexi"
+ cd "${srcdir}/build/doc/kexi"
+ make DESTDIR="${pkgdir}" install
+}
+
+package_koffice-kformula(){
+ pkgdesc="Formula editor for the KDE office suite"
+ depends=('kdelibs' 'koffice-libs')
+ cd "${srcdir}/build/kformula"
+ make DESTDIR="${pkgdir}" install
+}
+
+package_koffice-kformula-doc() {
+ pkgdesc="Documentation for koffice-kformula"
+ cd "${srcdir}/build/doc/kformula"
+ make DESTDIR="${pkgdir}" install
+}
+
+
+package_koffice-kounavail(){
+ pkgdesc="Kounavail for the KDE office suite"
+ depends=('kdelibs' 'koffice-libs')
+ cd "${srcdir}/build/kounavail"
+ make DESTDIR="${pkgdir}" install
+}
+
+package_koffice-kplato(){
+ pkgdesc="Project management application for KDE"
+ depends=('hicolor-icon-theme' 'koffice-libs' 'kdepimlibs' 'koffice-templates' \
+ 'koffice-plugins' 'koffice-kword')
+ install=koffice.install
+ cd "${srcdir}/build/kplato"
+ make DESTDIR="${pkgdir}" install
+}
+
+#package_koffice-kplato-doc(){
+# pkgdesc="Documentation for kplato"
+# cd ${srcdir}/build/doc/kplato
+# make DESTDIR="${pkgdir}" install
+#}
+
+package_koffice-kpresenter(){
+ pkgdesc="Presentation tool for KDE"
+ depends=('hicolor-icon-theme' 'koffice-libs' 'koffice-templates')
+ optdepends=('koffice-filters: import/export filters')
+ install=koffice.install
+ cd "${srcdir}/build/kpresenter"
+ make DESTDIR="${pkgdir}" install
+}
+
+package_koffice-kpresenter-doc(){
+ pkgdesc="Documentation for kpresenter"
+ cd "${srcdir}/build/doc/kpresenter"
+ make DESTDIR="${pkgdir}" install
+}
+
+package_koffice-krita(){
+ pkgdesc="Graphics editor for KDE"
+ depends=('hicolor-icon-theme' 'glew' 'qimageblitz' 'koffice-libs' \
+ 'koffice-templates' 'koffice-plugins' 'poppler-qt' 'shared-mime-info' \
+ 'openexr' 'opengtl')
+ optdepends=('koffice-filters: import/export filters')
+ install=krita.install
+ cd "${srcdir}/build/krita"
+ make DESTDIR="${pkgdir}" install
+}
+
+#package_koffice-krita-doc(){
+# pkgdesc="Documentation for krita"
+# cd ${srcdir}/build/doc/krita
+# make DESTDIR="${pkgdir}" install
+#}
+
+
+package_koffice-kspread(){
+ pkgdesc="Spreadsheet application for KDE"
+ depends=('hicolor-icon-theme' 'gsl' 'koffice-libs' 'koffice-templates' 'koffice-plugins')
+ optdepends=('koffice-filters: import/export filters')
+ install=koffice.install
+ cd "${srcdir}/build/kspread"
+ make DESTDIR="${pkgdir}" install
+}
+
+package_koffice-kspread-doc(){
+ pkgdesc="Documentation for kspread"
+ cd "${srcdir}/build/doc/kspread"
+ make DESTDIR="${pkgdir}" install
+}
+
+package_koffice-kword(){
+ pkgdesc="Wordprocessor for KDE"
+ depends=('hicolor-icon-theme' 'koffice-libs' 'koffice-templates' 'koffice-pics' \
+ 'koffice-kounavail' 'koffice-plugins')
+ optdepends=('koffice-filters: import/export filters')
+ install=koffice.install
+ cd "${srcdir}/build/kword"
+ make DESTDIR="${pkgdir}" install
+
+ # some sed lines to have python2 in extension scripts
+ sed -i "s|/usr/bin/env python|/usr/bin/env python2|" "${pkgdir}/usr/share/apps/kword/scripts/extensions/oouno.py"
+ sed -i "s|/usr/bin/env python|/usr/bin/env python2|" "${pkgdir}/usr/share/apps/kword/scripts/extensions/importdoxyxml.py"
+ sed -i "s|/usr/bin/env python|/usr/bin/env python2|" "${pkgdir}/usr/share/apps/kword/scripts/extensions/onlinehelp.py"
+}
+
+#package_koffice-kword-doc(){
+# pkgdesc="Documentation for kword"
+# cd ${srcdir}/build/doc/kword
+# make DESTDIR="${pkgdir}" install
+#}
+
+##### package apps done #####
+
+#package_koffice-kchart(){
+# pkgdesc="Charting tool for KDE"
+# depends=('hicolor-icon-theme' 'koffice-interfaces' 'koffice-templates')
+# optdepends=('koffice-filters: import/export filters')
+# install=koffice.install
+# cd "${srcdir}/build/kchart"
+# make DESTDIR="${pkgdir}" install
+#}
+
+#package_koffice-kchart-doc(){
+# pkgdesc="Documentation for kchart"
+# cd "${srcdir}/build/doc/kchart"
+# make DESTDIR="${pkgdir}" install
+#}
+
+#package_koffice-kdgantt(){
+# pkgdesc="Gantt for KDE"
+# cd "${srcdir}/build/kdgantt"
+# make DESTDIR="${pkgdir}" install
+#}
+
+package_koffice-handbook() {
+ pkgdesc="Documentation for koffice"
+ cd "${srcdir}/build/doc/koffice"
+ make DESTDIR="${pkgdir}" install
+}
+
+package_koffice-thesaurus-doc(){
+ pkgdesc="Documentation for koffice-thesaurus"
+ cd "${srcdir}/build/doc/thesaurus"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/koffice/filters.install b/extra/koffice/filters.install
new file mode 100644
index 000000000..7c8a8bd2b
--- /dev/null
+++ b/extra/koffice/filters.install
@@ -0,0 +1,11 @@
+post_install() {
+ update-mime-database usr/share/mime &> /dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/extra/koffice/kde4-koffice-libwpg02.patch b/extra/koffice/kde4-koffice-libwpg02.patch
new file mode 100644
index 000000000..e2a55a216
--- /dev/null
+++ b/extra/koffice/kde4-koffice-libwpg02.patch
@@ -0,0 +1,1323 @@
+diff -Nur koffice-2.3.1/filters/karbon/wpg/import/CMakeLists.txt koffice-2.3.1-libwpg02/filters/karbon/wpg/import/CMakeLists.txt
+--- koffice-2.3.1/filters/karbon/wpg/import/CMakeLists.txt 2011-01-15 21:05:35.000000000 +0100
++++ koffice-2.3.1-libwpg02/filters/karbon/wpg/import/CMakeLists.txt 2011-01-18 07:40:25.000000000 +0100
+@@ -1,16 +1,11 @@
+
+-
+ include_directories(${CMAKE_BINARY_DIR}/filters/ ${WPD_INCLUDE_DIR} ${LIBWPG_INCLUDE_DIR}/)
+
+-set(wpgimport_PART_SRCS
+-WPGImport.cpp
+-OdgExporter.cxx
+-FileOutputHandler.cxx
+-GraphicsElement.cxx)
++set(wpgimport_PART_SRCS WPGImport.cpp)
+
+ kde4_add_plugin(wpgimport ${wpgimport_PART_SRCS})
+
+-target_link_libraries(wpgimport komain ${LIBWPG_LIBRARIES} ${LIBWPG_STREAM_LIBRARIES})
++target_link_libraries(wpgimport komain ${LIBWPG_LIBRARIES} ${LIBWPG_STREAM_LIBRARIES} ${WPD_LIBRARIES})
+
+ install(TARGETS wpgimport DESTINATION ${PLUGIN_INSTALL_DIR})
+ install(FILES karbon_wpg_import.desktop DESTINATION ${SERVICES_INSTALL_DIR})
+diff -Nur koffice-2.3.1/filters/karbon/wpg/import/FileOutputHandler.cxx koffice-2.3.1-libwpg02/filters/karbon/wpg/import/FileOutputHandler.cxx
+--- koffice-2.3.1/filters/karbon/wpg/import/FileOutputHandler.cxx 2011-01-15 21:05:35.000000000 +0100
++++ koffice-2.3.1-libwpg02/filters/karbon/wpg/import/FileOutputHandler.cxx 1970-01-01 01:00:00.000000000 +0100
+@@ -1,95 +0,0 @@
+-/* libwpg
+- * Copyright (C) 2006 Fridrich Strba (fridrich.strba@bluewin.ch)
+- *
+- * This library is free software; you can redistribute it and/or
+- * modify it under the terms of the GNU Library General Public
+- * License as published by the Free Software Foundation; either
+- * version 2 of the License, or (at your option) any later version.
+- *
+- * This library is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- * Library General Public License for more details.
+- *
+- * You should have received a copy of the GNU Library General Public
+- * License along with this library; if not, write to the
+- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+- * Boston, MA 02111-1301 USA
+- *
+- * For further information visit http://libwpg.sourceforge.net
+- */
+-
+-/* "This product is not manufactured, approved, or supported by
+- * Corel Corporation or Corel Corporation Limited."
+- */
+-
+-#include "FileOutputHandler.hxx"
+-
+-FileOutputHandler::FileOutputHandler(std::ostringstream &contentStream) :
+- mbIsTagOpened(false),
+- mContentStream(contentStream)
+-{
+-}
+-
+-void FileOutputHandler::startDocument()
+-{
+-}
+-
+-void FileOutputHandler::startElement(const char *psName, const std::vector<std::pair<std::string, std::string> > &xPropList)
+-{
+- if (mbIsTagOpened)
+- {
+- mContentStream << ">";
+- mbIsTagOpened = false;
+- }
+- mContentStream << "<" << psName;
+-
+- for (std::vector<std::pair<std::string, std::string> >::const_iterator i = xPropList.begin(); i != xPropList.end(); i++)
+- {
+- mContentStream << " " << (*i).first.c_str() << "=\"" << (*i).second.c_str() << "\"";
+- }
+- mbIsTagOpened = true;
+- msOpenedTagName = psName;
+-}
+-
+-void FileOutputHandler::endElement(const char *psName)
+-{
+- if (mbIsTagOpened)
+- {
+- if( msOpenedTagName == psName )
+- {
+- mContentStream << "/>";
+- mbIsTagOpened = false;
+- }
+- else // should not happen, but handle it
+- {
+- mContentStream << ">";
+- mContentStream << "</" << psName << ">";
+- mbIsTagOpened = false;
+- }
+- }
+- else
+- {
+- mContentStream << "</" << psName << ">";
+- mbIsTagOpened = false;
+- }
+-}
+-
+-void FileOutputHandler::characters(const std::string &sCharacters)
+-{
+- if (mbIsTagOpened)
+- {
+- mContentStream << ">";
+- mbIsTagOpened = false;
+- }
+- mContentStream << sCharacters.c_str();
+-}
+-
+-void FileOutputHandler::endDocument()
+-{
+- if (mbIsTagOpened)
+- {
+- mContentStream << ">";
+- mbIsTagOpened = false;
+- }
+-}
+diff -Nur koffice-2.3.1/filters/karbon/wpg/import/FileOutputHandler.hxx koffice-2.3.1-libwpg02/filters/karbon/wpg/import/FileOutputHandler.hxx
+--- koffice-2.3.1/filters/karbon/wpg/import/FileOutputHandler.hxx 2011-01-15 21:05:35.000000000 +0100
++++ koffice-2.3.1-libwpg02/filters/karbon/wpg/import/FileOutputHandler.hxx 1970-01-01 01:00:00.000000000 +0100
+@@ -1,49 +0,0 @@
+-/* libwpg
+- * Copyright (C) 2006 Fridrich Strba (fridrich.strba@bluewin.ch)
+- *
+- * This library is free software; you can redistribute it and/or
+- * modify it under the terms of the GNU Library General Public
+- * License as published by the Free Software Foundation; either
+- * version 2 of the License, or (at your option) any later version.
+- *
+- * This library is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- * Library General Public License for more details.
+- *
+- * You should have received a copy of the GNU Library General Public
+- * License along with this library; if not, write to the
+- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+- * Boston, MA 02111-1301 USA
+- *
+- * For further information visit http://libwpg.sourceforge.net
+- */
+-
+-/* "This product is not manufactured, approved, or supported by
+- * Corel Corporation or Corel Corporation Limited."
+- */
+-
+-#ifndef FILEOUTPUTHANDLER_H
+-#define FILEOUTPUTHANDLER_H
+-
+-#include <iostream>
+-#include <sstream>
+-#include <string>
+-#include "GraphicsHandler.hxx"
+-
+-class FileOutputHandler : public GraphicsHandler
+-{
+- public:
+- explicit FileOutputHandler(std::ostringstream &contentStream);
+- virtual void startDocument();
+- virtual void endDocument();
+- virtual void startElement(const char *psName, const std::vector<std::pair<std::string, std::string> > &xPropList);
+- virtual void endElement(const char *psName);
+- virtual void characters(const std::string &sCharacters);
+-
+- private:
+- bool mbIsTagOpened;
+- std::string msOpenedTagName;
+- std::ostringstream &mContentStream;
+-};
+-#endif
+diff -Nur koffice-2.3.1/filters/karbon/wpg/import/GraphicsElement.cxx koffice-2.3.1-libwpg02/filters/karbon/wpg/import/GraphicsElement.cxx
+--- koffice-2.3.1/filters/karbon/wpg/import/GraphicsElement.cxx 2011-01-15 21:05:35.000000000 +0100
++++ koffice-2.3.1-libwpg02/filters/karbon/wpg/import/GraphicsElement.cxx 1970-01-01 01:00:00.000000000 +0100
+@@ -1,66 +0,0 @@
+-/* GraphicsElement: The items we are collecting to be put into the Writer
+- * document: paragraph and spans of text, as well as section breaks.
+- *
+- * Copyright (C) 2002-2003 William Lachance (william.lachance@sympatico.ca)
+- *
+- * This program is free software; you can redistribute it and/or
+- * modify it under the terms of the GNU Lesser General Public
+- * License as published by the Free Software Foundation; either
+- * version 2 of the License, or (at your option) any later version.
+- *
+- * This program is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- * Library General Public License for more details.
+- *
+- * You should have received a copy of the GNU Library General Public
+- * License along with this library; if not, write to the
+- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+- * Boston, MA 02111-1301 USA
+- *
+- * For further information visit http://libwpg.sourceforge.net
+- *
+- */
+-
+-/* "This product is not manufactured, approved, or supported by
+- * Corel Corporation or Corel Corporation Limited."
+- */
+-
+-#include "GraphicsElement.hxx"
+-#include "GraphicsHandler.hxx"
+-#include <string.h>
+-
+-#define ASCII_SPACE 0x0020
+-
+-void TagGraphicsElement::print() const
+-{
+-}
+-
+-void OpenTagGraphicsElement::write(GraphicsHandler *pHandler) const
+-{
+- pHandler->startElement(getTagName().c_str(), maAttrList);
+-}
+-
+-void OpenTagGraphicsElement::print() const
+-{
+- TagGraphicsElement::print();
+-}
+-
+-void OpenTagGraphicsElement::addAttribute(const std::string &szAttributeName, const std::string &sAttributeValue)
+-{
+- std::pair<std::string, std::string> tmpAttribute;
+- tmpAttribute.first = szAttributeName;
+- tmpAttribute.second = sAttributeValue;
+- maAttrList.push_back(tmpAttribute);
+-}
+-
+-void CloseTagGraphicsElement::write(GraphicsHandler *pHandler) const
+-{
+-
+- pHandler->endElement(getTagName().c_str());
+-}
+-
+-void CharDataGraphicsElement::write(GraphicsHandler *pHandler) const
+-{
+- pHandler->characters(msData);
+-}
+diff -Nur koffice-2.3.1/filters/karbon/wpg/import/GraphicsElement.hxx koffice-2.3.1-libwpg02/filters/karbon/wpg/import/GraphicsElement.hxx
+--- koffice-2.3.1/filters/karbon/wpg/import/GraphicsElement.hxx 2011-01-15 21:05:35.000000000 +0100
++++ koffice-2.3.1-libwpg02/filters/karbon/wpg/import/GraphicsElement.hxx 1970-01-01 01:00:00.000000000 +0100
+@@ -1,84 +0,0 @@
+-/* GraphicsElement: The items we are collecting to be put into the Writer
+- * document: paragraph and spans of text, as well as section breaks.
+- *
+- * Copyright (C) 2002-2003 William Lachance (william.lachance@sympatico.ca)
+- *
+- * This program is free software; you can redistribute it and/or
+- * modify it under the terms of the GNU Lesser General Public
+- * License as published by the Free Software Foundation; either
+- * version 2 of the License, or (at your option) any later version.
+- *
+- * This program is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- * Library General Public License for more details.
+- *
+- * You should have received a copy of the GNU Library General Public
+- * License along with this library; if not, write to the
+- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+- * Boston, MA 02111-1301 USA
+- *
+- * For further information visit http://libwpd.sourceforge.net
+- *
+- */
+-
+-/* "This product is not manufactured, approved, or supported by
+- * Corel Corporation or Corel Corporation Limited."
+- */
+-
+-#ifndef _GRAPHICSELEMENT_H
+-#define _GRAPHICSELEMENT_H
+-#include <string>
+-#include <map>
+-#include <vector>
+-
+-#include "GraphicsHandler.hxx"
+-
+-class GraphicsElement
+-{
+-public:
+- virtual ~GraphicsElement() {}
+- virtual void write(GraphicsHandler *pHandler) const = 0;
+- virtual void print() const {}
+-};
+-
+-class TagGraphicsElement : public GraphicsElement
+-{
+-public:
+- explicit TagGraphicsElement(const char *szTagName) : msTagName(szTagName) {}
+- const std::string &getTagName() const { return msTagName; }
+- virtual void print() const;
+-private:
+- const std::string msTagName;
+-};
+-
+-class OpenTagGraphicsElement : public TagGraphicsElement
+-{
+-public:
+- explicit OpenTagGraphicsElement(const char *szTagName) : TagGraphicsElement(szTagName) {}
+- ~OpenTagGraphicsElement() {}
+- void addAttribute(const std::string &szAttributeName, const std::string &sAttributeValue);
+- virtual void write(GraphicsHandler *pHandler) const;
+- virtual void print () const;
+-private:
+- std::vector<std::pair<std::string, std::string> > maAttrList;
+-};
+-
+-class CloseTagGraphicsElement : public TagGraphicsElement
+-{
+-public:
+- explicit CloseTagGraphicsElement(const char *szTagName) : TagGraphicsElement(szTagName) {}
+- virtual void write(GraphicsHandler *pHandler) const;
+-};
+-
+-class CharDataGraphicsElement : public GraphicsElement
+-{
+-public:
+- CharDataGraphicsElement(const char *sData) : GraphicsElement(), msData(sData) {}
+- virtual void write(GraphicsHandler *pHandler) const;
+-private:
+- std::string msData;
+-};
+-
+-
+-#endif
+diff -Nur koffice-2.3.1/filters/karbon/wpg/import/GraphicsHandler.hxx koffice-2.3.1-libwpg02/filters/karbon/wpg/import/GraphicsHandler.hxx
+--- koffice-2.3.1/filters/karbon/wpg/import/GraphicsHandler.hxx 2011-01-15 21:05:35.000000000 +0100
++++ koffice-2.3.1-libwpg02/filters/karbon/wpg/import/GraphicsHandler.hxx 1970-01-01 01:00:00.000000000 +0100
+@@ -1,43 +0,0 @@
+-/*
+- * Copyright (C) 2004 William Lachance (wlach@interlog.com)
+- * Copyright (C) 2004 Net Integration Technologies (http://www.net-itech.com)
+- *
+- * This program is free software; you can redistribute it and/or
+- * modify it under the terms of the GNU General Public License
+- * as published by the Free Software Foundation; either version 2
+- * of the License, or (at your option) any later version.
+- *
+- * This program is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- * GNU General Public License for more details.
+- *
+- * You should have received a copy of the GNU Library General Public
+- * License along with this library; if not, write to the
+- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+- * Boston, MA 02111-1301 USA
+- *
+- * Contributor(s): Martin Gallwey (gallwey@sun.com)
+- *
+- */
+-
+-/* "This product is not manufactured, approved, or supported by
+- * Corel Corporation or Corel Corporation Limited."
+- */
+-#ifndef _GRAPHICSHANDLER_H
+-#define _GRAPHICSHANDLER_H
+-#include <string>
+-#include <map>
+-#include <vector>
+-
+-class GraphicsHandler
+-{
+-public:
+- virtual ~GraphicsHandler() {}
+- virtual void startDocument() = 0;
+- virtual void endDocument() = 0;
+- virtual void startElement(const char *psName, const std::vector< std::pair <std::string, std::string> > &xPropList) = 0;
+- virtual void endElement(const char *psName) = 0;
+- virtual void characters(const std::string &sCharacters) = 0;
+-};
+-#endif
+diff -Nur koffice-2.3.1/filters/karbon/wpg/import/OdgExporter.cxx koffice-2.3.1-libwpg02/filters/karbon/wpg/import/OdgExporter.cxx
+--- koffice-2.3.1/filters/karbon/wpg/import/OdgExporter.cxx 2011-01-15 21:05:35.000000000 +0100
++++ koffice-2.3.1-libwpg02/filters/karbon/wpg/import/OdgExporter.cxx 1970-01-01 01:00:00.000000000 +0100
+@@ -1,662 +0,0 @@
+-/* libwpg
+- * Copyright (C) 2006 Ariya Hidayat (ariya@kde.org)
+- * Copyright (C) 2006 Fridrich Strba (fridrich.strba@bluewin.ch)
+- *
+- * This library is free software; you can redistribute it and/or
+- * modify it under the terms of the GNU Library General Public
+- * License as published by the Free Software Foundation; either
+- * version 2 of the License, or (at your option) any later version.
+- *
+- * This library is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- * Library General Public License for more details.
+- *
+- * You should have received a copy of the GNU Library General Public
+- * License along with this library; if not, write to the
+- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+- * Boston, MA 02111-1301 USA
+- *
+- * For further information visit http://libwpg.sourceforge.net
+- */
+-
+-/* "This product is not manufactured, approved, or supported by
+- * Corel Corporation or Corel Corporation Limited."
+- */
+-
+-#include "OdgExporter.hxx"
+-#include "GraphicsElement.hxx"
+-#include "GraphicsHandler.hxx"
+-#include <locale.h>
+-
+-static std::string doubleToString(const double value)
+-{
+- std::ostringstream tempStream;
+- tempStream << value;
+- std::string decimalPoint(localeconv()->decimal_point);
+- if ((decimalPoint.size() == 0) || (decimalPoint == "."))
+- return tempStream.str();
+- std::string stringValue(tempStream.str());
+- if (!stringValue.empty())
+- {
+- std::string::size_type pos;
+- while ((pos = stringValue.find(decimalPoint)) != std::string::npos)
+- stringValue.replace(pos,decimalPoint.size(),".");
+- }
+- return stringValue;
+-}
+-
+-
+-OdgExporter::OdgExporter(GraphicsHandler *pHandler, const bool isFlatXML):
+- mpHandler(pHandler),
+- m_fillRule(AlternatingFill),
+- m_gradientIndex(1),
+- m_dashIndex(1),
+- m_styleIndex(1),
+- m_width(0.0f),
+- m_height(0.0f),
+- m_isFlatXML(isFlatXML)
+-{
+-}
+-
+-OdgExporter::~OdgExporter()
+-{
+- for (std::vector <GraphicsElement *>::iterator iterStroke = mStrokeDashElements.begin();
+- iterStroke != mStrokeDashElements.end(); iterStroke++)
+- delete (*iterStroke);
+-
+- for (std::vector <GraphicsElement *>::iterator iterGradient = mGradientElements.begin();
+- iterGradient != mGradientElements.end(); iterGradient++)
+- delete (*iterGradient);
+-
+- for (std::vector <GraphicsElement *>::iterator iterAutomaticStyles = mAutomaticStylesElements.begin();
+- iterAutomaticStyles != mAutomaticStylesElements.end(); iterAutomaticStyles++)
+- delete (*iterAutomaticStyles);
+-
+- for (std::vector<GraphicsElement *>::iterator bodyIter = mBodyElements.begin();
+- bodyIter != mBodyElements.end(); bodyIter++)
+- delete (*bodyIter);
+-}
+-
+-void OdgExporter::startGraphics(double width, double height)
+-{
+- m_gradientIndex = 1;
+- m_dashIndex = 1;
+- m_styleIndex = 1;
+- m_width = width;
+- m_height = height;
+-
+-
+- mpHandler->startDocument();
+- OpenTagGraphicsElement tmpOfficeDocumentContent("office:document");
+- tmpOfficeDocumentContent.addAttribute("xmlns:office", "urn:oasis:names:tc:opendocument:xmlns:office:1.0");
+- tmpOfficeDocumentContent.addAttribute("xmlns:style", "urn:oasis:names:tc:opendocument:xmlns:style:1.0");
+- tmpOfficeDocumentContent.addAttribute("xmlns:text", "urn:oasis:names:tc:opendocument:xmlns:text:1.0");
+- tmpOfficeDocumentContent.addAttribute("xmlns:draw", "urn:oasis:names:tc:opendocument:xmlns:drawing:1.0");
+- tmpOfficeDocumentContent.addAttribute("xmlns:dc", "http://purl.org/dc/elements/1.1/");
+- tmpOfficeDocumentContent.addAttribute("xmlns:svg", "urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0");
+- tmpOfficeDocumentContent.addAttribute("xmlns:fo", "urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0");
+- tmpOfficeDocumentContent.addAttribute("xmlns:config", "urn:oasis:names:tc:opendocument:xmlns:config:1.0");
+- tmpOfficeDocumentContent.addAttribute("xmlns:ooo", "http://openoffice.org/2004/office");
+- tmpOfficeDocumentContent.addAttribute("office:version", "1.0");
+- if (m_isFlatXML)
+- tmpOfficeDocumentContent.addAttribute("office:mimetype", "application/x-vnd.oasis.openoffice.drawing");
+- tmpOfficeDocumentContent.write(mpHandler);
+-
+- OpenTagGraphicsElement("office:settings").write(mpHandler);
+-
+- OpenTagGraphicsElement configItemSetOpenElement("config:config-item-set");
+- configItemSetOpenElement.addAttribute("config:name", "ooo:view-settings");
+- configItemSetOpenElement.write(mpHandler);
+-
+- OpenTagGraphicsElement configItemOpenElement1("config:config-item");
+- configItemOpenElement1.addAttribute("config:name", "VisibleAreaTop");
+- configItemOpenElement1.addAttribute("config:type", "int");
+- configItemOpenElement1.write(mpHandler);
+- mpHandler->characters("0");
+- mpHandler->endElement("config:config-item");
+-
+- OpenTagGraphicsElement configItemOpenElement2("config:config-item");
+- configItemOpenElement2.addAttribute("config:name", "VisibleAreaLeft");
+- configItemOpenElement2.addAttribute("config:type", "int");
+- configItemOpenElement2.write(mpHandler);
+- mpHandler->characters("0");
+- mpHandler->endElement("config:config-item");
+-
+- OpenTagGraphicsElement configItemOpenElement3("config:config-item");
+- configItemOpenElement3.addAttribute("config:name", "VisibleAreaWidth");
+- configItemOpenElement3.addAttribute("config:type", "int");
+- configItemOpenElement3.write(mpHandler);
+- m_value.str("");
+- m_value << (unsigned)(2540 * width);
+- mpHandler->characters(m_value.str());
+- mpHandler->endElement("config:config-item");
+-
+- OpenTagGraphicsElement configItemOpenElement4("config:config-item");
+- configItemOpenElement4.addAttribute("config:name", "VisibleAreaHeight");
+- configItemOpenElement4.addAttribute("config:type", "int");
+- configItemOpenElement4.write(mpHandler);
+- m_value.str("");
+- m_value << (unsigned)(2540 * height);
+- mpHandler->characters(m_value.str());
+- mpHandler->endElement("config:config-item");
+-
+- mpHandler->endElement("config:config-item-set");
+-
+- mpHandler->endElement("office:settings");
+-
+-}
+-
+-void OdgExporter::endGraphics()
+-{
+- OpenTagGraphicsElement("office:styles").write(mpHandler);
+-
+- for (std::vector <GraphicsElement *>::const_iterator iterStroke = mStrokeDashElements.begin();
+- iterStroke != mStrokeDashElements.end(); iterStroke++)
+- (*iterStroke)->write(mpHandler);
+-
+- for (std::vector <GraphicsElement *>::const_iterator iterGradient = mGradientElements.begin();
+- iterGradient != mGradientElements.end(); iterGradient++)
+- (*iterGradient)->write(mpHandler);
+-
+- mpHandler->endElement("office:styles");
+-
+- OpenTagGraphicsElement("office:automatic-styles").write(mpHandler);
+-
+- for (std::vector <GraphicsElement *>::const_iterator iterAutomaticStyles = mAutomaticStylesElements.begin();
+- iterAutomaticStyles != mAutomaticStylesElements.end(); iterAutomaticStyles++)
+- (*iterAutomaticStyles)->write(mpHandler);
+-
+- OpenTagGraphicsElement tmpStylePageLayoutOpenElement("style:page-layout");
+- tmpStylePageLayoutOpenElement.addAttribute("style:name", "PM0");
+- tmpStylePageLayoutOpenElement.write(mpHandler);
+-
+- OpenTagGraphicsElement tmpStylePageLayoutPropertiesOpenElement("style:page-layout-properties");
+- tmpStylePageLayoutPropertiesOpenElement.addAttribute("fo:margin-top", "0in");
+- tmpStylePageLayoutPropertiesOpenElement.addAttribute("fo:margin-bottom", "0in");
+- tmpStylePageLayoutPropertiesOpenElement.addAttribute("fo:margin-left", "0in");
+- tmpStylePageLayoutPropertiesOpenElement.addAttribute("fo:margin-right", "0in");
+- m_value.str("");
+- m_value << doubleToString(m_width) << "in";
+- tmpStylePageLayoutPropertiesOpenElement.addAttribute("fo:page-width", m_value.str());
+- m_value.str("");
+- m_value << doubleToString(m_height) << "in";
+- tmpStylePageLayoutPropertiesOpenElement.addAttribute("fo:page-height", m_value.str());
+- m_value.str("");
+- tmpStylePageLayoutPropertiesOpenElement.addAttribute("style:print-orientation", "portrait");
+- tmpStylePageLayoutPropertiesOpenElement.write(mpHandler);
+-
+- mpHandler->endElement("style:page-layout-properties");
+-
+- mpHandler->endElement("style:page-layout");
+-
+- OpenTagGraphicsElement tmpStyleStyleOpenElement("style:style");
+- tmpStyleStyleOpenElement.addAttribute("style:name", "dp1");
+- tmpStyleStyleOpenElement.addAttribute("style:family", "drawing-page");
+- tmpStyleStyleOpenElement.write(mpHandler);
+-
+- OpenTagGraphicsElement tmpStyleDrawingPagePropertiesOpenElement("style:drawing-page-properties");
+- // tmpStyleDrawingPagePropertiesOpenElement.addAttribute("draw:background-size", "border");
+- tmpStyleDrawingPagePropertiesOpenElement.addAttribute("draw:fill", "none");
+- tmpStyleDrawingPagePropertiesOpenElement.write(mpHandler);
+-
+- mpHandler->endElement("style:drawing-page-properties");
+-
+- mpHandler->endElement("style:style");
+-
+- mpHandler->endElement("office:automatic-styles");
+-
+- OpenTagGraphicsElement("office:master-styles").write(mpHandler);
+-
+- OpenTagGraphicsElement tmpStyleMasterPageOpenElement("style:master-page");
+- tmpStyleMasterPageOpenElement.addAttribute("style:name", "Default");
+- tmpStyleMasterPageOpenElement.addAttribute("style:page-layout-name", "PM0");
+- tmpStyleMasterPageOpenElement.addAttribute("draw:style-name", "dp1");
+- tmpStyleMasterPageOpenElement.write(mpHandler);
+-
+- mpHandler->endElement("style:master-page");
+-
+- mpHandler->endElement("office:master-styles");
+-
+- OpenTagGraphicsElement("office:body").write(mpHandler);
+-
+- OpenTagGraphicsElement("office:drawing").write(mpHandler);
+-
+- OpenTagGraphicsElement tmpDrawPageOpenElement("draw:page");
+- tmpDrawPageOpenElement.addAttribute("draw:name", "page1");
+- tmpDrawPageOpenElement.addAttribute("draw:style-name", "dp1");
+- tmpDrawPageOpenElement.addAttribute("draw:master-page-name", "Default");
+- tmpDrawPageOpenElement.write(mpHandler);
+-
+- for (std::vector<GraphicsElement *>::const_iterator bodyIter = mBodyElements.begin();
+- bodyIter != mBodyElements.end(); bodyIter++)
+- {
+- (*bodyIter)->write(mpHandler);
+- }
+-
+- mpHandler->endElement("draw:page");
+- mpHandler->endElement("office:drawing");
+- mpHandler->endElement("office:body");
+- mpHandler->endElement("office:document");
+-
+- mpHandler->endDocument();
+-}
+-
+-void OdgExporter::setPen(const libwpg::WPGPen& pen)
+-{
+- m_pen = pen;
+-}
+-
+-void OdgExporter::setBrush(const libwpg::WPGBrush& brush)
+-{
+- m_brush = brush;
+-}
+-
+-void OdgExporter::setFillRule(FillRule rule)
+-{
+- m_fillRule = rule;
+-}
+-
+-void OdgExporter::startLayer(unsigned int)
+-{
+-}
+-
+-void OdgExporter::endLayer(unsigned int)
+-{
+-}
+-
+-void OdgExporter::drawRectangle(const libwpg::WPGRect& rect, double rx, double )
+-{
+- writeStyle();
+- OpenTagGraphicsElement *pDrawRectElement = new OpenTagGraphicsElement("draw:rect");
+- m_value.str("");
+- m_value << "gr" << m_styleIndex-1;
+- pDrawRectElement->addAttribute("draw:style-name", m_value.str());
+- m_value.str("");
+- m_value << doubleToString(rect.x1) << "in";
+- pDrawRectElement->addAttribute("svg:x", m_value.str());
+- m_value.str("");
+- m_value << doubleToString(rect.y1) << "in";
+- pDrawRectElement->addAttribute("svg:y", m_value.str());
+- m_value.str("");
+- m_value << doubleToString(rect.x2-rect.x1) << "in";
+- pDrawRectElement->addAttribute("svg:width", m_value.str());
+- m_value.str("");
+- m_value << doubleToString(rect.y2-rect.y1) << "in";
+- pDrawRectElement->addAttribute("svg:height", m_value.str());
+- m_value.str("");
+- m_value << doubleToString(rx) << "in";
+- // FIXME: what to do when rx != ry ?
+- pDrawRectElement->addAttribute("draw:corner-radius", m_value.str());
+- m_value.str("");
+- mBodyElements.push_back(static_cast<GraphicsElement *>(pDrawRectElement));
+- mBodyElements.push_back(static_cast<GraphicsElement *>(new CloseTagGraphicsElement("draw:rect")));
+-}
+-
+-void OdgExporter::drawEllipse(const libwpg::WPGPoint& center, double rx, double ry)
+-{
+- writeStyle();
+- OpenTagGraphicsElement *pDrawEllipseElement = new OpenTagGraphicsElement("draw:ellipse");
+- m_value.str("");
+- m_value << "gr" << m_styleIndex-1;
+- pDrawEllipseElement->addAttribute("draw:style-name", m_value.str());
+- m_value.str("");
+- m_value << doubleToString(center.x - rx) << "in";
+- pDrawEllipseElement->addAttribute("svg:x", m_value.str());
+- m_value.str("");
+- m_value << doubleToString(center.y - ry) << "in";
+- pDrawEllipseElement->addAttribute("svg:y", m_value.str());
+- m_value.str("");
+- m_value << doubleToString(2 * rx) << "in";
+- pDrawEllipseElement->addAttribute("svg:width", m_value.str());
+- m_value.str("");
+- m_value << doubleToString(2 * ry) << "in";
+- pDrawEllipseElement->addAttribute("svg:height", m_value.str());
+- m_value.str("");
+- mBodyElements.push_back(static_cast<GraphicsElement *>(pDrawEllipseElement));
+- mBodyElements.push_back(static_cast<GraphicsElement *>(new CloseTagGraphicsElement("draw:ellipse")));
+-}
+-
+-void OdgExporter::drawPolygon(const libwpg::WPGPointArray& vertices)
+-{
+- if(vertices.count() < 2)
+- return;
+-
+- if(vertices.count() == 2)
+- {
+- const libwpg::WPGPoint& p1 = vertices[0];
+- const libwpg::WPGPoint& p2 = vertices[1];
+-
+- writeStyle();
+- OpenTagGraphicsElement *pDrawLineElement = new OpenTagGraphicsElement("draw:line");
+- m_value.str("");
+- m_value << "gr" << m_styleIndex-1;
+- pDrawLineElement->addAttribute("draw:style-name", m_value.str());
+- m_value.str("");
+- pDrawLineElement->addAttribute("draw:text-style-name", "P1");
+- pDrawLineElement->addAttribute("draw:layer", "layout");
+- m_value << doubleToString(p1.x) << "in";
+- pDrawLineElement->addAttribute("svg:x1", m_value.str());
+- m_value.str("");
+- m_value << doubleToString(p1.y) << "in";
+- pDrawLineElement->addAttribute("svg:y1", m_value.str());
+- m_value.str("");
+- m_value << doubleToString(p2.x) << "in";
+- pDrawLineElement->addAttribute("svg:x2", m_value.str());
+- m_value.str("");
+- m_value << doubleToString(p2.y) << "in";
+- pDrawLineElement->addAttribute("svg:y2", m_value.str());
+- m_value.str("");
+- mBodyElements.push_back(static_cast<GraphicsElement *>(pDrawLineElement));
+- mBodyElements.push_back(static_cast<GraphicsElement *>(new CloseTagGraphicsElement("draw:line")));
+- }
+- else
+- {
+- // draw as path
+- libwpg::WPGPath path;
+- path.moveTo(vertices[0]);
+- for(unsigned long ii = 1; ii < vertices.count(); ii++)
+- path.lineTo(vertices[ii]);
+- path.closed = true;
+- drawPath(path);
+- }
+-}
+-
+-void OdgExporter::drawPath(const libwpg::WPGPath& path)
+-{
+- if(path.count() == 0)
+- return;
+-
+- // try to find the bounding box
+- // this is simple convex hull technique, the bounding box might not be
+- // accurate but that should be enough for this purpose
+- libwpg::WPGPoint p = path.element(0).point;
+- libwpg::WPGPoint q = path.element(0).point;
+- for(unsigned k = 0; k < path.count(); k++)
+- {
+- libwpg::WPGPathElement element = path.element(k);
+- p.x = (p.x > element.point.x) ? element.point.x : p.x;
+- p.y = (p.y > element.point.y) ? element.point.y : p.y;
+- q.x = (q.x < element.point.x) ? element.point.x : q.x;
+- q.y = (q.y < element.point.y) ? element.point.y : q.y;
+- if(element.type == libwpg::WPGPathElement::CurveToElement)
+- {
+- p.x = (p.x > element.extra1.x) ? element.extra1.x : p.x;
+- p.y = (p.y > element.extra1.y) ? element.extra1.y : p.y;
+- q.x = (q.x < element.extra1.x) ? element.extra1.x : q.x;
+- q.y = (q.y < element.extra1.y) ? element.extra1.y : q.y;
+- p.x = (p.x > element.extra2.x) ? element.extra2.x : p.x;
+- p.y = (p.y > element.extra2.y) ? element.extra2.y : p.y;
+- q.x = (q.x < element.extra2.x) ? element.extra2.x : q.x;
+- q.y = (q.y < element.extra2.y) ? element.extra2.y : q.y;
+- }
+- }
+- double vw = q.x - p.x;
+- double vh = q.y - p.y;
+-
+- writeStyle();
+-
+- OpenTagGraphicsElement *pDrawPathElement = new OpenTagGraphicsElement("draw:path");
+- m_value.str("");
+- m_value << "gr" << m_styleIndex-1;
+- pDrawPathElement->addAttribute("draw:style-name", m_value.str());
+- m_value.str("");
+- pDrawPathElement->addAttribute("draw:text-style-name", "P1");
+- pDrawPathElement->addAttribute("draw:layer", "layout");
+- m_value << doubleToString(p.x) << "in";
+- pDrawPathElement->addAttribute("svg:x", m_value.str());
+- m_value.str("");
+- m_value << doubleToString(p.y) << "in";
+- pDrawPathElement->addAttribute("svg:y", m_value.str());
+- m_value.str("");
+- m_value << doubleToString(vw) << "in";
+- pDrawPathElement->addAttribute("svg:width", m_value.str());
+- m_value.str("");
+- m_value << doubleToString(vh) << "in";
+- pDrawPathElement->addAttribute("svg:height", m_value.str());
+- m_value.str("");
+- m_value << "0 0 " << (int)(vw*2540) << " " << (int)(vh*2540);
+- pDrawPathElement->addAttribute("svg:viewBox", m_value.str());
+- m_value.str("");
+-
+- for(unsigned i = 0; i < path.count(); i++)
+- {
+- libwpg::WPGPathElement element = path.element(i);
+- libwpg::WPGPoint point = element.point;
+- switch(element.type)
+- {
+- // 2540 is 2.54*1000, 2.54 in = 1 in
+- case libwpg::WPGPathElement::MoveToElement:
+- m_value << "M" << (int)((point.x-p.x)*2540) << " ";
+- m_value << (int)((point.y-p.y)*2540);
+- break;
+-
+- case libwpg::WPGPathElement::LineToElement:
+- m_value << "L" << (int)((point.x-p.x)*2540) << " ";
+- m_value << (int)((point.y-p.y)*2540);
+- break;
+-
+- case libwpg::WPGPathElement::CurveToElement:
+- m_value << "C" << (int)((element.extra1.x-p.x)*2540) << " ";
+- m_value << (int)((element.extra1.y-p.y)*2540) << " ";
+- m_value << (int)((element.extra2.x-p.x)*2540) << " ";
+- m_value << (int)((element.extra2.y-p.y)*2540) << " ";
+- m_value << (int)((point.x-p.x)*2540) << " ";
+- m_value << (int)((point.y-p.y)*2540);
+- break;
+-
+- default:
+- break;
+- }
+- }
+- if(path.closed)
+- m_value << " Z";
+- pDrawPathElement->addAttribute("svg:d", m_value.str());
+- m_value.str("");
+- mBodyElements.push_back(static_cast<GraphicsElement *>(pDrawPathElement));
+- mBodyElements.push_back(static_cast<GraphicsElement *>(new CloseTagGraphicsElement("draw:path")));
+-}
+-
+-
+-void OdgExporter::drawBitmap(const libwpg::WPGBitmap& bitmap)
+-{
+- OpenTagGraphicsElement *pDrawFrameElement = new OpenTagGraphicsElement("draw:frame");
+- m_value.str("");
+- m_value << doubleToString(bitmap.rect.x1) << "in";
+- pDrawFrameElement->addAttribute("svg:x", m_value.str());
+- m_value.str("");
+- m_value << doubleToString(bitmap.rect.y1) << "in";
+- pDrawFrameElement->addAttribute("svg:y", m_value.str());
+- m_value.str("");
+- m_value << doubleToString(bitmap.rect.height()) << "in";
+- pDrawFrameElement->addAttribute("svg:height", m_value.str());
+- m_value.str("");
+- m_value << doubleToString(bitmap.rect.width()) << "in";
+- pDrawFrameElement->addAttribute("svg:width", m_value.str());
+- mBodyElements.push_back(static_cast<GraphicsElement *>(pDrawFrameElement));
+-
+- mBodyElements.push_back(static_cast<GraphicsElement *>(new OpenTagGraphicsElement("draw:image")));
+-
+- mBodyElements.push_back(static_cast<GraphicsElement *>(new OpenTagGraphicsElement("office:binary-data")));
+-
+- libwpg::WPGString base64Binary;
+- bitmap.generateBase64DIB(base64Binary);
+- mBodyElements.push_back(static_cast<GraphicsElement *>(new CharDataGraphicsElement(base64Binary.cstr())));
+-
+- mBodyElements.push_back(static_cast<GraphicsElement *>(new CloseTagGraphicsElement("office:binary-data")));
+-
+- mBodyElements.push_back(static_cast<GraphicsElement *>(new CloseTagGraphicsElement("draw:image")));
+-
+- mBodyElements.push_back(static_cast<GraphicsElement *>(new CloseTagGraphicsElement("draw:frame")));
+-}
+-
+-void OdgExporter::drawImageObject(const libwpg::WPGBinaryData& binaryData)
+-{
+- if (binaryData.mimeType.length() <= 0)
+- return;
+- OpenTagGraphicsElement *pDrawFrameElement = new OpenTagGraphicsElement("draw:frame");
+- m_value.str("");
+- m_value << doubleToString(binaryData.rect.x1) << "in";
+- pDrawFrameElement->addAttribute("svg:x", m_value.str());
+- m_value.str("");
+- m_value << doubleToString(binaryData.rect.y1) << "in";
+- pDrawFrameElement->addAttribute("svg:y", m_value.str());
+- m_value.str("");
+- m_value << doubleToString(binaryData.rect.height()) << "in";
+- pDrawFrameElement->addAttribute("svg:height", m_value.str());
+- m_value.str("");
+- m_value << doubleToString(binaryData.rect.width()) << "in";
+- pDrawFrameElement->addAttribute("svg:width", m_value.str());
+- mBodyElements.push_back(static_cast<GraphicsElement *>(pDrawFrameElement));
+-
+- mBodyElements.push_back(static_cast<GraphicsElement *>(new OpenTagGraphicsElement("draw:image")));
+-
+- mBodyElements.push_back(static_cast<GraphicsElement *>(new OpenTagGraphicsElement("office:binary-data")));
+-
+- libwpg::WPGString base64Binary = binaryData.getBase64Data();
+- mBodyElements.push_back(static_cast<GraphicsElement *>(new CharDataGraphicsElement(base64Binary.cstr())));
+-
+- mBodyElements.push_back(static_cast<GraphicsElement *>(new CloseTagGraphicsElement("office:binary-data")));
+-
+- mBodyElements.push_back(static_cast<GraphicsElement *>(new CloseTagGraphicsElement("draw:image")));
+-
+- mBodyElements.push_back(static_cast<GraphicsElement *>(new CloseTagGraphicsElement("draw:frame")));
+-}
+-
+-
+-static std::string colorToHex(const libwpg::WPGColor& color)
+-{
+- char hexdigits[] = "0123456789abcdef";
+- char buffer[] = "123456";
+- buffer[0] = hexdigits[(color.red >> 4) & 15];
+- buffer[1] = hexdigits[color.red & 15];
+- buffer[2] = hexdigits[(color.green >> 4) & 15];
+- buffer[3] = hexdigits[color.green & 15];
+- buffer[4] = hexdigits[(color.blue >> 4) & 15];
+- buffer[5] = hexdigits[color.blue & 15];
+- return std::string(buffer);
+-}
+-
+-void OdgExporter::writeStyle()
+-{
+- m_value.str("");
+- m_name.str("");
+-
+- if(!m_pen.solid && (m_pen.dashArray.count() >=2 ) )
+- {
+- // ODG only supports dashes with the same length of spaces inbetween
+- // here we take the first space and assume everything else the same
+- // note that dash length is written in percentage
+- double distance = m_pen.dashArray.at(1);
+- OpenTagGraphicsElement *tmpDrawStrokeDashElement = new OpenTagGraphicsElement("draw:stroke-dash");
+- tmpDrawStrokeDashElement->addAttribute("draw:style", "rect");
+- m_value << "Dash_" << m_dashIndex++;
+- tmpDrawStrokeDashElement->addAttribute("draw:name", m_value.str());
+- m_value.str("");
+- m_value << doubleToString(distance*100) << "%";
+- tmpDrawStrokeDashElement->addAttribute("draw:distance", m_value.str());
+- m_value.str("");
+- for(unsigned i = 0; i < m_pen.dashArray.count()/2; i++)
+- {
+- m_name << "draw:dots" << i+1;
+- tmpDrawStrokeDashElement->addAttribute(m_name.str(), "1");
+- m_name.str("");
+- m_name << "draw:dots" << i+1 << "-length";
+- m_value << doubleToString(100*m_pen.dashArray.at(i*2)) << "%";
+- tmpDrawStrokeDashElement->addAttribute(m_name.str(), m_value.str());
+- m_name.str("");
+- m_value.str("");
+- }
+- mStrokeDashElements.push_back(static_cast<GraphicsElement *>(tmpDrawStrokeDashElement));
+- mStrokeDashElements.push_back(static_cast<GraphicsElement *>(new CloseTagGraphicsElement("draw:stroke-dash")));
+- }
+-
+- if(m_brush.style == libwpg::WPGBrush::Gradient)
+- {
+- OpenTagGraphicsElement *tmpDrawGradientElement = new OpenTagGraphicsElement("draw:gradient");
+- tmpDrawGradientElement->addAttribute("draw:style", "linear");
+- m_value << "Gradient_" << m_gradientIndex++;
+- tmpDrawGradientElement->addAttribute("draw:name", m_value.str());
+- m_value.str("");
+-
+- // ODG angle unit is 0.1 degree
+- double angle = -m_brush.gradient.angle();
+- while(angle < 0)
+- angle += 360;
+- while(angle > 360)
+- angle -= 360;
+-
+- m_value << (unsigned)(angle*10);
+- tmpDrawGradientElement->addAttribute("draw:angle", m_value.str());
+- m_value.str("");
+-
+- libwpg::WPGColor startColor = m_brush.gradient.stopColor(0);
+- libwpg::WPGColor stopColor = m_brush.gradient.stopColor(1);
+- m_value << "#" << colorToHex(startColor);
+- tmpDrawGradientElement->addAttribute("draw:start-color", m_value.str());
+- m_value.str("");
+- m_value << "#" << colorToHex(stopColor);
+- tmpDrawGradientElement->addAttribute("draw:end-color", m_value.str());
+- m_value.str("");
+- tmpDrawGradientElement->addAttribute("draw:start-intensity", "100%");
+- tmpDrawGradientElement->addAttribute("draw:end-intensity", "100%");
+- tmpDrawGradientElement->addAttribute("draw:border", "0%");
+- mGradientElements.push_back(static_cast<GraphicsElement *>(tmpDrawGradientElement));
+- mGradientElements.push_back(static_cast<GraphicsElement *>(new CloseTagGraphicsElement("draw:gradient")));
+- }
+-
+- OpenTagGraphicsElement *tmpStyleStyleElement = new OpenTagGraphicsElement("style:style");
+- m_value << "gr" << m_styleIndex;
+- tmpStyleStyleElement->addAttribute("style:name", m_value.str());
+- m_value.str("");
+- tmpStyleStyleElement->addAttribute("style:family", "graphic");
+- tmpStyleStyleElement->addAttribute("style:parent-style-name", "standard");
+- mAutomaticStylesElements.push_back(static_cast<GraphicsElement *>(tmpStyleStyleElement));
+-
+- OpenTagGraphicsElement *tmpStyleGraphicPropertiesElement = new OpenTagGraphicsElement("style:graphic-properties");
+-
+- if(m_pen.width > 0.0)
+- {
+- m_value << doubleToString(m_pen.width) << "in";
+- tmpStyleGraphicPropertiesElement->addAttribute("svg:stroke-width", m_value.str());
+- m_value.str("");
+- m_value << "#" << colorToHex(m_pen.foreColor);
+- tmpStyleGraphicPropertiesElement->addAttribute("svg:stroke-color", m_value.str());
+- m_value.str("");
+-
+- if(!m_pen.solid)
+- {
+- tmpStyleGraphicPropertiesElement->addAttribute("draw:stroke", "dash");
+- m_value << "Dash_" << m_dashIndex-1;
+- tmpStyleGraphicPropertiesElement->addAttribute("draw:stroke-dash", m_value.str());
+- m_value.str("");
+- }
+- }
+- else
+- tmpStyleGraphicPropertiesElement->addAttribute("draw:stroke", "none");
+-
+- if(m_brush.style == libwpg::WPGBrush::NoBrush)
+- tmpStyleGraphicPropertiesElement->addAttribute("draw:fill", "none");
+-
+- if(m_brush.style == libwpg::WPGBrush::Solid)
+- {
+- tmpStyleGraphicPropertiesElement->addAttribute("draw:fill", "solid");
+- m_value << "#" << colorToHex(m_brush.foreColor);
+- tmpStyleGraphicPropertiesElement->addAttribute("draw:fill-color", m_value.str());
+- m_value.str("");
+- }
+-
+- if(m_brush.style == libwpg::WPGBrush::Gradient)
+- {
+- tmpStyleGraphicPropertiesElement->addAttribute("draw:fill", "gradient");
+- m_value << "Gradient_" << m_gradientIndex-1;
+- tmpStyleGraphicPropertiesElement->addAttribute("draw:fill-gradient-name", m_value.str());
+- m_value.str("");
+- }
+-
+- mAutomaticStylesElements.push_back(static_cast<GraphicsElement *>(tmpStyleGraphicPropertiesElement));
+- mAutomaticStylesElements.push_back(static_cast<GraphicsElement *>(new CloseTagGraphicsElement("style:graphic-properties")));
+-
+- mAutomaticStylesElements.push_back(static_cast<GraphicsElement *>(new CloseTagGraphicsElement("style:style")));
+- m_styleIndex++;
+-}
+diff -Nur koffice-2.3.1/filters/karbon/wpg/import/OdgExporter.hxx koffice-2.3.1-libwpg02/filters/karbon/wpg/import/OdgExporter.hxx
+--- koffice-2.3.1/filters/karbon/wpg/import/OdgExporter.hxx 2011-01-15 21:05:35.000000000 +0100
++++ koffice-2.3.1-libwpg02/filters/karbon/wpg/import/OdgExporter.hxx 1970-01-01 01:00:00.000000000 +0100
+@@ -1,116 +0,0 @@
+-/* libwpg
+- * Copyright (C) 2006 Ariya Hidayat (ariya@kde.org)
+- *
+- * This library is free software; you can redistribute it and/or
+- * modify it under the terms of the GNU Library General Public
+- * License as published by the Free Software Foundation; either
+- * version 2 of the License, or (at your option) any later version.
+- *
+- * This library is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- * Library General Public License for more details.
+- *
+- * You should have received a copy of the GNU Library General Public
+- * License along with this library; if not, write to the
+- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+- * Boston, MA 02111-1301 USA
+- *
+- * For further information visit http://libwpg.sourceforge.net
+- */
+-
+-/* "This product is not manufactured, approved, or supported by
+- * Corel Corporation or Corel Corporation Limited."
+- */
+-
+-#ifndef __ODGEXPORTER_H__
+-#define __ODGEXPORTER_H__
+-
+-#include <iostream>
+-#include <sstream>
+-#include <string>
+-
+-#include <libwpg/libwpg.h>
+-#include "GraphicsElement.hxx"
+-
+-class OdgExporter : public libwpg::WPGPaintInterface {
+-public:
+- explicit OdgExporter(GraphicsHandler *pHandler,
+- const bool isFlatXML = false);
+- ~OdgExporter();
+-
+-#if LIBWPG_VERSION_MINOR<2
+- void startGraphics(double imageWidth, double imageHeight);
+- void endGraphics();
+- void startLayer(unsigned int id);
+- void endLayer(unsigned int id);
+-
+- void setPen(const libwpg::WPGPen& pen);
+- void setBrush(const libwpg::WPGBrush& brush);
+- void setFillRule(FillRule rule);
+-
+- void drawRectangle(const libwpg::WPGRect& rect, double rx, double ry);
+- void drawEllipse(const libwpg::WPGPoint& center, double rx, double ry);
+- void drawPolygon(const libwpg::WPGPointArray& vertices);
+- void drawPath(const libwpg::WPGPath& path);
+- void drawBitmap(const libwpg::WPGBitmap& bitmap);
+- void drawImageObject(const libwpg::WPGBinaryData& binaryData);
+-
+-private:
+- std::vector <GraphicsElement *> mBodyElements;
+- std::vector <GraphicsElement *> mAutomaticStylesElements;
+- std::vector <GraphicsElement *> mStrokeDashElements;
+- std::vector <GraphicsElement *> mGradientElements;
+- GraphicsHandler *mpHandler;
+-
+- libwpg::WPGPen m_pen;
+- libwpg::WPGBrush m_brush;
+- FillRule m_fillRule;
+- int m_gradientIndex;
+- int m_dashIndex;
+- int m_styleIndex;
+- void writeStyle();
+- std::ostringstream m_value, m_name;
+- double m_width, m_height;
+- const bool m_isFlatXML;
+-#else
+- virtual void startGraphics(const ::WPXPropertyList &propList);
+- virtual void endGraphics();
+- virtual void setStyle(const ::WPXPropertyList &propList, const ::WPXPropertyListVector &gradient);
+- virtual void startLayer(const ::WPXPropertyList &propList);
+- virtual void endLayer();
+- virtual void drawRectangle(const ::WPXPropertyList& propList);
+- virtual void drawEllipse(const ::WPXPropertyList& propList);
+- virtual void drawPolygon(const ::WPXPropertyListVector &vertices);
+- virtual void drawPath(const ::WPXPropertyListVector &path);
+- virtual void drawGraphicObject(const ::WPXPropertyList &propList, const ::WPXBinaryData &binaryData);
+- virtual void startEmbeddedGraphics(const ::WPXPropertyList &propList);
+- virtual void endEmbeddedGraphics();
+- virtual void drawPolyline(const ::WPXPropertyListVector &vertices);
+- virtual void startTextObject(const ::WPXPropertyList &propList, const ::WPXPropertyListVector &path);
+- virtual void endTextObject();
+- virtual void startTextLine(const ::WPXPropertyList &propList);
+- virtual void endTextLine();
+- virtual void startTextSpan(const ::WPXPropertyList &propList);
+- virtual void endTextSpan();
+- virtual void insertText(const ::WPXString &str);
+-
+-
+-private:
+- std::vector <GraphicsElement *> mBodyElements;
+- std::vector <GraphicsElement *> mAutomaticStylesElements;
+- std::vector <GraphicsElement *> mStrokeDashElements;
+- std::vector <GraphicsElement *> mGradientElements;
+- GraphicsHandler *mpHandler;
+-
+- int m_gradientIndex;
+- int m_dashIndex;
+- int m_styleIndex;
+- void writeStyle();
+- std::ostringstream m_value, m_name;
+- double m_width, m_height;
+- const bool m_isFlatXML;
+-#endif
+-};
+-
+-#endif // __ODGEXPORTER_H__
+diff -Nur koffice-2.3.1/filters/karbon/wpg/import/WPGImport.cpp koffice-2.3.1-libwpg02/filters/karbon/wpg/import/WPGImport.cpp
+--- koffice-2.3.1/filters/karbon/wpg/import/WPGImport.cpp 2011-01-15 21:05:35.000000000 +0100
++++ koffice-2.3.1-libwpg02/filters/karbon/wpg/import/WPGImport.cpp 2011-01-02 17:46:15.000000000 +0100
+@@ -20,28 +20,26 @@
+ #include <WPGImport.h>
+ #include <WPGImport.moc>
+
+-#include <QBuffer>
+-#include <QByteArray>
+-#include <QString>
+-
+-#include <kdebug.h>
+ #include <KoFilterChain.h>
+ #include <KoGlobal.h>
+ #include <KoUnit.h>
++#include <KoXmlWriter.h>
++
+ #include <kpluginfactory.h>
++#include <KDebug>
+
+-#include <KoXmlWriter.h>
++
++#include <QtCore/QString>
++#include <QtCore/QFile>
+
+ #include <libwpg/libwpg.h>
+ #if LIBWPG_VERSION_MINOR<2
+ #include <libwpg/WPGStreamImplementation.h>
+ #else
+ #include <libwpd-stream/libwpd-stream.h>
++#include <libwpd/libwpd.h>
+ #endif
+
+-#include "FileOutputHandler.hxx"
+-#include "OdgExporter.hxx"
+-
+ #include <iostream>
+
+ K_PLUGIN_FACTORY(WPGImportFactory, registerPlugin<WPGImport>();)
+@@ -56,35 +54,13 @@
+ {
+ }
+
+-static QByteArray createManifest()
+-{
+- KoXmlWriter* manifestWriter;
+- QByteArray manifestData;
+- QBuffer manifestBuffer(&manifestData);
+-
+- manifestBuffer.open(QIODevice::WriteOnly);
+- manifestWriter = new KoXmlWriter(&manifestBuffer);
+-
+- manifestWriter->startDocument("manifest:manifest");
+- manifestWriter->startElement("manifest:manifest");
+- manifestWriter->addAttribute("xmlns:manifest", "urn:oasis:names:tc:openoffice:xmlns:manifest:1.0");
+- manifestWriter->addManifestEntry("/", "application/vnd.oasis.opendocument.graphics");
+- //manifestWriter->addManifestEntry( "styles.xml", "text/xml" );
+- manifestWriter->addManifestEntry("content.xml", "text/xml");
+- manifestWriter->endElement();
+- manifestWriter->endDocument();
+- delete manifestWriter;
+-
+- return manifestData;
+-}
+-
+
+ KoFilter::ConversionStatus WPGImport::convert(const QByteArray& from, const QByteArray& to)
+ {
+ if (from != "application/x-wpg")
+ return KoFilter::NotImplemented;
+
+- if (to != "application/vnd.oasis.opendocument.graphics")
++ if (to != "image/svg+xml")
+ return KoFilter::NotImplemented;
+
+ #if LIBWPG_VERSION_MINOR<2
+@@ -96,6 +72,7 @@
+ input = olestream;
+ }
+ }
++ libwpg::WPGString output;
+ #else
+ WPXInputStream* input = new WPXFileStream(m_chain->inputFile().toLocal8Bit());
+ if (input->isOLEStream()) {
+@@ -105,59 +82,31 @@
+ input = olestream;
+ }
+ }
++ ::WPXString output;
+ #endif
+
+ if (!libwpg::WPGraphics::isSupported(input)) {
+- std::cerr << "ERROR: Unsupported file format (unsupported version) or file is encrypted!" << std::endl;
++ kWarning() << "ERROR: Unsupported file format (unsupported version) or file is encrypted!";
+ delete input;
+ return KoFilter::NotImplemented;
+ }
+
+- // do the conversion
+- std::ostringstream tmpStringStream;
+- FileOutputHandler tmpHandler(tmpStringStream);
+- OdgExporter exporter(&tmpHandler);
+- libwpg::WPGraphics::parse(input, &exporter);
+- delete input;
+-
+-
+- // create output store
+- KoStore* storeout;
+- storeout = KoStore::createStore(m_chain->outputFile(), KoStore::Write,
+- "application/vnd.oasis.opendocument.graphics", KoStore::Zip);
+-
+- if (!storeout) {
+- kWarning() << "Couldn't open the requested file.";
+- return KoFilter::FileNotFound;
+- }
+-
+-#if 0
+- if (!storeout->open("styles.xml")) {
+- kWarning() << "Couldn't open the file 'styles.xml'.";
+- return KoFilter::CreationError;
++ if (!libwpg::WPGraphics::generateSVG(input, output)) {
++ kWarning() << "ERROR: SVG Generation failed!";
++ delete input;
++ return KoFilter::ParsingError;
+ }
+- //storeout->write( createStyles() );
+- storeout->close();
+-#endif
+
+- if (!storeout->open("content.xml")) {
+- kWarning() << "Couldn't open the file 'content.xml'.";
+- return KoFilter::CreationError;
+- }
+- storeout->write(tmpStringStream.str().c_str());
+- storeout->close();
++ delete input;
+
+- // store document manifest
+- storeout->enterDirectory("META-INF");
+- if (!storeout->open("manifest.xml")) {
+- kWarning() << "Couldn't open the file 'META-INF/manifest.xml'.";
+- return KoFilter::CreationError;
++ QFile outputFile(m_chain->outputFile());
++ if(!outputFile.open(QIODevice::WriteOnly | QIODevice::Text)) {
++ kWarning() << "ERROR: Could not open output file" << m_chain->outputFile();
++ return KoFilter::InternalError;
+ }
+- storeout->write(createManifest());
+- storeout->close();
+
+- // we are done!
+- delete storeout;
++ outputFile.write(output.cstr());
++ outputFile.close();
+
+ return KoFilter::OK;
+ }
+
diff --git a/extra/koffice/koffice.install b/extra/koffice/koffice.install
new file mode 100644
index 000000000..e70c054ec
--- /dev/null
+++ b/extra/koffice/koffice.install
@@ -0,0 +1,11 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/extra/koffice/krita.install b/extra/koffice/krita.install
new file mode 100644
index 000000000..ce5c32e1b
--- /dev/null
+++ b/extra/koffice/krita.install
@@ -0,0 +1,12 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+ update-mime-database usr/share/mime &> /dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+} \ No newline at end of file
diff --git a/extra/konq-plugins/PKGBUILD b/extra/konq-plugins/PKGBUILD
new file mode 100644
index 000000000..7bda68314
--- /dev/null
+++ b/extra/konq-plugins/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id: PKGBUILD 112174 2011-03-04 09:55:03Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Pierre Schmitz <pierre@archlinux.de>
+
+pkgname=konq-plugins
+pkgver=4.6.1
+pkgrel=1
+pkgdesc="Extra plugins for Konqueror"
+arch=('i686' 'x86_64')
+url='http://www.kde.org'
+license=('LGPL')
+depends=('kdebase-konqueror' 'tidyhtml')
+makedepends=('pkgconfig' 'cmake' 'automoc4' 'docbook-xsl')
+install=${pkgname}.install
+source=("http://download.kde.org/stable/${pkgver}/src/${pkgname}-${pkgver}.tar.bz2")
+md5sums=('38facbeb5627ff6affa0fa0d676d1d19')
+
+build() {
+ cd ${srcdir}
+ mkdir build
+ cd build
+ cmake ../${pkgname}-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=/usr
+ make
+}
+
+package() {
+ cd ${srcdir}/build
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/konq-plugins/konq-plugins.install b/extra/konq-plugins/konq-plugins.install
new file mode 100644
index 000000000..e70c054ec
--- /dev/null
+++ b/extra/konq-plugins/konq-plugins.install
@@ -0,0 +1,11 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/extra/konversation/PKGBUILD b/extra/konversation/PKGBUILD
new file mode 100644
index 000000000..e118d6562
--- /dev/null
+++ b/extra/konversation/PKGBUILD
@@ -0,0 +1,36 @@
+# $Id: PKGBUILD 90511 2010-09-12 10:03:56Z pierre $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: James Rayner <iphitus@gmail.com>
+# Contributor: Sergio Jovani Guzman <moret@paretux.org>
+
+pkgname=konversation
+pkgver=1.3.1
+pkgrel=2
+pkgdesc="A user friendly IRC client for KDE"
+arch=('i686' 'x86_64')
+url="http://konversation.kde.org"
+depends=('kdebase-runtime' 'kdepimlibs')
+makedepends=('automoc4' 'cmake' 'pkgconfig' 'docbook-xml')
+license=('GPL2' 'FDL')
+install=${pkgname}.install
+options=('!makeflags')
+source=("http://download.kde.org/stable/${pkgname}/${pkgver}/src/${pkgname}-${pkgver}.tar.bz2")
+md5sums=('f43ac55e4925e9578e87b13fde173671')
+
+build() {
+ cd ${srcdir}
+ sed 's#/usr/bin/env python#/usr/bin/python2#' \
+ -i ${pkgname}-${pkgver}/data/scripts/media
+ mkdir build
+ cd build
+ cmake ../${pkgname}-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_SKIP_RPATH=ON \
+ -DCMAKE_INSTALL_PREFIX=/usr
+ make
+}
+
+package() {
+ cd ${srcdir}/build
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/konversation/konversation.install b/extra/konversation/konversation.install
new file mode 100644
index 000000000..e70c054ec
--- /dev/null
+++ b/extra/konversation/konversation.install
@@ -0,0 +1,11 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/extra/kradio/PKGBUILD b/extra/kradio/PKGBUILD
new file mode 100644
index 000000000..6f776a1fc
--- /dev/null
+++ b/extra/kradio/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 105372 2011-01-08 12:01:40Z tpowa $
+# Maintainer : Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=kradio
+pkgver=4.0.2
+pkgrel=1
+arch=('i686' 'x86_64')
+license=('GPL2')
+pkgdesc="KRadio is a comfortable KDE radio application"
+url="http://kradio.sourceforge.net/"
+depends=('lame' 'kdelibs' 'libsndfile' 'lirc-utils' 'libmms' 'ffmpeg')
+makedepends=('pkgconfig' 'automoc4')
+source=(http://downloads.sourceforge.net/sourceforge/kradio/kradio4-$pkgver.tar.bz2)
+options=(!libtool)
+
+build() {
+ cd $srcdir
+ mkdir build
+ cd build
+ cmake ../${pkgname}4-$pkgver -DCMAKE_SKIP_RPATH=ON -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release
+ make
+}
+
+package() {
+ cd $srcdir/build
+ make DESTDIR=$startdir/pkg install
+}
+md5sums=('18fea3e2bc7100882075187c6a89f7bd')
diff --git a/extra/krusader/PKGBUILD b/extra/krusader/PKGBUILD
new file mode 100644
index 000000000..67e8615ea
--- /dev/null
+++ b/extra/krusader/PKGBUILD
@@ -0,0 +1,40 @@
+# $Id: PKGBUILD 111906 2011-03-01 18:29:55Z andrea $
+# Maintainer:
+# Contributor: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Alexander Baldeck <alexander@archlinux.org>
+# Contributor: Lucien Immink <l.immink@student.fnt.hvu.nl>
+
+pkgname=krusader
+pkgver=2.3.0beta1
+_pkgver=2.3.0-beta1
+pkgrel=3
+pkgdesc="An alternative file manager for KDE resembling Midnight Commander"
+url="http://krusader.sourceforge.net/"
+arch=('i686' 'x86_64')
+license=('GPL')
+depends=('kdebase-runtime')
+makedepends=('cmake' 'automoc4' 'docbook-xsl')
+optdepends=("kdebase-keditbookmarks: to edit bookmarks")
+install=${pkgname}.install
+source=("http://downloads.sourceforge.net/${pkgname}/${pkgname}-${_pkgver}.tar.bz2"
+ 'add-xz-support.patch')
+md5sums=('3ef55648a2589a9a919d463acec3b830'
+ 'a350bc90646bd16cc4219aa30a4d1fc6')
+
+build() {
+ cd ${srcdir}/${pkgname}-${_pkgver}
+ patch -Np1 -i ${srcdir}/add-xz-support.patch
+
+ cd ${srcdir}
+ mkdir build
+ cd build
+ cmake ../${pkgname}-${_pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=/usr
+ make
+}
+
+package() {
+ cd ${srcdir}/build
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/krusader/add-xz-support.patch b/extra/krusader/add-xz-support.patch
new file mode 100644
index 000000000..9ce44084b
--- /dev/null
+++ b/extra/krusader/add-xz-support.patch
@@ -0,0 +1,403 @@
+From: Jan Lepper <dehtris@yahoo.de>
+Date: Thu, 27 Jan 2011 08:54:29 +0000
+Subject: add support for .xz archives - thanks to Val Gor, Grigorios Bouzakis
+X-Git-Url: http://quickgit.kde.org/?p=krusader.git&amp;a=commitdiff&amp;h=a2db0b0fb5f58d0d648a362f75e3948f49cc87fc
+---
+add support for .xz archives - thanks to Val Gor, Grigorios Bouzakis
+---
+
+
+--- a/krArc/krarc.cpp
++++ b/krArc/krarc.cpp
+@@ -423,7 +423,7 @@ void kio_krarcProtocol::get(const KUrl&
+ if (mt)
+ emit mimeType(mt->name());
+ proc << getCmd << getPath(arcFile->url());
+- if (arcType != "gzip" && arcType != "bzip2" && arcType != "lzma") proc << localeEncodedString(file);
++ if (arcType != "gzip" && arcType != "bzip2" && arcType != "lzma" && arcType != "xz") proc << localeEncodedString(file);
+ connect(&proc, SIGNAL(newOutputData(KProcess *, QByteArray &)),
+ this, SLOT(receivedData(KProcess *, QByteArray &)));
+ proc.setMerge(false);
+@@ -440,7 +440,7 @@ void kio_krarcProtocol::get(const KUrl&
+ proc.waitForFinished();
+
+ if (!extArcReady && !decompressToFile) {
+- if (proc.exitStatus() != QProcess::NormalExit || !checkStatus(proc.exitCode()) || (arcType != "bzip2" && arcType != "lzma" && expectedSize != decompressedLen)) {
++ if (proc.exitStatus() != QProcess::NormalExit || !checkStatus(proc.exitCode()) || (arcType != "bzip2" && arcType != "lzma" && arcType != "xz" && expectedSize != decompressedLen)) {
+ if (encrypted && tries) {
+ invalidatePassword();
+ get(url, tries - 1);
+@@ -827,6 +827,8 @@ bool kio_krarcProtocol::setArcFile(const
+ arcType = "gzip";
+ else if (arcType == "tlz")
+ arcType = "lzma";
++ else if (arcType == "txz")
++ arcType = "xz";
+
+ if (arcType.isEmpty()) {
+ arcType = arcFile->mimetype();
+@@ -861,7 +863,7 @@ bool kio_krarcProtocol::initDirDict(cons
+ return false;
+ }
+
+- if (arcType != "bzip2" && arcType != "lzma") {
++ if (arcType != "bzip2" && arcType != "lzma" && arcType != "xz") {
+ if (arcType == "rpm") {
+ proc << listCmd << arcPath;
+ proc.setStandardOutputFile(temp.fileName());
+@@ -896,7 +898,7 @@ bool kio_krarcProtocol::initDirDict(cons
+
+ root->append(entry);
+
+- if (arcType == "bzip2" || arcType == "lzma") {
++ if (arcType == "bzip2" || arcType == "lzma" || arcType == "xz") {
+ KRDEBUG("Got me here...");
+ parseLine(0, "");
+ return true;
+@@ -1207,6 +1209,14 @@ void kio_krarcProtocol::parseLine(int li
+ mode = arcFile->mode();
+ size = arcFile->size();
+ }
++ if (arcType == "xz") {
++ fullName = arcFile->name();
++ if (fullName.endsWith(QLatin1String("xz"))) {
++ fullName.truncate(fullName.length() - 3);
++ }
++ mode = arcFile->mode();
++ size = arcFile->size();
++ }
+ if (arcType == "bzip2") {
+ // There is no way to list bzip2 files, so we take our information from
+ // the archive itself...
+@@ -1460,6 +1470,13 @@ bool kio_krarcProtocol::initArcParameter
+ copyCmd = QStringList();
+ delCmd = QStringList();
+ putCmd = QStringList();
++ } else if (arcType == "xz") {
++ cmd = fullPathName("xz");
++ listCmd << fullPathName("xz");
++ getCmd << fullPathName("xz") << "-dc";
++ copyCmd = QStringList();
++ delCmd = QStringList();
++ putCmd = QStringList();
+ } else if (arcType == "arj") {
+ cmd = fullPathName("arj");
+ listCmd << fullPathName("arj") << "v" << "-y" << "-v";
+@@ -1544,7 +1561,7 @@ bool kio_krarcProtocol::checkStatus(int
+ return exitCode == 0 || exitCode == 1;
+ else if (arcType == "ace" || arcType == "bzip2" || arcType == "lha" || arcType == "rpm" || arcType == "arj")
+ return exitCode == 0;
+- else if (arcType == "gzip" || arcType == "lzma")
++ else if (arcType == "gzip" || arcType == "lzma" || arcType == "xz")
+ return exitCode == 0 || exitCode == 2;
+ else
+ return exitCode == 0;
+@@ -1566,7 +1583,8 @@ QString kio_krarcProtocol::detectArchive
+ {"bzip2", 0, "\x42\x5a\x68\x39\x31" },
+ {"gzip", 0, "\x1f\x8b"},
+ {"deb", 0, "!<arch>\ndebian-binary " },
+- {"7z", 0, "7z\xbc\xaf\x27\x1c" }
++ {"7z", 0, "7z\xbc\xaf\x27\x1c" }/*,
++ {"xz", 0, "\xfd\x37\x7a\x58\x5a\x00"}*/
+ };
+ static int autoDetectElems = sizeof(autoDetectParams) / sizeof(AutoDetectParams);
+
+@@ -1714,6 +1732,14 @@ QString kio_krarcProtocol::detectArchive
+ return "lzma";
+ }
+
++ if (fileName.endsWith(QLatin1String(".tar.xz")) ||
++ fileName.endsWith(QLatin1String(".txz"))) {
++ return "txz";
++ }
++ if (fileName.endsWith(QLatin1String(".xz"))) {
++ return "xz";
++ }
++
+ return QString();
+ }
+
+
+--- a/krusader/Dialogs/packgui.cpp
++++ b/krusader/Dialogs/packgui.cpp
+@@ -68,6 +68,7 @@ PackGUI::PackGUI(QString defaultName, QS
+ if (PS("tar") && PS("gzip")) typeData->addItem("tar.gz");
+ if (PS("tar") && PS("bzip2")) typeData->addItem("tar.bz2");
+ if (PS("tar") && PS("lzma")) typeData->addItem("tar.lzma");
++ if (PS("tar") && PS("xz")) typeData->addItem("tar.xz");
+ if (PS("zip")) typeData->addItem("zip");
+ if (PS("rar")) typeData->addItem("rar");
+ if (PS("lha")) typeData->addItem("lha");
+
+--- a/krusader/Konfigurator/kgarchives.cpp
++++ b/krusader/Konfigurator/kgarchives.cpp
+@@ -62,6 +62,7 @@ KgArchives::KgArchives(bool first, QWidg
+ {{"Archives", "Do Tar", _DoTar, i18n("Tar"), false, ""},
+ {"Archives", "Do GZip", _DoGZip, i18n("GZip"), false, ""},
+ {"Archives", "Do LZMA", _DoLZMA, i18n("LZMA"), false, ""},
++ {"Archives", "Do XZ", _DoXZ, i18n("XZ"), false, ""},
+ {"Archives", "Do BZip2", _DoBZip2, i18n("BZip2"), false, ""},
+ {"Archives", "Do UnZip", _DoUnZip, i18n("Zip"), false, ""},
+ {"Archives", "Do UnRar", _DoUnRar, i18n("Rar"), false, ""},
+@@ -73,7 +74,7 @@ KgArchives::KgArchives(bool first, QWidg
+ {"Archives", "Do 7z", _Do7z, i18n("7zip"), false, ""}
+ };
+
+- cbs = createCheckBoxGroup(3, 0, packers, 12, generalGrp);
++ cbs = createCheckBoxGroup(3, 0, packers, 13, generalGrp);
+ generalGrid->addWidget(cbs, 1, 0);
+
+ addLabel(generalGrid, 2, 0, i18n("The archives that are \"grayed out\" were unavailable on your\n"
+@@ -148,6 +149,7 @@ void KgArchives::disableNonExistingPacke
+ cbs->find("Do GZip")->setEnabled(PS("gzip"));
+ cbs->find("Do BZip2")->setEnabled(PS("bzip2"));
+ cbs->find("Do LZMA")->setEnabled(PS("lzma"));
++ cbs->find("Do XZ")->setEnabled(PS("xz"));
+ cbs->find("Do UnZip")->setEnabled(PS("unzip"));
+ cbs->find("Do Lha")->setEnabled(PS("lha"));
+ cbs->find("Do RPM")->setEnabled(PS("rpm") || PS("cpio"));
+
+--- a/krusader/Konfigurator/kgdependencies.cpp
++++ b/krusader/Konfigurator/kgdependencies.cpp
+@@ -100,6 +100,7 @@ KgDependencies::KgDependencies(bool firs
+ addApplication("unrar", archGrid1, 12, packers_tab, PAGE_PACKERS);
+ addApplication("unzip", archGrid1, 13, packers_tab, PAGE_PACKERS);
+ addApplication("zip", archGrid1, 14, packers_tab, PAGE_PACKERS);
++ addApplication("xz", archGrid1, 15, packers_tab, PAGE_PACKERS);
+
+ // ---------------------------- CHECKSUM TAB -------------------------------------
+ QWidget *checksum_tab = new QWidget(tabWidget);
+
+--- a/krusader/Konfigurator/kggeneral.cpp
++++ b/krusader/Konfigurator/kggeneral.cpp
+@@ -193,6 +193,7 @@ void KgGeneral::createExtensionsTab()
+ defaultAtomicExtensions += ".tar.gz";
+ defaultAtomicExtensions += ".tar.bz2";
+ defaultAtomicExtensions += ".tar.lzma";
++ defaultAtomicExtensions += ".tar.xz";
+ defaultAtomicExtensions += ".moc.cpp";
+
+ listBox = createListBox("Look&Feel", "Atomic Extensions",
+
+--- a/krusader/Konfigurator/kgprotocols.cpp
++++ b/krusader/Konfigurator/kgprotocols.cpp
+@@ -51,12 +51,14 @@ QString KgProtocols::defaultKrarcMimes =
+ "application/x-gzip,application/x-jar,"
+ "application/x-lha,application/x-lha-compressed,"
+ "application/x-rar,application/x-rar-compressed,"
++ "application/x-xz,"
+ "application/x-rpm,application/zip,"
+ "application/x-zip,application/x-zip-compressed";
+ QString KgProtocols::defaultTarMimes = "application/x-tar,application/x-tarz,"
+ "application/x-bzip-compressed-tar,"
+ "application/x-compressed-tar,"
+- "application/x-tbz,application/x-tgz";
++ "application/x-tbz,application/x-tgz,"
++ "application/x-xz-compressed-tar";
+
+ KgProtocols::KgProtocols(bool first, QWidget* parent) :
+ KonfiguratorPage(first, parent)
+
+--- a/krusader/Konfigurator/krresulttable.cpp
++++ b/krusader/Konfigurator/krresulttable.cpp
+@@ -102,6 +102,7 @@ KrArchiverResultTable::KrArchiverResultT
+ Archiver* gzip = new Archiver("gzip", "http://www.gnu.org", PS("gzip"), true, true);
+ Archiver* bzip2 = new Archiver("bzip2", "http://www.gnu.org", PS("bzip2"), true, true);
+ Archiver* lzma = new Archiver("lzma", "http://tukaani.org/lzma", PS("lzma"), true, true);
++ Archiver* xz = new Archiver("xz", "http://tukaani.org/xz", PS("xz"), true, true);
+ Archiver* lha = new Archiver("lha", "http://www.gnu.org", PS("lha"), true, true);
+ Archiver* zip = new Archiver("zip", "http://www.info-zip.org", PS("zip"), true, false);
+ Archiver* unzip = new Archiver("unzip", "http://www.info-zip.org", PS("unzip"), false, true);
+@@ -139,6 +140,7 @@ KrArchiverResultTable::KrArchiverResultT
+ addRow(gzip, _grid);
+ addRow(bzip2, _grid);
+ addRow(lzma, _grid);
++ addRow(xz, _grid);
+ addRow(lha, _grid);
+ addRow(zip, _grid);
+ addRow(unzip, _grid);
+@@ -155,6 +157,7 @@ KrArchiverResultTable::KrArchiverResultT
+ delete gzip;
+ delete bzip2;
+ delete lzma;
++ delete xz;
+ delete lha;
+ delete zip;
+ delete unzip;
+
+--- a/krusader/Panel/krview.cpp
++++ b/krusader/Panel/krview.cpp
+@@ -367,6 +367,7 @@ void KrView::initProperties()
+ defaultAtomicExtensions += ".tar.gz";
+ defaultAtomicExtensions += ".tar.bz2";
+ defaultAtomicExtensions += ".tar.lzma";
++ defaultAtomicExtensions += ".tar.xz";
+ defaultAtomicExtensions += ".moc.cpp";
+ QStringList atomicExtensions = grpSvr.readEntry("Atomic Extensions", defaultAtomicExtensions);
+ for (QStringList::iterator i = atomicExtensions.begin(); i != atomicExtensions.end();) {
+
+--- a/krusader/VFS/krarchandler.cpp
++++ b/krusader/VFS/krarchandler.cpp
+@@ -85,7 +85,7 @@ public:
+ };
+ #endif
+
+-static QStringList arcProtocols = QString("tar;bzip;bzip2;lzma;gzip;krarc;zip").split(';');
++static QStringList arcProtocols = QString("tar;bzip;bzip2;lzma;xz;gzip;krarc;zip").split(';');
+
+ KWallet::Wallet * KRarcHandler::wallet = 0;
+
+@@ -98,6 +98,7 @@ QStringList KRarcHandler::supportedPacke
+ if (KrServices::cmdExist("gzip")) packers.append("gzip");
+ if (KrServices::cmdExist("bzip2")) packers.append("bzip2");
+ if (KrServices::cmdExist("lzma")) packers.append("lzma");
++ if (KrServices::cmdExist("xz")) packers.append("xz");
+ if (KrServices::cmdExist("unzip")) packers.append("unzip");
+ if (KrServices::cmdExist("zip")) packers.append("zip");
+ if (KrServices::cmdExist("lha")) packers.append("lha");
+@@ -134,6 +135,8 @@ bool KRarcHandler::arcSupported(QString
+ return true;
+ else if (type == "-tlz" && lst.contains("tar"))
+ return true;
++ else if (type == "-txz" && lst.contains("tar"))
++ return true;
+ else if (type == "tarz" && lst.contains("tar"))
+ return true;
+ else if (type == "gzip" && lst.contains("gzip"))
+@@ -142,6 +145,8 @@ bool KRarcHandler::arcSupported(QString
+ return true;
+ else if (type == "lzma" && lst.contains("lzma"))
+ return true;
++ else if (type == "-xz" && lst.contains("xz"))
++ return true;
+ else if (type == "-lha" && lst.contains("lha"))
+ return true;
+ else if (type == "-ace" && lst.contains("unace"))
+@@ -173,6 +178,7 @@ bool KRarcHandler::arcHandled(QString ty
+ (type == "-tar" && group.readEntry("Do Tar" , _DoTar)) ||
+ (type == "-tbz" && group.readEntry("Do BZip2", _DoBZip2)) ||
+ (type == "-tlz" && group.readEntry("Do LZMA", _DoLZMA)) ||
++ (type == "-txz" && group.readEntry("Do XZ", _DoXZ)) ||
+ (type == "gzip" && group.readEntry("Do GZip" , _DoGZip)) ||
+ (type == "zip2" && group.readEntry("Do BZip2", _DoBZip2)) ||
+ (type == "-zip" && group.readEntry("Do UnZip", _DoUnZip)) ||
+@@ -198,7 +204,7 @@ long KRarcHandler::arcFileCount(QString
+ if (!arcSupported(type)) return 0;
+
+ // bzip an gzip archive contains only one file
+- if (type == "zip2" || type == "gzip" || type == "lzma") return 1L;
++ if (type == "zip2" || type == "gzip" || type == "lzma" || type == "-xz") return 1L;
+
+ // set the right lister to do the job
+ QStringList lister;
+@@ -209,6 +215,7 @@ long KRarcHandler::arcFileCount(QString
+ else if (type == "tarz") lister << KrServices::fullPathName("tar") << "-tvzf";
+ else if (type == "-tbz") lister << KrServices::fullPathName("tar") << "-tjvf";
+ else if (type == "-tlz") lister << KrServices::fullPathName("tar") << "--lzma" << "-tvf";
++ else if (type == "-txz") lister << KrServices::fullPathName("tar") << "--xz" << "-tvf";
+ else if (type == "-lha") lister << KrServices::fullPathName("lha") << "l";
+ else if (type == "-rar") lister << KrServices::fullPathName(KrServices::cmdExist("rar") ? "rar" : "unrar") << "l" << "-v";
+ else if (type == "-ace") lister << KrServices::fullPathName("unace") << "l";
+@@ -293,9 +300,11 @@ bool KRarcHandler::unpack(QString archiv
+ else if (type == "tarz") packer << KrServices::fullPathName("tar") << "-xvzf";
+ else if (type == "-tbz") packer << KrServices::fullPathName("tar") << "-xjvf";
+ else if (type == "-tlz") packer << KrServices::fullPathName("tar") << "--lzma" << "-xvf";
++ else if (type == "-txz") packer << KrServices::fullPathName("tar") << "--xz" << "-xvf";
+ else if (type == "gzip") packer << KrServices::fullPathName("gzip") << "-cd";
+ else if (type == "zip2") packer << KrServices::fullPathName("bzip2") << "-cdk";
+ else if (type == "lzma") packer << KrServices::fullPathName("lzma") << "-cdk";
++ else if (type == "-xz") packer << KrServices::fullPathName("xz") << "-cdk";
+ else if (type == "-lha") packer << KrServices::fullPathName("lha") << "xf";
+ else if (type == "-rar") packer << KrServices::fullPathName(KrServices::cmdExist("rar") ? "rar" : "unrar") << "-y" << "x";
+ else if (type == "-ace") packer << KrServices::fullPathName("unace") << "x";
+@@ -351,7 +360,7 @@ bool KRarcHandler::unpack(QString archiv
+ // unpack the files
+ KrLinecountingProcess proc;
+ proc << packer << archive;
+- if (type == "zip2" || type == "gzip" || type == "lzma") {
++ if (type == "zip2" || type == "gzip" || type == "lzma" || type == "-xz") {
+ QString arcname = archive.mid(archive.lastIndexOf("/") + 1);
+ if (arcname.contains(".")) arcname = arcname.left(arcname.lastIndexOf("."));
+ proc.setStandardOutputFile(dest + '/' + arcname);
+@@ -407,9 +416,11 @@ bool KRarcHandler::test(QString archive,
+ else if (type == "tarz") packer << KrServices::fullPathName("tar") << "-tvzf";
+ else if (type == "-tbz") packer << KrServices::fullPathName("tar") << "-tjvf";
+ else if (type == "-tlz") packer << KrServices::fullPathName("tar") << "--lzma" << "-tvf";
++ else if (type == "-txz") packer << KrServices::fullPathName("tar") << "--xz" << "-tvf";
+ else if (type == "gzip") packer << KrServices::fullPathName("gzip") << "-tv";
+ else if (type == "zip2") packer << KrServices::fullPathName("bzip2") << "-tv";
+ else if (type == "lzma") packer << KrServices::fullPathName("lzma") << "-tv";
++ else if (type == "-xz") packer << KrServices::fullPathName("xz") << "-tv";
+ else if (type == "-rar") packer << KrServices::fullPathName(KrServices::cmdExist("rar") ? "rar" : "unrar") << "t";
+ else if (type == "-ace") packer << KrServices::fullPathName("unace") << "t";
+ else if (type == "-lha") packer << KrServices::fullPathName("lha") << "t";
+@@ -474,6 +485,8 @@ bool KRarcHandler::pack(QStringList file
+ packer << KrServices::fullPathName("tar") << "-cvjf"; type = "-tbz";
+ } else if (type == "tar.lzma") {
+ packer << KrServices::fullPathName("tar") << "--lzma" << "-cvf"; type = "-tlz";
++ } else if (type == "tar.xz") {
++ packer << KrServices::fullPathName("tar") << "--xz" << "-cvf"; type = "-txz";
+ } else if (type == "rar") {
+ packer << KrServices::fullPathName("rar") << "-r" << "a"; type = "-rar";
+ } else if (type == "lha") {
+@@ -673,6 +686,10 @@ QString KRarcHandler::getType(bool &encr
+ result = "-7z";
+ }
+
++ if (result.endsWith(QLatin1String("-xz"))) {
++ result = "-xz";
++ }
++
+ return result.right(4);
+ }
+
+@@ -683,9 +700,9 @@ bool KRarcHandler::checkStatus(QString t
+ return exitCode == 0 || exitCode == 1;
+ else if (type == "-ace" || type == "zip2" || type == "-lha" || type == "-rpm" || type == "cpio" ||
+ type == "-tar" || type == "tarz" || type == "-tbz" || type == "-tgz" || type == "-arj" ||
+- type == "-deb" || type == "-tlz")
++ type == "-deb" || type == "-tlz" || type == "-txz")
+ return exitCode == 0;
+- else if (type == "gzip" || type == "lzma")
++ else if (type == "gzip" || type == "lzma" || type == "-xz")
+ return exitCode == 0 || exitCode == 2;
+ else
+ return exitCode == 0;
+@@ -707,7 +724,8 @@ QString KRarcHandler::detectArchive(bool
+ {"bzip2", 0, "\x42\x5a\x68\x39\x31" },
+ {"gzip", 0, "\x1f\x8b"},
+ {"deb", 0, "!<arch>\ndebian-binary " },
+- {"7z", 0, "7z\xbc\xaf\x27\x1c" }
++ {"7z", 0, "7z\xbc\xaf\x27\x1c" }/*,
++ {"xz", 0, "\xfd\x37\x7a\x58\x5a\x00"}*/
+ };
+ static int autoDetectElems = sizeof(autoDetectParams) / sizeof(AutoDetectParams);
+
+@@ -839,6 +857,14 @@ QString KRarcHandler::detectArchive(bool
+ return "lzma";
+ }
+
++ if (fileName.endsWith(QLatin1String(".tar.xz")) ||
++ fileName.endsWith(QLatin1String(".txz"))) {
++ return "txz";
++ }
++ if (fileName.endsWith(QLatin1String(".xz"))) {
++ return "xz";
++ }
++
+ return QString();
+ }
+
+
+--- a/krusader/defaults.h
++++ b/krusader/defaults.h
+@@ -181,6 +181,8 @@
+ #define _DoBZip2 true
+ // Do LZMA ///////////
+ #define _DoLZMA true
++// Do XZ ///////////
++#define _DoXZ true
+ // Do Rar /////////////
+ #define _DoRar true
+ // Do UnRar ///////////
+
diff --git a/extra/krusader/krusader.install b/extra/krusader/krusader.install
new file mode 100644
index 000000000..e70c054ec
--- /dev/null
+++ b/extra/krusader/krusader.install
@@ -0,0 +1,11 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/extra/ksensors/PKGBUILD b/extra/ksensors/PKGBUILD
new file mode 100644
index 000000000..6db8e7e85
--- /dev/null
+++ b/extra/ksensors/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: PKGBUILD 64746 2010-01-22 03:14:29Z eric $
+# Contributor: Torsten Evers <tevers@onlinehome.de>
+# Maintainer: Thomas Baechler <thomas@archlinux.org>
+pkgname=ksensors
+pkgver=0.7.3
+pkgrel=5
+pkgdesc="ksensors is nice lm_sensors frontend for KDE"
+arch=('i686' 'x86_64')
+url="http://ksensors.sourceforge.net/"
+license=("GPL")
+depends=("lm_sensors>=3.0.0" 'kdelibs3')
+source=(#http://mesh.dl.sourceforge.net/sourceforge/ksensors/$pkgname-$pkgver.tar.gz \
+ http://people.atrpms.net/~hdegoede/ksensors-0.7.3-fedora-14.tar.gz)
+md5sums=('7c64a2ef836c13d72b5711791819072e')
+
+build() {
+ cd $startdir/src/$pkgname-$pkgver
+ . /etc/profile.d/qt3.sh
+ . /etc/profile.d/kde3.sh
+ ./configure --prefix=/opt/kde --without-arts
+ make || return 1
+ make DESTDIR=$startdir/pkg install
+}
diff --git a/extra/ksensors/ksensors.patch b/extra/ksensors/ksensors.patch
new file mode 100644
index 000000000..299458f0d
--- /dev/null
+++ b/extra/ksensors/ksensors.patch
@@ -0,0 +1,79 @@
+--- admin/cvs.sh 2003-07-11 23:00:30.000000000 +0800
++++ admin/cvs.sh 2006-08-28 14:54:23.000000000 +0800
+@@ -29,7 +29,7 @@
+ {
+ AUTOCONF_VERSION=`$AUTOCONF --version | head -n 1`
+ case $AUTOCONF_VERSION in
+- Autoconf*2.5* | autoconf*2.5* ) : ;;
++ Autoconf*2.[56]* | autoconf*2.[56]* ) : ;;
+ "" )
+ echo "*** AUTOCONF NOT FOUND!."
+ echo "*** KDE requires autoconf 2.52, 2.53 or 2.54"
+@@ -44,7 +44,7 @@
+
+ AUTOHEADER_VERSION=`$AUTOHEADER --version | head -n 1`
+ case $AUTOHEADER_VERSION in
+- Autoconf*2.5* | autoheader*2.5* ) : ;;
++ Autoconf*2.[56]* | autoheader*2.[56]* ) : ;;
+ "" )
+ echo "*** AUTOHEADER NOT FOUND!."
+ echo "*** KDE requires autoheader 2.52 or 2.53 (part of autoconf)"
+--- src/hdsensorslist.cpp 2004-08-09 02:30:05.000000000 +0800
++++ src/hdsensorslist.cpp 2006-08-28 15:27:02.000000000 +0800
+@@ -206,13 +206,17 @@
+
+ bool HDSensorsList::getDisks(QStringList &disks )
+ {
+- DIR *dir= opendir("/proc/ide");
+- if(!dir) return false;
++ DIR *dir;
++
++ /* Get a listing of the hard drives looking under sysfs first before falling back to /proc/ide */
++ if((dir = opendir ("/sys/block")) == NULL)
++ if ((dir = opendir ("/proc/ide")) == NULL)
++ return false;
+ QString str;
+ struct dirent *ptr;
+ while((ptr= readdir(dir))) {
+- if(ptr->d_name[0]=='h' && ptr->d_name[1]=='d') {
+- str.sprintf("/dev/hd%c",ptr->d_name[2]);
++ if((ptr->d_name[0] == 'h' || ptr->d_name[0] == 's') && ptr->d_name[1] == 'd') {
++ str.sprintf("/dev/%s", ptr->d_name);
+ disks << str;
+ }
+ }
+--- src/lmsensorscfgdesign.ui 2004-08-11 22:36:54.000000000 +0800
++++ src/lmsensorscfgdesign.ui 2006-08-28 14:54:23.000000000 +0800
+@@ -748,29 +748,13 @@
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+- <widget class="QLabel">
++ <widget class="QButtonGroup">
+ <property name="name">
+- <cstring>TextLabel1_3_2_2_2_2</cstring>
++ <cstring>ButtonGroup9</cstring>
+ </property>
+- <property name="text">
++ <property name="title">
+ <string>On reach alarm value:</string>
+ </property>
+- </widget>
+- <widget class="QFrame">
+- <property name="name">
+- <cstring>Frame11_2_2_2</cstring>
+- </property>
+- <property name="frameShape">
+- <enum>HLine</enum>
+- </property>
+- <property name="frameShadow">
+- <enum>Sunken</enum>
+- </property>
+- </widget>
+- <widget class="QLayoutWidget">
+- <property name="name">
+- <cstring>layout9</cstring>
+- </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
diff --git a/extra/kshutdown/PKGBUILD b/extra/kshutdown/PKGBUILD
new file mode 100644
index 000000000..0bd65cffc
--- /dev/null
+++ b/extra/kshutdown/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 110106 2011-02-16 13:52:25Z andrea $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=kshutdown
+pkgver=2.0beta12
+pkgrel=1
+pkgdesc="Shutdown Utility for KDE"
+arch=(i686 x86_64)
+url="http://kshutdown.sourceforge.net/"
+license=('GPL')
+depends=('kdebase-workspace')
+makedepends=('pkgconfig' 'cmake' 'automoc4')
+install='kshutdown.install'
+source=("http://downloads.sourceforge.net/${pkgname}/${pkgname}-source-${pkgver}.zip")
+
+build() {
+ cd "${srcdir}"
+ mkdir build
+ cd build
+ cmake ../${pkgname}-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}/build"
+ make DESTDIR="${pkgdir}" install
+}
+md5sums=('392a345dab6fc4f6125007171bc8cb9c')
diff --git a/extra/kshutdown/kshutdown.install b/extra/kshutdown/kshutdown.install
new file mode 100644
index 000000000..e70c054ec
--- /dev/null
+++ b/extra/kshutdown/kshutdown.install
@@ -0,0 +1,11 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/extra/ktorrent/PKGBUILD b/extra/ktorrent/PKGBUILD
new file mode 100644
index 000000000..b29506657
--- /dev/null
+++ b/extra/ktorrent/PKGBUILD
@@ -0,0 +1,41 @@
+# $Id: PKGBUILD 115087 2011-03-16 19:19:11Z andrea $
+# Maintainer: Ronald van Haren <ronald.archlinux.org>
+# Contributor: Travis Willard <travisw@wmpub.ca>
+# Contributor: Georg Grabler <ggrabler@gmail.com>
+
+pkgname=ktorrent
+pkgver=4.1.0
+pkgrel=1
+pkgdesc="A BitTorrent program for KDE"
+arch=('i686' 'x86_64')
+url="http://ktorrent.org"
+license=('GPL2')
+depends=('libktorrent' 'kdebase-workspace' 'taglib')
+makedepends=('automoc4' 'cmake' 'boost')
+source=("http://ktorrent.org/downloads/${pkgver}/${pkgname}-${pkgver}.tar.bz2"
+ 'httpserver.patch')
+install=${pkgname}.install
+options=('libtool')
+md5sums=('3981c00810217e88b9772438df31df08'
+ '1f25b94615b0bbfa0457c99fb20de3e6')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ # build time patch
+ patch -Np0 -i ${srcdir}/httpserver.patch
+
+ cd ${srcdir}
+ mkdir build
+ cd build
+ cmake ../${pkgname}-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DENABLE_MEDIAPLAYER_PLUGIN=false
+ make
+}
+
+package() {
+ cd ${srcdir}/build
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/ktorrent/httpserver.patch b/extra/ktorrent/httpserver.patch
new file mode 100644
index 000000000..71c616db0
--- /dev/null
+++ b/extra/ktorrent/httpserver.patch
@@ -0,0 +1,10 @@
+--- plugins/webinterface/httpserver.cpp.old
++++ plugins/webinterface/httpserver.cpp
+@@ -29,6 +29,7 @@
+ #include <ktemporaryfile.h>
+ #include <k3streamsocket.h>
+ #include <k3resolver.h>
++#include <time.h>
+
+ #include <qfileinfo.h>
+ #include <qstringlist.h>
diff --git a/extra/ktorrent/ktorrent.install b/extra/ktorrent/ktorrent.install
new file mode 100644
index 000000000..3884b350d
--- /dev/null
+++ b/extra/ktorrent/ktorrent.install
@@ -0,0 +1,12 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+ update-mime-database usr/share/mime &> /dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/extra/kwebkitpart/PKGBUILD b/extra/kwebkitpart/PKGBUILD
new file mode 100644
index 000000000..aac2684cc
--- /dev/null
+++ b/extra/kwebkitpart/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 112728 2011-03-06 12:19:29Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+
+pkgname=kwebkitpart
+pkgver=1.1
+pkgrel=1
+pkgdesc="A web browser component for KDE"
+url="http://opendesktop.org/content/show.php?content=127960"
+arch=('i686' 'x86_64')
+license=('GPL')
+depends=('kdebase-runtime')
+makedepends=('cmake' 'automoc4')
+install=${pkgname}.install
+source=("ftp://ftp.archlinux.org/other/kde/${pkgname}-${pkgver}.tar.bz2")
+md5sums=('1a72499b91d668409ed8ea8e5e71b398')
+
+build() {
+ cd ${srcdir}
+ mkdir build
+ cd build
+ cmake ../${pkgname}-${pkgver} \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_BUILD_TYPE=Release
+ make
+}
+
+package() {
+ cd ${srcdir}/build
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/kwebkitpart/kwebkitpart.install b/extra/kwebkitpart/kwebkitpart.install
new file mode 100644
index 000000000..e70c054ec
--- /dev/null
+++ b/extra/kwebkitpart/kwebkitpart.install
@@ -0,0 +1,11 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/extra/lablgtk/PKGBUILD b/extra/lablgtk/PKGBUILD
new file mode 100644
index 000000000..1da638913
--- /dev/null
+++ b/extra/lablgtk/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 97741 2010-11-01 19:31:37Z tpowa $
+#Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=lablgtk
+pkgver=1.2.7
+pkgrel=8
+pkgdesc=" An Objective Caml interface to gtk+"
+arch=(i686 x86_64)
+url="http://wwwfun.kurims.kyoto-u.ac.jp/soft/olabl/lablgtk.html"
+license=('LGPL')
+depends=('gtk')
+makedepends=('ocaml')
+options=('!makeflags')
+source=(http://wwwfun.kurims.kyoto-u.ac.jp/soft/olabl/dist/$pkgname-$pkgver.tar.gz)
+md5sums=('73a797e3a459190fdcaa8288935f6fb9')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ make configure
+ make
+ make opt
+ make PREFIX=$pkgdir/usr LIBDIR=$pkgdir/usr/lib/ocaml BINDIR=$pkgdir/usr/bin \
+ INSTALLDIR=$pkgdir/usr/lib/ocaml/lablgtk DLLDIR=$pkgdir/usr/lib/ocaml/stublibs install
+ rm -r $pkgdir/usr/bin
+}
diff --git a/extra/lablgtk2/PKGBUILD b/extra/lablgtk2/PKGBUILD
new file mode 100644
index 000000000..d0d65af8a
--- /dev/null
+++ b/extra/lablgtk2/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 106688 2011-01-17 20:58:22Z tpowa $
+#Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=lablgtk2
+pkgver=2.14.2
+pkgrel=1
+pkgdesc=" An Objective Caml interface to gtk2"
+arch=(i686 x86_64)
+license=('LGPL')
+url="http://wwwfun.kurims.kyoto-u.ac.jp/soft/olabl/lablgtk.html"
+depends=('gtk2' 'gtkspell' 'libgnomecanvas' 'librsvg' 'libgnomeui' 'gtksourceview' 'gtksourceview2')
+makedepends=('ocaml')
+source=(http://wwwfun.kurims.kyoto-u.ac.jp/soft/olabl/dist/lablgtk-$pkgver.tar.gz)
+options=(!makeflags)
+
+build() {
+ cd $startdir/src/lablgtk-$pkgver
+ ./configure
+ make world
+ make opt
+ make PREFIX=$startdir/pkg/usr LIBDIR=$startdir/pkg/usr/lib/ocaml BINDIR=$startdir/pkg/usr/bin INSTALLDIR=$startdir/pkg/usr/lib/ocaml/lablgtk2 DLLDIR=$startdir/pkg/usr/lib/ocaml/stublibs install
+rm -r $startdir/pkg/usr/bin
+}
+md5sums=('bad77680a72dab8b915cae99d1ec9b1f')
diff --git a/extra/lablgtk2/ocaml-3.12.patch b/extra/lablgtk2/ocaml-3.12.patch
new file mode 100644
index 000000000..1b960138f
--- /dev/null
+++ b/extra/lablgtk2/ocaml-3.12.patch
@@ -0,0 +1,237 @@
+Index: src/gWindow.mli
+===================================================================
+--- src/gWindow.mli (revision 1514)
++++ src/gWindow.mli (revision 1515)
+@@ -191,9 +191,10 @@
+
+ (** Create popup windows
+ @gtkdoc gtk GtkDialog *)
+-class ['a] dialog_ext : [> Gtk.dialog] obj ->
++class ['a] dialog_ext : ([> Gtk.dialog] as 'b) obj ->
+ object
+ inherit ['a] dialog_skel
++ val obj : 'b obj
+ method add_button : string -> 'a -> unit
+ method add_button_stock : GtkStock.id -> 'a -> unit
+ end
+@@ -203,6 +204,7 @@
+ class ['a] dialog : [> Gtk.dialog] obj ->
+ object
+ inherit ['a] dialog_ext
++ val obj : Gtk.dialog obj
+ method connect : 'a dialog_signals
+ end
+
+Index: src/gButton.mli
+===================================================================
+--- src/gButton.mli (revision 1514)
++++ src/gButton.mli (revision 1515)
+@@ -357,9 +357,10 @@
+ (** @gtkdoc gtk GtkToolItem
+ @since GTK 2.4 *)
+ class tool_item :
+- [> Gtk.tool_item] obj ->
++ ([> Gtk.tool_item] as 'a) obj ->
+ object
+ inherit tool_item_skel
++ val obj : 'a obj
+ method connect : GContainer.container_signals
+ end
+
+@@ -423,9 +424,10 @@
+ (** @gtkdoc gtk GtkToolButton
+ @since GTK 2.4 *)
+ class tool_button :
+- [> Gtk.tool_button] obj ->
++ ([> Gtk.tool_button] as 'a) obj ->
+ object
+ inherit tool_button_skel
++ val obj : 'a obj
+ method connect : tool_button_signals
+ end
+
+Index: src/gAction.mli
+===================================================================
+--- src/gAction.mli (revision 1514)
++++ src/gAction.mli (revision 1515)
+@@ -20,6 +20,10 @@
+ (* *)
+ (**************************************************************************)
+
++(* $Id: lablgtk-2.14.1-ocaml312.patch,v 1.1 2010/08/03 20:38:29 aballier Exp $ *)
++
++open Gobject
++
+ (** Action-based menus and toolbars *)
+
+ (** {3 GtkAction} *)
+@@ -27,9 +31,9 @@
+ (** @since GTK 2.4
+ @gtkdoc gtk GtkAction *)
+ class action_signals :
+- ([> Gtk.action ] as 'b) Gobject.obj ->
++ ([> Gtk.action ] as 'b) obj ->
+ object ('a)
+- val obj : 'b Gobject.obj
++ val obj : 'b obj
+ val after : bool
+ method after : < after : 'a; .. > as 'a
+ method activate : callback:(unit -> unit) -> GtkSignal.id
+@@ -38,10 +42,10 @@
+ (** @since GTK 2.4
+ @gtkdoc gtk GtkAction *)
+ class action_skel :
+- ([> Gtk.action ] as 'a) Gobject.obj ->
++ ([> Gtk.action ] as 'a) obj ->
+ object
+- val obj : 'a Gobject.obj
+- method as_action : Gtk.action Gobject.obj
++ val obj : 'a obj
++ method as_action : Gtk.action obj
+
+ (** Properties *)
+
+@@ -88,10 +92,10 @@
+ (** @since GTK 2.4
+ @gtkdoc gtk GtkAction *)
+ class action :
+- ([> Gtk.action ] as 'a) Gobject.obj ->
++ ([> Gtk.action ] as 'a) obj ->
+ object
+ inherit action_skel
+- val obj : 'a Gobject.obj
++ val obj : 'a obj
+ method connect : action_signals
+ end
+
+@@ -103,20 +107,20 @@
+ (** @since GTK 2.4
+ @gtkdoc gtk GtkToggleAction *)
+ class toggle_action_signals :
+- ([> Gtk.toggle_action ] as 'b) Gobject.obj ->
++ ([> Gtk.toggle_action ] as 'b) obj ->
+ object
+ inherit action_signals
+- val obj : 'b Gobject.obj
++ val obj : 'b obj
+ method toggled : callback:(unit -> unit) -> GtkSignal.id
+ end
+
+ (** @since GTK 2.4
+ @gtkdoc gtk GtkToggleAction *)
+ class toggle_action_skel :
+- ([> Gtk.toggle_action ] as 'a) Gobject.obj ->
++ ([> Gtk.toggle_action ] as 'a) obj ->
+ object
+ inherit action_skel
+- val obj : 'a Gobject.obj
++ val obj : 'a obj
+ method draw_as_radio : bool
+ method get_active : bool
+ method set_active : bool -> unit
+@@ -127,9 +131,10 @@
+ (** @since GTK 2.4
+ @gtkdoc gtk GtkToggleAction *)
+ class toggle_action :
+- ([> Gtk.toggle_action ] as 'a) Gobject.obj ->
++ ([> Gtk.toggle_action ] as 'a) obj ->
+ object
+ inherit toggle_action_skel
++ val obj : 'a obj
+ method connect : toggle_action_signals
+ end
+
+@@ -140,10 +145,10 @@
+ (** @since GTK 2.4
+ @gtkdoc gtk GtkRadioAction *)
+ class radio_action_signals :
+- ([> Gtk.radio_action] as 'b) Gobject.obj ->
++ ([> Gtk.radio_action] as 'b) obj ->
+ object
+ inherit toggle_action_signals
+- val obj : 'b Gobject.obj
++ val obj : 'b obj
+ method changed :
+ callback:(int -> unit) -> GtkSignal.id
+ end
+@@ -151,12 +156,12 @@
+ (** @since GTK 2.4
+ @gtkdoc gtk GtkRadioAction *)
+ class radio_action :
+- ([> Gtk.radio_action] as 'a) Gobject.obj ->
++ ([> Gtk.radio_action] as 'a) obj ->
+ object
+ inherit toggle_action_skel
+- val obj : 'a Gobject.obj
++ val obj : 'a obj
+ method connect : radio_action_signals
+- method as_radio_action : Gtk.radio_action Gobject.obj
++ method as_radio_action : Gtk.radio_action obj
+ method get_current_value : int
+ method set_group : Gtk.radio_action Gtk.group -> unit
+ method set_value : int -> unit
+@@ -172,10 +177,10 @@
+ (** @since GTK 2.4
+ @gtkdoc gtk GtkActionGroup *)
+ class action_group_signals :
+- ([> Gtk.action_group ] as 'b) Gobject.obj ->
++ ([> Gtk.action_group ] as 'b) obj ->
+ object ('a)
+ val after : bool
+- val obj : 'b Gobject.obj
++ val obj : 'b obj
+ method after : 'a
+ method connect_proxy : callback:(action -> GObj.widget -> unit) -> GtkSignal.id
+ method disconnect_proxy : callback:(action -> GObj.widget -> unit) -> GtkSignal.id
+@@ -186,10 +191,10 @@
+ (** @since GTK 2.4
+ @gtkdoc gtk GtkActionGroup *)
+ class action_group :
+- ([> Gtk.action_group ] as 'a) Gobject.obj ->
++ ([> Gtk.action_group ] as 'a) obj ->
+ object
+- val obj : 'a Gobject.obj
+- method as_group : Gtk.action_group Gobject.obj
++ val obj : 'a obj
++ method as_group : Gtk.action_group obj
+ method connect : action_group_signals
+ method sensitive : bool
+ method set_sensitive : bool -> unit
+Index: src/gnoCanvas.mli
+===================================================================
+--- src/gnoCanvas.mli (revision 1514)
++++ src/gnoCanvas.mli (revision 1515)
+@@ -180,9 +180,10 @@
+ end
+
+ (** @gtkdoc libgnomecanvas GnomeCanvasItem *)
+-class ['p] item : [> GnomeCanvas.item] Gtk.obj ->
++class ['p] item : ([> GnomeCanvas.item] as 'a) Gtk.obj ->
+ object
+ inherit base_item
++ val obj : 'a Gtk.obj
+ constraint 'p = [< items_properties]
+ method set : 'p list -> unit
+ end
+Index: src/gWindow.ml
+===================================================================
+--- src/gWindow.ml (revision 1514)
++++ src/gWindow.ml (revision 1515)
+@@ -171,7 +171,7 @@
+ end
+
+ class ['a] dialog obj = object (self)
+- inherit ['a] dialog_ext obj
++ inherit ['a] dialog_ext (obj :> Gtk.dialog obj)
+ method connect : 'a dialog_signals = new dialog_signals obj (self#decode)
+ end
+
+@@ -193,7 +193,7 @@
+ type any_response = [GtkEnums.response | `OTHER of int]
+
+ class dialog_any obj = object (self)
+- inherit [any_response] dialog_base obj
++ inherit [any_response] dialog_base (obj :> Gtk.dialog obj)
+ method private encode = function
+ `OTHER n -> n
+ | #GtkEnums.response as v -> Dialog.std_response v
diff --git a/extra/labplot/PKGBUILD b/extra/labplot/PKGBUILD
new file mode 100644
index 000000000..23d3db293
--- /dev/null
+++ b/extra/labplot/PKGBUILD
@@ -0,0 +1,40 @@
+# $Id: PKGBUILD 69056 2010-02-16 15:06:54Z ronald $
+# Maintainer: Ronald van Haren <ronald.archlinux.org>
+# Contributor: damir <damir@archlinux.org>
+# Contributor: Tobias Powalowski <t.powa@gmx.de>
+
+pkgname=labplot
+pkgver=1.6.0.2
+pkgrel=6
+pkgdesc="Plotting, Data analysis and visualisation"
+arch=('i686' 'x86_64')
+url="http://staff.mbi-berlin.de/gerlach/Linux/LabPlot/"
+license=("GPL")
+depends=('kdelibs3' 'gsl' 'imagemagick' \
+ 'fftw' 'netcdf>=4.1')
+makedepends=('libxml++>=2.26' 'audiofile')
+options=('!libtool' '!makeflags')
+source=(http://downloads.sourceforge.net/$pkgname/LabPlot-$pkgver.tar.gz define-missing-constant.patch
+ 'hdf5-1.8.patch')
+
+md5sums=('850256dcd02c4a8ede5b5fe3fbc21ab7' 'e8133bb7b8da63f4ae5a0b998c37b702'
+ '1d38c7304a53b238f8cecb337771ed6f')
+
+
+build() {
+ cd $srcdir/LabPlot-${pkgver}
+ patch -p1 < ../define-missing-constant.patch || return 1
+ patch -Np0 -i ${srcdir}/hdf5-1.8.patch || return 1
+
+ # source kde3 variables
+ source /etc/profile.d/kde3.sh
+
+ # build and install
+ ./configure --prefix=/opt/kde --enable-mt \
+ --without-arts --disable-audiofile \
+ --mandir=/opt/kde/share/man
+ --disable-KexiDB
+ make || return 1
+ make DESTDIR=${pkgdir} install || return 1
+}
+
diff --git a/extra/labplot/define-missing-constant.patch b/extra/labplot/define-missing-constant.patch
new file mode 100644
index 000000000..f61211279
--- /dev/null
+++ b/extra/labplot/define-missing-constant.patch
@@ -0,0 +1,15 @@
+diff --git a/src/constants.h b/src/constants.h
+index 77d76bf..1bada49 100644
+--- a/src/constants.h
++++ b/src/constants.h
+@@ -17,6 +17,10 @@
+ #endif
+ #endif
+
++#ifndef GSL_CONST_CGSM_GAUSS
++#define GSL_CONST_CGSM_GAUSS (1e0) /* g / abamp s^2 */
++#endif
++
+ #ifdef HAVE_R
+ #include <R.h>
+ #include <Rmath.h>
diff --git a/extra/labplot/hdf5-1.8.patch b/extra/labplot/hdf5-1.8.patch
new file mode 100644
index 000000000..8d9780bb4
--- /dev/null
+++ b/extra/labplot/hdf5-1.8.patch
@@ -0,0 +1,58 @@
+--- src.orig/FilterHDF5.cc 2009-10-15 17:33:15.736674721 +0200
++++ src/FilterHDF5.cc 2009-10-15 17:23:51.386155522 +0200
+@@ -76,7 +76,7 @@
+ printf(" GROUP \"%s\" \n", name);
+ numgroups++;
+
+- hid_t group = H5Gopen(loc_id, name);
++ hid_t group = H5Gopen(loc_id, name, H5P_DEFAULT);
+
+ int nrattr = H5Aget_num_attrs(group);
+ printf(" GROUP has %d attributes\n",nrattr);
+@@ -129,7 +129,7 @@
+ printf(" DATASET \"%s\"\n", name);
+
+ hid_t dataset;
+- dataset = H5Dopen(loc_id, name);
++ dataset = H5Dopen(loc_id, name, H5P_DEFAULT);
+
+ numsets++;
+ data.resize(numsets);
+@@ -260,7 +260,7 @@
+
+ int *matrix = new int[DY];
+ hsize_t tdims[] = {1};
+- hid_t s4_tid = H5Tarray_create(H5T_NATIVE_INT,1,tdims,NULL);
++ hid_t s4_tid = H5Tarray_create(H5T_NATIVE_INT,1,tdims);
+ hid_t s3_tid = H5Tcreate(H5T_COMPOUND, sizeof(s4_tid));
+ status = H5Tinsert(s3_tid, H5Tget_member_name (datatype,j), 0, s4_tid);
+
+@@ -279,7 +279,7 @@
+
+ float *matrix = new float[DY];
+ hsize_t tdims[] = {1};
+- hid_t s4_tid = H5Tarray_create(H5T_NATIVE_FLOAT,1,tdims,NULL);
++ hid_t s4_tid = H5Tarray_create(H5T_NATIVE_FLOAT,1,tdims);
+ hid_t s3_tid = H5Tcreate(H5T_COMPOUND, sizeof(s4_tid));
+ status = H5Tinsert(s3_tid, H5Tget_member_name (datatype,j), 0, s4_tid);
+
+@@ -467,7 +467,7 @@
+ hid_t file = H5Fopen(filename.latin1(), H5F_ACC_RDONLY, H5P_DEFAULT);
+
+ printf(" ROOT GROUP :\n");
+- hid_t group = H5Gopen(file, "/");
++ hid_t group = H5Gopen(file, "/", H5P_DEFAULT);
+
+ int nrattr = H5Aget_num_attrs(group);
+ attributes.resize(nrattr);
+@@ -567,7 +567,8 @@
+ H5Tset_order(datatype, H5T_ORDER_BE);
+ break;
+ }
+- hid_t dataset = H5Dcreate(file,s->Title().latin1(),type,dataspace,H5P_DEFAULT);
++ hid_t dataset = H5Dcreate(file,s->Title().latin1(),type,dataspace,
++ H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+
+ hid_t status;
+ switch(datatype) {
+
diff --git a/extra/ladspa/PKGBUILD b/extra/ladspa/PKGBUILD
new file mode 100644
index 000000000..b5e1c67e8
--- /dev/null
+++ b/extra/ladspa/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 18544 2008-11-06 23:58:14Z jgc $
+# Maintainer: damir <damir@archlinux.org>
+
+pkgname=ladspa
+pkgver=1.13
+pkgrel=2
+pkgdesc="Linux Audio Developer's Simple Plugin API (LADSPA)"
+arch=("i686" "x86_64")
+license=('LGPL')
+url="http://www.ladspa.org/"
+depends=('gcc-libs>=4.3')
+source=(http://www.ladspa.org/download/${pkgname}_sdk_${pkgver}.tgz
+ hardcode-path.patch)
+md5sums=('671be3e1021d0722cadc7fb27054628e'
+ '27743258232d828575d66940e6de2858')
+
+build() {
+ cd "${srcdir}/${pkgname}_sdk/src"
+ patch -Np1 -i "${srcdir}/hardcode-path.patch" || return 1
+ sed -i -e 's/mkdirhier/mkdir -p/' makefile || return 1
+ make targets || return 1
+ make INSTALL_PLUGINS_DIR="${pkgdir}/usr/lib/ladspa/" \
+ INSTALL_INCLUDE_DIR="${pkgdir}/usr/include/" \
+ INSTALL_BINARY_DIR="${pkgdir}/usr/bin/" install || return 1
+}
diff --git a/extra/ladspa/hardcode-path.patch b/extra/ladspa/hardcode-path.patch
new file mode 100644
index 000000000..821c2001c
--- /dev/null
+++ b/extra/ladspa/hardcode-path.patch
@@ -0,0 +1,28 @@
+--- src/search.c.orig 2008-11-07 00:38:18.000000000 +0100
++++ src/search.c 2008-11-07 00:50:51.000000000 +0100
+@@ -83,6 +83,8 @@
+ dlclose(pcFilename);
+ free(pcFilename);
+ }
++ } else {
++ free(pcFilename);
+ }
+ }
+ }
+@@ -99,13 +101,10 @@
+
+ pcLADSPAPath = getenv("LADSPA_PATH");
+ if (!pcLADSPAPath) {
+- fprintf(stderr,
+- "Warning: You do not have a LADSPA_PATH "
+- "environment variable set.\n");
+- return;
++ pcStart = "/usr/lib/ladspa/";
++ } else {
++ pcStart = pcLADSPAPath;
+ }
+-
+- pcStart = pcLADSPAPath;
+ while (*pcStart != '\0') {
+ pcEnd = pcStart;
+ while (*pcEnd != ':' && *pcEnd != '\0')
diff --git a/extra/ladspa/ladspa-sdk-1.12-gcc4.patch b/extra/ladspa/ladspa-sdk-1.12-gcc4.patch
new file mode 100644
index 000000000..fa21be8ef
--- /dev/null
+++ b/extra/ladspa/ladspa-sdk-1.12-gcc4.patch
@@ -0,0 +1,18 @@
+--- ladspa_sdk/src/plugins/sine.cpp.orig 2002-07-06 17:23:17.000000000
+0000
++++ ladspa_sdk/src/plugins/sine.cpp 2005-11-25 11:15:11.691087784 +0000
+@@ -59,6 +59,15 @@
+
+ /*****************************************************************************/
+
++LADSPA_Handle instantiateSineOscillator(const LADSPA_Descriptor *, unsigned long SampleRate);
++void connectPortToSineOscillator(LADSPA_Handle Instance, unsigned long Port, LADSPA_Data * DataLocation);
++void activateSineOscillator(void * pvHandle);
++void runSineOscillator_FreqAudio_AmpAudio(LADSPA_Handle Instance, unsigned long SampleCount);
++void runSineOscillator_FreqAudio_AmpCtrl(LADSPA_Handle Instance, unsigned long SampleCount);
++void runSineOscillator_FreqCtrl_AmpAudio(LADSPA_Handle Instance, unsigned long SampleCount);
++void runSineOscillator_FreqCtrl_AmpCtrl(LADSPA_Handle Instance, unsigned long SampleCount);
++void cleanupSineOscillator(void *pvHandle);
++
+ class SineOscillator {
+ private:
diff --git a/extra/lame/03_lame-ffmpeg.diff b/extra/lame/03_lame-ffmpeg.diff
new file mode 100644
index 000000000..a80393517
--- /dev/null
+++ b/extra/lame/03_lame-ffmpeg.diff
@@ -0,0 +1,72 @@
+--- lame-3.98.2.orig/libmp3lame/lame.c 2009-07-07 10:52:01.000000000 +0200
++++ lame-3.98.2/libmp3lame/lame.c 2009-07-07 10:52:03.000000000 +0200
+@@ -1602,6 +1602,13 @@
+ /* update mfbuf[] counters */
+ gfc->mf_size += n_out;
+ assert(gfc->mf_size <= MFSIZE);
++
++ /* lame_encode_flush may have set gfc->mf_sample_to_encode to 0
++ * so we have to reinitialize it here when that happened.
++ */
++ if (gfc->mf_samples_to_encode < 1) {
++ gfc->mf_samples_to_encode = ENCDELAY + POSTDELAY;
++ }
+ gfc->mf_samples_to_encode += n_out;
+
+
+@@ -1931,6 +1938,10 @@
+ int frames_left;
+ int samples_to_encode = gfc->mf_samples_to_encode;
+
++ /* Was flush already called? */
++ if (gfc->mf_samples_to_encode < 1) {
++ return 0;
++ }
+ memset(buffer, 0, sizeof(buffer));
+ mp3count = 0;
+
+@@ -1942,7 +1953,9 @@
+ end_padding += pad_out_samples;
+
+ frames_left = (samples_to_encode + pad_out_samples) / gfp->framesize;
+- while (frames_left > 0) {
++
++ /* send in a frame of 0 padding until all internal sample buffers are flushed */
++ while (frames_left > 0 && imp3 >= 0) {
+ int frame_num = gfp->frameNum;
+
+ mp3buffer_size_remaining = mp3buffer_size - mp3count;
+@@ -1951,22 +1964,23 @@
+ if (mp3buffer_size == 0)
+ mp3buffer_size_remaining = 0;
+
+- /* send in a frame of 0 padding until all internal sample buffers
+- * are flushed
+- */
+ imp3 = lame_encode_buffer(gfp, buffer[0], buffer[1], 32,
+ mp3buffer, mp3buffer_size_remaining);
+
+- if (frame_num != gfp->frameNum) {
+- --frames_left;
+- }
+- if (imp3 < 0) {
+- /* some type of fatal error */
+- return imp3;
+- }
+ mp3buffer += imp3;
+ mp3count += imp3;
++ frames_left -= (frame_num != gfp->frameNum) ? 1 : 0;
+ }
++ /* Set gfc->mf_samples_to_encode to 0, so we may detect
++ * and break loops calling it more than once in a row.
++ */
++ gfc->mf_samples_to_encode = 0;
++
++ if (imp3 < 0) {
++ /* some type of fatal error */
++ return imp3;
++ }
++
+ mp3buffer_size_remaining = mp3buffer_size - mp3count;
+ /* if user specifed buffer size = 0, dont check size */
+ if (mp3buffer_size == 0)
diff --git a/extra/lame/PKGBUILD b/extra/lame/PKGBUILD
new file mode 100644
index 000000000..b66bb7f76
--- /dev/null
+++ b/extra/lame/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 80636 2010-05-20 16:06:46Z ibiru $
+# Maintainer: Ionut Biru <ibiru@archlinux.org>
+# Contributor: Hugo Doria <hugo@archlinux.org>
+
+pkgname=lame
+pkgver=3.98.4
+pkgrel=1
+pkgdesc="An MP3 encoder and graphical frame analyzer"
+arch=('i686' 'x86_64')
+url="http://lame.sourceforge.net/"
+depends=('ncurses')
+makedepends=('nasm')
+license=('LGPL')
+options=('!libtool')
+source=(http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.gz)
+md5sums=('8e9866ad6b570c6c95c8cba48060473f')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ ./configure --prefix=/usr \
+ --enable-nasm \
+ --enable-shared
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/lame/shared-frontend.patch b/extra/lame/shared-frontend.patch
new file mode 100644
index 000000000..e5ae0a95a
--- /dev/null
+++ b/extra/lame/shared-frontend.patch
@@ -0,0 +1,23 @@
+--- lame-3.96.1.orig/frontend/Makefile.am 2004-01-21 01:41:36.000000000 -0800
++++ lame-3.96.1/frontend/Makefile.am 2004-10-03 16:39:12.415901779 -0700
+@@ -50,7 +50,7 @@
+ endif
+
+ CFLAGS = @CFLAGS@ @GTK_CFLAGS@ @FRONTEND_CFLAGS@
+-LDFLAGS = @LDFLAGS@ @FRONTEND_LDFLAGS@ -static
++LDFLAGS = @LDFLAGS@ @FRONTEND_LDFLAGS@
+
+ INCLUDES = -I$(top_srcdir)/libmp3lame -I$(top_srcdir)/include -I$(top_builddir)
+
+diff -Naur lame-3.96.1.orig/frontend/Makefile.in lame-3.96.1/frontend/Makefile.in
+--- lame-3.96.1.orig/frontend/Makefile.in 2004-01-21 05:50:29.000000000 -0800
++++ lame-3.96.1/frontend/Makefile.in 2004-10-03 16:39:19.711701553 -0700
+@@ -91,7 +91,7 @@
+ $(top_builddir)/libmp3lame/libmp3lame.la \
+ @FRONTEND_LDADD@
+
+-LDFLAGS = @LDFLAGS@ @FRONTEND_LDFLAGS@ -static
++LDFLAGS = @LDFLAGS@ @FRONTEND_LDFLAGS@
+ LIBOBJS = @LIBOBJS@
+ LIBS = @LIBS@
+ LIBTOOL = @LIBTOOL@
diff --git a/extra/lapack/LICENSE.blas b/extra/lapack/LICENSE.blas
new file mode 100644
index 000000000..79f38386e
--- /dev/null
+++ b/extra/lapack/LICENSE.blas
@@ -0,0 +1,19 @@
+From: http://www.netlib.org/blas/faq.html
+
+ 2) Are there legal restrictions on the use of BLAS reference
+ implementation software?
+
+The reference BLAS is a freely-available software package. It is
+available from netlib via anonymous ftp and the World Wide Web. Thus,
+it can be included in commercial software packages (and has been). We
+only ask that proper credit be given to the authors.
+
+Like all software, it is copyrighted. It is not trademarked, but we do
+ask the following:
+
+If you modify the source for these routines we ask that you change the
+name of the routine and comment the changes made to the original.
+
+We will gladly answer any questions regarding the software. If a
+modification is done, however, it is the responsibility of the person
+who modified the routine to provide support.
diff --git a/extra/lapack/Makefile.blas b/extra/lapack/Makefile.blas
new file mode 100644
index 000000000..46b3eeb79
--- /dev/null
+++ b/extra/lapack/Makefile.blas
@@ -0,0 +1,148 @@
+include ../../make.inc
+
+#######################################################################
+# This is the makefile to create a library for the BLAS.
+# The files are grouped as follows:
+#
+# SBLAS1 -- Single precision real BLAS routines
+# CBLAS1 -- Single precision complex BLAS routines
+# DBLAS1 -- Double precision real BLAS routines
+# ZBLAS1 -- Double precision complex BLAS routines
+#
+# CB1AUX -- Real BLAS routines called by complex routines
+# ZB1AUX -- D.P. real BLAS routines called by d.p. complex
+# routines
+#
+# ALLBLAS -- Auxiliary routines for Level 2 and 3 BLAS
+#
+# SBLAS2 -- Single precision real BLAS2 routines
+# CBLAS2 -- Single precision complex BLAS2 routines
+# DBLAS2 -- Double precision real BLAS2 routines
+# ZBLAS2 -- Double precision complex BLAS2 routines
+#
+# SBLAS3 -- Single precision real BLAS3 routines
+# CBLAS3 -- Single precision complex BLAS3 routines
+# DBLAS3 -- Double precision real BLAS3 routines
+# ZBLAS3 -- Double precision complex BLAS3 routines
+#
+# The library can be set up to include routines for any combination
+# of the four precisions. To create or add to the library, enter make
+# followed by one or more of the precisions desired. Some examples:
+# make single
+# make single complex
+# make single double complex complex16
+# Note that these commands are not safe for parallel builds.
+#
+# Alternatively, the commands
+# make all
+# or
+# make
+# without any arguments creates a library of all four precisions.
+# The name of the library is held in BLASLIB, which is set in the
+# top-level make.inc
+#
+# To remove the object files after the library is created, enter
+# make clean
+# To force the source files to be recompiled, enter, for example,
+# make single FRC=FRC
+#
+#---------------------------------------------------------------------
+#
+# Edward Anderson, University of Tennessee
+# March 26, 1990
+# Susan Ostrouchov, Last updated September 30, 1994
+# ejr, May 2006.
+#
+#######################################################################
+
+all: $(BLASLIB)
+
+#---------------------------------------------------------
+# Comment out the next 6 definitions if you already have
+# the Level 1 BLAS.
+#---------------------------------------------------------
+SBLAS1 = isamax.o sasum.o saxpy.o scopy.o sdot.o snrm2.o \
+ srot.o srotg.o sscal.o sswap.o sdsdot.o srotmg.o srotm.o
+$(SBLAS1): $(FRC)
+
+CBLAS1 = scabs1.o scasum.o scnrm2.o icamax.o caxpy.o ccopy.o \
+ cdotc.o cdotu.o csscal.o crotg.o cscal.o cswap.o csrot.o
+$(CBLAS1): $(FRC)
+
+DBLAS1 = idamax.o dasum.o daxpy.o dcopy.o ddot.o dnrm2.o \
+ drot.o drotg.o dscal.o dsdot.o dswap.o drotmg.o drotm.o
+$(DBLAS1): $(FRC)
+
+ZBLAS1 = dcabs1.o dzasum.o dznrm2.o izamax.o zaxpy.o zcopy.o \
+ zdotc.o zdotu.o zdscal.o zrotg.o zscal.o zswap.o zdrot.o
+$(ZBLAS1): $(FRC)
+
+CB1AUX = isamax.o sasum.o saxpy.o scopy.o snrm2.o sscal.o
+$(CB1AUX): $(FRC)
+
+ZB1AUX = idamax.o dasum.o daxpy.o dcopy.o dnrm2.o dscal.o
+$(ZB1AUX): $(FRC)
+
+#---------------------------------------------------------------------
+# The following line defines auxiliary routines needed by both the
+# Level 2 and Level 3 BLAS. Comment it out only if you already have
+# both the Level 2 and 3 BLAS.
+#---------------------------------------------------------------------
+ALLBLAS = lsame.o xerbla.o xerbla_array.o
+$(ALLBLAS) : $(FRC)
+
+#---------------------------------------------------------
+# Comment out the next 4 definitions if you already have
+# the Level 2 BLAS.
+#---------------------------------------------------------
+SBLAS2 = sgemv.o sgbmv.o ssymv.o ssbmv.o sspmv.o \
+ strmv.o stbmv.o stpmv.o strsv.o stbsv.o stpsv.o \
+ sger.o ssyr.o sspr.o ssyr2.o sspr2.o
+$(SBLAS2): $(FRC)
+
+CBLAS2 = cgemv.o cgbmv.o chemv.o chbmv.o chpmv.o \
+ ctrmv.o ctbmv.o ctpmv.o ctrsv.o ctbsv.o ctpsv.o \
+ cgerc.o cgeru.o cher.o chpr.o cher2.o chpr2.o
+$(CBLAS2): $(FRC)
+
+DBLAS2 = dgemv.o dgbmv.o dsymv.o dsbmv.o dspmv.o \
+ dtrmv.o dtbmv.o dtpmv.o dtrsv.o dtbsv.o dtpsv.o \
+ dger.o dsyr.o dspr.o dsyr2.o dspr2.o
+$(DBLAS2): $(FRC)
+
+ZBLAS2 = zgemv.o zgbmv.o zhemv.o zhbmv.o zhpmv.o \
+ ztrmv.o ztbmv.o ztpmv.o ztrsv.o ztbsv.o ztpsv.o \
+ zgerc.o zgeru.o zher.o zhpr.o zher2.o zhpr2.o
+$(ZBLAS2): $(FRC)
+
+#---------------------------------------------------------
+# Comment out the next 4 definitions if you already have
+# the Level 3 BLAS.
+#---------------------------------------------------------
+SBLAS3 = sgemm.o ssymm.o ssyrk.o ssyr2k.o strmm.o strsm.o
+$(SBLAS3): $(FRC)
+
+CBLAS3 = cgemm.o csymm.o csyrk.o csyr2k.o ctrmm.o ctrsm.o \
+ chemm.o cherk.o cher2k.o
+$(CBLAS3): $(FRC)
+
+DBLAS3 = dgemm.o dsymm.o dsyrk.o dsyr2k.o dtrmm.o dtrsm.o
+$(DBLAS3): $(FRC)
+
+ZBLAS3 = zgemm.o zsymm.o zsyrk.o zsyr2k.o ztrmm.o ztrsm.o \
+ zhemm.o zherk.o zher2k.o
+$(ZBLAS3): $(FRC)
+
+ALLOBJ=$(SBLAS1) $(SBLAS2) $(SBLAS3) $(DBLAS1) $(DBLAS2) $(DBLAS3) \
+ $(CBLAS1) $(CBLAS2) $(CBLAS3) $(ZBLAS1) \
+ $(ZBLAS2) $(ZBLAS3) $(ALLBLAS)
+
+clean:
+ rm -f *.o libblas.a libblas.so*
+
+static: $(ALLOBJ)
+ ar ruv libblas.a $(ALLOBJ)
+ ranlib libblas.a
+
+shared: $(ALLOBJ)
+ cc $(CFLAGS) -shared -Wl,-soname,libblas.so.3 -o libblas.so.3.3.0 $(ALLOBJ) -lm -lgfortran -lc
diff --git a/extra/lapack/Makefile.lapack b/extra/lapack/Makefile.lapack
new file mode 100644
index 000000000..6e1f789c7
--- /dev/null
+++ b/extra/lapack/Makefile.lapack
@@ -0,0 +1,390 @@
+include ../make.inc
+
+#######################################################################
+# This is the makefile to create a library for LAPACK.
+# The files are organized as follows:
+# ALLAUX -- Auxiliary routines called from all precisions
+# ALLXAUX -- Auxiliary routines called from all precisions but
+# only from routines using extra precision.
+# SCLAUX -- Auxiliary routines called from both REAL and COMPLEX
+# DZLAUX -- Auxiliary routines called from both DOUBLE PRECISION
+# and COMPLEX*16
+# SLASRC -- Single precision real LAPACK routines
+# SXLASRC -- Single precision real LAPACK routines using extra
+# precision.
+# CLASRC -- Single precision complex LAPACK routines
+# CXLASRC -- Single precision complex LAPACK routines using extra
+# precision.
+# DLASRC -- Double precision real LAPACK routines
+# DXLASRC -- Double precision real LAPACK routines using extra
+# precision.
+# ZLASRC -- Double precision complex LAPACK routines
+# ZXLASRC -- Double precision complex LAPACK routines using extra
+# precision.
+#
+# The library can be set up to include routines for any combination
+# of the four precisions. To create or add to the library, enter make
+# followed by one or more of the precisions desired. Some examples:
+# make single
+# make single complex
+# make single double complex complex16
+# Alternatively, the command
+# make
+# without any arguments creates a library of all four precisions.
+# The library is called
+# lapack.a
+# and is created at the next higher directory level.
+#
+# To remove the object files after the library is created, enter
+# make clean
+# On some systems, you can force the source files to be recompiled by
+# entering (for example)
+# make single FRC=FRC
+#
+# ***Note***
+# The functions lsame, second, dsecnd, slamch, and dlamch may have
+# to be installed before compiling the library. Refer to the
+# installation guide, LAPACK Working Note 41, for instructions.
+#
+#######################################################################
+
+ALLAUX = ilaenv.o ieeeck.o lsamen.o xerbla.o xerbla_array.o iparmq.o \
+ ilaprec.o ilatrans.o ilauplo.o iladiag.o chla_transtype.o \
+ ../INSTALL/ilaver.o ../INSTALL/lsame.o ../INSTALL/slamch.o
+
+ALLXAUX =
+
+SCLAUX = \
+ sbdsdc.o \
+ sbdsqr.o sdisna.o slabad.o slacpy.o sladiv.o slae2.o slaebz.o \
+ slaed0.o slaed1.o slaed2.o slaed3.o slaed4.o slaed5.o slaed6.o \
+ slaed7.o slaed8.o slaed9.o slaeda.o slaev2.o slagtf.o \
+ slagts.o slamrg.o slanst.o \
+ slapy2.o slapy3.o slarnv.o \
+ slarra.o slarrb.o slarrc.o slarrd.o slarre.o slarrf.o slarrj.o \
+ slarrk.o slarrr.o slaneg.o \
+ slartg.o slaruv.o slas2.o slascl.o \
+ slasd0.o slasd1.o slasd2.o slasd3.o slasd4.o slasd5.o slasd6.o \
+ slasd7.o slasd8.o slasda.o slasdq.o slasdt.o \
+ slaset.o slasq1.o slasq2.o slasq3.o slasq4.o slasq5.o slasq6.o \
+ slasr.o slasrt.o slassq.o slasv2.o spttrf.o sstebz.o sstedc.o \
+ ssteqr.o ssterf.o slaisnan.o sisnan.o \
+ slartgp.o slartgs.o \
+ ../INSTALL/second_$(TIMER).o
+
+DZLAUX = \
+ dbdsdc.o \
+ dbdsqr.o ddisna.o dlabad.o dlacpy.o dladiv.o dlae2.o dlaebz.o \
+ dlaed0.o dlaed1.o dlaed2.o dlaed3.o dlaed4.o dlaed5.o dlaed6.o \
+ dlaed7.o dlaed8.o dlaed9.o dlaeda.o dlaev2.o dlagtf.o \
+ dlagts.o dlamrg.o dlanst.o \
+ dlapy2.o dlapy3.o dlarnv.o \
+ dlarra.o dlarrb.o dlarrc.o dlarrd.o dlarre.o dlarrf.o dlarrj.o \
+ dlarrk.o dlarrr.o dlaneg.o \
+ dlartg.o dlaruv.o dlas2.o dlascl.o \
+ dlasd0.o dlasd1.o dlasd2.o dlasd3.o dlasd4.o dlasd5.o dlasd6.o \
+ dlasd7.o dlasd8.o dlasda.o dlasdq.o dlasdt.o \
+ dlaset.o dlasq1.o dlasq2.o dlasq3.o dlasq4.o dlasq5.o dlasq6.o \
+ dlasr.o dlasrt.o dlassq.o dlasv2.o dpttrf.o dstebz.o dstedc.o \
+ dsteqr.o dsterf.o dlaisnan.o disnan.o \
+ dlartgp.o dlartgs.o \
+ ../INSTALL/dlamch.o ../INSTALL/dsecnd_$(TIMER).o
+
+SLASRC = \
+ sgbbrd.o sgbcon.o sgbequ.o sgbrfs.o sgbsv.o \
+ sgbsvx.o sgbtf2.o sgbtrf.o sgbtrs.o sgebak.o sgebal.o sgebd2.o \
+ sgebrd.o sgecon.o sgeequ.o sgees.o sgeesx.o sgeev.o sgeevx.o \
+ sgegs.o sgegv.o sgehd2.o sgehrd.o sgelq2.o sgelqf.o \
+ sgels.o sgelsd.o sgelss.o sgelsx.o sgelsy.o sgeql2.o sgeqlf.o \
+ sgeqp3.o sgeqpf.o sgeqr2.o sgeqr2p.o sgeqrf.o sgeqrfp.o sgerfs.o \
+ sgerq2.o sgerqf.o sgesc2.o sgesdd.o sgesv.o sgesvd.o sgesvx.o \
+ sgetc2.o sgetf2.o sgetri.o \
+ sggbak.o sggbal.o sgges.o sggesx.o sggev.o sggevx.o \
+ sggglm.o sgghrd.o sgglse.o sggqrf.o \
+ sggrqf.o sggsvd.o sggsvp.o sgtcon.o sgtrfs.o sgtsv.o \
+ sgtsvx.o sgttrf.o sgttrs.o sgtts2.o shgeqz.o \
+ shsein.o shseqr.o slabrd.o slacon.o slacn2.o \
+ slaein.o slaexc.o slag2.o slags2.o slagtm.o slagv2.o slahqr.o \
+ slahrd.o slahr2.o slaic1.o slaln2.o slals0.o slalsa.o slalsd.o \
+ slangb.o slange.o slangt.o slanhs.o slansb.o slansp.o \
+ slansy.o slantb.o slantp.o slantr.o slanv2.o \
+ slapll.o slapmt.o \
+ slaqgb.o slaqge.o slaqp2.o slaqps.o slaqsb.o slaqsp.o slaqsy.o \
+ slaqr0.o slaqr1.o slaqr2.o slaqr3.o slaqr4.o slaqr5.o \
+ slaqtr.o slar1v.o slar2v.o ilaslr.o ilaslc.o \
+ slarf.o slarfb.o slarfg.o slarfgp.o slarft.o slarfx.o slargv.o \
+ slarrv.o slartv.o \
+ slarz.o slarzb.o slarzt.o slaswp.o slasy2.o slasyf.o \
+ slatbs.o slatdf.o slatps.o slatrd.o slatrs.o slatrz.o slatzm.o \
+ slauu2.o slauum.o sopgtr.o sopmtr.o sorg2l.o sorg2r.o \
+ sorgbr.o sorghr.o sorgl2.o sorglq.o sorgql.o sorgqr.o sorgr2.o \
+ sorgrq.o sorgtr.o sorm2l.o sorm2r.o \
+ sormbr.o sormhr.o sorml2.o sormlq.o sormql.o sormqr.o sormr2.o \
+ sormr3.o sormrq.o sormrz.o sormtr.o spbcon.o spbequ.o spbrfs.o \
+ spbstf.o spbsv.o spbsvx.o \
+ spbtf2.o spbtrf.o spbtrs.o spocon.o spoequ.o sporfs.o sposv.o \
+ sposvx.o spotf2.o spotri.o spstrf.o spstf2.o \
+ sppcon.o sppequ.o \
+ spprfs.o sppsv.o sppsvx.o spptrf.o spptri.o spptrs.o sptcon.o \
+ spteqr.o sptrfs.o sptsv.o sptsvx.o spttrs.o sptts2.o srscl.o \
+ ssbev.o ssbevd.o ssbevx.o ssbgst.o ssbgv.o ssbgvd.o ssbgvx.o \
+ ssbtrd.o sspcon.o sspev.o sspevd.o sspevx.o sspgst.o \
+ sspgv.o sspgvd.o sspgvx.o ssprfs.o sspsv.o sspsvx.o ssptrd.o \
+ ssptrf.o ssptri.o ssptrs.o sstegr.o sstein.o sstev.o sstevd.o sstevr.o \
+ sstevx.o ssycon.o ssyev.o ssyevd.o ssyevr.o ssyevx.o ssygs2.o \
+ ssygst.o ssygv.o ssygvd.o ssygvx.o ssyrfs.o ssysv.o ssysvx.o \
+ ssytd2.o ssytf2.o ssytrd.o ssytrf.o ssytri.o ssytri2.o ssytri2x.o \
+ ssyswapr.o ssytrs.o ssytrs2.o ssyconv.o stbcon.o \
+ stbrfs.o stbtrs.o stgevc.o stgex2.o stgexc.o stgsen.o \
+ stgsja.o stgsna.o stgsy2.o stgsyl.o stpcon.o stprfs.o stptri.o \
+ stptrs.o \
+ strcon.o strevc.o strexc.o strrfs.o strsen.o strsna.o strsyl.o \
+ strti2.o strtri.o strtrs.o stzrqf.o stzrzf.o sstemr.o \
+ slansf.o spftrf.o spftri.o spftrs.o ssfrk.o stfsm.o stftri.o stfttp.o \
+ stfttr.o stpttf.o stpttr.o strttf.o strttp.o \
+ sgejsv.o sgesvj.o sgsvj0.o sgsvj1.o \
+ sgeequb.o ssyequb.o spoequb.o sgbequb.o \
+ sbbcsd.o slapmr.o sorbdb.o sorcsd.o
+
+DSLASRC = spotrs.o sgetrs.o spotrf.o sgetrf.o
+
+SXLASRC = sgesvxx.o sgerfsx.o sla_gerfsx_extended.o sla_geamv.o \
+ sla_gercond.o sla_rpvgrw.o ssysvxx.o ssyrfsx.o \
+ sla_syrfsx_extended.o sla_syamv.o sla_syrcond.o sla_syrpvgrw.o \
+ sposvxx.o sporfsx.o sla_porfsx_extended.o sla_porcond.o \
+ sla_porpvgrw.o sgbsvxx.o sgbrfsx.o sla_gbrfsx_extended.o \
+ sla_gbamv.o sla_gbrcond.o sla_gbrpvgrw.o sla_lin_berr.o slarscl2.o \
+ slascl2.o sla_wwaddw.o
+
+CLASRC = \
+ cbdsqr.o cgbbrd.o cgbcon.o cgbequ.o cgbrfs.o cgbsv.o cgbsvx.o \
+ cgbtf2.o cgbtrf.o cgbtrs.o cgebak.o cgebal.o cgebd2.o cgebrd.o \
+ cgecon.o cgeequ.o cgees.o cgeesx.o cgeev.o cgeevx.o \
+ cgegs.o cgegv.o cgehd2.o cgehrd.o cgelq2.o cgelqf.o \
+ cgels.o cgelsd.o cgelss.o cgelsx.o cgelsy.o cgeql2.o cgeqlf.o cgeqp3.o \
+ cgeqpf.o cgeqr2.o cgeqr2p.o cgeqrf.o cgeqrfp.o cgerfs.o \
+ cgerq2.o cgerqf.o cgesc2.o cgesdd.o cgesv.o cgesvd.o \
+ cgesvx.o cgetc2.o cgetf2.o cgetri.o \
+ cggbak.o cggbal.o cgges.o cggesx.o cggev.o cggevx.o cggglm.o \
+ cgghrd.o cgglse.o cggqrf.o cggrqf.o \
+ cggsvd.o cggsvp.o \
+ cgtcon.o cgtrfs.o cgtsv.o cgtsvx.o cgttrf.o cgttrs.o cgtts2.o chbev.o \
+ chbevd.o chbevx.o chbgst.o chbgv.o chbgvd.o chbgvx.o chbtrd.o \
+ checon.o cheev.o cheevd.o cheevr.o cheevx.o chegs2.o chegst.o \
+ chegv.o chegvd.o chegvx.o cherfs.o chesv.o chesvx.o chetd2.o \
+ chetf2.o chetrd.o \
+ chetrf.o chetri.o chetrs.o chetrs2.o chgeqz.o chpcon.o chpev.o chpevd.o \
+ chpevx.o chpgst.o chpgv.o chpgvd.o chpgvx.o chprfs.o chpsv.o \
+ chpsvx.o \
+ chptrd.o chptrf.o chptri.o chptrs.o chsein.o chseqr.o clabrd.o \
+ clacgv.o clacon.o clacn2.o clacp2.o clacpy.o clacrm.o clacrt.o cladiv.o \
+ claed0.o claed7.o claed8.o \
+ claein.o claesy.o claev2.o clags2.o clagtm.o \
+ clahef.o clahqr.o \
+ clahrd.o clahr2.o claic1.o clals0.o clalsa.o clalsd.o clangb.o clange.o clangt.o \
+ clanhb.o clanhe.o \
+ clanhp.o clanhs.o clanht.o clansb.o clansp.o clansy.o clantb.o \
+ clantp.o clantr.o clapll.o clapmt.o clarcm.o claqgb.o claqge.o \
+ claqhb.o claqhe.o claqhp.o claqp2.o claqps.o claqsb.o \
+ claqr0.o claqr1.o claqr2.o claqr3.o claqr4.o claqr5.o \
+ claqsp.o claqsy.o clar1v.o clar2v.o ilaclr.o ilaclc.o \
+ clarf.o clarfb.o clarfg.o clarft.o clarfgp.o \
+ clarfx.o clargv.o clarnv.o clarrv.o clartg.o clartv.o \
+ clarz.o clarzb.o clarzt.o clascl.o claset.o clasr.o classq.o \
+ claswp.o clasyf.o clatbs.o clatdf.o clatps.o clatrd.o clatrs.o clatrz.o \
+ clatzm.o clauu2.o clauum.o cpbcon.o cpbequ.o cpbrfs.o cpbstf.o cpbsv.o \
+ cpbsvx.o cpbtf2.o cpbtrf.o cpbtrs.o cpocon.o cpoequ.o cporfs.o \
+ cposv.o cposvx.o cpotf2.o cpotri.o cpstrf.o cpstf2.o \
+ cppcon.o cppequ.o cpprfs.o cppsv.o cppsvx.o cpptrf.o cpptri.o cpptrs.o \
+ cptcon.o cpteqr.o cptrfs.o cptsv.o cptsvx.o cpttrf.o cpttrs.o cptts2.o \
+ crot.o cspcon.o cspmv.o cspr.o csprfs.o cspsv.o \
+ cspsvx.o csptrf.o csptri.o csptrs.o csrscl.o cstedc.o \
+ cstegr.o cstein.o csteqr.o csycon.o csymv.o \
+ csyr.o csyrfs.o csysv.o csysvx.o csytf2.o csytrf.o csytri.o csytri2.o csytri2x.o \
+ csyswapr.o csytrs.o csytrs2.o csyconv.o ctbcon.o ctbrfs.o ctbtrs.o ctgevc.o ctgex2.o \
+ ctgexc.o ctgsen.o ctgsja.o ctgsna.o ctgsy2.o ctgsyl.o ctpcon.o \
+ ctprfs.o ctptri.o \
+ ctptrs.o ctrcon.o ctrevc.o ctrexc.o ctrrfs.o ctrsen.o ctrsna.o \
+ ctrsyl.o ctrti2.o ctrtri.o ctrtrs.o ctzrqf.o ctzrzf.o cung2l.o cung2r.o \
+ cungbr.o cunghr.o cungl2.o cunglq.o cungql.o cungqr.o cungr2.o \
+ cungrq.o cungtr.o cunm2l.o cunm2r.o cunmbr.o cunmhr.o cunml2.o \
+ cunmlq.o cunmql.o cunmqr.o cunmr2.o cunmr3.o cunmrq.o cunmrz.o \
+ cunmtr.o cupgtr.o cupmtr.o icmax1.o scsum1.o cstemr.o \
+ chfrk.o ctfttp.o clanhf.o cpftrf.o cpftri.o cpftrs.o ctfsm.o ctftri.o \
+ ctfttr.o ctpttf.o ctpttr.o ctrttf.o ctrttp.o \
+ cgeequb.o cgbequb.o csyequb.o cpoequb.o cheequb.o \
+ cbbcsd.o clapmr.o cunbdb.o cuncsd.o
+
+CXLASRC = cgesvxx.o cgerfsx.o cla_gerfsx_extended.o cla_geamv.o \
+ cla_gercond_c.o cla_gercond_x.o cla_rpvgrw.o \
+ csysvxx.o csyrfsx.o cla_syrfsx_extended.o cla_syamv.o \
+ cla_syrcond_c.o cla_syrcond_x.o cla_syrpvgrw.o \
+ cposvxx.o cporfsx.o cla_porfsx_extended.o \
+ cla_porcond_c.o cla_porcond_x.o cla_porpvgrw.o \
+ cgbsvxx.o cgbrfsx.o cla_gbrfsx_extended.o cla_gbamv.o \
+ cla_gbrcond_c.o cla_gbrcond_x.o cla_gbrpvgrw.o \
+ chesvxx.o cherfsx.o cla_herfsx_extended.o cla_heamv.o \
+ cla_hercond_c.o cla_hercond_x.o cla_herpvgrw.o \
+ cla_lin_berr.o clarscl2.o clascl2.o cla_wwaddw.o
+
+ZCLASRC = cpotrs.o cgetrs.o cpotrf.o cgetrf.o
+
+DLASRC = \
+ dgbbrd.o dgbcon.o dgbequ.o dgbrfs.o dgbsv.o \
+ dgbsvx.o dgbtf2.o dgbtrf.o dgbtrs.o dgebak.o dgebal.o dgebd2.o \
+ dgebrd.o dgecon.o dgeequ.o dgees.o dgeesx.o dgeev.o dgeevx.o \
+ dgegs.o dgegv.o dgehd2.o dgehrd.o dgelq2.o dgelqf.o \
+ dgels.o dgelsd.o dgelss.o dgelsx.o dgelsy.o dgeql2.o dgeqlf.o \
+ dgeqp3.o dgeqpf.o dgeqr2.o dgeqr2p.o dgeqrf.o dgeqrfp.o dgerfs.o \
+ dgerq2.o dgerqf.o dgesc2.o dgesdd.o dgesv.o dgesvd.o dgesvx.o \
+ dgetc2.o dgetf2.o dgetrf.o dgetri.o \
+ dgetrs.o dggbak.o dggbal.o dgges.o dggesx.o dggev.o dggevx.o \
+ dggglm.o dgghrd.o dgglse.o dggqrf.o \
+ dggrqf.o dggsvd.o dggsvp.o dgtcon.o dgtrfs.o dgtsv.o \
+ dgtsvx.o dgttrf.o dgttrs.o dgtts2.o dhgeqz.o \
+ dhsein.o dhseqr.o dlabrd.o dlacon.o dlacn2.o \
+ dlaein.o dlaexc.o dlag2.o dlags2.o dlagtm.o dlagv2.o dlahqr.o \
+ dlahrd.o dlahr2.o dlaic1.o dlaln2.o dlals0.o dlalsa.o dlalsd.o \
+ dlangb.o dlange.o dlangt.o dlanhs.o dlansb.o dlansp.o \
+ dlansy.o dlantb.o dlantp.o dlantr.o dlanv2.o \
+ dlapll.o dlapmt.o \
+ dlaqgb.o dlaqge.o dlaqp2.o dlaqps.o dlaqsb.o dlaqsp.o dlaqsy.o \
+ dlaqr0.o dlaqr1.o dlaqr2.o dlaqr3.o dlaqr4.o dlaqr5.o \
+ dlaqtr.o dlar1v.o dlar2v.o iladlr.o iladlc.o \
+ dlarf.o dlarfb.o dlarfg.o dlarfgp.o dlarft.o dlarfx.o \
+ dlargv.o dlarrv.o dlartv.o \
+ dlarz.o dlarzb.o dlarzt.o dlaswp.o dlasy2.o dlasyf.o \
+ dlatbs.o dlatdf.o dlatps.o dlatrd.o dlatrs.o dlatrz.o dlatzm.o dlauu2.o \
+ dlauum.o dopgtr.o dopmtr.o dorg2l.o dorg2r.o \
+ dorgbr.o dorghr.o dorgl2.o dorglq.o dorgql.o dorgqr.o dorgr2.o \
+ dorgrq.o dorgtr.o dorm2l.o dorm2r.o \
+ dormbr.o dormhr.o dorml2.o dormlq.o dormql.o dormqr.o dormr2.o \
+ dormr3.o dormrq.o dormrz.o dormtr.o dpbcon.o dpbequ.o dpbrfs.o \
+ dpbstf.o dpbsv.o dpbsvx.o \
+ dpbtf2.o dpbtrf.o dpbtrs.o dpocon.o dpoequ.o dporfs.o dposv.o \
+ dposvx.o dpotf2.o dpotrf.o dpotri.o dpotrs.o dpstrf.o dpstf2.o \
+ dppcon.o dppequ.o \
+ dpprfs.o dppsv.o dppsvx.o dpptrf.o dpptri.o dpptrs.o dptcon.o \
+ dpteqr.o dptrfs.o dptsv.o dptsvx.o dpttrs.o dptts2.o drscl.o \
+ dsbev.o dsbevd.o dsbevx.o dsbgst.o dsbgv.o dsbgvd.o dsbgvx.o \
+ dsbtrd.o dspcon.o dspev.o dspevd.o dspevx.o dspgst.o \
+ dspgv.o dspgvd.o dspgvx.o dsprfs.o dspsv.o dspsvx.o dsptrd.o \
+ dsptrf.o dsptri.o dsptrs.o dstegr.o dstein.o dstev.o dstevd.o dstevr.o \
+ dstevx.o dsycon.o dsyev.o dsyevd.o dsyevr.o \
+ dsyevx.o dsygs2.o dsygst.o dsygv.o dsygvd.o dsygvx.o dsyrfs.o \
+ dsysv.o dsysvx.o \
+ dsytd2.o dsytf2.o dsytrd.o dsytrf.o dsytri.o dsytri2.o dsytri2x.o \
+ dsyswapr.o dsytrs.o dsytrs2.o dsyconv.o dtbcon.o \
+ dtbrfs.o dtbtrs.o dtgevc.o dtgex2.o dtgexc.o dtgsen.o \
+ dtgsja.o dtgsna.o dtgsy2.o dtgsyl.o dtpcon.o dtprfs.o dtptri.o \
+ dtptrs.o \
+ dtrcon.o dtrevc.o dtrexc.o dtrrfs.o dtrsen.o dtrsna.o dtrsyl.o \
+ dtrti2.o dtrtri.o dtrtrs.o dtzrqf.o dtzrzf.o dstemr.o \
+ dsgesv.o dsposv.o dlag2s.o slag2d.o dlat2s.o \
+ dlansf.o dpftrf.o dpftri.o dpftrs.o dsfrk.o dtfsm.o dtftri.o dtfttp.o \
+ dtfttr.o dtpttf.o dtpttr.o dtrttf.o dtrttp.o \
+ dgejsv.o dgesvj.o dgsvj0.o dgsvj1.o \
+ dgeequb.o dsyequb.o dpoequb.o dgbequb.o \
+ dbbcsd.o dlapmr.o dorbdb.o dorcsd.o
+
+DXLASRC = dgesvxx.o dgerfsx.o dla_gerfsx_extended.o dla_geamv.o \
+ dla_gercond.o dla_rpvgrw.o dsysvxx.o dsyrfsx.o \
+ dla_syrfsx_extended.o dla_syamv.o dla_syrcond.o dla_syrpvgrw.o \
+ dposvxx.o dporfsx.o dla_porfsx_extended.o dla_porcond.o \
+ dla_porpvgrw.o dgbsvxx.o dgbrfsx.o dla_gbrfsx_extended.o \
+ dla_gbamv.o dla_gbrcond.o dla_gbrpvgrw.o dla_lin_berr.o dlarscl2.o \
+ dlascl2.o dla_wwaddw.o
+
+ZLASRC = \
+ zbdsqr.o zgbbrd.o zgbcon.o zgbequ.o zgbrfs.o zgbsv.o zgbsvx.o \
+ zgbtf2.o zgbtrf.o zgbtrs.o zgebak.o zgebal.o zgebd2.o zgebrd.o \
+ zgecon.o zgeequ.o zgees.o zgeesx.o zgeev.o zgeevx.o \
+ zgegs.o zgegv.o zgehd2.o zgehrd.o zgelq2.o zgelqf.o \
+ zgels.o zgelsd.o zgelss.o zgelsx.o zgelsy.o zgeql2.o zgeqlf.o zgeqp3.o \
+ zgeqpf.o zgeqr2.o zgeqr2p.o zgeqrf.o zgeqrfp.o zgerfs.o zgerq2.o zgerqf.o \
+ zgesc2.o zgesdd.o zgesv.o zgesvd.o zgesvx.o zgetc2.o zgetf2.o zgetrf.o \
+ zgetri.o zgetrs.o \
+ zggbak.o zggbal.o zgges.o zggesx.o zggev.o zggevx.o zggglm.o \
+ zgghrd.o zgglse.o zggqrf.o zggrqf.o \
+ zggsvd.o zggsvp.o \
+ zgtcon.o zgtrfs.o zgtsv.o zgtsvx.o zgttrf.o zgttrs.o zgtts2.o zhbev.o \
+ zhbevd.o zhbevx.o zhbgst.o zhbgv.o zhbgvd.o zhbgvx.o zhbtrd.o \
+ zhecon.o zheev.o zheevd.o zheevr.o zheevx.o zhegs2.o zhegst.o \
+ zhegv.o zhegvd.o zhegvx.o zherfs.o zhesv.o zhesvx.o zhetd2.o \
+ zhetf2.o zhetrd.o \
+ zhetrf.o zhetri.o zhetrs.o zhetrs2.o zhgeqz.o zhpcon.o zhpev.o zhpevd.o \
+ zhpevx.o zhpgst.o zhpgv.o zhpgvd.o zhpgvx.o zhprfs.o zhpsv.o \
+ zhpsvx.o \
+ zhptrd.o zhptrf.o zhptri.o zhptrs.o zhsein.o zhseqr.o zlabrd.o \
+ zlacgv.o zlacon.o zlacn2.o zlacp2.o zlacpy.o zlacrm.o zlacrt.o zladiv.o \
+ zlaed0.o zlaed7.o zlaed8.o \
+ zlaein.o zlaesy.o zlaev2.o zlags2.o zlagtm.o \
+ zlahef.o zlahqr.o \
+ zlahrd.o zlahr2.o zlaic1.o zlals0.o zlalsa.o zlalsd.o zlangb.o zlange.o \
+ zlangt.o zlanhb.o \
+ zlanhe.o \
+ zlanhp.o zlanhs.o zlanht.o zlansb.o zlansp.o zlansy.o zlantb.o \
+ zlantp.o zlantr.o zlapll.o zlapmt.o zlaqgb.o zlaqge.o \
+ zlaqhb.o zlaqhe.o zlaqhp.o zlaqp2.o zlaqps.o zlaqsb.o \
+ zlaqr0.o zlaqr1.o zlaqr2.o zlaqr3.o zlaqr4.o zlaqr5.o \
+ zlaqsp.o zlaqsy.o zlar1v.o zlar2v.o ilazlr.o ilazlc.o \
+ zlarcm.o zlarf.o zlarfb.o \
+ zlarfg.o zlarft.o zlarfgp.o \
+ zlarfx.o zlargv.o zlarnv.o zlarrv.o zlartg.o zlartv.o \
+ zlarz.o zlarzb.o zlarzt.o zlascl.o zlaset.o zlasr.o \
+ zlassq.o zlaswp.o zlasyf.o \
+ zlatbs.o zlatdf.o zlatps.o zlatrd.o zlatrs.o zlatrz.o zlatzm.o zlauu2.o \
+ zlauum.o zpbcon.o zpbequ.o zpbrfs.o zpbstf.o zpbsv.o \
+ zpbsvx.o zpbtf2.o zpbtrf.o zpbtrs.o zpocon.o zpoequ.o zporfs.o \
+ zposv.o zposvx.o zpotf2.o zpotrf.o zpotri.o zpotrs.o zpstrf.o zpstf2.o \
+ zppcon.o zppequ.o zpprfs.o zppsv.o zppsvx.o zpptrf.o zpptri.o zpptrs.o \
+ zptcon.o zpteqr.o zptrfs.o zptsv.o zptsvx.o zpttrf.o zpttrs.o zptts2.o \
+ zrot.o zspcon.o zspmv.o zspr.o zsprfs.o zspsv.o \
+ zspsvx.o zsptrf.o zsptri.o zsptrs.o zdrscl.o zstedc.o \
+ zstegr.o zstein.o zsteqr.o zsycon.o zsymv.o \
+ zsyr.o zsyrfs.o zsysv.o zsysvx.o zsytf2.o zsytrf.o zsytri.o zsytri2.o zsytri2x.o \
+ zsyswapr.o zsytrs.o zsytrs2.o zsyconv.o ztbcon.o ztbrfs.o ztbtrs.o ztgevc.o ztgex2.o \
+ ztgexc.o ztgsen.o ztgsja.o ztgsna.o ztgsy2.o ztgsyl.o ztpcon.o \
+ ztprfs.o ztptri.o \
+ ztptrs.o ztrcon.o ztrevc.o ztrexc.o ztrrfs.o ztrsen.o ztrsna.o \
+ ztrsyl.o ztrti2.o ztrtri.o ztrtrs.o ztzrqf.o ztzrzf.o zung2l.o \
+ zung2r.o zungbr.o zunghr.o zungl2.o zunglq.o zungql.o zungqr.o zungr2.o \
+ zungrq.o zungtr.o zunm2l.o zunm2r.o zunmbr.o zunmhr.o zunml2.o \
+ zunmlq.o zunmql.o zunmqr.o zunmr2.o zunmr3.o zunmrq.o zunmrz.o \
+ zunmtr.o zupgtr.o \
+ zupmtr.o izmax1.o dzsum1.o zstemr.o \
+ zcgesv.o zcposv.o zlag2c.o clag2z.o zlat2c.o \
+ zhfrk.o ztfttp.o zlanhf.o zpftrf.o zpftri.o zpftrs.o ztfsm.o ztftri.o \
+ ztfttr.o ztpttf.o ztpttr.o ztrttf.o ztrttp.o \
+ zgeequb.o zgbequb.o zsyequb.o zpoequb.o zheequb.o \
+ zbbcsd.o zlapmr.o zunbdb.o zuncsd.o
+
+ZXLASRC = zgesvxx.o zgerfsx.o zla_gerfsx_extended.o zla_geamv.o \
+ zla_gercond_c.o zla_gercond_x.o zla_rpvgrw.o zsysvxx.o zsyrfsx.o \
+ zla_syrfsx_extended.o zla_syamv.o zla_syrcond_c.o zla_syrcond_x.o \
+ zla_syrpvgrw.o zposvxx.o zporfsx.o zla_porfsx_extended.o \
+ zla_porcond_c.o zla_porcond_x.o zla_porpvgrw.o zgbsvxx.o zgbrfsx.o \
+ zla_gbrfsx_extended.o zla_gbamv.o zla_gbrcond_c.o zla_gbrcond_x.o \
+ zla_gbrpvgrw.o zhesvxx.o zherfsx.o zla_herfsx_extended.o \
+ zla_heamv.o zla_hercond_c.o zla_hercond_x.o zla_herpvgrw.o \
+ zla_lin_berr.o zlarscl2.o zlascl2.o zla_wwaddw.o
+
+all: ../$(LAPACKLIB)
+
+ifdef USEXBLAS
+ALLXOBJ=$(SXLASRC) $(DXLASRC) $(CXLASRC) $(ZXLASRC) $(ALLXAUX)
+endif
+
+ALLOBJ=$(SLASRC) $(DLASRC) $(DSLASRC) $(CLASRC) $(ZLASRC) $(ZCLASRC) \
+ $(SCLAUX) $(DZLAUX) $(ALLAUX)
+
+clean:
+ rm -f *.o liblapack*
+
+static: $(ALLOBJ) $(ALLXOBJ)
+ ar ruv liblapack.a $(ALLOBJ)
+ ranlib liblapack.a
+
+shared: $(ALLOBJ) $(ALLXOBJ)
+ cc $(CFLAGS) -shared -Wl,-soname,liblapack.so.3 -o liblapack.so.3.3.0 $(ALLOBJ) -L.. -lblas -lm -lgfortran -lc
+
diff --git a/extra/lapack/PKGBUILD b/extra/lapack/PKGBUILD
new file mode 100644
index 000000000..6781a930e
--- /dev/null
+++ b/extra/lapack/PKGBUILD
@@ -0,0 +1,84 @@
+# $Id: PKGBUILD 108944 2011-02-05 09:11:28Z ronald $
+# Maintainer: Ronald van Haren <ronald.archlinux.org>
+# Contributor: Jan de Groot <jgc@archlinux.org>
+# Contributor: damir <damir@archlinux.org>
+# Contributor: Jason Taylor <jftaylor21@gmail.com>
+
+pkgbase=lapack
+pkgname=('blas' 'lapack')
+pkgver=3.3.0
+pkgrel=2
+url="http://www.netlib.org/lapack"
+makedepends=('gcc-fortran')
+arch=('i686' 'x86_64')
+license=("custom")
+source=(http://www.netlib.org/${pkgbase}/${pkgbase}-${pkgver}.tgz
+ lapack-3.1.1-make.inc.patch
+ Makefile.blas
+ Makefile.lapack
+ LICENSE.blas)
+md5sums=('84213fca70936cc5f1b59a7b1bf71697'
+ 'cdfcb9d9b162c18d9acbf63c5579ea26'
+ '748440ae656402241d053dadb14425ee'
+ 'aa359e9b7cc717fb1230cfbb4e1d206b'
+ '38b6acb8ed5691d25863319d30a8b365')
+
+build() {
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ patch -Np1 -i "${srcdir}/lapack-3.1.1-make.inc.patch"
+ cp -f INSTALL/make.inc.gfortran make.inc
+ cp -f "${srcdir}/Makefile.blas" BLAS/SRC/Makefile
+ cp -f "${srcdir}/Makefile.lapack" SRC/Makefile
+
+ export FC=gfortran
+
+ pushd BLAS/SRC
+ make clean
+ FFLAGS="${CFLAGS/-O?/-O0}" make dcabs1.o
+ FFLAGS="${CFLAGS} -fPIC" CFLAGS="${CFLAGS} -fPIC" make shared
+ cp libblas.so.${pkgver} "${srcdir}/${pkgbase}-${pkgver}/"
+ popd
+ ln -s libblas.so.${pkgver} libblas.so
+
+ pushd INSTALL
+ make clean
+ make NOOPT="${CFLAGS/-O?/-O0} -fPIC" OPTS="${CFLAGS} -fPIC"
+ popd
+ # make sure no files with '_', *vxx.o *vfx.o and *2.O as defined in *ASRC
+ # are in OBJS
+ pushd SRC
+ make clean
+
+ make FFLAGS="${CFLAGS} -fPIC" CFLAGS="${CFLAGS} -fPIC" shared
+ cp liblapack.so.${pkgver} "${srcdir}/${pkgbase}-${pkgver}/"
+ popd
+}
+
+package_blas() {
+ pkgdesc="Basic Linear Algebra Subprograms"
+ depends=('gcc-libs')
+ options=('force')
+ install -m755 -d "${pkgdir}/usr/lib"
+ install -m755 "${srcdir}/${pkgbase}-${pkgver}/libblas.so.${pkgver}" \
+ "${pkgdir}/usr/lib/"
+ ln -sf libblas.so.${pkgver} "${pkgdir}/usr/lib/libblas.so"
+ ln -sf libblas.so.${pkgver} "${pkgdir}/usr/lib/libblas.so.3"
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/blas"
+ install -m644 "${srcdir}/LICENSE.blas" \
+ "${pkgdir}/usr/share/licenses/blas/LICENSE"
+}
+
+package_lapack() {
+ pkgdesc="Linear Algebra PACKage"
+ depends=("blas=${pkgver}")
+ install -m755 -d "${pkgdir}/usr/lib"
+ install -m755 "${srcdir}/${pkgbase}-${pkgver}/liblapack.so.${pkgver}" \
+ "${pkgdir}/usr/lib/"
+ ln -sf liblapack.so.${pkgver} "${pkgdir}/usr/lib/liblapack.so"
+ ln -sf liblapack.so.${pkgver} "${pkgdir}/usr/lib/liblapack.so.3"
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/lapack"
+ install -m644 "${srcdir}/${pkgbase}-${pkgver}/LICENSE" \
+ "${pkgdir}/usr/share/licenses/lapack/"
+}
diff --git a/extra/lapack/lapack-3.1.1-make.inc.patch b/extra/lapack/lapack-3.1.1-make.inc.patch
new file mode 100644
index 000000000..c807ccbf9
--- /dev/null
+++ b/extra/lapack/lapack-3.1.1-make.inc.patch
@@ -0,0 +1,23 @@
+--- lapack-3.1.1/INSTALL/make.inc.gfortran.BAD 2007-05-25 15:34:55.000000000 -0500
++++ lapack-3.1.1/INSTALL/make.inc.gfortran 2007-05-25 15:35:51.000000000 -0500
+@@ -8,7 +8,7 @@ SHELL = /bin/sh
+ #
+ # The machine (platform) identifier to append to the library names
+ #
+-PLAT = _LINUX
++PLAT =
+ #
+ # Modify the FORTRAN and OPTS definitions to refer to the
+ # compiler and desired compiler options for your machine. NOOPT
+@@ -17,9 +17,9 @@ PLAT = _LINUX
+ # desired load options for your machine.
+ #
+ FORTRAN = gfortran
+-OPTS = -O2
++#OPTS = -O2
+ DRVOPTS = $(OPTS)
+-NOOPT = -O0
++NOOPT =
+ LOADER = gfortran
+ LOADOPTS =
+ #
diff --git a/extra/latex2html/PKGBUILD b/extra/latex2html/PKGBUILD
new file mode 100644
index 000000000..74ab7b66e
--- /dev/null
+++ b/extra/latex2html/PKGBUILD
@@ -0,0 +1,45 @@
+# $Id: PKGBUILD 20302 2008-12-02 10:44:29Z ronald $
+# Maintainer: Ronald van Haren <ronald.archlinux.org>
+# Contributor: Jochem Kossen <j.kossen@home.nl>
+# Contributor: Jason Chu <jason.archlinux.org>
+
+pkgname=latex2html
+pkgver=2008
+pkgrel=1
+pkgdesc="latex2html is a convertor written in Perl that converts LaTeX documents to HTML."
+arch=('i686' 'x86_64')
+url="http://saftsack.fs.uni-bayreuth.de/~latex2ht/"
+depends=('perl' 'ghostscript' 'texlive-core' 'libpng' 'giflib' 'netpbm')
+install=$pkgname.install
+license=('GPL2')
+source=(http://saftsack.fs.uni-bayreuth.de/~latex2ht/current/$pkgname-$pkgver.tar.gz)
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ ./configure --prefix=$startdir/pkg/usr \
+ --shlibdir=$startdir/pkg/usr/lib/$pkgname \
+ --with-texpath=$startdir/pkg/usr/share/texmf/tex/latex/html \
+ --enable-wrapper \
+ --enable-gif \
+ --enable-png || return 1
+
+ make || return 1
+ make install || return 1
+
+ find $startdir/pkg/usr -type f -print | while read filename; do
+ if [ ! -z '`grep "$startdir" "$filename"`' ]; then
+ mv $filename $filename.mkpkg
+ sed -e "s#$pkgdir##g" -e "s#$srcdir##g" < $filename.mkpkg > $filename
+ rm $filename.mkpkg
+ fi
+ done
+
+ # move files to FHS location
+ mv $startdir/pkg/usr/cfgcache.pm $startdir/pkg/usr/l2hconf.pm $startdir/pkg/usr/lib/$pkgname/
+
+ # set correct permission on executables
+ chmod 755 $pkgdir/usr/bin/pstoimg \
+ $pkgdir/usr/bin/$pkgname \
+ $pkgdir/usr/bin/texexpand
+
+}
diff --git a/extra/latex2html/latex2html.install b/extra/latex2html/latex2html.install
new file mode 100644
index 000000000..afbeeb50c
--- /dev/null
+++ b/extra/latex2html/latex2html.install
@@ -0,0 +1,15 @@
+post_install() {
+ echo ">>> texlive: updating the filename database..."
+ texconfig-sys rehash
+}
+
+post_upgrade() {
+ echo ">>> texlive: updating the filename database..."
+ texconfig-sys rehash
+}
+
+post_remove() {
+ echo ">>> texlive: updating the filename database..."
+ texconfig-sys rehash
+}
+
diff --git a/extra/latex2rtf/PKGBUILD b/extra/latex2rtf/PKGBUILD
new file mode 100644
index 000000000..9d2e25726
--- /dev/null
+++ b/extra/latex2rtf/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id: PKGBUILD 66768 2010-02-01 11:56:05Z giovanni $
+# Maintainer: Jason Chu <jason@archlinux.org>
+# Contributor: John Proctor <jproctor@prium.net>
+
+pkgname=latex2rtf
+pkgver=2.0.0
+pkgrel=1
+pkgdesc="LaTeX to RTF converter"
+arch=('i686' 'x86_64')
+url="http://latex2rtf.sourceforge.net/"
+license=('GPL')
+depends=('glibc' 'imagemagick' 'ghostscript')
+source=(http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.gz)
+md5sums=('39611b6dbb5ce78b48c7695f3fcafb88')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ make PREFIX=/usr || return 1
+ make PREFIX=${pkgdir}/usr MAN_INSTALL=${pkgdir}/usr/share/man/man1 install || return 1
+ sed -i -e 's|error "no input file specified"| echo "error: no input file specified"|' ${pkgdir}/usr/bin/latex2png
+}
diff --git a/extra/lbreakout2/PKGBUILD b/extra/lbreakout2/PKGBUILD
new file mode 100644
index 000000000..2744d3bd1
--- /dev/null
+++ b/extra/lbreakout2/PKGBUILD
@@ -0,0 +1,44 @@
+# $Id: PKGBUILD 113510 2011-03-09 01:34:28Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=lbreakout2
+pkgver=2.6.3
+pkgrel=1
+pkgdesc="A breakout game with nice effects, graphics, and sounds"
+arch=('i686' 'x86_64')
+url="http://lgames.sourceforge.net"
+license=('GPL')
+depends=('sdl_mixer' 'libpng')
+backup=('var/games/lbreakout2/lbreakout2.hscr')
+source=(http://downloads.sourceforge.net/lgames/${pkgname}-${pkgver/_/-}.tar.gz
+ lbreakout2.desktop
+ lbreakout2.png)
+md5sums=('43900187bc935475cd6489569cd2230a'
+ '14cd34a72a8f4e3b8f385f9023625241'
+ '94e2fa393eb2a7d4494641dec580573b')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver/_/-}
+
+ ./configure --prefix=/usr \
+ --localstatedir=/var/games/lbreakout2
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver/_/-}
+
+ make DESTDIR=${pkgdir}/ doc_dir=/usr/share/doc install
+
+ chmod -R 755 ${pkgdir}/usr
+ chown root:games ${pkgdir}/var/games
+ chmod 775 ${pkgdir}/var/games
+ chown root:games ${pkgdir}/var/games/lbreakout2
+ chmod 755 ${pkgdir}/var/games/lbreakout2
+ chown root:games ${pkgdir}/var/games/lbreakout2/lbreakout2.hscr
+ chmod 775 ${pkgdir}/var/games/lbreakout2/lbreakout2.hscr
+
+ install -Dm644 ${srcdir}/lbreakout2.png ${pkgdir}/usr/share/pixmaps/lbreakout2.png
+ install -Dm644 ${srcdir}/lbreakout2.desktop ${pkgdir}/usr/share/applications/lbreakout2.desktop
+}
diff --git a/extra/lbreakout2/lbreakout2.desktop b/extra/lbreakout2/lbreakout2.desktop
new file mode 100644
index 000000000..c8ef945da
--- /dev/null
+++ b/extra/lbreakout2/lbreakout2.desktop
@@ -0,0 +1,10 @@
+[Desktop Entry]
+Type=Application
+Encoding=UTF-8
+Name=Linux Breakout 2
+Comment=Breakout and Arkanoid style arcade game
+Icon=/usr/share/pixmaps/lbreakout2.png
+TryExec=lbreakout2
+Exec=lbreakout2
+Terminal=false
+Categories=Application;Game;
diff --git a/extra/lbreakout2/lbreakout2.png b/extra/lbreakout2/lbreakout2.png
new file mode 100644
index 000000000..f9541e184
--- /dev/null
+++ b/extra/lbreakout2/lbreakout2.png
Binary files differ
diff --git a/extra/lcab/PKGBUILD b/extra/lcab/PKGBUILD
new file mode 100644
index 000000000..bebea4c52
--- /dev/null
+++ b/extra/lcab/PKGBUILD
@@ -0,0 +1,21 @@
+# $Id: PKGBUILD 68001 2010-02-10 12:31:34Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Damir Perisa <damir.perisa@bluewin.ch>
+
+pkgname=lcab
+pkgver=1.0b12
+pkgrel=2
+pkgdesc="A program to make Microsoft cabinet files"
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://freshmeat.net/projects/lcab/"
+depends=('glibc')
+source=(ftp://ftp.archlinux.org/other/${pkgname}/$pkgname-$pkgver.tar.gz)
+md5sums=('9403e08f53fcf262e25641a9b900d4de')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ make || return 1
+ install -D -m755 lcab "${pkgdir}/usr/bin/lcab" || return 1
+}
diff --git a/extra/lcms/PKGBUILD b/extra/lcms/PKGBUILD
new file mode 100644
index 000000000..effc73c13
--- /dev/null
+++ b/extra/lcms/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 87526 2010-08-15 13:47:09Z ibiru $
+# Maintainer: Tobias Kieslich <neri@archlinux.org>
+# Contributor: Ben <contrasutra@myrealbox.com>
+
+pkgname=lcms
+pkgver=1.19
+pkgrel=1
+pkgdesc="Lightweight color management development library/engine"
+arch=(i686 x86_64)
+license=('custom')
+depends=('libtiff>=3.9.4')
+url="http://www.littlecms.com"
+options=('!libtool')
+source=(http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.gz)
+md5sums=('8af94611baf20d9646c7c2c285859818')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr
+ make
+ make DESTDIR=${pkgdir} install
+ install -Dm 644 COPYING \
+ ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+}
diff --git a/extra/leafpad/PKGBUILD b/extra/leafpad/PKGBUILD
new file mode 100644
index 000000000..179133ff4
--- /dev/null
+++ b/extra/leafpad/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 110473 2011-02-19 16:41:59Z ibiru $
+# Maintainer: Aaron Griffin <aaron@archlinux.org>
+# Contributor: Link Dupont <link@subpop.net>
+
+pkgname=leafpad
+pkgver=0.8.18.1
+pkgrel=2
+pkgdesc="A notepad clone for GTK+ 2.0"
+arch=('i686' 'x86_64')
+url="http://tarot.freeshell.org/leafpad/"
+license=('GPL')
+depends=('gtk2' 'desktop-file-utils')
+makedepends=('intltool')
+install=leafpad.install
+source=(http://download.savannah.gnu.org/releases/${pkgname}/${pkgname}-${pkgver}.tar.gz)
+md5sums=('254a72fc67505e3aa52884c729cd7b97')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --enable-chooser
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+ echo 'StartupNotify=true' >> "${pkgdir}/usr/share/applications/leafpad.desktop"
+}
diff --git a/extra/leafpad/leafpad.install b/extra/leafpad/leafpad.install
new file mode 100644
index 000000000..4d4a283db
--- /dev/null
+++ b/extra/leafpad/leafpad.install
@@ -0,0 +1,12 @@
+post_install() {
+ update-desktop-database -q
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/extra/lensfun/PKGBUILD b/extra/lensfun/PKGBUILD
new file mode 100644
index 000000000..965b46875
--- /dev/null
+++ b/extra/lensfun/PKGBUILD
@@ -0,0 +1,21 @@
+# $Id: PKGBUILD 81449 2010-05-30 16:39:15Z tpowa $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=lensfun
+pkgver=0.2.5
+pkgrel=1
+pkgdesc="Database of photographic lenses and a library that allows advanced access to the database"
+arch=(i686 x86_64)
+url="http://lensfun.berlios.de/"
+license=('LGPL3')
+depends=('glibc' 'glib2')
+makedepends=('python' 'libpng')
+source=(http://download.berlios.de/${pkgname}/${pkgname}-${pkgver}.tar.bz2)
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --libdir=/usr/lib || return 1
+ make all || return 1
+ make INSTALL_PREFIX="$pkgdir" install || return 1
+}
+md5sums=('a10438dffae68a5988fc54b0393a3755')
diff --git a/extra/lensfun/lensfun-0.2.3-as-needed.patch b/extra/lensfun/lensfun-0.2.3-as-needed.patch
new file mode 100644
index 000000000..12287dba2
--- /dev/null
+++ b/extra/lensfun/lensfun-0.2.3-as-needed.patch
@@ -0,0 +1,13 @@
+diff -ru lensfun-0.2.3.orig/build/mak/compiler/gcc.mak lensfun-0.2.3/build/mak/compiler/gcc.mak
+--- lensfun-0.2.3.orig/build/mak/compiler/gcc.mak 2009-03-15 02:42:40.000000000 +0100
++++ lensfun-0.2.3/build/mak/compiler/gcc.mak 2009-03-15 02:43:37.000000000 +0100
+@@ -71,7 +71,7 @@
+ endef
+
+ LINK.GCC.AR = $(GCC.AR) $(GCC.ARFLAGS) $@ $^
+-LINK.GCC.EXEC = $(GCC.LD) -o $@ $(GCC.LDFLAGS) $(LDFLAGS) $1 $^ $(GCC.LDFLAGS.LIBS) $(LDFLAGS.LIBS) $2
++LINK.GCC.EXEC = $(GCC.LD) $(LDFLAGS) $^ $2 $(GCC.LDFLAGS.LIBS) $(LDFLAGS.LIBS) $(GCC.LDFLAGS) $1 -o $@
+ define LINK.GCC.SO
+ $(GCC.LD) -o $@.$(SHARED.$3) -Wl,"-soname=$(notdir $@).$(basename $(basename $(SHARED.$3)))" $(GCC.LDFLAGS.SHARED) $(GCC.LDFLAGS) $(LDFLAGS) $1 $^ $(GCC.LDFLAGS.LIBS) $(LDFLAGS.LIBS) $2
+ ln -fs $(notdir $@.$(SHARED.$3)) $@.$(basename $(basename $(SHARED.$3)))
+Only in lensfun-0.2.3/out/posix/release: deps
diff --git a/extra/lensfun/lensfun-0.2.3-glibc-2.10.patch b/extra/lensfun/lensfun-0.2.3-glibc-2.10.patch
new file mode 100644
index 000000000..41a29563a
--- /dev/null
+++ b/extra/lensfun/lensfun-0.2.3-glibc-2.10.patch
@@ -0,0 +1,11 @@
+--- lensfun-0.2.3.orig/tools/makedep/cppsetup.cpp 2009-07-04 21:20:49.000000000 +0200
++++ lensfun-0.2.3/tools/makedep/cppsetup.cpp 2009-07-04 22:19:18.000000000 +0200
+@@ -195,7 +195,7 @@
+ }
+ while (s);
+
+- eol = strchr (var, 0);
++ eol = (char *)strchr (var, 0);
+
+ // Skip parentheses which Microsoft likes so much
+ if (*var == '(')
diff --git a/extra/lesstif/040_fedora_XxxxProperty-64bit.diff b/extra/lesstif/040_fedora_XxxxProperty-64bit.diff
new file mode 100644
index 000000000..6149877fc
--- /dev/null
+++ b/extra/lesstif/040_fedora_XxxxProperty-64bit.diff
@@ -0,0 +1,20 @@
+Description: Copy/paste segfaults on i386
+Forwarded: yes
+Author: Hans de Goede <hdegoede@redhat.com>
+diff -up lesstif-0.95.2/lib/Xm-2.1/CutPaste.c.long64 lesstif-0.95.2/lib/Xm-2.1/CutPaste.c
+--- lesstif-0.95.2/lib/Xm-2.1/CutPaste.c.long64 2007-09-12 22:05:58.000000000 +0200
++++ lesstif-0.95.2/lib/Xm-2.1/CutPaste.c 2009-07-28 11:32:20.000000000 +0200
+@@ -1028,9 +1028,11 @@ _XmClipboardReplaceItem(Display *display
+ /* XChangeProperty expects a buffer of longs when receiving 32 bits
+ data, MEUHH */
+ if (sizeof(long) != 4)
++ {
+ convert_buf = XtMalloc(len * sizeof(long));
+- for (i = 0; i < len; i++)
+- convert_buf[i] = data[i];
++ for (i = 0; i < len; i++)
++ convert_buf[i] = data[i];
++ }
+ break;
+
+ case 16:
diff --git a/extra/lesstif/ChangeLog b/extra/lesstif/ChangeLog
new file mode 100644
index 000000000..c600228c3
--- /dev/null
+++ b/extra/lesstif/ChangeLog
@@ -0,0 +1,19 @@
+2010-01-05 Eric Belanger <eric@archlinux.org>
+
+ * lesstif 0.95.2-2
+ * Fixed segmentation fault when doing copy/paste on i686 (close FS#17712)
+
+2009-12-30 Eric Belanger <eric@archlinux.org>
+
+ * lesstif 0.95.2-1
+ * Upstream update
+ * Added docs
+
+2008-12-08 Eric Belanger <eric@archlinux.org>
+
+ * lesstif 0.95.0-3
+ * Added license
+ * Updated options syntax
+ * Added url
+ * FHS man pages
+ * Added ChangeLog
diff --git a/extra/lesstif/LICENSE b/extra/lesstif/LICENSE
new file mode 100644
index 000000000..1f5a0a138
--- /dev/null
+++ b/extra/lesstif/LICENSE
@@ -0,0 +1,26 @@
+/*****************************************************************************/
+/** Copyright 1988 by Evans & Sutherland Computer Corporation, **/
+/** Salt Lake City, Utah **/
+/** Portions Copyright 1989 by the Massachusetts Institute of Technology **/
+/** Cambridge, Massachusetts **/
+/** **/
+/** All Rights Reserved **/
+/** **/
+/** Permission to use, copy, modify, and distribute this software and **/
+/** its documentation for any purpose and without fee is hereby **/
+/** granted, provided that the above copyright notice appear in all **/
+/** copies and that both that copyright notice and this permis- **/
+/** sion notice appear in supporting documentation, and that the **/
+/** names of Evans & Sutherland and M.I.T. not be used in advertising **/
+/** in publicity pertaining to distribution of the software without **/
+/** specific, written prior permission. **/
+/** **/
+/** EVANS & SUTHERLAND AND M.I.T. DISCLAIM ALL WARRANTIES WITH REGARD **/
+/** TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANT- **/
+/** ABILITY AND FITNESS, IN NO EVENT SHALL EVANS & SUTHERLAND OR **/
+/** M.I.T. BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAM- **/
+/** AGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA **/
+/** OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER **/
+/** TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE **/
+/** OR PERFORMANCE OF THIS SOFTWARE. **/
+/*****************************************************************************/
diff --git a/extra/lesstif/PKGBUILD b/extra/lesstif/PKGBUILD
new file mode 100644
index 000000000..be09dc29f
--- /dev/null
+++ b/extra/lesstif/PKGBUILD
@@ -0,0 +1,42 @@
+# $Id: PKGBUILD 62257 2010-01-05 21:48:01Z eric $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+# Contributor: John Proctor <jproctor@prium.net>
+
+pkgname=lesstif
+pkgver=0.95.2
+pkgrel=2
+pkgdesc="LGPL'd re-implementation of Motif"
+arch=('i686' 'x86_64')
+url="http://www.lesstif.org/"
+license=('LGPL' 'MIT')
+depends=('freetype2' 'libxt' 'libxp')
+options=('!libtool')
+source=(http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.bz2 \
+ LICENSE 040_fedora_XxxxProperty-64bit.diff)
+md5sums=('754187dbac09fcf5d18296437e72a32f' 'b1f320192a9154f72d83e9d3d5a25a2f'\
+ '30e2c0babc84696af089d55cb9cb2908')
+sha1sums=('b894e544d529a235a6a665d48ca94a465f44a4e5' '5d7f38555417cb617d7d5b7e41a93af8430dc638'\
+ '85412aba25058110db8da99da4a2c5ab44330467')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -p1 < ../040_fedora_XxxxProperty-64bit.diff || return 1
+ ./configure --prefix=/usr --mandir=/usr/share/man --docdir=/usr/share/doc \
+ --enable-production --enable-nonstandard-conversions --enable-editres \
+ --with-xdnd --enable-build-21 --disable-debug --enable-static || return 1
+
+# fix linkage against already installed version
+ perl -pi -e 's/^(hardcode_into_libs)=.*/$1=no/' libtool || return 1
+
+ make || return 1
+
+# fix linkage against already installed version
+ for f in `find . -name \*.la -type f` ; do
+ perl -pi -e 's/^(relink_command=.*)/# $1/' $f || return 1
+ done
+
+ make -C lib/Mrm-2.1 || return 1
+ make -C lib/Mrm-2.1 DESTDIR="${pkgdir}" install || return 1
+ make appdir=/usr/share/X11/app-defaults rootdir=/usr/share/LessTif DESTDIR="${pkgdir}" install || return 1
+ install -D -m644 ../LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" || return 1
+}
diff --git a/extra/lftp/PKGBUILD b/extra/lftp/PKGBUILD
new file mode 100644
index 000000000..93d62cd5c
--- /dev/null
+++ b/extra/lftp/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 117281 2011-03-30 16:49:02Z andyrtr $
+# Maintainer: Andreas Radke <andyrtr@archlinux.org>
+# Contributor: Aaron Griffin <aaron@archlinux.org>
+
+pkgname=lftp
+pkgver=4.2.1
+pkgrel=1
+pkgdesc="Sophisticated command line based FTP client"
+arch=('i686' 'x86_64')
+license=('GPL3')
+depends=('gcc-libs' 'readline>=6.0' "gnutls>=2.8.6" "expat>=2.0.1-4" 'sh')
+optdepends=('perl: needed for convert-netscape-cookies and verify-file')
+makedepends=('autoconf')
+url="http://lftp.yar.ru/"
+backup=('etc/lftp.conf')
+source=(http://ftp.yars.free.net/pub/source/lftp/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('244c52690afbc2bdb6ec6af9496434b3')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr --with-gnutls \
+ --without-openssl --disable-static
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+ rm -rf ${pkgdir}/usr/lib
+} \ No newline at end of file
diff --git a/extra/libao/PKGBUILD b/extra/libao/PKGBUILD
new file mode 100644
index 000000000..8107c96b2
--- /dev/null
+++ b/extra/libao/PKGBUILD
@@ -0,0 +1,42 @@
+# $Id: PKGBUILD 110917 2011-02-23 07:11:30Z schiv $
+# Maintainer:
+# Contributor: dorphell <dorphell@archlinux.org>
+
+pkgname=libao
+pkgver=1.1.0
+pkgrel=1
+pkgdesc="A cross-platform audio output library and plugins"
+url="http://www.xiph.org/ao"
+arch=('i686' 'x86_64')
+license=('GPL')
+depends=('glibc' 'alsa-lib')
+makedepends=('libpulse')
+backup=('etc/libao.conf')
+options=('!libtool')
+conflicts=('libao-pulse')
+provides=('libao-pulse=$pkgver-$pkgrel')
+replaces=('libao-pulse')
+source=("http://downloads.xiph.org/releases/ao/${pkgname}-${pkgver}.tar.gz"
+ 'libao.conf')
+md5sums=('2b2508c29bc97e4dc218fa162cf883c8'
+ '3ae8f3e3f1492210b3519af0f1f3c572')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ ./configure --prefix=/usr \
+ --enable-alsa09-mmap \
+ --enable-pulseaudio
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ make DESTDIR="$pkgdir/" install
+
+ # Add conf file
+ install -Dm644 "$srcdir/libao.conf" "$pkgdir/etc/libao.conf"
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/extra/libao/libao.conf b/extra/libao/libao.conf
new file mode 100644
index 000000000..c4eb5cdc3
--- /dev/null
+++ b/extra/libao/libao.conf
@@ -0,0 +1 @@
+default_driver=alsa
diff --git a/extra/libart-lgpl/PKGBUILD b/extra/libart-lgpl/PKGBUILD
new file mode 100644
index 000000000..c7cdbfeac
--- /dev/null
+++ b/extra/libart-lgpl/PKGBUILD
@@ -0,0 +1,20 @@
+# $Id: PKGBUILD 75440 2010-04-01 15:34:56Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+pkgname=libart-lgpl
+pkgver=2.3.21
+pkgrel=1
+pkgdesc="A library for high-performance 2D graphics"
+url="http://www.levien.com/libart/"
+arch=(i686 x86_64)
+license=('LGPL')
+depends=('glibc')
+source=(http://ftp.gnome.org/pub/GNOME/sources/libart_lgpl/2.3/libart_lgpl-${pkgver}.tar.bz2)
+options=('!libtool')
+sha256sums=('fdc11e74c10fc9ffe4188537e2b370c0abacca7d89021d4d303afdf7fd7476fa')
+
+build() {
+ cd ${startdir}/src/libart_lgpl-${pkgver}
+ ./configure --prefix=/usr || return 1
+ make || return 1
+ make DESTDIR=${startdir}/pkg install || return 1
+}
diff --git a/extra/libart-lgpl/art_misc.h-cplusplus.patch b/extra/libart-lgpl/art_misc.h-cplusplus.patch
new file mode 100644
index 000000000..dea8eb0a0
--- /dev/null
+++ b/extra/libart-lgpl/art_misc.h-cplusplus.patch
@@ -0,0 +1,35 @@
+Index: art_misc.h
+===================================================================
+--- art_misc.h (revision 277)
++++ art_misc.h (working copy)
+@@ -34,9 +34,15 @@
+ #include <libart_lgpl/art_config.h>
+ #endif
+
++#ifdef __cplusplus
++extern "C" {
++#endif
+ void *art_alloc(size_t size);
+ void art_free(void *ptr);
+ void *art_realloc(void *ptr, size_t size);
++#ifdef __cplusplus
++}
++#endif /* __cplusplus */
+
+ /* These aren't, strictly speaking, configuration macros, but they're
+ damn handy to have around, and may be worth playing with for
+Index: ChangeLog
+===================================================================
+--- ChangeLog (revision 277)
++++ ChangeLog (working copy)
+@@ -1,3 +1,10 @@
++2007-03-01 Frederic Crozat <fcrozat@mandriva.com>
++
++ reviewed by: Dom Lachowicz <cinamod@hotmail.com>
++
++ * art_misc.h: Fix header when included in C++.
++ Patch from Goetz Waschk and Laurent Montel.
++
+ 2007-02-28 Kjartan Maraas <kmaraas@gnome.org>
+
+ configure.in: Release 2.3.19
diff --git a/extra/libass/PKGBUILD b/extra/libass/PKGBUILD
new file mode 100644
index 000000000..7de827fb1
--- /dev/null
+++ b/extra/libass/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 87470 2010-08-13 22:22:30Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: G_Syme <demichan(at)mail(dot)upb(dot)de>
+
+pkgname=libass
+pkgver=0.9.11
+pkgrel=1
+pkgdesc="A portable library for SSA/ASS subtitles rendering"
+arch=('i686' 'x86_64')
+url="http://code.google.com/p/libass/"
+license=('GPL')
+depends=('enca' 'fontconfig' 'libpng')
+makedepends=('pkgconfig')
+options=(!libtool)
+source=(http://libass.googlecode.com/files/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('f9042884397002ba40aa89dc7d34f59f')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ ./configure --prefix=/usr
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/libassuan/PKGBUILD b/extra/libassuan/PKGBUILD
new file mode 100644
index 000000000..468f2b6a3
--- /dev/null
+++ b/extra/libassuan/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 87326 2010-08-12 11:59:25Z tpowa $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=libassuan
+pkgver=2.0.1
+pkgrel=1
+pkgdesc="A IPC library used by some GnuPG related software"
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://www.gnupg.org/related_software/libassuan"
+depends=('libgpg-error')
+options=('!libtool')
+source=(ftp://ftp.gnupg.org/gcrypt/$pkgname/$pkgname-$pkgver.tar.bz2)
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
+md5sums=('53a7d4c22af909d7236d17d454ef935b')
diff --git a/extra/libasyncns/ChangeLog b/extra/libasyncns/ChangeLog
new file mode 100644
index 000000000..132d6f874
--- /dev/null
+++ b/extra/libasyncns/ChangeLog
@@ -0,0 +1,13 @@
+2010-02-10 Corrado Primier <bardo@aur.archlinux.org>
+
+ * Version bump: 0.8
+
+2009-01-17 Corrado Primier <bardo@aur.archlinux.org>
+
+ * Version bump: 0.7
+
+ * PKGBUILD: moved to $srcdir/$pkgdir syntax
+
+2007-06-20 Georg Grabler <ggrabler@gmail.com>
+
+ * Updated to 0.3
diff --git a/extra/libasyncns/PKGBUILD b/extra/libasyncns/PKGBUILD
new file mode 100644
index 000000000..06ac6eaac
--- /dev/null
+++ b/extra/libasyncns/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 99900 2010-11-19 13:00:38Z heftig $
+# Maintainer: Jan "heftig" Steffens <jan.steffens@gmail.com>
+# Contributor: Corrado Primier <bardo@aur.archlinux.org>
+# Contributor: Eric Belanger <belanger@astro.umontreal.ca>
+# Contributor: William Rea <sillywilly@gmail.com>
+# Contributor: Daniel J Griffiths <ghost1227@archlinux.us>
+
+pkgname=libasyncns
+pkgver=0.8
+pkgrel=3
+pkgdesc="A C library for Linux/Unix for executing name service queries asynchronously"
+arch=('i686' 'x86_64')
+url="http://0pointer.de/lennart/projects/libasyncns"
+license=('LGPL')
+options=('!libtool')
+depends=('glibc')
+source=(http://0pointer.de/lennart/projects/libasyncns/${pkgname}-${pkgver}.tar.gz)
+md5sums=('1f553d6ce1ad255bc83b3d8e9384f515')
+
+build() {
+ cd ${srcdir}/libasyncns-${pkgver}
+ ./configure --prefix=/usr --disable-lynx
+ make
+}
+
+package() {
+ cd ${srcdir}/libasyncns-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/libatasmart/PKGBUILD b/extra/libatasmart/PKGBUILD
new file mode 100644
index 000000000..14e28f409
--- /dev/null
+++ b/extra/libatasmart/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id: PKGBUILD 56826 2009-10-28 08:21:58Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libatasmart
+pkgver=0.17
+pkgrel=1
+pkgdesc="ATA S.M.A.R.T. Reading and Parsing Library"
+arch=(i686 x86_64)
+license=('LGPL')
+depends=('udev>=146')
+url="http://0pointer.de/blog/projects/being-smart.html"
+options=(!libtool)
+source=(http://0pointer.de/public/${pkgname}-${pkgver}.tar.gz)
+md5sums=('dc36cadbbb7fa38f8af175713eda1a21')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \
+ --disable-static || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/libavc1394/PKGBUILD b/extra/libavc1394/PKGBUILD
new file mode 100644
index 000000000..1a359f48d
--- /dev/null
+++ b/extra/libavc1394/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id: PKGBUILD 37800 2009-05-03 21:23:26Z jgc $
+# Maintainer: damir <damir@archlinux.org>
+# Contributor: Robert Emil Berge <robert@rebi.no>
+
+pkgname=libavc1394
+pkgver=0.5.3
+pkgrel=3
+pkgdesc="A library to control A/V devices using the 1394ta AV/C commands."
+arch=("i686" "x86_64")
+url="http://sourceforge.net/projects/libavc1394/"
+license=('LGPL')
+depends=('libraw1394>=2.0.2')
+options=('!libtool')
+source=(http://downloads.sourceforge.net/sourceforge/libavc1394/${pkgname}-${pkgver}.tar.gz)
+md5sums=('09e30b1fb5ae455b6d8407e457a711a3')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --mandir=/usr/share/man || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/libbeagle/PKGBUILD b/extra/libbeagle/PKGBUILD
new file mode 100644
index 000000000..699fe639f
--- /dev/null
+++ b/extra/libbeagle/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 89703 2010-09-03 11:38:40Z remy $
+# Maintainer: Daniel Isenmann <daniel@archlinux.org>
+
+pkgname=libbeagle
+pkgver=0.3.9
+pkgrel=2
+pkgdesc="Beagle desktop search client library"
+arch=(i686 x86_64)
+url="http://www.gnome.org/projects/beagle/"
+license=('custom')
+depends=('glib2>=2.20.0' 'libxml2>=2.7.3')
+makedepends=('pkgconfig' 'pygtk')
+options=('!libtool')
+source=(http://ftp.gnome.org/pub/GNOME/sources/${pkgname}/0.3/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('af1e25bdfb704ee87047bc49a73fbb10')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-static || return 1
+ make
+}
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install || return 1
+ install -m755 -d "${pkgdir}/usr/share/licenses/libbeagle"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/libbeagle/" || return 1
+}
diff --git a/extra/libbluedevil/PKGBUILD b/extra/libbluedevil/PKGBUILD
new file mode 100644
index 000000000..fd648a9ae
--- /dev/null
+++ b/extra/libbluedevil/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 116725 2011-03-25 15:32:20Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+
+pkgname=libbluedevil
+pkgver=1.8.1
+pkgrel=1
+pkgdesc='A Qt wrapper for bluez used in the new KDE bluetooth stack'
+arch=('i686' 'x86_64')
+url="https://projects.kde.org/projects/playground/libs/libbluedevil"
+license=('GPL')
+depends=('qt' 'bluez')
+makedepends=('cmake')
+source=("ftp://ftp.archlinux.org/other/${pkgname}/${pkgname}-${pkgver}.tar.gz")
+md5sums=('4534b5d254b15e3884c4e51dfdf586b7')
+
+build(){
+ cd ${srcdir}
+ mkdir build
+ cd build
+ cmake ../${pkgname}-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=/usr
+ make
+}
+
+package() {
+ cd ${srcdir}/build
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/libbonobo/PKGBUILD b/extra/libbonobo/PKGBUILD
new file mode 100644
index 000000000..abfb2a186
--- /dev/null
+++ b/extra/libbonobo/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 117617 2011-04-04 13:06:43Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libbonobo
+pkgver=2.32.1
+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' 'libxml2' 'glib2')
+makedepends=('intltool' 'pkgconfig' 'flex')
+options=('!libtool')
+backup=('etc/bonobo-activation/bonobo-activation-config.xml')
+url="http://www.gnome.org"
+source=(http://ftp.gnome.org/pub/gnome/sources/libbonobo/2.32/libbonobo-${pkgver}.tar.bz2
+ bonobo-activation-config.xml)
+install=libbonobo.install
+sha256sums=('9160d4f277646400d3bb6b4fa73636cc6d1a865a32b9d0760e1e9e6ee624976b'
+ '081de245c42de10ebeea3cbcd819c5ce5d0a15b9bdde9c2098302b1e14965af2')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-static \
+ --libexecdir=/usr/lib/bonobo
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m644 "${srcdir}/bonobo-activation-config.xml" "${pkgdir}/etc/bonobo-activation/"
+}
diff --git a/extra/libbonobo/bonobo-activation-config.xml b/extra/libbonobo/bonobo-activation-config.xml
new file mode 100644
index 000000000..3db19f790
--- /dev/null
+++ b/extra/libbonobo/bonobo-activation-config.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+
+<oafconfig>
+
+<searchpath>
+ <!-- Examples: -->
+ <item>/usr/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/extra/libbonobo/libbonobo.install b/extra/libbonobo/libbonobo.install
new file mode 100644
index 000000000..5cc04eba8
--- /dev/null
+++ b/extra/libbonobo/libbonobo.install
@@ -0,0 +1,7 @@
+post_upgrade() {
+ ldconfig -r .
+ PID=`pidof bonobo-activation-server`
+ if [ ! -z "${PID}" ]; then
+ killall -HUP bonobo-activation-server 2>&1
+ fi
+}
diff --git a/extra/libbonoboui/PKGBUILD b/extra/libbonoboui/PKGBUILD
new file mode 100644
index 000000000..ef75ec844
--- /dev/null
+++ b/extra/libbonoboui/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 117635 2011-04-04 14:22:52Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libbonoboui
+pkgver=2.24.5
+pkgrel=1
+pkgdesc="User Interface library for Bonobo"
+arch=('i686' 'x86_64')
+license=('GPL' 'LGPL')
+depends=('libgnomecanvas' 'libgnome')
+makedepends=('intltool' 'pkgconfig')
+options=('!libtool' '!emptydirs')
+url="http://www.gnome.org"
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.24/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('fab5f2ac6c842d949861c07cb520afe5bee3dce55805151ce9cd01be0ec46fcd')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-static
+ make
+ make DESTDIR="${pkgdir}" install
+ rm -f "${pkgdir}/usr/share/applications/bonobo-browser.desktop"
+}
diff --git a/extra/libbtctl/PKGBUILD b/extra/libbtctl/PKGBUILD
new file mode 100644
index 000000000..e81cb690e
--- /dev/null
+++ b/extra/libbtctl/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 59225 2009-11-21 15:31:57Z giovanni $
+# Maintainer: Geoffroy Carrier <geoffroy@archlinux.org>
+# Contributor: Roman Kyrylych <roman@archlinux.org>
+
+pkgname=libbtctl
+pkgver=0.11.1
+pkgrel=1
+pkgdesc="GObject wrapper for Bluetooth functionality."
+arch=('i686' 'x86_64')
+url="http://www.usefulinc.com/software/gnome-bluetooth/"
+license=('GPL' 'LGPL')
+depends=('glib2' 'openobex' 'bluez')
+makedepends=('intltool' 'python' 'gtk2')
+options=('!libtool' '!makeflags')
+source=(http://ftp.gnome.org/pub/GNOME/sources/${pkgname}/0.11/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('5b5ab9e71dd5428c4e5c45cbf581a384')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --disable-gtk-doc \
+ --disable-mono --disable-static || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/libburn/PKGBUILD b/extra/libburn/PKGBUILD
new file mode 100644
index 000000000..d3c776324
--- /dev/null
+++ b/extra/libburn/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 114274 2011-03-12 06:54:15Z andyrtr $
+# Maintainer: Andreas Radke <andyrtr@archlinux.org>
+# Contributor: William Rea <sillywilly@gmail.com>
+
+pkgname=libburn
+pkgver=1.0.4.pl00
+pkgrel=1
+pkgdesc="Library for reading, mastering and writing optical discs"
+arch=('i686' 'x86_64')
+url="http://libburnia.pykix.org/"
+license=('GPL')
+depends=('glibc')
+source=(http://files.libburnia-project.org/releases/${pkgname}-${pkgver}.tar.gz)
+options=('!libtool' '!emptydirs')
+md5sums=('edc117aa6d02a19c5aafe30d95df5e80')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver/.pl??/}
+ ./configure --prefix=/usr --disable-static
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver/.pl??/}
+ make DESTDIR=${pkgdir} install
+}
+
diff --git a/extra/libcaca/PKGBUILD b/extra/libcaca/PKGBUILD
new file mode 100644
index 000000000..65485d162
--- /dev/null
+++ b/extra/libcaca/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: PKGBUILD 71245 2010-03-05 16:17:11Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libcaca
+pkgver=0.99.beta17
+pkgrel=1
+pkgdesc="Color AsCii Art library"
+arch=('i686' 'x86_64')
+license=('LGPL')
+url="http://libcaca.zoy.org/"
+depends=('imlib2' 'ncurses>=5.7')
+options=(!libtool !emptydirs)
+source=(http://libcaca.zoy.org/files/libcaca/${pkgname}-${pkgver}.tar.gz)
+md5sums=('790d6e26b7950e15909fdbeb23a7ea87')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --mandir=/usr/share/man \
+ --enable-shared --disable-doc \
+ --disable-cxx --disable-gl --disable-csharp || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/libcanberra/PKGBUILD b/extra/libcanberra/PKGBUILD
new file mode 100644
index 000000000..a563255b2
--- /dev/null
+++ b/extra/libcanberra/PKGBUILD
@@ -0,0 +1,57 @@
+# $Id: PKGBUILD 13455 2008-09-27 11:03:58Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgbase=libcanberra
+pkgname=(libcanberra libcanberra-pulse)
+pkgver=0.26
+pkgrel=3
+pkgdesc="A small and lightweight implementation of the XDG Sound Theme Specification"
+arch=(i686 x86_64)
+license=('LGPL')
+depends=('libvorbis>=1.3.1' 'gstreamer0.10>=0.10.30' 'libtool>=2.2.10' 'gtk2>=2.21.8' 'alsa-lib>=1.0.23' 'tdb>=1.2.1')
+makedepends=('gtk-doc' 'libpulse')
+options=(!emptydirs)
+url=http://0pointer.de/lennart/projects/libcanberra
+source=(http://0pointer.de/lennart/projects/${pkgbase}/${pkgbase}-${pkgver}.tar.gz
+ libcanberra-gtk-module.sh)
+md5sums=('ee2c66ada7c851a4e7b6eb1682285a24'
+ 'a54799e624aac814b9343ab05f25c38b')
+
+build() {
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ ./configure --sysconfdir=/etc --prefix=/usr --localstatedir=/var \
+ --disable-static --with-builtin=dso --enable-null --disable-oss \
+ --enable-alsa --enable-gstreamer --enable-pulse
+ make
+}
+
+package_libcanberra() {
+ install=libcanberra.install
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ make -j1 DESTDIR="${pkgdir}" install
+ rm -f "${pkgdir}/usr/lib/libcanberra-gtk.la"
+ rm -f "${pkgdir}/usr/lib/gtk-2.0/modules/"*.la
+
+ install -m755 -d "${pkgdir}/usr/share/gconf"
+ mv "${pkgdir}/etc/gconf/schemas" "${pkgdir}/usr/share/gconf/"
+
+ install -m755 -d "${pkgdir}/etc/X11/xinit/xinitrc.d"
+ install -m755 "${srcdir}/libcanberra-gtk-module.sh" "${pkgdir}/etc/X11/xinit/xinitrc.d/40-libcanberra-gtk-module"
+
+ # Split libcanberra-pulse
+ mkdir pulse-plugin
+ mv "${pkgdir}"/usr/lib/${pkgbase}-${pkgver}/${pkgbase}-pulse.* pulse-plugin
+}
+
+package_libcanberra-pulse() {
+ pkgdesc="PulseAudio plugin for libcanberra"
+ depends=("$pkgbase=$pkgver-$pkgrel" 'libpulse')
+ groups=('pulseaudio-gnome')
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+
+ mkdir -p "${pkgdir}/usr/lib/${pkgbase}-${pkgver}"
+ mv pulse-plugin/* "${pkgdir}/usr/lib/${pkgbase}-${pkgver}"
+}
+
diff --git a/extra/libcanberra/libcanberra-gtk-module.sh b/extra/libcanberra/libcanberra-gtk-module.sh
new file mode 100644
index 000000000..fbb7ff783
--- /dev/null
+++ b/extra/libcanberra/libcanberra-gtk-module.sh
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+if [ -z "$GTK_MODULES" ] ; then
+ GTK_MODULES="canberra-gtk-module"
+else
+ GTK_MODULES="$GTK_MODULES:canberra-gtk-module"
+fi
+
+export GTK_MODULES
+
diff --git a/extra/libcanberra/libcanberra.install b/extra/libcanberra/libcanberra.install
new file mode 100644
index 000000000..7f5012199
--- /dev/null
+++ b/extra/libcanberra/libcanberra.install
@@ -0,0 +1,23 @@
+pkgname=libcanberra
+
+post_install() {
+ if [ -x usr/sbin/gconfpkg ]; then
+ usr/sbin/gconfpkg --install ${pkgname}
+ fi
+}
+
+pre_upgrade() {
+ if [ -f usr/share/gconf/schemas/${pkgname}.schemas ]; then
+ pre_remove
+ fi
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ if [ -x usr/sbin/gconfpkg ]; then
+ usr/sbin/gconfpkg --uninstall ${pkgname}
+ fi
+}
diff --git a/extra/libcdaudio/01-cddb-bufferoverflow.patch b/extra/libcdaudio/01-cddb-bufferoverflow.patch
new file mode 100644
index 000000000..0a4449717
--- /dev/null
+++ b/extra/libcdaudio/01-cddb-bufferoverflow.patch
@@ -0,0 +1,15 @@
+Author: Moritz Muehlenhoff <jmm@inutil.org>
+Description: CAN-2005-0706: Bufferoverflow in CDDB lookup parsing
+
+diff -Naurp libcdaudio.orig/src/cddb.c libcdaudio/src/cddb.c
+--- libcdaudio.orig/src/cddb.c 2009-08-02 10:30:05.000000000 +0000
++++ libcdaudio/src/cddb.c 2009-08-02 10:34:57.000000000 +0000
+@@ -1052,7 +1052,7 @@ cddb_query(int cd_desc, int sock,
+ }
+
+ query->query_matches = 0;
+- while(!cddb_read_line(sock, inbuffer, 256)) {
++ while(query->query_matches < MAX_INEXACT_MATCHES && !cddb_read_line(sock, inbuffer, 256)) {
+ slashed = 0;
+ if(strchr(inbuffer, '/') != NULL && parse_disc_artist) {
+ index = 0;
diff --git a/extra/libcdaudio/02-cddb-bufferoverflow.patch b/extra/libcdaudio/02-cddb-bufferoverflow.patch
new file mode 100644
index 000000000..b5422735c
--- /dev/null
+++ b/extra/libcdaudio/02-cddb-bufferoverflow.patch
@@ -0,0 +1,15 @@
+Author: Moritz Muehlenhoff <jmm@inutil.org>
+Description: CVE-2008-5030
+
+diff -Naurp libcdaudio.orig/src/cddb.c libcdaudio/src/cddb.c
+--- libcdaudio.orig/src/cddb.c 2008-09-07 23:53:16.000000000 +0000
++++ libcdaudio/src/cddb.c 2008-11-12 21:32:21.000000000 +0000
+@@ -1679,7 +1679,7 @@ cddb_read_disc_data(int cd_desc, struct
+ free(file);
+
+ while(!feof(cddb_data)) {
+- fgets(inbuffer, 512, cddb_data);
++ fgets(inbuffer, 256, cddb_data);
+ cddb_process_line(inbuffer, data);
+ }
+
diff --git a/extra/libcdaudio/PKGBUILD b/extra/libcdaudio/PKGBUILD
new file mode 100644
index 000000000..64159d23e
--- /dev/null
+++ b/extra/libcdaudio/PKGBUILD
@@ -0,0 +1,32 @@
+# $Id: PKGBUILD 87596 2010-08-17 10:23:02Z jgc $
+# Maintainer:
+# Contributor Sarah Hay <sarahhay@mb.sympatico.ca>
+
+pkgname=libcdaudio
+pkgver=0.99.12
+pkgrel=5
+pkgdesc="Library for controlling Audio CDs and interacting with CDDB"
+arch=('i686' 'x86_64')
+url="http://libcdaudio.sourceforge.net/"
+license=('GPL')
+depends=('glibc')
+options=('!libtool')
+source=(http://downloads.sourceforge.net/sourceforge/libcdaudio/${pkgname}-${pkgver}.tar.gz
+ 01-cddb-bufferoverflow.patch
+ 02-cddb-bufferoverflow.patch)
+md5sums=('63b49cf14d53eed31e7a87cca17a3963'
+ 'f78c881b92cd7d25472daa90af284e18'
+ 'e36755c125d2710dc8619bb401e37444')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i "${srcdir}/01-cddb-bufferoverflow.patch"
+ patch -Np1 -i "${srcdir}/02-cddb-bufferoverflow.patch"
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/libcddb/PKGBUILD b/extra/libcddb/PKGBUILD
new file mode 100644
index 000000000..1c9ae521e
--- /dev/null
+++ b/extra/libcddb/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id: PKGBUILD 78167 2010-04-20 00:31:41Z dgriffiths $
+# Maintainer: Hugo Doria <hugo@archlinux.org>
+# Contributor: Sarah Hay <sarahhay@mb.sympatico.ca>
+
+pkgname=libcddb
+pkgver=1.3.2
+pkgrel=2
+pkgdesc="Library that implements the different protocols (CDDBP, HTTP, SMTP) to access data on a CDDB server (e.g. http://freedb.org)."
+arch=('i686' 'x86_64')
+license=('LGPL')
+options=('!libtool')
+depends=('glibc')
+source=(http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.bz2)
+url="http://sourceforge.net/projects/libcddb/"
+md5sums=('8bb4a6f542197e8e9648ae597cd6bc8a')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr
+ make || return 1
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/libcdio/PKGBUILD b/extra/libcdio/PKGBUILD
new file mode 100644
index 000000000..4c309a65e
--- /dev/null
+++ b/extra/libcdio/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 59886 2009-11-29 15:21:53Z jgc $
+# Maintainer: damir <damir@archlinux.org>
+# Contributor: damir <damir@archlinux.org>
+
+pkgname=libcdio
+pkgver=0.82
+pkgrel=1
+pkgdesc="GNU Compact Disc Input and Control Library"
+arch=("i686" "x86_64")
+license=('GPL3')
+url="http://www.gnu.org/software/libcdio/"
+depends=('gcc-libs>=4.4.2' 'libcddb' 'ncurses')
+options=('!libtool')
+install=libcdio.install
+source=(http://ftp.gnu.org/gnu/libcdio/${pkgname}-${pkgver}.tar.gz)
+md5sums=('1c29b18e01ab2b966162bc727bf3c360')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --disable-vcd-info --enable-cpp-progs || return 1
+ make || return 1
+ make -j1 DESTDIR="${pkgdir}" install || return 1
+ #install -m644 libcdio_paranoia.pc libcdio_cdda.pc \
+ # "${pkgdir}/usr/lib/pkgconfig/" || return 1
+}
diff --git a/extra/libcdio/libcdio.install b/extra/libcdio/libcdio.install
new file mode 100644
index 000000000..33a4e1ace
--- /dev/null
+++ b/extra/libcdio/libcdio.install
@@ -0,0 +1,13 @@
+info_dir=/usr/share/info
+
+post_install() {
+ install-info ${info_dir}/libcdio.info.gz ${info_dir}/dir 2> /dev/null
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ install-info --delete ${info_dir}/libcdio.info.gz ${info_dir}/dir 2> /dev/null
+}
diff --git a/extra/libchamplain/PKGBUILD b/extra/libchamplain/PKGBUILD
new file mode 100644
index 000000000..8580e7e96
--- /dev/null
+++ b/extra/libchamplain/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 106959 2011-01-19 21:31:11Z andyrtr $
+# Maintainer: Andreas Radke <andyrtr@archlinux.org>
+# Contributor: Michael Kanis <mkanis@gmx.de>
+
+pkgname=libchamplain
+pkgver=0.8.1
+pkgrel=1
+pkgdesc="C library aimed to provide a Gtk+ widget to display rasterized maps"
+url="http://projects.gnome.org/libchamplain/"
+license=('LGPL')
+arch=('i686' 'x86_64')
+replaces=('libchamplain-gtk')
+options=('!libtool')
+depends=('clutter-gtk>=0.10.8' 'libsoup' 'cairo>=1.8' 'sqlite3')
+makedepends=('gobject-introspection')
+source=(http://ftp.gnome.org/pub/GNOME/sources/$pkgname/0.8/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('4490dca0c099cac47ed93796d5bd79fd')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr --disable-static
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/libchewing/PKGBUILD b/extra/libchewing/PKGBUILD
new file mode 100644
index 000000000..d1ee325e4
--- /dev/null
+++ b/extra/libchewing/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 111534 2011-02-27 15:03:24Z bisson $
+# Contributor: damir <damir@archlinux.org>
+# Contributor: whisky <archlinux.cle(at)gmail.com>
+# Maintainer: Gaetan Bisson <bisson@archlinux.org>
+
+pkgname=libchewing
+pkgver=0.3.3
+pkgrel=1
+pkgdesc='Intelligent Zhuyin input method library for traditional Chinese'
+arch=('i686' 'x86_64')
+url='http://chewing.csie.net/'
+license=('GPL')
+options=('!libtool')
+source=("http://chewing.csie.net/download/libchewing/${pkgname}-${pkgver}.tar.bz2")
+sha1sums=('24ade7bbb0288f71588bb45831d7fc9d5137a4cb')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --enable-static=no
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/libcroco/PKGBUILD b/extra/libcroco/PKGBUILD
new file mode 100644
index 000000000..ca1479053
--- /dev/null
+++ b/extra/libcroco/PKGBUILD
@@ -0,0 +1,21 @@
+# $Id: PKGBUILD 26935 2009-02-14 19:49:35Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+pkgname=libcroco
+pkgver=0.6.2
+pkgrel=1
+pkgdesc="GNOME CSS2 parsing and manipulation toolkit"
+arch=('x86_64' 'i686')
+depends=('glib2>=2.18.4' 'libxml2>=2.7.3')
+makedepends=('intltool' 'pkgconfig')
+license=('LGPL')
+options=('!libtool')
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/0.6/${pkgname}-${pkgver}.tar.bz2)
+url="http://www.gnome.org"
+md5sums=('1429c597aa4b75fc610ab3a542c99209')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --disable-static || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/libcue/PKGBUILD b/extra/libcue/PKGBUILD
new file mode 100644
index 000000000..95e1c4d21
--- /dev/null
+++ b/extra/libcue/PKGBUILD
@@ -0,0 +1,24 @@
+# Maintainer: Gaetan Bisson <bisson@archlinux.org>
+# Contributor: said <atvordhosbn[at]gmail[dot]com>
+
+pkgname=libcue
+pkgver=1.4.0
+pkgrel=2
+pkgdesc='Parses so-called cue sheets and handles the parsed data'
+arch=('i686' 'x86_64')
+url='http://sourceforge.net/projects/libcue/'
+license=('GPL2')
+depends=('glibc')
+source=("http://downloads.sourceforge.net/libcue/$pkgname-$pkgver.tar.bz2")
+sha1sums=('3fd31f2da7c0e3967d5f56363f3051a85a8fd50d')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ ./autogen.sh --prefix=/usr
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make DESTDIR="$pkgdir" install
+}
diff --git a/extra/libdaemon/PKGBUILD b/extra/libdaemon/PKGBUILD
new file mode 100644
index 000000000..c6bbc1c9c
--- /dev/null
+++ b/extra/libdaemon/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 67404 2010-02-06 18:19:24Z giovanni $
+# Contributor: Manolis Tzanidakis
+# Contributor: Mark Rosenstand &lt;mark@archlinux.org&gt;
+# Maintainer: Thayer Williams &lt;thayer@archlinux.org&gt;
+
+pkgname=libdaemon
+pkgver=0.14
+pkgrel=1
+pkgdesc="A lightweight C library which eases the writing of UNIX daemons"
+url="http://0pointer.de/lennart/projects/libdaemon/"
+license=('LGPL')
+arch=('i686' 'x86_64')
+depends=('glibc')
+source=(http://0pointer.de/lennart/projects/libdaemon/$pkgname-$pkgver.tar.gz)
+options=('!libtool')
+md5sums=('509dc27107c21bcd9fbf2f95f5669563')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ ./configure --prefix=/usr --localstatedir=/var --disable-lynx || return 1
+ make || return 1
+ make DESTDIR=$pkgdir install || return 1
+}
+
diff --git a/extra/libdatrie/PKGBUILD b/extra/libdatrie/PKGBUILD
new file mode 100644
index 000000000..68ac77c7f
--- /dev/null
+++ b/extra/libdatrie/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id: PKGBUILD 87837 2010-08-18 12:55:23Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Chaiwat Suttipongsakul <cwt114@gmail.com>
+
+pkgname=libdatrie
+pkgver=0.2.4
+pkgrel=1
+pkgdesc="Implementation of double-array structure for representing trie, as proposed by Junichi Aoe."
+url="http://linux.thai.net/~thep/datrie/datrie.html"
+license=('LGPL')
+arch=('i686' 'x86_64')
+depends=('glibc')
+options=('!libtool' '!emptydirs')
+source=(http://linux.thai.net/pub/thailinux/software/libthai/${pkgname}-${pkgver}.tar.gz)
+md5sums=('7f7d592114f98db9e4c7171c3f2befc5')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --disable-static
+ make
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/libdbusmenu-qt/PKGBUILD b/extra/libdbusmenu-qt/PKGBUILD
new file mode 100644
index 000000000..98dda1288
--- /dev/null
+++ b/extra/libdbusmenu-qt/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 117011 2011-03-27 14:11:17Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+
+pkgname=libdbusmenu-qt
+pkgver=0.8.1
+pkgrel=1
+pkgdesc="A library that provides a Qt implementation of the DBusMenu spec"
+arch=('i686' 'x86_64')
+url="https://launchpad.net/libdbusmenu-qt"
+license=('GPL')
+depends=('qt')
+makedepends=('cmake' 'doxygen')
+source=("http://launchpad.net/${pkgname}/trunk/${pkgver}/+download/${pkgname}-${pkgver}.tar.bz2")
+md5sums=('495bf59b9fcc00e4260fd5acbb21b78b')
+
+build() {
+ cd ${srcdir}
+ mkdir build
+ cd build
+ cmake ../${pkgname}-${pkgver} \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_BUILD_TYPE=Release
+ make
+}
+
+package() {
+ cd ${srcdir}/build
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/libdc1394/PKGBUILD b/extra/libdc1394/PKGBUILD
new file mode 100644
index 000000000..c51e9f206
--- /dev/null
+++ b/extra/libdc1394/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 101407 2010-11-29 04:52:48Z allan $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libdc1394
+pkgver=2.1.2
+pkgrel=2
+pkgdesc="High level programming interface to control IEEE 1394 based cameras"
+arch=(i686 x86_64)
+license=('LGPL')
+url="http://sourceforge.net/projects/libdc1394/"
+depends=('libraw1394>=2.0.5' 'libusb')
+options=(!libtool !emptydirs)
+source=(http://downloads.sourceforge.net/sourceforge/libdc1394/${pkgname}-${pkgver}.tar.gz)
+md5sums=('b85f1ade88d8d96688d5965ed8603d53')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/libdca/PKGBUILD b/extra/libdca/PKGBUILD
new file mode 100644
index 000000000..5a8e195d2
--- /dev/null
+++ b/extra/libdca/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 49760 2009-08-15 15:07:38Z jgc $
+# Maintainer: Andreas Radke <andyrtr@archlinux.org>
+
+pkgname=libdca
+pkgver=0.0.5
+pkgrel=2
+pkgdesc="Free library for decoding DTS Coherent Acoustics streams"
+arch=(i686 x86_64)
+license=('GPL')
+url="http://www.videolan.org/developers/libdca.html"
+source=(http://download.videolan.org/pub/videolan/${pkgname}/${pkgver}/${pkgname}-${pkgver}.tar.bz2)
+provides=('libdts')
+replaces=('libdts')
+options=('!libtool' '!emptydirs')
+md5sums=('dab6b2795c66a82a6fcd4f8343343021')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --mandir=/usr/share/man || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+
+ rm -f "${pkgdir}/usr/share/man/man1"/{extract_dts,dtsdec}.1
+ ln -s dcadec.1.gz "${pkgdir}/usr/share/man/man1/dtsdec.1.gz" || return 1
+ ln -s extract_dca.1.gz "${pkgdir}/usr/share/man/man1/extract_dts.1.gz" || return 1
+}
diff --git a/extra/libdiscid/PKGBUILD b/extra/libdiscid/PKGBUILD
new file mode 100644
index 000000000..f1eccb6a8
--- /dev/null
+++ b/extra/libdiscid/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id$
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Eric Gillingham <sysrq@sysrq.tk>
+
+pkgname=libdiscid
+pkgver=0.2.2
+pkgrel=1
+arch=('i686' 'x86_64')
+license=('GPL')
+pkgdesc="A Library for creating MusicBrainz DiscIDs"
+url="http://musicbrainz.org/doc/libdiscid"
+depends=('glibc')
+source=("http://users.musicbrainz.org/~matt/${pkgname}-${pkgver}.tar.gz")
+md5sums=('ee21ddbe696a3c60e14827a75f3bcf5b')
+options=('!libtool')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make prefix=${pkgdir}/usr install
+}
diff --git a/extra/libdmapsharing/PKGBUILD b/extra/libdmapsharing/PKGBUILD
new file mode 100644
index 000000000..5151a2cc1
--- /dev/null
+++ b/extra/libdmapsharing/PKGBUILD
@@ -0,0 +1,21 @@
+# $Id: PKGBUILD 97651 2010-10-31 21:55:53Z ibiru $
+#Maintainer: Ionut Biru <ibiru@archlinux.org>
+pkgname=libdmapsharing
+pkgver=2.1.8
+pkgrel=1
+pkgdesc="Libdmapsharing is a library you may use to access and share DMAP content"
+arch=('i686' 'x86_64')
+url="http://www.flyn.org/projects/libdmapsharing/index.html"
+license=('LGPL2.1')
+depends=('libsoup>=2.32.0' 'avahi>=0.6.27' 'gstreamer0.10-base>=0.10.30' 'gdk-pixbuf2>=2.22')
+options=('!libtool' 'force')
+source=(http://www.flyn.org/projects/libdmapsharing/${pkgname}-${pkgver}.tar.gz)
+md5sums=('88583f0c6160142567e8b521f210443b')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ ./configure --prefix=/usr --with-mdns=avahi
+ make
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/libdmtx/PKGBUILD b/extra/libdmtx/PKGBUILD
new file mode 100644
index 000000000..5bfaa6476
--- /dev/null
+++ b/extra/libdmtx/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 107616 2011-01-26 22:10:46Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: jose <jose1711 [at] gmail (dot) com>
+
+pkgname=libdmtx
+pkgver=0.7.2
+pkgrel=2
+pkgdesc="A software for reading and writing Data Matrix 2D barcodes"
+url=('http://www.libdmtx.org/')
+arch=('i686' 'x86_64')
+license=('GPL2')
+depends=('imagemagick')
+source=("http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.bz2")
+md5sums=('0684cf3857591e777b57248d652444ae')
+options=('!libtool')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/libdmx/PKGBUILD b/extra/libdmx/PKGBUILD
new file mode 100644
index 000000000..3397db220
--- /dev/null
+++ b/extra/libdmx/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 97777 2010-11-01 22:06:48Z jgc $
+#Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libdmx
+pkgver=1.1.1
+pkgrel=1
+pkgdesc="X11 Distributed Multihead extension library"
+arch=('x86_64' 'i686')
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('dmxproto' 'libxext')
+makedepends=('xorg-util-macros')
+options=('!libtool')
+source=(${url}/releases/individual/lib/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('49aeab743cb8b667829efda140487b69a7148676')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --disable-static
+ make
+ make DESTDIR="${pkgdir}" install
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/libdrm/COPYING b/extra/libdrm/COPYING
new file mode 100644
index 000000000..6e74c337c
--- /dev/null
+++ b/extra/libdrm/COPYING
@@ -0,0 +1,48 @@
+ Copyright 2005 Adam Jackson.
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation on the rights to use, copy, modify, merge,
+ publish, distribute, sub license, and/or sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+
+ The above copyright notice and this permission notice (including the
+ next paragraph) shall be included in all copies or substantial
+ portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NON-INFRINGEMENT. IN NO EVENT SHALL ADAM JACKSON BE LIABLE FOR ANY
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+------------------------------------------------------------------------
+
+ Copyright 1999 Precision Insight, Inc., Cedar Park, Texas.
+ Copyright 2000 VA Linux Systems, Inc., Sunnyvale, California.
+ All Rights Reserved.
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice (including the
+ next paragraph) shall be included in all copies or substantial
+ portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS
+ SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ DEALINGS IN THE SOFTWARE.
diff --git a/extra/libdrm/PKGBUILD b/extra/libdrm/PKGBUILD
new file mode 100644
index 000000000..6737913e2
--- /dev/null
+++ b/extra/libdrm/PKGBUILD
@@ -0,0 +1,43 @@
+# $Id: PKGBUILD 110193 2011-02-17 14:28:04Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libdrm
+pkgver=2.4.23
+pkgrel=2
+pkgdesc="Userspace interface to kernel DRM services"
+arch=(i686 x86_64)
+license=('custom')
+depends=('glibc')
+options=('!libtool')
+url="http://dri.freedesktop.org/"
+source=(http://dri.freedesktop.org/${pkgname}/${pkgname}-${pkgver}.tar.bz2
+ no-pthread-stubs.patch
+ intel-git-fixes.patch
+ COPYING)
+sha1sums=('9d651d1e394654c02343e3d95c0f8a442a91ac75'
+ 'af2d9871565ea4cf524873f897691a18b2bba944'
+ '40d5a749f05dc097c91c087fe1f8b970613e9098'
+ 'ba3dcd636997ee0d30df14b03dae05c24ae5d094')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i "${srcdir}/no-pthread-stubs.patch"
+ patch -Np1 -i "${srcdir}/intel-git-fixes.patch"
+
+ libtoolize --force
+ autoreconf --force --install
+ ./configure --prefix=/usr \
+ --enable-udev \
+ --enable-intel \
+ --enable-radeon \
+ --enable-vmwgfx-experimental-api \
+ --enable-nouveau-experimental-api
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 "${srcdir}/COPYING" "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/libdrm/intel-git-fixes.patch b/extra/libdrm/intel-git-fixes.patch
new file mode 100644
index 000000000..d1f427c10
--- /dev/null
+++ b/extra/libdrm/intel-git-fixes.patch
@@ -0,0 +1,144 @@
+commit 6717b7579f84d05e45e7846d2b6e767760461709
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date: Wed Jan 12 10:57:46 2011 +0000
+
+ intel: Fallback to old exec if no mrb_exec is available
+
+ Reported-by: Torsten Hilbrich <torsten.hilbrich@secunet.com>
+ Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=33016
+ Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+diff --git a/intel/intel_bufmgr.c b/intel/intel_bufmgr.c
+index b7c5c09..2546222 100644
+--- a/intel/intel_bufmgr.c
++++ b/intel/intel_bufmgr.c
+@@ -143,6 +143,10 @@ drm_intel_bo_mrb_exec(drm_intel_bo *bo, int used,
+ cliprects, num_cliprects, DR4,
+ rings);
+
++ if (ring_flag == 0)
++ return bo->bufmgr->bo_exec(bo, used,
++ cliprects, num_cliprects, DR4);
++
+ return -ENODEV;
+ }
+
+commit 53581b6210c024044e0065527d1506e6f5657ef5
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date: Mon Feb 14 09:27:05 2011 +0000
+
+ intel: Set the public handle after opening by name
+
+ Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+diff --git a/intel/intel_bufmgr_gem.c b/intel/intel_bufmgr_gem.c
+index 72c8731..092b56a 100644
+--- a/intel/intel_bufmgr_gem.c
++++ b/intel/intel_bufmgr_gem.c
+@@ -816,6 +816,7 @@ drm_intel_bo_gem_create_from_name(drm_intel_bufmgr *bufmgr,
+ atomic_set(&bo_gem->refcount, 1);
+ bo_gem->validate_index = -1;
+ bo_gem->gem_handle = open_arg.handle;
++ bo_gem->bo.handle = open_arg.handle;
+ bo_gem->global_name = handle;
+ bo_gem->reusable = 0;
+
+commit 36d4939343d8789d9066f7245fa2d4fe69119dd8
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date: Mon Feb 14 09:39:06 2011 +0000
+
+ intel: Remember named bo
+
+ ... and if asked to open a bo by the same global name, return a fresh
+ reference to the previously allocated buffer.
+
+ Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+diff --git a/intel/intel_bufmgr_gem.c b/intel/intel_bufmgr_gem.c
+index 092b56a..3cdffce 100644
+--- a/intel/intel_bufmgr_gem.c
++++ b/intel/intel_bufmgr_gem.c
+@@ -95,6 +95,8 @@ typedef struct _drm_intel_bufmgr_gem {
+ int num_buckets;
+ time_t time;
+
++ drmMMListHead named;
++
+ uint64_t gtt_size;
+ int available_fences;
+ int pci_device;
+@@ -124,6 +126,7 @@ struct _drm_intel_bo_gem {
+ * Kenel-assigned global name for this object
+ */
+ unsigned int global_name;
++ drmMMListHead name_list;
+
+ /**
+ * Index of the buffer within the validation list while preparing a
+@@ -690,6 +693,8 @@ retry:
+ drm_intel_gem_bo_free(&bo_gem->bo);
+ return NULL;
+ }
++
++ DRMINITLISTHEAD(&bo_gem->name_list);
+ }
+
+ bo_gem->name = name;
+@@ -792,6 +797,23 @@ drm_intel_bo_gem_create_from_name(drm_intel_bufmgr *bufmgr,
+ int ret;
+ struct drm_gem_open open_arg;
+ struct drm_i915_gem_get_tiling get_tiling;
++ drmMMListHead *list;
++
++ /* At the moment most applications only have a few named bo.
++ * For instance, in a DRI client only the render buffers passed
++ * between X and the client are named. And since X returns the
++ * alternating names for the front/back buffer a linear search
++ * provides a sufficiently fast match.
++ */
++ for (list = bufmgr_gem->named.next;
++ list != &bufmgr_gem->named;
++ list = list->next) {
++ bo_gem = DRMLISTENTRY(drm_intel_bo_gem, list, name_list);
++ if (bo_gem->global_name == handle) {
++ drm_intel_gem_bo_reference(&bo_gem->bo);
++ return &bo_gem->bo;
++ }
++ }
+
+ bo_gem = calloc(1, sizeof(*bo_gem));
+ if (!bo_gem)
+@@ -834,6 +856,7 @@ drm_intel_bo_gem_create_from_name(drm_intel_bufmgr *bufmgr,
+ /* XXX stride is unknown */
+ drm_intel_bo_gem_set_in_aperture_size(bufmgr_gem, bo_gem);
+
++ DRMLISTADDTAIL(&bo_gem->name_list, &bufmgr_gem->named);
+ DBG("bo_create_from_handle: %d (%s)\n", handle, bo_gem->name);
+
+ return &bo_gem->bo;
+@@ -925,6 +948,8 @@ drm_intel_gem_bo_unreference_final(drm_intel_bo *bo, time_t time)
+ bo_gem->relocs = NULL;
+ }
+
++ DRMLISTDEL(&bo_gem->name_list);
++
+ bucket = drm_intel_gem_bo_bucket_for_size(bufmgr_gem, bo->size);
+ /* Put the buffer into our internal cache for reuse if we can. */
+ if (bufmgr_gem->bo_reuse && bo_gem->reusable && bucket != NULL &&
+@@ -1771,6 +1796,8 @@ drm_intel_gem_bo_flink(drm_intel_bo *bo, uint32_t * name)
+ return -errno;
+ bo_gem->global_name = flink.name;
+ bo_gem->reusable = 0;
++
++ DRMLISTADDTAIL(&bo_gem->name_list, &bufmgr_gem->named);
+ }
+
+ *name = bo_gem->global_name;
+@@ -2217,6 +2244,7 @@ drm_intel_bufmgr_gem_init(int fd, int batch_size)
+ drm_intel_gem_get_pipe_from_crtc_id;
+ bufmgr_gem->bufmgr.bo_references = drm_intel_gem_bo_references;
+
++ DRMINITLISTHEAD(&bufmgr_gem->named);
+ init_cache_buckets(bufmgr_gem);
+
+ return &bufmgr_gem->bufmgr;
diff --git a/extra/libdrm/no-pthread-stubs.patch b/extra/libdrm/no-pthread-stubs.patch
new file mode 100644
index 000000000..6602f8785
--- /dev/null
+++ b/extra/libdrm/no-pthread-stubs.patch
@@ -0,0 +1,65 @@
+diff -ru libdrm-2.4.0/configure.ac libdrm-2.4.0-nostubs/configure.ac
+--- libdrm-2.4.0/configure.ac 2008-10-09 21:57:09.000000000 +0200
++++ libdrm-2.4.0-nostubs/configure.ac 2008-10-21 10:48:24.000000000 +0200
+@@ -32,10 +32,6 @@
+ AC_HEADER_STDC
+ AC_SYS_LARGEFILE
+
+-PKG_CHECK_MODULES(PTHREADSTUBS, pthread-stubs)
+-AC_SUBST(PTHREADSTUBS_CFLAGS)
+-AC_SUBST(PTHREADSTUBS_LIBS)
+-
+ pkgconfigdir=${libdir}/pkgconfig
+ AC_SUBST(pkgconfigdir)
+ AC_ARG_ENABLE(udev, AS_HELP_STRING([--enable-udev],
+--- libdrm-2.4.16/intel/Makefile.am 2009-11-20 23:54:36.000000000 +0000
++++ libdrm-2.4.16/intel/Makefile.am.new 2009-12-07 08:11:32.235748069 +0000
+@@ -26,13 +26,12 @@
+ $(WARN_CFLAGS) \
+ -I$(top_srcdir) \
+ -I$(top_srcdir)/intel \
+- $(PTHREADSTUBS_CFLAGS) \
+ -I$(top_srcdir)/include/drm
+
+ libdrm_intel_la_LTLIBRARIES = libdrm_intel.la
+ libdrm_intel_ladir = $(libdir)
+ libdrm_intel_la_LDFLAGS = -version-number 1:0:0 -no-undefined
+-libdrm_intel_la_LIBADD = ../libdrm.la @PTHREADSTUBS_LIBS@ @CLOCK_LIB@
++libdrm_intel_la_LIBADD = ../libdrm.la @CLOCK_LIB@
+
+ libdrm_intel_la_SOURCES = \
+ intel_atomic.h \
+--- libdrm-2.4.16/radeon/Makefile.am 2009-11-20 23:54:36.000000000 +0000
++++ libdrm-2.4.16/radeon/Makefile.am.new 2009-12-07 08:12:31.889075388 +0000
+@@ -26,13 +26,12 @@
+ $(WARN_CFLAGS) \
+ -I$(top_srcdir) \
+ -I$(top_srcdir)/radeon \
+- $(PTHREADSTUBS_CFLAGS) \
+ -I$(top_srcdir)/include/drm
+
+ libdrm_radeon_la_LTLIBRARIES = libdrm_radeon.la
+ libdrm_radeon_ladir = $(libdir)
+ libdrm_radeon_la_LDFLAGS = -version-number 1:0:0 -no-undefined
+-libdrm_radeon_la_LIBADD = ../libdrm.la @PTHREADSTUBS_LIBS@
++libdrm_radeon_la_LIBADD = ../libdrm.la
+
+ libdrm_radeon_la_SOURCES = \
+ radeon_bo_gem.c \
+--- libdrm-2.4.16/nouveau/Makefile.am 2009-11-20 23:54:36.000000000 +0000
++++ libdrm-2.4.16/nouveau/Makefile.am.new 2009-12-07 08:13:01.489072320 +0000
+@@ -2,13 +2,12 @@
+ $(WARN_CFLAGS) \
+ -I$(top_srcdir) \
+ -I$(top_srcdir)/nouveau \
+- $(PTHREADSTUBS_CFLAGS) \
+ -I$(top_srcdir)/include/drm
+
+ libdrm_nouveau_la_LTLIBRARIES = libdrm_nouveau.la
+ libdrm_nouveau_ladir = $(libdir)
+ libdrm_nouveau_la_LDFLAGS = -version-number 1:0:0 -no-undefined
+-libdrm_nouveau_la_LIBADD = ../libdrm.la @PTHREADSTUBS_LIBS@
++libdrm_nouveau_la_LIBADD = ../libdrm.la
+
+ libdrm_nouveau_la_SOURCES = \
+ nouveau_device.c \
diff --git a/extra/libdv/PKGBUILD b/extra/libdv/PKGBUILD
new file mode 100644
index 000000000..d8b127c48
--- /dev/null
+++ b/extra/libdv/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 58409 2009-11-07 18:46:07Z eric $
+# Maintainer: Jason Chu <jason@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=libdv
+pkgver=1.0.0
+pkgrel=3
+pkgdesc="The Quasar DV codec (libdv) is a software codec for DV video"
+arch=('i686' 'x86_64')
+url="http://libdv.sourceforge.net/"
+license=('LGPL')
+depends=('popt')
+makedepends=('pkgconfig' 'gtk' 'libxv')
+optdepends=('gtk: for using playdv' 'libxv: for using playdv')
+options=('!libtool')
+source=(http://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.gz)
+md5sums=('f895162161cfa4bb4a94c070a7caa6c7')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ ./configure --prefix=/usr || return 1
+ make || return 1
+ make DESTDIR="$pkgdir" install || return 1
+}
diff --git a/extra/libdvbpsi/PKGBUILD b/extra/libdvbpsi/PKGBUILD
new file mode 100644
index 000000000..77152f082
--- /dev/null
+++ b/extra/libdvbpsi/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 80128 2010-05-12 16:41:47Z andrea $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Gilles CHAUVIN <gcnweb@gmail.com>
+
+pkgname=libdvbpsi
+pkgver=0.1.7
+pkgrel=1
+pkgdesc="A library designed for decoding and generation of MPEG TS and DVB PSI tables"
+arch=('i686' 'x86_64')
+license=('GPL')
+depends=('glibc')
+options=('!libtool')
+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=('af419575719e356b908b0c6946499052')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ ./configure --prefix=/usr
+ make || return 1
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make prefix="${pkgdir}/usr" install || return 1
+}
diff --git a/extra/libdvdcss/PKGBUILD b/extra/libdvdcss/PKGBUILD
new file mode 100644
index 000000000..6317b615b
--- /dev/null
+++ b/extra/libdvdcss/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 102948 2010-12-13 12:51:30Z stephane $
+# Maintainer: Stéphane Gaudreault <stephane@archlinux.org>
+# Contributor: arjan <arjan@archlinux.org>
+# Contributor Sarah Hay <sarahhay@mb.sympatico.ca>
+
+pkgname=libdvdcss
+pkgver=1.2.10
+pkgrel=2
+pkgdesc="A portable abstraction library for DVD decryption"
+url="http://www.videolan.org/libdvdcss"
+arch=('i686' 'x86_64')
+license=('GPL')
+depends=('glibc')
+options=('!libtool')
+source=(http://download.videolan.org/pub/${pkgname}/${pkgver}/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('7c933d011e34c218048d48f0c1a8b4ff56798dcd')
+
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="$pkgdir" install
+}
diff --git a/extra/libdvdnav/PKGBUILD b/extra/libdvdnav/PKGBUILD
new file mode 100644
index 000000000..a593b3a71
--- /dev/null
+++ b/extra/libdvdnav/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 69820 2010-02-22 22:23:44Z giovanni $
+# Maintainer: arjan <arjan@archlinux.org>
+# contributor Sarah Hay <sarahhay@mb.sympatico.ca>
+
+pkgname=libdvdnav
+pkgver=4.1.3
+pkgrel=2
+pkgdesc="The library for xine-dvdnav plugin."
+arch=(i686 x86_64)
+license=('GPL')
+url="http://www.mplayerhq.hu/MPlayer/releases/dvdnav/"
+depends=('libdvdread>=4.1.3')
+options=(!libtool)
+source=(http://www.mplayerhq.hu/MPlayer/releases/dvdnav/${pkgname}-${pkgver}.tar.bz2
+ deadlock.patch)
+md5sums=('d62383c45b28816771e283515f2c27fa'
+ '864529165a1136ae4c1ccbc7b43cdb1a')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ patch -Np1 -i ${srcdir}/deadlock.patch || return 1
+
+ ./autogen.sh --prefix=/usr || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/libdvdnav/deadlock.patch b/extra/libdvdnav/deadlock.patch
new file mode 100644
index 000000000..f00433e67
--- /dev/null
+++ b/extra/libdvdnav/deadlock.patch
@@ -0,0 +1,17 @@
+--- a/src/dvdnav.c 2009-11-08 16:58:25.000000000 +0300
++++ b/src/dvdnav.c 2009-11-08 16:58:52.000000000 +0300
+@@ -180,12 +180,13 @@
+ pthread_mutex_unlock(&this->vm_lock);
+ return DVDNAV_STATUS_ERR;
+ }
++ pthread_mutex_unlock(&this->vm_lock);
++
+ #ifdef LOG_DEBUG
+ fprintf(MSG_OUT, "libdvdnav: clearing dvdnav\n");
+ #endif
+ result = dvdnav_clear(this);
+
+- pthread_mutex_unlock(&this->vm_lock);
+ return result;
+ }
+
diff --git a/extra/libdvdread/DVDFileStat.patch b/extra/libdvdread/DVDFileStat.patch
new file mode 100644
index 000000000..b48a2faeb
--- /dev/null
+++ b/extra/libdvdread/DVDFileStat.patch
@@ -0,0 +1,237 @@
+diff -pruN libdvdread-4.1.3/src/dvd_reader.c libdvdread-4.1.3.new/src/dvd_reader.c
+--- libdvdread-4.1.3/src/dvd_reader.c 2008-09-06 23:55:51.000000000 +0200
++++ libdvdread-4.1.3.new/src/dvd_reader.c 2009-02-28 01:36:20.000000000 +0100
+@@ -889,6 +889,187 @@ void DVDCloseFile( dvd_file_t *dvd_file
+ }
+ }
+
++static int DVDFileStatVOBUDF(dvd_reader_t *dvd, int title,
++ int menu, dvd_stat_t *statbuf)
++{
++ char filename[ MAX_UDF_FILE_NAME_LEN ];
++ uint32_t size;
++ off_t tot_size;
++ off_t parts_size[9];
++ int nr_parts = 0;
++ int n;
++
++ if( title == 0 ) {
++ sprintf( filename, "/VIDEO_TS/VIDEO_TS.VOB" );
++ } else {
++ sprintf( filename, "/VIDEO_TS/VTS_%02d_%d.VOB", title, menu ? 0 : 1 );
++ }
++ if(!UDFFindFile( dvd, filename, &size )) {
++ return -1;
++ }
++ tot_size = size;
++ nr_parts = 1;
++ parts_size[0] = size;
++
++ if( !menu ) {
++ int cur;
++
++ for( cur = 2; cur < 10; cur++ ) {
++ sprintf( filename, "/VIDEO_TS/VTS_%02d_%d.VOB", title, cur );
++ if( !UDFFindFile( dvd, filename, &size ) ) {
++ break;
++ }
++ parts_size[nr_parts] = size;
++ tot_size += size;
++ nr_parts++;
++ }
++ }
++
++ statbuf->size = tot_size;
++ statbuf->nr_parts = nr_parts;
++ for(n = 0; n < nr_parts; n++) {
++ statbuf->parts_size[n] = parts_size[n];
++ }
++ return 0;
++}
++
++
++static int DVDFileStatVOBPath( dvd_reader_t *dvd, int title,
++ int menu, dvd_stat_t *statbuf )
++{
++ char filename[ MAX_UDF_FILE_NAME_LEN ];
++ char full_path[ PATH_MAX + 1 ];
++ struct stat fileinfo;
++ off_t tot_size;
++ off_t parts_size[9];
++ int nr_parts = 0;
++ int n;
++
++
++
++ if( title == 0 ) {
++ sprintf( filename, "VIDEO_TS.VOB" );
++ } else {
++ sprintf( filename, "VTS_%02d_%d.VOB", title, menu ? 0 : 1 );
++ }
++ if( !findDVDFile( dvd, filename, full_path ) ) {
++ return -1;
++ }
++
++ if( stat( full_path, &fileinfo ) < 0 ) {
++ fprintf( stderr, "libdvdread: Can't stat() %s.\n", filename );
++ return -1;
++ }
++
++
++ tot_size = fileinfo.st_size;
++ nr_parts = 1;
++ parts_size[0] = fileinfo.st_size;
++
++ if( !menu ) {
++ int cur;
++
++ for( cur = 2; cur < 10; cur++ ) {
++
++ sprintf( filename, "VTS_%02d_%d.VOB", title, cur );
++ if( !findDVDFile( dvd, filename, full_path ) ) {
++ break;
++ }
++
++ if( stat( full_path, &fileinfo ) < 0 ) {
++ fprintf( stderr, "libdvdread: Can't stat() %s.\n", filename );
++ break;
++ }
++
++ parts_size[nr_parts] = fileinfo.st_size;
++ tot_size += parts_size[nr_parts];
++ nr_parts++;
++ }
++ }
++
++ statbuf->size = tot_size;
++ statbuf->nr_parts = nr_parts;
++ for(n = 0; n < nr_parts; n++) {
++ statbuf->parts_size[n] = parts_size[n];
++ }
++ return 0;
++}
++
++
++int DVDFileStat(dvd_reader_t *dvd, int titlenum,
++ dvd_read_domain_t domain, dvd_stat_t *statbuf)
++{
++ char filename[ MAX_UDF_FILE_NAME_LEN ];
++ char full_path[ PATH_MAX + 1 ];
++ struct stat fileinfo;
++ uint32_t size;
++
++ /* Check arguments. */
++ if( dvd == NULL || titlenum < 0 ) {
++ errno = EINVAL;
++ return -1;
++ }
++
++ switch( domain ) {
++ case DVD_READ_INFO_FILE:
++ if( titlenum == 0 ) {
++ sprintf( filename, "/VIDEO_TS/VIDEO_TS.IFO" );
++ } else {
++ sprintf( filename, "/VIDEO_TS/VTS_%02i_0.IFO", titlenum );
++ }
++ break;
++ case DVD_READ_INFO_BACKUP_FILE:
++ if( titlenum == 0 ) {
++ sprintf( filename, "/VIDEO_TS/VIDEO_TS.BUP" );
++ } else {
++ sprintf( filename, "/VIDEO_TS/VTS_%02i_0.BUP", titlenum );
++ }
++ break;
++ case DVD_READ_MENU_VOBS:
++ if( dvd->isImageFile ) {
++ return DVDFileStatVOBUDF( dvd, titlenum, 1, statbuf );
++ } else {
++ return DVDFileStatVOBPath( dvd, titlenum, 1, statbuf );
++ }
++ break;
++ case DVD_READ_TITLE_VOBS:
++ if( titlenum == 0 ) {
++ return -1;
++ }
++ if( dvd->isImageFile ) {
++ return DVDFileStatVOBUDF( dvd, titlenum, 0, statbuf );
++ } else {
++ return DVDFileStatVOBPath( dvd, titlenum, 0, statbuf );
++ }
++ break;
++ default:
++ fprintf( stderr, "libdvdread: Invalid domain for file stat.\n" );
++ errno = EINVAL;
++ return -1;
++ }
++
++ if( dvd->isImageFile ) {
++ if( UDFFindFile( dvd, filename, &size ) ) {
++ statbuf->size = size;
++ statbuf->nr_parts = 1;
++ statbuf->parts_size[0] = size;
++ return 0;
++ }
++ } else {
++ if( findDVDFile( dvd, filename, full_path ) ) {
++ if( stat( full_path, &fileinfo ) < 0 ) {
++ fprintf( stderr, "libdvdread: Can't stat() %s.\n", filename );
++ } else {
++ statbuf->size = fileinfo.st_size;
++ statbuf->nr_parts = 1;
++ statbuf->parts_size[0] = statbuf->size;
++ return 0;
++ }
++ }
++ }
++ return -1;
++}
++
+ /* Internal, but used from dvd_udf.c */
+ int UDFReadBlocksRaw( dvd_reader_t *device, uint32_t lb_number,
+ size_t block_count, unsigned char *data,
+diff -pruN libdvdread-4.1.3/src/dvd_reader.h libdvdread-4.1.3.new/src/dvd_reader.h
+--- libdvdread-4.1.3/src/dvd_reader.h 2008-09-06 23:55:51.000000000 +0200
++++ libdvdread-4.1.3.new/src/dvd_reader.h 2009-02-28 01:36:49.000000000 +0100
+@@ -115,6 +115,42 @@ typedef enum {
+ } dvd_read_domain_t;
+
+ /**
++ *
++ */
++typedef struct {
++ off_t size; /**< Total size of file in bytes */
++ int nr_parts; /**< Number of file parts */
++ off_t parts_size[9]; /**< Size of each part in bytes */
++} dvd_stat_t;
++
++/**
++ * Stats a file on the DVD given the title number and domain.
++ * The information about the file is stored in a dvd_stat_t
++ * which contains information about the size of the file and
++ * the number of parts in case of a multipart file and the respective
++ * sizes of the parts.
++ * A multipart file is for instance VTS_02_1.VOB, VTS_02_2.VOB, VTS_02_3.VOB
++ * The size of VTS_02_1.VOB will be stored in stat->parts_size[0],
++ * VTS_02_2.VOB in stat->parts_size[1], ...
++ * The total size (sum of all parts) is stored in stat->size and
++ * stat->nr_parts will hold the number of parts.
++ * Only DVD_READ_TITLE_VOBS (VTS_??_[1-9].VOB) can be multipart files.
++ *
++ * This function is only of use if you want to get the size of each file
++ * in the filesystem. These sizes are not needed to use any other
++ * functions in libdvdread.
++ *
++ * @param dvd A dvd read handle.
++ * @param titlenum Which Video Title Set should be used, VIDEO_TS is 0.
++ * @param domain Which domain.
++ * @param stat Pointer to where the result is stored.
++ * @return If successful 0, otherwise -1.
++ *
++ * int DVDFileStat(dvd, titlenum, domain, stat);
++ */
++int DVDFileStat(dvd_reader_t *, int, dvd_read_domain_t, dvd_stat_t *);
++
++/**
+ * Opens a file on the DVD given the title number and domain.
+ *
+ * If the title number is 0, the video manager information is opened
diff --git a/extra/libdvdread/PKGBUILD b/extra/libdvdread/PKGBUILD
new file mode 100644
index 000000000..dcdbf47d9
--- /dev/null
+++ b/extra/libdvdread/PKGBUILD
@@ -0,0 +1,35 @@
+# $Id: PKGBUILD 80196 2010-05-13 15:59:09Z andrea $
+# Maintainer:
+# Contributor: Thomas Baechler <thomas@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=libdvdread
+pkgver=4.1.3
+pkgrel=2
+pkgdesc="Provides a simple foundation for reading DVD video disks"
+arch=(i686 x86_64)
+url="http://www.mplayerhq.hu/MPlayer/releases/dvdnav/"
+license=('GPL')
+depends=('glibc')
+makedepends=('libdvdcss')
+optdepends=('libdvdcss: for decoding encrypted DVDs')
+options=('!libtool')
+source=("http://www.mplayerhq.hu/MPlayer/releases/dvdnav/${pkgname}-${pkgver}.tar.bz2"
+ 'DVDFileStat.patch')
+md5sums=('6dc068d442c85a3cdd5ad3da75f6c6e8'
+ '7314874e246634019be929a96340437a')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ # http://lists.mplayerhq.hu/pipermail/dvdnav-discuss/2009-February/000986.html (FS#19324)
+ patch -Np1 -i ${srcdir}/DVDFileStat.patch || return 1
+
+ ./autogen.sh --prefix=/usr || return 1
+ make || return 1
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/libebml/PKGBUILD b/extra/libebml/PKGBUILD
new file mode 100644
index 000000000..2367625e5
--- /dev/null
+++ b/extra/libebml/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 108561 2011-02-01 17:18:01Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: 03/08/04 <lefungus@altern.org>
+
+pkgname=libebml
+pkgver=1.2.0
+pkgrel=1
+pkgdesc="Extensible Binary Meta Language library"
+arch=('i686' 'x86_64')
+url="http://dl.matroska.org/downloads/libebml/"
+license=('LGPL')
+depends=('gcc-libs')
+source=("${url}/${pkgname}-${pkgver}.tar.bz2")
+md5sums=('26fbaa556bb497c1134d33b84ab34443')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}/make/linux"
+ make || return 1
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}/make/linux"
+ make prefix="${pkgdir}/usr" install || return 1
+}
diff --git a/extra/libepc/PKGBUILD b/extra/libepc/PKGBUILD
new file mode 100644
index 000000000..22fd2ca7b
--- /dev/null
+++ b/extra/libepc/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: PKGBUILD 73829 2010-03-28 19:11:48Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libepc
+pkgver=0.3.11
+pkgrel=1
+pkgdesc="Easy Publish and Consume Library"
+arch=(i686 x86_64)
+license=('LGPL')
+url="http://live.gnome.org/libepc"
+depends=('gtk2>=2.20.0' 'avahi>=0.6.25' 'libsoup>=2.29.91')
+makedepends=('intltool')
+options=('!libtool' '!makeflags')
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/0.3/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('ec38fe4206fab7a8939fb351d7b419cc681ac44afcdd5aab9bdb8fc3386df25c')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-static || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/libetpan/PKGBUILD b/extra/libetpan/PKGBUILD
new file mode 100644
index 000000000..f28bf561b
--- /dev/null
+++ b/extra/libetpan/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 96521 2010-10-22 00:32:21Z allan $
+# Maintainer: Andreas Radke <andyrtr@archlinux.org>
+
+pkgname=libetpan
+pkgver=1.0
+pkgrel=2
+pkgdesc="A portable middleware for email access"
+arch=('i686' 'x86_64')
+url="http://www.etpan.org/"
+license=("custom:etpan")
+depends=('db>=5.1' 'libsasl>=2.1.23' 'curl>=7.19.5' 'expat>=2.0.1-1')
+options=('!libtool')
+source=(http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.gz)
+md5sums=('5addc766141a0b1d29ee1ca4ba1b6808')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr --disable-static
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+ install -Dm644 COPYRIGHT ${pkgdir}/usr/share/licenses/$pkgname/license.txt
+}
diff --git a/extra/libexif/PKGBUILD b/extra/libexif/PKGBUILD
new file mode 100644
index 000000000..9755ed6a5
--- /dev/null
+++ b/extra/libexif/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 109066 2011-02-05 16:41:20Z andyrtr $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Tobias Kieslich <tobias@justdreams.de>
+
+pkgname=libexif
+pkgver=0.6.20
+pkgrel=1
+pkgdesc="A library to parse an EXIF file and read the data from those tags"
+arch=(i686 x86_64)
+license=('LGPL')
+url="http://sourceforge.net/projects/libexif"
+depends=('glibc')
+options=('!libtool')
+source=(http://downloads.sf.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('19844ce6b5d075af16f0d45de1e8a6a3')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/libffado/PKGBUILD b/extra/libffado/PKGBUILD
new file mode 100644
index 000000000..e97c9273f
--- /dev/null
+++ b/extra/libffado/PKGBUILD
@@ -0,0 +1,59 @@
+# $Id: PKGBUILD 106834 2011-01-19 12:28:15Z andrea $
+# Maintainer: Ray Rashif <schivmeister@gmail.com>
+# Contributor: galiyosha@gmail.com
+# Contributor: Jon Kristian Nilsen <jokr.nilsen@gmail.com>
+
+pkgname=libffado
+pkgver=2.0.1
+pkgrel=3
+pkgdesc="Driver for FireWire audio devices"
+arch=('i686' 'x86_64')
+url="http://www.ffado.org/"
+license=('GPL')
+depends=('libiec61883' 'libavc1394' 'libsigc++'
+ 'libxml++' 'alsa-lib' 'dbus')
+makedepends=('scons' 'python2-qt')
+optdepends=('python2-qt: mixer applet')
+provides=('ffado')
+source=(http://www.ffado.org/files/$pkgname-$pkgver.tar.gz)
+md5sums=('786f31facd417e6207e429f50af0e15e')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ # hack to use CFLAGS without optimising
+ sed -i 's/-O2//g' SConstruct
+
+ if [ "$CARCH" = "x86_64" ]; then
+ sed -i "s/-m64/-m64 $CFLAGS/g" SConstruct
+ else
+ sed -i "s/-m32/-m32 $CFLAGS/g" SConstruct
+ fi
+
+ # python2 fix
+ sed -i 's:python $SOURCE:python2 $SOURCE:' SConstruct
+ sed -i 's:python support/tools:python2 support/tools:' \
+ support/tools/SConscript
+
+ scons PREFIX=/usr #ENABLE_OPTIMIZATIONS=True
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ scons DESTDIR="$pkgdir/" WILL_DEAL_WITH_XDG_MYSELF="True" install
+
+ # python2 fix
+ for i in $(grep '^#!.*bin.*python' -R "$pkgdir" | sed 's/:.*//'); do
+ sed -i 's:^#!.*bin.*python:#!/usr/bin/python2:' "$i"
+ done
+
+ # desktop files & icons
+ install -Dm644 support/xdg/ffado.org-ffadomixer.desktop \
+ "$pkgdir/usr/share/applications/ffadomixer.desktop"
+
+ install -Dm644 support/xdg/hi64-apps-ffado.png \
+ "$pkgdir/usr/share/pixmaps/$pkgname.png"
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/extra/libffi/PKGBUILD b/extra/libffi/PKGBUILD
new file mode 100644
index 000000000..555f0eb4e
--- /dev/null
+++ b/extra/libffi/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 72255 2010-03-13 20:43:14Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libffi
+pkgver=3.0.9
+pkgrel=1
+pkgdesc="A portable, high level programming interface to various calling conventions."
+arch=('i686' 'x86_64')
+license=('MIT')
+url="http://sourceware.org/libffi"
+depends=('glibc' 'texinfo')
+options=('!libtool' 'force')
+install=libffi.install
+source=(ftp://sourceware.org/pub/libffi/libffi-${pkgver}.tar.gz)
+md5sums=('1f300a7a7f975d4046f51c3022fa5ff1')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1
+}
diff --git a/extra/libffi/libffi.install b/extra/libffi/libffi.install
new file mode 100644
index 000000000..151b79b60
--- /dev/null
+++ b/extra/libffi/libffi.install
@@ -0,0 +1,18 @@
+infodir=/usr/share/info
+filelist=(libffi.info.gz)
+
+post_install() {
+ for file in ${filelist[@]}; do
+ install-info $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ for file in ${filelist[@]}; do
+ install-info --delete $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
diff --git a/extra/libfm/0001-filename-with-spaces-not-supported.patch b/extra/libfm/0001-filename-with-spaces-not-supported.patch
new file mode 100644
index 000000000..568f6dc38
--- /dev/null
+++ b/extra/libfm/0001-filename-with-spaces-not-supported.patch
@@ -0,0 +1,345 @@
+From 96fa31c757189c7c5f60d4de4c2df236d2cba0ea Mon Sep 17 00:00:00 2001
+From: Hong Jen Yee (PCMan) <pcman.tw@gmail.com>
+Date: Wed, 20 Oct 2010 06:40:51 +0800
+Subject: [PATCH] Fix #3089625 - Filenames with spaces not supported in copy/paste.
+
+---
+ src/base/fm-file-launcher.c | 2 +-
+ src/base/fm-folder.c | 6 +-
+ src/base/fm-path.c | 2 +-
+ src/gtk/fm-folder-view.c | 130 +++++++++++++++++++++---------------------
+ src/gtk/fm-gtk-utils.c | 10 +--
+ src/gtk/fm-path-entry.c | 2 +-
+ 6 files changed, 75 insertions(+), 77 deletions(-)
+
+diff --git a/src/base/fm-file-launcher.c b/src/base/fm-file-launcher.c
+index 3857c33..c356249 100644
+--- a/src/base/fm-file-launcher.c
++++ b/src/base/fm-file-launcher.c
+@@ -91,7 +91,7 @@ gboolean fm_launch_desktop_entry(GAppLaunchContext* ctx, const char* file_or_id,
+ * e.g: If this URL points to the another desktop entry file, and it
+ * points to yet another desktop entry file, this can create a
+ * infinite loop. This is a extremely rare case. */
+- FmPath* path = fm_path_new(url);
++ FmPath* path = fm_path_new_for_uri(url);
+ _uris = g_list_prepend(_uris, path);
+ ret = fm_launch_paths(ctx, _uris, launcher, user_data);
+ g_list_free(_uris);
+diff --git a/src/base/fm-folder.c b/src/base/fm-folder.c
+index ccbb3cc..3474937 100644
+--- a/src/base/fm-folder.c
++++ b/src/base/fm-folder.c
+@@ -334,8 +334,8 @@ static void on_job_finished(FmDirListJob* job, FmFolder* folder)
+
+ static FmJobErrorAction on_job_err(FmDirListJob* job, GError* err, FmJobErrorSeverity severity, FmFolder* folder)
+ {
+- FmJobErrorAction ret;
+- g_signal_emit(folder, signals[ERROR], 0, err, severity, &ret);
++ FmJobErrorAction ret;
++ g_signal_emit(folder, signals[ERROR], 0, err, severity, &ret);
+ return ret;
+ }
+
+@@ -470,7 +470,7 @@ FmFolder* fm_folder_get_for_path(FmPath* path)
+
+ FmFolder* fm_folder_get_for_path_name(const char* path)
+ {
+- FmPath* fm_path = fm_path_new(path);
++ FmPath* fm_path = fm_path_new_for_str(path);
+ FmFolder* folder = fm_folder_get_internal(fm_path, NULL);
+ fm_path_unref(fm_path);
+ return folder;
+diff --git a/src/base/fm-path.c b/src/base/fm-path.c
+index ca62256..8b31de2 100644
+--- a/src/base/fm-path.c
++++ b/src/base/fm-path.c
+@@ -926,7 +926,7 @@ FmPathList* fm_path_list_new_from_uris(const char** uris)
+ FmPathList* pl = fm_path_list_new();
+ for(uri = uris; *uri; ++uri)
+ {
+- FmPath* path = fm_path_new(*uri);
++ FmPath* path = fm_path_new_for_uri(*uri);
+ fm_list_push_tail_noref(pl, path);
+ }
+ return pl;
+diff --git a/src/gtk/fm-folder-view.c b/src/gtk/fm-folder-view.c
+index fab88c0..9943015 100644
+--- a/src/gtk/fm-folder-view.c
++++ b/src/gtk/fm-folder-view.c
+@@ -41,8 +41,8 @@
+
+ enum{
+ CHDIR,
+- LOADED,
+- STATUS,
++ LOADED,
++ STATUS,
+ CLICKED,
+ SEL_CHANGED,
+ SORT_CHANGED,
+@@ -82,7 +82,7 @@ static void fm_folder_view_class_init(FmFolderViewClass *klass)
+ {
+ GObjectClass *g_object_class;
+ GtkWidgetClass *widget_class;
+- FmFolderViewClass *fv_class;
++ FmFolderViewClass *fv_class;
+ g_object_class = G_OBJECT_CLASS(klass);
+ g_object_class->finalize = fm_folder_view_finalize;
+ widget_class = GTK_WIDGET_CLASS(klass);
+@@ -165,19 +165,19 @@ gboolean on_folder_view_focus_in(GtkWidget* widget, GdkEventFocus* evt)
+
+ void on_chdir(FmFolderView* fv, FmPath* dir_path)
+ {
+- GtkWidget* toplevel = gtk_widget_get_toplevel((GtkWidget*)fv);
+- if(GTK_WIDGET_REALIZED(toplevel))
+- {
+- GdkCursor* cursor = gdk_cursor_new(GDK_WATCH);
+- gdk_window_set_cursor(toplevel->window, cursor);
+- }
++ GtkWidget* toplevel = gtk_widget_get_toplevel((GtkWidget*)fv);
++ if(GTK_WIDGET_REALIZED(toplevel))
++ {
++ GdkCursor* cursor = gdk_cursor_new(GDK_WATCH);
++ gdk_window_set_cursor(toplevel->window, cursor);
++ }
+ }
+
+ void on_loaded(FmFolderView* fv, FmPath* dir_path)
+ {
+- GtkWidget* toplevel = gtk_widget_get_toplevel((GtkWidget*)fv);
+- if(GTK_WIDGET_REALIZED(toplevel))
+- gdk_window_set_cursor(toplevel->window, NULL);
++ GtkWidget* toplevel = gtk_widget_get_toplevel((GtkWidget*)fv);
++ if(GTK_WIDGET_REALIZED(toplevel))
++ gdk_window_set_cursor(toplevel->window, NULL);
+ }
+
+ void on_status(FmFolderView* fv, const char* msg)
+@@ -187,15 +187,15 @@ void on_status(FmFolderView* fv, const char* msg)
+
+ void on_model_loaded(FmFolderModel* model, FmFolderView* fv)
+ {
+- FmFolder* folder = model->dir;
+- char* msg;
+- /* FIXME: prevent direct access to data members */
+- g_signal_emit(fv, signals[LOADED], 0, folder->dir_path);
++ FmFolder* folder = model->dir;
++ char* msg;
++ /* FIXME: prevent direct access to data members */
++ g_signal_emit(fv, signals[LOADED], 0, folder->dir_path);
+
+ /* FIXME: show number of hidden files and available disk spaces. */
+- msg = g_strdup_printf("%d files are listed.", fm_list_get_length(folder->files) );
+- g_signal_emit(fv, signals[STATUS], 0, msg);
+- g_free(msg);
++ msg = g_strdup_printf("%d files are listed.", fm_list_get_length(folder->files) );
++ g_signal_emit(fv, signals[STATUS], 0, msg);
++ g_free(msg);
+ }
+
+ FmJobErrorAction on_folder_err(FmFolder* folder, GError* err, FmJobErrorSeverity severity, FmFolderView* fv)
+@@ -326,8 +326,8 @@ static void fm_folder_view_finalize(GObject *object)
+ if( self->model )
+ g_object_unref(self->model);
+ }
+- g_object_unref(self->dnd_src);
+- g_object_unref(self->dnd_dest);
++ g_object_unref(self->dnd_src);
++ g_object_unref(self->dnd_dest);
+
+ if(self->cwd)
+ fm_path_unref(self->cwd);
+@@ -715,15 +715,15 @@ void fm_folder_view_set_mode(FmFolderView* fv, FmFolderViewMode mode)
+
+ /* FIXME: maybe calling set_icon_size here is a good idea */
+
+- gtk_drag_source_set(fv->view, GDK_BUTTON1_MASK,
+- fm_default_dnd_src_targets, N_FM_DND_SRC_DEFAULT_TARGETS,
+- GDK_ACTION_COPY|GDK_ACTION_MOVE|GDK_ACTION_LINK|GDK_ACTION_ASK);
++ gtk_drag_source_set(fv->view, GDK_BUTTON1_MASK,
++ fm_default_dnd_src_targets, N_FM_DND_SRC_DEFAULT_TARGETS,
++ GDK_ACTION_COPY|GDK_ACTION_MOVE|GDK_ACTION_LINK|GDK_ACTION_ASK);
+ fm_dnd_src_set_widget(fv->dnd_src, fv->view);
+
+- gtk_drag_dest_set(fv->view, 0,
+- fm_default_dnd_dest_targets, N_FM_DND_DEST_DEFAULT_TARGETS,
+- GDK_ACTION_COPY|GDK_ACTION_MOVE|GDK_ACTION_LINK|GDK_ACTION_ASK);
+- fm_dnd_dest_set_widget(fv->dnd_dest, fv->view);
++ gtk_drag_dest_set(fv->view, 0,
++ fm_default_dnd_dest_targets, N_FM_DND_DEST_DEFAULT_TARGETS,
++ GDK_ACTION_COPY|GDK_ACTION_MOVE|GDK_ACTION_LINK|GDK_ACTION_ASK);
++ fm_dnd_dest_set_widget(fv->dnd_dest, fv->view);
+ g_signal_connect_after(fv->view, "drag-motion", G_CALLBACK(on_drag_motion), fv);
+ g_signal_connect(fv->view, "drag-leave", G_CALLBACK(on_drag_leave), fv);
+ g_signal_connect(fv->view, "drag-drop", G_CALLBACK(on_drag_drop), fv);
+@@ -739,9 +739,9 @@ void fm_folder_view_set_mode(FmFolderView* fv, FmFolderViewMode mode)
+ gtk_widget_grab_focus(fv->view);
+ }
+ else
+- {
++ {
+ /* g_debug("same mode"); */
+- }
++ }
+ }
+
+ FmFolderViewMode fm_folder_view_get_mode(FmFolderView* fv)
+@@ -785,7 +785,7 @@ void fm_folder_view_sort(FmFolderView* fv, GtkSortType type, int by)
+ fv->sort_by = by;
+ if(fv->model)
+ gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(fv->model),
+- fv->sort_by, fv->sort_type);
++ fv->sort_by, fv->sort_type);
+ }
+
+ GtkSortType fm_folder_view_get_sort_type(FmFolderView* fv)
+@@ -815,18 +815,18 @@ gboolean fm_folder_view_get_show_hidden(FmFolderView* fv)
+
+ gboolean fm_folder_view_chdir_by_name(FmFolderView* fv, const char* path_str)
+ {
+- gboolean ret;
+- FmPath* path;
++ gboolean ret;
++ FmPath* path;
+
+ if( G_UNLIKELY( !path_str ) )
+ return FALSE;
+
+- path = fm_path_new(path_str);
+- if(!path) /* might be a malformed path */
+- return FALSE;
+- ret = fm_folder_view_chdir(fv, path);
+- fm_path_unref(path);
+- return ret;
++ path = fm_path_new_for_str(path_str);
++ if(!path) /* might be a malformed path */
++ return FALSE;
++ ret = fm_folder_view_chdir(fv, path);
++ fm_path_unref(path);
++ return ret;
+ }
+
+ static void on_folder_unmounted(FmFolder* folder, FmFolderView* fv)
+@@ -912,10 +912,10 @@ gboolean fm_folder_view_chdir(FmFolderView* fv, FmPath* path)
+ }
+ }
+
+- /* FIXME: the signal handler should be able to cancel the loading. */
+- g_signal_emit(fv, signals[CHDIR], 0, path);
+- if(fv->cwd)
+- fm_path_unref(fv->cwd);
++ /* FIXME: the signal handler should be able to cancel the loading. */
++ g_signal_emit(fv, signals[CHDIR], 0, path);
++ if(fv->cwd)
++ fm_path_unref(fv->cwd);
+ fv->cwd = fm_path_ref(path);
+
+ fv->folder = folder = fm_folder_get_for_path(path);
+@@ -1041,12 +1041,12 @@ gboolean on_btn_pressed(GtkWidget* view, GdkEventButton* evt, FmFolderView* fv)
+ if(!fv->model)
+ return FALSE;
+
+- /* FIXME: handle single click activation */
++ /* FIXME: handle single click activation */
+ if( evt->type == GDK_BUTTON_PRESS )
+ {
+- /* special handling for ExoIconView */
+- if(evt->button != 1)
+- {
++ /* special handling for ExoIconView */
++ if(evt->button != 1)
++ {
+ if(fv->mode==FM_FV_ICON_VIEW || fv->mode==FM_FV_COMPACT_VIEW || fv->mode==FM_FV_THUMBNAIL_VIEW)
+ {
+ /* select the item on right click for ExoIconView */
+@@ -1089,27 +1089,27 @@ gboolean on_btn_pressed(GtkWidget* view, GdkEventButton* evt, FmFolderView* fv)
+ gtk_tree_path_free(tp);
+ }
+ }
+- }
++ }
+
+- if(evt->button == 2) /* middle click */
+- type = FM_FV_MIDDLE_CLICK;
+- else if(evt->button == 3) /* right click */
+- type = FM_FV_CONTEXT_MENU;
++ if(evt->button == 2) /* middle click */
++ type = FM_FV_MIDDLE_CLICK;
++ else if(evt->button == 3) /* right click */
++ type = FM_FV_CONTEXT_MENU;
+ }
+
+- if( type != FM_FV_CLICK_NONE )
+- {
+- sels = fm_folder_view_get_selected_tree_paths(fv);
+- if( sels || type == FM_FV_CONTEXT_MENU )
+- {
+- item_clicked(fv, sels ? sels->data : NULL, type);
+- if(sels)
+- {
+- g_list_foreach(sels, (GFunc)gtk_tree_path_free, NULL);
+- g_list_free(sels);
+- }
+- }
+- }
++ if( type != FM_FV_CLICK_NONE )
++ {
++ sels = fm_folder_view_get_selected_tree_paths(fv);
++ if( sels || type == FM_FV_CONTEXT_MENU )
++ {
++ item_clicked(fv, sels ? sels->data : NULL, type);
++ if(sels)
++ {
++ g_list_foreach(sels, (GFunc)gtk_tree_path_free, NULL);
++ g_list_free(sels);
++ }
++ }
++ }
+ return FALSE;
+ }
+
+diff --git a/src/gtk/fm-gtk-utils.c b/src/gtk/fm-gtk-utils.c
+index 23b6f33..07df7d5 100644
+--- a/src/gtk/fm-gtk-utils.c
++++ b/src/gtk/fm-gtk-utils.c
+@@ -149,7 +149,7 @@ FmPath* fm_get_user_input_path(GtkWindow* parent, const char* title, const char*
+ }
+
+ str = _fm_user_input_dialog_run( dlg, GTK_ENTRY( entry ) );
+- path = fm_path_new(str);
++ path = fm_path_new_for_str(str);
+
+ g_free(path_str);
+ g_free(str);
+@@ -261,11 +261,9 @@ FmPath* fm_select_folder(GtkWindow* parent)
+ GTK_RESPONSE_OK, NULL);
+ if( gtk_dialog_run((GtkDialog*)chooser) == GTK_RESPONSE_OK )
+ {
+- char* file = gtk_file_chooser_get_filename(chooser);
+- if(!file)
+- file = gtk_file_chooser_get_uri(chooser);
+- path = fm_path_new(file);
+- g_free(file);
++ GFile* file = gtk_file_chooser_get_file(chooser);
++ path = fm_path_new_for_gfile(file);
++ g_object_unref(file);
+ }
+ else
+ path = NULL;
+diff --git a/src/gtk/fm-path-entry.c b/src/gtk/fm-path-entry.c
+index a57b58d..af60d03 100644
+--- a/src/gtk/fm-path-entry.c
++++ b/src/gtk/fm-path-entry.c
+@@ -163,7 +163,7 @@ static void fm_path_entry_changed(GtkEditable *editable)
+ if( !fm_path_equal_str(priv->path, original_key, key_dir_len) )
+ {
+ gchar* new_path = g_path_get_dirname(original_key);
+- FmPath *new_fm_path = fm_path_new(new_path);
++ FmPath *new_fm_path = fm_path_new_for_str(new_path);
+ g_free(new_path);
+ if( new_fm_path != NULL )
+ {
+--
+1.7.0.1
+
+
diff --git a/extra/libfm/PKGBUILD b/extra/libfm/PKGBUILD
new file mode 100644
index 000000000..ab7df7da9
--- /dev/null
+++ b/extra/libfm/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 110478 2011-02-19 16:45:55Z angvp $
+# Maintainer: Angel Velasquez <angvp@archlinux.org>
+# Maintainer: Juergen Hoetzel <juergen@archlinux.org>
+pkgname=libfm
+pkgver=0.1.14
+pkgrel=4
+pkgdesc="the core of next generation file manager PCManFM"
+url="http://pcmanfm.sourceforge.net/"
+arch=('i686' 'x86_64')
+license=('GPL')
+groups=('lxde')
+options=('!libtool')
+install=libfm.install
+depends=('gtk2' 'menu-cache' 'shared-mime-info' 'udisks')
+source=(http://downloads.sourceforge.net/pcmanfm/$pkgname-$pkgver.tar.gz
+ 0001-filename-with-spaces-not-supported.patch)
+md5sums=('d55e51dced6bb9ef46665243b079761f'
+ '22bf07665db6eb82989cc8111ef5c3bf')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ patch -p1 -i $srcdir/0001-filename-with-spaces-not-supported.patch
+ ./configure --prefix=/usr --sysconfdir=/etc --enable-udisks --with-gnu-ld
+ make
+}
+
+package() {
+ cd $srcdir/$pkgname-$pkgver
+ make DESTDIR=$pkgdir install
+}
diff --git a/extra/libfm/libfm.install b/extra/libfm/libfm.install
new file mode 100644
index 000000000..a2dcc622d
--- /dev/null
+++ b/extra/libfm/libfm.install
@@ -0,0 +1,14 @@
+post_install() {
+ /usr/bin/update-mime-database usr/share/mime > /dev/null
+ /usr/bin/update-desktop-database -q
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
+
+
diff --git a/extra/libfontenc/PKGBUILD b/extra/libfontenc/PKGBUILD
new file mode 100644
index 000000000..1d7ca277f
--- /dev/null
+++ b/extra/libfontenc/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 96490 2010-10-21 21:08:10Z jgc $
+#Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libfontenc
+pkgver=1.1.0
+pkgrel=1
+pkgdesc="X11 font encoding library"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('zlib')
+makedepends=('pkgconfig' 'xproto>=7.0.18')
+options=('!libtool')
+source=(${url}/releases/individual/lib/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('ba158e4c10a1aff2351ef632def03dec0e0ee11e')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-static \
+ --with-encodingsdir=/usr/share/fonts/encodings
+
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/libfprint/50-fprint.rules b/extra/libfprint/50-fprint.rules
new file mode 100644
index 000000000..25feb8332
--- /dev/null
+++ b/extra/libfprint/50-fprint.rules
@@ -0,0 +1,19 @@
+# aes1610.c
+ATTRS{idVendor}=="08ff", ATTRS{idProduct}=="1600", MODE="0664", GROUP="scanner"
+# aes2501.c
+ATTRS{idVendor}=="08ff", ATTRS{idProduct}=="2580", MODE="0664", GROUP="scanner"
+# aes4000.c
+ATTRS{idVendor}=="08ff", ATTRS{idProduct}=="5501", MODE="0664", GROUP="scanner"
+# fdu2000.c
+ATTRS{idVendor}=="1162", ATTRS{idProduct}=="0300", MODE="0664", GROUP="scanner"
+# upektc.c
+ATTRS{idVendor}=="0483", ATTRS{idProduct}=="2015", MODE="0664", GROUP="scanner"
+# upekts.c
+ATTRS{idVendor}=="0483", ATTRS{idProduct}=="2016", MODE="0664", GROUP="scanner"
+# uru4000.c
+ATTRS{idVendor}=="045e", ATTRS{idProduct}=="00bb", MODE="0664", GROUP="scanner"
+ATTRS{idVendor}=="045e", ATTRS{idProduct}=="00bc", MODE="0664", GROUP="scanner"
+ATTRS{idVendor}=="045e", ATTRS{idProduct}=="00bd", MODE="0664", GROUP="scanner"
+ATTRS{idVendor}=="045e", ATTRS{idProduct}=="00ca", MODE="0664", GROUP="scanner"
+ATTRS{idVendor}=="05ba", ATTRS{idProduct}=="0007", MODE="0664", GROUP="scanner"
+ATTRS{idVendor}=="05ba", ATTRS{idProduct}=="000a", MODE="0664", GROUP="scanner"
diff --git a/extra/libfprint/PKGBUILD b/extra/libfprint/PKGBUILD
new file mode 100644
index 000000000..23b1900f0
--- /dev/null
+++ b/extra/libfprint/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 101410 2010-11-29 04:58:17Z allan $
+# Maintainer: Thomas Baechler <thomas@archlinux.org>
+
+pkgname=libfprint
+pkgver=0.0.6
+pkgrel=8
+pkgdesc="Library for fingerprint scanner support in applications"
+arch=('i686' 'x86_64')
+url="http://reactivated.net/fprint/wiki/Main_Page"
+license=('LGPL')
+depends=('libusb-compat' 'imagemagick' 'openssl' 'glib2')
+groups=('fprint')
+options=(!libtool)
+install=fprint.install
+source=(http://downloads.sourceforge.net/sourceforge/fprint/$pkgname-$pkgver.tar.bz2
+ 50-fprint.rules)
+md5sums=('4f47b46021b186488b60aaa97f90fe43' '2c4021484509498fb17bdbe0b6d85ebf')
+sha1sums=('430af91efbefeb2b98fe30215fb33051e4f8efc5' '86e7274711226685dabf7d28f4b93dae85ffb29b')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ ./configure --prefix=/usr #--enable-debug-log
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make DESTDIR="$pkgdir" install
+ install -D -m644 "$srcdir/50-fprint.rules" "$pkgdir/lib/udev/rules.d/70-fprint.rules"
+}
diff --git a/extra/libfprint/fprint.install b/extra/libfprint/fprint.install
new file mode 100644
index 000000000..111cb3661
--- /dev/null
+++ b/extra/libfprint/fprint.install
@@ -0,0 +1,19 @@
+# arg 1: the new package version
+post_install() {
+getent group scanner >/dev/null || usr/sbin/groupadd -g 96 scanner
+ /bin/cat <<THEEND
+NOTE
+----
+Add your user to group 'scanner' to use scanner devices.
+THEEND
+}
+
+# arg 1: the new package version
+# arg 2: the old package version
+post_upgrade() {
+ post_install $1
+}
+
+op=$1
+shift
+$op $*
diff --git a/extra/libfs/PKGBUILD b/extra/libfs/PKGBUILD
new file mode 100644
index 000000000..ee278cfd7
--- /dev/null
+++ b/extra/libfs/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 97194 2010-10-27 14:16:19Z jgc $
+#Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libfs
+pkgver=1.0.3
+pkgrel=1
+pkgdesc="X11 Font Services Library"
+arch=('i686' 'x86_64')
+license=('custom')
+url="http://xorg.freedesktop.org/"
+depends=('glibc' 'xproto' 'fontsproto')
+makedepends=('xorg-util-macros' 'xtrans')
+options=(!libtool)
+source=(${url}/releases/individual/lib/libFS-${pkgver}.tar.bz2)
+sha1sums=('2b33fa17369605303ae70a7de1aa681879249c92')
+
+build() {
+ cd "${srcdir}/libFS-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/libftdi/PKGBUILD b/extra/libftdi/PKGBUILD
new file mode 100644
index 000000000..8d89b2f88
--- /dev/null
+++ b/extra/libftdi/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 101400 2010-11-29 04:43:52Z allan $
+# Contributor: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=libftdi
+pkgver=0.18
+pkgrel=2
+pkgdesc="A library to talk to FTDI chips"
+arch=("i686" "x86_64")
+url="http://www.intra2net.com/en/developer/libftdi/download.php"
+license=("GPL2" "LGPL2.1")
+depends=('libusb-compat')
+makedepends=("boost")
+options=('!libtool')
+source=("http://www.intra2net.com/en/developer/libftdi/download/$pkgname-$pkgver.tar.gz")
+md5sums=('916f65fa68d154621fc0cf1f405f2726')
+sha1sums=('52401db0e7cb90a5d83f82c2859a4f8d44e52579')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ sed -i '/no-install/d' examples/Makefile.in
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make DESTDIR="$pkgdir" install
+}
diff --git a/extra/libfwbuilder/PKGBUILD b/extra/libfwbuilder/PKGBUILD
new file mode 100644
index 000000000..d84df7014
--- /dev/null
+++ b/extra/libfwbuilder/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 112491 2011-03-05 04:49:27Z eric $
+# Maintainer: Kevin Piche <kevin@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=libfwbuilder
+pkgver=4.1.3
+pkgrel=2
+pkgdesc="Support libraries for fwbuilder"
+url="http://www.fwbuilder.org/"
+arch=('i686' 'x86_64')
+license=('GPL')
+depends=('libxslt' 'net-snmp' 'gcc-libs')
+makedepends=('qt')
+source=("http://downloads.sourceforge.net/fwbuilder/${pkgname}-${pkgver}.tar.gz")
+md5sums=('810e832a3cadc625917403f4b191fda2')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./autogen.sh
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make INSTALL_ROOT="${pkgdir}" install
+}
diff --git a/extra/libgadu/PKGBUILD b/extra/libgadu/PKGBUILD
new file mode 100644
index 000000000..da245d5d6
--- /dev/null
+++ b/extra/libgadu/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 114618 2011-03-14 16:59:52Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Mateusz Herych <heniekk@gmail.com>
+
+pkgname=libgadu
+pkgver=1.10.1
+pkgrel=1
+pkgdesc="This library implements the client side of the Gadu-Gadu protocol"
+arch=('i686' 'x86_64')
+url="http://toxygen.net/libgadu/"
+license=('GPL')
+depends=('openssl')
+options=('!libtool')
+source=("http://toxygen.net/${pkgname}/files/${pkgname}-${pkgver}.tar.gz")
+md5sums=('4dd528bc0627e4bd59f79b07f0e8cdbc')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr \
+ --disable-static \
+ --enable-shared \
+ --with-pthread
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/libgail-gnome/PKGBUILD b/extra/libgail-gnome/PKGBUILD
new file mode 100644
index 000000000..fc074755f
--- /dev/null
+++ b/extra/libgail-gnome/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 111400 2011-02-26 15:19:19Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libgail-gnome
+pkgver=1.20.4
+pkgrel=1
+pkgdesc="GNOME Accessibility Implementation Library for gnomeui and libbonoboui"
+arch=(i686 x86_64)
+license=('LGPL')
+depends=('gnome-panel-bonobo' 'at-spi' 'libgnomeui')
+makedepends=('intltool' 'pkgconfig')
+options=('!libtool' '!emptydirs')
+groups=('gnome-extra')
+install=libgail-gnome.install
+url="http://www.gnome.org"
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/1.20/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('c28f6757bdcf0651883837fc77708aa6b826438c1b96c39332eb9d53ae1bf0b0')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var
+ make
+ make -j1 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" ${pkgdir}/etc/gconf/schemas/*.schemas
+ rm -f ${pkgdir}/etc/gconf/schemas/*.schemas
+}
diff --git a/extra/libgail-gnome/libgail-gnome.install b/extra/libgail-gnome/libgail-gnome.install
new file mode 100644
index 000000000..81e110fd1
--- /dev/null
+++ b/extra/libgail-gnome/libgail-gnome.install
@@ -0,0 +1,19 @@
+pkgname=libgail-gnome
+
+post_install() {
+ usr/sbin/gconfpkg --install ${pkgname}
+}
+
+pre_upgrade() {
+ pre_remove $1
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ if [ -e usr/share/gconf/schemas/${pkgname}.schemas ]; then
+ usr/sbin/gconfpkg --uninstall ${pkgname}
+ fi
+}
diff --git a/extra/libgda/PKGBUILD b/extra/libgda/PKGBUILD
new file mode 100644
index 000000000..f6ff2bcd0
--- /dev/null
+++ b/extra/libgda/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id: PKGBUILD 115163 2011-03-17 10:00:41Z andrea $
+# Maintainer: tobias <tobias@archlinux.org>
+# Contributor: Tobias Kieslich <tobias@justdreams.de>
+
+pkgname=libgda
+pkgver=4.2.3
+pkgrel=3
+pkgdesc="data abstraction layer; with mysql, pgsql, xml, sqlite providers"
+arch=(i686 x86_64)
+license=('GPL')
+depends=('glib2>=2.26.1' 'libxslt' 'db>=5.1.25' 'ncurses>=5.8'
+ 'libsoup>=2.32.2' 'libmysqlclient>=5.5.10' 'postgresql-libs>=9.0.3')
+makedepends=('intltool')
+options=('!libtool' '!makeflags')
+url="http://www.gnome-db.org"
+source=(http://ftp.gnome.org/pub/GNOME/sources/${pkgname}/4.2/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('3da161f0dca5d080d0cb7bee7cce9bc918abd42e0e0d5683acff9dfe2e158cb5')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ sed -i -e 's/python/python2/' libgda-report/RML/trml*/trml*.py
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --with-bdb=/usr --with-bdb-libdir-name=lib \
+ --disable-static
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/libgdata/PKGBUILD b/extra/libgdata/PKGBUILD
new file mode 100644
index 000000000..324aa5c0c
--- /dev/null
+++ b/extra/libgdata/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id: PKGBUILD 92480 2010-09-30 13:16:47Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libgdata
+pkgver=0.6.5
+pkgrel=1
+pkgdesc="GLib-based library for accessing online service APIs using the GData protocol"
+arch=('i686' 'x86_64')
+license=('GPL')
+depends=('libsoup-gnome>=2.32.0')
+makedepends=('pkgconfig' 'intltool' 'gobject-introspection')
+url="http://www.gnome.org"
+options=('!libtool')
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/0.6/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('dcb82f7162d69549512444376da2cdea65650ee4dae4d00eed7fbbd3387ddf2c')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --disable-static
+ make
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/libgdiplus/PKGBUILD b/extra/libgdiplus/PKGBUILD
new file mode 100644
index 000000000..f8d253881
--- /dev/null
+++ b/extra/libgdiplus/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 111499 2011-02-27 11:15:27Z daniel $
+# Maintainer: Daniel Isenmann <daniel@archlinux.org>
+
+pkgname=libgdiplus
+pkgver=2.10
+pkgrel=1
+pkgdesc="An Open Source Implementation of the GDI+ API"
+arch=(i686 x86_64)
+license=('MPL' 'LGPL')
+url="http://www.mono-project.com"
+depends=('libtiff>=3.9.2-2' 'cairo>=1.8.10' 'giflib' 'glib2>=2.24.0' 'libexif')
+makedepends=('pkgconfig')
+options=('!libtool')
+source=(http://ftp.novell.com/pub/mono/sources/${pkgname}/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('451966e8f637e3a1f02d1d30f900255d')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --with-cairo=system || return 1
+ make || return 1
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/libgdiplus/gdiplus-png14.patch b/extra/libgdiplus/gdiplus-png14.patch
new file mode 100644
index 000000000..d13260812
--- /dev/null
+++ b/extra/libgdiplus/gdiplus-png14.patch
@@ -0,0 +1,20 @@
+--- src/pngcodec.c.orig 2010-01-16 23:47:17.000000000 +0100
++++ src/pngcodec.c 2010-01-16 23:49:49.000000000 +0100
+@@ -352,7 +352,7 @@
+ info_ptr->palette[i].blue,
+ info_ptr->palette[i].green,
+ info_ptr->palette[i].red,
+- info_ptr->trans[i]); /* alpha */
++ info_ptr->trans_alpha[i]); /* alpha */
+ }
+ }
+
+@@ -418,7 +418,7 @@
+ }
+
+ if ((color_type == PNG_COLOR_TYPE_GRAY) && (bit_depth < 8)) {
+- png_set_gray_1_2_4_to_8(png_ptr);
++ png_set_expand_gray_1_2_4_to_8(png_ptr);
+ }
+
+ if (png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS)) {
diff --git a/extra/libgee/PKGBUILD b/extra/libgee/PKGBUILD
new file mode 100644
index 000000000..7a6fe124d
--- /dev/null
+++ b/extra/libgee/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: PKGBUILD 108155 2011-01-30 12:17:51Z ibiru $
+# Maintainer : Ionut Biru <ibiru@archlinux.org>
+# Contributor: Sergej Pupykin <pupykin.s+arch@gmail.com>
+
+pkgname=libgee
+pkgver=0.6.1
+pkgrel=1
+pkgdesc="GObject collection library"
+url="http://live.gnome.org/Libgee"
+license=('LGPL2.1')
+arch=('i686' 'x86_64')
+depends=('glib2>=2.26')
+makedepends=('gobject-introspection')
+options=('!libtool')
+source=(http://ftp.gnome.org/pub/GNOME/sources/libgee/0.6/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('e6220f321b53f7732e0b45db7b8f29088cf4892e798b9b9a02bed16938030121')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --disable-static
+ make
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/libggz/PKGBUILD b/extra/libggz/PKGBUILD
new file mode 100644
index 000000000..99ee52cdf
--- /dev/null
+++ b/extra/libggz/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=libggz
+pkgver=0.0.14.1
+pkgrel=1
+pkgdesc="GGZ base library, used by the GGZ Gaming Zone server (ggzd), the ggzcore library and other components"
+arch=(i686 x86_64)
+url="http://www.ggzgamingzone.org/"
+license=('LGPL')
+depends=('libgcrypt')
+options=('!libtool')
+source=(http://ftp.ggzgamingzone.org/pub/ggz/${pkgver}/${pkgname}-${pkgver}.tar.gz)
+md5sums=('603739504648833779aa13b0327a1c3d')
+
+build() {
+ cd ${startdir}/src/${pkgname}-${pkgver}
+ ./configure --prefix=/usr || return 1
+ make || return 1
+ make DESTDIR=${startdir}/pkg install || return 1
+}
diff --git a/extra/libgksu/PKGBUILD b/extra/libgksu/PKGBUILD
new file mode 100644
index 000000000..b4414d58a
--- /dev/null
+++ b/extra/libgksu/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id: PKGBUILD 90625 2010-09-14 09:37:47Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libgksu
+pkgver=2.0.12
+pkgrel=3
+pkgdesc="gksu authorization library"
+arch=(i686 x86_64)
+url="http://www.nongnu.org/gksu/index.html"
+license=(GPL)
+depends=('libgnome-keyring>=2.30.1' 'libgtop>=2.28.1' 'startup-notification>=0.10' 'gconf>=2.28.1')
+makedepends=('gtk-doc' 'pkgconfig' 'intltool')
+options=('!libtool' '!emptydirs')
+install=libgksu.install
+source=(http://people.debian.org/~kov/gksu/${pkgname}-${pkgver}.tar.gz
+ libgksu-2.0.12-revert-forkpty.patch)
+md5sums=('c7154c8806f791c10e7626ff123049d3'
+ 'aebbe57e5286c654e27cf714cf3b704a')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i "${srcdir}/libgksu-2.0.12-revert-forkpty.patch"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-static
+ make
+ make GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 DESTDIR="${pkgdir}" install
+ rm -f ${pkgdir}/usr/lib/*.a
+ install -m755 -d "${pkgdir}/usr/share/gconf/schemas"
+ gconf-merge-schema "${pkgdir}/usr/share/gconf/schemas/${pkgname}.schemas" --domain libgksu ${pkgdir}/etc/gconf/schemas/*.schemas
+ rm -f ${pkgdir}/etc/gconf/schemas/*.schemas
+}
diff --git a/extra/libgksu/libgksu-2.0.12-revert-forkpty.patch b/extra/libgksu/libgksu-2.0.12-revert-forkpty.patch
new file mode 100644
index 000000000..2c3a8cc78
--- /dev/null
+++ b/extra/libgksu/libgksu-2.0.12-revert-forkpty.patch
@@ -0,0 +1,359 @@
+diff --exclude-from=/home/dang/.scripts/diffrc -up -ruN libgksu-2.0.12.orig/libgksu/libgksu.c libgksu-2.0.12/libgksu/libgksu.c
+--- libgksu-2.0.12.orig/libgksu/libgksu.c 2009-06-29 13:48:24.000000000 -0400
++++ libgksu-2.0.12/libgksu/libgksu.c 2010-01-12 07:32:10.450657456 -0500
+@@ -1,7 +1,6 @@
+ /*
+ * Gksu -- a library providing access to su functionality
+ * Copyright (C) 2004-2009 Gustavo Noronha Silva
+- * Portions Copyright (C) 2009 VMware, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+@@ -56,9 +55,6 @@
+ static void
+ gksu_context_launch_complete (GksuContext *context);
+
+-static void
+-read_line (int fd, gchar *buffer, int n);
+-
+ GType
+ gksu_error_get_type (void)
+ {
+@@ -2009,8 +2005,6 @@ gksu_su_fuller (GksuContext *context,
+ for (i = 0 ; cmd[i] != NULL ; i++)
+ g_free (cmd[i]);
+ g_free(cmd);
+-
+- _exit(1);
+ }
+ else if (pid == -1)
+ {
+@@ -2125,10 +2119,10 @@ gksu_su_fuller (GksuContext *context,
+ /* drop the \n echoed on password entry if su did request
+ a password */
+ if (password_needed)
+- read_line (fdpty, buf, 255);
++ read (fdpty, buf, 255);
+ if (context->debug)
+ fprintf (stderr, "DEBUG (run:post-after-pass) buf: -%s-\n", buf);
+- read_line (fdpty, buf, 255);
++ read (fdpty, buf, 255);
+ if (context->debug)
+ fprintf (stderr, "DEBUG (run:post-after-pass) buf: -%s-\n", buf);
+ }
+@@ -2142,9 +2136,7 @@ gksu_su_fuller (GksuContext *context,
+ {
+ int retval = 0;
+
+- /* Red Hat's su shows the full path to su in its error messages. */
+- if (!strncmp (buf, "su:", 3) ||
+- !strncmp (buf, "/bin/su:", 7))
++ if (!strncmp (buf, "su", 2))
+ {
+ gchar **strings;
+
+@@ -2155,11 +2147,7 @@ gksu_su_fuller (GksuContext *context,
+ }
+
+ strings = g_strsplit (buf, ":", 2);
+-
+- /* Red Hat and Fedora use 'incorrect password'. */
+- if (strings[1] &&
+- (g_str_has_prefix(strings[1], " Authentication failure") ||
+- g_str_has_prefix(strings[1], " incorrect password")))
++ if (strings[1] && !strncmp (strings[1], " Authentication failure", 23))
+ {
+ if (used_gnome_keyring)
+ g_set_error (error, gksu_quark,
+@@ -2473,12 +2461,6 @@ gksu_sudo_fuller (GksuContext *context,
+ {
+ char **cmd;
+ char buffer[256] = {0};
+- char *child_stderr = NULL;
+- /* This command is used to gain a token */
+- char *const verifycmd[] =
+- {
+- "/usr/bin/sudo", "-p", "GNOME_SUDO_PASS", "-v", NULL
+- };
+ int argcount = 8;
+ int i, j;
+
+@@ -2489,8 +2471,9 @@ gksu_sudo_fuller (GksuContext *context,
+
+ pid_t pid;
+ int status;
+- FILE *fdfile = NULL;
+- int fdpty = -1;
++ FILE *infile, *outfile;
++ int parent_pipe[2]; /* For talking to the parent */
++ int child_pipe[2]; /* For talking to the child */
+
+ context->sudo_mode = TRUE;
+
+@@ -2565,10 +2548,6 @@ gksu_sudo_fuller (GksuContext *context,
+ cmd[argcount] = g_strdup("-S");
+ argcount++;
+
+- /* Make sudo noninteractive (we should already have a token) */
+- cmd[argcount] = g_strdup("-n");
+- argcount++;
+-
+ /* Make sudo use next arg as prompt */
+ cmd[argcount] = g_strdup("-p");
+ argcount++;
+@@ -2647,21 +2626,26 @@ gksu_sudo_fuller (GksuContext *context,
+ fprintf (stderr, "cmd[%d]: %s\n", i, cmd[i]);
+ }
+
+- pid = forkpty(&fdpty, NULL, NULL, NULL);
+- if (pid == 0)
++ if ((pipe(parent_pipe)) == -1)
+ {
+- // Child
+- setsid(); // make us session leader
+-
+- execv(verifycmd[0], verifycmd);
++ g_set_error (error, gksu_quark, GKSU_ERROR_PIPE,
++ _("Error creating pipe: %s"),
++ strerror(errno));
++ sudo_reset_xauth (context, xauth, xauth_env);
++ return FALSE;
++ }
+
+- g_set_error (error, gksu_quark, GKSU_ERROR_EXEC,
+- _("Failed to exec new process: %s"),
++ if ((pipe(child_pipe)) == -1)
++ {
++ g_set_error (error, gksu_quark, GKSU_ERROR_PIPE,
++ _("Error creating pipe: %s"),
+ strerror(errno));
+ sudo_reset_xauth (context, xauth, xauth_env);
+ return FALSE;
+ }
+- else if (pid == -1)
++
++ pid = fork();
++ if (pid == -1)
+ {
+ g_set_error (error, gksu_quark, GKSU_ERROR_FORK,
+ _("Failed to fork new process: %s"),
+@@ -2669,26 +2653,56 @@ gksu_sudo_fuller (GksuContext *context,
+ sudo_reset_xauth (context, xauth, xauth_env);
+ return FALSE;
+ }
++ else if (pid == 0)
++ {
++ // Child
++ setsid(); // make us session leader
++ close(child_pipe[1]);
++ dup2(child_pipe[0], STDIN_FILENO);
++ dup2(parent_pipe[1], STDERR_FILENO);
+
++ execv(cmd[0], cmd);
++
++ g_set_error (error, gksu_quark, GKSU_ERROR_EXEC,
++ _("Failed to exec new process: %s"),
++ strerror(errno));
++ sudo_reset_xauth (context, xauth, xauth_env);
++ return FALSE;
++ }
+ else
+ {
+ gint counter = 0;
+ gchar *cmdline = NULL;
+- struct termios tio;
+
+ // Parent
+- fdfile = fdopen(fdpty, "w+");
++ close(parent_pipe[1]);
+
+- /* make sure we notice that ECHO is turned off, if it gets
+- turned off */
+- tcgetattr (fdpty, &tio);
+- for (counter = 0; (tio.c_lflag & ECHO) && counter < 15; counter++)
+- {
+- usleep (1000);
+- tcgetattr (fdpty, &tio);
+- }
++ infile = fdopen(parent_pipe[0], "r");
++ if (!infile)
++ {
++ g_set_error (error, gksu_quark, GKSU_ERROR_PIPE,
++ _("Error opening pipe: %s"),
++ strerror(errno));
++ sudo_reset_xauth (context, xauth, xauth_env);
++ return FALSE;
++ }
+
+- fcntl (fdpty, F_SETFL, O_NONBLOCK);
++ outfile = fdopen(child_pipe[1], "w");
++ if (!outfile)
++ {
++ g_set_error (error, gksu_quark, GKSU_ERROR_PIPE,
++ _("Error opening pipe: %s"),
++ strerror(errno));
++ sudo_reset_xauth (context, xauth, xauth_env);
++ return FALSE;
++ }
++
++ /*
++ we are expecting to receive a GNOME_SUDO_PASS
++ if we don't there are two possibilities: an error
++ or a password is not needed
++ */
++ fcntl (parent_pipe[0], F_SETFL, O_NONBLOCK);
+
+ { /* no matter if we can read, since we're using
+ O_NONBLOCK; this is just to avoid the prompt
+@@ -2697,11 +2711,11 @@ gksu_sudo_fuller (GksuContext *context,
+ struct timeval tv;
+
+ FD_ZERO(&rfds);
+- FD_SET(fdpty, &rfds);
++ FD_SET(parent_pipe[0], &rfds);
+ tv.tv_sec = 1;
+ tv.tv_usec = 0;
+
+- select (fdpty + 1, &rfds, NULL, NULL, &tv);
++ select (parent_pipe[0] + 1, &rfds, NULL, NULL, &tv);
+ }
+
+ /* Try hard to find the prompt; it may happen that we're
+@@ -2713,7 +2727,7 @@ gksu_sudo_fuller (GksuContext *context,
+ if (strncmp (buffer, "GNOME_SUDO_PASS", 15) == 0)
+ break;
+
+- read_line (fdpty, buffer, 256);
++ read_line (parent_pipe[0], buffer, 256);
+
+ if (context->debug)
+ fprintf (stderr, "buffer: -%s-\n", buffer);
+@@ -2747,17 +2761,18 @@ gksu_sudo_fuller (GksuContext *context,
+
+ usleep (1000);
+
+- write (fdpty, password, strlen(password) + 1);
+- write (fdpty, "\n", 1);
++ fprintf (outfile, "%s\n", password);
++ fclose (outfile);
+
+ nullify_password (password);
+
+- fcntl(fdpty, F_SETFL, fcntl(fdpty, F_GETFL) & ~O_NONBLOCK);
++ /* turn NONBLOCK off */
++ fcntl(parent_pipe[0], F_SETFL, fcntl(parent_pipe[0], F_GETFL) & ~O_NONBLOCK);
+ /* ignore the first newline that comes right after sudo receives
+ the password */
+- fgets (buffer, 255, fdfile);
+- /* this is the status we are interested in */
+- fgets (buffer, 255, fdfile);
++ fgets (buffer, 255, infile);
++ /* this is the status we are interessted in */
++ fgets (buffer, 255, infile);
+ }
+ else
+ {
+@@ -2766,7 +2781,7 @@ gksu_sudo_fuller (GksuContext *context,
+ fprintf (stderr, "No password prompt found; we'll assume we don't need a password.\n");
+
+ /* turn NONBLOCK off, also if have no prompt */
+- fcntl(fdpty, F_SETFL, fcntl(fdpty, F_GETFL) & ~O_NONBLOCK);
++ fcntl(parent_pipe[0], F_SETFL, fcntl(parent_pipe[0], F_GETFL) & ~O_NONBLOCK);
+
+ should_display = gconf_client_get_bool (context->gconf_client,
+ BASE_PATH "display-no-pass-info", NULL);
+@@ -2785,9 +2800,14 @@ gksu_sudo_fuller (GksuContext *context,
+ fprintf (stderr, "%s", buffer);
+ }
+
+- if (g_str_has_prefix (buffer, "Sorry, try again."))
++ if (!strcmp (buffer, "Sorry, try again.\n"))
+ g_set_error (error, gksu_quark, GKSU_ERROR_WRONGPASS,
+ _("Wrong password."));
++ else if (!strncmp (buffer, "Sorry, user ", 12))
++ g_set_error (error, gksu_quark, GKSU_ERROR_NOT_ALLOWED,
++ _("The underlying authorization mechanism (sudo) "
++ "does not allow you to run this program. Contact "
++ "the system administrator."));
+ else
+ {
+ gchar *haystack = buffer;
+@@ -2805,10 +2825,6 @@ gksu_sudo_fuller (GksuContext *context,
+ }
+ }
+
+- /* If we have an error, let's just stop sudo right there. */
+- if (error)
+- close(fdpty);
+-
+ cmdline = g_strdup("sudo");
+ /* wait for the child process to end or become something other
+ than sudo */
+@@ -2825,23 +2841,17 @@ gksu_sudo_fuller (GksuContext *context,
+ if (context->sn_context)
+ gksu_context_launch_complete (context);
+
++ while (read (parent_pipe[0], buffer, 255) > 0)
++ {
++ fprintf (stderr, "%s", buffer);
++ bzero(buffer, 256);
++ }
++
+ /* if the process is still active waitpid() on it */
+ if (pid_exited != pid)
+ waitpid(pid, &status, 0);
+ sudo_reset_xauth (context, xauth, xauth_env);
+
+- /*
+- * Did token acquisition succeed? If so, spawn sudo in
+- * non-interactive mode. It should either succeed or die
+- * immediately if you're not allowed to run the command.
+- */
+- if (WEXITSTATUS(status) == 0)
+- {
+- g_spawn_sync(NULL, cmd, NULL, 0, NULL, NULL,
+- NULL, &child_stderr, &status,
+- error);
+- }
+-
+ if (exit_status)
+ {
+ if (WIFEXITED(status)) {
+@@ -2853,13 +2863,6 @@ gksu_sudo_fuller (GksuContext *context,
+
+ if (WEXITSTATUS(status))
+ {
+- if (g_str_has_prefix(child_stderr, "Sorry, user "))
+- {
+- g_set_error (error, gksu_quark, GKSU_ERROR_NOT_ALLOWED,
+- _("The underlying authorization mechanism (sudo) "
+- "does not allow you to run this program. Contact "
+- "the system administrator."));
+- }
+ if(cmdline)
+ {
+ /* sudo already exec()ed something else, don't report
+@@ -2868,7 +2871,6 @@ gksu_sudo_fuller (GksuContext *context,
+ if (!g_str_has_suffix (cmdline, "sudo"))
+ {
+ g_free (cmdline);
+- g_free (child_stderr);
+ return FALSE;
+ }
+ g_free (cmdline);
+@@ -2881,11 +2883,11 @@ gksu_sudo_fuller (GksuContext *context,
+ }
+ }
+
+- fprintf(stderr, child_stderr);
+- g_free(child_stderr);
+-
+ /* if error is set we have found an error condition */
+- return (error == NULL);
++ if (error)
++ return FALSE;
++
++ return TRUE;
+ }
+
+ /**
diff --git a/extra/libgksu/libgksu.install b/extra/libgksu/libgksu.install
new file mode 100644
index 000000000..89cf0cfe4
--- /dev/null
+++ b/extra/libgksu/libgksu.install
@@ -0,0 +1,17 @@
+pkgname=libgksu
+
+post_install() {
+ usr/sbin/gconfpkg --install ${pkgname}
+}
+
+pre_upgrade() {
+ pre_remove
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ usr/sbin/gconfpkg --install ${pkgname}
+}
diff --git a/extra/libglade/PKGBUILD b/extra/libglade/PKGBUILD
new file mode 100644
index 000000000..b5a6d14f4
--- /dev/null
+++ b/extra/libglade/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 104896 2011-01-05 14:08:38Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libglade
+pkgver=2.6.4
+pkgrel=2
+pkgdesc="Allows you to load glade interface files in a program at runtime"
+arch=(i686 x86_64)
+license=('LGPL')
+depends=('gtk2>=2.16.0' 'libxml2>=2.7.3')
+makedepends=('python2' 'pkgconfig')
+optdepends=('python2: libglade-convert script')
+options=('!libtool')
+install=glade.install
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.6/${pkgname}-${pkgver}.tar.bz2
+ libglade-2.0.1-nowarning.patch)
+url="http://www.gnome.org"
+md5sums=('d1776b40f4e166b5e9c107f1c8fe4139'
+ '4f879c0ce550004905aa0fb24f25c353')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i "${srcdir}/libglade-2.0.1-nowarning.patch"
+ PYTHON=python2 ./configure --sysconfdir=/etc --prefix=/usr --localstatedir=/var
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 libglade-convert "${pkgdir}/usr/bin/"
+}
diff --git a/extra/libglade/glade.install b/extra/libglade/glade.install
new file mode 100644
index 000000000..a7f05c5de
--- /dev/null
+++ b/extra/libglade/glade.install
@@ -0,0 +1,25 @@
+post_install() {
+ if [ ! -d etc/xml ]; then
+ mkdir -p etc/xml
+ fi
+ if [ ! -e etc/xml/catalog ]; then
+ xmlcatalog --noout --create etc/xml/catalog
+ fi
+ xmlcatalog --noout --add "system" \
+ "http://glade.gnome.org/glade-2.0.dtd" \
+ /usr/share/xml/libglade/glade-2.0.dtd etc/xml/catalog
+}
+
+pre_upgrade() {
+ post_remove
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+# arg 1: the old package version
+post_remove() {
+ xmlcatalog --noout --del \
+ /usr/share/xml/libglade/glade-2.0.dtd etc/xml/catalog
+}
diff --git a/extra/libglade/libglade-2.0.1-nowarning.patch b/extra/libglade/libglade-2.0.1-nowarning.patch
new file mode 100644
index 000000000..fd071215f
--- /dev/null
+++ b/extra/libglade/libglade-2.0.1-nowarning.patch
@@ -0,0 +1,39 @@
+--- libglade-2.0.1/glade/glade-gtk.c.nowarning 2003-08-29 14:50:10.000000000 -0400
++++ libglade-2.0.1/glade/glade-gtk.c 2003-08-29 14:58:41.000000000 -0400
+@@ -639,9 +639,8 @@
+ if (!strcmp (childinfo->properties[j].name, "label")) {
+ label = childinfo->properties[j].value;
+ break;
+- } else {
+- g_warning ("Unknown CList child property: %s", childinfo->properties[j].name);
+ }
++ /* Ignore all other properties */
+ }
+
+ if (label) {
+@@ -683,6 +682,7 @@
+ char *icon = NULL;
+ gboolean use_stock = FALSE, active = FALSE, new_group = FALSE;
+ gboolean use_underline = FALSE;
++ gboolean sensitive = TRUE;
+ GtkWidget *iconw = NULL;
+ int j;
+
+@@ -708,6 +708,8 @@
+ group_name = value;
+ } else if (!strcmp (name, "new_group")) {
+ new_group = BOOL (value);
++ } else if (!strcmp (name, "sensitive")) {
++ sensitive = BOOL (value);
+ } else if (!strcmp (name, "visible")) {
+ /* ignore for now */
+ } else if (!strcmp (name, "tooltip")) {
+@@ -785,6 +787,8 @@
+ gtk_label_set_use_underline (GTK_LABEL (toolbar_child->label),
+ TRUE);
+ }
++
++ gtk_widget_set_sensitive (child, sensitive);
+
+ glade_xml_set_common_params (xml, child, childinfo->child);
+ } else {
diff --git a/extra/libglademm/PKGBUILD b/extra/libglademm/PKGBUILD
new file mode 100644
index 000000000..61ca5e168
--- /dev/null
+++ b/extra/libglademm/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id: PKGBUILD 13345 2008-09-26 21:07:05Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Kritoke <typeolinux@yahoo.com>
+pkgname=libglademm
+pkgver=2.6.7
+pkgrel=1
+pkgdesc="A C++ wrapper for libglade."
+arch=(i686 x86_64)
+license=('LGPL')
+depends=('libglade>=2.6.3' 'gtkmm>=2.14.1')
+makedepends=('pkgconfig')
+options=('!libtool')
+url="http://gtkmm.sourceforge.net/"
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.6/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('f9ca5b67f6c551ea98790ab5f21c19d0')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/libgme/PKGBUILD b/extra/libgme/PKGBUILD
new file mode 100644
index 000000000..991fa9a9f
--- /dev/null
+++ b/extra/libgme/PKGBUILD
@@ -0,0 +1,25 @@
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributer: Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
+
+pkgname=libgme
+pkgver=0.5.5
+pkgrel=3
+pkgdesc="Video game music file emulation/playback library"
+url="http://game-music-emu.googlecode.com/"
+license=('LGPL')
+arch=('i686' 'x86_64')
+depends=('gcc-libs')
+makedepends=('cmake')
+source=(http://game-music-emu.googlecode.com/files/game-music-emu-${pkgver}.tbz2)
+md5sums=("94459001a763fb76209a550a03b7949e")
+
+build() {
+ cd "${srcdir}/game-music-emu-${pkgver}"
+ mkdir build
+ cd build
+
+ msg "Starting build process."
+ cmake .. -DCMAKE_INSTALL_PREFIX=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/libgnome-keyring/PKGBUILD b/extra/libgnome-keyring/PKGBUILD
new file mode 100644
index 000000000..a7cc0b35e
--- /dev/null
+++ b/extra/libgnome-keyring/PKGBUILD
@@ -0,0 +1,24 @@
+#$Id: PKGBUILD 91799 2010-09-28 06:50:31Z jgc $
+#Maintainer: Jan De Groot <jgc@archlinux.org>
+
+pkgname=libgnome-keyring
+pkgver=2.32.0
+pkgrel=1
+pkgdesc="GNOME keyring client library"
+arch=(i686 x86_64)
+license=('GPL' 'LGPL')
+depends=('dbus-core>=1.4.0' 'libgcrypt>=1.4.6' 'glib2>=2.26.0')
+makedepends=('intltool' 'pkgconfig' 'python2' 'gtk-doc')
+options=('!libtool' '!emptydirs')
+url="http://www.gnome.org"
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.32/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('56388c0d81ddfdb57d30e4963c83ecc1c18498aab99395420e0fff69929a0f0c')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-static \
+ --libexecdir=/usr/lib/gnome-keyring
+ make
+ make -j1 DESTDIR="${pkgdir}" install
+}
diff --git a/extra/libgnome/PKGBUILD b/extra/libgnome/PKGBUILD
new file mode 100644
index 000000000..d989f6512
--- /dev/null
+++ b/extra/libgnome/PKGBUILD
@@ -0,0 +1,49 @@
+# $Id: PKGBUILD 99674 2010-11-16 00:21:13Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgbase=libgnome
+pkgname=('libgnome' 'libgnome-data')
+pkgver=2.32.0
+pkgrel=3
+arch=('i686' 'x86_64')
+license=('LGPL')
+makedepends=('intltool' 'gnome-vfs>=2.24.3' 'libbonobo>=2.32.0' 'gconf>=2.32.0' 'gvfs>=1.6.6' 'libcanberra>=0.25')
+options=('!libtool' '!emptydirs')
+url="http://www.gnome.org"
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgbase}/2.32/${pkgbase}-${pkgver}.tar.bz2)
+sha256sums=('d65e49bf075eb2b3efebec38ceb409693154d18396365765da1a71630bc3dd02')
+
+build() {
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-static --disable-esd
+ make
+}
+
+package_libgnome() {
+ pkgdesc="Common libraries for GNOME"
+ depends=("libgnome-data=${pkgver}" 'gnome-vfs>=2.24.3' 'libbonobo>=2.32.0' 'gconf>=2.32.0' 'gvfs>=1.6.6' 'libcanberra>=0.25')
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+
+ make -C libgnome DESTDIR="${pkgdir}" install
+ make -C monikers DESTDIR="${pkgdir}" install
+}
+
+package_libgnome-data() {
+ pkgdesc="Common data from libgnome"
+ depends=('gconf')
+ install=libgnome.install
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+
+ for dir in doc gnome-data po schemas
+ do
+ make -C $dir GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 DESTDIR="${pkgdir}" install
+ done
+
+ install -m755 -d "${pkgdir}/usr/share/gconf/schemas"
+ gconf-merge-schema "${pkgdir}/usr/share/gconf/schemas/${pkgname}.schemas" --domain libgnome-2.0 ${pkgdir}/etc/gconf/schemas/*.schemas
+ rm -f ${pkgdir}/etc/gconf/schemas/*.schemas
+}
diff --git a/extra/libgnome/libgnome.install b/extra/libgnome/libgnome.install
new file mode 100644
index 000000000..db4e04d4d
--- /dev/null
+++ b/extra/libgnome/libgnome.install
@@ -0,0 +1,17 @@
+pkgname=libgnome
+
+post_install() {
+ usr/sbin/gconfpkg --install ${pkgname}
+}
+
+pre_upgrade() {
+ pre_remove $1
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ usr/sbin/gconfpkg --install ${pkgname}
+}
diff --git a/extra/libgnomecanvas/PKGBUILD b/extra/libgnomecanvas/PKGBUILD
new file mode 100644
index 000000000..6bc8b6893
--- /dev/null
+++ b/extra/libgnomecanvas/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: PKGBUILD 108491 2011-01-31 15:14:46Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libgnomecanvas
+pkgver=2.30.3
+pkgrel=1
+pkgdesc="The GNOME Canvas library"
+arch=(i686 x86_64)
+license=('LGPL')
+depends=('libglade>=2.6.4' 'libart-lgpl>=2.3.21')
+makedepends=('pkgconfig' 'intltool')
+options=('!libtool')
+url="http://www.gnome.org"
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.30/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('859b78e08489fce4d5c15c676fec1cd79782f115f516e8ad8bed6abcb8dedd40')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --disable-static \
+ --enable-glade
+ make
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/libgnomecanvasmm/PKGBUILD b/extra/libgnomecanvasmm/PKGBUILD
new file mode 100644
index 000000000..dcb7eccb0
--- /dev/null
+++ b/extra/libgnomecanvasmm/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 33795 2009-04-04 20:02:36Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Kritoke <typeolinux@yahoo.com>
+
+pkgname=libgnomecanvasmm
+pkgver=2.26.0
+pkgrel=1
+pkgdesc="A C++ wrapper for libgnomecanvas."
+arch=(i686 x86_64)
+license=('LGPL')
+depends=('gtkmm>=2.16.0' 'libgnomecanvas>=2.26.0')
+makedepends=('pkgconfig')
+options=('!libtool')
+url="http://gtkmm.sourceforge.net/"
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.26/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('a148c99311d46397de6e4a31736771ab')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/libgnomecups/PKGBUILD b/extra/libgnomecups/PKGBUILD
new file mode 100644
index 000000000..2a510ccde
--- /dev/null
+++ b/extra/libgnomecups/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 75341 2010-04-01 10:56:43Z allan $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Paulius Palevicius <paulius@birzai.com>
+
+pkgname=libgnomecups
+pkgver=0.2.3
+pkgrel=7
+pkgdesc="GNOME cups library"
+arch=(i686 x86_64)
+license=('LGPL' 'GPL')
+url="http://www.gnome.org"
+depends=('libcups>=1.3.8-2' 'glib2>=2.16.4' 'heimdal>=1.3.1' 'gnutls>=2.4.1')
+makedepends=('perlxml')
+options=(!libtool)
+source=(http://ftp.gnome.org/pub/GNOME/sources/${pkgname}/0.2/${pkgname}-${pkgver}.tar.bz2
+ libgnomecups_0.2.3-ignore-ipp-not-found.patch)
+md5sums=('dc4920c15c9f886f73ea74fbff0ae48b'
+ '973a1b9d93013ce431400a14b78f5d94')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ # This avoids generating huge 'IPP request failed with status 1030' lines
+ patch -Np1 -i ${srcdir}/libgnomecups_0.2.3-ignore-ipp-not-found.patch || return 1
+ ./configure --prefix=/usr || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/libgnomecups/libgnomecups_0.2.3-ignore-ipp-not-found.patch b/extra/libgnomecups/libgnomecups_0.2.3-ignore-ipp-not-found.patch
new file mode 100644
index 000000000..797367bf9
--- /dev/null
+++ b/extra/libgnomecups/libgnomecups_0.2.3-ignore-ipp-not-found.patch
@@ -0,0 +1,11 @@
+--- a/libgnomecups/gnome-cups-request.c 2007-01-31 10:49:17.000000000 -0800
++++ b/libgnomecups/gnome-cups-request.c 2009-11-24 12:49:30.000000000 -0800
+@@ -349,7 +349,7 @@
+ if (request->response == NULL)
+ status = IPP_INTERNAL_ERROR;
+
+- if (status > IPP_OK_CONFLICT) {
++ if (status > IPP_OK_CONFLICT && status != IPP_NOT_FOUND) {
+ g_warning ("IPP request failed with status %d", status);
+ if (request->error != NULL)
+ *(request->error) = g_error_new (GNOME_CUPS_ERROR,
diff --git a/extra/libgnomekbd/PKGBUILD b/extra/libgnomekbd/PKGBUILD
new file mode 100644
index 000000000..8f7640786
--- /dev/null
+++ b/extra/libgnomekbd/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 91776 2010-09-27 21:05:35Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libgnomekbd
+pkgver=2.32.0
+pkgrel=1
+pkgdesc="Gnome keyboard library"
+url="http://gswitchit.sourceforge.net"
+arch=('i686' 'x86_64')
+license=('LGPL')
+depends=('libxklavier>=5.0' 'gconf>=2.32.0')
+makedepends=('intltool' 'pkg-config')
+options=('!libtool' '!emptydirs')
+install=libgnomekbd.install
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.32/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('ddd52c4cc7d83ad7ef964a1bcb4db87407e65b00ffc3e70c088ca4ee7383d256')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-static
+ make
+ 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 libgnomekbd ${pkgdir}/etc/gconf/schemas/*.schemas
+ rm -f ${pkgdir}/etc/gconf/schemas/*.schemas
+}
diff --git a/extra/libgnomekbd/libgnomekbd.install b/extra/libgnomekbd/libgnomekbd.install
new file mode 100644
index 000000000..9fc9f556e
--- /dev/null
+++ b/extra/libgnomekbd/libgnomekbd.install
@@ -0,0 +1,17 @@
+pkgname=libgnomekbd
+
+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/extra/libgnomemm/PKGBUILD b/extra/libgnomemm/PKGBUILD
new file mode 100644
index 000000000..7696a5f30
--- /dev/null
+++ b/extra/libgnomemm/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 73927 2010-03-29 11:46:31Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Kritoke <typeolinux@yahoo.com>
+
+pkgname=libgnomemm
+pkgver=2.30.0
+pkgrel=1
+pkgdesc="C++ bindings for libgnome."
+arch=(i686 x86_64)
+license=('LGPL')
+depends=('libgnome>=2.28.0' 'gtkmm>=2.20.0')
+makedepends=('pkgconfig')
+options=('!libtool')
+url="http://gtkmm.sourceforge.net/"
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.30/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('2a01f068ff73a1985d050e75f899fec34ac13622e2ead43523a4e2b0875042cf')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-static || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/libgnomeprint/PKGBUILD b/extra/libgnomeprint/PKGBUILD
new file mode 100644
index 000000000..af1265592
--- /dev/null
+++ b/extra/libgnomeprint/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 91999 2010-09-28 16:38:45Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libgnomeprint
+pkgver=2.18.8
+pkgrel=1
+pkgdesc="Printing routines for GNOME"
+arch=(i686 x86_64)
+license=('LGPL' 'GPL')
+depends=('pango>=1.28.1' 'libart-lgpl>=2.3.21' 'libxml2>=2.7.7' 'libgnomecups>=0.2.3-4' 'heimdal>=1.3.3' 'gnutls>=2.8.6')
+makedepends=('intltool' 'pkgconfig')
+replaces=('libgnomeprint-cups')
+conflicts=('libgnomeprint-cups')
+url="http://www.gnome.org"
+options=('!libtool')
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.18/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('1034ec8651051f84d2424e7a1da61c530422cc20ce5b2d9e107e1e46778d9691')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --disable-static
+ make
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/libgnomeprintui/PKGBUILD b/extra/libgnomeprintui/PKGBUILD
new file mode 100644
index 000000000..0a8186213
--- /dev/null
+++ b/extra/libgnomeprintui/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id: PKGBUILD 92010 2010-09-28 16:45:19Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libgnomeprintui
+pkgver=2.18.6
+pkgrel=1
+pkgdesc="User Interface library for printing with GNOME"
+arch=(i686 x86_64)
+license=('GPL' 'LGPL')
+depends=('libgnomeprint>=2.18.8' 'libgnomecanvas>=2.30.2' 'gnome-icon-theme>=2.31.0')
+makedepends=('intltool' 'pkgconfig')
+options=('!libtool')
+url="http://www.gnome.org"
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.18/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('156ae5b66e5dcc546efa2449048f792d76c55b30d93a9b67b0c69665e346f46a')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --disable-static
+ make
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/libgnomeui/PKGBUILD b/extra/libgnomeui/PKGBUILD
new file mode 100644
index 000000000..7538c8acc
--- /dev/null
+++ b/extra/libgnomeui/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 91726 2010-09-27 18:45:46Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libgnomeui
+pkgver=2.24.4
+pkgrel=1
+pkgdesc="User Interface library for GNOME"
+arch=('i686' 'x86_64')
+license=('LGPL')
+depends=('libbonoboui>=2.24.3' 'libgnome-keyring>=2.31.92' 'libsm')
+makedepends=('intltool' 'pkgconfig')
+options=('!libtool')
+url="http://www.gnome.org"
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.24/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('a64dcb5af190ec0bfe2ba647ab09a90e4187336fa417d301abfb736be41283b2')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-static \
+ --libexecdir=/usr/lib/libgnomeui
+ make
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/libgnomeuimm/PKGBUILD b/extra/libgnomeuimm/PKGBUILD
new file mode 100644
index 000000000..0d88685d5
--- /dev/null
+++ b/extra/libgnomeuimm/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 55079 2009-10-11 21:58:41Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Kritoke <typeolinux@yahoo.com>
+
+pkgname=libgnomeuimm
+pkgver=2.28.0
+pkgrel=1
+pkgdesc="A C++ wrapper for libgnomeui."
+arch=(i686 x86_64)
+license=('GPL')
+depends=('libgnomeui>=2.24.1' 'libgnomecanvasmm>=2.26.0' 'libgnomemm>=2.28.0' 'libglademm>=2.6.7' 'gconfmm>=2.28.0' 'gnome-vfsmm>=2.26.0')
+makedepends=('pkgconfig')
+options=('!libtool')
+url="http://gtkmm.sourceforge.net/"
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.28/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('6cb46494913f1e5e34b94a0f5b9ff8ef238bb71e3b08d0ef0ab7f4a7c88211d3')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-static || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/libgphoto2/PKGBUILD b/extra/libgphoto2/PKGBUILD
new file mode 100644
index 000000000..23e7d74b9
--- /dev/null
+++ b/extra/libgphoto2/PKGBUILD
@@ -0,0 +1,40 @@
+# $Id: PKGBUILD 101286 2010-11-28 17:59:39Z ibiru $
+# Maintainer: Eduardo Romero <eduardo@archlinux.org>
+# Contributor: Damir Perisa <damir.perisa@bluewin.ch>
+
+pkgname=libgphoto2
+pkgver=2.4.10.1
+pkgrel=2
+pkgdesc="The core library of gphoto2, designed to allow access to digital camera by external programs."
+arch=(i686 x86_64)
+url="http://www.gphoto.org"
+license=(LGPL)
+depends=('libexif>=0.6.19' 'libjpeg>=8' 'gd' 'libtool>=2.4' 'libusb-compat')
+install=libgphoto2.install
+options=('libtool')
+source=(http://downloads.sourceforge.net/gphoto/${pkgname}-${pkgver}.tar.gz)
+md5sums=('8bf2bd1e267909203ec1e7f6ea3f83a0')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ udevscriptdir=/lib/udev ./configure --prefix=/usr --with-drivers=all --disable-static --disable-rpath
+ LD_PRELOAD="" make
+ make DESTDIR="${pkgdir}" install
+
+ rm -f ${pkgdir}/usr/lib/libgphoto2/${pkgver}/*.a
+
+ install -m755 -d "${pkgdir}/usr/share/hal/fdi/information/20thirdparty"
+ install -m755 -d "${pkgdir}/lib/udev/rules.d"
+ LD_LIBRARY_PATH="${pkgdir}/usr/lib${LD_LIBRARY_PATH:+:}$LD_LIBRARY_PATH" \
+ CAMLIBS="${pkgdir}/usr/lib/libgphoto2/${pkgver}" \
+ "${pkgdir}/usr/lib/libgphoto2/print-camera-list" hal-fdi > \
+ "${pkgdir}/usr/share/hal/fdi/information/20thirdparty/10-camera-libgphoto2.fdi"
+
+ LD_LIBRARY_PATH="${pkgdir}/usr/lib${LD_LIBRARY_PATH:+:}$LD_LIBRARY_PATH" \
+ CAMLIBS="${pkgdir}/usr/lib/libgphoto2/${pkgver}" \
+ "${pkgdir}/usr/lib/libgphoto2/print-camera-list" udev-rules version 136 group camera mode 0660 > \
+ "${pkgdir}/lib/udev/rules.d/40-gphoto.rules"
+
+ # Remove recursive symlink
+ rm -f "${pkgdir}/usr/include/gphoto2/gphoto2"
+}
diff --git a/extra/libgphoto2/libgphoto2.install b/extra/libgphoto2/libgphoto2.install
new file mode 100644
index 000000000..3aee9ff8a
--- /dev/null
+++ b/extra/libgphoto2/libgphoto2.install
@@ -0,0 +1,16 @@
+post_install() {
+ getent group camera >/dev/null || usr/sbin/groupadd -g 97 camera
+ /bin/cat <<THEEND
+NOTE
+----
+Add your user to group 'camera' to use camera devices.
+THEEND
+}
+
+post_upgrade() {
+ getent group camera >/dev/null || usr/sbin/groupadd -g 97 camera
+}
+
+post_remove() {
+ usr/sbin/groupdel camera &>/dev/null
+}
diff --git a/extra/libgpod/PKGBUILD b/extra/libgpod/PKGBUILD
new file mode 100644
index 000000000..5f520cd5b
--- /dev/null
+++ b/extra/libgpod/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 95175 2010-10-16 19:19:22Z remy $
+# Maintainer: Daniel Isenmann <daniel@archlinux.org>
+# Contributor: William Rea <sillywilly@gmail.com>
+
+pkgname=libgpod
+pkgver=0.8.0
+pkgrel=1
+pkgdesc="A shared library to access the contents of an iPod"
+arch=(i686 x86_64)
+license=('LGPL')
+depends=('gtk2>=2.20.1' 'mutagen' 'sg3_utils>=1.27' 'libimobiledevice>=1.0.1')
+makedepends=('intltool' 'swig' 'docbook-xsl' 'pygobject' 'gtk-sharp-2')
+optdepends=('gtk-sharp-2: Mono bindings')
+url="http://www.gtkpod.org/libgpod/"
+source=(http://downloads.sourceforge.net/sourceforge/gtkpod/${pkgname}-${pkgver}.tar.gz)
+options=('!libtool' '!emptydirs')
+md5sums=('6660f74cc53293dcc847407aa5f672ce')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr \
+ --enable-udev --with-python=/usr/bin/python2
+ make PREFIX=/usr
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make PREFIX=/usr DESTDIR="${pkgdir}" install
+}
+
diff --git a/extra/libgsf/PKGBUILD b/extra/libgsf/PKGBUILD
new file mode 100644
index 000000000..4a62231dd
--- /dev/null
+++ b/extra/libgsf/PKGBUILD
@@ -0,0 +1,61 @@
+# $Id: PKGBUILD 116824 2011-03-25 21:58:52Z heftig $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Sarah Hay <sarahhay@mb.sympatico.ca>
+
+pkgbase=libgsf
+pkgname=('libgsf' 'libgsf-gnome')
+pkgver=1.14.20
+pkgrel=1
+arch=(i686 x86_64)
+url="http://www.gnome.org/"
+license=('GPL' 'LGPL')
+makedepends=('libxml2' 'glib2' 'bzip2' 'intltool' 'pkgconfig'
+ 'python2' 'libbonobo' 'gconf' 'pygtk')
+options=('!libtool' '!emptydirs')
+source=(http://ftp.gnome.org/pub/GNOME/sources/${pkgbase}/1.14/${pkgbase}-${pkgver}.tar.bz2)
+sha256sums=('df82cd86e472a6f8e566976eb7eb8f587aac2639c1448b14b4dbf4db7da1ada6')
+
+build() {
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \
+ --mandir=/usr/share/man --disable-static
+ make
+}
+
+package_libgsf() {
+ pkgdesc="The GNOME Structured File Library is a utility library for reading and writing structured file formats"
+ depends=('libxml2' 'glib2' 'bzip2')
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ make DESTDIR="${pkgdir}" GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 install
+ rm -f "${pkgdir}/usr/share/man/man1/gsf-office-thumbnailer.1"
+ rm -f "${pkgdir}/usr/lib/libgsf-gnome"*
+ rm -rf "${pkgdir}/usr/include/libgsf-1/gsf-gnome/"
+ rm -rf "${pkgdir}/etc/gconf"
+ rm -f "${pkgdir}/usr/lib/pkgconfig/libgsf-gnome-1.pc"
+ rm -f "${pkgdir}/usr/bin/gsf-office-thumbnailer"
+ rm -f "${pkgdir}"/usr/lib/python*/site-packages/gsf/gnomemodule.so
+}
+
+package_libgsf-gnome() {
+ pkgdesc="Libgsf GNOME components"
+ depends=("libgsf=${pkgver}" 'libbonobo' 'gconf')
+ install=libgsf-gnome.install
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ make -C gsf DESTDIR="${pkgdir}" install-libLTLIBRARIES
+ make -C gsf-gnome DESTDIR="${pkgdir}" install
+ make -C thumbnailer DESTDIR="${pkgdir}" install
+ make -C python DESTDIR="${pkgdir}" install
+ make -C doc DESTDIR="${pkgdir}" install-manpageDATA
+
+ rm -f "${pkgdir}/usr/share/man/man1/gsf.1"
+ rm -f "${pkgdir}/usr/share/man/man1/gsf-vba-dump.1"
+ rm -f "${pkgdir}"/usr/lib/python*/site-packages/gsf/_*
+ rm -f "${pkgdir}"/usr/lib/libgsf-1.so*
+ install -m755 -d "${pkgdir}/usr/lib/pkgconfig"
+ install -m644 libgsf-gnome-1.pc "${pkgdir}/usr/lib/pkgconfig/"
+
+ install -m755 -d "${pkgdir}/usr/share/gconf/schemas"
+ gconf-merge-schema "${pkgdir}/usr/share/gconf/schemas/libgsf-gnome.schemas" --domain libgsf "${pkgdir}/etc/gconf/schemas/"*.schemas
+ rm -f "${pkgdir}/etc/gconf/schemas/"*.schemas
+}
diff --git a/extra/libgsf/libgsf-gnome.install b/extra/libgsf/libgsf-gnome.install
new file mode 100644
index 000000000..60f62ff35
--- /dev/null
+++ b/extra/libgsf/libgsf-gnome.install
@@ -0,0 +1,19 @@
+pkgname=libgsf-gnome
+
+post_install() {
+ usr/sbin/gconfpkg --install ${pkgname}
+}
+
+pre_upgrade() {
+ pre_remove $1
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ if [ -f usr/share/gconf/schemas/${pkgname}.schemas ]; then
+ usr/sbin/gconfpkg --uninstall ${pkgname}
+ fi
+}
diff --git a/extra/libgtkhtml/PKGBUILD b/extra/libgtkhtml/PKGBUILD
new file mode 100644
index 000000000..806292886
--- /dev/null
+++ b/extra/libgtkhtml/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id: PKGBUILD 18538 2008-11-06 23:27:45Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+pkgname=libgtkhtml
+pkgver=2.11.1
+pkgrel=2
+pkgdesc="An HTML library for GTK"
+arch=(i686 x86_64)
+license=('LGPL')
+depends=('gtk2>=2.14.4' 'libxml2>=2.6.32')
+makedepends=('perlxml' 'pkgconfig')
+options=('!libtool')
+url="http://www.gnome.org"
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.11/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('a1d1a197dcff8c4571659deef5495e24')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-static || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/libgtop/PKGBUILD b/extra/libgtop/PKGBUILD
new file mode 100644
index 000000000..a602fbea1
--- /dev/null
+++ b/extra/libgtop/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 91991 2010-09-28 16:33:41Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libgtop
+pkgver=2.28.2
+pkgrel=1
+pkgdesc="A library that read information about processes and the running system"
+arch=('i686' 'x86_64')
+license=('LGPL')
+depends=('glib2>=2.26' 'libxau' 'texinfo')
+makedepends=('intltool')
+install=libgtop.install
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.28/${pkgname}-${pkgver}.tar.bz2)
+options=('!libtool')
+url="http://www.gnome.org/"
+sha256sums=('49958d7da1f76b257bfd0d557d8ed2b218a5ab0d31b59fed1c32ddf2a1529f5d')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-static \
+ --with-libgtop-smp
+ make
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/libgtop/libgtop.install b/extra/libgtop/libgtop.install
new file mode 100644
index 000000000..15690f125
--- /dev/null
+++ b/extra/libgtop/libgtop.install
@@ -0,0 +1,13 @@
+info_dir=/usr/share/info
+
+post_install() {
+ install-info ${info_dir}/libgtop2.info.gz ${info_dir}/dir 2> /dev/null
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ install-info --delete ${info_dir}/libgtop2.info.gz ${info_dir}/dir 2> /dev/null
+}
diff --git a/extra/libguess/PKGBUILD b/extra/libguess/PKGBUILD
new file mode 100644
index 000000000..d3f7e0cef
--- /dev/null
+++ b/extra/libguess/PKGBUILD
@@ -0,0 +1,25 @@
+# Maintainer: Gaetan Bisson <bisson@archlinux.org>
+# Contributor: Kemka Andrey <dr.andru@gmail.com>
+
+pkgname=libguess
+pkgver=1.0
+pkgrel=2
+pkgdesc='High-speed character set detection library'
+arch=('i686' 'x86_64')
+url='http://atheme.org/project/libguess'
+license=('BSD')
+depends=('libmowgli' 'glibc')
+source=("http://distfiles.atheme.org/libguess-$pkgver.tgz")
+sha1sums=('b5324b4840176324576eb91d401e5f9e1322feec')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make DESTDIR="$pkgdir" install
+ install -D COPYING "$pkgdir"/usr/share/licenses/libguess/COPYING
+}
diff --git a/extra/libgweather/01_gettext_not_xml.patch b/extra/libgweather/01_gettext_not_xml.patch
new file mode 100644
index 000000000..d5f57305e
--- /dev/null
+++ b/extra/libgweather/01_gettext_not_xml.patch
@@ -0,0 +1,527 @@
+only in patch2:
+unchanged:
+diff -Nur -x '*.orig' -x '*~' libgweather-2.27.91/configure.in libgweather-2.27.91.new/configure.in
+--- libgweather-2.27.91/configure.in 2009-08-25 23:56:58.000000000 +1000
++++ libgweather-2.27.91.new/configure.in 2009-08-26 11:54:52.000000000 +1000
+@@ -40,6 +40,10 @@
+ AM_MAINTAINER_MODE
+ GNOME_MAINTAINER_MODE_DEFINES
+
++dnl IT_PROG_INTLTOOL does this for us in the case of the po/ subdir, but we're on our own for po-locations
++AC_OUTPUT_COMMANDS([sed -e "/POTFILES =/r po/POTFILES" po-locations/Makefile.in > po-locations/Makefile])
++IT_PO_SUBDIR([po-locations])
++
+ IT_PROG_INTLTOOL([0.40.3])
+ PKG_PROG_PKG_CONFIG([0.19])
+
+@@ -50,13 +54,6 @@
+ AM_PROG_LIBTOOL
+ AC_PATH_PROG(GCONFTOOL, gconftool-2)
+
+-AC_ARG_ENABLE(all-translations-in-one-xml,
+- [AC_HELP_STRING([--enable-all-translations-in-one-xml],
+- [Put all translations in a big Locations.xml file (slow to parse)])],
+- [enable_big_xml=yes],
+- [enable_big_xml=no])
+-AM_CONDITIONAL(USE_ONE_BIG_XML, test "x$enable_big_xml" = "xyes")
+-
+ AC_ARG_ENABLE(locations-compression,
+ [AC_HELP_STRING([--enable-locations-compression],
+ [Compress Locations.xml files])],
+@@ -253,7 +250,7 @@
+ Makefile
+ doc/Makefile
+ po/Makefile.in
+-po-locations/Makefile
++po-locations/Makefile.in
+ libgweather/Makefile
+ libgweather/gweather.pc
+ libgweather/gweather-uninstalled.pc
+@@ -261,12 +258,6 @@
+ python/Makefile
+ ])
+
+-if test "x$enable_big_xml" = "xyes"; then
+- LOCATIONS_XML_TRANSLATIONS="one big file"
+-else
+- LOCATIONS_XML_TRANSLATIONS="one file per translation"
+-fi
+-
+ dnl ***************************************************************************
+ dnl *** Display Summary ***
+ dnl ***************************************************************************
+diff -Nur -x '*.orig' -x '*~' libgweather-2.27.91/data/Makefile.am libgweather-2.27.91.new/data/Makefile.am
+--- libgweather-2.27.91/data/Makefile.am 2009-07-22 03:01:11.000000000 +1000
++++ libgweather-2.27.91.new/data/Makefile.am 2009-08-26 11:57:46.000000000 +1000
+@@ -4,55 +4,23 @@
+ libgweatherlocationsdir = $(pkgdatadir)
+ libgweatherlocations_in_files = Locations.xml.in
+
+-if USE_ONE_BIG_XML
+-
+-LOCATIONS_STAMP =
+-
+-libgweatherlocations_DATA = $(libgweatherlocations_in_files:.xml.in=.xml$(COMPRESS_EXT))
+-
+-%.xml$(COMPRESS_EXT): %.xml.in $(wildcard $(top_srcdir)/po-locations/*.po)
+- $(AM_V_GEN)LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po-locations/.intltool-merge-cache $(top_srcdir)/po-locations $< `echo $@ | sed "s/.xml$(COMPRESS_EXT)/.xml/"` && \
+- if test "x$(COMPRESS_EXT)" = "x.gz"; then \
+- gzip --force `echo $@ | sed "s/.xml$(COMPRESS_EXT)/.xml/"`; \
+- fi
+-
+-else # USE_ONE_BIG_XML
+-
+ LOCATIONS_STAMP = stamp-Locations.xml
+
+-PO_LOCATIONS = $(shell if test -n "$(LINGUAS)"; then for lang in $(LINGUAS); do if test -f "$(top_srcdir)/po-locations/$$lang.po"; then echo "$(top_srcdir)/po-locations/$$lang.po "; fi; done; else for pofile in $(top_srcdir)/po-locations/*.po; do echo $$pofile; done; fi)
+-
+ # Helper variable
+-libgweatherlocations_data = $(libgweatherlocations_in_files:.xml.in=.xml)
+-
+-libgweatherlocations_DATA = $(shell echo $(PO_LOCATIONS) | sed "s|$(top_srcdir)/po-locations/|Locations.|g;s|\.po|.xml$(COMPRESS_EXT)|g") $(libgweatherlocations_data)$(COMPRESS_EXT)
++libgweatherlocations_DATA = $(libgweatherlocations_in_files:.xml.in=.xml)
+
+ # We need this step so that we merge all the make Locations.xy.xml destinations
+ # into one unique destination. This makes -j2 work. (Else, we end up with
+ # multiple and conflicting calls to intltool-merge)
+ $(libgweatherlocations_DATA): $(LOCATIONS_STAMP)
+
+-$(LOCATIONS_STAMP): $(libgweatherlocations_in_files) $(PO_LOCATIONS) Makefile
+- $(AM_V_at)LC_ALL=C $(INTLTOOL_MERGE) --multiple-output --xml-style --utf8 --cache=$(top_builddir)/po-locations/.intltool-merge-cache $(top_srcdir)/po-locations $< $(libgweatherlocations_data) && \
+- for pofile in $(PO_LOCATIONS); do \
+- locale=`echo $$pofile | sed "s;$(top_srcdir)/po-locations/\(.*\)\.po;\1;"`; \
+- xmllint --noblanks -o Locations.$$locale.xml $$locale/$(libgweatherlocations_data); \
+- rm -f $$locale/$(libgweatherlocations_data); \
+- test -d $$locale && rmdir $$locale; \
+- if test "x$(COMPRESS_EXT)" = "x.gz"; then \
+- gzip --force Locations.$$locale.xml; \
+- fi; \
+- done && \
+- xmllint --noblanks -o Locations.xml C/$(libgweatherlocations_data) && \
+- rm -f C/$(libgweatherlocations_data) && \
++$(LOCATIONS_STAMP): $(libgweatherlocations_in_files) Makefile
++ LC_ALL=C $(INTLTOOL_MERGE) --multiple-output --xml-style --utf8 --cache=$(top_builddir)/po-locations/.intltool-merge-cache /dev/null $< $(libgweatherlocations_DATA) && \
++ xmllint --noblanks -o Locations.xml C/$(libgweatherlocations_DATA) && \
++ rm -f C/$(libgweatherlocations_DATA) && \
+ test -d C && rmdir C && \
+- if test "x$(COMPRESS_EXT)" = "x.gz"; then \
+- gzip --force Locations.xml; \
+- fi && \
+ touch $@
+
+-endif # USE_ONE_BIG_XML
+-
+ check:
+ xmllint --valid --noout $(top_srcdir)/data/Locations.xml.in
+ $(srcdir)/check-timezones.sh $(srcdir)/Locations.xml.in
+diff -Nur -x '*.orig' -x '*~' libgweather-2.27.91/libgweather/gweather-location.c libgweather-2.27.91.new/libgweather/gweather-location.c
+--- libgweather-2.27.91/libgweather/gweather-location.c 2009-04-20 03:41:11.000000000 +1000
++++ libgweather-2.27.91.new/libgweather/gweather-location.c 2009-08-26 11:54:52.000000000 +1000
+@@ -22,11 +22,14 @@
+ #include <config.h>
+ #endif
+
++#include "config.h"
++
+ #include <string.h>
+ #include <math.h>
+ #include <locale.h>
+ #include <gtk/gtk.h>
+ #include <libxml/xmlreader.h>
++#include <libintl.h>
+
+ #define GWEATHER_I_KNOW_THIS_IS_UNSTABLE
+ #include "gweather-location.h"
+@@ -184,10 +187,20 @@
+
+ tagname = (const char *) xmlTextReaderConstName (parser->xml);
+ if (!strcmp (tagname, "name") && !loc->name) {
+- value = gweather_parser_get_localized_value (parser);
++ char *context = NULL;
++ context = xmlTextReaderGetAttribute(parser->xml,"msgctxt");
++
++ value = gweather_parser_get_value (parser);
+ if (!value)
+ goto error_out;
+- loc->name = g_strdup (value);
++
++ if (context != NULL) {
++ loc->name = g_strdup (g_dpgettext2(GETTEXT_PACKAGE "-locations", context, value));
++ xmlFree (context);
++ }
++ else
++ loc->name = g_strdup (dgettext(GETTEXT_PACKAGE "-locations",value));
++
+ xmlFree (value);
+ normalized = g_utf8_normalize (loc->name, -1, G_NORMALIZE_ALL);
+ loc->sort_name = g_utf8_casefold (normalized, -1);
+diff -Nur -x '*.orig' -x '*~' libgweather-2.27.91/libgweather/gweather-timezone.c libgweather-2.27.91.new/libgweather/gweather-timezone.c
+--- libgweather-2.27.91/libgweather/gweather-timezone.c 2009-08-12 19:00:52.000000000 +1000
++++ libgweather-2.27.91.new/libgweather/gweather-timezone.c 2009-08-26 11:54:52.000000000 +1000
+@@ -23,6 +23,7 @@
+ #endif
+
+ #include <string.h>
++#include <libintl.h>
+
+ #define GWEATHER_I_KNOW_THIS_IS_UNSTABLE
+ #include "gweather-timezone.h"
+@@ -152,7 +153,7 @@
+ parse_timezone (GWeatherParser *parser)
+ {
+ GWeatherTimezone *zone = NULL;
+- char *id = NULL, *name = NULL;
++ char *id = NULL, *name = NULL, *context = NULL;
+ int offset = 0, dst_offset = 0;
+ gboolean has_dst = FALSE;
+
+@@ -175,27 +176,34 @@
+ continue;
+ }
+
+- if (!strcmp ((const char *) xmlTextReaderConstName (parser->xml), "name"))
+- name = gweather_parser_get_localized_value (parser);
++ if (!strcmp ((const char *) xmlTextReaderConstName (parser->xml), "name")) {
++ context = xmlTextReaderGetAttribute(parser->xml,"msgctxt");
++ name = gweather_parser_get_value (parser);
++ }
+ else {
+ if (xmlTextReaderNext (parser->xml) != 1)
+ break;
+ }
+ }
+ }
+-
++
+ if (parse_tzdata (id, parser->year_start, parser->year_end,
+ &offset, &has_dst, &dst_offset)) {
+ zone = g_slice_new0 (GWeatherTimezone);
+ zone->ref_count = 1;
+ zone->id = g_strdup (id);
+- zone->name = g_strdup (name);
++ if (context != NULL)
++ zone->name = g_strdup (g_dpgettext2(GETTEXT_PACKAGE "-locations", context, name));
++ else
++ zone->name = g_strdup (dgettext(GETTEXT_PACKAGE "-locations",name));
+ zone->offset = offset;
+ zone->has_dst = has_dst;
+ zone->dst_offset = dst_offset;
+ }
+
+ xmlFree (id);
++ if (context)
++ xmlFree (context);
+ if (name)
+ xmlFree (name);
+
+diff -Nur -x '*.orig' -x '*~' libgweather-2.27.91/po-locations/LINGUAS libgweather-2.27.91.new/po-locations/LINGUAS
+--- libgweather-2.27.91/po-locations/LINGUAS 1970-01-01 10:00:00.000000000 +1000
++++ libgweather-2.27.91.new/po-locations/LINGUAS 2009-08-26 11:54:52.000000000 +1000
+@@ -0,0 +1,78 @@
++ang
++ar
++as
++az
++be
++be@latin
++bg
++bn_IN
++bn
++bs
++ca
++cs
++cy
++da
++de
++dz
++el
++en_CA
++en_GB
++es
++et
++eu
++fa
++fi
++fr
++ga
++gl
++gu
++he
++hi
++hr
++hu
++id
++it
++ja
++ka
++kn
++ko
++ku
++ky
++lt
++lv
++mai
++mg
++mk
++ml
++mn
++mr
++ms
++nb
++ne
++nl
++nn
++oc
++or
++pa
++pl
++pt_BR
++pt
++ro
++ru
++rw
++si
++sk
++sl
++sq
++sr@latin
++sr
++sv
++ta
++te
++th
++tr
++uk
++vi
++zh_CN
++zh_HK
++zh_TW
+diff -Nur -x '*.orig' -x '*~' libgweather-2.27.91/po-locations/Makefile.in.in libgweather-2.27.91.new/po-locations/Makefile.in.in
+--- libgweather-2.27.91/po-locations/Makefile.in.in 1970-01-01 10:00:00.000000000 +1000
++++ libgweather-2.27.91.new/po-locations/Makefile.in.in 2009-08-26 11:54:52.000000000 +1000
+@@ -0,0 +1,217 @@
++# Makefile for program source directory in GNU NLS utilities package.
++# Copyright (C) 1995, 1996, 1997 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
++# Copyright (C) 2004-2008 Rodney Dawes <dobey.pwns@gmail.com>
++#
++# This file may be copied and used freely without restrictions. It may
++# be used in projects which are not available under a GNU Public License,
++# but which still want to provide support for the GNU gettext functionality.
++#
++# - Modified by Owen Taylor <otaylor@redhat.com> to use GETTEXT_PACKAGE
++# instead of PACKAGE and to look for po2tbl in ./ not in intl/
++#
++# - Modified by jacob berkman <jacob@ximian.com> to install
++# Makefile.in.in and po2tbl.sed.in for use with glib-gettextize
++#
++# - Modified by Rodney Dawes <dobey.pwns@gmail.com> for use with intltool
++#
++# We have the following line for use by intltoolize:
++# INTLTOOL_MAKEFILE
++
++GETTEXT_PACKAGE = @GETTEXT_PACKAGE@-locations
++PACKAGE = @PACKAGE@
++VERSION = @VERSION@
++
++SHELL = /bin/sh
++
++srcdir = @srcdir@
++top_srcdir = @top_srcdir@
++top_builddir = @top_builddir@
++VPATH = @srcdir@
++
++prefix = @prefix@
++exec_prefix = @exec_prefix@
++datadir = @datadir@
++datarootdir = @datarootdir@
++libdir = @libdir@
++DATADIRNAME = @DATADIRNAME@
++itlocaledir = $(prefix)/$(DATADIRNAME)/locale
++subdir = po-locations
++install_sh = @install_sh@
++# Automake >= 1.8 provides @mkdir_p@.
++# Until it can be supposed, use the safe fallback:
++mkdir_p = $(install_sh) -d
++
++INSTALL = @INSTALL@
++INSTALL_DATA = @INSTALL_DATA@
++
++GMSGFMT = @GMSGFMT@
++MSGFMT = @MSGFMT@
++XGETTEXT = @XGETTEXT@
++INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
++INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
++MSGMERGE = INTLTOOL_EXTRACT=$(INTLTOOL_EXTRACT) srcdir=$(srcdir) $(INTLTOOL_UPDATE) --gettext-package $(GETTEXT_PACKAGE) --dist
++GENPOT = INTLTOOL_EXTRACT=$(INTLTOOL_EXTRACT) srcdir=$(srcdir) $(INTLTOOL_UPDATE) --gettext-package $(GETTEXT_PACKAGE) --pot
++
++ALL_LINGUAS = @ALL_LINGUAS@
++
++PO_LINGUAS=$(shell if test -r $(srcdir)/LINGUAS; then grep -v "^\#" $(srcdir)/LINGUAS; fi)
++
++USER_LINGUAS=$(shell if test -n "$(LINGUAS)"; then LLINGUAS="$(LINGUAS)"; ALINGUAS="$(ALL_LINGUAS)"; for lang in $$LLINGUAS; do if test -n "`grep ^$$lang$$ $(srcdir)/LINGUAS 2>/dev/null`" -o -n "`echo $$ALINGUAS|tr ' ' '\n'|grep ^$$lang$$`"; then printf "$$lang "; fi; done; fi)
++
++USE_LINGUAS=$(shell if test -n "$(USER_LINGUAS)" -o -n "$(LINGUAS)"; then LLINGUAS="$(USER_LINGUAS)"; else if test -n "$(PO_LINGUAS)"; then LLINGUAS="$(PO_LINGUAS)"; else LLINGUAS="$(ALL_LINGUAS)"; fi; fi; for lang in $$LLINGUAS; do printf "$$lang "; done)
++
++POFILES=$(shell LINGUAS="$(USE_LINGUAS)"; for lang in $$LINGUAS; do printf "$$lang.po "; done)
++
++DISTFILES = ChangeLog Makefile.in.in POTFILES.in $(POFILES)
++EXTRA_DISTFILES = POTFILES.skip Makevars LINGUAS
++
++POTFILES = \
++# This comment gets stripped out
++
++CATALOGS=$(shell LINGUAS="$(USE_LINGUAS)"; for lang in $$LINGUAS; do printf "$$lang.gmo "; done)
++
++.SUFFIXES:
++.SUFFIXES: .po .pox .gmo .mo .msg .cat
++
++.po.pox:
++ $(MAKE) $(GETTEXT_PACKAGE).pot
++ $(MSGMERGE) $< $(GETTEXT_PACKAGE).pot -o $*.pox
++
++.po.mo:
++ $(MSGFMT) -o $@ $<
++
++.po.gmo:
++ file=`echo $* | sed 's,.*/,,'`.gmo \
++ && rm -f $$file && $(GMSGFMT) -o $$file $<
++
++.po.cat:
++ sed -f ../intl/po2msg.sed < $< > $*.msg \
++ && rm -f $@ && gencat $@ $*.msg
++
++
++all: all-@USE_NLS@
++
++all-yes: $(CATALOGS)
++all-no:
++
++$(GETTEXT_PACKAGE).pot: $(POTFILES)
++ $(GENPOT)
++
++install: install-data
++install-data: install-data-@USE_NLS@
++install-data-no: all
++install-data-yes: all
++ linguas="$(USE_LINGUAS)"; \
++ for lang in $$linguas; do \
++ dir=$(DESTDIR)$(itlocaledir)/$$lang/LC_MESSAGES; \
++ $(mkdir_p) $$dir; \
++ if test -r $$lang.gmo; then \
++ $(INSTALL_DATA) $$lang.gmo $$dir/$(GETTEXT_PACKAGE).mo; \
++ echo "installing $$lang.gmo as $$dir/$(GETTEXT_PACKAGE).mo"; \
++ else \
++ $(INSTALL_DATA) $(srcdir)/$$lang.gmo $$dir/$(GETTEXT_PACKAGE).mo; \
++ echo "installing $(srcdir)/$$lang.gmo as" \
++ "$$dir/$(GETTEXT_PACKAGE).mo"; \
++ fi; \
++ if test -r $$lang.gmo.m; then \
++ $(INSTALL_DATA) $$lang.gmo.m $$dir/$(GETTEXT_PACKAGE).mo.m; \
++ echo "installing $$lang.gmo.m as $$dir/$(GETTEXT_PACKAGE).mo.m"; \
++ else \
++ if test -r $(srcdir)/$$lang.gmo.m ; then \
++ $(INSTALL_DATA) $(srcdir)/$$lang.gmo.m \
++ $$dir/$(GETTEXT_PACKAGE).mo.m; \
++ echo "installing $(srcdir)/$$lang.gmo.m as" \
++ "$$dir/$(GETTEXT_PACKAGE).mo.m"; \
++ else \
++ true; \
++ fi; \
++ fi; \
++ done
++
++# Empty stubs to satisfy archaic automake needs
++dvi info tags TAGS ID:
++
++# Define this as empty until I found a useful application.
++install-exec installcheck:
++
++uninstall:
++ linguas="$(USE_LINGUAS)"; \
++ for lang in $$linguas; do \
++ rm -f $(DESTDIR)$(itlocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE).mo; \
++ rm -f $(DESTDIR)$(itlocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE).mo.m; \
++ done
++
++check: all $(GETTEXT_PACKAGE).pot
++ rm -f missing notexist
++ srcdir=$(srcdir) $(INTLTOOL_UPDATE) -m
++ if [ -r missing -o -r notexist ]; then \
++ exit 1; \
++ fi
++
++mostlyclean:
++ rm -f *.pox $(GETTEXT_PACKAGE).pot *.old.po cat-id-tbl.tmp
++ rm -f .intltool-merge-cache
++
++clean: mostlyclean
++
++distclean: clean
++ rm -f Makefile Makefile.in POTFILES stamp-it
++ rm -f *.mo *.msg *.cat *.cat.m *.gmo
++
++maintainer-clean: distclean
++ @echo "This command is intended for maintainers to use;"
++ @echo "it deletes files that may require special tools to rebuild."
++ rm -f Makefile.in.in
++
++distdir = ../$(PACKAGE)-$(VERSION)/$(subdir)
++dist distdir: $(DISTFILES)
++ dists="$(DISTFILES)"; \
++ extra_dists="$(EXTRA_DISTFILES)"; \
++ for file in $$extra_dists; do \
++ test -f $(srcdir)/$$file && dists="$$dists $(srcdir)/$$file"; \
++ done; \
++ for file in $$dists; do \
++ test -f $$file || file="$(srcdir)/$$file"; \
++ ln $$file $(distdir) 2> /dev/null \
++ || cp -p $$file $(distdir); \
++ done
++
++update-po: Makefile
++ $(MAKE) $(GETTEXT_PACKAGE).pot
++ tmpdir=`pwd`; \
++ linguas="$(USE_LINGUAS)"; \
++ for lang in $$linguas; do \
++ echo "$$lang:"; \
++ result="`$(MSGMERGE) -o $$tmpdir/$$lang.new.po $$lang`"; \
++ if $$result; then \
++ if cmp $(srcdir)/$$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
++ rm -f $$tmpdir/$$lang.new.po; \
++ else \
++ if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
++ :; \
++ else \
++ echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
++ rm -f $$tmpdir/$$lang.new.po; \
++ exit 1; \
++ fi; \
++ fi; \
++ else \
++ echo "msgmerge for $$lang.gmo failed!"; \
++ rm -f $$tmpdir/$$lang.new.po; \
++ fi; \
++ done
++
++Makefile POTFILES: stamp-it
++ @if test ! -f $@; then \
++ rm -f stamp-it; \
++ $(MAKE) stamp-it; \
++ fi
++
++stamp-it: Makefile.in.in $(top_builddir)/config.status POTFILES.in
++ cd $(top_builddir) \
++ && CONFIG_FILES=$(subdir)/Makefile.in CONFIG_HEADERS= CONFIG_LINKS= \
++ $(SHELL) ./config.status
++
++# Tell versions [3.59,3.63) of GNU make not to export all variables.
++# Otherwise a system limit (for SysV at least) may be exceeded.
++.NOEXPORT:
+diff -Nur -x '*.orig' -x '*~' libgweather-2.27.91/po-locations/POTFILES.in libgweather-2.27.91.new/po-locations/POTFILES.in
+--- libgweather-2.27.91/po-locations/POTFILES.in 1970-01-01 10:00:00.000000000 +1000
++++ libgweather-2.27.91.new/po-locations/POTFILES.in 2009-08-26 11:54:52.000000000 +1000
+@@ -0,0 +1,4 @@
++# This list should contain *only* data/Locations.xml.in.
++# Everything else should be in POTFILES.skip.
++[encoding:UTF-8]
++data/Locations.xml.in
diff --git a/extra/libgweather/PKGBUILD b/extra/libgweather/PKGBUILD
new file mode 100644
index 000000000..4dbe77413
--- /dev/null
+++ b/extra/libgweather/PKGBUILD
@@ -0,0 +1,37 @@
+# $Id: PKGBUILD 91597 2010-09-27 13:41:59Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libgweather
+pkgver=2.30.3
+pkgrel=1
+pkgdesc="Provides access to weather information from the net"
+arch=('i686' 'x86_64')
+license=('LGPL')
+depends=('gconf>=2.31.91' 'libsoup-gnome>=2.31.92' 'gnome-icon-theme')
+makedepends=('pkgconfig' 'intltool' 'gtk-doc')
+options=('!libtool' '!emptydirs')
+url="http://www.gnome.org/"
+install=libgweather.install
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.30/${pkgname}-${pkgver}.tar.bz2
+ 01_gettext_not_xml.patch)
+sha256sums=('b835374661423f37c46aa8e37368ae24a68856f117b7c21e475a21efdba5264c'
+ '64c181675714a411c2bc31d254cf5ad4a128fba539839b41783540e978a1de20')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i "${srcdir}/01_gettext_not_xml.patch"
+ libtoolize --force
+ gtkdocize
+ aclocal
+ autoconf
+ automake
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-static \
+ --enable-locations-compression
+ make
+ 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 libgweather ${pkgdir}/etc/gconf/schemas/*.schemas
+ rm -f ${pkgdir}/etc/gconf/schemas/*.schemas
+}
diff --git a/extra/libgweather/libgweather.install b/extra/libgweather/libgweather.install
new file mode 100644
index 000000000..7062d4167
--- /dev/null
+++ b/extra/libgweather/libgweather.install
@@ -0,0 +1,22 @@
+pkgname=libgweather
+
+post_install() {
+ usr/sbin/gconfpkg --install ${pkgname}
+ gtk-update-icon-cache -q -t -f usr/share/icons/gnome
+}
+
+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/gnome
+}
diff --git a/extra/libhangul/PKGBUILD b/extra/libhangul/PKGBUILD
new file mode 100644
index 000000000..fb65acc74
--- /dev/null
+++ b/extra/libhangul/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 110870 2011-02-22 20:13:14Z bisson $
+# Contributor: damir <damir@archlinux.org>
+# Maintainer: Gaetan Bisson <bisson@archlinux.org>
+
+pkgname=libhangul
+pkgver=0.0.12
+pkgrel=2
+_filecode=5855
+pkgdesc='Input method library for Korean'
+arch=('i686' 'x86_64')
+url='http://kldp.net/projects/hangul/'
+license=('LGPL')
+options=('!libtool')
+source=("http://kldp.net/frs/download.php/${_filecode}/${pkgname}-${pkgver}.tgz")
+sha1sums=('5e02fe61c8f51ace03bebb1ec75875a2262e3cd5')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --enable-static=no
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/libical/PKGBUILD b/extra/libical/PKGBUILD
new file mode 100644
index 000000000..3f77290ea
--- /dev/null
+++ b/extra/libical/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Pierre Schmitz <pierre@archlinux.de>
+
+pkgname=libical
+pkgver=0.46
+pkgrel=1
+pkgdesc="An open source reference implementation of the icalendar data type and serialization format"
+arch=('i686' 'x86_64')
+url='http://sourceforge.net/projects/freeassociation/'
+license=('LGPL' 'MPL')
+depends=('glibc')
+options=('!libtool')
+source=("http://downloads.sourceforge.net/freeassociation/${pkgname}-${pkgver}.tar.gz")
+md5sums=('9c08f88945bfd5d0791d102e4aa4125c')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ ./autogen.sh
+ libtoolize --force
+ ./configure --prefix=/usr \
+ --enable-shared \
+ --disable-static
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/libice/PKGBUILD b/extra/libice/PKGBUILD
new file mode 100644
index 000000000..a350cfaf7
--- /dev/null
+++ b/extra/libice/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 96500 2010-10-21 21:18:07Z jgc $
+# Contributor: Alexander Baldeck <alexander@archlinux.org>
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+pkgname=libice
+pkgver=1.0.7
+pkgrel=1
+pkgdesc="X11 Inter-Client Exchange library"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+depends=('glibc' 'xproto>=7.0.18')
+makedepends=('pkgconfig' 'xtrans>=1.2.5')
+options=('!libtool')
+source=(${url}/releases/individual/lib/libICE-${pkgver}.tar.bz2)
+license=('custom')
+sha1sums=('c7d0f4c5b0e999385445b8be1bc89aec4e5de71d')
+
+build() {
+ cd "${srcdir}/libICE-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc
+ make
+ make DESTDIR="${pkgdir}" install
+
+ install -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/libid3tag/10_utf16.diff b/extra/libid3tag/10_utf16.diff
new file mode 100644
index 000000000..a3218d26d
--- /dev/null
+++ b/extra/libid3tag/10_utf16.diff
@@ -0,0 +1,48 @@
+#! /bin/sh -e
+## 10_utf16.dpatch by <kurt@roeckx.be>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Handle bogus UTF16 sequences that have a length that is not
+## DP: an even number of 8 bit characters.
+
+if [ $# -lt 1 ]; then
+ echo "`basename $0`: script expects -patch|-unpatch as argument" >&2
+ exit 1
+fi
+
+[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
+patch_opts="${patch_opts:--f --no-backup-if-mismatch} ${2:+-d $2}"
+
+case "$1" in
+ -patch) patch -p1 ${patch_opts} < $0;;
+ -unpatch) patch -R -p1 ${patch_opts} < $0;;
+ *)
+ echo "`basename $0`: script expects -patch|-unpatch as argument" >&2
+ exit 1;;
+esac
+
+exit 0
+
+@DPATCH@
+diff -urNad libid3tag-0.15.1b/utf16.c /tmp/dpep.tKvO7a/libid3tag-0.15.1b/utf16.c
+--- libid3tag-0.15.1b/utf16.c 2006-01-13 15:26:29.000000000 +0100
++++ /tmp/dpep.tKvO7a/libid3tag-0.15.1b/utf16.c 2006-01-13 15:27:19.000000000 +0100
+@@ -282,5 +282,18 @@
+
+ free(utf16);
+
++ if (end == *ptr && length % 2 != 0)
++ {
++ /* We were called with a bogus length. It should always
++ * be an even number. We can deal with this in a few ways:
++ * - Always give an error.
++ * - Try and parse as much as we can and
++ * - return an error if we're called again when we
++ * already tried to parse everything we can.
++ * - tell that we parsed it, which is what we do here.
++ */
++ (*ptr)++;
++ }
++
+ return ucs4;
+ }
diff --git a/extra/libid3tag/11_unknown_encoding.diff b/extra/libid3tag/11_unknown_encoding.diff
new file mode 100644
index 000000000..7387f2f7d
--- /dev/null
+++ b/extra/libid3tag/11_unknown_encoding.diff
@@ -0,0 +1,37 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 11_unknown_encoding.dpatch by Andreas Henriksson <andreas@fatal.se>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: In case of an unknown/invalid encoding, id3_parse_string() will
+## DP: return NULL, but the return value wasn't checked resulting
+## DP: in segfault in id3_ucs4_length(). This is the only place
+## DP: the return value wasn't checked.
+
+@DPATCH@
+diff -urNad libid3tag-0.15.1b~/compat.gperf libid3tag-0.15.1b/compat.gperf
+--- libid3tag-0.15.1b~/compat.gperf 2004-01-23 09:41:32.000000000 +0000
++++ libid3tag-0.15.1b/compat.gperf 2007-01-14 14:36:53.000000000 +0000
+@@ -236,6 +236,10 @@
+
+ encoding = id3_parse_uint(&data, 1);
+ string = id3_parse_string(&data, end - data, encoding, 0);
++ if (!string)
++ {
++ continue;
++ }
+
+ if (id3_ucs4_length(string) < 4) {
+ free(string);
+diff -urNad libid3tag-0.15.1b~/parse.c libid3tag-0.15.1b/parse.c
+--- libid3tag-0.15.1b~/parse.c 2004-01-23 09:41:32.000000000 +0000
++++ libid3tag-0.15.1b/parse.c 2007-01-14 14:37:34.000000000 +0000
+@@ -165,6 +165,9 @@
+ case ID3_FIELD_TEXTENCODING_UTF_8:
+ ucs4 = id3_utf8_deserialize(ptr, length);
+ break;
++ default:
++ /* FIXME: Unknown encoding! Print warning? */
++ return NULL;
+ }
+
+ if (ucs4 && !full) {
diff --git a/extra/libid3tag/CVE-2008-2109.patch b/extra/libid3tag/CVE-2008-2109.patch
new file mode 100644
index 000000000..26c54c5d2
--- /dev/null
+++ b/extra/libid3tag/CVE-2008-2109.patch
@@ -0,0 +1,11 @@
+--- field.c.orig 2008-05-05 09:49:15.000000000 -0400
++++ field.c 2008-05-05 09:49:25.000000000 -0400
+@@ -291,7 +291,7 @@
+
+ end = *ptr + length;
+
+- while (end - *ptr > 0) {
++ while (end - *ptr > 0 && **ptr != '\0') {
+ ucs4 = id3_parse_string(ptr, end - *ptr, *encoding, 0);
+ if (ucs4 == 0)
+ goto fail;
diff --git a/extra/libid3tag/PKGBUILD b/extra/libid3tag/PKGBUILD
new file mode 100644
index 000000000..759e99240
--- /dev/null
+++ b/extra/libid3tag/PKGBUILD
@@ -0,0 +1,38 @@
+# $Id: PKGBUILD 90138 2010-09-08 13:24:51Z andrea $
+# Maintainer:
+# Contributor: dorphell <dorphell@archlinux.org>
+
+pkgname=libid3tag
+pkgver=0.15.1b
+pkgrel=6
+pkgdesc="library for id3 tagging"
+arch=('i686' 'x86_64')
+url="http://www.underbit.com/products/mad/"
+license=('GPL')
+depends=('zlib')
+makedepends=('gperf')
+options=('!libtool')
+source=("ftp://ftp.mars.org/pub/mpeg/${pkgname}-${pkgver}.tar.gz"
+ 'id3tag.pc'
+ '10_utf16.diff' '11_unknown_encoding.diff' 'CVE-2008-2109.patch')
+md5sums=('e5808ad997ba32c498803822078748c3'
+ '8bb41fd814fafcc37ec8bc88f5545a4a'
+ '4f9df4011e6a8c23240fff5de2d05f6e'
+ '3ca856b97924d48a0fdfeff0bd83ce7d'
+ 'c51822ea6301b1ca469975f0c9ee8e34')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -p1 < ../10_utf16.diff
+ patch -p1 < ../11_unknown_encoding.diff
+ patch -Np0 -i ${srcdir}/CVE-2008-2109.patch
+
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+ install -D -m644 "${srcdir}/id3tag.pc" "${pkgdir}/usr/lib/pkgconfig/id3tag.pc"
+}
diff --git a/extra/libid3tag/id3tag.pc b/extra/libid3tag/id3tag.pc
new file mode 100644
index 000000000..3155de7b3
--- /dev/null
+++ b/extra/libid3tag/id3tag.pc
@@ -0,0 +1,10 @@
+prefix=/usr
+exec_prefix=/usr/bin
+libdir=/usr/lib
+includedir=/usr/include
+
+Name: ID3TAG
+Description: libid3tag - ID3 tag manipulation library
+Version: 0.15.0b
+Libs: -L${libdir} -lid3tag -lz
+Cflags:
diff --git a/extra/libidl2/PKGBUILD b/extra/libidl2/PKGBUILD
new file mode 100644
index 000000000..87bb7c218
--- /dev/null
+++ b/extra/libidl2/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 74302 2010-03-30 18:39:42Z ibiru $
+# Maintainer: dorphell <dorphell@archlinux.org>
+# Committer: Judd Vinet <jvinet@zeroflux.org>
+
+pkgname=libidl2
+pkgver=0.8.14
+pkgrel=1
+pkgdesc="A front-end for CORBA 2.2 IDL and Netscape's XPIDL"
+arch=(i686 x86_64)
+license=('LGPL')
+depends=('glib2>=2.24.0' 'texinfo')
+makedepends=('pkgconfig')
+install=libidl2.install
+options=('!libtool' '!emptydirs')
+source=(http://ftp.gnome.org/pub/gnome/sources/libIDL/0.8/libIDL-${pkgver}.tar.bz2)
+url="http://www.gnome.org"
+sha256sums=('c5d24d8c096546353fbc7cedf208392d5a02afe9d56ebcc1cccb258d7c4d2220')
+
+build() {
+ cd "${srcdir}/libIDL-${pkgver}"
+ ./configure --prefix=/usr || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+
+ rm -f "${pkgdir}/usr/share/info/dir"
+ gzip -9nf "${pkgdir}/usr/share/info/"*
+}
diff --git a/extra/libidl2/libidl2.install b/extra/libidl2/libidl2.install
new file mode 100644
index 000000000..38b3d56b3
--- /dev/null
+++ b/extra/libidl2/libidl2.install
@@ -0,0 +1,13 @@
+info_dir=/usr/share/info
+
+post_install() {
+ install-info ${info_dir}/libIDL2.info.gz ${info_dir}/dir 2> /dev/null
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ install-info --delete ${info_dir}/libIDL2.info.gz ${info_dir}/dir 2> /dev/null
+}
diff --git a/extra/libidn/PKGBUILD b/extra/libidn/PKGBUILD
new file mode 100644
index 000000000..d765ddbd7
--- /dev/null
+++ b/extra/libidn/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 94460 2010-10-07 10:45:51Z ronald $
+# Maintainer: Ronald van Haren <ronald.archlinux.org>
+# Contributor: Jan de Groot <jgc.archlinux.org>
+# Contributor: Eric Johnson <eric.archlinux.org>
+
+pkgname=libidn
+pkgver=1.19
+pkgrel=1
+pkgdesc="Implementation of the Stringprep, Punycode and IDNA specifications"
+url="http://www.gnu.org/software/libidn/"
+arch=('i686' 'x86_64')
+license=('GPL3' 'LGPL')
+depends=('glibc' 'texinfo')
+makedepends=('pkgconfig')
+options=('!libtool')
+source=(http://ftp.gnu.org/gnu/${pkgname}/${pkgname}-${pkgver}.tar.gz)
+install=libidn.install
+md5sums=('a45142126d28162014c995f969bdb5a8')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/libidn/libidn.install b/extra/libidn/libidn.install
new file mode 100644
index 000000000..a0366ebb9
--- /dev/null
+++ b/extra/libidn/libidn.install
@@ -0,0 +1,19 @@
+info_dir=/usr/share/info
+info_files=(libidn.info)
+
+post_install() {
+ for f in ${info_files[@]}; do
+ install-info ${info_dir}/$f.gz ${info_dir}/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install
+}
+
+pre_remove() {
+ for f in ${info_files[@]}; do
+ install-info --delete ${info_dir}/$f.gz ${info_dir}/dir 2> /dev/null
+ done
+}
+
diff --git a/extra/libiec61883/PKGBUILD b/extra/libiec61883/PKGBUILD
new file mode 100644
index 000000000..468cd762f
--- /dev/null
+++ b/extra/libiec61883/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 93012 2010-10-02 21:31:27Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Jason Chu <jason@archlinux.org>
+# Contributor: Jaroslaw Swierczynski <swiergot@juvepoland.com>
+# Contributor: Stephen Caraher <moskvax@gmail.com>
+
+pkgname=libiec61883
+pkgver=1.2.0
+pkgrel=2
+pkgdesc="A higher level API for streaming DV, MPEG-2 and audio over Linux IEEE 1394"
+arch=('i686' 'x86_64')
+url="http://www.kernel.org/pub/linux/libs/ieee1394/"
+license=('LGPL')
+depends=('libraw1394')
+options=('!libtool')
+source=(http://www.kernel.org/pub/linux/libs/ieee1394//${pkgname}-${pkgver}.tar.gz)
+md5sums=('8af39fff74988073c3ad53fbab147da9')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ ./configure --prefix=/usr || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/libieee1284/PKGBUILD b/extra/libieee1284/PKGBUILD
new file mode 100644
index 000000000..98f7d7107
--- /dev/null
+++ b/extra/libieee1284/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 89592 2010-09-02 10:23:12Z remy $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+# Contributor: Manolis Tzanidakis <manolis@archlinux.org>
+
+pkgname=libieee1284
+pkgver=0.2.11
+pkgrel=3
+pkgdesc="A library to query devices connected in parallel port."
+arch=('i686' 'x86_64')
+license=('GPL2')
+url="http://cyberelk.net/tim/libieee1284"
+depends=('python2')
+options=('!libtool')
+source=(http://downloads.sourceforge.net/sourceforge/$pkgname/$pkgname-$pkgver.tar.bz2)
+md5sums=('b8fff9f3d121531bc17430e3f4ea6ed0')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ ./configure --prefix=/usr --mandir=/usr/share/man
+ make
+}
+
+package() {
+ cd $srcdir/$pkgname-$pkgver
+ make DESTDIR="$pkgdir"/ install
+}
diff --git a/extra/libifp/PKGBUILD b/extra/libifp/PKGBUILD
new file mode 100644
index 000000000..248d449c5
--- /dev/null
+++ b/extra/libifp/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 101322 2010-11-28 22:22:28Z tpowa $
+# Maintainer: damir <damir@archlinux.org>
+# Contributor: Mark Rosenstand <mark@borkware.net>
+
+pkgname=libifp
+pkgver=1.0.0.2
+pkgrel=3
+pkgdesc="General-purpose library-driver for iRiver's iFP portable audio players"
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://ifp-driver.sourceforge.net/libifp/"
+depends=('libusb-compat')
+options=('!libtool')
+source=(http://downloads.sourceforge.net/sourceforge/ifp-driver/${pkgname}-${pkgver}.tar.gz)
+md5sums=('d4114794b13bd32b6b767e0870df6fc4')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr --mandir=/usr/share/man --with-libusb
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/libimobiledevice/PKGBUILD b/extra/libimobiledevice/PKGBUILD
new file mode 100644
index 000000000..7fd96da42
--- /dev/null
+++ b/extra/libimobiledevice/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id: PKGBUILD 101292 2010-11-28 20:11:58Z ibiru $
+# Maintainer : Ionut Biru <ibiru@archlinux.org>
+# Contributor: Gabriel Martinez < reitaka at gmail dot com >
+
+pkgname=libimobiledevice
+pkgver=1.0.4
+pkgrel=1
+pkgdesc="Is a software library that talks the protocols to support iPhone and iPod Touch devices on Linux"
+url="http://libimobiledevice.org/"
+arch=('i686' 'x86_64')
+license=('GPL2' 'LGPL2.1')
+depends=('gnutls' 'glib2' 'libplist>=1.3' 'usbmuxd>=1.0.6')
+makedepends=('swig' 'python2')
+options=('!libtool')
+source=(http://libimobiledevice.org/downloads/${pkgname}-${pkgver}.tar.bz2
+ swig-version-check.patch)
+md5sums=('dbf62f2fddaa87558b6f1ebc76abb549'
+ '8bb215e36fe0e08a72332c108c7842cc')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ # SWIG version check is wrong (still not fixed upstream)
+ patch -p1 -i "$srcdir"/swig-version-check.patch
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/libimobiledevice/swig-version-check.patch b/extra/libimobiledevice/swig-version-check.patch
new file mode 100644
index 000000000..c56b095db
--- /dev/null
+++ b/extra/libimobiledevice/swig-version-check.patch
@@ -0,0 +1,14 @@
+diff -Nur libimobiledevice-1.0.3.old/configure libimobiledevice-1.0.3/configure
+--- libimobiledevice-1.0.3.old/configure 2010-10-04 07:38:37.000000000 -0700
++++ libimobiledevice-1.0.3/configure 2010-10-08 05:43:05.466686656 -0700
+@@ -3477,9 +3477,7 @@
+ if test -z "$available_patch" ; then
+ available_patch=0
+ fi
+- if test $available_major -ne $required_major \
+- -o $available_minor -ne $required_minor \
+- -o $available_patch -lt $required_patch ; then
++ if test $available_major -lt $required_major ; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: SWIG version >= 1.3.21 is required. You have $swig_version. You should look at http://www.swig.org" >&5
+ $as_echo "$as_me: WARNING: SWIG version >= 1.3.21 is required. You have $swig_version. You should look at http://www.swig.org" >&2;}
+ SWIG=false
diff --git a/extra/libindi/PKGBUILD b/extra/libindi/PKGBUILD
new file mode 100644
index 000000000..54427ffd4
--- /dev/null
+++ b/extra/libindi/PKGBUILD
@@ -0,0 +1,40 @@
+# $Id: PKGBUILD 62098 2010-01-02 09:13:44Z tpowa $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=libindi
+pkgver=0.7.2
+pkgrel=1
+pkgdesc="A distributed control protocol designed to operate astronomical instrumentation"
+url="http://www.indilib.org/index.php?title=Main_Page"
+license=('GPL2')
+arch=('i686' 'x86_64')
+depends=('gcc-libs' 'zlib' 'libnova' 'cfitsio')
+makedepends=('pkgconfig' 'cmake')
+provides=('indilib')
+replaces=('indilib')
+conflicts=('indilib')
+options=('!libtool')
+source=("http://downloads.sourceforge.net/indi/${pkgname}_${pkgver}.tar.gz"
+ 'linking-pthread.patch')
+md5sums=('a78a77dc2322a46f5bf4c5d75380e8b0'
+ '1ebc282e259cb0c9c52cad3dadd5e044')
+
+build() {
+ # fixed upstream
+ cd ${srcdir}/${pkgname}-${pkgver}
+ patch -Np2 -i ${srcdir}/linking-pthread.patch
+
+ cd ${srcdir}
+ mkdir build
+ cd build
+ cmake ../${pkgname}-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=/usr
+ make
+}
+
+package() {
+ cd ${srcdir}/build
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/libindi/linking-pthread.patch b/extra/libindi/linking-pthread.patch
new file mode 100644
index 000000000..c012707a2
--- /dev/null
+++ b/extra/libindi/linking-pthread.patch
@@ -0,0 +1,11 @@
+--- trunk/libindi/CMakeLists.txt 2010/11/20 11:45:07 397
++++ trunk/libindi/CMakeLists.txt 2010/12/01 08:36:20 412
+@@ -164,7 +164,7 @@
+ ############# INDI Client Library ################
+ ##################################################
+ add_library(indiclient STATIC ${indibase_SRCS})
+-target_link_libraries(indiclient indi)
++target_link_libraries(indiclient indi pthread)
+ install(TARGETS indiclient ARCHIVE DESTINATION lib${LIB_POSTFIX})
+
+ #####################################
diff --git a/extra/libiodbc/PKGBUILD b/extra/libiodbc/PKGBUILD
new file mode 100644
index 000000000..a9a47dec7
--- /dev/null
+++ b/extra/libiodbc/PKGBUILD
@@ -0,0 +1,36 @@
+# $Id: PKGBUILD 4453 2009-10-23 09:11:19Z spupykin $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Pierre Schmitz <pierre@archlinux.de>
+# Contributor: Sergej Pupykin <pupykin.s+arch@gmail.com>
+
+pkgname=libiodbc
+pkgver=3.52.7
+pkgrel=4
+pkgdesc='Independent Open DataBase Connectivity for Linux'
+arch=('i686' 'x86_64')
+url="http://www.iodbc.org/dataspace/iodbc/wiki/iODBC/"
+license=('LGPL')
+depends=('glibc' 'sh')
+makedepends=('chrpath')
+replaces=('iodbc')
+conflicts=('iodbc')
+options=('!libtool')
+source=("http://downloads.sourceforge.net/iodbc/${pkgname}-${pkgver}.tar.gz")
+md5sums=('ddbd274cb31d65be6a78da58fc09079a')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr \
+ --disable-static \
+ --includedir=/usr/include/libiodbc \
+ --disable-gui \
+ --disable-libodbc
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+ chrpath -d ${pkgdir}/usr/bin/iodbctest{,w}
+ rm -rf ${pkgdir}/usr/share/libiodbc/
+}
diff --git a/extra/libirman/PKGBUILD b/extra/libirman/PKGBUILD
new file mode 100644
index 000000000..3305a78eb
--- /dev/null
+++ b/extra/libirman/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id: $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libirman
+pkgver=0.4.5
+pkgrel=2
+pkgdesc="Irman driver lcd library"
+arch=('i686' 'x86_64')
+url="http://www.lirc.org"
+license=('LGPL')
+options=(!libtool)
+backup=('etc/irman.conf')
+depends=('glibc')
+source=(http://downloads.sourceforge.net/lirc/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('4a2708d53b6c79659c073cfefed57f78')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --disable-static
+ make
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/libisoburn/PKGBUILD b/extra/libisoburn/PKGBUILD
new file mode 100644
index 000000000..2cd7b651f
--- /dev/null
+++ b/extra/libisoburn/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id: PKGBUILD 114284 2011-03-12 07:01:26Z andyrtr $
+# Maintainer: Andreas Radke <andyrtr@archlinux.org>
+# Contributor: Gour <Gour <gour@mail.inet.hr>
+
+pkgname=libisoburn
+pkgver=1.0.4.pl00
+pkgrel=1
+pkgdesc="frontend for libraries libburn and libisofs"
+url="http://libburnia.pykix.org/wiki/Libisoburn"
+arch=('i686' 'x86_64')
+license=('GPL2')
+depends=('libburn>=1.0.4' 'libisofs>=1.0.4' 'readline>=6.1')
+options=('!libtool')
+source=(http://files.libburnia-project.org/releases/${pkgname}-${pkgver}.tar.gz)
+md5sums=('ba21567325bda50f02d406f46c3c8392')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver/.pl??/}
+ ./configure --prefix=/usr
+ make
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/libisofs/PKGBUILD b/extra/libisofs/PKGBUILD
new file mode 100644
index 000000000..568a0b8f0
--- /dev/null
+++ b/extra/libisofs/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 114279 2011-03-12 06:56:07Z andyrtr $
+# Maintainer: AndyRTR <andyrtr@archlinux.org>
+# Contributor: Hugo Doria <hugodoria@gmail.com>
+# Contributor: Bjorn Martensen
+
+pkgname=libisofs
+pkgver=1.0.4
+pkgrel=1
+pkgdesc="Library to pack up hard disk files and directories into a ISO 9660 disk image"
+arch=('i686' 'x86_64')
+url="http://libburnia.pykix.org/"
+license=('GPL')
+depends=('acl' 'zlib')
+source=(http://files.libburnia-project.org/releases/${pkgname}-${pkgver}.tar.gz)
+options=('!libtool')
+md5sums=('5a8abcec98c312f5c3550cb66754eb66')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr \
+ --enable-libacl --enable-xattr --disable-static
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
+
diff --git a/extra/libjpeg-turbo/PKGBUILD b/extra/libjpeg-turbo/PKGBUILD
new file mode 100644
index 000000000..3e7cd9f75
--- /dev/null
+++ b/extra/libjpeg-turbo/PKGBUILD
@@ -0,0 +1,33 @@
+# $Id: PKGBUILD 111658 2011-02-28 03:23:17Z allan $
+# Maintainer: Allan McRae <allan@archlinux.org>
+# Contributor: Simone Sclavi 'Ito' <darkhado@gmail.com>
+
+pkgname=libjpeg-turbo
+pkgver=1.1.0
+pkgrel=1
+pkgdesc="libjpeg derivative with accelerated baseline JPEG compression and decompression"
+arch=('i686' 'x86_64')
+url="http://libjpeg-turbo.virtualgl.org/"
+license=('GPL' 'custom')
+makedepends=('nasm')
+provides=('libjpeg=8.0.2')
+conflicts=('libjpeg')
+replaces=('libjpeg')
+options=('!libtool')
+source=(http://sourceforge.net/projects/$pkgname/files/$pkgver/$pkgname-$pkgver.tar.gz)
+md5sums=('83e6914a281d649ad289445dc20f9de4')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ ./configure --prefix=/usr --with-jpeg8 --mandir=/usr/share/man
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ make DESTDIR="$pkgdir/" install
+ install -Dm644 LICENSE.txt $pkgdir/usr/share/licenses/libjpeg-turbo/LICENSE
+}
+
diff --git a/extra/libksba/PKGBUILD b/extra/libksba/PKGBUILD
new file mode 100644
index 000000000..4e19d60a7
--- /dev/null
+++ b/extra/libksba/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id: PKGBUILD 87317 2010-08-12 11:57:33Z tpowa $
+# Maintainer: damir <damir@archlinux.org>
+# Contributor: Damir Perisa <damir.perisa@bluewin.ch>
+
+pkgname=libksba
+pkgver=1.0.8
+pkgrel=1
+pkgdesc="Libksba is a CMS and X.509 access library"
+arch=(i686 x86_64)
+license=('GPL')
+url="ftp://ftp.gnupg.org/gcrypt/alpha/libksba"
+depends=('bash' 'libgpg-error' 'glibc')
+source=(ftp://ftp.gnupg.org/gcrypt/$pkgname/$pkgname-$pkgver.tar.bz2)
+options=(!libtool)
+
+build() {
+ cd $startdir/src/$pkgname-$pkgver
+ ./configure --prefix=/usr
+ make
+ make DESTDIR=$startdir/pkg install
+}
+md5sums=('8acac0b3cbd0030dfc6d0f6a58c9b5b2')
diff --git a/extra/libktorrent/PKGBUILD b/extra/libktorrent/PKGBUILD
new file mode 100644
index 000000000..b2da7c65e
--- /dev/null
+++ b/extra/libktorrent/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id: PKGBUILD 115082 2011-03-16 19:16:25Z andrea $
+# Maintainer: Ronald van Haren <ronald.archlinux.org>
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+
+pkgname=libktorrent
+pkgver=1.1.0
+pkgrel=1
+pkgdesc="A BitTorrent library based on KDE Platform"
+arch=('i686' 'x86_64')
+url="http://ktorrent.org"
+license=('GPL2')
+depends=('kdelibs')
+makedepends=('automoc4' 'cmake' 'boost')
+source=("http://ktorrent.org/downloads/4.1.0/${pkgname}-${pkgver}.tar.bz2")
+options=('libtool')
+md5sums=('76d3e58bbf2e4df7e97421e06ebf8fb8')
+
+build() {
+ cd ${srcdir}
+ mkdir build
+ cd build
+ cmake ../${pkgname}-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=/usr
+ make
+}
+
+package() {
+ cd ${srcdir}/build
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/liblastfm/PKGBUILD b/extra/liblastfm/PKGBUILD
new file mode 100644
index 000000000..13e5dd98e
--- /dev/null
+++ b/extra/liblastfm/PKGBUILD
@@ -0,0 +1,32 @@
+# $Id: PKGBUILD 100655 2010-11-25 08:43:40Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: XazZ <xazz.xazz [AT] googlemail.com>
+
+pkgname=liblastfm
+pkgver=0.3.3
+pkgrel=2
+pkgdesc="A collection of libraries to help you integrate Last.fm services into your rich desktop software"
+arch=('i686' 'x86_64')
+url="http://github.com/mxcl/liblastfm/"
+license=('GPL')
+depends=('libsamplerate' 'fftw' 'qt')
+makedepends=('ruby')
+options=('!libtool')
+source=(${pkgname}-${pkgver}.tar.gz::"https://github.com/mxcl/${pkgname}/tarball/${pkgver}"
+ 'no-ftools.patch')
+sha1sums=('f2e9705c9c2cbeaa14f46da9bd35ab36fe710392'
+ 'ba344601d29091fb88123f80592359369efdf338')
+
+build() {
+ cd ${srcdir}/mxcl-${pkgname}-1c739eb
+
+ patch -Np1 -i ${srcdir}/no-ftools.patch
+
+ ruby configure --release --prefix /usr
+ make
+}
+
+package(){
+ cd ${srcdir}/mxcl-${pkgname}-1c739eb
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/liblastfm/no-ftools.patch b/extra/liblastfm/no-ftools.patch
new file mode 100644
index 000000000..e8480c36d
--- /dev/null
+++ b/extra/liblastfm/no-ftools.patch
@@ -0,0 +1,36 @@
+--- mxcl-liblastfm-3539836/admin/findsrc.rb~ 2010-09-19 10:35:34.783333338 +0200
++++ mxcl-liblastfm-3539836/admin/findsrc.rb 2010-09-19 10:35:57.730000003 +0200
+@@ -1,6 +1,6 @@
+ #!/usr/bin/ruby
+ require 'find'
+-require "#{File.dirname __FILE__}/platform"
++require "#{Dir.getwd}/admin/platform.rb"
+
+ def findsrc dir='.'
+ excludes = ['.svn','.git','_include','tests','_build']
+--- mxcl-liblastfm-3539836/admin/qpp~ 2010-09-19 10:36:09.276666670 +0200
++++ mxcl-liblastfm-3539836/admin/qpp 2010-09-19 10:36:16.926666670 +0200
+@@ -2,9 +2,8 @@
+ # Creates a qmake .pro file for all valid SOURCES, HEADERS, FORMS and
+ # RESOURCES under each argument to ARGV as directories
+
+-cwd=File.dirname __FILE__
+ require 'find'
+-require "#{cwd}/findsrc"
++require "#{Dir.getwd}/admin/findsrc.rb"
+
+ sources = Array.new
+ headers = Array.new
+--- mxcl-liblastfm-3539836/admin/Makefile.rb~ 2010-09-19 10:35:38.086666671 +0200
++++ mxcl-liblastfm-3539836/admin/Makefile.rb 2010-09-19 10:36:05.816666671 +0200
+@@ -4,9 +4,8 @@
+ # and then creates the directory _include and creates files named after the
+ # class names in there which #include the file that contains the class
+
+-cwd = File.dirname( __FILE__ )
+ require 'find'
+-require "#{cwd}/platform.rb"
++require "#{Dir.getwd}/admin/platform.rb"
+
+
+ ######################################################################### defs
diff --git a/extra/liblo/PKGBUILD b/extra/liblo/PKGBUILD
new file mode 100644
index 000000000..eae1ff944
--- /dev/null
+++ b/extra/liblo/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id: PKGBUILD 58893 2009-11-16 22:44:48Z giovanni $
+# Contributor: damir <damir@archlinux.org>
+# Contributor: Pajaro
+
+pkgname=liblo
+pkgver=0.26
+pkgrel=1
+pkgdesc="Lightweight OSC implementation: an implementation of the Open Sound Control protocol for POSIX systems"
+arch=(i686 x86_64)
+url="http://plugin.org.uk/liblo/"
+license=('GPL')
+depends=('glibc')
+options=('!libtool')
+source=("http://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.gz")
+md5sums=('5351de14262560e15e7f23865293b16f')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ ./configure --prefix=/usr || return 1
+ make || return 1
+ make DESTDIR=$pkgdir install || return 1
+}
diff --git a/extra/liblqr/PKGBUILD b/extra/liblqr/PKGBUILD
new file mode 100644
index 000000000..58ebf907a
--- /dev/null
+++ b/extra/liblqr/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id: PKGBUILD 49462 2009-08-08 15:03:23Z tpowa $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=liblqr
+pkgver=0.4.1
+pkgrel=1
+pkgdesc="A seam-carving C/C++ library called Liquid Rescale"
+arch=('i686' 'x86_64')
+url="http://liblqr.wikidot.com/"
+license=('GPL')
+depends=('glibc' 'glib2')
+makedepends=('pkgconfig')
+options=('!libtool')
+source=(http://liblqr.wikidot.com/local--files/en:download-page/$pkgname-1-$pkgver.tar.bz2)
+
+build() {
+ cd "$srcdir/$pkgname-1-$pkgver"
+ ./configure --prefix=/usr
+ make || return 1
+ make DESTDIR="$pkgdir/" install || return 1
+}
+md5sums=('0e24ed3c9fcdcb111062640764d7b87a')
diff --git a/extra/liblrdf/PKGBUILD b/extra/liblrdf/PKGBUILD
new file mode 100644
index 000000000..529cd3cef
--- /dev/null
+++ b/extra/liblrdf/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 68012 2010-02-10 13:47:57Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+
+pkgname=liblrdf
+pkgver=0.4.0
+pkgrel=6
+pkgdesc="A library for the manipulation of RDF file in LADSPA plugins"
+arch=('i686' 'x86_64')
+url="http://sourceforge.net/projects/lrdf"
+depends=('raptor>=1.4.15-2' 'ladspa')
+makedepends=('pkgconfig')
+license=('GPL')
+options=('!libtool')
+source=(http://downloads.sourceforge.net/sourceforge/lrdf/${pkgname}-${pkgver}.tar.gz
+ md5.patch)
+groups=('ladspa-plugins')
+md5sums=('327a5674f671c4b360c6353800226877'
+ 'a6d231d052dc188cbc4c1039cf3a2003')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ patch -Np1 -i "${srcdir}/md5.patch" || return 1
+ ./configure --prefix=/usr || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/liblrdf/md5.patch b/extra/liblrdf/md5.patch
new file mode 100644
index 000000000..1c43b12e9
--- /dev/null
+++ b/extra/liblrdf/md5.patch
@@ -0,0 +1,18 @@
+--- liblrdf-0.4.0.orig/src/lrdf_md5.h
++++ liblrdf-0.4.0/src/lrdf_md5.h
+@@ -32,6 +32,15 @@
+ #ifndef __MD5_H__
+ #define __MD5_H__
+
++/* Change function names to prevent symbol conflicts */
++#define md5_init _lrdf_md5_init
++#define md5_buffer _lrdf_md5_buffer
++#define md5_sig_from_string _lrdf_md5_sig_from_string
++#define md5_finish _lrdf_md5_finish
++#define md5_process _lrdf_md5_process
++#define md5_sig_to_string _lrdf_md5_sig_to_string
++#define md5_get_result _lrdf_md5_get_result
++
+ /*
+ * Size of a standard MD5 signature in bytes. This definition is for
+ * external programs only. The MD5 routines themselves reference the
diff --git a/extra/libmad/PKGBUILD b/extra/libmad/PKGBUILD
new file mode 100644
index 000000000..fc978b8e7
--- /dev/null
+++ b/extra/libmad/PKGBUILD
@@ -0,0 +1,40 @@
+# $Id: PKGBUILD 28155 2009-02-28 01:26:22Z giovanni $
+# Maintainer: Travis Willard <travis@archlinux.org>
+pkgname=libmad
+pkgver=0.15.1b
+pkgrel=4
+pkgdesc="A high-quality MPEG audio decoder"
+arch=(i686 x86_64)
+license=('GPL')
+depends=('glibc')
+makedepends=('autoconf')
+replaces=('mad')
+conflicts=('mad')
+options=('!libtool')
+source=(http://downloads.sourceforge.net/sourceforge/mad/$pkgname-$pkgver.tar.gz
+ libmad.patch amd64-64bit.diff frame_length.diff optimize.diff)
+url="http://www.underbit.com/products/mad/"
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ patch -Np1 -i $srcdir/libmad.patch || return 1
+ patch -Np1 -i $srcdir/amd64-64bit.diff || return 1
+ patch -Np1 -i $srcdir/frame_length.diff || return 1
+ patch -Np1 -i $srcdir/optimize.diff || return 1
+ CFLAGS="$CFLAGS -ftree-vectorize -ftree-vectorizer-verbose=1"
+ autoconf
+ ./configure --prefix=/usr
+ make || return 1
+ make DESTDIR=$startdir/pkg install
+}
+
+md5sums=('1be543bc30c56fb6bea1d7bf6a64e66c'
+ 'fbcca0267a423bae45389666f4cb04d5'
+ '8d8bd64a2842dd59153b3a6642059e23'
+ '3329b032118a68e18908197e65b3198d'
+ '3e52afe2103f367810a18bef9e82eb9f')
+sha256sums=('bbfac3ed6bfbc2823d3775ebb931087371e142bb0e9bb1bee51a76a6e0078690'
+ '813634b07e72ccc23c5c5dc63f88fb789706477fa0a74f535115b8bd898b2ff4'
+ '0b506dc3c3a83837739f84f7b9db7497fd79b3623b5fb7e291ce44f79d7bf726'
+ '0e21f2c6b19337d0b237dacc04f7b90a56be7f359f4c9a2ee0b202d9af0cfa69'
+ 'f38216942a1e84fd5341394a56dc5e91117d168a660f3c07ebd59af9b907e6f2')
diff --git a/extra/libmad/amd64-64bit.diff b/extra/libmad/amd64-64bit.diff
new file mode 100644
index 000000000..2ef025b6c
--- /dev/null
+++ b/extra/libmad/amd64-64bit.diff
@@ -0,0 +1,12 @@
+Index: libmad-0.15.1b/configure.ac
+===================================================================
+--- libmad-0.15.1b.orig/configure.ac 2008-03-07 20:33:05.000000000 +0000
++++ libmad-0.15.1b/configure.ac 2008-03-07 20:33:31.000000000 +0000
+@@ -233,6 +233,7 @@
+ then
+ case "$host" in
+ i?86-*) FPM="INTEL" ;;
++ x86_64*) FPM="64BIT" ;;
+ arm*-*) FPM="ARM" ;;
+ mips*-*) FPM="MIPS" ;;
+ sparc*-*) FPM="SPARC" ;;
diff --git a/extra/libmad/frame_length.diff b/extra/libmad/frame_length.diff
new file mode 100644
index 000000000..d215b9b02
--- /dev/null
+++ b/extra/libmad/frame_length.diff
@@ -0,0 +1,197 @@
+; You can calculate where the next frame will start depending on things
+; like the bitrate. See mad_header_decode(). It seems that when decoding
+; the frame you can go past that boundary. This attempts to catch those cases,
+; but might not catch all of them.
+; For more info see http://bugs.debian.org/508133
+Index: libmad-0.15.1b/layer12.c
+===================================================================
+--- libmad-0.15.1b.orig/layer12.c 2008-12-23 21:38:07.000000000 +0100
++++ libmad-0.15.1b/layer12.c 2008-12-23 21:38:12.000000000 +0100
+@@ -134,6 +134,12 @@
+ for (sb = 0; sb < bound; ++sb) {
+ for (ch = 0; ch < nch; ++ch) {
+ nb = mad_bit_read(&stream->ptr, 4);
++ if (mad_bit_nextbyte(&stream->ptr) > stream->next_frame)
++ {
++ stream->error = MAD_ERROR_LOSTSYNC;
++ stream->sync = 0;
++ return -1;
++ }
+
+ if (nb == 15) {
+ stream->error = MAD_ERROR_BADBITALLOC;
+@@ -146,6 +152,12 @@
+
+ for (sb = bound; sb < 32; ++sb) {
+ nb = mad_bit_read(&stream->ptr, 4);
++ if (mad_bit_nextbyte(&stream->ptr) > stream->next_frame)
++ {
++ stream->error = MAD_ERROR_LOSTSYNC;
++ stream->sync = 0;
++ return -1;
++ }
+
+ if (nb == 15) {
+ stream->error = MAD_ERROR_BADBITALLOC;
+@@ -162,6 +174,12 @@
+ for (ch = 0; ch < nch; ++ch) {
+ if (allocation[ch][sb]) {
+ scalefactor[ch][sb] = mad_bit_read(&stream->ptr, 6);
++ if (mad_bit_nextbyte(&stream->ptr) > stream->next_frame)
++ {
++ stream->error = MAD_ERROR_LOSTSYNC;
++ stream->sync = 0;
++ return -1;
++ }
+
+ # if defined(OPT_STRICT)
+ /*
+@@ -187,6 +205,12 @@
+ frame->sbsample[ch][s][sb] = nb ?
+ mad_f_mul(I_sample(&stream->ptr, nb),
+ sf_table[scalefactor[ch][sb]]) : 0;
++ if (mad_bit_nextbyte(&stream->ptr) > stream->next_frame)
++ {
++ stream->error = MAD_ERROR_LOSTSYNC;
++ stream->sync = 0;
++ return -1;
++ }
+ }
+ }
+
+@@ -195,6 +219,12 @@
+ mad_fixed_t sample;
+
+ sample = I_sample(&stream->ptr, nb);
++ if (mad_bit_nextbyte(&stream->ptr) > stream->next_frame)
++ {
++ stream->error = MAD_ERROR_LOSTSYNC;
++ stream->sync = 0;
++ return -1;
++ }
+
+ for (ch = 0; ch < nch; ++ch) {
+ frame->sbsample[ch][s][sb] =
+@@ -403,7 +433,15 @@
+ nbal = bitalloc_table[offsets[sb]].nbal;
+
+ for (ch = 0; ch < nch; ++ch)
++ {
+ allocation[ch][sb] = mad_bit_read(&stream->ptr, nbal);
++ if (mad_bit_nextbyte(&stream->ptr) > stream->next_frame)
++ {
++ stream->error = MAD_ERROR_LOSTSYNC;
++ stream->sync = 0;
++ return -1;
++ }
++ }
+ }
+
+ for (sb = bound; sb < sblimit; ++sb) {
+@@ -411,6 +449,13 @@
+
+ allocation[0][sb] =
+ allocation[1][sb] = mad_bit_read(&stream->ptr, nbal);
++
++ if (mad_bit_nextbyte(&stream->ptr) > stream->next_frame)
++ {
++ stream->error = MAD_ERROR_LOSTSYNC;
++ stream->sync = 0;
++ return -1;
++ }
+ }
+
+ /* decode scalefactor selection info */
+@@ -419,6 +464,12 @@
+ for (ch = 0; ch < nch; ++ch) {
+ if (allocation[ch][sb])
+ scfsi[ch][sb] = mad_bit_read(&stream->ptr, 2);
++ if (mad_bit_nextbyte(&stream->ptr) > stream->next_frame)
++ {
++ stream->error = MAD_ERROR_LOSTSYNC;
++ stream->sync = 0;
++ return -1;
++ }
+ }
+ }
+
+@@ -442,6 +493,12 @@
+ for (ch = 0; ch < nch; ++ch) {
+ if (allocation[ch][sb]) {
+ scalefactor[ch][sb][0] = mad_bit_read(&stream->ptr, 6);
++ if (mad_bit_nextbyte(&stream->ptr) > stream->next_frame)
++ {
++ stream->error = MAD_ERROR_LOSTSYNC;
++ stream->sync = 0;
++ return -1;
++ }
+
+ switch (scfsi[ch][sb]) {
+ case 2:
+@@ -452,11 +509,23 @@
+
+ case 0:
+ scalefactor[ch][sb][1] = mad_bit_read(&stream->ptr, 6);
++ if (mad_bit_nextbyte(&stream->ptr) > stream->next_frame)
++ {
++ stream->error = MAD_ERROR_LOSTSYNC;
++ stream->sync = 0;
++ return -1;
++ }
+ /* fall through */
+
+ case 1:
+ case 3:
+ scalefactor[ch][sb][2] = mad_bit_read(&stream->ptr, 6);
++ if (mad_bit_nextbyte(&stream->ptr) > stream->next_frame)
++ {
++ stream->error = MAD_ERROR_LOSTSYNC;
++ stream->sync = 0;
++ return -1;
++ }
+ }
+
+ if (scfsi[ch][sb] & 1)
+@@ -488,6 +557,12 @@
+ index = offset_table[bitalloc_table[offsets[sb]].offset][index - 1];
+
+ II_samples(&stream->ptr, &qc_table[index], samples);
++ if (mad_bit_nextbyte(&stream->ptr) > stream->next_frame)
++ {
++ stream->error = MAD_ERROR_LOSTSYNC;
++ stream->sync = 0;
++ return -1;
++ }
+
+ for (s = 0; s < 3; ++s) {
+ frame->sbsample[ch][3 * gr + s][sb] =
+@@ -506,6 +581,12 @@
+ index = offset_table[bitalloc_table[offsets[sb]].offset][index - 1];
+
+ II_samples(&stream->ptr, &qc_table[index], samples);
++ if (mad_bit_nextbyte(&stream->ptr) > stream->next_frame)
++ {
++ stream->error = MAD_ERROR_LOSTSYNC;
++ stream->sync = 0;
++ return -1;
++ }
+
+ for (ch = 0; ch < nch; ++ch) {
+ for (s = 0; s < 3; ++s) {
+Index: libmad-0.15.1b/layer3.c
+===================================================================
+--- libmad-0.15.1b.orig/layer3.c 2008-12-23 21:38:07.000000000 +0100
++++ libmad-0.15.1b/layer3.c 2008-12-23 21:38:12.000000000 +0100
+@@ -2608,6 +2608,12 @@
+ next_md_begin = 0;
+
+ md_len = si.main_data_begin + frame_space - next_md_begin;
++ if (md_len + MAD_BUFFER_GUARD > MAD_BUFFER_MDLEN)
++ {
++ stream->error = MAD_ERROR_LOSTSYNC;
++ stream->sync = 0;
++ return -1;
++ }
+
+ frame_used = 0;
+
diff --git a/extra/libmad/libmad.patch b/extra/libmad/libmad.patch
new file mode 100644
index 000000000..0ac88acb8
--- /dev/null
+++ b/extra/libmad/libmad.patch
@@ -0,0 +1,117 @@
+diff -ruN libmad-0.15.1b.orig/Makefile.am libmad-0.15.1b/Makefile.am
+--- libmad-0.15.1b.orig/Makefile.am 2004-02-17 02:02:03.000000000 +0000
++++ libmad-0.15.1b/Makefile.am 2005-08-25 12:08:04.000000000 +0000
+@@ -33,9 +33,12 @@
+ minimad_INCLUDES =
+ minimad_LDADD = libmad.la
+
+-EXTRA_DIST = mad.h.sed \
++EXTRA_DIST = mad.h.sed mad.pc.in \
+ CHANGES COPYRIGHT CREDITS README TODO VERSION
+
++pkgconfigdir = $(libdir)/pkgconfig
++pkgconfig_DATA= mad.pc
++
+ exported_headers = version.h fixed.h bit.h timer.h stream.h frame.h \
+ synth.h decoder.h
+
+diff -ruN libmad-0.15.1b.orig/Makefile.in libmad-0.15.1b/Makefile.in
+--- libmad-0.15.1b.orig/Makefile.in 2004-02-17 02:33:23.000000000 +0000
++++ libmad-0.15.1b/Makefile.in 2005-08-25 12:09:34.000000000 +0000
+@@ -14,6 +14,8 @@
+
+ @SET_MAKE@
+
++pkgconfigdir = $(libdir)/pkgconfig
++pkgconfig_DATA = mad.pc
+
+ SOURCES = $(libmad_la_SOURCES) $(EXTRA_libmad_la_SOURCES) $(minimad_SOURCES)
+
+@@ -43,7 +45,7 @@
+ $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+ $(srcdir)/config.h.in $(srcdir)/libmad.list.in \
+ $(top_srcdir)/configure COPYING INSTALL TODO config.guess \
+- config.sub depcomp install-sh ltmain.sh missing mkinstalldirs
++ config.sub depcomp install-sh ltmain.sh missing mkinstalldirs mad.pc.in
+ subdir = .
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+@@ -53,7 +55,7 @@
+ configure.lineno configure.status.lineno
+ mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+ CONFIG_HEADER = config.h
+-CONFIG_CLEAN_FILES = libmad.list
++CONFIG_CLEAN_FILES = libmad.list mad.pc
+ am__installdirs = $(DESTDIR)$(libdir) $(DESTDIR)$(includedir)
+ libLTLIBRARIES_INSTALL = $(INSTALL)
+ LTLIBRARIES = $(lib_LTLIBRARIES)
+@@ -218,7 +220,7 @@
+ minimad_SOURCES = minimad.c
+ minimad_INCLUDES =
+ minimad_LDADD = libmad.la
+-EXTRA_DIST = mad.h.sed \
++EXTRA_DIST = mad.h.sed mad.pc.in \
+ CHANGES COPYRIGHT CREDITS README TODO VERSION
+
+ exported_headers = version.h fixed.h bit.h timer.h stream.h frame.h \
+@@ -298,6 +300,28 @@
+ rm -f stamp-h1
+ touch $@
+
++mad.pc: $(top_builddir)/config.status mad.pc.in
++ cd $(top_builddir) && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status
++
++install-pkgconfigDATA: $(pkgconfig_DATA)
++ @$(NORMAL_INSTALL)
++ $(mkinstalldirs) $(DESTDIR)$(pkgconfigdir)
++ @list='$(pkgconfig_DATA)'; for p in $$list; do \
++ if test -f $(srcdir)/$$p; then \
++ echo " $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(pkgconfigdir)/$$p"; \
++ $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(pkgconfigdir)/$$p; \
++ else if test -f $$p; then \
++ echo " $(INSTALL_DATA) $$p $(DESTDIR)$(pkgconfigdir)/$$p"; \
++ $(INSTALL_DATA) $$p $(DESTDIR)$(pkgconfigdir)/$$p; \
++ fi; fi; \
++ done
++
++uninstall-pkgconfigDATA:
++ @$(NORMAL_UNINSTALL)
++ list='$(pkgconfig_DATA)'; for p in $$list; do \
++ rm -f $(DESTDIR)$(pkgconfigdir)/$$p; \
++ done
++
+ distclean-hdr:
+ -rm -f config.h stamp-h1
+ libmad.list: $(top_builddir)/config.status $(srcdir)/libmad.list.in
+@@ -726,7 +750,7 @@
+
+ info-am:
+
+-install-data-am: install-includeHEADERS
++install-data-am: install-includeHEADERS install-pkgconfigDATA
+
+ install-exec-am: install-libLTLIBRARIES
+
+@@ -757,7 +781,7 @@
+ ps-am:
+
+ uninstall-am: uninstall-includeHEADERS uninstall-info-am \
+- uninstall-libLTLIBRARIES
++ uninstall-libLTLIBRARIES install-pkgconfigDATA
+
+ uninstall-info: uninstall-info-recursive
+
+diff -ruN libmad-0.15.1b.orig/mad.pc.in libmad-0.15.1b/mad.pc.in
+--- libmad-0.15.1b.orig/mad.pc.in 1970-01-01 00:00:00.000000000 +0000
++++ libmad-0.15.1b/mad.pc.in 2005-08-25 12:08:04.000000000 +0000
+@@ -0,0 +1,10 @@
++prefix=@prefix@
++exec_prefix=@exec_prefix@
++libdir=@libdir@
++includedir=@includedir@
++
++Name: MAD
++Description: libmad - MPEG audio decoder library
++Version: @VERSION@
++Libs: -L${libdir} -lmad
++Cflags:
diff --git a/extra/libmad/optimize.diff b/extra/libmad/optimize.diff
new file mode 100644
index 000000000..1418dc927
--- /dev/null
+++ b/extra/libmad/optimize.diff
@@ -0,0 +1,77 @@
+Index: libmad-0.15.1b/configure.ac
+===================================================================
+--- libmad-0.15.1b.orig/configure.ac 2008-03-07 20:31:23.000000000 +0000
++++ libmad-0.15.1b/configure.ac 2008-03-07 20:34:26.000000000 +0000
+@@ -124,71 +124,7 @@
+
+ if test "$GCC" = yes
+ then
+- if test -z "$arch"
+- then
+- case "$host" in
+- i386-*) ;;
+- i?86-*) arch="-march=i486" ;;
+- arm*-empeg-*) arch="-march=armv4 -mtune=strongarm1100" ;;
+- armv4*-*) arch="-march=armv4 -mtune=strongarm" ;;
+- powerpc-*) ;;
+- mips*-agenda-*) arch="-mcpu=vr4100" ;;
+- mips*-luxsonor-*) arch="-mips1 -mcpu=r3000 -Wa,-m4010" ;;
+- esac
+- fi
+-
+- case "$optimize" in
+- -O|"-O "*)
+- optimize="-O"
+- optimize="$optimize -fforce-mem"
+- optimize="$optimize -fforce-addr"
+- : #x optimize="$optimize -finline-functions"
+- : #- optimize="$optimize -fstrength-reduce"
+- optimize="$optimize -fthread-jumps"
+- optimize="$optimize -fcse-follow-jumps"
+- optimize="$optimize -fcse-skip-blocks"
+- : #x optimize="$optimize -frerun-cse-after-loop"
+- : #x optimize="$optimize -frerun-loop-opt"
+- : #x optimize="$optimize -fgcse"
+- optimize="$optimize -fexpensive-optimizations"
+- optimize="$optimize -fregmove"
+- : #* optimize="$optimize -fdelayed-branch"
+- : #x optimize="$optimize -fschedule-insns"
+- optimize="$optimize -fschedule-insns2"
+- : #? optimize="$optimize -ffunction-sections"
+- : #? optimize="$optimize -fcaller-saves"
+- : #> optimize="$optimize -funroll-loops"
+- : #> optimize="$optimize -funroll-all-loops"
+- : #x optimize="$optimize -fmove-all-movables"
+- : #x optimize="$optimize -freduce-all-givs"
+- : #? optimize="$optimize -fstrict-aliasing"
+- : #* optimize="$optimize -fstructure-noalias"
+-
+- case "$host" in
+- arm*-*)
+- optimize="$optimize -fstrength-reduce"
+- ;;
+- mips*-*)
+- optimize="$optimize -fstrength-reduce"
+- optimize="$optimize -finline-functions"
+- ;;
+- i?86-*)
+- optimize="$optimize -fstrength-reduce"
+- ;;
+- powerpc-apple-*)
+- # this triggers an internal compiler error with gcc2
+- : #optimize="$optimize -fstrength-reduce"
+-
+- # this is really only beneficial with gcc3
+- : #optimize="$optimize -finline-functions"
+- ;;
+- *)
+- # this sometimes provokes bugs in gcc 2.95.2
+- : #optimize="$optimize -fstrength-reduce"
+- ;;
+- esac
+- ;;
+- esac
++ optimize="-O2"
+ fi
+
+ case "$host" in
diff --git a/extra/libmatroska/PKGBUILD b/extra/libmatroska/PKGBUILD
new file mode 100644
index 000000000..4a3aa43b3
--- /dev/null
+++ b/extra/libmatroska/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 108572 2011-02-01 18:22:49Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor 03/08/04 <lefungus@altern.org>
+
+pkgname=libmatroska
+pkgver=1.1.0
+pkgrel=1
+pkgdesc="Matroska library"
+arch=('i686' 'x86_64')
+url="http://dl.matroska.org/downloads/libmatroska/"
+license=('LGPL')
+depends=('libebml')
+source=("${url}/${pkgname}-${pkgver}.tar.bz2")
+md5sums=('21e5ee3e2573f0ae99db195348bdfb98')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}/make/linux"
+ make sharedlib || return 1
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}/make/linux"
+ make prefix="${pkgdir}/usr" install || return 1
+}
diff --git a/extra/libmcrypt/PKGBUILD b/extra/libmcrypt/PKGBUILD
new file mode 100644
index 000000000..0bbe97d83
--- /dev/null
+++ b/extra/libmcrypt/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 51263 2009-09-06 19:41:24Z giovanni $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Jan de Groot <jgc@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=libmcrypt
+pkgver=2.5.8
+pkgrel=2
+pkgdesc="A library which provides a uniform interface to several symmetric encryption algorithms"
+url="http://mcrypt.sourceforge.net/"
+arch=(i686 x86_64)
+license=('GPL')
+depends=('glibc')
+options=('!libtool')
+source=(http://downloads.sourceforge.net/mcrypt/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('c4f491dd411a09e9de3b8702ea6f73eb')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ ./configure --prefix=/usr --mandir=/usr/share/man
+ make || return 1
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/libmcs/PKGBUILD b/extra/libmcs/PKGBUILD
new file mode 100644
index 000000000..7032bb0fb
--- /dev/null
+++ b/extra/libmcs/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 85570 2010-07-15 22:07:43Z eric $
+# Maintainer: Alexander Fehr <pizzapunk gmail com>
+# Contributor: Brad Gordon <brad@rpgcyco.net>
+
+pkgname=libmcs
+pkgver=0.7.2
+pkgrel=1
+pkgdesc="Library which abstracts the storage of configuration settings"
+arch=('i686' 'x86_64')
+url="http://www.atheme.org/project/mcs"
+license=('BSD')
+depends=('libmowgli')
+source=(http://distfiles.atheme.org/libmcs-${pkgver}.tbz2)
+md5sums=('9fc91a8e860a0ab99316824aebb1d40a')
+sha1sums=('20c30bf7d4b3043848b5180de4c2cb61f7e0154c')
+
+build() {
+ cd "${srcdir}/libmcs-${pkgver}"
+ ./configure --prefix=/usr --disable-gconf --disable-kconfig
+ make
+}
+
+package() {
+ cd "${srcdir}/libmcs-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+ install -D -m644 COPYING "${pkgdir}/usr/share/licenses/libmcs/COPYING"
+}
diff --git a/extra/libmikmod/PKGBUILD b/extra/libmikmod/PKGBUILD
new file mode 100644
index 000000000..a84418dbb
--- /dev/null
+++ b/extra/libmikmod/PKGBUILD
@@ -0,0 +1,42 @@
+# $Id: PKGBUILD 59174 2009-11-21 01:09:33Z allan $
+# Maintainer: Allan McRae <allan@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=libmikmod
+pkgver=3.1.12
+pkgrel=3
+pkgdesc="A portable sound library"
+license=('GPL' 'LGPL')
+url="http://sourceforge.net/projects/mikmod/"
+arch=('i686' 'x86_64')
+depends=('glibc')
+options=('!libtool')
+install=$pkgname.install
+source=(http://downloads.sourceforge.net/mikmod/${pkgname}-${pkgver}.tar.gz
+ libmikmod-3.1.12-64bit-fix.diff
+ libmikmod-3.1.12-exitcrash-fix.diff
+ libmikmod-3.1.12-loopingvolume-fix.diff
+ libmikmod-3.1.12-md_sngchn-fix.diff
+ libmikmod-CVE-2009-0179.patch)
+md5sums=('9f3c740298260d5f88981fc0d51f6f16'
+ 'dc7ffd8d6d355e9d6ec671b7f2b2adc7'
+ '03a4f5bfcecddf5f515672d6d477b7f7'
+ 'a837fd876cbd2ac27419b802504489db'
+ '076d39de19de36b880ed90297f1ee0d1'
+ 'fa91f4bc17164be32bec0ea7a73f2aaa')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+
+ # patches from sdl_mixer-1.2.11 source
+ patch -Np1 -i $srcdir/libmikmod-3.1.12-64bit-fix.diff
+ patch -Np1 -i $srcdir/libmikmod-3.1.12-exitcrash-fix.diff
+ patch -Np1 -i $srcdir/libmikmod-3.1.12-loopingvolume-fix.diff
+ patch -Np1 -i $srcdir/libmikmod-3.1.12-md_sngchn-fix.diff
+ patch -Np1 -i $srcdir/libmikmod-CVE-2009-0179.patch
+
+ ./configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info
+ make || return 1
+ make DESTDIR=$pkgdir install
+}
+
diff --git a/extra/libmikmod/libmikmod-3.1.12-64bit-fix.diff b/extra/libmikmod/libmikmod-3.1.12-64bit-fix.diff
new file mode 100644
index 000000000..cd7800881
--- /dev/null
+++ b/extra/libmikmod/libmikmod-3.1.12-64bit-fix.diff
@@ -0,0 +1,47 @@
+Date: Sun, 04 Jul 2004 11:53:23 +0200
+From: Josselin Mouette
+Subject: Re: sdl 64bit problem [PATCH]
+
+Le sam, 03/07/2004 � 18:20 +0200, Hans-Frieder Vogt a �crit :
+> Hi list,
+>
+> I found the problem that lead to the distorted sound in tuxracer on AMD64. It
+> may have also been the cause for the other reported sound problems with SDL.
+> The problem is not in SDL, but in SDL-mixer.
+> There, music files (*.it, and probably others as well) are incorrectly read on
+> all 64 bit architectures but Alpha, due to an incorrect data type definition.
+> The attached patch should solve the problem for all 64 bit architectures on
+> Linux, since at least cpp defines _LP64 and __LP64__ for them.
+> _LP64 indicates that long ints and pointers are 64 bits, but integers are 32
+> bits.
+> I am not sure whether the usage of _LP64 is also standard for the commercial
+> compilers, and for other Unixes, but at least Solaris 9 defines _LP64 in the
+> 64 bit environment as well.
+>
+> Josselin,
+> could you include this patch into your next debian packages?
+
+diff -ru libmikmod-3.1.12.orig/include/mikmod.h.in libmikmod-3.1.12/include/mikmod.h.in
+--- libmikmod-3.1.12.orig/include/mikmod.h.in 2007-12-15 01:24:19.000000000 -0800
++++ libmikmod-3.1.12/include/mikmod.h.in 2009-10-05 00:18:56.000000000 -0700
+@@ -85,7 +85,7 @@
+
+ @DOES_NOT_HAVE_SIGNED@
+
+-#if defined(__arch64__) || defined(__alpha) || defined(__x86_64)
++#if defined(__arch64__) || defined(__alpha) || defined(__x86_64) || defined(_LP64)
+ /* 64 bit architectures */
+
+ typedef signed char SBYTE; /* 1 byte, signed */
+diff -ru libmikmod-3.1.12.orig/include/mikmod_internals.h libmikmod-3.1.12/include/mikmod_internals.h
+--- libmikmod-3.1.12.orig/include/mikmod_internals.h 2007-12-15 04:24:51.000000000 -0800
++++ libmikmod-3.1.12/include/mikmod_internals.h 2009-10-05 00:19:15.000000000 -0700
+@@ -50,7 +50,7 @@
+ /*========== More type definitions */
+
+ /* SLONGLONG: 64bit, signed */
+-#if defined (__arch64__) || defined(__alpha)
++#if defined(__arch64__) || defined(__alpha) || defined(__x86_64) || defined(_LP64)
+ typedef long SLONGLONG;
+ #define NATIVE_64BIT_INT
+ #elif defined(__WATCOMC__)
diff --git a/extra/libmikmod/libmikmod-3.1.12-exitcrash-fix.diff b/extra/libmikmod/libmikmod-3.1.12-exitcrash-fix.diff
new file mode 100644
index 000000000..fe62892b5
--- /dev/null
+++ b/extra/libmikmod/libmikmod-3.1.12-exitcrash-fix.diff
@@ -0,0 +1,21 @@
+Date: 15 Apr 2002 11:01:19 +0200
+From: Guillaume Cottenceau <gc@mandrakesoft.com>
+
+Unfortunately, I should have double checked that the following
+fix (authored by Dave Goehrig <dave@cthulhu-burger.org>, not me),
+was really in the CVS... it's not, as of stable 1.2.3 at least.
+Please include it, it fixes a segfault on exiting a program which
+disabled MOD music during its execution.
+
+diff -ru libmikmod-3.1.12.orig/playercode/virtch_common.c libmikmod-3.1.12/playercode/virtch_common.c
+--- libmikmod-3.1.12.orig/playercode/virtch_common.c 2007-12-15 01:26:53.000000000 -0800
++++ libmikmod-3.1.12/playercode/virtch_common.c 2009-10-05 00:37:12.000000000 -0700
+@@ -347,7 +347,7 @@
+
+ void VC1_SampleUnload(SWORD handle)
+ {
+- if (handle<MAXSAMPLEHANDLES) {
++ if (Samples && handle<MAXSAMPLEHANDLES) {
+ if (Samples[handle])
+ free(Samples[handle]);
+ Samples[handle]=NULL;
diff --git a/extra/libmikmod/libmikmod-3.1.12-loopingvolume-fix.diff b/extra/libmikmod/libmikmod-3.1.12-loopingvolume-fix.diff
new file mode 100644
index 000000000..f0ce70e34
--- /dev/null
+++ b/extra/libmikmod/libmikmod-3.1.12-loopingvolume-fix.diff
@@ -0,0 +1,15 @@
+Yi-Huang Han - Wed Oct 24 21:55:47 PDT 2001
+ * Fixed MOD music volume when looping
+
+diff -ru libmikmod-3.1.12.orig/playercode/mplayer.c libmikmod-3.1.12/playercode/mplayer.c
+--- libmikmod-3.1.12.orig/playercode/mplayer.c 2009-10-05 00:19:59.000000000 -0700
++++ libmikmod-3.1.12/playercode/mplayer.c 2009-10-05 00:44:35.000000000 -0700
+@@ -3019,7 +3019,7 @@
+ {
+ MUTEX_LOCK(vars);
+ if (pf)
+- pf->volume=(volume<0)?0:(volume>128)?128:volume;
++ pf->volume=pf->initvolume=(volume<0)?0:(volume>128)?128:volume;
+ MUTEX_UNLOCK(vars);
+ }
+
diff --git a/extra/libmikmod/libmikmod-3.1.12-md_sngchn-fix.diff b/extra/libmikmod/libmikmod-3.1.12-md_sngchn-fix.diff
new file mode 100644
index 000000000..45cc355ae
--- /dev/null
+++ b/extra/libmikmod/libmikmod-3.1.12-md_sngchn-fix.diff
@@ -0,0 +1,112 @@
+This patch fixes "buffer overflow due to md_numchn - ID: 1630158"
+
+diff -ru libmikmod-3.1.12.orig/playercode/mplayer.c libmikmod-3.1.12/playercode/mplayer.c
+--- libmikmod-3.1.12.orig/playercode/mplayer.c 2007-12-15 01:26:28.000000000 -0800
++++ libmikmod-3.1.12/playercode/mplayer.c 2009-10-04 23:48:36.000000000 -0700
+@@ -52,6 +52,8 @@
+ will wait */
+ /*static*/ MODULE *pf = NULL;
+
++#define NUMVOICES(mod) (md_sngchn < (mod)->numvoices ? md_sngchn : (mod)->numvoices)
++
+ #define HIGH_OCTAVE 2 /* number of above-range octaves */
+
+ static UWORD oldperiods[OCTAVE*2]={
+@@ -248,14 +250,14 @@
+ MP_VOICE *a;
+ ULONG t,k,tvol,pp;
+
+- for (t=0;t<md_sngchn;t++)
++ for (t=0;t<NUMVOICES(mod);t++)
+ if (((mod->voice[t].main.kick==KICK_ABSENT)||
+ (mod->voice[t].main.kick==KICK_ENV))&&
+ Voice_Stopped_internal(t))
+ return t;
+
+ tvol=0xffffffUL;t=-1;a=mod->voice;
+- for (k=0;k<md_sngchn;k++,a++) {
++ for (k=0;k<NUMVOICES(mod);k++,a++) {
+ /* allow us to take over a nonexisting sample */
+ if (!a->main.s)
+ return k;
+@@ -2249,12 +2251,12 @@
+
+ switch (dat) {
+ case 0x0: /* past note cut */
+- for (t=0;t<md_sngchn;t++)
++ for (t=0;t<NUMVOICES(mod);t++)
+ if (mod->voice[t].master==a)
+ mod->voice[t].main.fadevol=0;
+ break;
+ case 0x1: /* past note off */
+- for (t=0;t<md_sngchn;t++)
++ for (t=0;t<NUMVOICES(mod);t++)
+ if (mod->voice[t].master==a) {
+ mod->voice[t].main.keyoff|=KEY_OFF;
+ if ((!(mod->voice[t].venv.flg & EF_ON))||
+@@ -2263,7 +2265,7 @@
+ }
+ break;
+ case 0x2: /* past note fade */
+- for (t=0;t<md_sngchn;t++)
++ for (t=0;t<NUMVOICES(mod);t++)
+ if (mod->voice[t].master==a)
+ mod->voice[t].main.keyoff|=KEY_FADE;
+ break;
+@@ -2318,7 +2320,7 @@
+ SAMPLE *s;
+
+ mod->totalchn=mod->realchn=0;
+- for (channel=0;channel<md_sngchn;channel++) {
++ for (channel=0;channel<NUMVOICES(mod);channel++) {
+ aout=&mod->voice[channel];
+ i=aout->main.i;
+ s=aout->main.s;
+@@ -2736,7 +2738,7 @@
+ if (a->dct!=DCT_OFF) {
+ int t;
+
+- for (t=0;t<md_sngchn;t++)
++ for (t=0;t<NUMVOICES(mod);t++)
+ if ((!Voice_Stopped_internal(t))&&
+ (mod->voice[t].masterchn==channel)&&
+ (a->main.sample==mod->voice[t].main.sample)) {
+@@ -2978,6 +2980,11 @@
+ if (!(mod->voice=(MP_VOICE*)_mm_calloc(md_sngchn,sizeof(MP_VOICE))))
+ return 1;
+
++ /* mod->numvoices was used during loading to clamp md_sngchn.
++ After loading it's used to remember how big mod->voice is.
++ */
++ mod->numvoices = md_sngchn;
++
+ Player_Init_internal(mod);
+ return 0;
+ }
+@@ -3086,7 +3093,7 @@
+ pf->patbrk=0;
+ pf->vbtick=pf->sngspd;
+
+- for (t=0;t<md_sngchn;t++) {
++ for (t=0;t<NUMVOICES(pf);t++) {
+ Voice_Stop_internal(t);
+ pf->voice[t].main.i=NULL;
+ pf->voice[t].main.s=NULL;
+@@ -3111,7 +3118,7 @@
+ pf->patbrk=0;
+ pf->vbtick=pf->sngspd;
+
+- for (t=0;t<md_sngchn;t++) {
++ for (t=0;t<NUMVOICES(pf);t++) {
+ Voice_Stop_internal(t);
+ pf->voice[t].main.i=NULL;
+ pf->voice[t].main.s=NULL;
+@@ -3138,7 +3145,7 @@
+ pf->sngpos=pos;
+ pf->vbtick=pf->sngspd;
+
+- for (t=0;t<md_sngchn;t++) {
++ for (t=0;t<NUMVOICES(pf);t++) {
+ Voice_Stop_internal(t);
+ pf->voice[t].main.i=NULL;
+ pf->voice[t].main.s=NULL;
diff --git a/extra/libmikmod/libmikmod-CVE-2009-0179.patch b/extra/libmikmod/libmikmod-CVE-2009-0179.patch
new file mode 100644
index 000000000..0c47e6545
--- /dev/null
+++ b/extra/libmikmod/libmikmod-CVE-2009-0179.patch
@@ -0,0 +1,33 @@
+diff -ur libmikmod-3.1.11.orig/loaders/load_xm.c libmikmod-3.1.11/loaders/load_xm.c
+--- libmikmod-3.1.11.orig/loaders/load_xm.c 2004-01-21 18:43:53.000000000 +0100
++++ libmikmod-3.1.11/loaders/load_xm.c 2008-04-16 04:30:45.000000000 +0200
+@@ -622,7 +622,8 @@
+ /* read the remainder of the header */
+ for(u=headend-_mm_ftell(modreader);u;u--) _mm_read_UBYTE(modreader);
+
+- if(_mm_eof(modreader)) {
++ /* last instrument is at the end of file in version 0x0104 */
++ if(_mm_eof(modreader) && (mh->version<0x0104 || t<of.numins-1)) {
+ free(nextwav);free(wh);
+ nextwav=NULL;wh=NULL;
+ _mm_errno = MMERR_LOADING_SAMPLEINFO;
+diff -ur libmikmod-3.1.11.orig/playercode/mloader.c libmikmod-3.1.11/playercode/mloader.c
+--- libmikmod-3.1.11.orig/playercode/mloader.c 2004-01-21 18:43:53.000000000 +0100
++++ libmikmod-3.1.11/playercode/mloader.c 2008-04-16 04:30:45.000000000 +0200
+@@ -450,10 +450,12 @@
+ if (!l->Init || l->Init()) {
+ _mm_rewind(modreader);
+ ok = l->Load(curious);
+- /* propagate inflags=flags for in-module samples */
+- for (t = 0; t < of.numsmp; t++)
+- if (of.samples[t].inflags == 0)
+- of.samples[t].inflags = of.samples[t].flags;
++ if (ok) {
++ /* propagate inflags=flags for in-module samples */
++ for (t = 0; t < of.numsmp; t++)
++ if (of.samples[t].inflags == 0)
++ of.samples[t].inflags = of.samples[t].flags;
++ }
+ } else
+ ok = 0;
+
diff --git a/extra/libmikmod/libmikmod.install b/extra/libmikmod/libmikmod.install
new file mode 100644
index 000000000..7f80054a6
--- /dev/null
+++ b/extra/libmikmod/libmikmod.install
@@ -0,0 +1,18 @@
+infodir=/usr/share/info
+filelist=(mikmod.info)
+
+post_install() {
+ for file in ${filelist[@]}; do
+ install-info $infodir/$file.gz $infodir/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ for file in ${filelist[@]}; do
+ install-info --delete $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
diff --git a/extra/libmms/PKGBUILD b/extra/libmms/PKGBUILD
new file mode 100644
index 000000000..1208a2dde
--- /dev/null
+++ b/extra/libmms/PKGBUILD
@@ -0,0 +1,24 @@
+#$Id: PKGBUILD 81998 2010-06-07 14:12:43Z jgc $
+#Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libmms
+pkgver=0.6
+pkgrel=1
+pkgdesc="MMS stream protocol library"
+arch=(i686 x86_64)
+url="http://sourceforge.net/projects/libmms/"
+license=(LGPL)
+depends=('glib2>=2.24.1')
+options=('!libtool')
+source=(http://download.sourceforge.net/libmms/${pkgname}-${pkgver}.tar.gz
+ libmms-0.5-this-keyword.patch)
+md5sums=('650ad04a4c8bd79246390b81b29680b6'
+ '5266259060f5723d8ee639b8a541f835')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i "${srcdir}/libmms-0.5-this-keyword.patch" || return 1
+ ./configure --prefix=/usr --disable-static || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/libmms/libmms-0.5-this-keyword.patch b/extra/libmms/libmms-0.5-this-keyword.patch
new file mode 100644
index 000000000..9d5ae762e
--- /dev/null
+++ b/extra/libmms/libmms-0.5-this-keyword.patch
@@ -0,0 +1,18 @@
+diff -Nurp libmms-0.5.orig//src/mmsx.h libmms-0.5//src/mmsx.h
+--- libmms-0.5.orig//src/mmsx.h 2010-03-03 11:42:14.000000000 +0100
++++ libmms-0.5//src/mmsx.h 2010-03-03 11:42:46.000000000 +0100
+@@ -55,11 +55,11 @@ int mmsx_peek_header (mmsx_t *inst
+
+ mms_off_t mmsx_get_current_pos (mmsx_t *instance);
+
+-uint32_t mmsx_get_asf_header_len (mmsx_t *this);
++uint32_t mmsx_get_asf_header_len (mmsx_t *instance);
+
+-uint64_t mmsx_get_asf_packet_len (mmsx_t *this);
++uint64_t mmsx_get_asf_packet_len (mmsx_t *instance);
+
+-int mmsx_get_seekable (mmsx_t *this);
++int mmsx_get_seekable (mmsx_t *instance);
+
+ #ifdef __cplusplus
+ }
diff --git a/extra/libmng/PKGBUILD b/extra/libmng/PKGBUILD
new file mode 100644
index 000000000..660771863
--- /dev/null
+++ b/extra/libmng/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 63248 2010-01-16 20:44:09Z jgc $
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+# Maintainer: judd <jvinet@zeroflux.org>
+pkgname=libmng
+pkgver=1.0.10
+pkgrel=3
+pkgdesc="A collection of routines used to create and manipulate MNG format graphics files"
+arch=('i686' 'x86_64')
+url="http://www.libmng.com/"
+license=('custom')
+depends=('zlib' 'libjpeg>=8')
+options=(!libtool)
+source=(http://downloads.sourceforge.net/sourceforge/$pkgname/$pkgname-$pkgver.tar.gz)
+md5sums=('a464ae7d679781beebdf7440d144b7bd')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ ln -s makefiles/configure.in .
+ ln -s makefiles/Makefile.am .
+ autoreconf --force --install
+ ./configure --prefix=/usr
+ make || return 1
+ make DESTDIR=$pkgdir install || return 1
+ install -D -m644 LICENSE $pkgdir/usr/share/licenses/$pkgname/LICENSE
+}
diff --git a/extra/libmodplug/PKGBUILD b/extra/libmodplug/PKGBUILD
new file mode 100644
index 000000000..ba117d07d
--- /dev/null
+++ b/extra/libmodplug/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 81170 2010-05-26 23:12:54Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Patrick Leslie Polzer <leslie.polzer@gmx.net>
+
+pkgname=libmodplug
+pkgver=0.8.8.1
+pkgrel=1
+pkgdesc="A MOD playing library"
+arch=(i686 x86_64)
+url="http://modplug-xmms.sourceforge.net/"
+license=('custom')
+depends=('gcc-libs')
+options=('!libtool')
+source=(http://downloads.sourceforge.net/sourceforge/modplug-xmms/libmodplug-${pkgver}.tar.gz)
+md5sums=('f7fa53a60c650024ff51cca88341776b')
+
+build() {
+ cd ${srcdir}/libmodplug-${pkgver}
+ ./configure --prefix=/usr || return 1
+ make || return 1
+ make DESTDIR=${pkgdir} install || return 1
+ install -D -m644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+}
+
diff --git a/extra/libmowgli/PKGBUILD b/extra/libmowgli/PKGBUILD
new file mode 100644
index 000000000..0b78ff8c4
--- /dev/null
+++ b/extra/libmowgli/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 85575 2010-07-15 22:09:17Z eric $
+# Maintainer: Alexander Fehr <pizzapunk gmail com>
+# Contributor: Brad Gordon <brad@rpgcyco.net>
+
+pkgname=libmowgli
+pkgver=0.7.1
+pkgrel=1
+pkgdesc="Class library containing performance and usability oriented extensions to C"
+arch=('i686' 'x86_64')
+url="http://www.atheme.org/project/mowgli"
+license=('custom')
+depends=('glibc')
+source=(http://distfiles.atheme.org/libmowgli-${pkgver}.tbz2)
+md5sums=('412b4fd72ddbdc07d736a691fc8031ca')
+sha1sums=('ad51d5f5352954553fc55ce26b98185edce31509')
+
+build() {
+ cd "${srcdir}/libmowgli-${pkgver}"
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}/libmowgli-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+ install -D -m644 COPYING "${pkgdir}/usr/share/licenses/libmowgli/COPYING"
+}
diff --git a/extra/libmp3splt/PKGBUILD b/extra/libmp3splt/PKGBUILD
new file mode 100644
index 000000000..fefb3827c
--- /dev/null
+++ b/extra/libmp3splt/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 117351 2011-03-31 07:10:06Z tpowa $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=libmp3splt
+pkgver=0.6.1a
+pkgrel=1
+arch=('i686' 'x86_64')
+pkgdesc="Library for splitting mp3 and ogg files without decoding"
+license=('GPL')
+url="http://mp3splt.sourceforge.net"
+makedepends=('git')
+depends=('libmad' 'libvorbis' 'libid3tag' 'libtool')
+source=(http://downloads.sourceforge.net/sourceforge/mp3splt/$pkgname-$pkgver.tar.gz)
+options=(!libtool)
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ libtoolize --copy --force
+ ./autogen.sh
+ ./configure --prefix=/usr
+ make
+}
+package() {
+ cd $srcdir/$pkgname-$pkgver
+ make DESTDIR=$pkgdir/ install
+}
+md5sums=('a6a00d83e49adf27abb7a0cb0ea384a4')
diff --git a/extra/libmp4v2/PKGBUILD b/extra/libmp4v2/PKGBUILD
new file mode 100644
index 000000000..9182dd229
--- /dev/null
+++ b/extra/libmp4v2/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 71330 2010-03-06 18:41:25Z andrea $
+# Maintainer:
+# Contributor: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libmp4v2
+pkgver=1.9.1
+pkgrel=1
+pkgdesc="MPEG-4 library"
+arch=('i686' 'x86_64')
+license=('MPL')
+url="http://code.google.com/p/mp4v2/"
+options=('!libtool')
+source=(http://mp4v2.googlecode.com/files/mp4v2-${pkgver}.tar.bz2)
+md5sums=('986701929ef15b03155ac4fb16444797')
+
+build() {
+ cd ${srcdir}/mp4v2-${pkgver}
+
+ ./configure --prefix=/usr || return 1
+ make || return 1
+}
+
+package() {
+ cd ${srcdir}/mp4v2-${pkgver}
+ make DESTDIR=${pkgdir} install || return 1
+ make DESTDIR=${pkgdir} install-man || return 1
+} \ No newline at end of file
diff --git a/extra/libmpcdec/PKGBUILD b/extra/libmpcdec/PKGBUILD
new file mode 100644
index 000000000..3cd953784
--- /dev/null
+++ b/extra/libmpcdec/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id: PKGBUILD 57066 2009-10-31 11:59:42Z allan $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libmpcdec
+pkgver=1.2.6
+pkgrel=2
+pkgdesc="Musepack decoding library"
+arch=('i686' 'x86_64')
+url="http://musepack.net/"
+license=('custom')
+depends=('glibc')
+options=('!libtool')
+source=(http://files.musepack.net/source/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('7f7a060e83b4278acf4b77d7a7b9d2c0')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr --disable-static
+ make || return 1
+ make DESTDIR=${pkgdir} install || return 1
+ install -Dm644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/COPYING
+}
diff --git a/extra/libmpd/PKGBUILD b/extra/libmpd/PKGBUILD
new file mode 100644
index 000000000..1c59617e4
--- /dev/null
+++ b/extra/libmpd/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id: PKGBUILD 80681 2010-05-20 18:05:26Z ibiru $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: tobias <tobias@archlinux.org>
+
+pkgname=libmpd
+pkgver=0.20.0
+pkgrel=1
+pkgdesc="Signal based wrapper around libmpdclient"
+arch=(i686 x86_64)
+license=('GPL')
+url="http://gmpc.wikia.com/wiki/Gnome_Music_Player_Client"
+depends=('glib2')
+options=('!libtool')
+source=(http://download.sarine.nl/Programs/gmpc/${pkgver}/${pkgname}-${pkgver}.tar.gz)
+md5sums=('2f1c99e12c69f7d95cfd1e27368056ed')
+
+build() {
+ cd ${srcdir}/$pkgname-$pkgver
+ ./configure --prefix=/usr
+ make || return 1
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/libmpdclient/PKGBUILD b/extra/libmpdclient/PKGBUILD
new file mode 100644
index 000000000..b639ea6e0
--- /dev/null
+++ b/extra/libmpdclient/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 50625 2009-08-30 03:02:23Z allan $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+
+pkgname=libmpdclient
+pkgver=2.4
+pkgrel=1
+pkgdesc='An asynchronous API library for interfacing MPD in the C, C++ & Objective C languages'
+arch=('i686' 'x86_64')
+url='http://mpd.wikia.com/wiki/ClientLib:libmpdclient'
+license=('GPL2')
+depends=('glibc')
+options=('!libtool')
+source=("http://downloads.sourceforge.net/musicpd/${pkgname}-${pkgver}.tar.bz2")
+sha1sums=('fe240e56eb5cae082ea4894a810c1fdadc3d03a1')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/libmpeg2/PKGBUILD b/extra/libmpeg2/PKGBUILD
new file mode 100644
index 000000000..52b72ad74
--- /dev/null
+++ b/extra/libmpeg2/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 8676 2008-08-15 11:02:53Z andyrtr $
+# Contributor: Sarah Hay <sarah@archlinux.org>
+# Maintainer: Andreas Radke <andyrtr@archlinux.org>
+
+pkgname=libmpeg2
+pkgver=0.5.1
+pkgrel=1
+pkgdesc="libmpeg2 is a library for decoding MPEG-1 and MPEG-2 video streams."
+arch=('i686' 'x86_64')
+url="http://libmpeg2.sourceforge.net/"
+depends=('glibc')
+optdepends=('sdl: requiered for mpeg2dec'
+ 'libsm: requiered for mpeg2dec'
+ 'libxv: requiered for mpeg2dec')
+source=(http://libmpeg2.sourceforge.net/files/${pkgname}-${pkgver}.tar.gz)
+license=('GPL2')
+options=(!libtool)
+provides=('mpeg2dec')
+md5sums=('0f92c7454e58379b4a5a378485bbd8ef')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr --enable-shared --disable-static || return 1
+ make OPT_CFLAGS="${CFLAGS}" \
+ MPEG2DEC_CFLAGS="${CFLAGS}" \
+ LIBMPEG2_CFLAGS="" || return 1
+ make DESTDIR=${pkgdir} install || return 1
+}
diff --git a/extra/libmsn/PKGBUILD b/extra/libmsn/PKGBUILD
new file mode 100644
index 000000000..c62c80a19
--- /dev/null
+++ b/extra/libmsn/PKGBUILD
@@ -0,0 +1,33 @@
+# $Id: $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Charly Ghislain <charlyghislain@gmail.com>
+
+pkgname=libmsn
+pkgver=4.1
+pkgrel=2
+pkgdesc="A reusable, open-source, fully documented library for connecting to Microsoft's MSN"
+url="http://sourceforge.net/projects/libmsn/"
+arch=('i686' 'x86_64')
+license=('GPL2')
+depends=('openssl')
+makedepends=('cmake')
+source=("http://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.bz2"
+ 'openssl1.patch')
+md5sums=('769d3cf0e5625263fbc23321c1ddfcb0'
+ 'c8d7e2113d967a1d38a531e9fe8e7861')
+
+build() {
+ cd ${srcdir}
+ patch -Np0 -i ${srcdir}/openssl1.patch || return 1
+ mkdir build
+ cd build
+ cmake ../${pkgname}-${pkgver} \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_BUILD_TYPE=Release || return 1
+ make || return 1
+}
+
+package() {
+ cd ${srcdir}/build
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/libmsn/openssl1.patch b/extra/libmsn/openssl1.patch
new file mode 100644
index 000000000..0ff7de898
--- /dev/null
+++ b/extra/libmsn/openssl1.patch
@@ -0,0 +1,17 @@
+--- libmsn-4.1/msntest/msntest.cpp~ 2010-04-01 15:05:13.248056050 +0200
++++ libmsn-4.1/msntest/msntest.cpp 2010-04-01 15:07:18.938878993 +0200
+@@ -259,7 +259,13 @@
+ if(mySocketsSsl[i].isSSL && !mySocketsSsl[i].isConnected)
+ {
+ BIO *bio_socket_new;
+- SSL_METHOD *meth=NULL;
++
++#if OPENSSL_VERSION_NUMBER >= 0x10000000L
++ const SSL_METHOD *meth=NULL;
++#else
++ SSL_METHOD *meth=NULL;
++#endif
++
+ meth=SSLv23_client_method();
+ SSLeay_add_ssl_algorithms();
+ mySocketsSsl[i].ctx = SSL_CTX_new(meth);
diff --git a/extra/libmspack/PKGBUILD b/extra/libmspack/PKGBUILD
new file mode 100644
index 000000000..3f0c60ff1
--- /dev/null
+++ b/extra/libmspack/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id: PKGBUILD 79261 2010-05-02 14:06:52Z andyrtr $
+# Maintainer: AndyRTR <andyrtr@archlinux.org>
+
+pkgname=libmspack
+pkgver=0.0.20060920alpha
+pkgrel=2
+pkgdesc="A library for Microsoft compression formats"
+arch=('i686' 'x86_64')
+url="http://www.cabextract.org.uk/libmspack/"
+license=('GPL')
+depends=('glibc')
+makedepends=()
+options=('!libtool')
+source=(http://www.cabextract.org.uk/libmspack/$pkgname-$pkgver.tar.gz)
+md5sums=('72003dfa5da2e843e3d5ae0c18f7c969')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ ./configure --prefix=/usr --disable-static
+ make || return 1
+ make DESTDIR="$pkgdir/" install || return 1
+}
diff --git a/extra/libmtp/PKGBUILD b/extra/libmtp/PKGBUILD
new file mode 100644
index 000000000..e549fa123
--- /dev/null
+++ b/extra/libmtp/PKGBUILD
@@ -0,0 +1,32 @@
+# $Id: PKGBUILD 101397 2010-11-29 04:35:05Z allan $
+# Contributor: damir <damir@archlinux.org>
+# Contributor: Kevin Edmonds <edmondskevin@hotmail.com>
+
+pkgname=libmtp
+pkgver=1.0.2
+pkgrel=2
+pkgdesc="library implementation of the Media Transfer Protocol"
+arch=("i686" "x86_64")
+url="http://libmtp.sourceforge.net"
+license=('LGPL')
+depends=('libusb-compat')
+makedepends=('doxygen')
+source=("http://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.gz")
+md5sums=('cdc1cc6afa6be287ff6bc331e71bdc47')
+options=('!libtool')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd $srcdir/$pkgname-$pkgver
+ make DESTDIR=$pkgdir install
+
+ install -D -m0644 libmtp.rules \
+ $pkgdir/lib/udev/rules.d/52-libmtp.rules
+ install -D -m0644 libmtp.fdi \
+ $pkgdir/usr/share/hal/fdi/information/20thirdparty/libmtp.fdi
+}
diff --git a/extra/libmusicbrainz3/PKGBUILD b/extra/libmusicbrainz3/PKGBUILD
new file mode 100644
index 000000000..a89a5939a
--- /dev/null
+++ b/extra/libmusicbrainz3/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 92430 2010-09-29 21:08:46Z ibiru $
+# Maintainer: Ionut Biru <ibiru@archlinux.org>
+# Contributor: Max Fehrm max.fehrm@gmail.com
+pkgname=libmusicbrainz3
+pkgver=3.0.3
+pkgrel=1
+pkgdesc="Library That Provides Access to the MusicBrainz Server "
+url="http://musicbrainz.org/"
+arch=('i686' 'x86_64')
+license=('LGPL2.1')
+depends=('neon' 'libdiscid')
+makedepends=('cmake')
+source=(ftp://ftp.musicbrainz.org/pub/musicbrainz/libmusicbrainz-$pkgver.tar.gz)
+md5sums=('f4824d0a75bdeeef1e45cc88de7bb58a')
+build() {
+ cd ${srcdir}
+ mkdir build
+ cd build
+ cmake ../libmusicbrainz-${pkgver} \
+ -DCMAKE_INSTALL_PREFIX:PATH=/usr \
+ -DBUILD_SHARED_LIBS:BOOL=ON \
+ -DBUILD_STATIC_LIBS:BOOL=OFF
+ make
+}
+
+package() {
+ cd ${srcdir}/build
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/libmythes/PKGBUILD b/extra/libmythes/PKGBUILD
new file mode 100644
index 000000000..77ed47352
--- /dev/null
+++ b/extra/libmythes/PKGBUILD
@@ -0,0 +1,33 @@
+# $Id: PKGBUILD 104337 2011-01-01 13:29:40Z andyrtr $
+# Maintainer: AndyRTR <andyrtr@archlinux.org>
+
+pkgname=libmythes
+pkgver=1.2.1
+pkgrel=1
+pkgdesc="a simple thesaurus"
+arch=('i686' 'x86_64')
+url="http://hunspell.sourceforge.net/ "
+license=('custom')
+depends=('glibc' 'perl')
+options=('force' '!libtool')
+provides=('mythes')
+source=(http://downloads.sourceforge.net/hunspell/${pkgname/lib/}-${pkgver}.tar.gz)
+md5sums=('54b310488dda6929cf31ae859928c945')
+
+build() {
+ cd ${srcdir}/${pkgname/lib/}-$pkgver
+ ./configure --prefix=/usr --disable-static
+ make
+ # run the example program:
+ ./example th_en_US_new.idx th_en_US_new.dat checkme.lst
+ # run the example program with stemming and morphological generation:
+ # e.g. to check mouse, mice, rodents, eats, eaten, ate, eating etc. words
+ ./example morph.idx morph.dat morph.lst morph.aff morph.dic
+}
+
+package() {
+ cd ${srcdir}/${pkgname/lib/}-$pkgver
+ make DESTDIR=$pkgdir install
+ # license
+ install -Dm644 ${srcdir}/${pkgname/lib/}-$pkgver/COPYING $pkgdir/usr/share/licenses/$pkgname/COPYING
+}
diff --git a/extra/libnet/PKGBUILD b/extra/libnet/PKGBUILD
new file mode 100644
index 000000000..812ae9a4a
--- /dev/null
+++ b/extra/libnet/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 105390 2011-01-08 15:09:56Z andrea $
+# Maintainer:
+# Contributor: damir <damir@archlinux.org>
+
+pkgname=libnet
+pkgver=1.1.5
+pkgrel=1
+pkgdesc="A library which provides API for commonly used low-level net functions"
+arch=('i686' 'x86_64')
+url="http://sourceforge.net/projects/libnet-dev/"
+license=('BSD')
+depends=('glibc' 'sh')
+options=('!libtool')
+source=(http://downloads.sourceforge.net/libnet-dev/${pkgname}-${pkgver}.tar.gz)
+md5sums=('a9bc1d75a610efcfee200d3e28d8eb8f')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make CFLAGS="${CFLAGS} -fPIC"
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+
+ install -Dm644 doc/COPYING \
+ "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+}
diff --git a/extra/libnice/PKGBUILD b/extra/libnice/PKGBUILD
new file mode 100644
index 000000000..c9f09791c
--- /dev/null
+++ b/extra/libnice/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 500 2009-08-01 11:44:28Z ibiru $
+# Maintainer: Ionut Biru <ibiru@archlinux.org>
+# Contributor: William Díaz <wdiaz@archlinux.us>
+
+pkgname=libnice
+pkgver=0.0.13
+pkgrel=3
+pkgdesc="An implementation of the IETF's draft ICE (for p2p UDP data streams)"
+arch=('i686' 'x86_64')
+url="http://nice.freedesktop.org"
+license=('LGPL')
+depends=('gstreamer0.10')
+options=('!libtool')
+source=(http://nice.freedesktop.org/releases/${pkgname}-${pkgver}.tar.gz)
+md5sums=('e5b9f799a57cb939ea2658ec35253ab9')
+
+build() {
+# export CFLAGS="$CFLAGS -fno-strict-aliasing"
+
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --disable-static
+ make
+ #make sure that all tests pass
+# make check
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/libnotify/PKGBUILD b/extra/libnotify/PKGBUILD
new file mode 100644
index 000000000..03813ec68
--- /dev/null
+++ b/extra/libnotify/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 112734 2011-03-06 12:38:58Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libnotify
+pkgver=0.7.1
+pkgrel=1.1
+pkgdesc="Desktop notification library"
+arch=('i686' 'x86_64')
+url="http://library.gnome.org/devel/notification-spec/"
+license=('LGPL')
+depends=('gdk-pixbuf2')
+makedepends=('gobject-introspection')
+options=('!libtool')
+source=(http://ftp.gnome.org/pub/GNOME/sources/${pkgname}/0.7/${pkgname}-${pkgver}.tar.bz2
+ libnotify-0.7.1-gtk3-tests.patch)
+sha256sums=('84dc2a77defb25521d2f1cb7ac34b4d23b55254ba361442658430efb928536c8'
+ 'd9ee539a58a30ccd213b9857003c2ba04a0cf343763ed566ca0d769cbfc34664')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i "${srcdir}/libnotify-0.7.1-gtk3-tests.patch"
+ autoreconf -fi
+ ./configure --prefix=/usr --disable-static
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/libnotify/libnotify-0.7.1-gtk3-tests.patch b/extra/libnotify/libnotify-0.7.1-gtk3-tests.patch
new file mode 100644
index 000000000..7d1230520
--- /dev/null
+++ b/extra/libnotify/libnotify-0.7.1-gtk3-tests.patch
@@ -0,0 +1,110 @@
+From 92983cacd36fa9b050f911bc4de09b8c4fb9f3b2 Mon Sep 17 00:00:00 2001
+From: Gilles Dartiguelongue <eva@gentoo.org>
+Date: Thu, 16 Dec 2010 00:01:13 +0100
+Subject: [PATCH] gentoo: do not build gtk+:3 tests if not required
+
+---
+ configure.ac | 5 +++++
+ tests/Makefile.am | 30 +++++++++++++++++-------------
+ 2 files changed, 22 insertions(+), 13 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 71609ed..7767c5b 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -97,10 +97,15 @@ AC_SUBST(PACKAGE_LIBS)
+ AC_SUBST(PACKAGE_CFLAGS)
+ AC_SUBST(pkg_modules)
+
++AC_ARG_ENABLE([tests],
++ AS_HELP_STRING([--enable-tests], [Check for extra dependencies to build all tests]))
++AS_IF([test $enable_tests = yes], [
+ tests_modules="gtk+-3.0 >= $REQ_GTK_VERSION"
+ PKG_CHECK_MODULES(TESTS, [$tests_modules])
++])
+ AC_SUBST(TESTS_LIBS)
+ AC_SUBST(TESTS_CFLAGS)
++AM_CONDITIONAL([MORE_TESTS], [test $enable_tests = yes])
+
+ GLIB_GENMARSHAL=`pkg-config --variable=glib_genmarshal glib-2.0`
+ AC_SUBST(GLIB_GENMARSHAL)
+diff --git a/tests/Makefile.am b/tests/Makefile.am
+index 7acf9a3..2856a82 100644
+--- a/tests/Makefile.am
++++ b/tests/Makefile.am
+@@ -2,18 +2,15 @@ INCLUDES = \
+ -I$(top_srcdir) \
+ $(TESTS_CFLAGS)
+
+-noinst_PROGRAMS = \
++check_PROGRAMS = \
+ test-replace \
+- test-replace-widget \
+ test-server-info \
+ test-default-action \
+ test-multi-actions \
+ test-action-icons \
+- test-image \
+ test-basic \
+ test-error \
+ test-markup \
+- test-persistence \
+ test-resident \
+ test-rtl \
+ test-size-changes \
+@@ -23,6 +20,22 @@ noinst_PROGRAMS = \
+ test-xy-actions \
+ test-xy-stress
+
++#if MORE_TESTS
++check_PROGRAMS += \
++ test-image \
++ test-replace-widget \
++ test-persistence
++
++test_replace_widget_SOURCES = test-replace-widget.c
++test_replace_widget_LDADD = $(common_ldflags)
++
++test_image_SOURCES = test-image.c
++test_image_LDADD = $(common_ldflags)
++
++test_persistence_SOURCES = test-persistence.c
++test_persistence_LDADD = $(common_ldflags)
++#endif
++
+ common_ldflags = \
+ $(top_builddir)/libnotify/libnotify.la \
+ $(TESTS_LIBS)
+@@ -30,9 +43,6 @@ common_ldflags = \
+ test_replace_SOURCES = test-replace.c
+ test_replace_LDADD = $(common_ldflags)
+
+-test_replace_widget_SOURCES = test-replace-widget.c
+-test_replace_widget_LDADD = $(common_ldflags)
+-
+ test_server_info_SOURCES = test-server-info.c
+ test_server_info_LDADD = $(common_ldflags)
+
+@@ -48,9 +58,6 @@ test_multi_actions_LDADD = $(common_ldflags)
+ test_action_icons_SOURCES = test-action-icons.c
+ test_action_icons_LDADD = $(common_ldflags)
+
+-test_image_SOURCES = test-image.c
+-test_image_LDADD = $(common_ldflags)
+-
+ test_basic_SOURCES = test-basic.c
+ test_basic_LDADD = $(common_ldflags)
+
+@@ -75,9 +82,6 @@ test_xy_stress_LDADD = $(common_ldflags)
+ test_rtl_SOURCES = test-rtl.c
+ test_rtl_LDADD = $(common_ldflags)
+
+-test_persistence_SOURCES = test-persistence.c
+-test_persistence_LDADD = $(common_ldflags)
+-
+ test_resident_SOURCES = test-resident.c
+ test_resident_LDADD = $(common_ldflags)
+
+--
+1.7.4.rc2
+
diff --git a/extra/libnova/PKGBUILD b/extra/libnova/PKGBUILD
new file mode 100644
index 000000000..5074d4037
--- /dev/null
+++ b/extra/libnova/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id: PKGBUILD 62102 2010-01-02 09:17:17Z tpowa $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=libnova
+pkgver=0.13.0
+pkgrel=1
+pkgdesc="libnova is a general purpose, double precision, celestial mechanics, astrometry and astrodynamics library."
+url="http://libnova.sourceforge.net/"
+license=('GPL2')
+arch=('i686' 'x86_64')
+depends=('glibc')
+makedepends=('pkgconfig')
+source=(http://downloads.sourceforge.net/sourceforge/libnova/$pkgname-$pkgver.tar.gz)
+options=(!libtool)
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ ./configure --prefix=/usr
+ make || return 1
+ make DESTDIR=$pkgdir/ install
+}
+md5sums=('32f67b1ae28372582da7fe4e6f554dcd')
diff --git a/extra/libofa/PKGBUILD b/extra/libofa/PKGBUILD
new file mode 100644
index 000000000..c58f98794
--- /dev/null
+++ b/extra/libofa/PKGBUILD
@@ -0,0 +1,38 @@
+# $Id: PKGBUILD 80563 2010-05-19 16:11:07Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=libofa
+pkgver=0.9.3
+pkgrel=2
+pkgdesc="Open Fingerprint Architecture"
+arch=(i686 x86_64)
+url="http://code.google.com/p/musicip-libofa/"
+license=('GPL2' 'custom')
+depends=('expat' 'curl' 'fftw' 'gcc-libs')
+makedepends=('pkgconfig')
+options=('!libtool')
+source=("http://musicip-libofa.googlecode.com/files/$pkgname-$pkgver.tar.gz"
+ 'gcc-4.patch'
+ 'gcc4.3.patch'
+ 'gcc4.5.patch')
+sha1sums=('3dec8e1dcea937f74b4165e9ffd4d4f355e4594a'
+ 'cb19377d0634c03d2a49cfc61915cec918c341f7'
+ 'cae08bdc12de923d5e032696702a0530ae6eafc1'
+ '754d69d66ab46219035ccafeeb3ff62433cca4f2')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ patch -Np0 -i ${srcdir}/gcc-4.patch || return 1
+ patch -Np1 -i ${srcdir}/gcc4.3.patch || return 1
+ patch -Np1 -i ${srcdir}/gcc4.5.patch || return 1
+ ./configure --prefix=/usr || return 1
+ make || return 1
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install || return 1
+
+ install -D -m644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+}
diff --git a/extra/libofa/gcc-4.patch b/extra/libofa/gcc-4.patch
new file mode 100644
index 000000000..d1059bafa
--- /dev/null
+++ b/extra/libofa/gcc-4.patch
@@ -0,0 +1,39 @@
+--- lib/JAMA/tnt_math_utils.h.orig 2006-06-17 01:46:22.000000000 +0300
++++ lib/JAMA/tnt_math_utils.h 2006-06-17 01:47:02.000000000 +0300
+@@ -20,11 +20,20 @@
+ namespace TNT
+ {
+ /**
++ @returns the absolute value of a real (no-complex) scalar.
++*/
++template <class Real>
++Real abs(const Real &a)
++{
++ return (a > 0 ? a : -a);
++}
++/**
+ @returns hypotenuse of real (non-complex) scalars a and b by
+ avoiding underflow/overflow
+ using (a * sqrt( 1 + (b/a) * (b/a))), rather than
+ sqrt(a*a + b*b).
+ */
++
+ template <class Real>
+ Real hypot(const Real &a, const Real &b)
+ {
+@@ -56,15 +65,6 @@
+ }
+ */
+
+-/**
+- @returns the absolute value of a real (no-complex) scalar.
+-*/
+-template <class Real>
+-Real abs(const Real &a)
+-{
+- return (a > 0 ? a : -a);
+-}
+-
+ }
+ #endif
+ /* MATH_UTILS_H */
diff --git a/extra/libofa/gcc4.3.patch b/extra/libofa/gcc4.3.patch
new file mode 100644
index 000000000..f68f42bfb
--- /dev/null
+++ b/extra/libofa/gcc4.3.patch
@@ -0,0 +1,35 @@
+diff -ur libofa-0.9.3.orig/examples/example.cpp libofa-0.9.3/examples/example.cpp
+--- libofa-0.9.3.orig/examples/example.cpp 2006-05-10 21:05:37.000000000 +0300
++++ libofa-0.9.3/examples/example.cpp 2008-04-16 15:51:49.000000000 +0300
+@@ -9,6 +9,8 @@
+
+ #include "protocol.h"
+
++#include <string.h>
++
+ AudioData* loadWaveFile(char *file);
+ AudioData* loadDataUsingLAME(char *file);
+
+Vain hakemistossa libofa-0.9.3/examples: example.cpp.orig
+diff -ur libofa-0.9.3.orig/examples/protocol.cpp libofa-0.9.3/examples/protocol.cpp
+--- libofa-0.9.3.orig/examples/protocol.cpp 2006-05-10 21:05:42.000000000 +0300
++++ libofa-0.9.3/examples/protocol.cpp 2008-04-16 15:51:49.000000000 +0300
+@@ -8,6 +8,7 @@
+ -------------------------------------------------------------------*/
+ #include <stdio.h>
+ #include <stdlib.h>
++#include <cstring>
+ #include <string>
+ #include <map>
+ #include <expat.h>
+diff -ur libofa-0.9.3.orig/lib/signal_op.cpp libofa-0.9.3/lib/signal_op.cpp
+--- libofa-0.9.3.orig/lib/signal_op.cpp 2006-05-10 21:01:12.000000000 +0300
++++ libofa-0.9.3/lib/signal_op.cpp 2008-04-16 15:51:49.000000000 +0300
+@@ -12,6 +12,7 @@
+ // DATE CREATED: 1/12/06
+
+
++#include <cstdlib>
+ #include <math.h>
+ #include "signal_op.h"
+ #include "AFLIB/aflibConverter.h"
diff --git a/extra/libofa/gcc4.5.patch b/extra/libofa/gcc4.5.patch
new file mode 100644
index 000000000..44f437d5b
--- /dev/null
+++ b/extra/libofa/gcc4.5.patch
@@ -0,0 +1,10 @@
+--- libofa-0.9.3/examples/example.cpp~ 2010-05-19 18:07:19.517650317 +0200
++++ libofa-0.9.3/examples/example.cpp 2010-05-19 18:07:31.754317472 +0200
+@@ -6,6 +6,7 @@
+ No rights reserved.
+
+ -------------------------------------------------------------------*/
++#include <cstdio>
+
+ #include "protocol.h"
+
diff --git a/extra/libofx/PKGBUILD b/extra/libofx/PKGBUILD
new file mode 100644
index 000000000..6058cb7ee
--- /dev/null
+++ b/extra/libofx/PKGBUILD
@@ -0,0 +1,38 @@
+# $Id: PKGBUILD,v 1.9 2009/02/06 16:41:19 abhidg Exp $
+# Maintainer: Aaron Griffin <aaron@archlinux.org>
+
+pkgbase=libofx
+pkgname=('libofx' 'libofx-doc')
+pkgver=0.9.2
+pkgrel=1
+pkgdesc="API for the OFX banking standard"
+arch=('i686' 'x86_64')
+url="http://libofx.sourceforge.net"
+license=('GPL')
+depends=('opensp' 'curl' 'gcc-libs')
+source=(http://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.gz)
+md5sums=('cb72fce95e0d59bef78ba0601fbc91f3')
+sha1sums=('f11e873a50f5bd16749a7c0700acbf5d565bc859')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ ./configure --prefix=/usr
+ make
+}
+
+package_libofx() {
+ options=('!libtool' '!docs')
+
+ cd "$srcdir/$pkgname-$pkgver"
+ make DESTDIR="$pkgdir" install
+}
+
+package_libofx-doc() {
+ pkgdesc="Documention of the OFX banking standard API"
+ depends=()
+
+ cd "$srcdir/$pkgname-$pkgver"
+ make DESTDIR="$pkgdir" install-docDATA
+ cd doc
+ make DESTDIR="$pkgdir" install
+}
diff --git a/extra/libogg/PKGBUILD b/extra/libogg/PKGBUILD
new file mode 100644
index 000000000..66f9062d3
--- /dev/null
+++ b/extra/libogg/PKGBUILD
@@ -0,0 +1,39 @@
+# $Id: PKGBUILD 104973 2011-01-05 16:46:37Z heftig $
+# Maintainer:
+# Contributor: John Proctor <jproctor@prium.net>
+
+pkgname=libogg
+pkgver=1.2.2
+pkgrel=1.1
+pkgdesc="Ogg bitstream and framing library"
+arch=('i686' 'x86_64')
+url="http://www.xiph.org/ogg/"
+license=('BSD')
+depends=('glibc')
+options=('!libtool')
+source=(http://downloads.xiph.org/releases/ogg/$pkgname-$pkgver.tar.xz
+ config_types.h)
+md5sums=('203c28a1d356b641253c960365e4cc48'
+ 'a4d786b1b1955cb85b64fd16cbbee3f9')
+
+build() {
+ cd $srcdir/${pkgname}-${pkgver}
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd $srcdir/${pkgname}-${pkgver}
+ make DESTDIR=$pkgdir install
+
+ # install BSD license
+ install -Dm644 $srcdir/$pkgname-$pkgver/COPYING \
+ $pkgdir/usr/share/licenses/$pkgname/COPYING
+
+ # Resolve multilib conflict
+ if [[ $CARCH == "x86_64" ]]; then
+ mv "$pkgdir"/usr/include/ogg/config_types{,-64}.h
+ install -m 644 "$srcdir/config_types.h" \
+ "${pkgdir}/usr/include/ogg/config_types.h"
+ fi
+}
diff --git a/extra/libogg/config_types.h b/extra/libogg/config_types.h
new file mode 100644
index 000000000..8297a7acb
--- /dev/null
+++ b/extra/libogg/config_types.h
@@ -0,0 +1,9 @@
+#include <bits/wordsize.h>
+
+#if __WORDSIZE == 32
+#include "config_types-32.h"
+#elif __WORDSIZE == 64
+#include "config_types-64.h"
+#else
+#error "Unknown word size"
+#endif
diff --git a/extra/liboil/PKGBUILD b/extra/liboil/PKGBUILD
new file mode 100644
index 000000000..e206abb99
--- /dev/null
+++ b/extra/liboil/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 72222 2010-03-13 20:12:59Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=liboil
+pkgver=0.3.17
+pkgrel=1
+pkgdesc="Library of simple functions that are optimized for various CPUs."
+arch=('i686' 'x86_64')
+license=('custom')
+url="http://liboil.freedesktop.org/"
+depends=('glibc')
+makedepends=('glib2' 'pkgconfig' 'docbook-xsl')
+options=('!libtool' '!makeflags')
+source=(${url}/download/${pkgname}-${pkgver}.tar.gz)
+md5sums=('47dc734f82faeb2964d97771cfd2e701')
+
+build() {
+ unset CFLAGS
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+ install -m755 -d "${pkgdir}/usr/share/licenses/liboil"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/liboil/" || return 1
+}
diff --git a/extra/liborigin2/PKGBUILD b/extra/liborigin2/PKGBUILD
new file mode 100644
index 000000000..1944f0fe8
--- /dev/null
+++ b/extra/liborigin2/PKGBUILD
@@ -0,0 +1,58 @@
+# $Id: PKGBUILD 112096 2011-03-03 20:59:03Z eric $
+# Maintainer: Ronald van Haren <ronald.archlinux.org>
+# Contributor: damir <damir@archlinux.org>
+
+pkgbase=liborigin2
+pkgname=('liborigin2' 'liborigin2-docs')
+pkgver=20100913
+pkgrel=3
+arch=('i686' 'x86_64')
+url="http://soft.proindependent.com/liborigin2/"
+license=('GPL3')
+makedepends=('doxygen' 'qt' 'boost')
+replaces=('liborigin')
+provides=('liborigin')
+source=(http://download.berlios.de/qtiplot/${pkgbase}-13092010.zip
+ liborigin.pro.archlinux
+ http://tree.phi-sci.com/tree.hh)
+md5sums=('e2b41c4d8a1e2d357dd2b5b331d31375' '2b19f7a4bd120f6d689edc327468e48e'\
+ 'd24a1c3bdd811354ea7f5885d86ddacb')
+sha1sums=('3f17d5a8c484ddb864a29a91a94d677b0b3b18d7' '1664b00929d6fba6e5ebcf7cb422e1da1b3897a5'\
+ 'd10344d969e0b892c21e1bd5bd3541d838526b24')
+
+build() {
+ cd "${srcdir}/${pkgbase}"
+
+ install -Dm644 "${srcdir}/liborigin.pro.archlinux" ./liborigin.pro
+ install -Dm644 "${srcdir}/tree.hh" ./tree.hh # get the header back like it was in previous releases
+ qmake liborigin.pro QMAKESPEC=linux-g++
+ make QTDIR=/usr/ QMAKESPEC=linux-g++
+
+ # create documentation
+ cd doc
+ doxygen
+}
+
+package_liborigin2() {
+ pkgdesc="A library for reading OriginLab OPJ project files"
+ depends=('gcc-libs' 'boost-libs')
+
+ cd "${srcdir}/${pkgbase}"
+
+ INSTALL_ROOT="${pkgdir}" make install
+
+ # install missing includes
+ install -Dm644 tree.hh "${pkgdir}/usr/include/liborigin2/tree.hh"
+ for i in *.h; do
+ install -Dm644 ${i} "${pkgdir}/usr/include/liborigin2/${i}"
+ done
+}
+package_liborigin2-docs() {
+ pkgdesc="Documentation for liborigin2: a library for reading OriginLab OPJ project files"
+
+ cd "${srcdir}/${pkgbase}/doc"
+ install -d "${pkgdir}/usr/share/doc/${pkgbase}"
+ cp -rf html/* "${pkgdir}/usr/share/doc/${pkgbase}"
+ chmod 755 "${pkgdir}/usr/share/doc/liborigin2/images"
+ chmod 644 "${pkgdir}/usr/share/doc/liborigin2/images/origin_import.png"
+}
diff --git a/extra/liborigin2/liborigin.pro.archlinux b/extra/liborigin2/liborigin.pro.archlinux
new file mode 100644
index 000000000..d338a009c
--- /dev/null
+++ b/extra/liborigin2/liborigin.pro.archlinux
@@ -0,0 +1,41 @@
+TARGET = origin2
+TEMPLATE = lib
+CONFIG += warn_on release thread
+#CONFIG += staticlib
+MOC_DIR = ./tmp
+OBJECTS_DIR = ./tmp
+
+DESTDIR = ./
+
+#INCLUDEPATH += boost_1_33_0
+LIBS += -lboost_date_time
+LIBS += -lboost_thread
+
+HEADERS += endianfstream.hh
+HEADERS += logging.hpp
+HEADERS += OriginObj.h
+HEADERS += OriginFile.h
+HEADERS += OriginParser.h
+HEADERS += OriginDefaultParser.h
+HEADERS += Origin600Parser.h
+HEADERS += Origin610Parser.h
+HEADERS += Origin700Parser.h
+HEADERS += Origin750Parser.h
+HEADERS += Origin800Parser.h
+HEADERS += Origin810Parser.h
+
+SOURCES += OriginFile.cpp
+SOURCES += OriginParser.cpp
+SOURCES += OriginDefaultParser.cpp
+SOURCES += Origin600Parser.cpp
+SOURCES += Origin610Parser.cpp
+SOURCES += Origin700Parser.cpp
+SOURCES += Origin750Parser.cpp
+SOURCES += Origin800Parser.cpp
+SOURCES += Origin810Parser.cpp
+
+headers.files = \$\$HEADERS
+headers.path = /usr/include/liborigin2
+target.path = /usr/lib
+INSTALLS = target headers
+
diff --git a/extra/libotf/PKGBUILD b/extra/libotf/PKGBUILD
new file mode 100644
index 000000000..85f758c52
--- /dev/null
+++ b/extra/libotf/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 100934 2010-11-26 17:51:11Z bisson $
+# Contributor: Ashish Shukla <wahjava.ml@gmail.com>
+
+pkgname=libotf
+pkgver=0.9.12
+pkgrel=1
+pkgdesc='OpenType Font library'
+url='http://www.m17n.org/libotf/'
+arch=('i686' 'x86_64')
+license=('LGPL')
+depends=('libxaw' 'freetype2')
+options=('!libtool')
+source=("http://www.m17n.org/libotf/${pkgname}-${pkgver}.tar.gz")
+sha1sums=('47872f696a62e8f111960143f3f36b5366398e20')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/libotr/PKGBUILD b/extra/libotr/PKGBUILD
new file mode 100644
index 000000000..2aa1b0147
--- /dev/null
+++ b/extra/libotr/PKGBUILD
@@ -0,0 +1,22 @@
+# $ Id: $
+# Maintainer: Pierre Schmitz <pierre@archlinux.de>
+# Contributor: Bug <Bug2000@gmail.com>
+
+pkgname=libotr
+pkgver=3.2.0
+pkgrel=1
+pkgdesc='Off-the-Record Messaging Library and Toolkit.'
+arch=('i686' 'x86_64')
+url='http://www.cypherpunks.ca/otr/'
+license=('GPL' 'LGPL')
+depends=('libgcrypt')
+options=('!libtool')
+source=("http://www.cypherpunks.ca/otr/${pkgname}-${pkgver}.tar.gz")
+md5sums=('faba02e60f64e492838929be2272f839')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ ./configure --prefix=/usr --mandir=/usr/share/man
+ make || return 1
+ make DESTDIR=$pkgdir install
+} \ No newline at end of file
diff --git a/extra/libots/PKGBUILD b/extra/libots/PKGBUILD
new file mode 100644
index 000000000..cd749e574
--- /dev/null
+++ b/extra/libots/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 88136 2010-08-19 19:25:04Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libots
+pkgver=0.5.0
+pkgrel=2
+pkgdesc="Open Text Summarizer"
+arch=('i686' 'x86_64')
+url="http://libots.sourceforge.net/"
+license=('GPL')
+depends=('libxml2' 'glib2')
+options=('!libtool' '!makeflags')
+source=(http://downloads.sourceforge.net/sourceforge/${pkgname}/ots-${pkgver}.tar.gz)
+md5sums=('1e140a4bf9d720b4339a5c2bdf4976e8')
+
+
+build() {
+ cd "${srcdir}/ots-${pkgver}"
+ touch gtk-doc.make
+ sed -i -e 's/en.xml$//' dic/Makefile.am
+ libtoolize --force
+ aclocal
+ automake --add-missing --force
+ autoconf
+ ./configure --prefix=/usr --disable-static
+ make
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/libpano13/PKGBUILD b/extra/libpano13/PKGBUILD
new file mode 100644
index 000000000..6471753aa
--- /dev/null
+++ b/extra/libpano13/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 96763 2010-10-24 16:48:37Z ibiru $
+# Maintainer: tobias <tobias@archlinux.org>
+# Contributor: Tobias Kieslich <tobias@justdreams.de>
+
+pkgname=libpano13
+pkgver=2.9.17
+pkgrel=1
+pkgdesc="basic library to calculate panoramical pictures - core functions of the panotools"
+url="http://panotools.sourceforge.net/"
+arch=('i686' 'x86_64')
+license=('GPL2')
+depends=('libpng' 'libtiff')
+makedepends=('openjdk6')
+options=('!libtool')
+source=(http://downloads.sourceforge.net/sourceforge/panotools/$pkgname-$pkgver.tar.gz)
+md5sums=('54ec7c505cf38521f2fbb6e2acd2c433')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+# sed -i 's:\(^.*MAX_FISHEYE_FOV.*\)160.*$:\1720.0:' filter.h
+ ./configure --prefix=/usr --mandir=/usr/share/man --with-java=${JAVA_HOME}
+ make
+ make DESTDIR=$pkgdir install
+}
diff --git a/extra/libpciaccess/PKGBUILD b/extra/libpciaccess/PKGBUILD
new file mode 100644
index 000000000..8302ea92a
--- /dev/null
+++ b/extra/libpciaccess/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Alexander Baldeck <alexander@archlinux.org>
+pkgname=libpciaccess
+pkgver=0.12.1
+pkgrel=1
+pkgdesc="X11 PCI access library"
+arch=(i686 x86_64)
+license=('custom')
+url="http://xorg.freedesktop.org/"
+depends=('glibc')
+makedepends=('pkgconfig' 'xorg-util-macros')
+options=('!libtool')
+source=(${url}/releases/individual/lib/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('4933bda545df37395e57ff6b4bd61e17a5431770')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/libplist/PKGBUILD b/extra/libplist/PKGBUILD
new file mode 100644
index 000000000..2a82efc5d
--- /dev/null
+++ b/extra/libplist/PKGBUILD
@@ -0,0 +1,36 @@
+# $Id: PKGBUILD 89629 2010-09-02 17:11:43Z remy $
+# Maintainer : Ionut Biru <ibiru@archlinux.org>
+# Contributor: Gabriel Martinez < reitaka at gmail dot com >
+
+pkgname=libplist
+pkgver=1.3
+pkgrel=2
+pkgdesc="A library to handle Apple Property List format whereas it's binary or XML"
+url="http://libimobiledevice.org/"
+arch=('i686' 'x86_64')
+license=('GPL2' 'LGPL2.1')
+depends=('glib2>=2.24.1' 'libxml2>=2.7.7')
+makedepends=('cmake' 'swig' 'python2')
+source=(http://cloud.github.com/downloads/JonathanBeck/${pkgname}/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('982c8aac59cdc3fafc925a407a29b6cf367c5ec9bad6ad509fe5ea25d3e5b6b0')
+
+build() {
+ # CMake is not patched yet
+ cd "${srcdir}/${pkgname}-${pkgver}/cmake/modules"
+ cp /usr/share/cmake-2.8/Modules/FindPython*.cmake .
+ sed -i -e 's#2.6#2.7 2.6#' FindPythonLibs.cmake
+ sed -i -e 's#python2.6#python2.7 python2.6#' FindPythonInterp.cmake
+
+ cd "${srcdir}"
+ mkdir build
+ cd build
+ cmake ../"${pkgname}-${pkgver}" \
+ -DCMAKE_SKIP_RPATH=ON \
+ -DCMAKE_INSTALL_PREFIX:PATH=/usr
+ make || return 1
+}
+
+package() {
+ cd "${srcdir}"/build
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/libpng/PKGBUILD b/extra/libpng/PKGBUILD
new file mode 100644
index 000000000..42cc6b9e0
--- /dev/null
+++ b/extra/libpng/PKGBUILD
@@ -0,0 +1,37 @@
+# $Id: PKGBUILD 103693 2010-12-22 14:49:59Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: dorphell <dorphell@archlinux.org>
+# Contributor: Travis Willard <travis@archlinux.org>
+# Contributor: Douglas Soares de Andrade <douglas@archlinux.org>
+
+pkgname=libpng
+pkgver=1.4.5
+_apngver=1.4.5
+pkgrel=1
+pkgdesc="A collection of routines used to create PNG format graphics files"
+arch=('i686' 'x86_64')
+url="http://www.libpng.org/pub/png/libpng.html"
+license=('custom')
+depends=('zlib')
+options=('!libtool')
+source=("http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.xz"
+ "http://downloads.sourceforge.net/sourceforge/libpng-apng/libpng-${_apngver}-apng.patch.gz")
+md5sums=('37d420c7d8294aac438c150bb4335901'
+ '459affb0ac7e0f1ae4d99b88234cb3db')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ # Add animated PNG (apng) support
+ # see http://sourceforge.net/projects/libpng-apng/
+ patch -p1 -i "${srcdir}/libpng-${_apngver}-apng.patch"
+
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+
+ cd contrib/pngminus
+ make PNGLIB="-L${pkgdir}/usr/lib -lpng" -f makefile.std png2pnm pnm2png
+ install -m755 png2pnm pnm2png "${pkgdir}/usr/bin/"
+ install -D -m644 ../../LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+}
diff --git a/extra/libproxy/PKGBUILD b/extra/libproxy/PKGBUILD
new file mode 100644
index 000000000..935b97672
--- /dev/null
+++ b/extra/libproxy/PKGBUILD
@@ -0,0 +1,41 @@
+# $Id: PKGBUILD 24494 2009-01-17 20:42:01Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libproxy
+pkgver=0.4.6
+pkgrel=6
+pkgdesc="A library that provides automatic proxy configuration management"
+arch=(i686 x86_64)
+license=('LGPL')
+depends=('gcc-libs')
+optdepends=('gconf: GNOME configuration module'
+ 'kdelibs: KDE configuration module'
+ 'networkmanager: NetworkManager configuration module'
+ 'perl: Perl bindings'
+ 'python2: Python bindings')
+makedepends=('gconf' 'cmake' 'networkmanager' 'automoc4' 'python2' 'kdelibs' 'perl')
+url="http://libproxy.googlecode.com"
+source=(http://libproxy.googlecode.com/files/${pkgname}-${pkgver}.tar.gz)
+options=('!libtool')
+md5sums=('199c6b120baf1f7258a55f38d5ec74f5')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ mkdir build
+ cd build
+ cmake -DCMAKE_INSTALL_PREFIX=/usr \
+ -DLIBEXEC_INSTALL_DIR=/usr/lib/libproxy \
+ -DCMAKE_SKIP_RPATH=ON \
+ -DPERL_VENDORINSTALL=yes \
+ -DCMAKE_BUILD_TYPE=None \
+ -WITH_WEBKIT=OFF \
+ -DCMAKE_CXX_FLAGS="${CXXFLAGS}" \
+ -DCMAKE_C_FLAGS="${CFLAGS}" \
+ ..
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}/build"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/libpst/PKGBUILD b/extra/libpst/PKGBUILD
new file mode 100644
index 000000000..ea581fe03
--- /dev/null
+++ b/extra/libpst/PKGBUILD
@@ -0,0 +1,41 @@
+# $Id: PKGBUILD 112025 2011-03-03 09:42:31Z eric $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgbase=libpst
+pkgname=('libpst' 'libpst-docs')
+pkgver=0.6.49
+pkgrel=2
+arch=('i686' 'x86_64')
+url="http://www.five-ten-sg.com/libpst/"
+license=('GPL')
+makedepends=('python2' 'boost')
+source=(http://www.five-ten-sg.com/libpst/packages/${pkgbase}-${pkgver}.tar.gz)
+md5sums=('a0a0f927e82ab14bb042bd8bbd97c312')
+sha1sums=('c10f4af9dc1d22b331420bc3931036a3d41115cb')
+
+build() {
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ ./configure --prefix=/usr --mandir=/usr/share/man \
+ --disable-static --enable-libpst-shared --disable-dii PYTHON_VERSION=2
+ make
+}
+
+package_libpst() {
+ pkgdesc="Outlook .pst file converter"
+ depends=('gcc-libs')
+ optdepends=('boost-libs: for libpst python interface')
+ options=('!libtool' '!docs')
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
+
+package_libpst-docs() {
+ pkgdesc="Documentation for Outlook .pst file converter"
+ options=('!libtool')
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ make DESTDIR="${pkgdir}" install-htmlDATA
+ cd "${srcdir}/${pkgbase}-${pkgver}/html"
+ make DESTDIR="${pkgdir}" install-htmldevelDATA
+}
diff --git a/extra/libqalculate/PKGBUILD b/extra/libqalculate/PKGBUILD
new file mode 100644
index 000000000..b9ffa1c21
--- /dev/null
+++ b/extra/libqalculate/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 108627 2011-02-02 01:51:53Z eric $
+# Maintainer: Eric Bélanger <eric@archlinux.org>
+
+pkgname=libqalculate
+pkgver=0.9.7
+pkgrel=2
+pkgdesc="Multi-purpose desktop calculator"
+arch=('i686' 'x86_64')
+url="http://qalculate.sourceforge.net/"
+license=('GPL')
+depends=('libxml2' 'cln' 'glib2' 'ncurses' 'readline')
+makedepends=('perlxml')
+optdepends=('gnuplot: for plotting support' 'wget: for retrieval of exchange rates (not needed if you use one of the GUI)' 'gnome-vfs: for retrieval of exchange rates (not needed if you use one of the GUI)')
+options=('!libtool' '!makeflags')
+source=(http://downloads.sourceforge.net/sourceforge/qalculate/${pkgname}-${pkgver}.tar.gz)
+md5sums=('a1507ab862f4ad9852788619aada35cd')
+sha1sums=('c15f7f3a97995decf62cc964956fc1e374ecd78c')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/libraw1394/PKGBUILD b/extra/libraw1394/PKGBUILD
new file mode 100644
index 000000000..786d0fc96
--- /dev/null
+++ b/extra/libraw1394/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 114419 2011-03-13 13:06:30Z tpowa $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=libraw1394
+pkgver=2.0.7
+pkgrel=1
+arch=('i686' 'x86_64')
+license=('LGPL2.1')
+pkgdesc="Provides an API to the Linux IEEE1394 (FireWire) driver"
+depends=('glibc')
+makedepends=('pkgconfig')
+url="https://ieee1394.wiki.kernel.org/index.php/Main_Page"
+options=(!libtool force)
+source=(ftp://ftp.kernel.org/pub/linux/libs/ieee1394/${pkgname}-${pkgver}.tar.bz2)
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+}
+
+package () {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
+md5sums=('997ef18ab8e2e21f3966dff00e92be28')
diff --git a/extra/libreoffice/ArchLinux.patch b/extra/libreoffice/ArchLinux.patch
new file mode 100644
index 000000000..2bcf9296d
--- /dev/null
+++ b/extra/libreoffice/ArchLinux.patch
@@ -0,0 +1,11 @@
+--- patches/dev300/apply 2009-05-07 19:44:13.000000000 +0000
++++ patches/dev300/apply.new 2009-05-11 18:46:58.108316633 +0000
+@@ -108,7 +108,7 @@
+ rpl2: rPathCommon
+ rpl2-64: rPathCommon
+ # ArchLinux
+-ArchLinux: LinuxCommon
++ArchLinux: LinuxCommon, NotDebian, CairoFonts, Shrink
+ # Win32
+ Win32 : Win32Common
+ # translate.org.za
diff --git a/extra/libreoffice/PKGBUILD b/extra/libreoffice/PKGBUILD
new file mode 100644
index 000000000..9935e4c61
--- /dev/null
+++ b/extra/libreoffice/PKGBUILD
@@ -0,0 +1,652 @@
+# $Id: PKGBUILD 116748 2011-03-25 17:36:36Z andyrtr $
+# Maintainer: AndyRTR <andyrtr@archlinux.org>
+
+pkgbase="libreoffice"
+pkgname=('libreoffice' 'libreoffice-sdk' 'libreoffice-extension-nlpsolver' 'libreoffice-extension-pdfimport' 'libreoffice-extension-presentation-minimizer' 'libreoffice-extension-presenter-screen'
+ 'libreoffice-extension-report-builder' 'libreoffice-extension-wiki-publisher' 'libreoffice-extension-ct2n' 'libreoffice-extension-hunart' 'libreoffice-extension-numbertext'
+ 'libreoffice-extension-oooblogger' 'libreoffice-extension-typo' 'libreoffice-extension-watch-window' 'libreoffice-extension-diagram')
+_LOver=3.3.2.2
+pkgver=3.3.2
+pkgrel=2
+arch=('i686' 'x86_64')
+_LO_tree="3.3"
+_OFFICEUPD="330"
+license=('LGPL3')
+url="http://www.libreoffice.org/"
+makedepends=( # makedepends
+ 'boost' 'sane' 'perl-archive-zip' 'zip' 'unzip' 'xulrunner' 'unixodbc' 'hsqldb-java'
+ 'apache-ant' 'gperf' 'poppler' 'kdelibs' 'gconf' 'cppunit'
+ 'beanshell' 'vigra' 'libldap' 'lucene' 'libmythes' 'junit' 'libwpg' 'imagemagick'
+ # for additional ooo-build features
+ 'mesa>=7.5' 'gstreamer0.10-base>=0.10.26' #'mono>=2.6.1'
+ #'saxon' - currently broken
+ # the depends from libreoffice main pkg
+ "curl>=7.20.0" "hunspell>=1.2.8" "python2>=2.7" 'libwpd>=0.9.0' 'libxaw' "neon>=0.28.6"
+ 'pango' 'nspr' 'libjpeg' 'libxrandr' 'libgl' 'dbus-glib' "icu>=4.6" 'libxslt'
+ 'redland' 'libgraphite' 'hyphen' 'lpsolve' 'gcc-libs' 'sh'
+ 'hicolor-icon-theme' 'desktop-file-utils' 'shared-mime-info' 'java-runtime' 'gtk2') # keep gtk2 for install script
+# http://download.documentfoundation.org/mirrors/all.html
+# http://wiki.documentfoundation.org/Mirrors
+_mirror="http://download.documentfoundation.org/libreoffice/src"
+#_mirror="ftp://ftp.uni-muenster.de/pub/software/tdf/libreoffice/src"
+#_mirror="ftp://ftp.astral.ro/mirrors/tdf/libreoffice/src"
+_additional_source_url="http://hg.services.openoffice.org/binaries"
+source=(${_mirror}/${pkgbase}-build-${_LOver}.tar.gz
+ ${_mirror}/${pkgbase}-{artwork,base,bootstrap,calc,components,extensions,extras,filters,help,impress,l10n,libs-core,libs-extern,libs-extern-sys,libs-gui,postprocess,sdk,testing,ure,writer}-${_LOver}.tar.bz2
+ ArchLinux.patch
+ ${_additional_source_url}/63ddc5116488985e820075e65fbe6aa4-openssl-0.9.8o.tar.gz
+ ${_additional_source_url}/09357cc74975b01714e00c5899ea1881-pixman-0.12.0.tar.gz
+ ${_additional_source_url}/0b49ede71c21c0599b0cc19b353a6cb3-README_apache-commons.txt
+ ${_additional_source_url}/68dd2e8253d9a7930e9fd50e2d7220d0-hunspell-1.2.9.tar.gz
+ ${_additional_source_url}/128cfc86ed5953e57fe0f5ae98b62c2e-libtextcat-2.2.tar.gz
+ ${_additional_source_url}/17410483b5b5f267aa18b7e00b65e6e0-hsqldb_1_8_0.zip
+ ${_additional_source_url}/1756c4fa6c616ae15973c104cd8cb256-Adobe-Core35_AFMs-314.tar.gz
+ ${_additional_source_url}/18f577b374d60b3c760a3a3350407632-STLport-4.5.tar.gz
+ ${_additional_source_url}/1f24ab1d39f4a51faf22244c94a6203f-xmlsec1-1.2.14.tar.gz
+ ${_additional_source_url}/24be19595acad0a2cae931af77a0148a-LICENSE_source-9.0.0.7-bj.html
+ ${_additional_source_url}/26b3e95ddf3d9c077c480ea45874b3b8-lp_solve_5.5.tar.gz
+ ${_additional_source_url}/284e768eeda0e2898b0d5bf7e26a016e-raptor-1.4.18.tar.gz
+ ${_additional_source_url}/2a177023f9ea8ec8bd00837605c5df1b-jakarta-tomcat-5.0.30-src.tar.gz
+ ${_additional_source_url}/2ae988b339daec234019a7066f96733e-commons-lang-2.3-src.tar.gz
+ ${_additional_source_url}/2c9b0f83ed5890af02c0df1c1776f39b-commons-httpclient-3.1-src.tar.gz
+ ${_additional_source_url}/2f6ecca935948f7db92d925d88d0d078-icu4c-4_0_1-src.tgz
+ ${_additional_source_url}/ca4870d899fd7e943ffc310a5421ad4d-liberation-fonts-ttf-1.06.0.20100721.tar.gz
+ ${_additional_source_url}/35c94d2df8893241173de1d16b6034c0-swingExSrc.zip
+ ${_additional_source_url}/35efabc239af896dfb79be7ebdd6e6b9-gentiumbasic-fonts-1.10.zip
+ ${_additional_source_url}/377a60170e5185eb63d3ed2fae98e621-README_silgraphite-2.3.1.txt
+ ${_additional_source_url}/39bb3fcea1514f1369fcfc87542390fd-sacjava-1.3.zip
+ ${_additional_source_url}/3ade8cfe7e59ca8e65052644fed9fca4-epm-3.7.tar.gz
+ ${_additional_source_url}/3c219630e4302863a9a83d0efde889db-commons-logging-1.1.1-src.tar.gz
+ ${_additional_source_url}/48470d662650c3c074e1c3fabbc67bbd-README_source-9.0.0.7-bj.txt
+ ${_additional_source_url}/48d8169acc35f97e05d8dcdfd45be7f2-lucene-2.3.2.tar.gz
+ ${_additional_source_url}/4a660ce8466c9df01f19036435425c3a-glibc-2.1.3-stub.tar.gz
+ ${_additional_source_url}/4ea70ea87b47e92d318d4e7f5b940f47-cairo-1.8.0.tar.gz
+ ${_additional_source_url}/599dc4cc65a07ee868cf92a667a913d2-xpdf-3.02.tar.gz
+ ${_additional_source_url}/5aba06ede2daa9f2c11892fbd7bc3057-libserializer.zip
+ http://download.go-oo.org/src/71474203939fafbe271e1263e61d083e-nss-3.12.8-with-nspr-4.8.6.tar.gz
+ ${_additional_source_url}/67b42915c8432abf0a922438f00860a2-libxml.zip
+ ${_additional_source_url}/7740a8ec23878a2f50120e1faa2730f2-libxml2-2.7.6.tar.gz
+ ${_additional_source_url}/7376930b0d3f3d77a685d94c4a3acda8-STLport-4.5-0119.tar.gz
+ ${_additional_source_url}/79600e696a98ff95c2eba976f7a8dfbb-liblayout.zip
+ ${_additional_source_url}/798b2ffdc8bcfe7bca2cf92b62caf685-rhino1_5R5.zip
+ ${_additional_source_url}/ecb2e37e45c9933e2a963cabe03670ab-curl-7.19.7.tar.gz
+ ${_additional_source_url}/8294d6c42e3553229af9934c5c0ed997-stax-api-1.0-2-sources.jar
+ ${_additional_source_url}/8ea307d71d11140574bfb9fcc2487e33-libbase.zip
+ ${_additional_source_url}/bd30e9cf5523cdfc019b94f5e1d7fd19-cppunit-1.12.1.tar.gz
+ ${_additional_source_url}/a06a496d7a43cbdc35e69dbe678efadb-libloader.zip
+ ${_additional_source_url}/a169ab152209200a7bad29a275cb0333-seamonkey-1.1.14.source.tar.gz
+ ${_additional_source_url}/a4d9b30810a434a3ed39fc0003bbd637-LICENSE_stax-api-1.0-2-sources.html
+ ${_additional_source_url}/a7983f859eafb2677d7ff386a023bc40-xsltml_2.1.2.zip
+ ${_additional_source_url}/ada24d37d8d638b3d8a9985e80bc2978-source-9.0.0.7-bj.zip
+ ${_additional_source_url}/af3c3acf618de6108d65fcdc92b492e1-commons-codec-1.3-src.tar.gz
+ ${_additional_source_url}/ba1015b59c112d44d7797b62fe7bee51-neon-0.29.3.tar.gz
+ ${_additional_source_url}/bc702168a2af16869201dbe91e46ae48-LICENSE_Python-2.6.1
+ ${_additional_source_url}/c441926f3a552ed3e5b274b62e86af16-STLport-4.0.tar.gz
+ ${_additional_source_url}/ca66e26082cab8bb817185a116db809b-redland-1.0.8.tar.gz
+ ${_additional_source_url}/d0b5af6e408b8d2958f3d83b5244f5e8-hyphen-2.4.tar.gz
+ ${_additional_source_url}/d1a3205871c3c52e8a50c9f18510ae12-libformula.zip
+ ${_additional_source_url}/d35724900f6a4105550293686688bbb3-silgraphite-2.3.1.tar.gz
+ ${_additional_source_url}/d4c4d91ab3a8e52a2e69d48d34ef4df4-core.zip
+ ${_additional_source_url}/d70951c80dabecc2892c919ff5d07172-db-4.7.25.NC-custom.tar.gz
+ ${_additional_source_url}/dbb3757275dc5cc80820c0b4dd24ed95-librepository.zip
+ ${_additional_source_url}/dbd5f3b47ed13132f04c685d608a7547-jpeg-6b.tar.gz
+ ${_additional_source_url}/e0707ff896045731ff99e99799606441-README_db-4.7.25.NC-custom.txt
+ ${_additional_source_url}/e81c2f0953aa60f8062c05a4673f2be0-Python-2.6.1.tar.bz2
+ ${_additional_source_url}/e61d0364a30146aaa3001296f853b2b9-libxslt-1.1.26.tar.gz
+ ${_additional_source_url}/ea570af93c284aa9e5621cd563f54f4d-bsh-2.0b1-src.tar.gz
+ ${_additional_source_url}/ea91f2fb4212a21d708aced277e6e85a-vigra1.4.0.tar.gz
+ ${_additional_source_url}/ee8b492592568805593f81f8cdf2a04c-expat-2.0.1.tar.gz
+ ${_additional_source_url}/f3e2febd267c8e4b13df00dac211dd6d-flute.zip
+ ${_additional_source_url}/f7925ba8491fe570e5164d2c72791358-libfonts.zip
+ ${_additional_source_url}/fb7ba5c2182be4e73748859967455455-README_stax-api-1.0-2-sources.txt
+ ${_additional_source_url}/fca8706f2c4619e2fa3f8f42f8fc1e9d-rasqal-0.9.16.tar.gz
+ ${_additional_source_url}/fcc6df1160753d0b8c835d17fdeeb0a7-boost_1_39_0.tar.gz
+ ${_additional_source_url}/fdb27bfe2dbe2e7b57ae194d9bf36bab-SampleICC-1.3.2.tar.gz
+ ${_additional_source_url}/37282537d0ed1a087b1c8f050dc812d9-dejavu-fonts-ttf-2.32.zip
+ ${_additional_source_url}/831126a1ee5af269923cfab6050769fe-mysql-connector-cpp.zip
+ ${_additional_source_url}/067201ea8b126597670b5eff72e1f66c-mythes-1.2.0.tar.gz
+ ${_additional_source_url}/cf8a6967f7de535ae257fa411c98eb88-mdds_0.3.0.tar.bz2
+ http://www.numbertext.org/linux/881af2b7dca9b8259abbca00bbbc004d-LinLibertineG-20110101.zip
+ http://download.go-oo.org/src/47e1edaa44269bc537ae8cabebb0f638-JLanguageTool-1.0.0.tar.bz2
+ http://download.go-oo.org/src/debc62758716a169df9f62e6ab2bc634-zlib-1.2.3.tar.gz
+ http://download.go-oo.org/src/5ba6a61a2f66dfd5fee8cdd4cd262a37-libwpg-0.2.0.tar.bz2
+ http://download.go-oo.org/src/5ff846847dab351604ad859e2fd4ed3c-libwpd-0.9.1.tar.bz2
+ http://download.go-oo.org/src/9e436bff44c60dc8b97cba0c7fc11a5c-libwps-0.2.0.tar.bz2
+ http://download.go-oo.org/extern/185d60944ea767075d27247c3162b3bc-unowinreg.dll
+ http://download.go-oo.org//DEV300/ooo-cli-prebuilt-3.3.tar.bz2
+ http://download.go-oo.org//SRC680/mdbtools-0.6pre1.tar.gz
+ http://download.go-oo.org//SRC680/extras-3.1.tar.bz2
+ http://download.go-oo.org//SRC680/biblio.tar.bz2
+ http://download.go-oo.org/src//0f63ee487fda8f21fafa767b3c447ac9-ixion-0.2.0.tar.gz
+ http://download.go-oo.org/src//e3738abd0d3ce1870dc1fd1f22bba5b1-icu4c-4_2_1-src.tgz
+ http://ftp.fsf.hu/OpenOffice.org_hu/numbertext/numbertext-0.9.3.oxt
+ http://ftp.fsf.hu/OpenOffice.org_hu/hunart/hunart-0.3.oxt
+ http://ftp.fsf.hu/OpenOffice.org_hu/typo/typo-0.3.oxt
+ http://download.go-oo.org/src/90401bca927835b6fbae4a707ed187c8-nlpsolver-0.9.tar.bz2
+ http://download.go-oo.org/src/ConvertTextToNumber-1.3.2.oxt
+ http://ftp.devall.hu/kami/go-oo/WatchWindow_1.2.0.0.oxt
+ http://ftp.devall.hu/kami/go-oo/Diagram_1.1.0.0.oxt
+ http://download.go-oo.org/src/oooblogger-0.1.oxt
+ buildfix_64bit_system_libjpeg.diff)
+#options=('!makeflags')
+noextract=(libreoffice-\
+{artwork,base,bootstrap,calc,components,extensions,extras,filters,help,impress,l10n,libs-core,libs-extern,libs-extern-sys,libs-gui,postprocess,sdk,testing,ure,writer}-${_LOver}.tar.bz2)
+replaces=('openoffice-base')
+md5sums=('2f54261deaf89d8154440ea33bf12cc2'
+ 'cd9f83d8dc2f85f06b2999fd3d23a74d'
+ '46fb3c85cc878daabb58d94fa848a59d'
+ '19698765fe35dcbb1f6d7d55c617c39f'
+ '0274eb33f462e620cb2f37aa696d18b1'
+ 'a5f11a035faa6160121dd2d3f984065f'
+ 'd54e5f7e5cde7f648d74e382eb5e44fc'
+ 'db5d3a8886ec451c11e1ef3cea132ce0'
+ '4ae9b40116ef3f840b232cb3454be4e3'
+ '2dc8e4b347866f9469eb6c42a9cb0b81'
+ 'e9211340b2a7f48c17883db76d1e8e03'
+ '688768909f823b5006162d27638aa15e'
+ '26ca2152535ba45bf71d8aa3b26fc967'
+ '9df0af97ec8d085864c5341678bb1d0d'
+ '09b22bf1a812affbfe561230940d7da2'
+ 'e3dc1c328dfdf4a288946957c69ad32b'
+ '5c0a8203253d053f23613e68cdb69565'
+ '2e68a800e323fd3286a0a3305e3d3e39'
+ 'e91523550f9cae015923685ad3fce5ad'
+ 'a17434cc2469a263ffabd345e90d8911'
+ '6faf9924a74b836527906f49fcea40c2'
+ 'a77cc2fdff90146485e0b1f1398bb0d4'
+ '63ddc5116488985e820075e65fbe6aa4'
+ '09357cc74975b01714e00c5899ea1881'
+ '0b49ede71c21c0599b0cc19b353a6cb3'
+ '68dd2e8253d9a7930e9fd50e2d7220d0'
+ '128cfc86ed5953e57fe0f5ae98b62c2e'
+ '17410483b5b5f267aa18b7e00b65e6e0'
+ '1756c4fa6c616ae15973c104cd8cb256'
+ '18f577b374d60b3c760a3a3350407632'
+ '1f24ab1d39f4a51faf22244c94a6203f'
+ '24be19595acad0a2cae931af77a0148a'
+ '26b3e95ddf3d9c077c480ea45874b3b8'
+ '284e768eeda0e2898b0d5bf7e26a016e'
+ '2a177023f9ea8ec8bd00837605c5df1b'
+ '2ae988b339daec234019a7066f96733e'
+ '2c9b0f83ed5890af02c0df1c1776f39b'
+ '2f6ecca935948f7db92d925d88d0d078'
+ 'ca4870d899fd7e943ffc310a5421ad4d'
+ '35c94d2df8893241173de1d16b6034c0'
+ '35efabc239af896dfb79be7ebdd6e6b9'
+ '377a60170e5185eb63d3ed2fae98e621'
+ '39bb3fcea1514f1369fcfc87542390fd'
+ '3ade8cfe7e59ca8e65052644fed9fca4'
+ '3c219630e4302863a9a83d0efde889db'
+ '48470d662650c3c074e1c3fabbc67bbd'
+ '48d8169acc35f97e05d8dcdfd45be7f2'
+ '4a660ce8466c9df01f19036435425c3a'
+ '4ea70ea87b47e92d318d4e7f5b940f47'
+ '599dc4cc65a07ee868cf92a667a913d2'
+ '5aba06ede2daa9f2c11892fbd7bc3057'
+ '71474203939fafbe271e1263e61d083e'
+ '67b42915c8432abf0a922438f00860a2'
+ '7740a8ec23878a2f50120e1faa2730f2'
+ '7376930b0d3f3d77a685d94c4a3acda8'
+ '79600e696a98ff95c2eba976f7a8dfbb'
+ '798b2ffdc8bcfe7bca2cf92b62caf685'
+ 'ecb2e37e45c9933e2a963cabe03670ab'
+ '8294d6c42e3553229af9934c5c0ed997'
+ '8ea307d71d11140574bfb9fcc2487e33'
+ 'bd30e9cf5523cdfc019b94f5e1d7fd19'
+ 'a06a496d7a43cbdc35e69dbe678efadb'
+ 'a169ab152209200a7bad29a275cb0333'
+ 'a4d9b30810a434a3ed39fc0003bbd637'
+ 'a7983f859eafb2677d7ff386a023bc40'
+ 'ada24d37d8d638b3d8a9985e80bc2978'
+ 'af3c3acf618de6108d65fcdc92b492e1'
+ 'ba1015b59c112d44d7797b62fe7bee51'
+ 'bc702168a2af16869201dbe91e46ae48'
+ 'c441926f3a552ed3e5b274b62e86af16'
+ 'ca66e26082cab8bb817185a116db809b'
+ 'd0b5af6e408b8d2958f3d83b5244f5e8'
+ 'd1a3205871c3c52e8a50c9f18510ae12'
+ 'd35724900f6a4105550293686688bbb3'
+ 'd4c4d91ab3a8e52a2e69d48d34ef4df4'
+ 'd70951c80dabecc2892c919ff5d07172'
+ 'dbb3757275dc5cc80820c0b4dd24ed95'
+ 'dbd5f3b47ed13132f04c685d608a7547'
+ 'e0707ff896045731ff99e99799606441'
+ 'e81c2f0953aa60f8062c05a4673f2be0'
+ 'e61d0364a30146aaa3001296f853b2b9'
+ 'ea570af93c284aa9e5621cd563f54f4d'
+ 'ea91f2fb4212a21d708aced277e6e85a'
+ 'ee8b492592568805593f81f8cdf2a04c'
+ 'f3e2febd267c8e4b13df00dac211dd6d'
+ 'f7925ba8491fe570e5164d2c72791358'
+ 'fb7ba5c2182be4e73748859967455455'
+ 'fca8706f2c4619e2fa3f8f42f8fc1e9d'
+ 'fcc6df1160753d0b8c835d17fdeeb0a7'
+ 'fdb27bfe2dbe2e7b57ae194d9bf36bab'
+ '37282537d0ed1a087b1c8f050dc812d9'
+ '831126a1ee5af269923cfab6050769fe'
+ '067201ea8b126597670b5eff72e1f66c'
+ 'cf8a6967f7de535ae257fa411c98eb88'
+ '881af2b7dca9b8259abbca00bbbc004d'
+ '47e1edaa44269bc537ae8cabebb0f638'
+ 'debc62758716a169df9f62e6ab2bc634'
+ '5ba6a61a2f66dfd5fee8cdd4cd262a37'
+ '5ff846847dab351604ad859e2fd4ed3c'
+ '9e436bff44c60dc8b97cba0c7fc11a5c'
+ '185d60944ea767075d27247c3162b3bc'
+ 'fc46e64367c3b09a1668fb9ab40c031b'
+ '246e8f38b2a1af1bcff60ee0da59300b'
+ '1aa219782c41ff6cabef9ecaf147556f'
+ '1948e39a68f12bfa0b7eb309c14d940c'
+ '0f63ee487fda8f21fafa767b3c447ac9'
+ 'e3738abd0d3ce1870dc1fd1f22bba5b1'
+ 'a90f17aaccfb38be917732503740e6a2'
+ 'b632bdd25649cc4067bcb410bae23d2b'
+ '2b3fcb8d061dbfc26bf7efbcfa6d7ae2'
+ '90401bca927835b6fbae4a707ed187c8'
+ '451ccf439a36a568653b024534669971'
+ '23bd75552206dfcd8fd4e29137dcac84'
+ '41c9b65ad60af4b3255bbecdfef11736'
+ 'c1ce4ff1636394b3b4a2af23572159c9'
+ '7ef850978f435c32abc81862404936fc')
+
+build() {
+
+ unset J2REDIR; unset J2SDKDIR; unset JAVA_HOME; unset CLASSPATH
+ [ -z "${JAVA_HOME}" ] && . /etc/profile.d/openjdk6.sh
+ [ -z "${MOZ_PLUGIN_PATH}" ] && . /etc/profile.d/mozilla-common.sh
+ [ -z "${ANT_HOME}" ] && . /etc/profile.d/apache-ant.sh
+
+ cd ${srcdir}/${pkgbase}-build-${_LOver}
+
+ # our ArchLinux distribution patch until we go upstream
+ patch -Np0 -i ${srcdir}/ArchLinux.patch || return 1
+
+ # hotfixes not yet upstream
+ # cp ${srcdir}/*.diff ${srcdir}/${pkgbase}-build-${_LOver}/patches/hotfixes/
+ cp ${srcdir}/buildfix_64bit_system_libjpeg.diff ${srcdir}/${pkgbase}-build-${_LOver}/patches/hotfixes/
+
+ # export C(XX)FLAGS
+ # http://www.openoffice.org/issues/show_bug.cgi?id=103205
+ unset CFLAGS
+ unset CXXFLAGS
+
+ # python2 fix
+ export PYTHON=python2
+ # mono2.8 hack
+# sed -i -e "s/mkbundle2/mkbundle/g" patches/mono/*.diff || return 1
+
+ # fix dekstop menu entries
+ sed -i -e "s/Exec=oo/Exec=lo/g" desktop/*.desktop.in.in
+ sed -i -e "s/TryExec=oo/TryExec=lo/g" desktop/*.desktop.in.in
+
+ # http://wiki.documentfoundation.org/Development/How_to_build/Configure_options
+
+ if [ "$CARCH" = "x86_64" ]; then
+ EXTRAOPTS="--without-stlport"
+ else
+ EXTRAOPTS="--with-stlport" # --without-system-boost"
+ # # avoid problems with ixion for now
+ sed -i '/fields-table-formula.diff/d' patches/dev300/apply || return 1
+ fi
+
+ ./configure --with-distro=ArchLinux \
+ --with-build-version="${_LOver} ArchLinux build-${pkgrel}" \
+ --without-git \
+ --with-srcdir=${srcdir} \
+ --with-max-jobs=${MAKEFLAGS/-j/} \
+ --with-installed-ooo-dirname="${pkgbase}" \
+ --prefix=/usr --exec-prefix=/usr --sysconfdir=/etc \
+ --with-docdir=/usr/share/doc/packages/"${pkgbase}" \
+ --mandir=/usr/share/man \
+ --with-lang="" \
+ --with-binsuffix=no \
+ --enable-cairo\
+ --enable-crashdump\
+ --enable-evolution2\
+ --enable-graphite\
+ --disable-gio\
+ --disable-kde\
+ --disable-mono\
+ --enable-kde4\
+ --enable-ldap \
+ --enable-lockdown\
+ --enable-opengl \
+ --enable-odk\
+ --enable-opengl\
+ --enable-ogltrans \
+ --enable-minimizer \
+ --enable-pdfimport \
+ --enable-presenter-console \
+ --enable-presenter-extra-ui\
+ --enable-report-builder\
+ --enable-wiki-publisher \
+ --with-ct2n \
+ --with-hunart \
+ --with-nlpsolver \
+ --with-numbertext \
+ --with-oooblogger \
+ --with-typo \
+ --with-watch-window \
+ --with-diagram \
+ --without-fonts\
+ --without-afms\
+ --without-ppds\
+ --without-system-agg\
+ --without-system-libwps\
+ --without-system-mdds\
+ --without-myspell-dicts \
+ --with-system-dicts \
+ --with-external-dict-dir=/usr/share/hunspell \
+ --with-external-hyph-dir=/usr/share/hyphen \
+ --with-external-thes-dir=/usr/share/mythes \
+ --with-system-cppunit\
+ --with-system-libwpg\
+ --with-system-redland\
+ --without-system-saxon\
+ --with-openldap\
+ --with-ant-home="/usr/share/java/apache-ant"\
+ --with-system-boost\
+ --with-system-cairo\
+ --with-system-libs\
+ --with-system-mythes\
+ --with-system-unixodbc-headers\
+ --with-system-xrender-headers\
+ --with-system-headers\
+ --with-alloc=system\
+ --with-system-lucene\
+ --with-lucene-core-jar=/usr/share/java/lucene-core.jar\
+ --with-lucene-analyzers-jar=/usr/share/java/lucene-analyzers.jar\
+ $EXTRAOPTS || return 1
+
+# seems no more needed
+# --with-unix-wrapper="libreoffice" \
+
+# not yet supported
+# --enable-ext-presenter-minimizer \
+# --enable-ext-pdfimport \
+# --enable-ext-presenter-console \
+# --enable-ext-presenter-extra-ui\
+# --enable-ext-report-builder\
+# --enable-ext-wiki-publisher \
+# --enable-ext-ct2n \
+# --enable-ext-hunart \
+# --enable-ext-nlpsolver \
+# --enable-ext-numbertext \
+# --enable-ext-oooblogger \
+# --enable-ext-typo \
+# --enable-ext-watch-window \
+# --enable-ext-diagram \
+
+# see http://qa.openoffice.org/issues/show_bug.cgi?id=110136
+# --with-system-saxon\
+# --with-saxon-jar=/usr/share/java/saxon/saxon9he.jar\
+
+# --enable-report-builder \
+# --with-additional-sections="OOXMLExport"
+
+# --with-languagetool \
+# --with-lightproof \
+# --with-validator \
+# --with-barcode \
+
+ unset MAKEFLAGS
+ ./download
+ LD_PRELOAD="" make
+}
+
+package_libreoffice() {
+
+ pkgdesc="a productivity suite that is compatible with other major office suites"
+ install=${pkgbase}.install
+ depends=("curl>=7.20.0" "hunspell>=1.2.8" "python2>=2.7" 'libwpd>=0.9.0' 'libxaw' "neon>=0.28.6"
+ 'pango' 'nspr' 'libjpeg' 'libxrandr' 'libgl' 'dbus-glib' "icu>=4.6" 'libxslt'
+ 'redland' 'libgraphite' 'hyphen' 'lpsolve' 'gcc-libs' 'sh'
+ 'hicolor-icon-theme' 'desktop-file-utils' 'shared-mime-info' 'java-runtime' 'gtk2') # keep gtk2 for install script
+ #'saxon'
+ optdepends=( #'java-runtime: adds java support'
+ 'libcups: adds printing support'
+ 'gconf: adds additional gnome support'
+ 'nss: adds support for signed files/macros'
+ 'pstoedit: translates PostScript and PDF graphics into other vector formats'
+ 'poppler: for shipped pdfimport extension'
+ 'kdelibs: for kde integration'
+ 'libmythes: for use in thesaurus'
+ 'hsqldb-java: default database format for OpenOffice.org'
+ 'beanshell: interactive java -- good for prototyping /macros'
+ 'vigra: C++ computer vision library, usable in Basebmp'
+ 'libmspack: library for Microsoft compression formats for use in FontOOo'
+ 'libwpg: library for importing and converting Corel WordPerfect(tm) Graphics images'
+ 'libldap: to get profiles via ldap'
+ 'lucene: full-text search engine library for Java needed in the help section'
+ 'sane: for scanner access'
+ 'unixodbc: adds ODBC database support'
+ 'mesa: for the OGLTrans extension'
+ 'gstreamer0.10-base: + some gstr-plugins to support multimedia content, e.g. in impress')
+# 'mono: allows UNO automation with Mono'
+ backup=(etc/libreoffice/sofficerc
+ etc/libreoffice/bootstraprc
+ etc/libreoffice/psprint.conf)
+ provides=('go-openoffice') #'openoffice-base'
+ conflicts=('go-openoffice') #'openoffice-base'
+ replaces=('go-openoffice')
+
+ cd ${srcdir}/${pkgbase}-build-${_LOver}
+ #bin/ooinstall <path-to-install>
+ LD_PRELOAD="" make DESTDIR=${pkgdir} install
+
+ # move sysui desktop files into place we want to use - javafilter and qstarter, but not unneeded printeradmin
+ cp ${pkgdir}/usr/lib/libreoffice/share/xdg/javafilter.desktop ${pkgdir}/usr/share/applications/
+ sed -i -e "s/Exec=oo/Exec=so/g" ${pkgdir}/usr/share/applications/javafilter.desktop # https://bugs.archlinux.org/task/23361
+ cp ${pkgdir}/usr/lib/libreoffice/share/xdg/qstart.desktop ${pkgdir}/usr/share/applications/
+ # remove version in menu entry and make it visible
+ sed -i -e "s/3.3 Quickstarter/Quickstarter/g" ${pkgdir}/usr/share/applications/qstart.desktop
+ sed -i -e "/NoDisplay=true/d" ${pkgdir}/usr/share/applications/qstart.desktop
+ # remove unneeded .desktop files from vanilla sysui
+ rm -rf ${pkgdir}/usr/lib/libreoffice/share/xdg
+
+ # put configuration files into place
+ install -dm755 ${pkgdir}/etc/libreoffice
+ install -m644 ${pkgdir}/usr/lib/libreoffice/program/{bootstraprc,sofficerc} ${pkgdir}/etc/libreoffice/
+ install -m644 ${pkgdir}/usr/lib/libreoffice/basis3.3/share/psprint/psprint.conf ${pkgdir}/etc/libreoffice/
+ # install dummy links to make them found by LibO
+ cd ${pkgdir}/usr/lib/libreoffice/program/
+ ln -vsf /etc/libreoffice/{bootstraprc,sofficerc} .
+ cd ${pkgdir}/usr/lib/libreoffice/basis3.3/share/psprint/
+ ln -vsf /etc/libreoffice/psprint.conf .
+
+ #fix http://bugs.archlinux.org/task/17656
+ find ${pkgdir} -perm 444 -exec ls -lh {} \;
+ find ${pkgdir} -perm 444 -exec chmod 644 {} \;
+ find ${pkgdir} -perm 555 -exec ls -lh {} \;
+ find ${pkgdir} -perm 555 -exec chmod 755 {} \;
+
+ # split out extensions
+ mv ${pkgdir}/usr/lib/libreoffice/share/extensions ${srcdir}/extensions-install
+ install -dm755 ${pkgdir}/usr/lib/libreoffice/share/extensions
+ install -m644 ${srcdir}/extensions-install/package.txt ${pkgdir}/usr/lib/libreoffice/share/extensions/
+
+ # move SDK to separated package
+ mkdir -p ${srcdir}/sdk-install/usr/lib/libreoffice/basis3.3/sdk
+ mv ${pkgdir}/usr/lib/libreoffice/basis3.3/sdk ${srcdir}/sdk-install/usr/lib/libreoffice/basis3.3/
+
+ mkdir -p ${srcdir}/sdk-install/usr/share/doc/packages/libreoffice/sdk
+ mv ${pkgdir}/usr/share/doc/packages/libreoffice/sdk ${srcdir}/sdk-install/usr/share/doc/packages/libreoffice/
+
+ mkdir -p ${srcdir}/sdk-install/usr/share/libreoffice/sdk
+ mv ${pkgdir}/usr/share/libreoffice/sdk ${srcdir}/sdk-install/usr/share/libreoffice/
+
+ mkdir -p ${srcdir}/sdk-install/usr/share/idl/libreoffice
+ mv ${pkgdir}/usr/share/idl/libreoffice ${srcdir}/sdk-install/usr/share/idl/
+
+ mkdir -p ${srcdir}/sdk-install/usr/include/libreoffice
+ mv ${pkgdir}/usr/include/libreoffice ${srcdir}/sdk-install/usr/include/
+}
+
+package_libreoffice-sdk() {
+
+ pkgdesc="Software development kit for LibreOffice"
+ depends=('libreoffice')
+
+ cd ${srcdir}/sdk-install
+ cp -r * ${pkgdir}
+
+ cd ${pkgdir}/usr/lib/libreoffice/basis3.3/sdk
+ for file in setsdkenv_unix.csh setsdkenv_unix.sh ; do
+ chmod 755 $file
+ done
+ #fix permissions
+ find examples -type f -exec chmod -x {} \;
+}
+
+package_libreoffice-extension-nlpsolver() {
+
+ pkgdesc="This extension integrates into Calc and offers new Solver engines to use for optimizing nonlinear programming models"
+ #arch=('any')
+ depends=('libreoffice')
+ groups=('libreoffice-extensions')
+
+ install -dm755 ${pkgdir}/usr/lib/libreoffice/share/extensions
+# unzip ${srcdir}/${pkgbase}-build-${_LOver}/build/libreoffice-${_LOver}/solver/${_OFFICEUPD}/unxlng*/bin/NLPSolver.oxt -d ${pkgdir}/usr/lib/ooo-3.3/share/extensions/${pkgname}
+ unzip ${srcdir}/${pkgbase}-build-${_LOver}/build/libreoffice-${_LOver}/solver/${_OFFICEUPD}/unxlng*/bin/NLPSolver.oxt -d ${pkgdir}/usr/lib/libreoffice/share/extensions/nlpsolver
+}
+
+package_libreoffice-extension-pdfimport() {
+
+ pkgdesc="This extension allows you to import and modify PDF documents"
+ depends=('libreoffice')
+ groups=('libreoffice-extensions')
+
+ install -dm755 ${pkgdir}/usr/lib/libreoffice/share/extensions
+# unzip ${srcdir}/${pkgbase}-build-${_LOver}/build/libreoffice-${_LOver}/solver/${_OFFICEUPD}/unxlng*/bin/pdfimport/pdfimport.oxt -d ${pkgdir}/usr/lib/ooo-3.3/share/extensions/${pkgname}
+ unzip ${srcdir}/${pkgbase}-build-${_LOver}/build/libreoffice-${_LOver}/solver/${_OFFICEUPD}/unxlng*/bin/pdfimport/pdfimport.oxt -d ${pkgdir}/usr/lib/libreoffice/share/extensions/pdfimport
+}
+
+package_libreoffice-extension-presentation-minimizer() {
+
+ pkgdesc="This extension reduce the file size of the current presentation"
+ depends=('libreoffice')
+ groups=('libreoffice-extensions')
+
+ install -dm755 ${pkgdir}/usr/lib/libreoffice/share/extensions
+# unzip ${srcdir}/${pkgbase}-build-${_LOver}/build/libreoffice-${_LOver}/solver/${_OFFICEUPD}/unxlng*/bin/presentation-minimizer.oxt -d ${pkgdir}/usr/lib/ooo-3.3/share/extensions/${pkgname}
+ unzip ${srcdir}/${pkgbase}-build-${_LOver}/build/libreoffice-${_LOver}/solver/${_OFFICEUPD}/unxlng*/bin/presentation-minimizer.oxt -d ${pkgdir}/usr/lib/libreoffice/share/extensions/presentation-minimizer
+}
+
+package_libreoffice-extension-presenter-screen() {
+
+ pkgdesc="This extension provides more control over your slide show presentation, such as the ability to see the upcoming slide, the slide notes, and a presentation timer whereas the audience see only the current slide"
+ depends=('libreoffice')
+ groups=('libreoffice-extensions')
+
+ install -dm755 ${pkgdir}/usr/lib/libreoffice/share/extensions
+# unzip ${srcdir}/${pkgbase}-build-${_LOver}/build/libreoffice-${_LOver}/solver/${_OFFICEUPD}/unxlng*/bin/presenter/presenter-screen.oxt -d ${pkgdir}/usr/lib/ooo-3.3/share/extensions/${pkgname}
+ unzip ${srcdir}/${pkgbase}-build-${_LOver}/build/libreoffice-${_LOver}/solver/${_OFFICEUPD}/unxlng*/bin/presenter/presenter-screen.oxt -d ${pkgdir}/usr/lib/libreoffice/share/extensions/presenter-screen
+}
+
+package_libreoffice-extension-report-builder() {
+
+ pkgdesc="This extension creates smart-looking database reports"
+ #arch=('any')
+ depends=('libreoffice')
+ groups=('libreoffice-extensions')
+
+ install -dm755 ${pkgdir}/usr/lib/libreoffice/share/extensions
+# unzip ${srcdir}/${pkgbase}-build-${_LOver}/build/libreoffice-${_LOver}/solver/${_OFFICEUPD}/unxlng*/bin/report-builder.oxt -d ${pkgdir}/usr/lib/ooo-3.3/share/extensions/${pkgname}
+ unzip ${srcdir}/${pkgbase}-build-${_LOver}/build/libreoffice-${_LOver}/solver/${_OFFICEUPD}/unxlng*/bin/report-builder.oxt -d ${pkgdir}/usr/lib/libreoffice/share/extensions/report-builder
+}
+
+package_libreoffice-extension-wiki-publisher() {
+
+ pkgdesc="This extension enables you to create Wiki articles on MediaWiki servers without having to know the syntax of the MediaWiki markup language"
+ #arch=('any')
+ depends=('libreoffice')
+ groups=('libreoffice-extensions')
+
+ install -dm755 ${pkgdir}/usr/lib/libreoffice/share/extensions
+# unzip ${srcdir}/${pkgbase}-build-${_LOver}/build/libreoffice-${_LOver}/solver/${_OFFICEUPD}/unxlng*/bin/wiki-publisher.oxt -d ${pkgdir}/usr/lib/ooo-3.3/share/extensions/${pkgname}
+ unzip ${srcdir}/${pkgbase}-build-${_LOver}/build/libreoffice-${_LOver}/solver/${_OFFICEUPD}/unxlng*/bin/wiki-publisher.oxt -d ${pkgdir}/usr/lib/libreoffice/share/extensions/wiki-publisher
+}
+
+package_libreoffice-extension-ct2n() {
+
+ pkgdesc="This extension enables you to convert text-cells in Calc with numbers and dates, to real numbers and dates."
+ #arch=('any')
+ depends=('libreoffice')
+ groups=('libreoffice-extensions')
+
+ install -dm755 ${pkgdir}/usr/lib/libreoffice/share/extensions
+# unzip ${srcdir}/${pkgbase}-build-${_LOver}/build/libreoffice-${_LOver}/solver/${_OFFICEUPD}/unxlng*/bin/ConvertTextToNumber-1.3.2.oxt -d ${pkgdir}/usr/lib/ooo-3.3/share/extensions/${pkgname}
+ unzip ${srcdir}/${pkgbase}-build-${_LOver}/build/libreoffice-${_LOver}/solver/${_OFFICEUPD}/unxlng*/bin/ConvertTextToNumber.oxt -d ${pkgdir}/usr/lib/libreoffice/share/extensions/ct2n
+}
+
+package_libreoffice-extension-hunart() {
+
+ pkgdesc="Hungarian cross-reference toolbar extension"
+ #arch=('any')
+ depends=('libreoffice')
+ groups=('libreoffice-extensions')
+
+ install -dm755 ${pkgdir}/usr/lib/libreoffice/share/extensions
+# unzip ${srcdir}/${pkgbase}-build-${_LOver}/build/libreoffice-${_LOver}/solver/${_OFFICEUPD}/unxlng*/bin/hunart.oxt -d ${pkgdir}/usr/lib/ooo-3.3/share/extensions/${pkgname}
+ unzip ${srcdir}/${pkgbase}-build-${_LOver}/build/libreoffice-${_LOver}/solver/${_OFFICEUPD}/unxlng*/bin/hunart.oxt -d ${pkgdir}/usr/lib/libreoffice/share/extensions/hunart
+}
+
+package_libreoffice-extension-numbertext() {
+
+ pkgdesc="NUMBERTEXT/MONEYTEXT extensions"
+ #arch=('any')
+ depends=('libreoffice')
+ groups=('libreoffice-extensions')
+
+ install -dm755 ${pkgdir}/usr/lib/libreoffice/share/extensions
+# unzip ${srcdir}/${pkgbase}-build-${_LOver}/build/libreoffice-${_LOver}/solver/${_OFFICEUPD}/unxlng*/bin/numbertext.oxt -d ${pkgdir}/usr/lib/ooo-3.3/share/extensions/${pkgname}
+ unzip ${srcdir}/${pkgbase}-build-${_LOver}/build/libreoffice-${_LOver}/solver/${_OFFICEUPD}/unxlng*/bin/numbertext.oxt -d ${pkgdir}/usr/lib/libreoffice/share/extensions/numbertext
+}
+
+package_libreoffice-extension-oooblogger() {
+
+ pkgdesc="An extensions for blogging"
+ #arch=('any')
+ depends=('libreoffice')
+ groups=('libreoffice-extensions')
+
+ install -dm755 ${pkgdir}/usr/lib/libreoffice/share/extensions
+# unzip ${srcdir}/${pkgbase}-build-${_LOver}/build/libreoffice-${_LOver}/solver/${_OFFICEUPD}/unxlng*/bin/oooblogger-0.1.oxt -d ${pkgdir}/usr/lib/ooo-3.3/share/extensions/${pkgname}
+ unzip ${srcdir}/${pkgbase}-build-${_LOver}/build/libreoffice-${_LOver}/solver/${_OFFICEUPD}/unxlng*/bin/oooblogger.oxt -d ${pkgdir}/usr/lib/libreoffice/share/extensions/oooblogger
+}
+
+package_libreoffice-extension-typo() {
+
+ pkgdesc="Typography toolbar extension"
+ #arch=('any')
+ depends=('libreoffice')
+ groups=('libreoffice-extensions')
+
+ install -dm755 ${pkgdir}/usr/lib/libreoffice/share/extensions
+# unzip ${srcdir}/${pkgbase}-build-${_LOver}/build/libreoffice-${_LOver}/solver/${_OFFICEUPD}/unxlng*/bin/typo.oxt -d ${pkgdir}/usr/lib/ooo-3.3/share/extensions/${pkgname}
+ unzip ${srcdir}/${pkgbase}-build-${_LOver}/build/libreoffice-${_LOver}/solver/${_OFFICEUPD}/unxlng*/bin/typo.oxt -d ${pkgdir}/usr/lib/libreoffice/share/extensions/typo
+}
+
+package_libreoffice-extension-watch-window() {
+
+ pkgdesc="A OOo Calc extension to add a Watch Window, which keeps the value of the monitored cell on the screen."
+ #arch=('any')
+ depends=('libreoffice')
+ groups=('libreoffice-extensions')
+
+ install -dm755 ${pkgdir}/usr/lib/libreoffice/share/extensions
+# unzip ${srcdir}/${pkgbase}-build-${_LOver}/build/libreoffice-${_LOver}/solver/${_OFFICEUPD}/unxlng*/bin/WatchWindow.oxt -d ${pkgdir}/usr/lib/ooo-3.3/share/extensions/${pkgname}
+ unzip ${srcdir}/${pkgbase}-build-${_LOver}/build/libreoffice-${_LOver}/solver/${_OFFICEUPD}/unxlng*/bin/WatchWindow.oxt -d ${pkgdir}/usr/lib/libreoffice/share/extensions/watch-window
+}
+
+package_libreoffice-extension-diagram() {
+
+ pkgdesc="An OOo Draw and Impress extension that creates your favorite diagrams with a few clicks"
+ #arch=('any')
+ depends=('libreoffice')
+ groups=('libreoffice-extensions')
+
+ install -dm755 ${pkgdir}/usr/lib/libreoffice/share/extensions
+# unzip ${srcdir}/${pkgbase}-build-${_LOver}/build/libreoffice-${_LOver}/solver/${_OFFICEUPD}/unxlng*/bin/Diagram.oxt -d ${pkgdir}/usr/lib/ooo-3.3/share/extensions/${pkgname}
+ unzip ${srcdir}/${pkgbase}-build-${_LOver}/build/libreoffice-${_LOver}/solver/${_OFFICEUPD}/unxlng*/bin/Diagram.oxt -d ${pkgdir}/usr/lib/libreoffice/share/extensions/diagram
+}
diff --git a/extra/libreoffice/buildfix_64bit_system_libjpeg.diff b/extra/libreoffice/buildfix_64bit_system_libjpeg.diff
new file mode 100644
index 000000000..1f4eb110f
--- /dev/null
+++ b/extra/libreoffice/buildfix_64bit_system_libjpeg.diff
@@ -0,0 +1,11 @@
+--- solenv/inc/libs.mk 2009-07-02 09:44:33.084467312 +0000
++++ solenv/inc/libs.mk.new 2009-07-02 10:44:03.420819776 +0000
+@@ -211,7 +211,7 @@
+ .IF "$(OS)" == "FREEBSD"
+ JPEG3RDLIB=/usr/local/lib/libjpeg.so
+ .ELIF "$(CPUNAME)" == "X86_64" || "$(CPUNAME)" == "S390X" || "$(CPUNAME)" == "POWERPC64"
+-JPEG3RDLIB=/usr/lib64/libjpeg.so
++JPEG3RDLIB=/usr/lib/libjpeg.so
+ .ELSE
+ JPEG3RDLIB=/usr/lib/libjpeg.so
+ .ENDIF
diff --git a/extra/libreoffice/libreoffice.install b/extra/libreoffice/libreoffice.install
new file mode 100644
index 000000000..27f3173ae
--- /dev/null
+++ b/extra/libreoffice/libreoffice.install
@@ -0,0 +1,25 @@
+post_install() {
+
+gtk-update-icon-cache -f -q /usr/share/icons/hicolor
+update-desktop-database -q
+update-mime-database usr/share/mime > /dev/null 2>&1
+
+echo " * see http://wiki.archlinux.org/index.php/Openoffice"
+echo " * you may want to pacman -Ss libreoffice-extensions"
+echo " to see what extensions are prepared to install"
+echo " * it's recommended to install {hunspell,mythes,hyphen}-xx pkg for spell checking"
+echo " * make sure you have installed some ttf font (ttf-dejavu recommended)"
+}
+
+post_upgrade() {
+# post_install $1
+gtk-update-icon-cache -f -q /usr/share/icons/hicolor
+update-desktop-database -q
+update-mime-database usr/share/mime > /dev/null 2>&1
+}
+
+post_remove() {
+update-desktop-database -q
+gtk-update-icon-cache -f -q /usr/share/icons/hicolor
+update-mime-database usr/share/mime > /dev/null 2>&1
+}
diff --git a/extra/librsvg/PKGBUILD b/extra/librsvg/PKGBUILD
new file mode 100644
index 000000000..4b402cd26
--- /dev/null
+++ b/extra/librsvg/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id: PKGBUILD 111164 2011-02-24 15:09:19Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=librsvg
+pkgver=2.32.1
+pkgrel=2
+pkgdesc="SAX-based renderer for SVG files into a GdkPixbuf"
+arch=(i686 x86_64)
+license=('LGPL')
+depends=('gdk-pixbuf2' 'pango' 'libcroco')
+makedepends=('intltool')
+optdepends=('python2: rsvg commandline utility')
+options=('!libtool' '!emptydirs')
+url="http://librsvg.sourceforge.net/"
+install=librsvg.install
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.32/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('91b98051f352fab8a6257688d6b2fd665b4648ed66144861f2f853ccf876d334')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ sed -i 's|#!/usr/bin/env python|#!/usr/bin/env python2|' rsvg.in
+ ./configure --prefix=/usr --libexecdir=/usr/lib/${pkgname} \
+ --with-croco --disable-static \
+ --with-svgz --disable-gtk-theme
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/librsvg/librsvg.install b/extra/librsvg/librsvg.install
new file mode 100644
index 000000000..4d48b071f
--- /dev/null
+++ b/extra/librsvg/librsvg.install
@@ -0,0 +1,11 @@
+post_install() {
+ usr/bin/gdk-pixbuf-query-loaders --update-cache
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/extra/libsamplerate/PKGBUILD b/extra/libsamplerate/PKGBUILD
new file mode 100644
index 000000000..d51e50d38
--- /dev/null
+++ b/extra/libsamplerate/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 100370 2010-11-23 01:14:32Z eric $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+
+pkgname=libsamplerate
+pkgver=0.1.7
+pkgrel=1
+pkgdesc="Secret Rabbit Code - aka Sample Rate Converter for audio"
+arch=('i686' 'x86_64')
+url="http://www.mega-nerd.com/SRC/index.html"
+license=('GPL')
+depends=('libsndfile')
+options=('!libtool')
+source=(http://www.mega-nerd.com/SRC/libsamplerate-${pkgver}.tar.gz)
+md5sums=('6731a81cb0c622c483b28c0d7f90867d')
+sha1sums=('f3f803ec5feae5a3fdb0fa3937277669e854386e')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/libsexy/PKGBUILD b/extra/libsexy/PKGBUILD
new file mode 100644
index 000000000..d40911e2c
--- /dev/null
+++ b/extra/libsexy/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: PKGBUILD 57006 2009-10-31 07:29:59Z allan $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+pkgname=libsexy
+pkgver=0.1.11
+pkgrel=2
+pkgdesc="Doing naughty things to good widgets."
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://chipx86.com/wiki/Libsexy"
+depends=('gtk2' 'libxml2')
+makedepends=('iso-codes' 'pkgconfig')
+options=('!libtool')
+source=(http://releases.chipx86.com/libsexy/libsexy/${pkgname}-${pkgver}.tar.gz)
+md5sums=('33c079a253270ec8bfb9508e4bb30754')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr --disable-static
+ make || return 1
+ make DESTDIR=${pkgdir} install
+
+ rm -f ${pkgdir}/usr/lib/libsexy.a
+}
diff --git a/extra/libshout/PKGBUILD b/extra/libshout/PKGBUILD
new file mode 100644
index 000000000..c74560069
--- /dev/null
+++ b/extra/libshout/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: PKGBUILD 37197 2009-05-01 03:19:30Z eric $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: arjan <arjan@archlinux.org>
+# Contributor: Jason Chu <jchu@xentac.net>
+
+pkgname=libshout
+pkgver=2.2.2
+pkgrel=3
+pkgdesc="Library for accessing a shoutcast/icecast server"
+arch=('i686' 'x86_64')
+depends=('libvorbis' 'libtheora' 'speex')
+url="http://www.icecast.org/"
+options=('!libtool' 'force')
+license=('LGPL')
+source=(http://downloads.xiph.org/releases/${pkgname}/${pkgname}-${pkgver}.tar.gz)
+md5sums=('4f75fc9901c724b712c371c9a1e782d3')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var || return 1
+ make LDFLAGS+=-lspeex || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/libsidplay/PKGBUILD b/extra/libsidplay/PKGBUILD
new file mode 100644
index 000000000..4d1dfa791
--- /dev/null
+++ b/extra/libsidplay/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: PKGBUILD 78082 2010-04-19 09:22:09Z dgriffiths $
+# Maintainer: damir <damir@archlinux.org>
+# Contributor: Kritoke <kritoke@gamebox.net>
+
+pkgname=libsidplay
+pkgver=1.36.59
+pkgrel=4
+pkgdesc="A library for playing SID music files."
+arch=('i686' 'x86_64')
+url="http://critical.ch/distfiles/"
+license=('GPL')
+depends=('gcc-libs')
+options=('!libtool')
+source=(http://critical.ch/distfiles/${pkgname}-${pkgver}.tgz libsidplay-1.36.59-gcc43.patch)
+md5sums=('37c51ba4bd57164b1b0bb7b43b9adece' 'c24d7bca2639f4fee03c40c7dcaadfee')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ patch -p1 < ../libsidplay-1.36.59-gcc43.patch || return 1
+ ./configure --prefix=/usr || return 1
+ make || return 1
+ make DESTDIR=${pkgdir} install || return 1
+}
diff --git a/extra/libsidplay/libsidplay-1.36.59-gcc43.patch b/extra/libsidplay/libsidplay-1.36.59-gcc43.patch
new file mode 100644
index 000000000..5beef46c6
--- /dev/null
+++ b/extra/libsidplay/libsidplay-1.36.59-gcc43.patch
@@ -0,0 +1,40 @@
+diff --git a/src/sidtune.cpp b/src/sidtune.cpp
+index 4d1d33b..6fbae80 100644
+--- a/src/sidtune.cpp
++++ b/src/sidtune.cpp
+@@ -306,11 +306,7 @@ udword sidTune::loadFile(const char* fileName, ubyte** bufferRef)
+ return 0;
+ }
+ // Open binary input file stream at end of file.
+-#if defined(SID_HAVE_IOS_BIN)
+- ifstream myIn( fileName, ios::in|ios::bin|ios::ate );
+-#else
+ ifstream myIn( fileName, ios::in|ios::binary|ios::ate );
+-#endif
+ // As a replacement for !is_open(), bad() and the NOT-operator
+ // don't seem to work on all systems.
+ #if defined(SID_DONT_HAVE_IS_OPEN)
+@@ -972,11 +968,7 @@ bool sidTune::saveC64dataFile( const char* fileName, bool overWriteFlag )
+ }
+ // Open binary output file stream.
+ else
+-#if defined(SID_HAVE_IOS_BIN)
+- fMyOut.open( fileName, ios::out|ios::bin|ios::trunc );
+-#else
+ fMyOut.open( fileName, ios::out|ios::binary|ios::trunc );
+-#endif
+ if ( !fMyOut )
+ {
+ info.statusString = text_cantCreateFile;
+@@ -1061,11 +1053,7 @@ bool sidTune::savePSIDfile( const char* fileName, bool overWriteFlag )
+ }
+ // Open binary output file stream.
+ else
+-#if defined(SID_HAVE_IOS_BIN)
+- fMyOut.open( fileName, ios::out|ios::bin|ios::trunc );
+-#else
+ fMyOut.open( fileName, ios::out|ios::binary|ios::trunc );
+-#endif
+ if ( !fMyOut )
+ {
+ info.statusString = text_cantCreateFile;
diff --git a/extra/libsigc++/PKGBUILD b/extra/libsigc++/PKGBUILD
new file mode 100644
index 000000000..4700619bd
--- /dev/null
+++ b/extra/libsigc++/PKGBUILD
@@ -0,0 +1,40 @@
+# $Id: PKGBUILD 113455 2011-03-08 17:41:58Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgbase=libsigc++
+pkgname=('libsigc++' 'libsigc++-docs')
+pkgver=2.2.9
+pkgrel=1
+arch=(i686 x86_64)
+license=('LGPL')
+url="http://libsigc.sourceforge.net/"
+source=(http://ftp.gnome.org/pub/GNOME/sources/${pkgbase}/2.2/${pkgbase}-${pkgver}.tar.bz2)
+options=(!libtool !emptydirs)
+sha256sums=('2f4c083e01d9be377669206bd97090d2e95bc05f2e8d95447c9f9ce92bdfbb63')
+
+build() {
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ ./configure --prefix=/usr || return 1
+ make || return 1
+}
+
+package_libsigc++() {
+ pkgdesc="Libsigc++ implements a full callback system for use in widget libraries - V2"
+ depends=('gcc-libs')
+ provides=("libsigc++2.0=${pkgver}")
+ replaces=('libsigc++2.0')
+ conflicts=('libsigc++2.0')
+ cd "${srcdir}/libsigc++-${pkgver}"
+ sed -i -e 's/^doc_subdirs/#doc_subdirs/' Makefile || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
+
+package_libsigc++-docs() {
+ pkgdesc="Developer documentation for libsigc++"
+ provides=("libsigc++2.0-docs=${pkgver}")
+ replaces=('libsigc++2.0-docs')
+ conflicts=('libsigc++2.0-docs')
+ cd "${srcdir}/libsigc++-${pkgver}/docs"
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/libsigsegv/PKGBUILD b/extra/libsigsegv/PKGBUILD
new file mode 100644
index 000000000..753cfd194
--- /dev/null
+++ b/extra/libsigsegv/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id: PKGBUILD 31137 2009-03-24 15:49:35Z ronald $
+# Maintainer: Ronald van Haren <ronald.archlinux.org>
+# Contributor: Johannes Weiner <hannes@saeurebad.de>
+
+pkgname=libsigsegv
+pkgver=2.6
+pkgrel=1
+arch=('x86_64' 'i686')
+pkgdesc="Page fault detection library"
+url="http://libsigsegv.sourceforge.net/"
+license=('GPL2')
+depends=('glibc')
+options=('!libtool')
+source=(http://ftp.gnu.org/gnu/${pkgname}/${pkgname}-${pkgver}.tar.gz)
+md5sums=('7e24993730649d13c6eabc28bd24de35')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr --enable-shared
+ make || return 1
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/libsm/PKGBUILD b/extra/libsm/PKGBUILD
new file mode 100644
index 000000000..0abf5d86c
--- /dev/null
+++ b/extra/libsm/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 97792 2010-11-01 22:14:37Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libsm
+pkgver=1.2.0
+pkgrel=1
+pkgdesc="X11 Session Management library"
+arch=(i686 x86_64)
+license=('custom')
+url="http://xorg.freedesktop.org/"
+depends=('libice' 'util-linux-ng')
+makedepends=('xorg-util-macros' 'xtrans')
+options=('!libtool')
+source=(${url}/releases/individual/lib/libSM-${pkgver}.tar.bz2)
+sha1sums=('f78bc72f0b3ec26cbf980f84f014422ba854544d')
+
+build() {
+ cd "${srcdir}/libSM-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc
+ make
+ make DESTDIR="${pkgdir}" install
+
+ install -d -m755 "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/libsmbios/PKGBUILD b/extra/libsmbios/PKGBUILD
new file mode 100644
index 000000000..9945172d7
--- /dev/null
+++ b/extra/libsmbios/PKGBUILD
@@ -0,0 +1,47 @@
+# $Id: PKGBUILD 105518 2011-01-10 10:17:49Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Alessio 'mOLOk' Bolognino <themolok@gmail.com>
+# Contributor: daniel g. siegel <dgsiegel@gmail.com>
+
+pkgname=libsmbios
+pkgver=2.2.26
+pkgrel=2
+pkgdesc="A library for providing access to as much BIOS information as possible"
+arch=(i686 x86_64)
+url="http://linux.dell.com/libsmbios/main/index.html"
+license=('GPL' 'custom')
+depends=('gcc-libs')
+makedepends=('libxml2' 'python2' 'chrpath')
+optdepends=('python2: tools')
+source=(http://linux.dell.com/libsmbios/download/${pkgname}/${pkgname}-${pkgver}/${pkgname}-${pkgver}.tar.bz2)
+options=('!libtool')
+md5sums=('8ae63da74912deffa5b6b2602879c7a9')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ mkdir build
+ cd build
+ PYTHON=python2 ../configure --prefix=/usr --sysconfdir=/etc --disable-static
+ mkdir -p out/libsmbios_c
+ mkdir -p out/libsmbios_c++
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}/build"
+ make DESTDIR="${pkgdir}" install
+
+ chrpath -d "${pkgdir}/usr/sbin/smbios-sys-info-lite"
+
+ cp -a ../src/include/* "${pkgdir}/usr/include/"
+ cp -a out/public-include/* "${pkgdir}/usr/include/"
+
+ rm -rf "${pkgdir}/etc/yum"
+ rm -rf "${pkgdir}/usr/lib/yum-plugins"
+
+ sed -e 's|#!/usr/bin/python|#!/usr/bin/python2|g' \
+ -i "${pkgdir}"/usr/sbin/smbios-{{wakeup,token,wireless}-ctl,lcd-brightness,rbu-bios-update,passwd,sys-info}
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 ../COPYING-OSL "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/libsndfile/PKGBUILD b/extra/libsndfile/PKGBUILD
new file mode 100644
index 000000000..7fb0293e6
--- /dev/null
+++ b/extra/libsndfile/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 116432 2011-03-23 19:57:46Z eric $
+# Maintainer: Eric Bélanger <eric@archlinux.org>
+
+pkgname=libsndfile
+pkgver=1.0.24
+pkgrel=1
+pkgdesc="A C library for reading and writing files containing sampled sound"
+arch=('i686' 'x86_64')
+url="http://www.mega-nerd.com/libsndfile"
+license=('LGPL')
+depends=('alsa-lib' 'flac' 'libvorbis')
+options=('!libtool')
+source=(http://www.mega-nerd.com/libsndfile/files/${pkgname}-${pkgver}.tar.gz)
+md5sums=('8f823c30c1d8d44830db6ab845d6679e')
+sha1sums=('ade2dad272b52f61bb58aca3a4004b28549ee0f8')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --disable-sqlite
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/libsoup/PKGBUILD b/extra/libsoup/PKGBUILD
new file mode 100644
index 000000000..0681b2117
--- /dev/null
+++ b/extra/libsoup/PKGBUILD
@@ -0,0 +1,46 @@
+# $Id: PKGBUILD 101648 2010-11-29 23:33:18Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgbase=libsoup
+pkgname=('libsoup' 'libsoup-gnome')
+pkgver=2.32.2
+pkgrel=1
+arch=('i686' 'x86_64')
+license=('LGPL')
+makedepends=('glib2>=2.26.1' 'gnutls>=2.8.6' 'libxml2>=2.7.8' 'libproxy>=0.4.6' 'sqlite3>=3.7.2' 'gconf>=2.32.0' 'libgnome-keyring>=2.32.0' 'intltool' 'gobject-introspection>=0.9.12')
+url="http://www.gnome.org"
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgbase}/2.32/${pkgbase}-${pkgver}.tar.bz2)
+options=('!libtool' '!emptydirs')
+sha256sums=('96e6973c8b7459523c0f44e7aec69528ff2fbd388e8ddc415f91bcc42f50777f')
+
+build() {
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-static
+ make
+}
+
+package_libsoup() {
+ pkgdesc="GNOME HTTP Library - base library"
+ depends=('glib2>=2.26.1' 'libxml2>=2.7.8' 'gnutls>=2.8.6')
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+ rm -f "${pkgdir}"/usr/lib/libsoup-gnome-2.4.*
+ rm -f "${pkgdir}/usr/lib/pkgconfig/libsoup-gnome-2.4.pc"
+ rm -rf "${pkgdir}/usr/include/libsoup-gnome-2.4"
+ rm -f "${pkgdir}/usr/lib/girepository-1.0/SoupGNOME-2.4.typelib"
+}
+
+package_libsoup-gnome() {
+ pkgdesc="GNOME HTTP Library - GNOME libraries"
+ depends=("libsoup=${pkgver}" 'libproxy>=0.4.6' 'libgnome-keyring>=2.32.0' 'gconf>=2.32.0')
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+ rm -f "${pkgdir}"/usr/lib/libsoup-2.4.*
+ rm -f "${pkgdir}/usr/lib/pkgconfig/libsoup-2.4.pc"
+ rm -rf "${pkgdir}/usr/include/libsoup-2.4"
+ rm -rf "${pkgdir}/usr/share"
+ rm -f "${pkgdir}/usr/lib/girepository-1.0/Soup-2.4.typelib"
+}
diff --git a/extra/libspectre/PKGBUILD b/extra/libspectre/PKGBUILD
new file mode 100644
index 000000000..bbef6cfbc
--- /dev/null
+++ b/extra/libspectre/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 94716 2010-10-10 10:09:55Z andyrtr $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libspectre
+pkgver=0.2.6
+pkgrel=2
+pkgdesc="Small library for rendering Postscript documents"
+arch=(i686 x86_64)
+license=('GPL2')
+url="http://libspectre.freedesktop.org/wiki/"
+depends=('ghostscript>=9.00')
+options=('!libtool')
+source=(http://libspectre.freedesktop.org/releases/${pkgname}-${pkgver}.tar.gz)
+sha1sums=('819475c7e34a1e9bc2e876110fee530b42aecabd')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --disable-static
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/libssh/PKGBUILD b/extra/libssh/PKGBUILD
new file mode 100644
index 000000000..e6acc5d23
--- /dev/null
+++ b/extra/libssh/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id: PKGBUILD 107427 2011-01-24 20:24:15Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: ice-man <icemanf@gmail.com>
+# Contributor: sergeantspoon <sergeantspoon@archlinux.us>
+
+pkgname=libssh
+pkgver=0.4.8
+pkgrel=1
+pkgdesc="Library for accessing ssh client services through C libraries"
+url="http://www.libssh.org/"
+license=('LGPL')
+arch=('i686' 'x86_64')
+depends=('openssl')
+makedepends=('cmake' 'doxygen')
+source=("http://www.libssh.org/files/0.4/${pkgname}-${pkgver}.tar.gz")
+md5sums=('d97b3feea1abe047ca8cf86d06e4b789')
+
+build() {
+ cd ${srcdir}
+ mkdir build
+ cd build
+ cmake ../${pkgname}-${pkgver} \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_BUILD_TYPE=Release
+ make
+}
+
+package(){
+ cd ${srcdir}/build
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/libstdc++5/PKGBUILD b/extra/libstdc++5/PKGBUILD
new file mode 100644
index 000000000..ad9e5c374
--- /dev/null
+++ b/extra/libstdc++5/PKGBUILD
@@ -0,0 +1,41 @@
+# $Id: PKGBUILD 35574 2009-04-14 04:10:12Z eric $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libstdc++5
+pkgver=3.3.6
+pkgrel=3
+pkgdesc="GNU Standard C++ library version 3"
+arch=(i686 x86_64)
+url="http://gcc.gnu.org"
+license=('GPL' 'LGPL')
+depends=('gcc-libs')
+makedepends=('binutils' 'gcc')
+options=('!libtool' '!makeflags')
+source=(ftp://gcc.gnu.org/pub/gcc/releases/gcc-${pkgver}/gcc-{core,g++}-${pkgver}.tar.bz2 gcc-3.4.3-no_multilib_amd64.patch)
+md5sums=(18c52e6fb8966b7700665dca289d077f 6b3d00b8d079805be1b895f7f6ce47a0 \
+ 088e0807e677010cafe4e590e8711be1)
+
+build(){
+ export CFLAGS=$(echo $CFLAGS | sed 's|-mtune=generic||')
+ export CXXFLAGS=$(echo $CXXFLAGS | sed 's|-mtune=generic||')
+ cd ${srcdir}/gcc-${pkgver}
+
+ if [ "$CARCH" = "x86_64" ]; then
+ patch -Np0 -i ../gcc-3.4.3-no_multilib_amd64.patch || return 1
+ fi
+
+ # No fixincludes
+ sed -i -e 's@\./fixinc\.sh@-c true@' gcc/Makefile.in
+ mkdir ../gcc-build
+ cd ../gcc-build
+ ../gcc-${pkgver}/configure --prefix=/usr --enable-shared \
+ --enable-languages=c++ --enable-threads=posix --enable-__cxa_atexit \
+ --disable-multilib --libdir=/usr/lib
+ make all-target-libstdc++-v3 BOOT_CFLAGS="${CFLAGS}" STAGE1_CFLAGS="-O" || return 1
+ make DESTDIR=${pkgdir} install-target-libstdc++-v3 || return 1
+
+ # Remove includefiles and libs provided by gcc
+ rm -rf ${pkgdir}/usr/{include,share/locale}
+ rm -f ${pkgdir}/usr/lib/*.a
+ rm -f ${pkgdir}/usr/lib/libstdc++.so
+}
diff --git a/extra/libstdc++5/gcc-3.4.3-no_multilib_amd64.patch b/extra/libstdc++5/gcc-3.4.3-no_multilib_amd64.patch
new file mode 100644
index 000000000..dce10d4e4
--- /dev/null
+++ b/extra/libstdc++5/gcc-3.4.3-no_multilib_amd64.patch
@@ -0,0 +1,11 @@
+--- gcc/config/i386/t-linux64.orig 2003-06-28 00:19:59.000000000 +0000
++++ gcc/config/i386/t-linux64 2003-06-28 00:20:07.000000000 +0000
+@@ -6,7 +6,7 @@
+
+ MULTILIB_OPTIONS = m64/m32
+ MULTILIB_DIRNAMES = 64 32
+-MULTILIB_OSDIRNAMES = ../lib64 ../lib
++MULTILIB_OSDIRNAMES = . ../lib
+
+ LIBGCC = stmp-multilib
+ INSTALL_LIBGCC = install-multilib
diff --git a/extra/libstroke/ChangeLog b/extra/libstroke/ChangeLog
new file mode 100644
index 000000000..cf5bc097b
--- /dev/null
+++ b/extra/libstroke/ChangeLog
@@ -0,0 +1,8 @@
+2009-03-14 Eric Belanger <eric@archlinux.org>
+
+ * libstroke 0.5.1-3
+ * Fixed build issue
+ * Updated url
+ * Added license
+ * Added libx11 and gtk makedepends
+ * Added ChangeLog
diff --git a/extra/libstroke/PKGBUILD b/extra/libstroke/PKGBUILD
new file mode 100644
index 000000000..2a4a5adc3
--- /dev/null
+++ b/extra/libstroke/PKGBUILD
@@ -0,0 +1,35 @@
+# $Id: PKGBUILD 30070 2009-03-16 01:26:56Z eric $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+# Contributor: damir <damir@archlinux.org>
+
+pkgname=libstroke
+pkgver=0.5.1
+pkgrel=3
+pkgdesc="LibStroke is a stroke (mouse gesture) translation library"
+arch=('i686' 'x86_64')
+url="http://etla.net/libstroke/"
+license=('GPL2')
+depends=('glibc')
+makedepends=('libx11' 'gtk')
+options=('!libtool')
+source=(http://etla.net/libstroke/$pkgname-$pkgver.tar.gz libgstroke-Makefile.am.patch libstroke-Makefile.am.patch)
+md5sums=('51b9a4e309ac15cfcab96191eed03cb2' '60bbaf355355c3c66c8015b0f7feca85'\
+ '96413a77e1d39d1a3223e8eb6be8ef01')
+sha1sums=('48bd2b98faa8681ccd97eda7a09442845dbf1b7b'
+ 'a0c3bd9e894650475ba3049b0ef3d7f9580c203d'
+ 'ee5a3635c31dba00b070a942c512cc0d53056188')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ patch -p1 < ../libgstroke-Makefile.am.patch || return 1
+ patch -p1 < ../libstroke-Makefile.am.patch || return 1
+
+ libtoolize --force --copy || return 1
+ aclocal || return 1
+ autoconf || return 1
+ automake --add-missing --force --copy || return 1
+
+ ./configure --prefix=/usr || return 1
+ make || return 1
+ make DESTDIR=${pkgdir} install || return 1
+}
diff --git a/extra/libstroke/libgstroke-Makefile.am.patch b/extra/libstroke/libgstroke-Makefile.am.patch
new file mode 100644
index 000000000..b3251f354
--- /dev/null
+++ b/extra/libstroke/libgstroke-Makefile.am.patch
@@ -0,0 +1,11 @@
+--- libstroke-0.5.1/libgstroke/Makefile.am.orig 2008-06-11 13:01:29.000000000 +0400
++++ libstroke-0.5.1/libgstroke/Makefile.am 2008-06-11 13:01:44.000000000 +0400
+@@ -21,7 +21,7 @@
+ INCLUDES = @GTK_CFLAGS@
+ LDADD = @GTK_LIBS@
+
+-EXTRA_DIST =
++#EXTRA_DIST =
+
+ MOSTLYCLEANFILES = core *~
+ CLEANFILES = core *~
diff --git a/extra/libstroke/libstroke-Makefile.am.patch b/extra/libstroke/libstroke-Makefile.am.patch
new file mode 100644
index 000000000..98707faf0
--- /dev/null
+++ b/extra/libstroke/libstroke-Makefile.am.patch
@@ -0,0 +1,15 @@
+--- libstroke-0.5.1/libstroke/Makefile.am.orig 2008-06-11 13:01:54.000000000 +0400
++++ libstroke-0.5.1/libstroke/Makefile.am 2008-06-11 13:02:02.000000000 +0400
+@@ -5,10 +5,10 @@
+ # level Makefile.
+ AUTOMAKE_OPTIONS = foreign
+
+-EXTRA_DIST =
++#EXTRA_DIST =
+
+ #tclpath::
+- #echo ${ENABLE_TCL}
++# echo ${ENABLE_TCL}
+
+ #if ENABLE_TCL
+ #SEL_BIB = libstroke.la libstroke_tcl.la
diff --git a/extra/libtasn1/PKGBUILD b/extra/libtasn1/PKGBUILD
new file mode 100644
index 000000000..2fa240d94
--- /dev/null
+++ b/extra/libtasn1/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 101272 2010-11-28 15:57:11Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: judd <jvinet@zeroflux.org>
+
+pkgname=libtasn1
+pkgver=2.8
+pkgrel=1
+pkgdesc="The ASN.1 library used in GNUTLS"
+arch=(i686 x86_64)
+license=('GPL3' 'LGPL')
+url="http://www.gnu.org/software/libtasn1/"
+depends=('glibc' 'texinfo')
+options=('!libtool')
+install=libtasn1.install
+source=(ftp://ftp.gnu.org/gnu/libtasn1/${pkgname}-${pkgver}.tar.gz)
+md5sums=('53fd164f8670e55a9964666990fb358f')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr \
+ --with-packager=Archlinux \
+ --with-packager-bug-reports="http://bugs.archlinux.org/" \
+ --with-packager-version=${pkgver}-${pkgrel}
+ make
+ make DESTDIR="${pkgdir}" install
+ make check
+}
diff --git a/extra/libtasn1/libtasn1.install b/extra/libtasn1/libtasn1.install
new file mode 100644
index 000000000..2d1ecc09f
--- /dev/null
+++ b/extra/libtasn1/libtasn1.install
@@ -0,0 +1,18 @@
+info_dir=/usr/share/info
+info_files=(libtasn1.info)
+
+post_install() {
+ for f in ${info_files[@]}; do
+ install-info ${info_dir}/$f.gz ${info_dir}/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ for f in ${info_files[@]}; do
+ install-info --delete ${info_dir}/$f.gz ${info_dir}/dir 2> /dev/null
+ done
+}
diff --git a/extra/libthai/PKGBUILD b/extra/libthai/PKGBUILD
new file mode 100644
index 000000000..f96f7f309
--- /dev/null
+++ b/extra/libthai/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id: PKGBUILD 71220 2010-03-05 15:38:39Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Chaiwat Suttipongsakul <cwt114@gmail.com>
+pkgname=libthai
+pkgver=0.1.14
+pkgrel=1
+pkgdesc="Thai language support routines"
+url="http://linux.thai.net/projects/libthai"
+arch=('i686' 'x86_64')
+license=('LGPL')
+depends=('libdatrie>=0.2.3')
+makedepends=('pkgconfig')
+options=('!libtool' '!emptydirs')
+source=(http://linux.thai.net/pub/thailinux/software/${pkgname}/${pkgname}-${pkgver}.tar.gz)
+md5sums=('34f64b37ed8f8f49f4a18ae972e6f41e')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --disable-static || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/libtheora/PKGBUILD b/extra/libtheora/PKGBUILD
new file mode 100644
index 000000000..4b26007aa
--- /dev/null
+++ b/extra/libtheora/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 57637 2009-11-01 07:48:03Z eric $
+# Maintainer: Tom Killian <tom@archlinux.org>
+# Committer: dorphell <dorphell@archlinux.org>
+
+pkgname=libtheora
+pkgver=1.1.1
+pkgrel=1
+pkgdesc="An open video codec developed by the Xiph.org"
+arch=('i686' 'x86_64')
+url="http://www.xiph.org"
+license=('BSD')
+depends=('libogg')
+makedepends=('libvorbis')
+options=('!libtool')
+source=(http://downloads.xiph.org/releases/theora/libtheora-${pkgver}.tar.bz2)
+md5sums=('292ab65cedd5021d6b7ddd117e07cd8e')
+sha1sums=('8dcaa8e61cd86eb1244467c0b64b9ddac04ae262')
+
+build() {
+ cd "${srcdir}/libtheora-${pkgver}"
+ ./configure --prefix=/usr --enable-shared --disable-static || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 LICENSE COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1
+}
diff --git a/extra/libtiff/ChangeLog b/extra/libtiff/ChangeLog
new file mode 100644
index 000000000..88edcc7fc
--- /dev/null
+++ b/extra/libtiff/ChangeLog
@@ -0,0 +1,35 @@
+2010-06-20 Eric Belanger <eric@archlinux.org>
+
+ * libtiff 3.9.4-1
+ * Upstream update
+
+2009-11-05 Eric Belanger <eric@archlinux.org>
+
+ * libtiff 3.9.2-1
+ * Upstream update
+
+2009-08-28 Eric Belanger <eric@archlinux.org>
+
+ * libtiff 3.9.1-1
+ * Upstream update
+
+2009-08-26 Eric Belanger <eric@archlinux.org>
+
+ * libtiff 3.9.0-1
+ * Upstream update
+ * Updated url
+ * Updated patches
+
+2009-08-14 Eric Belanger <eric@archlinux.org>
+
+ * libtiff 3.8.2-6
+ * Added security fixes (close FS#15931)
+
+2008-09-05 Eric Belanger <eric@archlinux.org>
+
+ * libtiff 3.8.2-4
+ * Applied patch to fix buffer underflow in LZW decoding (tiff-3.8.2-CVE-2008-2327.patch)
+ * Added license
+ * Added freeglut optdepends
+ * FHS man pages
+ * Added ChangeLog
diff --git a/extra/libtiff/PKGBUILD b/extra/libtiff/PKGBUILD
new file mode 100644
index 000000000..ed80a2bae
--- /dev/null
+++ b/extra/libtiff/PKGBUILD
@@ -0,0 +1,32 @@
+# $Id: PKGBUILD 83314 2010-06-20 21:43:27Z eric $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+# Contributor: dorphell <dorphell@archlinux.org>
+
+pkgname=libtiff
+pkgver=3.9.4
+pkgrel=1
+pkgdesc="Library for manipulation of TIFF images"
+arch=('i686' 'x86_64')
+url="http://www.remotesensing.org/libtiff/"
+license=('custom')
+depends=('libjpeg' 'zlib')
+makedepends=('libgl' 'freeglut' 'libxmu' 'libxi')
+optdepends=('freeglut: for using tiffgt')
+options=('!libtool')
+source=(ftp://ftp.remotesensing.org/pub/libtiff/tiff-${pkgver}.tar.gz \
+ libtiff-CVE-2009-2285.patch)
+md5sums=('2006c1bdd12644dbf02956955175afd6' 'ff61077408727a82281f77a94f555e2a')
+sha1sums=('a4e32d55afbbcabd0391a9c89995e8e8a19961de' 'eadce8c8bd72ea9c74f35300bf299131813b0c8b')
+
+build() {
+ cd "${srcdir}/tiff-${pkgver}"
+ patch -p1 < ../libtiff-CVE-2009-2285.patch || return 1
+ ./configure --prefix=/usr --sysconfdir=/etc --mandir=/usr/share/man || return 1
+ make || return 1
+}
+
+package() {
+ cd "${srcdir}/tiff-${pkgver}"
+ make DESTDIR="${pkgdir}" install || return 1
+ install -D -m644 COPYRIGHT "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" || return 1
+}
diff --git a/extra/libtiff/libtiff-CVE-2009-2285.patch b/extra/libtiff/libtiff-CVE-2009-2285.patch
new file mode 100644
index 000000000..435a84b53
--- /dev/null
+++ b/extra/libtiff/libtiff-CVE-2009-2285.patch
@@ -0,0 +1,22 @@
+Index: tiff-3.8.2/libtiff/tif_lzw.c
+===================================================================
+--- tiff-3.8.2.orig/libtiff/tif_lzw.c
++++ tiff-3.8.2/libtiff/tif_lzw.c
+@@ -421,7 +421,7 @@ LZWDecode(TIFF* tif, tidata_t op0, tsize
+ NextCode(tif, sp, bp, code, GetNextCode);
+ if (code == CODE_EOI)
+ break;
+- if (code == CODE_CLEAR) {
++ if (code >= CODE_CLEAR) {
+ TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
+ "LZWDecode: Corrupted LZW table at scanline %d",
+ tif->tif_row);
+@@ -624,7 +624,7 @@ LZWDecodeCompat(TIFF* tif, tidata_t op0,
+ NextCode(tif, sp, bp, code, GetNextCodeCompat);
+ if (code == CODE_EOI)
+ break;
+- if (code == CODE_CLEAR) {
++ if (code >= CODE_CLEAR) {
+ TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
+ "LZWDecode: Corrupted LZW table at scanline %d",
+ tif->tif_row);
diff --git a/extra/libtorrent-rasterbar/PKGBUILD b/extra/libtorrent-rasterbar/PKGBUILD
new file mode 100644
index 000000000..2918856be
--- /dev/null
+++ b/extra/libtorrent-rasterbar/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 111968 2011-03-02 18:24:01Z ibiru $
+# Maintainer : Ionut Biru <ibiru@archlinux.org>
+# Contributor: Hugo Doria <hugo@archlinux.org>
+
+pkgname=libtorrent-rasterbar
+pkgver=0.15.5
+pkgrel=2
+pkgdesc="A C++ library that aims to be a good alternative to all the other bittorrent implementations around"
+url="http://www.rasterbar.com/products/libtorrent/"
+arch=('i686' 'x86_64')
+license=('custom')
+depends=('boost-libs' 'python2')
+makedepends=('boost')
+source=(http://libtorrent.googlecode.com/files/${pkgname}-${pkgver}.tar.gz)
+md5sums=('f1504a619e876c2731ee9a6b7d19cb1d')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ export CFLAGS="${CFLAGS} -DBOOST_FILESYSTEM_VERSION=2"
+ export CXXFLAGS="${CXXFLAGS} -DBOOST_FILESYSTEM_VERSION=2"
+ ./configure --prefix=/usr --enable-python-binding
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+ install -D COPYING "${pkgdir}/usr/share/licenses/$pkgname/LICENSE"
+}
diff --git a/extra/libunique/PKGBUILD b/extra/libunique/PKGBUILD
new file mode 100644
index 000000000..6b4fff10b
--- /dev/null
+++ b/extra/libunique/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 90706 2010-09-15 13:49:39Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+pkgname=libunique
+pkgver=1.1.6
+pkgrel=3
+pkgdesc="Library for writing single instance applications"
+arch=('i686' 'x86_64')
+license=('LGPL')
+depends=('gtk2>=2.21.8')
+makedepends=('pkgconfig' 'gobject-introspection>=0.9.5')
+options=('!libtool')
+url="http://live.gnome.org/LibUnique"
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/1.1/${pkgname}-${pkgver}.tar.bz2
+ unique-gdbus.patch)
+sha256sums=('e5c8041cef8e33c55732f06a292381cb345db946cf792a4ae18aa5c66cdd4fbb'
+ 'bf99ddbf9104502ea498a6812ec2d700f61f4dbbaa2471cd52174b0b27070769')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i "${srcdir}/unique-gdbus.patch"
+ autoreconf
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-static \
+ --disable-dbus
+ make
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/libunique/unique-gdbus.patch b/extra/libunique/unique-gdbus.patch
new file mode 100644
index 000000000..880c0c0ff
--- /dev/null
+++ b/extra/libunique/unique-gdbus.patch
@@ -0,0 +1,529 @@
+From 01066039529c0181f231325476bb4823c16a2aea Mon Sep 17 00:00:00 2001
+From: Christian Persch <chpe@gnome.org>
+Date: Sat, 15 May 2010 17:47:45 +0000
+Subject: Add GDBus backend
+
+Add backend using GDBus, the new D-BUS binding in GIO 2.25.
+
+Bug #618723.
+---
+diff --git a/configure.ac b/configure.ac
+index bc3163a..b6a4221 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -116,6 +116,19 @@ AS_IF([test "x$have_dbus" = "xyes"],
+
+ AM_CONDITIONAL([HAVE_DBUS], [test "x$have_dbus" = "xyes"])
+
++dnl GDBus backend
++dnl This is the default backend if GIO is recent enough
++m4_define([gdbus_gio_required],[2.25.7])
++PKG_CHECK_MODULES([GDBUS],[gio-2.0 >= gdbus_gio_required],[have_gdbus=yes],[have_gdbus=no])
++
++AS_IF([test "x$have_gdbus" = "xyes"],
++ [
++ AC_DEFINE([HAVE_GDBUS],[1],[Define if GDBus backend is enabled])
++ ]
++ )
++
++AM_CONDITIONAL([HAVE_GDBUS],[test "$have_gdbus" = "yes"])
++
+ dnl Bacon backend
+ dnl This is the fallback backend, so we *need* these headers and functions
+ dnl even if we end up using D-Bus
+@@ -146,7 +159,13 @@ AM_CONDITIONAL([HAVE_BACON], [test "x$have_bacon" = "xyes"])
+
+ dnl Choose the default backend
+ AC_MSG_CHECKING([for default IPC mechanism])
+-AS_IF([test "x$have_dbus" = "xyes"],
++AS_IF([test "x$have_gdbus" = "xyes"],
++ [
++ UNIQUE_DEFAULT_BACKEND=gdbus
++ AC_MSG_RESULT([GDBus])
++ ],
++
++ [test "x$have_dbus" = "xyes"],
+ [
+ UNIQUE_DEFAULT_BACKEND=dbus
+ AC_MSG_RESULT([D-Bus])
+@@ -243,6 +262,7 @@ AC_CONFIG_FILES([
+ unique/uniqueversion.h
+ unique/bacon/Makefile
+ unique/dbus/Makefile
++ unique/gdbus/Makefile
+ tests/Makefile
+ po/Makefile.in
+ ])
+@@ -261,6 +281,7 @@ Configuration:
+ Backends:
+ Unix Domain Socket: $have_bacon
+ D-BUS: $have_dbus
++ GDBus: $have_gdbus
+
+ Default backend: $UNIQUE_DEFAULT_BACKEND
+ "
+diff --git a/doc/reference/Makefile.am b/doc/reference/Makefile.am
+index 3172588..2c1dbf4 100644
+--- a/doc/reference/Makefile.am
++++ b/doc/reference/Makefile.am
+@@ -50,7 +50,8 @@ IGNORE_HFILES = \
+ uniquemarshal.h \
+ stamp-uniquemarshal.h \
+ bacon \
+- dbus
++ dbus \
++ gdbus
+
+ EXTRA_HFILES =
+
+diff --git a/unique/Makefile.am b/unique/Makefile.am
+index 6475a87..8f0b7ba 100644
+--- a/unique/Makefile.am
++++ b/unique/Makefile.am
+@@ -12,7 +12,11 @@ if HAVE_DBUS
+ SUBDIRS += dbus
+ endif
+
+-DIST_SUBDIRS = bacon dbus
++if HAVE_GDBUS
++SUBDIRS += gdbus
++endif
++
++DIST_SUBDIRS = bacon dbus gdbus
+
+ INCLUDES = -I$(top_srcdir)
+
+@@ -72,6 +76,10 @@ if HAVE_DBUS
+ unique_backend_libs += $(top_builddir)/unique/dbus/libunique-dbus.la
+ endif
+
++if HAVE_GDBUS
++unique_backend_libs += $(top_builddir)/unique/gdbus/libunique-gdbus.la
++endif
++
+ uniquedir = $(includedir)/unique-1.0/unique
+ unique_HEADERS = \
+ $(unique_sources_h) \
+diff --git a/unique/gdbus/.gitignore b/unique/gdbus/.gitignore
+new file mode 100644
+index 0000000..c7e22c3
+--- /dev/null
++++ b/unique/gdbus/.gitignore
+@@ -0,0 +1,2 @@
++libunique_gdbus_la-uniquebackend-gdbus.lo
++libunique-gdbus.la
+diff --git a/unique/gdbus/Makefile.am b/unique/gdbus/Makefile.am
+new file mode 100644
+index 0000000..e10637d
+--- /dev/null
++++ b/unique/gdbus/Makefile.am
+@@ -0,0 +1,24 @@
++include $(top_srcdir)/build/autotools/Makefile.am.silent
++
++noinst_LTLIBRARIES = libunique-gdbus.la
++
++libunique_gdbus_la_SOURCES = \
++ uniquebackend-gdbus.h \
++ uniquebackend-gdbus.c
++
++libunique_gdbus_la_PPCFLAGS = \
++ -DG_LOG_DOMAIN=\"Unique-GDBus\" \
++ -DG_DISABLE_SINGLE_INCLUDES \
++ -I$(top_srcdir) \
++ $(AM_CPPFLAGS)
++
++libunique_gdbus_la_CFLAGS = \
++ $(UNIQUE_CFLAGS) \
++ $(UNIQUE_DEBUG_CFLAGS) \
++ $(MAINTAINER_CFLAGS) \
++ $(GDBUS_CFLAGS) \
++ $(AM_CFLAGS)
++
++libunique_gdbus_la_LIBADD = \
++ $(UNIQUE_LIBS) \
++ $(GDBUS_LIBS)
+diff --git a/unique/gdbus/uniquebackend-gdbus.c b/unique/gdbus/uniquebackend-gdbus.c
+new file mode 100644
+index 0000000..14d54a9
+--- /dev/null
++++ b/unique/gdbus/uniquebackend-gdbus.c
+@@ -0,0 +1,303 @@
++/* Unique - Single Instance application library
++ * uniquebackend-gdbus.c: GDBus implementation of UniqueBackend
++ *
++ * Copyright (C) 2007 Emmanuele Bassi <ebassi@o-hand.com>
++ * Copyright © 2010 Christian Persch
++ *
++ * This library is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU Lesser General Public
++ * License as published by the Free Software Foundation; either
++ * version 2.1 of the License, or (at your option) any later version.
++ *
++ * This library is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ * Lesser General Public License for more details.
++ *
++ * You should have received a copy of the GNU Lesser General Public
++ * License along with this library; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
++ * 02110-1301 USA
++ */
++
++#ifdef HAVE_CONFIG_H
++#include "config.h"
++#endif
++
++#include <gio/gio.h>
++#include <gdk/gdk.h>
++
++#include "../uniqueinternals.h"
++#include "uniquebackend-gdbus.h"
++
++struct _UniqueBackendGDBus
++{
++ UniqueBackend parent_instance;
++
++ GDBusConnection *connection;
++ guint registration_id;
++ guint owner_id;
++ gboolean owns_name;
++ GMainLoop *loop;
++};
++
++struct _UniqueBackendGDBusClass
++{
++ UniqueBackendClass parent_class;
++ GDBusNodeInfo *introspection_data;
++};
++
++G_DEFINE_TYPE (UniqueBackendGDBus, unique_backend_gdbus, UNIQUE_TYPE_BACKEND);
++
++static const char introspection_xml[] =
++ "<node name='/'>"
++ "<interface name='org.gtk.UniqueApp'>"
++ "<method name='SendMessage'>"
++ "<arg name='command' type='s' direction='in'/>"
++ "<arg name='message' type='(suuus)' direction='in'/>"
++ "<arg name='time' type='u' direction='in'/>"
++ "<arg name='response' type='s' direction='out'/>"
++ "</method>"
++ "</interface>"
++ "</node>";
++
++static void
++method_call_cb (GDBusConnection *connection,
++ const gchar *sender,
++ const gchar *object_path,
++ const gchar *interface_name,
++ const gchar *method_name,
++ GVariant *parameters,
++ GDBusMethodInvocation *invocation,
++ gpointer user_data)
++{
++ if (g_strcmp0 (interface_name, "org.gtk.UniqueApp") != 0 ||
++ g_strcmp0 (object_path, "/Factory") != 0)
++ return;
++
++ if (g_strcmp0 (method_name, "SendMessage") == 0)
++ {
++ UniqueBackend *backend = UNIQUE_BACKEND (user_data);
++ const gchar *command_str, *data, *startup_id;
++ guint len, screen_num, workspace, time_;
++ UniqueMessageData message_data;
++ gint command;
++ UniqueResponse response;
++ GdkDisplay *display;
++
++ g_variant_get (parameters,
++ "(&s(&suuu&s)u)",
++ &command_str,
++ &data, &len, &screen_num, &workspace, &startup_id,
++ &time_);
++
++ command = unique_command_from_string (backend->parent, command_str);
++ if (command == 0)
++ {
++ g_dbus_method_invocation_return_error (invocation,
++ G_DBUS_ERROR,
++ G_DBUS_ERROR_INVALID_ARGS,
++ "Invalid command `%s' received",
++ command_str);
++ return;
++ }
++
++ display = gdk_display_get_default ();
++
++ message_data.data = len > 0 ? (guchar *) data : NULL;
++ message_data.length = (gint) len;
++ message_data.workspace = workspace;
++ message_data.startup_id = (char *) startup_id;
++ if (screen_num >= 0 && screen_num < gdk_display_get_n_screens (display))
++ message_data.screen = gdk_display_get_screen (display, screen_num);
++ else
++ message_data.screen = gdk_screen_get_default ();
++
++ response = unique_app_emit_message_received (backend->parent, command, &message_data, time_);
++
++ g_dbus_method_invocation_return_value (invocation,
++ g_variant_new ("(s)", unique_response_to_string (response)));
++ return;
++ }
++}
++
++static void
++name_acquired_cb (GDBusConnection *connection,
++ const gchar *name,
++ gpointer user_data)
++{
++ UniqueBackendGDBus *backend_gdbus = UNIQUE_BACKEND_GDBUS (user_data);
++
++ backend_gdbus->owns_name = TRUE;
++ if (backend_gdbus->loop && g_main_loop_is_running (backend_gdbus->loop))
++ g_main_loop_quit (backend_gdbus->loop);
++}
++
++static void
++name_lost_cb (GDBusConnection *connection,
++ const gchar *name,
++ gpointer user_data)
++{
++ UniqueBackendGDBus *backend_gdbus = UNIQUE_BACKEND_GDBUS (user_data);
++
++ backend_gdbus->owns_name = FALSE;
++ if (backend_gdbus->loop && g_main_loop_is_running (backend_gdbus->loop))
++ g_main_loop_quit (backend_gdbus->loop);
++}
++
++static const GDBusInterfaceVTable interface_vtable = {
++ method_call_cb,
++ NULL,
++ NULL
++};
++
++static gboolean
++unique_backend_gdbus_request_name (UniqueBackend *backend)
++{
++ UniqueBackendGDBus *backend_gdbus = UNIQUE_BACKEND_GDBUS (backend);
++ UniqueBackendGDBusClass *klass = UNIQUE_BACKEND_GDBUS_GET_CLASS (backend);
++ GError *error;
++
++ error = NULL;
++ backend_gdbus->connection = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, &error);
++ if (!backend_gdbus->connection)
++ {
++ g_warning ("Unable to open a connection to the session bus: %s",
++ error->message);
++ g_error_free (error);
++
++ return FALSE;
++ }
++
++ backend_gdbus->registration_id =
++ g_dbus_connection_register_object (backend_gdbus->connection,
++ "/Factory",
++ klass->introspection_data->interfaces[0],
++ &interface_vtable,
++ backend, NULL,
++ &error);
++ if (backend_gdbus->registration_id == 0)
++ {
++ g_warning ("Unable to register object with the session bus: %s",
++ error->message);
++ g_error_free (error);
++
++ return FALSE;
++ }
++
++ backend_gdbus->owns_name = FALSE;
++
++ backend_gdbus->owner_id =
++ g_bus_own_name_on_connection (backend_gdbus->connection,
++ unique_backend_get_name (backend),
++ G_BUS_NAME_OWNER_FLAGS_NONE,
++ name_acquired_cb,
++ name_lost_cb,
++ backend, NULL);
++
++ backend_gdbus->loop = g_main_loop_new (NULL, FALSE);
++ g_main_loop_run (backend_gdbus->loop);
++ g_main_loop_unref (backend_gdbus->loop);
++ backend_gdbus->loop = NULL;
++
++ return backend_gdbus->owns_name;
++}
++
++static UniqueResponse
++unique_backend_gdbus_send_message (UniqueBackend *backend,
++ gint command,
++ UniqueMessageData *message_data,
++ guint time_)
++{
++ UniqueBackendGDBus *backend_gdbus = UNIQUE_BACKEND_GDBUS (backend);
++ GVariantBuilder builder;
++ GVariant *result;
++ const gchar *command_str, *resp;
++ UniqueResponse response;
++ GError *error;
++
++ command_str = unique_command_to_string (backend->parent, command);
++
++ g_variant_builder_init (&builder, G_VARIANT_TYPE ("(s(suuus)u)"));
++ g_variant_builder_add (&builder, "s", command_str ? command_str : "");
++ g_variant_builder_open (&builder, G_VARIANT_TYPE ("(suuus)"));
++ g_variant_builder_add (&builder, "s", message_data->data ? (char *) message_data->data : "");
++ g_variant_builder_add (&builder, "u", (guint) message_data->length);
++ g_variant_builder_add (&builder, "u", (guint) gdk_screen_get_number (message_data->screen));
++ g_variant_builder_add (&builder, "u", (guint) message_data->workspace);
++ g_variant_builder_add (&builder, "s", message_data->startup_id ? message_data->startup_id : "");
++ g_variant_builder_close (&builder);
++ g_variant_builder_add (&builder, "u", time_);
++
++ error = NULL;
++ result = g_dbus_connection_call_sync (backend_gdbus->connection,
++ unique_backend_get_name (backend),
++ "/Factory",
++ "org.gtk.UniqueApp",
++ "SendMessage",
++ g_variant_builder_end (&builder),
++ G_VARIANT_TYPE ("(s)"),
++ G_DBUS_CALL_FLAGS_NO_AUTO_START,
++ -1,
++ NULL,
++ &error);
++ if (error)
++ {
++ g_warning ("Error while sending message: %s", error->message);
++ g_error_free (error);
++
++ return UNIQUE_RESPONSE_INVALID;
++ }
++
++ g_variant_get (result, "(&s)", &resp);
++ response = unique_response_from_string (resp);
++ g_variant_unref (result);
++
++ return response;
++}
++
++static void
++unique_backend_gdbus_dispose (GObject *gobject)
++{
++ UniqueBackendGDBus *backend_gdbus = UNIQUE_BACKEND_GDBUS (gobject);
++
++ if (backend_gdbus->owner_id != 0)
++ {
++ g_bus_unown_name (backend_gdbus->owner_id);
++ backend_gdbus->owner_id = 0;
++ }
++ if (backend_gdbus->registration_id != 0)
++ {
++ g_assert (backend_gdbus->connection != NULL);
++ g_dbus_connection_unregister_object (backend_gdbus->connection,
++ backend_gdbus->registration_id);
++ backend_gdbus->registration_id = 0;
++ }
++ if (backend_gdbus->connection)
++ {
++ g_object_unref (backend_gdbus->connection);
++ backend_gdbus->connection = NULL;
++ }
++
++ G_OBJECT_CLASS (unique_backend_gdbus_parent_class)->dispose (gobject);
++}
++
++static void
++unique_backend_gdbus_class_init (UniqueBackendGDBusClass *klass)
++{
++ GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
++ UniqueBackendClass *backend_class = UNIQUE_BACKEND_CLASS (klass);
++
++ gobject_class->dispose = unique_backend_gdbus_dispose;
++
++ backend_class->request_name = unique_backend_gdbus_request_name;
++ backend_class->send_message = unique_backend_gdbus_send_message;
++
++ klass->introspection_data = g_dbus_node_info_new_for_xml (introspection_xml, NULL);
++ g_assert (klass->introspection_data != NULL);
++}
++
++static void
++unique_backend_gdbus_init (UniqueBackendGDBus *backend)
++{
++}
+diff --git a/unique/gdbus/uniquebackend-gdbus.h b/unique/gdbus/uniquebackend-gdbus.h
+new file mode 100644
+index 0000000..41eb6e5
+--- /dev/null
++++ b/unique/gdbus/uniquebackend-gdbus.h
+@@ -0,0 +1,43 @@
++/* Unique - Single Instance application library
++ * uniquebackend-gdbus.c: GDBus implementation of UniqueBackend
++ *
++ * Copyright (C) 2007 Emmanuele Bassi <ebassi@o-hand.com>
++ *
++ * This library is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU Lesser General Public
++ * License as published by the Free Software Foundation; either
++ * version 2.1 of the License, or (at your option) any later version.
++ *
++ * This library is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ * Lesser General Public License for more details.
++ *
++ * You should have received a copy of the GNU Lesser General Public
++ * License along with this library; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
++ * 02110-1301 USA
++ */
++
++#ifndef __UNIQUE_BACKEND_GDBUS_H__
++#define __UNIQUE_BACKEND_GDBUS_H__
++
++#include <unique/uniquebackend.h>
++
++G_BEGIN_DECLS
++
++#define UNIQUE_TYPE_BACKEND_GDBUS (unique_backend_gdbus_get_type ())
++#define UNIQUE_BACKEND_GDBUS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), UNIQUE_TYPE_BACKEND_GDBUS, UniqueBackendGDBus))
++#define UNIQUE_IS_BACKEND_GDBUS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), UNIQUE_TYPE_BACKEND_GDBUS))
++#define UNIQUE_BACKEND_GDBUS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), UNIQUE_TYPE_BACKEND_GDBUS, UniqueBackendGDBusClass))
++#define UNIQUE_IS_BACKEND_GDBUS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), UNIQUE_TYPE_BACKEND_GDBUS))
++#define UNIQUE_BACKEND_GDBUS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), UNIQUE_TYPE_BACKEND_GDBUS, UniqueBackendGDBusClass))
++
++typedef struct _UniqueBackendGDBus UniqueBackendGDBus;
++typedef struct _UniqueBackendGDBusClass UniqueBackendGDBusClass;
++
++GType unique_backend_gdbus_get_type (void) G_GNUC_CONST;
++
++G_END_DECLS
++
++#endif /* __UNIQUE_BACKEND_GDBUS_H__ */
+diff --git a/unique/uniquebackend.c b/unique/uniquebackend.c
+index 18a0c45..a76e42e 100644
+--- a/unique/uniquebackend.c
++++ b/unique/uniquebackend.c
+@@ -298,6 +298,9 @@ unique_backend_send_message (UniqueBackend *backend,
+ #ifdef HAVE_DBUS
+ #include "dbus/uniquebackend-dbus.h"
+ #endif
++#ifdef HAVE_GDBUS
++#include "gdbus/uniquebackend-gdbus.h"
++#endif
+
+ /**
+ * unique_backend_create:
+@@ -329,6 +332,10 @@ unique_backend_create (void)
+ if (strcmp (backend_name, "dbus") == 0)
+ backend_gtype = unique_backend_dbus_get_type ();
+ #endif /* HAVE_DBUS */
++#ifdef HAVE_GDBUS
++ if (strcmp (backend_name, "gdbus") == 0)
++ backend_gtype = unique_backend_gdbus_get_type ();
++#endif /* HAVE_GDBUS */
+ #if !defined(HAVE_BACON) && !defined(HAVE_DBUS)
+ #error Need either bacon or dbus
+ #endif
+--
+cgit v0.8.3.1
diff --git a/extra/libupnp/PKGBUILD b/extra/libupnp/PKGBUILD
new file mode 100644
index 000000000..20c1c66c9
--- /dev/null
+++ b/extra/libupnp/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 116007 2011-03-22 15:41:57Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: kastor <kastor@fobos.org.ar>
+
+pkgname=libupnp
+pkgver=1.6.13
+pkgrel=1
+pkgdesc="Portable Open Source UPnP Development Kit"
+arch=('i686' 'x86_64')
+url="http://pupnp.sourceforge.net/"
+license=('BSD')
+depends=('glibc')
+makedepends=('pkgconfig')
+options=('!libtool')
+source=("http://downloads.sourceforge.net/sourceforge/pupnp/${pkgname}-${pkgver}.tar.bz2")
+md5sums=('71476b1781ad179bfc9bead640be5f54')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ make DESTDIR=${pkgdir} install
+ install -Dm644 LICENSE ${pkgdir}/usr/share/licenses/custom/${pkgname}/LICENSE
+}
diff --git a/extra/libva/PKGBUILD b/extra/libva/PKGBUILD
new file mode 100644
index 000000000..36a228923
--- /dev/null
+++ b/extra/libva/PKGBUILD
@@ -0,0 +1,35 @@
+# $Id: PKGBUILD 117421 2011-04-01 18:27:40Z ibiru $
+# Maintainer : Ionut Biru <ibiru@archlinux.org>
+pkgname=libva
+pkgver=1.0.12
+pkgrel=1
+pkgdesc="Video Acceleration (VA) API for Linux"
+arch=('i686' 'x86_64')
+url="http://freedesktop.org/wiki/Software/vaapi"
+license=('MIT')
+depends=('libgl' 'libdrm>=2.4.23' 'libxfixes')
+makedepends=('mesa')
+optdepends=('vdpau-video: VDPAU backend for VA API')
+options=('!libtool')
+source=(http://cgit.freedesktop.org/libva/snapshot/${pkgname}-${pkgver}.tar.bz2
+ libva-dont-install-tests.patch)
+md5sums=('84408a0746a63b8cf308dc7b9f2451cf'
+ '0a9bd14c36545c0e9819dfe32ea80f41')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ patch -Np0 -i "${srcdir}/libva-dont-install-tests.patch"
+ ./autogen.sh
+ ./configure --prefix=/usr \
+ --enable-i965-driver \
+ --enable-glx
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR="${pkgdir}" install
+ install -m644 -D COPYING ${pkgdir}/usr/share/licenses/${pkgname}/COPYING
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/extra/libva/libva-dont-install-tests.patch b/extra/libva/libva-dont-install-tests.patch
new file mode 100644
index 000000000..43e4cbaa7
--- /dev/null
+++ b/extra/libva/libva-dont-install-tests.patch
@@ -0,0 +1,47 @@
+Don't install some useeless tests programs
+
+
+--- test/basic/Makefile.am~ 2010-02-12 09:42:10.000000000 -0500
++++ test/basic/Makefile.am 2010-03-10 13:36:50.449834525 -0500
+@@ -20,7 +20,7 @@
+ # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+-bin_PROGRAMS = test_01 test_02 test_03 test_04 test_05 test_06 \
++check_PROGRAMS = test_01 test_02 test_03 test_04 test_05 test_06 \
+ test_07 test_08 test_09 test_10 test_11
+
+ AM_CFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/src/x11 -DIN_LIBVA
+--- test/decode/Makefile.am~ 2010-02-12 09:42:10.000000000 -0500
++++ test/decode/Makefile.am 2010-03-10 13:37:09.636843464 -0500
+@@ -20,7 +20,7 @@
+ # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+-bin_PROGRAMS = mpeg2vldemo
++check_PROGRAMS = mpeg2vldemo
+
+ AM_CFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/src/x11 -DIN_LIBVA
+
+--- test/encode/Makefile.am~ 2010-02-12 09:42:10.000000000 -0500
++++ test/encode/Makefile.am 2010-03-10 13:37:26.701846294 -0500
+@@ -20,7 +20,7 @@
+ # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+-bin_PROGRAMS = h264encode
++check_PROGRAMS = h264encode
+
+ AM_CFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/src/x11 -DIN_LIBVA
+
+--- test/putsurface/Makefile.am~ 2010-03-10 13:18:55.270697040 -0500
++++ test/putsurface/Makefile.am 2010-03-10 13:38:08.106713556 -0500
+@@ -20,7 +20,7 @@
+ # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+-bin_PROGRAMS = putsurface
++check_PROGRAMS = putsurface
+
+ AM_CFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/src/x11 -DIN_LIBVA
+
diff --git a/extra/libvdpau/PKGBUILD b/extra/libvdpau/PKGBUILD
new file mode 100644
index 000000000..7500270bc
--- /dev/null
+++ b/extra/libvdpau/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id$
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libvdpau
+pkgver=0.4.1
+pkgrel=1
+pkgdesc="Nvidia VDPAU library"
+arch=(i686 x86_64)
+url=http://cgit.freedesktop.org/~aplattner/libvdpau
+depends=('gcc-libs')
+conflicts=('nvidia-utils<190.42-2')
+options=('!libtool' 'force')
+license=('custom')
+source=(http://people.freedesktop.org/~aplattner/vdpau/${pkgname}-${pkgver}.tar.gz)
+makedepends=('libx11')
+sha256sums=('061b6f86c64912f79851bfefcac4f77b401e9a939dbbb7b1ec795bc7d5aaf59b')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+
+ install -d -m755 "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/libvisual-plugins/PKGBUILD b/extra/libvisual-plugins/PKGBUILD
new file mode 100644
index 000000000..e6b7eeea0
--- /dev/null
+++ b/extra/libvisual-plugins/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id: PKGBUILD 63448 2010-01-17 14:53:27Z jgc $
+# Maintainer: damir <damir@archlinux.org>
+
+pkgname=libvisual-plugins
+pkgver=0.4.0
+pkgrel=3
+pkgdesc="plugins for libvisual"
+arch=("i686" "x86_64")
+license=('GPL')
+url="http://www.localhost.nl/~synap/libvisual/"
+depends=('libvisual>=0.4.0' 'gtk2>=2.18.6' 'mesa>=7.7' 'alsa-lib' 'esound' 'jack-audio-connection-kit')
+makedepends=(pkgconfig)
+source=("http://downloads.sourceforge.net/sourceforge/libvisual/libvisual-plugins-${pkgver}.tar.gz")
+md5sums=('4330e9287f9d6fae02f482f428a1e77b')
+options=(!libtool)
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --enable-alsa --disable-gstreamer-plugin || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/libvisual/PKGBUILD b/extra/libvisual/PKGBUILD
new file mode 100644
index 000000000..11b566762
--- /dev/null
+++ b/extra/libvisual/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id: PKGBUILD 78070 2010-04-19 09:02:43Z dgriffiths $
+# Maintainer: damir <damir@archlinux.org>
+
+pkgname=libvisual
+pkgver=0.4.0
+pkgrel=3
+pkgdesc="Abstraction library that comes between applications and audio visualisation plugins"
+arch=("i686" "x86_64")
+url="http://sourceforge.net/projects/libvisual/"
+license=('LGPL')
+depends=('glibc')
+options=('!libtool')
+source=("http://downloads.sourceforge.net/sourceforge/libvisual/libvisual-${pkgver}.tar.gz")
+md5sums=('f4e78547c79ea8a8ad111cf8b85011bb')
+
+build()
+{
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr || return 1
+ make || return 1
+ make DESTDIR=${pkgdir} install || return 1
+}
diff --git a/extra/libvncserver/PKGBUILD b/extra/libvncserver/PKGBUILD
new file mode 100644
index 000000000..e66042a65
--- /dev/null
+++ b/extra/libvncserver/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id: PKGBUILD 63372 2010-01-17 12:51:49Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=libvncserver
+pkgver=0.9.7
+pkgrel=3
+pkgdesc="The vnc library"
+arch=('i686' 'x86_64')
+url="http://libvncserver.sourceforge.net/"
+license=('GPL')
+depends=('libjpeg>=8' 'zlib')
+options=('!libtool')
+source=(http://downloads.sourceforge.net/${pkgname}/LibVNCServer-${pkgver}.tar.gz)
+md5sums=('14af5bdae461df4666c18e5f83c150c4')
+
+build() {
+ cd $srcdir/LibVNCServer-$pkgver
+ ./configure --prefix=/usr || return 1
+ make || return 1
+ make DESTDIR=$pkgdir install || return 1
+}
diff --git a/extra/libvorbis/PKGBUILD b/extra/libvorbis/PKGBUILD
new file mode 100644
index 000000000..b144a90b1
--- /dev/null
+++ b/extra/libvorbis/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 102123 2010-12-06 01:49:44Z allan $
+# Maintainer: Tobias Kieslich <tobias@archlinux.org>
+# Contributor: dorphell <dorphell@archlinux.org>
+# Contributor: John Proctor <jproctor@prium.net>
+
+pkgname=libvorbis
+pkgver=1.3.2
+pkgrel=1
+pkgdesc="Vorbis codec library"
+arch=('i686' 'x86_64')
+license=('custom')
+url="http://www.xiph.org/ogg/vorbis/"
+depends=('libogg')
+options=('!libtool')
+source=(http://downloads.xiph.org/releases/vorbis/${pkgname}-${pkgver}.tar.gz)
+md5sums=('c870b9bd5858a0ecb5275c14486d9554')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ #-march=i686 optimizes too much, strip it out
+ CFLAGS=${CFLAGS/-march=$CARCH} ./configure --prefix=/usr --disable-static
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR="${pkgdir}" install
+ install -Dm644 COPYING "${pkgdir}/usr/share/licenses/$pkgname/LICENSE"
+}
diff --git a/extra/libvpx/PKGBUILD b/extra/libvpx/PKGBUILD
new file mode 100644
index 000000000..cbe82e07f
--- /dev/null
+++ b/extra/libvpx/PKGBUILD
@@ -0,0 +1,32 @@
+# $Id: PKGBUILD 113551 2011-03-09 12:18:46Z ibiru $
+# Maintainer: Ionut Biru <ibiru@archlinux.org>
+pkgname=libvpx
+pkgver=0.9.6
+pkgrel=2
+pkgdesc="The VP8 Codec SDK"
+arch=('i686' 'x86_64')
+url="http://www.webmproject.org/"
+license=('BSD')
+depends=('glibc')
+makedepends=('yasm')
+source=(http://webm.googlecode.com/files/${pkgname}-v${pkgver}.tar.bz2)
+sha1sums=('a3522bd2b73d52381ba767ded1cbf4760e9cc6f8')
+
+build() {
+ cd "${srcdir}/${pkgname}-v${pkgver}"
+ ./configure --enable-vp8 \
+ --enable-runtime-cpu-detect \
+ --enable-shared \
+ --enable-postproc \
+ --enable-pic \
+ --disable-install-docs \
+ --disable-install-srcs
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-v${pkgver}"
+ make DIST_DIR="$pkgdir/usr" install
+ install -D -m 0644 LICENSE "$pkgdir/usr/share/licenses/${pkgname}/LICENSE"
+ chmod 644 "$pkgdir"/usr/include/vpx/*.h
+}
diff --git a/extra/libwebkit/PKGBUILD b/extra/libwebkit/PKGBUILD
new file mode 100644
index 000000000..c8d1c7540
--- /dev/null
+++ b/extra/libwebkit/PKGBUILD
@@ -0,0 +1,39 @@
+# $Id: PKGBUILD 109463 2011-02-09 20:43:10Z andyrtr $
+# Maintainer: Andreas Radke <andyrtr@archlinux.org>
+
+pkgname=libwebkit
+pkgver=1.2.7
+pkgrel=1
+pkgdesc="an opensource web content engine, derived from KHTML and KJS from KDE"
+arch=('i686' 'x86_64')
+url="http://webkitgtk.org/"
+license=('custom')
+depends=('libxt' 'libxslt' 'sqlite3' 'gtk2' 'icu>=4.6' 'gstreamer0.10-base' 'libsoup' 'enchant')
+makedepends=('gperf' 'gtk-doc' 'gobject-introspection')
+provides=('webkitgtk-svn')
+conflicts=('webkitgtk-svn')
+replaces=('webkitgtk-svn')
+options=('!libtool')
+source=(http://webkitgtk.org/webkit-${pkgver}.tar.gz
+ introspection.patch)
+md5sums=('25c7e548b65aeb6d83c0182c32ef0927'
+ 'e7e83312618cb30cc9a1567a21cd0e06')
+
+
+build() {
+ cd "${srcdir}/webkit-${pkgver}"
+ patch -Np0 -i "${srcdir}/introspection.patch"
+
+ ./configure --prefix=/usr \
+ --enable-video --enable-introspection \
+ --with-font-backend=freetype --enable-gtk-doc \
+ --enable-jit --with-unicode-backend=icu
+ #disable makeflags if parallel building fails
+ make ${MAKEFLAGS}
+}
+
+package() {
+ cd "${srcdir}/webkit-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+ install -Dm644 WebKit/LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+}
diff --git a/extra/libwebkit/introspection.patch b/extra/libwebkit/introspection.patch
new file mode 100644
index 000000000..f12e9e629
--- /dev/null
+++ b/extra/libwebkit/introspection.patch
@@ -0,0 +1,22 @@
+--- WebKit/gtk/JSCore-1.0.gir 2010-09-29 14:54:07.000000000 +0200
++++ WebKit/gtk/JSCore-1.0.gir 2010-09-29 15:57:06.000000000 +0200
+@@ -1,12 +1,14 @@
+ <?xml version="1.0"?>
+-<repository version="1.0"
++<repository version="1.2"
+ xmlns="http://www.gtk.org/introspection/core/1.0"
+ xmlns:c="http://www.gtk.org/introspection/c/1.0">
+ <namespace name="JSCore" version="1.0" shared-library="webkit-1.0">
+- <alias name="GlobalContextRef"
+- target="none"
+- c:type="JSGlobalContextRef"/>
+- <alias name="ObjectRef" target="none" c:type="JSObjectRef"/>
++ <alias name="GlobalContextRef" target="none">
++ <type name="JSGlobalContextRef" c:type="JSGlobalContextRef"/>
++ </alias>
++ <alias name="ObjectRef" target="none">
++ <type name="JSObjectRef" c:type="JSObjectRef"/>
++ </alias>
+ <function name="EvaluateScript" c:identifier="JSEvaluateScript">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
diff --git a/extra/libwmf/PKGBUILD b/extra/libwmf/PKGBUILD
new file mode 100644
index 000000000..12061510c
--- /dev/null
+++ b/extra/libwmf/PKGBUILD
@@ -0,0 +1,41 @@
+# $Id: PKGBUILD 87507 2010-08-15 06:45:18Z eric $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: FJ <joostef@gmail.com>
+
+pkgname=libwmf
+pkgver=0.2.8.4
+pkgrel=8
+pkgdesc="A library for reading vector images in Microsoft's native Windows Metafile Format (WMF)"
+arch=('i686' 'x86_64')
+url="http://wvware.sourceforge.net/libwmf.html"
+license=("LGPL")
+depends=('libpng' 'libx11' 'freetype2' 'libjpeg' 'gsfonts' 'expat')
+makedepends=('gtk2' 'libxt' 'pkg-config')
+options=('!libtool' '!docs' '!emptydirs')
+install=libwmf.install
+source=(http://downloads.sourceforge.net/sourceforge/wvware/${pkgname}-${pkgver}.tar.gz
+ libpng14.patch libwmf-0.2.8.4-useafterfree.patch)
+md5sums=('d1177739bf1ceb07f57421f0cee191e0' '33d3c07a1be9f99fd88de220930c5550'\
+ '0f02c1cb8a87bf7158634503bf0537e2')
+sha1sums=('822ab3bd0f5e8f39ad732f2774a8e9f18fc91e89' '15edb94eec7c9cea988e83660b334e56bf1fe897'\
+ 'ea6d28880840e86c96f9079bfd591da54dcffa5c')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i "${srcdir}/libpng14.patch"
+ patch -Np1 -i "${srcdir}/libwmf-0.2.8.4-useafterfree.patch"
+ ./configure --prefix=/usr \
+ --with-gsfontdir=/usr/share/fonts/Type1 \
+ --with-fontdir=/usr/share/fonts/Type1 \
+ --with-gsfontmap=/usr/share/ghostscript/8.15/lib/Fontmap.GS
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+ #Remove fonts, these are in gsfonts
+ rm -rf "${pkgdir}/usr/share/fonts"
+ #Remove static GTK loader, can't use it anyways
+ rm -f "${pkgdir}"/usr/lib/gtk-2.0/*/loaders/io-wmf.a
+}
diff --git a/extra/libwmf/libpng14.patch b/extra/libwmf/libpng14.patch
new file mode 100644
index 000000000..3d38c717a
--- /dev/null
+++ b/extra/libwmf/libpng14.patch
@@ -0,0 +1,12 @@
+diff -Nur libwmf-0.2.8.4.orig/src/extra/gd/gd_png.c libwmf-0.2.8.4/src/extra/gd/gd_png.c
+--- libwmf-0.2.8.4.orig/src/extra/gd/gd_png.c 2005-07-27 23:35:06.000000000 +0300
++++ libwmf-0.2.8.4/src/extra/gd/gd_png.c 2010-01-17 01:33:58.000000000 +0200
+@@ -136,7 +136,7 @@
+ /* first do a quick check that the file really is a PNG image; could
+ * have used slightly more general png_sig_cmp() function instead */
+ gdGetBuf (sig, 8, infile);
+- if (!png_check_sig (sig, 8))
++ if (png_sig_cmp (sig, 0, 8))
+ return NULL; /* bad signature */
+
+ #ifndef PNG_SETJMP_NOT_SUPPORTED
diff --git a/extra/libwmf/libwmf-0.2.8.4-useafterfree.patch b/extra/libwmf/libwmf-0.2.8.4-useafterfree.patch
new file mode 100644
index 000000000..328c5411f
--- /dev/null
+++ b/extra/libwmf/libwmf-0.2.8.4-useafterfree.patch
@@ -0,0 +1,10 @@
+--- libwmf-0.2.8.4/src/extra/gd/gd_clip.c.CVE-2009-1364-im-clip-list 2009-04-24 04:06:44.000000000 -0400
++++ libwmf-0.2.8.4/src/extra/gd/gd_clip.c 2009-04-24 04:08:30.000000000 -0400
+@@ -70,6 +70,7 @@ void gdClipSetAdd(gdImagePtr im,gdClipRe
+ { more = gdRealloc (im->clip->list,(im->clip->max + 8) * sizeof (gdClipRectangle));
+ if (more == 0) return;
+ im->clip->max += 8;
++ im->clip->list = more;
+ }
+ im->clip->list[im->clip->count] = (*rect);
+ im->clip->count++;
diff --git a/extra/libwmf/libwmf.install b/extra/libwmf/libwmf.install
new file mode 100644
index 000000000..9c99a901b
--- /dev/null
+++ b/extra/libwmf/libwmf.install
@@ -0,0 +1,13 @@
+post_install() {
+ if [ -x usr/bin/gdk-pixbuf-query-loaders ]; then
+ gdk-pixbuf-query-loaders > etc/gtk-2.0/gdk-pixbuf.loaders
+ fi
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ post_install $1
+}
diff --git a/extra/libwnck/PKGBUILD b/extra/libwnck/PKGBUILD
new file mode 100644
index 000000000..43223588b
--- /dev/null
+++ b/extra/libwnck/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id: PKGBUILD 99757 2010-11-17 12:00:58Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+pkgname=libwnck
+pkgver=2.30.6
+pkgrel=1
+pkgdesc="Window Navigator Construction Kit"
+arch=('i686' 'x86_64')
+license=('LGPL')
+depends=('gtk2>=2.22.0' 'startup-notification>=0.10' 'libxres')
+makedepends=('libxt>=1.0.6' 'intltool' 'gobject-introspection')
+options=('!libtool')
+url="http://www.gnome.org/"
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.30/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('4d25984ed5cfe215eb650f960de634300a6cafc9d98bbc7caea8043b7cd96cc5')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-static
+ make
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/libwpd/PKGBUILD b/extra/libwpd/PKGBUILD
new file mode 100644
index 000000000..d81792fff
--- /dev/null
+++ b/extra/libwpd/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 110381 2011-02-19 06:05:32Z eric $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+
+pkgname=libwpd
+pkgver=0.9.1
+pkgrel=1
+pkgdesc="Library for importing WordPerfect (tm) documents"
+arch=('i686' 'x86_64')
+url="http://libwpd.sourceforge.net/"
+license=('LGPL')
+depends=('libgsf>=1.14.3-2')
+options=('!libtool')
+source=(http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.gz)
+md5sums=('6edd1b7eb8992888c6c82fc95859ac1b')
+sha1sums=('af4bc109ad270e873652d0af80e96b42d82dddbc')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ ./configure --prefix=/usr \
+ --without-docs
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/libwpg/PKGBUILD b/extra/libwpg/PKGBUILD
new file mode 100644
index 000000000..5dfa3efca
--- /dev/null
+++ b/extra/libwpg/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 102210 2010-12-06 19:32:38Z andyrtr $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libwpg
+pkgver=0.2.0
+pkgrel=1
+pkgdesc="Library for importing and converting Corel WordPerfect(tm) Graphics images."
+arch=('i686' 'x86_64')
+url="http://libwpg.sourceforge.net/"
+license=('LGPL')
+depends=('libwpd>=0.9.0' 'perl')
+options=('!libtool')
+source=(http://downloads.sourceforge.net/libwpg/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('5ba6a61a2f66dfd5fee8cdd4cd262a37')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/libx11/PKGBUILD b/extra/libx11/PKGBUILD
new file mode 100644
index 000000000..f8ba6f768
--- /dev/null
+++ b/extra/libx11/PKGBUILD
@@ -0,0 +1,35 @@
+# $Id: PKGBUILD 115642 2011-03-18 11:45:18Z andyrtr $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libx11
+pkgver=1.4.2
+pkgrel=1
+pkgdesc="X11 client-side library"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+depends=('libxcb' 'xproto' 'kbproto')
+makedepends=('xorg-util-macros' 'xextproto' 'xtrans' 'inputproto')
+options=('!libtool')
+license=('custom')
+source=(${url}/releases/individual/lib/libX11-${pkgver}.tar.bz2
+ xorg.sh)
+sha1sums=('c93fc44dcc028319bee76f3e629ec43cfce42673'
+ '4b756387426afb2a5bb7a155631ec42348abf5c1')
+
+build() {
+ cd "${srcdir}/libX11-${pkgver}"
+ ./configure --prefix=/usr --disable-static --disable-xf86bigfont
+ make
+ make check
+}
+
+package() {
+ cd "${srcdir}/libX11-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+
+ install -m755 -d "${pkgdir}/etc/profile.d"
+ install -m755 "${srcdir}/xorg.sh" "${pkgdir}/etc/profile.d/"
+
+ install -d -m755 "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/libx11/xorg.sh b/extra/libx11/xorg.sh
new file mode 100644
index 000000000..e1de6866c
--- /dev/null
+++ b/extra/libx11/xorg.sh
@@ -0,0 +1,15 @@
+export XDG_DATA_HOME=$HOME/.local/share
+export XDG_CONFIG_HOME=$HOME/.config
+export XDG_CACHE_HOME=$HOME/.cache
+
+if [ -z $XDG_DATA_DIRS ]; then
+ export XDG_DATA_DIRS=/usr/share/:/usr/local/share/
+else
+ export XDG_DATA_DIRS=/usr/share/:/usr/local/share/:$XDG_DATA_DIRS
+fi
+
+if [ -z $XDG_CONFIG_DIRS ]; then
+ export XDG_CONFIG_DIRS=/etc/xdg
+else
+ export XDG_CONFIG_DIRS=/etc/xdg:$XDG_CONFIG_DIRS
+fi
diff --git a/extra/libx86/PKGBUILD b/extra/libx86/PKGBUILD
new file mode 100644
index 000000000..79519598c
--- /dev/null
+++ b/extra/libx86/PKGBUILD
@@ -0,0 +1,36 @@
+# $Id: PKGBUILD 21343 2008-12-12 01:32:33Z eric $
+# Contributor: Eric Belanger <eric@archlinux.org>
+# Contributor: tardo <tardo@nagi-fanboi.net>
+# Maintainer: Thayer Williams <thayer@archlinux.org>
+
+pkgname=libx86
+pkgver=1.1
+pkgrel=2
+pkgdesc="Provides an lrmi interface that works on x86, am64 and alpha"
+arch=('i686' 'x86_64')
+url="http://www.codon.org.uk/~mjg59/libx86/"
+license=('custom')
+depends=('glibc')
+source=(http://www.codon.org.uk/~mjg59/libx86/downloads/libx86-$pkgver.tar.gz
+ libx86-ifmask.patch)
+md5sums=('41bee1f8e22b82d82b5f7d7ba51abc2a'
+ '573897186eb8670d8d97c64ea7614001')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+
+ # lrmi.c patch courtesy of Gentoo
+ patch -Np0 -i $srcdir/libx86-ifmask.patch || return 1
+
+ # compensate for x86_64
+ if [ "$CARCH" = "x86_64" ]; then
+ make BACKEND=x86emu || return 1
+ else
+ make || return 1
+ fi
+
+ make DESTDIR=$pkgdir install || return 1
+ chmod 644 $pkgdir/usr/lib/libx86.a || return 1
+
+ install -D -m 644 COPYRIGHT $pkgdir/usr/share/licenses/$pkgname/COPYRIGHT || return 1
+}
diff --git a/extra/libx86/libx86-ifmask.patch b/extra/libx86/libx86-ifmask.patch
new file mode 100644
index 000000000..c99eeb819
--- /dev/null
+++ b/extra/libx86/libx86-ifmask.patch
@@ -0,0 +1,21 @@
+--- lrmi.c.orig 2008-09-06 12:24:36.070136428 +0200
++++ lrmi.c 2008-09-06 12:28:10.584287458 +0200
+@@ -55,6 +55,18 @@ OTHER DEALINGS IN THE SOFTWARE.
+ #include "x86-common.h"
+
+ #if defined(__linux__)
++#ifndef TF_MASK
++#define TF_MASK X86_EFLAGS_TF
++#endif
++#ifndef IF_MASK
++#define IF_MASK X86_EFLAGS_IF
++#endif
++#ifndef IOPL_MASK
++#define IOPL_MASK X86_EFLAGS_IOPL
++#endif
++#ifndef VIF_MASK
++#define VIF_MASK X86_EFLAGS_VIF
++#endif
+ #define DEFAULT_VM86_FLAGS (IF_MASK | IOPL_MASK)
+ #elif defined(__NetBSD__) || defined(__FreeBSD__)
+ #define DEFAULT_VM86_FLAGS (PSL_I | PSL_IOPL)
diff --git a/extra/libxau/PKGBUILD b/extra/libxau/PKGBUILD
new file mode 100644
index 000000000..f5301af1a
--- /dev/null
+++ b/extra/libxau/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 88375 2010-08-23 07:44:23Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Alexander Baldeck <alexander@archlinux.org>
+
+pkgname=libxau
+pkgver=1.0.6
+pkgrel=1
+pkgdesc="X11 authorisation library"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+depends=('glibc' 'xproto>=7.0.18')
+makedepends=('pkgconfig')
+license=('custom')
+options=('!libtool')
+source=(${url}/releases/individual/lib/libXau-${pkgver}.tar.bz2)
+sha1sums=('0e1ab449f98026e4599f6e0d7491810d36c8fe4d')
+
+build() {
+ cd "${srcdir}/libXau-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc
+ make
+ make DESTDIR="${pkgdir}" install
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/libxaw/PKGBUILD b/extra/libxaw/PKGBUILD
new file mode 100644
index 000000000..d4f65c437
--- /dev/null
+++ b/extra/libxaw/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 106867 2011-01-19 15:23:45Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libxaw
+pkgver=1.0.9
+pkgrel=1
+pkgdesc="X11 Athena Widget library"
+arch=(i686 x86_64)
+license=('custom')
+url="http://xorg.freedesktop.org/"
+depends=('libxmu' 'libxpm')
+makedepends=('xorg-util-macros')
+options=('!libtool')
+source=(${url}/releases/individual/lib/libXaw-${pkgver}.tar.bz2)
+sha1sums=('5f8fc1b10316f31d4c6fa1d938b2297ff5bd2da5')
+
+build() {
+ cd "${srcdir}/libXaw-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc --disable-static
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/libxcb/PKGBUILD b/extra/libxcb/PKGBUILD
new file mode 100644
index 000000000..1db9d2adb
--- /dev/null
+++ b/extra/libxcb/PKGBUILD
@@ -0,0 +1,33 @@
+# $Id: PKGBUILD 101448 2010-11-29 09:38:40Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Alexander Baldeck <alexander@archlinux.org>
+
+pkgname=libxcb
+pkgver=1.7
+pkgrel=1
+pkgdesc="X11 client-side library"
+arch=(i686 x86_64)
+url="http://xcb.freedesktop.org/"
+depends=('xcb-proto>=1.6' 'libxdmcp' 'libxau')
+makedepends=('pkgconfig' 'libxslt' 'python2')
+conflicts=('libx11<1.1.99.2')
+options=('!libtool')
+license=('custom')
+source=(${url}/dist/${pkgname}-${pkgver}.tar.bz2
+ libxcb-1.1-no-pthread-stubs.patch)
+sha1sums=('7540f0587907bce421914f0ddb813810cb2f36f8'
+ '3455e84642283bc91c8313af319002a20bbcbdf4')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i "${srcdir}/libxcb-1.1-no-pthread-stubs.patch"
+ libtoolize --force --copy
+ aclocal
+ autoconf
+ automake --add-missing
+ PYTHON=python2 ./configure --prefix=/usr --enable-xinput
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/libxcb/libxcb-1.1-no-pthread-stubs.patch b/extra/libxcb/libxcb-1.1-no-pthread-stubs.patch
new file mode 100644
index 000000000..f17de1b1d
--- /dev/null
+++ b/extra/libxcb/libxcb-1.1-no-pthread-stubs.patch
@@ -0,0 +1,12 @@
+diff -up libxcb-1.1/configure.ac.pthread-stubs libxcb-1.1/configure.ac
+--- libxcb-1.1/configure.ac.pthread-stubs 2007-11-04 18:17:11.000000000 -0500
++++ libxcb-1.1/configure.ac 2007-11-12 10:27:06.000000000 -0500
+@@ -31,7 +31,7 @@ AC_SUBST(HTML_CHECK_RESULT)
+
+ # Checks for pkg-config packages
+ PKG_CHECK_MODULES(XCBPROTO, xcb-proto >= 1.6)
+-NEEDED="pthread-stubs xau >= 0.99.2"
++NEEDED="xau >= 0.99.2"
+ PKG_CHECK_MODULES(NEEDED, $NEEDED)
+
+ have_xdmcp="no"
diff --git a/extra/libxcomposite/PKGBUILD b/extra/libxcomposite/PKGBUILD
new file mode 100644
index 000000000..854af09b6
--- /dev/null
+++ b/extra/libxcomposite/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 97802 2010-11-01 22:21:28Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libxcomposite
+pkgver=0.4.3
+pkgrel=1
+pkgdesc="X11 Composite extension library"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libxfixes' 'compositeproto')
+makedepends=('xorg-util-macros')
+options=(!libtool)
+source=(${url}/releases/individual/lib/libXcomposite-${pkgver}.tar.bz2)
+sha1sums=('081b26b556d55e20d7956c80a2ea2854962aecec')
+
+build() {
+ cd "${srcdir}/libXcomposite-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc --disable-static
+ make
+ make DESTDIR="${pkgdir}" install
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/libxcursor/PKGBUILD b/extra/libxcursor/PKGBUILD
new file mode 100644
index 000000000..3306c2bef
--- /dev/null
+++ b/extra/libxcursor/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 97807 2010-11-01 22:23:46Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Alexander Baldeck <alexander@archlinux.org>
+pkgname=libxcursor
+pkgver=1.1.11
+pkgrel=1
+pkgdesc="X cursor management library"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libxfixes' 'libxrender')
+makedepends=('xorg-util-macros')
+options=('!libtool')
+source=(${url}/releases/individual/lib/libXcursor-${pkgver}.tar.bz2)
+sha1sums=('35491bd17cbcdda712e1a064c67ccbc523e2702c')
+
+build() {
+ cd "${srcdir}/libXcursor-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc --disable-static
+ make
+ make DESTDIR="${pkgdir}" install
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/libxdamage/PKGBUILD b/extra/libxdamage/PKGBUILD
new file mode 100644
index 000000000..231b4ce2d
--- /dev/null
+++ b/extra/libxdamage/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 82169 2010-06-09 06:52:23Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libxdamage
+pkgver=1.1.3
+pkgrel=1
+pkgdesc="X11 damaged region extension library"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libxfixes>=4.0.4' 'damageproto>=1.2.0')
+makedepends=('pkg-config')
+options=('!libtool')
+source=(${url}/releases/individual/lib/libXdamage-${pkgver}.tar.bz2)
+sha1sums=('7d96e8de107fede16951cb47d5e147630fbc7dee')
+
+build() {
+ cd "${srcdir}/libXdamage-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc --disable-static || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1
+}
diff --git a/extra/libxdmcp/PKGBUILD b/extra/libxdmcp/PKGBUILD
new file mode 100644
index 000000000..b247b9028
--- /dev/null
+++ b/extra/libxdmcp/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 97611 2010-10-31 16:26:42Z jgc $
+#Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libxdmcp
+pkgver=1.1.0
+pkgrel=1
+pkgdesc="X11 Display Manager Control Protocol library"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('xproto' 'glibc')
+makedepends=('xorg-util-macros')
+options=('!libtool')
+source=(${url}/releases/individual/lib/libXdmcp-${pkgver}.tar.bz2)
+sha1sums=('28132db24727552f77e998e6a6798a5b9b30789f')
+
+build() {
+ cd "${srcdir}/libXdmcp-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc --disable-static
+ make
+ make DESTDIR="${pkgdir}" install
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/libxevie/PKGBUILD b/extra/libxevie/PKGBUILD
new file mode 100644
index 000000000..ac39bc680
--- /dev/null
+++ b/extra/libxevie/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 97772 2010-11-01 22:04:34Z jgc $
+#Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libxevie
+pkgver=1.0.3
+pkgrel=1
+pkgdesc="X11 EvIE extension library"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libxext')
+makedepends=('xorg-util-macros' 'evieext')
+options=('!libtool')
+source=(${url}/releases/individual/lib/libXevie-${pkgver}.tar.bz2)
+sha1sums=('84e2dc6e35c4a82f1a4d1fe4723fba58364c3bec')
+
+build() {
+ cd "${srcdir}/libXevie-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc --disable-static
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/libxext/PKGBUILD b/extra/libxext/PKGBUILD
new file mode 100644
index 000000000..d70a183ce
--- /dev/null
+++ b/extra/libxext/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 97797 2010-11-01 22:17:28Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libxext
+pkgver=1.2.0
+pkgrel=1
+pkgdesc="X11 miscellaneous extensions library"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libx11' 'xextproto')
+makedepends=('xorg-util-macros')
+options=('!libtool')
+source=(${url}/releases/individual/lib/libXext-${pkgver}.tar.bz2)
+sha1sums=('090d7109c5fffde8a0063e10f22f3e2ec48cf19e')
+
+build() {
+ cd "${srcdir}/libXext-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc --disable-static
+ make
+ make DESTDIR="${pkgdir}" install
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/libxfce4menu/PKGBUILD b/extra/libxfce4menu/PKGBUILD
new file mode 100644
index 000000000..b4dbbc21e
--- /dev/null
+++ b/extra/libxfce4menu/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 80821 2010-05-22 13:24:17Z andyrtr $
+# Maintainer: tobias <tobias funnychar archlinux.org>
+
+pkgname=libxfce4menu
+pkgver=4.6.2
+pkgrel=1
+pkgdesc="a freedesktop.org compliant menu implementation for Xfce"
+arch=('i686' 'x86_64')
+license=('GPL2')
+url="http://www.xfce.org/"
+depends=("libxfce4util>=4.6.2")
+makedepends=('pkgconfig' 'intltool' 'gtk2')
+options=('!libtool')
+source=(http://archive.xfce.org/src/xfce/${pkgname}/4.6/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('ff10cacb76803ee37159e3a43345f0d1')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib \
+ --localstatedir=/var --disable-static
+ make || return 1
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install || return 1
+}
diff --git a/extra/libxfce4ui/PKGBUILD b/extra/libxfce4ui/PKGBUILD
new file mode 100644
index 000000000..2260f1c93
--- /dev/null
+++ b/extra/libxfce4ui/PKGBUILD
@@ -0,0 +1,36 @@
+# $Id: PKGBUILD 106352 2011-01-16 16:37:35Z andyrtr $
+# Maintainer: AndyRTR <andyrtr@archlinux.org>
+# Contributor: Xavier Devlamynck <magicrhesus@ouranos.be>
+
+pkgname=libxfce4ui
+pkgver=4.8.0
+pkgrel=1
+pkgdesc="share commonly used Xfce widgets among the Xfce applications"
+arch=('i686' 'x86_64')
+license=('GPL2')
+url="http://www.xfce.org/"
+groups=('xfce4')
+depends=('libxfce4util>=4.8.0' 'gtk2' "xfconf>=4.8.0" 'startup-notification')
+makedepends=('intltool' 'gtk-doc' 'glade')
+optdepends=('glade: for using the included glade module')
+#replaces=('libxfcegui4') - later when all is ported
+options=('!libtool')
+source=(http://archive.xfce.org/src/xfce/libxfce4ui/4.8/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('df9acb3328dff905bd0777b84532b69f')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --libexecdir=/usr/lib \
+ --localstatedir=/var \
+ --disable-static \
+ --enable-gtk-doc \
+ --disable-debug
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/libxfce4util/PKGBUILD b/extra/libxfce4util/PKGBUILD
new file mode 100644
index 000000000..1e6307e06
--- /dev/null
+++ b/extra/libxfce4util/PKGBUILD
@@ -0,0 +1,34 @@
+# $Id: PKGBUILD 106357 2011-01-16 16:41:01Z andyrtr $
+# Maintainer: AndyRTR <andyrtr@archlinux.org>
+# Contributor: tobias <tobias funnychar archlinux.org>
+
+pkgname=libxfce4util
+pkgver=4.8.1
+pkgrel=1
+pkgdesc="Basic utility non-GUI functions for Xfce"
+arch=('i686' 'x86_64')
+license=('GPL2')
+url="http://www.xfce.org/"
+groups=('xfce4')
+depends=("glib2")
+makedepends=('pkgconfig' 'intltool' 'gtk-doc')
+options=('!libtool')
+source=(http://archive.xfce.org/src/xfce/libxfce4util/4.8/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('2be3af4c7db5ad293a7525e1021e6f0f')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --libexecdir=/usr/lib \
+ --localstatedir=/var \
+ --disable-static \
+ --enable-gtk-doc \
+ --disable-debug
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/libxfcegui4/PKGBUILD b/extra/libxfcegui4/PKGBUILD
new file mode 100644
index 000000000..a2a8aca84
--- /dev/null
+++ b/extra/libxfcegui4/PKGBUILD
@@ -0,0 +1,34 @@
+# $Id: PKGBUILD 109772 2011-02-12 17:13:22Z andyrtr $
+# Maintainer: Andreas Radke <andyrtr@archlinux.org>
+# Contributor: Tobias Kieslich <tobias funnychar archlinux.org>
+
+pkgname=libxfcegui4
+pkgver=4.8.1
+pkgrel=1
+pkgdesc="Various gtk widgets for Xfce"
+arch=(i686 x86_64)
+license=('GPL2')
+url="http://www.xfce.org/"
+groups=('xfce4')
+depends=('startup-notification' "xfconf>=4.8.0" "libglade" 'hicolor-icon-theme')
+makedepends=('pkgconfig' 'intltool')
+options=('!libtool')
+install=${pkgname}.install
+source=(http://archive.xfce.org/src/xfce/${pkgname}/4.8/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('ca0cdeff99f1732307d0fc0672d382ef')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --libexecdir=/usr/lib \
+ --localstatedir=/var \
+ --disable-static \
+ --disable-debug
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/libxfcegui4/libxfcegui4.install b/extra/libxfcegui4/libxfcegui4.install
new file mode 100644
index 000000000..fee9e5d11
--- /dev/null
+++ b/extra/libxfcegui4/libxfcegui4.install
@@ -0,0 +1,12 @@
+post_install() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
diff --git a/extra/libxfixes/PKGBUILD b/extra/libxfixes/PKGBUILD
new file mode 100644
index 000000000..aff9bd0bf
--- /dev/null
+++ b/extra/libxfixes/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 82357 2010-06-10 12:31:08Z jgc $
+#Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libxfixes
+pkgver=4.0.5
+pkgrel=1
+pkgdesc="X11 miscellaneous 'fixes' extension library"
+arch=('i686' 'x86_64')
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libx11>=1.3.4' 'fixesproto>=4.1.1')
+makedepends=('pkg-config')
+options=('!libtool')
+source=(${url}/releases/individual/lib/libXfixes-${pkgver}.tar.bz2)
+sha1sums=('255dfb9a8c50d795c60711ec4764f76cd0620cbf')
+
+build() {
+ cd "${srcdir}/libXfixes-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc --disable-static || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1
+}
diff --git a/extra/libxfont/PKGBUILD b/extra/libxfont/PKGBUILD
new file mode 100644
index 000000000..d42d1ede8
--- /dev/null
+++ b/extra/libxfont/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 97682 2010-11-01 09:15:00Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libxfont
+pkgver=1.4.3
+pkgrel=1
+pkgdesc="X11 font rasterisation library"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('freetype2' 'libfontenc' 'xproto' 'fontsproto')
+makedepends=('xorg-util-macros' 'xtrans')
+options=('!libtool')
+source=(${url}/archive/individual/lib/libXfont-${pkgver}.tar.bz2)
+sha1sums=('191b40c566f80737cf6838747d86ebaee7b0c7d7')
+
+build() {
+ cd "${srcdir}/libXfont-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc --disable-static
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/libxft/PKGBUILD b/extra/libxft/PKGBUILD
new file mode 100644
index 000000000..edcbf82e5
--- /dev/null
+++ b/extra/libxft/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 97606 2010-10-31 16:23:04Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libxft
+pkgver=2.2.0
+pkgrel=1
+pkgdesc="FreeType-based font drawing library for X"
+arch=('i686' 'x86_64')
+license=('custom')
+url="http://xorg.freedesktop.org/"
+depends=('fontconfig' 'libxrender')
+makedepends=('pkgconfig')
+options=('!libtool')
+source=(${url}/releases/individual/lib/libXft-${pkgver}.tar.bz2)
+sha1sums=('ed29784259f4e26df78141035560ae8a7c62e83f')
+
+build() {
+ cd "${srcdir}/libXft-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc --disable-static
+ make
+ make DESTDIR="${pkgdir}" install
+ install -d -m755 "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+
+}
diff --git a/extra/libxi/PKGBUILD b/extra/libxi/PKGBUILD
new file mode 100644
index 000000000..7d7ab740e
--- /dev/null
+++ b/extra/libxi/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 115723 2011-03-20 15:52:24Z andyrtr $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libxi
+pkgver=1.4.2
+pkgrel=1
+pkgdesc="X11 Input extension library"
+arch=('i686' 'x86_64')
+url="http://xorg.freedesktop.org"
+depends=('libxext' 'inputproto')
+makedepends=('pkgconfig' 'xorg-util-macros')
+options=(!libtool)
+license=('custom')
+source=(${url}/releases/individual/lib/libXi-${pkgver}.tar.bz2)
+sha1sums=('97e60a60dd789287e47df807e487f4952dd4ff95')
+
+build() {
+ cd "${srcdir}/libXi-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc --disable-static
+ make
+}
+
+package() {
+ cd "${srcdir}/libXi-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/libxinerama/PKGBUILD b/extra/libxinerama/PKGBUILD
new file mode 100644
index 000000000..87801ba8c
--- /dev/null
+++ b/extra/libxinerama/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 97812 2010-11-01 22:26:22Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Alexander Baldeck <alexander@archlinux.org>
+pkgname=libxinerama
+pkgver=1.1.1
+pkgrel=1
+pkgdesc="X11 Xinerama extension library"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libxext' 'xineramaproto')
+makedepends=('xorg-util-macros')
+options=(!libtool)
+source=(${url}/releases/individual/lib/libXinerama-${pkgver}.tar.bz2)
+sha1sums=('f030b0cfcce15502aac78188524f32a6f29bd0a4')
+
+build() {
+ cd "${srcdir}/libXinerama-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/libxkbfile/PKGBUILD b/extra/libxkbfile/PKGBUILD
new file mode 100644
index 000000000..90e05db37
--- /dev/null
+++ b/extra/libxkbfile/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 97571 2010-10-31 16:00:12Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libxkbfile
+pkgver=1.0.7
+pkgrel=1
+pkgdesc="X11 keyboard file manipulation library"
+arch=(i686 x86_64)
+license=('custom')
+url="http://xorg.freedesktop.org/"
+depends=('libx11')
+makedepends=('xorg-util-macros')
+options=('!libtool')
+source=(${url}/releases/individual/lib/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('0fed539ffbc05859bc666b425fafa42e046bef5f')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc --disable-static
+ make
+ make DESTDIR="${pkgdir}" install
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/libxkbui/LICENSE b/extra/libxkbui/LICENSE
new file mode 100644
index 000000000..abe6f4d86
--- /dev/null
+++ b/extra/libxkbui/LICENSE
@@ -0,0 +1,25 @@
+/************************************************************
+ Copyright (c) 1996 by Silicon Graphics Computer Systems, Inc.
+
+ Permission to use, copy, modify, and distribute this
+ software and its documentation for any purpose and without
+ fee is hereby granted, provided that the above copyright
+ notice appear in all copies and that both that copyright
+ notice and this permission notice appear in supporting
+ documentation, and that the name of Silicon Graphics not be
+ used in advertising or publicity pertaining to distribution
+ of the software without specific prior written permission.
+ Silicon Graphics makes no representation about the suitability
+ of this software for any purpose. It is provided "as is"
+ without any express or implied warranty.
+
+ SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+ SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+ GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
+ THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+ ********************************************************/
diff --git a/extra/libxkbui/PKGBUILD b/extra/libxkbui/PKGBUILD
new file mode 100644
index 000000000..78e39fe67
--- /dev/null
+++ b/extra/libxkbui/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: PKGBUILD 78062 2010-04-19 08:52:11Z dgriffiths $
+#Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libxkbui
+pkgver=1.0.2
+pkgrel=3
+pkgdesc="X11 keyboard UI presentation library"
+arch=('i686' 'x86_64')
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libxt' 'libxkbfile')
+makedepends=('pkgconfig')
+options=(!libtool)
+source=(${url}/releases/individual/lib/${pkgname}-${pkgver}.tar.bz2 LICENSE)
+md5sums=('1143e456f7429e18e88f2eadb2f2b6b1' 'd1efaa1271fc028cd5bec33f836ee9ef')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+ install -D -m644 ../LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+}
diff --git a/extra/libxklavier/PKGBUILD b/extra/libxklavier/PKGBUILD
new file mode 100644
index 000000000..2ab42c862
--- /dev/null
+++ b/extra/libxklavier/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 68544 2010-02-13 09:51:41Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Arjan Timmerman <arjan@archlinux.org>
+
+pkgname=libxklavier
+pkgver=5.0
+pkgrel=1
+pkgdesc="High-level API for X Keyboard Extension"
+arch=(i686 x86_64)
+license=('LGPL')
+depends=('libxkbfile>=1.0.5' 'libxml2>=2.7.6' 'glib2>=2.22.3' 'xkeyboard-config>=1.6' 'libxi>=1.2.1' 'iso-codes>=3.10.1')
+makedepends=('pkgconfig')
+options=('!libtool' '!emptydirs')
+url="http://gswitchit.sourceforge.net"
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/${pkgver}/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('dfd94b17a752b2839281764f0a16af2b338024c8867c10fba7015f276dec4db0')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr \
+ --with-xkb-base=/usr/share/X11/xkb --disable-static || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/libxmi/PKGBUILD b/extra/libxmi/PKGBUILD
new file mode 100644
index 000000000..855592a1a
--- /dev/null
+++ b/extra/libxmi/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id: PKGBUILD 57021 2009-10-31 09:42:53Z allan $
+# Contributor: Tobias Kieslich [tobias.justdreams.de]
+
+pkgname=libxmi
+pkgver=1.2
+pkgrel=2
+pkgdesc="library for rasterizing 2-D vector graphics"
+arch=('i686' 'x86_64')
+url="http://www.gnu.org/software/libxmi/libxmi.html"
+license=('GPL')
+depends=('glibc')
+source=(http://mirrors.usc.edu/pub/gnu/${pkgname}/${pkgname}-${pkgver}.tar.gz)
+md5sums=('4e6935484f0ad71b531920bf4c546b47')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ rm config.guess config.sub install-sh missing
+ automake --add-missing
+ ./configure --prefix=/usr --infodir=/usr/share/info
+ make || return 1
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/libxml++/PKGBUILD b/extra/libxml++/PKGBUILD
new file mode 100644
index 000000000..0d8ce8e38
--- /dev/null
+++ b/extra/libxml++/PKGBUILD
@@ -0,0 +1,39 @@
+# $Id: PKGBUILD 100758 2010-11-25 19:14:49Z ibiru $
+# Maintainer: damir <damir@archlinux.org>
+
+pkgbase=libxml++
+pkgname=('libxml++' 'libxml++-docs')
+pkgver=2.32.0
+pkgrel=1
+arch=('i686' 'x86_64')
+license=('LGPL')
+url="http://libxmlplusplus.sourceforge.net/"
+makedepends=('pkgconfig' 'glibmm-docs' 'libxml2>=2.7.7' 'glibmm>=2.24.2')
+options=('!libtool' '!emptydirs')
+source=(http://ftp.gnome.org/pub/GNOME/sources/${pkgbase}/2.32/${pkgbase}-${pkgver}.tar.bz2)
+sha256sums=('7989e285ca6fe63379121a2afea8dd4806abef6ecf1cb84f4fc4e9de18b43c25')
+
+build() {
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+}
+
+package_libxml++() {
+ pkgdesc="C++ bindings to libxml2"
+ depends=('libxml2>=2.7.7' 'glibmm>=2.24.2')
+ replaces=('libxml++2')
+ provides=("libxml++2=${pkgver}")
+ conflicts=('libxml++2')
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ sed -i -e 's/install-data-am: install-data-local install-dist_referenceDATA/install-data-am: /' Makefile
+ make DESTDIR="${pkgdir}" install
+}
+
+package_libxml++-docs() {
+ pkgdesc="Developer documentation for libxml++"
+ depends=('glibmm-docs')
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ make DESTDIR="${pkgdir}" install-data-local install-dist_referenceDATA
+}
diff --git a/extra/libxml2/PKGBUILD b/extra/libxml2/PKGBUILD
new file mode 100644
index 000000000..c5da2c5d2
--- /dev/null
+++ b/extra/libxml2/PKGBUILD
@@ -0,0 +1,36 @@
+# $Id: PKGBUILD 101089 2010-11-27 15:26:13Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: John Proctor <jproctor@prium.net>
+
+pkgname=libxml2
+pkgver=2.7.8
+pkgrel=1
+pkgdesc="XML parsing library, version 2"
+arch=(i686 x86_64)
+license=('custom')
+depends=('zlib>=1.2.4' 'readline>=6.1' 'ncurses>=5.7')
+makedepends=('python2')
+options=('!libtool')
+url="http://www.xmlsoft.org/"
+source=(ftp://ftp.xmlsoft.org/${pkgname}/${pkgname}-${pkgver}.tar.gz
+ largefile64.patch shared_library_versionning.patch)
+md5sums=('8127a65e8c3b08856093099b52599c86'
+ '5ad4915665608ebfa5b89f7908467a72'
+ '84aeb7c6db023eae044e95d9211dba53')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i "${srcdir}/largefile64.patch"
+ patch -Np1 -i "${srcdir}/shared_library_versionning.patch"
+ autoreconf -fi
+ ./configure --prefix=/usr --with-threads --with-history \
+ --with-python=/usr/bin/python2.7
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+ install -Dm644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/COPYING"
+}
+
diff --git a/extra/libxml2/largefile64.patch b/extra/libxml2/largefile64.patch
new file mode 100644
index 000000000..29be82760
--- /dev/null
+++ b/extra/libxml2/largefile64.patch
@@ -0,0 +1,12 @@
+--- libxml2-2.6.32.dfsg.orig/libxml.h
++++ libxml2-2.6.32.dfsg/libxml.h
+@@ -13,6 +13,9 @@
+ #ifndef _LARGEFILE_SOURCE
+ #define _LARGEFILE_SOURCE
+ #endif
++#ifndef _LARGEFILE64_SOURCE
++#define _LARGEFILE64_SOURCE
++#endif
+ #ifndef _FILE_OFFSET_BITS
+ #define _FILE_OFFSET_BITS 64
+ #endif
diff --git a/extra/libxml2/shared_library_versionning.patch b/extra/libxml2/shared_library_versionning.patch
new file mode 100644
index 000000000..a0b62bca9
--- /dev/null
+++ b/extra/libxml2/shared_library_versionning.patch
@@ -0,0 +1,21 @@
+From 00819877651b87842ed878898ba17dba489820f0 Mon Sep 17 00:00:00 2001
+From: Daniel Veillard <veillard@redhat.com>
+Date: Thu, 04 Nov 2010 20:53:14 +0000
+Subject: Reactivate the shared library versionning script
+
+---
+diff --git a/configure.in b/configure.in
+index 59d0629..a1d2c89 100644
+--- a/configure.in
++++ b/configure.in
+@@ -84,7 +84,7 @@ else
+ esac
+ fi
+ AC_SUBST(VERSION_SCRIPT_FLAGS)
+-AM_CONDITIONAL([USE_VERSION_SCRIPT], [test -z "$VERSION_SCRIPT_FLAGS"])
++AM_CONDITIONAL([USE_VERSION_SCRIPT], [test -n "$VERSION_SCRIPT_FLAGS"])
+
+ dnl
+ dnl We process the AC_ARG_WITH first so that later we can modify
+--
+cgit v0.8.3.1
diff --git a/extra/libxmu/PKGBUILD b/extra/libxmu/PKGBUILD
new file mode 100644
index 000000000..172af84ab
--- /dev/null
+++ b/extra/libxmu/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 97601 2010-10-31 16:17:53Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libxmu
+pkgver=1.1.0
+pkgrel=1
+pkgdesc="X11 miscellaneous micro-utility library"
+arch=('i686' 'x86_64')
+url="http://xorg.freedesktop.org/"
+depends=('libxext' 'libxt')
+makedepends=('xorg-util-macros')
+license=('custom')
+options=('!libtool')
+source=(${url}/releases/individual/lib/libXmu-${pkgver}.tar.bz2)
+sha1sums=('81876a0848070bfc4476a2538fc16898eb6d96cd')
+
+build() {
+ cd "${srcdir}/libXmu-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc --disable-static
+ make
+ make DESTDIR="${pkgdir}" install
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/libxp/PKGBUILD b/extra/libxp/PKGBUILD
new file mode 100644
index 000000000..fc3117259
--- /dev/null
+++ b/extra/libxp/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 106876 2011-01-19 17:19:25Z ibiru $
+#Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libxp
+pkgver=1.0.1
+pkgrel=2
+pkgdesc="X11 X Print Library"
+arch=('i686' 'x86_64')
+license=('custom')
+url="http://xorg.freedesktop.org/"
+depends=('libxext' 'printproto')
+makedepends=('xorg-util-macros')
+options=('!libtool')
+source=(${url}/releases/individual/lib/libXp-${pkgver}.tar.bz2)
+license=('custom')
+sha1sums=('9c76823c7cfcb43f097963d0c930dcc4e38807a8')
+
+build() {
+ cd "${srcdir}/libXp-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/libxpm/PKGBUILD b/extra/libxpm/PKGBUILD
new file mode 100644
index 000000000..676fd9e31
--- /dev/null
+++ b/extra/libxpm/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 97596 2010-10-31 16:14:25Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+pkgname=libxpm
+pkgver=3.5.9
+pkgrel=1
+pkgdesc="X11 pixmap library"
+arch=(i686 x86_64)
+license=('custom')
+url="http://xorg.freedesktop.org/"
+depends=('libxt' 'libxext')
+makedepends=('xorg-util-macros')
+options=('!libtool')
+source=(${url}/releases/individual/lib/libXpm-${pkgver}.tar.bz2)
+sha1sums=('38258a1d589d3f157e0338d0fd13eec11bc4a39b')
+
+build() {
+ cd "${srcdir}/libXpm-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc --disable-static
+ make
+ make DESTDIR="${pkgdir}" install
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/libxrandr/PKGBUILD b/extra/libxrandr/PKGBUILD
new file mode 100644
index 000000000..c888828b9
--- /dev/null
+++ b/extra/libxrandr/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 97787 2010-11-01 22:11:26Z jgc $
+# Maintainer: Alexander Baldeck <alexander@archlinux.org>
+# Contributor: Jan de Groot <jgc@archlinux.org>
+pkgname=libxrandr
+pkgver=1.3.1
+pkgrel=1
+pkgdesc="X11 RandR extension library"
+arch=('i686' 'x86_64')
+license=('custom')
+url="http://xorg.freedesktop.org/"
+depends=('libxext' 'libxrender' 'randrproto')
+makedepends=('xorg-util-macros')
+options=('!libtool')
+source=(${url}/releases/individual/lib/libXrandr-${pkgver}.tar.bz2)
+sha1sums=('8e89622b0656cb2eb22c1f3c646c797dc648ead5')
+
+build() {
+ cd "${srcdir}/libXrandr-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc
+ make
+ make DESTDIR="${pkgdir}" install
+ install -d -m755 "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/libxrender/PKGBUILD b/extra/libxrender/PKGBUILD
new file mode 100644
index 000000000..bed1b410e
--- /dev/null
+++ b/extra/libxrender/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 82164 2010-06-09 06:48:35Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libxrender
+pkgver=0.9.6
+pkgrel=1
+pkgdesc="X Rendering Extension client library"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libx11>=1.3.4' 'renderproto')
+makedepends=('pkgconfig')
+options=('!libtool')
+source=(${url}/releases/individual/lib/libXrender-${pkgver}.tar.bz2)
+sha1sums=('65bd96dc17da6b064f95109da02d9c9d14cb06dc')
+
+build() {
+ cd "${srcdir}/libXrender-${pkgver}"
+ ./configure --prefix=/usr --disable-static || return 1
+ make || return 1
+ make DESTDIR=${pkgdir} install || return 1
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1
+}
diff --git a/extra/libxres/PKGBUILD b/extra/libxres/PKGBUILD
new file mode 100644
index 000000000..8414f6745
--- /dev/null
+++ b/extra/libxres/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 97782 2010-11-01 22:08:57Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libxres
+pkgver=1.0.5
+pkgrel=1
+pkgdesc="X11 Resource extension library"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org"
+license=('custom')
+depends=('libxext')
+makedepends=('resourceproto' 'damageproto' 'compositeproto' 'scrnsaverproto' 'xorg-util-macros')
+options=(!libtool)
+source=(${url}/releases/individual/lib/libXres-${pkgver}.tar.bz2)
+sha1sums=('d3a36f9b6ae430da91f2cbae409916f605074195')
+
+build() {
+ cd "${srcdir}/libXres-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc --disable-static
+ make
+ make DESTDIR="${pkgdir}" install
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/libxslt/PKGBUILD b/extra/libxslt/PKGBUILD
new file mode 100644
index 000000000..c956c0f08
--- /dev/null
+++ b/extra/libxslt/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id: PKGBUILD 87866 2010-08-18 15:17:10Z ibiru $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+# Contributor: John Proctor <jproctor@prium.net>
+
+pkgname=libxslt
+pkgver=1.1.26
+pkgrel=2
+pkgdesc="XML stylesheet transformation library"
+arch=('i686' 'x86_64')
+url="http://xmlsoft.org/XSLT/"
+license=('custom')
+depends=('libxml2>=2.7.7' 'libgcrypt>=1.4.6')
+makedepends=('python2')
+options=('!libtool')
+source=(ftp://xmlsoft.org/libxslt/${pkgname}-${pkgver}.tar.gz)
+md5sums=('e61d0364a30146aaa3001296f853b2b9')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --with-python=/usr/bin/python2.7
+ make
+ make DESTDIR="${pkgdir}" install
+
+ for f in pyxsltproc.py extfunc.py exslt.py extelem.py basic.py; do
+ sed -e 's|#!/usr/bin/python|#!/usr/bin/python2|' \
+ -i ${pkgdir}/usr/share/doc/libxslt-python-1.1.26/examples/${f}
+ done
+
+ install -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/libxss/PKGBUILD b/extra/libxss/PKGBUILD
new file mode 100644
index 000000000..a6fbca454
--- /dev/null
+++ b/extra/libxss/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 97566 2010-10-31 15:57:08Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Alexander Baldeck <alexander@archlinux.org>
+pkgname=libxss
+pkgver=1.2.1
+pkgrel=1
+pkgdesc="X11 Screen Saver extension library"
+arch=(i686 x86_64)
+license=('custom')
+url="http://xorg.freedesktop.org/"
+depends=('libxext' 'scrnsaverproto')
+makedepends=('xorg-util-macros')
+options=('!libtool')
+source=(${url}/releases/individual/lib/libXScrnSaver-${pkgver}.tar.bz2)
+sha1sums=('3c29e2222fd68e26e408234c51c6d8b2edf6ab19')
+
+build() {
+ cd "${srcdir}/libXScrnSaver-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc
+ make
+ make DESTDIR="${pkgdir}" install
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/libxt/PKGBUILD b/extra/libxt/PKGBUILD
new file mode 100644
index 000000000..989e384c3
--- /dev/null
+++ b/extra/libxt/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 114251 2011-03-11 12:33:08Z jgc $
+#Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libxt
+pkgver=1.1.1
+pkgrel=1
+pkgdesc="X11 toolkit intrinsics library"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libsm' 'libx11')
+makedepends=('xorg-util-macros')
+options=('!libtool')
+source=(${url}/releases/individual/lib/libXt-${pkgver}.tar.bz2)
+sha1sums=('a29a97f8521bdc7a95364e163f0ce474de572ae5')
+
+build() {
+ cd "${srcdir}/libXt-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc --disable-static
+ make
+ make DESTDIR="${pkgdir}" install
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/libxtst/PKGBUILD b/extra/libxtst/PKGBUILD
new file mode 100644
index 000000000..bcdf92d29
--- /dev/null
+++ b/extra/libxtst/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 97591 2010-10-31 16:11:54Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libxtst
+pkgver=1.2.0
+pkgrel=1
+pkgdesc="X11 Testing -- Resource extension library"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libxext' 'libxi' 'recordproto' 'inputproto')
+makedepends=('xorg-util-macros')
+options=('!libtool')
+source=(${url}/releases/individual/lib/libXtst-${pkgver}.tar.bz2)
+sha1sums=('9fb06ed599caf7f9e7115cbbfadf02b47c17aa72')
+
+build() {
+ cd "${srcdir}/libXtst-${pkgver}"
+ ./configure --prefix=/usr --disable-static
+ make
+ make DESTDIR="${pkgdir}" install
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/libxv/PKGBUILD b/extra/libxv/PKGBUILD
new file mode 100644
index 000000000..a06c89882
--- /dev/null
+++ b/extra/libxv/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 97586 2010-10-31 16:08:34Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libxv
+pkgver=1.0.6
+pkgrel=1
+pkgdesc="X11 Video extension library"
+arch=(i686 x86_64)
+license=('custom')
+url="http://xorg.freedesktop.org/"
+depends=('libxext' 'videoproto')
+makedepends=('pkgconfig')
+options=('!libtool')
+source=(${url}/releases/individual/lib/libXv-${pkgver}.tar.bz2)
+sha1sums=('9ebb6d7936a7b247b9b0f6dc81def39a18e4214c')
+
+build() {
+ cd "${srcdir}/libXv-${pkgver}"
+ ./configure --prefix=/usr --disable-static
+ make
+ make DESTDIR="${pkgdir}" install
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/libxvmc/PKGBUILD b/extra/libxvmc/PKGBUILD
new file mode 100644
index 000000000..3efb46c39
--- /dev/null
+++ b/extra/libxvmc/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 87580 2010-08-17 07:10:11Z jgc $
+#Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libxvmc
+pkgver=1.0.6
+pkgrel=1
+pkgdesc="X11 Video Motion Compensation extension library"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libxv>=1.0.5')
+makedepends=('pkgconfig')
+options=('!libtool')
+source=(${url}/releases/individual/lib/libXvMC-${pkgver}.tar.bz2)
+sha1sums=('4ace7e7ce6b646b5715b2efa561affc89bc87f91')
+
+build() {
+ cd ${srcdir}/libXvMC-${pkgver}
+ ./configure --prefix=/usr --sysconfdir=/etc --disable-static
+ make
+ make DESTDIR=${pkgdir} install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/libxxf86dga/PKGBUILD b/extra/libxxf86dga/PKGBUILD
new file mode 100644
index 000000000..c66ee69e5
--- /dev/null
+++ b/extra/libxxf86dga/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 97581 2010-10-31 16:05:58Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Alexander Baldeck <alexander@archlinux.org>
+
+pkgname=libxxf86dga
+pkgver=1.1.2
+pkgrel=1
+pkgdesc="X11 Direct Graphics Access extension library"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libxext' 'xf86dgaproto')
+makedepends=('xorg-util-macros')
+options=('!libtool')
+source=(${url}/releases/individual/lib/libXxf86dga-${pkgver}.tar.bz2)
+sha1sums=('333a9f5c61eba896f420969561606551174645cd')
+
+build() {
+ cd "${srcdir}/libXxf86dga-${pkgver}"
+ ./configure --prefix=/usr --disable-static
+ make
+ make DESTDIR="${pkgdir}" install
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/libxxf86vm/PKGBUILD b/extra/libxxf86vm/PKGBUILD
new file mode 100644
index 000000000..12a6f3069
--- /dev/null
+++ b/extra/libxxf86vm/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 97576 2010-10-31 16:03:53Z jgc $
+#Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libxxf86vm
+pkgver=1.1.1
+pkgrel=1
+pkgdesc="X11 XFree86 video mode extension library"
+arch=('x86_64' 'i686')
+license=('custom')
+url="http://xorg.freedesktop.org/"
+depends=('libxext' 'xf86vidmodeproto')
+makedepends=('xorg-util-macros')
+options=('!libtool')
+source=(${url}/releases/individual/lib/libXxf86vm-${pkgver}.tar.bz2)
+sha1sums=('2ff2d2b3c60a5c5c0cc4e0a18492d3b7168a03af')
+
+build() {
+ cd "${srcdir}/libXxf86vm-${pkgver}"
+ ./configure --prefix=/usr --disable-static
+ make
+ make DESTDIR="${pkgdir}" install
+
+ install -d -m755 "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/libytnef/PKGBUILD b/extra/libytnef/PKGBUILD
new file mode 100644
index 000000000..8a48bb88e
--- /dev/null
+++ b/extra/libytnef/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id: $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Andre Klitzing <aklitzing () online () de>
+pkgname=libytnef
+pkgver=1.5
+pkgrel=2
+pkgdesc="Yerase's TNEF Stream Reader library (decode winmail.dat)"
+url="http://freshmeat.net/projects/ytnef/"
+license=('GPL')
+arch=(i686 x86_64)
+options=(!libtool)
+depends=('glibc')
+source=(http://downloads.sourceforge.net/ytnef/${pkgname}-${pkgver}.tar.gz)
+md5sums=('6c44b955f33cf714c75a7bbe895cc352')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --disable-static || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+ rm -f "${pkgdir}/usr/lib/libytnef.a"
+}
diff --git a/extra/libzip/PKGBUILD b/extra/libzip/PKGBUILD
new file mode 100644
index 000000000..fd305346e
--- /dev/null
+++ b/extra/libzip/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 77453 2010-04-13 12:26:29Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=libzip
+pkgver=0.9.3
+pkgrel=1
+pkgdesc="A C library for reading, creating, and modifying zip archives"
+url="http://www.nih.at/libzip/index.html"
+license=('GPL2')
+arch=('i686' 'x86_64')
+depends=('zlib')
+options=('!libtool')
+source=("http://www.nih.at/${pkgname}/${pkgname}-${pkgver}.tar.gz")
+md5sums=('e5fa5d0c5d2ad4c7a0c0fc7f5a1695b9')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr
+ make || return 1
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install || return 1
+}
diff --git a/extra/libzvt/PKGBUILD b/extra/libzvt/PKGBUILD
new file mode 100644
index 000000000..4c7c92cd0
--- /dev/null
+++ b/extra/libzvt/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 63415 2010-01-17 13:52:38Z jgc $
+# Contributor: Tobias Kieslich <tobias@justdreams.de>
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libzvt
+pkgver=2.0.1
+pkgrel=6
+pkgdesc="Zed's virtual terminal library"
+arch=(i686 x86_64)
+license=('GPL' 'LGPL')
+url="http://ftp.gnome.org/pub/GNOME/sources/libzvt"
+depends=('gtk2>=2.18.6' 'libart-lgpl>=2.3.20')
+makedepends=('pkgconfig')
+options=('!libtool')
+source=(ftp://ftp.gnome.org/pub/GNOME/sources/libzvt/2.0/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('4bbea49495a341650fa1f89908e6554e')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ sed -i -e 's/-DGTK_DISABLE_DEPRECATED//g' libzvt/Makefile.* || return 1
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-static \
+ --libexecdir=/usr/lib || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/licq/PKGBUILD b/extra/licq/PKGBUILD
new file mode 100644
index 000000000..a96e34f29
--- /dev/null
+++ b/extra/licq/PKGBUILD
@@ -0,0 +1,33 @@
+# $Id: PKGBUILD 81727 2010-06-02 13:16:13Z juergen $
+# Maintainer: Juergen Hoetzel <juergen@archlinux.org>
+
+pkgname=licq
+pkgver=1.3.9
+pkgrel=1
+pkgdesc="Advanced graphical ICQ clone and more for Unix"
+arch=('i686' 'x86_64')
+url="http://www.licq.org"
+license=('GPL')
+depends=('libxss' 'qt' 'openssl' 'boost')
+makedepends=('cmake')
+options=(!libtool)
+source=(http://downloads.sourceforge.net/sourceforge/licq/licq-${pkgver}.tar.bz2)
+md5sums=('5285efd538fc5540cc85bc8979b8efae')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ # licq
+ GPGME_CONFIG=/bin/false ./configure --prefix=/usr || return 1
+ make || return 1
+ make DESTDIR=${pkgdir} install || return 1
+
+ # qt4-gui
+ cd plugins/qt4-gui || return 1
+ mkdir build
+ cd build
+
+ cmake -DWITH_KDE=OFF -DCMAKE_INSTALL_PREFIX=/usr .. || return 1
+
+ make || return 1
+ make DESTDIR=${pkgdir} install || return 1
+}
diff --git a/extra/liferea/ChangeLog b/extra/liferea/ChangeLog
new file mode 100644
index 000000000..c0861a7ae
--- /dev/null
+++ b/extra/liferea/ChangeLog
@@ -0,0 +1,143 @@
+2011-03-07 Jan Steffens <jan.steffens@gmail.com>
+
+ * liferea 1.6.5-2
+ * Add patch for libnotify-0.7
+ * Add hicolor-icon-theme dependency
+
+2010-09-29 Eric Belanger <eric@archlinux.org>
+
+ * liferea 1.6.5-1
+ * Upstream update
+
+2010-06-30 Eric Belanger <eric@archlinux.org>
+
+ * liferea 1.6.4-1
+ * Upstream update
+ * Changed libnotify depends to optdepends
+ * Tidied up package description
+
+2010-02-22 Eric Belanger <eric@archlinux.org>
+
+ * liferea 1.6.3-1
+ * Upstream update
+
+2010-01-23 Eric Belanger <eric@archlinux.org>
+
+ * liferea 1.6.2-1
+ * Upstream update
+
+2009-11-20 Eric Belanger <eric@archlinux.org>
+
+ * liferea 1.6.1-1
+ * Upstream update
+
+2009-07-26 Eric Belanger <eric@archlinux.org>
+
+ * liferea 1.6.0-1
+ * Upstream update
+ * Updated depends
+ * Added lua support
+
+2009-07-01 Jan de Groot <jgc@archlinux.org>
+
+ * liferea 1.4.28-2
+ * Rebuild for xulrunner 1.9.1
+ * Remove networkmanager dependencies
+
+2009-04-13 Eric Belanger <eric@archlinux.org>
+
+ * liferea 1.4.28-1
+ * Upstream update
+
+2009-03-15 Eric Belanger <eric@archlinux.org>
+
+ * liferea 1.4.27-1
+ * Upstream update
+
+2009-02-21 Eric Belanger <eric@archlinux.org>
+
+ * liferea 1.4.25-1
+ * Upstream update
+
+2009-02-01 Eric Belanger <eric@archlinux.org>
+
+ * liferea 1.4.24-1
+ * Upstream update
+
+2008-12-29 Eric Belanger <eric@archlinux.org>
+
+ * liferea 1.4.23-1
+ * Upstream update
+
+2008-11-14 Eric Belanger <eric@archlinux.org>
+
+ * liferea 1.4.22d-1
+ * Upstream update
+
+2008-10-27 Eric Belanger <eric@archlinux.org>
+
+ * liferea 1.4.20-1
+ * Forced downgrade (close FS#11899)
+
+2008-10-26 Eric Belanger <eric@archlinux.org>
+
+ * liferea 1.4.21b-1
+ * Upstream update
+
+2008-10-01 Eric Belanger <eric@archlinux.org>
+
+ * liferea 1.4.20-1
+ * Upstream update
+
+2008-09-06 Eric Belanger <eric@archlinux.org>
+
+ * liferea 1.4.19-1
+ * Upstream update
+
+2008-08-03 Eric Belanger <eric@archlinux.org>
+
+ * liferea 1.4.18-2
+ * Rebuilt against gnutls 2.4.1
+
+2008-07-28 Eric Belanger <eric@archlinux.org>
+
+ * liferea 1.4.18-1
+ * Upstream update
+ * Updated xulrunner 1.9 support patch
+ * Added intltool makedepends
+ * Removed force option
+
+2008-06-22 Jan de Groot <jgc@archlinux.org>
+
+ * liferea 1.4.16b-2
+ * Build with xulrunner 1.9
+ * Add patch from gentoo to fix xulrunner 1.9 support
+ * Make versioned dependencies more strict
+ * Drop dependencies covered by xulrunner 1.9
+
+2008-06-17 Eric Belanger <eric@archlinux.org>
+
+ * liferea 1.4.16b-1
+ * Upstream update
+ * Added force option
+
+2008-06-13 Eric Belanger <eric@archlinux.org>
+
+ * liferea 1.4.16-1
+ * Upstream update
+
+2008-04-17 Eric Belanger <eric@archlinux.org>
+
+ * liferea 1.4.15-1
+ * Upstream update
+
+2008-03-12 Eric Belanger <eric@archlinux.org>
+
+ * liferea 1.4.14-1
+ * Upstream update
+
+2008-03-06 Eric Belanger <eric@archlinux.org>
+
+ * liferea 1.4.13-1
+ * Upstream update
+ * Cleaned install scriptlet
diff --git a/extra/liferea/PKGBUILD b/extra/liferea/PKGBUILD
new file mode 100644
index 000000000..cbc0f1c96
--- /dev/null
+++ b/extra/liferea/PKGBUILD
@@ -0,0 +1,39 @@
+# $Id: PKGBUILD 112823 2011-03-07 01:00:08Z eric $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+
+pkgname=liferea
+pkgver=1.6.5
+pkgrel=2
+pkgdesc="A desktop news aggregator for online news feeds and weblogs"
+arch=('i686' 'x86_64')
+url="http://liferea.sourceforge.net/"
+license=('GPL')
+depends=('gconf' 'libwebkit' 'libxslt' 'libglade' 'sqlite3' 'hicolor-icon-theme')
+makedepends=('pkg-config' 'intltool' 'lua' 'libnotify')
+optdepends=('lua: for lua scripting support'
+ 'libnotify: for notification support')
+options=('!libtool' '!emptydirs')
+install=liferea.install
+changelog=ChangeLog
+source=(http://downloads.sourceforge.net/sourceforge/liferea/liferea-${pkgver}.tar.gz
+ libnotify-0.7.patch)
+md5sums=('b5a2c0803eec5d0aff0b9ca4114eaf16'
+ 'fca97e3316c1c51e0179c4c7dcce47a2')
+sha1sums=('f24dbd0e81c5a8309f0d19853211fc02ff818477'
+ '52e53dd11a0ffe62304c4f17e80bfe1412cfbf29')
+
+build() {
+ cd "${srcdir}/liferea-${pkgver}"
+ patch -Np1 -i "$srcdir/libnotify-0.7.patch"
+ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --disable-schemas-install
+ make
+}
+
+package() {
+ cd "${srcdir}/liferea-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+
+ install -d "${pkgdir}/usr/share/gconf/schemas"
+ gconf-merge-schema "${pkgdir}/usr/share/gconf/schemas/${pkgname}.schemas" "${pkgdir}"/etc/gconf/schemas/*.schemas
+ rm -f "${pkgdir}"/etc/gconf/schemas/*.schemas
+}
diff --git a/extra/liferea/libnotify-0.7.patch b/extra/liferea/libnotify-0.7.patch
new file mode 100644
index 000000000..6dbbffb87
--- /dev/null
+++ b/extra/liferea/libnotify-0.7.patch
@@ -0,0 +1,21 @@
+diff -u -Nr liferea-1.6.5/src/notification/libnotify.c liferea-1.6.5-libnotify/src/notification/libnotify.c
+--- liferea-1.6.5/src/notification/libnotify.c 2009-06-20 20:33:19.000000000 +0200
++++ liferea-1.6.5-libnotify/src/notification/libnotify.c 2011-03-06 23:53:45.783336455 +0100
+@@ -150,7 +150,7 @@
+ // notify_notification_update ( n, node_get_title(node_p), labelText_now_p, NULL);
+ // notify_notification_clear_actions(n);
+
+- n = notify_notification_new (node_get_title(node_p), labelText_now_p, NULL, NULL);
++ n = notify_notification_new (node_get_title(node_p), labelText_now_p, NULL);
+
+ notify_notification_set_icon_from_pixbuf (n,node_get_icon(node_p));
+
+@@ -244,7 +244,7 @@
+
+ labelSummary_p = g_strdup_printf (ngettext ("%s has %d new / updated headline\n", "%s has %d new / updated headlines\n", item_count),
+ node_get_title (node), item_count);
+- n = notify_notification_new ( _("Feed Update"), labelSummary_p, NULL, NULL);
++ n = notify_notification_new ( _("Feed Update"), labelSummary_p, NULL);
+ g_free(labelSummary_p);
+
+ notify_notification_set_icon_from_pixbuf (n, node_get_icon (node));
diff --git a/extra/liferea/liferea.install b/extra/liferea/liferea.install
new file mode 100644
index 000000000..7d812ccdb
--- /dev/null
+++ b/extra/liferea/liferea.install
@@ -0,0 +1,22 @@
+pkgname=liferea
+
+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/extra/lighttpd/PKGBUILD b/extra/lighttpd/PKGBUILD
new file mode 100644
index 000000000..f8c7e2b44
--- /dev/null
+++ b/extra/lighttpd/PKGBUILD
@@ -0,0 +1,60 @@
+# $Id: PKGBUILD 115072 2011-03-16 17:59:33Z pierre $
+# Maintainer: Pierre Schmitz <pierre@archlinux.de>
+
+pkgname=lighttpd
+pkgver=1.4.28
+pkgrel=4
+pkgdesc='a secure, fast, compliant and very flexible web-server'
+license=('custom')
+arch=('i686' 'x86_64')
+url="http://www.lighttpd.net/"
+depends=('pcre' 'bzip2' 'libldap' 'util-linux')
+makedepends=('fcgi' 'libmysqlclient' 'lua' 'libxml2' 'e2fsprogs' 'sqlite3' 'gdbm' 'pkgconfig')
+optdepends=('libxml2: mod_webdav'
+ 'lua: mod_cml/mod_magnet'
+ 'libmysqlclient: mod_mysql_vhost'
+ 'sqlite3: mod_webdav')
+backup=('etc/lighttpd/lighttpd.conf' 'etc/logrotate.d/lighttpd')
+options=('!libtool' 'emptydirs')
+source=("http://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-${pkgver}.tar.bz2"
+ 'lighttpd.rc.d' 'lighttpd.logrotate.d' 'lighttpd.conf')
+md5sums=('586eb535d31ac299652495b058dd87c4'
+ 'f110637c56d360ecaecb3bf6f7918229'
+ '913e2157fa78d990c32146f387d44c2b'
+ '2803a9ee7f20409c69f1566d2d90720e')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+
+ ./configure --prefix=/usr \
+ --libexecdir=/usr/lib/lighttpd/modules \
+ --sysconfdir=/etc/lighttpd \
+ --with-mysql \
+ --with-ldap \
+ --with-attr \
+ --with-openssl \
+ --with-kerberos5 \
+ --without-fam \
+ --with-webdav-props \
+ --with-webdav-locks \
+ --with-gdbm \
+ --with-memcache \
+ --with-lua
+ make
+}
+
+package() {
+ cd $srcdir/$pkgname-$pkgver
+ make DESTDIR=$pkgdir install
+
+ install -D -m755 $srcdir/lighttpd.rc.d $pkgdir/etc/rc.d/lighttpd
+ install -D -m644 $srcdir/lighttpd.logrotate.d $pkgdir/etc/logrotate.d/lighttpd
+ install -D -m644 $srcdir/lighttpd.conf $pkgdir/etc/lighttpd/lighttpd.conf
+ install -d -m755 -o http -g http $pkgdir/var/{run,log,cache}/lighttpd/
+
+ pushd doc/config >/dev/null
+ find . -type f ! -name 'Makefile*' -exec install -D -m644 {} ${pkgdir}/usr/share/doc/lighttpd/config/{} \;
+ popd >/dev/null
+
+ install -D -m644 COPYING $pkgdir/usr/share/licenses/$pkgname/COPYING
+}
diff --git a/extra/lighttpd/lighttpd.conf b/extra/lighttpd/lighttpd.conf
new file mode 100644
index 000000000..8e8ab69e7
--- /dev/null
+++ b/extra/lighttpd/lighttpd.conf
@@ -0,0 +1,13 @@
+# This is a minimal example config
+# See /usr/share/doc/lighttpd
+# and http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs:ConfigurationOptions
+
+server.port = 80
+server.username = "http"
+server.groupname = "http"
+server.document-root = "/srv/http"
+server.pid-file = "/var/run/lighttpd/lighttpd.pid"
+server.errorlog = "/var/log/lighttpd/error.log"
+dir-listing.activate = "enable"
+index-file.names = ( "index.html" )
+mimetype.assign = ( ".html" => "text/html", ".txt" => "text/plain", ".jpg" => "image/jpeg", ".png" => "image/png" )
diff --git a/extra/lighttpd/lighttpd.logrotate.d b/extra/lighttpd/lighttpd.logrotate.d
new file mode 100644
index 000000000..5ff32a0c5
--- /dev/null
+++ b/extra/lighttpd/lighttpd.logrotate.d
@@ -0,0 +1,6 @@
+/var/log/lighttpd/*log {
+ missingok
+ postrotate
+ /etc/rc.d/lighttpd reload >/dev/null || true
+ endscript
+}
diff --git a/extra/lighttpd/lighttpd.rc.d b/extra/lighttpd/lighttpd.rc.d
new file mode 100644
index 000000000..5f851d63e
--- /dev/null
+++ b/extra/lighttpd/lighttpd.rc.d
@@ -0,0 +1,129 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+
+get_pid_file() {
+ /usr/sbin/lighttpd -p -f /etc/lighttpd/lighttpd.conf 2>/dev/null | grep server.pid-file | cut -d= -f2
+}
+
+get_pid() {
+ local pid_file=$(get_pid_file)
+ local pid=$(pidof -o %PPID lighttpd-angel)
+ # only needed when updating from 1.4.26
+ # TODO: remove in future versions
+ local old_pid=$(pidof -o %PPID lighttpd)
+ if [ -r "${pid_file}" ]; then
+ cat "${pid_file}"
+ elif [ -n "${pid}" ]; then
+ echo "${pid}"
+ elif [ -n "${old_pid}" ]; then
+ echo "${old_pid}"
+ else
+ echo ''
+ fi
+}
+
+test_config() {
+ stat_busy 'Checking configuration'
+ if [ $(id -u) -ne 0 ]; then
+ stat_append '(This script must be run as root)'
+ stat_die
+ fi
+
+ if [ ! -r /etc/lighttpd/lighttpd.conf ]; then
+ stat_append '(/etc/lighttpd/lighttpd.conf not found)'
+ stat_die
+ fi
+
+ local d
+ for d in /var/{run,log,cache}/lighttpd; do
+ if [ ! -d $d ]; then
+ stat_append "(directory $d not found)"
+ stat_die
+ fi
+ done
+
+ /usr/sbin/lighttpd -t -f /etc/lighttpd/lighttpd.conf >/dev/null 2>&1
+ if [ $? -gt 0 ]; then
+ stat_append '(error in /etc/lighttpd/lighttpd.conf)'
+ stat_die
+ fi
+
+ stat_done
+}
+
+start() {
+ stat_busy 'Starting lighttpd'
+
+ local PID=$(get_pid)
+ if [ -z "$PID" ]; then
+ nohup /usr/sbin/lighttpd-angel -D -f /etc/lighttpd/lighttpd.conf >>/var/log/lighttpd/lighttpd-angel.log 2>&1 &
+ if [ $? -gt 0 ]; then
+ stat_die
+ else
+ add_daemon lighttpd
+ stat_done
+ fi
+ else
+ stat_die
+ fi
+}
+
+stop() {
+ stat_busy 'Stopping lighttpd'
+ local PID=$(get_pid)
+ [ -n "$PID" ] && kill $PID &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ local pid_file=$(get_pid_file)
+ [ -f "${pid_file}" ] && rm -f "${pid_file}"
+ rm_daemon lighttpd
+ stat_done
+ fi
+}
+
+reload() {
+ stat_busy 'Reloading lighttpd'
+ local PID=$(get_pid)
+ [ -n "$PID" ] && kill -HUP $PID &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_die
+ else
+ stat_done
+ fi
+}
+
+
+case "$1" in
+ start)
+ test_config
+ start
+ ;;
+ stop)
+ test_config
+ stop
+ ;;
+ reload)
+ test_config
+ reload
+ ;;
+ restart)
+ test_config
+ stop
+ while [ -n "$(get_pid)" ]; do
+ sleep 1
+ done
+ start
+ ;;
+ status)
+ stat_busy 'Checking lighttpd status'
+ ck_status lighttpd
+ ;;
+ *)
+ echo "usage: $0 {start|stop|reload|restart|status}"
+esac
+
+exit 0
diff --git a/extra/link-grammar/PKGBUILD b/extra/link-grammar/PKGBUILD
new file mode 100644
index 000000000..ccbbffaf3
--- /dev/null
+++ b/extra/link-grammar/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 116017 2011-03-22 15:50:13Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Jan de Groot <jgc@archlinux.org>
+
+pkgname=link-grammar
+pkgver=4.7.4
+pkgrel=1
+pkgdesc="A Grammar Checking library"
+arch=('i686' 'x86_64')
+url="http://www.abisource.com/downloads/link-grammar/"
+license=('BSD')
+depends=('glibc')
+options=('!libtool' '!makeflags')
+source=("http://www.abisource.com/downloads/${pkgname}/${pkgver}/${pkgname}-${pkgver}.tar.gz")
+md5sums=('e90e702a953641713a1292db20677bd2')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ make DESTDIR="${pkgdir}" install
+
+ install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/link-grammar/LICENSE"
+}
diff --git a/extra/linux_logo/PKGBUILD b/extra/linux_logo/PKGBUILD
new file mode 100644
index 000000000..f6476dc9e
--- /dev/null
+++ b/extra/linux_logo/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 84817 2010-07-04 16:35:24Z eric $
+# Maintainer: Damir Perisa <damir@archlinux.org>
+# Contributor: Damir Perisa <damir.perisa@bluewin.ch>
+
+pkgname=linux_logo
+pkgver=5.10
+pkgrel=1
+pkgdesc="Text-based logo and system information program"
+arch=('i686' 'x86_64')
+url="http://www.deater.net/weave/vmwprod/linux_logo"
+license=('GPL')
+depends=('glibc')
+source=(http://www.deater.net/weave/vmwprod/linux_logo/${pkgname}-${pkgver}.tar.gz)
+md5sums=('30d635841ba2cf630b040fadbf95377d')
+sha1sums=('0ba27d563b938fd802e424c8c116e1ea3c19aab4')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make PREFIX="${pkgdir}/usr" install
+}
diff --git a/extra/liquidwar/PKGBUILD b/extra/liquidwar/PKGBUILD
new file mode 100644
index 000000000..accbd157d
--- /dev/null
+++ b/extra/liquidwar/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 63784 2010-01-18 15:14:56Z ibiru $
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+# Maintainer: Jason Chu <jason@archlinux.org>
+# Maintainer: Jeff Mickey <jeff@archlinux.org>
+
+pkgname=liquidwar
+pkgver=5.6.4
+pkgrel=4
+pkgdesc="A unique multiplayer wargame"
+arch=('i686' 'x86_64')
+url="http://www.ufoot.org/liquidwar/"
+license=('GPL')
+depends=('allegro>=4.4.0.1')
+makedepends=('python')
+install=liquidwar.install
+source=(http://www.ufoot.org/download/$pkgname/v5/$pkgver/$pkgname-$pkgver.tar.gz)
+md5sums=('6917dd1026e6685404ffbd086f8ba374')
+sha1sums=('a3006c4da9517c3af3b7bf165b2c86fa369a71c6')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ [ "$CARCH" == "x86_64" ] && EXTRAOPTS="--disable-asm"
+ ./configure --prefix=/usr --disable-doc-ps --disable-doc-pdf --disable-doc-php3 $EXTRAOPTS || return 1
+ sed -i 's|$(EXTERN_LIBS)|$(EXTERN_LIBS) -lm|' src/Makefile || return 1
+ make GAMEDIR=/usr/bin DATADIR=/usr/share/$pkgname || return 1
+ make DESTDIR="$pkgdir" DATADIR=/usr/share/$pkgname install || return 1
+ mv "$pkgdir"/usr/games/* "$pkgdir/usr/bin/"
+ rmdir "${pkgdir}/usr/games"
+}
diff --git a/extra/liquidwar/liquidwar.install b/extra/liquidwar/liquidwar.install
new file mode 100644
index 000000000..e864e83ea
--- /dev/null
+++ b/extra/liquidwar/liquidwar.install
@@ -0,0 +1,16 @@
+infodir=/usr/share/info
+file=(liquidwar.info.gz)
+
+post_install() {
+ [ -x usr/bin/install-info ] || return 0
+ install-info $infodir/$file $infodir/dir 2> /dev/null
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ [ -x usr/bin/install-info ] || return 0
+ install-info --delete $infodir/$file $infodir/dir 2> /dev/null
+}
diff --git a/extra/lirc-utils/PKGBUILD b/extra/lirc-utils/PKGBUILD
new file mode 100644
index 000000000..054ccc842
--- /dev/null
+++ b/extra/lirc-utils/PKGBUILD
@@ -0,0 +1,79 @@
+# $Id: PKGBUILD 101413 2010-11-29 05:10:02Z allan $
+# Maintainer:
+# Contributor: Paul Mattal <paul@archlinux.org>
+
+pkgname=lirc-utils
+pkgver=0.9.0.pre1
+pkgrel=2
+pkgdesc="Linux Infrared Remote Control utils"
+arch=('i686' 'x86_64')
+url="http://www.lirc.org/"
+license=('GPL')
+_kernver=2.6.36-ARCH
+depends=('alsa-lib' 'libx11' 'libsm' 'python2' 'libftdi')
+makedepends=('help2man' 'kernel26-headers')
+replaces=('lirc+pctv')
+backup=('etc/conf.d/lircd.conf' 'etc/conf.d/irexec.conf')
+options=('!libtool' '!makeflags')
+source=(http://www.lirc.org/software/snapshots/lirc-0.9.0-pre1.tar.bz2
+ #"http://downloads.sourceforge.net/lirc/lirc-${pkgver}.tar.bz2"
+ lircd lircmd lirc.logrotate lircd.conf irexec.conf irexecd)
+
+build() {
+ cd "${srcdir}/lirc-0.9.0-pre1"
+
+ autoreconf
+ libtoolize
+
+ ./configure --enable-sandboxed \
+ --prefix=/usr \
+ --with-driver=all \
+ --with-kerneldir=/usr/src/linux-${_kernver} \
+ --with-moduledir=/lib/modules/${_kernver}/kernel/drivers/misc \
+ --with-transmitter
+ # disable parallel and bt829
+ # because of incompatibility with smp systems
+ sed -i -e "s:lirc_parallel::" -e "s:lirc_bt829::" \
+ Makefile drivers/Makefile drivers/*/Makefile tools/Makefile
+ # lirc_i2c lirc_igorplugusb lirc_imon lirc_it87 lirc_ite8709
+ # lirc_sasem lirc_serial lirc_sir lirc_ttusbir lirc_zilog
+ # because part of kernel 2.6.36 staging tree
+ sed -i -e "s:lirc_i2c::" -e "s:lirc_igorplugusb::" -e "s:lirc_imon::" \
+ -e "s:lirc_it87::" -e "s:lirc_ite8709::" -e "s:lirc_sasem::" \
+ -e "s:lirc_serial::" -e "s:lirc_sir::" -e "s:lirc_ttusbir::" \
+ -e "s:lirc_zilog::" Makefile drivers/Makefile drivers/*/Makefile tools/Makefile
+ # Disabling lirc_gpio driver as it does no longer work Kernel 2.6.22+
+ sed -i -e "s:lirc_gpio\.o::" drivers/lirc_gpio/Makefile.am
+
+ make
+}
+
+package() {
+ cd "${srcdir}/lirc-0.9.0-pre1"
+ make DESTDIR="${pkgdir}" install
+ install -d "${pkgdir}/usr/share/lirc" "${pkgdir}/etc/rc.d"
+ cp "${srcdir}"/{lircd,lircmd,irexecd} "${pkgdir}/etc/rc.d"
+ cp -rp remotes "${pkgdir}/usr/share/lirc"
+ chmod -R go-w "${pkgdir}/usr/share/lirc/"
+
+ # install the logrotate config
+ install -Dm644 "${srcdir}/lirc.logrotate" "${pkgdir}/etc/logrotate.d/lirc"
+
+ # install conf.d file
+ install -Dm644 "${srcdir}/lircd.conf" "${pkgdir}/etc/conf.d/lircd.conf"
+
+ # install conf.d file
+ install -Dm644 "${srcdir}/irexec.conf" "${pkgdir}/etc/conf.d/irexec.conf"
+
+ install -d "${pkgdir}/etc/lirc"
+
+ # remove built modules
+ rm -r "${pkgdir}/lib/"
+}
+md5sums=('13ba59178adee4e6be8a9a1966ab3133'
+ '8d0e238dc0eda95e340fe570605da492'
+ '85f7fdac55e5256967241864049bf5e9'
+ '3deb02604b37811d41816e9b4385fcc3'
+ '5b1f8c9cd788a39a6283f93302ce5c6e'
+ 'f0c0ac930326168035f0c8e24357ae55'
+ '69d099e6deedfa3c1ee2b6e82d9b8bfb')
diff --git a/extra/lirc-utils/irexec.conf b/extra/lirc-utils/irexec.conf
new file mode 100644
index 000000000..f911c7515
--- /dev/null
+++ b/extra/lirc-utils/irexec.conf
@@ -0,0 +1,5 @@
+#
+# Parameters for irexec daemon (path to lircrc)
+#
+
+IREXEC_OPTS="" \ No newline at end of file
diff --git a/extra/lirc-utils/irexecd b/extra/lirc-utils/irexecd
new file mode 100755
index 000000000..a64b033a5
--- /dev/null
+++ b/extra/lirc-utils/irexecd
@@ -0,0 +1,38 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+. /etc/conf.d/irexec.conf
+
+PID=`pidof -o %PPID /usr/bin/irexec`
+case "$1" in
+ start)
+ stat_busy "Starting IREXEC Daemon"
+ [ -z "$PID" ] && /usr/bin/irexec --daemon $IREXEC_OPTS
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon irexecd
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping IREXEC Daemon"
+ [ ! -z "$PID" ] && kill $PID &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon irexecd
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
+
diff --git a/extra/lirc-utils/lirc.logrotate b/extra/lirc-utils/lirc.logrotate
new file mode 100644
index 000000000..623c4f328
--- /dev/null
+++ b/extra/lirc-utils/lirc.logrotate
@@ -0,0 +1,5 @@
+/var/log/lircd {
+ missingok
+ notifempty
+ delaycompress
+}
diff --git a/extra/lirc-utils/lircd b/extra/lirc-utils/lircd
new file mode 100755
index 000000000..e9739b36e
--- /dev/null
+++ b/extra/lirc-utils/lircd
@@ -0,0 +1,52 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+. /etc/conf.d/lircd.conf
+
+PID=$(pidof -o %PPID /usr/sbin/lircd)
+LIRCD_SYMLINKFILE=/dev/lircd
+LIRCD_SOCKET=/var/run/lirc/lircd
+case "$1" in
+ start)
+ stat_busy "Starting LIRC Daemon"
+ [ ! -d /var/run/lirc ] && install -d /var/run/lirc &>/dev/null
+ rm -f $LIRCD_SOCKET && ln -s $LIRCD_SOCKET $LIRCD_SYMLINKFILE
+ if [ $? -ne 0 ]; then
+ stat_fail
+ exit 0
+ fi
+ [ -n "$LIRC_DRIVER" ] && LIRC_EXTRAOPTS="-H $LIRC_DRIVER $LIRC_EXTRAOPTS"
+ [ -z "$PID" ] &&
+ if [ -n "$LIRC_DEVICE" ] ; then
+ eval /usr/sbin/lircd -d "$LIRC_DEVICE" $LIRC_EXTRAOPTS $LIRC_CONFIGFILE
+ else
+ /usr/sbin/lircd $LIRC_EXTRAOPTS $LIRC_CONFIGFILE
+ fi
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon lircd
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping LIRC Daemon"
+ rm -f $LIRCD_SYMLINKFILE
+ [ ! -z "$PID" ] && kill $PID &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon lircd
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 start|stop|restart"
+esac
+exit 0
diff --git a/extra/lirc-utils/lircd.conf b/extra/lirc-utils/lircd.conf
new file mode 100644
index 000000000..760dab065
--- /dev/null
+++ b/extra/lirc-utils/lircd.conf
@@ -0,0 +1,8 @@
+#
+# Parameters for lirc daemon
+#
+
+LIRC_DEVICE="/dev/lirc0"
+LIRC_DRIVER=""
+LIRC_EXTRAOPTS=""
+LIRC_CONFIGFILE=""
diff --git a/extra/lirc-utils/lircmd b/extra/lirc-utils/lircmd
new file mode 100755
index 000000000..220c47c9c
--- /dev/null
+++ b/extra/lirc-utils/lircmd
@@ -0,0 +1,36 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+PID=`pidof -o %PPID /usr/sbin/lircmd`
+case "$1" in
+ start)
+ stat_busy "Starting lircmd Daemon"
+ [ -z "$PID" ] && /usr/sbin/lircmd
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon lircmd
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping lircmd Daemon"
+ [ ! -z "$PID" ] && kill $PID &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon lircmd
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
diff --git a/extra/lirc/PKGBUILD b/extra/lirc/PKGBUILD
new file mode 100644
index 000000000..852ac5af2
--- /dev/null
+++ b/extra/lirc/PKGBUILD
@@ -0,0 +1,89 @@
+# $Id: PKGBUILD 117640 2011-04-04 14:38:36Z jgc $
+# Maintainer: Paul Mattal <paul@archlinux.org>
+
+pkgbase=lirc
+pkgname=('lirc' 'lirc-utils')
+pkgver=0.9.0
+pkgrel=1
+_kernver=2.6.37-ARCH
+arch=('i686' 'x86_64')
+url="http://www.lirc.org/"
+license=('GPL')
+makedepends=('help2man' 'kernel26-headers>=2.6.37' 'kernel26-headers<2.6.38' 'alsa-lib' 'libx11' 'libftdi' 'libirman' 'python' 'namcap')
+options=('!makeflags' '!strip')
+source=(http://prdownloads.sourceforge.net/${pkgbase}/${pkgbase}-${pkgver}.tar.bz2
+ lircd lircmd lirc.logrotate lircd.conf irexec.conf irexecd)
+md5sums=('b232aef26f23fe33ea8305d276637086'
+ '8d0e238dc0eda95e340fe570605da492'
+ '85f7fdac55e5256967241864049bf5e9'
+ '3deb02604b37811d41816e9b4385fcc3'
+ '5b1f8c9cd788a39a6283f93302ce5c6e'
+ 'f0c0ac930326168035f0c8e24357ae55'
+ '69d099e6deedfa3c1ee2b6e82d9b8bfb')
+
+build() {
+ cd "${srcdir}/lirc-${pkgver}"
+
+ sed -i '/AC_PATH_XTRA/d' configure.ac
+ sed -e 's/@X_CFLAGS@//g' \
+ -e 's/@X_LIBS@//g' \
+ -e 's/@X_PRE_LIBS@//g' \
+ -e 's/@X_EXTRA_LIBS@//g' -i Makefile.am tools/Makefile.am
+ libtoolize
+ autoreconf
+
+ PYTHON=python2 ./configure --enable-sandboxed --prefix=/usr \
+ --with-driver=all --with-kerneldir=/usr/src/linux-${_kernver}/ \
+ --with-moduledir=/lib/modules/${_kernver}/kernel/drivers/misc \
+ --with-transmitter
+
+ # Remove drivers already in kernel
+ sed -e "s:lirc_dev::" -e "s:lirc_bt829::" -e "s:lirc_igorplugusb::" \
+ -e "s:lirc_imon::" -e "s:lirc_parallel::" -e "s:lirc_sasem::" \
+ -e "s:lirc_serial::" -e "s:lirc_sir::" -e "s:lirc_ttusbir::" \
+ -i Makefile drivers/Makefile drivers/*/Makefile tools/Makefile
+ make
+}
+
+package_lirc() {
+ pkgdesc="Linux Infrared Remote Control kernel modules for stock arch kernel"
+ depends=('lirc-utils' 'kernel26>=2.6.37' 'kernel26<2.6.38')
+ replaces=('lirc+pctv')
+ install=lirc.install
+
+ cd "${srcdir}/lirc-${pkgver}/drivers"
+ make DESTDIR="${pkgdir}" install
+
+ # set the kernel we've built for inside the install script
+ sed -i -e "s/KERNEL_VERSION=.*/KERNEL_VERSION=${_kernver}/g" "${startdir}/lirc.install"
+ # gzip -9 modules
+ find "${pkgdir}" -name '*.ko' -exec gzip -9 {} \;
+}
+
+package_lirc-utils() {
+ pkgdesc="Linux Infrared Remote Control utils"
+ depends=('alsa-lib' 'libx11' 'libftdi' 'libirman')
+ optdepends=('python2: pronto2lirc utility')
+ options=('strip' '!libtool')
+
+ cd "${srcdir}/lirc-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+ install -d "${pkgdir}/usr/share/lirc" "${pkgdir}/etc/rc.d"
+ cp "${srcdir}"/{lircd,lircmd,irexecd} "${pkgdir}/etc/rc.d"
+ cp -rp remotes "${pkgdir}/usr/share/lirc"
+ chmod -R go-w "${pkgdir}/usr/share/lirc/"
+
+ # install the logrotate config
+ install -Dm644 "${srcdir}/lirc.logrotate" "${pkgdir}/etc/logrotate.d/lirc"
+
+ # install conf.d file
+ install -Dm644 "${srcdir}/lircd.conf" "${pkgdir}/etc/conf.d/lircd.conf"
+
+ # install conf.d file
+ install -Dm644 "${srcdir}/irexec.conf" "${pkgdir}/etc/conf.d/irexec.conf"
+
+ install -d "${pkgdir}/etc/lirc"
+
+ # remove built modules
+ rm -r "${pkgdir}/lib/"
+}
diff --git a/extra/lirc/irexec.conf b/extra/lirc/irexec.conf
new file mode 100644
index 000000000..f911c7515
--- /dev/null
+++ b/extra/lirc/irexec.conf
@@ -0,0 +1,5 @@
+#
+# Parameters for irexec daemon (path to lircrc)
+#
+
+IREXEC_OPTS="" \ No newline at end of file
diff --git a/extra/lirc/irexecd b/extra/lirc/irexecd
new file mode 100755
index 000000000..a64b033a5
--- /dev/null
+++ b/extra/lirc/irexecd
@@ -0,0 +1,38 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+. /etc/conf.d/irexec.conf
+
+PID=`pidof -o %PPID /usr/bin/irexec`
+case "$1" in
+ start)
+ stat_busy "Starting IREXEC Daemon"
+ [ -z "$PID" ] && /usr/bin/irexec --daemon $IREXEC_OPTS
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon irexecd
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping IREXEC Daemon"
+ [ ! -z "$PID" ] && kill $PID &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon irexecd
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
+
diff --git a/extra/lirc/lirc.install b/extra/lirc/lirc.install
new file mode 100644
index 000000000..61151ecf5
--- /dev/null
+++ b/extra/lirc/lirc.install
@@ -0,0 +1,16 @@
+KERNEL_VERSION=2.6.38-ARCH
+
+post_install() {
+ # updating module dependencies
+ echo ">>> Updating module dependencies. Please wait ..."
+ depmod $KERNEL_VERSION > /dev/null 2>&1
+}
+
+post_upgrade() {
+ post_install
+}
+
+# arg 1: the old package version
+post_remove() {
+ post_install
+}
diff --git a/extra/lirc/lirc.logrotate b/extra/lirc/lirc.logrotate
new file mode 100644
index 000000000..623c4f328
--- /dev/null
+++ b/extra/lirc/lirc.logrotate
@@ -0,0 +1,5 @@
+/var/log/lircd {
+ missingok
+ notifempty
+ delaycompress
+}
diff --git a/extra/lirc/lircd b/extra/lirc/lircd
new file mode 100755
index 000000000..e9739b36e
--- /dev/null
+++ b/extra/lirc/lircd
@@ -0,0 +1,52 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+. /etc/conf.d/lircd.conf
+
+PID=$(pidof -o %PPID /usr/sbin/lircd)
+LIRCD_SYMLINKFILE=/dev/lircd
+LIRCD_SOCKET=/var/run/lirc/lircd
+case "$1" in
+ start)
+ stat_busy "Starting LIRC Daemon"
+ [ ! -d /var/run/lirc ] && install -d /var/run/lirc &>/dev/null
+ rm -f $LIRCD_SOCKET && ln -s $LIRCD_SOCKET $LIRCD_SYMLINKFILE
+ if [ $? -ne 0 ]; then
+ stat_fail
+ exit 0
+ fi
+ [ -n "$LIRC_DRIVER" ] && LIRC_EXTRAOPTS="-H $LIRC_DRIVER $LIRC_EXTRAOPTS"
+ [ -z "$PID" ] &&
+ if [ -n "$LIRC_DEVICE" ] ; then
+ eval /usr/sbin/lircd -d "$LIRC_DEVICE" $LIRC_EXTRAOPTS $LIRC_CONFIGFILE
+ else
+ /usr/sbin/lircd $LIRC_EXTRAOPTS $LIRC_CONFIGFILE
+ fi
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon lircd
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping LIRC Daemon"
+ rm -f $LIRCD_SYMLINKFILE
+ [ ! -z "$PID" ] && kill $PID &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon lircd
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 start|stop|restart"
+esac
+exit 0
diff --git a/extra/lirc/lircd.conf b/extra/lirc/lircd.conf
new file mode 100644
index 000000000..760dab065
--- /dev/null
+++ b/extra/lirc/lircd.conf
@@ -0,0 +1,8 @@
+#
+# Parameters for lirc daemon
+#
+
+LIRC_DEVICE="/dev/lirc0"
+LIRC_DRIVER=""
+LIRC_EXTRAOPTS=""
+LIRC_CONFIGFILE=""
diff --git a/extra/lirc/lircmd b/extra/lirc/lircmd
new file mode 100755
index 000000000..220c47c9c
--- /dev/null
+++ b/extra/lirc/lircmd
@@ -0,0 +1,36 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+PID=`pidof -o %PPID /usr/sbin/lircmd`
+case "$1" in
+ start)
+ stat_busy "Starting lircmd Daemon"
+ [ -z "$PID" ] && /usr/sbin/lircmd
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon lircmd
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping lircmd Daemon"
+ [ ! -z "$PID" ] && kill $PID &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon lircmd
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
diff --git a/extra/live-media/PKGBUILD b/extra/live-media/PKGBUILD
new file mode 100644
index 000000000..072ef473a
--- /dev/null
+++ b/extra/live-media/PKGBUILD
@@ -0,0 +1,40 @@
+# $Id: PKGBUILD 116022 2011-03-22 15:58:44Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Gilles CHAUVIN <gcnweb@gmail.com>
+
+pkgname=live-media
+pkgver=2011.03.14
+pkgrel=1
+pkgdesc="A set of C++ libraries for multimedia streaming"
+arch=('i686' 'x86_64')
+license=('LGPL')
+url="http://live555.com/liveMedia"
+depends=('gcc-libs')
+source=("http://live555.com/liveMedia/public/live.${pkgver}.tar.gz")
+md5sums=('ff65b2c598e970b4b6c8219a1811de00')
+
+build() {
+ cd ${srcdir}/live
+
+ sed \
+ -e 's/$(INCLUDES) -I. -O2 -DSOCKLEN_T/$(INCLUDES) -I. -O2 -I. -fPIC -DSOCKLEN_T/g' \
+ -e 's/\(LIBRARY_LINK =\).*/\1 $(LD) -o/g' \
+ -e 's/\(LIBRARY_LINK_OPTS =\).*/\1 $(LINK_OPTS) -r -Bstatic/g' \
+ -i config.linux
+ ./genMakefiles linux
+ make
+}
+
+package() {
+ cd ${srcdir}/live
+
+ for dir in BasicUsageEnvironment UsageEnvironment groupsock liveMedia; do
+ mkdir -p ${pkgdir}/usr/lib/live/${dir}
+ cp -r ${dir}/*.a ${dir}/include ${pkgdir}/usr/lib/live/${dir}
+ done
+
+ mkdir -p ${pkgdir}/usr/bin
+ for testprog in `find testProgs -type f -perm 755`; do
+ install ${testprog} ${pkgdir}/usr/bin
+ done
+}
diff --git a/extra/lm_sensors/PKGBUILD b/extra/lm_sensors/PKGBUILD
new file mode 100644
index 000000000..105c9f1b5
--- /dev/null
+++ b/extra/lm_sensors/PKGBUILD
@@ -0,0 +1,56 @@
+# $Id: PKGBUILD 117144 2011-03-29 01:07:42Z eric $
+# Maintainer: Eric Bélanger <eric@archlinux.org>
+
+pkgname=lm_sensors
+pkgver=3.3.0
+pkgrel=1
+pkgdesc="Collection of user space tools for general SMBus access and hardware monitoring"
+arch=('i686' 'x86_64')
+url="http://www.lm-sensors.org/"
+license=('GPL' 'LGPL')
+depends=('perl' 'sysfsutils' 'rrdtool')
+backup=('etc/sensors3.conf' 'etc/conf.d/healthd' 'etc/conf.d/sensord')
+options=('!emptydirs')
+source=(http://dl.lm-sensors.org/lm-sensors/releases/lm_sensors-${pkgver}.tar.bz2 \
+ sensors.rc fancontrol.rc sensors-detect.patch healthd healthd.conf healthd.rc \
+ sensord.conf sensord.rc daemonarg.patch)
+md5sums=('5eb18d7531ead4f54f28a1133a606535'
+ 'c370f5e620bfe41113354a1e22c0c18c'
+ '232bedf043dd5dedde82df1a399c682c'
+ '47c40b381d1f25d6634ae84cecf35f33'
+ '6549050897c237514aeaa2bb6cfd29ea'
+ 'f8af587038b0e2a89c441f7eeaa5e640'
+ '970408d2e509dc4138927020efefe323'
+ '96a8dd468e81d455ec9b165bdf33e0b7'
+ '41a5c20854bbff00ea7174bd2276b736'
+ '40c8eb16af8249a0f1d851fc1057ea15')
+sha1sums=('16c13a186557164fa51459a02209b120c0335f96'
+ 'b2e664b9b87759991f02d0a1e8cac5e95098c0a5'
+ 'a068ac0a3115a6191a487e11422506baa922b40a'
+ '47095a32a918d6be50bd8daa8aaa9c24940d60e9'
+ '78b5cd36c3cb8e98b972cdd8c4a12687d79a79a8'
+ '6c4e8a2d89dd2fd3ca2f0f4f3b1230111e01b0fc'
+ 'e662881f5d3f3f35a1bc97ba45d2c471dd28c37f'
+ 'de8d4d65406815c389f8a04e2a8508a1ae6749c8'
+ '72a60251d1d55a67307dab4105d9f3f01a080af4'
+ '34241388c4001bfb6e49b7e10da1217e29a258d6')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -p1 < ../sensors-detect.patch
+ patch -p1 < ../daemonarg.patch
+ make PREFIX=/usr
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make PROG_EXTRA=sensord BUILD_STATIC_LIB=0 \
+ PREFIX=/usr MANDIR=/usr/share/man DESTDIR="${pkgdir}" install
+ install -D -m755 "${srcdir}/sensors.rc" "${pkgdir}/etc/rc.d/sensors"
+ install -D -m755 "${srcdir}/fancontrol.rc" "${pkgdir}/etc/rc.d/fancontrol"
+ install -D -m755 "${srcdir}/healthd" "${pkgdir}/usr/sbin/healthd"
+ install -D -m755 "${srcdir}/healthd.rc" "${pkgdir}/etc/rc.d/healthd"
+ install -D -m644 "${srcdir}/healthd.conf" "${pkgdir}/etc/conf.d/healthd"
+ install -D -m755 "${srcdir}/sensord.rc" "${pkgdir}/etc/rc.d/sensord"
+ install -D -m644 "${srcdir}/sensord.conf" "${pkgdir}/etc/conf.d/sensord"
+}
diff --git a/extra/lm_sensors/daemonarg.patch b/extra/lm_sensors/daemonarg.patch
new file mode 100644
index 000000000..4b80cef19
--- /dev/null
+++ b/extra/lm_sensors/daemonarg.patch
@@ -0,0 +1,50 @@
+diff -ru lm_sensors-3.1.2-1/prog/pwm/fancontrol lm_sensors-3.1.2-1_pyropeter/usr/sbin/fancontrol
+--- lm_sensors-3.1.2-1/prog/pwm/fancontrol 2010-02-03 03:45:15.000000000 +0100
++++ lm_sensors-3.1.2-1_pyropeter/prog/pwm/fancontrol 2010-03-07 01:37:09.000000000 +0100
+@@ -5,7 +5,9 @@
+ #
+ # Version 0.70
+ #
+-# Usage: fancontrol [CONFIGFILE]
++# Usage: fancontrol [-D] [CONFIGFILE]
++#
++# (-D causes fancontrol to 'fork' to the background after some tests)
+ #
+ # Dependencies:
+ # bash, egrep, sed, cut, sleep, readlink, lm_sensors :)
+@@ -43,6 +45,12 @@
+ #DEBUG=1
+ MAX=255
+
++DAEMON=0
++if [ "$1" = "-D" ]; then
++ DAEMON=1
++ shift
++fi
++
+ declare -i pwmval
+
+ function LoadConfig {
+@@ -303,7 +311,6 @@
+ echo "File $PIDFILE exists, is fancontrol already running?"
+ exit 1
+ fi
+-echo $$ > "$PIDFILE"
+
+ # $1 = pwm file name
+ function pwmdisable()
+@@ -475,6 +482,14 @@
+ let fcvcount=$fcvcount+1
+ done
+
++if [ "$DAEMON" -gt 0 ]; then
++ echo "Forking..."
++ $0 $* &> /dev/null &
++ exit 0
++fi
++
++echo $$ > "$PIDFILE"
++
+ echo 'Starting automatic fan control...'
+
+ # main loop calling the main function at specified intervals
diff --git a/extra/lm_sensors/fancontrol.rc b/extra/lm_sensors/fancontrol.rc
new file mode 100644
index 000000000..8e98d06f2
--- /dev/null
+++ b/extra/lm_sensors/fancontrol.rc
@@ -0,0 +1,35 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+PID=$(pidof -o %PPID -x /usr/sbin/fancontrol)
+case "$1" in
+ start)
+ stat_busy "Starting fancontrol"
+ [ -z "$PID" ] && /usr/sbin/fancontrol -D &>/dev/null
+ if [ $? -gt 0 -o -n "$PID" ]; then
+ stat_fail
+ else
+ add_daemon fancontrol
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping fancontrol"
+ [ ! -z "$PID" ] && kill $PID &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon fancontrol
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
diff --git a/extra/lm_sensors/healthd b/extra/lm_sensors/healthd
new file mode 100644
index 000000000..0315dd788
--- /dev/null
+++ b/extra/lm_sensors/healthd
@@ -0,0 +1,46 @@
+#!/bin/bash
+
+#
+# /usr/sbin/healthd
+#
+
+. /etc/conf.d/healthd
+
+cmd="${ALARM_CMD}"
+addr="${ADMIN_EMAIL}"
+slp="${ALARM_SLEEP}"
+sensors="/usr/bin/sensors"
+
+
+while [ $# -gt 0 ] ; do
+ case "${1}" in
+ -c ) cmd="${2}" ; shift 2 ;;
+ -m ) addr="${2}" ; shift 2 ;;
+ -s ) slp="${2}" ; shift 2 ;;
+ * ) shift 1 ;;
+ esac
+done
+
+[ -n "${cmd}" ] && [ -n "$( which -- "${cmd%% *}" )" ] || \
+ [ -n "${addr}" ] || exit 1
+
+[ "${slp}" -ge 2 ] || slp=600
+
+while true ; do
+ sleep 15
+ message="$( $sensors )"
+ case "$message" in
+ '' ) message='Could not get any sensor values !' ;;
+ *ALARM* ) : ;;
+ * ) message='' ;;
+ esac
+ if [ -n "$message" ]; then
+ if [ -n "${addr}" ]; then
+ echo "$message" | mail -s \
+ "Sensors ALARM detected at host: $( hostname )" \
+ "${addr}"
+ fi
+ [ -z "${cmd}" ] || ${cmd} &
+ sleep ${slp}
+ fi
+done &
diff --git a/extra/lm_sensors/healthd.conf b/extra/lm_sensors/healthd.conf
new file mode 100644
index 000000000..a8b2c3fa3
--- /dev/null
+++ b/extra/lm_sensors/healthd.conf
@@ -0,0 +1,17 @@
+#
+# /etc/conf.d/healthd
+#
+
+# reset any pending alarms on startup
+ALARM_RESET="yes"
+
+# where to sent mails on alarm
+ADMIN_EMAIL="root"
+
+# Seconds to sleep when alarm detected before checking again
+# If you want to fill up your mail inbox set this to 2. ;-)
+ALARM_SLEEP=600
+
+# command to run in background on each alarm
+# N.B.: If you choose to use the beep command, you'll need to install it: pacman -S beep
+ALARM_CMD="beep -f 800 -l 500 -d 500 -r 600"
diff --git a/extra/lm_sensors/healthd.rc b/extra/lm_sensors/healthd.rc
new file mode 100644
index 000000000..7bb79519f
--- /dev/null
+++ b/extra/lm_sensors/healthd.rc
@@ -0,0 +1,52 @@
+#!/bin/bash
+
+#
+# /etc/rc.d/healthd
+#
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+. /etc/conf.d/healthd
+
+maybe_alarm_reset() {
+ case "${ALARM_RESET}" in
+ yes) /usr/bin/sensors > /dev/null
+ ;;
+ no) true
+ ;;
+ *) false
+ esac
+ return $?
+}
+
+PID=$(pidof -x -o %PPID /usr/sbin/healthd)
+case "${1}" in
+ start)
+ stat_busy "Starting Health Daemon"
+ [ -z "${PID}" ] && maybe_alarm_reset && /usr/sbin/healthd &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ echo "${PID}" > /var/run/healthd.pid
+ add_daemon healthd
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping Health Daemon"
+ [ ! -z "${PID}" ] && kill ${PID} &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon healthd
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 2
+ $0 start
+ ;;
+ *) echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
diff --git a/extra/lm_sensors/sensord.conf b/extra/lm_sensors/sensord.conf
new file mode 100644
index 000000000..a1cf091c1
--- /dev/null
+++ b/extra/lm_sensors/sensord.conf
@@ -0,0 +1,4 @@
+#
+# Parameters to be passed to sensord
+#
+SENSORD_ARGS=""
diff --git a/extra/lm_sensors/sensord.rc b/extra/lm_sensors/sensord.rc
new file mode 100644
index 000000000..e3ef4d26d
--- /dev/null
+++ b/extra/lm_sensors/sensord.rc
@@ -0,0 +1,37 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+. /etc/conf.d/sensord
+
+PID=$(pidof -o %PPID /usr/sbin/sensord)
+case "$1" in
+ start)
+ stat_busy "Starting sensord"
+ [ -z "$PID" ] && /usr/sbin/sensord ${SENSORD_ARGS}
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon sensord
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping sensord"
+ [ ! -z "$PID" ] && kill $PID &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon sensord
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
diff --git a/extra/lm_sensors/sensors-detect.patch b/extra/lm_sensors/sensors-detect.patch
new file mode 100644
index 000000000..1d12a2ce9
--- /dev/null
+++ b/extra/lm_sensors/sensors-detect.patch
@@ -0,0 +1,61 @@
+diff -Naur lm_sensors-3.1.0/prog/detect/sensors-detect lm_sensors-3.1.0-new/prog/detect/sensors-detect
+--- lm_sensors-3.1.0/prog/detect/sensors-detect 2009-03-03 20:36:33.000000000 -0500
++++ lm_sensors-3.1.0-new/prog/detect/sensors-detect 2009-03-03 20:52:06.000000000 -0500
+@@ -5282,21 +5282,21 @@
+ }
+ }
+
+- my $have_sysconfig = -d '/etc/sysconfig';
+- printf "Do you want to \%s /etc/sysconfig/lm_sensors? (\%s): ",
+- (-e '/etc/sysconfig/lm_sensors' ? 'overwrite' : 'generate'),
++ my $have_sysconfig = -d '/etc/conf.d';
++ printf "Do you want to \%s /etc/conf.d/lm_sensors? (\%s): ",
++ (-e '/etc/conf.d/lm_sensors' ? 'overwrite' : 'generate'),
+ ($have_sysconfig ? 'YES/no' : 'yes/NO');
+ $_ = <STDIN>;
+ if (($have_sysconfig and not m/^\s*n/i) or m/^\s*y/i) {
+ unless ($have_sysconfig) {
+- mkdir('/etc/sysconfig', 0777)
+- or die "Sorry, can't create /etc/sysconfig ($!)";
++ mkdir('/etc/conf.d', 0777)
++ or die "Sorry, can't create /etc/conf.d ($!)";
+ }
+- open(local *SYSCONFIG, ">/etc/sysconfig/lm_sensors")
+- or die "Sorry, can't create /etc/sysconfig/lm_sensors ($!)";
++ open(local *SYSCONFIG, ">/etc/conf.d/lm_sensors")
++ or die "Sorry, can't create /etc/conf.d/lm_sensors ($!)";
+ print SYSCONFIG "# Generated by sensors-detect on " . scalar localtime() . "\n";
+ print SYSCONFIG <<'EOT';
+-# This file is sourced by /etc/init.d/lm_sensors and defines the modules to
++# This file is sourced by /etc/rc.d/lm_sensors and defines the modules to
+ # be loaded/unloaded.
+ #
+ # The format of this file is a shell script that simply defines variables:
+@@ -5322,13 +5322,13 @@
+ }
+ close(SYSCONFIG);
+
+- print "Copy prog/init/lm_sensors.init to /etc/init.d/lm_sensors\n".
++ print "Copy prog/init/lm_sensors.init to /etc/rc.d/lm_sensors\n".
+ "for initialization at boot time.\n"
+- unless -f "/etc/init.d/lm_sensors";
++ unless -f "/etc/rc.d/lm_sensors";
+
+- if (-x "/sbin/insserv" && -f "/etc/init.d/lm_sensors") {
+- system("/sbin/insserv", "/etc/init.d/lm_sensors");
+- } elsif (-x "/sbin/chkconfig" && -f "/etc/init.d/lm_sensors") {
++ if (-x "/sbin/insserv" && -f "/etc/rc.d/lm_sensors") {
++ system("/sbin/insserv", "/etc/rc.d/lm_sensors");
++ } elsif (-x "/sbin/chkconfig" && -f "/etc/rc.d/lm_sensors") {
+ system("/sbin/chkconfig", "lm_sensors", "on");
+ if (-x "/sbin/service") {
+ system("/sbin/service", "lm_sensors", "start");
+@@ -5377,7 +5377,7 @@
+ exit -1;
+ }
+
+- if (-x "/sbin/service" && -f "/etc/init.d/lm_sensors" &&
++ if (-x "/sbin/service" && -f "/etc/rc.d/sensors" &&
+ -f "/var/lock/subsys/lm_sensors") {
+ system("/sbin/service", "lm_sensors", "stop");
+ }
diff --git a/extra/lm_sensors/sensors.rc b/extra/lm_sensors/sensors.rc
new file mode 100644
index 000000000..4acde2202
--- /dev/null
+++ b/extra/lm_sensors/sensors.rc
@@ -0,0 +1,119 @@
+#!/bin/bash
+
+# description: sensors is used for monitoring motherboard sensor values.
+# config: /etc/conf.d/lm_sensors
+
+# See also the lm_sensors homepage at:
+# http://www2.lm-sensors.nu/~lm78/index.html
+
+# It uses a config file /etc/conf.d/lm_sensors that contains the modules to
+# be loaded/unloaded. That file is sourced into this one.
+
+# The format of that file a shell script that simply defines the modules
+# in order as normal shell variables with the special names:
+# MODULE_1, MODULE_2, MODULE_3, etc.
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+PSENSORS=/usr/bin/sensors
+
+if $(grep -q sysfs /proc/mounts); then
+ WITHSYS=1
+else
+ WITHSYS=0
+fi
+
+if [ $WITHSYS == "0" ]; then
+ # If sensors isn't supported by the kernel, try loading the module...
+ [ -e /proc/sys/dev/sensors ] || /sbin/modprobe i2c-proc &>/dev/null
+
+ # Don't bother if /proc/sensors still doesn't exist, kernel doesn't have support for sensors.
+ if ! [ -e /proc/sys/dev/sensors ]; then
+ echo "lm_sensors: kernel does not have sensors support"
+ stat_fail
+ fi
+
+ # If sensors was not already running, unload the module...
+ [ -e /var/run/daemons/sensors ] || /sbin/modprobe -r i2c-proc &>/dev/null
+fi
+
+if [ -e /etc/conf.d/lm_sensors ]; then
+ CONFIG=/etc/conf.d/lm_sensors
+elif [ -e /etc/sysconfig/lm_sensors ]; then
+ # Moving config to new Arch-specific location
+ mv /etc/sysconfig/lm_sensors /etc/conf.d/lm_sensors
+ CONFIG=/etc/conf.d/lm_sensors
+fi
+
+case "$1" in
+ start)
+ stat_busy "Starting Up Sensors"
+
+ if [ -r "$CONFIG" ]; then
+ . "$CONFIG"
+ modules=$(grep \^MODULE_ $CONFIG | wc -l | tr -d ' ')
+ i=0
+ while [ $i -lt $modules ] ; do
+ module=$(eval echo '$'MODULE_$i)
+ # echo starting module __${module}__ #debug
+ /sbin/modprobe $module &>/dev/null
+ i=$(expr $i + 1)
+ done
+ fi
+
+ $PSENSORS -s
+
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon sensors
+ stat_done
+ fi
+ ;;
+
+ stop)
+ stat_busy "Shutting Down Sensors"
+
+ if [ -r "$CONFIG" ]; then
+ . "$CONFIG"
+ modules=$(grep \^MODULE_ $CONFIG | wc -l | tr -d ' ')
+ i=$(expr $modules - 1)
+ while [ $i -ge 0 ] ; do
+ module=$(eval echo '$'MODULE_$i)
+ # echo stoping module __${module}__ #debug
+ /sbin/modprobe -r $module &>/dev/null
+ i=$(expr $i - 1)
+ done
+ fi
+
+ if [ $WITHSYS == "0" ]; then
+ /sbin/modprobe -r i2c-proc &>/dev/null
+ fi
+
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon sensors
+ stat_done
+ fi
+ ;;
+
+ status)
+ $PSENSORS
+ ;;
+
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+
+ condrestart)
+ [ -e /var/run/daemons/sensors ] && $0 restart || :
+ ;;
+
+ *)
+ echo "Usage: $0 {start|stop|restart|status|condrestart}"
+esac
+exit 0
diff --git a/extra/loudmouth/01-fix-sasl-md5-digest-uri.patch b/extra/loudmouth/01-fix-sasl-md5-digest-uri.patch
new file mode 100644
index 000000000..5bca69c0c
--- /dev/null
+++ b/extra/loudmouth/01-fix-sasl-md5-digest-uri.patch
@@ -0,0 +1,24 @@
+diff --git a/loudmouth/lm-connection.c b/loudmouth/lm-connection.c
+index 21c1bc2..ae8de94 100644
+--- a/loudmouth/lm-connection.c
++++ b/loudmouth/lm-connection.c
+@@ -1441,11 +1441,18 @@ lm_connection_authenticate (LmConnection *connection,
+ connection->effective_jid = g_strdup_printf ("%s/%s",
+ connection->jid, connection->resource);
+
+ if (connection->use_sasl) {
++ gchar *domain = NULL;
++
++ if (!connection_get_server_from_jid (connection->jid, &domain)) {
++ domain = g_strdup (connection->server);
++ }
++
+ lm_sasl_authenticate (connection->sasl,
+ username, password,
+- connection->server,
++ domain,
+ connection_sasl_auth_finished);
++ g_free (domain);
+
+ connection->features_cb =
+ lm_message_handler_new (connection_features_cb,
diff --git a/extra/loudmouth/03-drop-stanzas-on-fail.patch b/extra/loudmouth/03-drop-stanzas-on-fail.patch
new file mode 100644
index 000000000..87b86a998
--- /dev/null
+++ b/extra/loudmouth/03-drop-stanzas-on-fail.patch
@@ -0,0 +1,45 @@
+From: Sjoerd Simons <sjoerd.simons@collabora.co.uk>
+Date: Tue, 13 Jan 2009 11:28:44 +0000
+Subject: [PATCH] Drop stanzas when failing to convert them to LmMessages
+
+when a stanza comes in that for some reason can't be parsed into an LmMessage,
+just drop them on the floor instead of blocking the parser. I've seen this
+issue happen in practise because some (buggy?) client sending an iq with a
+prefix e.g. <client:iq xmlns:client="jabber:client" ... />
+---
+ loudmouth/lm-parser.c | 15 ++++++---------
+ 1 files changed, 6 insertions(+), 9 deletions(-)
+
+diff --git a/loudmouth/lm-parser.c b/loudmouth/lm-parser.c
+index 1938d56..89f6675 100644
+--- a/loudmouth/lm-parser.c
++++ b/loudmouth/lm-parser.c
+@@ -151,19 +151,16 @@ parser_end_node_cb (GMarkupParseContext *context,
+ if (!m) {
+ g_warning ("Couldn't create message: %s\n",
+ parser->cur_root->name);
+- return;
+- }
+-
+- g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_PARSER,
++ } else {
++ g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_PARSER,
+ "Have a new message\n");
+- if (parser->function) {
+- (* parser->function) (parser, m, parser->user_data);
++ if (parser->function) {
++ (* parser->function) (parser, m, parser->user_data);
++ }
++ lm_message_unref (m);
+ }
+
+- lm_message_unref (m);
+ lm_message_node_unref (parser->cur_root);
+-
+-
+ parser->cur_node = parser->cur_root = NULL;
+ } else {
+ LmMessageNode *tmp_node;
+--
+1.5.6.5
+
diff --git a/extra/loudmouth/04-use-pkg-config-for-gnutls.patch b/extra/loudmouth/04-use-pkg-config-for-gnutls.patch
new file mode 100644
index 000000000..20f388e89
--- /dev/null
+++ b/extra/loudmouth/04-use-pkg-config-for-gnutls.patch
@@ -0,0 +1,23 @@
+Description: use pkg-config to detect gnutls
+Debian: http://bugs.debian.org/529835
+Origin: http://groups.google.com/group/loudmouth-dev/browse_thread/thread/3f78255837048daf#
+
+--- a/configure.ac.orig 2009-08-16 20:29:36.000000000 +0200
++++ b/configure.ac 2009-08-16 20:30:43.000000000 +0200
+@@ -146,10 +146,12 @@ AC_ARG_WITH(openssl-libs,
+ enable_ssl=no
+ if test "x$ac_ssl" = "xgnutls"; then
+ dnl Look for GnuTLS
+- AM_PATH_LM_LIBGNUTLS($GNUTLS_REQUIRED, have_libgnutls=yes, have_libgnutls=no)
+- if test "x$have_libgnutls" = "xyes"; then
+- CFLAGS="$CFLAGS $LIBGNUTLS_CFLAGS"
+- LIBS="$LIBS $LIBGNUTLS_LIBS"
++ PKG_CHECK_MODULES(GNUTLS, gnutls >= $GNUTLS_REQUIRED, have_gnutls=yes, have_gnutls=no)
++ if test "x$have_gnutls" = "xyes"; then
++ AC_SUBST(ASYNCNS_CFLAGS)
++ AC_SUBST(ASYNCNS_LIBS)
++ CFLAGS="$CFLAGS $GNUTLS_CFLAGS"
++ LIBS="$LIBS $GNUTLS_LIBS"
+ AC_DEFINE(HAVE_GNUTLS, 1, [whether to use GnuTSL support.])
+ enable_ssl=GnuTLS
+ else
diff --git a/extra/loudmouth/PKGBUILD b/extra/loudmouth/PKGBUILD
new file mode 100644
index 000000000..ad508d66e
--- /dev/null
+++ b/extra/loudmouth/PKGBUILD
@@ -0,0 +1,35 @@
+ $Id: PKGBUILD,v 1.3 2003/11/06 08:27:17 dorphell Exp
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: damir <damir@archlinux.org>
+# Contributor: Brice Carpentier <brice.carpentier@orange.fr>
+
+pkgname=loudmouth
+pkgver=1.4.3
+pkgrel=2
+pkgdesc="A lightweight Jabber client library written in C/Glib"
+arch=('i686' 'x86_64')
+license=('LGPL')
+url="http://groups.google.com/group/loudmouth-dev"
+depends=('glib2>=2.24.1' 'gnutls>=2.8.6' 'libidn>=1.16')
+options=('!libtool')
+makedepends=('intltool' 'pkgconfig' 'gtk-doc')
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/1.4/${pkgname}-${pkgver}.tar.bz2
+ 01-fix-sasl-md5-digest-uri.patch
+ 03-drop-stanzas-on-fail.patch
+ 04-use-pkg-config-for-gnutls.patch)
+md5sums=('55339ca42494690c3942ee1465a96937'
+ 'dc799cea18b24847b1e008c7424010a3'
+ 'b7b2d81b01a5eee5fd5e21cae67b4af7'
+ 'bffb25b9551df43255fe1706588582f3')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i "${srcdir}/01-fix-sasl-md5-digest-uri.patch"
+ patch -Np1 -i "${srcdir}/03-drop-stanzas-on-fail.patch"
+ patch -Np1 -i "${srcdir}/04-use-pkg-config-for-gnutls.patch"
+ libtoolize --force
+ autoreconf
+ ./configure --prefix=/usr --disable-static
+ make
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/lpsolve/PKGBUILD b/extra/lpsolve/PKGBUILD
new file mode 100644
index 000000000..d956a516f
--- /dev/null
+++ b/extra/lpsolve/PKGBUILD
@@ -0,0 +1,36 @@
+ # $Id: PKGBUILD 51162 2009-09-05 13:45:34Z andyrtr $
+# Maintainer: AndyRTR <andyrtr@archlinux.org>
+
+pkgname=lpsolve
+_origname=lp_solve
+pkgver=5.5.2.0
+_mainver=5.5
+pkgrel=1
+pkgdesc="a Mixed Integer Linear Programming (MILP) solver"
+arch=('i686' 'x86_64')
+url="http://lpsolve.sourceforge.net/"
+license=('GPL')
+depends=('glibc')
+source=(http://downloads.sourceforge.net/project/lpsolve/lpsolve/${pkgver}/lp_solve_${pkgver}_source.tar.gz
+ cflags.patch)
+md5sums=('167c0fb4ab178e0b7ab50bf0a635a836'
+ '7403f745d06619f59f52800b655d8751')
+
+build() {
+ cd "${srcdir}/${_origname}_${_mainver}"
+ patch -Np1 -i $srcdir/cflags.patch || return 1
+
+ # taken from Fedora spec
+ cd lpsolve55
+ sh -x ccc
+ rm bin/ux*/liblpsolve55.a
+ cd ../lp_solve
+ sh -x ccc
+ cd ..
+
+ # install
+ install -d ${pkgdir}/usr/{bin,lib,include/lpsolve}
+ install -m 755 lp_solve/bin/ux*/lp_solve ${pkgdir}/usr/bin/
+ install -m 755 lpsolve55/bin/ux*/liblpsolve55.so ${pkgdir}/usr/lib/
+ install -m 644 lp*.h ${pkgdir}/usr/include/lpsolve/
+}
diff --git a/extra/lpsolve/cflags.patch b/extra/lpsolve/cflags.patch
new file mode 100644
index 000000000..8e8804cb8
--- /dev/null
+++ b/extra/lpsolve/cflags.patch
@@ -0,0 +1,25 @@
+diff -ru lp_solve_5.5.orig/lp_solve/ccc lp_solve_5.5/lp_solve/ccc
+--- lp_solve_5.5.orig/lp_solve/ccc 2009-02-23 16:31:18.000000000 +0000
++++ lp_solve_5.5/lp_solve/ccc 2009-02-23 16:31:29.000000000 +0000
+@@ -28,7 +28,7 @@
+ fi
+ rm /tmp/isnan.c /tmp/isnan >/dev/null 2>&1
+
+-opts='-O3'
++opts=$CFLAGS
+
+ def=
+ if [ "$PLATFORM" = "SCO_UNIX" ]
+diff -ru lp_solve_5.5.orig/lpsolve55/ccc lp_solve_5.5/lpsolve55/ccc
+--- lp_solve_5.5.orig/lpsolve55/ccc 2009-02-23 16:31:18.000000000 +0000
++++ lp_solve_5.5/lpsolve55/ccc 2009-02-23 16:31:29.000000000 +0000
+@@ -35,7 +35,7 @@
+ so=y
+ fi
+
+-opts='-O3'
++opts=$CFLAGS
+
+ $c -s -c -I.. -I../shared -I../bfp -I../bfp/bfp_LUSOL -I../bfp/bfp_LUSOL/LUSOL -I../colamd $opts $def $NOISNAN -DYY_NEVER_INTERACTIVE -DPARSER_LP -DINVERSE_ACTIVE=INVERSE_LUSOL -DRoleIsExternalInvEngine $src
+ ar rv bin/$PLATFORM/liblpsolve55.a `echo $src|sed s/[.]c/.o/g|sed 's/[^ ]*\///g'`
+
diff --git a/extra/lsdvd/PKGBUILD b/extra/lsdvd/PKGBUILD
new file mode 100644
index 000000000..939311c72
--- /dev/null
+++ b/extra/lsdvd/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: PKGBUILD 39761 2009-05-21 11:31:55Z jgc $
+# Maintainer: Aaron Griffin <aaron@archlinux.org>
+
+pkgname=lsdvd
+pkgver=0.16
+pkgrel=4
+pkgdesc="lsdvd is a C application for reading the contents of a DVD and printing the contents to your terminal"
+arch=(i686 x86_64)
+url="http://untrepid.com/acidrip/lsdvd.html"
+depends=('libdvdread>=4.1.3')
+license=('GPL2')
+#Special thanks to Mathieu Clabaut <mathieu.clabaut@gmail.com> for patches
+source=(http://downloads.sourceforge.net/lsdvd/${pkgname}-${pkgver}.tar.gz
+ stdint_usage.patch)
+md5sums=('340e1abe5c5e5abf7ff8031e78f49ee7' '6cbcbfde873f894bd3c784f65141b2fc')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i "${srcdir}/stdint_usage.patch" || return 1
+ ./configure --prefix=/usr --mandir=/usr/share/man || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/lsdvd/stdint_usage.patch b/extra/lsdvd/stdint_usage.patch
new file mode 100644
index 000000000..67b9ee82d
--- /dev/null
+++ b/extra/lsdvd/stdint_usage.patch
@@ -0,0 +1,22 @@
+--- a/lsdvd.c 2006-03-02 07:48:11.000000000 -0600
++++ b/lsdvd.c 2007-09-27 19:15:28.000000000 -0500
+@@ -13,6 +13,7 @@
+ * 2003-04-19 Cleanups get_title_name, added dvdtime2msec, added helper macros,
+ * output info structures in form of a Perl module, by Henk Vergonet.
+ */
++#include <stdint.h>
+ #include <dvdread/ifo_read.h>
+ #include <string.h>
+ #include <sys/stat.h>
+--- a/configure 2005-12-12 14:22:45.000000000 -0600
++++ b/configure 2007-09-27 19:15:13.000000000 -0500
+@@ -2887,8 +2887,8 @@
+ cat confdefs.h >>conftest.$ac_ext
+ cat >>conftest.$ac_ext <<_ACEOF
+ /* end confdefs.h. */
+-#include <dvdread/ifo_read.h>
+ #include <stdint.h>
++#include <dvdread/ifo_read.h>
+ int
+ main ()
+ {
diff --git a/extra/lsof/PKGBUILD b/extra/lsof/PKGBUILD
new file mode 100644
index 000000000..a5e4c8089
--- /dev/null
+++ b/extra/lsof/PKGBUILD
@@ -0,0 +1,43 @@
+# $Id: PKGBUILD 115676 2011-03-19 06:54:43Z angvp $
+# Maintainer: Angel Velasquez <angvp@archlinux.org>
+# Contributor: Daniel J Griffiths <ghost1227@archlinux.us>
+# Contributor: Aaron Griffin <aaron@archlinux.org>
+# Contributor: Jochem Kossen <j.kossen@home.nl>
+
+pkgname=lsof
+pkgver=4.84
+pkgrel=3
+pkgdesc="Lists open files for running Unix processes"
+arch=('i686' 'x86_64')
+url="http://people.freebsd.org/~abe/"
+license=('custom')
+depends=('glibc')
+source=(ftp://sunsite.ualberta.ca/pub/Mirror/lsof/${pkgname}_${pkgver}.tar.bz2 license.txt)
+md5sums=('a09326df500ef7e4550af546868338d6'
+ '1b63c76bd10437cabf890508c8e58d36')
+
+build() {
+ cd ${srcdir}/${pkgname}_${pkgver}
+ tar xf ${pkgname}_${pkgver}_src.tar
+ cd ${pkgname}_${pkgver}_src
+ sed -i 's|/\* #define\tHASSECURITY\t1 \*/|#define\tHASSECURITY\t1|' dialects/linux/machine.h
+ ./Configure -n linux
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}_${pkgver}/${pkgname}_${pkgver}_src
+
+ FILES=("00CREDITS" "00DCACHE" "00DIALECTS" "00DIST" "00FAQ" "00LSOF-L" "00MANIFEST" "00PORTING" "00QUICKSTART" "00README" "00.README.FIRST" "00TEST" "00XCONFIG")
+ for file in "${FILES[@]}"
+ do
+ install -D -m0644 -o root -g root $file \
+ $pkgdir/usr/share/doc/$pkgname/$file
+ done
+
+ install -Dm0755 -o root -g root lsof ${pkgdir}/usr/sbin/lsof
+ install -Dm0644 -o root -g root lsof.8 ${pkgdir}/usr/share/man/man8/lsof.8
+
+ install -D -m0644 -o root -g root ${srcdir}/license.txt \
+ ${pkgdir}/usr/share/licenses/lsof/LICENSE
+}
diff --git a/extra/lsof/license.txt b/extra/lsof/license.txt
new file mode 100644
index 000000000..6d241ddbf
--- /dev/null
+++ b/extra/lsof/license.txt
@@ -0,0 +1,27 @@
+Copyright 2002 Purdue Research Foundation, West Lafayette,
+Indiana 47907. All rights reserved.
+
+Written by Victor A. Abell
+
+This software is not subject to any license of the American
+Telephone and Telegraph Company or the Regents of the
+University of California.
+
+Permission is granted to anyone to use this software for
+any purpose on any computer system, and to alter it and
+redistribute it freely, subject to the following
+restrictions:
+
+1. Neither the authors nor Purdue University are responsible
+ for any consequences of the use of this software.
+
+2. The origin of this software must not be misrepresented,
+ either by explicit claim or by omission. Credit to the
+ authors and Purdue University must appear in documentation
+ and sources.
+
+3. Altered versions must be plainly marked as such, and must
+ not be misrepresented as being the original software.
+
+4. This notice may not be removed or altered.
+
diff --git a/extra/ltrace/PKGBUILD b/extra/ltrace/PKGBUILD
new file mode 100644
index 000000000..9861acb93
--- /dev/null
+++ b/extra/ltrace/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 87253 2010-08-11 14:16:17Z allan $
+# Maintainer:
+# Contributor: Aaron Griffin <aaron@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=ltrace
+pkgver=0.5.3
+pkgrel=2
+pkgdesc="A debugging program which runs a specified command until it exits"
+arch=('i686' 'x86_64')
+url="http://packages.debian.org/sid/ltrace"
+license=('GPL')
+depends=('glibc' 'elfutils')
+backup=('etc/ltrace.conf')
+source=(http://ftp.debian.org/debian/pool/main/l/ltrace/${pkgname}_${pkgver}.orig.tar.gz)
+md5sums=('3fa7fe715ab879db08bd06d1d59fd90f')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ sed -i 's|/usr/bin/install|/bin/install|' configure
+ ./configure --prefix=/usr --sysconfdir=/etc
+ make
+}
+
+package(){
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/lua/PKGBUILD b/extra/lua/PKGBUILD
new file mode 100644
index 000000000..9b30c5bf9
--- /dev/null
+++ b/extra/lua/PKGBUILD
@@ -0,0 +1,36 @@
+# $Id: PKGBUILD 86292 2010-07-28 06:43:46Z juergen $
+# Maintainer: Juergen Hoetzel <juergen@archlinux.org>
+# Contributor: Damir Perisa <damir.perisa@bluewin.ch>
+
+pkgname=lua
+pkgver=5.1.4
+pkgrel=6
+pkgdesc="A powerful light-weight programming language designed for extending applications."
+arch=('i686' 'x86_64')
+url="http://www.lua.org/"
+depends=('readline' 'ncurses')
+license=('MIT')
+options=('!makeflags')
+source=(http://www.lua.org/ftp/${pkgname}-${pkgver}.tar.gz http://www.lua.org/ftp/patch-lua-5.1.4-2 lua-arch.patch lua-5.1-cflags.diff)
+md5sums=('d0870f2de55d59c1c8419f36e8fac150' '1239310e0c4a581c7831e596f95cc6cd'\
+ '6c5953f63904bf20a0183cdab05b80de' '249582bf1fd861ccf492d2c35a9fe732')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -p1 -i "${srcdir}/lua-arch.patch"
+ patch -i ${srcdir}/patch-lua-5.1.4-2 -d src
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ [ "$CARCH" == "x86_64" ] && patch -Np1 -i ../lua-5.1-cflags.diff
+ [ "$CARCH" == "x86_64" ] && export CFLAGS="$CFLAGS -fPIC"
+ make INSTALL_DATA="cp -d" TO_LIB="liblua.a liblua.so liblua.so.5.1" LUA_SO=liblua.so INSTALL_TOP="${pkgdir}/usr" INSTALL_MAN="${pkgdir}/usr/share/man/man1" \
+ linux install || return 1
+ install -D -m 644 etc/lua.pc "${pkgdir}/usr/lib/pkgconfig/lua.pc"
+ install -D -m644 COPYRIGHT "${pkgdir}/usr/share/licenses/${pkgname}/COPYRIGHT"
+
+ # Install the documentation
+ mkdir -p "${pkgdir}/usr/share/doc/lua"
+ cp -R doc/* "${pkgdir}/usr/share/doc/lua"
+}
diff --git a/extra/lua/lua-5.1-cflags.diff b/extra/lua/lua-5.1-cflags.diff
new file mode 100644
index 000000000..db658aeca
--- /dev/null
+++ b/extra/lua/lua-5.1-cflags.diff
@@ -0,0 +1,13 @@
+diff -Naur lua-5.1.orig/src/Makefile lua-5.1/src/Makefile
+--- lua-5.1.orig/src/Makefile 2006-02-16 16:45:09.000000000 +0100
++++ lua-5.1/src/Makefile 2006-03-01 14:55:29.000000000 +0100
+@@ -8,7 +8,8 @@
+ PLAT= none
+
+ CC= gcc
+-CFLAGS= -O2 -Wall $(MYCFLAGS)
++CFLAGS ?= -O2 -Wall
++CFLAGS += $(MYCFLAGS)
+ AR= ar rcu
+ RANLIB= ranlib
+ RM= rm -f
diff --git a/extra/lua/lua-arch.patch b/extra/lua/lua-arch.patch
new file mode 100644
index 000000000..cc1f3ce1b
--- /dev/null
+++ b/extra/lua/lua-arch.patch
@@ -0,0 +1,55 @@
+diff -ur lua-5.1.orig/etc/lua.pc lua-5.1/etc/lua.pc
+--- lua-5.1.orig/etc/lua.pc 2006-03-21 11:51:53.000000000 +0100
++++ lua-5.1/etc/lua.pc 2006-03-21 11:52:05.000000000 +0100
+@@ -6,7 +6,7 @@
+ V= 5.1
+
+ # grep '^INSTALL_.*=' ../Makefile | sed 's/INSTALL_TOP/prefix/'
+-prefix= /usr/local
++prefix= /usr
+ INSTALL_BIN= ${prefix}/bin
+ INSTALL_INC= ${prefix}/include
+ INSTALL_LIB= ${prefix}/lib
+diff -ur lua-5.1.orig/src/Makefile lua-5.1/src/Makefile
+--- lua-5.1.orig/src/Makefile 2006-03-21 11:51:53.000000000 +0100
++++ lua-5.1/src/Makefile 2006-03-21 11:52:09.000000000 +0100
+@@ -23,6 +23,7 @@
+ PLATS= aix ansi bsd generic linux macosx mingw posix solaris
+
+ LUA_A= liblua.a
++LUA_SO= liblua.so
+ CORE_O= lapi.o lcode.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o lmem.o \
+ lobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o ltm.o \
+ lundump.o lvm.o lzio.o
+@@ -36,7 +37,7 @@
+ LUAC_O= luac.o print.o
+
+ ALL_O= $(CORE_O) $(LIB_O) $(LUA_O) $(LUAC_O)
+-ALL_T= $(LUA_A) $(LUA_T) $(LUAC_T)
++ALL_T= $(LUA_A) $(LUA_SO) $(LUA_T) $(LUAC_T)
+ ALL_A= $(LUA_A)
+
+ default: $(PLAT)
+@@ -51,6 +52,10 @@
+ $(AR) $@ $?
+ $(RANLIB) $@
+
++$(LUA_SO): $(CORE_O) $(LIB_O)
++ $(CC) -shared -ldl -Wl,-soname,liblua.so -o $@.5.1 $? -lm $(MYLDFLAGS)
++ ln -s $@.5.1 $@
++
+ $(LUA_T): $(LUA_O) $(LUA_A)
+ $(CC) -o $@ $(MYLDFLAGS) $(LUA_O) $(LUA_A) $(LIBS)
+
+diff -ur lua-5.1.orig/src/luaconf.h lua-5.1/src/luaconf.h
+--- lua-5.1.orig/src/luaconf.h 2006-03-21 11:51:53.000000000 +0100
++++ lua-5.1/src/luaconf.h 2006-03-21 11:52:05.000000000 +0100
+@@ -82,7 +82,7 @@
+ ".\\?.dll;" LUA_CDIR"?.dll;" LUA_CDIR"loadall.dll"
+
+ #else
+-#define LUA_ROOT "/usr/local/"
++#define LUA_ROOT "/usr/"
+ #define LUA_LDIR LUA_ROOT "share/lua/5.1/"
+ #define LUA_CDIR LUA_ROOT "lib/lua/5.1/"
+ #define LUA_PATH_DEFAULT \
diff --git a/extra/lv2core/PKGBUILD b/extra/lv2core/PKGBUILD
new file mode 100644
index 000000000..d483ab952
--- /dev/null
+++ b/extra/lv2core/PKGBUILD
@@ -0,0 +1,34 @@
+# $Id: PKGBUILD 116670 2011-03-24 20:31:38Z schiv $
+# Maintainer: Ray Rashif <schiv@archlinux.org>
+
+pkgname=lv2core
+pkgver=4.0
+pkgrel=1
+pkgdesc="LV2: Successor to the LADSPA audio plug-in standard"
+url="http://lv2plug.in/"
+license=('LGPL' 'custom')
+arch=('i686' 'x86_64')
+makedepends=('python2')
+provides=('lv2')
+changelog=$pkgname.changelog
+install=$pkgname.install
+source=(http://lv2plug.in/spec/$pkgname-$pkgver.tar.bz2)
+md5sums=('5097d964f3559a1ecec2d2fc822ef53a')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ python2 waf configure --prefix=/usr
+ python2 waf build $MAKEFLAGS
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ python2 waf install --destdir="$pkgdir"
+
+ install -Dm0644 COPYING \
+ "$pkgdir/usr/share/licenses/$pkgname/COPYING"
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/extra/lv2core/lv2core.changelog b/extra/lv2core/lv2core.changelog
new file mode 100644
index 000000000..618e5921f
--- /dev/null
+++ b/extra/lv2core/lv2core.changelog
@@ -0,0 +1,16 @@
+25 Mar 2011 (GMT+8) Ray Rashif <schiv@archlinux.org>
+
+ * 4.0-1 :
+ Upstream release
+
+9 Aug 2010 (GMT+8) Ray Rashif <schiv@archlinux.org>
+
+ * 3.0-1 :
+ Brought into extra from community for slv2/ardour
+ - dep of slv2
+
+ * PKGBUILD :
+ Minor cosmetic ammendments.
+
+ * lv2core.changelog :
+ Added this changelog.
diff --git a/extra/lv2core/lv2core.install b/extra/lv2core/lv2core.install
new file mode 100644
index 000000000..6a9fdf33b
--- /dev/null
+++ b/extra/lv2core/lv2core.install
@@ -0,0 +1,14 @@
+post_install() {
+ \ldconfig
+ \lv2config
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ \ldconfig
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/extra/lxde-common/PKGBUILD b/extra/lxde-common/PKGBUILD
new file mode 100644
index 000000000..761841bb7
--- /dev/null
+++ b/extra/lxde-common/PKGBUILD
@@ -0,0 +1,28 @@
+# Maintainer: Juergen Hoetzel <juergen@archlinux.org>
+pkgname=lxde-common
+pkgver=0.5.0
+pkgrel=3
+pkgdesc="Common files of the LXDE Desktop"
+arch=('i686' 'x86_64')
+license=('GPL2')
+groups=('lxde')
+depends=('libx11' 'glib2' 'lxde-icon-theme')
+url="http://lxde.org/"
+# startlxde is useless without lxsession
+makedepends=(automake)
+optdepends=(lxsession-lite)
+backup=(etc/xdg/lxsession/LXDE/{desktop.conf,autostart})
+source=("http://downloads.sourceforge.net/project/lxde/${pkgname}%20%28default%20config%29/${pkgname}%200.5.0/${pkgname}-0.5.0.tar.gz" "${pkgname}-arch.patch" ${pkgname}-invalid-distfile.patch)
+md5sums=('23606ab3d6e1039386d62a4b68b4ffc6' '21657157d9ab377de55deb19a42d68e8'\
+ '24938631783683fd98dfd533023e6d4e')
+
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ patch -p1 -i ${srcdir}/${pkgname}-arch.patch
+ autoreconf
+ ./configure --sysconfdir=/etc --prefix=/usr
+ make DESTDIR="$pkgdir" install
+ install -Dm644 lxde-logout.desktop ${pkgdir}/usr/share/applications/lxde-logout.desktop
+}
+
diff --git a/extra/lxde-common/lxde-common-arch.patch b/extra/lxde-common/lxde-common-arch.patch
new file mode 100644
index 000000000..3aa1a8992
--- /dev/null
+++ b/extra/lxde-common/lxde-common-arch.patch
@@ -0,0 +1,186 @@
+diff --git a/Makefile.am b/Makefile.am
+index ba4149c..61cf4c5 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -31,9 +31,9 @@ openbox_DATA= \
+ openbox/rc.xml \
+ openbox/menu.xml
+
+-pcmanfmdir=$(datadir)/lxde/pcmanfm
++pcmanfmdir=$(sysconfdir)/xdg/pcmanfm
+ pcmanfm_DATA= \
+- pcmanfm/main.lxde
++ pcmanfm/lxde.conf
+
+ EXTRA_DIST = \
+ autostart \
+@@ -45,7 +45,7 @@ EXTRA_DIST = \
+ openbox/rc.xml.in \
+ openbox/menu.xml \
+ openbox-lxde.in \
+- pcmanfm/main.lxde.in \
++ pcmanfm/lxde.conf.in \
+ $(lxpanel_DATA) \
+ lxpanel/panel.in
+
+diff --git a/autostart b/autostart
+index 17d7b58..d5b6514 100644
+--- a/autostart
++++ b/autostart
+@@ -1,3 +1,3 @@
+-@xscreensaver -no-splash
+ @lxpanel --profile LXDE
+-@pcmanfm -d
++@pcmanfm --desktop --profile lxde
++@xscreensaver -no-splash
+diff --git a/configure.ac b/configure.ac
+index 3b62903..f90b4c5 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -1,5 +1,5 @@
+ AC_PREREQ([2.57])
+-AC_INIT(lxde-common,[0.5.0], [],lxde-common)
++AC_INIT(lxde-common,[0.5.5], [],lxde-common)
+ AM_INIT_AUTOMAKE()
+ dnl AC_PROG_INTLTOOL(, [no-xml])
+ dnl AM_MAINTAINER_MODE
+@@ -48,7 +48,16 @@ AC_OUTPUT([
+ lxpanel/panel
+ openbox/rc.xml
+ openbox-lxde
+- pcmanfm/main.lxde
++ pcmanfm/lxde.conf
+ man/Makefile
+ ])
+
++if test x"$sysconfdir" != x'/etc'; then
++ echo
++ echo
++ echo 'Error: sysconfdir is not /etc.'
++ echo 'Please consider passing --sysconfdir=/etc to configure.';
++ echo 'Otherwise default config files will be installed to wrong place.'
++ echo
++ echo
++fi
+diff --git a/lxpanel/config b/lxpanel/config
+index 1911551..cb7f06d 100644
+--- a/lxpanel/config
++++ b/lxpanel/config
+@@ -1,4 +1,4 @@
+ [Command]
+ FileManager=pcmanfm %s
+-Terminal=xterm -e
++Terminal=lxterminal
+ Logout=lxde-logout
+diff --git a/openbox-lxde b/openbox-lxde
+old mode 100755
+new mode 100644
+diff --git a/openbox/menu.xml b/openbox/menu.xml
+index 78099e6..a7768a5 100644
+--- a/openbox/menu.xml
++++ b/openbox/menu.xml
+@@ -25,7 +25,7 @@
+ <item label="Desktop Settings">
+ <action name="Execute">
+ <startupnotify><enabled>yes</enabled></startupnotify>
+- <command>pcmanfm --show-pref 2</command>
++ <command>pcmanfm --desktop-pref</command>
+ </action>
+ </item>
+ <item label="Window Management Settings">
+@@ -43,4 +43,4 @@
+ </item>
+ </menu>
+
+-</openbox_menu>
+\ No newline at end of file
++</openbox_menu>
+diff --git a/pcmanfm/lxde.conf.in b/pcmanfm/lxde.conf.in
+new file mode 100644
+index 0000000..6799e1f
+--- /dev/null
++++ b/pcmanfm/lxde.conf.in
+@@ -0,0 +1,20 @@
++[config]
++bm_open_method=0
++su_cmd=xdg-su -c '%s'
++
++[desktop]
++wallpaper_mode=1
++wallpaper=@prefix@/share/lxde/wallpapers/lxde_blue.jpg
++desktop_bg=#000000
++desktop_fg=#ffffff
++desktop_shadow=#000000
++
++[ui]
++always_show_tabs=0
++hide_close_btn=0
++win_width=640
++win_height=480
++view_mode=0
++show_hidden=0
++sort_type=0
++sort_by=0
+diff --git a/pcmanfm/main.lxde.in b/pcmanfm/main.lxde.in
+deleted file mode 100644
+index a619852..0000000
+--- a/pcmanfm/main.lxde.in
++++ /dev/null
+@@ -1,3 +0,0 @@
+-[Desktop]
+-show_wallpaper=1
+-wallpaper=@prefix@/share/lxde/wallpapers/lxde_blue.jpg
+diff --git a/startlxde.in b/startlxde.in
+index 8372d3a..f493e28 100755
+--- a/startlxde.in
++++ b/startlxde.in
+@@ -1,28 +1,43 @@
+ #!/bin/sh
+
+ if [ -z "$XDG_CONFIG_HOME" ]; then
+- export XDG_CONFIG_HOME="$HOME/.config"
++ export XDG_CONFIG_HOME="$HOME/.config"
+ fi
+
+ # Ensure the existance of pcmanfm config file
+ PCMANFM_CONF_DIR="$XDG_CONFIG_HOME/pcmanfm"
+-if [ ! -f "$PCMANFM_CONF_DIR/main.lxde" ]; then
+- mkdir -p "$PCMANFM_CONF_DIR"
+- cp @prefix@/share/lxde/pcmanfm/main.lxde "$PCMANFM_CONF_DIR/main.lxde"
++if [ ! -f "$PCMANFM_CONF_DIR/pcmanfm.conf" ]; then
++ mkdir -p "$PCMANFM_CONF_DIR"
++ cp @prefix@/share/lxde/pcmanfm/pcmanfm.conf "$PCMANFM_CONF_DIR/pcmanfm.conf"
+ fi
+
+ # Ensure the existance of openbox config file
+ OPENBOX_CONF_DIR="$XDG_CONFIG_HOME/openbox"
+ if [ ! -f "$OPENBOX_CONF_DIR/lxde-rc.xml" ]; then
+- mkdir -p "$OPENBOX_CONF_DIR"
+- cp @prefix@/share/lxde/openbox/rc.xml "$OPENBOX_CONF_DIR/lxde-rc.xml"
++ mkdir -p "$OPENBOX_CONF_DIR"
++ cp @prefix@/share/lxde/openbox/rc.xml "$OPENBOX_CONF_DIR/lxde-rc.xml"
+ fi
+
++# Ensure the existance of the 'Desktop' folder
++if [ -e "$XDG_CONFIG_HOME/user-dirs.dirs" ]; then
++ . "$XDG_CONFIG_HOME/user-dirs.dirs"
++else
++ XDG_DESKTOP_DIR="$HOME/Desktop"
++fi
++mkdir -p "$XDG_DESKTOP_DIR"
++
+ # Clean up after GDM (GDM sets the number of desktops to one)
+ xprop -root -remove _NET_NUMBER_OF_DESKTOPS -remove _NET_DESKTOP_NAMES -remove _NET_CURRENT_DESKTOP 2> /dev/null
+
+ # Enable GTK+2 integration for OpenOffice.org, if available.
+ export SAL_USE_VCLPLUGIN=gtk
+
++# Launch DBus if needed
++if which dbus-launch >/dev/null && test -z "$DBUS_SESSION_BUS_ADDRESS"; then
++ eval "$(dbus-launch --sh-syntax --exit-with-session)"
++fi
++
++export XDG_MENU_PREFIX="lxde-"
++
+ # Start the LXDE session
+ exec @prefix@/bin/lxsession -s LXDE -e LXDE
diff --git a/extra/lxde-common/lxde-common-invalid-distfile.patch b/extra/lxde-common/lxde-common-invalid-distfile.patch
new file mode 100644
index 000000000..df5d68084
--- /dev/null
+++ b/extra/lxde-common/lxde-common-invalid-distfile.patch
@@ -0,0 +1,10 @@
+diff -ub lxde-common-0.5.0.dist/startlxde.in lxde-common-0.5.0/startlxde.in
+--- lxde-common-0.5.0.dist/startlxde.in 2009-09-04 11:46:53.000000000 +0200
++++ lxde-common-0.5.0./startlxde.in 2010-01-18 21:47:18.000000000 +0100
+@@ -25,4 +25,4 @@
+ export SAL_USE_VCLPLUGIN=gtk
+
+ # Start the LXDE session
+-exec @prefix@/bin/lxsession -s LXDE
++exec @prefix@/bin/lxsession -s LXDE -e LXDE
+
diff --git a/extra/lxde-common/lxde-common.install b/extra/lxde-common/lxde-common.install
new file mode 100644
index 000000000..86a366848
--- /dev/null
+++ b/extra/lxde-common/lxde-common.install
@@ -0,0 +1,18 @@
+ICON_PATH=usr/share/icons/nuoveXT2
+
+post_install() {
+ gtk-update-icon-cache -q -t -f ${ICON_PATH}
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ gtk-update-icon-cache -q -t -f ${ICON_PATH}
+}
+
+op=$1
+shift
+
+$op $*
diff --git a/extra/lxdm/PKGBUILD b/extra/lxdm/PKGBUILD
new file mode 100644
index 000000000..a0b1d9628
--- /dev/null
+++ b/extra/lxdm/PKGBUILD
@@ -0,0 +1,51 @@
+# Maintainer: AndyRTR <andyrtr@archlinux.org>
+#Contributor: kiefer <jorgelmadrid@gmail.com>
+#Based on lxdm-git by phillipe
+
+pkgname=lxdm
+pkgver=0.3.0
+pkgrel=1
+pkgdesc="Lightweight Display Manager (part of LXDE)"
+arch=('i686' 'x86_64')
+url="http://sourceforge.net/projects/lxdm/"
+license=('GPL')
+groups=('lxde')
+conflicts=('lxdm-git')
+depends=('gtk2' 'xorg-server' 'consolekit')
+makedepends=('intltool')
+install=${pkgname}.install
+backup=('etc/lxdm/lxdm.conf') # 'etc/lxdm/xinitrc')
+source=(http://downloads.sourceforge.net/project/lxdm/lxdm%20${pkgver}/$pkgname-$pkgver.tar.gz
+ Xsession.patch lxdm.patch lxdm-pam.patch lxdm-daemon)
+md5sums=('1d0688e088edab7c3c563263eb2f9654'
+ '9bdf95adb74d81d4b6b6176fb1142090'
+ 'baed9055e8825a5511712bc095197519'
+ 'b20fe3c8487a039050986d60e45233a9'
+ '705f394052fdd0dec22e95321d170de0')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ ./configure --sysconfdir=/etc --prefix=/usr --libexecdir=/usr/lib/lxdm
+ make
+
+ patch -Np0 < ../lxdm.patch
+ patch -Np0 < ../Xsession.patch
+}
+
+
+package() {
+ cd $srcdir/$pkgname-$pkgver
+ make DESTDIR="${pkgdir}" install || return 1
+
+ install -m644 ${srcdir}/lxdm-pam.patch ${pkgdir}/etc/pam.d/lxdm || return 1
+ install -Dm755 ${srcdir}/lxdm-daemon ${pkgdir}/etc/rc.d/lxdm || return 1
+
+ # these files are not in the package, but should be owned by lxdm - taken from Fedora pkg
+# touch ${pkgdir}/etc/lxdm/xinitrc
+ mkdir -p ${pkgdir}/var/run/lxdm
+ mkdir -p ${pkgdir}/var/lib/lxdm
+# touch ${pkgdir}/var/lib/lxdm/lxdm.conf
+
+ # fix the greeter location
+ sed -i -e "s/libexec/lib\/lxdm/" ${pkgdir}/etc/lxdm/lxdm.conf
+}
diff --git a/extra/lxdm/Xsession.patch b/extra/lxdm/Xsession.patch
new file mode 100644
index 000000000..a9ba63233
--- /dev/null
+++ b/extra/lxdm/Xsession.patch
@@ -0,0 +1,14 @@
+--- data/Xsession.orig 2010-01-31 20:48:08.695677408 -0200
++++ data/Xsession 2010-01-31 20:47:48.260223292 -0200
+@@ -2,6 +2,11 @@
+
+ # use bash for "exec -l", howto run login shell by /bin/sh ?
+
++[[ -f /etc/profile ]] && . /etc/profile
++[[ -f "$HOME/.profile" ]] && . "$HOME/.profile"
++[[ -f /etc/xprofile ]] && . /etc/xprofile
++[[ -f "$HOME/.xprofile" ]] && . "$HOME/.xprofile"
++
+ if [ $# -eq 1 -a -n "$1" ]; then
+ LXSESSION=$1
+ else
diff --git a/extra/lxdm/lxdm-daemon b/extra/lxdm/lxdm-daemon
new file mode 100644
index 000000000..68eb6225d
--- /dev/null
+++ b/extra/lxdm/lxdm-daemon
@@ -0,0 +1,36 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+PID=$(pidof -o %PPID `which lxdm-binary`)
+case "$1" in
+ start)
+ stat_busy "Starting LXDM Display Manager"
+ [ -z "$PID" ] && /usr/sbin/lxdm -d &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon lxdm
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping LXDM Display Manager"
+ [ ! -z "$PID" ] && kill $PID &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon lxdm
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 3
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
diff --git a/extra/lxdm/lxdm-pam.patch b/extra/lxdm/lxdm-pam.patch
new file mode 100644
index 000000000..3f5df04a7
--- /dev/null
+++ b/extra/lxdm/lxdm-pam.patch
@@ -0,0 +1,8 @@
+#%PAM-1.0
+auth requisite pam_nologin.so
+auth required pam_env.so
+auth required pam_unix.so
+account required pam_unix.so
+session required pam_limits.so
+session required pam_unix.so
+password required pam_unix.so
diff --git a/extra/lxdm/lxdm.install b/extra/lxdm/lxdm.install
new file mode 100644
index 000000000..8d42de90f
--- /dev/null
+++ b/extra/lxdm/lxdm.install
@@ -0,0 +1,59 @@
+pkgname=lxdm
+
+post_install() {
+ # make sure the group and user "lxdm" exist on this system and have the correct values
+ if grep -q "^lxdm:" /etc/group &> /dev/null ; then
+ groupmod -g 121 -n lxdm lxdm &> /dev/null
+ else
+ groupadd -g 121 lxdm &> /dev/null
+ fi
+
+ if grep -q "^lxdm:" /etc/passwd 2> /dev/null ; then
+ usermod -s /sbin/nologin -c "LXDE Display Manager user" -d /var/lib/lxdm -u 121 -g lxdm lxdm &> /dev/null
+ else
+ useradd -s /sbin/nologin -c "LXDE Display Manager user" -d /var/lib/lxdm -u 121 -g lxdm -m -r lxdm &> /dev/null
+ fi
+ passwd -l lxdm > /dev/null
+
+# chown root:lxdm /etc/lxdm/{lxdm.conf,xinitrc} > /dev/null
+ chown root:lxdm /etc/lxdm/lxdm.conf > /dev/null
+ chown -R root:lxdm /var/lib/lxdm > /dev/null
+ chown -R root:lxdm /var/run/lxdm > /dev/null
+
+cat << EOF
+>>> To make the LXDM as your default DM,
+>>> put, 'lxdm' or '@lxdm' (without quotes) on DAEMONS in /etc/rc.conf
+>>>
+>>> You can also use /etc/inittab,
+>>> just add 'x:5:respawn:/usr/sbin/lxdm >& /dev/null' (without quotes)
+>>> in the end of the file /etc/inittab
+>>> and uncoment the line on the top 'id:5:initdefault:'.
+EOF
+}
+
+post_upgrade() {
+ # make sure the group and user "lxdm" exist on this system and have the correct values
+ if grep -q "^lxdm:" /etc/group &> /dev/null ; then
+ groupmod -g 121 -n lxdm lxdm &> /dev/null
+ else
+ groupadd -g 121 lxdm &> /dev/null
+ fi
+
+ if grep -q "^lxdm:" /etc/passwd 2> /dev/null ; then
+ usermod -s /sbin/nologin -c "LXDE Display Manager user" -d /var/lib/lxdm -u 121 -g lxdm lxdm &> /dev/null
+ else
+ useradd -s /sbin/nologin -c "LXDE Display Manager user" -d /var/lib/lxdm -u 121 -g lxdm -m -r lxdm &> /dev/null
+ fi
+ passwd -l lxdm > /dev/null
+
+# chown root:lxdm /etc/lxdm/{lxdm.conf,xinitrc} > /dev/null
+ chown root:lxdm /etc/lxdm/lxdm.conf > /dev/null
+ chown -R root:lxdm /var/lib/lxdm > /dev/null
+ chown -R root:lxdm /var/run/lxdm > /dev/null
+}
+
+post_remove() {
+ # Removing lxdm group+user
+ getent passwd lxdm >/dev/null 2>&1 && userdel lxdm #|| /bin/true
+ getent group lxdm >/dev/null 2>&1 && groupdel lxdm #|| /bin/true
+}
diff --git a/extra/lxdm/lxdm.patch b/extra/lxdm/lxdm.patch
new file mode 100644
index 000000000..a703a386d
--- /dev/null
+++ b/extra/lxdm/lxdm.patch
@@ -0,0 +1,26 @@
+--- data/lxdm.orig 2010-01-24 16:58:42.262866825 -0200
++++ data/lxdm 2010-01-19 11:56:34.308668692 -0200
+@@ -1,21 +1,13 @@
+ #!/bin/sh
+
+-[ -f /etc/sysconfig/i18n ] && . /etc/sysconfig/i18n
+-
+-if [ -z "$LANG" -a -e /etc/sysconfig/language ]; then
+- . /etc/sysconfig/language
+- if [ -n "$RC_LANG"]; then
+- LANG=$RC_LANG
+- fi
++if [ -r /etc/profile.d/locale.sh ]; then
++ . /etc/profile.d/locale.sh
+ fi
+
+ if [ -n "$LANG" ]; then
+ export LANG
+ fi
+
+-[ -f /etc/sysconfig/desktop ] && . /etc/sysconfig/desktop
+-[ -f /etc/sysconfig/windowmanager ] && . /etc/sysconfig/windowmanager
+-
+ if [ -n "$DEFAULT_WM" ]; then
+ PREFERRED=$DEFAULT_WM
+ fi
diff --git a/extra/lxmenu-data/PKGBUILD b/extra/lxmenu-data/PKGBUILD
new file mode 100644
index 000000000..eff65fe89
--- /dev/null
+++ b/extra/lxmenu-data/PKGBUILD
@@ -0,0 +1,19 @@
+# Maintainer: Juergen Hoetzel <juergen@archlinux.org>
+pkgname=lxmenu-data
+pkgver=0.1.1
+pkgrel=1
+pkgdesc="freedesktop.org desktop menus for LXDE"
+arch=('i686' 'x86_64')
+license=('GPL2')
+url="http://lxde.org/"
+groups=('lxde')
+source=(http://downloads.sourceforge.net/sourceforge/lxde/$pkgname-$pkgver.tar.gz)
+md5sums=('cee3181dd22088f3db0e99ffbedc986d')
+
+build() {
+cd "$srcdir/$pkgname-$pkgver"
+ ./configure --prefix=/usr --sysconfdir=/etc || return 1
+ make || return 1
+ make DESTDIR="$pkgdir" install || return 1
+}
+
diff --git a/extra/lxpanel/Fix-build-issue-with-symbol-alarm-showing-up-on-F14-.patch b/extra/lxpanel/Fix-build-issue-with-symbol-alarm-showing-up-on-F14-.patch
new file mode 100644
index 000000000..e3da3d897
--- /dev/null
+++ b/extra/lxpanel/Fix-build-issue-with-symbol-alarm-showing-up-on-F14-.patch
@@ -0,0 +1,43 @@
+From 4a974f2686d2fafdcda4a180b0483a7b17fd2d71 Mon Sep 17 00:00:00 2001
+From: Marty Jack <martyj@linux.local>
+Date: Thu, 22 Jul 2010 19:46:13 -0400
+Subject: [PATCH 3/3] Fix build issue with symbol "alarm" showing up on F14 (Bug3033293)
+
+---
+ src/plugins/batt/batt.c | 6 +++---
+ 1 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/src/plugins/batt/batt.c b/src/plugins/batt/batt.c
+index 288231f..05c0deb 100644
+--- a/src/plugins/batt/batt.c
++++ b/src/plugins/batt/batt.c
+@@ -95,7 +95,7 @@ typedef struct {
+ typedef struct {
+ char *command;
+ sem_t *lock;
+-} alarm;
++} Alarm;
+
+ static void destructor(Plugin *p);
+ static void update_display(lx_battery *lx_b, gboolean repaint);
+@@ -103,7 +103,7 @@ static void update_display(lx_battery *lx_b, gboolean repaint);
+ /* alarmProcess takes the address of a dynamically allocated alarm struct (which
+ it must free). It ensures that alarm commands do not run concurrently. */
+ static void * alarmProcess(void *arg) {
+- alarm *a = (alarm *) arg;
++ Alarm *a = (Alarm *) arg;
+
+ sem_wait(a->lock);
+ system(a->command);
+@@ -157,7 +157,7 @@ void update_display(lx_battery *lx_b, gboolean repaint) {
+ /* Run the alarm command if it isn't already running */
+ if (alarmCanRun) {
+
+- alarm *a = (alarm *) malloc(sizeof(alarm));
++ Alarm *a = (Alarm *) malloc(sizeof(Alarm));
+ a->command = lx_b->alarmCommand;
+ a->lock = &(lx_b->alarmProcessLock);
+
+--
+1.7.1.1
+
diff --git a/extra/lxpanel/Fix-failure-to-react-to-keyboard-map-changes-initiat.patch b/extra/lxpanel/Fix-failure-to-react-to-keyboard-map-changes-initiat.patch
new file mode 100644
index 000000000..b5483e7b0
--- /dev/null
+++ b/extra/lxpanel/Fix-failure-to-react-to-keyboard-map-changes-initiat.patch
@@ -0,0 +1,555 @@
+From 438d9fdbd3e0be04de933705917d508a02b7c04b Mon Sep 17 00:00:00 2001
+From: Marty Jack <martyj@linux.local>
+Date: Sat, 20 Feb 2010 16:23:57 -0500
+Subject: [PATCH 4/5] Fix failure to react to keyboard map changes initiated outside the plugin
+ - Occurred when setxkbmap was run, or when HAL configured the keyboard at X startup
+ - Caused by failure to process the NewKeyboard event
+ - Caused by dropping events due to faulty code to read them
+ - Cosmetic change, the tooltip now the Xkb Group name rather than Xkb Symbol name
+
+---
+ src/plugins/xkb/xkb-plugin.c | 92 +++++++++--------
+ src/plugins/xkb/xkb.c | 236 +++++++++++++++++++++--------------------
+ src/plugins/xkb/xkb.h | 7 +-
+ 3 files changed, 173 insertions(+), 162 deletions(-)
+
+diff --git a/src/plugins/xkb/xkb-plugin.c b/src/plugins/xkb/xkb-plugin.c
+index f49a77d..80a14ba 100644
+--- a/src/plugins/xkb/xkb-plugin.c
++++ b/src/plugins/xkb/xkb-plugin.c
+@@ -1,18 +1,23 @@
+-/*
+-//====================================================================
+-// xfce4-xkb-plugin - XFCE4 Xkb Layout Indicator panel plugin
+-// -------------------------------------------------------------------
+-// Alexander Iliev <sasoiliev@mamul.org>
+-// 20-Feb-04
+-// -------------------------------------------------------------------
+-// Parts of this code belong to Michael Glickman <wmalms@yahooo.com>
+-// and his program wmxkb.
+-// WARNING: DO NOT BOTHER Michael Glickman WITH QUESTIONS ABOUT THIS
+-// PROGRAM!!! SEND INSTEAD EMAILS TO <sasoiliev@mamul.org>
+-//====================================================================
+-*/
+-
+-/* Modified by Hong Jen Yee (PCMan) <pcman.tw@gmail.com> on 2008-04-06 for lxpanel */
++/**
++ * Copyright (c) 2010 LxDE Developers, see the file AUTHORS for details.
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
++ */
++
++/* Originally derived from xfce4-xkb-plugin, Copyright 2004 Alexander Iliev,
++ * which credits Michael Glickman. */
+
+ #ifdef HAVE_CONFIG_H
+ #include <config.h>
+@@ -49,38 +54,45 @@ void xkb_redraw(XkbPlugin * xkb)
+ if (xkb->display_type == IMAGE)
+ {
+ int size = xkb->plugin->panel->icon_size;
+- char * group_name = (char *) xkb_get_current_group_name_lowercase(xkb);
+- char * filename = g_strdup_printf("%s/%s.png", FLAGSDIR, group_name);
+- GdkPixbuf * unscaled_pixbuf = gdk_pixbuf_new_from_file(filename, NULL);
+- g_free(filename);
+- g_free(group_name);
+-
+- if (unscaled_pixbuf != NULL)
++ char * group_name = (char *) xkb_get_current_symbol_name_lowercase(xkb);
++ if (group_name != NULL)
+ {
+- /* Loaded successfully. */
+- int width = gdk_pixbuf_get_width(unscaled_pixbuf);
+- int height = gdk_pixbuf_get_height(unscaled_pixbuf);
+- GdkPixbuf * pixbuf = gdk_pixbuf_scale_simple(unscaled_pixbuf, size * width / height, size, GDK_INTERP_BILINEAR);
+- if (pixbuf != NULL)
++ char * filename = g_strdup_printf("%s/%s.png", FLAGSDIR, group_name);
++ GdkPixbuf * unscaled_pixbuf = gdk_pixbuf_new_from_file(filename, NULL);
++ g_free(filename);
++ g_free(group_name);
++
++ if (unscaled_pixbuf != NULL)
+ {
+- gtk_image_set_from_pixbuf(GTK_IMAGE(xkb->image), pixbuf);
+- g_object_unref(G_OBJECT(pixbuf));
+- gtk_widget_hide(xkb->label);
+- gtk_widget_show(xkb->image);
+- gtk_widget_set_tooltip_text(xkb->btn, xkb_get_current_group_name(xkb));
+- valid_image = TRUE;
++ /* Loaded successfully. */
++ int width = gdk_pixbuf_get_width(unscaled_pixbuf);
++ int height = gdk_pixbuf_get_height(unscaled_pixbuf);
++ GdkPixbuf * pixbuf = gdk_pixbuf_scale_simple(unscaled_pixbuf, size * width / height, size, GDK_INTERP_BILINEAR);
++ if (pixbuf != NULL)
++ {
++ gtk_image_set_from_pixbuf(GTK_IMAGE(xkb->image), pixbuf);
++ g_object_unref(G_OBJECT(pixbuf));
++ gtk_widget_hide(xkb->label);
++ gtk_widget_show(xkb->image);
++ gtk_widget_set_tooltip_text(xkb->btn, xkb_get_current_group_name(xkb));
++ valid_image = TRUE;
++ }
++ g_object_unref(unscaled_pixbuf);
+ }
+- g_object_unref(unscaled_pixbuf);
+ }
+ }
+
+ /* Set the label. */
+ if ((xkb->display_type == TEXT) || ( ! valid_image))
+ {
+- panel_draw_label_text(xkb->plugin->panel, xkb->label, (char *) xkb_get_current_group_name(xkb), TRUE, TRUE);
+- gtk_widget_hide(xkb->image);
+- gtk_widget_show(xkb->label);
+- gtk_widget_set_tooltip_text(xkb->btn, NULL);
++ char * group_name = (char *) xkb_get_current_symbol_name(xkb);
++ if (group_name != NULL)
++ {
++ panel_draw_label_text(xkb->plugin->panel, xkb->label, (char *) group_name, TRUE, TRUE);
++ gtk_widget_hide(xkb->image);
++ gtk_widget_show(xkb->label);
++ gtk_widget_set_tooltip_text(xkb->btn, xkb_get_current_group_name(xkb));
++ }
+ }
+ }
+
+@@ -196,10 +208,6 @@ static int xkb_constructor(Plugin * plugin, char ** fp)
+ /* Initialize the XKB interface. */
+ xkb_mechanism_constructor(xkb);
+
+- /* Initialize a channel to listen for XKB events. */
+- GIOChannel * channel = g_io_channel_unix_new(xkb_get_connection_number(xkb));
+- xkb->source_id = g_io_add_watch(channel, G_IO_IN | G_IO_PRI, (GIOFunc) xkb_gio_callback, (gpointer) xkb);
+-
+ /* Connect signals. */
+ g_signal_connect(xkb->btn, "button-press-event", G_CALLBACK(xkb_button_press_event), xkb);
+ g_signal_connect(xkb->btn, "scroll-event", G_CALLBACK(xkb_scroll_event), xkb);
+diff --git a/src/plugins/xkb/xkb.c b/src/plugins/xkb/xkb.c
+index 5bb0c39..898a931 100644
+--- a/src/plugins/xkb/xkb.c
++++ b/src/plugins/xkb/xkb.c
+@@ -1,18 +1,23 @@
+-/*
+-// ====================================================================
+-// xfce4-xkb-plugin - XFCE4 Xkb Layout Indicator panel plugin
+-// -------------------------------------------------------------------
+-// Alexander Iliev <sasoiliev@mamul.org>
+-// 20-Feb-04
+-// -------------------------------------------------------------------
+-// Parts of this code belong to Michael Glickman <wmalms@yahooo.com>
+-// and his program wmxkb.
+-// WARNING: DO NOT BOTHER Michael Glickman WITH QUESTIONS ABOUT THIS
+-// PROGRAM!!! SEND INSTEAD EMAILS TO <sasoiliev@mamul.org>
+-//====================================================================
+-*/
+-
+-/* Modified by Hong Jen Yee (PCMan) <pcman.tw@gmail.com> on 2008-04-06 for lxpanel */
++/**
++ * Copyright (c) 2010 LxDE Developers, see the file AUTHORS for details.
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software Foundation,
++ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
++ */
++
++/* Originally derived from xfce4-xkb-plugin, Copyright 2004 Alexander Iliev,
++ * which credits Michael Glickman. */
+
+ #include "xkb.h"
+
+@@ -26,9 +31,13 @@
+ #include <gdk-pixbuf/gdk-pixbuf.h>
+ #include <glib.h>
+
++/* The X Keyboard Extension: Library Specification
++ * http://www.xfree86.org/current/XKBlib.pdf */
++
+ static void xkb_enter_locale_by_process(XkbPlugin * xkb);
+ static void refresh_group_xkb(XkbPlugin * xkb);
+-static int do_init_xkb(XkbPlugin * xkb);
++static int initialize_keyboard_description(XkbPlugin * xkb);
++static GdkFilterReturn xkb_event_filter(GdkXEvent * xevent, GdkEvent * event, XkbPlugin * xkb);
+
+ /* Insert a process and its layout into the hash table. */
+ static void xkb_enter_locale_by_process(XkbPlugin * xkb)
+@@ -56,60 +65,65 @@ int xkb_get_group_count(XkbPlugin * xkb)
+ return xkb->group_count;
+ }
+
++/* Get the current group name. */
++const char * xkb_get_current_group_name(XkbPlugin * xkb)
++{
++ return xkb->group_names[xkb->current_group_xkb_no];
++}
++
+ /* Convert a group number to a symbol name. */
+ const char * xkb_get_symbol_name_by_res_no(XkbPlugin * xkb, int n)
+ {
+ return xkb->symbol_names[n];
+ }
+
+-/* Get the current group name. */
+-const char * xkb_get_current_group_name(XkbPlugin * xkb)
++/* Get the current symbol name. */
++const char * xkb_get_current_symbol_name(XkbPlugin * xkb)
+ {
+ return xkb_get_symbol_name_by_res_no(xkb, xkb->current_group_xkb_no);
+ }
+
+-/* Get the current group name converted to lowercase. */
+-const char * xkb_get_current_group_name_lowercase(XkbPlugin * xkb)
++/* Get the current symbol name converted to lowercase. */
++const char * xkb_get_current_symbol_name_lowercase(XkbPlugin * xkb)
+ {
+- const char * tmp = xkb_get_current_group_name(xkb);
+- return g_utf8_strdown(tmp, -1);
++ const char * tmp = xkb_get_current_symbol_name(xkb);
++ return ((tmp != NULL) ? g_utf8_strdown(tmp, -1) : NULL);
+ }
+
+ /* Refresh current group number from Xkb state. */
+ static void refresh_group_xkb(XkbPlugin * xkb)
+ {
+ XkbStateRec xkb_state;
+- XkbGetState(xkb->dsp, xkb->device_id, &xkb_state);
++ XkbGetState(GDK_DISPLAY(), XkbUseCoreKbd, &xkb_state);
+ xkb->current_group_xkb_no = xkb_state.group;
+ }
+
+-/* Initialize the Xkb structures. */
+-static int do_init_xkb(XkbPlugin * xkb)
++/* Initialize the keyboard description initially or after a NewKeyboard event. */
++static int initialize_keyboard_description(XkbPlugin * xkb)
+ {
+- /* Create hash table. */
+- xkb->group_hash_table = g_hash_table_new(g_direct_hash, NULL);
+-
+- /* Initialize the Xkb extension. */
+- int major, minor, opcode;
+- Bool status = XkbQueryExtension(xkb->dsp, &opcode,
+- &xkb->base_event_code, &xkb->base_error_code, &major, &minor);
+-
+- /* Use the core keyboard. */
+- xkb->device_id = XkbUseCoreKbd;
++ /* Free the strings. */
++ int i;
++ for (i = 0; i < XkbNumKbdGroups; i += 1)
++ {
++ g_free(xkb->group_names[i]);
++ g_free(xkb->symbol_names[i]);
++ xkb->group_names[i] = NULL;
++ xkb->symbol_names[i] = NULL;
++ }
+
+ /* Allocate a keyboard description structure. */
++ int status = False;
+ XkbDescRec * kbd_desc_ptr = XkbAllocKeyboard();
+ if (kbd_desc_ptr == NULL)
+ {
+ ERR("Failed to get keyboard description\n");
+ goto HastaLaVista;
+ }
+- kbd_desc_ptr->dpy = xkb->dsp;
+
+ /* Fetch information into the keyboard description. */
+- XkbGetControls(xkb->dsp, XkbAllControlsMask, kbd_desc_ptr);
+- XkbGetNames(xkb->dsp, XkbSymbolsNameMask, kbd_desc_ptr);
+- XkbGetNames(xkb->dsp, XkbGroupNamesMask, kbd_desc_ptr);
++ XkbGetControls(GDK_DISPLAY(), XkbAllControlsMask, kbd_desc_ptr);
++ XkbGetNames(GDK_DISPLAY(), XkbSymbolsNameMask, kbd_desc_ptr);
++ XkbGetNames(GDK_DISPLAY(), XkbGroupNamesMask, kbd_desc_ptr);
+
+ if (kbd_desc_ptr->names == NULL)
+ {
+@@ -137,12 +151,11 @@ static int do_init_xkb(XkbPlugin * xkb)
+
+ /* Determine the group names. Trim off text beginning at a '('. */
+ const Atom * tmp_group_source = kbd_desc_ptr->names->groups;
+- int i;
+ for (i = 0; i < xkb->group_count; i++)
+ {
+ if (tmp_group_source[i] != None)
+ {
+- char * ptr = XGetAtomName(xkb->dsp, tmp_group_source[i]);
++ char * ptr = XGetAtomName(GDK_DISPLAY(), tmp_group_source[i]);
+ xkb->group_names[i] = ptr;
+ if ((ptr != NULL) && ((ptr = strchr(ptr, '('))) != NULL)
+ *ptr = '\0';
+@@ -153,7 +166,7 @@ static int do_init_xkb(XkbPlugin * xkb)
+ Atom sym_name_atom = kbd_desc_ptr->names->symbols;
+ char * sym_name;
+ if ((sym_name_atom == None)
+- || ((sym_name = XGetAtomName(xkb->dsp, sym_name_atom)) == NULL))
++ || ((sym_name = XGetAtomName(GDK_DISPLAY(), sym_name_atom)) == NULL))
+ goto HastaLaVista;
+
+ /* Parse and store symbol names. */
+@@ -190,83 +203,106 @@ static int do_init_xkb(XkbPlugin * xkb)
+ {
+ xkb->group_count = 2;
+ xkb->symbol_names[1] = xkb->symbol_names[0];
+- xkb->symbol_names[0] = strdup("us");
+- xkb->group_names[0] = strdup("US/ASCII");
+- xkb->group_names[1] = strdup("Japanese");
++ xkb->symbol_names[0] = g_strdup("us");
++ xkb->group_names[0] = g_strdup("US/ASCII");
++ xkb->group_names[1] = g_strdup("Japanese");
+ }
+ else if (count < xkb->group_count)
+ {
+ /* Ensure that the names are fully initialized. */
+ int j = count, k = xkb->group_count;
+ while(--j >= 0) xkb->symbol_names[--k] = xkb->symbol_names[j];
+- while(--k >= 0) xkb->symbol_names[k] = strdup("en_US");
++ while(--k >= 0) xkb->symbol_names[k] = g_strdup("en_US");
+ }
+
+- /* Enxure that the names are fully initialized. */
++ /* Ensure that the names are fully initialized. */
+ for (i = 0; i < xkb->group_count; i++)
+ {
+ if (xkb->symbol_names[i] == NULL)
+ {
+ ERR("\nGroup Symbol %i is undefined, set to 'U/A' !\n", i+1);
+- xkb->symbol_names[i] = strdup("U/A");
++ xkb->symbol_names[i] = g_strdup("U/A");
+ }
+ }
+
++ /* Create or recreate hash table.
++ * The layout that was associated to the windows may or may not be at the same group number,
++ * and worse, may no longer exist, which there is no meaningful way to deal with. */
++ if (xkb->group_hash_table != NULL)
++ g_hash_table_destroy(xkb->group_hash_table);
++ xkb->group_hash_table = g_hash_table_new(g_direct_hash, NULL);
++
+ status = True;
+
+ HastaLaVista:
+ if (kbd_desc_ptr != NULL)
+ XkbFreeKeyboard(kbd_desc_ptr, 0, True);
++
+ return status;
+ }
+
++/* GDK event filter that receives events from all windows and the Xkb extension. */
++static GdkFilterReturn xkb_event_filter(GdkXEvent * xevent, GdkEvent * event, XkbPlugin * xkb)
++{
++ XEvent * ev = (XEvent *) xevent;
++
++ if (ev->xany.type == xkb->base_event_code + XkbEventCode)
++ {
++ /* Xkb event. */
++ XkbEvent * xkbev = (XkbEvent *) ev;
++ if (xkbev->any.xkb_type == XkbNewKeyboardNotify)
++ {
++ initialize_keyboard_description(xkb);
++ refresh_group_xkb(xkb);
++ xkb_redraw(xkb);
++ xkb_enter_locale_by_process(xkb);
++ }
++ else if (xkbev->any.xkb_type == XkbStateNotify)
++ {
++ if (xkbev->state.group != xkb->current_group_xkb_no)
++ {
++ /* Switch to the new group and redraw the display. */
++ xkb->current_group_xkb_no = xkbev->state.group;
++ refresh_group_xkb(xkb);
++ xkb_redraw(xkb);
++ xkb_enter_locale_by_process(xkb);
++ }
++ }
++ }
++ return GDK_FILTER_CONTINUE;
++}
++
+ /* Initialize the Xkb interface. */
+ void xkb_mechanism_constructor(XkbPlugin * xkb)
+ {
+- /* Enable the Xkb extension on all clients. */
+- XkbIgnoreExtension(False);
+-
+- /* Open the display. */
+- int major = XkbMajorVersion;
+- int minor = XkbMinorVersion;
+- char * display_name = "";
+- int event_code;
+- int error_rtrn;
+- int reason_rtrn;
+- xkb->dsp = XkbOpenDisplay(display_name, &event_code, &error_rtrn, &major, &minor, &reason_rtrn);
+-
+- switch (reason_rtrn)
++ /* Initialize Xkb extension. */
++ int opcode;
++ int maj = XkbMajorVersion;
++ int min = XkbMinorVersion;
++ if ((XkbLibraryVersion(&maj, &min))
++ && (XkbQueryExtension(GDK_DISPLAY(), &opcode, &xkb->base_event_code, &xkb->base_error_code, &maj, &min)))
+ {
+- case XkbOD_BadLibraryVersion:
+- ERR("Bad XKB library version.\n");
+- return;
+- case XkbOD_ConnectionRefused:
+- ERR("Connection to X server refused.\n");
+- return;
+- case XkbOD_BadServerVersion:
+- ERR("Bad X server version.\n");
+- return;
+- case XkbOD_NonXkbServer:
+- ERR("XKB not present.\n");
+- return;
+- case XkbOD_Success:
+- break;
+- }
++ /* Read the keyboard description. */
++ initialize_keyboard_description(xkb);
+
+- /* Initialize our mechanism. */
+- if (do_init_xkb(xkb) != True)
+- return;
++ /* Establish GDK event filter. */
++ gdk_window_add_filter(NULL, (GdkFilterFunc) xkb_event_filter, (gpointer) xkb);
+
+- /* Specify events we will receive. */
+- XkbSelectEventDetails(xkb->dsp, xkb->device_id, XkbStateNotify, XkbAllStateComponentsMask, XkbGroupStateMask);
++ /* Specify events we will receive. */
++ XkbSelectEvents(GDK_DISPLAY(), XkbUseCoreKbd, XkbNewKeyboardNotifyMask, XkbNewKeyboardNotifyMask);
++ XkbSelectEventDetails(GDK_DISPLAY(), XkbUseCoreKbd, XkbStateNotify, XkbAllStateComponentsMask, XkbGroupStateMask);
+
+- /* Get current state. */
+- refresh_group_xkb(xkb);
++ /* Get current state. */
++ refresh_group_xkb(xkb);
++ }
+ }
+
+ /* Deallocate resources associated with Xkb interface. */
+ void xkb_mechanism_destructor(XkbPlugin * xkb)
+ {
++ /* Remove event filter. */
++ gdk_window_remove_filter(NULL, (GdkFilterFunc) xkb_event_filter, xkb);
++
+ /* Free group and symbol name memory. */
+ int i;
+ for (i = 0; i < xkb->group_count; i++)
+@@ -283,21 +319,11 @@ void xkb_mechanism_destructor(XkbPlugin * xkb)
+ }
+ }
+
+- /* Close the display. */
+- XCloseDisplay(xkb->dsp);
+- xkb->dsp = NULL;
+-
+ /* Destroy the hash table. */
+ g_hash_table_destroy(xkb->group_hash_table);
+ xkb->group_hash_table = NULL;
+ }
+
+-/* Return the connection number for the display. */
+-int xkb_get_connection_number(XkbPlugin * xkb)
+-{
+- return ConnectionNumber(xkb->dsp);
+-}
+-
+ /* Set the layout to the next layout. */
+ int xkb_change_group(XkbPlugin * xkb, int increment)
+ {
+@@ -307,33 +333,13 @@ int xkb_change_group(XkbPlugin * xkb, int increment)
+ if (next_group >= xkb->group_count) next_group = 0;
+
+ /* Execute the change. */
+- XkbLockGroup(xkb->dsp, xkb->device_id, next_group);
++ XkbLockGroup(GDK_DISPLAY(), XkbUseCoreKbd, next_group);
+ refresh_group_xkb(xkb);
+ xkb_redraw(xkb);
+ xkb_enter_locale_by_process(xkb);
+ return 1;
+ }
+
+-/* Callback when activity detected on the Xkb channel. */
+-gboolean xkb_gio_callback(GIOChannel * source, GIOCondition condition, gpointer data)
+-{
+- XkbPlugin * xkb = (XkbPlugin *) data;
+-
+- XkbEvent evnt;
+- XNextEvent(xkb->dsp, &evnt.core);
+- if ((evnt.type == xkb->base_event_code)
+- && (evnt.any.xkb_type == XkbStateNotify)
+- && (evnt.state.group != xkb->current_group_xkb_no))
+- {
+- /* Switch to the new group and redraw the display. */
+- xkb->current_group_xkb_no = evnt.state.group;
+- refresh_group_xkb(xkb);
+- xkb_redraw(xkb);
+- xkb_enter_locale_by_process(xkb);
+- }
+- return TRUE;
+-}
+-
+ /* React to change of focus by switching to the application's layout or the default layout. */
+ void xkb_active_window_changed(XkbPlugin * xkb, gint pid)
+ {
+@@ -345,7 +351,7 @@ void xkb_active_window_changed(XkbPlugin * xkb, gint pid)
+
+ if (new_group_xkb_no < xkb->group_count)
+ {
+- XkbLockGroup(xkb->dsp, xkb->device_id, new_group_xkb_no);
++ XkbLockGroup(GDK_DISPLAY(), XkbUseCoreKbd, new_group_xkb_no);
+ refresh_group_xkb(xkb);
+ }
+ }
+diff --git a/src/plugins/xkb/xkb.h b/src/plugins/xkb/xkb.h
+index 9265198..20c7ed3 100644
+--- a/src/plugins/xkb/xkb.h
++++ b/src/plugins/xkb/xkb.h
+@@ -49,10 +49,8 @@ typedef struct {
+ GtkWidget * per_app_default_layout_menu; /* Combo box of all available layouts */
+
+ /* Mechanism. */
+- Display * dsp; /* Handle to X display */
+ int base_event_code; /* Result of initializing Xkb extension */
+ int base_error_code;
+- int device_id; /* Keyboard device ID (always "core keyboard") */
+ int current_group_xkb_no; /* Current layout */
+ int group_count; /* Count of groups as returned by Xkb */
+ char * group_names[XkbNumKbdGroups]; /* Group names as returned by Xkb */
+@@ -67,12 +65,11 @@ extern int xkb_get_current_group_xkb_no(XkbPlugin * xkb);
+ extern int xkb_get_group_count(XkbPlugin * xkb);
+ extern const char * xkb_get_symbol_name_by_res_no(XkbPlugin * xkb, int group_res_no);
+ extern const char * xkb_get_current_group_name(XkbPlugin * xkb);
+-extern const char * xkb_get_current_group_name_lowercase(XkbPlugin * xkb);
++extern const char * xkb_get_current_symbol_name(XkbPlugin * xkb);
++extern const char * xkb_get_current_symbol_name_lowercase(XkbPlugin * xkb);
+ extern void xkb_mechanism_constructor(XkbPlugin * xkb);
+ extern void xkb_mechanism_destructor(XkbPlugin * xkb);
+-extern int xkb_get_connection_number(XkbPlugin * xkb);
+ extern int xkb_change_group(XkbPlugin * xkb, int increment);
+-extern gboolean xkb_gio_callback(GIOChannel * source, GIOCondition condition, gpointer data);
+ extern void xkb_active_window_changed(XkbPlugin * xkb, GPid pid);
+
+ #endif
+--
+1.7.0
+
diff --git a/extra/lxpanel/PKGBUILD b/extra/lxpanel/PKGBUILD
new file mode 100644
index 000000000..9ad1d1774
--- /dev/null
+++ b/extra/lxpanel/PKGBUILD
@@ -0,0 +1,25 @@
+$Id: PKGBUILD 94639 2010-10-08 22:08:39Z angvp $
+# Maintainer: Angel Velasquez <angvp@archlinux.org>
+# Maintainer: Juergen Hoetzel <juergen@archlinux.org>
+pkgname=lxpanel
+pkgver=0.5.6
+pkgrel=1
+pkgdesc="Panel of the LXDE Desktop"
+arch=('i686' 'x86_64')
+license=('GPL2')
+url="http://lxde.org/"
+groups=('lxde')
+depends=('gtk2' 'alsa-lib' 'menu-cache' 'lxmenu-data')
+source=(http://downloads.sourceforge.net/sourceforge/lxde/${pkgname}-${pkgver}.tar.gz
+ Fix-build-issue-with-symbol-alarm-showing-up-on-F14-.patch)
+optdepends=(pcmanfm)
+md5sums=('3c6b5498b5f4109c3913b10a66809fe6'
+ 'afe03191cbeccfc702f9a04bffd62dbf')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ patch -p1 -i $srcdir/Fix-build-issue-with-symbol-alarm-showing-up-on-F14-.patch
+ ./configure --sysconfdir=/etc --prefix=/usr
+ make
+ make DESTDIR="$pkgdir" install
+}
diff --git a/extra/lxsession-lite/PKGBUILD b/extra/lxsession-lite/PKGBUILD
new file mode 100644
index 000000000..cc60a844b
--- /dev/null
+++ b/extra/lxsession-lite/PKGBUILD
@@ -0,0 +1,22 @@
+# Maintainer: Juergen Hoetzel <juergen@archlinux.org>
+pkgname=lxsession-lite
+pkgver=0.4.5
+pkgrel=1
+pkgdesc="Session manager of the LXDE Desktop (light version)"
+arch=('i686' 'x86_64')
+license=('GPL2')
+url="http://lxde.org/"
+groups=('lxde')
+depends=('gtk2' 'dbus')
+makedepends=('pkgconfig' 'intltool')
+replaces=("lxde-settings-daemon")
+conflicts=('lxsession' 'lxde-settings-daemon')
+source=(http://downloads.sourceforge.net/sourceforge/lxde/lxsession-${pkgver}.tar.gz)
+md5sums=('d5cd0cb733748191b2c7371c9efda155')
+
+build() {
+ cd "$srcdir/lxsession-$pkgver"
+ ./configure --sysconfdir=/etc --prefix=/usr
+ make
+ make DESTDIR="$pkgdir" install
+}
diff --git a/extra/lxsplit/PKGBUILD b/extra/lxsplit/PKGBUILD
new file mode 100644
index 000000000..cfc838f3c
--- /dev/null
+++ b/extra/lxsplit/PKGBUILD
@@ -0,0 +1,21 @@
+# $Id: PKGBUILD 26529 2009-02-08 21:47:07Z eric $
+# Contributor: Damir Perisa <damir.perisa@bluewin.ch>
+
+pkgname=lxsplit
+pkgver=0.2.4
+pkgrel=1
+pkgdesc="Command-line file splitter/joiner compatible with any HJSplit version"
+arch=('i686' 'x86_64')
+url="http://lxsplit.sourceforge.net/"
+license=('GPL')
+depends=('glibc')
+#source=(http://www.freebyte.com/download/$pkgname.tar.gz)
+source=(http://downloads.sourceforge.net/sourceforge/lxsplit/lxsplit-${pkgver}.tar.gz)
+md5sums=('ed21a08c167c08d4d81c820782947cb1')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ install -d ${pkgdir}/usr/bin
+ make || return 1
+ make INSTALL_PATH=${pkgdir}/usr/bin install || return 1
+}
diff --git a/extra/lynx/PKGBUILD b/extra/lynx/PKGBUILD
new file mode 100644
index 000000000..344bdfa54
--- /dev/null
+++ b/extra/lynx/PKGBUILD
@@ -0,0 +1,39 @@
+# $Id: PKGBUILD 108237 2011-01-30 14:55:53Z andrea $
+# Maintainer:
+# Contributor: Douglas Soares de Andrade <douglas@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=lynx
+pkgver=2.8.7
+_pkgver=2-8-7
+pkgrel=4
+pkgdesc="A text browser for the World Wide Web"
+url="http://lynx.isc.org/"
+arch=(i686 x86_64)
+license=('GPL')
+depends=('ncurses' 'openssl')
+backup=('etc/lynx.cfg')
+source=("http://lynx.isc.org/release/${pkgname}${pkgver}.tar.gz")
+md5sums=('e36d70f3f09b2d502055ca67f09e363c')
+
+build() {
+ cd ${srcdir}/${pkgname}${_pkgver}
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --with-ssl \
+ --enable-nls \
+ --enable-ipv6 \
+ --mandir=/usr/share/man
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}${_pkgver}
+ make DESTDIR=${pkgdir} install
+
+ # FS#20404 - points to local help
+ sed -i -e "s|^HELPFILE.*$|HELPFILE:file:///usr/share/doc/lynx/lynx_help/lynx_help_main.html|" ${pkgdir}/etc/lynx.cfg
+
+ install -d ${pkgdir}/usr/share/doc/lynx
+ cp -rf lynx_help ${pkgdir}/usr/share/doc/lynx
+}
diff --git a/extra/lyx/PKGBUILD b/extra/lyx/PKGBUILD
new file mode 100644
index 000000000..dec0a4419
--- /dev/null
+++ b/extra/lyx/PKGBUILD
@@ -0,0 +1,35 @@
+# $Id: PKGBUILD 112021 2011-03-03 08:05:12Z eric $
+# Maintainer: Ronald van Haren <ronald.archlinux.org>
+# Contributor: Jason Chu <jason@archlinux.org>
+
+pkgname=lyx
+pkgver=1.6.9
+pkgrel=2
+pkgdesc="An advanced open-source document processor."
+arch=('i686' 'x86_64')
+url="http://www.lyx.org"
+depends=('qt' 'texlive-core' 'python2' 'perl' 'imagemagick' 'aspell' 'aiksaurus' 'boost-libs')
+makedepends=('boost')
+license=('GPL')
+source=(ftp://ftp.lyx.org/pub/lyx/stable/1.6.x/$pkgname-$pkgver.tar.bz2 \
+ lyx.desktop)
+sha1sums=('a1acacc8a26546542e32977ae222e811c98b1ca4'
+ 'e207a0b14d58aeb7b83f8fc47ab2e668cbc66844')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ find . -type f -exec sed -i 's|#!.*python|#!/usr/bin/env python2|' {} +
+ sed -i 's|"python|"python2|' lib/configure.py src/support/os.cpp
+ ./configure --prefix=/usr \
+ --with-frontend=qt4 --without-included-boost
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ make DESTDIR="${pkgdir}" install
+
+ # install desktop entry
+ install -Dm644 "${srcdir}/lyx.desktop" "${pkgdir}/usr/share/applications/lyx.desktop"
+}
diff --git a/extra/lyx/lyx.desktop b/extra/lyx/lyx.desktop
new file mode 100644
index 000000000..91a90d810
--- /dev/null
+++ b/extra/lyx/lyx.desktop
@@ -0,0 +1,9 @@
+[Desktop Entry]
+Name=Lyx
+Comment=Latex WYSIWYM Editor
+Icon=/usr/share/lyx/images/lyx.png
+Exec=lyx
+Terminal=false
+Type=Application
+StartupNotify=false
+Categories=Office;
diff --git a/extra/lzo/PKGBUILD b/extra/lzo/PKGBUILD
new file mode 100644
index 000000000..6bbed4e68
--- /dev/null
+++ b/extra/lzo/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 37199 2009-05-01 03:25:47Z eric $
+# Contributor: Low Kian Seong <fastmail_low@speedymail.org>
+# Maintainer: Judd Vinet <jvinet@zeroflux.org>
+pkgname=lzo
+pkgver=1.08
+pkgrel=5
+pkgdesc="LZO is a portable lossless data compression library written in ANSI C"
+arch=(i686 x86_64)
+license=('GPL')
+url="http://www.oberhumer.com/opensource/lzo"
+depends=('glibc')
+makedepends=('nasm')
+options=('!libtool')
+source=(http://www.oberhumer.com/opensource/${pkgname}/download/${pkgname}-${pkgver}.tar.gz
+ nasm-gcc3.patch)
+md5sums=('ab94d3da364c7cbd5b78d76f1875b0f6' '43fb13762383b572d22152f8815ea4a5')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ patch -Np0 -i ${srcdir}/nasm-gcc3.patch || return 1
+ autoconf || return 1
+ ./configure --prefix=/usr --enable-shared || return 1
+ make || return 1
+ make DESTDIR=${pkgdir} install || return 1
+}
diff --git a/extra/lzo/nasm-gcc3.patch b/extra/lzo/nasm-gcc3.patch
new file mode 100644
index 000000000..19b351b3d
--- /dev/null
+++ b/extra/lzo/nasm-gcc3.patch
@@ -0,0 +1,40 @@
+--- configure.in 2002-07-13 01:31:52.000000000 +0000
++++ configure.in.patched 2003-09-10 14:37:31.000000000 +0000
+@@ -319,13 +319,13 @@
+ [AC_TRY_RUN([#include <stdio.h>
+ int test() {
+ #if defined(__GNUC__)
+- __asm__ __volatile__ ("
+- .align 4
+-mfx_a1:
+- .byte 0
+- .align 4
+-mfx_a2:
+- ");
++ __asm__ __volatile__ (
++ ".align 4\n"
++"mfx_a1:\n"
++ ".byte 0\n"
++ ".align 4\n"
++"mfx_a2:\n"
++ );
+ #endif
+ return 0;
+ }
+@@ -363,11 +363,11 @@
+ #endif
+ int mfx_asm_func();
+ static void test() {
+- __asm__ __volatile__("
+- .globl mfx_asm_func
+- mfx_asm_func:
+- .byte 0
+- ");
++ __asm__ __volatile__(
++ ".globl mfx_asm_func\n"
++ "mfx_asm_func:\n"
++ ".byte 0\n"
++ );
+ }
+ ], [
+ return mfx_asm_func();
diff --git a/extra/lzop/PKGBUILD b/extra/lzop/PKGBUILD
new file mode 100644
index 000000000..240422d27
--- /dev/null
+++ b/extra/lzop/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 98428 2010-11-08 21:29:39Z andrea $
+# Maintainer:
+# Contributor: Damir Perisa <damir.perisa@bluewin.ch>
+
+pkgname=lzop
+pkgver=1.03
+pkgrel=1
+pkgdesc="File compressor using lzo lib"
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://www.lzop.org/"
+depends=('lzo2')
+source=(http://www.lzop.org/download/${pkgname}-${pkgver}.tar.gz)
+md5sums=('006c5e27fb78cdd14a628fdfa5aa1905')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr \
+ --mandir=/usr/share/man
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/m17n-lib/PKGBUILD b/extra/m17n-lib/PKGBUILD
new file mode 100644
index 000000000..103eae831
--- /dev/null
+++ b/extra/m17n-lib/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 106797 2011-01-19 09:42:18Z bisson $
+# Contributor: Camille Moncelier <pix@devlife.org>
+
+pkgname=m17n-lib
+pkgver=1.6.2
+pkgrel=2
+pkgdesc='A multilingual text processing library (runtimes)'
+arch=('i686' 'x86_64')
+url='http://www.m17n.org/m17n-lib/'
+license=('GPL')
+depends=('libxft' 'm17n-db' 'fribidi' 'libxml2' 'gd' 'libotf>=0.9.11')
+optdepends=('anthy: to use the anthy input method')
+options=('!libtool' '!makeflags')
+source=("http://www.m17n.org/m17n-lib-download/$pkgname-$pkgver.tar.gz"
+ 'locale.patch')
+sha1sums=('9b9ada79357dd56c90c64cd36845c5537c363d79'
+ '55a09b9d8e6ea590d5c8f06d1397bfa0b00c1697')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ patch -p1 -i ../locale.patch # cf. FS#20482
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make DESTDIR="$pkgdir" install
+}
diff --git a/extra/m17n-lib/locale.patch b/extra/m17n-lib/locale.patch
new file mode 100644
index 000000000..79fed402d
--- /dev/null
+++ b/extra/m17n-lib/locale.patch
@@ -0,0 +1,51 @@
+--- old/src/locale.c 2010/03/19 11:59:43 1.12
++++ new/src/locale.c 2010/11/05 11:20:41 1.13
+@@ -86,34 +86,24 @@
+ MLocale *mlocale_monetary, *mlocale_numeric, ;
+ #endif
+
+-/** Parse locale name NAME and return a newly created MLocale object.
+- If the locale is not supported by the system, return NULL. */
++/** Parse locale name NAME and return a newly created MLocale object. */
+
+ static MLocale *
+ make_locale (const char *name)
+ {
+- char *current, *new, *str;
++ char *str;
+ int len;
+ MLocale *locale;
+ char c;
+
+- str = setlocale (LC_CTYPE, NULL);
+- len = strlen (str) + 1;
+- current = alloca (len);
+- memcpy (current, str, len);
+-
+- if (! (new = setlocale (LC_CTYPE, name)))
+- return NULL;
+-
+-
+ M17N_OBJECT (locale, NULL, MERROR_LOCALE);
+- locale->name = msymbol (new);
++ locale->name = msymbol (name);
+ msymbol_put (locale->name, M_locale, (void *) locale);
+ M17N_OBJECT_UNREF (locale);
+
+- len = strlen (new) + 1;
++ len = strlen (name) + 1;
+ str = alloca (len);
+- memcpy (str, new, len);
++ memcpy (str, name, len);
+
+ c = '\0';
+ while (1)
+@@ -162,8 +152,6 @@
+ }
+ else
+ locale->coding = Mcoding_us_ascii;
+-
+- setlocale (LC_CTYPE, current);
+ return locale;
+ }
+
diff --git a/extra/madwifi-utils/PKGBUILD b/extra/madwifi-utils/PKGBUILD
new file mode 100644
index 000000000..35feeea07
--- /dev/null
+++ b/extra/madwifi-utils/PKGBUILD
@@ -0,0 +1,35 @@
+# $Id: PKGBUILD 70649 2010-02-27 18:41:30Z tpowa $
+# Originally by kleptophobiac <kleptophobiac@gmail.com>
+# Modified by James Rayner for the repositories <iphitus@gmail.com>
+
+pkgname=madwifi-utils
+pkgver=0.9.4.4119
+_kernver=2.6.33-ARCH
+pkgrel=1
+pkgdesc="Userspace tools of madwifi drivers for Atheros wireless chipsets."
+arch=(i686 x86_64)
+license=('GPL')
+url="http://madwifi-project.org"
+depends=('wireless_tools')
+makedepends=('sharutils')
+provides=("madwifi-ng-utils")
+conflicts=("madwifi-ng-utils")
+replaces=("madwifi-ng-utils")
+# subversion source: svn checkout http://madwifi-project.org/svn/madwifi/trunk madwifi
+source=(ftp://ftp.archlinux.org/other/madwifi/madwifi-${pkgver}.tar.bz2
+ #http://downloads.sourceforge.net/sourceforge/madwifi/madwifi-$pkgver.tar.gz
+ )
+
+build() {
+ [ "${CARCH}" == "i686" ] && export ARCH=i386
+
+ export KERNELPATH=/lib/modules/${_kernver}/build
+ #cd $startdir/src/madwifi-$pkgver
+ cd $startdir/src/madwifi
+ make tools|| return 1
+ make DESTDIR=$startdir/pkg \
+ BINDIR=/usr/bin \
+ MANDIR=/usr/share/man \
+ install-tools
+}
+md5sums=('a720a20264b312c0ff906b9888bb49ae')
diff --git a/extra/madwifi/PKGBUILD b/extra/madwifi/PKGBUILD
new file mode 100644
index 000000000..4c6e24ed3
--- /dev/null
+++ b/extra/madwifi/PKGBUILD
@@ -0,0 +1,40 @@
+# $Id: PKGBUILD 105333 2011-01-07 20:54:16Z tpowa $
+# Originally by kleptophobiac <kleptophobiac@gmail.com>
+# Modified by James Rayner for the repositories <iphitus@gmail.com>
+
+_kernver=2.6.37-ARCH
+
+pkgname=madwifi
+pkgver=0.9.4.4133
+pkgrel=4
+pkgdesc="Madwifi drivers for Atheros wireless chipsets. For stock arch 2.6 kernel"
+arch=(i686 x86_64)
+license=('GPL')
+url="http://madwifi-project.org"
+depends=('madwifi-utils' 'kernel26>=2.6.37' 'kernel26<2.6.38')
+makedepends=('kernel26-headers>=2.6.37' 'kernel26-headers<2.6.38')
+makedepends=('sharutils')
+install=madwifi-ng.install
+# subversion source: svn checkout http:/madwifi-project.org/svn/madwifi/trunk madwifi
+source=(ftp://ftp.archlinux.org/other/madwifi/madwifi-${pkgver}.tar.bz2
+ #http://downloads.sourceforge.net/madwifi/madwifi-${pkgver}.tar.gz
+ )
+
+build() {
+ [ "${CARCH}" = "i686" ] && export ARCH=i386
+
+ #cd $startdir/src/$pkgname-$pkgver
+ cd $startdir/src/$pkgname
+ sed -i -e 's/-Werror//g' Makefile.inc
+ make KERNELPATH=/lib/modules/$_kernver/build KERNELRELEASE=$_kernver modules|| return 1
+ make KERNELPATH=/lib/modules/$_kernver/build KERNELRELEASE=$_kernver modules \
+ DESTDIR=$startdir/pkg KERNELRELEASE=$_kernver install-modules
+ sed -i -e "s/KERNEL_VERSION='.*'/KERNEL_VERSION='${_kernver}'/" $startdir/*.install
+
+ # install to wireless kernel directory
+ mkdir -p $startdir/pkg/lib/modules/$_kernver/kernel/drivers/net/wireless/madwifi
+ mv $startdir/pkg/lib/modules/$_kernver/net/* $startdir/pkg/lib/modules/$_kernver/kernel/drivers/net/wireless/madwifi
+ rm -r $startdir/pkg/lib/modules/$_kernver/net/
+}
+
+md5sums=('ca3c3504d000e7b3d7063af46271c932')
diff --git a/extra/madwifi/kernel-2.6.30.patch b/extra/madwifi/kernel-2.6.30.patch
new file mode 100644
index 000000000..f844668de
--- /dev/null
+++ b/extra/madwifi/kernel-2.6.30.patch
@@ -0,0 +1,14 @@
+--- ath/if_athvar.h~ 2009-06-13 09:38:53.000000000 +0200
++++ ath/if_athvar.h 2009-06-13 09:38:53.000000000 +0200
+@@ -103,11 +103,6 @@
+ /*
+ * Guess how the interrupt handler should work.
+ */
+-#if !defined(IRQ_NONE)
+-typedef void irqreturn_t;
+-#define IRQ_NONE
+-#define IRQ_HANDLED
+-#endif /* !defined(IRQ_NONE) */
+
+ #ifndef SET_MODULE_OWNER
+ #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23)
diff --git a/extra/madwifi/madwifi-ng.install b/extra/madwifi/madwifi-ng.install
new file mode 100644
index 000000000..a6dfd6568
--- /dev/null
+++ b/extra/madwifi/madwifi-ng.install
@@ -0,0 +1,14 @@
+post_install() {
+ KERNEL_VERSION='2.6.37-ARCH'
+ depmod -ae $KERNEL_VERSION > /dev/null 2>&1
+}
+
+post_upgrade() {
+ KERNEL_VERSION='2.6.37-ARCH'
+ depmod -ae $KERNEL_VERSION > /dev/null 2>&1
+}
+
+post_remove() {
+ KERNEL_VERSION='2.6.37-ARCH'
+ depmod -ae $KERNEL_VERSION > /dev/null 2>&1
+}
diff --git a/extra/mahjong/PKGBUILD b/extra/mahjong/PKGBUILD
new file mode 100644
index 000000000..2aaff6579
--- /dev/null
+++ b/extra/mahjong/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id: PKGBUILD 47741 2009-07-25 22:52:50Z giovanni $
+# Maintainer: Kevin Piche <kevin@archlinux.org>
+# Contributor: Jason Chu <jchu@xentac.net>
+
+pkgname=mahjong
+pkgver=1.10
+pkgrel=1
+pkgdesc="The classical game of Mah Jongg (not the solitare version). Includes network play"
+arch=('i686' 'x86_64')
+url="http://www.stevens-bradfield.com/MahJong/"
+license=('GPL' 'custom')
+depends=('gtk2')
+source=(http://mahjong.julianbradfield.org/Source/mj-$pkgver-src.tar.gz)
+md5sums=('f9bacf9fd6743d5e3a2fd86863607ce2')
+
+build() {
+ cd $srcdir/mj-$pkgver-src
+ make || return 1
+ make DESTDIR=$pkgdir/usr/ MANDIR=share/man/man1 install install.man
+ install -m644 -D tiles-v1/README \
+ $pkgdir/usr/share/licenses/$pkgname/tiles-license.txt
+}
diff --git a/extra/mail-notification/PKGBUILD b/extra/mail-notification/PKGBUILD
new file mode 100644
index 000000000..6d072f4aa
--- /dev/null
+++ b/extra/mail-notification/PKGBUILD
@@ -0,0 +1,54 @@
+# $Id: PKGBUILD 112858 2011-03-07 09:46:50Z ibiru $
+# Maintainer: Roman Kyrylych <roman@archlinux.org>
+
+pkgname=mail-notification
+pkgver=5.4
+pkgrel=7
+pkgdesc="Tray icon application that informs you if you have new mail"
+arch=('i686' 'x86_64')
+url="http://www.nongnu.org/mailnotify/"
+license=('GPL3' 'FDL')
+depends=('cyrus-sasl-plugins' 'gmime' 'libnotify>=0.7.1' 'gnome-keyring' 'hicolor-icon-theme' 'notification-daemon' 'libgnomeui')
+makedepends=('gob2' 'intltool' 'evolution' 'gnome-doc-utils')
+options=('!libtool' '!emptydirs')
+install=mail-notification.install
+source=(http://savannah.nongnu.org/download/mailnotify/${pkgname}-${pkgver}.tar.bz2
+ dont-update-cache.patch
+ remove-ubuntu-special-case.patch
+ gmime-2.4.patch
+ evolution-gtkhtml.patch
+ evolution.patch
+ mail-notification-5.4-icons.patch
+ mail-notification-5.4-camel_headers.patch)
+md5sums=('c8dc33a61251acb5474e56eab6b18f43'
+ '6007bc30e789dab0a8282038e0335eb9'
+ '9cadd61bbd9c324b2916ec980231e0f2'
+ '447cc20f035b9cf1a391027684ce1297'
+ '500b2e42fbc5078e61407923a07b6e94'
+ '46568640b7f97ab9ab7b54d49bee7e8e'
+ '8f602891a694ceaa91f845d97ae51b39'
+ 'f79939f593b2e8659e302df72c2b54b1')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ patch -Np0 -i "${srcdir}/dont-update-cache.patch"
+ patch -Np0 -i "${srcdir}/remove-ubuntu-special-case.patch"
+ patch -Np1 -i "${srcdir}/gmime-2.4.patch"
+ patch -Np1 -i "${srcdir}/evolution-gtkhtml.patch"
+ patch -Np0 -i "${srcdir}/evolution.patch"
+ patch -Np0 -i "${srcdir}/mail-notification-5.4-icons.patch"
+ patch -Np1 -i "${srcdir}/mail-notification-5.4-camel_headers.patch"
+
+ ./jb configure prefix=/usr sysconfdir=/etc \
+ localstatedir=/var destdir="${pkgdir}" \
+ gconf-schemas-dir=/etc/gconf/schemas install-gconf-schemas=yes \
+ cflags="${CFLAGS}" cppflags="${CXXFLAGS}" ldflags="${LDFLAGS}" \
+ library-mode=0755
+ ./jb build
+ GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 ./jb install
+
+ install -m755 -d "${pkgdir}/usr/share/gconf/schemas"
+ gconf-merge-schema ${pkgdir}/usr/share/gconf/schemas/${pkgname}.schemas --domain mail-notification ${pkgdir}/etc/gconf/schemas/*.schemas
+ rm -f ${pkgdir}/etc/gconf/schemas/*.schemas
+}
diff --git a/extra/mail-notification/dont-update-cache.patch b/extra/mail-notification/dont-update-cache.patch
new file mode 100644
index 000000000..81216835e
--- /dev/null
+++ b/extra/mail-notification/dont-update-cache.patch
@@ -0,0 +1,22 @@
+--- jbsrc/jb.c.~1~ 2008-03-20 16:53:02.000000000 +0100
++++ jbsrc/jb.c 2008-03-26 20:51:45.641363619 +0100
+@@ -327,7 +327,6 @@
+ jb_package_add_resources (void)
+ {
+ JBGroup *group;
+- JBRule *rule;
+ JBObject *object;
+
+ if (jb_variable_get_bool("compile-warnings"))
+@@ -362,11 +361,6 @@
+ if (jb_variable_get_bool("hotmail"))
+ jb_group_add_data_file(group, "hotmail.png", "$pkgdatadir");
+
+- rule = jb_rule_new();
+- jb_rule_set_install_message(rule, "updating the GTK+ icon cache");
+- jb_rule_add_install_command(rule, "-gtk-update-icon-cache -f -t $datadir/icons/hicolor");
+- jb_group_add_resource(group, JB_GROUP_RESOURCE(rule));
+-
+ jb_group_add(group);
+
+ /*** data ******************************************************************/
diff --git a/extra/mail-notification/evolution-gtkhtml.patch b/extra/mail-notification/evolution-gtkhtml.patch
new file mode 100644
index 000000000..fe9b0ddf8
--- /dev/null
+++ b/extra/mail-notification/evolution-gtkhtml.patch
@@ -0,0 +1,11 @@
+--- mail-notification-5.4/jbsrc/lib/src/extras/jb-evolution-plugin.c.orig 2009-10-12 23:15:03.000000000 +0200
++++ mail-notification-5.4/jbsrc/lib/src/extras/jb-evolution-plugin.c 2009-10-12 23:17:26.000000000 +0200
+@@ -41,7 +41,7 @@
+ if (! minversion)
+ minversion = "2.12";
+
+- packages = g_strdup_printf("evolution-plugin >= %s", minversion);
++ packages = g_strdup_printf("evolution-plugin >= %s libgtkhtml-3.14 gtkhtml-editor-3.14", minversion);
+ result = jb_check_packages("Evolution", "evolution-plugin", packages);
+ g_free(packages);
+
diff --git a/extra/mail-notification/evolution.patch b/extra/mail-notification/evolution.patch
new file mode 100644
index 000000000..073818afe
--- /dev/null
+++ b/extra/mail-notification/evolution.patch
@@ -0,0 +1,102 @@
+--- build/src/mn-evolution-server.c.orig 2008-09-30 15:30:07.756216978 +0200
++++ build/src/mn-evolution-server.c 2008-09-30 15:30:49.950220711 +0200
+@@ -27,6 +27,7 @@
+ #include <stdio.h>
+ #include <libintl.h>
+ #include <gobject/gvaluecollector.h>
++#include <libedataserver/eds-version.h>
+ #include <camel/camel-folder.h>
+ #include <mail/em-folder-view.h>
+ #include <mail/em-format.h>
+@@ -595,7 +596,12 @@
+
+ for (i = 0; i < summary->len; i++)
+ {
++#if EDS_CHECK_VERSION(2,23,5)
++ char *uid = summary->pdata[i];
++ CamelMessageInfo *info = camel_folder_get_message_info(folder, uid);
++#else
+ CamelMessageInfo *info = summary->pdata[i];
++#endif
+
+ if ((camel_message_info_flags(info) & CAMEL_MESSAGE_SEEN) == 0)
+ g_ptr_array_add(*ret, self_camel_message_info_to_dbus_struct(info));
+--- build/src/mn-evolution-folder-tree-server.c.evolution 2010-02-01 10:00:12.128683776 -0500
++++ build/src/mn-evolution-folder-tree-server.c 2010-02-01 10:02:32.809697243 -0500
+@@ -26,5 +26,8 @@
+ #include <dbus/dbus.h>
++#include <libedataserver/eds-version.h>
++#if !EDS_CHECK_VERSION(2,29,0)
+ #include <mail/mail-component.h>
++#endif
+ #include <mail/em-folder-tree.h>
+ #include "mn-evolution-plugin.h"
+ #include "mn-evolution.h"
+@@ -396,7 +399,11 @@ mn_evolution_folder_tree_server_construc
+
++#if EDS_CHECK_VERSION(2,29,0)
++ selfp->tree = em_folder_tree_new();
++#else
+ EMFolderTreeModel *model;
+
+ model = mail_component_peek_tree_model(mail_component_peek());
+ selfp->tree = em_folder_tree_new_with_model(model);
++#endif
+
+ selfp->plug = gtk_plug_new((GdkNativeWindow) selfp->id);
+--- build/src/mn-evolution-server.c.evolution 2010-02-01 10:06:36.484698060 -0500
++++ build/src/mn-evolution-server.c 2010-02-01 10:09:01.946682081 -0500
+@@ -28,9 +28,14 @@
+ #include <gobject/gvaluecollector.h>
+ #include <libedataserver/eds-version.h>
+ #include <camel/camel-folder.h>
++#if EDS_CHECK_VERSION(2,29,0)
++#include <shell/e-shell.h>
++#include <mail/e-mail-browser.h>
++#else
+ #include <mail/em-folder-view.h>
+ #include <mail/em-format.h>
+ #include <mail/em-message-browser.h>
++#endif
+ #include <mail/em-utils.h>
+ #include <mail/mail-session.h>
+ #include <mail/mail-tools.h>
+@@ -568,6 +573,19 @@ mn_evolution_server_open_message (MNEvol
+ folder = self_lookup_folder(folder_uri, err);
+ if (folder)
+ {
++#if EDS_CHECK_VERSION(2,29,0)
++ EShell *shell;
++ EShellBackend *shell_backend;
++ GtkWidget *browser;
++
++ shell = e_shell_get_default ();
++ shell_backend = e_shell_get_backend_by_name (shell, "mail");
++
++ browser = e_mail_browser_new (shell_backend);
++ e_mail_reader_set_folder (E_MAIL_READER (browser), folder, folder_uri);
++ e_mail_reader_set_message (E_MAIL_READER (browser), message_uid);
++ gtk_widget_show (browser);
++#else
+ GtkWidget *browser;
+
+ /* modelled after Evolution's handleuri_got_folder() */
+@@ -578,6 +596,7 @@ mn_evolution_server_open_message (MNEvol
+ em_folder_view_set_folder((EMFolderView *) browser, folder, folder_uri);
+ em_folder_view_set_message((EMFolderView *) browser, message_uid, FALSE);
+ gtk_widget_show(((EMMessageBrowser *) browser)->window);
++#endif
+
+ camel_object_unref(folder);
+ }
+--- src/mn-evolution-plugin.c.evolution 2008-05-22 11:45:35.000000000 -0400
++++ src/mn-evolution-plugin.c 2010-02-01 11:52:06.141664757 -0500
+@@ -204,7 +204,7 @@ connect_to_session_bus (void)
+ }
+
+ int
+-e_plugin_lib_enable (EPluginLib *ep, int enable)
++e_plugin_lib_enable (EPlugin *ep, int enable)
+ {
+ static gboolean enabled = FALSE;
+ GError *err = NULL;
diff --git a/extra/mail-notification/gmime-2.4.patch b/extra/mail-notification/gmime-2.4.patch
new file mode 100644
index 000000000..0d16357fb
--- /dev/null
+++ b/extra/mail-notification/gmime-2.4.patch
@@ -0,0 +1,63 @@
+diff -Nrbu mail-notification-5.4/build/src/mn-base-mbox-mailbox-backend.c mail-notification-5.4-OK/build/src/mn-base-mbox-mailbox-backend.c
+--- mail-notification-5.4/build/src/mn-base-mbox-mailbox-backend.c 2008-12-23 14:48:49.000000000 +0300
++++ mail-notification-5.4-OK/build/src/mn-base-mbox-mailbox-backend.c 2008-12-23 14:48:28.000000000 +0300
+@@ -265,7 +265,7 @@
+ mime_message = g_mime_parser_construct_message(parser);
+ if (mime_message)
+ {
+- if (g_mime_message_get_header(mime_message, "X-Mozilla-Status"))
++ if (g_mime_object_get_header(mime_message, "X-Mozilla-Status"))
+ {
+ #if WITH_MOZILLA
+ type = MN_TYPE_MOZILLA_MAILBOX_BACKEND;
+diff -Nrbu mail-notification-5.4/build/src/mn-mozilla-mailbox-backend.c mail-notification-5.4-OK/build/src/mn-mozilla-mailbox-backend.c
+--- mail-notification-5.4/build/src/mn-mozilla-mailbox-backend.c 2008-12-23 14:48:49.000000000 +0300
++++ mail-notification-5.4-OK/build/src/mn-mozilla-mailbox-backend.c 2008-12-23 14:46:47.000000000 +0300
+@@ -167,7 +167,7 @@
+
+ const char *header;
+
+- header = g_mime_message_get_header(mime_message, header_name);
++ header = g_mime_object_get_header(mime_message, header_name);
+ if (header && mn_str_ishex(header))
+ return strtol(header, NULL, 16);
+ else
+diff -Nrbu mail-notification-5.4/jbsrc/jb.c mail-notification-5.4-OK/jbsrc/jb.c
+--- mail-notification-5.4/jbsrc/jb.c 2008-05-22 19:47:04.000000000 +0400
++++ mail-notification-5.4-OK/jbsrc/jb.c 2008-12-23 14:43:09.000000000 +0300
+@@ -166,7 +166,7 @@
+ jb_require_packages("GNOME", "gnome", "glib-2.0 >= 2.14 gthread-2.0 gconf-2.0 >= 2.4.0 gtk+-2.0 >= 2.12 libgnomeui-2.0 >= 2.14.0 gnome-vfs-2.0 libglade-2.0 libxml-2.0 libnotify >= 0.4.1");
+ jb_require_packages("D-Bus", "dbus", "dbus-glib-1");
+
+- jb_check_packages_for_options("GMime", "gmime", "gmime-2.0 >= 2.2.7",
++ jb_check_packages_for_options("GMime", "gmime", "gmime-2.4",
+ "hotmail",
+ "imap",
+ "maildir",
+diff -Nrbu mail-notification-5.4/src/mn-message-mime.c mail-notification-5.4-OK/src/mn-message-mime.c
+--- mail-notification-5.4/src/mn-message-mime.c 2008-05-22 19:45:35.000000000 +0400
++++ mail-notification-5.4-OK/src/mn-message-mime.c 2008-12-23 14:46:35.000000000 +0300
+@@ -33,12 +33,12 @@
+ g_return_val_if_fail(GMIME_IS_MESSAGE(mime_message), FALSE);
+
+ /* SpamAssassin */
+- spam = g_mime_message_get_header(mime_message, "X-Spam-Status");
++ spam = g_mime_object_get_header(mime_message, "X-Spam-Status");
+ if (spam && mn_ascii_str_case_has_prefix(spam, "yes"))
+ return TRUE;
+
+ /* bogofilter */
+- spam = g_mime_message_get_header(mime_message, "X-Bogosity");
++ spam = g_mime_object_get_header(mime_message, "X-Bogosity");
+ if (spam && mn_ascii_str_case_has_prefix(spam, "yes"))
+ return TRUE;
+
+@@ -89,7 +89,7 @@
+ {
+ const char *status;
+
+- status = g_mime_message_get_header(mime_message, "Status");
++ status = g_mime_object_get_header(mime_message, "Status");
+ if (status && strchr(status, 'R'))
+ return NULL; /* the message was read */
+ else if (status && strchr(status, 'O'))
diff --git a/extra/mail-notification/mail-notification-5.4-camel_headers.patch b/extra/mail-notification/mail-notification-5.4-camel_headers.patch
new file mode 100644
index 000000000..861e3d215
--- /dev/null
+++ b/extra/mail-notification/mail-notification-5.4-camel_headers.patch
@@ -0,0 +1,36 @@
+diff -Nrbu mail-notification-5.4/build/src/mn-evolution-message.c mail-notification-5.4-OK/build/src/mn-evolution-message.c
+--- mail-notification-5.4/build/src/mn-evolution-message.c 2008-05-22 19:47:51.000000000 +0400
++++ mail-notification-5.4-OK/build/src/mn-evolution-message.c 2010-05-04 18:13:31.000000000 +0400
+@@ -25,7 +25,7 @@
+ #line 24 "src/mn-evolution-message.gob"
+
+ #include <glib/gi18n.h>
+-#include <camel/camel-folder-summary.h>
++#include <camel/camel.h>
+ #include "mn-evolution-mailbox.h"
+ #include "mn-message-private.h"
+ #include "mn-evolution-client.h"
+diff -Nrbu mail-notification-5.4/build/src/mn-evolution-server.c mail-notification-5.4-OK/build/src/mn-evolution-server.c
+--- mail-notification-5.4/build/src/mn-evolution-server.c 2010-05-04 18:12:56.000000000 +0400
++++ mail-notification-5.4-OK/build/src/mn-evolution-server.c 2010-05-04 18:13:39.000000000 +0400
+@@ -28,7 +28,7 @@
+ #include <libintl.h>
+ #include <gobject/gvaluecollector.h>
+ #include <libedataserver/eds-version.h>
+-#include <camel/camel-folder.h>
++#include <camel/camel.h>
+ #if EDS_CHECK_VERSION(2,29,0)
+ #include <shell/e-shell.h>
+ #include <mail/e-mail-browser.h>
+diff -Nrbu mail-notification-5.4/src/mn-evolution-plugin.c mail-notification-5.4-OK/src/mn-evolution-plugin.c
+--- mail-notification-5.4/src/mn-evolution-plugin.c 2010-05-04 18:12:56.000000000 +0400
++++ mail-notification-5.4-OK/src/mn-evolution-plugin.c 2010-05-04 18:13:20.000000000 +0400
+@@ -24,7 +24,7 @@
+ #include <dbus/dbus.h>
+ #include <dbus/dbus-glib-lowlevel.h>
+ #include <dbus/dbus-glib-bindings.h>
+-#include <camel/camel-folder.h>
++#include <camel/camel.h>
+ #include <mail/em-event.h>
+ #include <mail/mail-tools.h>
+ #include "mn-evolution.h"
diff --git a/extra/mail-notification/mail-notification-5.4-icons.patch b/extra/mail-notification/mail-notification-5.4-icons.patch
new file mode 100644
index 000000000..66e09b2aa
--- /dev/null
+++ b/extra/mail-notification/mail-notification-5.4-icons.patch
@@ -0,0 +1,36 @@
+Patch by Fedora to use icons that are available in Gnome 2.30+
+
+https://bugzilla.redhat.com/show_bug.cgi?id=573809
+
+--- src/mn-stock.c.icons 2008-05-22 16:45:35.000000000 +0100
++++ src/mn-stock.c 2010-05-20 21:53:20.306859177 +0100
+@@ -32,11 +32,11 @@
+ const char *icon_name;
+ const char *source_stock_id;
+ } icons[] = {
+- { MN_STOCK_MAIL, NULL, "stock_mail" },
+- { MN_STOCK_NO_MAIL, NULL, "stock_inbox" },
++ { MN_STOCK_MAIL, NULL, "mail-notification" },
++ { MN_STOCK_NO_MAIL, NULL, "mail-notification" },
+ { MN_STOCK_LOCAL, NULL, "stock_folder" },
+ { MN_STOCK_REMOTE, NULL, "stock_internet" },
+- { MN_STOCK_UNKNOWN, NULL, "stock_unknown" },
++ { MN_STOCK_UNKNOWN, NULL, "unknown" },
+ { MN_STOCK_ERROR, NULL, NULL, GTK_STOCK_DIALOG_ERROR },
+ #if WITH_GMAIL
+ { MN_STOCK_GMAIL, PKGDATADIR G_DIR_SEPARATOR_S "gmail.png" },
+@@ -51,11 +51,11 @@
+ { MN_STOCK_SYSTEM_MAILBOX, NULL, "system" },
+ #endif
+ #if WITH_EVOLUTION
+- { MN_STOCK_EVOLUTION_MAILBOX, NULL, "evolution" },
++ { MN_STOCK_EVOLUTION_MAILBOX, NULL, "stock_mail-unread" },
+ #endif
+- { MN_STOCK_MAIL_READER, NULL, "stock_mail-handling" },
++ { MN_STOCK_MAIL_READER, NULL, "stock_mail-compose" },
+ { MN_STOCK_OPEN_MESSAGE, NULL, "stock_mail-open" },
+- { MN_STOCK_CONSIDER_NEW_MAIL_AS_READ, NULL, "stock_mark" }
++ { MN_STOCK_CONSIDER_NEW_MAIL_AS_READ, NULL, "mail-mark-read" }
+ };
+ GtkIconFactory *factory;
+ GtkIconTheme *icon_theme;
diff --git a/extra/mail-notification/mail-notification.install b/extra/mail-notification/mail-notification.install
new file mode 100644
index 000000000..21cd94399
--- /dev/null
+++ b/extra/mail-notification/mail-notification.install
@@ -0,0 +1,24 @@
+pkgname=mail-notification
+
+post_install() {
+ usr/sbin/gconfpkg --install ${pkgname}
+ kill -s HUP `pidof bonobo-activation-server` > /dev/null 2>&1
+ 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() {
+ kill -s HUP `pidof bonobo-activation-server` > /dev/null 2>&1
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
diff --git a/extra/mail-notification/remove-ubuntu-special-case.patch b/extra/mail-notification/remove-ubuntu-special-case.patch
new file mode 100644
index 000000000..4516f32c6
--- /dev/null
+++ b/extra/mail-notification/remove-ubuntu-special-case.patch
@@ -0,0 +1,33 @@
+--- jbsrc/lib/src/core/jb-feature.c.~1~ 2008-04-27 16:47:27.000000000 +0200
++++ jbsrc/lib/src/core/jb-feature.c 2008-07-22 11:40:50.856886210 +0200
+@@ -164,8 +164,6 @@
+ static void
+ gconf_configure (void)
+ {
+- JBVariable *variable;
+-
+ jb_require_program("gconftool-2");
+
+ if (! strcmp(jb_variable_get_string("gconf-config-source"), "autodetect"))
+@@ -178,21 +176,6 @@
+ jb_variable_set_string("gconf-config-source", config_source);
+ g_free(config_source);
+ }
+-
+- /* fix the default schemas dir on Ubuntu */
+- variable = jb_variable_get_variable_or_error("gconf-schemas-dir");
+- if (! variable->user_set)
+- {
+- static const char *ubuntu_dir = "$datadir/gconf/schemas";
+- char *expanded;
+-
+- expanded = jb_variable_expand(ubuntu_dir, NULL);
+-
+- if (g_file_test(expanded, G_FILE_TEST_IS_DIR))
+- jb_variable_set_string("gconf-schemas-dir", ubuntu_dir);
+-
+- g_free(expanded);
+- }
+ }
+
+ static void
diff --git a/extra/mailman/PKGBUILD b/extra/mailman/PKGBUILD
new file mode 100644
index 000000000..7306c6363
--- /dev/null
+++ b/extra/mailman/PKGBUILD
@@ -0,0 +1,85 @@
+# $Id: PKGBUILD 102741 2010-12-10 21:29:32Z andyrtr $
+# Maintainer: Paul Mattal <paul@archlinux.org>
+
+pkgname=mailman
+pkgver=2.1.14
+pkgrel=1
+pkgdesc="Mailing list manager with built in web access"
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://www.list.org/"
+depends=('python2' 'smtp-server')
+# 'Defaults.py' should not be changed by users; 'mm_cfg.py' should instead.
+backup=('usr/lib/mailman/Mailman/mm_cfg.py')
+install=$pkgname.install
+source=(http://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tgz
+ mailman-2.1-build.patch
+ rc.mailman)
+md5sums=('9ea163871ceccbd33fee4c9e335fcf7b'
+ 'ed04d062379eb21e39ce1e70e6b1ade2'
+ '3d83d06d0ec3319bf3c7d9df5d18e89f')
+
+# needs to be build as root for pam allowing to create new user/group
+# LANG=C; time rm -rf src/ pkg/ && time makepkg -L --asroot
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+
+ # fix calls to /usr/bin/python
+ find . -name '*.py' | xargs sed -i 's@^#!.*python$@#!/usr/bin/python2@'
+
+ # fix directory permissions to satisfy check_perms
+ patch -Np1 -i ${srcdir}/mailman-2.1-build.patch
+
+ # the mailman user and group are required to build (better to satisfy check_perms)
+ if ! egrep '^mailman' /etc/passwd; then
+ msg "Adding user/group mailman (temporarily)"
+ groupadd -g 80 mailman
+ useradd -s /sbin/nologin -c "GNU Mailing List Manager" -d /usr/lib/mailman -u 80 -g mailman -M -r mailman
+ export cleanup=1
+ else
+ export cleanup=0
+ fi
+
+ ./configure --without-permcheck \
+ --prefix=/usr/lib/mailman \
+ --with-var-prefix=/var/lib/mailman \
+ --with-mail-gid=mailman \
+ --with-username=mailman --with-groupname=mailman \
+ --with-cgi-gid=http --with-python=/usr/bin/python2
+
+ make
+}
+
+package() {
+ cd $srcdir/$pkgname-$pkgver
+ make DESTDIR=$pkgdir install
+
+ # let's follow Fedora FHS way; Gentoo does it the other way round
+
+ # Create a link so that the config file mm_cfg.py appears in config
+ # directory /etc/mailman. We don't put mm_cfg.py in the config directory
+ # because its executable code (python file) and the security policy wants
+ # to keep executable code out of /etc and inside of a lib directory instead,
+ # and because traditionally mm_cfg.py was in the Mailman subdirectory and
+ # experienced mailman admins will expect to find it there. But having it
+ # "appear" in the config directory is good practice and heading in the
+ # right direction for FHS compliance.
+ install -d -m755 ${pkgdir}/etc/${pkgname}
+ ln -sv /usr/lib/mailman/Mailman/mm_cfg.py ${pkgdir}/etc/${pkgname}/mm_cfg.py
+
+ # fix some permissions to satisfy check_perms
+ chown -R mailman:mailman $pkgdir/{usr/lib/mailman,var/lib/mailman,etc/mailman/*}
+ chown http:mailman ${pkgdir}/var/lib/mailman/archives/private
+ chmod 2770 ${pkgdir}/var/lib/mailman/archives/private
+ chmod 2755 ${pkgdir}/usr/lib/mailman/cgi-bin/*
+ chmod 2755 ${pkgdir}/usr/lib/mailman/mail/mailman
+
+ # install the launch script
+ install -D -m755 $srcdir/rc.mailman $pkgdir/etc/rc.d/mailman || return 1
+
+ if [ $cleanup -eq 1 ]; then
+ msg "Removing user/group mailman"
+ userdel mailman
+ fi
+}
diff --git a/extra/mailman/mailman-2.1-build.patch b/extra/mailman/mailman-2.1-build.patch
new file mode 100644
index 000000000..d00613ad7
--- /dev/null
+++ b/extra/mailman/mailman-2.1-build.patch
@@ -0,0 +1,694 @@
+diff -ruN mailman-2.1.12-a/bin/Makefile.in mailman-2.1.12-b/bin/Makefile.in
+--- mailman-2.1.12-a/bin/Makefile.in 2009-02-23 22:23:35.000000000 +0100
++++ mailman-2.1.12-b/bin/Makefile.in 2009-07-28 12:19:48.000000000 +0200
+@@ -28,7 +28,6 @@
+ DESTDIR=
+
+ CC= @CC@
+-CHMOD= @CHMOD@
+ INSTALL= @INSTALL@
+
+ DEFS= @DEFS@
+@@ -56,7 +55,7 @@
+ # Modes for directories and executables created by the install
+ # process. Default to group-writable directories but
+ # user-only-writable for executables.
+-DIRMODE= 775
++DIRMODE= 2775
+ EXEMODE= 755
+ FILEMODE= 644
+ INSTALL_PROGRAM=$(INSTALL) -m $(EXEMODE)
+@@ -72,8 +71,6 @@
+ $(INSTALL) -m $(EXEMODE) $(BUILDDIR)/$$f $(DESTDIR)$(SCRIPTSDIR); \
+ done
+
+-finish:
+-
+ clean:
+
+ distclean:
+diff -ruN mailman-2.1.12-a/cron/Makefile.in mailman-2.1.12-b/cron/Makefile.in
+--- mailman-2.1.12-a/cron/Makefile.in 2009-02-23 22:23:35.000000000 +0100
++++ mailman-2.1.12-b/cron/Makefile.in 2009-07-28 12:19:48.000000000 +0200
+@@ -28,7 +28,6 @@
+ DESTDIR=
+
+ CC= @CC@
+-CHMOD= @CHMOD@
+ INSTALL= @INSTALL@
+
+ DEFS= @DEFS@
+@@ -68,8 +67,6 @@
+ $(INSTALL) -m $(EXEMODE) $(BUILDDIR)/$$f $(DESTDIR)$(CRONDIR); \
+ done
+
+-finish:
+-
+ clean:
+
+ distclean:
+diff -ruN mailman-2.1.12-a/Mailman/Archiver/Makefile.in mailman-2.1.12-b/Mailman/Archiver/Makefile.in
+--- mailman-2.1.12-a/Mailman/Archiver/Makefile.in 2009-02-23 22:23:35.000000000 +0100
++++ mailman-2.1.12-b/Mailman/Archiver/Makefile.in 2009-07-28 12:19:48.000000000 +0200
+@@ -28,7 +28,6 @@
+ DESTDIR=
+
+ CC= @CC@
+-CHMOD= @CHMOD@
+ INSTALL= @INSTALL@
+
+ DEFS= @DEFS@
+@@ -47,7 +46,7 @@
+ # Modes for directories and executables created by the install
+ # process. Default to group-writable directories but
+ # user-only-writable for executables.
+-DIRMODE= 775
++DIRMODE= 2775
+ EXEMODE= 755
+ FILEMODE= 644
+ INSTALL_PROGRAM=$(INSTALL) -m $(EXEMODE)
+@@ -63,8 +62,6 @@
+ $(INSTALL) -m $(FILEMODE) $(srcdir)/$$f $(DESTDIR)$(PACKAGEDIR); \
+ done
+
+-finish:
+-
+ clean:
+
+ distclean:
+diff -ruN mailman-2.1.12-a/Mailman/Bouncers/Makefile.in mailman-2.1.12-b/Mailman/Bouncers/Makefile.in
+--- mailman-2.1.12-a/Mailman/Bouncers/Makefile.in 2009-02-23 22:23:35.000000000 +0100
++++ mailman-2.1.12-b/Mailman/Bouncers/Makefile.in 2009-07-28 12:19:48.000000000 +0200
+@@ -28,7 +28,6 @@
+ DESTDIR=
+
+ CC= @CC@
+-CHMOD= @CHMOD@
+ INSTALL= @INSTALL@
+
+ DEFS= @DEFS@
+@@ -45,7 +44,7 @@
+ # Modes for directories and executables created by the install
+ # process. Default to group-writable directories but
+ # user-only-writable for executables.
+-DIRMODE= 775
++DIRMODE= 2775
+ EXEMODE= 755
+ FILEMODE= 644
+ INSTALL_PROGRAM=$(INSTALL) -m $(EXEMODE)
+@@ -61,8 +60,6 @@
+ $(INSTALL) -m $(FILEMODE) $(srcdir)/$$f $(DESTDIR)$(PACKAGEDIR); \
+ done
+
+-finish:
+-
+ clean:
+
+ distclean:
+diff -ruN mailman-2.1.12-a/Mailman/Cgi/Makefile.in mailman-2.1.12-b/Mailman/Cgi/Makefile.in
+--- mailman-2.1.12-a/Mailman/Cgi/Makefile.in 2009-02-23 22:23:35.000000000 +0100
++++ mailman-2.1.12-b/Mailman/Cgi/Makefile.in 2009-07-28 12:19:48.000000000 +0200
+@@ -28,7 +28,6 @@
+ DESTDIR=
+
+ CC= @CC@
+-CHMOD= @CHMOD@
+ INSTALL= @INSTALL@
+
+ DEFS= @DEFS@
+@@ -47,7 +46,7 @@
+ # Modes for directories and executables created by the install
+ # process. Default to group-writable directories but
+ # user-only-writable for executables.
+-DIRMODE= 775
++DIRMODE= 2775
+ EXEMODE= 755
+ FILEMODE= 644
+ INSTALL_PROGRAM=$(INSTALL) -m $(EXEMODE)
+@@ -63,8 +62,6 @@
+ $(INSTALL) -m $(FILEMODE) $(srcdir)/$$f $(DESTDIR)$(CGIDIR); \
+ done
+
+-finish:
+-
+ clean:
+
+ distclean:
+diff -ruN mailman-2.1.12-a/Mailman/Commands/Makefile.in mailman-2.1.12-b/Mailman/Commands/Makefile.in
+--- mailman-2.1.12-a/Mailman/Commands/Makefile.in 2009-02-23 22:23:35.000000000 +0100
++++ mailman-2.1.12-b/Mailman/Commands/Makefile.in 2009-07-28 12:19:48.000000000 +0200
+@@ -28,7 +28,6 @@
+ DESTDIR=
+
+ CC= @CC@
+-CHMOD= @CHMOD@
+ INSTALL= @INSTALL@
+
+ DEFS= @DEFS@
+@@ -45,7 +44,7 @@
+ # Modes for directories and executables created by the install
+ # process. Default to group-writable directories but
+ # user-only-writable for executables.
+-DIRMODE= 775
++DIRMODE= 2775
+ EXEMODE= 755
+ FILEMODE= 644
+ INSTALL_PROGRAM=$(INSTALL) -m $(EXEMODE)
+@@ -61,8 +60,6 @@
+ $(INSTALL) -m $(FILEMODE) $(srcdir)/$$f $(DESTDIR)$(PACKAGEDIR); \
+ done
+
+-finish:
+-
+ clean:
+
+ distclean:
+diff -ruN mailman-2.1.12-a/Mailman/Gui/Makefile.in mailman-2.1.12-b/Mailman/Gui/Makefile.in
+--- mailman-2.1.12-a/Mailman/Gui/Makefile.in 2009-02-23 22:23:35.000000000 +0100
++++ mailman-2.1.12-b/Mailman/Gui/Makefile.in 2009-07-28 12:19:48.000000000 +0200
+@@ -28,7 +28,6 @@
+ DESTDIR=
+
+ CC= @CC@
+-CHMOD= @CHMOD@
+ INSTALL= @INSTALL@
+
+ DEFS= @DEFS@
+@@ -45,7 +44,7 @@
+ # Modes for directories and executables created by the install
+ # process. Default to group-writable directories but
+ # user-only-writable for executables.
+-DIRMODE= 775
++DIRMODE= 2775
+ EXEMODE= 755
+ FILEMODE= 644
+ INSTALL_PROGRAM=$(INSTALL) -m $(EXEMODE)
+@@ -61,8 +60,6 @@
+ $(INSTALL) -m $(FILEMODE) $(srcdir)/$$f $(DESTDIR)$(PACKAGEDIR); \
+ done
+
+-finish:
+-
+ clean:
+
+ distclean:
+diff -ruN mailman-2.1.12-a/Mailman/Handlers/Makefile.in mailman-2.1.12-b/Mailman/Handlers/Makefile.in
+--- mailman-2.1.12-a/Mailman/Handlers/Makefile.in 2009-02-23 22:23:35.000000000 +0100
++++ mailman-2.1.12-b/Mailman/Handlers/Makefile.in 2009-07-28 12:19:48.000000000 +0200
+@@ -28,7 +28,6 @@
+ DESTDIR=
+
+ CC= @CC@
+-CHMOD= @CHMOD@
+ INSTALL= @INSTALL@
+
+ DEFS= @DEFS@
+@@ -45,7 +44,7 @@
+ # Modes for directories and executables created by the install
+ # process. Default to group-writable directories but
+ # user-only-writable for executables.
+-DIRMODE= 775
++DIRMODE= 2775
+ EXEMODE= 755
+ FILEMODE= 644
+ INSTALL_PROGRAM=$(INSTALL) -m $(EXEMODE)
+@@ -61,8 +60,6 @@
+ $(INSTALL) -m $(FILEMODE) $(srcdir)/$$f $(DESTDIR)$(PACKAGEDIR); \
+ done
+
+-finish:
+-
+ clean:
+
+ distclean:
+diff -ruN mailman-2.1.12-a/Mailman/Logging/Makefile.in mailman-2.1.12-b/Mailman/Logging/Makefile.in
+--- mailman-2.1.12-a/Mailman/Logging/Makefile.in 2009-02-23 22:23:35.000000000 +0100
++++ mailman-2.1.12-b/Mailman/Logging/Makefile.in 2009-07-28 12:19:48.000000000 +0200
+@@ -28,7 +28,6 @@
+ DESTDIR=
+
+ CC= @CC@
+-CHMOD= @CHMOD@
+ INSTALL= @INSTALL@
+
+ DEFS= @DEFS@
+@@ -45,7 +44,7 @@
+ # Modes for directories and executables created by the install
+ # process. Default to group-writable directories but
+ # user-only-writable for executables.
+-DIRMODE= 775
++DIRMODE= 2775
+ EXEMODE= 755
+ FILEMODE= 644
+ INSTALL_PROGRAM=$(INSTALL) -m $(EXEMODE)
+@@ -61,8 +60,6 @@
+ $(INSTALL) -m $(FILEMODE) $(srcdir)/$$f $(DESTDIR)$(PACKAGEDIR); \
+ done
+
+-finish:
+-
+ clean:
+
+ distclean:
+diff -ruN mailman-2.1.12-a/Mailman/Makefile.in mailman-2.1.12-b/Mailman/Makefile.in
+--- mailman-2.1.12-a/Mailman/Makefile.in 2009-02-23 22:23:35.000000000 +0100
++++ mailman-2.1.12-b/Mailman/Makefile.in 2009-07-28 12:19:48.000000000 +0200
+@@ -20,8 +20,6 @@
+
+ # Variables set by configure
+
+-VERSION= @VERSION@
+-
+ VPATH= @srcdir@
+ srcdir= @srcdir@
+ bindir= @bindir@
+@@ -30,7 +28,6 @@
+ DESTDIR=
+
+ CC= @CC@
+-CHMOD= @CHMOD@
+ INSTALL= @INSTALL@
+
+ DEFS= @DEFS@
+@@ -48,7 +45,7 @@
+ # Modes for directories and executables created by the install
+ # process. Default to group-writable directories but
+ # user-only-writable for executables.
+-DIRMODE= 775
++DIRMODE= 2775
+ EXEMODE= 755
+ FILEMODE= 644
+ INSTALL_PROGRAM=$(INSTALL) -m $(EXEMODE)
+@@ -79,12 +76,6 @@
+ (cd $$d; $(MAKE) DESTDIR=$(DESTDIR) install); \
+ done
+
+-finish:
+- @for d in $(SUBDIRS); \
+- do \
+- (cd $$d; $(MAKE) DESTDIR=$(DESTDIR) finish); \
+- done
+-
+ clean:
+ for d in $(SUBDIRS); \
+ do \
+diff -ruN mailman-2.1.12-a/Mailman/MTA/Makefile.in mailman-2.1.12-b/Mailman/MTA/Makefile.in
+--- mailman-2.1.12-a/Mailman/MTA/Makefile.in 2009-02-23 22:23:35.000000000 +0100
++++ mailman-2.1.12-b/Mailman/MTA/Makefile.in 2009-07-28 12:19:48.000000000 +0200
+@@ -28,7 +28,6 @@
+ DESTDIR=
+
+ CC= @CC@
+-CHMOD= @CHMOD@
+ INSTALL= @INSTALL@
+
+ DEFS= @DEFS@
+@@ -45,7 +44,7 @@
+ # Modes for directories and executables created by the install
+ # process. Default to group-writable directories but
+ # user-only-writable for executables.
+-DIRMODE= 775
++DIRMODE= 2775
+ EXEMODE= 755
+ FILEMODE= 644
+ INSTALL_PROGRAM=$(INSTALL) -m $(EXEMODE)
+@@ -61,8 +60,6 @@
+ $(INSTALL) -m $(FILEMODE) $(srcdir)/$$f $(DESTDIR)$(PACKAGEDIR); \
+ done
+
+-finish:
+-
+ clean:
+
+ distclean:
+diff -ruN mailman-2.1.12-a/Mailman/Queue/Makefile.in mailman-2.1.12-b/Mailman/Queue/Makefile.in
+--- mailman-2.1.12-a/Mailman/Queue/Makefile.in 2009-02-23 22:23:35.000000000 +0100
++++ mailman-2.1.12-b/Mailman/Queue/Makefile.in 2009-07-28 12:19:48.000000000 +0200
+@@ -28,7 +28,6 @@
+ DESTDIR=
+
+ CC= @CC@
+-CHMOD= @CHMOD@
+ INSTALL= @INSTALL@
+
+ DEFS= @DEFS@
+@@ -45,7 +44,7 @@
+ # Modes for directories and executables created by the install
+ # process. Default to group-writable directories but
+ # user-only-writable for executables.
+-DIRMODE= 775
++DIRMODE= 2775
+ EXEMODE= 755
+ FILEMODE= 644
+ INSTALL_PROGRAM=$(INSTALL) -m $(EXEMODE)
+@@ -61,8 +60,6 @@
+ $(INSTALL) -m $(FILEMODE) $(srcdir)/$$f $(DESTDIR)$(PACKAGEDIR); \
+ done
+
+-finish:
+-
+ clean:
+
+ distclean:
+diff -ruN mailman-2.1.12-a/Makefile.in mailman-2.1.12-b/Makefile.in
+--- mailman-2.1.12-a/Makefile.in 2009-02-23 22:23:35.000000000 +0100
++++ mailman-2.1.12-b/Makefile.in 2009-07-28 12:19:48.000000000 +0200
+@@ -61,11 +61,10 @@
+ # Modes for directories and executables created by the install
+ # process. Default to group-writable directories but
+ # user-only-writable for executables.
+-DIRMODE= 775
++DIRMODE= 2775
+ EXEMODE= 755
+ FILEMODE= 644
+ INSTALL_PROGRAM=$(INSTALL) -m $(EXEMODE)
+-DIRSETGID= chmod g+s
+
+ DATE = $(shell python -c 'import time; print time.strftime("%d-%b-%Y"),')
+ LANGPACK = README-I18N.en templates messages
+@@ -85,14 +84,24 @@
+
+ doinstall: $(SUBDIRS)
+ @echo "Creating architecture independent directories..."
++ dir=$(DESTDIR)$(prefix); \
++ if test ! -d $$dir; then \
++ echo "Creating directory hierarchy $$dir"; \
++ $(INSTALL) -d -m $(DIRMODE) $$dir; \
++ else true; \
++ fi;
++ dir=$(DESTDIR)$(var_prefix); \
++ if test ! -d $$dir; then \
++ echo "Creating directory hierarchy $$dir"; \
++ $(INSTALL) -d -m $(DIRMODE) $$dir; \
++ else true; \
++ fi;
+ @for d in $(VAR_DIRS); \
+ do \
+ dir=$(DESTDIR)$(var_prefix)/$$d; \
+ if test ! -d $$dir; then \
+ echo "Creating directory hierarchy $$dir"; \
+- $(srcdir)/mkinstalldirs $$dir; \
+- chmod $(DIRMODE) $$dir; \
+- $(DIRSETGID) $$dir; \
++ $(INSTALL) -d -m $(DIRMODE) $$dir; \
+ else true; \
+ fi; \
+ done
+@@ -102,9 +111,7 @@
+ dir=$(DESTDIR)$(prefix)/$$d; \
+ if test ! -d $$dir; then \
+ echo "Creating directory hierarchy $$dir"; \
+- $(srcdir)/mkinstalldirs $$dir; \
+- chmod $(DIRMODE) $$dir; \
+- $(DIRSETGID) $$dir; \
++ $(INSTALL) -d -m $(DIRMODE) $$dir; \
+ else true; \
+ fi; \
+ done
+@@ -114,9 +121,7 @@
+ dir=$(DESTDIR)$(exec_prefix)/$$d; \
+ if test ! -d $$dir; then \
+ echo "Creating directory hierarchy $$dir"; \
+- $(srcdir)/mkinstalldirs $$dir; \
+- chmod $(DIRMODE) $$dir; \
+- $(DIRSETGID) $$dir; \
++ $(INSTALL) -d -m $(DIRMODE) $$dir; \
+ else true; \
+ fi; \
+ done
+diff -ruN mailman-2.1.12-a/messages/Makefile.in mailman-2.1.12-b/messages/Makefile.in
+--- mailman-2.1.12-a/messages/Makefile.in 2009-02-23 22:23:35.000000000 +0100
++++ mailman-2.1.12-b/messages/Makefile.in 2009-07-28 12:19:48.000000000 +0200
+@@ -32,7 +32,6 @@
+ DESTDIR=
+
+ CC= @CC@
+-CHMOD= @CHMOD@
+ INSTALL= @INSTALL@
+
+ DEFS= @DEFS@
+@@ -43,7 +42,6 @@
+ CFLAGS= $(OPT) $(DEFS)
+ PACKAGEDIR= $(prefix)/messages
+ SHELL= /bin/sh
+-DIRSETGID= chmod g+s
+ MSGFMT= @PYTHON@ ../build/bin/msgfmt.py
+ MSGMERGE= msgmerge
+
+@@ -60,7 +58,7 @@
+ # Modes for directories and executables created by the install
+ # process. Default to group-writable directories but
+ # user-only-writable for executables.
+-DIRMODE= 775
++DIRMODE= 2775
+ EXEMODE= 755
+ FILEMODE= 644
+ INSTALL_PROGRAM=$(INSTALL) -m $(EXEMODE)
+@@ -90,9 +88,8 @@
+ do \
+ dir=$(DESTDIR)$(prefix)/$$d; \
+ echo "Creating language directory $$dir"; \
+- $(srcdir)/../mkinstalldirs $$dir; \
+- chmod $(DIRMODE) $$dir; \
+- $(DIRSETGID) $$dir; \
++ $(INSTALL) -d -m $(DIRMODE) `dirname $$dir`; \
++ $(INSTALL) -d -m $(DIRMODE) $$dir; \
+ done
+ @for d in $(LANGUAGES); \
+ do \
+@@ -113,8 +110,6 @@
+
+ mofiles: $(MOFILES)
+
+-finish:
+-
+ clean:
+ -rm -f */LC_MESSAGES/mailman.mo
+
+diff -ruN mailman-2.1.12-a/misc/Makefile.in mailman-2.1.12-b/misc/Makefile.in
+--- mailman-2.1.12-a/misc/Makefile.in 2009-02-23 22:23:35.000000000 +0100
++++ mailman-2.1.12-b/misc/Makefile.in 2009-07-28 12:19:48.000000000 +0200
+@@ -30,7 +30,6 @@
+ DESTDIR=
+
+ CC= @CC@
+-CHMOD= @CHMOD@
+ INSTALL= @INSTALL@
+ PYTHON= @PYTHON@
+
+@@ -62,7 +61,7 @@
+ # Modes for directories and executables created by the install
+ # process. Default to group-writable directories but
+ # user-only-writable for executables.
+-DIRMODE= 775
++DIRMODE= 2775
+ EXEMODE= 755
+ FILEMODE= 644
+ DATAMODE= 664
+@@ -101,8 +100,6 @@
+ (cd $(PKGDIR)/$$p ; umask 02 ; PYTHONPATH=$(PYTHONLIBDIR) $(PYTHON) $(SETUPCMD)); \
+ done
+
+-finish:
+-
+ clean:
+
+ distclean:
+diff -ruN mailman-2.1.12-a/scripts/Makefile.in mailman-2.1.12-b/scripts/Makefile.in
+--- mailman-2.1.12-a/scripts/Makefile.in 2009-02-23 22:23:35.000000000 +0100
++++ mailman-2.1.12-b/scripts/Makefile.in 2009-07-28 12:19:48.000000000 +0200
+@@ -28,7 +28,6 @@
+ DESTDIR=
+
+ CC= @CC@
+-CHMOD= @CHMOD@
+ INSTALL= @INSTALL@
+
+ DEFS= @DEFS@
+@@ -49,7 +48,7 @@
+ # Modes for directories and executables created by the install
+ # process. Default to group-writable directories but
+ # user-only-writable for executables.
+-DIRMODE= 775
++DIRMODE= 2775
+ EXEMODE= 755
+ FILEMODE= 644
+ INSTALL_PROGRAM=$(INSTALL) -m $(EXEMODE)
+@@ -68,8 +67,6 @@
+ $(INSTALL) -m $(FILEMODE) $(srcdir)/join $(DESTDIR)$(SCRIPTSDIR)/subscribe
+ $(INSTALL) -m $(FILEMODE) $(srcdir)/leave $(DESTDIR)$(SCRIPTSDIR)/unsubscribe
+
+-finish:
+-
+ clean:
+
+ distclean:
+diff -ruN mailman-2.1.12-a/src/Makefile.in mailman-2.1.12-b/src/Makefile.in
+--- mailman-2.1.12-a/src/Makefile.in 2009-07-28 12:19:47.000000000 +0200
++++ mailman-2.1.12-b/src/Makefile.in 2009-07-28 12:19:48.000000000 +0200
+@@ -28,7 +28,6 @@
+ DESTDIR=
+
+ CC= @CC@
+-CHMOD= @CHMOD@
+ INSTALL= @INSTALL@
+ PYTHON= @PYTHON@
+
+@@ -63,10 +62,9 @@
+ # Modes for directories and executables created by the install
+ # process. Default to group-writable directories but
+ # user-only-writable for executables.
+-DIRMODE= 775
+-EXEMODE= 755
++DIRMODE= 2775
++EXEMODE= 2755
+ INSTALL_PROGRAM=$(INSTALL) -m $(EXEMODE)
+-DIRSETGID= chmod g+s
+
+ # Fixed definitions
+
+@@ -110,20 +108,10 @@
+ do \
+ exe=$(DESTDIR)$(CGIDIR)/$$f$(CGIEXT); \
+ $(INSTALL_PROGRAM) $$f $$exe; \
+- $(DIRSETGID) $$exe; \
+ done
+ for f in $(MAIL_PROGS); \
+ do \
+ $(INSTALL_PROGRAM) $$f $(DESTDIR)$(MAILDIR); \
+- $(DIRSETGID) $(DESTDIR)$(MAILDIR)/$$f; \
+- done
+-
+-finish:
+- -for f in $(SUID_CGI_PROGS); \
+- do \
+- exe=$(DESTDIR)$(CGIDIR)/$$f$(CGIEXT); \
+- chown $(MAILMAN_USER) $$exe; \
+- chmod u+s $$exe; \
+ done
+
+ clean:
+diff -ruN mailman-2.1.12-a/templates/Makefile.in mailman-2.1.12-b/templates/Makefile.in
+--- mailman-2.1.12-a/templates/Makefile.in 2009-02-23 22:23:35.000000000 +0100
++++ mailman-2.1.12-b/templates/Makefile.in 2009-07-28 12:19:48.000000000 +0200
+@@ -28,7 +28,6 @@
+ DESTDIR=
+
+ CC= @CC@
+-CHMOD= @CHMOD@
+ INSTALL= @INSTALL@
+ TRUE= @TRUE@
+
+@@ -48,7 +47,7 @@
+ # Modes for directories and executables created by the install
+ # process. Default to group-writable directories but
+ # user-only-writable for executables.
+-DIRMODE= 775
++DIRMODE= 2775
+ EXEMODE= 755
+ FILEMODE= 644
+ INSTALL_PROGRAM=$(INSTALL) -m $(EXEMODE)
+@@ -61,15 +60,13 @@
+ install:
+ for d in $(LANGUAGES); \
+ do \
+- $(srcdir)/../mkinstalldirs $(DESTDIR)$(TEMPLATEDIR)/$$d; \
++ $(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$(TEMPLATEDIR)/$$d; \
+ for f in $(srcdir)/$$d/*.html $(srcdir)/$$d/*.txt; \
+ do \
+ $(INSTALL) -m $(FILEMODE) $$f $(DESTDIR)$(TEMPLATEDIR)/$$d; \
+ done; \
+ done
+
+-finish:
+-
+ clean:
+
+ distclean:
+diff -ruN mailman-2.1.12-a/tests/bounces/Makefile.in mailman-2.1.12-b/tests/bounces/Makefile.in
+--- mailman-2.1.12-a/tests/bounces/Makefile.in 2009-02-23 22:23:35.000000000 +0100
++++ mailman-2.1.12-b/tests/bounces/Makefile.in 2009-07-28 12:19:48.000000000 +0200
+@@ -28,7 +28,6 @@
+ DESTDIR=
+
+ CC= @CC@
+-CHMOD= @CHMOD@
+ INSTALL= @INSTALL@
+
+ DEFS= @DEFS@
+@@ -46,7 +45,7 @@
+ # Modes for directories and executables created by the install
+ # process. Default to group-writable directories but
+ # user-only-writable for executables.
+-DIRMODE= 775
++DIRMODE= 2775
+ EXEMODE= 755
+ FILEMODE= 644
+ INSTALL_PROGRAM=$(INSTALL) -m $(EXEMODE)
+@@ -60,8 +59,6 @@
+ $(INSTALL) -m $(FILEMODE) $$f $(DESTDIR)$(BOUNCEDIR); \
+ done
+
+-finish:
+-
+ clean:
+
+ distclean:
+diff -ruN mailman-2.1.12-a/tests/Makefile.in mailman-2.1.12-b/tests/Makefile.in
+--- mailman-2.1.12-a/tests/Makefile.in 2009-02-23 22:23:35.000000000 +0100
++++ mailman-2.1.12-b/tests/Makefile.in 2009-07-28 12:19:48.000000000 +0200
+@@ -28,7 +28,6 @@
+ DESTDIR=
+
+ CC= @CC@
+-CHMOD= @CHMOD@
+ INSTALL= @INSTALL@
+
+ DEFS= @DEFS@
+@@ -46,7 +45,7 @@
+ # Modes for directories and executables created by the install
+ # process. Default to group-writable directories but
+ # user-only-writable for executables.
+-DIRMODE= 775
++DIRMODE= 2775
+ EXEMODE= 755
+ FILEMODE= 644
+ INSTALL_PROGRAM=$(INSTALL) -m $(EXEMODE)
+@@ -71,8 +70,6 @@
+ (cd $$d; $(MAKE) DESTDIR=$(DESTDIR) install); \
+ done
+
+-finish:
+-
+ clean:
+
+ distclean:
+diff -ruN mailman-2.1.12-a/tests/msgs/Makefile.in mailman-2.1.12-b/tests/msgs/Makefile.in
+--- mailman-2.1.12-a/tests/msgs/Makefile.in 2009-02-23 22:23:35.000000000 +0100
++++ mailman-2.1.12-b/tests/msgs/Makefile.in 2009-07-28 12:19:48.000000000 +0200
+@@ -28,7 +28,6 @@
+ DESTDIR=
+
+ CC= @CC@
+-CHMOD= @CHMOD@
+ INSTALL= @INSTALL@
+
+ DEFS= @DEFS@
+@@ -46,7 +45,7 @@
+ # Modes for directories and executables created by the install
+ # process. Default to group-writable directories but
+ # user-only-writable for executables.
+-DIRMODE= 775
++DIRMODE= 2775
+ EXEMODE= 755
+ FILEMODE= 644
+ INSTALL_PROGRAM=$(INSTALL) -m $(EXEMODE)
+@@ -60,8 +59,6 @@
+ $(INSTALL) -m $(FILEMODE) $$f $(DESTDIR)$(MSGSDIR); \
+ done
+
+-finish:
+-
+ clean:
+
+ distclean:
diff --git a/extra/mailman/mailman.install b/extra/mailman/mailman.install
new file mode 100644
index 000000000..ec85260a5
--- /dev/null
+++ b/extra/mailman/mailman.install
@@ -0,0 +1,31 @@
+## arg 1: the new package version
+post_install() {
+ # Make sure the group and user "mailman" exists on this system and has the correct values
+ if grep -q "^mailman:" /etc/group &> /dev/null ; then
+ groupmod -g 80 -n mailman mailman &> /dev/null
+ else
+ groupadd -g 80 mailman &> /dev/null
+ fi
+
+ if grep -q "^mailman:" /etc/passwd 2> /dev/null ; then
+ usermod -s /sbin/nologin -c "GNU Mailing List Manager" -d /usr/lib/mailman -u 80 -g mailman mailman &> /dev/null
+ else
+ useradd -s /sbin/nologin -c "GNU Mailing List Manager" -d /usr/lib/mailman -u 80 -g mailman -M -r mailman &> /dev/null
+ fi
+
+ # check file permissions
+# cd /usr/lib/mailman && bin/check_perms -f > /dev/null 2>&1 # -f applies fixes we should solve in the PKGBUILD
+ cd /usr/lib/mailman && bin/check_perms > /dev/null
+}
+
+## arg 1: the new package version
+## arg 2: the old package version
+post_upgrade() {
+ post_install $1
+}
+
+## arg 1: the old package version
+pre_remove() {
+ userdel mailman &>/dev/null
+ groupdel mailman &>/dev/null || /bin/true
+}
diff --git a/extra/mailman/rc.mailman b/extra/mailman/rc.mailman
new file mode 100644
index 000000000..07660e530
--- /dev/null
+++ b/extra/mailman/rc.mailman
@@ -0,0 +1,35 @@
+#!/bin/bash
+
+# general config
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+case "$1" in
+ start)
+ stat_busy "Starting mailman Daemon"
+ /usr/lib/mailman/bin/mailmanctl start &>/dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon mailman
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping mailman Daemon"
+ /usr/lib/mailman/bin/mailmanctl stop &>/dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon mailman
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 3
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
diff --git a/extra/manedit/PKGBUILD b/extra/manedit/PKGBUILD
new file mode 100644
index 000000000..8c6715319
--- /dev/null
+++ b/extra/manedit/PKGBUILD
@@ -0,0 +1,52 @@
+# $Id: PKGBUILD 59169 2009-11-20 17:44:19Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=manedit
+pkgver=1.2.1
+pkgrel=3
+pkgdesc="An editor specifically tailored for UNIX manual pages"
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://www.battlefieldlinux.com/wolfpack/ManEdit/"
+depends=('gcc-libs' 'bzip2' 'zlib' 'gtk')
+source=(http://wolfsinger.com/~wolfpack/packages/${pkgname}-${pkgver}.tar.bz2
+ manedit-1.2.1-fix-man-page.patch
+ manedit.desktop)
+md5sums=('a7ee1835e32ed3c9279412af7caf13ef'
+ '60cb0c224a6659f8a8183006608f368b'
+ 'bac6986fc25dda6f0e27e3673eef4600')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ # Patch to fix generate man page
+ patch -Np1 -i ${srcdir}/manedit-1.2.1-fix-man-page.patch || return 1
+
+ env CFLAGS="${CFLAGS}" \
+ ./configure Linux \
+ --prefix=/usr \
+ --mandir=/usr/share/man \
+ --datadir=/usr/share \
+ --enable=bzip2 \
+ --enable=zlib \
+ --disable="arch-i486" \
+ --disable="arch-i586" \
+ --disable="arch-i686" \
+ --disable="arch-pentiumpro"
+
+ make all || return 1
+
+ # Fix strip error (tries to strip a shell script)
+ cp manedit/Makefile.install.UNIX{,.orig}
+ sed -e '/INST.*FLAGS.*-s$/s:-s::' \
+ manedit/Makefile.install.UNIX.orig > manedit/Makefile.install.UNIX
+
+ # Set man dir too or FHS is violated
+ make PREFIX="${pkgdir}/usr" \
+ MAN_DIR="${pkgdir}/usr/share/man/man1" \
+ ICONS_DIR="${pkgdir}/usr/share/pixmaps" install || return 1
+
+ # Install desktop file
+ install -Dm644 ${srcdir}/manedit.desktop "${pkgdir}/usr/share/applications/manedit.desktop"
+}
diff --git a/extra/manedit/manedit-1.2.1-fix-man-page.patch b/extra/manedit/manedit-1.2.1-fix-man-page.patch
new file mode 100644
index 000000000..77aad9a79
--- /dev/null
+++ b/extra/manedit/manedit-1.2.1-fix-man-page.patch
@@ -0,0 +1,15 @@
+--- a/manedit/makefile_append.ini 2008-10-11 16:00:00.000000000 -0700
++++ b/manedit/makefile_append.ini 2009-11-20 15:33:47.000000000 -0800
+@@ -39,9 +39,9 @@
+
+ manpage:
+ @echo "Generating manual page $(BIN).1.bz2"
+- @-$(SED) 's|%%PREFIX%%|$(PREFIX)|g ; \
+- s|%%LOCALBASE%%|${LOCALBASE}|g ; \
+- s|%%X11BASE%%|${X11BASE}|g' $(BIN).1 > $(BIN).1.out
++ @-$(SED) -e 's|%%PREFIX%%|$(PREFIX)|g ;' \
++ -e 's|%%LOCALBASE%%|${LOCALBASE}|g ;' \
++ -e 's|%%X11BASE%%|${X11BASE}|g' $(BIN).1 > $(BIN).1.out
+ @-$(BZIP2) $(BIN).1.out --stdout > $(BIN).1.bz2
+
+ modules: $(OBJ_C) $(OBJ_CPP)
diff --git a/extra/manedit/manedit.desktop b/extra/manedit/manedit.desktop
new file mode 100644
index 000000000..030fb0ccf
--- /dev/null
+++ b/extra/manedit/manedit.desktop
@@ -0,0 +1,9 @@
+[Desktop Entry]
+Name=Manpage Editor
+Comment=Create and edit UNIX manual pages
+Icon=/usr/share/pixmaps/manedit.xpm
+Exec=manedit
+Terminal=false
+Type=Application
+Categories=GNOME;Application;Development;
+StartupNotify=true \ No newline at end of file
diff --git a/extra/maxima/PKGBUILD b/extra/maxima/PKGBUILD
new file mode 100644
index 000000000..ad7b7f1bf
--- /dev/null
+++ b/extra/maxima/PKGBUILD
@@ -0,0 +1,39 @@
+# $Id: PKGBUILD 117234 2011-03-30 11:00:13Z juergen $
+# Maintainer: Ronald van Haren <ronald.archlinux.org>
+# Contributor: Damir Perisa <damir@archlinux.org>
+
+pkgname=maxima
+pkgver=5.23.2
+pkgrel=3
+pkgdesc="Maxima - a sophisticated computer algebra system"
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://maxima.sourceforge.net"
+depends=('sbcl=1.0.47' 'texinfo' 'sh')
+optdepends=('gnuplot: plotting capabilities' 'rlwrap: readline support via /usr/bin/rmaxima' 'tk: graphical xmaxima interface')
+# needs rebuild when bash changes version
+# needs a rebuild when sbcl changes version
+options=('!makeflags' '!zipman') # don't zip info pages or they won't work inside maxima
+install=maxima.install
+source=("http://downloads.sourceforge.net/sourceforge/$pkgname/$pkgname-$pkgver.tar.gz" "$pkgname.desktop")
+md5sums=('ae2f2eaca33de95636e36652ed281902'
+ '24aa81126fbb8b726854e5a80d4c2415')
+sha1sums=('f7300058faf730ce6cf63c18e59ec068df01b4a6'
+ '4398ebb1ec85ccfa12f37516a56d60c26f74b18b')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info \
+ --libexecdir=/usr/lib --enable-sbcl --with-default-lisp=sbcl
+ make
+ make DESTDIR=${pkgdir} install
+
+ # install some freedesktop.org compatibility
+ install -Dm644 ${srcdir}/${pkgname}.desktop \
+ ${pkgdir}/usr/share/applications/${pkgname}.desktop
+
+ # make sure, we have a nice icon for the desktop file at the right place ;)
+ install -d ${pkgdir}/usr/share/pixmaps/
+ ln -s /usr/share/maxima/${pkgver}/xmaxima/maxima-new.png \
+ ${pkgdir}/usr/share/pixmaps/${pkgname}.png
+}
diff --git a/extra/maxima/maxima.desktop b/extra/maxima/maxima.desktop
new file mode 100644
index 000000000..f868dad5a
--- /dev/null
+++ b/extra/maxima/maxima.desktop
@@ -0,0 +1,11 @@
+[Desktop Entry]
+Name=XMaxima
+GenericName=A computer algebra system
+GenericName[de]=Computeralgebra System
+GenericName[it]=algebra a livello avanzato
+Comment=A sophisticated computer algebra system
+Exec=xmaxima
+Icon=maxima
+Terminal=true
+Type=Application
+Categories=Science;Math;
diff --git a/extra/maxima/maxima.install b/extra/maxima/maxima.install
new file mode 100644
index 000000000..cd5a48a18
--- /dev/null
+++ b/extra/maxima/maxima.install
@@ -0,0 +1,18 @@
+infodir=/usr/share/info
+filelist=(imaxima.info maxima.info xmaxima.info)
+
+post_install() {
+ for file in ${filelist[@]}; do
+ install-info $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ for file in ${filelist[@]}; do
+ install-info --delete $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
diff --git a/extra/mc/PKGBUILD b/extra/mc/PKGBUILD
new file mode 100644
index 000000000..8da59c899
--- /dev/null
+++ b/extra/mc/PKGBUILD
@@ -0,0 +1,50 @@
+# $Id: PKGBUILD 114388 2011-03-13 03:10:13Z eric $
+# Maintainer: Daniel J Griffiths <ghost1227@archlinux.us>
+
+pkgname=mc
+pkgver=4.7.5.1
+pkgrel=2
+pkgdesc="A filemanager/shell that emulates Norton Commander"
+arch=('i686' 'x86_64')
+url="http://www.ibiblio.org/mc/"
+license=('GPL')
+depends=('e2fsprogs' 'glib2' 'pcre' 'gpm' 'slang')
+makedepends=('libxt' 'libx11')
+optdepends=('p7zip: support for 7zip archives')
+provides=('mcedit-pkgbuild-syntax')
+conflicts=('mc-utf8')
+replaces=('mc-utf8')
+options=('!emptydirs' '!makeflags')
+source=("http://www.midnight-commander.org/downloads/${pkgname}-${pkgver}.tar.bz2")
+md5sums=('2ffe4771e94569d497010eea298b13cd')
+sha1sums=('ae047110fe6da5d8e621eae2ae1c1859fb9a8f5d')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ ./configure \
+ --prefix=/usr --sysconfdir=/etc --mandir=/usr/share/man \
+ --enable-background --enable-charset --enable-largefile \
+ --with-edit --with-gpm-mouse --with-mmap --enable-vfs-smb \
+ --with-screen=slang --with-subshell --with-vfs --with-x \
+ --without-debug --without-gnome --without-included-gettext \
+ --libexecdir=/usr/lib
+
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ make DESTDIR="${pkgdir}" install
+
+ # Fix FS#15177
+ sed 's|op_has_zipinfo = 0|op_has_zipinfo = 1|' \
+ -i "${pkgdir}/usr/lib/mc/extfs.d/uzip"
+
+ # Fix FS#18312
+ rm "${pkgdir}/usr/lib/mc/extfs.d/u7z"
+
+ sed 's#/usr/bin/env python#/usr/bin/python2#' \
+ -i "${pkgdir}/usr/lib/mc/extfs.d/s3+"
+}
diff --git a/extra/mcpp/PKGBUILD b/extra/mcpp/PKGBUILD
new file mode 100644
index 000000000..4f583586b
--- /dev/null
+++ b/extra/mcpp/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 29372 2009-03-08 13:20:31Z jgc $
+# Maintainer: Alexander Baldeck <alexander@archlinux.org>
+# Contributor: Jan de Groot <jgc@archlinux.org>
+pkgname=mcpp
+pkgver=2.7.2
+pkgrel=2
+pkgdesc="Matsui's CPP implementation precisely conformed to standards"
+arch=(i686 x86_64)
+license=('custom')
+url="http://mcpp.sourceforge.net"
+depends=(glibc)
+options=(!libtool)
+source=(http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.gz
+ namlen.patch)
+md5sums=('512de48c87ab023a69250edc7a0c7b05'
+ '0bfc6177a58e912a9e23e368578dd3fe')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i "${srcdir}/namlen.patch" || return 1
+ ./configure --prefix=/usr --enable-mcpplib --disable-static || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ ln -sf ../doc/${pkgname}/LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/mcpp/namlen.patch b/extra/mcpp/namlen.patch
new file mode 100644
index 000000000..6af741828
--- /dev/null
+++ b/extra/mcpp/namlen.patch
@@ -0,0 +1,11 @@
+--- mcpp-2.7.2/src/mbchar.c 2008-03-08 13:06:13.000000000 +0000
++++ mcpp-2.7.2/src/mbchar.c 2009-03-08 13:14:17.000000000 +0000
+@@ -345,7 +345,7 @@
+ static size_t mb_read_utf8( int c1, char ** in_pp, char ** out_pp);
+ /* For UTF8 mbchar encoding */
+
+-#define NAMLEN 20
++#define NAMLEN 40
+ #define UPPER 1 /* To upper */
+ #define LOWER 0 /* To lower */
+
diff --git a/extra/mcrypt/PKGBUILD b/extra/mcrypt/PKGBUILD
new file mode 100644
index 000000000..7db28d78c
--- /dev/null
+++ b/extra/mcrypt/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 32911 2009-04-02 16:16:11Z giovanni $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Jan de Groot <jgc@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=mcrypt
+pkgver=2.6.8
+pkgrel=1
+pkgdesc="A program for encrypting files or streams"
+url="http://mcrypt.sourceforge.net/"
+arch=(i686 x86_64)
+license=('GPL')
+depends=('mhash' 'libmcrypt>=2.5.8' 'zlib')
+source=(http://downloads.sourceforge.net/$pkgname/${pkgname}-${pkgver}.tar.gz)
+md5sums=('97639f8821b10f80943fa17da302607e')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ aclocal -I ./m4 || return 1
+ autoconf || return 1
+ automake --force --copy || return 1
+ ./configure --prefix=/usr
+ make || return 1
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/memcached/ChangeLog b/extra/memcached/ChangeLog
new file mode 100644
index 000000000..ad9780fc4
--- /dev/null
+++ b/extra/memcached/ChangeLog
@@ -0,0 +1,24 @@
+2011-02-07 Ionut Biru <ibiru@archlinux.org>
+ * Rebuild 1.4.5 against libeven 2.0.10
+
+2011-01-31 Dan McGee <dan@archlinux.org>
+ * Rebuild 1.4.5 with gcc 4.5.X patch accepted upstream
+
+2009-11-14 Dan McGee <dan@archlinux.org>
+ * Bump to 1.4.3
+ * Added memcached-tool to package
+
+2009-09-13 Dan McGee <dan@archlinux.org>
+ * Bump to 1.4.1
+ * Add new required conf.d option MEMCACHED_USER
+ * Rework the way we store the PID for init script usage
+
+2009-04-12 Dan McGee <dan@archlinux.org>
+ * Bump to 1.2.8
+
+2009-04-05 Dan McGee <dan@archlinux.org>
+ * Bump to 1.2.7
+
+2008-12-13 Dan McGee <dan@archlinux.org>
+ * Added conf file to backup array
+ * Fixed the not quite right default config
diff --git a/extra/memcached/PKGBUILD b/extra/memcached/PKGBUILD
new file mode 100644
index 000000000..8402e28f1
--- /dev/null
+++ b/extra/memcached/PKGBUILD
@@ -0,0 +1,39 @@
+# $Id: PKGBUILD 109292 2011-02-07 17:22:01Z ibiru $
+# Maintainer: Dan McGee <dan@archlinux.org>
+# Contributor: Michael Irwin <6d6469@gmail.com>
+
+pkgname=memcached
+pkgver=1.4.5
+pkgrel=3
+pkgdesc="A distributed memory object caching system"
+arch=(i686 x86_64)
+url="http://memcached.org/"
+license=('GPL')
+depends=('libevent')
+optdepends=('perl: for memcached-tool usage')
+backup=('etc/conf.d/memcached')
+source=(http://memcached.googlecode.com/files/$pkgname-$pkgver.tar.gz
+ memcached.conf
+ memcached.sh
+ fix-type-punning-issues.patch)
+changelog=ChangeLog
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ patch -Np1 < $srcdir/fix-type-punning-issues.patch
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd $srcdir/$pkgname-$pkgver
+ make DESTDIR=$pkgdir install
+ install -D -m 755 scripts/memcached-tool $pkgdir/usr/bin/memcached-tool
+ install -D -m 644 $srcdir/$pkgname.conf $pkgdir/etc/conf.d/$pkgname
+ install -D -m 755 $srcdir/$pkgname.sh $pkgdir/etc/rc.d/$pkgname
+}
+
+md5sums=('583441a25f937360624024f2881e5ea8'
+ 'bf15619930dadf0c08669566e4aa809c'
+ '65f88b69cf3112b178725af121327765'
+ 'c4f6da682cb4e7599fede4904021f4ae')
diff --git a/extra/memcached/fix-type-punning-issues.patch b/extra/memcached/fix-type-punning-issues.patch
new file mode 100644
index 000000000..60bb94110
--- /dev/null
+++ b/extra/memcached/fix-type-punning-issues.patch
@@ -0,0 +1,73 @@
+commit df15887584f0025e7b188e408dd3c9f638d68518
+Author: Dan McGee <dan@archlinux.org>
+Date: Tue Nov 2 18:43:00 2010 -0500
+
+ Fix type-punning issues exposed with GCC 4.5.1
+
+ The errors below are due to pointer magic that isn't allowed if following C
+ strict-aliasing rules:
+
+ memcached.c: In function ‘complete_incr_bin’:
+ memcached.c:1023:16: error: dereferencing type-punned pointer will break
+ strict-aliasing rules
+ memcached.c:1044:13: error: dereferencing type-punned pointer will break
+ strict-aliasing rules
+ memcached.c:1061:17: error: dereferencing type-punned pointer will break
+ strict-aliasing rules
+
+ Fix this by introducing a union type that allows access to the uint64_t
+ member as necessary, but doesn't add any additional length to the structure.
+ The size remains the same before and after; the only difference is explict
+ casts are now refactored into union member accesses and all compilers should
+ be happy.
+
+ Signed-off-by: Dan McGee <dan@archlinux.org>
+
+diff --git a/memcached.h b/memcached.h
+index 4a7295b..74a6592 100644
+--- a/memcached.h
++++ b/memcached.h
+@@ -77,18 +77,22 @@
+ #define TAIL_REPAIR_TIME (3 * 3600)
+
+ /* warning: don't use these macros with a function, as it evals its arg twice */
+-#define ITEM_get_cas(i) ((uint64_t)(((i)->it_flags & ITEM_CAS) ? \
+- *(uint64_t*)&((i)->end[0]) : 0x0))
+-#define ITEM_set_cas(i,v) { if ((i)->it_flags & ITEM_CAS) { \
+- *(uint64_t*)&((i)->end[0]) = v; } }
++#define ITEM_get_cas(i) (((i)->it_flags & ITEM_CAS) ? \
++ (i)->data->cas : (uint64_t)0)
+
+-#define ITEM_key(item) (((char*)&((item)->end[0])) \
++#define ITEM_set_cas(i,v) { \
++ if ((i)->it_flags & ITEM_CAS) { \
++ (i)->data->cas = v; \
++ } \
++}
++
++#define ITEM_key(item) (((char*)&((item)->data)) \
+ + (((item)->it_flags & ITEM_CAS) ? sizeof(uint64_t) : 0))
+
+-#define ITEM_suffix(item) ((char*) &((item)->end[0]) + (item)->nkey + 1 \
++#define ITEM_suffix(item) ((char*) &((item)->data) + (item)->nkey + 1 \
+ + (((item)->it_flags & ITEM_CAS) ? sizeof(uint64_t) : 0))
+
+-#define ITEM_data(item) ((char*) &((item)->end[0]) + (item)->nkey + 1 \
++#define ITEM_data(item) ((char*) &((item)->data) + (item)->nkey + 1 \
+ + (item)->nsuffix \
+ + (((item)->it_flags & ITEM_CAS) ? sizeof(uint64_t) : 0))
+
+@@ -302,7 +306,12 @@ typedef struct _stritem {
+ uint8_t it_flags; /* ITEM_* above */
+ uint8_t slabs_clsid;/* which slab class we're in */
+ uint8_t nkey; /* key length, w/terminating null and padding */
+- void * end[];
++ /* this odd type prevents type-punning issues when we do
++ * the little shuffle to save space when not using CAS. */
++ union {
++ uint64_t cas;
++ char end;
++ } data[];
+ /* if it_flags & ITEM_CAS we have 8 bytes CAS */
+ /* then null-terminated key */
+ /* then " flags length\r\n" (no terminating null) */
diff --git a/extra/memcached/memcached.conf b/extra/memcached/memcached.conf
new file mode 100644
index 000000000..bf120b059
--- /dev/null
+++ b/extra/memcached/memcached.conf
@@ -0,0 +1,4 @@
+# user to run memcached as; also used for pid file ownership
+MEMCACHED_USER="nobody"
+# see 'memcached -h' for available options
+MEMCACHED_ARGS="-l 127.0.0.1 -t 1"
diff --git a/extra/memcached/memcached.sh b/extra/memcached/memcached.sh
new file mode 100644
index 000000000..9c9727507
--- /dev/null
+++ b/extra/memcached/memcached.sh
@@ -0,0 +1,63 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+. /etc/conf.d/memcached
+
+PIDFILE='/var/run/memcached.pid'
+
+getpid() {
+ local pid
+ pid=$(cat $PIDFILE 2>/dev/null)
+ # if the process is no longer valid, don't return it
+ if [ -n "$pid" ]; then
+ if ! ps -p $pid >/dev/null; then
+ rm -f $PIDFILE
+ pid=""
+ fi
+ fi
+ echo $pid
+}
+
+PID="$(getpid)"
+
+case "$1" in
+ start)
+ stat_busy "Starting memcached"
+ # memcached is retarded and doesn't write to the pidfile
+ # before it drops permissions
+ if [ -n "$PID" ]; then
+ stat_fail
+ elif [ -z "$MEMCACHED_USER" ]; then
+ echo "MEMCACHED_USER must be defined in /etc/conf.d/memcached"
+ stat_fail
+ else
+ touch $PIDFILE && chown $MEMCACHED_USER $PIDFILE
+ /usr/bin/memcached -d -P $PIDFILE -u $MEMCACHED_USER $MEMCACHED_ARGS
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon memcached
+ stat_done
+ fi
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping memcached"
+ [ ! -z "$PID" ] && kill $PID &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm -f $PIDFILE
+ rm_daemon memcached
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
diff --git a/extra/menu-cache/PKGBUILD b/extra/menu-cache/PKGBUILD
new file mode 100644
index 000000000..29e0a408d
--- /dev/null
+++ b/extra/menu-cache/PKGBUILD
@@ -0,0 +1,27 @@
+# Maintainer: Juergen Hoetzel <juergen@archlinux.org>
+
+pkgname=menu-cache
+pkgver=0.3.2
+pkgrel=1
+pkgdesc="Caches to speed up freedesktop.org's application menus use."
+arch=('i686' 'x86_64')
+license=('GPL2')
+url="http://lxde.org/"
+groups=('lxde')
+depends=('intltool' 'glib2')
+options=('!libtool')
+makedepends=('pkgconfig')
+source=(http://downloads.sourceforge.net/sourceforge/lxde/${pkgname}-${pkgver}.tar.gz)
+md5sums=('ac4a9ea77db68d3db3f9f53cc75af66a')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --libexecdir=/usr/lib/menu-cache --disable-static || return 1
+ make || return 1
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/mercurial/PKGBUILD b/extra/mercurial/PKGBUILD
new file mode 100644
index 000000000..e3e47f67b
--- /dev/null
+++ b/extra/mercurial/PKGBUILD
@@ -0,0 +1,41 @@
+# $Id: PKGBUILD 117449 2011-04-02 08:46:57Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Douglas Soares de Andrade <douglas@archlinux.org>
+
+pkgname=mercurial
+pkgver=1.8.2
+pkgrel=1
+pkgdesc="A scalable distributed SCM tool"
+arch=('i686' 'x86_64')
+url="http://www.selenic.com/mercurial"
+license=('GPL')
+depends=('python2')
+optdepends=('tk: for the hgk GUI')
+source=(http://www.selenic.com/mercurial/release/${pkgname}-${pkgver}.tar.gz
+ mercurial.profile)
+md5sums=('a1634b9b709ecc70662f3257abece2c7'
+ '43e1d36564d4c7fbe9a091d3ea370a44')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ python2 setup.py install --root="${pkgdir}/" --optimize=1 || return 1
+
+ sed -i -e 's#env python#env python2#' \
+ "${pkgdir}"/usr/lib/python2.7/site-packages/mercurial/lsprof.py
+
+ install -d ${pkgdir}/usr/share/man/{man1,man5}
+ install -m644 doc/hg.1 "${pkgdir}/usr/share/man/man1" || return 1
+ install -m644 doc/{hgrc.5,hgignore.5} "${pkgdir}/usr/share/man/man5" || return 1
+ install -m755 contrib/hgk "${pkgdir}/usr/bin" || return 1
+ install -m644 -D contrib/zsh_completion "${pkgdir}/usr/share/zsh/site-functions/_hg" || return 1
+ install -m644 -D contrib/bash_completion "${pkgdir}/etc/bash_completion.d/hg" || return 1
+ install -d "${pkgdir}/usr/share/emacs/site-lisp"
+ install -m644 contrib/{mq.el,mercurial.el} "${pkgdir}/usr/share/emacs/site-lisp" || return 1
+
+ vimpath="${pkgdir}/usr/share/vim/vimfiles"
+ install -Dm644 contrib/vim/HGAnnotate.vim "${vimpath}/syntax/HGAnnotate.vim" || return 1
+
+ # set some variables
+ install -m755 -d ${pkgdir}/etc/profile.d
+ install -m755 ${srcdir}/mercurial.profile "${pkgdir}/etc/profile.d/mercurial.sh" || return 1
+}
diff --git a/extra/mercurial/mercurial.profile b/extra/mercurial/mercurial.profile
new file mode 100644
index 000000000..fc961828c
--- /dev/null
+++ b/extra/mercurial/mercurial.profile
@@ -0,0 +1 @@
+export HG=/usr/bin/hg
diff --git a/extra/mesa/LICENSE b/extra/mesa/LICENSE
new file mode 100644
index 000000000..ae33d2709
--- /dev/null
+++ b/extra/mesa/LICENSE
@@ -0,0 +1,82 @@
+Disclaimer
+
+Mesa is a 3-D graphics library with an API which is very similar to
+that of OpenGL*
+To the extent that Mesa utilizes the OpenGL command syntax or state
+machine, it is being used with authorization from Silicon Graphics,
+Inc.(SGI). However, the author does not possess an OpenGL license
+from SGI, and makes no claim that Mesa is in any way a compatible
+replacement for OpenGL or associated with SGI. Those who want a
+licensed implementation of OpenGL should contact a licensed
+vendor.
+
+Please do not refer to the library as MesaGL (for legal
+reasons). It's just Mesa or The Mesa 3-D graphics
+library
+
+* OpenGL is a trademark of Silicon Graphics Incorporated.
+
+License / Copyright Information
+
+The Mesa distribution consists of several components. Different copyrights
+and licenses apply to different components. For example, GLUT is copyrighted
+by Mark Kilgard, some demo programs are copyrighted by SGI, some of the Mesa
+device drivers are copyrighted by their authors. See below for a list of
+Mesa's main components and the license for each.
+
+The core Mesa library is licensed according to the terms of the MIT license.
+This allows integration with the XFree86, Xorg and DRI projects.
+
+The default Mesa license is as follows:
+
+Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the "Software"),
+to deal in the Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, sublicense,
+and/or sell copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Attention, Contributors
+
+When contributing to the Mesa project you must agree to the licensing terms
+of the component to which you're contributing.
+The following section lists the primary components of the Mesa distribution
+and their respective licenses.
+
+
+Mesa Component Licenses
+
+Component Location Primary Author License
+----------------------------------------------------------------------------
+Main Mesa code src/mesa/ Brian Paul Mesa (MIT)
+
+Device drivers src/mesa/drivers/* See drivers See drivers
+
+Ext headers include/GL/glext.h SGI SGI Free B
+ include/GL/glxext.h
+
+GLUT src/glut/ Mark Kilgard Mark's copyright
+
+Mesa GLU library src/glu/mesa/ Brian Paul GNU-LGPL
+
+SGI GLU library src/glu/sgi/ SGI SGI Free B
+
+demo programs progs/demos/ various see source files
+
+X demos progs/xdemos/ Brian Paul see source files
+
+SGI demos progs/samples/ SGI SGI copyright
+
+RedBook demos progs/redbook/ SGI SGI copyright
diff --git a/extra/mesa/PKGBUILD b/extra/mesa/PKGBUILD
new file mode 100644
index 000000000..75ef69887
--- /dev/null
+++ b/extra/mesa/PKGBUILD
@@ -0,0 +1,342 @@
+# $Id: PKGBUILD 112002 2011-03-02 23:43:12Z andyrtr $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Maintainer: Andreas Radke <andyrtr@archlinux.org>
+
+pkgbase=mesa
+pkgname=('mesa' 'libgl' 'libgles' 'libegl' 'ati-dri' 'intel-dri' 'unichrome-dri' 'mach64-dri' 'mga-dri' 'r128-dri' 'savage-dri' 'sis-dri' 'tdfx-dri' 'nouveau-dri')
+
+#_git=true
+_git=false
+
+if [ "${_git}" = "true" ]; then
+ pkgver=7.10.0.git20110215
+ else
+ pkgver=7.10.1
+fi
+pkgrel=1
+arch=('i686' 'x86_64')
+makedepends=('glproto>=1.4.12' 'pkgconfig' 'libdrm>=2.4.23' 'libxxf86vm>=1.1.0' 'libxdamage>=1.1.3' 'expat>=2.0.1' 'libx11>=1.3.5' 'libxt>=1.0.8'
+ 'gcc-libs>=4.5' 'dri2proto=2.3' 'python2' 'talloc' 'libxml2' 'imake')
+url="http://mesa3d.sourceforge.net"
+license=('custom')
+source=(LICENSE)
+if [ "${_git}" = "true" ]; then
+ # mesa git shot from 7.10 branch - see for state: http://cgit.freedesktop.org/mesa/mesa/commit/?h=7.10&id=cc1636b6db85604510f97f8a37d7fd0ecf453866
+ source=(${source[@]} 'ftp://ftp.archlinux.org/other/mesa/mesa-cc1636b6db85604510f97f8a37d7fd0ecf453866.tar.bz2')
+ else
+ source=(${source[@]} "ftp://ftp.freedesktop.org/pub/mesa/${pkgver}/MesaLib-${pkgver}.tar.bz2")
+fi
+md5sums=('5c65a0fe315dd347e09b1f2826a1df5a'
+ 'efe8da4d80c2a5d32a800770b8ce5dfa')
+
+build() {
+if [ "${_git}" = "true" ]; then
+ cd ${srcdir}/mesa-*
+ autoreconf -vfi
+ else
+ cd "${srcdir}/Mesa-${pkgver}"
+fi
+
+ # python2 build fixes
+ sed -i -e "s|#![ ]*/usr/bin/python$|#!/usr/bin/python2|" \
+ -e "s|#![ ]*/usr/bin/env python$|#!/usr/bin/env python2|" $(find $srcdir -name '*.py')
+ sed -i -e "s|PYTHON2 = python|PYTHON2 = python2|" configs/{default,autoconf.in}
+ sed -i -e "s|python|python2|" src/gallium/auxiliary/Makefile
+
+if [ "${_git}" = "true" ]; then
+ ./autogen.sh --prefix=/usr \
+ --with-dri-driverdir=/usr/lib/xorg/modules/dri \
+ --enable-gallium-radeon \
+ --enable-gallium-r600 \
+ --enable-gallium-nouveau \
+ --enable-gallium-swrast \
+ --enable-glx-tls \
+ --with-driver=dri \
+ --enable-xcb \
+ --with-state-trackers=dri,glx \
+ --disable-glut \
+ --enable-gles1 \
+ --enable-gles2 \
+ --enable-egl \
+ --disable-gallium-egl
+ else
+ ./configure --prefix=/usr \
+ --with-dri-driverdir=/usr/lib/xorg/modules/dri \
+ --enable-gallium-radeon \
+ --enable-gallium-r600 \
+ --enable-gallium-nouveau \
+ --enable-gallium-swrast \
+ --enable-glx-tls \
+ --with-driver=dri \
+ --enable-xcb \
+ --with-state-trackers=dri,glx \
+ --disable-glut \
+ --enable-gles1 \
+ --enable-gles2 \
+ --enable-egl \
+ --disable-gallium-egl
+fi
+
+ make
+}
+
+package_libgl() {
+ depends=('libdrm>=2.4.22' 'libxxf86vm>=1.1.0' 'libxdamage>=1.1.3' 'expat>=2.0.1')
+ pkgdesc="Mesa 3-D graphics library and DRI software rasterizer"
+
+if [ "${_git}" = "true" ]; then
+ cd ${srcdir}/mesa-*
+ else
+ cd "${srcdir}/Mesa-${pkgver}"
+fi
+ install -m755 -d "${pkgdir}/usr/lib"
+ install -m755 -d "${pkgdir}/usr/lib/xorg/modules/extensions"
+
+ bin/minstall lib/libGL.so* "${pkgdir}/usr/lib/"
+
+ cd src/mesa/drivers/dri
+ #make -C swrast DESTDIR="${pkgdir}" install
+if [ "${_git}" = "true" ]; then
+ make -C ${srcdir}/mesa-*/src/gallium/targets/dri-swrast DESTDIR="${pkgdir}" install
+ else
+ make -C ${srcdir}/Mesa-${pkgver}/src/gallium/targets/dri-swrast DESTDIR="${pkgdir}" install
+fi
+ ln -s swrastg_dri.so "${pkgdir}/usr/lib/xorg/modules/dri/swrast_dri.so"
+ ln -s libglx.xorg "${pkgdir}/usr/lib/xorg/modules/extensions/libglx.so"
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/libgl"
+ install -m755 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/libgl/"
+}
+
+package_libgles() {
+ depends=('libgl')
+ pkgdesc="Mesa GLES libraries and headers"
+
+if [ "${_git}" = "true" ]; then
+ cd ${srcdir}/mesa-*
+ else
+ cd "${srcdir}/Mesa-${pkgver}"
+fi
+ install -m755 -d "${pkgdir}/usr/lib"
+ install -m755 -d "${pkgdir}/usr/lib/pkgconfig"
+ install -m755 -d "${pkgdir}/usr/include"
+ install -m755 -d "${pkgdir}/usr/include/GLES"
+ install -m755 -d "${pkgdir}/usr/include/GLES2"
+ bin/minstall lib/libGLESv* "${pkgdir}/usr/lib/"
+ bin/minstall src/mapi/es1api/glesv1_cm.pc "${pkgdir}/usr/lib/pkgconfig/"
+ bin/minstall src/mapi/es2api/glesv2.pc "${pkgdir}/usr/lib/pkgconfig/"
+ bin/minstall include/GLES/* "${pkgdir}/usr/include/GLES/"
+ bin/minstall include/GLES2/* "${pkgdir}/usr/include/GLES2/"
+ bin/minstall include/GLES2/* "${pkgdir}/usr/include/GLES2/"
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/libgles"
+ install -m755 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/libgles/"
+}
+
+package_libegl() {
+ depends=('libgl')
+ pkgdesc="Mesa libEGL libraries and headers"
+
+if [ "${_git}" = "true" ]; then
+ cd ${srcdir}/mesa-*
+ else
+ cd "${srcdir}/Mesa-${pkgver}"
+fi
+ install -m755 -d "${pkgdir}/usr/lib"
+ install -m755 -d "${pkgdir}/usr/lib/egl"
+ install -m755 -d "${pkgdir}/usr/lib/pkgconfig"
+ install -m755 -d "${pkgdir}/usr/include"
+ install -m755 -d "${pkgdir}/usr/include/"
+ install -m755 -d "${pkgdir}/usr/include/EGL"
+ install -m755 -d "${pkgdir}/usr/include/KHR"
+ install -m755 -d "${pkgdir}/usr/share"
+ install -m755 -d "${pkgdir}/usr/share/doc"
+ install -m755 -d "${pkgdir}/usr/share/doc/libegl"
+ bin/minstall lib/libEGL.so* "${pkgdir}/usr/lib/"
+ bin/minstall lib/egl/* "${pkgdir}/usr/lib/egl/"
+ bin/minstall src/egl/main/egl.pc "${pkgdir}/usr/lib/pkgconfig/"
+ bin/minstall include/EGL/* "${pkgdir}/usr/include/EGL/"
+ bin/minstall include/KHR/khrplatform.h "${pkgdir}/usr/include/KHR/"
+ bin/minstall docs/egl.html "${pkgdir}/usr/share/doc/libegl/"
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/libegl"
+ install -m755 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/libegl/"
+}
+package_mesa() {
+ depends=('libgl' 'libx11>=1.3.5' 'libxt>=1.0.8' 'gcc-libs>=4.5' 'dri2proto=2.3' 'libdrm>=2.4.22' 'glproto>=1.4.12')
+ optdepends=('opengl-man-pages: for the OpenGL API man pages')
+ pkgdesc="Mesa 3-D graphics libraries and include files"
+
+if [ "${_git}" = "true" ]; then
+ cd ${srcdir}/mesa-*
+ else
+ cd "${srcdir}/Mesa-${pkgver}"
+fi
+ make DESTDIR="${pkgdir}" install
+
+ rm -f "${pkgdir}/usr/lib/libGL.so"*
+ rm -f "${pkgdir}/usr/lib/libGLESv"*
+ rm -f "${pkgdir}/usr/lib/libEGL"*
+ rm -rf "${pkgdir}/usr/lib/egl"
+ rm -f ${pkgdir}/usr/lib/pkgconfig/{glesv1_cm.pc,glesv2.pc,egl.pc}
+ rm -rf "${pkgdir}/usr/lib/xorg"
+ rm -f "${pkgdir}/usr/include/GL/glew.h"
+ rm -f "${pkgdir}/usr/include/GL/glxew.h"
+ rm -f "${pkgdir}/usr/include/GL/wglew.h"
+ rm -f "${pkgdir}/usr/include/GL/glut.h"
+ rm -rf ${pkgdir}/usr/include/{GLES,GLES2,EGL,KHR}
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/mesa"
+ install -m755 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/mesa/"
+}
+
+package_ati-dri() {
+ depends=("libgl=${pkgver}")
+ pkgdesc="Mesa DRI + Gallium3D r300 drivers for AMD/ATI Radeon"
+ conflicts=('xf86-video-ati<6.9.0-6')
+
+if [ "${_git}" = "true" ]; then
+ cd ${srcdir}/mesa-*/src/mesa/drivers/dri
+ else
+ cd "${srcdir}/Mesa-${pkgver}/src/mesa/drivers/dri"
+fi
+ make -C radeon DESTDIR="${pkgdir}" install
+ make -C r200 DESTDIR="${pkgdir}" install
+ # classic mesa driver for R300 r300_dri.so
+ #make -C r300 DESTDIR="${pkgdir}" install <------- depricated
+ # gallium3D driver for R300 r300_dri.so
+if [ "${_git}" = "true" ]; then
+ make -C ${srcdir}/mesa-*/src/gallium/targets/dri-r300 DESTDIR="${pkgdir}" install
+ make -C ${srcdir}/mesa-*/src/gallium/targets/dri-r600 DESTDIR="${pkgdir}" install
+ else
+ make -C ${srcdir}/Mesa-${pkgver}/src/gallium/targets/dri-r300 DESTDIR="${pkgdir}" install
+ make -C ${srcdir}/Mesa-${pkgver}/src/gallium/targets/dri-r600 DESTDIR="${pkgdir}" install
+fi
+ #make -C r600 DESTDIR="${pkgdir}" install
+}
+
+package_intel-dri() {
+ depends=("libgl=${pkgver}")
+ pkgdesc="Mesa DRI drivers for Intel"
+
+if [ "${_git}" = "true" ]; then
+ cd ${srcdir}/mesa-*/src/mesa/drivers/dri
+ else
+ cd "${srcdir}/Mesa-${pkgver}/src/mesa/drivers/dri"
+fi
+ make -C i810 DESTDIR="${pkgdir}" install
+ make -C i915 DESTDIR="${pkgdir}" install
+ make -C i965 DESTDIR="${pkgdir}" install
+}
+
+package_unichrome-dri() {
+ depends=("libgl=${pkgver}")
+ pkgdesc="Mesa DRI drivers for S3 Graphics/VIA Unichrome"
+
+if [ "${_git}" = "true" ]; then
+ cd ${srcdir}/mesa-*/src/mesa/drivers/dri
+ else
+ cd "${srcdir}/Mesa-${pkgver}/src/mesa/drivers/dri"
+fi
+ make -C unichrome DESTDIR="${pkgdir}" install
+}
+
+package_mach64-dri() {
+ depends=("libgl=${pkgver}")
+ pkgdesc="Mesa DRI drivers for ATI Mach64"
+ conflicts=('xf86-video-mach64<6.8.2')
+
+if [ "${_git}" = "true" ]; then
+ cd ${srcdir}/mesa-*/src/mesa/drivers/dri
+ else
+ cd "${srcdir}/Mesa-${pkgver}/src/mesa/drivers/dri"
+fi
+ make -C mach64 DESTDIR="${pkgdir}" install
+}
+
+package_mga-dri() {
+ depends=("libgl=${pkgver}")
+ pkgdesc="Mesa DRI drivers for Matrox"
+ conflicts=('xf86-video-mga<1.4.11')
+
+if [ "${_git}" = "true" ]; then
+ cd ${srcdir}/mesa-*/src/mesa/drivers/dri
+ else
+ cd "${srcdir}/Mesa-${pkgver}/src/mesa/drivers/dri"
+fi
+ make -C mga DESTDIR="${pkgdir}" install
+}
+
+package_r128-dri() {
+ depends=("libgl=${pkgver}")
+ pkgdesc="Mesa DRI drivers for ATI Rage128"
+ conflicts=('xf86-video-r128<6.8.1')
+
+if [ "${_git}" = "true" ]; then
+ cd ${srcdir}/mesa-*/src/mesa/drivers/dri
+ else
+ cd "${srcdir}/Mesa-${pkgver}/src/mesa/drivers/dri"
+fi
+ make -C r128 DESTDIR="${pkgdir}" install
+}
+
+package_savage-dri() {
+ depends=("libgl=${pkgver}")
+ pkgdesc="Mesa DRI drivers for S3 Sraphics/VIA Savage"
+ conflicts=('xf86-video-savage<2.3.1')
+
+if [ "${_git}" = "true" ]; then
+ cd ${srcdir}/mesa-*/src/mesa/drivers/dri
+ else
+ cd "${srcdir}/Mesa-${pkgver}/src/mesa/drivers/dri"
+fi
+ make -C savage DESTDIR="${pkgdir}" install
+}
+
+package_sis-dri() {
+ depends=("libgl=${pkgver}")
+ pkgdesc="Mesa DRI drivers for SiS"
+ conflicts=('xf86-video-sis<0.10.2')
+
+if [ "${_git}" = "true" ]; then
+ cd ${srcdir}/mesa-*/src/mesa/drivers/dri
+ else
+ cd "${srcdir}/Mesa-${pkgver}/src/mesa/drivers/dri"
+fi
+ make -C sis DESTDIR="${pkgdir}" install
+}
+
+package_tdfx-dri() {
+ depends=("libgl=${pkgver}")
+ pkgdesc="Mesa DRI drivers for 3dfx"
+ conflicts=('xf86-video-tdfx<1.4.3')
+
+if [ "${_git}" = "true" ]; then
+ cd ${srcdir}/mesa-*/src/mesa/drivers/dri
+ else
+ cd "${srcdir}/Mesa-${pkgver}/src/mesa/drivers/dri"
+fi
+ make -C tdfx DESTDIR="${pkgdir}" install
+}
+
+package_nouveau-dri() {
+ depends=("libgl=${pkgver}")
+ pkgdesc="Mesa classic DRI + Gallium3D drivers for Nouveau"
+
+if [ "${_git}" = "true" ]; then
+ cd ${srcdir}/mesa-*/src/mesa/drivers/dri
+ else
+ cd "${srcdir}/Mesa-${pkgver}/src/mesa/drivers/dri"
+fi
+
+ # classic mesa driver for nv10 , nv20 nouveau_vieux_dri.so
+ make -C nouveau DESTDIR="${pkgdir}" install
+
+ # gallium3D driver for nv30 - nv40 - nv50 nouveau_dri.so
+if [ "${_git}" = "true" ]; then
+ make -C ${srcdir}/mesa-*/src/gallium/targets/dri-nouveau DESTDIR="${pkgdir}" install
+ else
+ make -C ${srcdir}/Mesa-${pkgver}/src/gallium/targets/dri-nouveau DESTDIR="${pkgdir}" install
+fi
+}
+
diff --git a/extra/metacity/PKGBUILD b/extra/metacity/PKGBUILD
new file mode 100644
index 000000000..8a9f0bd26
--- /dev/null
+++ b/extra/metacity/PKGBUILD
@@ -0,0 +1,37 @@
+# $Id: PKGBUILD 116879 2011-03-25 23:00:58Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=metacity
+pkgver=2.30.3
+pkgrel=2
+pkgdesc="A window manager for GNOME2"
+arch=(i686 x86_64)
+license=('GPL')
+depends=('startup-notification' 'gconf' 'zenity' 'libcanberra' 'libgtop' 'libwnck')
+makedepends=('intltool' 'pkgconfig' 'gnome-doc-utils')
+url="http://www.gnome.org"
+groups=('gnome')
+options=('!libtool' '!emptydirs')
+install=metacity.install
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.30/${pkgname}-${pkgver}.tar.bz2
+ metacity-restartstyle.patch)
+sha256sums=('08f887018fa5e447cf184d03bae3fe2c05fdb7583bed6768e3b4d66392fc18dd'
+ '3a7e484ec2eb97e7b7f1baaa33e5d925e67a35c84e49c5abe6c32cf2c25f16eb')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i "${srcdir}/metacity-restartstyle.patch"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --libexecdir=/usr/lib/metacity \
+ --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 metacity ${pkgdir}/etc/gconf/schemas/*.schemas
+ rm -f ${pkgdir}/etc/gconf/schemas/*.schemas
+}
diff --git a/extra/metacity/metacity-restartstyle.patch b/extra/metacity/metacity-restartstyle.patch
new file mode 100644
index 000000000..54dd79e02
--- /dev/null
+++ b/extra/metacity/metacity-restartstyle.patch
@@ -0,0 +1,139 @@
+From a3de65d5d1861f755ced7cad291fbbd4f1b8ef51 Mon Sep 17 00:00:00 2001
+From: Owen W. Taylor <otaylor@fishsoup.net>
+Date: Sat, 22 Aug 2009 15:00:57 -0400
+Subject: [PATCH] Should set RestartStyleHint to RestartIfRunning when replaced
+
+This reverts most of commit abbd057eb967e6ab462ffe305f41b2b04d417b25;
+
+ - It's fine to call meta_session_shutdown() after the display
+ is closed, since it's talking over the ICE connection
+ - We should not call warn_about_lame_clients_and_finish_interact()
+ unless we are interacting with the window manager in a session
+ save.
+
+However, the part of abbd057 that fixed accessing freed memory was
+fixing a real problem; this patches does the same thing in a simpler
+way by fixing an obvious type in meta_display_close() where it was
+NULL'ing out the local variable 'display' rather than the global
+variable 'the_display' and adding keeping the check in meta_finalize()
+that was added in abbd057.
+
+The order of calling meta_session_shutdown() and
+calling meta_display_close() is reverted back to the old order to
+make it clear that it's OK if the display way already closed previously.
+
+http://bugzilla.gnome.org/show_bug.cgi?id=588119
+---
+ src/core/display-private.h | 2 +-
+ src/core/display.c | 16 ++++------------
+ src/core/main.c | 5 ++---
+ src/core/session.c | 8 --------
+ 4 files changed, 7 insertions(+), 24 deletions(-)
+
+diff --git a/src/core/display-private.h b/src/core/display-private.h
+index 19287f3..9c8ebc6 100644
+--- a/src/core/display-private.h
++++ b/src/core/display-private.h
+@@ -329,7 +329,7 @@ MetaScreen* meta_display_screen_for_xwindow (MetaDisplay *display,
+ void meta_display_grab (MetaDisplay *display);
+ void meta_display_ungrab (MetaDisplay *display);
+
+-void meta_display_unmanage_screen (MetaDisplay **display,
++void meta_display_unmanage_screen (MetaDisplay *display,
+ MetaScreen *screen,
+ guint32 timestamp);
+
+diff --git a/src/core/display.c b/src/core/display.c
+index 55c374a..8e35a35 100644
+--- a/src/core/display.c
++++ b/src/core/display.c
+@@ -926,7 +926,7 @@ meta_display_close (MetaDisplay *display,
+ meta_compositor_destroy (display->compositor);
+
+ g_free (display);
+- display = NULL;
++ the_display = NULL;
+
+ meta_quit (META_EXIT_SUCCESS);
+ }
+@@ -4762,13 +4762,10 @@ process_selection_clear (MetaDisplay *display,
+ meta_verbose ("Got selection clear for screen %d on display %s\n",
+ screen->number, display->name);
+
+- meta_display_unmanage_screen (&display,
++ meta_display_unmanage_screen (display,
+ screen,
+ event->xselectionclear.time);
+
+- if (!display)
+- the_display = NULL;
+-
+ /* display and screen may both be invalid memory... */
+
+ return;
+@@ -4790,12 +4787,10 @@ process_selection_clear (MetaDisplay *display,
+ }
+
+ void
+-meta_display_unmanage_screen (MetaDisplay **displayp,
++meta_display_unmanage_screen (MetaDisplay *display,
+ MetaScreen *screen,
+ guint32 timestamp)
+ {
+- MetaDisplay *display = *displayp;
+-
+ meta_verbose ("Unmanaging screen %d on display %s\n",
+ screen->number, display->name);
+
+@@ -4805,10 +4800,7 @@ meta_display_unmanage_screen (MetaDisplay **displayp,
+ display->screens = g_slist_remove (display->screens, screen);
+
+ if (display->screens == NULL)
+- {
+- meta_display_close (display, timestamp);
+- *displayp = NULL;
+- }
++ meta_display_close (display, timestamp);
+ }
+
+ void
+diff --git a/src/core/main.c b/src/core/main.c
+index a36a396..44d317e 100644
+--- a/src/core/main.c
++++ b/src/core/main.c
+@@ -361,12 +361,11 @@ static void
+ meta_finalize (void)
+ {
+ MetaDisplay *display = meta_get_display();
+-
+- meta_session_shutdown ();
+-
+ if (display)
+ meta_display_close (display,
+ CurrentTime); /* I doubt correct timestamps matter here */
++
++ meta_session_shutdown ();
+ }
+
+ static void
+diff --git a/src/core/session.c b/src/core/session.c
+index 7e3b389..0d69350 100644
+--- a/src/core/session.c
++++ b/src/core/session.c
+@@ -376,14 +376,6 @@ meta_session_shutdown (void)
+ SmProp *props[1];
+ char hint = SmRestartIfRunning;
+
+- if (!meta_get_display ())
+- {
+- meta_verbose ("Cannot close session because there is no display");
+- return;
+- }
+-
+- warn_about_lame_clients_and_finish_interact (FALSE);
+-
+ if (session_connection == NULL)
+ return;
+
+--
+1.6.4 \ No newline at end of file
diff --git a/extra/metacity/metacity.install b/extra/metacity/metacity.install
new file mode 100644
index 000000000..2eb1e5094
--- /dev/null
+++ b/extra/metacity/metacity.install
@@ -0,0 +1,17 @@
+pkgname=metacity
+
+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/extra/metalog/PKGBUILD b/extra/metalog/PKGBUILD
new file mode 100644
index 000000000..78957391c
--- /dev/null
+++ b/extra/metalog/PKGBUILD
@@ -0,0 +1,35 @@
+# $Id: PKGBUILD 54835 2009-10-11 19:46:55Z giovanni $
+# Maintainer: juergen <juergen@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+#
+
+pkgname=metalog
+pkgver=1.0
+pkgrel=1
+pkgdesc="Metalog is a modern replacement for syslogd and klogd"
+arch=(i686 x86_64)
+depends=('pcre')
+makedepends=('xz-utils')
+provides=('logger')
+backup=(etc/metalog.conf etc/conf.d/metalog)
+source=(http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}-1.tar.lzma
+\
+ metalog metalog.confd)
+md5sums=('df4ec89f6a0df24a43f9592ee80ab6be' 'cdd1d34eedbfbc2d9e659bf0a0f58f56'\
+ '86bccd5a02996921e29eff8a0394d11f')
+license=(GPL)
+url="http://metalog.sourceforge.net"
+
+build() {
+ # WTF: Upstream doesn't provide gzip/bz2 compressed archives
+ lzma -d -c $startdir/src/${pkgname}-1.tar.lzma | tar xf - -C $startdir/src
+ cd $startdir/src/$pkgname-1
+ ./configure --prefix=/usr --sysconfdir=/etc
+ /usr/bin/make || return 1
+ /usr/bin/make DESTDIR=$startdir/pkg install || return 1
+ /bin/install -D -m755 $startdir/src/metalog $startdir/pkg/etc/rc.d/metalog
+ /bin/install -D -m644 $startdir/src/metalog.confd $startdir/pkg/etc/conf.d/metalog
+ /bin/install -D -m644 metalog.conf $startdir/pkg/etc/metalog.conf
+}
+
+# vim: ts=2: ft=sh
diff --git a/extra/metalog/metalog b/extra/metalog/metalog
new file mode 100644
index 000000000..d30f47289
--- /dev/null
+++ b/extra/metalog/metalog
@@ -0,0 +1,40 @@
+#!/bin/bash
+
+# source application-specific settings
+[ -f /etc/conf.d/metalog ] && . /etc/conf.d/metalog
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+PID=`pidof -o %PPID /usr/sbin/metalog`
+case "$1" in
+ start)
+ stat_busy "Starting Metalog"
+ [ -z "$PID" ] && /usr/sbin/metalog -B $METALOG_OPTS 2>&1
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ echo $PID > /var/run/metalog.pid
+ add_daemon metalog
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping Metalog"
+ [ ! -z "$PID" ] && kill $PID &>/dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon metalog
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
diff --git a/extra/metalog/metalog.confd b/extra/metalog/metalog.confd
new file mode 100644
index 000000000..3d76ffab3
--- /dev/null
+++ b/extra/metalog/metalog.confd
@@ -0,0 +1,8 @@
+#
+# Parameters to be passed to metalog
+#
+
+# NOTE: Since v.0.7, metalog disables buffering by default.
+# Add '-a' if you want buffering.
+
+METALOG_OPTS=""
diff --git a/extra/mhash/PKGBUILD b/extra/mhash/PKGBUILD
new file mode 100644
index 000000000..30862296f
--- /dev/null
+++ b/extra/mhash/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id: PKGBUILD 27643 2009-02-24 05:16:32Z eric $
+# Maintainer: gregor <gregor@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=mhash
+pkgver=0.9.9.9
+pkgrel=1
+pkgdesc="A thread-safe hash library which provides a uniform interface to hash algorithms (MD5, SHA-1, HAVAL, etc"
+arch=('i686' 'x86_64')
+url="http://mhash.sourceforge.net/"
+license=('LGPL')
+depends=('glibc')
+options=('!libtool')
+source=(http://downloads.sourceforge.net/sourceforge/mhash/$pkgname-$pkgver.tar.bz2)
+md5sums=('f91c74f9ccab2b574a98be5bc31eb280')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ ./configure --prefix=/usr --enable-static || return 1
+ make || return 1
+ make prefix=$pkgdir/usr install || return 1
+}
diff --git a/extra/midori/PKGBUILD b/extra/midori/PKGBUILD
new file mode 100644
index 000000000..426dc4f50
--- /dev/null
+++ b/extra/midori/PKGBUILD
@@ -0,0 +1,53 @@
+# $Id: PKGBUILD 114718 2011-03-15 18:18:12Z andyrtr $
+# Maintainer: Andreas Radke <andyrtr@archlinux.org>
+# Contributor: rabyte <rabyte.at.gmail.dot.com>
+# Contributor: Johannes Krampf <wuischke.at.amule.dot.org>
+
+pkgname=midori
+#_gitdate=20090306
+pkgver=0.3.3 #_git${_gitdate}
+pkgrel=1
+pkgdesc="A lightweight web browser based on Gtk WebKit"
+arch=('i686' 'x86_64')
+url="http://www.twotoasts.de/index.php?/pages/midori_summary.html"
+license=('LGPL2.1')
+install=midori.install
+depends=('libwebkit' 'libunique' 'hicolor-icon-theme' 'desktop-file-utils' 'libnotify>=0.7.1' 'libxss' 'sqlite3' 'glib2')
+makedepends=('libxml2' 'intltool' 'gtk-doc' 'librsvg' 'python2>=2.7.1' 'vala') # 'git'
+optdepends=('vala: for use in extensions')
+source=(http://archive.xfce.org/src/apps/$pkgname/0.3/$pkgname-$pkgver.tar.bz2
+ #midori-${_gitdate}.tar.bz2
+)
+md5sums=('e1262cc7cc0c1773c331ab794480f037')
+
+# source PKGBUILD && mksource
+mksource() {
+ mkdir /tmp/$pkgname-source
+ pushd /tmp/$pkgname-source
+ git clone -v git://git.xfce.org/kalikiana/midori
+ cd midori
+ git archive --prefix=midori-${_gitdate}/ --format=tar HEAD | bzip2 > /tmp/$pkgname-source/midori-${_gitdate}.tar.bz2
+ popd
+}
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+# cd ${srcdir}/${pkgname}-${_gitdate}
+ # python2
+ export PYTHON=/usr/bin/python2
+ sed -i -e "s|#![ ]*/usr/bin/env python$|#!/usr/bin/env python2|" wscript waf
+
+ ./configure --prefix=/usr --jobs=${MAKEFLAGS/-j/} \
+ --enable-addons \
+ --disable-hildon \
+ --enable-unique \
+ --enable-nls \
+ --enable-docs \
+ --enable-apidocs
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/midori/midori.install b/extra/midori/midori.install
new file mode 100644
index 000000000..8cee6c198
--- /dev/null
+++ b/extra/midori/midori.install
@@ -0,0 +1,14 @@
+post_install() {
+
+gtk-update-icon-cache -f -q -t /usr/share/icons/hicolor
+update-desktop-database -q
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+update-desktop-database -q
+gtk-update-icon-cache -f -q -t /usr/share/icons/hicolor
+}
diff --git a/extra/minicom/PKGBUILD b/extra/minicom/PKGBUILD
new file mode 100644
index 000000000..b1db3651b
--- /dev/null
+++ b/extra/minicom/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id: PKGBUILD 108740 2011-02-02 18:46:01Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: dorphell <dorphell@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=minicom
+pkgver=2.5
+pkgrel=1
+pkgdesc="A serial communication program"
+arch=('i686' 'x86_64')
+license=('GPL')
+depends=('bash' 'ncurses')
+backup=('etc/minirc.dfl')
+source=("http://alioth.debian.org/frs/download.php/3487/${pkgname}-${pkgver}.tar.gz")
+url="http://alioth.debian.org/projects/minicom/"
+md5sums=('a5117d4d21e2c9e825edb586ee2fe8d2')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc
+ make || return 1
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ make DESTDIR="${pkgdir}/" install || return 1
+ install -Dm644 doc/minirc.dfl ${pkgdir}/etc/minirc.dfl || return 1
+}
diff --git a/extra/mirage/PKGBUILD b/extra/mirage/PKGBUILD
new file mode 100644
index 000000000..d13d8ddd5
--- /dev/null
+++ b/extra/mirage/PKGBUILD
@@ -0,0 +1,20 @@
+# $Id: PKGBUILD 89709 2010-09-03 11:45:48Z remy $
+# Maintainer : Ionut Biru <ibiru@archlinux.org>
+# Contributor: James Rayner <james@archlinux.org>
+# Contributor: Scott Horowitz <stonecrest@gmail.com>
+pkgname=mirage
+pkgver=0.9.5.1
+pkgrel=2
+pkgdesc="A simple GTK+ Image Viewer"
+url="http://mirageiv.berlios.de"
+license=("GPL")
+depends=('pygtk>=2.17.0' 'desktop-file-utils')
+arch=('i686' 'x86_64')
+source=(http://download.berlios.de/mirageiv/${pkgname}-${pkgver}.tar.gz)
+install=$pkgname.install
+md5sums=('8b74db43ca6c81e3326d70c81df4bc56')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ python2 setup.py install --root="${pkgdir}"
+}
diff --git a/extra/mirage/mirage.install b/extra/mirage/mirage.install
new file mode 100644
index 000000000..80312d4a6
--- /dev/null
+++ b/extra/mirage/mirage.install
@@ -0,0 +1,11 @@
+post_install() {
+ update-desktop-database -q
+}
+
+post_upgrade() {
+ update-desktop-database -q
+}
+
+post_remove() {
+ update-desktop-database -q
+}
diff --git a/extra/miro/PKGBUILD b/extra/miro/PKGBUILD
new file mode 100644
index 000000000..0ada45586
--- /dev/null
+++ b/extra/miro/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 107236 2011-01-22 19:02:29Z ronald $
+# Maintainer: Ronald van Haren <ronald.archlinux.org>
+
+pkgname=miro
+pkgver=3.5.1
+pkgrel=1
+pkgdesc="The free and open source internet TV platform"
+arch=('i686' 'x86_64')
+url="http://www.getmiro.com"
+license=('GPL2')
+depends=('dbus-python' 'pyrex' 'pygtk' 'gstreamer0.10' 'python2-gconf'
+ 'python-pysqlite' 'pywebkitgtk' 'shared-mime-info'
+ 'desktop-file-utils' 'gstreamer0.10' 'hicolor-icon-theme'
+ 'gstreamer0.10-python' 'python-notify' 'libtorrent-rasterbar'
+ 'gstreamer0.10-base-plugins' 'gstreamer0.10-good-plugins' 'python-pycurl')
+makedepends=('pkgconfig')
+install=miro.install
+source=(http://ftp.osuosl.org/pub/pculture.org/${pkgname}/src/${pkgname}-${pkgver}.tar.gz)
+sha1sums=('0f5c2a307e7040c9c2895ee9a2d1c3ff99d34e9e')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}/linux"
+
+ python2 setup.py install --root=${pkgdir}
+
+ # fix miro startup script so --debug works with python2
+ sed -i "s|which python|which python2|" ${pkgdir}/usr/bin/miro
+ sed -i "s|./miro.real|/usr/bin/miro.real|" ${pkgdir}/usr/bin/miro
+}
diff --git a/extra/miro/miro.install b/extra/miro/miro.install
new file mode 100644
index 000000000..a5ee228aa
--- /dev/null
+++ b/extra/miro/miro.install
@@ -0,0 +1,17 @@
+post_install() {
+ update-desktop-database -q
+ xdg-icon-resource forceupdate --theme hicolor
+ update-mime-database usr/share/mime > /dev/null
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ update-desktop-database -q
+ xdg-icon-resource forceupdate --theme hicolor
+ update-mime-database usr/share/mime > /dev/null
+}
+
+
diff --git a/extra/mjpegtools/PKGBUILD b/extra/mjpegtools/PKGBUILD
new file mode 100644
index 000000000..9daf1a2fc
--- /dev/null
+++ b/extra/mjpegtools/PKGBUILD
@@ -0,0 +1,40 @@
+# $Id: PKGBUILD 84755 2010-07-04 03:32:01Z eric $
+# Contributor: Damir Perisa <damir.perisa@bluewin.ch>
+# Mantainer: Roberto Carvajal <roberto@archlinux.org>
+
+pkgname=mjpegtools
+pkgver=1.9.0
+pkgrel=4
+pkgdesc="Set of tools that can do recording of videos and playback, simple cut-and-paste editing and the MPEG compression of audio and video"
+arch=(i686 x86_64)
+license=('GPL')
+url="http://mjpeg.sourceforge.net/"
+depends=('libjpeg>=8' 'libpng>=1.4.0' 'sdl' 'gcc-libs' 'libdv')
+makedepends=('gtk2>=2.18.6')
+optdepends=('gtk2: glav GUI')
+options=('!makeflags' '!libtool')
+install=mjpegtools.install
+source=(http://downloads.sourceforge.net/sourceforge/mjpeg/${pkgname}-${pkgver}.tar.gz
+ mjpegtools-1.9.0-glibc-2.10.patch
+ png2yuv-fix-memleak.patch
+ mjpegtools-1.9.0-jpeg-7.patch)
+md5sums=('309a6fcf0900a010d6a9c1e91afc2f5c' 'b8ae66237d83be533db8eea166fd3357'\
+ '39e1def8fb0f7c58a217b22dc251a86a' 'ccc7562a3933877d3362da7cf4695ea0')
+sha1sums=('1701233354c7ea86b5b7808c4dd5d03a71118e48' '3029f0e835e693b144298ed9f8143c9566be26f3'\
+ '8af5c3747756353bef56d03bafbdd086ff15c02c' '2bdb1b3b8591cede11d4a133a758e8ead35db4dd')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ sed -i -e '/ARCHFLAGS=/s:=.*:=:' configure
+ patch -Np1 -i "$srcdir/mjpegtools-1.9.0-glibc-2.10.patch"
+ patch -Np1 -i "${srcdir}/png2yuv-fix-memleak.patch"
+ patch -Np0 -i "${srcdir}/mjpegtools-1.9.0-jpeg-7.patch"
+ ./configure --prefix=/usr --enable-largefile
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+ install -m644 mpeg2enc/mpeg2syntaxcodes.h "${pkgdir}/usr/include/mjpegtools/mpeg2enc/"
+}
diff --git a/extra/mjpegtools/mjpegtools-1.9.0-glibc-2.10.patch b/extra/mjpegtools/mjpegtools-1.9.0-glibc-2.10.patch
new file mode 100644
index 000000000..e16156046
--- /dev/null
+++ b/extra/mjpegtools/mjpegtools-1.9.0-glibc-2.10.patch
@@ -0,0 +1,11 @@
+--- mjpegtools-1.9.0/mplex/lpcmstrm_in.cpp.orig 2009-05-27 01:31:46.000000000 -0700
++++ mjpegtools-1.9.0/mplex/lpcmstrm_in.cpp 2009-05-27 01:33:09.000000000 -0700
+@@ -53,7 +53,7 @@
+
+ bool LPCMStream::Probe(IBitStream &bs )
+ {
+- char *last_dot = strrchr( bs.StreamName(), '.' );
++ const char *last_dot = strrchr( bs.StreamName(), '.' );
+ return
+ last_dot != NULL
+ && strcmp( last_dot+1, "lpcm") == 0;
diff --git a/extra/mjpegtools/mjpegtools-1.9.0-jpeg-7.patch b/extra/mjpegtools/mjpegtools-1.9.0-jpeg-7.patch
new file mode 100644
index 000000000..ec3673186
--- /dev/null
+++ b/extra/mjpegtools/mjpegtools-1.9.0-jpeg-7.patch
@@ -0,0 +1,24 @@
+Fix segmentation fault with jpeg-7 and above where dinfo.do_fancy_upsampling isn't set by default to FALSE anymore.
+
+Patch by: Salah Coronya
+
+http://bugs.gentoo.org/show_bug.cgi?id=293919
+
+--- lavtools/jpegutils.c
++++ lavtools/jpegutils.c
+@@ -502,6 +502,7 @@
+
+ jpeg_read_header (&dinfo, TRUE);
+ dinfo.raw_data_out = TRUE;
++ dinfo.do_fancy_upsampling = FALSE;
+ dinfo.out_color_space = JCS_YCbCr;
+ dinfo.dct_method = JDCT_IFAST;
+ guarantee_huff_tables(&dinfo);
+@@ -599,6 +600,7 @@
+ if (field > 0) {
+ jpeg_read_header (&dinfo, TRUE);
+ dinfo.raw_data_out = TRUE;
++ dinfo.do_fancy_upsampling = FALSE;
+ dinfo.out_color_space = JCS_YCbCr;
+ dinfo.dct_method = JDCT_IFAST;
+ jpeg_start_decompress (&dinfo);
diff --git a/extra/mjpegtools/mjpegtools.install b/extra/mjpegtools/mjpegtools.install
new file mode 100644
index 000000000..1ef7d6fd3
--- /dev/null
+++ b/extra/mjpegtools/mjpegtools.install
@@ -0,0 +1,16 @@
+infodir=/usr/share/info
+file=mjpeg-howto.info
+
+post_install() {
+ [ -x usr/bin/install-info ] || return 0
+ install-info $infodir/$file.gz $infodir/dir 2> /dev/null
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ [ -x usr/bin/install-info ] || return 0
+ install-info --delete $infodir/$file.gz $infodir/dir 2> /dev/null
+}
diff --git a/extra/mjpegtools/png2yuv-fix-memleak.patch b/extra/mjpegtools/png2yuv-fix-memleak.patch
new file mode 100644
index 000000000..a6f03a4e1
--- /dev/null
+++ b/extra/mjpegtools/png2yuv-fix-memleak.patch
@@ -0,0 +1,10 @@
+--- mjpegtools-1.9.0/lavtools/png2yuv.c.orig 2010-01-17 14:26:24.000000000 +0100
++++ mjpegtools-1.9.0/lavtools/png2yuv.c 2010-01-17 14:27:53.000000000 +0100
+@@ -407,6 +407,7 @@
+ return 2;
+ }
+
++ png_destroy_read_struct(&png_ptr, &info_ptr, &end_info);
+ fclose(pngfile);
+
+ return 1;
diff --git a/extra/mkbootcd/PKGBUILD b/extra/mkbootcd/PKGBUILD
new file mode 100644
index 000000000..dc06beb41
--- /dev/null
+++ b/extra/mkbootcd/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 12672 2008-09-17 21:20:37Z tpowa $
+# Maintainer : Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=mkbootcd
+pkgver=2008.09
+pkgrel=1
+pkgdesc="Advanced, modular isolinux bootcd image creation utility"
+arch=(i686 x86_64)
+license=('GPL')
+url="http://www.archlinux.org/"
+depends=('mkinitcpio' 'cdrkit' 'syslinux')
+source=('boot.msg' 'mkbootcd' 'mkbootcd.conf' 'options.msg')
+backup=(etc/mkbootcd.conf)
+
+build()
+{
+ cd $startdir/src/
+ install -D -m755 mkbootcd $startdir/pkg/usr/sbin/mkbootcd
+ install -D -m644 mkbootcd.conf $startdir/pkg/etc/mkbootcd.conf
+ install -D -m644 boot.msg $startdir/pkg/usr/share/mkbootcd/boot.msg
+ install -D -m644 options.msg $startdir/pkg/usr/share/mkbootcd/options.msg
+}
+md5sums=('d02e111f81204044644f728ff85e2284'
+ 'bfae68f0a5168bd41f8d0c56f524fb08'
+ 'e08b9b952b5e468feb16e3f20ee3faf2'
+ 'fa078942b8adf261e4d925e080dc3018')
diff --git a/extra/mkbootcd/boot.msg b/extra/mkbootcd/boot.msg
new file mode 100644
index 000000000..271c58016
--- /dev/null
+++ b/extra/mkbootcd/boot.msg
@@ -0,0 +1,14 @@
+
+
+------------------------------------------------------------------------------
+Arch Linux
+ISOLINUX BOOT
+created with 'mkbootcd' written by Tobias Powalowski <tpowa@archlinux.org>
+
+Press ENTER or type 'arch' to boot the CD.
+
+If you wish to change your defaults to boot into your existing system,
+type 'vmlinuz initrd=initrd.img <any_other_boot_option>'
+Use the F2 key for troubleshooting and options.
+------------------------------------------------------------------------------
+
diff --git a/extra/mkbootcd/mkbootcd b/extra/mkbootcd/mkbootcd
new file mode 100755
index 000000000..e7e5e62b1
--- /dev/null
+++ b/extra/mkbootcd/mkbootcd
@@ -0,0 +1,143 @@
+#! /bin/sh
+# Created by Tobias Powalowski <tpowa@archlinux.org>
+# Settings
+APPNAME=$(basename "${0}")
+CONFIG="/etc/mkbootcd.conf"
+GENIMG=""
+BURN="0"
+BLANK="0"
+GRUB="0"
+TARNAME=""
+export TEMPDIR=$(mktemp /tmp/mkbootcd.XXXX)
+usage ()
+{
+ echo "${APPNAME}: usage"
+ echo " -g=IMAGE Generate a ISO image as IMAGE"
+ echo " -c=CONFIG Use CONFIG file. default: /etc/mkbootcd.conf"
+ echo " -B Burn the ISO image after creation"
+ echo " -b Blanking media first"
+ echo " -grub Use grub instead of isolinux"
+ echo " -t=TARNAME Generate a tar image instead of an iso image"
+ echo " -h This message."
+ exit 1
+}
+
+[ "$1" == "" ] && usage
+
+while [ $# -gt 0 ]; do
+ case $1 in
+ -c=*|--c=*) CONFIG="$(echo $1 | awk -F= '{print $2;}')" ;;
+ -g=*|--g=*) GENIMG="$(echo $1 | awk -F= '{print $2;}')" ;;
+ -B|--B) BURN="1" ;;
+ -b|--b) BLANK="1" ;;
+ -grub|--grub) GRUB="1" ;;
+ -t=*|--t=*) TARNAME="$(echo $1 | awk -F= '{print $2;}')" ;;
+ -h|--h|?) usage ;;
+ *) usage ;;
+ esac
+ shift
+done
+
+if [ "${TARNAME}" = "" -a "${GENIMG}" = "" ]; then
+ echo "ERROR: No image name specified, please use the -g option"
+ exit 1
+fi
+
+if [ ! -f "${CONFIG}" ]; then
+ echo "config file '${CONFIG}' cannot be found, aborting..."
+ exit 1
+fi
+
+. "${CONFIG}"
+# export for mkinitcpio
+[ -n "${APPENDBOOTMESSAGE}" ] && export APPENDBOOTMESSAGE
+[ -n "${APPENDBOOTMESSAGE_SYSLINUX}" ] && export APPENDBOOTMESSAGE_SYSLINUX
+[ -n "${APPENDBOOTMESSAGE_SYSLINUX_LOWMEM}" ] && export APPENDBOOTMESSAGE_SYSLINUX_LOWMEM
+[ -n "${APPENDOPTIONSBOOTMESSAGE}" ] && export APPENDOPTIONSBOOTMESSAGE
+
+if [ "$GRUB" = "1" ]; then
+ export RUNPROGRAM="${APPNAME}-grub"
+ export BOOTDIRNAME="boot"
+else
+ export RUNPROGRAM="${APPNAME}"
+ export BOOTDIRNAME="isolinux"
+fi
+[ "${BOOTMESSAGE}" = "" ] && export BOOTMESSAGE=$(mktemp /tmp/bootmessage.XXXX)
+[ "${OPTIONSBOOTMESSAGE}" = "" ] && export OPTIONSBOOTMESSAGE=$(mktemp /tmp/optionsbootmessage.XXXX)
+[ "${ISONAME}" = "" ] && export ISONAME=$(mktemp /tmp/isoname.XXXX)
+export USEKERNEL=${VERSION}
+# begin script
+[ -e ${TEMPDIR} ] && rm -r ${TEMPDIR}
+mkdir -p ${TEMPDIR}/${BOOTDIRNAME}
+if [ "$GRUB" = "1" ]; then
+ mkdir ${TEMPDIR}/${BOOTDIRNAME}/grub
+ install -m755 /usr/share/grub/i386-pc/stage2_eltorito ${TEMPDIR}/${BOOTDIRNAME}/grub/stage2_eltorito
+else
+ install -m755 /usr/lib/syslinux/isolinux.bin ${TEMPDIR}/${BOOTDIRNAME}/isolinux.bin
+fi
+# create isolinux.cfg
+if [ "$GRUB" = "1" ]; then
+ echo ":: Creating menu.lst ..."
+ [ ! -e "${MENULST}" ] && echo "No menu.lst found" && exit 1
+ sed "s|@@PROMPT@@|${PROMPT}|g;s|@@TIMEOUT@@|${TIMEOUT}|g;s|@@KERNEL_BOOT_OPTIONS@@|${KERNEL_BOOT_OPTIONS}|g" \
+ ${MENULST} \
+ > ${TEMPDIR}/${BOOTDIRNAME}/grub/menu.lst
+else
+ echo ":: Creating isolinux.cfg ..."
+ if [ "${ISOLINUXCFG}" = "" ]; then
+ [ -e ${TEMPDIR}/${BOOTDIRNAME}/isolinux.cfg ] && rm ${TEMPDIR}/${BOOTDIRNAME}/isolinux.cfg
+ echo "prompt ${PROMPT}" >> ${TEMPDIR}/${BOOTDIRNAME}/isolinux.cfg
+ echo "timeout ${TIMEOUT}" >> ${TEMPDIR}/${BOOTDIRNAME}/isolinux.cfg
+ echo "display boot.msg" >> ${TEMPDIR}/${BOOTDIRNAME}/isolinux.cfg
+ echo "F1 boot.msg" >> ${TEMPDIR}/${BOOTDIRNAME}/isolinux.cfg
+ echo "F2 options.msg" >> ${TEMPDIR}/${BOOTDIRNAME}/isolinux.cfg
+ echo "default arch" >> ${TEMPDIR}/${BOOTDIRNAME}/isolinux.cfg
+ echo "label arch" >> ${TEMPDIR}/${BOOTDIRNAME}/isolinux.cfg
+ echo "kernel vmlinuz" >> ${TEMPDIR}/${BOOTDIRNAME}/isolinux.cfg
+ echo "append initrd=initrd.img ${KERNEL_BOOT_OPTIONS}" >> ${TEMPDIR}/${BOOTDIRNAME}/isolinux.cfg
+ else
+ sed "s|@@PROMPT@@|${PROMPT}|g;s|@@TIMEOUT@@|${TIMEOUT}|g;s|@@KERNEL_BOOT_OPTIONS@@|${KERNEL_BOOT_OPTIONS}|g" \
+ ${ISOLINUXCFG} > ${TEMPDIR}/${BOOTDIRNAME}/isolinux.cfg
+ fi
+ [ ! -s ${TEMPDIR}/${BOOTDIRNAME}/isolinux.cfg ] && echo "No isolinux.cfg found" && exit 1
+fi
+echo ":: Calling mkinitcpio CONFIG=${MKINITCPIO_CONFIG} KERNEL=${VERSION} ..."
+# generate initramdisk
+echo ":: Creating initramdisk ..."
+ mkinitcpio -c ${MKINITCPIO_CONFIG} -k ${VERSION} -g ${TEMPDIR}/${BOOTDIRNAME}/initrd.img
+echo ":: Using ${KERNEL} as image kernel ..."
+ install -m644 ${KERNEL} ${TEMPDIR}/${BOOTDIRNAME}/vmlinuz
+ install -m644 ${BOOTMESSAGE} ${TEMPDIR}/${BOOTDIRNAME}/boot.msg
+ install -m644 ${OPTIONSBOOTMESSAGE} ${TEMPDIR}/${BOOTDIRNAME}/options.msg
+ [ ! -s ${TEMPDIR}/${BOOTDIRNAME}/boot.msg ] && echo 'ERROR:no boot.msg found, aborting!' && exit 1
+ [ ! -s ${TEMPDIR}/${BOOTDIRNAME}/options.msg ] && echo 'ERROR:no options.msg found, aborting!' && exit 1
+# create image
+if ! [ "${TARNAME}" = "" ]; then
+ echo ":: Creating tar image ..."
+ [ -e ${TARNAME} ] && rm ${TARNAME}
+ rm ${TEMPDIR}/arch/pkg/*.pkg.tar.gz > /dev/null 2>&1
+ tar cfv ${TARNAME} ${TEMPDIR} > /dev/null 2>&1 && echo ":: tar Image succesfull created at ${TARNAME}"
+else
+ echo ":: Creating ISO image ..."
+ [ -e ${GENIMG} ] && rm ${GENIMG}
+ [ -s "${ISONAME}" ] && ISONAME=$(cat $ISONAME) || ISONAME="Arch Linux"
+ if [ "$GRUB" = "1" ]; then
+ mkisofs -RlDJLV "${ISONAME}" -b boot/grub/stage2_eltorito -c boot/boot.cat \
+ -no-emul-boot -boot-load-size 4 -boot-info-table -o ${GENIMG} ${TEMPDIR}/ > /dev/null 2>&1
+ else
+ mkisofs -RlDJLV "${ISONAME}" -b isolinux/isolinux.bin -c isolinux/boot.cat \
+ -no-emul-boot -boot-load-size 4 -boot-info-table -o ${GENIMG} ${TEMPDIR}/ > /dev/null 2>&1
+ fi
+ [ $? -ne 0 ] && echo ":: ISO Image succesfull created at ${GENIMG}"
+ # burning/blanking image
+ if [ "$BLANK" = "1" ]; then
+ echo ":: Blanking media DEVICE=${DEVICE}, BLANKMODE=${BLANKMODE}, SPEED=${SPEED} ..."
+ cdrecord dev=${DEVICE} speed=${SPEED} blank=${BLANKMODE} > /dev/null 2>&1 && echo ":: Successfull."
+ fi
+ if [ "$BURN" = "1" ]; then
+ echo ":: Burning ISO image DEVICE=${DEVICE}, SPEED=${SPEED} ..."
+ cdrecord dev=${DEVICE} speed=${SPEED} -eject ${GENIMG} > /dev/null 2>&1 && echo ":: Successfull."
+ fi
+fi
+# clean /tmp
+rm -r ${TEMPDIR}
diff --git a/extra/mkbootcd/mkbootcd.conf b/extra/mkbootcd/mkbootcd.conf
new file mode 100644
index 000000000..b27be81e6
--- /dev/null
+++ b/extra/mkbootcd/mkbootcd.conf
@@ -0,0 +1,38 @@
+# Created by Tobias Powalowski <tpowa@archlinux.org>
+# config file of mkbootcd
+
+# DEFAULT kernel boot options like root=/dev/hda3 etc.
+# add your root= option, if you boot from a disk device
+# and don't want to add it by hand on each boot
+KERNEL_BOOT_OPTIONS=""
+
+# mkinitcpio config file, defaulted to stock config file
+MKINITCPIO_CONFIG="/etc/mkinitcpio.conf"
+
+# kernel version, defaulted to build for runtime kernel
+VERSION="$(uname -r)"
+
+# kernel image, defaulted to stock arch kernel
+KERNEL="/boot/vmlinuz26"
+
+# boot message files
+BOOTMESSAGE="/usr/share/mkbootcd/boot.msg"
+OPTIONSBOOTMESSAGE="/usr/share/mkbootcd/options.msg"
+
+# menu.lst or isolinux.cfg file to use
+ISOLINUXCFG=""
+MENULST=""
+
+# Prompt on CD boot, defaulted to yes, 1=yes 0=no
+PROMPT="1"
+
+# Name of the ISO, if empty Arch Linux is used if not set by a HOOK later
+ISONAME=""
+
+# Timeout in seconds on CD boot, defaulted to 0, because we prompt by default
+TIMEOUT="0"
+
+# Setting cdrecord options
+DEVICE=""
+SPEED=""
+BLANKMODE="" \ No newline at end of file
diff --git a/extra/mkbootcd/options.msg b/extra/mkbootcd/options.msg
new file mode 100644
index 000000000..300922e38
--- /dev/null
+++ b/extra/mkbootcd/options.msg
@@ -0,0 +1,6 @@
+------------------------------------------------------------------------------
+Arch Linux options and troubleshooting:
+
+- If your system hangs during the boot process, any combinations of the
+ boot options noapic acpi=off pci=routeirq nosmp may be useful.
+------------------------------------------------------------------------------ \ No newline at end of file
diff --git a/extra/mkvtoolnix/PKGBUILD b/extra/mkvtoolnix/PKGBUILD
new file mode 100644
index 000000000..554fd4ec6
--- /dev/null
+++ b/extra/mkvtoolnix/PKGBUILD
@@ -0,0 +1,34 @@
+# $Id: PKGBUILD 113970 2011-03-11 00:06:49Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: 03/08/04 <lefungus@altern.org>
+
+pkgname=mkvtoolnix
+pkgver=4.6.0
+pkgrel=1
+pkgdesc="Set of tools to create, edit and inspect Matroska files"
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://www.bunkus.org/videotools/mkvtoolnix/index.html"
+depends=('libmatroska' 'flac' 'libvorbis' 'file' 'boost-libs' 'lzo2' 'xdg-utils')
+makedepends=('wxgtk' 'boost' 'ruby')
+optdepends=('wxgtk: mkvmerge,mkvinfo and mmg GUI')
+install=mkvtoolnix.install
+source=("http://www.bunkus.org/videotools/${pkgname}/sources/${pkgname}-${pkgver}.tar.bz2")
+md5sums=('ca4e5b226175a6df2f9fdad206abf0a8')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ export CFLAGS="${CFLAGS} -DBOOST_FILESYSTEM_VERSION=2"
+ export CXXFLAGS="${CXXFLAGS} -DBOOST_FILESYSTEM_VERSION=2"
+
+ ./configure --prefix=/usr \
+ --with-boost-libdir=/usr/lib
+ ./drake
+}
+
+package () {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ ./drake DESTDIR="${pkgdir}" install
+}
diff --git a/extra/mkvtoolnix/mkvtoolnix.install b/extra/mkvtoolnix/mkvtoolnix.install
new file mode 100644
index 000000000..1cf75e1b6
--- /dev/null
+++ b/extra/mkvtoolnix/mkvtoolnix.install
@@ -0,0 +1,14 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+ if [ -f usr/bin/update-mime-database ]; then
+ update-mime-database usr/share/mime &> /dev/null
+ fi
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ post_install $1
+}
diff --git a/extra/moc/ChangeLog b/extra/moc/ChangeLog
new file mode 100644
index 000000000..d494c5280
--- /dev/null
+++ b/extra/moc/ChangeLog
@@ -0,0 +1,32 @@
+2010-02-25 Eric Belanger <eric@archlinux.org>
+
+ * moc 2.5.0_alpha4-2
+ * Added wavpack and modplug support (close FS#18449)
+
+2010-01-24 Eric Belanger <eric@archlinux.org>
+
+ * moc 2.5.0_alpha4-1
+ * Upstream update to unstable series
+ * Fixed aac support (close FS#13164)
+
+2009-11-07 Eric Belanger <eric@archlinux.org>
+
+ * Fixed optdepends array syntax (close FS#16053)
+
+2009-03-21 Eric Belanger <eric@archlinux.org>
+
+ * moc 2.4.4-3
+ * Added missing libid3tag depends (close FS#13819)
+
+2009-03-07 Eric Belanger <eric@archlinux.org>
+
+ * moc 2.4.4-2
+ * Added patch to fix playback of WMA files
+
+2009-01-11 Eric Belanger <eric@archlinux.org>
+
+ * moc 2.4.4-1
+ * Upstream update
+ * Added libtool depends
+ * Replaced install scriptlet by optdepends
+ * Added ChangeLog
diff --git a/extra/moc/PKGBUILD b/extra/moc/PKGBUILD
new file mode 100644
index 000000000..1cde9ae89
--- /dev/null
+++ b/extra/moc/PKGBUILD
@@ -0,0 +1,44 @@
+# $Id: PKGBUILD 107458 2011-01-25 20:51:09Z remy $
+# Contributor: Eric Belanger <eric@archlinux.org>
+# Contributor: dorphell <dorphell@gmx.net>
+# Maintainer: Daniel J Griffiths <ghost1227@archlinux.us>
+
+pkgname=moc
+pkgver=2.4.4
+pkgrel=3
+pkgdesc="An ncurses console audio player with support for the mp3, ogg, and wave formats"
+arch=('i686' 'x86_64')
+url="http://moc.daper.net/"
+license=('GPL')
+depends=('libmad' 'libid3tag' 'jack' 'curl' 'libsamplerate' 'libtool')
+makedepends=('speex' 'ffmpeg' 'taglib' 'libmpcdec' 'wavpack' 'libmodplug')
+optdepends=('speex: for using the speex plugin'
+ 'ffmpeg: for using the ffmpeg plugin'
+ 'taglib: for using the musepack plugin'
+ 'libmpcdec: for using the musepack plugin'
+ 'wavpack: for using the wavpack plugin'
+ 'libmodplug: for using the modplug plugin')
+options=('!libtool' 'force')
+source=(ftp://ftp.daper.net/pub/soft/moc/stable/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('647c770a5542a4ae5437386807a89796')
+sha1sums=('e56ee13aa17c177f0afc42efe3804ebbbf46d4db')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ sed -i 's|ffmpeg/avformat.h|libavformat/avformat.h|' decoder_plugins/ffmpeg/ffmpeg.c
+ sed -i 's|avcodec_decode_audio|avcodec_decode_audio2|' decoder_plugins/ffmpeg/ffmpeg.c
+ # Disabling aac to use the external ffmpeg to play them (FS#13164)
+ ./configure --prefix=/usr --without-rcc --without-aac \
+ --with-oss --with-alsa --with-jack --with-mp3 \
+ --with-musepack --with-vorbis --with-flac --with-wavpack \
+ --with-sndfile --with-modplug --with-ffmpeg --with-speex \
+ --with-samplerate --with-curl
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/mod_dnssd/PKGBUILD b/extra/mod_dnssd/PKGBUILD
new file mode 100644
index 000000000..7c1ddc18d
--- /dev/null
+++ b/extra/mod_dnssd/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: tardo <tardo@nagi-fanboi.net>
+# Contributor: William Rea <sillywilly@gmail.com>
+
+pkgname=mod_dnssd
+pkgver=0.6
+pkgrel=3
+pkgdesc="Zeroconf module for Apache2"
+arch=('i686' 'x86_64')
+url="http://0pointer.de/lennart/projects/mod_dnssd"
+license=('APACHE')
+depends=('avahi' 'apache')
+source=(http://0pointer.de/lennart/projects/$pkgname/${pkgname}-${pkgver}.tar.gz)
+md5sums=('bed3d95a98168bf0515922d1c05020c5')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --disable-lynx || return 1
+ make || return 1
+ install -m755 -d "${pkgdir}/usr/lib/httpd/modules"
+ install -m755 src/.libs/mod_dnssd.so "${pkgdir}/usr/lib/httpd/modules/" || return 1
+}
diff --git a/extra/mod_fcgid/PKGBUILD b/extra/mod_fcgid/PKGBUILD
new file mode 100644
index 000000000..ad457a9a2
--- /dev/null
+++ b/extra/mod_fcgid/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 72879 2010-03-21 12:12:44Z thomas $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+pkgname=mod_fcgid
+pkgver=2.3.5
+pkgrel=1
+pkgdesc="A FastCGI module for Apache HTTP Server."
+license=('APACHE')
+arch=('i686' 'x86_64')
+url="http://httpd.apache.org/mod_fcgid/"
+depends=('apache')
+source=(http://apache.cs.utah.edu/httpd/mod_fcgid/mod_fcgid-$pkgver.tar.gz)
+sha256sums=('3280fd287659539d577fc3c77a975739c06bb9d0a9cef48275d4beb13c64ef39')
+
+build() {
+ cd "$srcdir"/$pkgname-$pkgver
+ ./configure.apxs
+ make || return 1
+}
+
+package() {
+ cd "$srcdir"/$pkgname-$pkgver
+ make DESTDIR="$pkgdir" install
+ rm -rf "$pkgdir"/{usr/share,etc}
+}
diff --git a/extra/mod_mono/PKGBUILD b/extra/mod_mono/PKGBUILD
new file mode 100644
index 000000000..21e944d19
--- /dev/null
+++ b/extra/mod_mono/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 111519 2011-02-27 11:39:59Z daniel $
+# Maintainer: Daniel Isenmann <daniel@archlinux.org>
+# Contributor: Tobias Kieslich <tobias@justdreams.de>
+
+pkgname=mod_mono
+pkgver=2.10
+pkgrel=1
+pkgdesc="The mono module to make ASP.NET running on top of apache"
+arch=(i686 x86_64)
+license=('APACHE')
+depends=('apache>=2.2.11' 'xsp')
+url="http://www.go-mono.com"
+install=${pkgname}.install
+source=(http://ftp.novell.com/pub/mono/sources/${pkgname}/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('422c533a0dfbd699eb6339234261150a')
+
+build() {
+ cd ${startdir}/src/${pkgname}-${pkgver}
+ CFLAGS="${CFLAGS} `apr-1-config --cppflags --includes --cflags`" ./configure \
+ --prefix=/usr --sysconfdir=/etc --with-apxs=/usr/sbin/apxs \
+ --with-mono-prefix=/usr --with-apr-config=/usr/bin/apr-1-config
+ make || return 1
+ make DESTDIR=${startdir}/pkg install
+}
diff --git a/extra/mod_mono/mod_mono.install b/extra/mod_mono/mod_mono.install
new file mode 100644
index 000000000..4945a714b
--- /dev/null
+++ b/extra/mod_mono/mod_mono.install
@@ -0,0 +1,20 @@
+# arg 1: the new package version
+post_install() {
+ cat << EOM
+
+--> As of version 1.1.10 mod_mono let's you use asp pages very easily by some
+--> auto integration in apache. Please read:
+ http://www.mono-project.com/AutoConfiguration
+--> to get the idea. To use mod_mono, you only have to type into httpd.conf:
+Include /etc/httpd/conf/mod_mono.conf
+
+EOM
+}
+
+# arg 1: the new package version
+# arg 2: the old package version
+post_upgrade() {
+ post_install $1
+}
+
+# vim: ft=sh
diff --git a/extra/mod_perl/PKGBUILD b/extra/mod_perl/PKGBUILD
new file mode 100644
index 000000000..9e54317c0
--- /dev/null
+++ b/extra/mod_perl/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 108488 2011-01-31 14:48:50Z angvp $
+# Maintainer: Firmicus <francois.archlinux.org>
+# Contributor: Tom K <tomk@runbox.com>
+
+pkgname=mod_perl
+_realname=mod_perl
+pkgver=2.0.4
+pkgrel=11
+pkgdesc="Apache module that embeds the Perl interpreter within the server"
+url="http://search.cpan.org/dist/${_realname}/"
+depends=('perl=5.12.3' 'apache' 'db' 'apr-util')
+license=('APACHE')
+arch=('i686' 'x86_64')
+options=(!emptydirs)
+source=(http://search.cpan.org/CPAN/authors/id/G/GO/GOZER/${_realname}-${pkgver}.tar.gz)
+md5sums=('1a05625ae6843085f985f5da8214502a')
+
+build() {
+ cd ${srcdir}/${_realname}-${pkgver}
+ # install module in vendor directories.
+ perl Makefile.PL INSTALLDIRS=vendor MP_APXS=/usr/sbin/apxs
+ make
+}
+
+package() {
+ cd ${srcdir}/${_realname}-${pkgver}
+ make install DESTDIR=${pkgdir}
+}
diff --git a/extra/mod_wsgi/PKGBUILD b/extra/mod_wsgi/PKGBUILD
new file mode 100644
index 000000000..293fcc9d5
--- /dev/null
+++ b/extra/mod_wsgi/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 102102 2010-12-06 00:38:58Z ibiru $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Ryan Coyner <rcoyner@gmail.com>
+
+pkgname=mod_wsgi
+pkgver=3.3
+pkgrel=2
+pkgdesc="Python WSGI adapter module for Apache"
+arch=('i686' 'x86_64')
+url="http://www.modwsgi.org/"
+license=('APACHE')
+depends=('apache' 'python2')
+install=mod_wsgi.install
+source=(http://modwsgi.googlecode.com/files/${pkgname}-${pkgver}.tar.gz)
+md5sums=('6172bb2bbabcd0c25867c2bc06f99dbb')
+sha1sums=('f32d38e5d3ed5de1efd5abefb52678f833dc9166')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr \
+ --with-apxs=/usr/sbin/apxs \
+ --with-python=/usr/bin/python2
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/mod_wsgi/mod_wsgi.install b/extra/mod_wsgi/mod_wsgi.install
new file mode 100644
index 000000000..d26d61631
--- /dev/null
+++ b/extra/mod_wsgi/mod_wsgi.install
@@ -0,0 +1,14 @@
+post_install() {
+/bin/cat << ENDOFMESSAGE
+==>
+==>
+==> To install mod_wsgi, add the following line in
+==> /etc/httpd/conf/httpd.conf file :
+==>
+==> LoadModule wsgi_module modules/mod_wsgi.so
+==>
+==> and restart/reload Apache.
+==>
+==>
+ENDOFMESSAGE
+}
diff --git a/extra/modemmanager/PKGBUILD b/extra/modemmanager/PKGBUILD
new file mode 100644
index 000000000..bcb2e54ed
--- /dev/null
+++ b/extra/modemmanager/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 82759 2010-06-16 18:15:09Z ibiru $
+# Maintainer: Ionut Biru <ibiru@archlinux.org>
+pkgname=modemmanager
+_realname=ModemManager
+pkgver=0.4
+pkgrel=1
+pkgdesc="Mobile broadband modem management service"
+arch=('i686' 'x86_64')
+url="http://cgit.freedesktop.org/ModemManager/ModemManager/"
+license=('GPL2')
+depends=('dbus-glib>=0.86' 'udev>=151' 'ppp>=2.4.5')
+makedepends=('intltool')
+options=('!libtool')
+source=(http://download.gnome.org/sources/${_realname}/0.4/${_realname}-${pkgver}.tar.bz2)
+sha256sums=('8b5415ae8597726f82e9fd09237c02b5c8af7e9f4fc4cba00f9fe183cc2c6c5f')
+
+build() {
+ cd "$srcdir/${_realname}-${pkgver}"
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --disable-static
+ make || return 1
+ make DESTDIR="$pkgdir" install || return 1
+}
diff --git a/extra/monica/PKGBUILD b/extra/monica/PKGBUILD
new file mode 100644
index 000000000..82b0a4850
--- /dev/null
+++ b/extra/monica/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 2959 2008-06-17 01:02:56Z eric $
+# Maintainer: tobias <tobias@archlinux.org>
+# Contributor: Tobias Kieslich <tobias@justdreams.de>
+
+pkgname=monica
+pkgver=3.7
+pkgrel=1
+pkgdesc="A monitor calibration tool"
+arch=(i686 x86_64)
+license=('custom')
+url="http://www.pcbypaul.com/software/monica.html"
+depends=('fltk')
+makedepends=('librsvg' 'python')
+source=(http://www.pcbypaul.com/software/dl/${pkgname}-${pkgver}.tar.bz2 \
+ ${pkgname}.desktop ${pkgname}.svg)
+md5sums=('490aabc35b830e4a3dc32a2f893ba805' 'a337bfda1fca7228420db0ce92256816'\
+ '4569f5df7d7b3eaf20108adf48e8dfe4')
+
+build() {
+ cd ${startdir}/src/${pkgname}-${pkgver}
+ make || return 1
+ install -Dm755 ${pkgname} ${startdir}/pkg/usr/bin/${pkgname}
+ install -Dm644 ../${pkgname}.desktop \
+ ${startdir}/pkg/usr/share/applications/${pkgname}.desktop
+ install -Dm644 ../${pkgname}.svg \
+ ${startdir}/pkg/usr/share/pixmaps/${pkgname}.svg
+ rsvg -w 64 -h 57 -f png ${startdir}/pkg/usr/share/pixmaps/${pkgname}.svg \
+ ${startdir}/pkg/usr/share/pixmaps/${pkgname}.png
+ install -Dm644 licence ${startdir}/pkg/usr/share/licenses/monica/license.txt
+}
diff --git a/extra/monica/monica.desktop b/extra/monica/monica.desktop
new file mode 100644
index 000000000..6b17659ca
--- /dev/null
+++ b/extra/monica/monica.desktop
@@ -0,0 +1,10 @@
+[Desktop Entry]
+Encoding=UTF-8
+Name=Monica
+Comment=Monitor Calibration for x-server
+Exec=monica
+Icon=monica
+Terminal=false
+Type=Application
+X-MultipleArgs=false
+Categories=Application;Settings;System;
diff --git a/extra/monica/monica.svg b/extra/monica/monica.svg
new file mode 100644
index 000000000..bb9f77d9b
--- /dev/null
+++ b/extra/monica/monica.svg
@@ -0,0 +1,248 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://web.resource.org/cc/"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ sodipodi:docname="monica.svg"
+ sodipodi:docbase="/home/pool/graphics/arch_candy/svg-icons"
+ height="67.000000pt"
+ width="70.000000pt"
+ inkscape:version="0.41"
+ sodipodi:version="0.32"
+ id="svg1573">
+ <defs
+ id="defs1575">
+ <linearGradient
+ id="linearGradient1606">
+ <stop
+ id="stop1607"
+ offset="0.0000000"
+ style="stop-color:#000000;stop-opacity:0.62745100;" />
+ <stop
+ id="stop1608"
+ offset="1.0000000"
+ style="stop-color:#000000;stop-opacity:0.0000000;" />
+ </linearGradient>
+ <radialGradient
+ gradientTransform="translate(0.000000,3.125000)"
+ gradientUnits="userSpaceOnUse"
+ fy="12.500000"
+ fx="12.500000"
+ r="12.433378"
+ cy="12.500000"
+ cx="12.500000"
+ id="radialGradient1636"
+ xlink:href="#linearGradient1606"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.437333,0.000000,0.000000,0.410284,0.000000,3.125000)"
+ y2="0.0000000"
+ x2="20.514223"
+ y1="30.771334"
+ x1="20.514223"
+ id="linearGradient1638"
+ xlink:href="#linearGradient1606"
+ inkscape:collect="always" />
+ <radialGradient
+ gradientTransform="translate(-12.50000,3.250000)"
+ gradientUnits="userSpaceOnUse"
+ fy="12.500000"
+ fx="100.00000"
+ r="12.500000"
+ cy="12.500000"
+ cx="100.00000"
+ id="radialGradient1643"
+ xlink:href="#linearGradient1606"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.447214,0.000000,0.000000,2.236068,-12.50000,3.250000)"
+ y2="19.565595"
+ x2="251.55765"
+ y1="19.565595"
+ x1="223.60680"
+ id="linearGradient1645"
+ xlink:href="#linearGradient1606"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.508806,0.000000,0.000000,1.965387,0.000000,3.125000)"
+ y2="18.889412"
+ x2="0.0000000"
+ y1="18.889412"
+ x1="25.058681"
+ id="linearGradient1647"
+ xlink:href="#linearGradient1606"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.814390,0.000000,0.000000,0.355317,0.000000,-10.12500)"
+ y2="246.61094"
+ x2="22.207298"
+ y1="211.07926"
+ x1="22.207298"
+ id="linearGradient1649"
+ xlink:href="#linearGradient1606"
+ inkscape:collect="always" />
+ <radialGradient
+ gradientTransform="translate(0.000000,-10.12500)"
+ gradientUnits="userSpaceOnUse"
+ fy="75.000000"
+ fx="12.500000"
+ r="12.500000"
+ cy="75.000000"
+ cx="12.500000"
+ id="radialGradient1651"
+ xlink:href="#linearGradient1606"
+ inkscape:collect="always" />
+ <radialGradient
+ gradientTransform="translate(-12.50000,-10.000000)"
+ gradientUnits="userSpaceOnUse"
+ fy="75.000000"
+ fx="100.00000"
+ r="12.500000"
+ cy="75.000000"
+ cx="100.00000"
+ id="radialGradient1653"
+ xlink:href="#linearGradient1606"
+ inkscape:collect="always" />
+ </defs>
+ <sodipodi:namedview
+ inkscape:current-layer="svg1573"
+ inkscape:window-y="3"
+ inkscape:window-x="0"
+ inkscape:grid-points="true"
+ inkscape:grid-bbox="true"
+ gridtolerance="2.0000000px"
+ gridoriginx="0.0000000pt"
+ gridoriginy="0.0000000pt"
+ gridspacingx="10.000000pt"
+ gridspacingy="10.000000pt"
+ snaptogrid="false"
+ showgrid="true"
+ inkscape:window-height="1002"
+ inkscape:window-width="1272"
+ inkscape:cy="50.235475"
+ inkscape:cx="67.194289"
+ inkscape:zoom="7.9999998"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0.0"
+ borderopacity="1.0"
+ bordercolor="#666666"
+ pagecolor="#ffffff"
+ id="base" />
+ <metadata
+ id="metadata1576">
+ <rdf:RDF
+ id="RDF1577">
+ <cc:Work
+ id="Work1578"
+ rdf:about="">
+ <dc:description
+ id="description1579">Created with Inkscape
+http://www.inkscape.org/</dc:description>
+ <dc:format
+ id="format1581">image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage"
+ id="type1583" />
+ <dc:title
+ id="title1606">ML-Term Icon</dc:title>
+ <dc:date
+ id="date1608">2004-07-14</dc:date>
+ <dc:creator
+ id="creator1610">
+ <cc:Agent
+ id="Agent1611">
+ <dc:title
+ id="title1612">Tobias Kieslich</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:coverage
+ id="coverage1614" />
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/GPL/2.0/"
+ id="license1616" />
+ </cc:Work>
+ <cc:License
+ id="License1624"
+ rdf:about="http://creativecommons.org/licenses/GPL/2.0/">
+ <cc:permits
+ id="permits1625"
+ rdf:resource="http://web.resource.org/cc/Reproduction" />
+ <cc:permits
+ id="permits1626"
+ rdf:resource="http://web.resource.org/cc/Distribution" />
+ <cc:requires
+ id="requires1627"
+ rdf:resource="http://web.resource.org/cc/Notice" />
+ <cc:permits
+ id="permits1628"
+ rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+ <cc:requires
+ id="requires1629"
+ rdf:resource="http://web.resource.org/cc/ShareAlike" />
+ <cc:requires
+ id="requires1630"
+ rdf:resource="http://web.resource.org/cc/SourceCode" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <path
+ sodipodi:nodetypes="cc"
+ id="path2775"
+ d="M 5.8437501,76.625001 L 82.343750,76.625001"
+ style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:9.1875000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" />
+ <path
+ sodipodi:nodetypes="cc"
+ id="path2007"
+ d="M 10.593750,6.8437510 L 77.343750,6.8437510"
+ style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:5.0625000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" />
+ <path
+ sodipodi:nodetypes="cccc"
+ id="path2803"
+ d="M 8.2187499,9.3437490 L 8.2187499,59.593751 L 79.718750,59.593751 L 79.718750,9.3437490"
+ style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:5.0625000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" />
+ <path
+ sodipodi:nodetypes="cc"
+ id="path2807"
+ d="M 29.750001,67.218750 L 58.125000,67.218750"
+ style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:14.937500;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" />
+ <path
+ sodipodi:nodetypes="cc"
+ id="path2953"
+ d="M 22.468750,14.718749 L 22.468750,52.468750"
+ style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#3f0000;stroke-width:5.0625000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" />
+ <path
+ sodipodi:nodetypes="cc"
+ id="path2955"
+ d="M 27.468750,14.718749 L 27.468750,52.468750"
+ style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#ff1500;stroke-width:5.0625000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" />
+ <path
+ sodipodi:nodetypes="cc"
+ id="path2957"
+ d="M 41.593750,14.718749 L 41.593750,52.468750"
+ style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#0b2f00;stroke-width:5.0625000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" />
+ <path
+ sodipodi:nodetypes="cc"
+ id="path2959"
+ d="M 46.593750,14.718749 L 46.593750,52.468750"
+ style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#08ce00;stroke-width:5.0625000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" />
+ <path
+ sodipodi:nodetypes="cc"
+ id="path2961"
+ d="M 60.718750,14.718749 L 60.718750,52.468750"
+ style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#00004e;stroke-width:5.0625000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" />
+ <path
+ sodipodi:nodetypes="cc"
+ id="path2963"
+ d="M 65.718750,14.718749 L 65.718750,52.468750"
+ style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#0072ff;stroke-width:5.0625000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" />
+</svg>
diff --git a/extra/mono-addins/PKGBUILD b/extra/mono-addins/PKGBUILD
new file mode 100644
index 000000000..5c8181a91
--- /dev/null
+++ b/extra/mono-addins/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 84508 2010-06-30 16:42:46Z daniel $
+# Maintainer: Daniel Isenmann <daniel@archlinux.org>
+# Contributor: tardo <tardo@nagi-fanboi.net>
+
+pkgname=mono-addins
+pkgver=0.5
+pkgrel=1
+pkgdesc="A generic framework for creating extensible applications and for creating libraries which extend those applications"
+arch=('i686' 'x86_64')
+url="http://www.mono-project.com/Mono.Addins"
+license=('custom:MIT')
+depends=('gtk-sharp-2>=2.12.8' 'mono>=2.6.4')
+makedepends=('pkgconfig')
+source=(http://ftp.novell.com/pub/mono/sources/${pkgname}/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('22c8dd470caed090b3c77c9423e5b3c6')
+
+build() {
+ export MONO_SHARED_DIR="${srcdir}/.wabi"
+ mkdir -p "${MONO_SHARED_DIR}"
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ ./configure --prefix=/usr --enable-gui || return 1
+ make || return 1
+ make GACUTIL="/usr/bin/gacutil -root ${pkgdir}/usr/lib" DESTDIR=${pkgdir} install || return 1
+
+ install -m755 -d ${pkgdir}/usr/share/licenses/${pkgname}
+ install -m644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/ || return 1
+}
diff --git a/extra/mono-basic/PKGBUILD b/extra/mono-basic/PKGBUILD
new file mode 100644
index 000000000..0ffd93c05
--- /dev/null
+++ b/extra/mono-basic/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 111509 2011-02-27 11:33:57Z daniel $
+# Maintainer: Daniel Isenmann <daniel@archlinux.org>
+
+pkgname=mono-basic
+pkgver=2.10
+pkgrel=1
+pkgdesc="Mono Visual Basic.NET compiler"
+arch=(i686 x86_64)
+license=('GPL')
+url="http://www.mono-project.com/"
+depends=('mono>=2.10.1')
+makedepends=('pkgconfig')
+source=(http://ftp.novell.com/pub/mono/sources/${pkgname}/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('b459890e5447419ab1a5ea43d9b8afe8')
+
+build() {
+ # get rid of that .wapi errors; thanks to brice
+ export MONO_SHARED_DIR=${startdir}/src/weird
+ mkdir -p "${MONO_SHARED_DIR}"
+ # build mono
+ cd ${startdir}/src/${pkgname}-${pkgver}
+ ./configure --prefix=/usr
+ sed -i 's/\/usr\/bin\/install/\/bin\/install/g' man/Makefile || return 1
+ make || return 1
+ make DESTDIR=${startdir}/pkg install
+}
+
+
diff --git a/extra/mono-debugger/PKGBUILD b/extra/mono-debugger/PKGBUILD
new file mode 100644
index 000000000..b9ba3b347
--- /dev/null
+++ b/extra/mono-debugger/PKGBUILD
@@ -0,0 +1,28 @@
+# Maintainer: Daniel Isenmann <daniel@archlinux.org>
+
+pkgname=mono-debugger
+pkgver=2.10
+pkgrel=1
+pkgdesc="The Mono Debugger"
+arch=(i686 x86_64)
+license=('GPL')
+url="http://www.mono-project.com/"
+depends=('mono>=2.10.1')
+makedepends=('pkgconfig')
+source=(http://ftp.novell.com/pub/mono/sources/${pkgname}/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('02ee485f2aae279f2fa3a7051c7d580e')
+
+build() {
+ # get rid of that .wapi errors; thanks to brice
+ export MONO_SHARED_DIR=${srcdir}/weird
+ mkdir -p "${MONO_SHARED_DIR}"
+ # build mono debugger
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr
+ make || return 1
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/mono-tools/PKGBUILD b/extra/mono-tools/PKGBUILD
new file mode 100644
index 000000000..fef384dfd
--- /dev/null
+++ b/extra/mono-tools/PKGBUILD
@@ -0,0 +1,38 @@
+# $Id: PKGBUILD 111524 2011-02-27 11:44:42Z daniel $
+# Maintainer: Daniel Isenmann <daniel@archlinux.org>
+# Contributor: Brice Carpentier <brice@dlfp.org>
+
+# The mono-tool package now calls make-search-index by post_install().
+# Whenever a package is installed which places doc-sources into:
+# /usr/lib/monodoc/sources it should call --make-search-index with
+# post_install() and with post remove. mond-tools itself deletes the index
+# file pre_remove(), so pacman finds the directory empty an removes it
+# properly.
+
+pkgname=mono-tools
+pkgver=2.10
+pkgrel=1
+pkgdesc="collection of testing and development tools for use with mono (including monodoc browser)"
+arch=(i686 x86_64)
+license=('GPL')
+url="http://www.mono-project.com/"
+depends=('mono>=2.10.1' 'desktop-file-utils' 'gnome-desktop-sharp>=2.26.0' 'gluezilla')
+makedepends=('gecko-sharp-2.0>=0.13')
+install=$pkgname.install
+source=(http://ftp.novell.com/pub/mono/sources/$pkgname/$pkgname-$pkgver.tar.bz2)
+md5sums=('da178df2c119c696c08c09dc9eb01994')
+
+build() {
+ # get rid of that .wapi errors; thanks to brice
+ export MONO_SHARED_DIR="${startdir}/src/weird"
+ mkdir -p "${MONO_SHARED_DIR}"
+
+ cd ${startdir}/src/${pkgname}-${pkgver}
+ aclocal || return 1
+ autoconf || return 1
+ automake || return 1
+ #sed -i 's:^Exec=.*$:Exec=/usr/bin/monodoc:' docbrowser/monodoc.desktop.in
+ ./configure --prefix=/usr || return 1
+ make || return 1
+ make GACUTIL="/usr/bin/gacutil /root ${startdir}/pkg/usr/lib" DESTDIR=${startdir}/pkg install || return 1
+}
diff --git a/extra/mono-tools/gnome-sharp-2.20.patch b/extra/mono-tools/gnome-sharp-2.20.patch
new file mode 100644
index 000000000..d4629d52d
--- /dev/null
+++ b/extra/mono-tools/gnome-sharp-2.20.patch
@@ -0,0 +1,11 @@
+--- configure.in.orig 2008-03-24 14:36:16.000000000 +0000
++++ configure.in 2008-03-24 14:36:24.000000000 +0000
+@@ -37,7 +37,7 @@
+ AC_SUBST(MONODOC_LIBS)
+
+
+-PKG_CHECK_MODULES(GTK_SHARP, gtk-sharp-2.0 glade-sharp-2.0 gconf-sharp-2.0)
++PKG_CHECK_MODULES(GTK_SHARP, gtk-sharp-2.0 glade-sharp-2.0 gconf-sharp-2.0 gnome-sharp-2.0)
+ #PKG_CHECK_MODULES(GTK_SHARP, gtk-sharp glade-sharp gconf-sharp)
+ AC_SUBST(GTK_SHARP_LIBS)
+
diff --git a/extra/mono-tools/gunit.patch b/extra/mono-tools/gunit.patch
new file mode 100644
index 000000000..881bf248b
--- /dev/null
+++ b/extra/mono-tools/gunit.patch
@@ -0,0 +1,11 @@
+--- gnunit/src/main.cs 2006-10-04 09:13:30.000000000 +0200
++++ gnunit/src/main.cs.patched 2006-11-23 09:10:21.000000000 +0100
+@@ -563,7 +563,7 @@
+ }
+
+ // Window event handlers
+- void OnWindowDelete (object sender, EventArgs args)
++ void OnWindowDelete (object sender, Gtk.DeleteEventArgs args)
+ {
+ OnQuitActivate (sender, args);
+ }
diff --git a/extra/mono-tools/mono-tools.install b/extra/mono-tools/mono-tools.install
new file mode 100644
index 000000000..03f6f2f7e
--- /dev/null
+++ b/extra/mono-tools/mono-tools.install
@@ -0,0 +1,30 @@
+post_install() {
+ # diable for a while maybe we can implement something in pacman to make it faster
+ #echo "creating index ... this could take a up to several minutes ..."
+ #monodoc --make-search-index > /dev/null 2>&1
+ echo "update desktop mime database..."
+ update-desktop-database -q
+}
+
+
+pre_upgrade() {
+ echo "removing index..."
+ rm -f /opt/mono/lib/monodoc/monodoc.index
+ rm -rf /opt/mono/lib/monodoc/search_index
+}
+
+# arg 1: the new package version
+# arg 2: the old package version
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ echo "removing index..."
+ rm -f /usr/lib/monodoc/monodoc.index
+ rm -rf /usr/lib/monodoc/search_index
+ echo "update desktop mime database..."
+ update-desktop-database -q
+}
+
+# vim: ft=sh
diff --git a/extra/mono-zeroconf/PKGBUILD b/extra/mono-zeroconf/PKGBUILD
new file mode 100644
index 000000000..6b0728b3f
--- /dev/null
+++ b/extra/mono-zeroconf/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 94562 2010-10-08 11:54:41Z ibiru $
+# Maintainer: Hugo Doria <hugo@archlinux.org>
+
+pkgname=mono-zeroconf
+pkgver=0.9.0
+pkgrel=2
+pkgdesc="A cross platform Zero Configuration Networking library for Mono and .NET."
+url="http://www.mono-project.com/Mono.Zeroconf"
+license=('GPL')
+arch=('i686' 'x86_64')
+depends=('mono>=2.6' 'avahi')
+options=('!makeflags')
+source=(http://download.banshee-project.org/mono-zeroconf/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('cb25d50898442a7766c324dcb52ef9bf')
+
+
+build() {
+ export MONO_SHARED_DIR=${srcdir}/.wabi
+ mkdir -p "${MONO_SHARED_DIR}"
+
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ ./configure --prefix=/usr --disable-docs --disable-mdnsresponder
+ make hicolordir=/usr/share/icons/hicolor
+ make hicolordir=/usr/share/icons/hicolor \
+ GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 \
+ DESTDIR=${pkgdir} install
+ rm -rf "${MONO_SHARED_DIR}"
+}
diff --git a/extra/mono/PKGBUILD b/extra/mono/PKGBUILD
new file mode 100644
index 000000000..fd54cc79f
--- /dev/null
+++ b/extra/mono/PKGBUILD
@@ -0,0 +1,53 @@
+# $Id: PKGBUILD 112872 2011-03-07 12:41:38Z daniel $
+# Maintainer: Daniel Isenmann <daniel@archlinux.org>
+# Contributor: Brice Carpentier <brice@dlfp.org>
+
+pkgname=mono
+pkgver=2.10.1
+pkgrel=2
+pkgdesc="Free implementation of the .NET platform including runtime and compiler"
+arch=(i686 x86_64)
+license=('GPL' 'LGPL2' 'MPL' 'custom:MITX11')
+url="http://www.mono-project.com/"
+depends=('zlib' 'libgdiplus>=2.10' 'sh')
+makedepends=('pkgconfig')
+options=('!libtool' '!makeflags')
+provides=('monodoc')
+conflicts=('monodoc')
+source=(http://ftp.novell.com/pub/mono/sources/${pkgname}/${pkgname}-${pkgver}.tar.bz2
+ mono.rc.d)
+md5sums=('ae8d1875447527599e68dd6c1d82bc11'
+ '8315e46c6a6e9625502521fc0ad1a322')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ # build mono
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --with-libgdiplus=installed
+ make || return 1
+
+ # build jay
+ cd ${srcdir}/${pkgname}-${pkgver}/mcs/jay
+ make || return 1
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install || return 1
+
+ # install jay
+ cd ${srcdir}/${pkgname}-${pkgver}/mcs/jay
+ make DESTDIR=${pkgdir} prefix=/usr INSTALL=../../install-sh install
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ # install daemons and pathes
+ mkdir -p ${pkgdir}/etc/rc.d
+ install -m755 ${srcdir}/mono.rc.d ${pkgdir}/etc/rc.d/mono
+
+ #install license
+ mkdir -p ${pkgdir}/usr/share/licenses/${pkgname}
+ install -m644 mcs/MIT.X11 ${pkgdir}/usr/share/licenses/${pkgname}/
+
+ #fix .pc file to be able to request mono on what it depends, fixes #go-oo build
+ sed -i -e "s:#Requires:Requires:" ${pkgdir}/usr/lib/pkgconfig/mono.pc
+}
diff --git a/extra/mono/bug434892.patch b/extra/mono/bug434892.patch
new file mode 100644
index 000000000..d4f46f68c
--- /dev/null
+++ b/extra/mono/bug434892.patch
@@ -0,0 +1,11 @@
+--- trunk/mcs/class/System.Web.Services/System.Web.Services.Description/BasicProfileChecker.cs 2008/07/01 20:17:46 107006
++++ trunk/mcs/class/System.Web.Services/System.Web.Services.Description/BasicProfileChecker.cs 2008/10/28 09:32:46 117243
+@@ -177,7 +177,7 @@
+ foreach (OperationMessage om in op.Messages) {
+ Message msg = ctx.Services.GetMessage (om.Message);
+ foreach (MessagePart part in msg.Parts)
+- parts.Add (part,part);
++ parts [part] = part; // do not use Add() - there could be the same MessagePart instance.
+ }
+ }
+
diff --git a/extra/mono/mini_amd64.patch b/extra/mono/mini_amd64.patch
new file mode 100644
index 000000000..f8685c337
--- /dev/null
+++ b/extra/mono/mini_amd64.patch
@@ -0,0 +1,13 @@
+--- mono/mini/mini-amd64.c 2009-03-19 21:08:18 UTC (rev 129824)
++++ mono/mini/mini-amd64.c 2009-03-19 21:09:53 UTC (rev 129825)
+@@ -1009,7 +1009,7 @@
+ locals_size += mono_type_size (ins->inst_vtype, &ialign);
+ }
+
+- if ((cfg->num_varinfo > 10000) || (locals_size >= (1 << 15))) {
++ if ((cfg->num_varinfo > 5000) || (locals_size >= (1 << 15)) || (header->code_size > 110000)) {
+ /* Avoid hitting the stack_alloc_size < (1 << 16) assertion in emit_epilog () */
+ cfg->arch.omit_fp = FALSE;
+ }
+
+
diff --git a/extra/mono/mono.rc.d b/extra/mono/mono.rc.d
new file mode 100644
index 000000000..548cc2d7b
--- /dev/null
+++ b/extra/mono/mono.rc.d
@@ -0,0 +1,35 @@
+#!/bin/bash
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+case "$1" in
+ start)
+ stat_busy "Registering .NET IL binaries with mono"
+ if [ ! -d /proc/sys/fs/binfmt_misc ]; then
+ stat_die "You need support for \"misc binaries\" in your kernel!"
+ fi
+ mount | grep -q binfmt_misc
+ if [ $? != 0 ]; then
+ mount -t binfmt_misc binfmt_misc /proc/sys/fs/binfmt_misc
+ if [ $? != 0 ]; then
+ stat_die
+ fi
+ fi
+ echo ':CLR:M::MZ::/usr/bin/mono:' > /proc/sys/fs/binfmt_misc/register
+ stat_done
+ ;;
+ stop)
+
+ stat_busy "Unregistering .NET IL binaries"
+ if [ -f /proc/sys/fs/binfmt_misc/CLR ]; then
+ echo '-1' > /proc/sys/fs/binfmt_misc/CLR
+ fi
+ stat_done
+ ;;
+ restart)
+ $0 stop
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
diff --git a/extra/monodevelop-debugger-gdb/PKGBUILD b/extra/monodevelop-debugger-gdb/PKGBUILD
new file mode 100644
index 000000000..a7c6daf1b
--- /dev/null
+++ b/extra/monodevelop-debugger-gdb/PKGBUILD
@@ -0,0 +1,25 @@
+# Maintainer: Daniel Isenmann <daniel@archlinux.org>
+
+pkgname=monodevelop-debugger-gdb
+pkgver=2.4
+pkgrel=1
+pkgdesc="Mono Debugger support"
+arch=('i686' 'x86_64')
+url="http://monodevelop.com"
+license=('GPL')
+depends=('monodevelop>=2.4' 'gdb')
+makedepends=('mono')
+source=(http://ftp.novell.com/pub/mono/sources/$pkgname/$pkgname-$pkgver.tar.bz2)
+md5sums=('f5bf8cd4dfdffac928329d98cd56985b')
+
+build() {
+ export MONO_SHARED_DIR="${srcdir}/.wabi"
+ mkdir -p "${MONO_SHARED_DIR}"
+
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ ./configure --prefix=/usr
+ make || return 1
+ make DESTDIR="${pkgdir}" install
+}
+
diff --git a/extra/monodevelop-debugger-mdb/PKGBUILD b/extra/monodevelop-debugger-mdb/PKGBUILD
new file mode 100644
index 000000000..43a7140c9
--- /dev/null
+++ b/extra/monodevelop-debugger-mdb/PKGBUILD
@@ -0,0 +1,30 @@
+# Maintainer: Daniel Isenmann <daniel@archlinux.org>
+# Contributor: Artyom Smirnov <smirnoffjr@gmail.com>
+
+pkgname=monodevelop-debugger-mdb
+pkgver=2.4
+pkgrel=1
+pkgdesc="Mono Debugger support"
+arch=('i686' 'x86_64')
+url="http://monodevelop.com"
+license=('GPL')
+depends=('monodevelop' 'mono-debugger>=2.6.3')
+makedepends=('mono>=2.6.3')
+source=(http://ftp.novell.com/pub/mono/sources/$pkgname/$pkgname-$pkgver.tar.bz2
+ support_mdb_2.4.2.patch)
+
+build() {
+ export MONO_SHARED_DIR="${srcdir}/.wabi"
+ mkdir -p "${MONO_SHARED_DIR}"
+
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ #patch -p1 <"${srcdir}/support_mdb_2.4.2.patch" || return 1
+
+ ./configure --prefix=/usr
+ make || return 1
+ make DESTDIR="${pkgdir}" install
+}
+
+md5sums=('b2a51036d55fef42f391adf23e6c5c2c'
+ '95a4f34728950af4a1040761435a4dbf')
diff --git a/extra/monodevelop-debugger-mdb/support_mdb_2.4.2.patch b/extra/monodevelop-debugger-mdb/support_mdb_2.4.2.patch
new file mode 100644
index 000000000..164aa8071
--- /dev/null
+++ b/extra/monodevelop-debugger-mdb/support_mdb_2.4.2.patch
@@ -0,0 +1,444 @@
+
+Index: monodevelop-debugger-mdb/Mono.Debugging.Backend.Mdb/IDebuggerServer.cs
+===================================================================
+--- monodevelop-debugger-mdb.orig/Mono.Debugging.Backend.Mdb/IDebuggerServer.cs 2009-07-01 09:23:09.000000000 +0100
++++ monodevelop-debugger-mdb/Mono.Debugging.Backend.Mdb/IDebuggerServer.cs 2009-07-01 09:25:21.000000000 +0100
+@@ -32,6 +32,8 @@
+ {
+ public interface IDebuggerServer
+ {
++ string InitializeMdb (string mdbVersion);
++
+ void Run (DebuggerStartInfo startInfo);
+
+ void Stop ();
+Index: monodevelop-debugger-mdb/Mono.Debugging.Backend.Mdb/MonoDebuggerSession.cs
+===================================================================
+--- monodevelop-debugger-mdb.orig/Mono.Debugging.Backend.Mdb/MonoDebuggerSession.cs 2009-07-01 09:23:18.000000000 +0100
++++ monodevelop-debugger-mdb/Mono.Debugging.Backend.Mdb/MonoDebuggerSession.cs 2009-07-01 09:25:21.000000000 +0100
+@@ -37,11 +37,13 @@
+ public class MonoDebuggerSession: DebuggerSession
+ {
+ DebuggerController controller;
++ static string detectedMdbVersion;
+
+ public void StartDebugger ()
+ {
+ controller = new DebuggerController (this, Frontend);
+ controller.StartDebugger ();
++ InitMdbVersion ();
+ }
+
+ public override void Dispose ()
+@@ -54,6 +56,12 @@
+ {
+ controller.DebuggerServer.Run (startInfo);
+ }
++
++ void InitMdbVersion ()
++ {
++ // Cache detected mdb versions, so version detection is done only once
++ detectedMdbVersion = controller.DebuggerServer.InitializeMdb (detectedMdbVersion);
++ }
+
+ protected override void OnAttachToProcess (int processId)
+ {
+Index: monodevelop-debugger-mdb/Mono.Debugging.Server.Mdb/DebuggerServer.cs
+===================================================================
+--- monodevelop-debugger-mdb.orig/Mono.Debugging.Server.Mdb/DebuggerServer.cs 2009-07-01 09:24:51.000000000 +0100
++++ monodevelop-debugger-mdb/Mono.Debugging.Server.Mdb/DebuggerServer.cs 2009-07-01 09:25:21.000000000 +0100
+@@ -39,6 +39,7 @@
+ Dictionary<int, ST.WaitCallback> breakUpdates = new Dictionary<int,ST.WaitCallback> ();
+ bool breakUpdateEventsQueued;
+
++ MdbAdaptor mdbAdaptor;
+ AsyncEvaluationTracker asyncEvaluationTracker;
+ RuntimeInvokeManager invokeManager;
+
+@@ -51,6 +52,7 @@
+ public DebuggerServer (IDebuggerController dc)
+ {
+ this.controller = dc;
++
+ MarshalByRefObject mbr = (MarshalByRefObject)controller;
+ ILease lease = mbr.GetLifetimeService() as ILease;
+ lease.Register(this);
+@@ -79,8 +81,18 @@
+ }
+ }
+
++ public MdbAdaptor MdbAdaptor {
++ get { return mdbAdaptor; }
++ }
++
+ #region IDebugger Members
+
++ public string InitializeMdb (string mdbVersion)
++ {
++ mdbAdaptor = MdbAdaptorFactory.CreateAdaptor (mdbVersion);
++ return mdbAdaptor.MdbVersion;
++ }
++
+ public void Run (DL.DebuggerStartInfo startInfo)
+ {
+ try {
+@@ -91,6 +103,7 @@
+
+ DebuggerConfiguration config = new DebuggerConfiguration ();
+ config.LoadConfiguration ();
++ mdbAdaptor.InitializeConfiguration (config);
+ debugger = new MD.Debugger (config);
+
+ debugger.ModuleLoadedEvent += OnModuleLoadedEvent;
+Index: monodevelop-debugger-mdb/Mono.Debugging.Server.Mdb/Makefile
+===================================================================
+--- monodevelop-debugger-mdb.orig/Mono.Debugging.Server.Mdb/Makefile 2009-07-01 09:24:35.000000000 +0100
++++ monodevelop-debugger-mdb/Mono.Debugging.Server.Mdb/Makefile 2009-07-01 09:25:21.000000000 +0100
+@@ -59,6 +59,8 @@
+ ICollectionAdaptor.cs \
+ IndexerValueReference.cs \
+ LiteralValueReference.cs \
++ MdbAdaptor.cs \
++ MdbAdaptorFactory.cs \
+ NamespaceValueReference.cs \
+ NRefactoryEvaluator.cs \
+ NullValueReference.cs \
+@@ -77,7 +79,9 @@
+
+ DATA_FILES =
+
+-RESOURCES =
++RESOURCES = \
++ MdbAdaptor-2-0.cs \
++ MdbAdaptor-2-4-2.cs
+
+ EXTRAS = \
+ ChangeLog
+Index: monodevelop-debugger-mdb/Mono.Debugging.Server.Mdb/MdbAdaptor-2-0.cs
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ monodevelop-debugger-mdb/Mono.Debugging.Server.Mdb/MdbAdaptor-2-0.cs 2009-07-01 09:25:21.000000000 +0100
+@@ -0,0 +1,40 @@
++//
++// MdbAdaptor_2_0.cs
++//
++// Author:
++// Lluis Sanchez Gual <lluis@novell.com>
++//
++// Copyright (c) 2009 Novell, Inc (http://www.novell.com)
++//
++// Permission is hereby granted, free of charge, to any person obtaining a copy
++// of this software and associated documentation files (the "Software"), to deal
++// in the Software without restriction, including without limitation the rights
++// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
++// copies of the Software, and to permit persons to whom the Software is
++// furnished to do so, subject to the following conditions:
++//
++// The above copyright notice and this permission notice shall be included in
++// all copies or substantial portions of the Software.
++//
++// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
++// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
++// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
++// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
++// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
++// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
++// THE SOFTWARE.
++
++using System;
++
++namespace DebuggerServer
++{
++ public class MdbAdaptor_2_0: MdbAdaptor
++ {
++ public override void AbortThread (Mono.Debugger.Thread thread, Mono.Debugger.RuntimeInvokeResult result)
++ {
++ result.Abort ();
++ result.CompletedEvent.WaitOne ();
++ thread.AbortInvocation ();
++ }
++ }
++}
+Index: monodevelop-debugger-mdb/Mono.Debugging.Server.Mdb/MdbAdaptor-2-4-2.cs
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ monodevelop-debugger-mdb/Mono.Debugging.Server.Mdb/MdbAdaptor-2-4-2.cs 2009-07-01 09:25:21.000000000 +0100
+@@ -0,0 +1,51 @@
++//
++// MdbAdaptor22.cs
++//
++// Author:
++// Lluis Sanchez Gual <lluis@novell.com>
++//
++// Copyright (c) 2009 Novell, Inc (http://www.novell.com)
++//
++// Permission is hereby granted, free of charge, to any person obtaining a copy
++// of this software and associated documentation files (the "Software"), to deal
++// in the Software without restriction, including without limitation the rights
++// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
++// copies of the Software, and to permit persons to whom the Software is
++// furnished to do so, subject to the following conditions:
++//
++// The above copyright notice and this permission notice shall be included in
++// all copies or substantial portions of the Software.
++//
++// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
++// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
++// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
++// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
++// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
++// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
++// THE SOFTWARE.
++
++using System;
++using Mono.Debugger;
++
++namespace DebuggerServer
++{
++ public class MdbAdaptor_2_4_2: MdbAdaptor
++ {
++ public override void SetupXsp (DebuggerConfiguration config)
++ {
++ config.SetupXSP ();
++ config.StopOnManagedSignals = true;
++ }
++
++ public override void InitializeConfiguration (Mono.Debugger.DebuggerConfiguration config)
++ {
++ base.InitializeConfiguration (config);
++ config.RedirectOutput = true;
++ }
++
++ public override void AbortThread (Mono.Debugger.Thread thread, Mono.Debugger.RuntimeInvokeResult result)
++ {
++ result.Abort ();
++ }
++ }
++}
+Index: monodevelop-debugger-mdb/Mono.Debugging.Server.Mdb/MdbAdaptor.cs
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ monodevelop-debugger-mdb/Mono.Debugging.Server.Mdb/MdbAdaptor.cs 2009-07-01 09:25:21.000000000 +0100
+@@ -0,0 +1,62 @@
++//
++// MdbAdaptor.cs
++//
++// Author:
++// Lluis Sanchez Gual <lluis@novell.com>
++//
++// Copyright (c) 2009 Novell, Inc (http://www.novell.com)
++//
++// Permission is hereby granted, free of charge, to any person obtaining a copy
++// of this software and associated documentation files (the "Software"), to deal
++// in the Software without restriction, including without limitation the rights
++// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
++// copies of the Software, and to permit persons to whom the Software is
++// furnished to do so, subject to the following conditions:
++//
++// The above copyright notice and this permission notice shall be included in
++// all copies or substantial portions of the Software.
++//
++// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
++// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
++// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
++// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
++// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
++// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
++// THE SOFTWARE.
++
++using System;
++using MDB=Mono.Debugger;
++using Mono.Debugging.Backend.Mdb;
++
++namespace DebuggerServer
++{
++ public abstract class MdbAdaptor
++ {
++ public MdbAdaptor ()
++ {
++ MdbVersion = "2.0";
++ }
++
++ public string MdbVersion { get; internal set; }
++
++ public virtual void SetupXsp (MDB.DebuggerConfiguration config)
++ {
++ ThrowNotSupported ("ASP.NET debugging not supported");
++ }
++
++ public virtual void InitializeBreakpoint (MDB.SourceBreakpoint bp)
++ {
++ }
++
++ public virtual void InitializeConfiguration (MDB.DebuggerConfiguration config)
++ {
++ }
++
++ public abstract void AbortThread (MDB.Thread thread, MDB.RuntimeInvokeResult result);
++
++ public void ThrowNotSupported (string feature)
++ {
++ throw new InvalidOperationException (feature + ". You need to install a more recent Mono Debugger version.");
++ }
++ }
++}
+Index: monodevelop-debugger-mdb/Mono.Debugging.Server.Mdb/MdbAdaptorFactory.cs
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ monodevelop-debugger-mdb/Mono.Debugging.Server.Mdb/MdbAdaptorFactory.cs 2009-07-01 09:25:21.000000000 +0100
+@@ -0,0 +1,128 @@
++//
++// MdbAdaptorFactory.cs
++//
++// Author:
++// Lluis Sanchez Gual <lluis@novell.com>
++//
++// Copyright (c) 2009 Novell, Inc (http://www.novell.com)
++//
++// Permission is hereby granted, free of charge, to any person obtaining a copy
++// of this software and associated documentation files (the "Software"), to deal
++// in the Software without restriction, including without limitation the rights
++// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
++// copies of the Software, and to permit persons to whom the Software is
++// furnished to do so, subject to the following conditions:
++//
++// The above copyright notice and this permission notice shall be included in
++// all copies or substantial portions of the Software.
++//
++// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
++// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
++// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
++// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
++// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
++// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
++// THE SOFTWARE.
++
++using System;
++using System.Reflection;
++using System.Diagnostics;
++using System.IO;
++
++namespace DebuggerServer
++{
++ public static class MdbAdaptorFactory
++ {
++ // Bump this version number if any change is in MdbAdaptor or subclases
++ const int ApiVersion = 2;
++
++ static readonly string[] supportedVersions = new string[] {"2-4-2", "2-0"};
++
++ public static MdbAdaptor CreateAdaptor (string mdbVersion)
++ {
++ ProcessStartInfo pinfo = new ProcessStartInfo ();
++ pinfo.FileName = "gmcs";
++
++ if (mdbVersion != null) {
++ MdbAdaptor mdb = TryCreateAdaptor (pinfo, mdbVersion);
++ if (mdb == null)
++ throw new InvalidOperationException ("Unsupported MDB version");
++ return mdb;
++ }
++
++ foreach (string v in supportedVersions) {
++ MdbAdaptor mdb = TryCreateAdaptor (pinfo, v);
++ if (mdb != null)
++ return mdb;
++ }
++ throw new InvalidOperationException ("Unsupported MDB version");
++ }
++
++ static MdbAdaptor TryCreateAdaptor (ProcessStartInfo pinfo, string versions)
++ {
++ string[] versionsArray = versions.Split ('|');
++ string version = versionsArray [0];
++
++ string tmpPath = Path.GetTempPath ();
++ tmpPath = Path.Combine (tmpPath, "monodevelop-debugger-mdb");
++ if (!Directory.Exists (tmpPath))
++ Directory.CreateDirectory (tmpPath);
++
++ string outFile = Path.Combine (tmpPath, "adaptor-" + ApiVersion + "--" + version + ".dll");
++
++ string[] refAssemblies = new string [] {
++ typeof(MdbAdaptorFactory).Assembly.Location,
++ typeof(Mono.Debugger.Debugger).Assembly.Location,
++ typeof(Mono.Debugging.Client.DebuggerSession).Assembly.Location,
++ typeof(Mono.Debugging.Backend.Mdb.IDebuggerServer).Assembly.Location
++ };
++
++ DateTime refsTime = DateTime.MinValue;
++ foreach (string rasm in refAssemblies) {
++ DateTime t = File.GetLastWriteTime (rasm);
++ if (t > refsTime)
++ refsTime = t;
++ }
++
++ if (!File.Exists (outFile) || File.GetLastWriteTime (outFile) < refsTime) {
++ string args = "/t:library ";
++ args += "\"/out:" + outFile + "\" ";
++ foreach (string rasm in refAssemblies)
++ args += "\"/r:" + rasm + "\" ";
++
++ // Write the source code for all required classes
++ foreach (string ver in versionsArray) {
++ Stream s = typeof(MdbAdaptorFactory).Assembly.GetManifestResourceStream ("MdbAdaptor-" + ver + ".cs");
++ StreamReader sr = new StreamReader (s);
++ string txt = sr.ReadToEnd ();
++ sr.Close ();
++ s.Close ();
++
++ string csfile = Path.Combine (tmpPath, "adaptor-" + ver + ".cs");
++ File.WriteAllText (csfile, txt);
++ args += "\"" + csfile + "\" ";
++ }
++
++ pinfo.Arguments = args;
++ Process proc = Process.Start (pinfo);
++ proc.WaitForExit ();
++ if (proc.ExitCode != 0)
++ return null;
++ Console.WriteLine ("Generated: " + outFile);
++ }
++
++ Assembly asm = Assembly.LoadFrom (outFile);
++ Type at = asm.GetType ("DebuggerServer.MdbAdaptor_" + version.Replace ('-','_'));
++ if (at != null) {
++ try {
++ MdbAdaptor a = (MdbAdaptor) Activator.CreateInstance (at);
++ a.MdbVersion = version;
++ return a;
++ } catch {
++ // MDB version not really supported
++ }
++ }
++ return null;
++ }
++ }
++}
+Index: monodevelop-debugger-mdb/Mono.Debugging.Server.Mdb/RuntimeInvokeManager.cs
+===================================================================
+--- monodevelop-debugger-mdb.orig/Mono.Debugging.Server.Mdb/RuntimeInvokeManager.cs 2009-07-01 09:24:00.000000000 +0100
++++ monodevelop-debugger-mdb/Mono.Debugging.Server.Mdb/RuntimeInvokeManager.cs 2009-07-01 09:25:21.000000000 +0100
+@@ -52,9 +52,7 @@
+ lock (operationsToCancel) {
+ if (!aborted) {
+ aborted = true;
+- res.Abort ();
+- res.CompletedEvent.WaitOne ();
+- ctx.Thread.AbortInvocation ();
++ Server.Instance.MdbAdaptor.AbortThread (ctx.Thread, res);
+ WaitToStop (ctx.Thread);
+ }
+ }
+@@ -73,9 +71,7 @@
+ }
+ else
+ aborted = true;
+- res.Abort ();
+- res.CompletedEvent.WaitOne ();
+- ctx.Thread.AbortInvocation ();
++ Server.Instance.MdbAdaptor.AbortThread (ctx.Thread, res);
+ WaitToStop (ctx.Thread);
+ throw new TimeOutException ();
+ }
+
diff --git a/extra/monodevelop/PKGBUILD b/extra/monodevelop/PKGBUILD
new file mode 100644
index 000000000..423792e15
--- /dev/null
+++ b/extra/monodevelop/PKGBUILD
@@ -0,0 +1,32 @@
+# Maintainer: Daniel Isenmann <daniel@archlinux.org>
+# Contributor: Timm Preetz <timm@preetz.us>
+# Contributor: Giovanni Scafora <giovanni@archlinux.org>
+
+pkgname=monodevelop
+pkgver=2.4.2
+pkgrel=1
+pkgdesc="An IDE primarily designed for C# and other .NET languages"
+arch=('i686' 'x86_64')
+url="http://www.monodevelop.org"
+license=('GPL')
+depends=('mono>=2.8.2' 'mono-addins>=0.5' 'gnome-sharp' 'gecko-sharp-2.0>=0.10' 'gnome-desktop-sharp')
+options=(!makeflags force)
+install=monodevelop.install
+source=(http://ftp.novell.com/pub/mono/sources/${pkgname}/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('05d20deada26a115418cb1b4526b8d15')
+
+build() {
+ export MONO_SHARED_DIR=$srcdir/src/.wabi
+ mkdir -p $MONO_SHARED_DIR
+
+ cd $srcdir/$pkgname-$pkgver
+ ./configure --prefix=/usr --disable-update-mimedb --disable-update-desktopdb
+ make || return 1
+}
+
+package() {
+ cd $srcdir/$pkgname-$pkgver
+ make DESTDIR=$pkgdir install
+ rm -r $MONO_SHARED_DIR
+}
+
diff --git a/extra/monodevelop/monodevelop.install b/extra/monodevelop/monodevelop.install
new file mode 100644
index 000000000..765dfb9bd
--- /dev/null
+++ b/extra/monodevelop/monodevelop.install
@@ -0,0 +1,19 @@
+post_install() {
+ update-mime-database /usr/share/mime 1> /dev/null
+ echo "update desktop mime database..."
+ update-desktop-database -q
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ /bin/true
+}
+
+post_remove() {
+ update-mime-database /usr/share/mime 1> /dev/null
+ echo "update desktop mime database..."
+ update-desktop-database -q
+}
diff --git a/extra/monotone/PKGBUILD b/extra/monotone/PKGBUILD
new file mode 100644
index 000000000..4cb7e86cc
--- /dev/null
+++ b/extra/monotone/PKGBUILD
@@ -0,0 +1,33 @@
+# $Id: PKGBUILD 98524 2010-11-10 22:12:25Z angvp $
+# Maintainer: Angel 'angvp' Velasquez <angvp@archlinux.org>
+# Contributor: Douglas Soares de Andrade <douglas@archlinux.org>
+# Contributor: Jeff 'codemac' Mickey <jeff@archlinux.org>
+# Contributor: Dan McGee <dpmcgee@gmail.com>
+pkgname=monotone
+pkgver=0.99.1
+pkgrel=1
+pkgdesc="A modern distributed version control system, like hg, darcs, or git"
+arch=('i686' 'x86_64')
+url="http://www.monotone.ca"
+license=('GPL')
+depends=('botan' 'pcre' 'lua' 'sqlite3' 'libidn' 'zlib')
+makedepends=('boost')
+install=${pkgname}.install
+source=(http://www.monotone.ca/downloads/${pkgver}/${pkgname}-${pkgver}.tar.gz)
+md5sums=('61c586f340fa3ca2b0974f6b5c455b0e')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+
+ install -Dm644 contrib/monotone.bash_completion \
+ "${pkgdir}/etc/bash_completion.d/monotone"
+ install -Dm644 contrib/monotone.zsh_completion \
+ "${pkgdir}/usr/share/zsh/site-functions/monotone"
+}
diff --git a/extra/monotone/monotone.install b/extra/monotone/monotone.install
new file mode 100644
index 000000000..6098920e0
--- /dev/null
+++ b/extra/monotone/monotone.install
@@ -0,0 +1,29 @@
+infodir=/usr/share/info
+filelist=(monotone.info.gz)
+
+post_install() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install $1
+
+# arg 1: the new package version
+# arg 2: the old package version
+ if [ "$(vercmp $2 0.45)" -lt 0 ]; then
+ echo ">>> Your monotone databases will need updating for an internal format"
+ echo ">>> change. Please run the following command on each of your databases"
+ echo ">>> (after remembering to take a backup copy):"
+ echo ">>> $ mtn -d dbname.mtn db migrate"
+ fi
+}
+
+pre_remove() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info --delete $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
diff --git a/extra/most/PKGBUILD b/extra/most/PKGBUILD
new file mode 100644
index 000000000..bf03914bc
--- /dev/null
+++ b/extra/most/PKGBUILD
@@ -0,0 +1,20 @@
+# $Id: PKGBUILD 57012 2009-10-31 08:10:58Z allan $
+# Maintainer: juergen <juergen@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=most
+pkgver=5.0.0a
+pkgrel=2
+pkgdesc="A terminal pager similar to 'more' and 'less'"
+arch=('i686' 'x86_64')
+depends=('slang')
+license=('GPL')
+url="ftp://space.mit.edu/pub/davis/most/"
+source=(ftp://space.mit.edu/pub/davis/$pkgname/$pkgname-$pkgver.tar.gz)
+md5sums=('30f2131b67f61716f6fe1f65205da48b')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ ./configure --prefix=/usr --sysconfdir=/etc || return 1
+ make DESTDIR=$pkgdir install || return 1
+}
diff --git a/extra/most/most-debian.patch b/extra/most/most-debian.patch
new file mode 100644
index 000000000..4387420e8
--- /dev/null
+++ b/extra/most/most-debian.patch
@@ -0,0 +1,1655 @@
+--- most-4.10.2.orig/most.1
++++ most-4.10.2/most.1
+@@ -134,7 +134,7 @@
+ Use this switch when you want to view files
+ containing 8 bit characters.
+ .I most
+-will display the file 16 bytes per line in hexidecimal notation.
++will display the file 16 bytes per line in hexadecimal notation.
+ A typical line looks like:
+ .IP
+ .Ds
+@@ -185,12 +185,13 @@
+ This option is meaningful only when used with the
+ .B \-v
+ option.
++.TP
+ .BI + lineno
+ Start up at
+ .IR lineno .
+ .TP
+-.B +c
+-Make search case sensitive.
++.B -c
++Make searches case sensitive.
+ By default, they are not.
+ .TP
+ .B +d
+@@ -482,7 +483,7 @@
+ descriptors that represent the file name and line number,
+ respectively. For example, if JED is your editor, then set
+ .B MOST_EDITOR
+-to 'jed %s -g %d'.
++to 'jed %s -g %d'. This will only work where the %s preceeds the %d.
+ .TP
+ .B MOST_HELP
+ This variable may be used to specify an alternate help file.
+@@ -496,7 +497,7 @@
+ .I most.rc
+ on other systems.
+ .SH CONFIGURATION FILE SYNTAX
+-When most starts up, it tries to read a system confiuration file and
++When most starts up, it tries to read a system configuration file and
+ then a personal configuration file. These files may be used to
+ specify keybindings and colors.
+ .PP
+--- most-4.10.2.orig/src/buffer.c
++++ most-4.10.2/src/buffer.c
+@@ -44,10 +44,10 @@
+
+ Most_Buffer_Type *Most_Buf;
+
+-int Most_Num_Lines;
++long long Most_Num_Lines;
+
+-unsigned int Most_C_Offset;
+-int Most_C_Line;
++unsigned long long Most_C_Offset;
++long long Most_C_Line;
+
+ static unsigned char *beg_of_line1(void)
+ {
+@@ -61,24 +61,29 @@
+ {
+ if (*pos == '\n')
+ {
+- pos--;
+- while ((pos > Most_Beg)
+- && (*pos != '\n'))
++ pos--; /* Skip back the new-line. */
++ /* This block is UTF-8 safe, because it only scans the
++ buffer for a new-line, and doesn't count
++ characters. */
++ while ((pos > Most_Beg) && (*pos != '\n'))
+ pos--;
+
+- if (*pos != '\n') return pos;
++ if (*pos != '\n') return Most_Beg;
++ /* from here on *pos == '\n' */
+ if (pos + 1 != cpos)
+ return pos + 1;
+ }
+ }
+- else pos--;
++ else
++ pos = SLutf8_bskip_char(Most_Beg, pos);
+
+ if (*pos != '\n')
+ {
+- while ((pos > Most_Beg)
+- && (*pos != '\n'))
++ /* This block is UTF-8 safe. See comment above. */
++ while ((pos > Most_Beg) && (*pos != '\n'))
+ pos--;
+ if (*pos != '\n') return Most_Beg;
++ /* from here on *pos == '\n' */
+ return pos + 1;
+ }
+
+@@ -93,55 +98,6 @@
+ return pos;
+ }
+
+-
+-static unsigned char *forward_columns (unsigned char *b, unsigned char *e, unsigned int num_cols)
+-{
+- unsigned int col = 0;
+-
+- while ((b < e)
+- && (col < num_cols))
+- {
+- unsigned char ch = *b++;
+- if (((ch >= ' ') && (ch < 0x7F))
+- || (ch >= SLsmg_Display_Eight_Bit))
+- {
+- col++;
+- continue;
+- }
+-
+- if ((ch == '\b') || (ch == '\t') || (ch == '\r'))
+- switch (ch)
+- {
+- case '\b':
+- if (Most_V_Opt == 0)
+- {
+- if (col > 0) col--;
+- }
+- else col += 2;
+- break;
+-
+- case '\r':
+- if (Most_V_Opt == 0)
+- col = 0;
+- else
+- col += 2;
+- break;
+-
+- case '\t':
+- if (Most_T_Opt == 0)
+- col = Most_Tab_Width * (col/Most_Tab_Width + 1);
+- else
+- col += 2;
+- break;
+- }
+- else if (ch & 0x80)
+- col += 3;
+- else
+- col += 2;
+- }
+- return b;
+-}
+-
+ /* does not move point */
+ static unsigned char *end_of_line1(void)
+ {
+@@ -164,6 +120,9 @@
+
+ if (*pos != '\n')
+ {
++ /* This block is UTF-8 safe, because it only scans the buffer
++ for a new-line, and doesn't count characters. */
++
+ n = pmax - pos;
+ n2 = n % 8;
+ pmax = pos + (n - 8);
+@@ -215,7 +174,7 @@
+ ncols = SLtt_Screen_Cols-1;
+ while (1)
+ {
+- unsigned char *next_b = forward_columns (b, e, ncols);
++ unsigned char *next_b = most_forward_columns (b, e, ncols, 1);
+ if ((next_b == e) || (next_b == b))
+ break;
+
+@@ -237,11 +196,12 @@
+ return e;
+
+ if (b == NULL) b = most_beg_of_line ();
+- b = forward_columns (b, e, SLtt_Screen_Cols-1);
++ b = most_forward_columns (b, e, SLtt_Screen_Cols-1, 1);
+
+ /* Do not wrap the line if the last character falls on the last column
+ * of the display.
+ */
++ /* FIXME potential bug if dealing with multi-byte char. */
+ if ((b + 1 <= e)
+ && (b + 1 < Most_Eob)
+ && (b[1] == '\n'))
+@@ -250,10 +210,10 @@
+ return b;
+ }
+
+-int most_forward_line(int save)
++long long most_forward_line(long long save)
+ {
+- int m;
+- register int n = save;
++ long long m;
++ register long long n = save;
+ unsigned char *p;
+ unsigned char *pmax;
+
+@@ -346,14 +306,14 @@
+ }
+
+ /* Count lines in the region. A half line counts as 1 */
+-int most_count_lines(unsigned char *beg, unsigned char *end)
++long long most_count_lines(unsigned char *beg, unsigned char *end)
+ {
+- int save_line, n;
++ long long save_line, n;
+ unsigned char *save_beg, *save_eob;
+- unsigned int save_pos;
++ unsigned long long save_pos;
+ int dn = 1000;
+
+- if (Most_B_Opt) return(1 + (int)(end - beg) / 16);
++ if (Most_B_Opt) return(1 + (long long)(end - beg) / 16);
+
+ save_line = Most_C_Line; save_beg = Most_Beg; save_eob = Most_Eob;
+ save_pos = Most_C_Offset;
+@@ -371,9 +331,9 @@
+ return(n);
+ }
+
+-void most_goto_line(int line)
++void most_goto_line(long long line)
+ {
+- int dif_c, dif_b,dif_t;
++ long long dif_c, dif_b,dif_t;
+
+ if (line < 1) line = 1;
+ most_read_to_line(line);
+@@ -420,7 +380,7 @@
+ }
+
+ /* return line the point is on without the final '\n's */
+-int most_extract_line(unsigned char **beg, unsigned char **end)
++long long most_extract_line(unsigned char **beg, unsigned char **end)
+ {
+ *beg = most_beg_of_line();
+ *end = end_of_line (*beg);
+@@ -428,12 +388,12 @@
+ return 0;
+ }
+
+-int most_what_line(unsigned char *pos)
++long long most_what_line(unsigned char *pos)
+ {
+- unsigned int save_pos;
+- int save_line, dir;
+- register int dif_c, dif_b,dif_t;
+- int ret;
++ unsigned long long save_pos;
++ long long save_line, dir;
++ register long long dif_c, dif_b,dif_t;
++ long long ret;
+
+ if (Most_B_Opt)
+ {
+@@ -517,7 +477,7 @@
+ }
+
+ /* given a buffer position, find the line and column */
+-void most_find_row_column(unsigned char *pos, int *r, int *c)
++void most_find_row_column(unsigned char *pos, long long *r, long long *c)
+ {
+ unsigned char *beg;
+ unsigned int save_offset;
+@@ -545,7 +505,10 @@
+ /* Now we have found the line it is on so.... */
+ beg = most_beg_of_line();
+ *c = 1;
+- while (beg++ < pos) *c = *c + 1;
++ if (Most_UTF8_Mode)
++ while ((beg = SLutf8_skip_char(beg, pos)) < pos) *c = *c + 1;
++ else
++ while (beg++ < pos) *c = *c + 1;
+ Most_C_Line = save_line;
+ Most_C_Offset = save_offset;
+ }
+--- most-4.10.2.orig/src/buffer.h
++++ most-4.10.2/src/buffer.h
+@@ -23,12 +23,12 @@
+
+ extern Most_Buffer_Type *Most_Buf;
+ extern unsigned char *Most_Beg, *Most_Eob;
+-extern int Most_Num_Lines;
++extern long long Most_Num_Lines;
+
+ /* Offset of current position from beginning of buffer */
+-extern unsigned int Most_C_Offset;
++extern unsigned long long Most_C_Offset;
+
+-extern int Most_C_Line;
++extern long long Most_C_Line;
+ /*
+ * Current line number. If at the beginning of the buffer, it is 1. If
+ * we are at the last point of the buffer it is the number of lines.
+@@ -37,26 +37,26 @@
+ /* This routine does not move the point */
+ extern unsigned char *most_beg_of_line(void);
+
+-extern int most_forward_line(int);
++extern long long most_forward_line(long long);
+ /* This routine moves the point forward n lines. n can be negative.
+ It returns the number moved. */
+
+-extern void most_goto_line(int);
++extern void most_goto_line(long long);
+ /* Move the point somewhere on the nth line of the buffer returning
+ C_POS */
+
+-extern int most_what_line(unsigned char *);
++extern long long most_what_line(unsigned char *);
+ /* return the line number of position 'argument'. Does not move point */
+
+ /* count the number of lines in the region delimited by beg and end.
+ Counts lines from beg up to end but does not count end.
+ Does not move point. */
+-extern int most_count_lines(unsigned char *, unsigned char *);
+-extern int most_extract_line(unsigned char **, unsigned char **);
++extern long long most_count_lines(unsigned char *, unsigned char *);
++extern long long most_extract_line(unsigned char **, unsigned char **);
+
+ extern Most_Buffer_Type *most_switch_to_buffer(Most_Buffer_Type *);
+ extern Most_Buffer_Type *most_create_buffer(char *);
+-extern void most_find_row_column(unsigned char *, int *, int *);
++extern void most_find_row_column(unsigned char *, long long *, long long *);
+
+ #endif
+
+--- most-4.10.2.orig/src/keym.c
++++ most-4.10.2/src/keym.c
+@@ -228,7 +228,7 @@
+ static void goto_percent_cmd(void)
+ {
+ unsigned char *pos;
+- int n;
++ long long n;
+
+ if (Most_Digit_Arg != (int *) NULL) n = *Most_Digit_Arg;
+ else
+@@ -282,7 +282,7 @@
+
+ static void find_next_cmd(void)
+ {
+- int col, line, n = 1;
++ long long col, line, n = 1;
+ unsigned long ofs;
+
+ if (Most_Digit_Arg != NULL) n = *Most_Digit_Arg;
+@@ -309,7 +309,7 @@
+ #else
+ "Search: ",
+ #endif
+- Most_Search_Str,
++ (char *) Most_Search_Str,
+ MOST_SEARCH_BUF_LEN
+ ) == -1) return;
+ Most_Curs_Offset = Most_C_Offset;
+@@ -325,7 +325,7 @@
+ #else
+ "Search Backwards: ",
+ #endif
+- Most_Search_Str,
++ (char *) Most_Search_Str,
+ MOST_SEARCH_BUF_LEN) == -1) return;
+ find_next_cmd();
+ }
+--- most-4.10.2.orig/src/line.c
++++ most-4.10.2/src/line.c
+@@ -87,8 +87,7 @@
+ while (b < end)
+ {
+ ch = *b++;
+- if (((ch >= ' ') && (ch < 0x7F))
+- || (ch >= SLsmg_Display_Eight_Bit))
++ if (most_isprint(ch))
+ {
+ *s++ = ch;
+ continue;
+@@ -108,103 +107,156 @@
+
+ if (end > Most_Eob) end = Most_Eob;
+
+- sprintf (buf, "0x%08X: ", Most_C_Offset);
++ sprintf (buf, "0x%08llX: ", Most_C_Offset);
+ ascii_format_line (beg, end, buf + 12);
+ SLsmg_write_string (buf);
+ SLsmg_erase_eol ();
+ }
+
+-static int most_analyse_line(unsigned char *begg, unsigned char *endd,
+- char *out, char *attributes)
++int most_isprint(unsigned char ch)
+ {
+- unsigned char *beg, *end;
+- unsigned int min_col, max_col;
+- unsigned int i, i_max;
++ /* Can this be directly replaced with isprint? */
++ return (ch >= ' ' && ch < 0x7F) || ch >= SLsmg_Display_Eight_Bit;
++}
++
++static void most_analyse_line(unsigned char *beg, unsigned char *end,
++ unsigned char *out, char *attributes)
++{
++ unsigned char *pout;
++ char* pattributes;
++
++ /* Holds the number of columns for the current character counting
++ * from the left margin (in contrast to the leftmost visible
++ * column).
++ */
++ unsigned int col;
++
++ /* Holds the number of the column up to which to apply the
++ * current/following formatting. Only meaningful when format_rlim > i.
++ */
++ unsigned int format_rlim;
+
+- beg = begg;
+- end = endd;
+- i = i_max = 0;
+- min_col = Most_Column - 1;
+- max_col = min_col + SLtt_Screen_Cols;
++ beg = most_forward_columns(beg, end, Most_Column - 1, 0);
++ pout = out;
++ pattributes = attributes;
++ col = format_rlim = 0;
+
+ while (beg < end)
+ {
+ char attr = ' ';
+- unsigned char ch;
++ unsigned char ch = *beg++;
+
+- if ('\n' == (ch = *beg++))
++ if ('\n' == ch)
+ break;
+
+ if ((ch == '\r') && (Most_V_Opt == 0))
+ {
+- if (i > i_max) i_max = i;
+- i = 0;
++ if (col > format_rlim) format_rlim = col;
++ col = 0;
+ continue;
+ }
+
+ if ((ch == '\b') && (Most_V_Opt == 0))
+ {
+- if (i > i_max) i_max = i;
+- if (i > 0)
+- i--;
++ if (col > format_rlim) format_rlim = col;
++ if (col > 0)
++ {
++ if (Most_UTF8_Mode)
++ {
++ SLwchar_Type wc;
++ pout = SLutf8_bskip_char(out, pout);
++ if (SLutf8_decode(pout, pout + SLUTF8_MAX_MBLEN, &wc, NULL))
++ {
++ unsigned int char_len = SLwchar_wcwidth(wc);
++ if (char_len > 1)
++ col -= char_len - 1;
++ }
++ }
++ else
++ pout--;
++ pattributes--;
++ col--;
++ }
+ continue;
+ }
+
+- if (i < i_max) /* overstrike */
++ if (col < format_rlim) /* overstrike */
+ {
+ attr = 'b';
+- if ((i >= min_col) && (i < max_col))
++ if (col < SLtt_Screen_Cols)
+ {
+- if (out[i-min_col] == '_')
++ if (*pout == '_')
+ attr = 'u';
+ else if (ch == '_')
+ {
+ attr = 'u';
+- ch = out[i - min_col];
++ ch = *pout;
+ }
+ }
+ if (ch == ' ')
+ {
+- i++;
++ col++;
+ continue;
+ }
+ /* drop */
+ }
+-
+- if ((ch >= ' ') && (ch < 0x7F))
+- {
+- if ((i >= min_col) && (i < max_col))
++
++ if (Most_UTF8_Mode) {
++ unsigned char *prev = --beg;
++ SLwchar_Type wc;
++ unsigned int len;
++
++ if (SLutf8_decode(beg, end, &wc, NULL))
++ {
++ unsigned int char_len = SLwchar_wcwidth(wc);
++ if (char_len > 1)
++ col += char_len - 1;
++ }
++
++ beg = SLutf8_skip_char(beg, end);
++ len = beg - prev;
++
++ if (len > 1) {
++ /* Non-ASCII char, display it. */
++ if (col < SLtt_Screen_Cols)
+ {
+- out[i-min_col] = ch;
+- attributes[i-min_col] = attr;
++ memcpy(pout, prev, len);
++ pout += len;
++ *pattributes++ = attr;
+ }
+- i++;
++ col++;
+ continue;
+- }
+-
+- if (ch >= SLsmg_Display_Eight_Bit)
++ }
++ }
++
++ if (most_isprint(ch))
+ {
+- if ((i >= min_col) && (i < max_col))
++ if (col < SLtt_Screen_Cols)
+ {
+- out[i-min_col] = ch;
+- attributes[i-min_col] = attr;
++ *pout++ = ch;
++ *pattributes++ = attr;
+ }
+- i++;
++ col++;
+ continue;
+ }
+
+ if ((ch == '\t') && (Most_T_Opt == 0) && (Most_Tab_Width))
+ {
+-
+- int nspaces = Most_Tab_Width * (i/Most_Tab_Width + 1) - i;
++ /* Tab expansion must take into consideration the
++ * leftmost visible column. However, variable col holds the
++ * number of columns from the left margin and must be
++ * corrected.
++ */
++ int vis_col = col + Most_Column - 1;
++ int nspaces = Most_Tab_Width - (vis_col % Most_Tab_Width);
+ while (nspaces > 0)
+ {
+- if ((i >= min_col) && (i < max_col))
++ if (col < SLtt_Screen_Cols)
+ {
+- out[i-min_col] = ' ';
+- attributes[i-min_col] = attr;
++ *pout++ = ' ';
++ *pattributes++ = attr;
+ }
+- i++;
++ col++;
+ nspaces--;
+ }
+ continue;
+@@ -212,36 +264,36 @@
+
+ if (ch & 0x80)
+ {
+- if ((i >= min_col) && (i < max_col))
++ if (col < SLtt_Screen_Cols)
+ {
+- out[i-min_col] = '~';
+- attributes[i-min_col] = attr;
++ *pout++ = '~';
++ *pattributes++ = attr;
+ }
+- i++;
++ col++;
+ ch &= 0x7F;
+ /* drop */
+ }
+
+- if ((i >= min_col) && (i < max_col))
++ if (col < SLtt_Screen_Cols)
+ {
+- out[i-min_col] = '^';
+- attributes[i-min_col] = attr;
++ *pout++ = '^';
++ *pattributes++ = attr;
+ }
+- i++;
++ col++;
+
+ if (ch == 0x7F) ch = '?';
+ else ch += '@';
+
+- if ((i >= min_col) && (i < max_col))
++ if (col < SLtt_Screen_Cols)
+ {
+- out[i-min_col] = ch;
+- attributes[i-min_col] = attr;
++ *pout++ = ch;
++ *pattributes++ = attr;
+ }
+- i++;
++ col++;
+ }
+
+- if (i < i_max)
+- i = i_max;
++ if (col < format_rlim)
++ col = format_rlim;
+
+ /* Now add "..." if selective display. To do that, the next line needs to
+ * be dealt with to determine whether or not it will be hidden.
+@@ -249,7 +301,7 @@
+ if (Most_Selective_Display
+ && (Most_W_Opt == 0)
+ && (beg < Most_Eob)
+- && ((i >= min_col) && (i < max_col)))
++ && (col < SLtt_Screen_Cols))
+ {
+ if (*beg == '\n') beg++;
+
+@@ -260,37 +312,29 @@
+ if ((beg >= Most_Eob) || (*beg == '\n')
+ || (most_apparant_distance(beg) >= Most_Selective_Display))
+ {
+- i_max = i + 3;
+- while (i < i_max)
++ /* Add an ellipsis, if they fit on the screen. */
++ int rlimit = col + 3;
++ while (col < rlimit)
+ {
+- if (i < max_col)
++ if (col < SLtt_Screen_Cols)
+ {
+- out[i] = '.';
+- attributes[i] = ' ';
++ *pout++ = '.';
++ *pattributes++ = ' ';
+ }
+- i++;
++ col++;
+ }
+ }
+ }
+-
+- i_max = i;
+
+- if (i < min_col)
+- i = min_col;
+- else if (i >= max_col)
+- i = max_col;
+-
+- i -= min_col;
+-
+- out[i] = 0;
+- attributes[i] = 0;
+- return i_max;
++ *pout = 0;
++ *pattributes = 0;
+ }
+
+-static void output_with_attr (unsigned char *out, unsigned char *attr)
++static void output_with_attr (unsigned char *out, char *attr)
+ {
+- unsigned char at, ch, lat;
++ unsigned char at, lat;
+ unsigned char *p = out;
++ unsigned char *pmax = p + strlen((char *) p);
+
+ if (Most_V_Opt)
+ {
+@@ -299,7 +343,7 @@
+ }
+
+ lat = ' ';
+- while ((ch = *p) != 0)
++ while (p < pmax)
+ {
+ if (lat != *attr)
+ {
+@@ -321,7 +365,7 @@
+ else most_tt_normal_video ();
+ lat = at;
+ }
+- p++;
++ p = SLutf8_skip_char(p, pmax);
+ attr++;
+ }
+
+@@ -340,10 +384,11 @@
+ void most_display_line (void)
+ {
+ unsigned char *beg, *end;
+- unsigned int len;
++#if 0
+ unsigned char dollar;
++#endif
+ static unsigned char *line;
+- static unsigned char *attr;
++ static char *attr;
+ static unsigned int line_len;
+
+ if (Most_B_Opt)
+@@ -357,37 +402,43 @@
+ if (line_len < (unsigned int)(SLtt_Screen_Cols + 1) * SLUTF8_MAX_MBLEN)
+ {
+ SLfree ((char *) line);
+- SLfree ((char *) attr);
++ SLfree (attr);
+
+ line_len = (SLtt_Screen_Cols + 1) * SLUTF8_MAX_MBLEN;
+
+ if ((NULL == (line = (unsigned char *) SLmalloc (line_len)))
+- || (NULL == (attr = (unsigned char *) SLmalloc (line_len))))
++ || (NULL == (attr = SLmalloc (line_len))))
+ most_exit_error ("Out of memory");
+ }
+
+ (void) most_extract_line (&beg, &end);
+
+- len = most_analyse_line(beg, end, (char *) line, (char *) attr);
++ most_analyse_line(beg, end, line, attr);
+
++#if 0
++ /* Currently the dollar sign is not always being written at the
++ rightmost column when displaying multi-byte characters. */
+ dollar = 0;
+ if (Most_W_Opt)
+ {
+- if ((end < Most_Eob)
+- && (*end != '\n'))
+- dollar = '\\';
++ if ((end < Most_Eob)
++ && (*end != '\n'))
++ dollar = '\\';
+ }
+ else if (len > (unsigned int) SLtt_Screen_Cols + (Most_Column - 1))
+ dollar = '$';
+-
++
+ if (dollar)
+ {
+- line[SLtt_Screen_Cols-1] = dollar;
+- attr[SLtt_Screen_Cols-1] = ' ';
+- line[SLtt_Screen_Cols] = 0;
+- attr[SLtt_Screen_Cols] = 0;
++ unsigned char *pline =
++ most_forward_columns(line, line + line_len, SLtt_Screen_Cols-1, 1);
++ *pline = dollar;
++ *(pline+1) = 0;
++ attr[SLtt_Screen_Cols-1] = ' ';
++ attr[SLtt_Screen_Cols] = 0;
+ }
+-
++#endif
++
+ output_with_attr (line, attr);
+ SLsmg_erase_eol ();
+ }
+@@ -398,21 +449,34 @@
+ int most_apparant_distance (unsigned char *pos)
+ {
+ int i;
+- unsigned char *save_pos, ch;
++ unsigned char *save_pos, *beg, ch;
+ unsigned int save_offset;
+
+ save_offset = Most_C_Offset;
+ save_pos = pos;
+ Most_C_Offset = (unsigned int) (pos - Most_Beg);
+- pos = most_beg_of_line();
++ beg = pos = most_beg_of_line();
+ Most_C_Offset = save_offset;
+
+ i = 0;
+ while (pos < save_pos)
+ {
+- ch = *pos++;
+- if (((ch >= ' ') && (ch < 0x7F))
+- || (ch >= SLsmg_Display_Eight_Bit))
++ ch = *pos;
++
++ if (Most_UTF8_Mode) {
++ unsigned char *prev = pos;
++ int len;
++ pos = SLutf8_skip_char(pos, save_pos);
++ len = pos - prev;
++ if (len > 1) {
++ i++;
++ continue;
++ }
++ } else {
++ pos++;
++ }
++
++ if (most_isprint(ch))
+ {
+ i++;
+ continue;
+@@ -420,7 +484,13 @@
+
+ if (!Most_V_Opt && (ch == '\b'))
+ {
+- if (i > 0) i--;
++ if (i > 0)
++ {
++ if (Most_UTF8_Mode)
++ i -= pos - SLutf8_bskip_char(beg, pos);
++ else
++ i--;
++ }
+ }
+ else if (!Most_V_Opt && (ch == '\015')) /* ^M */
+ {
+@@ -439,3 +509,95 @@
+ }
+ return i;
+ }
++
++/*
++ * Returns a pointer to the num_cols'th character after the one
++ * pointed at b. Invisible character runs are not counted toward this
++ * limit, i.e. strings that represent attributes, such as "_\b" for
++ * underlines.
++ *
++ * If multi_column is non-zero, characters spanning more than one
++ * column will add their extra width to the column count.
++ *
++ * If there the end of the buffer is reached, as delimited by argument
++ * e, then e is returned.
++ */
++unsigned char *most_forward_columns (unsigned char *beg, unsigned char *e, unsigned int num_cols, int multi_column)
++{
++ unsigned int col = 0;
++ unsigned int prev_width = 1;
++ unsigned char* b = beg;
++
++ while ((b < e)
++ && ((col < num_cols)
++ || (*b == '\b')
++ || (*b == '\r')))
++ {
++ unsigned char ch = *b;
++
++ if (Most_UTF8_Mode)
++ {
++ unsigned char *prev = b;
++ int len;
++ b = SLutf8_skip_char(b, e);
++ len = b - prev;
++ if (len > 1)
++ {
++ if (multi_column)
++ {
++ SLwchar_Type wc;
++ if (SLutf8_decode(prev, e, &wc, NULL))
++ col += prev_width = SLwchar_wcwidth(wc);
++ }
++ else
++ col++;
++ continue;
++ }
++ }
++ else
++ b++;
++
++ if (most_isprint(ch))
++ {
++ col++;
++ prev_width = 1;
++ continue;
++ }
++
++ if ((ch == '\b') || (ch == '\t') || (ch == '\r'))
++ switch (ch)
++ {
++ case '\b':
++ if (Most_V_Opt == 0)
++ {
++ if (col > 0) col -= prev_width;
++ }
++ else col += 2;
++ break;
++
++ case '\r':
++ if (Most_V_Opt == 0)
++ col = 0;
++ else
++ col += 2;
++ break;
++
++ case '\t':
++ if (Most_T_Opt == 0)
++ col = Most_Tab_Width * (col/Most_Tab_Width + 1);
++ else
++ col += 2; /* ^I is two chars long. */
++ break;
++ }
++ else if (ch & 0x80)
++ col += 3;
++ else
++ col += 2;
++ }
++
++ /* Last character was too wide. Backstep it. */
++ if (col > num_cols)
++ b = SLutf8_bskip_char(beg, b);
++
++ return b;
++}
+--- most-4.10.2.orig/src/line.h
++++ most-4.10.2/src/line.h
+@@ -7,5 +7,7 @@
+
+ extern void most_display_line(void);
+ extern int most_apparant_distance(unsigned char *);
++extern int most_isprint(unsigned char);
++extern unsigned char *most_forward_columns (unsigned char *, unsigned char *, unsigned int, int);
+ #endif
+
+--- most-4.10.2.orig/src/most.c
++++ most-4.10.2/src/most.c
+@@ -125,7 +125,7 @@
+ ch = *(++str);
+ if ( ch == '/')
+ {
+- strcpy (Most_Search_Str,++str);
++ strcpy ((char *) Most_Search_Str,++str);
+ return;
+ }
+
+@@ -329,7 +329,8 @@
+
+ static void do_most (char *file, int start)
+ {
+- int piped, row, col;
++ int piped;
++ long long row, col;
+
+ most_get_cdir(Most_C_Dir);
+
+@@ -347,7 +348,7 @@
+ Most_Curs_Offset = Most_C_Offset;
+
+ if (*Most_Search_Str
+- && ((row = most_search (Most_Beg + Most_C_Offset, 1, &col)) > 0))
++ && ((row = most_search (Most_Beg + Most_C_Offset, 1LL, &col)) > 0))
+ most_goto_line(row);
+ else
+ {
+@@ -455,13 +456,7 @@
+
+ SLtt_get_terminfo();
+ #if SLANG_VERSION >= 20000
+-#if 0
+- Most_UTF8_Mode = SLutf8_enable (1);
+- if (Most_UTF8_Mode)
+- {
+- fprintf (stderr, "UTF-8 Mode is in effect\n");
+- }
+-#endif
++ Most_UTF8_Mode = SLutf8_enable (-1);
+ #endif
+ SLtt_Ignore_Beep = 1;
+ if (No_Colors)
+--- most-4.10.2.orig/src/most.h
++++ most-4.10.2/src/most.h
+@@ -1,4 +1,5 @@
+ #include "config.h"
++#define SLANG_REGEXP
+ extern int Most_S_Opt;
+ extern int Most_A_Opt; /* automatically choose -b if necessary */
+ extern int Most_V_Opt; /* display control chars */
+--- most-4.10.2.orig/src/search.c
++++ most-4.10.2/src/search.c
+@@ -20,6 +20,7 @@
+ */
+ #include "config.h"
+
++#include <ctype.h>
+ #include <stdio.h>
+ #include <string.h>
+ #include <slang.h>
+@@ -31,18 +32,18 @@
+ #include "display.h"
+ #include "search.h"
+
+-/* Note!!! The regular expression searches may not work. I have not
+- * tested them.
+- * FIXME!!!
+- */
+-
+ int Most_Case_Sensitive = 0;
+-char Most_Search_Str[256];
++unsigned char Most_Search_Str[256];
+ int Most_Search_Dir = 1;
+
+ #include "jdmacros.h"
+
+-#define UPCASE(ch) ((!Most_Case_Sensitive && (ch <= 'z') && (ch >= 'a')) ? (ch - 32) : ch)
++#if SLANG_VERSION < 20000
++# define NORM_CHAR(ch) ((!Most_Case_Sensitive) ? toupper(ch) : ch)
++# define UPCASE(ch) NORM_CHAR(ch)
++#else
++# define NORM_CHAR(ch) (ch)
++#endif
+
+ #if defined(HAVE_V8_REGCOMP) || defined(SLANG_REGEXP)
+
+@@ -78,7 +79,7 @@
+ * This function is called by the V8 regcomp to report
+ * errors in regular expressions.
+ */
+-static void regerror(char *s)
++static void regerror(const char *s)
+ {
+ char string[256];
+
+@@ -95,13 +96,17 @@
+ * 0 error
+ *
+ */
+-static int do_regcomp(unsigned char *key)
++static int do_regcomp(const unsigned char *key)
+ {
+ static int old_Most_Case_Sensitive;
+- unsigned char UpCaseKey[sizeof(savepattern)];
+ # ifndef HAVE_V8_REGCOMP
+ int posn; /* reg exp error at this offset */
+ # endif
++# if SLANG_VERSION < 20000
++ unsigned char UpCaseKey[sizeof(savepattern)];
++# else
++ int re_flags = 0;
++# endif
+
+ /*
+ * Only recompile search string if it has changed
+@@ -124,6 +129,7 @@
+
+ old_Most_Case_Sensitive = Most_Case_Sensitive;
+
++# if SLANG_VERSION < 20000
+ if ( Most_Case_Sensitive == 0 )
+ {
+ register unsigned char *p; /* ptr to UpCaseKey */
+@@ -141,6 +147,7 @@
+
+ *p = '\0';
+ }
++# endif
+
+ strcpy((char *)savepattern, (char *)key);
+
+@@ -162,7 +169,12 @@
+ # else
+ if (Regexp != NULL)
+ SLregexp_free (Regexp);
+- if (NULL == (Regexp = SLregexp_compile ((char *)key, Most_Case_Sensitive ? 0 : SLREGEXP_CASELESS)))
++
++ if (!Most_Case_Sensitive)
++ re_flags |= SLREGEXP_CASELESS;
++ if (Most_UTF8_Mode)
++ re_flags |= SLREGEXP_UTF8;
++ if (NULL == (Regexp = SLregexp_compile ((char *)key, re_flags)))
+ posn = -1;
+ else
+ posn = 0;
+@@ -187,7 +199,7 @@
+ * Call the appropriate regular expression execute function
+ */
+
+-static unsigned char *do_regexec(unsigned char *string)
++static unsigned char *do_regexec(const unsigned char *string, size_t length)
+ {
+ # ifdef HAVE_V8_REGCOMP
+ if ( regexec(regpattern, (char *)string) )
+@@ -196,40 +208,46 @@
+ return( NULL );
+ # else
+ # if SLANG_VERSION < 20000
+- return ( SLang_regexp_match(string, strlen((char *)string), &regdata) );
++ return ( SLang_regexp_match(string, length, &regdata) );
+ # else
+- return (unsigned char *)SLregexp_match (Regexp, (char *)string, strlen ((char *)string));
++ return (unsigned char *)SLregexp_match (Regexp, (char *)string, length);
+ # endif
+ # endif /* HAVE_V8_REGCOMP */
+ }
+
+ /*
+- * Make a upper case copy of a string. Also changes any "c\b" character
+- * strings into just "" so that highlighted and underlined characters
+- * can be searched.
++ * Changes any "c\b" character strings into just "" so that
++ * highlighted and underlined characters can be searched. Stores in
++ * length the new size of the string, after the aforementioned
++ * changes.
++ *
++ * If using a version of S-Lang that does not support case
++ * insensitive regular expressions, this function upper cases the
++ * input string, as well.
+ *
+ * Reuses malloced memory, so a copy cannot be retained between calls.
+ */
+
+-static unsigned char *StrUpCaseCopy(unsigned char *input)
++static const unsigned char *StrNormCopy(const unsigned char *input,
++ size_t *length)
+ {
+ static unsigned char *uppercase; /* ptr to malloced area */
+ static size_t bufsize; /* size of malloced area */
+- unsigned char *src; /* ptr to source */
++ const unsigned char *src; /* ptr to source */
++ const unsigned char *end; /* ptr to end of source */
+ register unsigned char *dest; /* ptr to destination */
+ register int idx; /* index into uppercase[] */
+- register unsigned char c; /* source character */
+- size_t length; /* size of string to copy */
+
+ src = input;
+- length = strlen((char *)src) + 1; /* len of line plus terminator */
++ end = input + *length;
+
+- if ( length > bufsize )
++ if ( *length >= bufsize )
+ {
+ if ( uppercase != (unsigned char *)NULL )
+ free(uppercase);
+
+- bufsize = (length > 256 ) ? length : 256; /* 256 byte default */
++ /* len of line plus terminator */
++ bufsize = (*length >= 256 ) ? *length + 1 : 256; /* 256 byte default */
+
+ uppercase = (unsigned char *)malloc(bufsize);
+ if ( uppercase == (unsigned char *)NULL )
+@@ -242,8 +260,9 @@
+
+ dest = uppercase;
+
+- for ( idx = 0 ; (c = *src) != '\0' ; src++ )
++ for ( idx = 0 ; src < end ; src++ )
+ {
++ unsigned char c = *src;
+ if ( c == '\b' ) /* backspace */
+ {
+ if ( idx-- > 0 )
+@@ -252,54 +271,79 @@
+ else
+ {
+ if ( idx++ >= 0 )
+- *dest++ = UPCASE(c);
++ *dest++ = NORM_CHAR(c);
+ }
+ }
+
+ *dest = '\0'; /* add termination */
+
++ *length = dest - uppercase;
+ return(uppercase);
+ }
+
+ /*
+- * Given an offset into a copy made by StrUpCaseCopy() and a pointer to the
++ * Given an offset into a copy made by StrNormCopy() and a pointer to the
+ * original string, returns a pointer into the original string corresponding
+ * to this offset.
+ */
+
+-static unsigned char *GetOrigPtr(unsigned char *original, int offset)
++static const unsigned char *
++GetOrigPtr(const unsigned char *original, int offset,
++ const unsigned char *end)
+ {
+- register unsigned char *p = original;
++ const unsigned char *p = original;
+ register int j = offset;
+
+ /*
+ * Step through, adjusting offset according to backspaces found
+ */
+- while ( *p != '\0' )
++ while ( p < end )
+ {
++ const unsigned char *next;
++ if (Most_UTF8_Mode)
++ next = SLutf8_skip_char((unsigned char*) p, (unsigned char*) end);
++ else
++ next = p + 1;
++ size_t length_last = next - p;
++
+ if ( *p == '\b' )
+- j++;
++ j += length_last;
+ else
+- j--;
++ j -= length_last;
+
+ if ( j < 0 )
+ break;
+ else
+- p++;
++ p = next;
+ }
+
+ return(p);
+ }
+ #endif /* HAVE_V8_REGCOMP || SLANG_REGEXP */
+
++/* Returns a pointer to the first occurrence of '\n' in string beg, or
++ * end if no '\n' can be found between inclusive beg and exclusive
++ * end.
++ */
++static const unsigned char *
++find_eol(const unsigned char *beg, const unsigned char *end)
++{
++ const unsigned char *p;
++ if ( (p = memchr(beg, '\n', end - beg)) != NULL)
++ return p;
++ else
++ return end;
++}
++
+ /* This routine returns the 1 + position of first match of key in str.
+ key is modified to match the case of str. */
+ /* We should try to optimize this routine */
+ /* searches from beg up to but not including end */
+
+-static unsigned char *forw_search_region(unsigned char *beg,
+- unsigned char *end,
+- unsigned char *key)
++static const unsigned char *
++forw_search_region(const unsigned char *beg,
++ const unsigned char *end,
++ const unsigned char *key)
+ {
+ #if defined(HAVE_V8_REGCOMP) || defined(SLANG_REGEXP)
+ /*
+@@ -307,10 +351,11 @@
+ * to be broken into lines.
+ *
+ */
+- unsigned char *p; /* temp pointer */
+- unsigned char *linebeg; /* beginning of working line */
+- unsigned char *copy; /* ptr to upper case copy */
++ const unsigned char *linebeg; /* beginning of working line */
++ const unsigned char *lineend; /* end of working line */
++ const unsigned char *norm_line; /* ptr to normalized line */
+ unsigned char *match; /* ptr to matching string */
++ int anchored_re;
+
+ /*
+ * Compile "key" into an executable regular expression
+@@ -318,58 +363,35 @@
+ if ( do_regcomp(key) == 0 )
+ return(Most_Eob);
+
+- /*
+- * For regular expression searches we need to do a line by line
+- * search, so it is necessary to temporarily replace '\n' with '\0'
+- * characters.
+- */
+- p = beg;
+- linebeg = beg;
++ anchored_re = key[0] == '^';
+
+- while (linebeg < end)
++ for ( linebeg = beg ; linebeg < end ; linebeg = lineend + 1 )
+ {
+- while ((p < end) && (*p != '\n')) p++;
+- if (p == end) break;
+- *p = 0;
++ size_t length;
+
+- if ( Most_Case_Sensitive == 0 ) /* i.e. case insensitive */
+- {
+- copy = StrUpCaseCopy(linebeg);
+- if ( copy == (unsigned char *)NULL )
+- return(Most_Eob);
+- }
++ lineend = find_eol(linebeg, end);
++
++ length = lineend - linebeg;
++ if (0 == length) continue; /* Skip empty lines. */
++
++ norm_line = StrNormCopy(linebeg, &length);
++ if ( norm_line == NULL )
++ return(Most_Eob);
+
+ /*
+ * Quick sanity check for beginning of line archored tests.
+- * If 1st char of key is "^", then the character before linebeg (which
+- * must be beyond the start of the window), must be a "\n",
+- * otherwise do_regexec() isn't called.
++ * If 1st char of key is "^", then the character before
++ * linebeg (which must be within the buffer), must be a "\n".
+ */
+- if (
+-# if 0
+- ((*key != '^')
+- || (linebeg > Most_Win->beg_pos && linebeg[-1] == '\n'))
+- &&
+-#endif
+- (match = do_regexec(Most_Case_Sensitive ? linebeg : copy)))
++ if ( !(anchored_re && (linebeg <= Most_Beg || linebeg[-1] != '\n'))
++ && (match = do_regexec(norm_line, length)) )
+ {
+- *p = '\n';
+- if ( Most_Case_Sensitive == 0 )
+- {
+- /*
+- * Use offset into "copy" as idx to find point in
+- * real line.
+- */
+- return( GetOrigPtr(linebeg, match - copy) );
+- }
+- else
+- {
+- return( match );
+- }
++ /*
++ * Use offset into "norm_line" as idx to find point in
++ * real line.
++ */
++ return( GetOrigPtr(linebeg, match - norm_line, lineend) );
+ }
+-
+- *p++ = '\n';
+- linebeg = p;
+ }
+
+ return(Most_Eob);
+@@ -475,23 +497,18 @@
+ * pattern "key".
+ */
+
+-static unsigned char *back_search_region(unsigned char *beg,
+- unsigned char *end,
+- unsigned char *key)
++static const unsigned char *
++back_search_region(const unsigned char *beg,
++ const unsigned char *end,
++ const unsigned char *key)
+ {
+ #if defined(HAVE_V8_REGCOMP) || defined(SLANG_REGEXP)
+- register unsigned char *p;
+- unsigned char *endp, /* end of line */
+- *lastmatch, /* last match in line */
++ const unsigned char *p;
++ const unsigned char *endp, /* end of line */
++ *lastmatch, /* last match in line */
+ *endprevline, /* end of line before this one */
+ *match; /* ptr to matching string */
+- unsigned char savec; /* last char on line */
+-
+- /*
+- * Compile "key" into an executable regular expression
+- */
+- if ( do_regcomp(key) == 0 )
+- return(Most_Eob);
++ int anchored_re;
+
+ /*
+ * Starting from the end of the buffer, break the buffer into lines
+@@ -501,84 +518,60 @@
+ * and isn't that what we want to do in a reverse search.
+ */
+ endp = end;
+- lastmatch = Most_Eob;
+- while ( 1 ) /* forever loop */
+- {
+- if ( (endp < beg) )
+- return(Most_Eob); /* Reach start of buffer, no match */
++ endprevline = end;
++ match = Most_Eob;
+
+- /* Find the real end of current line */
+- if ( (p = (unsigned char *)strchr((char *)endp, '\n')) != NULL )
+- endp = p;
+-
+- savec = *endp;
+- *endp = '\0'; /* terminate line with NULL */
++ /* Find out whether the regexp attempts to match a line boundary.
++ * In this case, only a match on the full line should be attempted.
++ */
++ anchored_re = key[strlen((const char *) key)-1] == '$';
+
++ while ( endp > beg )
++ {
+ /* Find the beginning of line */
+ for ( p = endp - 1 ; (p >= beg) && (*p != '\n') ; p-- )
+ {
+ }
+
++ if ( p < beg )
++ break;
++
+ endprevline = p;
+
+- p++; /* point to 1st char after newline */
++ /*
++ * Quick sanity check for end of line archored tests. If last
++ * char of key is "$", then the character after endp (which
++ * must be within the buffer), must be a "\n".
++ */
++ if ( anchored_re && endp < Most_Eob && endp[0] != '\n' )
++ {
++ endp = p;
++ continue;
++ }
+
+ /*
+ * Keep searching forward in this line till no more matches
+ */
+- if ( Most_Case_Sensitive == 0 ) /* i.e. case insensitive */
++ do
+ {
+- unsigned char *copy; /* ptr to upper case copy */
+- unsigned char *savecopy; /* copy of "copy" */
+-
+- copy = StrUpCaseCopy(p);
+- if ( copy == (unsigned char *)NULL )
+- return(Most_Eob);
++ lastmatch = match;
+
+- savecopy = copy;
+-
+- /*
+- * Quick sanity check for beginning of line archored tests.
+- * Must be at start of line.
+- */
+- while ( ((*key != '^') || (copy == savecopy))
+- && (match = do_regexec(copy)) )
+- {
+- if ( GetOrigPtr(p, match - savecopy) > end )
+- break;
+- lastmatch = match;
+- if ( *lastmatch == '\0' ) /* key must be "$" or "^" */
+- break;
+- copy = lastmatch + 1; /* character after match */
+- }
++ if (Most_UTF8_Mode)
++ p = SLutf8_skip_char((unsigned char*) p, (unsigned char*) endp);
++ else
++ p++;
+
+- if ( lastmatch != Most_Eob ) /* found a match */
+- lastmatch = GetOrigPtr(p, lastmatch - savecopy);
+- }
+- else
+- {
+- /*
+- * Quick sanity check for beginning of line archored tests.
+- * Must be at start of buffer or start of line
+- */
+- while ( ( (*key != '^') || (p == endprevline + 1) )
+- && (match = do_regexec(p)) )
+- {
+- if ( match > end )
+- break;
+- lastmatch = match;
+- if ( *lastmatch == '\0' ) /* key must be "$" or "^" */
+- break;
+- p = lastmatch + 1; /* character after match */
+- }
++ match = forw_search_region(p, endp, key);
+ }
++ while ( match <= endp );
+
+- *endp = savec;
+ if ( lastmatch != Most_Eob ) /* found a match */
+ return(lastmatch);
+
+ endp = endprevline;
+ }
++
++ return(Most_Eob); /* Reached start of buffer, no match */
+ #else
+ char ch, char1, work[256];
+ unsigned char *pos;
+@@ -670,15 +663,15 @@
+ #endif /* HAVE_V8_REGCOMP || SLANG_REGEXP */
+ }
+
+-int most_search(unsigned char *from, int repeat, int *col)
++long long most_search(const unsigned char *from, int repeat, long long *col)
+ {
+ /* return the line match was found as well as line number,
+ * search from i on; assume that line_array match the i so we need
+ * no initial lookup */
+
+- int test, save_line, the_col, row, s_len;
++ long long test, save_line, the_col, row, s_len;
+ char string[300];
+- unsigned char *pos;
++ const unsigned char *pos;
+ unsigned int save_ofs;
+ unsigned int found_ofs;
+
+@@ -687,7 +680,10 @@
+ save_line = Most_C_Line;
+ found_ofs = Most_Eob - Most_Beg;
+ *col = 0;
+- s_len = strlen (Most_Search_Str);
++ if (Most_UTF8_Mode)
++ s_len = SLutf8_strlen (Most_Search_Str, 0);
++ else
++ s_len = strlen ((char *) Most_Search_Str);
+ pos = from;
+
+ if (*Most_Search_Str)
+--- most-4.10.2.orig/src/search.h
++++ most-4.10.2/src/search.h
+@@ -6,7 +6,7 @@
+ extern int Most_Case_Sensitive;
+ extern int Most_Search_Dir;
+ #define MOST_SEARCH_BUF_LEN 256
+-extern char Most_Search_Str[MOST_SEARCH_BUF_LEN];
+-extern int most_search(unsigned char *, int, int *);
++extern unsigned char Most_Search_Str[MOST_SEARCH_BUF_LEN];
++extern long long most_search(const unsigned char *, int, long long *);
+ #endif
+
+--- most-4.10.2.orig/src/window.c
++++ most-4.10.2/src/window.c
+@@ -48,10 +48,11 @@
+
+ Most_Window_Type *Most_Win;
+ Most_Window_Type *Most_Top_Win;
+-int Most_Top_Line; /* row number of top window */
+-int Most_Curs_Row;
+-int Most_Curs_Col;
+-int Most_Column = 1;
++long long Most_Top_Line; /* row number of top window */
++long long Most_Curs_Row;
++long long Most_Curs_Col;
++/* The leftmost visible column. */
++long long Most_Column = 1;
+ int Most_Restore_Width_To = 0;
+ char Most_Mini_Buf[256];
+ unsigned long Most_Curs_Offset;
+@@ -156,7 +157,7 @@
+ SLsmg_write_nchars (buf + point, len - point);
+ if (col < SLtt_Screen_Cols)
+ break;
+- buf++; point--; len--; /* FIXME for UTF-8 */
++ buf++; point--; len--;
+ }
+ SLsmg_erase_eol ();
+ SLsmg_gotorc (SLtt_Screen_Rows - 1, col);
+@@ -227,6 +228,8 @@
+ {
+ SLang_RLine_Info_Type *rli;
+ unsigned int flags = SL_RLINE_BLINK_MATCH;
++ if (Most_UTF8_Mode)
++ flags |= SL_RLINE_UTF8_MODE;
+
+ if (NULL == (rli = SLrline_open (SLtt_Screen_Cols, flags)))
+ return NULL;
+@@ -258,7 +261,7 @@
+
+ /* do not use default. The up arrow can always get it back. */
+ if ((what != NULL)
+- && (*what) && (what != Most_Search_Str))
++ && (*what) && (what != (char *) Most_Search_Str))
+ {
+ if (-1 == SLrline_set_line (Most_RLI, what))
+ return -1;
+@@ -593,7 +596,8 @@
+ unsigned int num_chars;
+ unsigned int field_width, info_len;
+ unsigned char *eob;
+- int r, x;
++ int r;
++ long long x;
+
+ eob = Most_Eob;
+ #if MOST_HAS_MMAP
+@@ -601,20 +605,20 @@
+ eob = Most_Beg + Most_Buf->mmap_size;
+ #endif
+
+- if (eob == Most_Beg) x = 100;
++ if (eob == Most_Beg) x = 100LL;
+ else
+ {
+- x = Most_C_Offset * 100;
++ x = Most_C_Offset * 100LL;
+ x = x / (eob - Most_Beg);
+ }
+
+ if (Most_C_Line + (Most_Win->bot - Most_Win->top + 1) >= Most_Num_Lines)
+- x = 100;
++ x = 100LL;
+
+ /* for files with end of file above the bottom row (due to window manipulations) */
+- if (x > 100) x = 100;
++ if (x > 100LL) x = 100LL;
+
+- sprintf (info, "(%d,%d) %d%%", Most_C_Line, Most_Column, x);
++ sprintf (info, "(%lld,%lld) %d%%", Most_C_Line, Most_Column, (int)x);
+
+ r = Most_Win->bot + 1;
+ most_goto_rc (r,1);
+--- most-4.10.2.orig/src/window.h
++++ most-4.10.2/src/window.h
+@@ -5,11 +5,11 @@
+ typedef struct _Most_Window_Type
+ {
+ unsigned long top_offset; /* offset of top line of window from bob */
+- int beg_line; /* line number of top */
+- int curs_line; /* line number of curs pos */
+- int curs_col; /* column number of curs pos */
++ long long beg_line; /* line number of top */
++ long long curs_line; /* line number of curs pos */
++ long long curs_col; /* column number of curs pos */
+ unsigned long curs_offset; /* pos of cursor from bob*/
+- int col; /* column offset */
++ long long col; /* column offset */
+ int n_lines; /* number of lines of buffer (mode dependent) */
+ int top; /* screen location of top */
+ int bot; /* screen location of bot */
+@@ -29,9 +29,9 @@
+ extern Most_Window_Type *Most_Win;
+ extern Most_Window_Type *Most_Top_Win;
+ extern unsigned long Most_Curs_Offset;
+-extern int Most_Column;
+-extern int Most_Curs_Row;
+-extern int Most_Curs_Col;
++extern long long Most_Column;
++extern long long Most_Curs_Row;
++extern long long Most_Curs_Col;
+ #define MOST_MINI_BUF_LEN 256
+ extern char Most_Mini_Buf[MOST_MINI_BUF_LEN];
+ extern int Most_Selective_Display;
diff --git a/extra/mousepad/PKGBUILD b/extra/mousepad/PKGBUILD
new file mode 100644
index 000000000..9b3e0a599
--- /dev/null
+++ b/extra/mousepad/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 58320 2009-11-07 00:36:34Z allan $
+# Maintainer: tobias [tobias at archlinux.org]
+
+pkgname=mousepad
+pkgver=0.2.16
+pkgrel=2
+pkgdesc="Simple Text Editor for Xfce4 (based on Gedit)"
+arch=(i686 x86_64)
+groups=('xfce4')
+license="GPL2"
+depends=('libxfcegui4>=4.6.0' 'desktop-file-utils')
+makedepends=('pkgconfig' 'intltool' 'perl')
+options=('!libtool')
+url=('http://www.xfce.org/~benny/apps.html')
+install=${pkgname}.install
+source=(http://www.xfce.org/archive/xfce-4.6.0/src/${pkgname}-${pkgver}.tar.bz2
+ resensitize-find-button.patch)
+md5sums=('d98854edb76d823ac20b266fdf5a64a1'
+ '1fbc153fbd47ebb95d93f7084dea93e0')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ patch -Np1 -i $srcdir/resensitize-find-button.patch
+ ./configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib/xfce4 \
+ --localstatedir=/var --disable-static
+ make || return 1
+ make DESTDIR=${pkgdir} install || return 1
+}
diff --git a/extra/mousepad/mousepad.install b/extra/mousepad/mousepad.install
new file mode 100644
index 000000000..e7ca93e53
--- /dev/null
+++ b/extra/mousepad/mousepad.install
@@ -0,0 +1,16 @@
+post_install() {
+ update-desktop-database -q
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ update-desktop-database -q
+}
+
+op=$1
+shift
+
+$op $*
diff --git a/extra/mousepad/resensitize-find-button.patch b/extra/mousepad/resensitize-find-button.patch
new file mode 100644
index 000000000..db79adc4d
--- /dev/null
+++ b/extra/mousepad/resensitize-find-button.patch
@@ -0,0 +1,28 @@
+--- mousepad-0.2.16.orig/src/search.c
++++ mousepad-0.2.16/src/search.c
+@@ -210,8 +210,11 @@
+ G_CALLBACK(toggle_sensitivity), NULL);
+ g_signal_connect(G_OBJECT(entry_find), "delete-text",
+ G_CALLBACK(toggle_sensitivity), NULL);
+- if (sd->search.string_find)
++ if (sd->search.string_find) {
+ gtk_entry_set_text(GTK_ENTRY(entry_find), sd->search.string_find);
++ gtk_dialog_set_response_sensitive(GTK_DIALOG(dialog),
++ GTK_RESPONSE_OK, TRUE);
++ }
+
+ gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_OK);
+ gtk_entry_set_activates_default(GTK_ENTRY(entry_find), TRUE);
+@@ -275,8 +278,11 @@
+ G_CALLBACK(toggle_sensitivity), NULL);
+ g_signal_connect(G_OBJECT(entry_find), "delete-text",
+ G_CALLBACK(toggle_sensitivity), NULL);
+- if (sd->search.string_find)
++ if (sd->search.string_find) {
+ gtk_entry_set_text(GTK_ENTRY(entry_find), sd->search.string_find);
++ gtk_dialog_set_response_sensitive(GTK_DIALOG(dialog),
++ GTK_RESPONSE_OK, TRUE);
++ }
+ label_replace = gtk_label_new_with_mnemonic(_("Re_place with: "));
+ gtk_misc_set_alignment(GTK_MISC(label_replace), 0, 0.5);
+ gtk_table_attach_defaults(GTK_TABLE(table), label_replace, 0, 1, 1, 2);
diff --git a/extra/mousetweaks/PKGBUILD b/extra/mousetweaks/PKGBUILD
new file mode 100644
index 000000000..98dea79e2
--- /dev/null
+++ b/extra/mousetweaks/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 2392 2008-06-01 19:38:25Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=mousetweaks
+pkgver=2.32.1
+pkgrel=1
+pkgdesc="Mouse accessibility enhancements for the GNOME desktop"
+arch=(i686 x86_64)
+license=('GPL3' 'FDL')
+depends=('gnome-panel-bonobo>=2.32.0' 'libxtst')
+makedepends=('gnome-doc-utils>=0.20.1' 'intltool')
+groups=('gnome-extra')
+options=('!libtool' '!emptydirs')
+url="http://www.gnome.org"
+install=mousetweaks.install
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.32/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('70d2e8ba0f5021a9e70fecab2ea5cb5f2c03941e676607bec37f2304d9b86d08')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-scrollkeeper
+ make
+ make -j1 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 mousetweaks ${pkgdir}/etc/gconf/schemas/*.schemas
+ rm -f ${pkgdir}/etc/gconf/schemas/*.schemas
+}
diff --git a/extra/mousetweaks/mousetweaks.install b/extra/mousetweaks/mousetweaks.install
new file mode 100644
index 000000000..05aba9b73
--- /dev/null
+++ b/extra/mousetweaks/mousetweaks.install
@@ -0,0 +1,17 @@
+pkgname=mousetweaks
+
+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/extra/mozilla-common/PKGBUILD b/extra/mozilla-common/PKGBUILD
new file mode 100644
index 000000000..ad7efa3a2
--- /dev/null
+++ b/extra/mozilla-common/PKGBUILD
@@ -0,0 +1,20 @@
+# $Id: PKGBUILD 42378 2009-06-13 13:07:05Z jgc $
+# Maintainer: dale <dale@archlinux.org>
+
+pkgname=mozilla-common
+pkgver=1.4
+pkgrel=1
+pkgdesc="Common Initialization Profile for Mozilla.org products"
+arch=(i686 x86_64)
+license=('GPL')
+url="http://www.mozilla.org/"
+install=mozilla-common.install
+source=(mozilla-common.sh
+ mozilla-common.csh)
+md5sums=('39451f6fe87d3cb224e140322c55eb27'
+ '924887e41bd96db37029f479befe40cf')
+
+build() {
+ install -m755 -d "${pkgdir}/etc/profile.d"
+ install -m755 mozilla-common.{,c}sh "${pkgdir}/etc/profile.d/" || return 1
+}
diff --git a/extra/mozilla-common/mozilla-common.csh b/extra/mozilla-common/mozilla-common.csh
new file mode 100755
index 000000000..09e49c783
--- /dev/null
+++ b/extra/mozilla-common/mozilla-common.csh
@@ -0,0 +1 @@
+setenv MOZ_PLUGIN_PATH "/usr/lib/mozilla/plugins"
diff --git a/extra/mozilla-common/mozilla-common.install b/extra/mozilla-common/mozilla-common.install
new file mode 100644
index 000000000..dc4228b08
--- /dev/null
+++ b/extra/mozilla-common/mozilla-common.install
@@ -0,0 +1,4 @@
+post_install() {
+ echo "relogin or source /etc/profile.d/mozilla-common.sh"
+}
+# vim:set ts=2 sw=2 et:
diff --git a/extra/mozilla-common/mozilla-common.sh b/extra/mozilla-common/mozilla-common.sh
new file mode 100755
index 000000000..132b5731e
--- /dev/null
+++ b/extra/mozilla-common/mozilla-common.sh
@@ -0,0 +1 @@
+export MOZ_PLUGIN_PATH="/usr/lib/mozilla/plugins"
diff --git a/extra/mp3splt/PKGBUILD b/extra/mp3splt/PKGBUILD
new file mode 100644
index 000000000..9e1769c6f
--- /dev/null
+++ b/extra/mp3splt/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 116963 2011-03-26 16:55:54Z tpowa $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=mp3splt
+pkgver=2.3a
+pkgrel=1
+arch=('i686' 'x86_64')
+pkgdesc="Comandline tool for splitting mp3 and ogg files without decoding"
+license=('GPL')
+url="http://mp3splt.sourceforge.net"
+depends=('libmp3splt>=0.6.1a')
+source=(http://downloads.sourceforge.net/sourceforge/mp3splt/$pkgname-$pkgver.tar.gz)
+options=(!libtool)
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ ./configure --prefix=/usr --with-mp3splt-includes=/usr/include/libmp3splt --enable-oggsplt_symlink
+ make
+}
+
+package() {
+ cd $srcdir/$pkgname-$pkgver
+ make DESTDIR=$pkgdir/ install
+}
+md5sums=('1fe663f7de5a6949bbe5b6aa78fea79f')
diff --git a/extra/mp3wrap/PKGBUILD b/extra/mp3wrap/PKGBUILD
new file mode 100644
index 000000000..897198812
--- /dev/null
+++ b/extra/mp3wrap/PKGBUILD
@@ -0,0 +1,20 @@
+# $Id: PKGBUILD 27742 2009-02-25 05:39:42Z eric $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=mp3wrap
+pkgver=0.5
+pkgrel=2
+pkgdesc="Tool for wrapping mp3 files --- free independent alternative to AlbumWrap"
+arch=('i686' 'x86_64')
+url="http://mp3wrap.sourceforge.net"
+license=('LGPL')
+depends=('glibc')
+source=(http://downloads.sourceforge.net/sourceforge/mp3wrap/mp3wrap-$pkgver-src.tar.gz)
+md5sums=('096b46295cbe3ee2f02ca7792517dc36')
+
+build() {
+ cd $srcdir/mp3wrap-$pkgver
+ ./configure --prefix=/usr --mandir=/usr/share/man || return 1
+ make || return 1
+ make DESTDIR=$pkgdir install || return 1
+}
diff --git a/extra/mpc/PKGBUILD b/extra/mpc/PKGBUILD
new file mode 100644
index 000000000..6ec7c5807
--- /dev/null
+++ b/extra/mpc/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 106266 2011-01-16 01:43:38Z angvp $
+# Maintainer: Angel Velasquez <angvp@archlinux.org>
+# Contributor: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Alexander Fehr <pizzapunk gmail com>
+# Contributor: Link Dupont <link@subpop.net>
+
+pkgname=mpc
+pkgver=0.20
+pkgrel=1
+pkgdesc="Minimalist command line interface to MPD"
+arch=('i686' 'x86_64')
+url="http://mpd.wikia.com/wiki/Client:Mpc"
+license=('GPL2')
+depends=('libmpdclient')
+options=('!emptydirs')
+source=(http://downloads.sourceforge.net/musicpd/${pkgname}-$pkgver.tar.bz2)
+md5sums=('24c81ad6afe6099e8d7a6826ef4b7105')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make DESTDIR="$pkgdir" install
+ # Install bash completion file
+ install -D -m644 doc/mpc-completion.bash "$pkgdir/etc/bash_completion.d/mpc"
+}
diff --git a/extra/mpck/PKGBUILD b/extra/mpck/PKGBUILD
new file mode 100644
index 000000000..65a6a2799
--- /dev/null
+++ b/extra/mpck/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id: PKGBUILD 68070 2010-02-10 17:08:28Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: damir <damir@archlinux.org>
+
+pkgname=mpck
+pkgver=0.19
+pkgrel=1
+license=('GPL')
+pkgdesc="Reads MP3 files and tries to determine if they are correct"
+arch=('i686' 'x86_64')
+url="http://checkmate.gissen.nl/"
+depends=('glibc')
+source=(http://checkmate.gissen.nl/checkmate-${pkgver}.tar.gz)
+md5sums=('f72114b0982a101b68ddeb65f99b84f7')
+
+build() {
+ cd "${srcdir}/checkmate-${pkgver}"
+
+ ./configure --prefix=/usr
+ make || return 1
+ make prefix="${pkgdir}/usr" install || return 1
+}
diff --git a/extra/mpd/PKGBUILD b/extra/mpd/PKGBUILD
new file mode 100644
index 000000000..306fedbda
--- /dev/null
+++ b/extra/mpd/PKGBUILD
@@ -0,0 +1,55 @@
+# $Id: PKGBUILD 116395 2011-03-23 05:22:12Z angvp $
+# Maintainer: Angel Velasquez <angvp@archlinux.org>
+# Contributor: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Damir Perisa <damir.perisa@bluewin.ch>
+# Contributor: Ben <ben@benmazer.net>
+
+pkgname=mpd
+pkgver=0.16.2
+pkgrel=1
+pkgdesc="Music daemon that plays MP3, FLAC, and Ogg Vorbis files"
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://mpd.wikia.com/wiki/Server"
+depends=('libao' 'ffmpeg' 'libmodplug' 'audiofile' 'libshout' 'libmad' 'curl' 'faad2'
+ 'sqlite3' 'libsamplerate' 'libmms' 'wavpack' 'libmpcdec' 'avahi' 'libid3tag'
+ 'libpulse')
+makedepends=('pkgconfig' 'doxygen')
+install=${pkgname}.install
+source=("http://downloads.sourceforge.net/musicpd/${pkgname}-${pkgver}.tar.bz2"
+ 'mpd')
+md5sums=('dedb75cef8e489f3de5231031876fb77'
+ 'e5669c2bff4031928531e52475addeb1')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --enable-lastfm \
+ --enable-pulse \
+ --enable-documentation \
+ --disable-libwrap \
+ --disable-cue \
+ --disable-sidplay
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+
+ # set ours dirs in mpd.conf file
+ sed -i 's|^music_directory.*$|#music_directory "path_to_your_music_collection"|1' doc/mpdconf.example
+ sed -i 's|playlist_directory.*$|playlist_directory "/var/lib/mpd/playlists"|1' doc/mpdconf.example
+ sed -i 's|db_file.*$|db_file "/var/lib/mpd/mpd.db"|1' doc/mpdconf.example
+ sed -i 's|log_file.*$|log_file "/var/log/mpd/mpd.log"|1' doc/mpdconf.example
+ sed -i 's|error_file.*$|error_file "/var/log/mpd/mpd.error"|1' doc/mpdconf.example
+ sed -i 's|#pid_file.*$|pid_file "/var/run/mpd/mpd.pid"|1' doc/mpdconf.example
+ sed -i 's|#state_file.*$|state_file "/var/lib/mpd/mpdstate"|1' doc/mpdconf.example
+ sed -i 's|#user.*$|user "mpd"|1' doc/mpdconf.example
+
+ install -Dm644 doc/mpdconf.example ${pkgdir}/usr/share/mpd/mpd.conf.example
+
+ install -Dm755 ${srcdir}/mpd ${pkgdir}/etc/rc.d/mpd
+ install -d ${pkgdir}/var/{lib/mpd/playlists,log/mpd}
+}
diff --git a/extra/mpd/mpd b/extra/mpd/mpd
new file mode 100755
index 000000000..6134e2ed4
--- /dev/null
+++ b/extra/mpd/mpd
@@ -0,0 +1,36 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+case "$1" in
+ start)
+ stat_busy "Starting Music Player Daemon"
+ [ ! -d /var/run/mpd ] && install -d -g 45 -o 45 /var/run/mpd
+ /usr/bin/mpd /etc/mpd.conf &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon mpd
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping Music Player Daemon"
+ /usr/bin/mpd --kill /etc/mpd.conf &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon mpd
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
diff --git a/extra/mpd/mpd.install b/extra/mpd/mpd.install
new file mode 100644
index 000000000..885505a07
--- /dev/null
+++ b/extra/mpd/mpd.install
@@ -0,0 +1,18 @@
+post_install() {
+ post_upgrade
+ echo "==> Create a configuration file /etc/mpd.conf before using MPD (example: /usr/share/mpd/mpd.conf.example)"
+}
+
+post_upgrade() {
+ getent group "mpd" &>/dev/null || groupadd -r -g 45 mpd 1>/dev/null
+ getent passwd "mpd" &>/dev/null || useradd -r -u 45 -g mpd -d "/var/lib/mpd" -s "/bin/true" -G "audio" mpd 1>/dev/null
+ for dir in /var/{lib,log}/mpd; do
+ chown -R mpd:mpd "$dir" 1>/dev/null
+ done
+}
+
+post_remove() {
+ getent passwd "mpd" &>/dev/null && userdel mpd 1>/dev/null
+ getent group "mpd" &>/dev/null && groupdel mpd 1>/dev/null
+ [ -f etc/mpd.conf ] && mv etc/mpd.conf etc/mpd.conf.pacsave 1>/dev/null
+}
diff --git a/extra/mpg123/PKGBUILD b/extra/mpg123/PKGBUILD
new file mode 100644
index 000000000..0a272791b
--- /dev/null
+++ b/extra/mpg123/PKGBUILD
@@ -0,0 +1,34 @@
+# $Id: PKGBUILD 110641 2011-02-20 21:15:21Z eric $
+# Maintainer: Eric Bélanger <eric@archlinux.org>
+
+pkgname=mpg123
+pkgver=1.13.2
+pkgrel=1
+pkgdesc="A console based real time MPEG Audio Player for Layer 1, 2 and 3"
+arch=('i686' 'x86_64')
+url="http://sourceforge.net/projects/mpg123"
+license=('GPL2' 'LGPL2.1')
+depends=('glibc' 'libtool' 'alsa-lib')
+makedepends=('esound' 'sdl' 'jack' 'libpulse')
+optdepends=('esound: for esd audio support'
+ 'sdl: for sdl audio support'
+ 'jack: for jack audio support'
+ 'libpulse: for pulse audio support')
+conflicts=('mpg321')
+provides=('mpg321')
+replaces=('mpg321')
+options=('libtool')
+source=(http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('7cb959877d205f89215a32bf446f5737')
+sha1sums=('31a9c27f5fa80f930dbe598846c847f9b35d9dc3')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --with-audio="alsa esd sdl jack pulse"
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/mrtg/PKGBUILD b/extra/mrtg/PKGBUILD
new file mode 100644
index 000000000..8df4acbdc
--- /dev/null
+++ b/extra/mrtg/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 116027 2011-03-22 16:10:12Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
+
+pkgname=mrtg
+pkgver=2.17.2
+pkgrel=1
+pkgdesc="Multi Router Traffic Grapher."
+arch=('i686' 'x86_64')
+url="http://oss.oetiker.ch/mrtg/"
+license=('GPL')
+depends=('gd' 'perl')
+source=("http://oss.oetiker.ch/mrtg/pub/${pkgname}-${pkgver}.tar.gz")
+md5sums=('f4c251ef883da2509188711eff4577ad')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ sed 's|LD_RUN_PATH=$(LD_RUN_PATH) ||g' -i Makefile.in
+ ./configure --prefix=/usr
+
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ make prefix=${pkgdir}/usr install
+}
diff --git a/extra/msmtp/PKGBUILD b/extra/msmtp/PKGBUILD
new file mode 100644
index 000000000..852d0909e
--- /dev/null
+++ b/extra/msmtp/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 108642 2011-02-02 03:35:19Z allan $
+# Maintainer: tobias <tobias@archlinux.org>
+# Contributor: Ben Mazer <blm@groknil.org>
+
+pkgname=msmtp
+pkgver=1.4.23
+pkgrel=1
+pkgdesc="A mini smtp client"
+arch=('i686' 'x86_64')
+license=('GPL3')
+url="http://msmtp.sourceforge.net"
+depends=('gnutls' 'libidn')
+provides=('smtp-forwarder')
+source=(http://download.sourceforge.net/sourceforge/msmtp/${pkgname}-${pkgver}.tar.bz2)
+install=${pkgname}.install
+md5sums=('5fb7ae88186624cdb125d3efad3fdc16')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr --sysconfdir=/etc --with-ssl=gnutls
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+
+ # this can not be the default
+ #install -Dm644 doc/msmtprc-system.example $startdir/pkg/etc/msmtprc
+}
diff --git a/extra/msmtp/msmtp.install b/extra/msmtp/msmtp.install
new file mode 100644
index 000000000..ec2c1fb23
--- /dev/null
+++ b/extra/msmtp/msmtp.install
@@ -0,0 +1,20 @@
+infodir=/usr/share/info
+filelist=(msmtp.info)
+
+post_install() {
+ for file in ${filelist[@]}; do
+ install-info $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ for file in ${filelist[@]}; do
+ install-info --delete $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/extra/mt-st/PKGBUILD b/extra/mt-st/PKGBUILD
new file mode 100644
index 000000000..17ef58f94
--- /dev/null
+++ b/extra/mt-st/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: PKGBUILD 53023 2009-09-25 05:09:23Z paul $
+# Maintainer: dorphell <dorphell@archlinux.org>
+pkgname=mt-st
+pkgver=1.1
+pkgrel=2
+pkgdesc="Linux SCSI tape driver aware magnetic tape control"
+arch=(i686 x86_64)
+url="ftp://ftp.ibiblio.org/pub/linux/system/backup/"
+depends=('glibc')
+arch=('i686' 'x86_64')
+license=('GPL2')
+source=(ftp://ftp.ibiblio.org/pub/linux/system/backup/$pkgname-$pkgver.tar.gz)
+md5sums=('fdd5f5ec673c9f630a102ceff7612774')
+
+build() {
+ cd $startdir/src/$pkgname-$pkgver || return 1
+
+ make || return 1
+
+ mkdir -p $startdir/pkg/{sbin,bin,usr/share/man/man1,usr/share/man/man8} || return 1
+ make SBINDIR=$startdir/pkg/sbin BINDIR=$startdir/pkg/bin \
+ MANDIR=$startdir/pkg/usr/share/man install || return 1
+}
diff --git a/extra/mtools/PKGBUILD b/extra/mtools/PKGBUILD
new file mode 100644
index 000000000..dd1eb2c81
--- /dev/null
+++ b/extra/mtools/PKGBUILD
@@ -0,0 +1,37 @@
+# $Id: PKGBUILD 108705 2011-02-02 17:20:00Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=mtools
+pkgver=4.0.15
+pkgrel=1
+pkgdesc="A collection of utilities to access MS-DOS disks"
+arch=('i686' 'x86_64')
+url="http://www.gnu.org/software/mtools/"
+license=('GPL')
+depends=('sh')
+makedepends=('texinfo' 'libx11' 'libsm')
+optdepends=('libx11: required by floppyd'
+ 'libsm: required by floppyd')
+backup=('etc/mtools.conf')
+install=mtools.install
+source=("http://ftp.gnu.org/gnu/mtools/${pkgname}-${pkgver}.tar.bz2")
+md5sums=('b7550b649af77812cb696a780e853f47')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ sed -i '/^SAMPLE FILE$/s:^:# :' mtools.conf
+ ./configure --prefix=/usr \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --sysconfdir=/etc
+ make || return 1
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ make -j 1 DESTDIR="${pkgdir}" install || return 1
+ install -Dm644 mtools.conf "${pkgdir}/etc/mtools.conf" || return 1
+}
diff --git a/extra/mtools/mtools.install b/extra/mtools/mtools.install
new file mode 100644
index 000000000..ae357721f
--- /dev/null
+++ b/extra/mtools/mtools.install
@@ -0,0 +1,18 @@
+info_dir=/usr/share/info
+info_files=(mtools.info)
+
+post_install() {
+ for f in ${info_files[@]}; do
+ install-info ${info_dir}/$f.gz ${info_dir}/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ for f in ${info_files[@]}; do
+ install-info --delete ${info_dir}/$f.gz ${info_dir}/dir 2> /dev/null
+ done
+}
diff --git a/extra/mtr/PKGBUILD b/extra/mtr/PKGBUILD
new file mode 100644
index 000000000..47c86db91
--- /dev/null
+++ b/extra/mtr/PKGBUILD
@@ -0,0 +1,42 @@
+# $Id: PKGBUILD 106670 2011-01-17 20:34:58Z ibiru $
+# Maintainer : Ionut Biru <ibiru@archlinux.org>
+# Contributor: Douglas Soares de Andrade <douglas@archlinux.org>
+
+pkgbase=mtr
+pkgname=(mtr mtr-gtk)
+pkgver=0.80
+pkgrel=2
+arch=('i686' 'x86_64')
+license=('GPL')
+makedepends=('ncurses' 'gtk2')
+source=(ftp://ftp.bitwizard.nl/mtr/${pkgbase}-${pkgver}.tar.gz)
+url="http://www.bitwizard.nl/mtr/"
+md5sums=('fa68528eaec1757f52bacf9fea8c68a9')
+
+build() {
+ install -d "${srcdir}/"{mtr-cli,mtr-gtk}
+ cd "${srcdir}/mtr-cli"
+ ../${pkgbase}-${pkgver}/configure --prefix=/usr --disable-gtktest --without-gtk
+ make
+
+ cd "${srcdir}/mtr-gtk"
+ ../${pkgbase}-${pkgver}/configure --prefix=/usr --enable-gtk2
+ make
+}
+
+package_mtr() {
+ pkgdesc="Combines the functionality of traceroute and ping into one tool (CLI version)"
+ depends=('ncurses>=5.7')
+ cd "${srcdir}/mtr-cli"
+ make DESTDIR="${pkgdir}" install
+}
+
+package_mtr-gtk() {
+ pkgdesc="Combines the functionality of traceroute and ping into one tool (GTK version)"
+ depends=('ncurses>=5.7' "gtk2>=2.22.0")
+ conflicts=("mtr")
+ provides=("mtr=${pkgver}")
+
+ cd "${srcdir}/mtr-gtk"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/mtx/PKGBUILD b/extra/mtx/PKGBUILD
new file mode 100644
index 000000000..7451c78db
--- /dev/null
+++ b/extra/mtx/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: PKGBUILD 53028 2009-09-25 05:20:59Z paul $
+# Maintainer: dorphell <dorphell@archlinux.org>
+# Committer: Judd Vinet <jvinet@zeroflux.org>
+pkgname=mtx
+pkgver=1.3.12
+pkgrel=1
+pkgdesc="Send robot commands to tape changer"
+arch=('i686' 'x86_64')
+url="http://mtx.opensource-sw.net/"
+license=('GPL2')
+depends=('glibc')
+source=(http://downloads.sourceforge.net/mtx/${pkgname}-${pkgver}.tar.gz)
+
+build() {
+ cd $startdir/src/${pkgname}-${pkgver} || return 1
+ sed -i 's/static const unsigned char scsi_command_size/const unsigned char scsi_command_size/' \
+ sg_err.c || return 1
+ ./configure --prefix='/usr' --datadir='/usr/share' || return 1
+ make || return 1
+ mkdir $startdir/pkg/usr || return 1
+ make prefix=$startdir/pkg/usr install || return 1
+}
+md5sums=('ce8f0e44671fb0c7d9ec30bb0bfa8b5c')
diff --git a/extra/muine/PKGBUILD b/extra/muine/PKGBUILD
new file mode 100644
index 000000000..b6cca9fe7
--- /dev/null
+++ b/extra/muine/PKGBUILD
@@ -0,0 +1,39 @@
+# $Id: PKGBUILD 58724 2009-11-12 19:57:50Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Ben Mazer <blm@groknil.org>
+
+pkgname=muine
+pkgver=0.8.11
+pkgrel=1
+pkgdesc="A music player written in C#"
+arch=(i686 x86_64)
+license=('GPL')
+url="http://www.muine-player.org/"
+depends=('gconf>=2.28.0' 'gtk2>=2.18.3' 'gnome-icon-theme>=2.28.0' 'gstreamer0.10>=0.10.25' 'mono>=2.4.2.3' 'gnome-sharp>=2.24.1' 'taglib-sharp>=2.0.3.2' 'ndesk-dbus>=0.6.0' 'ndesk-dbus-glib>=0.4.1' 'gstreamer0.10-base-plugins>=0.10.25' 'gstreamer0.10-good-plugins>=0.10.16')
+makedepends=('intltool')
+optdepends=('gstreamer0.10-ugly-plugins: Extra media codecs'
+ 'gstreamer0.10-bad-plugins: Extra media codecs'
+ 'gstreamer0.10-ffmpeg: Extra media codecs')
+options=('!libtool' '!emptydirs' '!makeflags')
+install=muine.install
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/0.8/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('f2a74519d9e9c6c4fca9c5217a13964a')
+
+build() {
+
+ export MONO_SHARED_DIR="${srcdir}/.wabi"
+ mkdir -p "${MONO_SHARED_DIR}"
+
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \
+ --disable-static || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 install || return 1
+
+ install -m755 plugins/TrayIcon.{dll,xml} "${pkgdir}/usr/lib/muine/plugins/" || return 1
+ install -m644 plugins/muine-tray-*.png "${pkgdir}/usr/lib/muine/plugins/" || return 1
+
+ install -m755 -d "${pkgdir}/usr/share/gconf/schemas"
+ gconf-merge-schema "${pkgdir}/usr/share/gconf/schemas/${pkgname}.schemas" --domain muine ${pkgdir}/etc/gconf/schemas/*.schemas || return 1
+ rm -f ${pkgdir}/etc/gconf/schemas/*.schemas
+}
diff --git a/extra/muine/muine.install b/extra/muine/muine.install
new file mode 100644
index 000000000..968f6b185
--- /dev/null
+++ b/extra/muine/muine.install
@@ -0,0 +1,25 @@
+pkgname=muine
+
+post_install() {
+ usr/sbin/gconfpkg --install ${pkgname}
+ update-desktop-database -q
+ gtk-update-icon-cache -f -t -q 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 -f -t -q /usr/share/icons/hicolor
+ update-desktop-database -q
+}
diff --git a/extra/multitail/PKGBUILD b/extra/multitail/PKGBUILD
new file mode 100644
index 000000000..625474e1e
--- /dev/null
+++ b/extra/multitail/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 79574 2010-05-04 15:01:54Z kevin $
+# Maintainer: Kevin Piche <kevin@archlinux.org>
+# Contributor: Roberto Carvajal <roberto@archlinux.org>
+
+pkgname=multitail
+pkgver=5.2.6
+pkgrel=1
+pkgdesc="MultiTail lets you view one or multiple files like the original tail program"
+arch=(i686 x86_64)
+license=('GPL')
+url="http://www.vanheusden.com/multitail"
+depends=('ncurses')
+backup=(etc/multitail.conf)
+source=(${url}/${pkgname}-${pkgver}.tgz)
+md5sums=('6496b3d78660ff8d11c743a0d03cca34')
+
+build() {
+ cd ${startdir}/src/${pkgname}-${pkgver}
+ /usr/bin/make || return 1
+ /bin/install -D -m 755 multitail ${startdir}/pkg/usr/bin/multitail
+ /bin/install -D -m 644 multitail.1 ${startdir}/pkg/usr/share/man/man1/multitail.1
+ /bin/install -D -m 644 multitail.conf ${startdir}/pkg/etc/multitail.conf
+}
+# vim: ts=2 sw=2 et ft=sh
diff --git a/extra/muparser/PKGBUILD b/extra/muparser/PKGBUILD
new file mode 100644
index 000000000..0746f6631
--- /dev/null
+++ b/extra/muparser/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 102419 2010-12-07 19:36:22Z ronald $
+# Maintainer: Ronald van Haren <ronald.archlinux.org>
+# Contributor: damir <damir.archlinux.org>
+
+pkgname=muparser
+pkgver=1.34
+pkgrel=1
+pkgdesc="a fast math parser library"
+arch=('i686' 'x86_64')
+url="http://muparser.sourceforge.net/"
+depends=('glibc' 'gcc-libs')
+license=('custom')
+source=(http://downloads.sourceforge.net/$pkgname/muparser_v134.tar.gz)
+md5sums=('0c4f4bf86aa2a5a737adc0e08cb77737')
+
+build() {
+ cd $srcdir/${pkgname}_v134
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd $srcdir/${pkgname}_v134
+ make DESTDIR=$pkgdir install
+
+ # license
+ install -D -m644 License.txt \
+ $pkgdir/usr/share/licenses/${pkgname}/License
+}
+
diff --git a/extra/musicbrainz/PKGBUILD b/extra/musicbrainz/PKGBUILD
new file mode 100644
index 000000000..398cf0f1a
--- /dev/null
+++ b/extra/musicbrainz/PKGBUILD
@@ -0,0 +1,37 @@
+# $Id: PKGBUILD 89512 2010-09-01 12:52:06Z remy $
+# Maintainer:
+# Contributor: Alexander Baldeck <alexander@archlinux.org>
+# Contributor: dorphell <dorphell@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+# Contributor: Sarah Hay <sarah@archlinux.org>
+
+pkgname=musicbrainz
+pkgver=2.1.5
+pkgrel=4
+pkgdesc="The second generation incarnation of the CD Index"
+arch=('i686' 'x86_64')
+url="http://www.musicbrainz.org/index.html"
+license=('LGPL')
+depends=('expat>=2.0')
+makedepends=('python2')
+options=('!libtool')
+source=(ftp://ftp.musicbrainz.org/pub/$pkgname/libmusicbrainz-${pkgver}.tar.gz
+ 'gcc4.3.patch')
+
+build() {
+ cd ${srcdir}/lib${pkgname}-${pkgver}
+
+ patch -p1 -i ${srcdir}/gcc4.3.patch
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd ${srcdir}/lib${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+
+ cd python
+ python2 setup.py install --root=${pkgdir}
+}
+md5sums=('d5e19bb77edd6ea798ce206bd05ccc5f'
+ '9455555d03e3bd15d488ffdb2287ffa7')
diff --git a/extra/musicbrainz/gcc4.3.patch b/extra/musicbrainz/gcc4.3.patch
new file mode 100644
index 000000000..cc412f3d2
--- /dev/null
+++ b/extra/musicbrainz/gcc4.3.patch
@@ -0,0 +1,57 @@
+diff -Naur libmusicbrainz-2.1.4-orig/lib/c_wrapper.cpp libmusicbrainz-2.1.4/lib/c_wrapper.cpp
+--- libmusicbrainz-2.1.4-orig/lib/c_wrapper.cpp 2003-10-16 16:21:10.000000000 -0600
++++ libmusicbrainz-2.1.4/lib/c_wrapper.cpp 2007-12-16 09:45:21.000000000 -0600
+@@ -24,6 +24,7 @@
+ #include "musicbrainz.h"
+ #include "trm.h"
+ #include "mb_c.h"
++#include <cstring>
+
+ extern "C"
+ {
+diff -Naur libmusicbrainz-2.1.4-orig/lib/comhttpsocket.cpp libmusicbrainz-2.1.4/lib/comhttpsocket.cpp
+--- libmusicbrainz-2.1.4-orig/lib/comhttpsocket.cpp 2006-05-11 12:46:54.000000000 -0600
++++ libmusicbrainz-2.1.4/lib/comhttpsocket.cpp 2007-12-16 09:46:28.000000000 -0600
+@@ -20,6 +20,7 @@
+ #endif
+ #include <stdlib.h>
+ #include <assert.h>
++#include <cstring>
+
+ const char* g_strCOMVer = "libmusicbrainz/"VERSION;
+
+diff -Naur libmusicbrainz-2.1.4-orig/lib/comsocket.cpp libmusicbrainz-2.1.4/lib/comsocket.cpp
+--- libmusicbrainz-2.1.4-orig/lib/comsocket.cpp 2006-05-11 12:46:54.000000000 -0600
++++ libmusicbrainz-2.1.4/lib/comsocket.cpp 2007-12-16 09:46:08.000000000 -0600
+@@ -37,6 +37,7 @@
+ #include <netinet/tcp.h>
+ #include <errno.h>
+ #include <stdio.h>
++#include <cstring>
+ #include <sys/time.h>
+ #include <sys/types.h>
+ #include <unistd.h>
+diff -Naur libmusicbrainz-2.1.4-orig/lib/http.cpp libmusicbrainz-2.1.4/lib/http.cpp
+--- libmusicbrainz-2.1.4-orig/lib/http.cpp 2007-12-16 09:52:48.000000000 -0600
++++ libmusicbrainz-2.1.4/lib/http.cpp 2007-12-16 09:52:36.000000000 -0600
+@@ -31,6 +31,8 @@
+ #endif
+ #include <fcntl.h>
+ #include <errno.h>
++#include <cstring>
++#include <cstdlib>
+
+ #ifdef WIN32
+ #include <winsock.h>
+diff -Naur libmusicbrainz-2.1.4-orig/lib/sigclient.cpp libmusicbrainz-2.1.4/lib/sigclient.cpp
+--- libmusicbrainz-2.1.4-orig/lib/sigclient.cpp 2006-05-11 12:46:54.000000000 -0600
++++ libmusicbrainz-2.1.4/lib/sigclient.cpp 2007-12-16 09:54:48.000000000 -0600
+@@ -33,6 +33,8 @@
+ #pragma warning(disable:4786)
+ #endif
+
++#include <cstring>
++
+ #include "sigclient.h"
+ #include "comhttpsocket.h"
+
diff --git a/extra/mutt/PKGBUILD b/extra/mutt/PKGBUILD
new file mode 100644
index 000000000..659fb1951
--- /dev/null
+++ b/extra/mutt/PKGBUILD
@@ -0,0 +1,47 @@
+# $Id: PKGBUILD 116680 2011-03-24 21:41:03Z bisson $
+# Contributor: tobias [tobias [at] archlinux.org]
+# Maintainer: Gaetan Bisson <bisson@archlinux.org>
+
+pkgname=mutt
+pkgver=1.5.21
+pkgrel=4
+pkgdesc='Small but very powerful text-based mail client'
+url='http://www.mutt.org/'
+license=('GPL')
+backup=('etc/Muttrc')
+arch=('i686' 'x86_64')
+depends=('gpgme' 'ncurses' 'openssl' 'libsasl' 'gdbm' 'libidn' 'mime-types' 'heimdal')
+source=("ftp://ftp.mutt.org/mutt/devel/${pkgname}-${pkgver}.tar.gz")
+sha1sums=('a8475f2618ce5d5d33bff85c0affdf21ab1d76b9')
+
+install=install
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --enable-gpgme \
+ --enable-pop \
+ --enable-imap \
+ --enable-smtp \
+ --enable-hcache \
+ --with-curses=/usr \
+ --with-regex \
+ --with-gss=/usr \
+ --with-ssl=/usr \
+ --with-sasl \
+ --with-idn \
+
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+
+ rm "${pkgdir}"/usr/bin/{flea,muttbug}
+ rm "${pkgdir}"/usr/share/man/man1/{flea,muttbug}.1
+ rm "${pkgdir}"/etc/mime.types{,.dist}
+ install -Dm644 contrib/gpg.rc "${pkgdir}"/etc/Muttrc.gpg.dist
+}
diff --git a/extra/mutt/install b/extra/mutt/install
new file mode 100644
index 000000000..d65675c06
--- /dev/null
+++ b/extra/mutt/install
@@ -0,0 +1,8 @@
+post_install() {
+ cat <<EOF
+
+==> For GPG support, add the following to your muttrc:
+==> source /etc/Muttrc.gpg.dist
+
+EOF
+}
diff --git a/extra/mysql-python/PKGBUILD b/extra/mysql-python/PKGBUILD
new file mode 100644
index 000000000..7d80d1028
--- /dev/null
+++ b/extra/mysql-python/PKGBUILD
@@ -0,0 +1,20 @@
+# $Id: PKGBUILD 115225 2011-03-17 11:58:26Z andrea $
+# Maintainer: Angel 'angvp' Velasquez <angvp[at]archlinux.com.ve>
+# Contributor: damir <damir@archlinux.org>
+
+pkgname=mysql-python
+pkgver=1.2.3
+pkgrel=2
+pkgdesc="MySQL support for Python"
+arch=("i686" "x86_64")
+url="http://mysql-python.sourceforge.net/"
+license=('GPL2')
+depends=('python2' 'libmysqlclient')
+makedepends=('mysql' 'python2-distribute')
+source=("http://downloads.sourceforge.net/${pkgname}/MySQL-python-${pkgver}.tar.gz")
+md5sums=('215eddb6d853f6f4be5b4afc4154292f')
+
+package() {
+ cd ${srcdir}/MySQL-python-${pkgver}
+ python2 setup.py install --root=${pkgdir} --optimize=1
+}
diff --git a/extra/mysql/PKGBUILD b/extra/mysql/PKGBUILD
new file mode 100644
index 000000000..175b2eee5
--- /dev/null
+++ b/extra/mysql/PKGBUILD
@@ -0,0 +1,139 @@
+# $Id: PKGBUILD 115418 2011-03-17 21:33:02Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Douglas Soares de Andrade <douglas@archlinux.org>
+# Contributor: judd <jvinet@zeroflux.org>
+
+pkgbase=mysql
+pkgname=('libmysqlclient' 'mysql-clients' 'mysql')
+pkgver=5.5.10
+pkgrel=2
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://www.mysql.com/"
+makedepends=('cmake' 'openssl' 'tcp_wrappers' 'zlib')
+options=('!libtool')
+source=("http://ftp.gwdg.de/pub/misc/mysql/Downloads/MySQL-5.5/${pkgbase}-${pkgver}.tar.gz"
+ 'mysqld'
+ 'my.cnf'
+ 'fix-mysql-home.patch'
+ 'fix-embedded-crash.patch')
+md5sums=('ee604aff531ff85abeb10cf332c1355a'
+ '2234207625baa29b2ff7d7b4f088abce'
+ '1c949c0dbea5206af0db14942d9927b6'
+ '56fe8b724ca7ae73b9f96cdf4cca1220'
+ 'b2b7ed0289a6d8cce17a68512c0286cc')
+
+build() {
+ cd "${srcdir}"/${pkgbase}-${pkgver}
+ patch -Np1 -i ${srcdir}/fix-mysql-home.patch
+ patch -Np1 -i ${srcdir}/fix-embedded-crash.patch
+
+ cd "${srcdir}"
+ mkdir build
+ cd build
+
+ # CFLAGS/CXXFLAGS as suggested upstream
+ CFLAGS="-fPIC ${CFLAGS} -fno-strict-aliasing -DBIG_JOINS=1 -fomit-frame-pointer" \
+ CXXFLAGS="-fPIC ${CXXFLAGS} -fno-strict-aliasing -DBIG_JOINS=1 -felide-constructors -fno-rtti" \
+
+ cmake ../${pkgbase}-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DMYSQL_DATADIR=/var/lib/mysql \
+ -DSYSCONFDIR=/etc/mysql \
+ -DINSTALL_INFODIR=share/mysql/docs \
+ -DINSTALL_MANDIR=share/man \
+ -DINSTALL_PLUGINDIR=/usr/lib/mysql/plugin \
+ -DINSTALL_SCRIPTDIR=bin \
+ -DINSTALL_INCLUDEDIR=include/mysql \
+ -DINSTALL_DOCREADMEDIR=share/mysql \
+ -DINSTALL_SUPPORTFILESDIR=share/mysql \
+ -DINSTALL_MYSQLSHAREDIR=share/mysql \
+ -DINSTALL_SHAREDIR=share/mysql \
+ -DWITH_READLINE=ON \
+ -DWITH_ZLIB=system \
+ -DWITH_SSL=system \
+ -DWITH_LIBWRAP=ON \
+ -DDEFAULT_CHARSET=utf8 \
+ -DDEFAULT_COLLATION=utf8_general_ci \
+ -DWITH_EXTRA_CHARSETS=complex \
+ -DWITH_EMBEDDED_SERVER=ON \
+ -DMYSQL_UNIX_ADDR=/var/run/mysqld/mysqld.sock \
+ -DENABLED_LOCAL_INFILE=ON \
+ -DWITH_PARTITION_STORAGE_ENGINE=1 \
+ -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
+ -DWITHOUT_ARCHIVE_STORAGE_ENGINE=1 \
+ -DWITHOUT_BLACKHOLE_STORAGE_ENGINE=1 \
+ -DWITHOUT_FEDERATED_STORAGE_ENGINE=1 \
+ -DWITH_INNOBASE_STORAGE_ENGINE=1
+
+ make
+}
+
+package_libmysqlclient(){
+ pkgdesc="MySQL client libraries"
+ depends=('openssl' 'gcc-libs' 'tcp_wrappers')
+
+ cd "${srcdir}"/build
+ for dir in include libmysql libmysqld libservices; do
+ make -C ${dir} DESTDIR="${pkgdir}" install
+ done
+
+ install -d "${pkgdir}/usr/bin"
+ install -m755 scripts/mysql_config "${pkgdir}/usr/bin/"
+ install -d "${pkgdir}/usr/share/man/man1"
+ for man in mysql_config mysql_client_test_embedded mysqltest_embedded; do
+ install -m644 "${srcdir}/${pkgbase}-${pkgver}/man/$man.1" "${pkgdir}/usr/share/man/man1/$man.1"
+ done
+}
+
+package_mysql-clients(){
+ pkgdesc="MySQL client tools"
+ depends=('libmysqlclient')
+
+ cd "${srcdir}"/build
+ make -C client DESTDIR="${pkgdir}" install
+
+ # install man pages
+ install -d "${pkgdir}/usr/share/man/man1"
+ for man in mysql mysqladmin mysqlcheck mysqldump mysqlimport mysqlshow mysqlslap; do
+ install -m644 "${srcdir}/${pkgbase}-${pkgver}/man/$man.1" "${pkgdir}/usr/share/man/man1/$man.1"
+ done
+
+ # provided by mysql
+ rm "${pkgdir}"/usr/bin/{mysql_upgrade,mysqlbinlog,mysqltest}
+}
+
+package_mysql(){
+ pkgdesc="A fast SQL database server"
+ backup=('etc/mysql/my.cnf')
+ install=mysql.install
+ depends=('mysql-clients')
+ optdepends=('perl-dbi' 'perl-dbd-mysql')
+
+ cd "${srcdir}"/build
+ make DESTDIR=${pkgdir} install
+
+ install -Dm644 ${srcdir}/my.cnf ${pkgdir}/etc/mysql/my.cnf
+ install -Dm755 ${srcdir}/mysqld ${pkgdir}/etc/rc.d/mysqld
+
+ # provided by libmysqlclient
+ rm ${pkgdir}/usr/bin/{mysql_config,mysql_client_test_embedded,mysqltest_embedded}
+ rm ${pkgdir}/usr/lib/libmysql*
+ rm -r ${pkgdir}/usr/include/
+ rm ${pkgdir}/usr/share/man/man1/{mysql_config,mysql_client_test_embedded,mysqltest_embedded}.1
+
+ # provided by mysql-clients
+ rm ${pkgdir}/usr/bin/{mysql,mysqladmin,mysqlcheck,mysqldump,mysqlimport,mysqlshow,mysqlslap}
+ rm ${pkgdir}/usr/share/man/man1/{mysql,mysqladmin,mysqlcheck,mysqldump,mysqlimport,mysqlshow,mysqlslap}.1
+
+ # not needed
+ rm -r ${pkgdir}/usr/{mysql-test,sql-bench}
+
+ # These shouldn't be here
+ rm -r ${pkgdir}/usr/docs
+ install -d ${pkgdir}/var/lib/mysql
+ cp -r ${pkgdir}/usr/data/* ${pkgdir}/var/lib/mysql/
+ chmod -R 700 ${pkgdir}/var/lib/mysql
+ rm -r ${pkgdir}/usr/data
+}
diff --git a/extra/mysql/fix-embedded-crash.patch b/extra/mysql/fix-embedded-crash.patch
new file mode 100644
index 000000000..b445fcee0
--- /dev/null
+++ b/extra/mysql/fix-embedded-crash.patch
@@ -0,0 +1,19 @@
+Fix crash in embedded mysql library when mysql_library_init() is invoked
+with argc = 0, as is supposed to be a supported thing to do.
+Patch from upstream bug #57931.
+
+
+diff -Naur mysql-5.5.8.orig/libmysqld/lib_sql.cc mysql-5.5.8/libmysqld/lib_sql.cc
+--- mysql-5.5.8.orig/libmysqld/lib_sql.cc 2010-12-03 12:58:26.000000000 -0500
++++ mysql-5.5.8/libmysqld/lib_sql.cc 2011-01-12 23:10:55.837471629 -0500
+@@ -510,8 +510,8 @@
+ return 1;
+ defaults_argc= *argcp;
+ defaults_argv= *argvp;
+- remaining_argc= argc;
+- remaining_argv= argv;
++ remaining_argc= *argcp;
++ remaining_argv= *argvp;
+
+ /* Must be initialized early for comparison of options name */
+ system_charset_info= &my_charset_utf8_general_ci;
diff --git a/extra/mysql/fix-mysql-home.patch b/extra/mysql/fix-mysql-home.patch
new file mode 100644
index 000000000..054d38938
--- /dev/null
+++ b/extra/mysql/fix-mysql-home.patch
@@ -0,0 +1,16 @@
+mysql 5.5's new cmake-based build scripts forgot about defining
+DEFAULT_HOME_ENV. Upstream at http://bugs.mysql.com/bug.php?id=59280
+
+
+diff -Naur mysql-5.5.8.orig/mysys/CMakeLists.txt mysql-5.5.8/mysys/CMakeLists.txt
+--- mysql-5.5.8.orig/mysys/CMakeLists.txt 2010-12-03 12:58:26.000000000 -0500
++++ mysql-5.5.8/mysys/CMakeLists.txt 2011-01-13 11:58:42.583471734 -0500
+@@ -69,6 +69,8 @@
+ SET(MYSYS_SOURCES ${MYSYS_SOURCES} my_port.c)
+ ENDIF()
+
++ADD_DEFINITIONS( -DDEFAULT_HOME_ENV=MYSQL_HOME)
++
+ ADD_CONVENIENCE_LIBRARY(mysys ${MYSYS_SOURCES})
+ TARGET_LINK_LIBRARIES(mysys dbug strings ${ZLIB_LIBRARY}
+ ${LIBNSL} ${LIBM} ${LIBRT})
diff --git a/extra/mysql/my.cnf b/extra/mysql/my.cnf
new file mode 100644
index 000000000..9a41b4fc3
--- /dev/null
+++ b/extra/mysql/my.cnf
@@ -0,0 +1,145 @@
+# MySQL config file for medium systems.
+#
+# This is for a system with little memory (32M - 64M) where MySQL plays
+# an important part, or systems up to 128M where MySQL is used together with
+# other programs (such as a web server)
+#
+# MySQL programs look for option files in a set of
+# locations which depend on the deployment platform.
+# You can copy this option file to one of those
+# locations. For information about these locations, see:
+# http://dev.mysql.com/doc/mysql/en/option-files.html
+#
+# In this file, you can use all long options that a program supports.
+# If you want to know which options a program supports, run the program
+# with the "--help" option.
+
+# The following options will be passed to all MySQL clients
+[client]
+#password = your_password
+port = 3306
+socket = /var/run/mysqld/mysqld.sock
+
+# Here follows entries for some specific programs
+
+# The MySQL server
+[mysqld]
+port = 3306
+socket = /var/run/mysqld/mysqld.sock
+datadir = /var/lib/mysql
+skip-external-locking
+key_buffer_size = 16M
+max_allowed_packet = 1M
+table_open_cache = 64
+sort_buffer_size = 512K
+net_buffer_length = 8K
+read_buffer_size = 256K
+read_rnd_buffer_size = 512K
+myisam_sort_buffer_size = 8M
+
+# Don't listen on a TCP/IP port at all. This can be a security enhancement,
+# if all processes that need to connect to mysqld run on the same host.
+# All interaction with mysqld must be made via Unix sockets or named pipes.
+# Note that using this option without enabling named pipes on Windows
+# (via the "enable-named-pipe" option) will render mysqld useless!
+#
+skip-networking
+
+# Replication Master Server (default)
+# binary logging is required for replication
+log-bin=mysql-bin
+
+# binary logging format - mixed recommended
+binlog_format=mixed
+
+# required unique id between 1 and 2^32 - 1
+# defaults to 1 if master-host is not set
+# but will not function as a master if omitted
+server-id = 1
+
+# Replication Slave (comment out master section to use this)
+#
+# To configure this host as a replication slave, you can choose between
+# two methods :
+#
+# 1) Use the CHANGE MASTER TO command (fully described in our manual) -
+# the syntax is:
+#
+# CHANGE MASTER TO MASTER_HOST=<host>, MASTER_PORT=<port>,
+# MASTER_USER=<user>, MASTER_PASSWORD=<password> ;
+#
+# where you replace <host>, <user>, <password> by quoted strings and
+# <port> by the master's port number (3306 by default).
+#
+# Example:
+#
+# CHANGE MASTER TO MASTER_HOST='125.564.12.1', MASTER_PORT=3306,
+# MASTER_USER='joe', MASTER_PASSWORD='secret';
+#
+# OR
+#
+# 2) Set the variables below. However, in case you choose this method, then
+# start replication for the first time (even unsuccessfully, for example
+# if you mistyped the password in master-password and the slave fails to
+# connect), the slave will create a master.info file, and any later
+# change in this file to the variables' values below will be ignored and
+# overridden by the content of the master.info file, unless you shutdown
+# the slave server, delete master.info and restart the slaver server.
+# For that reason, you may want to leave the lines below untouched
+# (commented) and instead use CHANGE MASTER TO (see above)
+#
+# required unique id between 2 and 2^32 - 1
+# (and different from the master)
+# defaults to 2 if master-host is set
+# but will not function as a slave if omitted
+#server-id = 2
+#
+# The replication master for this slave - required
+#master-host = <hostname>
+#
+# The username the slave will use for authentication when connecting
+# to the master - required
+#master-user = <username>
+#
+# The password the slave will authenticate with when connecting to
+# the master - required
+#master-password = <password>
+#
+# The port the master is listening on.
+# optional - defaults to 3306
+#master-port = <port>
+#
+# binary logging - not required for slaves, but recommended
+#log-bin=mysql-bin
+
+# Uncomment the following if you are using InnoDB tables
+#innodb_data_home_dir = /var/lib/mysql
+#innodb_data_file_path = ibdata1:10M:autoextend
+#innodb_log_group_home_dir = /var/lib/mysql
+# You can set .._buffer_pool_size up to 50 - 80 %
+# of RAM but beware of setting memory usage too high
+#innodb_buffer_pool_size = 16M
+#innodb_additional_mem_pool_size = 2M
+# Set .._log_file_size to 25 % of buffer pool size
+#innodb_log_file_size = 5M
+#innodb_log_buffer_size = 8M
+#innodb_flush_log_at_trx_commit = 1
+#innodb_lock_wait_timeout = 50
+
+[mysqldump]
+quick
+max_allowed_packet = 16M
+
+[mysql]
+no-auto-rehash
+# Remove the next comment character if you are not familiar with SQL
+#safe-updates
+
+[myisamchk]
+key_buffer_size = 20M
+sort_buffer_size = 20M
+read_buffer = 2M
+write_buffer = 2M
+
+[mysqlhotcopy]
+interactive-timeout
diff --git a/extra/mysql/mysql.install b/extra/mysql/mysql.install
new file mode 100644
index 000000000..9a4479215
--- /dev/null
+++ b/extra/mysql/mysql.install
@@ -0,0 +1,26 @@
+post_install(){
+ groupadd -g 89 mysql &>/dev/null
+ useradd -u 89 -g mysql -d /var/lib/mysql -s /bin/false mysql &>/dev/null
+ usr/bin/mysql_install_db --user=mysql --basedir=/usr
+ chown -R mysql:mysql var/lib/mysql &>/dev/null
+}
+
+post_upgrade(){
+ getent group mysql >/dev/null 2>&1 || groupadd -g 89 mysql &>/dev/null
+ getent passwd mysql >/dev/null 2>&1 || useradd -u 89 -g mysql -d /var/lib/mysql -s /bin/false mysql &>/dev/null
+
+ if [ "$(vercmp $2 5.5)" -lt 0 ]; then
+ echo " >> "
+ echo " >> Major version update. Consider restart the service, and then running mysql_upgrade after it."
+ echo " >> "
+ fi
+}
+
+post_remove(){
+ if getent passwd mysql >/dev/null 2>&1; then
+ userdel mysql
+ fi
+ if getent group mysql >/dev/null 2>&1; then
+ groupdel mysql
+ fi
+}
diff --git a/extra/mysql/mysqld b/extra/mysql/mysqld
new file mode 100755
index 000000000..1ac88a7cc
--- /dev/null
+++ b/extra/mysql/mysqld
@@ -0,0 +1,77 @@
+#!/bin/bash
+
+# general config
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+getPID() {
+ echo $(pgrep -u mysql mysqld 2>/dev/null);
+}
+
+case "$1" in
+ start)
+ stat_busy "Starting MySQL Server"
+ [ ! -d /var/run/mysqld ] && install -d -g mysql -o mysql /var/run/mysqld &>/dev/null
+ if [ -z "$(getPID)" ]; then
+ /usr/bin/mysqld_safe --user=mysql &>/dev/null &
+ if [ $? -gt 0 ]; then
+ stat_fail
+ exit 1
+ else
+ timeo=30
+ while [ $timeo -gt 0 ]; do
+ response=`/usr/bin/mysqladmin -uUNKNOWN_USER ping 2>&1` && break
+ echo "$response" | grep -q "mysqld is alive" && break
+ sleep 1
+ let timeo=${timeo}-1
+ done
+ if [ $timeo -eq 0 ]; then
+ stat_fail
+ exit 1
+ else
+ echo $(getPID) > /var/run/mysqld/mysqld.pid
+ add_daemon mysqld
+ stat_done
+ fi
+ fi
+ else
+ stat_fail
+ exit 1
+ fi
+ ;;
+
+ stop)
+ stat_busy "Stopping MySQL Server"
+ if [ ! -z "$(getPID)" ]; then
+ timeo=30
+ kill $(getPID) &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ exit 1
+ fi
+ while [ ! -z "$(getPID)" -a $timeo -gt 0 ]; do
+ sleep 1
+ let timeo=${timeo}-1
+ done
+ if [ -z "$(getPID)" ]; then
+ rm -f /var/run/mysqld/mysqld.pid &>/dev/null
+ rm_daemon mysqld
+ stat_done
+ else
+ stat_fail
+ exit 1
+ fi
+ else
+ stat_fail
+ exit 1
+ fi
+ ;;
+
+ restart)
+ $0 stop
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
diff --git a/extra/naim/PKGBUILD b/extra/naim/PKGBUILD
new file mode 100644
index 000000000..a6be5dcb1
--- /dev/null
+++ b/extra/naim/PKGBUILD
@@ -0,0 +1,20 @@
+# $Id: PKGBUILD 31166 2009-03-24 21:08:09Z tpowa $
+# Maintainer: dorphell <dorphell@archlinux.org>
+pkgname=naim
+pkgver=0.11.8.3.2
+pkgrel=1
+pkgdesc="An ncurses AOL Instant Messenger and IRC client."
+arch=(i686 x86_64)
+license=('GPL2')
+url="http://naim.n.ml.org"
+depends=('ncurses')
+source=(http://naim.googlecode.com/files/$pkgname-$pkgver.tar.bz2)
+options=(!makeflags)
+
+build() {
+ cd $startdir/src/$pkgname-$pkgver
+ ./configure --prefix=/usr
+ make || return 1
+ make DESTDIR=$startdir/pkg install
+}
+md5sums=('c9622e3f75d56310829f98fa4dae1f78')
diff --git a/extra/nasm/PKGBUILD b/extra/nasm/PKGBUILD
new file mode 100644
index 000000000..fd0720e05
--- /dev/null
+++ b/extra/nasm/PKGBUILD
@@ -0,0 +1,42 @@
+# $Id: PKGBUILD 102775 2010-12-11 05:11:43Z eric $
+# Maintainer: Aaron Griffin <aaron@archlinux.org>
+
+pkgbase=nasm
+pkgname=('nasm' 'nasm-doc')
+pkgver=2.09.04
+pkgrel=1
+arch=('i686' 'x86_64')
+url="http://www.nasm.us"
+license=('BSD')
+makedepends=('ghostscript')
+source=(http://www.nasm.us/pub/nasm/releasebuilds/${pkgver}/${pkgbase}-${pkgver}.tar.bz2)
+md5sums=('c11f083a501adae843d0bc3e7c106c73')
+sha1sums=('87fb3f1d277f57cfd86408faa28685df0c887f59')
+
+build() {
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ ./configure --prefix=/usr
+ make everything
+}
+
+package_nasm() {
+ pkgdesc="An 80x86 assembler designed for portability and modularity"
+ depends=('glibc')
+ install=nasm.install
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ make INSTALLROOT="${pkgdir}" install install_rdf
+ install -d "${pkgdir}/usr/share/info"
+ install -m644 doc/info/* "${pkgdir}/usr/share/info/"
+ install -D -m644 LICENSE "${pkgdir}/usr/share/licenses/nasm/LICENSE"
+}
+
+package_nasm-doc() {
+ pkgdesc="An 80x86 assembler designed for portability and modularity (manuals)"
+
+ cd "${srcdir}/${pkgbase}-${pkgver}/doc"
+ install -d "${pkgdir}/usr/share/doc/nasm/html"
+ install -m644 html/* "${pkgdir}/usr/share/doc/nasm/html/"
+ install -m644 nasmdoc.ps nasmdoc.pdf nasmdoc.txt "${pkgdir}/usr/share/doc/nasm/"
+ install -D -m644 ../LICENSE "${pkgdir}/usr/share/licenses/nasm-doc/LICENSE"
+}
diff --git a/extra/nasm/nasm.install b/extra/nasm/nasm.install
new file mode 100644
index 000000000..e4baa9808
--- /dev/null
+++ b/extra/nasm/nasm.install
@@ -0,0 +1,20 @@
+infodir=usr/share/info
+filelist=(nasm.info)
+
+post_install() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info $infodir/$file.gz $infodir/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info --delete $infodir/$file.gz $infodir/dir 2> /dev/null
+ done
+}
diff --git a/extra/nautilus-open-terminal/PKGBUILD b/extra/nautilus-open-terminal/PKGBUILD
new file mode 100644
index 000000000..b2b7aed0f
--- /dev/null
+++ b/extra/nautilus-open-terminal/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id: PKGBUILD 114747 2011-03-15 20:56:03Z ibiru $
+# Maintainer : Biru Ionut <ionut@archlinux.ro>
+# Contributor: Roman Kyrylych <Roman.Kyrylych@gmail.com>
+# Contributor: William Rea <sillywilly@gmail.com>
+pkgname=nautilus-open-terminal
+pkgver=0.18
+pkgrel=2
+pkgdesc="A nautilus plugin for opening terminals in arbitrary local paths"
+arch=('i686' 'x86_64')
+url="http://ftp.gnome.org/pub/GNOME/sources/nautilus-open-terminal"
+license=('GPL')
+depends=('nautilus')
+makedepends=('pkgconfig' 'gettext' 'intltool')
+install=nautilus-open-terminal.install
+source=(ftp://ftp.gnome.org/pub/GNOME/sources/${pkgname}/${pkgver}/${pkgname}-${pkgver}.tar.gz)
+options=('!libtool')
+md5sums=('c0718d28e6d9984c0bdf92c30ff72d49')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ ./configure --prefix=/usr --sysconfdir=/etc --disable-static
+
+ make
+ make GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 DESTDIR="${pkgdir}" install
+
+ install -dm755 "${pkgdir}/usr/share/gconf/schemas"
+ gconf-merge-schema "${pkgdir}/usr/share/gconf/schemas/${pkgname}.schemas" --domain ${pkgname} "${pkgdir}"/etc/gconf/schemas/*.schemas
+ rm -rf "${pkgdir}"/etc/gconf/schemas
+}
+
diff --git a/extra/nautilus-open-terminal/nautilus-open-terminal.install b/extra/nautilus-open-terminal/nautilus-open-terminal.install
new file mode 100644
index 000000000..f7cdb9507
--- /dev/null
+++ b/extra/nautilus-open-terminal/nautilus-open-terminal.install
@@ -0,0 +1,17 @@
+pkgname=nautilus-open-terminal
+
+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/extra/nautilus-sendto/PKGBUILD b/extra/nautilus-sendto/PKGBUILD
new file mode 100644
index 000000000..2059acf6f
--- /dev/null
+++ b/extra/nautilus-sendto/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 91946 2010-09-28 15:01:54Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Eduardo Romero <eduardo@archlinux.org>
+# Contributor: Tor Krill <tor@krill.nu>
+
+pkgname=nautilus-sendto
+pkgver=2.32.0
+pkgrel=1
+pkgdesc="Nautilus context menu for sending files."
+arch=('i686' 'x86_64')
+url="http://download.gnome.org/sources/nautilus-sendto/"
+license=('GPL')
+groups=('gnome-extra')
+depends=('evolution-data-server>=2.32.0' 'nautilus>=2.32.0' 'dconf')
+makedepends=('pidgin' 'gajim' 'gettext' 'intltool')
+options=('!libtool' '!emptydirs')
+install=nautilus-sendto.install
+source=(http://ftp.gnome.org/pub/GNOME/sources/nautilus-sendto/2.32/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('890090b24381d91f079610d5454cb786a3ecefc91fa06649b2222be9bb02269a')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-schemas-compile
+ make
+ make DESTDIR="${pkgdir}" install
+
+ rm -f "${pkgdir}//usr/lib/nautilus-sendto/plugins/libnstbluetooth.so"
+}
diff --git a/extra/nautilus-sendto/nautilus-sendto.install b/extra/nautilus-sendto/nautilus-sendto.install
new file mode 100644
index 000000000..e5204bcab
--- /dev/null
+++ b/extra/nautilus-sendto/nautilus-sendto.install
@@ -0,0 +1,11 @@
+post_install() {
+ usr/bin/glib-compile-schemas usr/share/glib-2.0/schemas
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ post_install $1
+}
diff --git a/extra/nautilus/PKGBUILD b/extra/nautilus/PKGBUILD
new file mode 100644
index 000000000..596167539
--- /dev/null
+++ b/extra/nautilus/PKGBUILD
@@ -0,0 +1,36 @@
+# $Id: PKGBUILD 104094 2010-12-28 19:26:26Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=nautilus
+pkgver=2.32.2.1
+pkgrel=1
+pkgdesc="The GNOME shell and file manager"
+arch=('i686' 'x86_64')
+license=('GPL')
+depends=('libexif>=0.6.19' 'gnome-desktop>=2.32.1' 'exempi>=2.1.1' 'libunique>=1.1.6' 'hicolor-icon-theme' 'gvfs>=1.6.6' 'desktop-file-utils')
+makedepends=('intltool' 'gobject-introspection' 'namcap')
+replaces=('gnome-volume-manager')
+url="http://www.gnome.org"
+groups=('gnome')
+options=('!libtool' '!emptydirs')
+install=nautilus.install
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.32/${pkgname}-${pkgver}.tar.bz2
+ nautilus-condrestart.patch)
+sha256sums=('802dacc98c697afea2e6201dab1c8c800809f235fff39857983efb4340ecc303'
+ 'f825292ef26274d3044272ca9f25095391cc49d30fb0056e7ed7346a1b4d106c')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i "${srcdir}/nautilus-condrestart.patch"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-static \
+ --libexecdir=/usr/lib/nautilus \
+ --disable-update-mimedb \
+ --disable-packagekit
+ make
+ 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 nautilus ${pkgdir}/etc/gconf/schemas/*.schemas
+ rm -f ${pkgdir}/etc/gconf/schemas/*.schemas
+}
diff --git a/extra/nautilus/nautilus-condrestart.patch b/extra/nautilus/nautilus-condrestart.patch
new file mode 100644
index 000000000..9634f35eb
--- /dev/null
+++ b/extra/nautilus/nautilus-condrestart.patch
@@ -0,0 +1,16 @@
+diff -up nautilus-2.25.93/data/nautilus.desktop.in.condrestart nautilus-2.25.93/nautilus.desktop.in
+--- nautilus-2.25.93/data/nautilus.desktop.in.condrestart 2009-03-12 10:49:41.449753624 -0400
++++ nautilus-2.25.93/data/nautilus.desktop.in 2009-03-12 10:49:51.814754208 -0400
+@@ -17,3 +17,4 @@ X-GNOME-Autostart-Phase=Desktop
+ X-GNOME-Autostart-Notify=true
+ X-GNOME-AutoRestart=true
+ X-GNOME-Provides=filemanager
++AutostartCondition=GNOME /apps/nautilus/preferences/show_desktop
+diff -up nautilus-2.25.93/data/nautilus.desktop.in.in.condrestart nautilus-2.25.93/nautilus.desktop.in.in
+--- nautilus-2.25.93/data/nautilus.desktop.in.in.condrestart 2009-03-12 10:47:41.681753834 -0400
++++ nautilus-2.25.93/data/nautilus.desktop.in.in 2009-03-12 10:49:29.663754303 -0400
+@@ -17,3 +17,4 @@ X-GNOME-Autostart-Phase=Desktop
+ X-GNOME-Autostart-Notify=true
+ X-GNOME-AutoRestart=true
+ X-GNOME-Provides=filemanager
++AutostartCondition=GNOME /apps/nautilus/preferences/show_desktop
diff --git a/extra/nautilus/nautilus.install b/extra/nautilus/nautilus.install
new file mode 100644
index 000000000..1d818c955
--- /dev/null
+++ b/extra/nautilus/nautilus.install
@@ -0,0 +1,26 @@
+pkgname=nautilus
+
+post_install() {
+ usr/sbin/gconfpkg --install ${pkgname}
+ 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() {
+ pre_remove $1
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ usr/sbin/gconfpkg --uninstall ${pkgname}
+}
+
+post_remove() {
+ update-desktop-database -q
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+ update-mime-database usr/share/mime > /dev/null
+}
diff --git a/extra/nbsmtp/PKGBUILD b/extra/nbsmtp/PKGBUILD
new file mode 100644
index 000000000..406caf487
--- /dev/null
+++ b/extra/nbsmtp/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id: PKGBUILD 75557 2010-04-01 20:23:24Z giovanni $
+# Maintainer: dorphell <dorphell@archlinux.org>
+# Contributor: Sarah Hay <sarahhay@mb.sympatico.ca>
+
+pkgname=nbsmtp
+pkgver=1.00
+pkgrel=3
+pkgdesc="No-Brainer SMTP client suitable to run in chroot jails, embeded systems, laptops, and workstations"
+arch=(i686 x86_64)
+url="http://nbsmtp.ferdyx.org/"
+license=('GPL')
+depends=('openssl')
+source=(http://www.it.uc3m.es/~ferdy/nbsmtp/$pkgname-$pkgver.tar.bz2 build.patch)
+md5sums=('0c6a200027a6f7f61f44b374261aa52f' '043236152fecb550d80ab3cd84711cd3')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ patch -Np0 -i ../build.patch || return 1
+ ./configure --prefix=/usr --enable-ssl || return 1
+ make || return 1
+ make prefix=$pkgdir/usr mandir=$pkgdir/usr/share/man install || return 1
+}
diff --git a/extra/nbsmtp/build.patch b/extra/nbsmtp/build.patch
new file mode 100644
index 000000000..325b16308
--- /dev/null
+++ b/extra/nbsmtp/build.patch
@@ -0,0 +1,15 @@
+--- hmac_md5.c~ 2005-07-28 19:29:07.000000000 +0200
++++ hmac_md5.c 2006-06-04 15:49:09.000000000 +0200
+@@ -4,10 +4,11 @@
+ *
+ * Code taken from RFC2104.
+ */
+-
++#include <stdlib.h>
+ #include <openssl/md5.h>
+ #include <string.h>
+
++
+ #include "hmac_md5.h"
+
+ /**
diff --git a/extra/ncftp/PKGBUILD b/extra/ncftp/PKGBUILD
new file mode 100644
index 000000000..921f49e52
--- /dev/null
+++ b/extra/ncftp/PKGBUILD
@@ -0,0 +1,34 @@
+# $Id: PKGBUILD 107177 2011-01-22 08:26:40Z andrea $
+# Maintainer:
+# Contributor: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Paul Mattal <paul@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=ncftp
+pkgver=3.2.5
+pkgrel=1
+pkgdesc="A set of free application programs implementing FTP"
+url="http://www.ncftp.com/"
+arch=('i686' 'x86_64')
+license=('custom')
+depends=('ncurses')
+source=("ftp://ftp.ncftp.com/ncftp/$pkgname-$pkgver-src.tar.bz2")
+md5sums=('8b569165c03302410927a14d7b8a6aef')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ install -d ${pkgdir}/usr/share
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make prefix=${pkgdir}/usr mandir=${pkgdir}/usr/share/man install
+
+ # Install license
+ install -Dm644 doc/LICENSE.txt \
+ ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+}
diff --git a/extra/ncmpc/PKGBUILD b/extra/ncmpc/PKGBUILD
new file mode 100644
index 000000000..21763b763
--- /dev/null
+++ b/extra/ncmpc/PKGBUILD
@@ -0,0 +1,36 @@
+# $Id: PKGBUILD 92103 2010-09-29 06:29:55Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: damir <damir@archlinux.org>
+# Contributor: Daniel Bainton <dpb [at] backarrow.org>
+
+pkgname=ncmpc
+pkgver=0.18
+pkgrel=2
+pkgdesc="A ncurses (command line) interface for MPD"
+arch=("i686" "x86_64")
+url="http://mpd.wikia.com/wiki/Client:Ncmpc"
+license=('GPL')
+depends=('ncurses' 'glib2' 'libmpdclient')
+optdepends=('python2: to enable lyrics plugin'
+ 'ruby: to enable lyrics plugin')
+source=("http://downloads.sourceforge.net/musicpd/${pkgname}-${pkgver}.tar.bz2")
+md5sums=('9f07e8289b710c7c41b3c80ba73fed76')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ sed -i 's#python#python2#' lyrics/30-leoslyrics.py
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --enable-lyrics-screen \
+ --with-lyrics-plugin-dir=/usr/share/ncmpc/lyrics
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+
+ install -d ${pkgdir}/usr/share/ncmpc/lyrics
+ install -m755 lyrics/{10-hd.sh,15-leoslyrics.sh,20-lyricwiki.rb,30-leoslyrics.py} \
+ ${pkgdir}/usr/share/ncmpc/lyrics
+}
diff --git a/extra/ndesk-dbus-glib/PKGBUILD b/extra/ndesk-dbus-glib/PKGBUILD
new file mode 100644
index 000000000..b25ce9ce5
--- /dev/null
+++ b/extra/ndesk-dbus-glib/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 33728 2009-04-04 18:41:25Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: tardo <tardo@nagi-fanboi.net>
+
+pkgname=ndesk-dbus-glib
+pkgver=0.4.1
+pkgrel=2
+pkgdesc="C# GLib implementation of D-Bus"
+arch=('i686' 'x86_64')
+url="http://www.ndesk.org/DBusSharp"
+license=('custom')
+depends=('ndesk-dbus>=0.6')
+makedepends=('pkgconfig')
+options=(!makeflags)
+source=(http://www.ndesk.org/archive/dbus-sharp/$pkgname-$pkgver.tar.gz)
+md5sums=('7faf8770b214956fa9de009def550826')
+
+build() {
+ cd $startdir/src/$pkgname-$pkgver
+ export MONO_SHARED_DIR="${startdir}/src/.wabi"
+ mkdir -p "${MONO_SHARED_DIR}"
+ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var
+ make || return 1
+ make DESTDIR=$startdir/pkg install || return 1
+ install -D COPYING $startdir/pkg/usr/share/licenses/$pkgname/COPYING
+}
diff --git a/extra/nedit/ChangeLog b/extra/nedit/ChangeLog
new file mode 100644
index 000000000..f7e102118
--- /dev/null
+++ b/extra/nedit/ChangeLog
@@ -0,0 +1,5 @@
+2009-07-29 Eric Belanger <eric@archlinux.org>
+
+ * nedit 5.5-5
+ * FHS man pages
+ * Added ChangeLog
diff --git a/extra/nedit/PKGBUILD b/extra/nedit/PKGBUILD
new file mode 100644
index 000000000..8cf610d95
--- /dev/null
+++ b/extra/nedit/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 47944 2009-07-29 19:36:14Z eric $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk> and Dale Blount <dale@archlinux.org>
+
+pkgname=nedit
+pkgver=5.5
+pkgrel=5
+pkgdesc="A Unix text editor for programmers and general users"
+arch=('i686' 'x86_64')
+url="http://www.nedit.org/"
+license=('GPL')
+depends=('lesstif' 'libxpm')
+source=(http://www.nedit.org/ftp/v5_5/${pkgname}-${pkgver}-src.tar.bz2 nedit_xorg_composite_fix.patch)
+md5sums=('48cb3dce52d44988f3a4d7c6f47b6bbe' 'ae1f56ae9b23163882051720ac52412d')
+sha1sums=('7d3c87a793a5047cf857af1ac82e39f3b33e8a87' '1f6c75075a6bdc7b0dd8ca89d8117d68af8fc54e')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -p1 < ../nedit_xorg_composite_fix.patch || return 1
+ sed -i 's/-Wl,-Bstatic//' makefiles/Makefile.linux || return 1
+ sed -i 's|fgets|//fgets|' util/check_lin_tif.c || return 1
+ sed -i "s/CFLAGS=-O/CFLAGS=${CFLAGS} -DBUILD_UNTESTED_NEDIT/" makefiles/Makefile.linux || return 1
+ sed -i 's|"/bin/csh"|"/bin/sh"|' source/preferences.c || return 1
+
+ make linux || return 1
+ install -D -m755 source/nedit "${pkgdir}/usr/bin/nedit" || return 1
+ install -D -m755 source/nc "${pkgdir}/usr/bin/nedit-client" || return 1
+ install -D -m644 doc/nedit.man "${pkgdir}/usr/share/man/man1/nedit.1" || return 1
+ install -D -m644 doc/nc.man "${pkgdir}/usr/share/man/man1/nedit-client.1" || return 1
+}
diff --git a/extra/nedit/nedit_xorg_composite_fix.patch b/extra/nedit/nedit_xorg_composite_fix.patch
new file mode 100644
index 000000000..0ed0465a8
--- /dev/null
+++ b/extra/nedit/nedit_xorg_composite_fix.patch
@@ -0,0 +1,18 @@
+--- nedit-5.5/util/misc.c.orig 2007-12-03 21:57:15.000000000 +0000
++++ nedit-5.5/util/misc.c 2007-12-03 21:59:30.000000000 +0000
+@@ -475,6 +475,15 @@
+ bestClass = 0;
+ bestVisual = 0;
+ for (i=0; i < nVis; i++) {
++ if (visList[i].depth >= 32 &&
++ strstr(ServerVendor(display), "X.Org") != 0) {
++ /* Xorg 6.8.* 32-bit visuals (with alpha-channel) cause a lot
++ of problems, so we have to skip them.
++ Users can achieve the same effect with older versions of
++ NEdit by setting the environment variable
++ XLIB_SKIP_ARGB_VISUALS. */
++ continue;
++ }
+ if (visList[i].depth > maxDepth) {
+ maxDepth = visList[i].depth;
+ bestClass = 0;
diff --git a/extra/neon/PKGBUILD b/extra/neon/PKGBUILD
new file mode 100644
index 000000000..c87a5f0c2
--- /dev/null
+++ b/extra/neon/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 77208 2010-04-11 13:31:45Z pierre $
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+# Maintainer: Juergen Hoetzel <juergen@archlinux.org>
+
+# KEEP LIBTOOL FILES!
+pkgname=neon
+pkgver=0.29.3
+pkgrel=2
+pkgdesc="HTTP and WebDAV client library with a C interface"
+arch=('i686' 'x86_64')
+license=('GPL' 'LGPL')
+depends=('heimdal' 'expat' 'ca-certificates')
+url="http://www.webdav.org/neon/"
+source=("http://www.webdav.org/neon/${pkgname}-${pkgver}.tar.gz")
+md5sums=('ba1015b59c112d44d7797b62fe7bee51')
+options=('libtool')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr \
+ --with-expat --enable-shared --disable-static \
+ --with-ssl=openssl --with-ca-bundle=/etc/ssl/certs/ca-certificates.crt
+ make || return 1
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/net-snmp/PKGBUILD b/extra/net-snmp/PKGBUILD
new file mode 100644
index 000000000..5506932b1
--- /dev/null
+++ b/extra/net-snmp/PKGBUILD
@@ -0,0 +1,42 @@
+# $Id: PKGBUILD 112465 2011-03-05 03:33:40Z eric $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+# Contributor: Dale Blount <dale@archlinux.org>
+
+pkgname=net-snmp
+pkgver=5.6.1
+pkgrel=1
+pkgdesc="A suite of applications used to implement SNMP v1, SNMP v2c and SNMP v3 using both IPv4 and IPv6"
+arch=('i686' 'x86_64')
+url="http://www.net-snmp.org/"
+license=('custom')
+depends=('openssl' 'tcp_wrappers' 'libnl')
+makedepends=('setuptools')
+optdepends=('perl-term-readkey: for snmpcheck application'
+ 'perl-tk: for snmpcheck and tkmib applications'
+ 'python2: for the python modules')
+provides=('ucd-snmp')
+options=('!libtool' '!makeflags' '!emptydirs')
+source=("http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.gz"
+ 'snmpd.rc')
+md5sums=('b4e30ead5783b0bb1d280172c6095ea4' '9f0d13676ba1fae1eb7eb178edd85b43')
+sha1sums=('45bbf1295253d5379a5d1efd918593160387fd00' '2c679b564a2c319d9ce2714a9776aa0e6d89c60a')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ sed -i -e "s:\(install --basedir=\$\$dir\):\1 --root='${pkgdir}':" Makefile.in
+ ./configure --prefix=/usr --sysconfdir=/etc --mandir=/usr/share/man \
+ --enable-ucd-snmp-compatibility --enable-ipv6 --with-libwrap --with-python-modules \
+ --with-default-snmp-version="3" --with-sys-contact="root@localhost" \
+ --with-sys-location="Unknown" --with-logfile="/var/log/snmpd.log" \
+ --with-mib-modules="host misc/ipfwacc ucd-snmp/diskio tunnel ucd-snmp/dlmod" \
+ --with-persistent-directory="/var/net-snmp" \
+ PYTHONPROG=/usr/bin/python2
+ make NETSNMP_DONT_CHECK_VERSION=1 LDFLAGS+="-Wl,-rpath -Wl,/usr/lib/perl5/core_perl/CORE"
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" INSTALL_PREFIX="${pkgdir}" INSTALLDIRS=vendor install
+ install -D -m755 "${srcdir}/snmpd.rc" "${pkgdir}/etc/rc.d/snmpd"
+ install -D -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/COPYING"
+}
diff --git a/extra/net-snmp/libnl-2.patch b/extra/net-snmp/libnl-2.patch
new file mode 100644
index 000000000..7c140fe83
--- /dev/null
+++ b/extra/net-snmp/libnl-2.patch
@@ -0,0 +1,67 @@
+diff -Nur net-snmp-5.5.orig//agent/mibgroup/mibII/tcpTable.c net-snmp-5.5//agent/mibgroup/mibII/tcpTable.c
+--- net-snmp-5.5.orig//agent/mibgroup/mibII/tcpTable.c 2009-06-13 04:02:02.000000000 +0200
++++ net-snmp-5.5//agent/mibgroup/mibII/tcpTable.c 2011-01-15 10:31:03.579735957 +0100
+@@ -555,8 +555,10 @@
+ static int
+ tcpTable_load_netlink()
+ {
++ int err;
++
+ /* TODO: perhaps use permanent nl handle? */
+- struct nl_handle *nl = nl_handle_alloc();
++ struct nl_sock *nl = nl_socket_alloc();
+
+ if (nl == NULL) {
+ DEBUGMSGTL(("mibII/tcpTable", "Failed to allocate netlink handle\n"));
+@@ -564,10 +566,10 @@
+ return -1;
+ }
+
+- if (nl_connect(nl, NETLINK_INET_DIAG) < 0) {
+- DEBUGMSGTL(("mibII/tcpTable", "Failed to connect to netlink: %s\n", nl_geterror()));
+- snmp_log(LOG_ERR, "snmpd: Couldn't connect to netlink: %s\n", nl_geterror());
+- nl_handle_destroy(nl);
++ if ((err = nl_connect(nl, NETLINK_INET_DIAG)) < 0) {
++ DEBUGMSGTL(("mibII/tcpTable", "Failed to connect to netlink: %s\n", nl_geterror(err)));
++ snmp_log(LOG_ERR, "snmpd: Couldn't connect to netlink: %s\n", nl_geterror(err));
++ nl_socket_free(nl);
+ return -1;
+ }
+
+@@ -579,10 +581,10 @@
+ struct nl_msg *nm = nlmsg_alloc_simple(TCPDIAG_GETSOCK, NLM_F_ROOT|NLM_F_MATCH|NLM_F_REQUEST);
+ nlmsg_append(nm, &req, sizeof(struct inet_diag_req), 0);
+
+- if (nl_send_auto_complete(nl, nm) < 0) {
+- DEBUGMSGTL(("mibII/tcpTable", "nl_send_autocomplete(): %s\n", nl_geterror()));
+- snmp_log(LOG_ERR, "snmpd: nl_send_autocomplete(): %s\n", nl_geterror());
+- nl_handle_destroy(nl);
++ if ((err = nl_send_auto_complete(nl, nm)) < 0) {
++ DEBUGMSGTL(("mibII/tcpTable", "nl_send_autocomplete(): %s\n", nl_geterror(err)));
++ snmp_log(LOG_ERR, "snmpd: nl_send_autocomplete(): %s\n", nl_geterror(err));
++ nl_socket_free(nl);
+ return -1;
+ }
+ nlmsg_free(nm);
+@@ -593,9 +595,9 @@
+
+ while (running) {
+ if ((len = nl_recv(nl, &peer, &buf, NULL)) <= 0) {
+- DEBUGMSGTL(("mibII/tcpTable", "nl_recv(): %s\n", nl_geterror()));
+- snmp_log(LOG_ERR, "snmpd: nl_recv(): %s\n", nl_geterror());
+- nl_handle_destroy(nl);
++ DEBUGMSGTL(("mibII/tcpTable", "nl_recv(): %s\n", nl_geterror(len)));
++ snmp_log(LOG_ERR, "snmpd: nl_recv(): %s\n", nl_geterror(len));
++ nl_socket_free(nl);
+ return -1;
+ }
+
+@@ -644,7 +646,7 @@
+ free(buf);
+ }
+
+- nl_handle_destroy(nl);
++ nl_socket_free(nl);
+
+ if (tcp_head) {
+ DEBUGMSGTL(("mibII/tcpTable", "Loaded TCP Table using netlink\n"));
diff --git a/extra/net-snmp/snmpd.rc b/extra/net-snmp/snmpd.rc
new file mode 100644
index 000000000..9f1b83f64
--- /dev/null
+++ b/extra/net-snmp/snmpd.rc
@@ -0,0 +1,38 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+PID=`pidof -o %PPID /usr/sbin/snmpd`
+case "$1" in
+ start)
+ stat_busy "Starting Net-SNMP"
+ [ -z "$PID" ] && /usr/sbin/snmpd
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ echo $PID > /var/run/snmpd.pid
+ add_daemon snmpd
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping Net-SNMP"
+ [ ! -z "$PID" ] && kill $PID &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm /var/run/snmpd.pid
+ rm_daemon snmpd
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 2
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
diff --git a/extra/netcdf/PKGBUILD b/extra/netcdf/PKGBUILD
new file mode 100644
index 000000000..de7e3e913
--- /dev/null
+++ b/extra/netcdf/PKGBUILD
@@ -0,0 +1,33 @@
+# $Id: PKGBUILD 94910 2010-10-12 12:58:13Z ronald $
+# Maintainer: Ronald van Haren <ronald.archlinux.org>
+# Contributor: damir <damir@archlinux.org>
+
+pkgname=netcdf
+pkgver=4.1.1
+pkgrel=3
+pkgdesc="network Common Data Form interface for array-oriented data access and corresponding library"
+arch=("i686" "x86_64")
+url="http://www.unidata.ucar.edu/downloads/netcdf/index.jsp"
+depends=('gcc-libs' 'hdf5' 'gcc-fortran')
+options=('force' '!libtool' '!makeflags')
+license=('custom')
+source=(http://www.unidata.ucar.edu/downloads/netcdf/ftp/netcdf-${pkgver}.tar.gz)
+sha1sums=('6fece208825b978fc2240732f6f57927d71a0552')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr --enable-shared --enable-netcdf-4
+ make
+ make check
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ install -m755 -d ${pkgdir}/usr/lib
+ install -m755 -d ${pkgdir}/usr/share/man
+ make DESTDIR=${pkgdir} install
+
+ install -Dm644 ${srcdir}/${pkgname}-${pkgver}/COPYRIGHT \
+ ${pkgdir}/usr/share/licenses/${pkgname}/COPYRIGHT
+}
diff --git a/extra/netkit-bsd-finger/LICENSE b/extra/netkit-bsd-finger/LICENSE
new file mode 100644
index 000000000..78254519a
--- /dev/null
+++ b/extra/netkit-bsd-finger/LICENSE
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 1989 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Tony Nardo of the Johns Hopkins University/Applied Physics Lab.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
diff --git a/extra/netkit-bsd-finger/PKGBUILD b/extra/netkit-bsd-finger/PKGBUILD
new file mode 100644
index 000000000..ea1987985
--- /dev/null
+++ b/extra/netkit-bsd-finger/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 78053 2010-04-19 08:47:06Z dgriffiths $
+# Maintainer: dorphell <dorphell@archlinux.org>
+pkgname=netkit-bsd-finger
+pkgver=0.17
+pkgrel=5
+pkgdesc="bsd-finger ported to Linux"
+arch=('i686' 'x86_64')
+url="ftp://ftp.uk.linux.org/pub/linux/Networking/netkit"
+license=('BSD')
+depends=('glibc' 'xinetd')
+backup=('etc/xinetd.d/finger')
+source=(ftp://ftp.uk.linux.org/pub/linux/Networking/netkit/bsd-finger-${pkgver}.tar.gz finger.xinetd LICENSE)
+md5sums=('52bf281aac8814bf56cdc92f7661ee75' 'a8682004dc8dee356065162bde892b47'\
+ '5fc568418a0379fc3a358ed1c2523b44')
+
+build() {
+ cd ${srcdir}/bsd-finger-${pkgver}
+ install -d ${pkgdir}/usr/{bin,sbin} ${pkgdir}/usr/share/man/{man1,man8}
+ ./configure --prefix=/usr || return 1
+ sed -i 's@include <sys/time.h>@include <time.h>@' finger/lprint.c || return 1
+ sed -i 's@include <sys/time.h>@include <time.h>@' finger/sprint.c || return 1
+ make || return 1
+ make INSTALLROOT=${pkgdir} MANDIR=/usr/share/man install || return 1
+ install -D -m644 ${srcdir}/finger.xinetd ${pkgdir}/etc/xinetd.d/finger || return 1
+ install -D -m644 ../LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+}
diff --git a/extra/netkit-bsd-finger/finger.xinetd b/extra/netkit-bsd-finger/finger.xinetd
new file mode 100644
index 000000000..cc9a8b15d
--- /dev/null
+++ b/extra/netkit-bsd-finger/finger.xinetd
@@ -0,0 +1,8 @@
+service finger
+{
+ socket_type = stream
+ wait = no
+ user = nobody
+ server = /usr/sbin/in.fingerd
+ disable = yes
+}
diff --git a/extra/netpbm/PKGBUILD b/extra/netpbm/PKGBUILD
new file mode 100644
index 000000000..6b92f5ef5
--- /dev/null
+++ b/extra/netpbm/PKGBUILD
@@ -0,0 +1,84 @@
+# $Id: PKGBUILD 104760 2011-01-04 20:54:47Z eric $
+# Maintainer: Kevin Piche <kevin@archlinux.org>
+
+pkgname=netpbm
+pkgver=10.47.24
+pkgrel=1
+pkgdesc="A toolkit for manipulation of graphic images"
+arch=('i686' 'x86_64')
+license=('custom' 'BSD' 'GPL' 'LGPL')
+url="http://netpbm.sourceforge.net/"
+depends=('perl' 'libjpeg' 'libpng' 'libtiff' 'libxml2')
+makedepends=('python2')
+options=('!makeflags')
+# Releases after 10.34 are available via SVN only.
+# Get Stable tarball here: http://netpbm.sourceforge.net/release.html#tarball
+# Get version number in version.mk
+# Get docs with: wget --recursive --relative -nH http://netpbm.sourceforge.net/doc/
+source=(ftp://ftp.archlinux.org/other/netpbm/${pkgname}-${pkgver}.tar.gz \
+ ftp://ftp.archlinux.org/other/netpbm/netpbm-doc-22Feb2009.tar.xz \
+ libpng-1.4.patch netpbm-CAN-2005-2471.patch \
+ netpbm-security-code.patch netpbm-security-scripts.patch)
+md5sums=('debf962e9a5531fd3e57143d38165eac' '48efce0093c5f242bce3072958fe88c3'\
+ '6a8319e77f2d41881ee11c86b78c51d0' '07ee863e6f951250e8d0a08243c828c7'\
+ 'fac4c9bedff9d90ac5a66e93d8c2eb33' 'cbb689129c82d16360d7f840b86789c7')
+sha1sums=('02a85bffb8d5771011c17067e07fded26a455ee9' 'dfeba9f9a5fe987d64db0aadb5ca8c1b20fcead2'\
+ 'ab2e67374871b8b6c0c8b69a24e3502e68487759' '456b76004622479f6ee81107c54b5211a1663a6a'\
+ '5af979e8fb7d3bbb7e731eed62326bb594bc91b3' '2ac31f714121e08e47af9337c6bbaab3cbfc5c75')
+
+build() {
+ cd "${srcdir}/stable"
+ patch -p1 < ../libpng-1.4.patch
+ patch -p1 < ../netpbm-CAN-2005-2471.patch
+ patch -p1 < ../netpbm-security-code.patch
+ patch -p1 < ../netpbm-security-scripts.patch
+ sed -i 's|#!/bin/env python|#!/bin/env python2|' buildtools/makeman
+ sed -i 's|@python|@python2|' buildtools/manpage.mk
+
+ cp config.mk.in config.mk
+ [ "${CARCH}" = 'x86_64' ] && echo 'CFLAGS_SHLIB = -fPIC' >> config.mk
+ echo "NETPBM_DOCURL = file://${srcdir}/doc" >> config.mk
+ echo 'TIFFLIB = libtiff.so' >> config.mk
+ echo 'JPEGLIB = libjpeg.so' >> config.mk
+ echo 'PNGLIB = libpng.so' >> config.mk
+ echo 'ZLIB = libz.so' >> config.mk
+
+ sed -i 's|PKGMANDIR = man|PKGMANDIR = share/man|' common.mk
+ sed -i 's|misc|share/netpbm|' common.mk
+ sed -i 's|/link|/lib|' lib/Makefile
+ sed -i 's|install.manweb install.man|install.man|' GNUmakefile
+ sed -i '/MANUALS1 = $(BINARIES) $(SCRIPTS)/a\
+ MANUALS1 += bmptoppm faxformat gemtopbm jpegtopnm mrf netpbm pamtotiff pamx pgmedge \\\
+ pgmnorm pgmoil pgmslice pnmarith pnmcut pnmdepth pnmenlarge pnmfile \\\
+ pnminterp pnmnoraw pnmscale pnmsplit pnmtofits pnmtojpeg pnmtopnm pnmtops \\\
+ pnmtotiff pnmtotiffcmyk ppmnorm ppmsvgalib ppmtojpeg ppmtotga ppmtouil \\\
+ tifftopnm vidtoppm \
+ MANUALS3 += libnetpbm_image libnetpbm_ug libpbm libpgm libpm libpnm libppm libsystem libtmpfile \
+ MANUALS5 += extendedopacity pfm' common.mk
+
+ make
+
+ # Generating useful man pages with html doc
+ cd "${srcdir}/doc"
+ make MAKEMAN="${srcdir}/stable/buildtools/makeman" USERGUIDE=. \
+ -f "${srcdir}/stable/buildtools/manpage.mk" manpages
+}
+
+package() {
+ cd "${srcdir}/stable"
+ make pkgdir="${pkgdir}/usr" install-run install-dev
+
+# Removing dummy man pages
+ rm "${pkgdir}"/usr/share/man/man{1,3,5}/*
+
+ cd "${srcdir}/doc"
+ make MAKEMAN="${srcdir}/stable/buildtools/makeman" MANDIR="${pkgdir}/usr/share/man" \
+ -f "${srcdir}/stable/buildtools/manpage.mk" installman
+
+# Replace obsolete utility
+ echo -e '#!/bin/sh\npamditherbw $@ | pamtopnm\n' > "${pkgdir}/usr/bin/pgmtopbm"
+
+# Licensing. Note that each program in the package has a separate license.
+ install -D -m644 "${srcdir}/stable/doc/copyright_summary" \
+ "${pkgdir}/usr/share/licenses/${pkgname}/copyright_summary.txt"
+}
diff --git a/extra/netpbm/libpng-1.4.patch b/extra/netpbm/libpng-1.4.patch
new file mode 100644
index 000000000..c02ded734
--- /dev/null
+++ b/extra/netpbm/libpng-1.4.patch
@@ -0,0 +1,59 @@
+diff -Naur netpbm-orig/converter/other/pnmtopng.c netpbm/converter/other/pnmtopng.c
+--- netpbm-orig/converter/other/pnmtopng.c 2010-01-22 00:13:48.000000000 -0500
++++ netpbm/converter/other/pnmtopng.c 2010-01-22 00:21:33.000000000 -0500
+@@ -2641,7 +2641,7 @@
+ info_ptr->color_type == PNG_COLOR_TYPE_RGB) {
+ if (transparent > 0) {
+ info_ptr->valid |= PNG_INFO_tRNS;
+- info_ptr->trans_values =
++ info_ptr->trans_color =
+ xelToPngColor_16(transcolor, maxval, png_maxval);
+ }
+ } else {
+@@ -2653,10 +2653,10 @@
+ if (info_ptr->valid && PNG_INFO_tRNS)
+ pm_message("Transparent color {gray, red, green, blue} = "
+ "{%d, %d, %d, %d}",
+- info_ptr->trans_values.gray,
+- info_ptr->trans_values.red,
+- info_ptr->trans_values.green,
+- info_ptr->trans_values.blue);
++ info_ptr->trans_color.gray,
++ info_ptr->trans_color.red,
++ info_ptr->trans_color.green,
++ info_ptr->trans_color.blue);
+ else
+ pm_message("No transparent color");
+ }
+diff -Naur netpbm-orig/converter/other/pngtopnm.c netpbm/converter/other/pngtopnm.c
+--- netpbm-orig/converter/other/pngtopnm.c 2010-01-22 00:33:25.000000000 -0500
++++ netpbm/converter/other/pngtopnm.c 2010-01-22 00:39:21.000000000 -0500
+@@ -569,8 +569,8 @@
+ for (i = 0, foundGray = FALSE;
+ i < info_ptr->num_trans && !foundGray;
+ ++i) {
+- if (info_ptr->trans[i] != 0 &&
+- info_ptr->trans[i] != maxval) {
++ if (info_ptr->trans_alpha[i] != 0 &&
++ info_ptr->trans_alpha[i] != maxval) {
+ foundGray = TRUE;
+ }
+ }
+@@ -641,7 +641,7 @@
+ unsigned int i;
+ trans_mix = TRUE;
+ for (i = 0; i < info_ptr->num_trans; ++i)
+- if (info_ptr->trans[i] != 0 && info_ptr->trans[i] != 255) {
++ if (info_ptr->trans_alpha[i] != 0 && info_ptr->trans_alpha[i] != 255) {
+ trans_mix = FALSE;
+ break;
+ }
+@@ -1061,7 +1061,7 @@
+ setXel(&xelrow[col], fgColor, bgColor, alphaHandling,
+ (pngxP->info_ptr->valid & PNG_INFO_tRNS) &&
+ index < pngxP->info_ptr->num_trans ?
+- pngxP->info_ptr->trans[index] : maxval);
++ pngxP->info_ptr->trans_alpha[index] : maxval);
+ }
+ break;
+
diff --git a/extra/netpbm/netpbm-CAN-2005-2471.patch b/extra/netpbm/netpbm-CAN-2005-2471.patch
new file mode 100644
index 000000000..8cbbd6d40
--- /dev/null
+++ b/extra/netpbm/netpbm-CAN-2005-2471.patch
@@ -0,0 +1,16 @@
+--- netpbm-10.29/converter/other/pstopnm.c.CAN-2005-2471 2005-08-15 02:39:46.000000000 +0200
++++ netpbm-10.29/converter/other/pstopnm.c 2005-08-16 15:38:15.000000000 +0200
+@@ -711,11 +711,11 @@
+ "'%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s'",
+ ghostscriptProg, arg0,
+ deviceopt, outfileopt, gopt, ropt, "-q", "-dNOPAUSE",
+- "-dSAFER", "-");
++ "-dPARANOIDSAFER", "-");
+ }
+
+ execl(ghostscriptProg, arg0, deviceopt, outfileopt, gopt, ropt, "-q",
+- "-dNOPAUSE", "-dSAFER", "-", NULL);
++ "-dNOPAUSE", "-dPARANOIDSAFER", "-", NULL);
+
+ pm_error("execl() of Ghostscript ('%s') failed, errno=%d (%s)",
+ ghostscriptProg, errno, strerror(errno));
diff --git a/extra/netpbm/netpbm-security-code.patch b/extra/netpbm/netpbm-security-code.patch
new file mode 100644
index 000000000..e8fbc29c2
--- /dev/null
+++ b/extra/netpbm/netpbm-security-code.patch
@@ -0,0 +1,1817 @@
+diff -up netpbm-10.47.04/analyzer/pgmtexture.c.security netpbm-10.47.04/analyzer/pgmtexture.c
+--- netpbm-10.47.04/analyzer/pgmtexture.c.security 2009-10-21 13:38:55.000000000 +0200
++++ netpbm-10.47.04/analyzer/pgmtexture.c 2009-10-21 15:09:33.000000000 +0200
+@@ -79,6 +79,9 @@ vector (int nl, int nh)
+ {
+ float *v;
+
++ if(nh < nl)
++ pm_error("assert: h < l");
++ overflow_add(nh - nl, 1);
+ MALLOCARRAY(v, (unsigned) (nh - nl + 1));
+ if (v == NULL)
+ pm_error("Unable to allocate memory for a vector.");
+@@ -95,6 +98,9 @@ matrix (int nrl, int nrh, int ncl, int n
+ float **m;
+
+ /* allocate pointers to rows */
++ if(nrh < nrl)
++ pm_error("assert: h < l");
++ overflow_add(nrh - nrl, 1);
+ MALLOCARRAY(m, (unsigned) (nrh - nrl + 1));
+ if (m == NULL)
+ pm_error("Unable to allocate memory for a matrix.");
+@@ -102,6 +108,9 @@ matrix (int nrl, int nrh, int ncl, int n
+ m -= ncl;
+
+ /* allocate rows and set pointers to them */
++ if(nch < ncl)
++ pm_error("assert: h < l");
++ overflow_add(nch - ncl, 1);
+ for (i = nrl; i <= nrh; i++)
+ {
+ MALLOCARRAY(m[i], (unsigned) (nch - ncl + 1));
+diff -up netpbm-10.47.04/converter/other/gemtopnm.c.security netpbm-10.47.04/converter/other/gemtopnm.c
+--- netpbm-10.47.04/converter/other/gemtopnm.c.security 2009-10-21 13:39:06.000000000 +0200
++++ netpbm-10.47.04/converter/other/gemtopnm.c 2009-10-21 15:09:33.000000000 +0200
+@@ -106,6 +106,7 @@ main(argc, argv)
+
+ pnm_writepnminit( stdout, cols, rows, MAXVAL, type, 0 );
+
++ overflow_add(cols, padright);
+ {
+ /* allocate input row data structure */
+ int plane;
+diff -up netpbm-10.47.04/converter/other/jpegtopnm.c.security netpbm-10.47.04/converter/other/jpegtopnm.c
+--- netpbm-10.47.04/converter/other/jpegtopnm.c.security 2009-10-21 13:39:06.000000000 +0200
++++ netpbm-10.47.04/converter/other/jpegtopnm.c 2009-10-21 15:54:30.000000000 +0200
+@@ -861,6 +861,8 @@ convertImage(FILE *
+ /* Calculate output image dimensions so we can allocate space */
+ jpeg_calc_output_dimensions(cinfoP);
+
++ overflow2(cinfoP->output_width, cinfoP->output_components);
++
+ /* Start decompressor */
+ jpeg_start_decompress(cinfoP);
+
+diff -up netpbm-10.47.04/converter/other/pbmtopgm.c.security netpbm-10.47.04/converter/other/pbmtopgm.c
+--- netpbm-10.47.04/converter/other/pbmtopgm.c.security 2009-10-21 13:39:06.000000000 +0200
++++ netpbm-10.47.04/converter/other/pbmtopgm.c 2009-10-21 15:09:33.000000000 +0200
+@@ -47,6 +47,7 @@ main(int argc, char *argv[]) {
+ "than the image height (%u rows)", height, rows);
+
+ outrow = pgm_allocrow(cols) ;
++ overflow2(width, height);
+ maxval = MIN(PGM_OVERALLMAXVAL, width*height);
+ pgm_writepgminit(stdout, cols, rows, maxval, 0) ;
+
+diff -up netpbm-10.47.04/converter/other/pngtopnm.c.security netpbm-10.47.04/converter/other/pngtopnm.c
+diff -up netpbm-10.47.04/converter/other/pnmtoddif.c.security netpbm-10.47.04/converter/other/pnmtoddif.c
+--- netpbm-10.47.04/converter/other/pnmtoddif.c.security 2009-10-21 13:39:06.000000000 +0200
++++ netpbm-10.47.04/converter/other/pnmtoddif.c 2009-10-21 15:09:33.000000000 +0200
+@@ -632,6 +632,7 @@ main(int argc, char *argv[]) {
+ switch (PNM_FORMAT_TYPE(format)) {
+ case PBM_TYPE:
+ ip.bits_per_pixel = 1;
++ overflow_add(cols, 7);
+ ip.bytes_per_line = (cols + 7) / 8;
+ ip.spectral = 2;
+ ip.components = 1;
+@@ -647,6 +648,7 @@ main(int argc, char *argv[]) {
+ ip.polarity = 2;
+ break;
+ case PPM_TYPE:
++ overflow2(cols, 3);
+ ip.bytes_per_line = 3 * cols;
+ ip.bits_per_pixel = 24;
+ ip.spectral = 5;
+diff -up netpbm-10.47.04/converter/other/pnmtojpeg.c.security netpbm-10.47.04/converter/other/pnmtojpeg.c
+--- netpbm-10.47.04/converter/other/pnmtojpeg.c.security 2009-10-21 13:39:06.000000000 +0200
++++ netpbm-10.47.04/converter/other/pnmtojpeg.c 2009-10-21 15:56:32.000000000 +0200
+@@ -605,7 +605,11 @@ read_scan_script(j_compress_ptr const ci
+ want JPOOL_PERMANENT.
+ */
+ const unsigned int scan_info_size = nscans * sizeof(jpeg_scan_info);
+- jpeg_scan_info * const scan_info =
++ const jpeg_scan_info * scan_info;
++
++ overflow2(nscans, sizeof(jpeg_scan_info));
++
++ scan_info =
+ (jpeg_scan_info *)
+ (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
+ scan_info_size);
+@@ -936,6 +940,8 @@ compute_rescaling_array(JSAMPLE ** const
+ const long half_maxval = maxval / 2;
+ long val;
+
++ overflow_add(maxval, 1);
++ overflow2(maxval+1, sizeof(JSAMPLE));
+ *rescale_p = (JSAMPLE *)
+ (cinfo.mem->alloc_small) ((j_common_ptr) &cinfo, JPOOL_IMAGE,
+ (size_t) (((long) maxval + 1L) *
+@@ -1014,6 +1020,7 @@ convert_scanlines(struct jpeg_compress_s
+ */
+
+ /* Allocate the libpnm output and compressor input buffers */
++ overflow2(cinfo_p->image_width, cinfo_p->input_components);
+ buffer = (*cinfo_p->mem->alloc_sarray)
+ ((j_common_ptr) cinfo_p, JPOOL_IMAGE,
+ (unsigned int) cinfo_p->image_width * cinfo_p->input_components,
+diff -up netpbm-10.47.04/converter/other/pnmtops.c.security netpbm-10.47.04/converter/other/pnmtops.c
+--- netpbm-10.47.04/converter/other/pnmtops.c.security 2009-10-21 13:39:06.000000000 +0200
++++ netpbm-10.47.04/converter/other/pnmtops.c 2009-10-21 15:09:33.000000000 +0200
+@@ -186,16 +186,20 @@ parseCommandLine(int argc, char ** argv,
+ cmdlineP->canturn = !noturn;
+ cmdlineP->showpage = !noshowpage;
+
++ overflow2(width, 72);
+ cmdlineP->width = width * 72;
++ overflow2(height, 72);
+ cmdlineP->height = height * 72;
+
+- if (imagewidthSpec)
++ if (imagewidthSpec) {
++ overflow2(imagewidth, 72);
+ cmdlineP->imagewidth = imagewidth * 72;
+- else
++ } else
+ cmdlineP->imagewidth = 0;
+- if (imageheightSpec)
++ if (imageheightSpec) {
++ overflow2(imageheight, 72);
+ cmdlineP->imageheight = imageheight * 72;
+- else
++ } else
+ cmdlineP->imageheight = 0;
+
+ if (!cmdlineP->psfilter &&
+diff -up netpbm-10.47.04/converter/other/pnmtorle.c.security netpbm-10.47.04/converter/other/pnmtorle.c
+--- netpbm-10.47.04/converter/other/pnmtorle.c.security 2009-10-21 13:39:06.000000000 +0200
++++ netpbm-10.47.04/converter/other/pnmtorle.c 2009-10-21 15:09:33.000000000 +0200
+@@ -19,6 +19,8 @@
+ * If you modify this software, you should include a notice giving the
+ * name of the person performing the modification, the date of modification,
+ * and the reason for such modification.
++ *
++ * 2002-12-19: Fix maths wrapping bugs. Alan Cox <alan@redhat.com>
+ */
+ /*
+ * pnmtorle - A program which will convert pbmplus (ppm or pgm) images
+diff -up netpbm-10.47.04/converter/other/pnmtosgi.c.security netpbm-10.47.04/converter/other/pnmtosgi.c
+--- netpbm-10.47.04/converter/other/pnmtosgi.c.security 2009-10-21 13:39:06.000000000 +0200
++++ netpbm-10.47.04/converter/other/pnmtosgi.c 2009-10-21 15:09:33.000000000 +0200
+@@ -213,6 +213,22 @@ write_channels(cols, rows, channels, put
+ }
+ }
+
++static void *
++xmalloc2(int x, int y)
++{
++ void *mem;
++
++ overflow2(x,y);
++ if( x * y == 0 )
++ return NULL;
++
++ mem = malloc2(x, y);
++ if( mem == NULL )
++ pm_error("out of memory allocating %d bytes", x * y);
++ return mem;
++}
++
++
+ static void
+ put_big_short(short s)
+ {
+@@ -250,6 +266,7 @@ build_channels(FILE *ifp, int cols, int
+ #endif
+
+ if( storage != STORAGE_VERBATIM ) {
++ overflow2(channels, rows);
+ MALLOCARRAY_NOFAIL(table, channels * rows);
+ MALLOCARRAY_NOFAIL(rletemp, WORSTCOMPR(cols));
+ }
+@@ -303,6 +320,8 @@ compress(temp, row, rows, cols, chan_no,
+ break;
+ case STORAGE_RLE:
+ tabrow = chan_no * rows + row;
++ overflow2(chan_no, rows);
++ overflow_add(chan_no* rows, row);
+ len = rle_compress(temp, cols); /* writes result into rletemp */
+ channel[chan_no][row].length = len;
+ MALLOCARRAY(p, len);
+diff -up netpbm-10.47.04/converter/other/rletopnm.c.security netpbm-10.47.04/converter/other/rletopnm.c
+--- netpbm-10.47.04/converter/other/rletopnm.c.security 2009-10-21 13:39:06.000000000 +0200
++++ netpbm-10.47.04/converter/other/rletopnm.c 2009-10-21 15:09:33.000000000 +0200
+@@ -19,6 +19,8 @@
+ * If you modify this software, you should include a notice giving the
+ * name of the person performing the modification, the date of modification,
+ * and the reason for such modification.
++ *
++ * 2002-12-19: Fix maths wrapping bugs. Alan Cox <alan@redhat.com>
+ */
+ /*
+ * rletopnm - A conversion program to convert from Utah's "rle" image format
+diff -up netpbm-10.47.04/converter/other/sgitopnm.c.security netpbm-10.47.04/converter/other/sgitopnm.c
+--- netpbm-10.47.04/converter/other/sgitopnm.c.security 2009-10-21 13:39:06.000000000 +0200
++++ netpbm-10.47.04/converter/other/sgitopnm.c 2009-10-21 15:09:33.000000000 +0200
+@@ -252,13 +252,17 @@ read_channels(ifp, head, table, func, oc
+
+ if (ochan < 0) {
+ maxchannel = (head->zsize < 3) ? head->zsize : 3;
++ overflow2(head->ysize, maxchannel);
+ MALLOCARRAY_NOFAIL(image, head->ysize * maxchannel);
+ } else {
+ maxchannel = ochan + 1;
+ MALLOCARRAY_NOFAIL(image, head->ysize);
+ }
+- if ( table )
++ if ( table ) {
++ overflow2(head->xsize, 2);
++ overflow_add(head->xsize*2, 2);
+ MALLOCARRAY_NOFAIL(temp, WORSTCOMPR(head->xsize));
++ }
+
+ for( channel = 0; channel < maxchannel; channel++ ) {
+ #ifdef DEBUG
+diff -up netpbm-10.47.04/converter/other/sirtopnm.c.security netpbm-10.47.04/converter/other/sirtopnm.c
+--- netpbm-10.47.04/converter/other/sirtopnm.c.security 2009-10-21 13:39:06.000000000 +0200
++++ netpbm-10.47.04/converter/other/sirtopnm.c 2009-10-21 15:09:33.000000000 +0200
+@@ -69,6 +69,7 @@ char* argv[];
+ }
+ break;
+ case PPM_TYPE:
++ overflow3(cols, rows, 3);
+ picsize = cols * rows * 3;
+ planesize = cols * rows;
+ if ( !( sirarray = (unsigned char*) malloc( picsize ) ) )
+diff -up netpbm-10.47.04/converter/other/tifftopnm.c.security netpbm-10.47.04/converter/other/tifftopnm.c
+--- netpbm-10.47.04/converter/other/tifftopnm.c.security 2009-10-21 13:39:06.000000000 +0200
++++ netpbm-10.47.04/converter/other/tifftopnm.c 2009-10-21 15:49:29.000000000 +0200
+@@ -1291,7 +1291,9 @@ convertRasterByRows(pnmOut * const
+ if (scanbuf == NULL)
+ pm_error("can't allocate memory for scanline buffer");
+
+- MALLOCARRAY(samplebuf, cols * spp);
++ /* samplebuf is unsigned int * !!! */
++ samplebuf = (unsigned int *) malloc3(cols , sizeof(unsigned int) , spp);
++
+ if (samplebuf == NULL)
+ pm_error("can't allocate memory for row buffer");
+
+diff -up netpbm-10.47.04/converter/other/xwdtopnm.c.security netpbm-10.47.04/converter/other/xwdtopnm.c
+--- netpbm-10.47.04/converter/other/xwdtopnm.c.security 2009-10-21 13:39:06.000000000 +0200
++++ netpbm-10.47.04/converter/other/xwdtopnm.c 2009-10-21 15:53:27.000000000 +0200
+@@ -209,6 +209,10 @@ processX10Header(X10WDFileHeader * cons
+ *colorsP = pnm_allocrow(2);
+ PNM_ASSIGN1((*colorsP)[0], 0);
+ PNM_ASSIGN1((*colorsP)[1], *maxvalP);
++ overflow_add(h10P->pixmap_width, 15);
++ if(h10P->pixmap_width < 0)
++ pm_error("assert: negative width");
++ overflow2((((h10P->pixmap_width + 15) / 16) * 16 - h10P->pixmap_width), 8);
+ *padrightP =
+ (((h10P->pixmap_width + 15) / 16) * 16 - h10P->pixmap_width) * 8;
+ *bits_per_itemP = 16;
+@@ -634,6 +638,7 @@ processX11Header(X11WDFileHeader * cons
+
+ *colsP = h11FixedP->pixmap_width;
+ *rowsP = h11FixedP->pixmap_height;
++ overflow2(h11FixedP->bytes_per_line, 8);
+ *padrightP =
+ h11FixedP->bytes_per_line * 8 -
+ h11FixedP->pixmap_width * h11FixedP->bits_per_pixel;
+diff -up netpbm-10.47.04/converter/pbm/icontopbm.c.security netpbm-10.47.04/converter/pbm/icontopbm.c
+--- netpbm-10.47.04/converter/pbm/icontopbm.c.security 2009-10-21 13:39:10.000000000 +0200
++++ netpbm-10.47.04/converter/pbm/icontopbm.c 2009-10-21 15:09:33.000000000 +0200
+@@ -11,6 +11,7 @@
+ */
+
+ #include <string.h>
++#include <limits.h>
+
+ #include "nstring.h"
+ #include "pbm.h"
+@@ -87,6 +88,11 @@ ReadIconFile(FILE * const
+ if ( *heightP <= 0 )
+ pm_error( "invalid height (must be positive): %d", *heightP );
+
++ if ( *widthP > INT_MAX - 16 || *widthP < 0)
++ pm_error( "invalid width: %d", *widthP);
++
++ overflow2(*widthP + 16, *heightP);
++
+ data_length = BitmapSize( *widthP, *heightP );
+ *dataP = (short unsigned int *) malloc( data_length );
+ if ( *dataP == NULL )
+diff -up netpbm-10.47.04/converter/pbm/mdatopbm.c.security netpbm-10.47.04/converter/pbm/mdatopbm.c
+--- netpbm-10.47.04/converter/pbm/mdatopbm.c.security 2009-10-21 13:39:10.000000000 +0200
++++ netpbm-10.47.04/converter/pbm/mdatopbm.c 2009-10-21 15:09:33.000000000 +0200
+@@ -245,10 +245,13 @@ main(int argc, char **argv) {
+ pm_readlittleshort(infile, &yy); nInCols = yy;
+ }
+
++ overflow2(nOutCols, 8);
+ nOutCols = 8 * nInCols;
+ nOutRows = nInRows;
+- if (bScale)
++ if (bScale) {
++ overflow2(nOutRows, 2);
+ nOutRows *= 2;
++ }
+
+ data = pbm_allocarray(nOutCols, nOutRows);
+
+diff -up netpbm-10.47.04/converter/pbm/mgrtopbm.c.security netpbm-10.47.04/converter/pbm/mgrtopbm.c
+--- netpbm-10.47.04/converter/pbm/mgrtopbm.c.security 2009-10-21 13:39:10.000000000 +0200
++++ netpbm-10.47.04/converter/pbm/mgrtopbm.c 2009-10-21 15:09:33.000000000 +0200
+@@ -65,6 +65,8 @@ readMgrHeader(FILE * const ifP,
+ if (head.h_high < ' ' || head.l_high < ' ')
+ pm_error("Invalid width field in MGR header");
+
++ overflow_add(*colsP, pad);
++
+ *colsP = (((int)head.h_wide - ' ') << 6) + ((int)head.l_wide - ' ');
+ *rowsP = (((int)head.h_high - ' ') << 6) + ((int) head.l_high - ' ');
+ *padrightP = ( ( *colsP + pad - 1 ) / pad ) * pad - *colsP;
+diff -up netpbm-10.47.04/converter/pbm/pbmto10x.c.security netpbm-10.47.04/converter/pbm/pbmto10x.c
+--- netpbm-10.47.04/converter/pbm/pbmto10x.c.security 2009-10-21 13:39:10.000000000 +0200
++++ netpbm-10.47.04/converter/pbm/pbmto10x.c 2009-10-21 15:09:33.000000000 +0200
+@@ -162,7 +162,7 @@ main(int argc, char * argv[]) {
+ res_60x72();
+
+ pm_close(ifp);
+- exit(0);
++ return 0;
+ }
+
+
+diff -up netpbm-10.47.04/converter/pbm/pbmto4425.c.security netpbm-10.47.04/converter/pbm/pbmto4425.c
+--- netpbm-10.47.04/converter/pbm/pbmto4425.c.security 2009-10-21 13:39:10.000000000 +0200
++++ netpbm-10.47.04/converter/pbm/pbmto4425.c 2009-10-21 15:09:33.000000000 +0200
+@@ -2,6 +2,7 @@
+
+ #include "nstring.h"
+ #include "pbm.h"
++#include <string.h>
+
+ static char bit_table[2][3] = {
+ {1, 4, 0x10},
+@@ -160,7 +161,7 @@ main(int argc, char * argv[]) {
+ xres = vmap_width * 2;
+ yres = vmap_height * 3;
+
+- vmap = malloc(vmap_width * vmap_height * sizeof(char));
++ vmap = malloc3(vmap_width, vmap_height, sizeof(char));
+ if(vmap == NULL)
+ {
+ pm_error( "Cannot allocate memory" );
+diff -up netpbm-10.47.04/converter/pbm/pbmtoascii.c.security netpbm-10.47.04/converter/pbm/pbmtoascii.c
+--- netpbm-10.47.04/converter/pbm/pbmtoascii.c.security 2009-10-21 13:39:10.000000000 +0200
++++ netpbm-10.47.04/converter/pbm/pbmtoascii.c 2009-10-21 15:09:33.000000000 +0200
+@@ -115,9 +115,11 @@ char* argv[];
+ pm_usage( usage );
+
+ pbm_readpbminit( ifp, &cols, &rows, &format );
++ overflow_add(cols, gridx);
+ ccols = ( cols + gridx - 1 ) / gridx;
+ bitrow = pbm_allocrow( cols );
+ sig = (int*) pm_allocrow( ccols, sizeof(int) );
++ overflow_add(ccols, 1);
+ line = (char*) pm_allocrow( ccols + 1, sizeof(char) );
+
+ for ( row = 0; row < rows; row += gridy )
+diff -up netpbm-10.47.04/converter/pbm/pbmtocmuwm.c.security netpbm-10.47.04/converter/pbm/pbmtocmuwm.c
+diff -up netpbm-10.47.04/converter/pbm/pbmtogem.c.security netpbm-10.47.04/converter/pbm/pbmtogem.c
+--- netpbm-10.47.04/converter/pbm/pbmtogem.c.security 2009-10-21 13:39:10.000000000 +0200
++++ netpbm-10.47.04/converter/pbm/pbmtogem.c 2009-10-21 15:09:33.000000000 +0200
+@@ -123,6 +123,7 @@ putinit (rows, cols)
+ bitsperitem = 0;
+ bitshift = 7;
+ outcol = 0;
++ overflow_add(cols, 7);
+ outmax = (cols + 7) / 8;
+ outrow = (unsigned char *) pm_allocrow (outmax, sizeof (unsigned char));
+ lastrow = (unsigned char *) pm_allocrow (outmax, sizeof (unsigned char));
+diff -up netpbm-10.47.04/converter/pbm/pbmtogo.c.security netpbm-10.47.04/converter/pbm/pbmtogo.c
+--- netpbm-10.47.04/converter/pbm/pbmtogo.c.security 2009-10-21 13:39:10.000000000 +0200
++++ netpbm-10.47.04/converter/pbm/pbmtogo.c 2009-10-21 15:09:33.000000000 +0200
+@@ -158,6 +158,7 @@ main(int argc,
+ bitrow = pbm_allocrow(cols);
+
+ /* Round cols up to the nearest multiple of 8. */
++ overflow_add(cols, 7);
+ rucols = ( cols + 7 ) / 8;
+ bytesperrow = rucols; /* GraphOn uses bytes */
+ rucols = rucols * 8;
+diff -up netpbm-10.47.04/converter/pbm/pbmtoicon.c.security netpbm-10.47.04/converter/pbm/pbmtoicon.c
+--- netpbm-10.47.04/converter/pbm/pbmtoicon.c.security 2009-10-21 13:39:10.000000000 +0200
++++ netpbm-10.47.04/converter/pbm/pbmtoicon.c 2009-10-21 15:38:55.000000000 +0200
+@@ -114,6 +114,7 @@ writeIcon(FILE * const ifP,
+ unsigned char * bitrow;
+ unsigned int row;
+
++ overflow_add(cols, 15);
+ bitbuffer = pbm_allocrow_packed(cols + wordintSize);
+ bitrow = &bitbuffer[1];
+ bitbuffer[0] = 0;
+diff -up netpbm-10.47.04/converter/pbm/pbmtolj.c.security netpbm-10.47.04/converter/pbm/pbmtolj.c
+--- netpbm-10.47.04/converter/pbm/pbmtolj.c.security 2009-10-21 13:39:10.000000000 +0200
++++ netpbm-10.47.04/converter/pbm/pbmtolj.c 2009-10-21 15:09:33.000000000 +0200
+@@ -120,7 +120,11 @@ parseCommandLine(int argc, char ** argv,
+ static void
+ allocateBuffers(unsigned int const cols) {
+
++ overflow_add(cols, 8);
+ rowBufferSize = (cols + 7) / 8;
++ overflow_add(rowBufferSize, 128);
++ overflow_add(rowBufferSize, rowBufferSize+128);
++ overflow_add(rowBufferSize+10, rowBufferSize/8);
+ packBufferSize = rowBufferSize + (rowBufferSize + 127) / 128 + 1;
+ deltaBufferSize = rowBufferSize + rowBufferSize / 8 + 10;
+
+diff -up netpbm-10.47.04/converter/pbm/pbmtomacp.c.security netpbm-10.47.04/converter/pbm/pbmtomacp.c
+--- netpbm-10.47.04/converter/pbm/pbmtomacp.c.security 2009-10-21 13:39:10.000000000 +0200
++++ netpbm-10.47.04/converter/pbm/pbmtomacp.c 2009-10-21 15:09:33.000000000 +0200
+@@ -101,6 +101,7 @@ char *argv[];
+ if( !lflg )
+ left = 0;
+
++ overflow_add(left, MAX_COLS - 1);
+ if( rflg )
+ { if( right - left >= MAX_COLS )
+ right = left + MAX_COLS - 1;
+@@ -111,6 +112,8 @@ char *argv[];
+ if( !tflg )
+ top = 0;
+
++ overflow_add(top, MAX_LINES - 1);
++
+ if( bflg )
+ { if( bottom - top >= MAX_LINES )
+ bottom = top + MAX_LINES - 1;
+diff -up netpbm-10.47.04/converter/pbm/pbmtomda.c.security netpbm-10.47.04/converter/pbm/pbmtomda.c
+--- netpbm-10.47.04/converter/pbm/pbmtomda.c.security 2009-10-21 13:39:10.000000000 +0200
++++ netpbm-10.47.04/converter/pbm/pbmtomda.c 2009-10-21 15:09:33.000000000 +0200
+@@ -179,6 +179,7 @@ int main(int argc, char **argv)
+
+ nOutRowsUnrounded = bScale ? nInRows/2 : nInRows;
+
++ overflow_add(nOutRowsUnrounded, 3);
+ nOutRows = ((nOutRowsUnrounded + 3) / 4) * 4;
+ /* MDA wants rows a multiple of 4 */
+ nOutCols = nInCols / 8;
+diff -up netpbm-10.47.04/converter/pbm/pbmtomgr.c.security netpbm-10.47.04/converter/pbm/pbmtomgr.c
+diff -up netpbm-10.47.04/converter/pbm/pbmtoppa/pbm.c.security netpbm-10.47.04/converter/pbm/pbmtoppa/pbm.c
+--- netpbm-10.47.04/converter/pbm/pbmtoppa/pbm.c.security 2009-10-21 13:39:10.000000000 +0200
++++ netpbm-10.47.04/converter/pbm/pbmtoppa/pbm.c 2009-10-21 15:09:33.000000000 +0200
+@@ -105,6 +105,7 @@ int pbm_readline(pbm_stat* pbm,unsigned
+ return 0;
+
+ case P4:
++ overflow_add(pbm->width, 7);
+ tmp=(pbm->width+7)/8;
+ tmp2=fread(data,1,tmp,pbm->fptr);
+ if(tmp2 == tmp)
+@@ -129,7 +130,8 @@ void pbm_unreadline (pbm_stat *pbm, void
+ return;
+
+ pbm->unread = 1;
+- pbm->revdata = malloc ((pbm->width+7)/8);
++ overflow_add(pbm->width, 7);
++ pbm->revdata = malloc((pbm->width+7)/8);
+ memcpy (pbm->revdata, data, (pbm->width+7)/8);
+ pbm->current_line--;
+ }
+diff -up netpbm-10.47.04/converter/pbm/pbmtoppa/pbmtoppa.c.security netpbm-10.47.04/converter/pbm/pbmtoppa/pbmtoppa.c
+--- netpbm-10.47.04/converter/pbm/pbmtoppa/pbmtoppa.c.security 2009-10-21 13:39:10.000000000 +0200
++++ netpbm-10.47.04/converter/pbm/pbmtoppa/pbmtoppa.c 2009-10-21 15:09:33.000000000 +0200
+@@ -441,6 +441,7 @@ main(int argc, char *argv[]) {
+ pm_error("main(): unrecognized parameter '%s'", argv[argn]);
+ }
+
++ overflow_add(Width, 7);
+ Pwidth=(Width+7)/8;
+ printer.fptr=out;
+
+diff -up netpbm-10.47.04/converter/pbm/pbmtoxbm.c.security netpbm-10.47.04/converter/pbm/pbmtoxbm.c
+--- netpbm-10.47.04/converter/pbm/pbmtoxbm.c.security 2009-10-21 13:39:10.000000000 +0200
++++ netpbm-10.47.04/converter/pbm/pbmtoxbm.c 2009-10-21 15:36:54.000000000 +0200
+@@ -335,6 +335,8 @@ convertRaster(FILE * const ifP,
+
+ unsigned char * bitrow;
+ unsigned int row;
++
++ overflow_add(cols, padright);
+
+ putinit(xbmVersion);
+
+diff -up netpbm-10.47.04/converter/pbm/pbmtoybm.c.security netpbm-10.47.04/converter/pbm/pbmtoybm.c
+--- netpbm-10.47.04/converter/pbm/pbmtoybm.c.security 2009-10-21 13:39:10.000000000 +0200
++++ netpbm-10.47.04/converter/pbm/pbmtoybm.c 2009-10-21 15:09:33.000000000 +0200
+@@ -45,6 +45,7 @@ main( argc, argv )
+ bitrow = pbm_allocrow( cols );
+
+ /* Compute padding to round cols up to the nearest multiple of 16. */
++ overflow_add(cols, 16);
+ padright = ( ( cols + 15 ) / 16 ) * 16 - cols;
+
+ putinit( cols, rows );
+diff -up netpbm-10.47.04/converter/pbm/pbmtozinc.c.security netpbm-10.47.04/converter/pbm/pbmtozinc.c
+--- netpbm-10.47.04/converter/pbm/pbmtozinc.c.security 2009-10-21 13:39:10.000000000 +0200
++++ netpbm-10.47.04/converter/pbm/pbmtozinc.c 2009-10-21 15:09:33.000000000 +0200
+@@ -65,6 +65,7 @@ main(int argc, char * argv[]) {
+ bitrow = pbm_allocrow( cols );
+
+ /* Compute padding to round cols up to the nearest multiple of 16. */
++ overflow_add(cols, 16);
+ padright = ( ( cols + 15 ) / 16 ) * 16 - cols;
+
+ printf( "USHORT %s[] = {\n",name);
+diff -up netpbm-10.47.04/converter/pbm/pktopbm.c.security netpbm-10.47.04/converter/pbm/pktopbm.c
+--- netpbm-10.47.04/converter/pbm/pktopbm.c.security 2009-10-21 13:39:10.000000000 +0200
++++ netpbm-10.47.04/converter/pbm/pktopbm.c 2009-10-21 15:09:33.000000000 +0200
+@@ -277,6 +277,7 @@ main(int argc, char *argv[]) {
+ if (flagbyte == 7) { /* long form preamble */
+ integer packetlength = get32() ; /* character packet length */
+ car = get32() ; /* character number */
++ overflow_add(packetlength, pktopbm_pkloc);
+ endofpacket = packetlength + pktopbm_pkloc;
+ /* calculate end of packet */
+ if ((car >= MAXPKCHAR) || !filename[car]) {
+diff -up netpbm-10.47.04/converter/pbm/thinkjettopbm.l.security netpbm-10.47.04/converter/pbm/thinkjettopbm.l
+--- netpbm-10.47.04/converter/pbm/thinkjettopbm.l.security 2009-10-21 13:39:10.000000000 +0200
++++ netpbm-10.47.04/converter/pbm/thinkjettopbm.l 2009-10-21 15:09:33.000000000 +0200
+@@ -107,7 +107,9 @@ DIG [0-9]
+ <RASTERMODE>\033\*b{DIG}+W {
+ int l;
+ if (rowCount >= rowCapacity) {
++ overflow_add(rowCapacity, 100);
+ rowCapacity += 100;
++ overflow2(rowCapacity, sizeof *rows);
+ rows = realloc (rows, rowCapacity * sizeof *rows);
+ if (rows == NULL)
+ pm_error ("Out of memory.");
+@@ -217,6 +219,8 @@ yywrap (void)
+ /*
+ * Quite simple since ThinkJet bit arrangement matches PBM
+ */
++
++ overflow2(maxRowLength, 8);
+ pbm_writepbminit(stdout, maxRowLength*8, rowCount, 0);
+
+ packed_bitrow = malloc(maxRowLength);
+diff -up netpbm-10.47.04/converter/pbm/ybmtopbm.c.security netpbm-10.47.04/converter/pbm/ybmtopbm.c
+--- netpbm-10.47.04/converter/pbm/ybmtopbm.c.security 2009-10-21 13:39:10.000000000 +0200
++++ netpbm-10.47.04/converter/pbm/ybmtopbm.c 2009-10-21 15:09:33.000000000 +0200
+@@ -88,6 +88,7 @@ getinit( file, colsP, rowsP, depthP, pad
+ pm_error( "EOF / read error" );
+
+ *depthP = 1;
++ overflow_add(*colsP, 15);
+ *padrightP = ( ( *colsP + 15 ) / 16 ) * 16 - *colsP;
+ bitsperitem = 0;
+ }
+diff -up netpbm-10.47.04/converter/pgm/lispmtopgm.c.security netpbm-10.47.04/converter/pgm/lispmtopgm.c
+--- netpbm-10.47.04/converter/pgm/lispmtopgm.c.security 2009-10-21 13:39:06.000000000 +0200
++++ netpbm-10.47.04/converter/pgm/lispmtopgm.c 2009-10-21 15:09:33.000000000 +0200
+@@ -58,6 +58,7 @@ main( argc, argv )
+ pm_error( "depth (%d bits) is too large", depth);
+
+ pgm_writepgminit( stdout, cols, rows, (gray) maxval, 0 );
++ overflow_add(cols, 7);
+ grayrow = pgm_allocrow( ( cols + 7 ) / 8 * 8 );
+
+ for ( row = 0; row < rows; ++row )
+@@ -102,7 +103,9 @@ getinit( file, colsP, rowsP, depthP, pad
+
+ if ( *depthP == 0 )
+ *depthP = 1; /* very old file */
+-
++
++ overflow_add((int)colsP, 31);
++
+ *padrightP = ( ( *colsP + 31 ) / 32 ) * 32 - *colsP;
+
+ if ( *colsP != (cols_32 - *padrightP) ) {
+diff -up netpbm-10.47.04/converter/pgm/psidtopgm.c.security netpbm-10.47.04/converter/pgm/psidtopgm.c
+--- netpbm-10.47.04/converter/pgm/psidtopgm.c.security 2009-10-21 13:39:06.000000000 +0200
++++ netpbm-10.47.04/converter/pgm/psidtopgm.c 2009-10-21 15:09:33.000000000 +0200
+@@ -78,6 +78,7 @@ main(int argc,
+ pm_error("bits/sample (%d) is too large.", bitspersample);
+
+ pgm_writepgminit(stdout, cols, rows, maxval, 0);
++ overflow_add(cols, 7);
+ grayrow = pgm_allocrow((cols + 7) / 8 * 8);
+ for (row = 0; row < rows; ++row) {
+ unsigned int col;
+diff -up netpbm-10.47.04/converter/ppm/ilbmtoppm.c.security netpbm-10.47.04/converter/ppm/ilbmtoppm.c
+--- netpbm-10.47.04/converter/ppm/ilbmtoppm.c.security 2009-10-21 13:39:10.000000000 +0200
++++ netpbm-10.47.04/converter/ppm/ilbmtoppm.c 2009-10-21 15:09:33.000000000 +0200
+@@ -594,6 +594,7 @@ decode_row(FILE * const ifP,
+ rawtype *chp;
+
+ cols = bmhdP->w;
++ overflow_add(cols, 15);
+ bytes = RowBytes(cols);
+ for( plane = 0; plane < nPlanes; plane++ ) {
+ int mask;
+@@ -681,6 +682,23 @@ decode_mask(FILE * const ifP,
+ Multipalette handling
+ ****************************************************************************/
+
++static void *
++xmalloc2(x, y)
++ int x;
++ int y;
++{
++ void *mem;
++
++ overflow2(x,y);
++ if( x * y == 0 )
++ return NULL;
++
++ mem = malloc2(x,y);
++ if( mem == NULL )
++ pm_error("out of memory allocating %d bytes", x * y);
++ return mem;
++}
++
+
+ static void
+ multi_adjust(cmap, row, palchange)
+@@ -1300,6 +1318,9 @@ dcol_to_ppm(FILE * const ifP,
+ if( redmaxval != maxval || greenmaxval != maxval || bluemaxval != maxval )
+ pm_message("scaling colors to %d bits", pm_maxvaltobits(maxval));
+
++ overflow_add(redmaxval, 1);
++ overflow_add(greenmaxval, 1);
++ overflow_add(bluemaxval, 1);
+ MALLOCARRAY_NOFAIL(redtable, redmaxval +1);
+ MALLOCARRAY_NOFAIL(greentable, greenmaxval +1);
+ MALLOCARRAY_NOFAIL(bluetable, bluemaxval +1);
+@@ -1729,7 +1750,9 @@ PCHG_ConvertSmall(PCHG, cmap, mask, data
+ ChangeCount32 = *data++;
+ datasize -= 2;
+
++ overflow_add(ChangeCount16, ChangeCount32);
+ changes = ChangeCount16 + ChangeCount32;
++ overflow_add(changes, 1);
+ for( i = 0; i < changes; i++ ) {
+ if( totalchanges >= PCHG->TotalChanges ) goto fail;
+ if( datasize < 2 ) goto fail;
+@@ -1994,6 +2017,9 @@ read_pchg(FILE * const ifp,
+ cmap->mp_change[i] = NULL;
+ if( PCHG.StartLine < 0 ) {
+ int nch;
++ if(PCHG.MaxReg < PCHG.MinReg)
++ pm_error("assert: MinReg > MaxReg");
++ overflow_add(PCHG.MaxReg-PCHG.MinReg, 2);
+ nch = PCHG.MaxReg - PCHG.MinReg +1;
+ MALLOCARRAY_NOFAIL(cmap->mp_init, nch + 1);
+ for( i = 0; i < nch; i++ )
+@@ -2070,6 +2096,7 @@ process_body( FILE * const ifp,
+ if( typeid == ID_ILBM ) {
+ int isdeep;
+
++ overflow_add(bmhdP->w, 15);
+ MALLOCARRAY_NOFAIL(ilbmrow, RowBytes(bmhdP->w));
+ *viewportmodesP |= fakeviewport; /* -isham/-isehb */
+
+diff -up netpbm-10.47.04/converter/ppm/imgtoppm.c.security netpbm-10.47.04/converter/ppm/imgtoppm.c
+--- netpbm-10.47.04/converter/ppm/imgtoppm.c.security 2009-10-21 13:39:10.000000000 +0200
++++ netpbm-10.47.04/converter/ppm/imgtoppm.c 2009-10-21 15:09:33.000000000 +0200
+@@ -84,6 +84,7 @@ main(int argc, char ** argv) {
+ len = atoi((char*) buf );
+ if ( fread( buf, len, 1, ifp ) != 1 )
+ pm_error( "bad colormap buf" );
++ overflow2(cmaplen, 3);
+ if ( cmaplen * 3 != len )
+ {
+ pm_message(
+@@ -105,6 +106,7 @@ main(int argc, char ** argv) {
+ pm_error( "bad pixel data header" );
+ buf[8] = '\0';
+ len = atoi((char*) buf );
++ overflow2(cols, rows);
+ if ( len != cols * rows )
+ pm_message(
+ "pixel data length (%d) does not match image size (%d)",
+diff -up netpbm-10.47.04/converter/ppm/Makefile.security netpbm-10.47.04/converter/ppm/Makefile
+--- netpbm-10.47.04/converter/ppm/Makefile.security 2009-10-21 13:39:10.000000000 +0200
++++ netpbm-10.47.04/converter/ppm/Makefile 2009-10-21 15:09:33.000000000 +0200
+@@ -11,7 +11,7 @@ SUBDIRS = hpcdtoppm ppmtompeg
+
+ PORTBINARIES = 411toppm eyuvtoppm gouldtoppm ilbmtoppm imgtoppm \
+ leaftoppm mtvtoppm neotoppm \
+- pcxtoppm pc1toppm pi1toppm picttoppm pjtoppm \
++ pcxtoppm pc1toppm pi1toppm pjtoppm \
+ ppmtoacad ppmtoarbtxt \
+ ppmtobmp ppmtoeyuv ppmtogif ppmtoicr ppmtoilbm \
+ ppmtoleaf ppmtolj ppmtomitsu ppmtoneo \
+diff -up netpbm-10.47.04/converter/ppm/pcxtoppm.c.security netpbm-10.47.04/converter/ppm/pcxtoppm.c
+--- netpbm-10.47.04/converter/ppm/pcxtoppm.c.security 2009-10-21 13:39:10.000000000 +0200
++++ netpbm-10.47.04/converter/ppm/pcxtoppm.c 2009-10-21 15:09:33.000000000 +0200
+@@ -409,6 +409,7 @@ pcx_planes_to_pixels(pixels, bitplanes,
+ /*
+ * clear the pixel buffer
+ */
++ overflow2(bytesperline, 8);
+ npixels = (bytesperline * 8) / bitsperpixel;
+ p = pixels;
+ while (--npixels >= 0)
+@@ -470,6 +471,7 @@ pcx_16col_to_ppm(FILE * const ifP,
+ }
+
+ /* BytesPerLine should be >= BitsPerPixel * cols / 8 */
++ overflow2(BytesPerLine, 8);
+ rawcols = BytesPerLine * 8 / BitsPerPixel;
+ if (headerCols > rawcols) {
+ pm_message("warning - BytesPerLine = %d, "
+diff -up netpbm-10.47.04/converter/ppm/picttoppm.c.security netpbm-10.47.04/converter/ppm/picttoppm.c
+--- netpbm-10.47.04/converter/ppm/picttoppm.c.security 2009-10-21 13:39:10.000000000 +0200
++++ netpbm-10.47.04/converter/ppm/picttoppm.c 2009-10-21 15:09:33.000000000 +0200
+@@ -1,3 +1,5 @@
++#error "Unfixable. Don't ship me"
++
+ /*
+ * picttoppm.c -- convert a MacIntosh PICT file to PPM format.
+ *
+diff -up netpbm-10.47.04/converter/ppm/pjtoppm.c.security netpbm-10.47.04/converter/ppm/pjtoppm.c
+--- netpbm-10.47.04/converter/ppm/pjtoppm.c.security 2009-10-21 13:39:10.000000000 +0200
++++ netpbm-10.47.04/converter/ppm/pjtoppm.c 2009-10-21 15:09:33.000000000 +0200
+@@ -127,19 +127,21 @@ main(argc, argv)
+ case 'V': /* send plane */
+ case 'W': /* send last plane */
+ if (rows == -1 || r >= rows || image == NULL) {
+- if (rows == -1 || r >= rows)
++ if (rows == -1 || r >= rows) {
++ overflow_add(rows, 100);
+ rows += 100;
++ }
+ if (image == NULL) {
+- MALLOCARRAY(image, rows * planes);
+- MALLOCARRAY(imlen, rows * planes);
++ image = (unsigned char **)
++ malloc3(rows , planes , sizeof(unsigned char *));
++ imlen = (int *) malloc3(rows , planes, sizeof(int));
+ }
+ else {
++ overflow2(rows,planes);
+ image = (unsigned char **)
+- realloc(image,
+- rows * planes *
++ realloc2(image, rows * planes,
+ sizeof(unsigned char *));
+- imlen = (int *)
+- realloc(imlen, rows * planes * sizeof(int));
++ imlen = (int *) realloc2(imlen, rows * planes, sizeof(int));
+ }
+ }
+ if (image == NULL || imlen == NULL)
+@@ -212,8 +214,10 @@ main(argc, argv)
+ for (i = 0, c = 0; c < imlen[p + r * planes]; c += 2)
+ for (cmd = image[p + r * planes][c],
+ val = image[p + r * planes][c+1];
+- cmd >= 0 && i < newcols; cmd--, i++)
++ cmd >= 0 && i < newcols; cmd--, i++) {
+ buf[i] = val;
++ overflow_add(i, 1);
++ }
+ cols = cols > i ? cols : i;
+ free(image[p + r * planes]);
+ /*
+@@ -224,6 +228,7 @@ main(argc, argv)
+ image[p + r * planes] = (unsigned char *) realloc(buf, i);
+ }
+ }
++ overflow2(cols, 8);
+ cols *= 8;
+ }
+
+diff -up netpbm-10.47.04/converter/ppm/ppmtoeyuv.c.security netpbm-10.47.04/converter/ppm/ppmtoeyuv.c
+--- netpbm-10.47.04/converter/ppm/ppmtoeyuv.c.security 2009-10-21 13:39:10.000000000 +0200
++++ netpbm-10.47.04/converter/ppm/ppmtoeyuv.c 2009-10-21 15:09:33.000000000 +0200
+@@ -114,6 +114,7 @@ create_multiplication_tables(const pixva
+
+ int index;
+
++ overflow_add(maxval, 1);
+ MALLOCARRAY_NOFAIL(mult299 , maxval+1);
+ MALLOCARRAY_NOFAIL(mult587 , maxval+1);
+ MALLOCARRAY_NOFAIL(mult114 , maxval+1);
+diff -up netpbm-10.47.04/converter/ppm/ppmtoicr.c.security netpbm-10.47.04/converter/ppm/ppmtoicr.c
+--- netpbm-10.47.04/converter/ppm/ppmtoicr.c.security 2009-10-21 13:39:10.000000000 +0200
++++ netpbm-10.47.04/converter/ppm/ppmtoicr.c 2009-10-21 15:09:33.000000000 +0200
+@@ -169,7 +169,7 @@ char* argv[];
+
+ if (rleflag) {
+ pm_message("sending run-length encoded picture data ..." );
+- testimage = (char*) malloc(rows*cols);
++ testimage = (char*) malloc2(rows, cols);
+ p = testimage;
+ for (i=0; i<rows; i++)
+ for (j=0; j<cols; j++)
+diff -up netpbm-10.47.04/converter/ppm/ppmtoilbm.c.security netpbm-10.47.04/converter/ppm/ppmtoilbm.c
+--- netpbm-10.47.04/converter/ppm/ppmtoilbm.c.security 2009-10-21 13:39:10.000000000 +0200
++++ netpbm-10.47.04/converter/ppm/ppmtoilbm.c 2009-10-21 15:47:50.000000000 +0200
+@@ -1214,6 +1214,7 @@ ppm_to_rgb8(ifP, cols, rows, maxval)
+
+ maskmethod = 0; /* no masking - RGB8 uses genlock bits */
+ compmethod = 4; /* RGB8 files are always compressed */
++ overflow2(cols, 4);
+ MALLOCARRAY_NOFAIL(compr_row, cols * 4);
+
+ if( maxval != 255 ) {
+@@ -1302,6 +1303,7 @@ ppm_to_rgbn(ifP, cols, rows, maxval)
+
+ maskmethod = 0; /* no masking - RGBN uses genlock bits */
+ compmethod = 4; /* RGBN files are always compressed */
++ overflow2(cols, 2);
+ MALLOCARRAY_NOFAIL(compr_row, cols * 2);
+
+ if( maxval != 15 ) {
+@@ -1779,6 +1781,7 @@ make_val_table(oldmaxval, newmaxval)
+ unsigned int i;
+ int * table;
+
++ overflow_add(oldmaxval, 1);
+ MALLOCARRAY_NOFAIL(table, oldmaxval + 1);
+ for (i = 0; i <= oldmaxval; ++i)
+ table[i] = ROUNDDIV(i * newmaxval, oldmaxval);
+@@ -2283,8 +2286,11 @@ main(int argc, char ** argv) {
+ MALLOCARRAY_NOFAIL(coded_rowbuf, RowBytes(cols));
+ for (i = 0; i < RowBytes(cols); ++i)
+ coded_rowbuf[i] = 0;
+- if (DO_COMPRESS)
++ if (DO_COMPRESS) {
++ overflow2(cols,2);
++ overflow_add(cols*2,2);
+ MALLOCARRAY_NOFAIL(compr_rowbuf, WORSTCOMPR(RowBytes(cols)));
++ }
+ }
+
+ switch (mode) {
+diff -up netpbm-10.47.04/converter/ppm/ppmtolj.c.security netpbm-10.47.04/converter/ppm/ppmtolj.c
+--- netpbm-10.47.04/converter/ppm/ppmtolj.c.security 2009-10-21 13:39:10.000000000 +0200
++++ netpbm-10.47.04/converter/ppm/ppmtolj.c 2009-10-21 15:09:33.000000000 +0200
+@@ -181,7 +181,8 @@ int main(int argc, char *argv[]) {
+
+ ppm_readppminit( ifp, &cols, &rows, &maxval, &format );
+ pixelrow = ppm_allocrow( cols );
+-
++
++ overflow2(cols, 6);
+ obuf = (unsigned char *) pm_allocrow(cols * 3, sizeof(unsigned char));
+ cbuf = (unsigned char *) pm_allocrow(cols * 6, sizeof(unsigned char));
+ if (mode == C_TRANS_MODE_DELTA)
+diff -up netpbm-10.47.04/converter/ppm/ppmtomitsu.c.security netpbm-10.47.04/converter/ppm/ppmtomitsu.c
+--- netpbm-10.47.04/converter/ppm/ppmtomitsu.c.security 2009-10-21 13:39:10.000000000 +0200
++++ netpbm-10.47.04/converter/ppm/ppmtomitsu.c 2009-10-21 15:48:30.000000000 +0200
+@@ -685,6 +685,8 @@ main(int argc, char * argv[]) {
+ medias = MSize_User;
+
+ if (dpi300) {
++ overflow2(medias.maxcols, 2);
++ overflow2(medias.maxrows, 2);
+ medias.maxcols *= 2;
+ medias.maxrows *= 2;
+ }
+diff -up netpbm-10.47.04/converter/ppm/ppmtopcx.c.security netpbm-10.47.04/converter/ppm/ppmtopcx.c
+--- netpbm-10.47.04/converter/ppm/ppmtopcx.c.security 2009-10-21 13:39:10.000000000 +0200
++++ netpbm-10.47.04/converter/ppm/ppmtopcx.c 2009-10-21 15:09:33.000000000 +0200
+@@ -419,6 +419,8 @@ ppmTo16ColorPcx(pixel ** cons
+ else Planes = 1;
+ }
+ }
++ overflow2(BitsPerPixel, cols);
++ overflow_add(BitsPerPixel * cols, 7);
+ BytesPerLine = ((cols * BitsPerPixel) + 7) / 8;
+ MALLOCARRAY_NOFAIL(indexRow, cols);
+ MALLOCARRAY_NOFAIL(planesrow, BytesPerLine);
+diff -up netpbm-10.47.04/converter/ppm/ppmtopict.c.security netpbm-10.47.04/converter/ppm/ppmtopict.c
+--- netpbm-10.47.04/converter/ppm/ppmtopict.c.security 2009-10-21 13:39:10.000000000 +0200
++++ netpbm-10.47.04/converter/ppm/ppmtopict.c 2009-10-21 15:09:33.000000000 +0200
+@@ -245,6 +245,8 @@ char *argv[];
+ putShort(stdout, 0); /* mode */
+
+ /* Finally, write out the data. */
++ overflow_add(cols/MAX_COUNT, 1);
++ overflow_add(cols, cols/MAX_COUNT+1);
+ packed = (char*) malloc((unsigned)(cols+cols/MAX_COUNT+1));
+ oc = 0;
+ for (row = 0; row < rows; row++)
+diff -up netpbm-10.47.04/converter/ppm/ppmtopj.c.security netpbm-10.47.04/converter/ppm/ppmtopj.c
+--- netpbm-10.47.04/converter/ppm/ppmtopj.c.security 2009-10-21 13:39:10.000000000 +0200
++++ netpbm-10.47.04/converter/ppm/ppmtopj.c 2009-10-21 15:09:33.000000000 +0200
+@@ -179,6 +179,7 @@ char *argv[];
+ pixels = ppm_readppm( ifp, &cols, &rows, &maxval );
+
+ pm_close( ifp );
++ overflow2(cols,2);
+ obuf = (unsigned char *) pm_allocrow(cols, sizeof(unsigned char));
+ cbuf = (unsigned char *) pm_allocrow(cols * 2, sizeof(unsigned char));
+
+diff -up netpbm-10.47.04/converter/ppm/ppmtopjxl.c.security netpbm-10.47.04/converter/ppm/ppmtopjxl.c
+--- netpbm-10.47.04/converter/ppm/ppmtopjxl.c.security 2009-10-21 13:39:10.000000000 +0200
++++ netpbm-10.47.04/converter/ppm/ppmtopjxl.c 2009-10-21 15:43:31.000000000 +0200
+@@ -276,6 +276,8 @@ main(int argc, const char * argv[]) {
+ pm_error("image too large; reduce with ppmscale");
+ if (maxval > PCL_MAXVAL)
+ pm_error("color range too large; reduce with ppmcscale");
++ if (cols < 0 || rows < 0)
++ pm_error("negative size is not possible");
+
+ /* Figure out the colormap. */
+ pm_message("Computing colormap...");
+@@ -296,6 +298,8 @@ main(int argc, const char * argv[]) {
+ case 0: /* direct mode (no palette) */
+ bpp = bitsperpixel(maxval); /* bits per pixel */
+ bpg = bpp; bpb = bpp;
++ overflow2(bpp, 3);
++ overflow_add(bpp*3, 7);
+ bpp = (bpp*3+7)>>3; /* bytes per pixel now */
+ bpr = (bpp<<3)-bpg-bpb;
+ bpp *= cols; /* bytes per row now */
+@@ -305,9 +309,13 @@ main(int argc, const char * argv[]) {
+ case 3: case 7: pclindex++;
+ default:
+ bpp = 8/pclindex;
++ overflow_add(cols, bpp);
++ if(bpp == 0)
++ pm_error("assert: no bpp");
+ bpp = (cols+bpp-1)/bpp; /* bytes per row */
+ }
+ }
++ overflow2(bpp,2);
+ inrow = (char *)malloc((unsigned)bpp);
+ outrow = (char *)malloc((unsigned)bpp*2);
+ runcnt = (signed char *)malloc((unsigned)bpp);
+diff -up netpbm-10.47.04/converter/ppm/ppmtowinicon.c.security netpbm-10.47.04/converter/ppm/ppmtowinicon.c
+--- netpbm-10.47.04/converter/ppm/ppmtowinicon.c.security 2009-10-21 13:39:10.000000000 +0200
++++ netpbm-10.47.04/converter/ppm/ppmtowinicon.c 2009-10-21 15:44:54.000000000 +0200
+@@ -12,6 +12,7 @@
+
+ #include <math.h>
+ #include <string.h>
++#include <stdlib.h>
+
+ #include "pm_c_util.h"
+ #include "winico.h"
+@@ -219,6 +220,7 @@ createAndBitmap (gray ** const ba, int c
+ MALLOCARRAY_NOFAIL(rowData, rows);
+ icBitmap->xBytes = xBytes;
+ icBitmap->data = rowData;
++ overflow2(xBytes, rows);
+ icBitmap->size = xBytes * rows;
+ for (y=0;y<rows;y++) {
+ u1 * row;
+@@ -347,6 +349,7 @@ create4Bitmap (pixel ** const pa, int co
+ MALLOCARRAY_NOFAIL(rowData, rows);
+ icBitmap->xBytes = xBytes;
+ icBitmap->data = rowData;
++ overflow2(xBytes, rows);
+ icBitmap->size = xBytes * rows;
+
+ for (y=0;y<rows;y++) {
+@@ -407,6 +410,7 @@ create8Bitmap (pixel ** const pa, int co
+ MALLOCARRAY_NOFAIL(rowData, rows);
+ icBitmap->xBytes = xBytes;
+ icBitmap->data = rowData;
++ overflow2(xBytes, rows);
+ icBitmap->size = xBytes * rows;
+
+ for (y=0;y<rows;y++) {
+@@ -714,6 +718,10 @@ addEntryToIcon(MS_Ico const MSIcon
+ entry->bitcount = bpp;
+ entry->ih = createInfoHeader(entry, xorBitmap, andBitmap);
+ entry->colors = palette->colors;
++ overflow2(4, entry->color_count);
++ overflow_add(xorBitmap->size, andBitmap->size);
++ overflow_add(xorBitmap->size + andBitmap->size, 40);
++ overflow_add(xorBitmap->size + andBitmap->size + 40, 4 * entry->color_count);
+ entry->size_in_bytes =
+ xorBitmap->size + andBitmap->size + 40 + (4 * entry->color_count);
+ if (verbose)
+diff -up netpbm-10.47.04/converter/ppm/ppmtoxpm.c.security netpbm-10.47.04/converter/ppm/ppmtoxpm.c
+--- netpbm-10.47.04/converter/ppm/ppmtoxpm.c.security 2009-10-21 13:39:10.000000000 +0200
++++ netpbm-10.47.04/converter/ppm/ppmtoxpm.c 2009-10-21 15:09:33.000000000 +0200
+@@ -197,6 +197,7 @@ genNumstr(unsigned int const input, int
+ unsigned int i;
+
+ /* Allocate memory for printed number. Abort if error. */
++ overflow_add(digits, 1);
+ if (!(str = (char *) malloc(digits + 1)))
+ pm_error("out of memory");
+
+@@ -314,6 +315,7 @@ genCmap(colorhist_vector const chv,
+ unsigned int charsPerPixel;
+ unsigned int xpmMaxval;
+
++ if (includeTransparent) overflow_add(ncolors, 1);
+ MALLOCARRAY(cmap, cmapSize);
+ if (cmapP == NULL)
+ pm_error("Out of memory allocating %u bytes for a color map.",
+diff -up netpbm-10.47.04/converter/ppm/qrttoppm.c.security netpbm-10.47.04/converter/ppm/qrttoppm.c
+--- netpbm-10.47.04/converter/ppm/qrttoppm.c.security 2009-10-21 13:39:10.000000000 +0200
++++ netpbm-10.47.04/converter/ppm/qrttoppm.c 2009-10-21 15:09:33.000000000 +0200
+@@ -46,7 +46,7 @@ main( argc, argv )
+
+ ppm_writeppminit( stdout, cols, rows, maxval, 0 );
+ pixelrow = ppm_allocrow( cols );
+- buf = (unsigned char *) malloc( 3 * cols );
++ buf = (unsigned char *) malloc2( 3 , cols );
+ if ( buf == (unsigned char *) 0 )
+ pm_error( "out of memory" );
+
+diff -up netpbm-10.47.04/converter/ppm/sldtoppm.c.security netpbm-10.47.04/converter/ppm/sldtoppm.c
+--- netpbm-10.47.04/converter/ppm/sldtoppm.c.security 2009-10-21 13:39:10.000000000 +0200
++++ netpbm-10.47.04/converter/ppm/sldtoppm.c 2009-10-21 15:44:11.000000000 +0200
+@@ -455,6 +455,8 @@ slider(slvecfn slvec,
+
+ /* Allocate image buffer and clear it to black. */
+
++ overflow_add(ixdots,1);
++ overflow_add(iydots,1);
+ pixels = ppm_allocarray(pixcols = ixdots + 1, pixrows = iydots + 1);
+ PPM_ASSIGN(rgbcolor, 0, 0, 0);
+ ppmd_filledrectangle(pixels, pixcols, pixrows, pixmaxval, 0, 0,
+diff -up netpbm-10.47.04/converter/ppm/ximtoppm.c.security netpbm-10.47.04/converter/ppm/ximtoppm.c
+--- netpbm-10.47.04/converter/ppm/ximtoppm.c.security 2009-10-21 13:39:10.000000000 +0200
++++ netpbm-10.47.04/converter/ppm/ximtoppm.c 2009-10-21 15:09:33.000000000 +0200
+@@ -117,6 +117,7 @@ ReadXimHeader(FILE * const in_fp,
+ header->bits_channel = atoi(a_head.bits_per_channel);
+ header->alpha_flag = atoi(a_head.alpha_channel);
+ if (strlen(a_head.author)) {
++ overflow_add(strlen(a_head.author),1);
+ if (!(header->author = calloc((unsigned int)strlen(a_head.author)+1,
+ 1))) {
+ pm_message("ReadXimHeader: can't calloc author string" );
+@@ -126,6 +127,7 @@ ReadXimHeader(FILE * const in_fp,
+ strncpy(header->author, a_head.author, strlen(a_head.author));
+ }
+ if (strlen(a_head.date)) {
++ overflow_add(strlen(a_head.date),1);
+ if (!(header->date =calloc((unsigned int)strlen(a_head.date)+1,1))){
+ pm_message("ReadXimHeader: can't calloc date string" );
+ return(0);
+@@ -134,6 +136,7 @@ ReadXimHeader(FILE * const in_fp,
+ strncpy(header->date, a_head.date, strlen(a_head.date));
+ }
+ if (strlen(a_head.program)) {
++ overflow_add(strlen(a_head.program),1);
+ if (!(header->program = calloc(
+ (unsigned int)strlen(a_head.program) + 1, 1))) {
+ pm_message("ReadXimHeader: can't calloc program string" );
+@@ -160,6 +163,7 @@ ReadXimHeader(FILE * const in_fp,
+ if (header->nchannels == 3 && header->bits_channel == 8)
+ header->ncolors = 0;
+ else if (header->nchannels == 1 && header->bits_channel == 8) {
++ overflow2(header->ncolors, sizeof(Color));
+ header->colors = (Color *)calloc((unsigned int)header->ncolors,
+ sizeof(Color));
+ if (header->colors == NULL) {
+diff -up netpbm-10.47.04/converter/ppm/xpmtoppm.c.security netpbm-10.47.04/converter/ppm/xpmtoppm.c
+--- netpbm-10.47.04/converter/ppm/xpmtoppm.c.security 2009-10-21 13:39:10.000000000 +0200
++++ netpbm-10.47.04/converter/ppm/xpmtoppm.c 2009-10-21 15:09:33.000000000 +0200
+@@ -701,6 +701,7 @@ ReadXPMFile(FILE * const stream, int * c
+ &ncolors, colorsP, &ptab);
+ *transparentP = -1; /* No transparency in version 1 */
+ }
++ overflow2(*widthP, *heightP);
+ totalpixels = *widthP * *heightP;
+ MALLOCARRAY(*dataP, totalpixels);
+ if (*dataP == NULL)
+diff -up netpbm-10.47.04/converter/ppm/yuvtoppm.c.security netpbm-10.47.04/converter/ppm/yuvtoppm.c
+--- netpbm-10.47.04/converter/ppm/yuvtoppm.c.security 2009-10-21 13:39:10.000000000 +0200
++++ netpbm-10.47.04/converter/ppm/yuvtoppm.c 2009-10-21 15:09:33.000000000 +0200
+@@ -72,6 +72,7 @@ main(argc, argv)
+
+ ppm_writeppminit(stdout, cols, rows, (pixval) 255, 0);
+ pixrow = ppm_allocrow(cols);
++ overflow_add(cols, 1);
+ MALLOCARRAY(yuvbuf, (cols+1)/2);
+ if (yuvbuf == NULL)
+ pm_error("Unable to allocate YUV buffer for %d columns.", cols);
+diff -up netpbm-10.47.04/editor/pamcut.c.security netpbm-10.47.04/editor/pamcut.c
+--- netpbm-10.47.04/editor/pamcut.c.security 2009-10-21 13:38:57.000000000 +0200
++++ netpbm-10.47.04/editor/pamcut.c 2009-10-21 15:29:36.000000000 +0200
+@@ -655,6 +655,8 @@ cutOneImage(FILE * const ifP
+
+ outpam = inpam; /* Initial value -- most fields should be same */
+ outpam.file = ofP;
++ overflow_add(rightcol, 1);
++ overflow_add(bottomrow, 1);
+ outpam.width = rightcol - leftcol + 1;
+ outpam.height = bottomrow - toprow + 1;
+
+diff -up netpbm-10.47.04/editor/pbmpscale.c.security netpbm-10.47.04/editor/pbmpscale.c
+--- netpbm-10.47.04/editor/pbmpscale.c.security 2009-10-21 13:38:57.000000000 +0200
++++ netpbm-10.47.04/editor/pbmpscale.c 2009-10-21 15:27:21.000000000 +0200
+@@ -110,6 +110,7 @@ main(int argc, char ** argv) {
+ inrow[0] = inrow[1] = inrow[2] = NULL;
+ pbm_readpbminit(ifP, &columns, &rows, &format) ;
+
++ overflow2(columns, scale);
+ outrow = pbm_allocrow(columns*scale) ;
+ MALLOCARRAY(flags, columns);
+ if (flags == NULL)
+diff -up netpbm-10.47.04/editor/pbmreduce.c.security netpbm-10.47.04/editor/pbmreduce.c
+--- netpbm-10.47.04/editor/pbmreduce.c.security 2009-10-21 13:38:57.000000000 +0200
++++ netpbm-10.47.04/editor/pbmreduce.c 2009-10-21 15:26:13.000000000 +0200
+@@ -94,6 +94,7 @@ main( argc, argv )
+ if (halftone == QT_FS) {
+ unsigned int col;
+ /* Initialize Floyd-Steinberg. */
++ overflow_add(newcols, 2);
+ MALLOCARRAY(thiserr, newcols + 2);
+ MALLOCARRAY(nexterr, newcols + 2);
+ if (thiserr == NULL || nexterr == NULL)
+diff -up netpbm-10.47.04/editor/pnmgamma.c.security netpbm-10.47.04/editor/pnmgamma.c
+--- netpbm-10.47.04/editor/pnmgamma.c.security 2009-10-21 13:38:57.000000000 +0200
++++ netpbm-10.47.04/editor/pnmgamma.c 2009-10-21 15:09:34.000000000 +0200
+@@ -586,6 +586,7 @@ createGammaTables(enum transferFunction
+ xelval ** const btableP) {
+
+ /* Allocate space for the tables. */
++ overflow_add(maxval, 1);
+ MALLOCARRAY(*rtableP, maxval+1);
+ MALLOCARRAY(*gtableP, maxval+1);
+ MALLOCARRAY(*btableP, maxval+1);
+diff -up netpbm-10.47.04/editor/pnmhisteq.c.security netpbm-10.47.04/editor/pnmhisteq.c
+--- netpbm-10.47.04/editor/pnmhisteq.c.security 2009-10-21 13:38:57.000000000 +0200
++++ netpbm-10.47.04/editor/pnmhisteq.c 2009-10-21 15:09:34.000000000 +0200
+@@ -103,6 +103,7 @@ computeLuminosityHistogram(xel * const *
+ unsigned int pixelCount;
+ unsigned int * lumahist;
+
++ overflow_add(maxval, 1);
+ MALLOCARRAY(lumahist, maxval + 1);
+ if (lumahist == NULL)
+ pm_error("Out of storage allocating array for %u histogram elements",
+diff -up netpbm-10.47.04/editor/pnmindex.csh.security netpbm-10.47.04/editor/pnmindex.csh
+--- netpbm-10.47.04/editor/pnmindex.csh.security 2009-10-21 13:38:57.000000000 +0200
++++ netpbm-10.47.04/editor/pnmindex.csh 2009-10-21 15:09:34.000000000 +0200
+@@ -1,5 +1,8 @@
+ #!/bin/csh -f
+ #
++echo "Unsafe code, needs debugging, do not ship"
++exit 1
++#
+ # pnmindex - build a visual index of a bunch of anymaps
+ #
+ # Copyright (C) 1991 by Jef Poskanzer.
+diff -up netpbm-10.47.04/editor/pnmpad.c.security netpbm-10.47.04/editor/pnmpad.c
+--- netpbm-10.47.04/editor/pnmpad.c.security 2009-10-21 13:38:57.000000000 +0200
++++ netpbm-10.47.04/editor/pnmpad.c 2009-10-21 15:33:51.000000000 +0200
+@@ -527,6 +527,8 @@ main(int argc, const char ** argv) {
+
+ computePadSizes(cmdline, cols, rows, &lpad, &rpad, &tpad, &bpad);
+
++ overflow_add(cols, lpad);
++ overflow_add(cols + lpad, rpad);
+ newcols = cols + lpad + rpad;
+
+ if (PNM_FORMAT_TYPE(format) == PBM_TYPE)
+diff -up netpbm-10.47.04/editor/pnmpaste.c.security netpbm-10.47.04/editor/pnmpaste.c
+diff -up netpbm-10.47.04/editor/pnmremap.c.security netpbm-10.47.04/editor/pnmremap.c
+--- netpbm-10.47.04/editor/pnmremap.c.security 2009-10-21 13:38:57.000000000 +0200
++++ netpbm-10.47.04/editor/pnmremap.c 2009-10-21 15:28:20.000000000 +0200
+@@ -408,7 +408,7 @@ initFserr(struct pam * const pamP,
+ unsigned int plane;
+
+ unsigned int const fserrSize = pamP->width + 2;
+-
++ overflow_add(pamP->width, 2);
+ fserrP->width = pamP->width;
+
+ MALLOCARRAY(fserrP->thiserr, pamP->depth);
+@@ -444,6 +444,7 @@ floydInitRow(struct pam * const pamP, st
+
+ int col;
+
++ overflow_add(pamP->width, 2);
+ for (col = 0; col < pamP->width + 2; ++col) {
+ unsigned int plane;
+ for (plane = 0; plane < pamP->depth; ++plane)
+diff -up netpbm-10.47.04/editor/pnmscalefixed.c.security netpbm-10.47.04/editor/pnmscalefixed.c
+--- netpbm-10.47.04/editor/pnmscalefixed.c.security 2009-10-21 13:38:57.000000000 +0200
++++ netpbm-10.47.04/editor/pnmscalefixed.c 2009-10-21 15:09:34.000000000 +0200
+@@ -211,6 +211,8 @@ compute_output_dimensions(const struct c
+ const int rows, const int cols,
+ int * newrowsP, int * newcolsP) {
+
++ overflow2(rows, cols);
++
+ if (cmdline.pixels) {
+ if (rows * cols <= cmdline.pixels) {
+ *newrowsP = rows;
+@@ -262,6 +264,8 @@ compute_output_dimensions(const struct c
+
+ if (*newcolsP < 1) *newcolsP = 1;
+ if (*newrowsP < 1) *newrowsP = 1;
++
++ overflow2(*newcolsP, *newrowsP);
+ }
+
+
+@@ -443,6 +447,9 @@ main(int argc, char **argv ) {
+ unfilled. We can address that by stretching, whereas the other
+ case would require throwing away some of the input.
+ */
++
++ overflow2(newcols, SCALE);
++ overflow2(newrows, SCALE);
+ sxscale = SCALE * newcols / cols;
+ syscale = SCALE * newrows / rows;
+
+diff -up netpbm-10.47.04/editor/pnmshear.c.security netpbm-10.47.04/editor/pnmshear.c
+--- netpbm-10.47.04/editor/pnmshear.c.security 2009-10-21 13:38:57.000000000 +0200
++++ netpbm-10.47.04/editor/pnmshear.c 2009-10-21 15:31:26.000000000 +0200
+@@ -15,6 +15,7 @@
+ #include <assert.h>
+ #include <math.h>
+ #include <string.h>
++#include <limits.h>
+
+ #include "pm_c_util.h"
+ #include "ppm.h"
+@@ -236,6 +237,11 @@ main(int argc, char * argv[]) {
+
+ shearfac = fabs(tan(cmdline.angle));
+
++ if(rows * shearfac >= INT_MAX-1)
++ pm_error("image too large");
++
++ overflow_add(rows * shearfac, cols+1);
++
+ newcols = rows * shearfac + cols + 0.999999;
+
+ pnm_writepnminit(stdout, newcols, rows, newmaxval, newformat, 0);
+diff -up netpbm-10.47.04/editor/ppmdither.c.security netpbm-10.47.04/editor/ppmdither.c
+--- netpbm-10.47.04/editor/ppmdither.c.security 2009-10-21 13:38:57.000000000 +0200
++++ netpbm-10.47.04/editor/ppmdither.c 2009-10-21 15:09:34.000000000 +0200
+@@ -111,6 +111,9 @@ dith_matrix(unsigned int const dith_dim)
+ (dith_dim * sizeof(int *)) + /* pointers */
+ (dith_dim * dith_dim * sizeof(int)); /* data */
+
++ overflow2(dith_dim, sizeof(int *));
++ overflow3(dith_dim, dith_dim, sizeof(int));
++ overflow_add(dith_dim * sizeof(int *), dith_dim * dith_dim * sizeof(int));
+ dith_mat = (unsigned int **) malloc(dith_mat_sz);
+
+ if (dith_mat == NULL)
+@@ -165,7 +168,8 @@ dith_setup(const unsigned int dith_power
+ if (dith_nb < 2)
+ pm_error("too few shades for blue, minimum of 2");
+
+- MALLOCARRAY(*colormapP, dith_nr * dith_ng * dith_nb);
++ overflow2(dith_nr, dith_ng);
++ *colormapP = malloc3(dith_nr * dith_ng, dith_nb, sizeof(pixel));
+ if (*colormapP == NULL)
+ pm_error("Unable to allocate space for the color lookup table "
+ "(%d by %d by %d pixels).", dith_nr, dith_ng, dith_nb);
+diff -up netpbm-10.47.04/editor/specialty/pamoil.c.security netpbm-10.47.04/editor/specialty/pamoil.c
+--- netpbm-10.47.04/editor/specialty/pamoil.c.security 2009-10-21 13:38:56.000000000 +0200
++++ netpbm-10.47.04/editor/specialty/pamoil.c 2009-10-21 15:09:33.000000000 +0200
+@@ -112,6 +112,7 @@ main(int argc, char *argv[] ) {
+ tuples = pnm_readpam(ifp, &inpam, PAM_STRUCT_SIZE(tuple_type));
+ pm_close(ifp);
+
++ overflow_add(inpam.maxval, 1);
+ MALLOCARRAY(hist, inpam.maxval + 1);
+ if (hist == NULL)
+ pm_error("Unable to allocate memory for histogram.");
+diff -up netpbm-10.47.04/generator/pbmpage.c.security netpbm-10.47.04/generator/pbmpage.c
+--- netpbm-10.47.04/generator/pbmpage.c.security 2009-10-21 13:38:57.000000000 +0200
++++ netpbm-10.47.04/generator/pbmpage.c 2009-10-21 15:09:34.000000000 +0200
+@@ -170,6 +170,9 @@ outputPbm(FILE * const file,
+ /* We round the allocated row space up to a multiple of 8 so the ugly
+ fast code below can work.
+ */
++
++ overflow_add(bitmap.Width, 7);
++
+ pbmrow = pbm_allocrow(((bitmap.Width+7)/8)*8);
+
+ bitmap_cursor = 0;
+diff -up netpbm-10.47.04/generator/pbmtext.c.security netpbm-10.47.04/generator/pbmtext.c
+--- netpbm-10.47.04/generator/pbmtext.c.security 2009-10-21 13:38:57.000000000 +0200
++++ netpbm-10.47.04/generator/pbmtext.c 2009-10-21 15:23:15.000000000 +0200
+@@ -96,12 +96,14 @@ parseCommandLine(int argc, const char **
+
+ for (i = 1; i < argc; ++i) {
+ if (i > 1) {
++ overflow_add(totaltextsize, 1);
+ totaltextsize += 1;
+ text = realloc(text, totaltextsize);
+ if (text == NULL)
+ pm_error("out of memory allocating space for input text");
+ strcat(text, " ");
+ }
++ overflow_add(totaltextsize, strlen(argv[i]));
+ totaltextsize += strlen(argv[i]);
+ text = realloc(text, totaltextsize);
+ if (text == NULL)
+@@ -711,6 +713,7 @@ getText(const char cmdline_text
+ pm_error("A line of input text is longer than %u characters."
+ "Cannot process.", sizeof(buf)-1);
+ if (lineCount >= maxlines) {
++ overflow2(maxlines, 2);
+ maxlines *= 2;
+ REALLOCARRAY(text_array, maxlines);
+ if (text_array == NULL)
+@@ -831,6 +834,7 @@ main(int argc, const char *argv[]) {
+ hmargin = fontP->maxwidth;
+ } else {
+ vmargin = fontP->maxheight;
++ overflow2(2, fontP->maxwidth);
+ hmargin = 2 * fontP->maxwidth;
+ }
+ }
+diff -up netpbm-10.47.04/generator/pgmcrater.c.security netpbm-10.47.04/generator/pgmcrater.c
+--- netpbm-10.47.04/generator/pgmcrater.c.security 2009-10-21 13:38:57.000000000 +0200
++++ netpbm-10.47.04/generator/pgmcrater.c 2009-10-21 15:09:34.000000000 +0200
+@@ -130,7 +130,7 @@ static void gencraters()
+ /* Acquire the elevation array and initialize it to mean
+ surface elevation. */
+
+- MALLOCARRAY(aux, SCRX * SCRY);
++ aux = (unsigned short *) malloc3(SCRX, SCRY, sizeof(short));
+ if (aux == NULL)
+ pm_error("out of memory allocating elevation array");
+
+diff -up netpbm-10.47.04/generator/pgmkernel.c.security netpbm-10.47.04/generator/pgmkernel.c
+--- netpbm-10.47.04/generator/pgmkernel.c.security 2009-10-21 13:38:57.000000000 +0200
++++ netpbm-10.47.04/generator/pgmkernel.c 2009-10-21 15:09:34.000000000 +0200
+@@ -68,7 +68,7 @@ main ( argc, argv )
+ kycenter = (fysize - 1) / 2.0;
+ ixsize = fxsize + 0.999;
+ iysize = fysize + 0.999;
+- MALLOCARRAY(fkernel, ixsize * iysize);
++ fkernel = (double *) malloc3 (ixsize, iysize, sizeof(double));
+ for (i = 0; i < iysize; i++)
+ for (j = 0; j < ixsize; j++) {
+ fkernel[i*ixsize+j] = 1.0 / (1.0 + w * sqrt((double)
+diff -up netpbm-10.47.04/lib/libpam.c.security netpbm-10.47.04/lib/libpam.c
+--- netpbm-10.47.04/lib/libpam.c.security 2009-10-21 13:39:00.000000000 +0200
++++ netpbm-10.47.04/lib/libpam.c 2009-10-21 15:09:34.000000000 +0200
+@@ -235,7 +235,8 @@ allocPamRow(const struct pam * const pam
+ int const bytesPerTuple = allocationDepth(pamP) * sizeof(sample);
+ tuple * tuplerow;
+
+- tuplerow = malloc(pamP->width * (sizeof(tuple *) + bytesPerTuple));
++ overflow_add(sizeof(tuple *), bytesPerTuple);
++ tuplerow = malloc2(pamP->width, sizeof(tuple *) + bytesPerTuple);
+
+ if (tuplerow != NULL) {
+ /* Now we initialize the pointers to the individual tuples
+diff -up netpbm-10.47.04/lib/libpammap.c.security netpbm-10.47.04/lib/libpammap.c
+--- netpbm-10.47.04/lib/libpammap.c.security 2009-10-21 13:39:00.000000000 +0200
++++ netpbm-10.47.04/lib/libpammap.c 2009-10-21 15:09:34.000000000 +0200
+@@ -104,6 +104,8 @@ allocTupleIntListItem(struct pam * const
+ */
+ struct tupleint_list_item * retval;
+
++ overflow2(pamP->depth, sizeof(sample));
++ overflow_add(sizeof(*retval)-sizeof(retval->tupleint.tuple), pamP->depth*sizeof(sample));
+ unsigned int const size =
+ sizeof(*retval) - sizeof(retval->tupleint.tuple)
+ + pamP->depth * sizeof(sample);
+diff -up netpbm-10.47.04/lib/libpbm1.c.security netpbm-10.47.04/lib/libpbm1.c
+--- netpbm-10.47.04/lib/libpbm1.c.security 2009-10-21 13:39:00.000000000 +0200
++++ netpbm-10.47.04/lib/libpbm1.c 2009-10-21 15:09:34.000000000 +0200
+@@ -77,6 +77,7 @@ pbm_check(FILE * file, const enum pm_che
+ pm_message("pm_filepos passed to pm_check() is %u bytes",
+ sizeof(pm_filepos));
+ #endif
++ overflow2(bytes_per_row, rows);
+ pm_check(file, check_type, need_raster_size, retval_p);
+ }
+ }
+diff -up netpbm-10.47.04/lib/libpbmvms.c.security netpbm-10.47.04/lib/libpbmvms.c
+--- netpbm-10.47.04/lib/libpbmvms.c.security 2009-10-21 13:39:00.000000000 +0200
++++ netpbm-10.47.04/lib/libpbmvms.c 2009-10-21 15:09:34.000000000 +0200
+@@ -1,3 +1,5 @@
++#warning "NOT AUDITED"
++
+ /***************************************************************************
+ This file contains library routines needed to build Netpbm for VMS.
+ However, as of 2000.05.26, when these were split out of libpbm1.c
+diff -up netpbm-10.47.04/lib/libpm.c.security netpbm-10.47.04/lib/libpm.c
+--- netpbm-10.47.04/lib/libpm.c.security 2009-10-21 13:39:00.000000000 +0200
++++ netpbm-10.47.04/lib/libpm.c 2009-10-21 15:09:34.000000000 +0200
+@@ -827,4 +827,53 @@ pm_parse_height(const char * const arg)
+ }
+
+
++/*
++ * Maths wrapping
++ */
++
++void __overflow2(int a, int b)
++{
++ if(a < 0 || b < 0)
++ pm_error("object too large");
++ if(b == 0)
++ return;
++ if(a > INT_MAX / b)
++ pm_error("object too large");
++}
++
++void overflow3(int a, int b, int c)
++{
++ overflow2(a,b);
++ overflow2(a*b, c);
++}
++
++void overflow_add(int a, int b)
++{
++ if( a > INT_MAX - b)
++ pm_error("object too large");
++}
++
++void *malloc2(int a, int b)
++{
++ overflow2(a, b);
++ if(a*b == 0)
++ pm_error("Zero byte allocation");
++ return malloc(a*b);
++}
++
++void *malloc3(int a, int b, int c)
++{
++ overflow3(a, b, c);
++ if(a*b*c == 0)
++ pm_error("Zero byte allocation");
++ return malloc(a*b*c);
++}
++
++void *realloc2(void * a, int b, int c)
++{
++ overflow2(b, c);
++ if(b*c == 0)
++ pm_error("Zero byte allocation");
++ return realloc(a, b*c);
++}
+
+diff -up netpbm-10.47.04/lib/pm.h.security netpbm-10.47.04/lib/pm.h
+--- netpbm-10.47.04/lib/pm.h.security 2009-10-21 13:39:00.000000000 +0200
++++ netpbm-10.47.04/lib/pm.h 2009-10-21 15:09:34.000000000 +0200
+@@ -377,4 +377,11 @@ pm_parse_height(const char * const arg);
+ #endif
+
+
++void *malloc2(int, int);
++void *malloc3(int, int, int);
++#define overflow2(a,b) __overflow2(a,b)
++void __overflow2(int, int);
++void overflow3(int, int, int);
++void overflow_add(int, int);
++
+ #endif
+diff -up netpbm-10.47.04/other/pnmcolormap.c.security netpbm-10.47.04/other/pnmcolormap.c
+--- netpbm-10.47.04/other/pnmcolormap.c.security 2009-10-21 13:38:54.000000000 +0200
++++ netpbm-10.47.04/other/pnmcolormap.c 2009-10-21 15:09:34.000000000 +0200
+@@ -840,6 +840,7 @@ colormapToSquare(struct pam * const pamP
+ pamP->width = intsqrt;
+ else
+ pamP->width = intsqrt + 1;
++ overflow_add(intsqrt, 1);
+ }
+ {
+ unsigned int const intQuotient = colormap.size / pamP->width;
+diff -up netpbm-10.47.04/urt/README.security netpbm-10.47.04/urt/README
+--- netpbm-10.47.04/urt/README.security 2009-10-21 13:39:11.000000000 +0200
++++ netpbm-10.47.04/urt/README 2009-10-21 15:09:34.000000000 +0200
+@@ -18,3 +18,8 @@ in its initializer in the original. But
+ defines stdout as a variable, so that wouldn't compile. So I changed
+ it to NULL and added a line to rle_hdr_init to set that field to
+ 'stdout' dynamically. 2000.06.02 BJH.
++
++Redid the code to check for maths overflows and other crawly horrors.
++Removed pipe through and compress support (unsafe)
++
++Alan Cox <alan@redhat.com>
+diff -up netpbm-10.47.04/urt/rle_addhist.c.security netpbm-10.47.04/urt/rle_addhist.c
+--- netpbm-10.47.04/urt/rle_addhist.c.security 2009-10-21 13:39:11.000000000 +0200
++++ netpbm-10.47.04/urt/rle_addhist.c 2009-10-21 15:09:34.000000000 +0200
+@@ -14,6 +14,8 @@
+ * If you modify this software, you should include a notice giving the
+ * name of the person performing the modification, the date of modification,
+ * and the reason for such modification.
++ *
++ * 2002-12-19: Fix maths wrapping bugs. Alan Cox <alan@redhat.com>
+ */
+ /*
+ * rle_addhist.c - Add to the HISTORY comment in header
+@@ -76,13 +78,19 @@ rle_addhist(char * argv[],
+ return;
+
+ length = 0;
+- for (i = 0; argv[i]; ++i)
++ for (i = 0; argv[i]; ++i) {
++ overflow_add(length, strlen(argv[i]));
++ overflow_add(length+1, strlen(argv[i]));
+ length += strlen(argv[i]) +1; /* length of each arg plus space. */
++ }
+
+ time(&temp);
+ timedate = ctime(&temp);
+ length += strlen(timedate); /* length of date and time in ASCII. */
+
++ overflow_add(strlen(padding), 4);
++ overflow_add(strlen(histoire), strlen(padding) + 4);
++ overflow_add(length, strlen(histoire) + strlen(padding) + 4);
+ length += strlen(padding) + 3 + strlen(histoire) + 1;
+ /* length of padding, "on " and length of history name plus "="*/
+ if (in_hdr) /* if we are interested in the old comments... */
+@@ -90,9 +98,12 @@ rle_addhist(char * argv[],
+ else
+ old = NULL;
+
+- if (old && *old)
++ if (old && *old) {
++ overflow_add(length, strlen(old));
+ length += strlen(old); /* add length if there. */
++ }
+
++ overflow_add(length, 1);
+ ++length; /*Cater for the null. */
+
+ MALLOCARRAY(newc, length);
+diff -up netpbm-10.47.04/urt/rle_getrow.c.security netpbm-10.47.04/urt/rle_getrow.c
+--- netpbm-10.47.04/urt/rle_getrow.c.security 2009-10-21 13:39:11.000000000 +0200
++++ netpbm-10.47.04/urt/rle_getrow.c 2009-10-21 15:09:34.000000000 +0200
+@@ -17,6 +17,8 @@
+ *
+ * Modified at BRL 16-May-88 by Mike Muuss to avoid Alliant STDC desire
+ * to have all "void" functions so declared.
++ *
++ * 2002-12-19: Fix maths wrapping bugs. Alan Cox <alan@redhat.com>
+ */
+ /*
+ * rle_getrow.c - Read an RLE file in.
+@@ -168,6 +170,7 @@ rle_get_setup(rle_hdr * const the_hdr) {
+ register char * cp;
+
+ VAXSHORT( comlen, infile ); /* get comment length */
++ overflow_add(comlen, 1);
+ evenlen = (comlen + 1) & ~1; /* make it even */
+ if ( evenlen )
+ {
+diff -up netpbm-10.47.04/urt/rle_hdr.c.security netpbm-10.47.04/urt/rle_hdr.c
+--- netpbm-10.47.04/urt/rle_hdr.c.security 2009-10-21 13:39:11.000000000 +0200
++++ netpbm-10.47.04/urt/rle_hdr.c 2009-10-21 15:09:34.000000000 +0200
+@@ -14,6 +14,8 @@
+ * If you modify this software, you should include a notice giving the
+ * name of the person performing the modification, the date of modification,
+ * and the reason for such modification.
++ *
++ * 2002-12-19: Fix maths wrapping bugs. Alan Cox <alan@redhat.com>
+ */
+ /*
+ * rle_hdr.c - Functions to manipulate rle_hdr structures.
+@@ -79,7 +81,10 @@ int img_num;
+ /* Fill in with copies of the strings. */
+ if ( the_hdr->cmd != pgmname )
+ {
+- char *tmp = (char *)malloc( strlen( pgmname ) + 1 );
++ char *tmp ;
++
++ overflow_add(strlen(pgmname), 1);
++ tmp = malloc( strlen( pgmname ) + 1 );
+ RLE_CHECK_ALLOC( pgmname, tmp, 0 );
+ strcpy( tmp, pgmname );
+ the_hdr->cmd = tmp;
+@@ -87,7 +92,9 @@ int img_num;
+
+ if ( the_hdr->file_name != fname )
+ {
+- char *tmp = (char *)malloc( strlen( fname ) + 1 );
++ char *tmp;
++ overflow_add(strlen(fname), 1);
++ tmp = malloc( strlen( fname ) + 1 );
+ RLE_CHECK_ALLOC( pgmname, tmp, 0 );
+ strcpy( tmp, fname );
+ the_hdr->file_name = tmp;
+@@ -152,6 +159,7 @@ rle_hdr *from_hdr, *to_hdr;
+ if ( to_hdr->bg_color )
+ {
+ int size = to_hdr->ncolors * sizeof(int);
++ overflow2(to_hdr->ncolors, sizeof(int));
+ to_hdr->bg_color = (int *)malloc( size );
+ RLE_CHECK_ALLOC( to_hdr->cmd, to_hdr->bg_color, "background color" );
+ memcpy( to_hdr->bg_color, from_hdr->bg_color, size );
+@@ -160,7 +168,7 @@ rle_hdr *from_hdr, *to_hdr;
+ if ( to_hdr->cmap )
+ {
+ int size = to_hdr->ncmap * (1 << to_hdr->cmaplen) * sizeof(rle_map);
+- to_hdr->cmap = (rle_map *)malloc( size );
++ to_hdr->cmap = (rle_map *)malloc3( to_hdr->ncmap, 1<<to_hdr->cmaplen, sizeof(rle_map));
+ RLE_CHECK_ALLOC( to_hdr->cmd, to_hdr->cmap, "color map" );
+ memcpy( to_hdr->cmap, from_hdr->cmap, size );
+ }
+@@ -173,11 +181,16 @@ rle_hdr *from_hdr, *to_hdr;
+ int size = 0;
+ CONST_DECL char **cp;
+ for ( cp=to_hdr->comments; *cp; cp++ )
++ {
++ overflow_add(size, 1);
+ size++; /* Count the comments. */
++ }
+ /* Check if there are really any comments. */
+ if ( size )
+ {
++ overflow_add(size, 1);
+ size++; /* Copy the NULL pointer, too. */
++ overflow2(size, sizeof(char *));
+ size *= sizeof(char *);
+ to_hdr->comments = (CONST_DECL char **)malloc( size );
+ RLE_CHECK_ALLOC( to_hdr->cmd, to_hdr->comments, "comments" );
+diff -up netpbm-10.47.04/urt/rle.h.security netpbm-10.47.04/urt/rle.h
+--- netpbm-10.47.04/urt/rle.h.security 2009-10-21 13:39:11.000000000 +0200
++++ netpbm-10.47.04/urt/rle.h 2009-10-21 15:09:34.000000000 +0200
+@@ -14,6 +14,9 @@
+ * If you modify this software, you should include a notice giving the
+ * name of the person performing the modification, the date of modification,
+ * and the reason for such modification.
++ *
++ * 2002-12-19: Fix maths wrapping bugs. Alan Cox <alan@redhat.com>
++ * Header declarations needed
+ */
+ /*
+ * rle.h - Global declarations for Utah Raster Toolkit RLE programs.
+@@ -166,6 +169,17 @@ rle_hdr /* End of typedef. *
+ */
+ extern rle_hdr rle_dflt_hdr;
+
++/*
++ * Provided by pm library
++ */
++
++extern void overflow_add(int, int);
++#define overflow2(a,b) __overflow2(a,b)
++extern void __overflow2(int, int);
++extern void overflow3(int, int, int);
++extern void *malloc2(int, int);
++extern void *malloc3(int, int, int);
++extern void *realloc2(void *, int, int);
+
+ /* Declare RLE library routines. */
+
+diff -up netpbm-10.47.04/urt/rle_open_f.c.security netpbm-10.47.04/urt/rle_open_f.c
+--- netpbm-10.47.04/urt/rle_open_f.c.security 2009-10-21 13:39:11.000000000 +0200
++++ netpbm-10.47.04/urt/rle_open_f.c 2009-10-21 15:15:38.000000000 +0200
+@@ -163,64 +163,7 @@ dealWithSubprocess(const char * const f
+ bool * const noSubprocessP,
+ const char ** const errorP) {
+
+-#ifdef NO_OPEN_PIPES
+ *noSubprocessP = TRUE;
+-#else
+- const char *cp;
+-
+- reapChildren(catchingChildrenP, pids);
+-
+- /* Real file, not stdin or stdout. If name ends in ".Z",
+- * pipe from/to un/compress (depending on r/w mode).
+- *
+- * If it starts with "|", popen that command.
+- */
+-
+- cp = file_name + strlen(file_name) - 2;
+- /* Pipe case. */
+- if (file_name[0] == '|') {
+- pid_t thepid; /* PID from my_popen */
+-
+- *noSubprocessP = FALSE;
+-
+- *fpP = my_popen(file_name + 1, mode, &thepid);
+- if (*fpP == NULL)
+- *errorP = "%s: can't invoke <<%s>> for %s: ";
+- else {
+- /* One more child to catch, eventually. */
+- if (*catchingChildrenP < MAX_CHILDREN)
+- pids[(*catchingChildrenP)++] = thepid;
+- }
+- } else if (cp > file_name && *cp == '.' && *(cp + 1) == 'Z' ) {
+- /* Compress case. */
+- pid_t thepid; /* PID from my_popen. */
+- const char * command;
+-
+- *noSubprocessP = FALSE;
+-
+- if (*mode == 'w')
+- asprintfN(&command, "compress > %s", file_name);
+- else if (*mode == 'a')
+- asprintfN(&command, "compress >> %s", file_name);
+- else
+- asprintfN(&command, "compress -d < %s", file_name);
+-
+- *fpP = my_popen(command, mode, &thepid);
+-
+- if (*fpP == NULL)
+- *errorP = "%s: can't invoke 'compress' program, "
+- "trying to open %s for %s";
+- else {
+- /* One more child to catch, eventually. */
+- if (*catchingChildrenP < MAX_CHILDREN)
+- pids[(*catchingChildrenP)++] = thepid;
+- }
+- strfree(command);
+- } else {
+- *noSubprocessP = TRUE;
+- *errorP = NULL;
+- }
+-#endif
+ }
+
+
+diff -up netpbm-10.47.04/urt/rle_putcom.c.security netpbm-10.47.04/urt/rle_putcom.c
+--- netpbm-10.47.04/urt/rle_putcom.c.security 2009-10-21 13:39:11.000000000 +0200
++++ netpbm-10.47.04/urt/rle_putcom.c 2009-10-21 15:09:34.000000000 +0200
+@@ -14,6 +14,8 @@
+ * If you modify this software, you should include a notice giving the
+ * name of the person performing the modification, the date of modification,
+ * and the reason for such modification.
++ *
++ * 2002-12-19: Fix maths wrapping bugs. Alan Cox <alan@redhat.com>
+ */
+ /*
+ * rle_putcom.c - Add a picture comment to the header struct.
+@@ -98,12 +100,14 @@ rle_putcom(const char * const value,
+ const char * v;
+ const char ** old_comments;
+ int i;
+- for (i = 2, cp = the_hdr->comments; *cp != NULL; ++i, ++cp)
++ for (i = 2, cp = the_hdr->comments; *cp != NULL; ++i, ++cp) {
++ overflow_add(i, 1);
+ if (match(value, *cp) != NULL) {
+ v = *cp;
+ *cp = value;
+ return v;
+ }
++ }
+ /* Not found */
+ /* Can't realloc because somebody else might be pointing to this
+ * comments block. Of course, if this were true, then the
+diff -up netpbm-10.47.04/urt/Runput.c.security netpbm-10.47.04/urt/Runput.c
+--- netpbm-10.47.04/urt/Runput.c.security 2009-10-21 13:39:11.000000000 +0200
++++ netpbm-10.47.04/urt/Runput.c 2009-10-21 15:09:34.000000000 +0200
+@@ -17,6 +17,8 @@
+ *
+ * Modified at BRL 16-May-88 by Mike Muuss to avoid Alliant STDC desire
+ * to have all "void" functions so declared.
++ *
++ * 2002-12-19: Fix maths wrapping bugs. Alan Cox <alan@redhat.com>
+ */
+ /*
+ * Runput.c - General purpose Run Length Encoding.
+@@ -202,9 +204,11 @@ RunSetup(rle_hdr * the_hdr)
+ if ( the_hdr->background != 0 )
+ {
+ register int i;
+- register rle_pixel *background =
+- (rle_pixel *)malloc( (unsigned)(the_hdr->ncolors + 1) );
++ register rle_pixel *background;
+ register int *bg_color;
++
++ overflow_add(the_hdr->ncolors,1);
++ background = (rle_pixel *)malloc( (unsigned)(the_hdr->ncolors + 1) );
+ /*
+ * If even number of bg color bytes, put out one more to get to
+ * 16 bit boundary.
+@@ -224,7 +228,7 @@ RunSetup(rle_hdr * the_hdr)
+ /* Big-endian machines are harder */
+ register int i, nmap = (1 << the_hdr->cmaplen) *
+ the_hdr->ncmap;
+- register char *h_cmap = (char *)malloc( nmap * 2 );
++ register char *h_cmap = (char *)malloc2( nmap, 2 );
+ if ( h_cmap == NULL )
+ {
+ fprintf( stderr,
+diff -up netpbm-10.47.04/urt/scanargs.c.security netpbm-10.47.04/urt/scanargs.c
+--- netpbm-10.47.04/urt/scanargs.c.security 2009-10-21 13:39:11.000000000 +0200
++++ netpbm-10.47.04/urt/scanargs.c 2009-10-21 15:09:34.000000000 +0200
+@@ -38,6 +38,8 @@
+ *
+ * Modified at BRL 16-May-88 by Mike Muuss to avoid Alliant STDC desire
+ * to have all "void" functions so declared.
++ *
++ * 2002-12-19: Fix maths wrapping bugs. Alan Cox <alan@redhat.com>
+ */
+
+ #include "rle.h"
+@@ -65,8 +67,8 @@ typedef int *ptr;
+ /*
+ * Storage allocation macros
+ */
+-#define NEW( type, cnt ) (type *) malloc( (cnt) * sizeof( type ) )
+-#define RENEW( type, ptr, cnt ) (type *) realloc( ptr, (cnt) * sizeof( type ) )
++#define NEW( type, cnt ) (type *) malloc2( (cnt) , sizeof( type ) )
++#define RENEW( type, ptr, cnt ) (type *) realloc2( ptr, (cnt), sizeof( type ) )
+
+ #if defined(c_plusplus) && !defined(USE_PROTOTYPES)
+ #define USE_PROTOTYPES
diff --git a/extra/netpbm/netpbm-security-scripts.patch b/extra/netpbm/netpbm-security-scripts.patch
new file mode 100644
index 000000000..557914b66
--- /dev/null
+++ b/extra/netpbm/netpbm-security-scripts.patch
@@ -0,0 +1,393 @@
+diff -up netpbm-10.47.05/converter/other/anytopnm.security-scripts netpbm-10.47.05/converter/other/anytopnm
+--- netpbm-10.47.05/converter/other/anytopnm.security-scripts 2009-12-10 08:34:36.000000000 +0100
++++ netpbm-10.47.05/converter/other/anytopnm 2010-03-16 21:28:09.000000000 +0100
+@@ -510,10 +510,7 @@ else
+ inputFile="-"
+ fi
+
+-tempdir="${TMPDIR-/tmp}/anytopnm.$$"
+-mkdir -m 0700 $tempdir || \
+- { echo "Could not create temporary file. Exiting."; exit 1;}
+-trap 'rm -rf $tempdir' 0
++tempdir=$(mktemp -d -t anytopnm.XXXXXXXXXX) || exit 1
+
+ # Take out all spaces
+ # Find the filename extension for last-ditch efforts later
+@@ -539,9 +536,17 @@ if [ "$filetype" = "unknown" ]; then
+ echo "$progname: unknown file type. " \
+ "'file' says mime type is '$mimeType', " 1>&2
+ echo "type description is '$typeDescription'" 1>&2
++ if [ -d "$tempdir" ] ; then
++ rm -rf "$tempdir"
++ fi
++
+ exit 1
+ fi
+
+ convertIt $file $filetype
+
++if [ -d "$tempdir" ] ; then
++ rm -rf "$tempdir"
++fi
++
+ exit 0
+diff -up netpbm-10.47.05/editor/pamstretch-gen.security-scripts netpbm-10.47.05/editor/pamstretch-gen
+--- netpbm-10.47.05/editor/pamstretch-gen.security-scripts 2009-12-10 08:34:32.000000000 +0100
++++ netpbm-10.47.05/editor/pamstretch-gen 2010-03-16 21:28:47.000000000 +0100
+@@ -31,13 +31,9 @@ if [ "$1" = "" ]; then
+ exit 1
+ fi
+
+-tempdir="${TMPDIR-/tmp}/pamstretch-gen.$$"
+-mkdir -m 0700 $tempdir || \
+- { echo "Could not create temporary file. Exiting."; exit 1;}
++tempfile=$(mktemp /tmp/pnmig.XXXXXXXXXX) || exit 1
+ trap 'rm -rf $tempdir' 0 1 3 15
+
+-tempfile=$tempdir/pnmig
+-
+ if ! cat $2 >$tempfile 2>/dev/null; then
+ echo 'pamstretch-gen: error reading file' 1>&2
+ exit 1
+diff -up netpbm-10.47.05/editor/pnmmargin.security-scripts netpbm-10.47.05/editor/pnmmargin
+--- netpbm-10.47.05/editor/pnmmargin.security-scripts 2009-12-10 08:34:32.000000000 +0100
++++ netpbm-10.47.05/editor/pnmmargin 2010-03-16 21:28:09.000000000 +0100
+@@ -11,15 +11,11 @@
+ # documentation. This software is provided "as is" without express or
+ # implied warranty.
+
+-tempdir="${TMPDIR-/tmp}/pnmmargin.$$"
+-mkdir -m 0700 $tempdir || \
+- { echo "Could not create temporary file. Exiting." 1>&2; exit 1;}
+-trap 'rm -rf $tempdir' 0 1 3 15
+-
+-tmp1=$tempdir/pnmm1
+-tmp2=$tempdir/pnmm2
+-tmp3=$tempdir/pnmm3
+-tmp4=$tempdir/pnmm4
++tmpdir=$(mktemp -d -t ppmmargin.XXXXXXX) || exit 1
++tmp1="$tmpdir/tmp1"
++tmp2="$tmpdir/tmp2"
++tmp3="$tmpdir/tmp3"
++tmp4="$tmpdir/tmp4"
+
+ color="-gofigure"
+ plainopt=""
+@@ -90,6 +86,7 @@ else
+ -white | -black )
+ pnmpad $plainopt $color \
+ -left=$size -right=$size -top=$size -bottom=$size $tmp1
++ rm -rf "$tmpdir"
+ exit
+ ;;
+ * )
+@@ -102,7 +99,4 @@ else
+ pnmcat -lr $tmp2 $tmp1 $tmp2 > $tmp4
+ pnmcat -tb $plainopt $tmp3 $tmp4 $tmp3
+ fi
+-
+-
+-
+-
++rm -rf "$tmpdir"
+diff -up netpbm-10.47.05/editor/ppmfade.security-scripts netpbm-10.47.05/editor/ppmfade
+--- netpbm-10.47.05/editor/ppmfade.security-scripts 2009-12-10 08:34:32.000000000 +0100
++++ netpbm-10.47.05/editor/ppmfade 2010-03-16 21:28:09.000000000 +0100
+@@ -14,6 +14,7 @@
+ #
+ #-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+ use strict;
++use File::Temp "tempdir";
+
+ my $SPREAD = 1;
+ my $SHIFT = 2;
+@@ -111,20 +112,26 @@ if ($first_file ne "undefined") {
+
+ print("Frames are " . $width . "W x " . $height . "H\n");
+
++#
++# We create a tmp-directory right here
++#
++my $tmpdir = tempdir("ppmfade.XXXXXX", CLEANUP => 1);
++
++
+ if ($first_file eq "undefined") {
+ print "Fading from black to ";
+- system("ppmmake \\#000 $width $height >junk1$$.ppm");
++ system("ppmmake \\#000 $width $height >$tmpdir/junk1$$.ppm");
+ } else {
+ print "Fading from $first_file to ";
+- system("cp", $first_file, "junk1$$.ppm");
++ system("cp", $first_file, "$tmpdir/junk1$$.ppm");
+ }
+
+ if ($last_file eq "undefined") {
+ print "black.\n";
+- system("ppmmake \\#000 $width $height >junk2$$.ppm");
++ system("ppmmake \\#000 $width $height >$tmpdir/junk2$$.ppm");
+ } else {
+ print "$last_file\n";
+- system("cp", $last_file, "junk2$$.ppm");
++ system("cp", $last_file, "$tmpdir/junk2$$.ppm");
+ }
+
+ #
+@@ -132,14 +139,14 @@ if ($last_file eq "undefined") {
+ #
+
+ # Here's what our temporary files are:
+-# junk1$$.ppm: The original (fade-from) image
+-# junk2$$.ppm: The target (fade-from) image
+-# junk3$$.ppm: The frame of the fade for the current iteration of the
+-# the for loop.
+-# junk1a$$.ppm: If the fade involves a ppmmix sequence from one intermediate
+-# image to another, this is the first frame of that
+-# sequence.
+-# junk2a$$.ppm: This is the last frame of the above-mentioned ppmmix sequence
++# $tmpdir/junk1$$.ppm: The original (fade-from) image
++# $tmpdir/junk2$$.ppm: The target (fade-from) image
++# $tmpdir/junk3$$.ppm: The frame of the fade for the current iteration of the
++# the for loop.
++# $tmpdir/junk1a$$.ppm: If the fade involves a ppmmix sequence from one intermediate
++# image to another, this is the first frame of that
++# sequence.
++# $tmpdir/junk2a$$.ppm: This is the last frame of the above-mentioned ppmmix sequence
+
+ my $i; # Frame number
+ for ($i = 1; $i <= $nframes; $i++) {
+@@ -147,147 +154,147 @@ for ($i = 1; $i <= $nframes; $i++) {
+ if ($mode eq $SPREAD) {
+ if ($i <= 10) {
+ my $n = $spline20[$i] * 100;
+- system("ppmspread $n junk1$$.ppm >junk3$$.ppm");
++ system("ppmspread $n $tmpdir/junk1$$.ppm >$tmpdir/junk3$$.ppm");
+ } elsif ($i <= 20) {
+ my $n;
+ $n = $spline20[$i] * 100;
+- system("ppmspread $n junk1$$.ppm >junk1a$$.ppm");
++ system("ppmspread $n $tmpdir/junk1$$.ppm >$tmpdir/junk1a$$.ppm");
+ $n = (1-$spline20[$i-10]) * 100;
+- system("ppmspread $n junk2$$.ppm >junk2a$$.ppm");
++ system("ppmspread $n $tmpdir/junk2$$.ppm >$tmpdir/junk2a$$.ppm");
+ $n = $spline10[$i-10];
+- system("ppmmix $n junk1a$$.ppm junk2a$$.ppm >junk3$$.ppm");
++ system("ppmmix $n $tmpdir/junk1a$$.ppm $tmpdir/junk2a$$.ppm >$tmpdir/junk3$$.ppm");
+ } else {
+ my $n = (1-$spline20[$i-10])*100;
+- system("ppmspread $n junk2$$.ppm >junk3$$.ppm");
++ system("ppmspread $n $tmpdir/junk2$$.ppm >$tmpdir/junk3$$.ppm");
+ }
+ } elsif ($mode eq $SHIFT) {
+ if ($i <= 10) {
+ my $n = $spline20[$i] * 100;
+- system("ppmshift $n junk1$$.ppm >junk3$$.ppm");
++ system("ppmshift $n $tmpdir/junk1$$.ppm >$tmpdir/junk3$$.ppm");
+ } elsif ($i <= 20) {
+ my $n;
+ $n = $spline20[$i] * 100;
+- system("ppmshift $n junk1$$.ppm >junk1a$$.ppm");
++ system("ppmshift $n $tmpdir/junk1$$.ppm >$tmpdir/junk1a$$.ppm");
+ $n = (1-$spline20[$i-10])*100;
+- system("ppmshift $n junk2$$.ppm >junk2a$$.ppm");
++ system("ppmshift $n $tmpdir/junk2$$.ppm >$tmpdir/junk2a$$.ppm");
+ $n = $spline10[$i-10];
+- system("ppmmix $n junk1a$$.ppm junk2a$$.ppm >junk3$$.ppm");
++ system("ppmmix $n $tmpdir/junk1a$$.ppm $tmpdir/junk2a$$.ppm >$tmpdir/junk3$$.ppm");
+ } else {
+ my $n = (1-$spline20[$i-10]) * 100;
+- system("ppmshift $n junk2$$.ppm >junk3$$.ppm");
++ system("ppmshift $n $tmpdir/junk2$$.ppm >$tmpdir/junk3$$.ppm");
+ }
+ } elsif ($mode eq $RELIEF) {
+ if ($i == 1) {
+- system("ppmrelief junk1$$.ppm >junk1r$$.ppm");
++ system("ppmrelief $tmpdir/junk1$$.ppm >$tmpdir/junk1r$$.ppm");
+ }
+ if ($i <= 10) {
+ my $n = $spline10[$i];
+- system("ppmmix $n junk1$$.ppm junk1r$$.ppm >junk3$$.ppm");
++ system("ppmmix $n $tmpdir/junk1$$.ppm $tmpdir/junk1r$$.ppm >$tmpdir/junk3$$.ppm");
+ } elsif ($i <= 20) {
+ my $n = $spline10[$i-10];
+- system("ppmmix $n junk1r$$.ppm junk2r$$.ppm >junk3$$.ppm");
++ system("ppmmix $n $tmpdir/junk1r$$.ppm $tmpdir/junk2r$$.ppm >$tmpdir/junk3$$.ppm");
+ } else {
+ my $n = $spline10[$i-20];
+- system("ppmmix $n junk2r$$.ppm junk2$$.ppm >junk3$$.ppm");
++ system("ppmmix $n $tmpdir/junk2r$$.ppm $tmpdir/junk2$$.ppm >$tmpdir/junk3$$.ppm");
+ }
+ if ($i == 10) {
+- system("ppmrelief junk2$$.ppm >junk2r$$.ppm");
++ system("ppmrelief $tmpdir/junk2$$.ppm >$tmpdir/junk2r$$.ppm");
+ }
+ } elsif ($mode eq $OIL) {
+ if ($i == 1) {
+- system("ppmtopgm junk1$$.ppm | pgmoil >junko$$.ppm");
+- system("rgb3toppm junko$$.ppm junko$$.ppm junko$$.ppm " .
+- ">junk1o$$.ppm");
++ system("ppmtopgm $tmpdir/junk1$$.ppm | pgmoil >$tmpdir/junko$$.ppm");
++ system("rgb3toppm $tmpdir/junko$$.ppm $tmpdir/junko$$.ppm $tmpdir/junko$$.ppm " .
++ ">$tmpdir/junk1o$$.ppm");
+ }
+ if ($i <= 10) {
+ my $n = $spline10[$i];
+- system("ppmmix $n junk1$$.ppm junk1o$$.ppm >junk3$$.ppm");
++ system("ppmmix $n $tmpdir/junk1$$.ppm $tmpdir/junk1o$$.ppm >$tmpdir/junk3$$.ppm");
+ } elsif ($i <= 20) {
+ my $n = $spline10[$i-10];
+- system("ppmmix $n junk1o$$.ppm junk2o$$.ppm >junk3$$.ppm");
++ system("ppmmix $n $tmpdir/junk1o$$.ppm $tmpdir/junk2o$$.ppm >$tmpdir/junk3$$.ppm");
+ } else {
+ my $n = $spline10[$i-20];
+- system("ppmmix $n junk2o$$.ppm junk2$$.ppm >junk3$$.ppm");
++ system("ppmmix $n $tmpdir/junk2o$$.ppm $tmpdir/junk2$$.ppm >$tmpdir/junk3$$.ppm");
+ }
+ if ($i == 10) {
+- system("ppmtopgm junk2$$.ppm | pgmoil >junko$$.ppm");
+- system("rgb3toppm junko$$.ppm junko$$.ppm junko$$.ppm " .
+- ">junk2o$$.ppm");
++ system("ppmtopgm $tmpdir/junk2$$.ppm | pgmoil >$tmpdir/junko$$.ppm");
++ system("rgb3toppm $tmpdir/junko$$.ppm $tmpdir/junko$$.ppm $tmpdir/junko$$.ppm " .
++ ">$tmpdir/junk2o$$.ppm");
+ }
+ } elsif ($mode eq $EDGE) {
+ if ($i == 1) {
+- system("ppmtopgm junk1$$.ppm | pgmedge >junko$$.ppm");
+- system("rgb3toppm junko$$.ppm junko$$.ppm junko$$.ppm " .
+- ">junk1o$$.ppm");
++ system("ppmtopgm $tmpdir/junk1$$.ppm | pgmedge >$tmpdir/junko$$.ppm");
++ system("rgb3toppm $tmpdir/junko$$.ppm $tmpdir/junko$$.ppm $tmpdir/junko$$.ppm " .
++ ">$tmpdir/junk1o$$.ppm");
+ }
+ if ($i <= 10) {
+ my $n = $spline10[$i];
+- system("ppmmix $n junk1$$.ppm junk1o$$.ppm >junk3$$.ppm");
++ system("ppmmix $n $tmpdir/junk1$$.ppm $tmpdir/junk1o$$.ppm >$tmpdir/junk3$$.ppm");
+ } elsif ($i <= 20) {
+ my $n = $spline10[$i-10];
+- system("ppmmix $n junk1o$$.ppm junk2o$$.ppm >junk3$$.ppm");
++ system("ppmmix $n $tmpdir/junk1o$$.ppm $tmpdir/junk2o$$.ppm >$tmpdir/junk3$$.ppm");
+ } else {
+ my $n = $spline10[$i-20];
+- system("ppmmix $n junk2o$$.ppm junk2$$.ppm >junk3$$.ppm");
++ system("ppmmix $n $tmpdir/junk2o$$.ppm $tmpdir/junk2$$.ppm >$tmpdir/junk3$$.ppm");
+ }
+ if ($i == 10) {
+- system("ppmtopgm junk2$$.ppm | pgmedge >junko$$.ppm");
+- system("rgb3toppm junko$$.ppm junko$$.ppm junko$$.ppm " .
+- ">junk2o$$.ppm");
++ system("ppmtopgm $tmpdir/junk2$$.ppm | pgmedge >$tmpdir/junko$$.ppm");
++ system("rgb3toppm $tmpdir/junko$$.ppm $tmpdir/junko$$.ppm $tmpdir/junko$$.ppm " .
++ ">$tmpdir/junk2o$$.ppm");
+ }
+ } elsif ($mode eq $BENTLEY) {
+ if ($i == 1) {
+- system("ppmtopgm junk1$$.ppm | pgmbentley >junko$$.ppm");
+- system("rgb3toppm junko$$.ppm junko$$.ppm junko$$.ppm " .
+- ">junk1o$$.ppm");
++ system("ppmtopgm $tmpdir/junk1$$.ppm | pgmbentley >$tmpdir/junko$$.ppm");
++ system("rgb3toppm $tmpdir/junko$$.ppm $tmpdir/junko$$.ppm $tmpdir/junko$$.ppm " .
++ ">$tmpdir/junk1o$$.ppm");
+ }
+ if ($i <= 10) {
+ my $n = $spline10[$i];
+- system("ppmmix $n junk1$$.ppm junk1o$$.ppm >junk3$$.ppm");
++ system("ppmmix $n $tmpdir/junk1$$.ppm $tmpdir/junk1o$$.ppm >$tmpdir/junk3$$.ppm");
+ } elsif ($i <= 20) {
+ my $n = $spline10[$i-10];
+- system("ppmmix $n junk1o$$.ppm junk2o$$.ppm >junk3$$.ppm");
++ system("ppmmix $n $tmpdir/junk1o$$.ppm $tmpdir/junk2o$$.ppm >$tmpdir/junk3$$.ppm");
+ } else {
+ my $n = $spline10[$i-20];
+- system("ppmmix $n junk2o$$.ppm junk2$$.ppm >junk3$$.ppm");
++ system("ppmmix $n $tmpdir/junk2o$$.ppm $tmpdir/junk2$$.ppm >$tmpdir/junk3$$.ppm");
+ }
+ if ($i == 10) {
+- system("ppmtopgm junk2$$.ppm | pgmbentley >junko$$.ppm");
+- system("rgb3toppm junko$$.ppm junko$$.ppm junko$$.ppm " .
+- ">junk2o$$.ppm");
++ system("ppmtopgm $tmpdir/junk2$$.ppm | pgmbentley >$tmpdir/junko$$.ppm");
++ system("rgb3toppm $tmpdir/junko$$.ppm $tmpdir/junko$$.ppm $tmpdir/junko$$.ppm " .
++ ">$tmpdir/junk2o$$.ppm");
+ }
+ } elsif ($mode eq $BLOCK) {
+ if ($i <= 10) {
+ my $n = 1 - 1.9*$spline20[$i];
+- system("pamscale $n junk1$$.ppm | " .
+- "pamscale -width $width -height $height >junk3$$.ppm");
++ system("pamscale $n $tmpdir/junk1$$.ppm | " .
++ "pamscale -width $width -height $height >$tmpdir/junk3$$.ppm");
+ } elsif ($i <= 20) {
+ my $n = $spline10[$i-10];
+- system("ppmmix $n junk1a$$.ppm junk2a$$.ppm >junk3$$.ppm");
++ system("ppmmix $n $tmpdir/junk1a$$.ppm $tmpdir/junk2a$$.ppm >$tmpdir/junk3$$.ppm");
+ } else {
+ my $n = 1 - 1.9*$spline20[31-$i];
+- system("pamscale $n junk2$$.ppm | " .
+- "pamscale -width $width -height $height >junk3$$.ppm");
++ system("pamscale $n $tmpdir/junk2$$.ppm | " .
++ "pamscale -width $width -height $height >$tmpdir/junk3$$.ppm");
+ }
+ if ($i == 10) {
+- system("cp", "junk3$$.ppm", "junk1a$$.ppm");
+- system("pamscale $n junk2$$.ppm | " .
+- "pamscale -width $width -height $height >junk2a$$.ppm");
++ system("cp", "$tmpdir/junk3$$.ppm", "$tmpdir/junk1a$$.ppm");
++ system("pamscale $n $tmpdir/junk2$$.ppm | " .
++ "pamscale -width $width -height $height >$tmpdir/junk2a$$.ppm");
+ }
+ } elsif ($mode eq $MIX) {
+ my $fade_factor = sqrt(1/($nframes-$i+1));
+- system("ppmmix $fade_factor junk1$$.ppm junk2$$.ppm >junk3$$.ppm");
++ system("ppmmix $fade_factor $tmpdir/junk1$$.ppm $tmpdir/junk2$$.ppm >$tmpdir/junk3$$.ppm");
+ } else {
+ print("Internal error: impossible mode value '$mode'\n");
+ }
+
+ my $outfile = sprintf("%s.%04d.ppm", $base_name, $i);
+- system("cp", "junk3$$.ppm", $outfile);
++ system("cp", "$tmpdir/junk3$$.ppm", $outfile);
+ }
+
+ #
+ # Clean up shop.
+ #
+-system("rm junk*$$.ppm");
++system("rm $tmpdir/junk*$$.ppm");
+
+ exit(0);
+diff -up netpbm-10.47.05/editor/ppmquantall.security-scripts netpbm-10.47.05/editor/ppmquantall
+--- netpbm-10.47.05/editor/ppmquantall.security-scripts 2009-12-10 08:34:32.000000000 +0100
++++ netpbm-10.47.05/editor/ppmquantall 2010-03-16 21:28:09.000000000 +0100
+@@ -70,12 +70,8 @@ for i in ${files[@]}; do
+ heights=(${heights[*]} `grep -v '^#' $i | sed '1d; s/.* //; 2q'`)
+ done
+
+-tempdir="${TMPDIR-/tmp}/ppmquantall.$$"
+-mkdir -m 0700 $tempdir || \
+- { echo "Could not create temporary file. Exiting."; exit 1;}
+-trap 'rm -rf $tempdir' 0 1 3 15
+-
+-all=$tempdir/pqa.all.$$
++all=$(mktemp -t pqa.all.XXXXXXXXXX) || exit 1
++rm -f $all
+
+ pnmcat -topbottom -jleft -white ${files[@]} | pnmquant $newcolors > $all
+ if [ $? != 0 ]; then
+diff -up netpbm-10.47.05/editor/ppmshadow.security-scripts netpbm-10.47.05/editor/ppmshadow
+--- netpbm-10.47.05/editor/ppmshadow.security-scripts 2009-12-10 08:34:32.000000000 +0100
++++ netpbm-10.47.05/editor/ppmshadow 2010-03-16 21:28:09.000000000 +0100
+@@ -72,9 +72,10 @@ sub makeConvolutionKernel($$) {
+
+
+ my $tmpdir = $ENV{TMPDIR} || "/tmp";
+-my $ourtmp = "$tmpdir/ppmshadow$$";
+-mkdir($ourtmp, 0777) or
+- die("Unable to create directory for temporary files '$ourtmp");
++my $ourtmp; chomp($ourtmp = `mktemp -d -t PPMshadow.XXXXXX`);
++if ($? >> 8) {
++ die "Can't create directory for temporary files";
++}
+
+ # Process command line options
+
diff --git a/extra/netspeed-applet/PKGBUILD b/extra/netspeed-applet/PKGBUILD
new file mode 100644
index 000000000..7cd7566b6
--- /dev/null
+++ b/extra/netspeed-applet/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 94521 2010-10-07 19:29:30Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Arjan Timmerman <arjan@archlinux.org>
+
+pkgname=netspeed-applet
+pkgver=0.16
+pkgrel=2
+pkgdesc="GNOME applet that shows how much traffic occurs on a specified network device."
+arch=(i686 x86_64)
+license=('GPL')
+url="http://projects.gnome.org/netspeed/"
+depends=('gnome-panel-bonobo>=2.32.0' 'libgtop>=2.28.2' 'wireless_tools' 'hicolor-icon-theme')
+makedepends=('pkgconfig' 'gnome-doc-utils>=0.20.2' 'intltool')
+install=netspeed-applet.install
+source=(http://launchpad.net/netspeed/trunk/0.16/+download/netspeed_applet-${pkgver}.tar.gz)
+md5sums=('8ae5f925d29fca9b70a248ad05316877')
+
+build() {
+ cd "${srcdir}/netspeed_applet-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --libexecdir=/usr/lib/netspeed-applet \
+ --localstatedir=/var --disable-scrollkeeper
+ make
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/netspeed-applet/netspeed-applet.install b/extra/netspeed-applet/netspeed-applet.install
new file mode 100644
index 000000000..1a05f573e
--- /dev/null
+++ b/extra/netspeed-applet/netspeed-applet.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/extra/network-manager-applet/PKGBUILD b/extra/network-manager-applet/PKGBUILD
new file mode 100644
index 000000000..0aa4e9ce3
--- /dev/null
+++ b/extra/network-manager-applet/PKGBUILD
@@ -0,0 +1,39 @@
+# $Id: PKGBUILD 112864 2011-03-07 11:16:19Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Arjan Timmerman <arjan@archlinux.org>
+# Contributor: Wael Nasreddine <gandalf@siemens-mobiles.org>
+# Contributor: Tor Krill <tor@krill.nu>
+# Contributor: Will Rea <sillywilly@gmail.com>
+
+pkgname=network-manager-applet
+pkgver=0.8.2
+pkgrel=4
+pkgdesc="GNOME frontends to NetWorkmanager"
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://www.gnome.org/projects/NetworkManager/"
+depends=('networkmanager>=0.8.2' 'libglade' 'libgnome-keyring' 'polkit-gnome' 'notification-daemon' 'libnotify' 'gnome-icon-theme' 'mobile-broadband-provider-info' 'gconf')
+makedepends=('intltool' 'gnome-bluetooth')
+optdepends=('gnome-bluetooth: for PAN/DUN support')
+options=('!libtool')
+install=network-manager-applet.install
+source=(http://ftp.gnome.org/pub/GNOME/sources/network-manager-applet/0.8/network-manager-applet-${pkgver}.tar.bz2
+ nm-applet-0.8.2-libnotify-0.7.patch)
+sha256sums=('c6f8723031092bd1c7db452df5578ec9ca8e9f98c2ea493dba7d40dbe0e02391'
+ '542e0c3a5f851f72e5672f982c7e86c45b79868f3d16500b930d58cf8f039b5d')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np0 -i "${srcdir}/nm-applet-0.8.2-libnotify-0.7.patch"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var \
+ --libexecdir=/usr/lib/networkmanager \
+ --disable-static \
+ --disable-maintainer-mode
+ make
+ 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 nm-applet ${pkgdir}/etc/gconf/schemas/*.schemas
+ rm -f ${pkgdir}/etc/gconf/schemas/*.schemas
+}
diff --git a/extra/network-manager-applet/network-manager-applet.install b/extra/network-manager-applet/network-manager-applet.install
new file mode 100644
index 000000000..9922d12b2
--- /dev/null
+++ b/extra/network-manager-applet/network-manager-applet.install
@@ -0,0 +1,18 @@
+pkgname=network-manager-applet
+
+post_install() {
+ usr/sbin/gconfpkg --install ${pkgname}
+ gtk-update-icon-cache -f -q -t /usr/share/icons/hicolor
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ usr/sbin/gconfpkg --uninstall ${pkgname}
+}
+
+post_remove() {
+ gtk-update-icon-cache -f -q -t /usr/share/icons/hicolor
+}
diff --git a/extra/network-manager-applet/nm-applet-0.8.2-libnotify-0.7.patch b/extra/network-manager-applet/nm-applet-0.8.2-libnotify-0.7.patch
new file mode 100644
index 000000000..54aa473af
--- /dev/null
+++ b/extra/network-manager-applet/nm-applet-0.8.2-libnotify-0.7.patch
@@ -0,0 +1,36 @@
+--- src/applet.c
++++ src/applet.c
+@@ -58,6 +58,10 @@
+ #include <gnome-keyring.h>
+ #include <libnotify/notify.h>
+
++#ifndef NOTIFY_CHECK_VERSION
++#define NOTIFY_CHECK_VERSION(x,y,z) 0
++#endif
++
+ #include "applet.h"
+ #include "applet-device-wired.h"
+ #include "applet-device-wifi.h"
+@@ -626,12 +630,20 @@
+ escaped = utils_escape_notify_message (message);
+ notify = notify_notification_new (summary,
+ escaped,
+- icon ? icon : GTK_STOCK_NETWORK,
+- NULL);
++ icon ? icon : GTK_STOCK_NETWORK
++#if NOTIFY_CHECK_VERSION (0, 7, 0)
++ );
++#else
++ , NULL);
++#endif
+ g_free (escaped);
+ applet->notification = notify;
+
++#if NOTIFY_CHECK_VERSION (0, 7, 0)
++ /* notify_notification_attach_to_status_icon was removed */
++#else
+ notify_notification_attach_to_status_icon (notify, applet->status_icon);
++#endif
+ notify_notification_set_urgency (notify, urgency);
+ notify_notification_set_timeout (notify, NOTIFY_EXPIRES_DEFAULT);
+
diff --git a/extra/networkmanager-openconnect/PKGBUILD b/extra/networkmanager-openconnect/PKGBUILD
new file mode 100644
index 000000000..30d109d2c
--- /dev/null
+++ b/extra/networkmanager-openconnect/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 98215 2010-11-04 21:22:18Z ibiru $
+# Maintainer: Ionut Biru <ibiru@archlinux.org>
+
+pkgname=networkmanager-openconnect
+pkgver=0.8.2
+pkgrel=1
+pkgdesc="NetworkManager VPN integration for openconnect"
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://www.gnome.org/projects/NetworkManager/"
+depends=("networkmanager>=${pkgver}" 'openconnect>=2.26' 'dbus-glib')
+makedepends=('intltool' 'gtk2' 'libglade' 'gconf' 'libgnome-keyring')
+optdepends=('network-manager-applet: GNOME frontends to NetWorkmanager')
+options=('!libtool')
+install=$pkgname.install
+source=(http://ftp.gnome.org/pub/GNOME/sources/NetworkManager-openconnect/0.8/NetworkManager-openconnect-${pkgver}.tar.bz2)
+sha256sums=('6ef8ff1a14e112baf7d90cc1c19163c7895b56b60629641086540bacb8babb4f')
+
+build() {
+ cd "${srcdir}/NetworkManager-openconnect-${pkgver}"
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --libexecdir=/usr/lib/networkmanager \
+ --disable-static
+ make
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/networkmanager-openconnect/networkmanager-openconnect.install b/extra/networkmanager-openconnect/networkmanager-openconnect.install
new file mode 100644
index 000000000..7bd4d44f9
--- /dev/null
+++ b/extra/networkmanager-openconnect/networkmanager-openconnect.install
@@ -0,0 +1,16 @@
+pkgname=networkmanager-openconnect
+
+post_install() {
+ getent group nm-openconnect >/dev/null 2>&1 || groupadd -g 104 nm-openconnect
+ getent passwd nm-openconnect > /dev/null 2>&1 || useradd -u 104 -s /sbin/nologin -d / -M -c 'NetworkManager user for OpenConnect' -g nm-openconnect nm-openconnect
+ passwd -l nm-openconnect > /dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ getent passwd nm-openconnect >/dev/null 2>&1 && userdel nm-openconnect
+ getent group nm-openconnect >/dev/null 2>&1 && groupdel nm-openconnect
+}
diff --git a/extra/networkmanager-openvpn/PKGBUILD b/extra/networkmanager-openvpn/PKGBUILD
new file mode 100644
index 000000000..962d781b5
--- /dev/null
+++ b/extra/networkmanager-openvpn/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 98204 2010-11-04 21:17:08Z ibiru $
+# Maintainer: Ionut Biru <ibiru@archlinux.org>
+
+pkgname=networkmanager-openvpn
+pkgver=0.8.2
+pkgrel=1
+pkgdesc="NetworkManager VPN plugin for OpenVPN"
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://www.gnome.org/projects/NetworkManager/"
+depends=("networkmanager>=${pkgver}" 'openvpn')
+makedepends=('intltool' 'gtk2' 'libglade' 'gconf' 'libgnome-keyring')
+optdepends=('network-manager-applet: GNOME frontends to NetWorkmanager')
+install=networkmanager-openvpn.install
+options=('!libtool')
+source=(http://ftp.gnome.org/pub/GNOME/sources/NetworkManager-openvpn/0.8/NetworkManager-openvpn-${pkgver}.tar.bz2)
+sha256sums=('21d540b7e7cd88cff3173bb3574a88d4dd76da564fccc58dc436a68476d6d6fe')
+
+build() {
+ cd "${srcdir}/NetworkManager-openvpn-${pkgver}"
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --libexecdir=/usr/lib/networkmanager \
+ --disable-static
+ make
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/networkmanager-openvpn/networkmanager-openvpn.install b/extra/networkmanager-openvpn/networkmanager-openvpn.install
new file mode 100644
index 000000000..931c0517c
--- /dev/null
+++ b/extra/networkmanager-openvpn/networkmanager-openvpn.install
@@ -0,0 +1,11 @@
+post_install() {
+ gtk-update-icon-cache -f -q -t /usr/share/icons/hicolor
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ post_install $1
+}
diff --git a/extra/networkmanager-pptp/PKGBUILD b/extra/networkmanager-pptp/PKGBUILD
new file mode 100644
index 000000000..f503331b5
--- /dev/null
+++ b/extra/networkmanager-pptp/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 98212 2010-11-04 21:20:04Z ibiru $
+# Maintainer: Ionut Biru <ibiru@archlinux.org>
+
+pkgname=networkmanager-pptp
+pkgver=0.8.2
+pkgrel=1
+pkgdesc="NetworkManager VPN plugin for pptp "
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://www.gnome.org/projects/NetworkManager/"
+depends=("networkmanager>=${pkgver}" 'pptpclient')
+makedepends=('intltool' 'gtk2' 'libglade' 'gconf' 'libgnome-keyring')
+optdepends=('network-manager-applet: GNOME frontends to NetWorkmanager')
+options=('!libtool')
+install=networkmanager-pptp.install
+source=(http://ftp.gnome.org/pub/GNOME/sources/NetworkManager-pptp/0.8/NetworkManager-pptp-${pkgver}.tar.bz2)
+sha256sums=('c90172273d6b29a5f3fec138cc474d6a7003edf35918602f3b7283ddd05d87e6')
+
+build() {
+ cd "${srcdir}/NetworkManager-pptp-${pkgver}"
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --libexecdir=/usr/lib/networkmanager \
+ --disable-static
+ make
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/networkmanager-pptp/networkmanager-pptp.install b/extra/networkmanager-pptp/networkmanager-pptp.install
new file mode 100644
index 000000000..931c0517c
--- /dev/null
+++ b/extra/networkmanager-pptp/networkmanager-pptp.install
@@ -0,0 +1,11 @@
+post_install() {
+ gtk-update-icon-cache -f -q -t /usr/share/icons/hicolor
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ post_install $1
+}
diff --git a/extra/networkmanager-vpnc/PKGBUILD b/extra/networkmanager-vpnc/PKGBUILD
new file mode 100644
index 000000000..a182f8433
--- /dev/null
+++ b/extra/networkmanager-vpnc/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 98207 2010-11-04 21:19:02Z ibiru $
+# Maintainer: Ionut Biru <ibiru@archlinux.org>
+
+pkgname=networkmanager-vpnc
+pkgver=0.8.2
+pkgrel=1
+pkgdesc="NetworkManager VPN plugin for vpnc"
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://www.gnome.org/projects/NetworkManager/"
+depends=("networkmanager>=${pkgver}" 'vpnc')
+makedepends=('intltool' 'gtk2' 'libglade' 'gconf' 'libgnome-keyring')
+optdepends=('network-manager-applet: GNOME frontends to NetWorkmanager')
+options=('!libtool')
+install=networkmanager-vpnc.install
+source=(http://ftp.gnome.org/pub/GNOME/sources/NetworkManager-vpnc/0.8/NetworkManager-vpnc-${pkgver}.tar.bz2)
+sha256sums=('c37cf921c223f226d16e659321bb372e33278bf642362b7a92cb665d27950011')
+
+build() {
+ cd "${srcdir}/NetworkManager-vpnc-${pkgver}"
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --libexecdir=/usr/lib/networkmanager \
+ --disable-static
+ make
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/networkmanager-vpnc/networkmanager-vpnc.install b/extra/networkmanager-vpnc/networkmanager-vpnc.install
new file mode 100644
index 000000000..931c0517c
--- /dev/null
+++ b/extra/networkmanager-vpnc/networkmanager-vpnc.install
@@ -0,0 +1,11 @@
+post_install() {
+ gtk-update-icon-cache -f -q -t /usr/share/icons/hicolor
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ post_install $1
+}
diff --git a/extra/networkmanager/NetworkManager.conf b/extra/networkmanager/NetworkManager.conf
new file mode 100644
index 000000000..c37b59680
--- /dev/null
+++ b/extra/networkmanager/NetworkManager.conf
@@ -0,0 +1,2 @@
+[main]
+plugins=keyfile
diff --git a/extra/networkmanager/PKGBUILD b/extra/networkmanager/PKGBUILD
new file mode 100644
index 000000000..9fdc8d641
--- /dev/null
+++ b/extra/networkmanager/PKGBUILD
@@ -0,0 +1,58 @@
+# $Id: PKGBUILD 105867 2011-01-13 19:51:11Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinxu.org>
+# Contri-butor: Wael Nasreddine <gandalf@siemens-mobiles.org>
+# Contributor: Tor Krill <tor@krill.nu>
+# Contributor: Will Rea <sillywilly@gmail.com>
+# Contributor: Valentine Sinitsyn <e_val@inbox.ru>
+
+pkgname=networkmanager
+pkgver=0.8.3
+pkgrel=0.20110113
+pkgdesc="Network Management daemon"
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://www.gnome.org/projects/NetworkManager/"
+depends=('dbus-glib' 'iproute2' 'libnl' 'nss' 'polkit' 'udev' 'wireless_tools' 'wpa_supplicant' 'ppp' 'dhcpcd')
+makedepends=('intltool' 'dhclient' 'iptables')
+optdepends=('modemmanager: for modem management service'
+ 'dhclient: alternative DHCP/DHCPv6 client'
+ 'iptables: Connection sharing'
+ 'dnsmasq: Connection sharing'
+ 'bluez: Bluetooth support')
+options=('!libtool')
+backup=('etc/NetworkManager/NetworkManager.conf')
+install=networkmanager.install
+#source=(http://ftp.gnome.org/pub/gnome/sources/NetworkManager/0.8/NetworkManager-${pkgver}.tar.bz2
+source=(http://mirrors.kernel.org/archlinux/other/networkmanager/NetworkManager-$pkgver-$pkgrel.tar.bz2
+ NetworkManager.conf disable_set_hostname.patch)
+md5sums=('bdcdd1060e17e9373e60edcdad7d076e'
+ '1653159d6634fb62d3a5c548b7a56151'
+ 'b7deda5bb47b3df0eb42782eabbaefe7')
+
+build() {
+ cd "${srcdir}/NetworkManager-${pkgver}"
+
+ patch -Np1 -i "${srcdir}/disable_set_hostname.patch"
+
+ ./configure \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --libexecdir=/usr/lib/networkmanager \
+ --with-crypto=nss \
+ --with-distro=arch \
+ --with-dhclient=/usr/sbin/dhclient \
+ --with-dhcpcd=/sbin/dhcpcd \
+ --with-iptables=/usr/sbin/iptables \
+ --disable-static \
+ --enable-more-warnings=no
+
+ make
+}
+
+package() {
+ cd "${srcdir}/NetworkManager-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+
+ install -m644 "${srcdir}/NetworkManager.conf" "${pkgdir}/etc/NetworkManager/"
+}
diff --git a/extra/networkmanager/disable_set_hostname.patch b/extra/networkmanager/disable_set_hostname.patch
new file mode 100644
index 000000000..6c9e2f6c6
--- /dev/null
+++ b/extra/networkmanager/disable_set_hostname.patch
@@ -0,0 +1,19 @@
+diff -Nur NetworkManager-0.8.2.orig/src/nm-policy.c NetworkManager-0.8.2/src/nm-policy.c
+--- NetworkManager-0.8.2.orig/src/nm-policy.c 2010-11-03 12:58:42.000000000 -0700
++++ NetworkManager-0.8.2/src/nm-policy.c 2010-11-23 06:22:32.436707081 -0800
+@@ -342,6 +342,7 @@
+ return;
+ }
+
++#if 0
+ /* Try automatically determined hostname from the best device's IP config */
+ if (!best4)
+ best4 = get_best_ip4_device (policy->manager, &best_req4);
+@@ -396,6 +397,7 @@
+ }
+ }
+
++#endif
+ /* If no automatically-configured hostname, try using the hostname from
+ * when NM started up.
+ */
diff --git a/extra/networkmanager/networkmanager.install b/extra/networkmanager/networkmanager.install
new file mode 100644
index 000000000..de40c17ed
--- /dev/null
+++ b/extra/networkmanager/networkmanager.install
@@ -0,0 +1,9 @@
+post_upgrade() {
+ (( $(vercmp 0.8.3 $2) > 0 )) && cat <<MSG
+ATTENTION:
+ /etc/NetworkManager/nm-system-settings.conf has been replaced
+ by /etc/NetworkManager/NetworkManager.conf. Make sure you move
+ any custom settings to the new config file.
+MSG
+ true
+}
diff --git a/extra/neverball/ChangeLog b/extra/neverball/ChangeLog
new file mode 100644
index 000000000..d4c6561ca
--- /dev/null
+++ b/extra/neverball/ChangeLog
@@ -0,0 +1,50 @@
+2010-01-18 Eric Belanger <eric@archlinux.org>
+
+ * neverball 1.5.4-2
+ * Rebuilt for libpng 1.4 and libjpeg 8
+
+2009-09-20 Eric Belanger <eric@archlinux.org>
+
+ * neverball 1.5.4-1
+ * Upstream update
+
+2009-09-08 Eric Belanger <eric@archlinux.org>
+
+ * neverball 1.5.3-1
+ * Upstream update
+
+2009-08-16 Eric Belanger <eric@archlinux.org>
+
+ * neverball 1.5.2-1
+ * Upstream update
+ * Added physfs depends
+ * Fixed file permissions
+
+2009-08-08 Eric Belanger <eric@archlinux.org>
+
+ * neverball 1.5.1-2.1
+ * Built i686 package without sse (close FS#15849)
+
+2009-07-01 Eric Belanger <eric@archlinux.org>
+
+ * neverball 1.5.1-2
+ * Rebuilt against libjpeg 7
+
+2009-04-08 Eric Belanger <eric@archlinux.org>
+
+ * neverball 1.5.1-1
+ * Upstream update
+ * Removed sdl_image and sdl_mixer depends: not needed anymore
+ * Added libpng, libjpeg and libvorbis depends
+
+2009-02-03 Eric Belanger <eric@archlinux.org>
+
+ * neverball 1.5.0-1
+ * Upstream update
+ * Updated url
+ * Added mesa makedepends
+ * Switched to upstream desktop file and icons
+ * Removed wrapper scripts
+ * Added mapc binary
+ * Added locales, man pages and docs
+ * Added ChangeLog
diff --git a/extra/neverball/PKGBUILD b/extra/neverball/PKGBUILD
new file mode 100644
index 000000000..126f2b0c0
--- /dev/null
+++ b/extra/neverball/PKGBUILD
@@ -0,0 +1,52 @@
+# $Id: PKGBUILD 63937 2010-01-19 04:44:36Z eric $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+# Contributor: Ben <contrasutra@myrealbox.com>
+
+pkgname=neverball
+pkgver=1.5.4
+pkgrel=2
+pkgdesc="3D game similar to Super Monkey Ball or Marble Madness"
+arch=('i686' 'x86_64')
+url="http://neverball.org/"
+license=('GPL')
+depends=('sdl_ttf' 'libgl' 'libpng' 'libjpeg>=7' 'libvorbis' 'physfs')
+makedepends=('mesa')
+source=(http://neverball.org/${pkgname}-${pkgver}.tar.gz)
+md5sums=('c523b0f72c2035831310e821162f7bd7')
+sha1sums=('619c227e1958bd60738f12dbbde9b30c91dd79a7')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ sed -i 's|#define CONFIG_LOCALE "./locale"|#define CONFIG_LOCALE "/usr/share/locale"|' share/base_config.h || return 1
+
+ if [ "${CARCH}" = "i686" ] ;then
+ make ENABLE_NLS=1 DATADIR=/usr/share/neverball SSE_CFLAGS="" || return 1
+ else
+ make ENABLE_NLS=1 DATADIR=/usr/share/neverball || return 1
+ fi
+
+ install -D -m755 neverball "${pkgdir}/usr/bin/neverball" || return 1
+ install -D -m755 neverputt "${pkgdir}/usr/bin/neverputt" || return 1
+ install -D -m755 mapc "${pkgdir}/usr/bin/mapc" || return 1
+
+ install -d "${pkgdir}/usr/share/neverball"
+ cp -r data/* "${pkgdir}/usr/share/neverball/" || return 1
+ find "${pkgdir}/usr/share/neverball" -type f -exec chmod 0644 {} \;
+
+ install -d "${pkgdir}/usr/share/locale"
+ cp -r locale/* "${pkgdir}/usr/share/locale/" || return 1
+
+ install -d "${pkgdir}/usr/share/applications"
+ install -d "${pkgdir}/usr/share/pixmaps"
+ install -m644 dist/*.desktop "${pkgdir}/usr/share/applications/" || return 1
+ install -m644 dist/*.png "${pkgdir}/usr/share/pixmaps/" || return 1
+ ln -s neverball_48.png "${pkgdir}/usr/share/pixmaps/neverball.png" || return 1
+ ln -s neverputt_48.png "${pkgdir}/usr/share/pixmaps/neverputt.png" || return 1
+
+ install -d "${pkgdir}/usr/share/doc/neverball"
+ install -m644 doc/* "${pkgdir}/usr/share/doc/neverball/" || return 1
+
+ install -D -m644 dist/mapc.1 "${pkgdir}/usr/share/man/man1/mapc.1" || return 1
+ install -D -m644 dist/neverball.6 "${pkgdir}/usr/share/man/man6/neverball.6" || return 1
+ install -D -m644 dist/neverputt.6 "${pkgdir}/usr/share/man/man6/neverputt.6" || return 1
+}
diff --git a/extra/nickle/PKGBUILD b/extra/nickle/PKGBUILD
new file mode 100644
index 000000000..735648e07
--- /dev/null
+++ b/extra/nickle/PKGBUILD
@@ -0,0 +1,22 @@
+#$Id: $
+#Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=nickle
+pkgver=2.70
+pkgrel=1
+pkgdesc="A programming language based prototyping environment with powerful programming and scripting capabilities"
+arch=('i686' 'x86_64')
+url="http://nickle.org"
+license=('custom')
+depends=('readline')
+source=(http://nickle.org/release/${pkgname}-${pkgver}.tar.gz)
+md5sums=('fbb77ad1c6f80a9a67ae28a2a678ed67')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/nicotine/PKGBUILD b/extra/nicotine/PKGBUILD
new file mode 100644
index 000000000..0be93063f
--- /dev/null
+++ b/extra/nicotine/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 108389 2011-01-30 22:14:15Z angvp $
+# Maintainer: Angel Velasquez <angvp@archlinux.org>
+# Contributor: Hugo Doria <hugo@archlinux.org>
+# Contributor: Andrew Wright <andreww@photism.org>
+
+pkgname=nicotine
+pkgver=1.2.16
+pkgrel=2
+pkgdesc="Soulseek music-sharing client, written in python"
+license=('GPL')
+arch=('i686' 'x86_64')
+depends=('pygtk>=2.14.1' 'mutagen' 'python-geoip>=1.2.4')
+conflicts=(nicotine-plus)
+replaces=(nicotine-plus)
+url="http://sourceforge.net/projects/nicotine-plus/"
+source=(http://downloads.sourceforge.net/project/nicotine-plus/nicotine-plus/${pkgver}/${pkgname}+-${pkgver}.tar.bz2)
+optdepends=('python-sexy: To enable spell checking'
+ 'python-geoip: to enable Geographical blocker')
+md5sums=('ac7433c21ef619a37e079a7ae68da94a')
+
+build() {
+ cd ${srcdir}/${pkgname}+-${pkgver}
+ sed -i -e "s/Icon=nicotine-plus/Icon=nicotine-plus-32px/" files/nicotine.desktop # Fixing FS#22476
+ python2 setup.py install --root=${pkgdir}
+ cd trayicon
+ python2 autogen.py
+ make
+ make DESTDIR=${pkgdir} install
+ ln -s nicotine.py ${pkgdir}/usr/bin/nicotine
+}
diff --git a/extra/nitrogen/ChangeLog b/extra/nitrogen/ChangeLog
new file mode 100644
index 000000000..c37e10baf
--- /dev/null
+++ b/extra/nitrogen/ChangeLog
@@ -0,0 +1,9 @@
+2008-08-04 Alexander Fehr <pizzapunk gmail com>
+
+ * nitrogen-1.4-1:
+ New upstream release.
+ New maintainer.
+ Changed url.
+ Added dependency on hicolor-icon-theme.
+ Added install file (gtk-update-icon-cache).
+ Added ChangeLog.
diff --git a/extra/nitrogen/PKGBUILD b/extra/nitrogen/PKGBUILD
new file mode 100644
index 000000000..b9c902a12
--- /dev/null
+++ b/extra/nitrogen/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 67236 2010-02-05 22:06:57Z ibiru $
+# Maintainer: James Rayner <james@archlinux.org>
+# Maintainer: Alexander Fehr <pizzapunk gmail com>
+# Contributor: Sebastian Sareyko <public@nooms.de>
+
+pkgname=nitrogen
+pkgver=1.5.1
+pkgrel=1
+pkgdesc="Background browser and setter for X windows"
+arch=('i686' 'x86_64')
+url="http://projects.l3ib.org/nitrogen/"
+license=('GPL')
+depends=('gtkmm' 'hicolor-icon-theme' 'librsvg>=2.26')
+install=nitrogen.install
+source=(http://projects.l3ib.org/nitrogen/files/nitrogen-$pkgver.tar.gz)
+md5sums=('e683d7c10c17bd18eb9fd78c87c4e08c')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ ./configure --prefix=/usr || return 1
+ make || return 1
+ make DESTDIR="$pkgdir" install || return 1
+}
diff --git a/extra/nitrogen/nitrogen.install b/extra/nitrogen/nitrogen.install
new file mode 100644
index 000000000..1a05f573e
--- /dev/null
+++ b/extra/nitrogen/nitrogen.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/extra/nmap/ChangeLog b/extra/nmap/ChangeLog
new file mode 100644
index 000000000..a1ef5e062
--- /dev/null
+++ b/extra/nmap/ChangeLog
@@ -0,0 +1,17 @@
+
+2008-10-28 Douglas Soares de Andrade <douglas@archlinux.org>
+
+ * Python 2.6 rebuild.
+
+2008-07-23 Hugo Doria <hugo@archlinux.org>
+
+ * Added pygtk in optdepends: 4.68-3
+
+2008-07-09 Douglas Soares de Andrade <douglas@archlinux.org>
+
+ * Fixing the pixmaps path for i686: 4.68
+
+2008-07-09 Douglas Soares de Andrade <douglas@archlinux.org>
+
+ * Updated for i686: 4.68
+
diff --git a/extra/nmap/PKGBUILD b/extra/nmap/PKGBUILD
new file mode 100644
index 000000000..b79385d88
--- /dev/null
+++ b/extra/nmap/PKGBUILD
@@ -0,0 +1,40 @@
+# $Id: PKGBUILD 110262 2011-02-18 15:25:57Z angvp $
+# Maintainer: Angel Velasquez <angvp@archlinux.org>
+# Contributor: Hugo Doria <hugo@archlinux.org>
+
+pkgname=nmap
+pkgver=5.51
+pkgrel=1
+pkgdesc="A network exploration tool and security/port scanner"
+arch=('i686' 'x86_64')
+url="http://nmap.org"
+license=('GPL')
+depends=('pcre' 'openssl' 'libpcap' 'lua')
+# python is needed for zenmap
+makedepends=('python2')
+optdepends=('pygtk: gui for nmap')
+options=('!makeflags')
+source=(http://nmap.org/dist/${pkgname}-${pkgver}.tar.bz2)
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ echo "TryExec=/usr/bin/pygtk-demo" >> zenmap/install_scripts/unix/zenmap.desktop
+ echo "TryExec=/usr/bin/pygtk-demo" >> zenmap/install_scripts/unix/zenmap-root.desktop
+
+ ./configure --prefix=/usr --mandir=/usr/share/man \
+ --libexecdir=/usr/lib
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR="${pkgdir}" install
+
+ # remove zenmap uninstall script
+ rm "${pkgdir}/usr/bin/uninstall_zenmap"
+
+ # install custom GPL2 license
+ install -D -m644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+}
+md5sums=('0b80d2cb92ace5ebba8095a4c2850275')
diff --git a/extra/normalize/PKGBUILD b/extra/normalize/PKGBUILD
new file mode 100644
index 000000000..b0d56ed4f
--- /dev/null
+++ b/extra/normalize/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 60853 2009-12-07 12:43:05Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=normalize
+pkgver=0.7.7
+pkgrel=4
+pkgdesc="A tool for adjusting the volume of WAV files to a standard level"
+arch=('i686' 'x86_64')
+license=('GPL')
+depends=('audiofile' 'libmad' 'vorbis-tools' 'lame' 'flac' 'mpg123')
+source=(http://download.savannah.gnu.org/releases/${pkgname}/${pkgname}-${pkgver}.tar.bz2)
+url="http://normalize.nongnu.org"
+md5sums=('1749b16fc7a08aa5d0cf9f76eeaa8436')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ ./configure --prefix=/usr \
+ --mandir=/usr/share/man \
+ --with-audiofile \
+ --with-mad
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/notification-daemon/PKGBUILD b/extra/notification-daemon/PKGBUILD
new file mode 100644
index 000000000..ae298a99d
--- /dev/null
+++ b/extra/notification-daemon/PKGBUILD
@@ -0,0 +1,34 @@
+# $Id: PKGBUILD 112866 2011-03-07 11:32:09Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Mark Rosenstand <mark@borkware.net>
+
+pkgname=notification-daemon
+pkgver=0.4.0
+pkgrel=5
+pkgdesc="Notification daemon for the desktop notifications framework"
+arch=(i686 x86_64)
+license=('GPL')
+url="http://www.galago-project.org/specs/notification/"
+depends=('libsexy>=0.1.11' 'libwnck>=2.28.0' 'gconf>=2.28.0' 'gstreamer0.10-base>=0.10.25' 'libnotify>=0.7.1' 'libglade>=2.6.4' 'hicolor-icon-theme')
+groups=('gnome')
+makedepends=('pkgconfig' 'intltool')
+options=('!libtool' '!emptydirs')
+install=notification-daemon.install
+source=(http://www.galago-project.org/files/releases/source/${pkgname}/${pkgname}-${pkgver}.tar.bz2
+ notification-daemon-0.4.0-libnotify-0.7.patch)
+md5sums=('e61eff9782551d81045bb53e8a801d58'
+ '1708e98353cab38a7c057b4385826c04')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i "${srcdir}/notification-daemon-0.4.0-libnotify-0.7.patch"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --libexecdir=/usr/lib/notification-daemon-1.0 \
+ --localstatedir=/var --disable-static
+ make
+ make GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 DESTDIR="${pkgdir}" install
+
+ install -d -m755 "${pkgdir}/usr/share/gconf/schemas"
+ gconf-merge-schema "${pkgdir}/usr/share/gconf/schemas/${pkgname}.schemas" --domain notification-daemon ${pkgdir}/etc/gconf/schemas/*.schemas
+ rm -f ${pkgdir}/etc/gconf/schemas/*.schemas
+}
diff --git a/extra/notification-daemon/notification-daemon-0.4.0-libnotify-0.7.patch b/extra/notification-daemon/notification-daemon-0.4.0-libnotify-0.7.patch
new file mode 100644
index 000000000..8f5e4c909
--- /dev/null
+++ b/extra/notification-daemon/notification-daemon-0.4.0-libnotify-0.7.patch
@@ -0,0 +1,29 @@
+diff -Nur notification-daemon-0.4.0.orig/src/capplet/notification-properties.c notification-daemon-0.4.0/src/capplet/notification-properties.c
+--- notification-daemon-0.4.0.orig/src/capplet/notification-properties.c 2008-11-20 02:46:16.000000000 -0800
++++ notification-daemon-0.4.0/src/capplet/notification-properties.c 2011-03-07 03:23:07.293334003 -0800
+@@ -28,6 +28,10 @@
+ #include <string.h>
+ #include <libnotify/notify.h>
+
++#ifndef NOTIFY_CHECK_VERSION
++#define NOTIFY_CHECK_VERSION(x,y,z) 0
++#endif
++
+ #include "../daemon/stack.h"
+
+ #define GCONF_KEY_DAEMON "/apps/notification-daemon"
+@@ -434,8 +438,12 @@
+
+ dialog->preview = notify_notification_new(_("Notification Test"),
+ _("Just a test"),
+- "gnome-util",
+- NULL);
++ "gnome-util"
++#if NOTIFY_CHECK_VERSION (0, 7, 0)
++ );
++#else
++ , NULL);
++#endif
+
+ if (!notify_notification_show(dialog->preview, &error))
+ {
diff --git a/extra/notification-daemon/notification-daemon.install b/extra/notification-daemon/notification-daemon.install
new file mode 100644
index 000000000..8a1aa3433
--- /dev/null
+++ b/extra/notification-daemon/notification-daemon.install
@@ -0,0 +1,22 @@
+pkgname=notification-daemon
+
+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/extra/nouveau-drm-lts/COPYING b/extra/nouveau-drm-lts/COPYING
new file mode 100644
index 000000000..6e74c337c
--- /dev/null
+++ b/extra/nouveau-drm-lts/COPYING
@@ -0,0 +1,48 @@
+ Copyright 2005 Adam Jackson.
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation on the rights to use, copy, modify, merge,
+ publish, distribute, sub license, and/or sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+
+ The above copyright notice and this permission notice (including the
+ next paragraph) shall be included in all copies or substantial
+ portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NON-INFRINGEMENT. IN NO EVENT SHALL ADAM JACKSON BE LIABLE FOR ANY
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+------------------------------------------------------------------------
+
+ Copyright 1999 Precision Insight, Inc., Cedar Park, Texas.
+ Copyright 2000 VA Linux Systems, Inc., Sunnyvale, California.
+ All Rights Reserved.
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice (including the
+ next paragraph) shall be included in all copies or substantial
+ portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS
+ SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ DEALINGS IN THE SOFTWARE.
diff --git a/extra/nouveau-drm-lts/Makefile b/extra/nouveau-drm-lts/Makefile
new file mode 100644
index 000000000..123bc5339
--- /dev/null
+++ b/extra/nouveau-drm-lts/Makefile
@@ -0,0 +1,102 @@
+# This Makefile is loosely based on the drm.git/linux-core/Makefile and
+# the preliminary work by Christopher James Halse Rogers.
+# Edited by Pekka Paalanen <pq@iki.fi>
+
+# By default, the build is done against the running linux kernel source.
+# To build against a different kernel source tree, set LINUXDIR:
+#
+# make LINUXDIR=/path/to/kernel/source
+
+# By default, it is assumed the Nouveau kernel tree is found in $PWD/../.
+# To use a different path to the Nouveau kernel tree, set NOUVEAUROOTDIR:
+#
+# make NOUVEAUROOTDIR=/path/to/nouveau/linux-2.6
+
+
+ifndef LINUXDIR
+RUNNING_REL := $(shell uname -r)
+
+LINUXDIR := $(shell if [ -e /lib/modules/$(RUNNING_REL)/source ]; then \
+ echo /lib/modules/$(RUNNING_REL)/source; \
+ else echo /lib/modules/$(RUNNING_REL)/build; fi)
+endif
+
+NOUVEAUGITREMOTE ?= origin
+NOUVEAUROOTDIR ?= $(CURDIR)/..
+override NOUVEAUROOTDIR := $(abspath $(NOUVEAUROOTDIR))
+
+TESTFILE := include/drm/nouveau_drm.h
+ifeq ($(wildcard $(NOUVEAUROOTDIR)/$(TESTFILE)),)
+$(error $(NOUVEAUROOTDIR) does not look like the right kernel tree, \
+ please set NOUVEAUROOTDIR)
+endif
+
+GIT_REVISION := $(shell GIT_DIR=$(NOUVEAUROOTDIR)/.git \
+ git describe --always --abbrev=17 2> /dev/null)
+
+DRMINC := -I$(NOUVEAUROOTDIR)/include/drm
+DRMDIR := $(NOUVEAUROOTDIR)/drivers/gpu/drm
+DRMCFG := \
+ CONFIG_DRM=m \
+ CONFIG_DRM_KMS_HELPER=m \
+ CONFIG_DRM_TTM=m \
+ CONFIG_DRM_NOUVEAU=m \
+ CONFIG_DRM_NOUVEAU_KMS=n \
+ CONFIG_DRM_NOUVEAU_BACKLIGHT=y \
+ CONFIG_DRM_NOUVEAU_DEBUG=y \
+ CONFIG_DRM_I2C_CH7006=m \
+ CONFIG_DRM_TDFX=n \
+ CONFIG_DRM_R128=n \
+ CONFIG_DRM_RADEON=n \
+ CONFIG_DRM_MGA=n \
+ CONFIG_DRM_I810=n \
+ CONFIG_DRM_I830=n \
+ CONFIG_DRM_I915=n \
+ CONFIG_DRM_SIS=n \
+ CONFIG_DRM_SAVAGE=n \
+ CONFIG_DRM_VIA=n
+
+EXTRA_CFLAGS :=
+MYEXTRA_CFLAGS :=
+MYEXTRA_CFLAGS += -DCONFIG_DRM_NOUVEAU_BACKLIGHT
+MYEXTRA_CFLAGS += -DCONFIG_DRM_NOUVEAU_DEBUG
+
+ifneq ($(GIT_REVISION),)
+MYEXTRA_CFLAGS += '-DGIT_REVISION=\"$(GIT_REVISION)\"'
+endif
+
+MYPARMS := -C $(LINUXDIR) KCPPFLAGS="$(DRMINC)" SUBDIRS="$(DRMDIR)" $(DRMCFG)
+
+MYEXTRA_CFLAGS += $(EXTRA_CFLAGS)
+ifneq ($(MYEXTRA_CFLAGS),)
+MYPARMS += EXTRA_CFLAGS="$(MYEXTRA_CFLAGS)"
+endif
+
+.PHONY: all modules install clean archive FORCE
+
+all: modules
+FORCE:
+
+modules:
+ $(MAKE) $(MYPARMS) modules
+
+install:
+ $(MAKE) $(MYPARMS) modules_install
+
+clean:
+ $(MAKE) $(MYPARMS) clean
+
+archive: newttm-devel-compat.tar.gz newttm-devel.tar.gz master.tar.gz
+
+newttm-devel-compat.tar.gz: EXTRAS=nouveau README-nouveau
+
+%.tar: FORCE
+ GIT_DIR=$(NOUVEAUROOTDIR)/.git \
+ git archive --format=tar --prefix=$*/ $(NOUVEAUGITREMOTE)/$* \
+ drivers/gpu/drm include/drm $(EXTRAS) > $@
+
+%.tar.gz: %.tar
+ gzip -9 -c $< > $@
+
+# The commit id of the archive can be read with
+# $ zcat foo.tar.gz | git get-tar-commit-id
diff --git a/extra/nouveau-drm-lts/PKGBUILD b/extra/nouveau-drm-lts/PKGBUILD
new file mode 100644
index 000000000..74a456fe9
--- /dev/null
+++ b/extra/nouveau-drm-lts/PKGBUILD
@@ -0,0 +1,47 @@
+# $Id: PKGBUILD 115878 2011-03-22 13:23:39Z tpowa $
+# Maintainer: Andreas Radke <andyrtr@archlinux.org>
+# Contributor: buddabrod <buddabrod@gmail.com>
+
+pkgname=nouveau-drm-lts
+_snapdate=20100313
+pkgver=0.0.16_${_snapdate} # see master/drivers/gpu/drm/nouveau/nouveau_drv.h for version
+_kernver='2.6.32-lts'
+pkgrel=5
+pkgdesc="nvidia opensource X driver"
+arch=('i686' 'x86_64')
+url="http://nouveau.freedesktop.org/"
+depends=("kernel26-lts>=2.6.32" "kernel26-lts<2.6.33")
+makedepends=("kernel26-lts-headers>=2.6.32" "kernel26-lts-headers<2.6.33")
+# http://nouveau.freedesktop.org/wiki/InstallDRM#head-771a47a133fba6a5a70253656e76c61e9bff93bd
+optdepends=('nouveau-firmware: needed for very new card (NV50 family and above) to work properly where the OSS replacement does not work well')
+#makedepends=('git' 'autoconf' 'pkgconfig')
+install=nouveau-drm.install
+license=('GPL')
+options=('!strip')
+source=(ftp://ftp.archlinux.org/other/${pkgname/-lts//}/master-${_snapdate}.tar.gz
+ # http://people.freedesktop.org/~pq/nouveau-drm/master.tar.gz
+ # get the Makefile from http://cgit.freedesktop.org/nouveau/linux-2.6/plain/nouveau/Makefile?h=master-compat
+ Makefile)
+md5sums=('ad7ad0fb73d56bcff3d2b54a70c3d511'
+ 'e7d5df80186d5c736e82b0a7d46216bc')
+
+build() {
+ cd ${srcdir}/master
+ mkdir nouveau
+ cp $srcdir/Makefile ${srcdir}/master/nouveau/
+ cd nouveau
+ make LINUXDIR=/lib/modules/${_kernver}/build DRM_MODULES="nouveau"
+}
+
+package() {
+ install -D -m 0644 ${srcdir}/master/drivers/gpu/drm/drm.ko ${pkgdir}/lib/modules/${_kernver}/updates/drm.ko
+ install -D -m 0644 ${srcdir}/master/drivers/gpu/drm/drm_kms_helper.ko ${pkgdir}/lib/modules/${_kernver}/updates/drm_kms_helper.ko
+ install -D -m 0644 ${srcdir}/master/drivers/gpu/drm/nouveau/nouveau.ko ${pkgdir}/lib/modules/${_kernver}/kernel/drivers/video/nouveau.ko
+ install -D -m 0644 ${srcdir}/master/drivers/gpu/drm/ttm/ttm.ko ${pkgdir}/lib/modules/${_kernver}/updates/ttm.ko
+ install -D -m 0644 ${srcdir}/master/drivers/gpu/drm/i2c/ch7006.ko ${pkgdir}/lib/modules/${_kernver}/updates/ch7006.ko
+
+ # install script
+ sed -i -e "s/KERNEL_VERSION='.*'/KERNEL_VERSION='${_kernver}'/" ${startdir}/nouveau-drm.install
+ # gzip -9 modules
+ find "$pkgdir" -name '*.ko' -exec gzip -9 {} \;
+}
diff --git a/extra/nouveau-drm-lts/dont_check_for_pthread.patch b/extra/nouveau-drm-lts/dont_check_for_pthread.patch
new file mode 100644
index 000000000..050f55767
--- /dev/null
+++ b/extra/nouveau-drm-lts/dont_check_for_pthread.patch
@@ -0,0 +1,49 @@
+diff -ru libdrm-2.4.0/configure.ac libdrm-2.4.0-nostubs/configure.ac
+--- libdrm-2.4.0/configure.ac 2008-10-09 21:57:09.000000000 +0200
++++ libdrm-2.4.0-nostubs/configure.ac 2008-10-21 10:48:24.000000000 +0200
+@@ -32,10 +32,6 @@
+ AC_HEADER_STDC
+ AC_SYS_LARGEFILE
+
+-PKG_CHECK_MODULES(PTHREADSTUBS, pthread-stubs)
+-AC_SUBST(PTHREADSTUBS_CFLAGS)
+-AC_SUBST(PTHREADSTUBS_LIBS)
+-
+ pkgconfigdir=${libdir}/pkgconfig
+ AC_SUBST(pkgconfigdir)
+ AC_ARG_ENABLE(udev, AS_HELP_STRING([--enable-udev],
+diff -ru libdrm-2.4.0/libdrm/intel/Makefile.am libdrm-2.4.0-nostubs/libdrm/intel/Makefile.am
+--- libdrm-2.4.0/libdrm/intel/Makefile.am 2008-10-14 01:39:32.000000000 +0200
++++ libdrm-2.4.0-nostubs/libdrm/intel/Makefile.am 2008-10-21 10:49:00.000000000 +0200
+@@ -26,13 +26,12 @@
+ $(WARN_CFLAGS) \
+ -I$(top_srcdir)/libdrm \
+ -I$(top_srcdir)/libdrm/intel \
+- $(PTHREADSTUBS_CFLAGS) \
+ -I$(top_srcdir)/shared-core
+
+ libdrm_intel_la_LTLIBRARIES = libdrm_intel.la
+ libdrm_intel_ladir = $(libdir)
+ libdrm_intel_la_LDFLAGS = -version-number 1:0:0 -no-undefined
+-libdrm_intel_la_LIBADD = ../libdrm.la @PTHREADSTUBS_LIBS@
++libdrm_intel_la_LIBADD = ../libdrm.la
+
+ libdrm_intel_la_SOURCES = \
+ intel_bufmgr.c \
+--- libdrm-2.4.5/libdrm/nouveau/Makefile.am.orig 2009-02-28 19:06:24.000000000 +0000
++++ libdrm-2.4.5/libdrm/nouveau/Makefile.am 2009-02-28 19:06:33.000000000 +0000
+@@ -2,13 +2,12 @@
+ $(WARN_CFLAGS) \
+ -I$(top_srcdir)/libdrm \
+ -I$(top_srcdir)/libdrm/nouveau \
+- $(PTHREADSTUBS_CFLAGS) \
+ -I$(top_srcdir)/shared-core
+
+ libdrm_nouveau_la_LTLIBRARIES = libdrm_nouveau.la
+ libdrm_nouveau_ladir = $(libdir)
+ libdrm_nouveau_la_LDFLAGS = -version-number 1:0:0 -no-undefined
+-libdrm_nouveau_la_LIBADD = ../libdrm.la @PTHREADSTUBS_LIBS@
++libdrm_nouveau_la_LIBADD = ../libdrm.la
+
+ libdrm_nouveau_la_SOURCES = \
+ nouveau_device.c \
diff --git a/extra/nouveau-drm-lts/nouveau-drm.install b/extra/nouveau-drm-lts/nouveau-drm.install
new file mode 100644
index 000000000..beadaa563
--- /dev/null
+++ b/extra/nouveau-drm-lts/nouveau-drm.install
@@ -0,0 +1,16 @@
+post_install() {
+ KERNEL_VERSION='2.6.32-lts'
+ depmod -v $KERNEL_VERSION > /dev/null 2>&1
+ echo "if you are running kms in early mode please rebuild your initrd"
+}
+
+post_upgrade() {
+ post_install $1
+ rmmod nouveau || echo 'In order to use the new nouveau module, exit Xserver and unload it manually.'
+}
+
+post_remove() {
+ KERNEL_VERSION='2.6.32-lts'
+ depmod -v $KERNEL_VERSION > /dev/null 2>&1
+}
+
diff --git a/extra/nppangband/Makefile.std b/extra/nppangband/Makefile.std
new file mode 100755
index 000000000..5bebf01fa
--- /dev/null
+++ b/extra/nppangband/Makefile.std
@@ -0,0 +1,375 @@
+# File: Makefile.std
+
+# This is not a very "nice" Makefile, but it usually works.
+
+#
+# Note that you may have to make modifications below according
+# to your machine, available libraries, compilation options,
+# and your "visual module" of choice. This Makefile is intended
+# for use with Unix machines running X11, gtk, (n)curses, termcap,
+# or VT100, Slang, Linux VCS or SVGA library,
+# or possibly for "Atari" or "Amiga" computers with "Curses" ports,
+# see below for more information.
+#
+# Note that "main-mac.c", the visual module for the Macintosh,
+# must be compiled in a special way, see elsewhere.
+#
+# Note that "main-win.c", the visual module for Windows,
+# must be compiled in a special way, see elsewhere.
+#
+# Note that "main-ibm.c", "main-dos.c", and "main-emx.c",
+# the visual modules for various types of IBM-PC computers,
+# must be compiled with special Makefiles, see elsewhere.
+#
+# Note that "main-ros.c", the visual module for RISC OS,
+# must be compiled with "Makefile.ros", see elsewhere.
+#
+# Note that "main-ami.c", the visual module for the Amiga,
+# must be compiled with "Makefile.ami", see elsewhere.
+#
+# If you are able to construct "main-xxx.c" and/or "Makefile.xxx"
+# files for a currently unsupported system, please send them to
+# Robert Ruehlmann < rr9@thangorodrim.net > for inclusion in future
+# versions.
+#
+# This Makefile comes with "default" dependencies that may be obsolete.
+#
+
+
+#
+# The "source" and "object" files.
+#
+
+SRCS = \
+ z-util.c z-virt.c z-form.c z-rand.c z-term.c \
+ variable.c tables.c util.c cave.c \
+ object1.c object2.c monster1.c monster2.c \
+ xtra1.c xtra2.c spells1.c spells2.c \
+ melee1.c melee2.c save.c effects.c feature.c files.c \
+ cmd1.c cmd2.c cmd3.c cmd4.c cmd5.c cmd6.c \
+ store.c birth.c load.c quest.c squelch.c \
+ wizard1.c wizard2.c obj-info.c \
+ generate.c dungeon.c init1.c init2.c randart.c \
+ main-cap.c main-gcu.c main-x11.c main-xaw.c main.c \
+ main-gtk.c main-lsl.c main-sla.c main-vcs.c main-xpj.c main-lfb.c \
+ maid-x11.c \
+ use-obj.c
+
+OBJS = \
+ z-util.o z-virt.o z-form.o z-rand.o z-term.o \
+ variable.o tables.o util.o cave.o \
+ object1.o object2.o monster1.o monster2.o \
+ xtra1.o xtra2.o spells1.o spells2.o \
+ melee1.o melee2.o save.o effects.o feature.o files.o \
+ cmd1.o cmd2.o cmd3.o cmd4.o cmd5.o cmd6.o \
+ store.o birth.o load.o quest.o squelch.o \
+ wizard1.o wizard2.o obj-info.o \
+ generate.o dungeon.o init1.o init2.o randart.o \
+ main-cap.o main-gcu.o main-x11.o main-xaw.o main.o \
+ main-gtk.o main-lsl.o main-sla.o main-vcs.o main-xpj.o main-lfb.o \
+ maid-x11.o \
+ use-obj.o
+
+
+
+##
+## Following are some "system" definitions
+##
+## No changes are needed to compile a version that will run on both
+## X11 and Curses, in debugging mode, with maximal warnings, on many
+## normal Unix machines of the Sun OS variety (non-solaris).
+##
+## To use an "alternative" definition, simply "modify" (or "replace")
+## the definition below with one that you like. For example, you can
+## change the compiler to "cc", or remove the "debugging" options, or
+## remove the X11 or Curses support, etc, as desired.
+##
+## With X11, XAW or GTK, you can add -D"USE_XPJ" to CFLAGS to get the
+## 3d-projection module "xpj".
+##
+## See also "config.h" and "h-config.h" for important information.
+##
+## Some "examples" are given below, they can be used by simply
+## removing the FIRST column of "#" signs from the "block" of lines
+## you wish to use, and commenting out "standard" block below.
+##
+## This is not intended to be a "good" Makefile, just a "simple" one.
+##
+
+
+#
+# This is my compiler of choice, it seems to work most everywhere.
+#
+CC = gcc
+
+
+#
+# Standard version (see main-x11.c and main-gcu.c)
+#
+# This version supports both "X11" and "curses" in a single executable.
+#
+# You may have to add various X11 include/library directories to the
+# "CFLAGS", if your machine places files in a weird location.
+#
+# You may be able to remove "-ltermcap" on some machines (ex: Solaris).
+#
+# You may have to replace "-lcurses" with "-lncurses" to use the
+# "new curses" library instead of the "old curses" library, and
+# you may have to add "-I/usr/include/ncurses" to the "CFLAGS".
+#
+# See "main-gcu.c" and "config.h" for some optional "curses" defines,
+# including "USE_GETCH" and "USE_CURS_SET". Note that "config.h" will
+# attempt to "guess" at many of these flags based on your system.
+#
+#CFLAGS = -Wall -O1 -pipe -g -D"USE_X11" -D"USE_GCU"
+#LIBS = -lX11 -lcurses -ltermcap
+
+
+##
+## Variation -- Only support "main-x11.c" (not "main-gcu.c")
+##
+#CFLAGS = -Wall -O1 -pipe -g -D"USE_X11"
+#LIBS = -lX11
+
+
+##
+## Variation -- Only support "main-gcu.c" (not "main-x11.c")
+##
+#CFLAGS = -Wall -O1 -pipe -g -D"USE_GCU"
+#LIBS = -lcurses -ltermcap
+
+
+##
+## Variation -- Use "main-xaw.c" instead of "main-x11.c"
+##
+#CFLAGS = -Wall -O1 -pipe -g -D"USE_XAW" -D"USE_GCU"
+#LIBS = -lXaw -lXmu -lXt -lX11 -lcurses -ltermcap
+
+
+##
+## Variation -- Use "main-gtk.c" instead of "main-x11.c"
+## Note: gtk-config adds GTK and X11 includes and libraries as appropriate.
+##
+#CFLAGS = -Wall -O `gtk-config --cflags` -g -D"USE_GTK" -D"USE_GCU"
+#LIBS = `gtk-config --libs` -lcurses -ltermcap
+
+
+##
+## Variation -- Use "main-cap.c" instead of "main-gcu.c"
+##
+#CFLAGS = -Wall -O1 -pipe -g -D"USE_X11" -D"USE_CAP"
+#LIBS = -lX11 -ltermcap
+
+
+##
+## Variation -- Only work on simple vt100 terminals
+##
+#CFLAGS = -Wall -O1 -pipe -g -D"USE_CAP" -D"USE_HARDCODE"
+
+
+##
+## Variation -- compile for Linux
+##
+## Allows the use of Angband in the console using ncurses,
+## as well as under X11.
+##
+#CFLAGS = -I/usr/X11R6/include -I/usr/include/ncurses -Wall \
+ # -O2 -fno-strength-reduce -D"HAVE_MKSTEMP" \
+ # -D"USE_X11" -D"USE_GCU" -D"USE_NCURSES" -g
+#LIBS = -L/usr/X11R6/lib -lXaw -lXext -lSM -lICE -lXmu -lXt -lX11 -lncurses
+
+
+##
+## Variation -- compile for Linux
+##
+## Allows the use of Angband in the console using curses.
+##
+#CFLAGS = -Wall -O2 -fno-strength-reduce -pipe -D"USE_GCU"
+#LIBS = -lcurses
+
+
+##
+## Variation -- compile for Linux
+##
+## Allows the use of Angband in X11 using the Athena Widget set.
+##
+#CFLAGS = -Wall -O2 -fno-strength-reduce -pipe -g -D"USE_XAW"
+#LIBS = -L/usr/X11R6/lib -lXaw -lXext -lSM -lICE -lXmu -lXt -lX11
+
+
+##
+## Variation -- this might work better than the suggestion above
+##
+CFLAGS = -I/usr/include/ncurses \
+ -Wall -O2 -fno-strength-reduce -fomit-frame-pointer \
+ -D"USE_X11" -D"USE_GCU" \
+ -D"USE_TPOSIX" -D"USE_CURS_SET"
+LIBS = -lX11 -lncurses
+LDFLAGS = -s
+
+
+##
+## Variation -- compile for Solaris
+##
+#CFLAGS = -Wall -O1 -pipe -g -D"USE_X11" -D"USE_GCU" -D"SOLARIS"
+#LIBS = -lX11 -lsocket -lcurses
+
+
+##
+## Variation -- compile for SGI Indigo runnig Irix
+##
+#CFLAGS = -Wall -O1 -pipe -g -D"USE_X11" -D"USE_GCU" -D"SGI"
+#LIBS = -lX11 -lcurses -ltermcap -lsun
+
+
+##
+## Variation -- compile for Dec ALPHA OSF/1 v2.0
+##
+#CC = cc
+##CFLAGS = -std -O -g3 -Olimit 4000 -D"USE_X11" -D"USE_GCU"
+#CFLAGS = -std -g -D"USE_X11" -D"USE_GCU"
+#LIBS = -lX11 -lcurses -ltermcap -lrpcsvc
+
+
+##
+## Variation -- compile for Interactive Unix (ISC) systems
+##
+#CFLAGS = -Wall -O1 -pipe -g -D"USE_X11" -D"USE_GCU" -D"ISC"
+#LIBS = -lX11 -lcurses -lnsl_s -linet -lcposix
+
+
+##
+## Variation -- Support fat binaries under NEXTSTEP
+##
+#CFLAGS = -Wall -O1 -pipe -g -D"USE_GCU" -arch m68k -arch i386
+#LIBS = -lcurses -ltermcap
+
+
+##
+## Variation -- Support Linux + SVGA library
+##
+#CFLAGS = -Wall -O2 -fno-strength-reduce -D"USE_LSL"
+#LIBS = -lz -lvgagl -lvga
+
+
+##
+## Variation -- Support Linux "vcs" (Virtual Console memory) module
+##
+#CFLAGS = -Wall -O2 -fno-strength-reduce -D"USE_VCS"
+#LIBS =
+
+
+##
+## Variation -- Support S-Lang library
+##
+#CFLAGS = -Wall -O2 -fno-strength-reduce -D"USE_SLA" -I/usr/include/slang
+#LIBS = -lslang
+
+
+#
+# Default target.
+#
+all: nppangband
+
+
+#
+# Install the game.
+#
+
+install: nppangband
+ cp nppangband ..
+
+
+#
+# Build the "NPPAngband" program
+#
+
+nppangband: $(OBJS)
+ $(CC) $(CFLAGS) $(LDFLAGS) -o nppangband $(OBJS) $(LIBS)
+
+
+#
+# Clean up old junk
+#
+
+clean:
+ -rm -f *.o nppangband
+
+#
+# Generate dependencies automatically
+#
+
+depend:
+ makedepend -D__MAKEDEPEND__ $(SRCS)
+
+
+#
+# Hack -- some file dependencies
+#
+
+HDRS = \
+ h-basic.h \
+ h-define.h h-type.h h-system.h h-config.h
+
+INCS = \
+ angband.h \
+ config.h defines.h types.h externs.h \
+ z-term.h z-rand.h z-util.h z-virt.h z-form.h $(HDRS)
+
+
+birth.o: birth.c $(INCS)
+cave.o: cave.c $(INCS)
+cmd1.o: cmd1.c $(INCS)
+cmd2.o: cmd2.c $(INCS)
+cmd3.o: cmd3.c $(INCS)
+cmd4.o: cmd4.c $(INCS)
+cmd5.o: cmd5.c $(INCS)
+cmd6.o: cmd6.c $(INCS)
+dungeon.o: dungeon.c $(INCS)
+effects.o: effects.c $(INCS)
+feature.o: feature.c $(INCS)
+files.o: files.c $(INCS)
+generate.o: generate.c $(INCS)
+init1.o: init1.c $(INCS) init.h
+init2.o: init2.c $(INCS) init.h
+load.o: load.c $(INCS) init.h
+maid-x11.o: maid-x11.c $(INCS) maid-x11.h
+main-cap.o: main-cap.c $(INCS) main.h
+main-gcu.o: main-gcu.c $(INCS) main.h
+main-gtk.o: main-gtk.c $(INCS) main.h maid-x11.h
+main-lsl.o: main-lsl.c $(INCS) main.h
+main-sla.o: main-sla.c $(INCS) main.h
+main-vcs.o: main-vcs.c $(INCS) main.h
+main-x11.o: main-x11.c $(INCS) main.h maid-x11.h
+main-xaw.o: main-xaw.c $(INCS) main.h maid-x11.h
+main-xpj.o: main-xpj.c $(INCS) main.h maid-x11.h
+main-lfb.o: main-lfb.c $(INCS) main.h
+main.o: main.c $(INCS) main.h
+melee1.o: melee1.c $(INCS)
+melee2.o: melee2.c $(INCS)
+monster1.o: monster1.c $(INCS)
+monster2.o: monster2.c $(INCS)
+obj-info.o: obj-info.c $(INCS)
+object1.o: object1.c $(INCS)
+object2.o: object2.c $(INCS)
+quest.o: quest.c $(INCS)
+randart.o: randart.c $(INCS) init.h
+save.o: save.c $(INCS)
+spells1.o: spells1.c $(INCS)
+spells2.o: spells2.c $(INCS)
+squelch.o: squelch.c $(INCS)
+store.o: store.c $(INCS)
+tables.o: tables.c $(INCS)
+use-obj.o: use-obj.c $(INCS)
+util.o: util.c $(INCS)
+variable.o: variable.c $(INCS)
+wizard1.o: wizard1.c $(INCS)
+wizard2.o: wizard2.c $(INCS)
+xtra1.o: xtra1.c $(INCS)
+xtra2.o: xtra2.c $(INCS)
+z-form.o: z-form.c $(HDRS) z-form.h z-util.h z-virt.h
+z-rand.o: z-rand.c $(HDRS) z-rand.h
+z-term.o: z-term.c $(HDRS) z-term.h z-virt.h
+z-util.o: z-util.c $(HDRS) z-util.h
+z-virt.o: z-virt.c $(HDRS) z-virt.h z-util.h
+
diff --git a/extra/nppangband/PKGBUILD b/extra/nppangband/PKGBUILD
new file mode 100644
index 000000000..988ddcf52
--- /dev/null
+++ b/extra/nppangband/PKGBUILD
@@ -0,0 +1,41 @@
+# $Id: PKGBUILD 58001 2009-11-03 08:18:40Z giovanni $
+# Maintainer: James Rayner <iphitus@gmail.com>
+
+pkgname=nppangband
+pkgver=0.5.0.25
+pkgrel=1.1
+pkgdesc="A variant of Angband that attempts to take popular ideas from other variants"
+url="http://www.assembla.com/wiki/show/NPPAngband"
+depends=('ncurses' 'libx11')
+makedepends=('libxaw' 'xorg-font-utils')
+source=(http://www.assembla.com/spaces/NPPAngband/documents/dmfeFgWJir3PuseJe5afGb/download/npp050-rev25-src.zip)
+license=('custom')
+arch=('i686' 'x86_64')
+
+build() {
+
+ cd $srcdir/npp050-rev25-src/src
+ sed 's@# define DEFAULT_PATH "./lib/"@# define DEFAULT_PATH "/usr/share/nppangband/"@' -i config.h
+ sed -i 's/-D"USE_LFB"//g' Makefile.std # Remove framebuffer support, does not compile,
+ make -f Makefile.std
+
+
+ # Fix fonts
+ cd ../lib/xtra/font/
+ tr -d '\r' < compile_bdf_fonts.sh > compile_bdf_fonts2.sh # Convert line endings dos->unix
+ sed -i "s/\.bdf/\.bdf;/g" compile_bdf_fonts2.sh # fix syntax error, missing ;.
+ bash compile_bdf_fonts2.sh # no shebang, use bash explicitly
+
+ # Install
+ cd $srcdir/npp050-rev25-src/
+ mkdir -p $pkgdir/usr/bin $pkgdir/usr/share
+ cp -R lib $pkgdir/usr/share/nppangband/
+ chmod -R 775 $pkgdir/usr/share/nppangband/
+ chown -R root:games $pkgdir/usr/share/nppangband/
+ install -m755 src/nppangband $pkgdir/usr/bin/nppangband
+
+ # install custom license
+ install -Dm644 COPYING $pkgdir/usr/share/licenses/$pkgname/COPYING
+}
+
+md5sums=('776d387ccbca31edf7eb30eb1402b0c9')
diff --git a/extra/nspr/PKGBUILD b/extra/nspr/PKGBUILD
new file mode 100644
index 000000000..8264735d7
--- /dev/null
+++ b/extra/nspr/PKGBUILD
@@ -0,0 +1,57 @@
+# $Id: PKGBUILD 108496 2011-01-31 15:55:57Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Alexander Baldeck <alexander@archlinux.org>
+pkgname=nspr
+pkgver=4.8.7
+pkgrel=1
+pkgdesc="Netscape Portable Runtime"
+arch=(i686 x86_64)
+url="http://www.mozilla.org/projects/nspr/"
+license=('MPL' 'GPL')
+depends=('glibc')
+makedepends=('zip')
+options=(!emptydirs)
+source=(ftp://ftp.mozilla.org/pub/mozilla.org/nspr/releases/v${pkgver}/src/${pkgname}-${pkgver}.tar.gz
+ nspr.pc.in)
+md5sums=('97e30989a56ab813453b71261849c200'
+ 'bce1611f3117b53fc904cab549c09967')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ if [ "$CARCH" = "x86_64" ]; then
+ confflags="--enable-64bit"
+ else
+ confflags=""
+ fi
+ unset CFLAGS
+ unset CXXFLAGS
+ ./mozilla/nsprpub/configure \
+ --prefix=/usr \
+ --libdir=/usr/lib \
+ --includedir=/usr/include/nspr \
+ --enable-optimize \
+ --disable-debug ${confflags}
+ make
+ make DESTDIR="${pkgdir}" install
+
+ NSPR_LIBS=`./config/nspr-config --libs`
+ NSPR_CFLAGS=`./config/nspr-config --cflags`
+ NSPR_VERSION=`./config/nspr-config --version`
+ install -m755 -d "${pkgdir}/usr/lib/pkgconfig"
+ sed "${srcdir}/nspr.pc.in" -e "s,%libdir%,/usr/lib," \
+ -e "s,%prefix%,/usr," \
+ -e "s,%exec_prefix%,/usr/bin," \
+ -e "s,%includedir%,/usr/include/nspr," \
+ -e "s,%NSPR_VERSION%,${NSPR_VERSION}," \
+ -e "s,%FULL_NSPR_LIBS%,${NSPR_LIBS}," \
+ -e "s,%FULL_NSPR_CFLAGS%,${NSPR_CFLAGS}," > "${pkgdir}/usr/lib/pkgconfig/nspr.pc"
+ chmod 644 "${pkgdir}/usr/lib/pkgconfig/nspr.pc"
+ ln -sf nspr.pc "${pkgdir}/usr/lib/pkgconfig/mozilla-nspr.pc"
+
+ chmod 644 ${pkgdir}/usr/lib/*.a
+
+ rm -rf "${pkgdir}/usr/bin/compile-et.pl" \
+ "${pkgdir}/usr/bin/prerr.properties" \
+ "${pkgdir}/usr/share/aclocal/nspr.m4" \
+ "${pkgdir}/usr/include/nspr/md"
+}
diff --git a/extra/nspr/nspr.pc.in b/extra/nspr/nspr.pc.in
new file mode 100644
index 000000000..1d8f4a0ca
--- /dev/null
+++ b/extra/nspr/nspr.pc.in
@@ -0,0 +1,10 @@
+prefix=%prefix%
+exec_prefix=%exec_prefix%
+libdir=%libdir%
+includedir=%includedir%
+
+Name: NSPR
+Description: The Netscape Portable Runtime
+Version: %NSPR_VERSION%
+Libs: %FULL_NSPR_LIBS%
+Cflags: %FULL_NSPR_CFLAGS%
diff --git a/extra/nss-mdns/PKGBUILD b/extra/nss-mdns/PKGBUILD
new file mode 100644
index 000000000..6fe8d5653
--- /dev/null
+++ b/extra/nss-mdns/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 56016 2009-10-17 23:24:29Z giovanni $
+# Contributor: Travis Willard <travis@archlinux.org>
+
+pkgname=nss-mdns
+pkgver=0.10
+pkgrel=2
+pkgdesc="glibc plugin providing host name resolution via mDNS"
+arch=('i686' 'x86_64')
+url="http://0pointer.de/lennart/projects/nss-mdns/"
+license=('lgpl')
+depends=('glibc')
+makedepends=('pkgconfig')
+backup=('etc/mdns.allow')
+install=nss-mdns.install
+source=(http://0pointer.de/lennart/projects/${pkgname}/${pkgname}-${pkgver}.tar.gz
+ mdns.allow)
+md5sums=('03938f17646efbb50aa70ba5f99f51d7'
+ '904abb492fb1f56722826c0c3a997bf0')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/ \
+ --disable-lynx \
+ --enable-avahi
+ make || return 1
+ make DESTDIR=${pkgdir} install
+ mkdir -p ${startdir}/pkg/etc
+ install -m644 ../mdns.allow ${startdir}/pkg/etc/mdns.allow
+}
+
diff --git a/extra/nss-mdns/mdns.allow b/extra/nss-mdns/mdns.allow
new file mode 100644
index 000000000..ed64c974c
--- /dev/null
+++ b/extra/nss-mdns/mdns.allow
@@ -0,0 +1,8 @@
+#
+# /etc/mdns.allow
+#
+
+.local.
+.local
+
+# End of file
diff --git a/extra/nss-mdns/nss-mdns.install b/extra/nss-mdns/nss-mdns.install
new file mode 100644
index 000000000..ed0fd0c24
--- /dev/null
+++ b/extra/nss-mdns/nss-mdns.install
@@ -0,0 +1,24 @@
+post_install() {
+ cat << 'EOM'
+==> To enable IPv4 multicast DNS lookups, append 'mdns4' to the hosts line
+ in /etc/nsswitch.conf. Use 'mdns6' for IPv6 or 'mdns' for both.
+EOM
+}
+
+post_upgrade() {
+ if [ "$2" == "0.7-1" ]; then
+ echo -n "disabling mdns lookups in /etc/nsswitch.conf... "
+ sed -i -e '/^hosts: / s/ mdns\([46]\)\?\>//g' etc/nsswitch.conf && echo "done."
+ fi
+ cat << 'EOM'
+==> Please note that due to security reasons from version 0.9 on the
+ minimal mDNS stack included in nss-mdns (dubbed "legacy") is no
+ longer built - nss-mdns will not work unless Avahi is running.
+EOM
+
+ post_install
+}
+
+op=$1
+shift
+$op $*
diff --git a/extra/nss/PKGBUILD b/extra/nss/PKGBUILD
new file mode 100644
index 000000000..039509b3c
--- /dev/null
+++ b/extra/nss/PKGBUILD
@@ -0,0 +1,102 @@
+# $Id: PKGBUILD 109101 2011-02-06 10:02:09Z andyrtr $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+pkgname=nss
+pkgver=3.12.9
+pkgrel=1
+pkgdesc="Mozilla Network Security Services"
+arch=(i686 x86_64)
+url="http://www.mozilla.org/projects/security/pki/nss/"
+license=('MPL' 'GPL')
+_nsprver=4.8.7
+depends=("nspr>=${_nsprver}" 'sqlite3>=3.7.5' 'zlib' 'sh')
+makedepends=('perl')
+replaces=('nss-nspr')
+source=(ftp://ftp.mozilla.org/pub/security/nss/releases/NSS_${pkgver//./_}_RTM/src/${pkgname}-${pkgver}.tar.gz
+ nss-no-rpath.patch
+ nss.pc.in
+ nss-config.in
+ add_spi+cacert_ca_certs.patch
+ ssl-renegotiate-transitional.patch)
+options=('!strip')
+md5sums=('bd32f183ca28440c1744650be31a9ccc'
+ 'e5c97db0c884d5f4cfda21e562dc9bba'
+ 'c547b030c57fe1ed8b77c73bf52b3ded'
+ '46bee81908f1e5b26d6a7a2e14c64d9f'
+ '7f39c19b1dfd62d7db7d8bf19f156fed'
+ 'd83c7b61abb7e9f8f7bcd157183d1ade')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ # Adds the SPI Inc. and CAcert.org CA certificates - patch from Debian
+ patch -Np1 -i "${srcdir}/add_spi+cacert_ca_certs.patch"
+ # Adds transitional SSL renegotiate support - patch from Debian
+ patch -Np1 -i "${srcdir}/ssl-renegotiate-transitional.patch"
+ # Removes rpath
+ patch -Np0 -i "${srcdir}/nss-no-rpath.patch"
+
+ cd mozilla/security/nss/lib/ckfw/builtins
+ make generate
+
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ unset CFLAGS
+ unset CXXFLAGS
+ export BUILD_OPT=1
+ export PKG_CONFIG_ALLOW_SYSTEM_LIBS=1
+ export PKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1
+ export NSS_USE_SYSTEM_SQLITE=1
+ export NSPR_INCLUDE_DIR=`pkg-config --cflags-only-I nspr | sed 's/-I//'`
+ export NSPR_LIB_DIR=`pkg-config --libs-only-L nspr | sed 's/-L.//'`
+
+ [ "$CARCH" = "x86_64" ] && export USE_64=1
+
+ make -j 1 -C mozilla/security/coreconf
+ make -j 1 -C mozilla/security/dbm
+ make -j 1 -C mozilla/security/nss
+
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ install -m755 -d "${pkgdir}/usr/lib/pkgconfig"
+ install -m755 -d "${pkgdir}/usr/bin"
+ install -m755 -d "${pkgdir}/usr/include/nss"
+
+ NSS_VMAJOR=`grep "#define.*NSS_VMAJOR" mozilla/security/nss/lib/nss/nss.h | awk '{print $3}'`
+ NSS_VMINOR=`grep "#define.*NSS_VMINOR" mozilla/security/nss/lib/nss/nss.h | awk '{print $3}'`
+ NSS_VPATCH=`grep "#define.*NSS_VPATCH" mozilla/security/nss/lib/nss/nss.h | awk '{print $3}'`
+
+ sed "${srcdir}/nss.pc.in" -e "s,%libdir%,/usr/lib,g" \
+ -e "s,%prefix%,/usr,g" \
+ -e "s,%exec_prefix%,/usr/bin,g" \
+ -e "s,%includedir%,/usr/include/nss,g" \
+ -e "s,%NSPR_VERSION%,${pkgver},g" \
+ -e "s,%NSS_VERSION%,${pkgver},g" > \
+ "${pkgdir}/usr/lib/pkgconfig/nss.pc"
+ ln -sf nss.pc "${pkgdir}/usr/lib/pkgconfig/mozilla-nss.pc"
+ chmod 644 ${pkgdir}/usr/lib/pkgconfig/*.pc
+
+ sed "${srcdir}/nss-config.in" -e "s,@libdir@,/usr/lib,g" \
+ -e "s,@prefix@,/usr/bin,g" \
+ -e "s,@exec_prefix@,/usr/bin,g" \
+ -e "s,@includedir@,/usr/include/nss,g" \
+ -e "s,@MOD_MAJOR_VERSION@,${NSS_VMAJOR},g" \
+ -e "s,@MOD_MINOR_VERSION@,${NSS_VMINOR},g" \
+ -e "s,@MOD_PATCH_VERSION@,${NSS_VPATCH},g" \
+ > "${pkgdir}/usr/bin/nss-config"
+ chmod 755 "${pkgdir}/usr/bin/nss-config"
+
+ for file in libsoftokn3.so libfreebl3.so libnss3.so libnssutil3.so \
+ libssl3.so libsmime3.so libnssckbi.so libnssdbm3.so
+ do
+ install -m755 mozilla/dist/*.OBJ/lib/${file} "${pkgdir}/usr/lib/"
+ done
+
+ install -m644 mozilla/dist/*.OBJ/lib/libcrmf.a "${pkgdir}/usr/lib/"
+ install -m644 mozilla/dist/*.OBJ/lib/*.chk "${pkgdir}/usr/lib/"
+
+ for file in certutil cmsutil crlutil modutil pk12util shlibsign signtool signver ssltap; do
+ install -m755 mozilla/dist/*.OBJ/bin/${file} "${pkgdir}/usr/bin/"
+ done
+
+ install -m644 mozilla/dist/public/nss/*.h "${pkgdir}/usr/include/nss/"
+}
diff --git a/extra/nss/add_spi+cacert_ca_certs.patch b/extra/nss/add_spi+cacert_ca_certs.patch
new file mode 100644
index 000000000..1cc7c18f5
--- /dev/null
+++ b/extra/nss/add_spi+cacert_ca_certs.patch
@@ -0,0 +1,561 @@
+--- a/mozilla/security/nss/lib/ckfw/builtins/certdata.txt
++++ b/mozilla/security/nss/lib/ckfw/builtins/certdata.txt
+@@ -20926,3 +20926,558 @@ CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+ CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+ CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
+ CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
++
++#
++# Certificate "CAcert.org Class 1 Root CA"
++#
++CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
++CKA_TOKEN CK_BBOOL CK_TRUE
++CKA_PRIVATE CK_BBOOL CK_FALSE
++CKA_MODIFIABLE CK_BBOOL CK_FALSE
++CKA_LABEL UTF8 "CAcert.org Class 1 Root CA"
++CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
++CKA_SUBJECT MULTILINE_OCTAL
++\060\171\061\020\060\016\006\003\125\004\012\023\007\122\157\157
++\164\040\103\101\061\036\060\034\006\003\125\004\013\023\025\150
++\164\164\160\072\057\057\167\167\167\056\143\141\143\145\162\164
++\056\157\162\147\061\042\060\040\006\003\125\004\003\023\031\103
++\101\040\103\145\162\164\040\123\151\147\156\151\156\147\040\101
++\165\164\150\157\162\151\164\171\061\041\060\037\006\011\052\206
++\110\206\367\015\001\011\001\026\022\163\165\160\160\157\162\164
++\100\143\141\143\145\162\164\056\157\162\147
++END
++CKA_ID UTF8 "0"
++CKA_ISSUER MULTILINE_OCTAL
++\060\171\061\020\060\016\006\003\125\004\012\023\007\122\157\157
++\164\040\103\101\061\036\060\034\006\003\125\004\013\023\025\150
++\164\164\160\072\057\057\167\167\167\056\143\141\143\145\162\164
++\056\157\162\147\061\042\060\040\006\003\125\004\003\023\031\103
++\101\040\103\145\162\164\040\123\151\147\156\151\156\147\040\101
++\165\164\150\157\162\151\164\171\061\041\060\037\006\011\052\206
++\110\206\367\015\001\011\001\026\022\163\165\160\160\157\162\164
++\100\143\141\143\145\162\164\056\157\162\147
++END
++CKA_SERIAL_NUMBER MULTILINE_OCTAL
++\002\001\000
++END
++CKA_VALUE MULTILINE_OCTAL
++\060\202\007\075\060\202\005\045\240\003\002\001\002\002\001\000
++\060\015\006\011\052\206\110\206\367\015\001\001\004\005\000\060
++\171\061\020\060\016\006\003\125\004\012\023\007\122\157\157\164
++\040\103\101\061\036\060\034\006\003\125\004\013\023\025\150\164
++\164\160\072\057\057\167\167\167\056\143\141\143\145\162\164\056
++\157\162\147\061\042\060\040\006\003\125\004\003\023\031\103\101
++\040\103\145\162\164\040\123\151\147\156\151\156\147\040\101\165
++\164\150\157\162\151\164\171\061\041\060\037\006\011\052\206\110
++\206\367\015\001\011\001\026\022\163\165\160\160\157\162\164\100
++\143\141\143\145\162\164\056\157\162\147\060\036\027\015\060\063
++\060\063\063\060\061\062\062\071\064\071\132\027\015\063\063\060
++\063\062\071\061\062\062\071\064\071\132\060\171\061\020\060\016
++\006\003\125\004\012\023\007\122\157\157\164\040\103\101\061\036
++\060\034\006\003\125\004\013\023\025\150\164\164\160\072\057\057
++\167\167\167\056\143\141\143\145\162\164\056\157\162\147\061\042
++\060\040\006\003\125\004\003\023\031\103\101\040\103\145\162\164
++\040\123\151\147\156\151\156\147\040\101\165\164\150\157\162\151
++\164\171\061\041\060\037\006\011\052\206\110\206\367\015\001\011
++\001\026\022\163\165\160\160\157\162\164\100\143\141\143\145\162
++\164\056\157\162\147\060\202\002\042\060\015\006\011\052\206\110
++\206\367\015\001\001\001\005\000\003\202\002\017\000\060\202\002
++\012\002\202\002\001\000\316\042\300\342\106\175\354\066\050\007
++\120\226\362\240\063\100\214\113\361\073\146\077\061\345\153\002
++\066\333\326\174\366\361\210\217\116\167\066\005\101\225\371\011
++\360\022\317\106\206\163\140\267\156\176\350\300\130\144\256\315
++\260\255\105\027\014\143\372\147\012\350\326\322\277\076\347\230
++\304\360\114\372\340\003\273\065\135\154\041\336\236\040\331\272
++\315\146\062\067\162\372\367\010\365\307\315\130\311\216\347\016
++\136\352\076\376\034\241\024\012\025\154\206\204\133\144\146\052
++\172\251\113\123\171\365\210\242\173\356\057\012\141\053\215\262
++\176\115\126\245\023\354\352\332\222\236\254\104\101\036\130\140
++\145\005\146\370\300\104\275\313\224\367\102\176\013\367\145\150
++\230\121\005\360\363\005\221\004\035\033\027\202\354\310\127\273
++\303\153\172\210\361\260\162\314\045\133\040\221\354\026\002\022
++\217\062\351\027\030\110\320\307\005\056\002\060\102\270\045\234
++\005\153\077\252\072\247\353\123\110\367\350\322\266\007\230\334
++\033\306\064\177\177\311\034\202\172\005\130\053\010\133\363\070
++\242\253\027\135\146\311\230\327\236\020\213\242\322\335\164\232
++\367\161\014\162\140\337\315\157\230\063\235\226\064\166\076\044
++\172\222\260\016\225\036\157\346\240\105\070\107\252\327\101\355
++\112\267\022\366\327\033\203\212\017\056\330\011\266\131\327\252
++\004\377\322\223\175\150\056\335\213\113\253\130\272\057\215\352
++\225\247\240\303\124\211\245\373\333\213\121\042\235\262\303\276
++\021\276\054\221\206\213\226\170\255\040\323\212\057\032\077\306
++\320\121\145\207\041\261\031\001\145\177\105\034\207\365\174\320
++\101\114\117\051\230\041\375\063\037\165\014\004\121\372\031\167
++\333\324\024\034\356\201\303\035\365\230\267\151\006\221\042\335
++\000\120\314\201\061\254\022\007\173\070\332\150\133\346\053\324
++\176\311\137\255\350\353\162\114\363\001\345\113\040\277\232\246
++\127\312\221\000\001\213\241\165\041\067\265\143\015\147\076\106
++\117\160\040\147\316\305\326\131\333\002\340\360\322\313\315\272
++\142\267\220\101\350\335\040\344\051\274\144\051\102\310\042\334
++\170\232\377\103\354\230\033\011\121\113\132\132\302\161\361\304
++\313\163\251\345\241\013\002\003\001\000\001\243\202\001\316\060
++\202\001\312\060\035\006\003\125\035\016\004\026\004\024\026\265
++\062\033\324\307\363\340\346\216\363\275\322\260\072\356\262\071
++\030\321\060\201\243\006\003\125\035\043\004\201\233\060\201\230
++\200\024\026\265\062\033\324\307\363\340\346\216\363\275\322\260
++\072\356\262\071\030\321\241\175\244\173\060\171\061\020\060\016
++\006\003\125\004\012\023\007\122\157\157\164\040\103\101\061\036
++\060\034\006\003\125\004\013\023\025\150\164\164\160\072\057\057
++\167\167\167\056\143\141\143\145\162\164\056\157\162\147\061\042
++\060\040\006\003\125\004\003\023\031\103\101\040\103\145\162\164
++\040\123\151\147\156\151\156\147\040\101\165\164\150\157\162\151
++\164\171\061\041\060\037\006\011\052\206\110\206\367\015\001\011
++\001\026\022\163\165\160\160\157\162\164\100\143\141\143\145\162
++\164\056\157\162\147\202\001\000\060\017\006\003\125\035\023\001
++\001\377\004\005\060\003\001\001\377\060\062\006\003\125\035\037
++\004\053\060\051\060\047\240\045\240\043\206\041\150\164\164\160
++\163\072\057\057\167\167\167\056\143\141\143\145\162\164\056\157
++\162\147\057\162\145\166\157\153\145\056\143\162\154\060\060\006
++\011\140\206\110\001\206\370\102\001\004\004\043\026\041\150\164
++\164\160\163\072\057\057\167\167\167\056\143\141\143\145\162\164
++\056\157\162\147\057\162\145\166\157\153\145\056\143\162\154\060
++\064\006\011\140\206\110\001\206\370\102\001\010\004\047\026\045
++\150\164\164\160\072\057\057\167\167\167\056\143\141\143\145\162
++\164\056\157\162\147\057\151\156\144\145\170\056\160\150\160\077
++\151\144\075\061\060\060\126\006\011\140\206\110\001\206\370\102
++\001\015\004\111\026\107\124\157\040\147\145\164\040\171\157\165
++\162\040\157\167\156\040\143\145\162\164\151\146\151\143\141\164
++\145\040\146\157\162\040\106\122\105\105\040\150\145\141\144\040
++\157\166\145\162\040\164\157\040\150\164\164\160\072\057\057\167
++\167\167\056\143\141\143\145\162\164\056\157\162\147\060\015\006
++\011\052\206\110\206\367\015\001\001\004\005\000\003\202\002\001
++\000\050\307\356\234\202\002\272\134\200\022\312\065\012\035\201
++\157\211\152\231\314\362\150\017\177\247\341\215\130\225\076\275
++\362\006\303\220\132\254\265\140\366\231\103\001\243\210\160\234
++\235\142\235\244\207\257\147\130\015\060\066\073\346\255\110\323
++\313\164\002\206\161\076\342\053\003\150\361\064\142\100\106\073
++\123\352\050\364\254\373\146\225\123\212\115\135\375\073\331\140
++\327\312\171\151\073\261\145\222\246\306\201\202\134\234\315\353
++\115\001\212\245\337\021\125\252\025\312\037\067\300\202\230\160
++\141\333\152\174\226\243\216\056\124\076\117\041\251\220\357\334
++\202\277\334\350\105\255\115\220\163\010\074\224\145\260\004\231
++\166\177\342\274\302\152\025\252\227\004\067\044\330\036\224\116
++\155\016\121\276\326\304\217\312\226\155\367\103\337\350\060\145
++\047\073\173\273\103\103\143\304\103\367\262\354\150\314\341\031
++\216\042\373\230\341\173\132\076\001\067\073\213\010\260\242\363
++\225\116\032\313\233\315\232\261\333\262\160\360\055\112\333\330
++\260\343\157\105\110\063\022\377\376\074\062\052\124\367\304\367
++\212\360\210\043\302\107\376\144\172\161\300\321\036\246\143\260
++\007\176\244\057\323\001\217\334\237\053\266\306\010\251\017\223
++\110\045\374\022\375\237\102\334\363\304\076\366\127\260\327\335
++\151\321\006\167\064\012\113\322\312\240\377\034\306\214\311\026
++\276\304\314\062\067\150\163\137\010\373\121\367\111\123\066\005
++\012\225\002\114\362\171\032\020\366\330\072\165\234\363\035\361
++\242\015\160\147\206\033\263\026\365\057\345\244\353\171\206\371
++\075\013\302\163\013\245\231\254\157\374\147\270\345\057\013\246
++\030\044\215\173\321\110\065\051\030\100\254\223\140\341\226\206
++\120\264\172\131\330\217\041\013\237\317\202\221\306\073\277\153
++\334\007\221\271\227\126\043\252\266\154\224\306\110\006\074\344
++\316\116\252\344\366\057\011\334\123\157\056\374\164\353\072\143
++\231\302\246\254\211\274\247\262\104\240\015\212\020\343\154\362
++\044\313\372\233\237\160\107\056\336\024\213\324\262\040\011\226
++\242\144\361\044\034\334\241\065\234\025\262\324\274\125\056\175
++\006\365\234\016\125\364\132\326\223\332\166\255\045\163\114\305
++\103
++END
++
++# Trust for Certificate "CAcert.org Class 1 Root CA"
++CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
++CKA_TOKEN CK_BBOOL CK_TRUE
++CKA_PRIVATE CK_BBOOL CK_FALSE
++CKA_MODIFIABLE CK_BBOOL CK_FALSE
++CKA_LABEL UTF8 "CAcert.org Class 1 Root CA"
++CKA_CERT_SHA1_HASH MULTILINE_OCTAL
++\023\134\354\066\364\234\270\351\073\032\262\160\315\200\210\106
++\166\316\217\063
++END
++CKA_CERT_MD5_HASH MULTILINE_OCTAL
++\246\033\067\136\071\015\234\066\124\356\275\040\061\106\037\153
++END
++CKA_ISSUER MULTILINE_OCTAL
++\060\171\061\020\060\016\006\003\125\004\012\023\007\122\157\157
++\164\040\103\101\061\036\060\034\006\003\125\004\013\023\025\150
++\164\164\160\072\057\057\167\167\167\056\143\141\143\145\162\164
++\056\157\162\147\061\042\060\040\006\003\125\004\003\023\031\103
++\101\040\103\145\162\164\040\123\151\147\156\151\156\147\040\101
++\165\164\150\157\162\151\164\171\061\041\060\037\006\011\052\206
++\110\206\367\015\001\011\001\026\022\163\165\160\160\157\162\164
++\100\143\141\143\145\162\164\056\157\162\147
++END
++CKA_SERIAL_NUMBER MULTILINE_OCTAL
++\002\001\000
++END
++CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
++CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
++CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
++CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
++
++#
++# Certificate "CAcert.org Class 3 Root CA"
++#
++CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
++CKA_TOKEN CK_BBOOL CK_TRUE
++CKA_PRIVATE CK_BBOOL CK_FALSE
++CKA_MODIFIABLE CK_BBOOL CK_FALSE
++CKA_LABEL UTF8 "CAcert.org Class 3 Root CA"
++CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
++CKA_SUBJECT MULTILINE_OCTAL
++\060\124\061\024\060\022\006\003\125\004\012\023\013\103\101\143
++\145\162\164\040\111\156\143\056\061\036\060\034\006\003\125\004
++\013\023\025\150\164\164\160\072\057\057\167\167\167\056\103\101
++\143\145\162\164\056\157\162\147\061\034\060\032\006\003\125\004
++\003\023\023\103\101\143\145\162\164\040\103\154\141\163\163\040
++\063\040\122\157\157\164
++END
++CKA_ID UTF8 "0"
++CKA_ISSUER MULTILINE_OCTAL
++\060\171\061\020\060\016\006\003\125\004\012\023\007\122\157\157
++\164\040\103\101\061\036\060\034\006\003\125\004\013\023\025\150
++\164\164\160\072\057\057\167\167\167\056\143\141\143\145\162\164
++\056\157\162\147\061\042\060\040\006\003\125\004\003\023\031\103
++\101\040\103\145\162\164\040\123\151\147\156\151\156\147\040\101
++\165\164\150\157\162\151\164\171\061\041\060\037\006\011\052\206
++\110\206\367\015\001\011\001\026\022\163\165\160\160\157\162\164
++\100\143\141\143\145\162\164\056\157\162\147
++END
++CKA_SERIAL_NUMBER MULTILINE_OCTAL
++\002\001\001
++END
++CKA_VALUE MULTILINE_OCTAL
++\060\202\006\010\060\202\003\360\240\003\002\001\002\002\001\001
++\060\015\006\011\052\206\110\206\367\015\001\001\004\005\000\060
++\171\061\020\060\016\006\003\125\004\012\023\007\122\157\157\164
++\040\103\101\061\036\060\034\006\003\125\004\013\023\025\150\164
++\164\160\072\057\057\167\167\167\056\143\141\143\145\162\164\056
++\157\162\147\061\042\060\040\006\003\125\004\003\023\031\103\101
++\040\103\145\162\164\040\123\151\147\156\151\156\147\040\101\165
++\164\150\157\162\151\164\171\061\041\060\037\006\011\052\206\110
++\206\367\015\001\011\001\026\022\163\165\160\160\157\162\164\100
++\143\141\143\145\162\164\056\157\162\147\060\036\027\015\060\065
++\061\060\061\064\060\067\063\066\065\065\132\027\015\063\063\060
++\063\062\070\060\067\063\066\065\065\132\060\124\061\024\060\022
++\006\003\125\004\012\023\013\103\101\143\145\162\164\040\111\156
++\143\056\061\036\060\034\006\003\125\004\013\023\025\150\164\164
++\160\072\057\057\167\167\167\056\103\101\143\145\162\164\056\157
++\162\147\061\034\060\032\006\003\125\004\003\023\023\103\101\143
++\145\162\164\040\103\154\141\163\163\040\063\040\122\157\157\164
++\060\202\002\042\060\015\006\011\052\206\110\206\367\015\001\001
++\001\005\000\003\202\002\017\000\060\202\002\012\002\202\002\001
++\000\253\111\065\021\110\174\322\046\176\123\224\317\103\251\335
++\050\327\102\052\213\363\207\170\031\130\174\017\236\332\211\175
++\341\373\353\162\220\015\164\241\226\144\253\237\240\044\231\163
++\332\342\125\166\307\027\173\365\004\254\106\270\303\276\177\144
++\215\020\154\044\363\141\234\300\362\220\372\121\346\365\151\001
++\143\303\017\126\342\112\102\317\342\104\214\045\050\250\305\171
++\011\175\106\271\212\363\351\363\064\051\010\105\344\034\237\313
++\224\004\034\201\250\024\263\230\145\304\103\354\116\202\215\011
++\321\275\252\133\215\222\320\354\336\220\305\177\012\302\343\353
++\346\061\132\136\164\076\227\063\131\350\303\003\075\140\063\277
++\367\321\157\107\304\315\356\142\203\122\156\056\010\232\244\331
++\025\030\221\246\205\222\107\260\256\110\353\155\267\041\354\205
++\032\150\162\065\253\377\360\020\135\300\364\224\247\152\325\073
++\222\176\114\220\005\176\223\301\054\213\244\216\142\164\025\161
++\156\013\161\003\352\257\025\070\232\324\322\005\162\157\214\371
++\053\353\132\162\045\371\071\106\343\162\033\076\004\303\144\047
++\042\020\052\212\117\130\247\003\255\276\264\056\023\355\135\252
++\110\327\325\175\324\052\173\134\372\106\004\120\344\314\016\102
++\133\214\355\333\362\317\374\226\223\340\333\021\066\124\142\064
++\070\217\014\140\233\073\227\126\070\255\363\322\133\213\240\133
++\352\116\226\270\174\327\325\240\206\160\100\323\221\051\267\242
++\074\255\365\214\273\317\032\222\212\344\064\173\300\330\154\137
++\351\012\302\303\247\040\232\132\337\054\135\122\134\272\107\325
++\233\357\044\050\160\070\040\057\325\177\051\300\262\101\003\150
++\222\314\340\234\314\227\113\105\357\072\020\012\253\160\072\230
++\225\160\255\065\261\352\205\053\244\034\200\041\061\251\256\140
++\172\200\046\110\000\270\001\300\223\143\125\042\221\074\126\347
++\257\333\072\045\363\217\061\124\352\046\213\201\131\371\241\321
++\123\021\305\173\235\003\366\164\021\340\155\261\054\077\054\206
++\221\231\161\232\246\167\213\064\140\321\024\264\054\254\235\257
++\214\020\323\237\304\152\370\157\023\374\163\131\367\146\102\164
++\036\212\343\370\334\322\157\230\234\313\107\230\225\100\005\373
++\351\002\003\001\000\001\243\201\277\060\201\274\060\017\006\003
++\125\035\023\001\001\377\004\005\060\003\001\001\377\060\135\006
++\010\053\006\001\005\005\007\001\001\004\121\060\117\060\043\006
++\010\053\006\001\005\005\007\060\001\206\027\150\164\164\160\072
++\057\057\157\143\163\160\056\103\101\143\145\162\164\056\157\162
++\147\057\060\050\006\010\053\006\001\005\005\007\060\002\206\034
++\150\164\164\160\072\057\057\167\167\167\056\103\101\143\145\162
++\164\056\157\162\147\057\143\141\056\143\162\164\060\112\006\003
++\125\035\040\004\103\060\101\060\077\006\010\053\006\001\004\001
++\201\220\112\060\063\060\061\006\010\053\006\001\005\005\007\002
++\001\026\045\150\164\164\160\072\057\057\167\167\167\056\103\101
++\143\145\162\164\056\157\162\147\057\151\156\144\145\170\056\160
++\150\160\077\151\144\075\061\060\060\015\006\011\052\206\110\206
++\367\015\001\001\004\005\000\003\202\002\001\000\177\010\210\241
++\332\032\120\111\332\211\373\241\010\162\363\212\367\036\304\072
++\264\171\133\040\060\261\105\336\302\135\323\145\151\361\302\135
++\124\124\074\205\137\271\173\102\221\302\231\375\033\121\233\253
++\106\245\241\020\123\236\155\210\254\163\156\054\063\246\360\364
++\236\340\165\301\076\210\105\251\341\146\103\376\126\132\321\172
++\101\170\367\100\332\112\072\361\013\133\245\273\026\006\346\302
++\347\223\271\205\115\227\117\261\036\070\103\200\357\233\015\214
++\357\270\247\140\000\207\127\175\036\104\034\313\043\357\233\074
++\231\235\257\265\051\034\105\171\026\226\115\047\155\361\034\154
++\303\302\125\144\263\274\024\342\363\244\037\036\062\374\047\025
++\005\317\335\056\256\076\202\141\173\360\041\020\030\366\104\352
++\123\071\371\334\320\232\040\340\306\273\340\273\132\117\304\231
++\310\007\275\265\275\242\333\056\142\015\102\064\101\274\377\213
++\212\365\121\042\252\210\060\000\342\260\324\274\276\145\272\325
++\003\127\171\233\350\334\310\115\370\120\355\221\245\122\050\242
++\254\373\066\130\076\351\224\053\221\120\207\033\326\136\326\214
++\314\367\017\020\014\122\116\320\026\141\345\345\012\154\277\027
++\307\162\106\127\234\230\365\154\140\143\172\157\136\271\116\057
++\310\271\271\273\152\205\274\230\015\355\371\076\227\204\064\224
++\256\000\257\241\345\347\222\156\116\275\363\342\331\024\213\134
++\322\353\001\154\240\027\245\055\020\353\234\172\112\275\275\356
++\316\375\355\042\100\253\160\070\210\365\012\207\152\302\253\005
++\140\311\110\005\332\123\301\336\104\167\152\263\363\074\074\355
++\200\274\246\070\112\051\044\137\376\131\073\233\045\172\126\143
++\000\144\271\135\244\142\175\127\066\117\255\203\357\037\222\123
++\240\216\167\127\335\345\141\021\075\043\000\220\114\074\372\243
++\140\223\004\243\257\065\366\016\152\217\117\112\140\247\205\005
++\154\106\241\217\364\307\166\343\241\131\127\367\161\262\304\156
++\024\134\155\155\101\146\337\033\223\261\324\000\303\356\313\317
++\074\075\041\200\251\137\143\145\374\335\340\137\244\364\053\360
++\205\161\101\324\147\045\373\032\261\227\256\326\231\202\023\101
++\322\156\245\033\231\047\200\347\013\251\250\000
++END
++
++# Trust for Certificate "CAcert.org Class 3 Root CA"
++CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
++CKA_TOKEN CK_BBOOL CK_TRUE
++CKA_PRIVATE CK_BBOOL CK_FALSE
++CKA_MODIFIABLE CK_BBOOL CK_FALSE
++CKA_LABEL UTF8 "CAcert.org Class 3 Root CA"
++CKA_CERT_SHA1_HASH MULTILINE_OCTAL
++\333\114\102\151\007\077\351\302\243\175\211\012\134\033\030\304
++\030\116\052\055
++END
++CKA_CERT_MD5_HASH MULTILINE_OCTAL
++\163\077\065\124\035\104\311\351\132\112\357\121\255\003\006\266
++END
++CKA_ISSUER MULTILINE_OCTAL
++\060\171\061\020\060\016\006\003\125\004\012\023\007\122\157\157
++\164\040\103\101\061\036\060\034\006\003\125\004\013\023\025\150
++\164\164\160\072\057\057\167\167\167\056\143\141\143\145\162\164
++\056\157\162\147\061\042\060\040\006\003\125\004\003\023\031\103
++\101\040\103\145\162\164\040\123\151\147\156\151\156\147\040\101
++\165\164\150\157\162\151\164\171\061\041\060\037\006\011\052\206
++\110\206\367\015\001\011\001\026\022\163\165\160\160\157\162\164
++\100\143\141\143\145\162\164\056\157\162\147
++END
++CKA_SERIAL_NUMBER MULTILINE_OCTAL
++\002\001\001
++END
++CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
++CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
++CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
++CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
++
++#
++# Certificate "Software in the Public Interest, Inc. Root CA (2008)"
++#
++CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE
++CKA_TOKEN CK_BBOOL CK_TRUE
++CKA_PRIVATE CK_BBOOL CK_FALSE
++CKA_MODIFIABLE CK_BBOOL CK_FALSE
++CKA_LABEL UTF8 "Software in the Public Interest, Inc. Root CA (2008)"
++CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509
++CKA_SUBJECT MULTILINE_OCTAL
++\060\201\274\061\013\060\011\006\003\125\004\006\023\002\125\123
++\061\020\060\016\006\003\125\004\010\023\007\111\156\144\151\141
++\156\141\061\025\060\023\006\003\125\004\007\023\014\111\156\144
++\151\141\156\141\160\157\154\151\163\061\050\060\046\006\003\125
++\004\012\023\037\123\157\146\164\167\141\162\145\040\151\156\040
++\164\150\145\040\120\165\142\154\151\143\040\111\156\164\145\162
++\145\163\164\061\023\060\021\006\003\125\004\013\023\012\150\157
++\163\164\155\141\163\164\145\162\061\036\060\034\006\003\125\004
++\003\023\025\103\145\162\164\151\146\151\143\141\164\145\040\101
++\165\164\150\157\162\151\164\171\061\045\060\043\006\011\052\206
++\110\206\367\015\001\011\001\026\026\150\157\163\164\155\141\163
++\164\145\162\100\163\160\151\055\151\156\143\056\157\162\147
++END
++CKA_ID UTF8 "0"
++CKA_ISSUER MULTILINE_OCTAL
++\060\201\274\061\013\060\011\006\003\125\004\006\023\002\125\123
++\061\020\060\016\006\003\125\004\010\023\007\111\156\144\151\141
++\156\141\061\025\060\023\006\003\125\004\007\023\014\111\156\144
++\151\141\156\141\160\157\154\151\163\061\050\060\046\006\003\125
++\004\012\023\037\123\157\146\164\167\141\162\145\040\151\156\040
++\164\150\145\040\120\165\142\154\151\143\040\111\156\164\145\162
++\145\163\164\061\023\060\021\006\003\125\004\013\023\012\150\157
++\163\164\155\141\163\164\145\162\061\036\060\034\006\003\125\004
++\003\023\025\103\145\162\164\151\146\151\143\141\164\145\040\101
++\165\164\150\157\162\151\164\171\061\045\060\043\006\011\052\206
++\110\206\367\015\001\011\001\026\026\150\157\163\164\155\141\163
++\164\145\162\100\163\160\151\055\151\156\143\056\157\162\147
++END
++CKA_SERIAL_NUMBER MULTILINE_OCTAL
++\002\011\000\350\216\266\311\370\052\024\050
++END
++CKA_VALUE MULTILINE_OCTAL
++\060\202\010\016\060\202\005\366\240\003\002\001\002\002\011\000
++\350\216\266\311\370\052\024\050\060\015\006\011\052\206\110\206
++\367\015\001\001\005\005\000\060\201\274\061\013\060\011\006\003
++\125\004\006\023\002\125\123\061\020\060\016\006\003\125\004\010
++\023\007\111\156\144\151\141\156\141\061\025\060\023\006\003\125
++\004\007\023\014\111\156\144\151\141\156\141\160\157\154\151\163
++\061\050\060\046\006\003\125\004\012\023\037\123\157\146\164\167
++\141\162\145\040\151\156\040\164\150\145\040\120\165\142\154\151
++\143\040\111\156\164\145\162\145\163\164\061\023\060\021\006\003
++\125\004\013\023\012\150\157\163\164\155\141\163\164\145\162\061
++\036\060\034\006\003\125\004\003\023\025\103\145\162\164\151\146
++\151\143\141\164\145\040\101\165\164\150\157\162\151\164\171\061
++\045\060\043\006\011\052\206\110\206\367\015\001\011\001\026\026
++\150\157\163\164\155\141\163\164\145\162\100\163\160\151\055\151
++\156\143\056\157\162\147\060\036\027\015\060\070\060\065\061\063
++\060\070\060\067\065\066\132\027\015\061\070\060\065\061\061\060
++\070\060\067\065\066\132\060\201\274\061\013\060\011\006\003\125
++\004\006\023\002\125\123\061\020\060\016\006\003\125\004\010\023
++\007\111\156\144\151\141\156\141\061\025\060\023\006\003\125\004
++\007\023\014\111\156\144\151\141\156\141\160\157\154\151\163\061
++\050\060\046\006\003\125\004\012\023\037\123\157\146\164\167\141
++\162\145\040\151\156\040\164\150\145\040\120\165\142\154\151\143
++\040\111\156\164\145\162\145\163\164\061\023\060\021\006\003\125
++\004\013\023\012\150\157\163\164\155\141\163\164\145\162\061\036
++\060\034\006\003\125\004\003\023\025\103\145\162\164\151\146\151
++\143\141\164\145\040\101\165\164\150\157\162\151\164\171\061\045
++\060\043\006\011\052\206\110\206\367\015\001\011\001\026\026\150
++\157\163\164\155\141\163\164\145\162\100\163\160\151\055\151\156
++\143\056\157\162\147\060\202\002\042\060\015\006\011\052\206\110
++\206\367\015\001\001\001\005\000\003\202\002\017\000\060\202\002
++\012\002\202\002\001\000\334\066\346\107\102\302\304\121\165\051
++\207\100\303\330\216\041\006\322\030\116\353\357\040\275\220\074
++\205\020\023\214\051\133\224\143\366\364\055\361\006\102\221\271
++\031\304\102\151\010\277\213\066\105\352\050\005\063\111\110\240
++\047\103\223\065\212\101\330\170\263\360\357\263\156\055\335\321
++\313\175\352\364\165\046\323\076\220\072\356\327\347\054\004\265
++\174\341\365\174\305\116\357\167\275\134\242\223\063\222\316\175
++\201\110\317\153\265\042\054\010\203\375\323\325\317\073\055\375
++\265\111\220\133\366\255\115\023\312\336\323\246\235\123\121\161
++\143\106\370\112\026\134\230\356\055\155\232\026\241\166\220\342
++\140\103\231\326\211\326\154\056\172\230\262\013\003\054\343\172
++\117\307\335\343\314\343\112\152\215\171\122\372\364\301\257\056
++\217\052\010\313\033\051\202\222\162\103\274\316\210\251\252\247
++\212\121\103\125\205\232\067\003\170\223\310\360\275\264\101\310
++\007\102\232\313\065\227\172\212\201\145\336\035\124\010\001\361
++\144\134\267\027\032\121\274\036\303\131\207\166\030\026\230\356
++\277\366\147\201\213\006\065\305\113\155\131\031\307\322\306\110
++\276\156\024\050\203\112\020\234\033\365\157\274\251\216\365\151
++\376\262\301\125\314\347\024\311\371\133\024\123\121\007\352\316
++\075\344\117\050\037\074\141\011\327\063\322\156\247\156\324\307
++\023\011\157\153\135\024\356\235\211\033\245\152\362\366\370\320
++\162\216\352\162\037\057\064\152\051\012\305\012\354\034\100\205
++\022\367\246\245\323\117\255\300\205\214\114\174\163\040\314\123
++\030\361\262\130\114\001\365\277\352\144\325\134\071\305\316\154
++\314\123\132\126\272\101\017\045\337\153\120\266\307\212\240\275
++\002\302\305\073\125\245\262\144\042\204\121\050\126\256\061\356
++\136\373\013\026\115\106\005\221\200\104\355\254\155\360\127\250
++\372\353\141\110\240\313\033\263\037\216\315\305\041\167\003\204
++\036\374\254\243\103\010\143\214\355\371\047\357\264\260\135\147
++\326\117\355\320\213\076\135\133\311\221\275\226\002\204\075\305
++\115\274\102\077\164\375\074\135\254\134\110\066\136\207\061\057
++\030\154\304\150\356\241\213\311\131\320\030\343\000\200\263\124
++\047\056\231\360\025\123\002\003\001\000\001\243\202\002\017\060
++\202\002\013\060\035\006\003\125\035\016\004\026\004\024\064\161
++\321\070\327\025\066\203\107\153\327\067\144\102\073\216\215\122
++\235\253\060\201\361\006\003\125\035\043\004\201\351\060\201\346
++\200\024\064\161\321\070\327\025\066\203\107\153\327\067\144\102
++\073\216\215\122\235\253\241\201\302\244\201\277\060\201\274\061
++\013\060\011\006\003\125\004\006\023\002\125\123\061\020\060\016
++\006\003\125\004\010\023\007\111\156\144\151\141\156\141\061\025
++\060\023\006\003\125\004\007\023\014\111\156\144\151\141\156\141
++\160\157\154\151\163\061\050\060\046\006\003\125\004\012\023\037
++\123\157\146\164\167\141\162\145\040\151\156\040\164\150\145\040
++\120\165\142\154\151\143\040\111\156\164\145\162\145\163\164\061
++\023\060\021\006\003\125\004\013\023\012\150\157\163\164\155\141
++\163\164\145\162\061\036\060\034\006\003\125\004\003\023\025\103
++\145\162\164\151\146\151\143\141\164\145\040\101\165\164\150\157
++\162\151\164\171\061\045\060\043\006\011\052\206\110\206\367\015
++\001\011\001\026\026\150\157\163\164\155\141\163\164\145\162\100
++\163\160\151\055\151\156\143\056\157\162\147\202\011\000\350\216
++\266\311\370\052\024\050\060\017\006\003\125\035\023\001\001\377
++\004\005\060\003\001\001\377\060\021\006\011\140\206\110\001\206
++\370\102\001\001\004\004\003\002\000\007\060\011\006\003\125\035
++\022\004\002\060\000\060\056\006\011\140\206\110\001\206\370\102
++\001\015\004\041\026\037\123\157\146\164\167\141\162\145\040\151
++\156\040\164\150\145\040\120\165\142\154\151\143\040\111\156\164
++\145\162\145\163\164\060\060\006\011\140\206\110\001\206\370\102
++\001\004\004\043\026\041\150\164\164\160\163\072\057\057\143\141
++\056\163\160\151\055\151\156\143\056\157\162\147\057\143\141\055
++\143\162\154\056\160\145\155\060\062\006\011\140\206\110\001\206
++\370\102\001\003\004\045\026\043\150\164\164\160\163\072\057\057
++\143\141\056\163\160\151\055\151\156\143\056\157\162\147\057\143
++\145\162\164\055\143\162\154\056\160\145\155\060\041\006\003\125
++\035\021\004\032\060\030\201\026\150\157\163\164\155\141\163\164
++\145\162\100\163\160\151\055\151\156\143\056\157\162\147\060\016
++\006\003\125\035\017\001\001\377\004\004\003\002\001\006\060\015
++\006\011\052\206\110\206\367\015\001\001\005\005\000\003\202\002
++\001\000\264\315\275\340\271\352\262\003\053\176\062\351\336\162
++\077\311\113\202\136\235\342\257\125\011\242\014\124\350\317\030
++\074\050\040\035\251\273\003\002\057\122\071\042\371\027\317\255
++\147\220\263\003\177\330\025\343\153\176\273\233\126\001\257\065
++\324\332\271\307\147\027\233\324\325\016\067\263\040\101\056\014
++\001\304\133\371\145\076\302\141\350\322\360\152\225\160\303\306
++\157\325\065\244\254\131\162\341\211\337\241\240\235\044\275\051
++\171\351\141\052\331\323\036\311\106\244\010\170\101\222\162\017
++\253\024\165\355\011\360\242\360\134\357\303\012\142\040\267\302
++\050\146\256\114\057\056\217\105\143\046\226\360\356\061\346\213
++\125\233\252\072\371\202\071\035\210\074\342\007\165\032\341\017
++\261\060\274\161\062\322\072\376\372\241\211\363\103\054\326\162
++\304\171\247\025\110\005\300\330\055\162\002\343\313\075\026\152
++\272\311\270\021\020\342\111\205\314\226\107\140\005\045\056\357
++\165\131\063\365\107\031\026\357\332\154\137\007\310\246\120\266
++\035\313\146\064\045\374\146\203\353\305\266\060\101\370\106\104
++\142\250\301\014\124\346\352\114\132\050\346\256\306\267\376\177
++\073\226\250\056\356\307\150\076\335\000\075\051\257\052\143\253
++\137\356\111\052\055\305\334\373\321\306\323\321\227\126\122\206
++\266\224\353\324\140\121\267\374\036\233\314\002\233\324\037\217
++\371\112\217\266\056\050\073\027\314\305\246\005\343\322\323\265
++\306\003\311\341\110\102\233\313\077\344\027\340\376\015\001\225
++\011\272\270\015\161\344\011\160\167\102\330\115\341\102\251\140
++\203\327\027\211\103\322\324\335\247\030\266\253\324\044\045\207
++\265\324\342\374\056\042\151\275\255\150\054\377\162\265\230\252
++\006\234\347\052\152\270\241\223\166\316\260\363\177\234\341\340
++\117\270\330\206\106\245\063\002\054\045\141\067\052\222\310\254
++\201\164\150\143\207\063\166\275\005\177\136\325\325\002\155\275
++\257\377\052\132\252\111\354\230\171\107\123\221\366\016\064\132
++\311\245\306\353\262\343\305\254\266\240\160\065\273\310\121\151
++\320\362\265\242\062\156\274\077\240\067\071\174\161\066\246\005
++\337\014\022\344\026\247\305\326\313\143\243\225\160\077\346\004
++\243\140
++END
++
++# Trust for Certificate "Software in the Public Interest, Inc. Root CA (2008)"
++CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST
++CKA_TOKEN CK_BBOOL CK_TRUE
++CKA_PRIVATE CK_BBOOL CK_FALSE
++CKA_MODIFIABLE CK_BBOOL CK_FALSE
++CKA_LABEL UTF8 "Software in the Public Interest, Inc. Root CA (2008)"
++CKA_CERT_SHA1_HASH MULTILINE_OCTAL
++\257\160\210\103\203\202\002\025\315\141\306\274\354\375\067\044
++\251\220\103\034
++END
++CKA_CERT_MD5_HASH MULTILINE_OCTAL
++\052\107\237\140\273\203\164\157\001\003\327\013\015\366\015\170
++END
++CKA_ISSUER MULTILINE_OCTAL
++\060\201\274\061\013\060\011\006\003\125\004\006\023\002\125\123
++\061\020\060\016\006\003\125\004\010\023\007\111\156\144\151\141
++\156\141\061\025\060\023\006\003\125\004\007\023\014\111\156\144
++\151\141\156\141\160\157\154\151\163\061\050\060\046\006\003\125
++\004\012\023\037\123\157\146\164\167\141\162\145\040\151\156\040
++\164\150\145\040\120\165\142\154\151\143\040\111\156\164\145\162
++\145\163\164\061\023\060\021\006\003\125\004\013\023\012\150\157
++\163\164\155\141\163\164\145\162\061\036\060\034\006\003\125\004
++\003\023\025\103\145\162\164\151\146\151\143\141\164\145\040\101
++\165\164\150\157\162\151\164\171\061\045\060\043\006\011\052\206
++\110\206\367\015\001\011\001\026\026\150\157\163\164\155\141\163
++\164\145\162\100\163\160\151\055\151\156\143\056\157\162\147
++END
++CKA_SERIAL_NUMBER MULTILINE_OCTAL
++\002\011\000\350\216\266\311\370\052\024\050
++END
++CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
++CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
++CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR
++CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE
diff --git a/extra/nss/nss-config.in b/extra/nss/nss-config.in
new file mode 100644
index 000000000..f8f893e71
--- /dev/null
+++ b/extra/nss/nss-config.in
@@ -0,0 +1,145 @@
+#!/bin/sh
+
+prefix=@prefix@
+
+major_version=@MOD_MAJOR_VERSION@
+minor_version=@MOD_MINOR_VERSION@
+patch_version=@MOD_PATCH_VERSION@
+
+usage()
+{
+ cat <<EOF
+Usage: nss-config [OPTIONS] [LIBRARIES]
+Options:
+ [--prefix[=DIR]]
+ [--exec-prefix[=DIR]]
+ [--includedir[=DIR]]
+ [--libdir[=DIR]]
+ [--version]
+ [--libs]
+ [--cflags]
+Dynamic Libraries:
+ nss
+ nssutil
+ ssl
+ smime
+EOF
+ exit $1
+}
+
+if test $# -eq 0; then
+ usage 1 1>&2
+fi
+
+lib_ssl=yes
+lib_smime=yes
+lib_nss=yes
+lib_nssutil=yes
+
+while test $# -gt 0; do
+ case "$1" in
+ -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
+ *) optarg= ;;
+ esac
+
+ case $1 in
+ --prefix=*)
+ prefix=$optarg
+ ;;
+ --prefix)
+ echo_prefix=yes
+ ;;
+ --exec-prefix=*)
+ exec_prefix=$optarg
+ ;;
+ --exec-prefix)
+ echo_exec_prefix=yes
+ ;;
+ --includedir=*)
+ includedir=$optarg
+ ;;
+ --includedir)
+ echo_includedir=yes
+ ;;
+ --libdir=*)
+ libdir=$optarg
+ ;;
+ --libdir)
+ echo_libdir=yes
+ ;;
+ --version)
+ echo ${major_version}.${minor_version}.${patch_version}
+ ;;
+ --cflags)
+ echo_cflags=yes
+ ;;
+ --libs)
+ echo_libs=yes
+ ;;
+ ssl)
+ lib_ssl=yes
+ ;;
+ smime)
+ lib_smime=yes
+ ;;
+ nss)
+ lib_nss=yes
+ ;;
+ nssutil)
+ lib_nssutil=yes
+ ;;
+ *)
+ usage 1 1>&2
+ ;;
+ esac
+ shift
+done
+
+# Set variables that may be dependent upon other variables
+if test -z "$exec_prefix"; then
+ exec_prefix=`pkg-config --variable=exec_prefix nss`
+fi
+if test -z "$includedir"; then
+ includedir=`pkg-config --variable=includedir nss`
+fi
+if test -z "$libdir"; then
+ libdir=`pkg-config --variable=libdir nss`
+fi
+
+if test "$echo_prefix" = "yes"; then
+ echo $prefix
+fi
+
+if test "$echo_exec_prefix" = "yes"; then
+ echo $exec_prefix
+fi
+
+if test "$echo_includedir" = "yes"; then
+ echo $includedir
+fi
+
+if test "$echo_libdir" = "yes"; then
+ echo $libdir
+fi
+
+if test "$echo_cflags" = "yes"; then
+ echo -I$includedir
+fi
+
+if test "$echo_libs" = "yes"; then
+ libdirs="-Wl,-rpath-link,$libdir -L$libdir"
+ if test -n "$lib_ssl"; then
+ libdirs="$libdirs -lssl${major_version}"
+ fi
+ if test -n "$lib_smime"; then
+ libdirs="$libdirs -lsmime${major_version}"
+ fi
+ if test -n "$lib_nss"; then
+ libdirs="$libdirs -lnss${major_version}"
+ fi
+ if test -n "$lib_nssutil"; then
+ libdirs="$libdirs -lnssutil${major_version}"
+ fi
+ echo $libdirs
+fi
+
diff --git a/extra/nss/nss-no-rpath.patch b/extra/nss/nss-no-rpath.patch
new file mode 100644
index 000000000..35ea57315
--- /dev/null
+++ b/extra/nss/nss-no-rpath.patch
@@ -0,0 +1,14 @@
+--- ./mozilla/security/nss/cmd/platlibs.mk.withrpath 2007-02-19 07:17:06.000000000 +0100
++++ ./mozilla/security/nss/cmd/platlibs.mk 2007-02-19 07:18:07.000000000 +0100
+@@ -52,9 +52,9 @@
+
+ ifeq ($(OS_ARCH), Linux)
+ ifeq ($(USE_64), 1)
+-EXTRA_SHARED_LIBS += -Wl,-rpath,'$$ORIGIN/../lib64:$$ORIGIN/../lib'
++#EXTRA_SHARED_LIBS += -Wl,-rpath,'$$ORIGIN/../lib64:$$ORIGIN/../lib'
+ else
+-EXTRA_SHARED_LIBS += -Wl,-rpath,'$$ORIGIN/../lib'
++#EXTRA_SHARED_LIBS += -Wl,-rpath,'$$ORIGIN/../lib'
+ endif
+ endif
+
diff --git a/extra/nss/nss.pc.in b/extra/nss/nss.pc.in
new file mode 100644
index 000000000..d47b9e146
--- /dev/null
+++ b/extra/nss/nss.pc.in
@@ -0,0 +1,11 @@
+prefix=%prefix%
+exec_prefix=%exec_prefix%
+libdir=%libdir%
+includedir=%includedir%
+
+Name: NSS
+Description: Network Security Services
+Version: %NSS_VERSION%
+Requires: nspr >= %NSPR_VERSION%
+Libs: -lssl3 -lsmime3 -lnss3 -lnssutil3
+Cflags: -I${includedir}
diff --git a/extra/nss/ssl-renegotiate-transitional.patch b/extra/nss/ssl-renegotiate-transitional.patch
new file mode 100644
index 000000000..f457c5551
--- /dev/null
+++ b/extra/nss/ssl-renegotiate-transitional.patch
@@ -0,0 +1,21 @@
+Enable transitional scheme for ssl renegotiation:
+
+(from mozilla/security/nss/lib/ssl/ssl.h)
+Disallow unsafe renegotiation in server sockets only, but allow clients
+to continue to renegotiate with vulnerable servers.
+This value should only be used during the transition period when few
+servers have been upgraded.
+
+diff --git a/mozilla/security/nss/lib/ssl/sslsock.c b/mozilla/security/nss/lib/ssl/sslsock.c
+index f1d1921..c074360 100644
+--- a/mozilla/security/nss/lib/ssl/sslsock.c
++++ b/mozilla/security/nss/lib/ssl/sslsock.c
+@@ -181,7 +181,7 @@ static sslOptions ssl_defaults = {
+ PR_FALSE, /* noLocks */
+ PR_FALSE, /* enableSessionTickets */
+ PR_FALSE, /* enableDeflate */
+- 2, /* enableRenegotiation (default: requires extension) */
++ 3, /* enableRenegotiation (default: transitional) */
+ PR_FALSE, /* requireSafeNegotiation */
+ };
+
diff --git a/extra/nss_ldap/PKGBUILD b/extra/nss_ldap/PKGBUILD
new file mode 100644
index 000000000..299f8413e
--- /dev/null
+++ b/extra/nss_ldap/PKGBUILD
@@ -0,0 +1,33 @@
+# $Id: PKGBUILD 109106 2011-02-06 10:18:06Z andyrtr $
+# Maintainer: Paul Mattal <paul@archlinux.org>
+# Contributor: Comete <la_comete@tiscali.fr>
+
+pkgname=nss_ldap
+pkgver=265
+pkgrel=1
+pkgdesc="The nss_ldap module provides the means for Linux and Solaris workstations to resolve the entities defined in RFC 2307 from LDAP directories."
+arch=(i686 x86_64)
+url="http://www.padl.com/OSS/nss_ldap.html"
+license=('LGPL')
+depends=('libldap>=2.4.18' 'heimdal>=1.2.1')
+backup=("etc/nss_ldap.conf")
+source=(http://www.padl.com/download/${pkgname}-${pkgver}.tar.gz)
+md5sums=('c1cb02d1a85538cf16bca6f6a562abe4')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure \
+ --with-ldap-conf-file=/etc/nss_ldap.conf \
+ --with-ldap=openldap \
+ --libdir=/lib \
+ --mandir=/usr/share/man \
+ --enable-schema-mapping \
+ --enable-rfc2307bis \
+ --enable-configurable-krb5-ccname-gssapi
+ env PATH=`pwd`:"$PATH" make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/ntfs-3g/25-ntfs-config-write-policy.fdi b/extra/ntfs-3g/25-ntfs-config-write-policy.fdi
new file mode 100644
index 000000000..54195d8b3
--- /dev/null
+++ b/extra/ntfs-3g/25-ntfs-config-write-policy.fdi
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<deviceinfo version="0.2">
+ <device>
+ <match key="volume.fstype" string="ntfs">
+ <append key="volume.fstype.alternative" type="copy_property">volume.fstype</append>
+ <merge key="volume.mount.ntfs.valid_options" type="copy_property">volume.mount.valid_options</merge>
+ <merge key="volume.unmount.ntfs.valid_options" type="copy_property">volume.unmount.valid_options</merge>
+ <merge key="volume.fstype" type="string">ntfs-3g</merge>
+ <merge key="volume.mount.valid_options" type="strlist">ro</merge>
+ <append key="volume.mount.valid_options" type="strlist">atime</append>
+ <append key="volume.mount.valid_options" type="strlist">noatime</append>
+ <append key="volume.mount.valid_options" type="strlist">relatime</append>
+ <append key="volume.mount.valid_options" type="strlist">fake_rw</append>
+ <append key="volume.mount.valid_options" type="strlist">no_def_opts</append>
+ <append key="volume.mount.valid_options" type="strlist">default_permissions</append>
+ <append key="volume.mount.valid_options" type="strlist">umask=</append>
+ <append key="volume.mount.valid_options" type="strlist">fmask=</append>
+ <append key="volume.mount.valid_options" type="strlist">dmask=</append>
+ <append key="volume.mount.valid_options" type="strlist">uid=</append>
+ <append key="volume.mount.valid_options" type="strlist">gid=</append>
+ <append key="volume.mount.valid_options" type="strlist">show_sys_files</append>
+ <append key="volume.mount.valid_options" type="strlist">silent</append>
+ <append key="volume.mount.valid_options" type="strlist">force</append>
+ <append key="volume.mount.valid_options" type="strlist">remove_hiberfile</append>
+ <append key="volume.mount.valid_options" type="strlist">locale=</append>
+ <append key="volume.mount.valid_options" type="strlist">streams_interface=</append>
+ <append key="volume.mount.valid_options" type="strlist">debug</append>
+ <append key="volume.mount.valid_options" type="strlist">no_detatch</append>
+ <append key="volume.mount.valid_options" type="strlist">sync</append>
+ <append key="volume.mount.valid_options" type="strlist">dirsync</append>
+ <append key="volume.mount.valid_options" type="strlist">nodiratime</append>
+ <append key="volume.mount.valid_options" type="strlist">noexec</append>
+ <append key="volume.mount.valid_options" type="strlist">quiet</append>
+ <append key="volume.mount.valid_options" type="strlist">remount</append>
+ <append key="volume.mount.valid_options" type="strlist">exec</append>
+ <append key="volume.mount.valid_options" type="strlist">recover</append>
+ <append key="volume.mount.valid_options" type="strlist">norecover</append>
+ <merge key="volume.unmount.valid_options" type="strlist">lazy</merge>
+ <merge key="volume.policy.mount_filesystem" type="string">ntfs-3g</merge>
+ </match>
+ </device>
+</deviceinfo>
diff --git a/extra/ntfs-3g/PKGBUILD b/extra/ntfs-3g/PKGBUILD
new file mode 100644
index 000000000..f651864bd
--- /dev/null
+++ b/extra/ntfs-3g/PKGBUILD
@@ -0,0 +1,32 @@
+# $Id: PKGBUILD 108992 2011-02-05 10:41:54Z ronald $
+# Maintainer: Ronald van Haren <ronald.archlinux.org>
+# Contributor: Thomas Bächler <thomas.archlinux.org>
+
+pkgname=ntfs-3g
+pkgver=2011.1.15
+pkgrel=1
+pkgdesc="Stable read and write NTFS driver"
+url="http://www.tuxera.com"
+arch=('i686' 'x86_64')
+license=('GPL2')
+depends=('glibc' 'fuse')
+makedepends=('pkgconfig')
+options=('!libtool')
+source=(http://www.tuxera.com/opensource/${pkgname}-${pkgver}.tgz
+ 25-ntfs-config-write-policy.fdi)
+sha1sums=('d7cf0c5e8730568f5fa8802869d6fe8cdd4a0213'
+ '200029f2999a2c284fd30ae25734abf6459c3501')
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ac_cv_path_LDCONFIG=/bin/true ./configure --prefix=/usr \
+ --with-fuse=external --disable-static
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+ ln -s /bin/ntfs-3g "${pkgdir}/sbin/mount.ntfs"
+ install -m755 -d "${pkgdir}/usr/share/hal/fdi/policy/10osvendor"
+ install -m644 "${srcdir}/25-ntfs-config-write-policy.fdi" "${pkgdir}/usr/share/hal/fdi/policy/10osvendor/"
+}
diff --git a/extra/ntfsprogs/PKGBUILD b/extra/ntfsprogs/PKGBUILD
new file mode 100644
index 000000000..56bf76566
--- /dev/null
+++ b/extra/ntfsprogs/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 48342 2009-08-01 14:46:45Z jgc $
+# Maintainer: Ronald van Haren <ronald.archlinux.org>
+
+pkgname=ntfsprogs
+pkgver=2.0.0
+pkgrel=4
+depends=('glibc' 'fuse' 'util-linux-ng>=2.16')
+makedepends=('pkgconfig')
+pkgdesc="NTFS filesystem utilities"
+arch=(i686 x86_64)
+license=('GPL')
+source=(http://downloads.sourceforge.net/sourceforge/linux-ntfs/${pkgname}-${pkgver}.tar.gz)
+url="http://www.linux-ntfs.org/"
+options=(!libtool)
+md5sums=('2c402b647bb7aeb1d3f8ce1cc354fd68')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --disable-gnome-vfs \
+ --mandir=/usr/share/man || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
+
diff --git a/extra/ntp/PKGBUILD b/extra/ntp/PKGBUILD
new file mode 100644
index 000000000..69669c721
--- /dev/null
+++ b/extra/ntp/PKGBUILD
@@ -0,0 +1,78 @@
+# $Id: PKGBUILD 117473 2011-04-03 17:50:26Z andrea $
+# Maintainer: kevin <kevin@archlinux.org>
+
+pkgname=ntp
+pkgver=4.2.6.p3
+_realver=4.2.6p3
+pkgrel=3
+pkgdesc="NTP (Network Time Protocol) tries to keep servers in sync"
+arch=(i686 x86_64)
+license=('custom')
+url="http://www.ntp.org/"
+depends=('openssl' 'readline' 'libcap')
+makedepends=('perl-html-parser')
+backup=('etc/ntp.conf' 'etc/conf.d/ntp-client.conf')
+options=('!emptydirs')
+changelog=changelog
+source=(http://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-${_realver}.tar.gz
+ ntp-4.2.4-html2man.patch
+ ntp.conf
+ ntp-client.conf
+ ntpd
+ ntpdate)
+md5sums=('59876a9009b098ff59767ee45a88ebd2' '1b04e888717bb31479a6087632981723'
+ '398a7f270f6ae083f47f86eb8b557a75' '58997d6cf4846d80e35a01b855376a33'
+ 'bf20804e75656609e808ca21b53ea4aa' '99b49d763e5866f4f81c48d922c80b93')
+
+build() {
+ cd "$srcdir/$pkgname-$_realver"
+ # fix man page generation
+ patch -Np1 -i ../ntp-4.2.4-html2man.patch
+ # configure
+ export LDFLAGS="${LDFLAGS//-Wl,--as-needed}"
+ # 4.2.6p3: aclocal too old, regenerate
+ rm -f aclocal.m4
+ libtoolize --copy --force
+ ac_cv_header_dns_sd_h=0 ./configure --prefix=/usr \
+ --mandir=/usr/share/man \
+ --enable-linux-caps
+ # build
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$_realver"
+
+ # install
+ make DESTDIR="$pkgdir" install
+
+ # install conf files
+ install -d "$pkgdir/usr/share/ntp"
+ install -D -m644 conf/* "${pkgdir}/usr/share/ntp"
+
+ # install launch scripts
+ install -d "$pkgdir/etc/rc.d"
+ install -D -m755 ${srcdir}/{ntpd,ntpdate} "$pkgdir/etc/rc.d"
+
+ # install man pages
+ cd html
+ ../scripts/html2man
+ sed -i 's/^[\t\ ]*$//;/./,/^$/!d' man/man*/*.[58]
+ install -d "$pkgdir"/usr/share/man/man{5,8}
+ install -m644 man/man5/* "$pkgdir/usr/share/man/man5/"
+ install -m644 man/man8/* "$pkgdir/usr/share/man/man8/"
+ mv "$pkgdir/usr/share/man/man8/ntpd.8" "$pkgdir/usr/share/man/man8/ntp-ntpd.8"
+ cd ..
+
+ # install sample configs
+ install -D -m644 "$srcdir/ntp.conf" "$pkgdir/etc/ntp.conf"
+ install -D -m644 "$srcdir/ntp-client.conf" \
+ "$pkgdir/etc/conf.d/ntp-client.conf"
+
+ # create /var/lib/ntp
+ install -d "$pkgdir/var/lib/ntp"
+ touch "$pkgdir/var/lib/ntp/.placeholder"
+
+ install -Dm644 "$srcdir/$pkgname-$_realver/COPYRIGHT" \
+ "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
+}
diff --git a/extra/ntp/changelog b/extra/ntp/changelog
new file mode 100644
index 000000000..528a07826
--- /dev/null
+++ b/extra/ntp/changelog
@@ -0,0 +1,25 @@
+2011-04-03 andrea <andrea@archlinux.org>
+
+ * ntp 4.2.6p3-3
+ - Use 'ntpd -p' to get the PID in ntpd
+ - Don't run the ntp client in background in ntpdate
+
+2011-03-28 andrea <andrea@archlinux.org>
+
+ * ntp 4.2.6p3-2
+ - Improved daemon scripts
+
+2010-10-16 kevin <kevin@archlinux.org>
+
+ * ntp 4.2.6p3
+ - Implemented FS#18469, replace ntpdate with ntpd -q
+ - Removed LIBS
+ - Removed old IPv6 and nano patch
+
+2010-10-16 kevin <kevin@archlinux.org>
+
+ * ntp 4.2.6p2
+ - Added changelog
+ - Set LIBS to use librt since configure doesn't set it
+ - Convert PKGBUILD to build()/package() format
+ - removed "|| return 1"
diff --git a/extra/ntp/ntp-4.2.4-html2man.patch b/extra/ntp/ntp-4.2.4-html2man.patch
new file mode 100644
index 000000000..333d4529a
--- /dev/null
+++ b/extra/ntp/ntp-4.2.4-html2man.patch
@@ -0,0 +1,183 @@
+--- ntp-4.2.4/scripts/html2man.in.html2man 2006-06-06 22:17:10.000000000 +0200
++++ ntp-4.2.4/scripts/html2man.in 2007-01-08 12:47:31.000000000 +0100
+@@ -23,10 +23,10 @@
+ 'ntpq' => ['ntpq', 8, 'ntpd(8), ntpdc(8)'],
+ 'ntpdate' => ['ntpdate', 8, 'ntpd(8)'],
+ 'ntpdc' => ['ntpdc', 8, 'ntpd(8)'],
+- 'ntptime' => ['ntpdtime', 8, 'ntpd(8), ntpdate(8)'],
++ 'ntptime' => ['ntptime', 8, 'ntpd(8), ntpdate(8)'],
+ 'ntptrace' => ['ntptrace', 8, 'ntpd(8)'],
+ 'keygen' => ['ntp-keygen', 8, 'ntpd(8), ntp_auth(5)'],
+- 'confopt' => ['ntp.conf', 5, 'ntpd(8)'],
++ 'confopt' => ['ntp.conf', 5, 'ntpd(8), ntp_auth(5), ntp_mon(5), ntp_acc(5), ntp_clock(5), ntp_misc(5)'],
+ 'authopt' => ['ntp_auth', 5, 'ntp.conf(5), ntpd(8)'],
+ 'monopt' => ['ntp_mon', 5, 'ntp.conf(5)'],
+ 'accopt' => ['ntp_acc', 5, 'ntp.conf(5)'],
+@@ -34,17 +34,8 @@
+ 'miscopt' => ['ntp_misc', 5, 'ntp.conf(5)']);
+
+ # Disclaimer to go in SEE ALSO section of the man page
+-$seealso_disclaimer = 'These man pages are automatically hacked from the main NTP ' .
+- 'documentation pages, which are maintained in HTML format. These files are ' .
+- 'included in the NTP source distribution. If you installed NTP from a binary ' .
+- 'package, or it came pre-installed on your system, chances are the documentation ' .
+- 'was also included in the usual place for your system. The HTML files are more ' .
+- 'correct and complete than these man pages, which are provided for your reference ' .
+- 'only.';
+-
+-# Disclaimer to go right at the top
+-$top_disclaimer = 'This file was automatically generated from HTML source, and may be ' .
+- 'incorrect. See the SEE ALSO section at the end of this file for more info';
++$seealso_disclaimer = "Primary source of documentation: /usr/share/doc/ntp-*\n\n" .
++ "This file was automatically generated from HTML source.\n";
+
+ mkdir $MANDIR, 0777;
+ mkdir "$MANDIR/man8", 0777;
+@@ -64,7 +55,8 @@
+ $fileinfo = $manfiles{$filename};
+
+ $p = HTML::TokeParser->new("$filename.html") || die "Can't open $filename.html: $!";
+- open(MANOUT, ">$MANDIR/man$fileinfo->[1]/$fileinfo->[0].$fileinfo->[1]")
++ $fileout = "$MANDIR/man$fileinfo->[1]/$fileinfo->[0].$fileinfo->[1]";
++ open(MANOUT, ">$fileout")
+ || die "Can't open: $!";
+
+ $p->get_tag("title");
+@@ -73,7 +65,6 @@
+
+ # Setup man header
+ print MANOUT ".TH " . $fileinfo->[0] . " " . $fileinfo->[1] . "\n";
+- print MANOUT ".UC 4\n";
+ print MANOUT ".SH NAME\n";
+ $pat = $fileinfo->[0];
+ if ($name =~ /$pat/) {
+@@ -81,10 +72,12 @@
+ # Add the manpage name, if not in the HTML title already
+ print MANOUT "$fileinfo->[0] - ";
+ }
+- print MANOUT "$name\n\n";
+-
+- print MANOUT "$top_disclaimer\n";
++ print MANOUT "$name\n.SH \\ \n\n";
+
++ @fontstack = ();
++ $deflevel = 0;
++ $pre = 0;
++ $ignore = 0;
+ # Now start scanning. We basically print everything after translating some tags.
+ # $token->[0] has "T", "S", "E" for Text, Start, End
+ # $token->[1] has the tag name, or text (for "T" case)
+@@ -92,19 +85,37 @@
+ while (my $token = $p->get_token) {
+ if($token->[0] eq "T") {
+ my $text = $token->[1];
+- if($tag) {
+- $text =~ s/^[\n ]*//;
+- $text =~ s/[\n ]*$/ /;
++ if (!$pre) {
++ if($tag) {
++ $text =~ s/^[\n\t ]*//;
++ }
++ $text =~ s/^[\n\t ][\n\t ]+$//;
++ $text =~ s/[\n\t ]+/ /g;
++ $text =~ s/&nbsp\;/ /g;
++ $text =~ s/&gt\;/>/g;
++ $text =~ s/&lt\;/</g;
++ $text =~ s/&quot\;/"/g;
++ $text =~ s/&amp\;/&/g;
++ $text =~ s/^\./\\[char46]/;
+ }
+- $text =~ s/&nbsp\;/ /g;
+- $text =~ s/^\./\\./;
+ print MANOUT "$text";
+ $tag = 0;
+ }
+ if($token->[0] eq "S") {
+ if($token->[1] eq "h4") {
+ my $text = uc($p->get_trimmed_text("/h4"));
+- print MANOUT ".SH $text\n";
++ # ignore these two sections in ntpd.html
++ if ($filename eq "ntpd" &&
++ ($text eq "FILES" || $text eq "CONFIGURATION OPTIONS")) {
++ $ignore = 1;
++ close(MANOUT);
++ open(MANOUT, ">/dev/null");
++ } elsif ($ignore) {
++ $ignore = 0;
++ close(MANOUT);
++ open(MANOUT, ">>$fileout");
++ }
++ print MANOUT "\n\n.SH $text\n";
+ }
+ if($token->[1] eq "tt") {
+ push @fontstack, "tt";
+@@ -118,22 +129,30 @@
+ my $text = $p->get_trimmed_text("/address");
+ print MANOUT "\n.SH AUTHOR\n$text\n";
+ }
+- if($token->[1] eq "dt") {
+- $tmp = $deflevel-4;
+- print MANOUT "\n.RS $tmp\n";
++ if($token->[1] eq "dt" || $token->[1] eq "br" && $deflevel > 0) {
++ print MANOUT "\n.TP 8\n";
+ $tag = 1;
+ }
+ if($token->[1] eq "dd") {
+- print MANOUT "\n.RS $deflevel\n";
++ print MANOUT "\n";
+ $tag = 1;
+ }
+ if($token->[1] eq "dl") {
+- $deflevel+=4;
++ $deflevel+=1;
++ if ($deflevel > 0) {
++ print MANOUT "\n.RS ", $deflevel > 1 ? 8 : 0;
++ }
++ }
++ if($token->[1] eq "p") {
++ print MANOUT "\n";
++ }
++ if($token->[1] eq "pre") {
++ print MANOUT "\n.nf";
++ $pre = 1;
+ }
+ }
+ elsif($token->[0] eq "E") {
+- if($token->[1] eq "dd") {
+- print MANOUT "\n.RE\n";
++ if($token->[1] eq "h4") {
+ $tag = 1;
+ }
+ if($token->[1] eq "tt") {
+@@ -157,15 +176,27 @@
+ print MANOUT "$fontswitch";
+ }
+ if($token->[1] eq "dl") {
+- $deflevel-=4;
++ if ($deflevel > 0) {
++ print MANOUT "\n.RE";
++ }
++ print MANOUT "\n";
++ $deflevel-=1;
+ }
+- if($token->[1] eq "dt") {
+- print MANOUT "\n.RE";
++ if($token->[1] eq "p") {
++ print MANOUT "\n";
+ $tag = 1;
+ }
++ if($token->[1] eq "pre") {
++ print MANOUT "\n.fi";
++ $pre = 0;
++ }
+ }
+ }
+- print MANOUT ".SH SEE ALSO\n\n";
++ if ($ignore) {
++ close(MANOUT);
++ open(MANOUT, ">>$fileout");
++ }
++ print MANOUT "\n.SH SEE ALSO\n\n";
+ print MANOUT "$fileinfo->[2]\n\n";
+ print MANOUT "$seealso_disclaimer\n";
+ close(MANOUT);
diff --git a/extra/ntp/ntp-client.conf b/extra/ntp/ntp-client.conf
new file mode 100644
index 000000000..e728db579
--- /dev/null
+++ b/extra/ntp/ntp-client.conf
@@ -0,0 +1,5 @@
+# client options for "ntpd -q" - ntpdate equivalent
+NTP_CLIENT_OPTION="-g"
+
+# arguments passed to ntpd when started
+NTPD_ARGS="-g"
diff --git a/extra/ntp/ntp.conf b/extra/ntp/ntp.conf
new file mode 100644
index 000000000..7f888e4b1
--- /dev/null
+++ b/extra/ntp/ntp.conf
@@ -0,0 +1,52 @@
+# NOTES:
+# - you should only have to update the server line below
+# - if you start getting lines like 'restrict' and 'fudge'
+# and you didnt add them, AND you run dhcpcd on your
+# network interfaces, be sure to add '-Y -N' to the
+# dhcpcd_ethX variables in /etc/conf.d/net
+
+# Name of the servers ntpd should sync with
+# Please respect the access policy as stated by the responsible person.
+#server ntp.example.tld iburst
+
+server pool.ntp.org
+
+##
+# A list of available servers can be found here:
+# http://www.pool.ntp.org/
+# http://www.pool.ntp.org/#use
+# A good way to get servers for your machine is:
+# netselect -s 3 pool.ntp.org
+##
+
+#server ntplocal.example.com prefer
+#server timeserver.example.org
+
+# Warning: Using default NTP settings will leave your NTP
+# server accessible to all hosts on the Internet.
+
+# A default deny all (including localhost) policy
+# To use this define restrictions for all servers and clients
+#restrict default ignore
+#restrict -6 default ignore
+
+# A more open policy, allow access but deny changing the configuration
+restrict default nomodify nopeer
+#restrict -6 default nomodify nopeer
+
+# Allow localhost
+restrict 127.0.0.1
+#restrict -6 ::1
+
+
+# To allow machines within your network to synchronize
+# their clocks with your server, but ensure they are
+# not allowed to configure the server or used as peers
+# to synchronize against, uncomment this line.
+#
+#restrict 192.168.0.0 mask 255.255.255.0 nomodify nopeer notrap
+
+
+# you should not need to modify the following paths
+driftfile /var/lib/ntp/ntp.drift
+
diff --git a/extra/ntp/ntpd b/extra/ntp/ntpd
new file mode 100755
index 000000000..825efc189
--- /dev/null
+++ b/extra/ntp/ntpd
@@ -0,0 +1,52 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+. /etc/conf.d/ntp-client.conf
+
+PIDFILE="/var/run/ntpd/ntpd.pid"
+PID=$(cat $PIDFILE 2> /dev/null)
+
+case "$1" in
+ start)
+ stat_busy "Starting NTP Daemon"
+ [ ! -d /var/run/ntpd ] && install -d /var/run/ntpd &>/dev/null
+ if [ -z "$PID" ]; then
+ /usr/bin/ntpd $NTPD_ARGS -p /var/run/ntpd/ntpd.pid &>/dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ exit 1
+ else
+ add_daemon ntpd
+ stat_done
+ fi
+ else
+ stat_fail
+ exit 1
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping NTP Daemon"
+ if [ -n "$PID" ]; then
+ kill $PID &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ exit 1
+ else
+ rm $PIDFILE &>/dev/null
+ rm_daemon ntpd
+ stat_done
+ fi
+ else
+ stat_fail
+ exit 1
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
diff --git a/extra/ntp/ntpdate b/extra/ntp/ntpdate
new file mode 100755
index 000000000..99508f4fd
--- /dev/null
+++ b/extra/ntp/ntpdate
@@ -0,0 +1,31 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+. /etc/conf.d/ntp-client.conf
+
+case "$1" in
+ start)
+ stat_busy "Starting NTP Client"
+ /usr/bin/ntpd -q $NTP_CLIENT_OPTION &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ exit 1
+ else
+ add_daemon ntpdate
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping NTP Client"
+ rm_daemon ntpdate
+ stat_done
+ ;;
+ restart)
+ $0 stop
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+
diff --git a/extra/ntrack/PKGBUILD b/extra/ntrack/PKGBUILD
new file mode 100644
index 000000000..bdf60630d
--- /dev/null
+++ b/extra/ntrack/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 117025 2011-03-27 19:11:16Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+
+pkgname=ntrack
+pkgver=013
+pkgrel=1
+pkgdesc="A network connectivity tracking library"
+arch=('i686' 'x86_64')
+url="http://launchpad.net/ntrack/"
+license=('LGPL')
+depends=('qt' 'libnl' 'gcc-libs')
+makedepends=('python2')
+optdepends=('python2')
+source=("http://launchpad.net/${pkgname}/main/${pkgver}/+download/${pkgname}-${pkgver}.tar.gz")
+md5sums=('90596b924a108f8b4eea52239ba64369')
+options=('!libtool')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --localstatedir=/var
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/numlockx/PKGBUILD b/extra/numlockx/PKGBUILD
new file mode 100644
index 000000000..c30fdd0d6
--- /dev/null
+++ b/extra/numlockx/PKGBUILD
@@ -0,0 +1,33 @@
+# $Id: PKGBUILD 75639 2010-04-02 01:32:53Z dgriffiths $
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+# Contributor: Travis Willard <travisw@wmpub.ca>
+# Contributor: Thayer Williams <thayer@archlinux.org>
+# Maintainer: Daniel J Griffiths <ghost1227@archlinux.us>
+
+pkgname=numlockx
+pkgver=1.2
+pkgrel=1
+pkgdesc="Turns on the numlock key in X11"
+arch=('i686' 'x86_64')
+license=('MIT')
+url="http://ktown.kde.org/~seli/numlockx/"
+depends=('libxtst')
+source=(http://ktown.kde.org/~seli/${pkgname}/${pkgname}-${pkgver}.tar.gz)
+md5sums=('be9109370447eae23f6f3f8527bb1a67')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ ./configure --prefix=/usr x_includes=/usr/include/X11 \
+ x_libraries=/usr/lib || return 1
+ make || return 1
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ make prefix=${pkgdir}/usr install || return 1
+
+ # Install the custom MIT license
+ install -D LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE || return 1
+}
diff --git a/extra/nx-common/NXproto.h.64bit.diff b/extra/nx-common/NXproto.h.64bit.diff
new file mode 100644
index 000000000..ac326ebcd
--- /dev/null
+++ b/extra/nx-common/NXproto.h.64bit.diff
@@ -0,0 +1,66 @@
+--- nxcomp.old/NXproto.h 2006-06-19 19:55:56.000000000 +0200
++++ nxcomp/NXproto.h 2007-02-12 18:17:41.000000000 +0100
+@@ -26,6 +26,30 @@
+ #include <X11/Xmd.h>
+ #include <X11/Xproto.h>
+
++/*
++ Copied from Xproto.h
++ */
++
++/* For the purpose of the structure definitions in this file,
++we must redefine the following types in terms of Xmd.h's types, which may
++include bit fields. All of these are #undef'd at the end of this file,
++restoring the definitions in X.h. */
++
++#define Window CARD32
++#define Drawable CARD32
++#define Font CARD32
++#define Pixmap CARD32
++#define Cursor CARD32
++#define Colormap CARD32
++#define GContext CARD32
++#define Atom CARD32
++#define VisualID CARD32
++#define Time CARD32
++#define KeyCode CARD8
++#define KeySym CARD32
++
++/* End copied from Xproto.h */
++
+ #define sz_xNXGetControlParametersReq 4
+ #define sz_xNXGetCleanupParametersReq 4
+ #define sz_xNXGetImageParametersReq 4
+@@ -343,9 +367,9 @@
+ CARD8 dstDepth;
+ CARD32 srcLength B32;
+ CARD32 dstLength B32;
+- INT16 srcX B16, srcY B16;
++ CARD16 srcX B16, srcY B16;
+ CARD16 srcWidth B16, srcHeight B16;
+- INT16 dstX B16, dstY B16;
++ CARD16 dstX B16, dstY B16;
+ CARD16 dstWidth B16, dstHeight B16;
+ } xNXPutPackedImageReq;
+
+@@ -463,4 +487,20 @@
+ }
+ #endif
+
++/* Copied from Xproto.h */
++
++/* restore these definitions back to the typedefs in X.h */
++#undef Window
++#undef Drawable
++#undef Font
++#undef Pixmap
++#undef Cursor
++#undef Colormap
++#undef GContext
++#undef Atom
++#undef VisualID
++#undef Time
++#undef KeyCode
++#undef KeySym
++
+ #endif /* NXproto_H */
diff --git a/extra/nx-common/PKGBUILD b/extra/nx-common/PKGBUILD
new file mode 100644
index 000000000..ae282c3c4
--- /dev/null
+++ b/extra/nx-common/PKGBUILD
@@ -0,0 +1,58 @@
+# $Id: PKGBUILD 75689 2010-04-02 17:16:35Z andyrtr $
+# Maintainer Tobias Powalowski <tpowa@archlinux.org>
+# Contributed: eliott <eliott@solarblue.net>, Andre Naumann <anaumann@SPARCed.org>
+pkgname=nx-common
+pkgver=3.4.0
+pkgrel=4
+pkgdesc="NoMachine NX common package for client and server"
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://nomachine.com/"
+depends=('libjpeg>=8' 'libpng>=1.4.0' 'openssl>=1.0.0' 'gcc-libs' 'audiofile' 'alsa-lib' 'bash')
+source=(\
+#Compression libs and proxy sources
+http://64.34.161.181/download/$pkgver/sources/nxcomp-$pkgver-7.tar.gz \
+http://64.34.161.181/download/$pkgver/sources/nxssh-$pkgver-2.tar.gz \
+# ESD Support
+http://64.34.161.181/download/$pkgver/sources/nxesd-$pkgver-2.tar.gz
+# 64bit fixes
+NXproto.h.64bit.diff
+nx-gcc44.patch)
+options=(!libtool)
+md5sums=('cba926f2b855231a8fc3e0dabff52855'
+ '18b81d850223ea84de244f8a9509c4b1'
+ '65d55f2a86baa59343432261cabd52ec'
+ '58341ba70dfab92ff38570071fbbf88a'
+ 'c805442f1500d8d6de15ec224f63277e')
+
+build() {
+ cd ${srcdir}
+# patch -Np1 -i ${srcdir}/nx-gcc44.patch
+
+ mkdir -p ${pkgdir}/opt/NX/bin
+ mkdir -p ${pkgdir}/opt/NX/lib
+
+ cd ${srcdir}/nxcomp
+ if [ "$CARCH" = "x86_64" ]; then
+ patch -Np1 -i ../NXproto.h.64bit.diff || return 1
+ fi
+
+ ./configure --prefix=/opt/NX
+ make || return 1
+ cp -a libXcomp.so.* ${pkgdir}/opt/NX/lib
+ cd ${pkgdir}/opt/NX/lib
+ ln -s libXcomp.so.1 libXcomp.so
+
+ cd ${srcdir}/nxssh
+ ./configure --prefix=/opt/NX
+ make || return 1
+ install -D -m755 nxssh ${pkgdir}/opt/NX/bin/nxssh
+
+ cd ${srcdir}/nxesd
+ ./configure --prefix=/opt/NX
+ make || return 1
+ make DESTDIR=${pkgdir} install || return 1
+ # fix libxcomp linking
+ cd ${pkgdir}/opt/NX/lib
+ ln -s libXcomp.so.3 libXcomp.so.1
+}
diff --git a/extra/nx-common/nx-gcc44.patch b/extra/nx-common/nx-gcc44.patch
new file mode 100644
index 000000000..5b7b7e1f6
--- /dev/null
+++ b/extra/nx-common/nx-gcc44.patch
@@ -0,0 +1,12 @@
+--- nx-3.3.0/nxcomp/Loop.cpp.orig 2009-05-17 12:22:19.000000000 +0200
++++ nx-3.3.0/nxcomp/Loop.cpp 2009-05-17 12:22:43.000000000 +0200
+@@ -10979,7 +10979,7 @@
+ packMethod == PACK_LOSSLESS ||
+ packMethod == PACK_ADAPTIVE)
+ {
+- char *dash = rindex(opt, '-');
++ const char *dash = rindex(opt, '-');
+
+ if (dash != NULL && strlen(dash) == 2 &&
+ *(dash + 1) >= '0' && *(dash + 1) <= '9')
+
diff --git a/extra/nxserver/NXproto.h.64bit.diff b/extra/nxserver/NXproto.h.64bit.diff
new file mode 100644
index 000000000..ac326ebcd
--- /dev/null
+++ b/extra/nxserver/NXproto.h.64bit.diff
@@ -0,0 +1,66 @@
+--- nxcomp.old/NXproto.h 2006-06-19 19:55:56.000000000 +0200
++++ nxcomp/NXproto.h 2007-02-12 18:17:41.000000000 +0100
+@@ -26,6 +26,30 @@
+ #include <X11/Xmd.h>
+ #include <X11/Xproto.h>
+
++/*
++ Copied from Xproto.h
++ */
++
++/* For the purpose of the structure definitions in this file,
++we must redefine the following types in terms of Xmd.h's types, which may
++include bit fields. All of these are #undef'd at the end of this file,
++restoring the definitions in X.h. */
++
++#define Window CARD32
++#define Drawable CARD32
++#define Font CARD32
++#define Pixmap CARD32
++#define Cursor CARD32
++#define Colormap CARD32
++#define GContext CARD32
++#define Atom CARD32
++#define VisualID CARD32
++#define Time CARD32
++#define KeyCode CARD8
++#define KeySym CARD32
++
++/* End copied from Xproto.h */
++
+ #define sz_xNXGetControlParametersReq 4
+ #define sz_xNXGetCleanupParametersReq 4
+ #define sz_xNXGetImageParametersReq 4
+@@ -343,9 +367,9 @@
+ CARD8 dstDepth;
+ CARD32 srcLength B32;
+ CARD32 dstLength B32;
+- INT16 srcX B16, srcY B16;
++ CARD16 srcX B16, srcY B16;
+ CARD16 srcWidth B16, srcHeight B16;
+- INT16 dstX B16, dstY B16;
++ CARD16 dstX B16, dstY B16;
+ CARD16 dstWidth B16, dstHeight B16;
+ } xNXPutPackedImageReq;
+
+@@ -463,4 +487,20 @@
+ }
+ #endif
+
++/* Copied from Xproto.h */
++
++/* restore these definitions back to the typedefs in X.h */
++#undef Window
++#undef Drawable
++#undef Font
++#undef Pixmap
++#undef Cursor
++#undef Colormap
++#undef GContext
++#undef Atom
++#undef VisualID
++#undef Time
++#undef KeyCode
++#undef KeySym
++
+ #endif /* NXproto_H */
diff --git a/extra/nxserver/PKGBUILD b/extra/nxserver/PKGBUILD
new file mode 100644
index 000000000..5609baf0b
--- /dev/null
+++ b/extra/nxserver/PKGBUILD
@@ -0,0 +1,96 @@
+# $Id: PKGBUILD 109665 2011-02-11 18:01:54Z andyrtr $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+# Contributed: eliott <eliott@solarblue.net>, Andre Naumann <anaumann@SPARCed.org>
+
+pkgname=nxserver
+pkgver=3.4.0
+pkgrel=8
+pkgdesc="NoMachine NX is the next-generation X compression and roundtrip suppression scheme."
+arch=(i686 x86_64)
+url="http://nomachine.com/"
+license=('GPL')
+depends=("nx-common>=$pkgver" 'libxaw' 'libxrender' 'libxp' 'gcc-libs' 'libjpeg>=8'
+ 'libxpm' 'libpng>=1.4.0' 'libxdamage' 'libxrandr' 'libxcomposite' 'libxtst' 'freetype2'
+ 'xorg-sessreg')
+makedepends=('imake')
+source=(
+#X11 support programs and libraries
+http://64.34.161.181/download/$pkgver/sources/nx-X11-$pkgver-4.tar.gz
+http://64.34.161.181/download/$pkgver/sources/nxwin-$pkgver-7.tar.gz
+http://64.34.161.181/download/$pkgver/sources/nxauth-$pkgver-3.tar.gz
+http://64.34.161.181/download/$pkgver/sources/nxcomp-$pkgver-7.tar.gz
+#X11 Agent sources
+http://64.34.161.181/download/$pkgver/sources/nxagent-$pkgver-16.tar.gz
+http://64.34.161.181/download/$pkgver/sources/nxcompsh-$pkgver-2.tar.gz
+#Compression libs and proxy sources
+http://64.34.161.181/download/$pkgver/sources/nxproxy-$pkgver-2.tar.gz
+http://64.34.161.181/download/$pkgver/sources/nxcompext-$pkgver-1.tar.gz
+http://64.34.161.181/download/$pkgver/sources/nxcompshad-$pkgver-3.tar.gz
+#64bit fixes
+NXproto.h.64bit.diff
+# gcc 43 fix
+nxcompsh-gcc43.patch
+nxcompshad-gcc43.patch
+nx-gcc44.patch)
+options=(!libtool)
+md5sums=('38a84d4521a41e5ff988a84181ddcaf5'
+ 'f45d183360067ede979c18fc964824ab'
+ 'bfb758edd51271b31aa6b902557fa0cc'
+ 'cba926f2b855231a8fc3e0dabff52855'
+ 'ec82183635a6ef627cb19d53d4a004ce'
+ 'f94501249ad7d4453524f88ef0cfb1ff'
+ '95ce93520d463a3d18cdd5d19c321e85'
+ '605a8e2a136f89477f0059a0d2af4582'
+ '15deba68e12e13b524a723b49e7ec813'
+ '58341ba70dfab92ff38570071fbbf88a'
+ 'b6c279654dac421fc3dd1a27d66ff53c'
+ '01cea8bc5997ae2c3790cbcb7d624c86'
+ 'c805442f1500d8d6de15ec224f63277e')
+
+build() {
+ cd ${srcdir}
+ mkdir -p ${pkgdir}/opt/NX/bin
+ mkdir -p ${pkgdir}/opt/NX/lib
+ patch -Np0 -i ${srcdir}/nxcompsh-gcc43.patch || return 1
+ patch -Np0 -i ${srcdir}/nxcompshad-gcc43.patch || return 1
+# patch -Np1 -i ../nx-gcc44.patch || return 1
+
+ cd ${srcdir}/nxcomp
+ if [ "$CARCH" = "x86_64" ]; then
+ patch -Np1 -i ../NXproto.h.64bit.diff || return 1
+ fi
+ ./configure --prefix=/opt/NX
+ make || return 1
+
+ cd ${srcdir}/nxcompshad
+ ./configure --prefix=/opt/NX
+ make || return 1
+ cp -a libXcompshad.so* ${pkgdir}/opt/NX/lib
+
+ cd ${srcdir}/nxcompsh
+ ./configure --prefix=/opt/NX
+ make || return 1
+ cp -a libXcompsh.so* ${pkgdir}/opt/NX/lib
+
+ cd ${srcdir}/nxproxy
+ ./configure --prefix=/opt/NX
+ make || return 1
+ make prefix=${pkgdir}/opt/NX install || return 1
+
+ cd ${srcdir}/nx-X11
+ make World || return 1
+ cp -a lib/X11/libX11.so* ${pkgdir}/opt/NX/lib
+ cp -a lib/Xext/libXext.so* ${pkgdir}/opt/NX/lib
+ cp -a lib/Xrender/libXrender.so* ${pkgdir}/opt/NX/lib
+ install -D -m755 programs/Xserver/nxagent ${pkgdir}/opt/NX/bin/nxagent
+ install -D -m755 programs/nxauth/nxauth ${pkgdir}/opt/NX/bin/nxauth
+
+ cd ${srcdir}/nxcompext
+ ./configure --prefix=/opt/NX
+ make || return 1
+ cp -a libXcompext.so* ${pkgdir}/opt/NX/lib
+
+ # fix libXcompext linking
+ cd ${pkgdir}/opt/NX/lib
+ ln -s libXcompext.so.3 libXcompext.so.1
+}
diff --git a/extra/nxserver/nx-gcc44.patch b/extra/nxserver/nx-gcc44.patch
new file mode 100644
index 000000000..5b7b7e1f6
--- /dev/null
+++ b/extra/nxserver/nx-gcc44.patch
@@ -0,0 +1,12 @@
+--- nx-3.3.0/nxcomp/Loop.cpp.orig 2009-05-17 12:22:19.000000000 +0200
++++ nx-3.3.0/nxcomp/Loop.cpp 2009-05-17 12:22:43.000000000 +0200
+@@ -10979,7 +10979,7 @@
+ packMethod == PACK_LOSSLESS ||
+ packMethod == PACK_ADAPTIVE)
+ {
+- char *dash = rindex(opt, '-');
++ const char *dash = rindex(opt, '-');
+
+ if (dash != NULL && strlen(dash) == 2 &&
+ *(dash + 1) >= '0' && *(dash + 1) <= '9')
+
diff --git a/extra/nxserver/nxcompsh-gcc43.patch b/extra/nxserver/nxcompsh-gcc43.patch
new file mode 100644
index 000000000..681a0dab5
--- /dev/null
+++ b/extra/nxserver/nxcompsh-gcc43.patch
@@ -0,0 +1,19 @@
+--- nxcompsh/Misc.h~ 2007-06-04 13:39:49.000000000 +0200
++++ nxcompsh/Misc.h 2008-04-12 12:46:24.000000000 +0200
+@@ -18,10 +18,12 @@
+ #ifndef Misc_H
+ #define Misc_H
+
+-#include <iostream.h>
++#include <iostream>
+
+-#include <errno.h>
+-#include <string.h>
++#include <cerrno>
++#include <cstring>
++
++using namespace std;
+
+ //
+ // Error handling macros.
+
diff --git a/extra/nxserver/nxcompshad-gcc43.patch b/extra/nxserver/nxcompshad-gcc43.patch
new file mode 100644
index 000000000..274c36635
--- /dev/null
+++ b/extra/nxserver/nxcompshad-gcc43.patch
@@ -0,0 +1,19 @@
+--- nxcompshad/Misc.h~ 2007-06-04 13:39:49.000000000 +0200
++++ nxcompshad/Misc.h 2008-04-12 12:46:24.000000000 +0200
+@@ -18,10 +18,12 @@
+ #ifndef Misc_H
+ #define Misc_H
+
+-#include <iostream>
++#include <iostream>
+
+-#include <errno.h>
+-#include <string.h>
++#include <cerrno>
++#include <cstring>
++
++using namespace std;
+
+ //
+ // Error handling macros.
+
diff --git a/extra/obconf/PKGBUILD b/extra/obconf/PKGBUILD
new file mode 100644
index 000000000..be385bdde
--- /dev/null
+++ b/extra/obconf/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 38529 2009-05-08 21:31:17Z jgc $
+# Maintainer: tobias <tobias@archlinux.org>
+# Contributor: Tobias Kieslich <tobias@justdreams.de>
+
+pkgname=obconf
+pkgver=2.0.3
+pkgrel=3
+pkgdesc="A gtk2 based configuration tool for the Openbox windowmanager"
+arch=(i686 x86_64)
+license=('GPL')
+url="http://tr.openmonkey.com/pages/obconf/"
+depends=('openbox>=3.4.5' 'gtk2>=2.16.1' 'libglade' 'desktop-file-utils')
+install=${pkgname}.install
+source=(http://icculus.org/openbox/${pkgname}/${pkgname}-${pkgver}.tar.gz \
+ http://icculus.org/openbox/mw/images/8/80/Obconf-72.png)
+md5sums=('b22e273721851dedad72acbc77eefb68' '340ae4732e76731d2838473541eb8d4e')
+
+build() {
+ cd ${startdir}/src/${pkgname}-${pkgver}
+ ./configure --prefix=/usr || return 1
+ make || return 1
+ sed -i 's/=openbox/=obconf/' obconf.desktop || return 1
+ make DESTDIR=${startdir}/pkg install || return 1
+ install -Dm644 ../Obconf-72.png ${startdir}/pkg/usr/share/pixmaps/obconf.png || return 1
+}
diff --git a/extra/obconf/obconf.install b/extra/obconf/obconf.install
new file mode 100644
index 000000000..5264d8979
--- /dev/null
+++ b/extra/obconf/obconf.install
@@ -0,0 +1,15 @@
+# arg 1: the new package version
+post_install() {
+ update-desktop-database -q /usr/share/applications
+ update-mime-database /usr/share/mime 1> /dev/null
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+# arg 1: the old package version
+post_remove() {
+ update-desktop-database -q
+ update-mime-database /usr/share/mime 1> /dev/null
+}
diff --git a/extra/obex-data-server/PKGBUILD b/extra/obex-data-server/PKGBUILD
new file mode 100644
index 000000000..9431d307f
--- /dev/null
+++ b/extra/obex-data-server/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 101379 2010-11-29 00:46:39Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Geoffroy Carrier <geoffroy@archlinux.org>
+# Contributor: Roman Kyrylych <roman@archlinux.org>
+# Contributor: Keerthi <keerthi.linux@gmail.com>
+
+pkgname=obex-data-server
+pkgver=0.4.5
+pkgrel=3
+pkgdesc="A D-Bus service providing high-level OBEX client and server side functionality"
+arch=('i686' 'x86_64')
+url="http://wiki.muiline.com/obex-data-server"
+license=('GPL')
+depends=('dbus-glib' 'openobex' 'imagemagick')
+source=("http://tadas.dailyda.com/software/${pkgname}-${pkgver}.tar.gz")
+md5sums=('8b11e7527c1e3a36a2a9a0c52816ec7b')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/obexd/PKGBUILD b/extra/obexd/PKGBUILD
new file mode 100644
index 000000000..10c2a4a46
--- /dev/null
+++ b/extra/obexd/PKGBUILD
@@ -0,0 +1,47 @@
+# $Id: PKGBUILD 106996 2011-01-20 12:27:07Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Geoffroy Carrier <geoffroy@archlinux.org>
+
+pkgbase=obexd
+pkgname=('obexd-client' 'obexd-server')
+pkgver=0.40
+pkgrel=1
+url="http://www.bluez.org/"
+arch=('i686' 'x86_64')
+license=('GPL2')
+makedepends=('openobex' 'libical')
+source=("http://www.kernel.org/pub/linux/bluetooth/${pkgbase}-${pkgver}.tar.bz2")
+md5sums=('f303592b7664b246965c1d6e9361c919')
+
+build() {
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ ./configure --prefix=/usr \
+ --libexecdir=/usr/lib/obexd
+ make
+}
+
+package_obexd-client() {
+ pkgdesc="D-Bus service providing high-level OBEX client side functionality"
+ depends=('openobex' 'glib2')
+ provides=("obexd=${pkgver}")
+ replaces=('obexd')
+ conflicts=('obexd')
+
+ cd "${srcdir}/${pkgbase}-${pkgver}/client"
+ install -m755 -d "${pkgdir}/usr/lib/obexd"
+ install -m755 -d "${pkgdir}/usr/share/dbus-1/services"
+ install -m755 obex-client "${pkgdir}/usr/lib/obexd/"
+ install -m644 obex-client.service "${pkgdir}/usr/share/dbus-1/services/"
+}
+
+package_obexd-server() {
+ pkgdesc="D-Bus service providing high-level OBEX server side functionality"
+ depends=('openobex' 'glib2' 'libical')
+ conflicts=('obex-data-server')
+
+ cd "${srcdir}/${pkgbase}-${pkgver}/src"
+ install -m755 -d "${pkgdir}/usr/lib/obexd"
+ install -m755 -d "${pkgdir}/usr/share/dbus-1/services"
+ install -m755 obexd "${pkgdir}/usr/lib/obexd/"
+ install -m644 obexd.service "${pkgdir}/usr/share/dbus-1/services/"
+}
diff --git a/extra/obexftp/PKGBUILD b/extra/obexftp/PKGBUILD
new file mode 100644
index 000000000..e6da6fd9d
--- /dev/null
+++ b/extra/obexftp/PKGBUILD
@@ -0,0 +1,32 @@
+# $Id: PKGBUILD 89833 2010-09-04 10:07:43Z remy $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Alessio 'mOLOk' Bolognino <themolok@gmail.com>
+
+pkgname=obexftp
+pkgver=0.23
+pkgrel=4
+pkgdesc="A tool for transfer files to/from any OBEX enabled device"
+arch=('i686' 'x86_64')
+url="http://dev.zuckschwerdt.org/openobex/wiki/ObexFtp"
+license=('GPL')
+depends=('openobex' 'python2')
+makedepends=('pkgconfig')
+options=('!libtool')
+source=(http://downloads.sourceforge.net/openobex/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('f20762061b68bc921e80be4aebc349eb')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ ./configure --prefix=/usr \
+ --disable-ruby --enable-python || return 1
+ make
+}
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install || return 1
+
+ # remove nasty files
+ # mv ${pkgdir}/usr/lib/perl5/site_perl/5.10.0 ${pkgdir}/usr/lib/perl5/site_perl/current
+ rm -f ${pkgdir}/usr/lib/perl5/core_perl/perllocal.pod
+}
diff --git a/extra/ocaml/PKGBUILD b/extra/ocaml/PKGBUILD
new file mode 100644
index 000000000..7b0cd86d4
--- /dev/null
+++ b/extra/ocaml/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 88099 2010-08-19 13:05:24Z tpowa $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=ocaml
+pkgver=3.12.0
+pkgrel=1
+pkgdesc="A functional language with OO extensions"
+arch=('i686' 'x86_64')
+license=('LGPL2' 'custom: QPL-1.0')
+url="http://caml.inria.fr/"
+depends=('gdbm')
+makedepends=('tk' 'ncurses>=5.6-7' 'libx11')
+optdepends=('ncurses: advanced ncurses features' 'tk: advanced tk features')
+source=(http://caml.inria.fr/distrib/ocaml-3.12/$pkgname-$pkgver.tar.gz)
+options=('!makeflags' '!emptydirs')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ ./configure -prefix /usr
+ make world.opt || return 1
+ make PREFIX=$pkgdir/usr MANDIR=$pkgdir/usr/share/man install || return 1
+
+# Save >10MB with this one, makepkg only strips debug symbols.
+ find ${startdir}/pkg/usr/lib -type f -name '*.so.*' -exec strip --strip-unneeded {} \;
+
+# install license
+install -D -m 644 $startdir/src/$pkgname-$pkgver/LICENSE $startdir/pkg/usr/share/licenses/ocaml/LICENSE
+}
+md5sums=('3ba7cc65123c3579f14e7c726d3ee782')
diff --git a/extra/ocfs2-tools/PKGBUILD b/extra/ocfs2-tools/PKGBUILD
new file mode 100644
index 000000000..9db43e1e9
--- /dev/null
+++ b/extra/ocfs2-tools/PKGBUILD
@@ -0,0 +1,35 @@
+# $Id: PKGBUILD 90997 2010-09-20 13:54:14Z remy $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+pkgname=ocfs2-tools
+pkgver=1.4.3
+pkgrel=2
+pkgdesc="Oracle Cluster File System 2 utilities"
+arch=(i686 x86_64)
+url="http://oss.oracle.com/projects/ocfs2-tools/"
+depends=('e2fsprogs' 'glib2' 'readline>=6.0.00')
+license=('GPL2')
+source=(http://oss.oracle.com/projects/ocfs2-tools/dist/files/source/v1.4/$pkgname-$pkgver.tar.gz
+gcc45-ftbfs.patch)
+options=(!makeflags)
+optdepends=('python2: for using ocfs2console')
+md5sums=('7d8895ea41999ce8f468e2bc7dc55ddc'
+ '5dba18ca5596b1de0f2eeb30f5ed1656')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ sed -i 's#/usr/bin/python#/usr/bin/python2#' ocfs2console/ocfs2console
+ # Fix build with gcc 4.5
+ # http://svn.debian.org/viewsvn/collab-maint?view=rev&revision=15814
+ patch -p1 -i ${srcdir}/gcc45-ftbfs.patch
+ ./configure --prefix=/usr --mandir=/usr/share/man
+ make LDFLAGS=-L/usr/lib
+}
+
+package() {
+ cd $srcdir/$pkgname-$pkgver
+ make DESTDIR=$pkgdir install
+ install -m 755 -D $srcdir/$pkgname-$pkgver/vendor/common/ocfs2.init \
+ $pkgdir/etc/rc.d/ocfs2
+ install -m 755 -D $srcdir/$pkgname-$pkgver/vendor/common/o2cb.init \
+ $pkgdir/etc/rc.d/o2cb
+}
diff --git a/extra/ocfs2-tools/gcc45-ftbfs.patch b/extra/ocfs2-tools/gcc45-ftbfs.patch
new file mode 100644
index 000000000..0db24f49e
--- /dev/null
+++ b/extra/ocfs2-tools/gcc45-ftbfs.patch
@@ -0,0 +1,21 @@
+diff -urN ocfs2-tools-1.4.3.orig//mount.ocfs2/mount.ocfs2.c ocfs2-tools-1.4.3/mount.ocfs2/mount.ocfs2.c
+--- ocfs2-tools-1.4.3.orig//mount.ocfs2/mount.ocfs2.c 2009-04-14 00:10:40.000000000 +0200
++++ ocfs2-tools-1.4.3/mount.ocfs2/mount.ocfs2.c 2010-03-24 07:23:45.000000000 +0100
+@@ -261,7 +261,7 @@
+ char *extra = NULL;
+ int dev_ro = 0;
+ char *hbstr = NULL;
+- char stackstr[strlen(OCFS2_CLUSTER_STACK_ARG) + OCFS2_STACK_LABEL_LEN + 1] = "";
++ char stackstr[strlen(OCFS2_CLUSTER_STACK_ARG) + OCFS2_STACK_LABEL_LEN + 1];
+ ocfs2_filesys *fs = NULL;
+ struct o2cb_cluster_desc cluster;
+ struct o2cb_region_desc desc;
+@@ -269,6 +269,8 @@
+ int hb_started = 0;
+ struct stat statbuf;
+
++ stackstr[0] = '\0';
++
+ initialize_ocfs_error_table();
+ initialize_o2dl_error_table();
+ initialize_o2cb_error_table();
diff --git a/extra/ocrad/PKGBUILD b/extra/ocrad/PKGBUILD
new file mode 100644
index 000000000..52fb00e05
--- /dev/null
+++ b/extra/ocrad/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 106659 2011-01-17 20:26:09Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+
+pkgname=ocrad
+pkgver=0.21
+pkgrel=1
+pkgdesc="An Optical Character Recognition program"
+arch=('i686' 'x86_64')
+url="http://www.gnu.org/software/ocrad/ocrad.html"
+license=('GPL3')
+depends=('gcc-libs' 'texinfo')
+install=ocrad.install
+source=(http://ftp.gnu.org/gnu/ocrad/ocrad-$pkgver.tar.gz)
+md5sums=('83f9eae9d808f9d86c181538d3f64aed')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ ./configure --prefix=/usr \
+ CXXFLAGS="${CXXFLAGS}" \
+ LDFLAGS="${LDFLAGS}" || return 1
+ make || return 1
+
+ make DESTDIR="${pkgdir}" install install-man || return 1
+ rm $pkgdir/usr/share/info/dir
+ gzip $pkgdir/usr/share/info/*
+}
diff --git a/extra/ocrad/ocrad.install b/extra/ocrad/ocrad.install
new file mode 100644
index 000000000..eb599d04e
--- /dev/null
+++ b/extra/ocrad/ocrad.install
@@ -0,0 +1,20 @@
+infodir=/usr/share/info
+filelist=(ocrad.info.gz)
+
+post_install() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info --delete $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
diff --git a/extra/octave/PKGBUILD b/extra/octave/PKGBUILD
new file mode 100644
index 000000000..f7a6000e6
--- /dev/null
+++ b/extra/octave/PKGBUILD
@@ -0,0 +1,49 @@
+# $Id: PKGBUILD 103149 2010-12-15 21:12:17Z ronald $
+# Maintainer: Ronald van Haren <ronald.archlinux.org>
+# Contributor : shining <shiningxc.at.gmail.com>
+# Contributor : cyberdune <cyberdune@gmail.com>
+
+pkgname=octave
+pkgver=3.2.4
+pkgrel=2
+pkgdesc="A high-level language, primarily intended for numerical computations."
+arch=('i686' 'x86_64')
+url="http://www.octave.org"
+license=('GPL')
+depends=('fftw' 'pcre' 'curl' 'lapack' 'libx11' 'graphicsmagick' 'glpk' 'hdf5' 'gcc-libs')
+makedepends=('texinfo' 'graphicsmagick' 'gcc-fortran' 'umfpack')
+optdepends=('texinfo: for help-support in octave'
+ 'gnuplot: alternative plotting'
+ 'umfpack: LU decomposition of some large sparse matrices')
+source=("ftp://ftp.octave.org/pub/octave/octave-$pkgver.tar.bz2"
+ 'octave-3.2.0_as_needed.patch' 'octave-3.2.0_parallel_make.patch' 'imread.patch')
+options=('!emptydirs')
+install=octave.install
+md5sums=('608196657f4fa010420227b77333bb71'
+ '33c8886cd908ace40f8b60334df1c34f'
+ 'd59d783a8d7e8d8306caed4b2b8671a4'
+ '72d33ba1a862244f970cf259923815d9')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ # gentoo patches
+ patch -Np1 -i ${srcdir}/octave-3.2.0_as_needed.patch
+ patch -Np1 -i ${srcdir}/octave-3.2.0_parallel_make.patch
+ patch -Np0 -i ${srcdir}/imread.patch
+
+ # http://www.nabble.com/Random-rounding-errors-td16010966.html
+ FFLAGS="-O -ffloat-store" \
+
+ ./configure --prefix=/usr --libexecdir=/usr/lib \
+ --enable-shared --disable-static
+
+ make
+}
+
+package(){
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ make DESTDIR="${pkgdir}" install
+
+}
diff --git a/extra/octave/imread.patch b/extra/octave/imread.patch
new file mode 100644
index 000000000..4a7b73ea0
--- /dev/null
+++ b/extra/octave/imread.patch
@@ -0,0 +1,29 @@
+--- src/DLD-FUNCTIONS/__magick_read__.cc.orig 2010-03-06 08:05:25.000000000 +0000
++++ src/DLD-FUNCTIONS/__magick_read__.cc 2009-08-25 09:26:01.000000000 +0100
+@@ -30,6 +30,7 @@
+ #include "defun-dld.h"
+ #include "error.h"
+ #include "ov-struct.h"
++#include "oct-env.h"
+
+ #ifdef HAVE_MAGICK
+
+@@ -359,6 +358,18 @@
+
+ #ifdef HAVE_MAGICK
+
++ static bool initialized = false;
++
++ if (! initialized)
++ {
++ std::string program_name = octave_env::get_program_invocation_name ();
++
++ Magick::InitializeMagick (program_name.c_str ());
++
++ initialized = true;
++ }
++
++
+ if (args.length () > 2 || args.length () < 1 || ! args(0).is_string ()
+ || nargout > 3)
+ {
diff --git a/extra/octave/octave-3.2.0_as_needed.patch b/extra/octave/octave-3.2.0_as_needed.patch
new file mode 100644
index 000000000..bce3e01a3
--- /dev/null
+++ b/extra/octave/octave-3.2.0_as_needed.patch
@@ -0,0 +1,11 @@
+diff -Naur octave-3.2.0/liboctave/Makefile.in octave-3.2.0.new/liboctave/Makefile.in
+--- octave-3.2.0/liboctave/Makefile.in 2009-05-25 02:04:59.000000000 -0400
++++ octave-3.2.0.new/liboctave/Makefile.in 2009-07-10 10:32:09.000000000 -0400
+@@ -35,6 +35,7 @@
+ DLL_CXXDEFS = @OCTAVE_DLL_DEFS@
+
+ LINK_DEPS = \
++ -lpthread \
+ -L../libcruft -L. $(RLD_FLAG) \
+ $(LIBCRUFT) $(CHOLMOD_LIBS) $(UMFPACK_LIBS) $(AMD_LIBS) \
+ $(CAMD_LIBS) $(COLAMD_LIBS) $(CCOLAMD_LIBS) $(CXSPARSE_LIBS) \
diff --git a/extra/octave/octave-3.2.0_parallel_make.patch b/extra/octave/octave-3.2.0_parallel_make.patch
new file mode 100644
index 000000000..bcc2f7d29
--- /dev/null
+++ b/extra/octave/octave-3.2.0_parallel_make.patch
@@ -0,0 +1,12 @@
+diff -Naur octave-3.2.0/doc/Makefile.in octave-3.2.0.new/doc/Makefile.in
+--- octave-3.2.0/doc/Makefile.in 2009-06-03 07:55:40.000000000 -0400
++++ octave-3.2.0.new/doc/Makefile.in 2009-07-07 18:20:14.000000000 -0400
+@@ -30,6 +30,8 @@
+ all: conf.texi $(SUBDIRS)
+ .PHONY: all
+
++$(SUBDIRS): conf.texi
++
+ conf.texi: conf.texi.in $(TOPDIR)/Makeconf
+ @$(do-subst-texinfo-vals)
+
diff --git a/extra/octave/octave.install b/extra/octave/octave.install
new file mode 100644
index 000000000..8ee77c430
--- /dev/null
+++ b/extra/octave/octave.install
@@ -0,0 +1,18 @@
+info_dir=/usr/share/info
+info_files=(octave.info octave.info-1 octave.info-2 octave.info-3 octave.info-4 octave.info-5)
+
+post_install() {
+ for f in ${info_files[@]}; do
+ install-info ${info_dir}/$f.gz ${info_dir}/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install
+}
+
+pre_remove() {
+ for f in ${info_files[@]}; do
+ install-info --delete ${info_dir}/$f.gz ${info_dir}/dir 2> /dev/null
+ done
+}
diff --git a/extra/ode/PKGBUILD b/extra/ode/PKGBUILD
new file mode 100644
index 000000000..3ed250d56
--- /dev/null
+++ b/extra/ode/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 56738 2009-10-26 14:27:28Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Adam Griffiths <adam_griffithsAATTdart.net.au>
+
+pkgname=ode
+pkgver=0.11.1
+pkgrel=1
+pkgdesc="An open source, high performance library for simulating rigid body dynamics"
+arch=('i686' 'x86_64')
+url="http://www.ode.org"
+license=('LGPL' 'BSD')
+depends=('gcc-libs' 'bash')
+source=(http://downloads.sourceforge.net/sourceforge/opende/${pkgname}-${pkgver}.tar.bz2)
+options=('!libtool')
+md5sums=('712579afabc2a15aa56e399f76171477')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr \
+ --enable-shared
+ make || return 1
+ make DESTDIR=${pkgdir}/ install
+
+ install -Dm0644 ${srcdir}/${pkgname}-${pkgver}/ou/LICENSE-BSD.TXT \
+ ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE-BSD.TXT
+}
diff --git a/extra/ogle/PKGBUILD b/extra/ogle/PKGBUILD
new file mode 100644
index 000000000..9d9b19c50
--- /dev/null
+++ b/extra/ogle/PKGBUILD
@@ -0,0 +1,39 @@
+# $Id: PKGBUILD 63949 2010-01-19 05:22:55Z eric $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+# Contributor: Sarah Hay <sarahhay@mb.sympatico.ca>
+
+pkgname=ogle
+pkgver=0.9.2
+pkgrel=12
+pkgdesc="A simple DVD player for Linux"
+arch=('i686' 'x86_64')
+url="http://www.dtek.chalmers.se/groups/dvd/"
+license=('GPL')
+depends=('libxml2' 'libdvdread' 'libjpeg' 'libmad' 'libxinerama' 'libxv'
+ 'alsa-lib' 'a52dec' 'libsm' 'libxxf86vm')
+options=('!libtool')
+source=(http://www.dtek.chalmers.se/groups/dvd/dist/${pkgname}-${pkgver}.tar.gz
+ xvideofix.patch
+ gcc34alsafix.patch
+ gcc4.patch
+ dvdread-4.1.3.patch)
+md5sums=('a76a9892bdb807a4bcf859d15a91f0f9'
+ '57f1cf36eed82c56f24e9c0fc25ce2b3'
+ '4ebc822b252fade6b53c5ceb5be45bf5'
+ 'd08cff87c5ec41a7eebc0d2384835688'
+ '597906c64ff7f5185de8430fdae3107d')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np0 -i "${srcdir}/dvdread-4.1.3.patch" || return 1
+ patch -Np1 -i ../xvideofix.patch || return 1
+ patch -Np1 -i ../gcc34alsafix.patch || return 1
+ patch -Np1 -i ../gcc4.patch || return 1
+ # fix alsa detection - stolen from their cvs
+ sed -i 's|^.*MINOR\=\=5.*$|#if SND_LIB_MAJOR==0 && SND_LIB_MINOR<6|' configure || return 1
+ sed -i 's|__diga_end:|\0;|' libogleao/alsa_audio.c || return 1
+ ./configure --prefix=/usr --sysconfdir=/etc --mandir=/usr/share/man --with-x || return 1
+ make || return 1
+ export LIBRARY_PATH="${pkgdir}/usr/lib/ogle"
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/ogle/dvdread-4.1.3.patch b/extra/ogle/dvdread-4.1.3.patch
new file mode 100644
index 000000000..d928ac2aa
--- /dev/null
+++ b/extra/ogle/dvdread-4.1.3.patch
@@ -0,0 +1,129 @@
+$NetBSD: patch-ad,v 1.1 2009/01/27 02:06:49 jmcneill Exp $
+
+--- vmg/ifo_dump.c.orig 2009-01-26 21:00:17.000000000 -0500
++++ vmg/ifo_dump.c 2009-01-26 21:00:33.000000000 -0500
+@@ -65,38 +65,38 @@ static void print_ifo(char *path, int ti
+ if(h->vmgi_mat != NULL) {
+
+ printf("VMG top level\n-------------\n");
+- ifoPrint_VMGI_MAT(h->vmgi_mat);
++ ifo_print_VMGI_MAT(h->vmgi_mat);
+
+ printf("\nFirst Play PGC\n--------------\n");
+- ifoPrint_PGC(h->first_play_pgc);
++ ifo_print_PGC(h->first_play_pgc);
+
+ printf("\nTitle Track search pointer table\n");
+ printf( "------------------------------------------------\n");
+- ifoPrint_TT_SRPT(h->tt_srpt);
++ ifo_print_TT_SRPT(h->tt_srpt);
+
+ printf("\nMenu PGCI Unit table\n");
+ printf( "--------------------\n");
+ if(h->vmgi_mat->vmgm_pgci_ut != 0) {
+- ifoPrint_PGCI_UT(h->pgci_ut);
++ ifo_print_PGCI_UT(h->pgci_ut);
+ } else
+ printf("No Menu PGCI Unit table present\n");
+
+ printf("\nParental Manegment Information table\n");
+ printf( "------------------------------------\n");
+ if(h->vmgi_mat->ptl_mait != 0) {
+- ifoPrint_PTL_MAIT(h->ptl_mait);
++ ifo_print_PTL_MAIT(h->ptl_mait);
+ } else
+ printf("No Parental Management Information present\n");
+
+ printf("\nVideo Title Set Attribute Table\n");
+ printf( "-------------------------------\n");
+- ifoPrint_VTS_ATRT(h->vts_atrt);
++ ifo_print_VTS_ATRT(h->vts_atrt);
+
+
+ printf("\nText Data Manager Information\n");
+ printf( "-----------------------------\n");
+ if(h->vmgi_mat->txtdt_mgi != 0) {
+- //ifoPrint_TXTDT_MGI(h->txtdt_mgi);
++ //ifo_print_TXTDT_MGI(h->txtdt_mgi);
+ printf("Can't print Text Data Manager Information yet\n");
+ } else
+ printf("No Text Data Manager Information present\n");
+@@ -106,14 +106,14 @@ static void print_ifo(char *path, int ti
+ printf("\nCell Address table\n");
+ printf( "-----------------\n");
+ if(h->vmgi_mat->vmgm_c_adt != 0) {
+- ifoPrint_C_ADT(h->menu_c_adt);
++ ifo_print_C_ADT(h->menu_c_adt);
+ } else
+ printf("No Cell Address table present\n");
+
+ printf("\nVideo Title set Menu VOBU address map\n");
+ printf( "-----------------\n");
+ if(h->vmgi_mat->vmgm_vobu_admap != 0) {
+- ifoPrint_VOBU_ADMAP(h->menu_vobu_admap);
++ ifo_print_VOBU_ADMAP(h->menu_vobu_admap);
+ } else
+ printf("No Menu VOBU address map present\n");
+ }
+@@ -122,20 +122,20 @@ static void print_ifo(char *path, int ti
+ if(h->vtsi_mat != NULL) {
+
+ printf("VTS top level\n-------------\n");
+- ifoPrint_VTSI_MAT(h->vtsi_mat);
++ ifo_print_VTSI_MAT(h->vtsi_mat);
+
+ printf("\nPart of title search pointer table information\n");
+ printf( "----------------------------------------------\n");
+- ifoPrint_VTS_PTT_SRPT(h->vts_ptt_srpt);
++ ifo_print_VTS_PTT_SRPT(h->vts_ptt_srpt);
+
+ printf("\nPGCI Unit table\n");
+ printf( "--------------------\n");
+- ifoPrint_PGCIT(h->vts_pgcit);
++ ifo_print_PGCIT(h->vts_pgcit);
+
+ printf("\nMenu PGCI Unit table\n");
+ printf( "--------------------\n");
+ if(h->vtsi_mat->vtsm_pgci_ut != 0) {
+- ifoPrint_PGCI_UT(h->pgci_ut);
++ ifo_print_PGCI_UT(h->pgci_ut);
+ } else
+ printf("No Menu PGCI Unit table present\n");
+
+@@ -144,31 +144,31 @@ static void print_ifo(char *path, int ti
+ printf("\nTime Map table\n");
+ printf( "-----------------\n");
+ if(h->vtsi_mat->vts_tmapt != 0) {
+- ifoPrint_VTS_TMAPT(h->vts_tmapt);
++ ifo_print_VTS_TMAPT(h->vts_tmapt);
+ } else
+ printf("No Time Map table present\n");
+
+ printf("\nMenu Cell Address table\n");
+ printf( "-----------------\n");
+ if(h->vtsi_mat->vtsm_c_adt != 0) {
+- ifoPrint_C_ADT(h->menu_c_adt);
++ ifo_print_C_ADT(h->menu_c_adt);
+ } else
+ printf("No Cell Address table present\n");
+
+ printf("\nVideo Title Set Menu VOBU address map\n");
+ printf( "-----------------\n");
+ if(h->vtsi_mat->vtsm_vobu_admap != 0) {
+- ifoPrint_VOBU_ADMAP(h->menu_vobu_admap);
++ ifo_print_VOBU_ADMAP(h->menu_vobu_admap);
+ } else
+ printf("No Menu VOBU address map present\n");
+
+ printf("\nCell Address table\n");
+ printf( "-----------------\n");
+- ifoPrint_C_ADT(h->vts_c_adt);
++ ifo_print_C_ADT(h->vts_c_adt);
+
+ printf("\nVideo Title Set VOBU address map\n");
+ printf( "-----------------\n");
+- ifoPrint_VOBU_ADMAP(h->vts_vobu_admap);
++ ifo_print_VOBU_ADMAP(h->vts_vobu_admap);
+
+ }
+ }
diff --git a/extra/ogle/gcc34alsafix.patch b/extra/ogle/gcc34alsafix.patch
new file mode 100644
index 000000000..76de3462d
--- /dev/null
+++ b/extra/ogle/gcc34alsafix.patch
@@ -0,0 +1,15 @@
+--- ogle-0.9.2/libogleao/alsa_audio.c 2003-10-18 17:38:30.000000000 -0700
++++ ogle-0.9.2-patch/libogleao/alsa_audio.c 2005-04-22 18:21:23.000000000 -0700
+@@ -248,10 +248,9 @@
+ //Shouldn't ctl_handle be closed here?
+ }
+
+- snd_ctl_close(ctl_handle);
+-
+- __diga_end:
++ snd_ctl_close(ctl_handle);
+ }
++ __diga_end:
+
+ return 0;
+ }
diff --git a/extra/ogle/gcc4.patch b/extra/ogle/gcc4.patch
new file mode 100644
index 000000000..b6a10a325
--- /dev/null
+++ b/extra/ogle/gcc4.patch
@@ -0,0 +1,12 @@
+diff -urN ogle-0.9.2-old/ac3/ac3dec_wrap.c ogle-0.9.2/ac3/ac3dec_wrap.c
+--- ogle-0.9.2-old/ac3/ac3dec_wrap.c 2003-03-02 15:50:03.000000000 +0000
++++ ogle-0.9.2/ac3/ac3dec_wrap.c 2005-09-30 17:07:27.000000000 +0000
+@@ -48,7 +48,7 @@
+ static void handle_events(MsgEventQ_t *q, MsgEvent_t *ev);
+
+
+-static char *program_name;
++char *program_name;
+
+ static FILE *outfile;
+
diff --git a/extra/ogle/xvideofix.patch b/extra/ogle/xvideofix.patch
new file mode 100644
index 000000000..aafde447a
--- /dev/null
+++ b/extra/ogle/xvideofix.patch
@@ -0,0 +1,205 @@
+--- ogle-0.9.2/mpeg2_video/video_output_x11.c 2003-11-04 04:02:10.000000000 -0800
++++ ogle-0.9.2-patch/mpeg2_video/video_output_x11.c 2005-04-22 18:37:56.000000000 -0700
+@@ -286,6 +286,7 @@
+ }
+ }
+
++
+ /* This section of the code looks for the Xv extension for hardware
+ * yuv->rgb and scaling. If it is not found, or any suitable adapter
+ * is not found, use_xv will be set to 0. Otherwise it allocates a
+@@ -299,121 +300,136 @@
+ {
+ int xv_found = 0;
+ #ifdef HAVE_XV
+- int i, j;
++ int i, j, k;
+ int result;
+
+ xv_port = 0; /* We have no port yet. */
+-
++
+ /* Check for the Xvideo extension */
+- result = XvQueryExtension(mydisplay, &xv_version, &xv_release,
+- &xv_request_base, &xv_event_base,
++ result = XvQueryExtension(mydisplay, &xv_version, &xv_release,
++ &xv_request_base, &xv_event_base,
+ &xv_error_base);
+ if(result != Success) {
+ WARNING("%s", "Xvideo extension not found\n");
+ use_xv = 0;
+ return;
+ }
+-
++
+ NOTE("Found Xv extension %d.%d, checking for suitable adaptors\n",
+ xv_version, xv_release);
+-
++
+ /* Check for available adaptors */
+- result = XvQueryAdaptors(mydisplay, DefaultRootWindow (mydisplay),
++ result = XvQueryAdaptors(mydisplay, DefaultRootWindow (mydisplay),
+ &xv_num_adaptors, &xv_adaptor_info);
+ if(result != Success) {
+ WARNING("%s", "No Xv adaptors found\n");
+ use_xv = 0;
+ return;
+ }
+-
++
+ /* Check adaptors */
+ for(i = 0; i < xv_num_adaptors; i++) {
+-
++
+ /* Is it usable for displaying XvImages */
+ if(!(xv_adaptor_info[i].type & XvInputMask) ||
+ !(xv_adaptor_info[i].type & XvImageMask))
+ continue;
+-
+- xv_port = xv_adaptor_info[i].base_id;
+-
+- /* Check image formats of adaptor */
+- xv_formats = XvListImageFormats(mydisplay, xv_port, &xv_num_formats);
+- for(j = 0; j < xv_num_formats; j++) {
+- if(xv_formats[j].id == 0x32315659) { /* YV12 */
+- //if(xv_formats[j].id == 0x30323449) { /* I420 */
+- xv_id = xv_formats[j].id;
+- break;
+- }
+- }
+- /* No matching format found */
+- if(j == xv_num_formats)
+- continue;
+-
+- NOTE("Xv adaptor \"%s\" port %li image format %i\n",
+- xv_adaptor_info[i].name, xv_port, xv_id);
+-
+- /* Allocate XvImages */
++
++ /* Check Available Ports */
++ for (j = 0; j < xv_adaptor_info[i].num_ports && !xv_port ; j++) {
++
++ /* Check Image formats of adaptor */
++ xv_formats = XvListImageFormats(mydisplay,xv_adaptor_info[i].base_id + j, &xv_num_formats);
++ for (k = 0; k < xv_num_formats; k ++) {
++
++ /* Check for proper format (YV12) and see if we can grab the port */
++ if ( (xv_formats[k].id == 0x32315659) && (XvGrabPort(mydisplay,xv_adaptor_info[i].base_id + j,0) == Success) ) {
++ xv_id = xv_formats[k].id;
++ xv_port = xv_adaptor_info[i].base_id + j;
++ break;
++ }
++
++ }
++
++ /* delete stuff nicely */
++ XFree(xv_formats);
++ }
++
++ /* Check next Adapter */
++ if (xv_port==0) continue;
++
++ /* Report what we found */
++ NOTE("Xv adaptor \"%s\" port %li image format %i\n", xv_adaptor_info[i].name, xv_port, xv_id);
++
++ /* Allocate XvImage */
+ xv_image = XvShmCreateImage(mydisplay, xv_port, xv_id, NULL,
+ padded_width,
+- padded_height,
++ padded_height,
+ &shm_info);
+-
+- /* Got an Image? */
++
++ /* Got an milk? */
+ if(xv_image == NULL)
+ continue;
+-
++
+ /* Test and see if we really got padded_width x padded_height */
+ if(xv_image->width != padded_width ||
+ xv_image->height != padded_height) {
+ FATAL("XvShmCreateImage got size: %d x %d\n",
+ xv_image->width, xv_image->height);
+ exit(1);
+- }
+-
++ }
++
++ /* Now Finish Up */
+ shm_info.shmid = picture_buffer_shmid;
+ shm_info.shmaddr = picture_buffer_addr;
+-
+- /* Set the data pointer to the decoders picture segment. */
++
++ /* Set the data pointer to the decoders picture segment. */
+ // xv_image->data = picture_data->y;
+ shm_info.readOnly = True;
+-
++
+ /* make sure we don't have any unhandled errors */
+ XSync(mydisplay, False);
+-
++
+ /* set error handler so we can check if xshmattach failed */
+ prev_xerrhandler = XSetErrorHandler(xshm_errorhandler);
+-
++
+ /* get the serial of the xshmattach request */
+ req_serial = NextRequest(mydisplay);
+-
++
+ /* try to attach */
+ XShmAttach(mydisplay, &shm_info);
+-
++
+ /* make sure xshmattach has been processed and any errors
+ have been returned to us */
+ XSync(mydisplay, False);
+-
++
+ /* revert to the previous xerrorhandler */
+ XSetErrorHandler(prev_xerrhandler);
+-
++
+ if(use_xshm) {
+ #if 0
+ shmctl(shm_info.shmid, IPC_RMID, 0); // only works on Linux..
+ #endif
+-
++
+ CompletionType = XShmGetEventBase(mydisplay) + ShmCompletion;
+ }
+ xv_found = 1;
+
+ /* All set up! */
+ break;
+- }
++ }
++
++ /* Clean up */
++ XvFreeAdaptorInfo(xv_adaptor_info);
++
+ #endif /* HAVE_XV */
++ /* In case we didn't find a working Xv */
+ if(!xv_found) {
+ use_xv = 0;
+- }
+-}
+-
++ }
++
++ }
++
+
+ /* This section of the code tries to use the MIT XShm extension for
+ * accellerated transfers to to X. XShm extension is need and only
+@@ -1726,6 +1742,8 @@
+
+ if(mydisplay) {
+ XSync(mydisplay,True);
++ if (use_xv)
++ XvUngrabPort(mydisplay,xv_port,CurrentTime);
+ if(use_xshm)
+ XShmDetach(mydisplay, &shm_info);
+ if(window.ximage != 0)
diff --git a/extra/ogmtools/PKGBUILD b/extra/ogmtools/PKGBUILD
new file mode 100644
index 000000000..f63436582
--- /dev/null
+++ b/extra/ogmtools/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id: PKGBUILD 68086 2010-02-10 17:57:04Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+
+pkgname=ogmtools
+pkgver=1.5
+pkgrel=3
+pkgdesc="Information, extraction or creation for OGG media streams"
+arch=('i686' 'x86_64')
+url="http://www.bunkus.org/videotools/ogmtools"
+license=('GPL')
+depends=('libvorbis' 'libdvdread' 'gcc-libs')
+source=(http://www.bunkus.org/videotools/${pkgname}/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('02d356e3d21d53b1d9715bab223d8996')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ ./configure --prefix=/usr \
+ --mandir=/usr/share/man || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/opal/PKGBUILD b/extra/opal/PKGBUILD
new file mode 100644
index 000000000..78fbcbb53
--- /dev/null
+++ b/extra/opal/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id: PKGBUILD 81960 2010-06-07 12:39:19Z jgc $
+# Maintainer: Jan de Groot <jan@archlinux.org>
+# Contributor: Tom K <tomk@runbox.com>
+pkgname=opal
+pkgver=3.6.8
+pkgrel=1
+pkgdesc="Open Phone Abstraction Library"
+arch=(i686 x86_64)
+url="http://www.ekiga.org"
+license=('GPL')
+depends=('ptlib=2.6.7' 'libtheora>=1.1.1' 'x264>=20100524' 'speex>=1.2rc1')
+makedepends=('ffmpeg')
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/3.6/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('8cbfabb33e5c5563fdafacf1adde536c78638d6d020fae496a52e19e2be6a90c')
+
+build() {
+ cd "${srcdir}/opal-${pkgver}"
+ CFLAGS="$CFLAGS -D__STDC_CONSTANT_MACROS" \
+ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/openal/PKGBUILD b/extra/openal/PKGBUILD
new file mode 100644
index 000000000..86dbcc263
--- /dev/null
+++ b/extra/openal/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 115848 2011-03-22 06:51:29Z heftig $
+# Maintainer: Allan McRae <allan@archlinux.org>
+# Contributer: Jason Chu <jchu@xentac.net>
+
+pkgname=openal
+pkgver=1.13
+pkgrel=1
+pkgdesc="OpenAL audio library for use with opengl"
+arch=('i686' 'x86_64')
+url="http://www.openal.org/"
+license=('LGPL')
+depends=('glibc')
+makedepends=('alsa-lib' 'sdl' 'pkgconfig' 'cmake' 'libpulse')
+options=('!libtool')
+source=(http://kcat.strangesoft.net/openal-releases/openal-soft-${pkgver}.tar.bz2)
+md5sums=('58b7d2809790c70681b825644c5f3614')
+
+build() {
+ cd ${srcdir}/${pkgname}-soft-${pkgver}/build
+ cmake -D CMAKE_INSTALL_PREFIX=/usr -D CMAKE_BUILD_TYPE=Release ..
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-soft-${pkgver}/build
+ make DESTDIR=${pkgdir}/ install
+}
diff --git a/extra/openbabel/PKGBUILD b/extra/openbabel/PKGBUILD
new file mode 100644
index 000000000..a265af7a1
--- /dev/null
+++ b/extra/openbabel/PKGBUILD
@@ -0,0 +1,34 @@
+# $Id: PKGBUILD 99851 2010-11-18 20:52:23Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Damir Perisa <damir.perisa@bluewin.ch>
+
+pkgname=openbabel
+pkgver=2.3.0
+pkgrel=3
+pkgdesc="A library designed to interconvert between many file formats used in \
+molecular modeling and computational chemistry"
+arch=('i686' 'x86_64')
+url="http://openbabel.org/wiki/Main_Page"
+license=('GPL')
+depends=('gcc-libs' 'libxml2')
+makedepends=('cmake' 'eigen' 'wxgtk')
+optdepends=('eigen: to use bindings'
+ 'wxgtk: GUI interface')
+options=('!libtool')
+source=("http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.gz")
+md5sums=('effda01ed4a31d18d8e3d08191799608')
+
+build() {
+ cd ${srcdir}
+ mkdir build
+ cd build
+ cmake ../${pkgname}-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=/usr
+ make
+}
+
+package() {
+ cd ${srcdir}/build
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/openbox/PKGBUILD b/extra/openbox/PKGBUILD
new file mode 100644
index 000000000..a71e0b16a
--- /dev/null
+++ b/extra/openbox/PKGBUILD
@@ -0,0 +1,47 @@
+# $Id: PKGBUILD 89725 2010-09-03 12:51:52Z remy $
+# Contributor: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: tobias <tobias@archlinux.org>
+# Contributor: Sarah Hay <sarahhay@mb.sympatico.ca>
+
+pkgname=openbox
+pkgver=3.4.11.2
+pkgrel=2
+pkgdesc="A window manager for the X11 windowing system"
+arch=('i686' 'x86_64')
+url="http://openbox.org"
+license=('GPL')
+depends=('startup-notification' 'libxml2' 'libxinerama' 'libxrandr'
+ 'libxcursor' 'pango')
+optdepends=('pyxdg: for the xdg-autostart script')
+groups=('lxde')
+install=${pkgname}.install
+options=('!libtool' 'force')
+backup=('etc/xdg/openbox/menu.xml' 'etc/xdg/openbox/rc.xml')
+source=(http://www.icculus.org/openbox/releases/${pkgname}-${pkgver}.tar.gz
+ 'which-2.20.patch')
+md5sums=('30e669134fa81df810fe7d1dc59cd931'
+ 'ec5e3d4d74779b0ca576a053ae54124d')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ # FS#11455
+ patch -Np1 -i ${srcdir}/which-2.20.patch || return 1
+ sed -i 's#python#python2#' tools/xdg-autostart/xdg-autostart
+ ./configure --prefix=/usr \
+ --with-x \
+ --enable-startup-notification \
+ --sysconfdir=/etc
+ make || return 1
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ make DESTDIR=${pkgdir} install
+
+ sed -i "s:startkde:/usr/bin/\0:" \
+ ${pkgdir}/usr/share/xsessions/openbox-kde.desktop
+ sed -i "s:=gnome-session:=/usr/bin/gnome-session:" \
+ ${pkgdir}/usr/share/xsessions/openbox-gnome.desktop
+}
diff --git a/extra/openbox/openbox.install b/extra/openbox/openbox.install
new file mode 100644
index 000000000..301c22127
--- /dev/null
+++ b/extra/openbox/openbox.install
@@ -0,0 +1,9 @@
+post_install() {
+ echo "Place menu.xml, rc.xml and autostart.sh in ~/.config/openbox"
+ echo "They can be found in /etc/xdg/openbox"
+}
+
+post_upgrade() {
+ post_install
+}
+
diff --git a/extra/openbox/which-2.20.patch b/extra/openbox/which-2.20.patch
new file mode 100644
index 000000000..7f663ae49
--- /dev/null
+++ b/extra/openbox/which-2.20.patch
@@ -0,0 +1,53 @@
+--- openbox-3.4.11.1/data/autostart.sh.in 2010-03-14 09:40:37.000000000 -0500
++++ openbox-3.4.11.1/data/autostart.sh.in 2010-03-26 14:44:36.000000000 -0500
+@@ -3,13 +3,13 @@
+
+ # Set a background color
+ BG=""
+-if which hsetroot >/dev/null; then
++if which hsetroot >/dev/null 2>&1; then
+ BG=hsetroot
+ else
+- if which esetroot >/dev/null; then
++ if which esetroot >/dev/null 2>&1; then
+ BG=esetroot
+ else
+- if which xsetroot >/dev/null; then
++ if which xsetroot >/dev/null 2>&1; then
+ BG=xsetroot
+ fi
+ fi
+@@ -17,28 +17,28 @@
+ test -z $BG || $BG -solid "#303030"
+
+ # D-bus
+-if which dbus-launch >/dev/null && test -z "$DBUS_SESSION_BUS_ADDRESS"; then
++if which dbus-launch >/dev/null 2>&1 && test -z "$DBUS_SESSION_BUS_ADDRESS"; then
+ eval `dbus-launch --sh-syntax --exit-with-session`
+ fi
+
+ # Make GTK apps look and behave how they were set up in the gnome config tools
+ if test -x @libexecdir@/gnome-settings-daemon >/dev/null; then
+ @libexecdir@/gnome-settings-daemon &
+-elif which gnome-settings-daemon >/dev/null; then
++elif which gnome-settings-daemon >/dev/null 2>&1; then
+ gnome-settings-daemon &
+ # Make GTK apps look and behave how they were set up in the XFCE config tools
+-elif which xfce-mcs-manager >/dev/null; then
++elif which xfce-mcs-manager >/dev/null 2>&1; then
+ xfce-mcs-manager n &
+ fi
+
+ # Preload stuff for KDE apps
+-if which start_kdeinit >/dev/null; then
++if which start_kdeinit >/dev/null 2>&1; then
+ LD_BIND_NOW=true start_kdeinit --new-startup +kcminit_startup &
+ fi
+
+ # Run XDG autostart things. By default don't run anything desktop-specific
+ # See xdg-autostart --help more info
+ DESKTOP_ENV="OPENBOX"
+-if which @secretbindir@/xdg-autostart >/dev/null; then
++if which @secretbindir@/xdg-autostart >/dev/null 2>&1; then
+ @secretbindir@/xdg-autostart $DESKTOP_ENV
+ fi
diff --git a/extra/opencdk/PKGBUILD b/extra/opencdk/PKGBUILD
new file mode 100644
index 000000000..dccaaced8
--- /dev/null
+++ b/extra/opencdk/PKGBUILD
@@ -0,0 +1,21 @@
+# $Id: PKGBUILD 69392 2010-02-20 12:36:11Z allan $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=opencdk
+pkgver=0.6.6
+pkgrel=2
+pkgdesc="The Open Crypto Development Kit provides basic parts of the OpenPGP message format"
+arch=('i686' 'x86_64')
+url="http://www.gnu.org/software/gnutls/"
+license=('GPL')
+depends=('libgcrypt>=1.2.4' 'zlib')
+options=('!libtool')
+source=(ftp://ftp.gnutls.org/pub/gnutls/opencdk/opencdk-${pkgver}.tar.bz2)
+md5sums=('813d62d7afe7b2c2d8f3df0a6c9d9331')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr
+ make || return 1
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/openconnect/PKGBUILD b/extra/openconnect/PKGBUILD
new file mode 100644
index 000000000..512ca21de
--- /dev/null
+++ b/extra/openconnect/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 114330 2011-03-12 16:08:31Z ibiru $
+# Maintainer: Ionut Biru <ibiru@archlinux.org>
+
+pkgname=openconnect
+pkgver=3.01
+pkgrel=1
+pkgdesc="Open client for Cisco AnyConnect VPN"
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://www.infradead.org/openconnect.html"
+depends=('libxml2' 'openssl')
+options=('!libtool' '!emptydirs')
+source=(ftp://ftp.infradead.org/pub/${pkgname}/${pkgname}-${pkgver}.tar.gz)
+md5sums=('4d41c96f95a2bc5b355e89b845bc5bb7')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+
+ install -Dm0644 openconnect.8 "${pkgdir}"/usr/share/man/man8/openconnect.8
+}
diff --git a/extra/opencore-amr/PKGBUILD b/extra/opencore-amr/PKGBUILD
new file mode 100644
index 000000000..e4fe7b376
--- /dev/null
+++ b/extra/opencore-amr/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 62601 2010-01-10 14:07:22Z ibiru $
+# Maintainer: Ionut Biru <ionut@archlinux.ro>
+# Contributor: WAntilles <wantilles@adslgr.com>
+
+pkgname=opencore-amr
+pkgver=0.1.2
+pkgrel=1
+pkgdesc="Open source implementation of the Adaptive Multi Rate (AMR) speech codec"
+arch=('i686' 'x86_64')
+license=('APACHE')
+url="http://opencore-amr.sourceforge.net/"
+depends=('gcc-libs')
+source=(http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.gz)
+options=('!libtool')
+md5sums=('8e8b8b253eb046340ff7b6bf7a6ccd3e')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ ./configure --prefix=/usr || return 1
+ make || return 1
+ make DESTDIR=${pkgdir}/ install || return 1
+}
+
diff --git a/extra/opencv/PKGBUILD b/extra/opencv/PKGBUILD
new file mode 100644
index 000000000..80b192193
--- /dev/null
+++ b/extra/opencv/PKGBUILD
@@ -0,0 +1,66 @@
+# $Id: PKGBUILD 109758 2011-02-12 15:04:53Z schiv $
+# Maintainer: Ray Rashif <schiv@archlinux.org>
+# Contributor: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=opencv
+_realname=OpenCV
+pkgver=2.2.0
+pkgrel=3
+pkgdesc="Open Source Computer Vision Library"
+arch=('i686' 'x86_64')
+license=('BSD')
+url="http://opencv.willowgarage.com"
+depends=('jasper' 'gstreamer0.10-base' 'openexr'
+ 'gtk2' 'xine-lib' 'libdc1394' 'v4l-utils')
+makedepends=('pkg-config' 'cmake' 'doxygen'
+ 'python2-numpy' 'eigen')
+optdepends=('eigen'
+ 'python2-numpy')
+options=('!libtool')
+source=(http://downloads.sourceforge.net/opencvlibrary/$_realname-$pkgver.tar.bz2
+ ptrcvcapture.patch)
+md5sums=('122c9ac793a46854ef2819fedbbd6b1b'
+ '461a8b1b0f2264521e13d9ae051d13be')
+
+build() {
+ cd "$srcdir/$_realname-$pkgver"
+
+ # Please do not remove any patches from trunk #
+
+ # libpng 1.4 compatibility
+ #patch -Np1 -i "$srcdir/libpng-1.4.patch"
+
+ # fix v4l issue
+ #patch -Np0 -i "$srcdir/v4l-mmap.patch"
+
+ # fix ffmpeg-related C++ issue
+ # see http://code.google.com/p/ffmpegsource/source/detail?r=311
+ #export CXXFLAGS="$CXXFLAGS -D__STDC_CONSTANT_MACROS"
+
+ # fix linking against highgui
+ # see https://bugs.archlinux.org/task/22841
+ patch -Np0 -i "$srcdir/ptrcvcapture.patch"
+
+ cmake . -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_SKIP_RPATH=ON \
+ -DWITH_XINE=ON \
+ -DWITH_UNICAP=OFF \
+ -DBUILD_EXAMPLES=ON \
+ -DBUILD_TESTS=OFF \
+ -DINSTALL_C_EXAMPLES=ON \
+ -DINSTALL_PYTHON_EXAMPLES=ON
+ make
+}
+
+package() {
+ cd "$srcdir/$_realname-$pkgver"
+
+ make DESTDIR="$pkgdir/" install
+
+ # install license file
+ install -Dm644 "$srcdir/$_realname-$pkgver/doc/license.txt" \
+ "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/extra/opencv/libpng-1.4.patch b/extra/opencv/libpng-1.4.patch
new file mode 100644
index 000000000..c34c5a58a
--- /dev/null
+++ b/extra/opencv/libpng-1.4.patch
@@ -0,0 +1,12 @@
+diff -Naur OpenCV-2.0.0-orig/src/highgui/grfmt_png.cpp OpenCV-2.0.0/src/highgui/grfmt_png.cpp
+--- OpenCV-2.0.0-orig/src/highgui/grfmt_png.cpp 2010-01-21 01:08:46.000000000 -0500
++++ OpenCV-2.0.0/src/highgui/grfmt_png.cpp 2010-01-21 01:13:11.000000000 -0500
+@@ -223,7 +223,7 @@
+ png_set_palette_to_rgb( png_ptr );
+
+ if( m_color_type == PNG_COLOR_TYPE_GRAY && m_bit_depth < 8 )
+- png_set_gray_1_2_4_to_8( png_ptr );
++ png_set_expand_gray_1_2_4_to_8( png_ptr );
+
+ if( CV_MAT_CN(m_type) > 1 && color )
+ png_set_bgr( png_ptr ); // convert RGB to BGR
diff --git a/extra/opencv/ptrcvcapture.patch b/extra/opencv/ptrcvcapture.patch
new file mode 100644
index 000000000..c1316f0ea
--- /dev/null
+++ b/extra/opencv/ptrcvcapture.patch
@@ -0,0 +1,17 @@
+Index: modules/highgui/src/cap.cpp
+===================================================================
+--- modules/highgui/src/cap.cpp (revision 4283)
++++ modules/highgui/src/cap.cpp (working copy)
+@@ -52,10 +52,10 @@
+ namespace cv
+ {
+
+-template<> inline void Ptr<CvCapture>::delete_obj()
++template<> void Ptr<CvCapture>::delete_obj()
+ { cvReleaseCapture(&obj); }
+
+-template<> inline void Ptr<CvVideoWriter>::delete_obj()
++template<> void Ptr<CvVideoWriter>::delete_obj()
+ { cvReleaseVideoWriter(&obj); }
+
+ }
diff --git a/extra/opencv/v4l-mmap.patch b/extra/opencv/v4l-mmap.patch
new file mode 100644
index 000000000..b7bbc9b74
--- /dev/null
+++ b/extra/opencv/v4l-mmap.patch
@@ -0,0 +1,14 @@
+http://code.ros.org/trac/opencv/ticket/141
+http://bugs.gentoo.org/313649
+
+--- src/highgui/cvcap_libv4l.cpp
++++ src/highgui/cvcap_libv4l.cpp
+@@ -782,7 +782,7 @@
+
+ capture->buffers[n_buffers].length = buf.length;
+ capture->buffers[n_buffers].start =
+- mmap (NULL /* start anywhere */,
++ v4l2_mmap (NULL /* start anywhere */,
+ buf.length,
+ PROT_READ | PROT_WRITE /* required */,
+ MAP_SHARED /* recommended */,
diff --git a/extra/openexr/PKGBUILD b/extra/openexr/PKGBUILD
new file mode 100644
index 000000000..ada112251
--- /dev/null
+++ b/extra/openexr/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: PKGBUILD 17474 2008-10-30 16:25:54Z pierre $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=openexr
+pkgver=1.6.1
+pkgrel=1
+depends=('zlib' 'ilmbase')
+pkgdesc="openexr library for EXR images"
+arch=(i686 x86_64)
+options=('!libtool')
+license=('custom')
+source=("http://savannah.nongnu.org/download/$pkgname/$pkgname-$pkgver.tar.gz" 'gcc43.patch')
+url="http://www.openexr.org"
+md5sums=('11951f164f9c872b183df75e66de145a' '7c83ee3d69ad688142e7de63cb68e70a')
+
+build() {
+ cd $startdir/src/$pkgname-$pkgver
+ patch -p1 -i $srcdir/gcc43.patch || return 1
+ ./configure --prefix=/usr
+ make || return 1
+ make DESTDIR=$startdir/pkg install
+ install -D -m644 COPYING $pkgdir/usr/share/licenses/$pkgname/COPYING
+}
diff --git a/extra/openexr/gcc43.patch b/extra/openexr/gcc43.patch
new file mode 100644
index 000000000..362487276
--- /dev/null
+++ b/extra/openexr/gcc43.patch
@@ -0,0 +1,22 @@
+diff -Nura openexr-1.6.1/exrenvmap/main.cpp openexr-1.6.1.new/exrenvmap/main.cpp
+--- openexr-1.6.1/exrenvmap/main.cpp 2007-04-25 03:07:51.000000000 +0200
++++ openexr-1.6.1.new/exrenvmap/main.cpp 2008-10-30 17:18:13.000000000 +0100
+@@ -45,6 +45,7 @@
+ #include <iostream>
+ #include <exception>
+ #include <stdlib.h>
++#include <string.h>
+
+ using namespace Imf;
+ using namespace std;
+diff -Nura openexr-1.6.1/exrmaketiled/main.cpp openexr-1.6.1.new/exrmaketiled/main.cpp
+--- openexr-1.6.1/exrmaketiled/main.cpp 2007-04-25 03:08:45.000000000 +0200
++++ openexr-1.6.1.new/exrmaketiled/main.cpp 2008-10-30 17:18:40.000000000 +0100
+@@ -46,6 +46,7 @@
+ #include <exception>
+ #include <string>
+ #include <stdlib.h>
++#include <string.h>
+
+ using namespace Imf;
+ using namespace std;
diff --git a/extra/opengtl/PKGBUILD b/extra/opengtl/PKGBUILD
new file mode 100644
index 000000000..582f3928f
--- /dev/null
+++ b/extra/opengtl/PKGBUILD
@@ -0,0 +1,33 @@
+# $Id: PKGBUILD 111122 2011-02-24 06:35:03Z eric $
+# Maintainer: Ronald van Haren <ronald.archlinux.org>
+# Contributor: Andries Radu <admiral0@live.it>
+
+pkgname=opengtl
+pkgver=0.9.15
+pkgrel=1
+pkgdesc="A set of library for using and integrating transformation algorithms (such as filter or color conversion) in graphics applications"
+url="http://www.opengtl.org"
+arch=('i686' 'x86_64')
+license=('GPL')
+depends=('gcc-libs')
+makedepends=('cmake' 'llvm' 'libpng')
+optdepends=('libpng: for using the png extension')
+source=(http://download.opengtl.org/OpenGTL-${pkgver}.tar.bz2)
+md5sums=('9e59817fddfc7085a8d23a6bbea60bdc')
+sha1sums=('12d53a6ba660d278906539f74d28b464601a08a3')
+
+build() {
+ cd "${srcdir}"
+ mkdir build
+ cd build
+ cmake ../OpenGTL-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_SKIP_RPATH=ON \
+ -DCMAKE_INSTALL_PREFIX=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}/build"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/openjdk6/PKGBUILD b/extra/openjdk6/PKGBUILD
new file mode 100644
index 000000000..ef8bbe171
--- /dev/null
+++ b/extra/openjdk6/PKGBUILD
@@ -0,0 +1,195 @@
+# $Id: PKGBUILD 117753 2011-04-04 17:40:52Z andyrtr $
+# Maintainer: Andreas Radke <andyrtr@archlinux.org>
+# Contributor: Jan de Groot <jgc@archlinux.org>
+
+pkgname=('openjdk6' 'openjdk6-src')
+pkgbase="openjdk6"
+#_date=20100715
+_javaver=6
+_icedteaver=1.10.1
+_openjdk_version=b22
+_openjdk_date=28_feb_2011
+#pkgver=${_javaver}.${_openjdk_version}_0.hg_${_date}
+pkgver=${_javaver}.${_openjdk_version}_${_icedteaver}
+pkgrel=1
+url='http://icedtea.classpath.org'
+arch=('i686' 'x86_64')
+license=('custom')
+makedepends=('gcc-libs' 'xdg-utils' 'hicolor-icon-theme' 'ca-certificates-java' 'libxtst' 'alsa-lib' 'giflib' 'libxp' 'gtk2'
+ 'nspr' 'zlib' 'freetype2' 'libjpeg>=8' 'libx11' 'libcups' 'patch' 'xalan-java' 'libxt' 'nss'
+ 'apache-ant' 'autoconf' 'unzip' 'rhino' 'mercurial' 'zip' 'cpio')
+options=('!emptydirs') # 'force') # force needed for hg shots
+source=(http://icedtea.classpath.org/download/source/icedtea6-${_icedteaver}.tar.gz
+ #ftp://ftp.archlinux.org/other/openjdk6/icedtea6-${_date}.tar.xz
+ http://download.java.net/openjdk/jdk6/promoted/${_openjdk_version}/openjdk-6-src-${_openjdk_version}-${_openjdk_date}.tar.gz
+ http://icedtea.classpath.org/download/drops/jaxp144_01.zip
+ https://jax-ws.dev.java.net/files/documents/4202/150724/jdk6-jaxws-b20.zip
+ https://jax-ws.dev.java.net/files/documents/4202/150725/jdk6-jaf-b20.zip
+ fix_jdk_cmds_path.diff
+ fix_corba_cmds_path.diff
+ aatext_by_default.diff
+ fontconfig-paths.diff
+ nonreparenting-wm.diff
+ openjdk6.profile
+ openjdk6.profile.csh)
+noextract=(openjdk-6-src-${_openjdk_version}-${_openjdk_date}.tar.gz)
+md5sums=('f3b31b9f591afc752372addacb1eb335'
+ '2d2bbbb0f9b81f1fec41ec730da8a933'
+ 'ef7a8b3624ea904bf584bc46d79b5e75'
+ '91adfd41e6f001add4f92ae31216b1e3'
+ 'bc95c133620bd68c161cac9891592901'
+ '5da3e39fa60985576c4f37d1491efbe2'
+ 'f7e7a212e50abb56a6ef1a2b1bd27405'
+ 'ef60d567c0d9bad111212851220deafd'
+ 'ee1afda124d5927345014ab382ef581e'
+ '409812b5675f9678b1c9e1a12a945a9a'
+ '74c4a7adc782edd087802bf92ae3d6d0'
+ 'fdf295e2f186dfa4d308691a3d7ac8c5')
+
+# source PKGBUILD && mksource
+mksource() {
+ mkdir /tmp/icedtea6-${_date}
+ pushd /tmp/icedtea6-${_date}
+ #hg -v clone http://icedtea.classpath.org/hg/icedtea6
+ # use specific release branch
+ hg -v clone http://icedtea.classpath.org/hg/release/icedtea6-1.8/
+ rm -rf icedtea6/.hg*
+ tar -cvJf /tmp/icedtea6-${_date}/icedtea6-${_date}.tar.xz *
+ popd
+}
+
+build() {
+
+ unset JAVA_HOME
+ unset CLASSPATH
+
+ [ -z "${ANT_HOME}" ] && . /etc/profile.d/apache-ant.sh
+
+ _javaver=6
+ _jvmdir=/usr/lib/jvm/java-${_javaver}-openjdk
+
+ cd ${srcdir}/icedtea6-${_icedteaver}
+
+ ln -s ${srcdir}/openjdk-6-src-${_openjdk_version}-${_openjdk_date}.tar.gz .
+
+ cp ${srcdir}/*.diff ${srcdir}/icedtea6-${_icedteaver}/patches/
+
+ autoreconf -i
+
+ export DISTRIBUTION_PATCHES="patches/fix_jdk_cmds_path.diff patches/aatext_by_default.diff patches/fontconfig-paths.diff patches/fix_corba_cmds_path.diff patches/nonreparenting-wm.diff"
+
+ export ALT_PARALLEL_COMPILE_JOBS="${MAKEFLAGS/-j}"
+ export HOTSPOT_BUILD_JOBS="${ALT_PARALLEL_COMPILE_JOBS}"
+ unset MAKEFLAGS
+
+ ./configure --with-parallel-jobs=${HOTSPOT_BUILD_JOBS} \
+ --with-xalan2-jar=/usr/share/java/xalan.jar \
+ --with-ant-home=/usr/share/java/apache-ant \
+ --with-pkgversion=ArchLinux-${pkgver}-${pkgrel}-$CARCH \
+ --with-jaxp-drop-zip=${srcdir}/jaxp144_01.zip \
+ --with-jaxws-drop-zip=${srcdir}/jdk6-jaxws-b20.zip \
+ --with-jaf-drop-zip=${srcdir}/jdk6-jaf-b20.zip \
+ --disable-bootstrap
+ LD_PRELOAD="" make
+}
+
+package_openjdk6() {
+ pkgdesc='Free Java environment based on OpenJDK 6.0 with IcedTea6 replacing binary plugs.'
+ backup=(etc/profile.d/openjdk6.sh)
+ depends=('gcc-libs' 'xdg-utils' 'hicolor-icon-theme' 'ca-certificates-java' 'libxtst' 'libxt' 'nss' 'libjpeg' 'freetype2' 'libxrender' 'libpng')
+ optdepends=('icedtea-web: web browser plugin + Java Web Start'
+ 'alsa-lib: for sound'
+ 'giflib: for gif format support')
+ conflicts=('java-environment' 'java-runtime')
+ provides=('java-environment=6' 'java-runtime=6')
+ install=openjdk6.install
+
+ if [ "${CARCH}" = "x86_64" ]; then
+ _arch=amd64
+ else
+ _arch=i586
+ fi
+
+ _javaver=6
+ _jvmdir=/usr/lib/jvm/java-${_javaver}-openjdk
+
+ cd ${srcdir}/icedtea6-${_icedteaver}
+ install -m755 -d ${pkgdir}/${_jvmdir}/jre
+
+ pushd ${srcdir}/icedtea6-${_icedteaver}/openjdk.build/j2sdk-image
+
+ # Install main files.
+ cp -a bin include lib ${pkgdir}/${_jvmdir}/
+ cp -a jre/bin jre/lib ${pkgdir}/${_jvmdir}/jre/
+
+ mv ${pkgdir}/${_jvmdir}/jre/lib/fontconfig.Ubuntu.properties.src \
+ ${pkgdir}/${_jvmdir}/jre/lib/fontconfig.properties.src
+ mv ${pkgdir}/${_jvmdir}/jre/lib/fontconfig.Ubuntu.bfc \
+ ${pkgdir}/${_jvmdir}/jre/lib/fontconfig.bfc
+ rm -f ${pkgdir}/${_jvmdir}/jre/lib/fontconfig.*.bfc
+ rm -f ${pkgdir}/${_jvmdir}/jre/lib/fontconfig.*.properties.src
+
+ # Install man pages.
+ install -m755 -d ${pkgdir}/usr/share/man/man1
+ install -m644 man/man1/*.1 ${pkgdir}/usr/share/man/man1/
+
+ # Install demos and samples.
+ cp -a demo ${pkgdir}/${_jvmdir}/
+ install -m755 -d sample/rmi
+ mv bin/java-rmi.cgi sample/rmi
+ cp -a sample ${pkgdir}/${_jvmdir}/
+ popd
+
+ # Install icons and menu entries.
+ for s in 16 24 32 48 ; do
+ install -m755 -d ${pkgdir}/usr/share/icons/hicolor/${s}x${s}/apps
+ install -m644 openjdk/jdk/src/solaris/classes/sun/awt/X11/java-icon${s}.png \
+ ${pkgdir}/usr/share/icons/hicolor/${s}x${s}/apps/java.png
+ done
+
+ # Install desktop files.
+ install -m755 -d ${pkgdir}/usr/share/applications
+ install -m644 {jconsole,policytool}.desktop ${pkgdir}/usr/share/applications
+
+ # link binaries into /usr/bin
+ install -m755 -d ${pkgdir}/usr/bin
+ pushd ${pkgdir}/${_jvmdir}/bin
+ for file in *; do
+ ln -sf ${_jvmdir}/bin/${file} \
+ ${pkgdir}/usr/bin
+ done
+ popd
+
+ # link JKS keystore from ca-certificates-java
+ rm -f ${pkgdir}/${_jvmdir}/jre/lib/security/cacerts
+ ln -sf /etc/ssl/certs/java/cacerts "${pkgdir}/${_jvmdir}/jre/lib/security/cacerts"
+
+ # set some variables
+ install -m755 -d ${pkgdir}/etc/profile.d
+ install -m755 ${srcdir}/openjdk6.profile ${pkgdir}/etc/profile.d/openjdk6.sh
+ install -m755 ${srcdir}/openjdk6.profile.csh ${pkgdir}/etc/profile.d/openjdk6.csh
+
+ # install license
+ install -Dm644 ${srcdir}/LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+}
+
+package_openjdk6-src() {
+ pkgdesc='Free Java environment based on OpenJDK 6.0 Source Bundle'
+ depends=('openjdk6')
+
+ if [ "${CARCH}" = "x86_64" ]; then
+ _arch=amd64
+ else
+ _arch=i586
+ fi
+
+ _javaver=6
+ _jvmdir=/usr/lib/jvm/java-${_javaver}-openjdk
+
+ cd ${srcdir}/icedtea6-${_icedteaver}
+ install -m755 -d ${pkgdir}/${_jvmdir}/jre
+
+ pushd ${srcdir}/icedtea6-${_icedteaver}/openjdk.build/j2sdk-image
+ # Install src.zip file
+ cp -a src.zip ${pkgdir}/${_jvmdir}/
+}
diff --git a/extra/openjdk6/aatext_by_default.diff b/extra/openjdk6/aatext_by_default.diff
new file mode 100644
index 000000000..268ea99a9
--- /dev/null
+++ b/extra/openjdk6/aatext_by_default.diff
@@ -0,0 +1,35 @@
+--- openjdk/jdk/src/share/classes/sun/awt/SunToolkit.java.old 2008-01-08 20:23:56.000000000 +0200
++++ openjdk/jdk/src/share/classes/sun/awt/SunToolkit.java 2008-02-24 12:39:19.000000000 +0200
+@@ -1875,7 +1875,6 @@
+ */
+ private static boolean useSystemAAFontSettings() {
+ if (!checkedSystemAAFontSettings) {
+- useSystemAAFontSettings = true; /* initially set this true */
+ String systemAAFonts = null;
+ Toolkit tk = Toolkit.getDefaultToolkit();
+ if (tk instanceof SunToolkit) {
+@@ -1883,20 +1882,10 @@
+ (String)AccessController.doPrivileged(
+ new GetPropertyAction("awt.useSystemAAFontSettings"));
+ }
+- if (systemAAFonts != null) {
+- useSystemAAFontSettings =
+- Boolean.valueOf(systemAAFonts).booleanValue();
+- /* If it is anything other than "true", then it may be
+- * a hint name , or it may be "off, "default", etc.
+- */
+- if (!useSystemAAFontSettings) {
+- desktopFontHints = getDesktopAAHintsByName(systemAAFonts);
+- }
+- }
+- /* If its still true, apply the extra condition */
+- if (useSystemAAFontSettings) {
+- useSystemAAFontSettings = lastExtraCondition;
+- }
++ if (systemAAFonts == null || Boolean.parseBoolean(systemAAFonts))
++ systemAAFonts = "on";
++ desktopFontHints = getDesktopAAHintsByName(systemAAFonts);
++ useSystemAAFontSettings = desktopFontHints != null;
+ checkedSystemAAFontSettings = true;
+ }
+ return useSystemAAFontSettings;
diff --git a/extra/openjdk6/fix_corba_cmds_path.diff b/extra/openjdk6/fix_corba_cmds_path.diff
new file mode 100644
index 000000000..842657880
--- /dev/null
+++ b/extra/openjdk6/fix_corba_cmds_path.diff
@@ -0,0 +1,33 @@
+--- openjdk/corba/make/common/shared/Defs-utils.gmk.old 2008-04-13 13:26:12.000000000 +0300
++++ openjdk/corba/make/common/shared/Defs-utils.gmk 2008-04-14 15:35:13.000000000 +0300
+@@ -86,10 +86,10 @@
+ CHMOD = $(UTILS_COMMAND_PATH)chmod
+ CMP = $(UTILS_USR_BIN_PATH)cmp
+ COMM = $(UTILS_USR_BIN_PATH)comm
+-COMPRESS = $(UTILS_USR_BIN_PATH)compress
++COMPRESS = $(UTILS_COMMAND_PATH)compress
+ CP = $(UTILS_COMMAND_PATH)cp
+ CPIO = $(UTILS_COMMAND_PATH)cpio
+-CUT = $(UTILS_USR_BIN_PATH)cut
++CUT = $(UTILS_COMMAND_PATH)cut
+ DATE = $(UTILS_COMMAND_PATH)date
+ DF = $(UTILS_COMMAND_PATH)df
+ DIFF = $(UTILS_USR_BIN_PATH)diff
+@@ -136,7 +136,7 @@
+ TAR = $(UTILS_COMMAND_PATH)tar
+ TEST = $(UTILS_USR_BIN_PATH)test
+ TOUCH = $(UTILS_COMMAND_PATH)touch
+-TR = $(UTILS_USR_BIN_PATH)tr
++TR = $(UTILS_COMMAND_PATH)tr
+ TRUE = $(UTILS_COMMAND_PATH)true
+ UNAME = $(UTILS_COMMAND_PATH)uname
+ UNIQ = $(UTILS_USR_BIN_PATH)uniq
+@@ -186,7 +186,7 @@
+ # others have it in /usr/bin.
+ SORT=$(firstword $(wildcard $(UTILS_COMMAND_PATH)sort) \
+ $(wildcard $(UTILS_USR_BIN_PATH)sort))
+- NAWK = $(USRBIN_PATH)gawk
++ NAWK = $(UTILS_COMMAND_PATH)gawk
+ # Intrinsic unix command, with backslash-escaped character interpretation
+ ECHO = /bin/echo -e
+ # These are really in UTILS_USR_BIN_PATH on Linux (only sccs is not)
diff --git a/extra/openjdk6/fix_jdk_cmds_path.diff b/extra/openjdk6/fix_jdk_cmds_path.diff
new file mode 100644
index 000000000..7e16e1744
--- /dev/null
+++ b/extra/openjdk6/fix_jdk_cmds_path.diff
@@ -0,0 +1,33 @@
+--- openjdk/jdk/make/common/shared/Defs-utils.gmk.old 2008-04-13 13:33:23.000000000 +0300
++++ openjdk/jdk/make/common/shared/Defs-utils.gmk 2008-04-14 15:37:34.000000000 +0300
+@@ -76,10 +76,10 @@
+ CHMOD = $(UTILS_COMMAND_PATH)chmod
+ CMP = $(UTILS_USR_BIN_PATH)cmp
+ COMM = $(UTILS_USR_BIN_PATH)comm
+-COMPRESS = $(UTILS_USR_BIN_PATH)compress
++COMPRESS = $(UTILS_COMMAND_PATH)compress
+ CP = $(UTILS_COMMAND_PATH)cp
+ CPIO = $(UTILS_COMMAND_PATH)cpio
+-CUT = $(UTILS_USR_BIN_PATH)cut
++CUT = $(UTILS_COMMAND_PATH)cut
+ DATE = $(UTILS_COMMAND_PATH)date
+ DF = $(UTILS_COMMAND_PATH)df
+ DIFF = $(UTILS_USR_BIN_PATH)diff
+@@ -126,7 +126,7 @@
+ TAR = $(UTILS_COMMAND_PATH)tar
+ TEST = $(UTILS_USR_BIN_PATH)test
+ TOUCH = $(UTILS_COMMAND_PATH)touch
+-TR = $(UTILS_USR_BIN_PATH)tr
++TR = $(UTILS_COMMAND_PATH)tr
+ TRUE = $(UTILS_COMMAND_PATH)true
+ UNAME = $(UTILS_COMMAND_PATH)uname
+ UNIQ = $(UTILS_USR_BIN_PATH)uniq
+@@ -173,7 +173,7 @@
+ BASENAME=$(firstword $(wildcard $(UTILS_COMMAND_PATH)basename) \
+ $(wildcard $(UTILS_USR_BIN_PATH)basename))
+
+- NAWK = $(USRBIN_PATH)gawk
++ NAWK = $(UTILS_COMMAND_PATH)gawk
+ # Intrinsic unix command, with backslash-escaped character interpretation
+ ECHO = /bin/echo -e
+ # These are really in UTILS_USR_BIN_PATH on Linux (only sccs is not)
diff --git a/extra/openjdk6/fontconfig-paths.diff b/extra/openjdk6/fontconfig-paths.diff
new file mode 100644
index 000000000..fa08db629
--- /dev/null
+++ b/extra/openjdk6/fontconfig-paths.diff
@@ -0,0 +1,134 @@
+--- openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Ubuntu.properties 2009-05-29 22:45:23.024341869 +0000
++++ openjdk/jdk/src/solaris/classes/sun/awt/fontconfigs/linux.fontconfig.Ubuntu.properties.new 2009-05-29 22:55:13.681366890 +0000
+@@ -275,73 +275,61 @@
+
+ # Font File Names
+
+-filename.DejaVu_Sans=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf
+-filename.DejaVu_Sans_Bold=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-Bold.ttf
+-filename.DejaVu_Sans_Oblique=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-Oblique.ttf
+-filename.DejaVu_Sans_Bold_Oblique=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-BoldOblique.ttf
+-
+-filename.DejaVu_Sans_Mono=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono.ttf
+-filename.DejaVu_Sans_Mono_Bold=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono-Bold.ttf
+-filename.DejaVu_Sans_Mono_Oblique=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono-Oblique.ttf
+-filename.DejaVu_Sans_Mono_Bold_Oblique=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono-BoldOblique.ttf
+-
+-filename.DejaVu_Serif=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSerif.ttf
+-filename.DejaVu_Serif_Bold=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSerif-Bold.ttf
+-filename.DejaVu_Serif_Oblique=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSerif-Oblique.ttf
+-filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSerif-BoldOblique.ttf
+-
+-filename.AR_PL_UMing_CN=/usr/share/fonts/truetype/arphic/uming.ttc
+-filename.AR_PL_UMing_HK=/usr/share/fonts/truetype/arphic/uming.ttc
+-filename.AR_PL_UMing_TW=/usr/share/fonts/truetype/arphic/uming.ttc
+-filename.AR_PL_ShanHeiSun_Uni=/usr/share/fonts/truetype/arphic/uming.ttf
+-
+-filename.WenQuanYi_Zen_Hei=/usr/share/fonts/truetype/wqy/wqy-zenhei.ttf
+-filename.Baekmuk_Batang=/usr/share/fonts/truetype/baekmuk/batang.ttf
+-filename.UnBatang=/usr/share/fonts/truetype/unfonts/UnBatang.ttf
+-filename.UnBatang_Bold=/usr/share/fonts/truetype/unfonts/UnBatangBold.ttf
+-filename.Baekmuk_Gulim=/usr/share/fonts/truetype/baekmuk/gulim.ttf
+-filename.UnDotum=/usr/share/fonts/truetype/unfonts/UnDotum.ttf
+-filename.UnDotum_Bold=/usr/share/fonts/truetype/unfonts/UnDotumBold.ttf
+-filename.Kochi_Gothic=/usr/share/fonts/truetype/kochi/kochi-gothic.ttf
+-filename.Sazanami_Gothic=/usr/share/fonts/truetype/sazanami/sazanami-gothic.ttf
+-filename.Kochi_Mincho=/usr/share/fonts/truetype/kochi/kochi-mincho.ttf
+-filename.Sazanami_Mincho=/usr/share/fonts/truetype/sazanami/sazanami-mincho.ttf
+-filename.VL_Gothic=/usr/share/fonts/truetype/vlgothic/VL-Gothic-Regular.ttf
+-filename.VL_PGothic=/usr/share/fonts/truetype/vlgothic/VL-PGothic-Regular.ttf
+-
+-filename.Lohit_Bengali=/usr/share/fonts/truetype/ttf-bengali-fonts/lohit_bn.ttf
+-filename.Lohit_Gujarati=/usr/share/fonts/truetype/ttf-indic-fonts-core/lohit_gu.ttf
+-filename.Lohit_Hindi=/usr/share/fonts/truetype/ttf-indic-fonts-core/lohit_hi.ttf
+-filename.Lohit_Kannda=/usr/share/fonts/truetype/ttf-kannada-fonts/lohit_kn.ttf
+-#filename.Lohit_Malayalam=/usr/share/fonts/lohit-malayalam/lohit_ml.ttf
+-filename.Lohit_Oriya=/usr/share/fonts/truetype/ttf-oriya-fonts/lohit_or.ttf
+-filename.Lohit_Punjabi=/usr/share/fonts/truetype/ttf-indic-fonts-core/lohit_pa.ttf
+-filename.Lohit_Tamil=/usr/share/fonts/truetype/ttf-indic-fonts-core/lohit_ta.ttf
+-filename.Lohit_Telugu=/usr/share/fonts/truetype/ttf-telugu-fonts/lohit_te.ttf
+-filename.LKLUG=/usr/share/fonts/truetype/ttf-sinhala-lklug/lklug.ttf
+-
+-filename.LuxiSans-Regular=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luxisr.ttf
+-filename.LuxiSans-Bold=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luxisb.ttf
+-filename.LuxiSans-Oblique=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luxisri.ttf
+-filename.LuxiSans-BoldOblique=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luxisbi.ttf
+-filename.LuxiMono-Regular=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luximr.ttf
+-filename.LuxiMono-Bold=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luximb.ttf
+-filename.LuxiMono-Oblique=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luximri.ttf
+-filename.LuxiMono-BoldOblique=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luximbi.ttf
+-filename.LuxiSerif-Regular=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luxirr.ttf
+-filename.LuxiSerif-Bold=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luxirb.ttf
+-filename.LuxiSerif-Oblique=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luxirri.ttf
+-filename.LuxiSerif-BoldOblique=/usr/share/fonts/truetype/ttf-xfree86-nonfree/luxirbi.ttf
+-
+-# AWT X11 font paths
+-awtfontpath.latin-1=/usr/share/fonts/X11/Type1
+-awtfontpath.umingcn=/usr/share/fonts/truetype/arphic
+-awtfontpath.uminghk=/usr/share/fonts/truetype/arphic
+-awtfontpath.umingtw=/usr/share/fonts/truetype/arphic
+-awtfontpath.shanheisun=/usr/share/fonts/truetype/arphic
+-awtfontpath.wqy-zenhei=/usr/share/fonts/truetype/wqy
+-awtfontpath.japanese-kochi=/usr/share/fonts/truetype/kochi
+-awtfontpath.japanese-sazanami=/usr/share/fonts/truetype/sazanami
+-awtfontpath.japanese-vlgothic=/usr/share/fonts/truetype/vlgothic
+-awtfontpath.korean-baekmuk=/usr/share/fonts/truetype/baekmuk
+-awtfontpath.korean-un=/usr/share/fonts/truetype/unfonts
++filename.DejaVu_Sans=/usr/share/fonts/TTF/DejaVuSans.ttf
++filename.DejaVu_Sans_Bold=/usr/share/fonts/TTF/DejaVuSans-Bold.ttf
++filename.DejaVu_Sans_Oblique=/usr/share/fonts/TTF/DejaVuSans-Oblique.ttf
++filename.DejaVu_Sans_Bold_Oblique=/usr/share/fonts/TTF/DejaVuSans-BoldOblique.ttf
++
++filename.DejaVu_Sans_Mono=/usr/share/fonts/TTF/DejaVuSansMono.ttf
++filename.DejaVu_Sans_Mono_Bold=/usr/share/fonts/TTF/DejaVuSansMono-Bold.ttf
++filename.DejaVu_Sans_Mono_Oblique=/usr/share/fonts/TTF/DejaVuSansMono-Oblique.ttf
++filename.DejaVu_Sans_Mono_Bold_Oblique=/usr/share/fonts/TTF/DejaVuSansMono-BoldOblique.ttf
++
++filename.DejaVu_Serif=/usr/share/fonts/TTF/DejaVuSerif.ttf
++filename.DejaVu_Serif_Bold=/usr/share/fonts/TTF/DejaVuSerif-Bold.ttf
++filename.DejaVu_Serif_Oblique=/usr/share/fonts/TTF/DejaVuSerif-Oblique.ttf
++filename.DejaVu_Serif_Bold_Oblique=/usr/share/fonts/TTF/DejaVuSerif-BoldOblique.ttf
++
++filename.AR_PL_UMing_CN=/usr/share/fonts/TTF/uming.ttc
++filename.AR_PL_UMing_HK=/usr/share/fonts/TTF/uming.ttc
++filename.AR_PL_UMing_TW=/usr/share/fonts/TTF/uming.ttc
++filename.AR_PL_ShanHeiSun_Uni=/usr/share/TTF/uming.ttf
++
++filename.WenQuanYi_Zen_Hei=/usr/share/fonts/TTF/wqy-zenhei.ttf
++filename.Baekmuk_Batang=/usr/share/fonts/TTF/batang.ttf
++filename.UnBatang=/usr/share/fonts/TTF/UnBatang.ttf
++filename.UnBatang_Bold=/usr/share/fonts/TTF/UnBatangBold.ttf
++filename.Baekmuk_Gulim=/usr/share/fonts/TTF/gulim.ttf
++filename.UnDotum=/usr/share/fonts/TTF/UnDotum.ttf
++filename.UnDotum_Bold=/usr/share/fonts/TTF/UnDotumBold.ttf
++filename.Kochi_Gothic=/usr/share/fonts/TTF/kochi-gothic.ttf
++filename.Sazanami_Gothic=/usr/share/fonts/TTF/sazanami-gothic.ttf
++filename.Kochi_Mincho=/usr/share/fonts/TTF/kochi-mincho.ttf
++filename.Sazanami_Mincho=/usr/share/fonts/TTF/sazanami-mincho.ttf
++filename.VL_Gothic=/usr/share/fonts/TTF/VL-Gothic-Regular.ttf
++filename.VL_PGothic=/usr/share/fonts/TTF/VL-PGothic-Regular.ttf
++
++filename.Lohit_Bengali=/usr/share/fonts/TTF/lohit_bn.ttf
++filename.Lohit_Gujarati=/usr/share/fonts/TTF/lohit_gu.ttf
++filename.Lohit_Hindi=/usr/share/fonts/TTF/lohit_hi.ttf
++filename.Lohit_Kannda=/usr/share/fonts/TTF/lohit_kn.ttf
++#filename.Lohit_Malayalam=/usr/share/fonts/TTF/lohit_ml.ttf
++filename.Lohit_Oriya=/usr/share/fonts/TTF/lohit_or.ttf
++filename.Lohit_Punjabi=/usr/share/fonts/TTF/lohit_pa.ttf
++filename.Lohit_Tamil=/usr/share/fonts/TTF/lohit_ta.ttf
++filename.Lohit_Telugu=/usr/share/fonts/TTF/lohit_te.ttf
++filename.LKLUG=/usr/share/fonts/TTF/lklug.ttf
++
++filename.LuxiSans-Regular=/usr/share/fonts/TTF/luxisr.ttf
++filename.LuxiSans-Bold=/usr/share/fonts/TTF/luxisb.ttf
++filename.LuxiSans-Oblique=/usr/share/fonts/TTF/luxisri.ttf
++filename.LuxiSans-BoldOblique=/usr/share/fonts/TTF/luxisbi.ttf
++filename.LuxiMono-Regular=/usr/share/fonts/TTF/luximr.ttf
++filename.LuxiMono-Bold=/usr/share/fonts/TTF/luximb.ttf
++filename.LuxiMono-Oblique=/usr/share/fonts/TTF/luximri.ttf
++filename.LuxiMono-BoldOblique=/usr/share/fonts/TTF/luximbi.ttf
++filename.LuxiSerif-Regular=/usr/share/fonts/TTF/luxirr.ttf
++filename.LuxiSerif-Bold=/usr/share/fonts/TTF/luxirb.ttf
++filename.LuxiSerif-Oblique=/usr/share/fonts/TTF/luxirri.ttf
++filename.LuxiSerif-BoldOblique=/usr/share/fonts/TTF/luxirbi.ttf
++
diff --git a/extra/openjdk6/nonreparenting-wm.diff b/extra/openjdk6/nonreparenting-wm.diff
new file mode 100644
index 000000000..ec890b434
--- /dev/null
+++ b/extra/openjdk6/nonreparenting-wm.diff
@@ -0,0 +1,66 @@
+diff --git a/jdk/src/solaris/classes/sun/awt/X11/XWM.java b/jdk/src/solaris/classes/sun/awt/X11/XWM.java
+index 68d1ff7..878327e 100644
+--- openjdk/jdk/src/solaris/classes/sun/awt/X11/XWM.java
++++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XWM.java
+@@ -98,11 +98,14 @@ class XWM implements MWMConstants, XUtilConstants {
+ ICE_WM = 10,
+ METACITY_WM = 11,
+ COMPIZ_WM = 12,
+- LG3D_WM = 13;
++ LG3D_WM = 13,
++ OTHER_NONREPARENTING_WM = 14;
+ public String toString() {
+ switch (WMID) {
+ case NO_WM:
+ return "NO WM";
++ case OTHER_NONREPARENTING_WM:
++ return "Other non-reparenting WM";
+ case OTHER_WM:
+ return "Other WM";
+ case OPENLOOK_WM:
+@@ -564,7 +567,7 @@ class XWM implements MWMConstants, XUtilConstants {
+ }
+
+ static boolean isNonReparentingWM() {
+- return (XWM.getWMID() == XWM.COMPIZ_WM || XWM.getWMID() == XWM.LG3D_WM);
++ return (XWM.getWMID() == XWM.COMPIZ_WM || XWM.getWMID() == XWM.LG3D_WM || XWM.getWMID() == XWM.OTHER_NONREPARENTING_WM);
+ }
+
+ /*
+@@ -764,9 +767,17 @@ class XWM implements MWMConstants, XUtilConstants {
+ * supports WIN or _NET wm spec.
+ */
+ else if (l_net_protocol.active()) {
+- awt_wmgr = XWM.OTHER_WM;
++ if (XToolkit.getEnv("_JAVA_AWT_WM_NONREPARENTING") != null) {
++ awt_wmgr = XWM.OTHER_NONREPARENTING_WM;
++ } else {
++ awt_wmgr = XWM.OTHER_WM;
++ }
+ } else if (win.active()) {
+- awt_wmgr = XWM.OTHER_WM;
++ if (XToolkit.getEnv("_JAVA_AWT_WM_NONREPARENTING") != null) {
++ awt_wmgr = XWM.OTHER_NONREPARENTING_WM;
++ } else {
++ awt_wmgr = XWM.OTHER_WM;
++ }
+ }
+ /*
+ * Check for legacy WMs.
+@@ -777,6 +788,8 @@ class XWM implements MWMConstants, XUtilConstants {
+ awt_wmgr = XWM.MOTIF_WM;
+ } else if (isOpenLook()) {
+ awt_wmgr = XWM.OPENLOOK_WM;
++ } else if (XToolkit.getEnv("_JAVA_AWT_WM_NONREPARENTING") != null) {
++ awt_wmgr = XWM.OTHER_NONREPARENTING_WM;
+ } else {
+ awt_wmgr = XWM.OTHER_WM;
+ }
+@@ -1298,6 +1311,7 @@ class XWM implements MWMConstants, XUtilConstants {
+ res = new Insets(28, 6, 6, 6);
+ break;
+ case NO_WM:
++ case OTHER_NONREPARENTING_WM:
+ case LG3D_WM:
+ res = zeroInsets;
+ break;
diff --git a/extra/openjdk6/openjdk6.install b/extra/openjdk6/openjdk6.install
new file mode 100644
index 000000000..653c8fe2f
--- /dev/null
+++ b/extra/openjdk6/openjdk6.install
@@ -0,0 +1,24 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor 2> /dev/null
+ if [ ! -f /etc/ssl/certs/java/cacerts ]; then
+ /usr/sbin/init-jks-keystore
+ fi
+ echo "when you use a non-reparenting window manager"
+ echo "set _JAVA_AWT_WM_NONREPARENTING=1 in"
+ echo "/etc/profile.d/openjdk6.sh"
+# update-desktop-database -q
+}
+
+post_upgrade() {
+ xdg-icon-resource forceupdate --theme hicolor 2> /dev/null
+ if [ ! -f /etc/ssl/certs/java/cacerts ]; then
+ /usr/sbin/init-jks-keystore
+ fi
+# update-desktop-database -q
+}
+
+
+post_remove() {
+ xdg-icon-resource forceupdate --theme hicolor 2> /dev/null
+# update-desktop-database -q
+}
diff --git a/extra/openjdk6/openjdk6.profile b/extra/openjdk6/openjdk6.profile
new file mode 100644
index 000000000..9da4421ef
--- /dev/null
+++ b/extra/openjdk6/openjdk6.profile
@@ -0,0 +1,6 @@
+export J2SDKDIR=/usr/lib/jvm/java-6-openjdk
+export J2REDIR=$J2SDKDIR/jre
+export JAVA_HOME=/usr/lib/jvm/java-6-openjdk
+
+# enable this for non-reparenting window managers
+#export _JAVA_AWT_WM_NONREPARENTING=1
diff --git a/extra/openjdk6/openjdk6.profile.csh b/extra/openjdk6/openjdk6.profile.csh
new file mode 100644
index 000000000..3cb15fd49
--- /dev/null
+++ b/extra/openjdk6/openjdk6.profile.csh
@@ -0,0 +1,6 @@
+setenv J2SDKDIR "/usr/lib/jvm/java-6-openjdk"
+setenv J2REDIR "$J2SDKDIR/jre"
+setenv JAVA_HOME "/usr/lib/jvm/java-6-openjdk"
+
+# enable this for non-reparenting window managers
+#setenv _JAVA_AWT_WM_NONREPARENTING 1
diff --git a/extra/openjpeg/30_fix_build_for_debian.dpatch b/extra/openjpeg/30_fix_build_for_debian.dpatch
new file mode 100644
index 000000000..afd995054
--- /dev/null
+++ b/extra/openjpeg/30_fix_build_for_debian.dpatch
@@ -0,0 +1,70 @@
+
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 30_fix_build_for_debian.dpatch by <robin.cornelius@gmail.com>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Dont apply the -s strip flag to the shared lib debian will do it for us
+## DP: where necessary
+## DP: Remove unnecessary linkage on lstdc++ and lm and add missing linkage for -lm
+
+@DPATCH@
+
+Index: ./Makefile
+===================================================================
+--- ./Makefile (revision 96)
++++ ./Makefile (working copy)
+@@ -18,8 +18,7 @@
+ # Converts cr/lf to just lf
+ DOS2UNIX = dos2unix
+
+-COMPILERFLAGS = -Wall -O3 -ffast-math -std=c99 -fPIC
+-LIBRARIES = -lstdc++
++COMPILERFLAGS = -Wall -O3 -ffast-math -std=c99 -fPIC -g $(EXTRA_CFLAGS)
+
+ MODULES = $(SRCS:.c=.o)
+ CFLAGS = $(COMPILERFLAGS) $(INCLUDE)
+@@ -54,7 +53,7 @@
+ $(AR) r $@ $(MODULES)
+
+ $(SHAREDLIB): $(MODULES)
+- $(CC) -s -shared -Wl,-soname,$(LIBNAME) -o $@ $(MODULES) $(LIBRARIES)
++ $(CC) -shared -Wl,-soname,$(LIBNAME) -o $@ $(MODULES) -lm
+
+ install: OpenJPEG
+ install -d '$(DESTDIR)$(INSTALL_LIBDIR)' '$(DESTDIR)$(INSTALL_INCLUDE)'
+
+Index: ./indexer_JPIP/Makefile
+===================================================================
+--- ./indexer_JPIP/Makefile (revision 95)
++++ ./indexer_JPIP/Makefile (working copy)
+@@ -1,7 +1,6 @@
+ CC = gcc
+
+-LDFLAGS = -lm
+-CFLAGS = -Wall
++CFLAGS = -Wall $(EXTRA_CFLAGS)
+
+ all: index_create
+
+Index: ./codec/Makefile
+===================================================================
+--- ./codec/Makefile (revision 96)
++++ ./codec/Makefile (working copy)
+@@ -1,13 +1,13 @@
+ # Makefile for the main OpenJPEG codecs: j2k_to_image and image_to_j2k
+
+-CFLAGS = -O3 -lstdc++ # -g -p -pg
++CFLAGS = $(EXTRA_CFLAGS) # -g -p -pg
+
+ all: j2k_to_image image_to_j2k
+
+-j2k_to_image: j2k_to_image.c ../libopenjpeg.a
++j2k_to_image: j2k_to_image.c
+ gcc $(CFLAGS) compat/getopt.c index.c convert.c j2k_to_image.c -o j2k_to_image -L.. -lopenjpeg -I ../libopenjpeg/ -lm -ltiff
+
+-image_to_j2k: image_to_j2k.c ../libopenjpeg.a
++image_to_j2k: image_to_j2k.c
+ gcc $(CFLAGS) compat/getopt.c index.c convert.c image_to_j2k.c -o image_to_j2k -L.. -lopenjpeg -I ../libopenjpeg/ -lm -ltiff
+
+ clean:
+
diff --git a/extra/openjpeg/PKGBUILD b/extra/openjpeg/PKGBUILD
new file mode 100644
index 000000000..087da2f78
--- /dev/null
+++ b/extra/openjpeg/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=openjpeg
+pkgver=1.3
+_pkgver=v1_3
+pkgrel=3
+pkgdesc="An open source JPEG 2000 codec"
+arch=(i686 x86_64)
+license=('BSD')
+url="http://www.openjpeg.org"
+depends=('glibc')
+source=(http://www.openjpeg.org/openjpeg_${_pkgver}.tar.gz
+ 30_fix_build_for_debian.dpatch)
+md5sums=('f9a3ccfa91ac34b589e9bf7577ce8ff9'
+ '2557f485513e77f6dcea77f4741c4fa1')
+
+build() {
+ cd "${srcdir}/OpenJPEG_${_pkgver}"
+ patch -Np1 -i "${srcdir}/30_fix_build_for_debian.dpatch" || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+ install -m755 -d "${pkgdir}/usr/share/licenses/openjpeg"
+ tr '\r' '\n' < license.txt > "${pkgdir}/usr/share/licenses/openjpeg/license.txt" || return 1
+ chmod 644 "${pkgdir}/usr/share/licenses/openjpeg/license.txt" || return 1
+ ln -s libopenjpeg.so.2 "${pkgdir}/usr/lib/libopenjpeg.so" || return 1
+}
diff --git a/extra/openldap/PKGBUILD b/extra/openldap/PKGBUILD
new file mode 100644
index 000000000..7e6266083
--- /dev/null
+++ b/extra/openldap/PKGBUILD
@@ -0,0 +1,106 @@
+# $Id: PKGBUILD 109957 2011-02-14 13:18:22Z andrea $
+# Maintainer:
+# Contributor: Judd Vinet <jvinet@zeroflux.org>
+
+pkgname=openldap
+pkgver=2.4.24
+pkgrel=1
+pkgdesc="LDAP Server"
+arch=('i686' 'x86_64')
+license=('custom')
+url="http://www.openldap.org/"
+backup=('etc/openldap/slapd.conf' 'etc/default/slapd' 'etc/conf.d/slapd')
+depends=("libldap>=${pkgver}" 'db' 'tcp_wrappers' 'libfetch' 'util-linux-ng')
+provides=('openldap-clients')
+replaces=('openldap-clients')
+source=("ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/${pkgname}-${pkgver}.tgz"
+ 'slapd'
+ 'slapd.default')
+md5sums=('116fe1e23a7b67686d5e62274367e6c0'
+ '832354417c495f29affd2c772808959d'
+ '6be69f6b7e522cb64cce8703da81ed32')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ export LIBS=-ldb
+ ./configure --prefix=/usr \
+ --mandir=/usr/share/man \
+ --libexecdir=/usr/sbin \
+ --sysconfdir=/etc \
+ --localstatedir=/var/lib/openldap \
+ --enable-bdb \
+ --enable-crypt \
+ --enable-dynamic \
+ --with-threads \
+ --enable-wrappers \
+ --enable-spasswd \
+ --with-cyrus-sasl
+
+ find . -name 'Makefile' -exec \
+ sed -e 's|$(LDAP_LIBDIR)/liblber/liblber.la|/usr/lib/liblber-2.4.so.2|g' \
+ -e 's|$(LDAP_LIBDIR)/libldap/libldap.la|/usr/lib/libldap-2.4.so.2|g' \
+ -e 's|$(LDAP_LIBDIR)/libldap_r/libldap_r.la|/usr/lib/libldap_r-2.4.so.2|g' \
+ -i {} \;
+
+ cd include
+ make
+
+ cd ../libraries
+ for dir in liblutil librewrite liblunicode; do
+ pushd ${dir}
+ make depend
+ make
+ popd
+ done
+
+ cd ../servers
+ make depend
+ make
+
+ cd ../clients
+ make depend
+ make
+
+ cd ../doc/man
+ for dir in man{1,5,8}; do
+ pushd ${dir}
+ make
+ popd
+ done
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ cd servers
+ make DESTDIR=${pkgdir} install
+
+ cd ../clients
+ make DESTDIR=${pkgdir} install
+
+ cd ../doc/man
+ for dir in man{1,5,8}; do
+ pushd ${dir}
+ make DESTDIR=${pkgdir} install
+ popd
+ done
+ rm ${pkgdir}/usr/share/man/man5/ldap.conf.5
+
+ cd ../..
+
+ install -dm700 ${pkgdir}/etc/openldap/slapd.d
+ install -Dm755 ${srcdir}/slapd ${pkgdir}/etc/rc.d/slapd
+ install -Dm644 ${srcdir}/slapd.default ${pkgdir}/etc/conf.d/slapd
+ install -dm700 ${pkgdir}/var/lib/openldap
+
+ # get rid of duplicate default conf files
+ rm ${pkgdir}/etc/openldap/*.default
+
+ # hack to fix screwed up dirs
+ sed -e 's|^pidfile[[:space:]].*$|pidfile /var/run/slapd.pid|g' \
+ -e 's|^argsfile[[:space:]].*$|argsfile /var/run/slapd.args|g' \
+ -i ${pkgdir}/etc/openldap/slapd.conf
+
+ install -Dm644 LICENSE ${pkgdir}/usr/share/licenses/$pkgname/LICENSE
+}
diff --git a/extra/openldap/slapd b/extra/openldap/slapd
new file mode 100755
index 000000000..392075027
--- /dev/null
+++ b/extra/openldap/slapd
@@ -0,0 +1,48 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+[ -f "/etc/conf.d/slapd" ] && . /etc/conf.d/slapd
+
+PID=`pidof -o %PPID /usr/sbin/slapd`
+case "$1" in
+ start)
+ stat_busy "Starting OpenLDAP"
+ if [ -z "$PID" ]; then
+ if [ -z "$SLAPD_SERVICES" ]; then
+ /usr/sbin/slapd $SLAPD_OPTIONS
+ else
+ /usr/sbin/slapd -h "$SLAPD_SERVICES" $SLAPD_OPTIONS
+ fi
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ stat_done
+ fi
+ add_daemon slapd
+ else
+ stat_fail
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping OpenLDAP"
+ [ ! -z "$PID" ] && kill $PID &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm -f /var/run/slapd.pid
+ rm -f /var/run/slapd.args
+ rm_daemon slapd
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 3
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
diff --git a/extra/openldap/slapd.default b/extra/openldap/slapd.default
new file mode 100644
index 000000000..72ae2a6a7
--- /dev/null
+++ b/extra/openldap/slapd.default
@@ -0,0 +1,6 @@
+# slapd normally serves ldap only on all TCP-ports 389. slapd can also
+# service requests on TCP-port 636 (ldaps) and requests via unix
+# sockets.
+# Example usage:
+#SLAPD_SERVICES="ldap://127.0.0.1:389/ ldaps:/// ldapi:///"
+SLAPD_OPTIONS=""
diff --git a/extra/openmpi/PKGBUILD b/extra/openmpi/PKGBUILD
new file mode 100644
index 000000000..f08d2a4e3
--- /dev/null
+++ b/extra/openmpi/PKGBUILD
@@ -0,0 +1,56 @@
+# $Id: PKGBUILD 115803 2011-03-21 16:10:23Z stephane $
+# Maintainer: Stéphane Gaudreault <stephane@archlinux.org>
+pkgname=openmpi
+pkgver=1.5.3
+pkgrel=2
+pkgdesc="High performance message passing library (MPI)"
+arch=('i686' 'x86_64')
+url="http://www.open-mpi.org"
+license=('custom')
+depends=('gcc' 'gcc-fortran' 'openssh' 'valgrind' 'libtool' 'hwloc')
+options=(!libtool)
+source=(http://www.open-mpi.org/software/ompi/v1.5/downloads/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('669565c708deab82ad4069d82675b2020eb0e0c6')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc/${pkgname} \
+ --mandir=/usr/share/man \
+ --enable-mpi-f90 \
+ --libdir=/usr/lib/${pkgname} \
+ --with-threads=posix \
+ --enable-mpi-threads \
+ --enable-smp-locks \
+ --with-valgrind \
+ --enable-memchecker \
+ --enable-debug \
+ --enable-pretty-print-stacktrace \
+ --without-slurm \
+ --with-hwloc=external \
+ --with-libltdl=/usr \
+ FC=/usr/bin/gfortran \
+ LDFLAGS='-Wl,-z,noexecstack'
+
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+
+ # Openmpi's otfinfo conflicts with the one from texlive
+ mv "${pkgdir}"/usr/bin/otfinfo "${pkgdir}"/usr/bin/otfinfompi
+
+ # Openmpi's otfdump conflicts with the one from libotf
+ mv "${pkgdir}"/usr/bin/otfdump "${pkgdir}"/usr/bin/otfdumpompi
+
+ # Symlink points to non-existing ortec++.1
+ rm "${pkgdir}"/usr/share/man/man1/orteCC.1
+
+ install -d -m 755 "${pkgdir}"/etc/ld.so.conf.d
+ echo "/usr/lib/${pkgname}" > "${pkgdir}"/etc/ld.so.conf.d/${pkgname}.conf
+
+ install -Dm644 LICENSE "${pkgdir}"/usr/share/licenses/${pkgname}/LICENSE
+}
diff --git a/extra/openobex/PKGBUILD b/extra/openobex/PKGBUILD
new file mode 100644
index 000000000..3c3363c0a
--- /dev/null
+++ b/extra/openobex/PKGBUILD
@@ -0,0 +1,34 @@
+# $Id: PKGBUILD 101376 2010-11-29 00:43:34Z andrea $
+# Maintainer: Geoffroy Carrier <geoffroy@archlinux.org>
+# Contributor: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: damir <damir@archlinux.org>
+
+pkgname=openobex
+pkgver=1.5
+pkgrel=2
+pkgdesc="Implementation of the OBject EXchange (OBEX) protocol"
+url="http://dev.zuckschwerdt.org/openobex/"
+arch=('i686' 'x86_64')
+license=('GPL' 'LGPL')
+depends=('bluez' 'libusb-compat')
+options=('!libtool')
+source=("http://www.kernel.org/pub/linux/bluetooth/${pkgname}-${pkgver}.tar.bz2")
+md5sums=('fce1b82eafb74bde54fe117372393ba8')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ [ "${CARCH}" = "x86_64" ] && export CFLAGS="${CFLAGS} -fPIC"
+
+ ./configure --prefix=/usr \
+ --enable-apps \
+ --enable-irda \
+ --enable-bluetooth \
+ --enable-usb
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/openslp/PKGBUILD b/extra/openslp/PKGBUILD
new file mode 100644
index 000000000..9ba1f94ab
--- /dev/null
+++ b/extra/openslp/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: PKGBUILD 75251 2010-04-01 04:53:24Z allan $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+pkgname=openslp
+pkgver=1.2.1
+pkgrel=3
+pkgdesc="Open-source implementation of Service Location Protocol"
+arch=(i686 x86_64)
+url="http://www.openslp.org"
+license=('BSD')
+depends=('glibc' 'bash' 'openssl')
+backup=('etc/slp.conf' 'etc/slp.reg' 'etc/slp.spi')
+options=('!libtool')
+source=(http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.gz rc.slpd)
+md5sums=('ff9999d1b44017281dd00ed2c4d32330' '4f6889a5944894b8be2c01404a9566d2')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr || return 1
+ make || return 1
+ make DESTDIR=${pkgdir} DOC_DIR=/usr/share/doc/openslp-${pkgver} install || return 1
+ install -D -m644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+ install -D -m755 ../rc.slpd ${pkgdir}/etc/rc.d/slpd
+}
diff --git a/extra/openslp/rc.slpd b/extra/openslp/rc.slpd
new file mode 100755
index 000000000..4330c3760
--- /dev/null
+++ b/extra/openslp/rc.slpd
@@ -0,0 +1,38 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+PID=`pidof -o %PPID /usr/sbin/slpd`
+case "$1" in
+ start)
+ stat_busy "Starting SLPD"
+ [ -z "$PID" ] && /usr/sbin/slpd
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ echo $PID > /var/run/slpd.pid
+ add_daemon slpd
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping SLPD"
+ [ ! -z "$PID" ] && kill $PID &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm /var/run/slpd.pid
+ rm_daemon slpd
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
diff --git a/extra/opensp/PKGBUILD b/extra/opensp/PKGBUILD
new file mode 100644
index 000000000..0f6e59ad8
--- /dev/null
+++ b/extra/opensp/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 27683 2009-02-24 20:03:03Z eric $
+# Maintainer: dorphell <dorphell@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=opensp
+pkgver=1.5.2
+pkgrel=1
+pkgdesc="A library and a set of tools for validating, parsing and manipulating SGML and XML documents."
+arch=('i686' 'x86_64')
+url="http://openjade.sourceforge.net/"
+license=('BSD')
+depends=('gcc-libs')
+makedepends=('xmlto' 'docbook-xsl')
+options=('!libtool')
+source=(http://download.sourceforge.net/openjade/OpenSP-$pkgver.tar.gz)
+md5sums=('670b223c5d12cee40c9137be86b6c39b')
+
+build() {
+ cd $srcdir/OpenSP-$pkgver
+ ./configure --prefix=/usr --mandir=/usr/share/man \
+ --disable-nls \
+ --enable-http \
+ --enable-default-catalog=/etc/sgml/catalog:/etc/xml/catalog \
+ --enable-default-search-path=/usr/share/sgml:/usr/share/xml \
+ --enable-xml-messages || return 1
+ make || return 1
+ make DESTDIR=$pkgdir install || return 1
+ install -D -m644 COPYING $pkgdir/usr/share/licenses/$pkgname/COPYING
+}
diff --git a/extra/oprofile/PKGBUILD b/extra/oprofile/PKGBUILD
new file mode 100644
index 000000000..9a583d0d7
--- /dev/null
+++ b/extra/oprofile/PKGBUILD
@@ -0,0 +1,38 @@
+# $Id: PKGBUILD 107149 2011-01-21 19:58:21Z eric $
+# Maintainer : Aaron Griffin <aaron@archlinux.org>
+
+pkgname=oprofile
+pkgver=0.9.6
+pkgrel=3
+pkgdesc="A system-wide profiler for Linux systems, capable of profiling all running code at low overhead"
+arch=('i686' 'x86_64')
+url="http://oprofile.sourceforge.net"
+license=('GPL')
+depends=('popt')
+makedepends=('qt3')
+optdepends=('qt3: for oprof_start gui')
+options=('!libtool')
+source=(http://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.gz)
+md5sums=('4e407093ac06200185d5a5e6437d7242')
+sha1sums=('cc62cc58c574e235bc146c8ddc9d9a9af0972fd1')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ ./configure --prefix=/usr \
+ --mandir=/usr/share/man \
+ --with-kernel-support \
+ --with-x
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make DESTDIR="$pkgdir" install
+
+# installing development libraries
+ install -m644 libutil/op_types.h libop/op_sample_file.h libutil/op_list.h libop/op_events.h libop/op_cpu_type.h libop/op_config.h libdb/odb.h "$pkgdir/usr/include"
+ install -m644 libop/libop.a libdb/libodb.a "$pkgdir/usr/lib/"
+ install -m644 libabi/libabi.a "$pkgdir/usr/lib/libopabi.a"
+ install -m644 libutil/libutil.a "$pkgdir/usr/lib/liboputil.a"
+ install -m644 libutil++/libutil++.a "$pkgdir/usr/lib/liboputil++.a"
+}
diff --git a/extra/orage/PKGBUILD b/extra/orage/PKGBUILD
new file mode 100644
index 000000000..dde132ac6
--- /dev/null
+++ b/extra/orage/PKGBUILD
@@ -0,0 +1,36 @@
+# $Id: PKGBUILD 112907 2011-03-07 18:26:07Z andyrtr $
+# Maintainer: Andreas Radke <andyrtr@archlinux.org>
+# Contributor: Tobias Kieslich <tobias (at) archlinux.org>
+
+pkgname=orage
+pkgver=4.8.1
+pkgrel=2
+pkgdesc="A simple calendar application with reminders for Xfce"
+arch=('i686' 'x86_64')
+license=('GPL2')
+url="http://www.xfce.org/projects/orage/"
+groups=('xfce4-goodies')
+depends=('xfce4-panel' 'libical' 'popt' 'libnotify>=0.7.1' 'hicolor-icon-theme')
+makedepends=('intltool' 'xfce4-dev-tools' 'popt')
+options=('!libtool')
+replaces=('xfcalendar')
+install=${pkgname}.install
+source=(http://archive.xfce.org/src/apps/${pkgname}/4.8/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('9c1139ce03e9f309240e712cf31b6a49')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --libexecdir=/usr/lib \
+ --localstatedir=/var \
+ --enable-libical \
+ --disable-static \
+ --disable-debug
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make -j1 DESTDIR=${pkgdir} install
+}
diff --git a/extra/orage/orage.install b/extra/orage/orage.install
new file mode 100644
index 000000000..21b79d2d4
--- /dev/null
+++ b/extra/orage/orage.install
@@ -0,0 +1,11 @@
+post_install() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
diff --git a/extra/orbit2/PKGBUILD b/extra/orbit2/PKGBUILD
new file mode 100644
index 000000000..e141d91a7
--- /dev/null
+++ b/extra/orbit2/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id: PKGBUILD 91981 2010-09-28 16:24:10Z ibiru $
+# Maintainer: Jan de Groot <jan@archlinux.org>
+
+pkgname=orbit2
+pkgver=2.14.19
+pkgrel=1
+pkgdesc="Thin/fast CORBA ORB"
+arch=('i686' 'x86_64')
+license=('LGPL' 'GPL')
+depends=('libidl2>=0.8.11')
+makedepends=('pkgconfig')
+options=('!libtool' '!makeflags')
+url="http://www.gnome.org"
+source=(http://ftp.gnome.org/pub/gnome/sources/ORBit2/2.14/ORBit2-${pkgver}.tar.bz2)
+sha256sums=('55c900a905482992730f575f3eef34d50bda717c197c97c08fa5a6eafd857550')
+
+build() {
+ cd "${srcdir}/ORBit2-${pkgver}"
+ ./configure --prefix=/usr --disable-static
+ make
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/orc/PKGBUILD b/extra/orc/PKGBUILD
new file mode 100644
index 000000000..5e1fc92ce
--- /dev/null
+++ b/extra/orc/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: PKGBUILD 98440 2010-11-08 23:53:36Z ibiru $
+# Maintainer: Ionut Biru <ibiru@archlinux.org>
+pkgname=orc
+pkgver=0.4.11
+pkgrel=1
+pkgdesc="The Oild Runtime Compiler"
+arch=('i686' 'x86_64')
+license=('custom')
+url="http://code.entropywave.com/projects/orc/"
+depends=('glibc')
+options=('!libtool')
+source=(http://code.entropywave.com/download/${pkgname}/${pkgname}-${pkgver}.tar.gz)
+md5sums=('b8b0b148d319422c3ad250c29483b3c4')
+
+build () {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ ./configure --prefix=/usr \
+ --disable-static
+ make
+ make DESTDIR=${pkgdir} install
+ install -Dm644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/COPYING"
+}
diff --git a/extra/orca/PKGBUILD b/extra/orca/PKGBUILD
new file mode 100644
index 000000000..6c83391d6
--- /dev/null
+++ b/extra/orca/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 99644 2010-11-15 23:32:08Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: William Rea <sillywilly@gmail.com>
+
+pkgname=orca
+pkgver=2.32.1
+pkgrel=1
+pkgdesc="A scriptable screen reader and magnifier"
+arch=(i686 x86_64)
+license=('LGPL')
+url="http://www.gnome.org/projects/orca"
+install=orca.install
+options=('!libtool')
+depends=('pygtk>=2.22.0' 'python2-gconf' 'python2-bonobo' 'python2-libgnome' 'python-wnck' 'dbus-python>=0.83.0' 'at-spi>=1.32.0' 'gnome-speech>=0.4.25' 'gnome-mag>=0.16.0' 'brltty' 'hicolor-icon-theme' 'pyxdg')
+makedepends=('intltool')
+replaces=('gnopernicus')
+groups=('gnome-extra')
+source=(http://ftp.gnome.org/pub/GNOME/sources/${pkgname}/2.32/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('44da9da70c1b47bc87fda8f3b9da4cc1df9993d92388434f5707d39b5a832629')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var
+ make
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/orca/orca.install b/extra/orca/orca.install
new file mode 100644
index 000000000..17ca8f78a
--- /dev/null
+++ b/extra/orca/orca.install
@@ -0,0 +1,11 @@
+post_install() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ post_install $1
+}
diff --git a/extra/ortp/PKGBUILD b/extra/ortp/PKGBUILD
new file mode 100644
index 000000000..ca983cbd3
--- /dev/null
+++ b/extra/ortp/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 117400 2011-04-01 15:13:40Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Jaroslaw Swierczynski <swiergot@aur.archlinux.org>
+# Contributor: William Rea <sillywilly@gmail.com>
+
+pkgname=ortp
+pkgver=0.16.5
+pkgrel=1
+pkgdesc="A Real-time Transport Protocol (RTP) library"
+arch=('i686' 'x86_64')
+url="http://www.linphone.org/index.php/eng/code_review/ortp"
+license=('LGPL')
+depends=('openssl')
+options=('!libtool')
+source=("http://ftp.cc.uoc.gr/mirrors/nongnu.org/linphone/${pkgname}/sources/${pkgname}-${pkgver}.tar.gz")
+md5sums=('94546901d14b85f97342f4ecf39489b1')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/ossp/PKGBUILD b/extra/ossp/PKGBUILD
new file mode 100644
index 000000000..964013d1c
--- /dev/null
+++ b/extra/ossp/PKGBUILD
@@ -0,0 +1,43 @@
+# $Id: PKGBUILD 99925 2010-11-19 14:16:05Z heftig $
+# Maintainer: Jan "heftig" Steffens <jan.steffens@gmail.com>
+# Contributor: Jonathan Liu <net147@gmail.com>
+
+pkgname=ossp
+pkgver=1.3.2
+pkgrel=10
+pkgdesc="Emulate OSS device using CUSE"
+arch=(i686 x86_64)
+url="http://sourceforge.net/projects/osspd"
+license=(GPL2)
+depends=('fuse>=2.8.0' 'kernel26>=2.6.35-2')
+makedepends=(libpulse alsa-lib)
+optdepends=("libpulse: PulseAudio backend"
+ "alsa-lib: ALSA backend")
+backup=(etc/conf.d/osspd)
+source=("http://downloads.sourceforge.net/project/osspd/${pkgname}-${pkgver}.tar.gz"
+ osspd.rc.d osspd.conf.d)
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ make DESTDIR="$pkgdir" prefix=/usr UDEVDIR=/lib/udev/rules.d install
+
+ # Make compatible with udev ACLs
+ sed -e 's/GROUP="audio"/SUBSYSTEM=="cuse", MODE="0666"/' \
+ -i "$pkgdir/lib/udev/rules.d/98-osscuse.rules"
+
+ install -D -m644 README "$pkgdir/usr/share/doc/$pkgname/README"
+
+ install -D -m755 "$srcdir/osspd.rc.d" "$pkgdir/etc/rc.d/osspd"
+ install -D -m644 "$srcdir/osspd.conf.d" "$pkgdir/etc/conf.d/osspd"
+}
+
+md5sums=('ee2d8c894de2fa4eb3291804fbc7df45'
+ '69b745e0c499cd50019266a99082ce8b'
+ '5a5a3db1bb3c98d48d4794613cf12ef0')
diff --git a/extra/ossp/osspd.conf.d b/extra/ossp/osspd.conf.d
new file mode 100644
index 000000000..05d0d06c6
--- /dev/null
+++ b/extra/ossp/osspd.conf.d
@@ -0,0 +1,10 @@
+# Define the audio backend to use here.
+# Leave undefined to autodetect.
+
+# Use Pulseaudio slave
+#DSP_SLAVE=/usr/sbin/ossp-padsp
+
+# Use ALSA slave
+#DSP_SLAVE=/usr/sbin/ossp-alsap
+
+# vim:set ft=sh:
diff --git a/extra/ossp/osspd.rc.d b/extra/ossp/osspd.rc.d
new file mode 100755
index 000000000..78d7602ae
--- /dev/null
+++ b/extra/ossp/osspd.rc.d
@@ -0,0 +1,59 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+. /etc/conf.d/osspd
+
+
+if [[ -z "$DSP_SLAVE" ]]; then
+ # Autodetect
+ if [[ -x /usr/bin/pulseaudio ]]; then
+ DSP_SLAVE="/usr/sbin/ossp-padsp"
+ else
+ DSP_SLAVE="/usr/sbin/ossp-alsap"
+ fi
+fi
+
+preclaim_oss=/sys/module/soundcore/parameters/preclaim_oss
+
+PID=`pidof -o %PPID /usr/sbin/osspd`
+case "$1" in
+ start)
+ stat_busy "Starting OSS userspace bridge"
+ if [ -z "$PID" ]; then
+ if [[ -r $preclaim_oss && "$(cat $preclaim_oss)" -eq 1 ]]; then
+ echo "Must boot with soundcore.preclaim_oss=0"
+ stat_die
+ fi
+ modprobe cuse &>/dev/null
+ modprobe -r snd-pcm-oss snd-mixer-oss &>/dev/null
+ sleep 0.1
+ /usr/sbin/osspd --dsp-slave="$DSP_SLAVE"
+ fi
+ if [ -n "$PID" -o $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon osspd
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping OSS userspace bridge"
+ [ -n "$PID" ] && kill $PID &>/dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon osspd
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+
+# vim:set ft=sh:
diff --git a/extra/oxine/PKGBUILD b/extra/oxine/PKGBUILD
new file mode 100644
index 000000000..f1fb5eb5e
--- /dev/null
+++ b/extra/oxine/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: PKGBUILD 59896 2009-11-29 15:47:18Z jgc $
+# Maintainer: Alexander Baldeck <alexander@archlinux.org>
+# Contributor: Rouslan Solomakhin <rouslan@localnet.com>
+# Contributor: dorphell <dorphell@archlinux.org>
+pkgname=oxine
+pkgver=0.7.1
+pkgrel=3
+pkgdesc="oxine is a lightweight, purely osd based xine frontend for set-top boxes and home entertainment systems."
+arch=('i686' 'x86_64')
+depends=('xine-lib>=1.1.16.3' 'libexif>=0.6.17' 'eject' 'libcdio>=0.82' 'curl>=7.19.4' 'libxinerama' 'libsm' 'libxtst')
+makedepends=('pkgconfig')
+license=('GPL')
+url="http://oxine.sourceforge.net/"
+source=(http://downloads.sourceforge.net/sourceforge/oxine/${pkgname}-${pkgver}.tar.gz)
+md5sums=('2a2d05ee21892624e35cf539e532c0dd')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --disable-hal \
+ --without-imagemagick --disable-gdkpixbuf || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/oxygen-gtk/PKGBUILD b/extra/oxygen-gtk/PKGBUILD
new file mode 100644
index 000000000..b5cb2b2fa
--- /dev/null
+++ b/extra/oxygen-gtk/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 114425 2011-03-13 14:07:20Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: birdflesh <antkoul at gmail dot com>
+
+pkgname=oxygen-gtk
+pkgver=1.0.3
+pkgrel=1
+pkgdesc="Port of the default KDE widget theme (Oxygen) to GTK"
+arch=('i686' 'x86_64')
+url="http://kde-look.org/content/show.php/?content=136216"
+license=('LGPL')
+depends=('gtk2')
+makedepends=('cmake')
+source=("http://download.kde.org/stable/${pkgname}/${pkgver}/src/${pkgname}-${pkgver}.tar.bz2")
+md5sums=('df17f4a9b233a9c9e028932f11d05058')
+
+build() {
+ cd ${srcdir}
+ mkdir build
+ cd build
+ cmake ../${pkgname}-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=/usr
+ make
+}
+
+package() {
+ cd ${srcdir}/build
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/pam_fprint/PKGBUILD b/extra/pam_fprint/PKGBUILD
new file mode 100644
index 000000000..7d391ed11
--- /dev/null
+++ b/extra/pam_fprint/PKGBUILD
@@ -0,0 +1,21 @@
+# $Id: PKGBUILD 69402 2010-02-20 12:43:15Z allan $
+# Maintainer: Thomas Baechler <thomas@archlinux.org>
+
+pkgname=pam_fprint
+pkgver=0.2
+pkgrel=2
+pkgdesc="pam module for fingerprint authentication"
+arch=('i686' 'x86_64')
+url="http://reactivated.net/fprint/wiki/Main_Page"
+license=('LGPL')
+groups=('fprint')
+depends=('libfprint' 'pam')
+source=(http://downloads.sourceforge.net/sourceforge/fprint/$pkgname-$pkgver.tar.bz2)
+md5sums=('abfb041ed856aaac5c5c416973451226 ')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ ./configure --prefix=/usr
+ make || return 1
+ make DESTDIR=$pkgdir install
+}
diff --git a/extra/pam_ldap/PKGBUILD b/extra/pam_ldap/PKGBUILD
new file mode 100644
index 000000000..b3418220a
--- /dev/null
+++ b/extra/pam_ldap/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 87842 2010-08-18 13:07:56Z jgc $
+# Maintainer: Paul Mattal <paul@archlinux.org>
+# Contributor: Comete <la_comete@tiscali.fr>
+pkgname=pam_ldap
+pkgver=185
+pkgrel=1
+pkgdesc="LDAP authentication module for the PAM framework"
+arch=(i686 x86_64)
+url="http://www.padl.com/OSS/pam_ldap.html"
+license=('LGPL')
+depends=('libldap>=2.4.22' 'pam')
+backup=(etc/pam_ldap.conf)
+options=(!makeflags)
+source=(http://www.padl.com/download/${pkgname}-${pkgver}.tar.gz)
+md5sums=('639260f0c81d57a6fcbd1cb47dd6c5e7')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --libdir=/lib \
+ --with-ldap-conf-file=/etc/pam_ldap.conf \
+ --mandir=/usr/share/man
+ PATH="${PATH}:${srcdir}/${pkgname}-${pkgver}" make
+ make DESTDIR="${pkgdir}" install
+ mv "${pkgdir}/etc/ldap.conf" "${pkgdir}/etc/pam_ldap.conf"
+}
diff --git a/extra/pango-perl/PKGBUILD b/extra/pango-perl/PKGBUILD
new file mode 100644
index 000000000..45afe7624
--- /dev/null
+++ b/extra/pango-perl/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 104909 2011-01-05 14:41:37Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=pango-perl
+_realname=Pango
+pkgver=1.221
+pkgrel=3
+pkgdesc="Perl bindings for Pango"
+arch=(i686 x86_64)
+license=('LGPL')
+url="http://gtk2-perl.sourceforge.net/"
+makedepends=('perl-extutils-pkgconfig' 'perl-extutils-depends')
+depends=('pango' 'glib-perl' 'cairo-perl')
+options=('!emptydirs')
+source=(http://downloads.sourceforge.net/sourceforge/gtk2-perl/${_realname}-${pkgver}.tar.gz)
+md5sums=('8d257209aa11bd6c3a2beb235c2f103f')
+
+build() {
+ cd "${srcdir}/${_realname}-${pkgver}"
+ # install module in vendor directories.
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+ make install DESTDIR="${pkgdir}"
+}
diff --git a/extra/pango/PKGBUILD b/extra/pango/PKGBUILD
new file mode 100644
index 000000000..6834fa5a6
--- /dev/null
+++ b/extra/pango/PKGBUILD
@@ -0,0 +1,32 @@
+# $Id: PKGBUILD 117877 2011-04-04 21:02:10Z heftig $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=pango
+pkgver=1.28.4
+pkgrel=1
+pkgdesc="A library for layout and rendering of text"
+arch=('i686' 'x86_64')
+license=('LGPL')
+depends=('glib2' 'cairo' 'libxft' 'libthai' 'freetype2')
+makedepends=('gobject-introspection' 'gtk-doc')
+options=('!libtool' '!emptydirs')
+install=pango.install
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/1.28/${pkgname}-${pkgver}.tar.bz2)
+url="http://www.pango.org/"
+sha256sums=('7eb035bcc10dd01569a214d5e2bc3437de95d9ac1cfa9f50035a687c45f05a9f')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ sed -i '/AC_PATH_XTRA/d' configure.in
+ autoreconf -vfi
+
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --with-included-modules=basic-fc
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/pango/pango.install b/extra/pango/pango.install
new file mode 100644
index 000000000..73b0f5bf1
--- /dev/null
+++ b/extra/pango/pango.install
@@ -0,0 +1,21 @@
+# arg 1: the new package version
+post_install() {
+ # we need to ldconfig first, in case xfree86's libs aren't
+ # in ld.so.cache yet
+ sbin/ldconfig -r .
+ usr/bin/pango-querymodules >etc/pango/pango.modules
+}
+
+# arg 1: the new package version
+# arg 2: the old package version
+post_upgrade() {
+ if [ -f usr/etc/pango/pango.modules ]; then
+ rm usr/etc/pango/pango.modules
+ fi
+ post_install $1
+}
+
+# arg 1: the old package version
+pre_remove() {
+ rm etc/pango/pango.modules
+}
diff --git a/extra/pangomm/PKGBUILD b/extra/pangomm/PKGBUILD
new file mode 100644
index 000000000..9e92a9d2d
--- /dev/null
+++ b/extra/pangomm/PKGBUILD
@@ -0,0 +1,34 @@
+# $Id: PKGBUILD 5595 2008-07-18 21:58:26Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgbase=pangomm
+pkgname=('pangomm' 'pangomm-docs')
+pkgver=2.26.3
+pkgrel=1
+arch=(i686 x86_64)
+license=('LGPL')
+makedepends=('pango>=1.28.0' 'glibmm>=2.24.2' 'glibmm-docs>=2.24.2' 'cairomm>=1.8.2' 'pkgconfig')
+source=(http://ftp.gnome.org/pub/GNOME/sources/${pkgname}/2.26/${pkgname}-${pkgver}.tar.bz2)
+conflicts=('gtkmm<2.13.0')
+options=('!libtool')
+url="http://gtkmm.sourceforge.net/"
+md5sums=('1f2712d53918cfb4745c291a67b86156')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+}
+package_pangomm() {
+ pkgdesc="C++ bindings for pango"
+ depends=('pango>=1.28.0' 'glibmm>=2.24.2' 'cairomm>=1.8.2')
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ sed -i -e 's/^doc_subdirs/#doc_subdirs/' Makefile
+ make DESTDIR="${pkgdir}" install
+}
+
+package_pangomm-docs() {
+ pkgdesc="Developer documentation for pangomm"
+ cd "${srcdir}/${pkgbase}-${pkgver}/docs"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/paprefs/PKGBUILD b/extra/paprefs/PKGBUILD
new file mode 100644
index 000000000..a2566b10a
--- /dev/null
+++ b/extra/paprefs/PKGBUILD
@@ -0,0 +1,32 @@
+# $Id: PKGBUILD 101942 2010-12-02 22:07:04Z heftig $
+# Maintainer: Jan "heftig" Steffens <jan.steffens@gmail.com>
+# Contributor: Corrado Primier <bardo@aur.archlinux.org>
+# Contributor: William Rea <sillywilly@gmail.com>
+# Contributor: Daniel J Griffiths <ghost1227@archlinux.us>
+
+pkgname=paprefs
+pkgver=0.9.9
+pkgrel=6
+pkgdesc="A simple GTK-based configuration dialog for PulseAudio"
+arch=(i686 x86_64)
+url="http://0pointer.de/lennart/projects/paprefs"
+license=(GPL)
+depends=(gconfmm gnome-icon-theme libglademm 'pulseaudio=0.9.22' libsigc++)
+makedepends=(intltool)
+source=(http://0pointer.de/lennart/projects/paprefs/$pkgname-$pkgver.tar.gz
+ paprefs.desktop)
+md5sums=('0592ccb28c8f601a8fe3607b64e9f5bc' '20dc978f0bd4a0bf925a4eaf80a2b8f8')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ ./configure --prefix=/usr --disable-lynx
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make DESTDIR="$pkgdir" install
+
+ install -Dm644 "$srcdir/paprefs.desktop" \
+ "$pkgdir/usr/share/applications/paprefs.desktop"
+}
diff --git a/extra/paprefs/paprefs.desktop b/extra/paprefs/paprefs.desktop
new file mode 100644
index 000000000..d51635533
--- /dev/null
+++ b/extra/paprefs/paprefs.desktop
@@ -0,0 +1,13 @@
+[Desktop Entry]
+Version=1.0
+Name=PulseAudio Preferences
+Name[de]=PulseAudio-Einstellungen
+GenericName=Sound Server Preferences
+GenericName[de]=Audio-Dienst-Einstellungen
+Comment=View and modify the configuration of the local sound server
+Comment[de]=Anzeigen und Ändern der Konfiguration des lokalen Audio-Dienstes
+Exec=paprefs
+Icon=preferences-desktop
+StartupNotify=true
+Type=Application
+Categories=Settings;
diff --git a/extra/parted/PKGBUILD b/extra/parted/PKGBUILD
new file mode 100644
index 000000000..d166fd830
--- /dev/null
+++ b/extra/parted/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id: PKGBUILD 82289 2010-06-10 01:52:54Z andrea $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Aaron Griffin <aaron@archlinux.org>
+
+pkgname=parted
+pkgver=2.3
+pkgrel=1
+pkgdesc="A program for creating, destroying, resizing, checking and copying partitions"
+arch=('i686' 'x86_64')
+license=('GPL3')
+url="http://www.gnu.org/software/parted/parted.html"
+depends=('device-mapper' 'e2fsprogs')
+options=('!libtool')
+install=${pkgname}.install
+source=("http://ftp.gnu.org/gnu/${pkgname}/${pkgname}-${pkgver}.tar.gz")
+md5sums=('30ceb6df7e8681891e865e2fe5a7903d')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ ./configure --prefix=/usr \
+ --disable-debug \
+ --disable-rpath \
+ --disable-Werror || return 1
+ make || return 1
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/parted/parted.install b/extra/parted/parted.install
new file mode 100644
index 000000000..5e00699e8
--- /dev/null
+++ b/extra/parted/parted.install
@@ -0,0 +1,18 @@
+info_dir=/usr/share/info
+info_files=(parted.info)
+
+post_install() {
+ for f in ${info_files[@]}; do
+ install-info ${info_dir}/$f.gz ${info_dir}/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ for f in ${info_files[@]}; do
+ install-info --delete ${info_dir}/$f.gz ${info_dir}/dir 2> /dev/null
+ done
+}
diff --git a/extra/partitionmanager/PKGBUILD b/extra/partitionmanager/PKGBUILD
new file mode 100644
index 000000000..5803bf8f6
--- /dev/null
+++ b/extra/partitionmanager/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id: PKGBUILD 89515 2010-09-01 13:48:17Z tpowa $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+# Contributor: Nick B <Shirakawasuna at gmail _dot_com>
+
+pkgname=partitionmanager
+pkgver=1.0.3
+pkgrel=1
+pkgdesc="A KDE 4 utility that allows you to manage disks, partitions, and file systems."
+arch=('i686' 'x86_64')
+url="https://sourceforge.net/projects/partitionman/"
+license=('GPL2')
+depends=('kdebase-runtime' 'parted')
+makedepends=('cmake' 'automoc4' 'pkgconfig')
+optdepends=('e2fsprogs: ext2/3/4 support'
+ 'xfsprogs: XFS support'
+ 'jfsutils: JFS support'
+ 'reiserfsprogs: Reiser support'
+ 'ntfsprogs: NTFS support'
+ 'dosfstools: FAT32 support')
+install=partitionmanager.install
+source=(http://downloads.sourceforge.net/partitionman/$pkgname-$pkgver.tar.bz2)
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ mkdir build
+ cd build
+ cmake ../ -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_SKIP_RPATH=ON || return 1
+ make || return 1
+ make DESTDIR=$pkgdir install || return 1
+}
+md5sums=('1f987d314c717ba2579c69eeef16336d')
diff --git a/extra/partitionmanager/partitionmanager.install b/extra/partitionmanager/partitionmanager.install
new file mode 100644
index 000000000..e70c054ec
--- /dev/null
+++ b/extra/partitionmanager/partitionmanager.install
@@ -0,0 +1,11 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/extra/pathological/ChangeLog b/extra/pathological/ChangeLog
new file mode 100644
index 000000000..3cd114178
--- /dev/null
+++ b/extra/pathological/ChangeLog
@@ -0,0 +1,14 @@
+2010-08-24 Eric Belanger <eric@archlinux.org>
+
+ * pathological 1.1.3-6
+ * Rebuilt against python2
+
+2009-07-10 Eric Belanger <eric@archlinux.org>
+
+ * pathological 1.1.3-5
+ * Removed binary from /usr/share (close FS#15302)
+ * Moved saved games to /var
+ * Fixed segmentation fault
+ * FHS man pages
+ * Added docs
+ * Added ChangeLog
diff --git a/extra/pathological/PKGBUILD b/extra/pathological/PKGBUILD
new file mode 100644
index 000000000..cdc1bd856
--- /dev/null
+++ b/extra/pathological/PKGBUILD
@@ -0,0 +1,40 @@
+# $Id: PKGBUILD 88505 2010-08-24 07:21:52Z eric $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+# Contributor: Eric Johnson <eric@coding-zone.com>
+
+pkgname=pathological
+pkgver=1.1.3
+pkgrel=6
+pkgdesc="A puzzle game with the same feel as frozen bubble"
+arch=('i686' 'x86_64')
+url="http://pathological.sourceforge.net/"
+license=('GPL')
+depends=('python-pygame')
+makedepends=('netpbm')
+install=pathological.install
+changelog=ChangeLog
+source=(http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.gz
+ pathological.desktop pygame_181.patch encoding.patch)
+md5sums=('76a446080c0fed12baf39354d8e0ce4a' '0fbf64860efe3d287eb74681758c4f75'\
+ 'bcd59890efe29a9f8c83227656c31a3e' '06d9221d0d8adaf232a3766870a8bcc0')
+sha1sums=('70b1c9e12704c7fd3b301aa90bceee2e8373b7b9' '9b57f854ce9621542d810a21c61325de343950d7'\
+ '6f0aa0f74a87bd53771f2db6d3117981c4f070d3' '7dbaa9ced7da0094280425a68b4c8db3382f230a')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -p0 < ../encoding.patch
+ patch -p1 < ../pygame_181.patch
+ sed -i 's|X11R6/include/X11|share|' Makefile
+ sed -i 's|usr/games|usr/bin|' Makefile
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+ sed -i 's|#!/usr/bin/python|#!/usr/bin/python2|' "${pkgdir}/usr/share/games/pathological/pathological.py"
+ install -D -m644 ../pathological.desktop "${pkgdir}/usr/share/applications/pathological.desktop"
+ chown root:games "${pkgdir}/var/games"
+ chmod 775 "${pkgdir}/var/games"
+ rm "${pkgdir}/var/games/pathological_scores"
+}
diff --git a/extra/pathological/encoding.patch b/extra/pathological/encoding.patch
new file mode 100644
index 000000000..394875809
--- /dev/null
+++ b/extra/pathological/encoding.patch
@@ -0,0 +1,8 @@
+--- pathological.py.orig 2009-07-10 01:49:39.000000000 -0400
++++ pathological.py 2009-07-10 01:49:53.000000000 -0400
+@@ -1,4 +1,5 @@
+ #!/usr/bin/python
++# -*- coding: utf-8 -*-
+ """
+ Copyright (C) 2003 John-Paul Gignac
+
diff --git a/extra/pathological/pathological.desktop b/extra/pathological/pathological.desktop
new file mode 100644
index 000000000..54817684f
--- /dev/null
+++ b/extra/pathological/pathological.desktop
@@ -0,0 +1,9 @@
+[Desktop Entry]
+Encoding=UTF-8
+Name=Pathological
+Comment=A puzzle game involving paths and marbles
+Exec=pathological
+Icon=pathological.xpm
+Terminal=false
+Type=Application
+Categories=Application;Game;
diff --git a/extra/pathological/pathological.install b/extra/pathological/pathological.install
new file mode 100644
index 000000000..4bc716839
--- /dev/null
+++ b/extra/pathological/pathological.install
@@ -0,0 +1,29 @@
+post_install() {
+if [ ! -e var/games/pathological_scores ]; then
+ cat << _EOF > var/games/pathological_scores
+0 all-boards 1 John-Paul
+0 all-boards 1 Kim
+0 all-boards 1 Matths
+0 all-boards 1 Carrie
+0 all-boards 1 Mike
+0 all-boards 1 Dale
+0 all-boards 1 Alesh
+0 all-boards 1 Thanks to
+0 all-boards 1 everyone who
+0 all-boards 1 contributed!
+_EOF
+fi
+ chown root:games var/games/pathological_scores
+ chmod 664 var/games/pathological_scores
+}
+
+pre_upgrade() {
+ if [ -e usr/share/games/pathological/pathological_scores ]; then
+ mv usr/share/games/pathological/pathological_scores var/games/
+ fi
+}
+
+post_upgrade() {
+ chown root:games var/games/pathological_scores
+ chmod 664 var/games/pathological_scores
+}
diff --git a/extra/pathological/pygame_181.patch b/extra/pathological/pygame_181.patch
new file mode 100644
index 000000000..4789f1519
--- /dev/null
+++ b/extra/pathological/pygame_181.patch
@@ -0,0 +1,10 @@
+--- pathological-1.1.3.orig.orig/pathological.py 2009-04-15 10:50:11.000000000 -0400
++++ pathological-1.1.3.orig/pathological.py 2009-04-15 10:50:56.000000000 -0400
+@@ -169,6 +169,7 @@
+ if not pygame.mixer or not pygame.mixer.music:
+ print "Background music not available."
+ return
++ pygame.mixer.music.stop()
+ fullname = os.path.join('music', name)
+ try:
+ pygame.mixer.music.load(fullname)
diff --git a/extra/pavucontrol/PKGBUILD b/extra/pavucontrol/PKGBUILD
new file mode 100644
index 000000000..989ec4715
--- /dev/null
+++ b/extra/pavucontrol/PKGBUILD
@@ -0,0 +1,32 @@
+# $Id: PKGBUILD 99927 2010-11-19 14:18:06Z heftig $
+# Maintainer: Jan "heftig" Steffens <jan.steffens@gmail.com>
+# Contributor: Corrado Primier <bardo@aur.archlinux.org>
+# Contributor: William Rea <sillywilly@gmail.com>
+# Contributor: Daniel J Griffiths <ghost1227@archlinux.us>
+
+pkgname=pavucontrol
+pkgver=0.9.10
+pkgrel=4
+pkgdesc="A simple GTK based volume control tool for the PulseAudio sound server"
+arch=(i686 x86_64)
+url="http://0pointer.de/lennart/projects/pavucontrol"
+license=(GPL)
+depends=(gnome-icon-theme libcanberra libglademm libpulse libsigc++)
+makedepends=(intltool)
+source=(http://0pointer.de/lennart/projects/$pkgname/$pkgname-$pkgver.tar.gz
+ pavucontrol.desktop)
+md5sums=('b966eb31ec7fd6afa0f1ed7d5ba480b3' '0fc5cb095599eff6915db27e2b9bb881')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ ./configure --prefix=/usr --disable-lynx
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make DESTDIR="$pkgdir" install
+
+ install -Dm644 "$srcdir/pavucontrol.desktop" \
+ "$pkgdir/usr/share/applications/pavucontrol.desktop"
+}
diff --git a/extra/pavucontrol/pavucontrol.desktop b/extra/pavucontrol/pavucontrol.desktop
new file mode 100644
index 000000000..842dc96b6
--- /dev/null
+++ b/extra/pavucontrol/pavucontrol.desktop
@@ -0,0 +1,11 @@
+[Desktop Entry]
+Version=1.0
+Name=PulseAudio Volume Control
+GenericName=Volume Control
+Comment=Adjust the volume level
+Exec=pavucontrol
+Icon=multimedia-volume-control
+StartupNotify=true
+Type=Application
+Categories=AudioVideo;Audio;
+GenericName[en_GB]=Volume Control
diff --git a/extra/pcmanfm/PKGBUILD b/extra/pcmanfm/PKGBUILD
new file mode 100644
index 000000000..f08c841c7
--- /dev/null
+++ b/extra/pcmanfm/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 110558 2011-02-19 22:38:04Z angvp $
+# Maintainer: Angel Velasquez <angvp@archlinux.org>
+# Maintainer: Juergen Hoetzel <juergen@archlinux.org>
+pkgname=pcmanfm
+pkgver=0.9.8
+pkgrel=5
+pkgdesc="File manager of the LXDE Desktop"
+arch=('i686' 'x86_64')
+url="http://pcmanfm.sourceforge.net/"
+license=('GPL')
+groups=('lxde')
+depends=('gtk2' 'desktop-file-utils' 'libfm')
+makedepends=('intltool' 'pkgconfig')
+source=(http://downloads.sourceforge.net/pcmanfm/pcmanfm-$pkgver.tar.gz
+ revert-new-IPC.patch)
+md5sums=('4a7fdc0526ed14e3293d784c0ce27dea' '4bedb071a83ba5a7af1aa43b71a262a9')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ patch -Np1 -i $srcdir/revert-new-IPC.patch
+ ./configure --sysconfdir=/etc --prefix=/usr
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make DESTDIR="$pkgdir" install
+}
diff --git a/extra/pcmanfm/pcmanfm.install b/extra/pcmanfm/pcmanfm.install
new file mode 100644
index 000000000..98965c989
--- /dev/null
+++ b/extra/pcmanfm/pcmanfm.install
@@ -0,0 +1,14 @@
+post_install() {
+ update-mime-database usr/share/mime > /dev/null
+ update-desktop-database -q
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
+
+
diff --git a/extra/pcmanfm/revert-new-IPC.patch b/extra/pcmanfm/revert-new-IPC.patch
new file mode 100644
index 000000000..fa64fde42
--- /dev/null
+++ b/extra/pcmanfm/revert-new-IPC.patch
@@ -0,0 +1,432 @@
+diff -Naur pcmanfm-20101030_10ae31a.orig/src/Makefile.am pcmanfm-20101030_10ae31a/src/Makefile.am
+--- pcmanfm-20101030_10ae31a.orig/src/Makefile.am 2010-10-30 20:36:02.000000000 +0200
++++ pcmanfm-20101030_10ae31a/src/Makefile.am 2010-10-31 09:13:48.000000000 +0100
+@@ -16,7 +16,6 @@
+ pref.c pref.h \
+ utils.c utils.h \
+ gseal-gtk-compat.h \
+- single-inst.c single-inst.h \
+ $(NULL)
+
+ EXTRA_DIST= \
+diff -Naur pcmanfm-20101030_10ae31a.orig/src/pcmanfm.c pcmanfm-20101030_10ae31a/src/pcmanfm.c
+--- pcmanfm-20101030_10ae31a.orig/src/pcmanfm.c 2010-10-30 20:36:02.000000000 +0200
++++ pcmanfm-20101030_10ae31a/src/pcmanfm.c 2010-10-31 09:25:45.000000000 +0100
+@@ -31,6 +31,8 @@
+ #include <string.h>
+ /* socket is used to keep single instance */
+ #include <sys/types.h>
++#include <sys/socket.h>
++#include <sys/un.h>
+ #include <signal.h>
+ #include <unistd.h> /* for getcwd */
+
+@@ -41,13 +43,14 @@
+ #include "volume-manager.h"
+ #include "pref.h"
+ #include "pcmanfm.h"
+-#include "single-inst.h"
++
++static int sock;
++GIOChannel* io_channel = NULL;
+
+ static int signal_pipe[2] = {-1, -1};
+ gboolean daemon_mode = FALSE;
+
+ static char** files_to_open = NULL;
+-static int n_files_to_open = 0;
+ static char* profile = NULL;
+ static gboolean no_desktop = FALSE;
+ static gboolean show_desktop = FALSE;
+@@ -80,25 +83,13 @@
+ { NULL }
+ };
+
+-/* single instance command id */
+-enum {
+- CMD_INVALID,
+- CMD_CWD,
+- CMD_PROFILE,
+- CMD_DESKTOP,
+- CMD_DESKTOP_OFF,
+- CMD_DAEMON_MODE,
+- CMD_DESKTOP_PREF,
+- CMD_SET_WALLPAPER,
+- CMD_WALLPAPER_MODE,
+- CMD_SHOW_PREF,
+- CMD_FILES_TO_OPEN,
+- CMD_EOF
+-};
+-
+ static const char* valid_wallpaper_modes[] = {"color", "stretch", "fit", "center", "tile"};
+
++static gboolean single_instance_check();
++static void single_instance_finalize();
++static void get_socket_name(char* buf, int len);
+ static gboolean pcmanfm_run();
++static gboolean on_socket_event(GIOChannel* ioc, GIOCondition cond, gpointer data);
+
+ /* it's not safe to call gtk+ functions in unix signal handler
+ * since the process is interrupted here and the state of gtk+ is unpredictable. */
+@@ -121,97 +112,6 @@
+ return TRUE;
+ }
+
+-static gboolean on_single_inst_command(int cmd, SingleInstCmdData* data)
+-{
+- switch(cmd)
+- {
+- case CMD_CWD:
+- g_free(ipc_cwd);
+- ipc_cwd = single_inst_get_str(data, NULL);
+- break;
+- case CMD_PROFILE:
+- /* Not supported */
+- break;
+- case CMD_DESKTOP:
+- single_inst_get_bool(data, &show_desktop);
+- break;
+- case CMD_DESKTOP_OFF:
+- single_inst_get_bool(data, &desktop_off);
+- break;
+- case CMD_DAEMON_MODE:
+- /* Not supported */
+- break;
+- case CMD_DESKTOP_PREF:
+- single_inst_get_bool(data, &desktop_pref);
+- break;
+- case CMD_SET_WALLPAPER:
+- g_free(set_wallpaper);
+- set_wallpaper = single_inst_get_str(data, NULL);
+- break;
+- case CMD_WALLPAPER_MODE:
+- g_free(wallpaper_mode);
+- wallpaper_mode = single_inst_get_str(data, NULL);
+- break;
+- case CMD_SHOW_PREF:
+- single_inst_get_int(data, &show_pref);
+- break;
+- case CMD_FILES_TO_OPEN:
+- {
+- g_strfreev(files_to_open);
+- n_files_to_open = 0;
+- files_to_open = single_inst_get_strv(data, &n_files_to_open);
+- }
+- break;
+- case CMD_EOF:
+- {
+- int i;
+- /* canonicalize filename if needed. */
+- for(i = 0; i < n_files_to_open; ++i)
+- {
+- char* file = files_to_open[i];
+- char* scheme = g_uri_parse_scheme(file);
+- if(scheme) /* a valid URI */
+- {
+- /* FIXME: should we canonicalize URIs? and how about file:///? */
+- g_free(scheme);
+- }
+- else /* a file path */
+- {
+- files_to_open[i] = fm_canonicalize_filename(file, ipc_cwd);
+- g_free(file);
+- }
+- }
+-
+- /* handle the parsed result and run the main program */
+- pcmanfm_run();
+- }
+- break;
+- }
+- return TRUE;
+-}
+-
+-/* we're not the first instance. pass the argv to the existing one. */
+-static void pass_args_to_existing_instance()
+-{
+- /* send our current working dir to existing instance via IPC. */
+- ipc_cwd = g_get_current_dir();
+- single_inst_send_str(CMD_CWD, ipc_cwd);
+- g_free(ipc_cwd);
+-
+- single_inst_send_bool(CMD_DESKTOP, show_desktop);
+- single_inst_send_bool(CMD_DESKTOP_OFF, desktop_off);
+- single_inst_send_bool(CMD_DESKTOP_PREF, desktop_pref);
+- single_inst_send_str(CMD_SET_WALLPAPER, set_wallpaper);
+- single_inst_send_str(CMD_WALLPAPER_MODE, wallpaper_mode);
+- single_inst_send_int(CMD_SHOW_PREF, show_pref);
+- /* single_inst_send_bool(CMD_FIND_FILES, find_files); */
+-
+- single_inst_send_strv(CMD_FILES_TO_OPEN, files_to_open);
+- single_inst_send_bool(CMD_EOF, TRUE); /* all args have been sent. */
+-
+- single_inst_finalize();
+-}
+-
+ int main(int argc, char** argv)
+ {
+ FmConfig* config;
+@@ -230,17 +130,10 @@
+ return 1;
+ }
+
+- /* ensure that there is only one instance of pcmanfm. */
+- switch(single_inst_init("pcmanfm", on_single_inst_command))
+- {
+- case SINGLE_INST_CLIENT: /* we're not the first instance. */
+- pass_args_to_existing_instance();
+- gdk_notify_startup_complete();
+- return 0;
+- case SINGLE_INST_ERROR: /* error happened. */
+- single_inst_finalize();
+- return 1;
+- }
++ /* ensure that there is only one instance of pcmanfm.
++ if there is an existing instance, command line arguments
++ will be passed to the existing instance, and exit() will be called here. */
++ single_instance_check();
+
+ if(pipe(signal_pipe) == 0)
+ {
+@@ -274,13 +167,240 @@
+ fm_volume_manager_finalize();
+ }
+
+- single_inst_finalize();
++ single_instance_finalize();
++
+ fm_gtk_finalize();
+
+ g_object_unref(config);
+ return 0;
+ }
+
++inline static void buf_append_str(GByteArray* buf, const char* str)
++{
++ int len;
++ if(G_LIKELY(str))
++ {
++ len = strlen(str) + 1;
++ g_byte_array_append(buf, (guint8*)&len, sizeof(len));
++ g_byte_array_append(buf, (guint8*)str, len);
++ }
++ else
++ {
++ len = 0;
++ g_byte_array_append(buf, (guint8*)&len, sizeof(len));
++ }
++}
++
++inline static GByteArray* args_to_ipc_buf()
++{
++ int i, len;
++ GByteArray* buf = g_byte_array_sized_new(4096);
++ /* send our current working dir to existing instance via IPC. */
++ ipc_cwd = g_get_current_dir();
++ buf_append_str(buf, ipc_cwd);
++ g_free(ipc_cwd);
++
++ /* g_byte_array_append(buf, (guint8*)&new_tab, sizeof(new_tab)); */
++ g_byte_array_append(buf, (guint8*)&show_desktop, sizeof(show_desktop));
++ g_byte_array_append(buf, (guint8*)&desktop_off, sizeof(desktop_off));
++ g_byte_array_append(buf, (guint8*)&desktop_pref, sizeof(desktop_pref));
++ buf_append_str(buf, set_wallpaper);
++ buf_append_str(buf, wallpaper_mode);
++ g_byte_array_append(buf, (guint8*)&show_pref, sizeof(show_pref));
++ g_byte_array_append(buf, (guint8*)&find_files, sizeof(find_files));
++ g_byte_array_append(buf, (guint8*)&no_desktop, sizeof(no_desktop));
++
++ len = files_to_open ? g_strv_length(files_to_open) : 0;
++ g_byte_array_append(buf, (guint8*)&len, sizeof(len));
++ for(i = 0; i < len; ++i)
++ buf_append_str(buf, files_to_open[i]);
++
++ return buf;
++}
++
++inline static gboolean buf_read_bool(const char**p)
++{
++ gboolean ret;
++ memcpy(&ret, *p, sizeof(ret));
++ *p += sizeof(ret);
++ return ret;
++}
++
++inline static int buf_read_int(const char**p)
++{
++ int ret;
++ memcpy(&ret, *p, sizeof(ret));
++ *p += sizeof(ret);
++ return ret;
++}
++
++inline static char* buf_read_str(const char**p)
++{
++ char* ret;
++ int len = buf_read_int(p);
++ if(len > 0)
++ {
++ ret = g_malloc(len);
++ memcpy(ret, *p, len);
++ *p += len;
++ }
++ else
++ ret = NULL;
++ return ret;
++}
++
++inline static void ipc_buf_to_args(GByteArray* buf)
++{
++ int i, len;
++ char* p = buf->data;
++ char* cwd = buf_read_str(&p);
++ /* new_tab = buf_read_bool(&p); */
++ show_desktop = buf_read_bool(&p);
++ desktop_off = buf_read_bool(&p);
++ desktop_pref = buf_read_bool(&p);
++ g_free(set_wallpaper);
++ set_wallpaper = buf_read_str(&p);
++ g_free(wallpaper_mode);
++ wallpaper_mode = buf_read_str(&p);
++ show_pref = buf_read_int(&p);
++ find_files = buf_read_bool(&p);
++ no_desktop = buf_read_bool(&p);
++
++ len = buf_read_int(&p);
++ /* g_debug("len = %d", len); */
++ if(len > 0)
++ {
++ files_to_open = g_new(char*, len + 1);
++ for(i = 0; i < len; ++i)
++ {
++ char* file = buf_read_str(&p);
++ char* scheme = g_uri_parse_scheme(file);
++ if(scheme) /* a valid URI */
++ {
++ /* FIXME: should we canonicalize URIs? and how about file:///? */
++ files_to_open[i] = file;
++ g_free(scheme);
++ }
++ else /* a file path */
++ {
++ files_to_open[i] = fm_canonicalize_filename(file, cwd);
++ g_free(file);
++ }
++ }
++ files_to_open[i] = NULL;
++ }
++ else
++ files_to_open = NULL;
++ g_free(cwd);
++}
++
++gboolean on_socket_event( GIOChannel* ioc, GIOCondition cond, gpointer data )
++{
++ int client, r;
++ socklen_t addr_len = 0;
++ struct sockaddr_un client_addr ={ 0 };
++ static char buf[ 1024 ];
++ GByteArray* args;
++
++ if ( cond & G_IO_IN )
++ {
++ client = accept( g_io_channel_unix_get_fd( ioc ), (struct sockaddr *)&client_addr, &addr_len );
++ if ( client != -1 )
++ {
++ args = g_byte_array_sized_new(4096);
++ while( (r = read( client, buf, sizeof(buf) )) > 0 )
++ g_byte_array_append( args, (guint8*)buf, r);
++ shutdown( client, 2 );
++ close( client );
++ ipc_buf_to_args(args);
++ g_byte_array_free( args, TRUE );
++ pcmanfm_run();
++ }
++ }
++ return TRUE;
++}
++
++void get_socket_name( char* buf, int len )
++{
++ char* dpy = gdk_get_display();
++ g_snprintf( buf, len, "/tmp/.pcmanfm-socket%s-%s", dpy, g_get_user_name() );
++ g_free( dpy );
++}
++
++gboolean single_instance_check()
++{
++ struct sockaddr_un addr;
++ int addr_len;
++ int ret;
++ int reuse;
++
++ if((sock = socket(AF_UNIX, SOCK_STREAM, 0)) == -1)
++ {
++ ret = 1;
++ goto _exit;
++ }
++
++ /* FIXME: use abstract socket */
++ addr.sun_family = AF_UNIX;
++ get_socket_name(addr.sun_path, sizeof( addr.sun_path ));
++#ifdef SUN_LEN
++ addr_len = SUN_LEN(&addr);
++#else
++ addr_len = strlen( addr.sun_path ) + sizeof( addr.sun_family );
++#endif
++
++ /* try to connect to existing instance */
++ if(connect(sock, (struct sockaddr*)&addr, addr_len) == 0)
++ {
++ /* connected successfully */
++ GByteArray* buf = args_to_ipc_buf();
++ write(sock, buf->data, buf->len);
++ g_byte_array_free(buf, TRUE);
++
++ shutdown( sock, 2 );
++ close( sock );
++ ret = 0;
++ goto _exit;
++ }
++
++ /* There is no existing server, and we are in the first instance. */
++ unlink( addr.sun_path ); /* delete old socket file if it exists. */
++ reuse = 1;
++ ret = setsockopt( sock, SOL_SOCKET, SO_REUSEADDR, &reuse, sizeof(reuse) );
++ if(bind(sock, (struct sockaddr*)&addr, addr_len) == -1)
++ {
++ ret = 1;
++ goto _exit;
++ }
++
++ io_channel = g_io_channel_unix_new(sock);
++ g_io_channel_set_encoding(io_channel, NULL, NULL);
++ g_io_channel_set_buffered(io_channel, FALSE);
++ g_io_add_watch(io_channel, G_IO_IN,
++ (GIOFunc)on_socket_event, NULL);
++ if(listen(sock, 5) == -1)
++ {
++ ret = 1;
++ goto _exit;
++ }
++ return TRUE;
++
++_exit:
++
++ gdk_notify_startup_complete();
++ exit( ret );
++}
++
++void single_instance_finalize()
++{
++ char lock_file[256];
++ shutdown(sock, 2);
++ g_io_channel_unref(io_channel);
++ close(sock);
++ get_socket_name(lock_file, sizeof( lock_file ));
++ unlink(lock_file);
++}
++
+ static FmJobErrorAction on_file_info_job_error(FmFileInfoJob* job, GError* err, FmJobErrorSeverity severity, gpointer user_data)
+ {
+ if(err->domain == G_IO_ERROR)
diff --git a/extra/pdksh/PKGBUILD b/extra/pdksh/PKGBUILD
new file mode 100644
index 000000000..6f592e39c
--- /dev/null
+++ b/extra/pdksh/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 30639 2009-03-21 04:22:46Z eric $
+# Maintainer: Aaron Griffin <aaron@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=pdksh
+pkgver=5.2.14
+pkgrel=5
+pkgdesc="A public domain clone of the AT&T Korn shell"
+arch=('i686' 'x86_64')
+url="http://www.cs.mun.ca/~michael/pdksh/"
+license=('custom')
+depends=('glibc')
+install=$pkgname.install
+source=(ftp://ftp.cs.mun.ca/pub/$pkgname/$pkgname-$pkgver.tar.gz $pkgname-$pkgver.patch usr_ksh.sh)
+md5sums=('871106b3bd937e1afba9f2ef7c43aef3' 'f11d1e711627d21a547c09e344e30dd3'\
+ '56084a657ecafd5dd0813a6056036712')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ patch -Np1 -i ../$pkgname-$pkgver.patch || return 1
+ ./configure --prefix=/ --mandir=/usr/share/man || return 1
+ make || return 1
+ make prefix=$pkgdir mandir=$pkgdir/usr/share/man/man1 install || return 1
+ install -D -m 755 ${srcdir}/usr_ksh.sh ${pkgdir}/usr/bin/ksh || return 1
+ install -D -m644 LEGAL $pkgdir/usr/share/licenses/$pkgname/LICENSE || return 1
+}
+# vim: ts=2 sw=2 et ft=sh
diff --git a/extra/pdksh/pdksh-5.2.14.patch b/extra/pdksh/pdksh-5.2.14.patch
new file mode 100644
index 000000000..134e04f34
--- /dev/null
+++ b/extra/pdksh/pdksh-5.2.14.patch
@@ -0,0 +1,26 @@
+diff -ru pdksh-5.2.14/siglist.sh pdksh-5.2.14.arch/siglist.sh
+--- pdksh-5.2.14/siglist.sh 1996-09-18 12:52:41.000000000 -0400
++++ pdksh-5.2.14.arch/siglist.sh 2004-09-06 08:17:15.000000000 -0400
+@@ -11,19 +11,18 @@
+ out=tmpo$$.c
+ ecode=1
+ trapsigs='0 1 2 13 15'
+-trap 'rm -f $in $out; trap 0; exit $ecode' $trapsigs
++trap 'rm -f $in $out; exit $ecode' $trapsigs
+
+ CPP="${1-cc -E}"
+
+ # The trap here to make up for a bug in bash (1.14.3(1)) that calls the trap
+-(trap $trapsigs;
+- echo '#include "sh.h"';
++(echo '#include "sh.h"';
+ echo ' { QwErTy SIGNALS , "DUMMY" , "hook for number of signals" },';
+ sed -e '/^[ ]*#/d' -e 's/^[ ]*\([^ ][^ ]*\)[ ][ ]*\(.*[^ ]\)[ ]*$/#ifdef SIG\1\
+ { QwErTy SIG\1 , "\1", "\2" },\
+ #endif/') > $in
+ $CPP $in > $out
+-sed -n 's/{ QwErTy/{/p' < $out | awk '{print NR, $0}' | sort +2n +0n |
++sed -n 's/{ QwErTy/{/p' < $out | awk '{print NR, $0}' | sort -g --key=3 |
+ sed 's/^[0-9]* //' |
+ awk 'BEGIN { last=0; nsigs=0; }
+ {
diff --git a/extra/pdksh/pdksh.install b/extra/pdksh/pdksh.install
new file mode 100644
index 000000000..844a4e731
--- /dev/null
+++ b/extra/pdksh/pdksh.install
@@ -0,0 +1,22 @@
+post_install() {
+ if [ ! "`grep /bin/ksh etc/shells`" ]; then
+ echo "updating /etc/shells... done."
+ sed -i "s|/bin/bash|/bin/bash\n/bin/ksh|" etc/shells
+ else
+ sed -i "s|/usr/bin/ksh|/bin/ksh|" etc/shells
+
+ echo ""
+ echo ">> WARNING: /usr/bin/ksh has moved to /bin/ksh,"
+ echo ">> please update your user accounts as needed"
+ echo ""
+ fi
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ echo -ne "\nupdating /etc/shells... "
+ sed -i "s|/bin/ksh||" etc/shells
+}
diff --git a/extra/pdksh/usr_ksh.sh b/extra/pdksh/usr_ksh.sh
new file mode 100644
index 000000000..17a96d1bf
--- /dev/null
+++ b/extra/pdksh/usr_ksh.sh
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+echo "WARNING: you should be calling ksh with /bin/ksh,"
+echo "not with /usr/bin/ksh. Please execute chsh to fix"
+echo "this. Legacy /usr/bin/ksh support will go away!"
+echo ""
+
+exec /bin/ksh $@
+
diff --git a/extra/pdns-recursor/PKGBUILD b/extra/pdns-recursor/PKGBUILD
new file mode 100644
index 000000000..c344995ac
--- /dev/null
+++ b/extra/pdns-recursor/PKGBUILD
@@ -0,0 +1,32 @@
+# $Id: PKGBUILD 109116 2011-02-06 10:26:46Z andyrtr $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=pdns-recursor
+pkgver=3.3
+pkgrel=1
+pkgdesc="PowerDNS recursor"
+url="http://www.powerdns.com"
+license=('GPL')
+arch=('i686' 'x86_64')
+depends=('gcc-libs>=4.5.2' 'lua')
+makedepends=('boost')
+#options=(!makeflags)
+backup=('etc/powerdns/recursor.conf')
+source=(http://downloads.powerdns.com/releases/${pkgname}-${pkgver}.tar.bz2
+ pdns-recursor.rc)
+md5sums=('87daeeebb6f7af9e07814ff6c43300dd'
+ '5b3aa3c8ed2edf55821af16cfb7ef252')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ LUA=1 LUA_CPPFLAGS_CONFIG= LUA_LIBS_CONFIG=-llua make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+ install -d -m755 "${pkgdir}/etc/rc.d"
+ mv "${pkgdir}/etc/powerdns/recursor.conf-dist" "${pkgdir}/etc/powerdns/recursor.conf"
+ install -m755 "${srcdir}/pdns-recursor.rc" "${pkgdir}/etc/rc.d/pdns-recursor"
+ rm -rf "${pkgdir}/etc/init.d"
+}
diff --git a/extra/pdns-recursor/pdns-recursor.rc b/extra/pdns-recursor/pdns-recursor.rc
new file mode 100644
index 000000000..992f0b086
--- /dev/null
+++ b/extra/pdns-recursor/pdns-recursor.rc
@@ -0,0 +1,35 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+case "$1" in
+ start)
+ stat_busy "Starting PowerDNS recursor"
+ ! /usr/sbin/rec_control ping > /dev/null 2>&1 && /usr/sbin/pdns_recursor --daemon
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon pdns-recursor
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping PowerDNS recursor"
+ rec_control quit > /dev/null 2>&1
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon pdns-recursor
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 3
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
diff --git a/extra/pdns/2.9.18-default-mysql-options.patch b/extra/pdns/2.9.18-default-mysql-options.patch
new file mode 100755
index 000000000..a9048e13e
--- /dev/null
+++ b/extra/pdns/2.9.18-default-mysql-options.patch
@@ -0,0 +1,13 @@
+diff -Nur pdns-2.9.18.orig/modules/gmysqlbackend/smysql.cc pdns-2.9.18/modules/gmysqlbackend/smysql.cc
+--- pdns-2.9.18.orig/modules/gmysqlbackend/smysql.cc 2005-04-23 23:40:15.000000000 +0200
++++ pdns-2.9.18/modules/gmysqlbackend/smysql.cc 2005-07-17 10:38:35.363597586 +0200
+@@ -15,6 +15,9 @@
+ const string &password)
+ {
+ mysql_init(&d_db);
++#if MYSQL_VERSION_ID > 32349
++ mysql_options(&d_db, MYSQL_READ_DEFAULT_GROUP, "client");
++#endif
+ if (!mysql_real_connect(&d_db, host.empty() ? 0 : host.c_str(),
+ user.empty() ? 0 : user.c_str(),
+ password.empty() ? 0 : password.c_str(),
diff --git a/extra/pdns/PKGBUILD b/extra/pdns/PKGBUILD
new file mode 100644
index 000000000..9506deee3
--- /dev/null
+++ b/extra/pdns/PKGBUILD
@@ -0,0 +1,54 @@
+# $Id: PKGBUILD 115160 2011-03-17 09:56:37Z andrea $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=pdns
+pkgver=2.9.22
+pkgrel=7
+pkgdesc="A modern, advanced and high performance authoritative-only nameserver"
+arch=(i686 x86_64)
+url="http://www.powerdns.com"
+license=('GPL')
+depends=('gcc-libs' 'zlib' 'postgresql-libs' 'libmysqlclient' 'sqlite3' 'libldap')
+makedepends=('boost')
+provides=('pdns-ldap' 'pdns-mysql' 'pdns-sqlite' 'pdns-pgsql')
+replaces=('pdns-ldap' 'pdns-mysql' 'pdns-sqlite' 'pdns-pgsql')
+conflicts=('pdns-ldap' 'pdns-mysql' 'pdns-sqlite' 'pdns-pgsql')
+install=pdns.install
+options=(!makeflags !libtool)
+backup=('etc/powerdns/pdns.conf')
+source=(http://downloads.powerdns.com/releases/${pkgname}-${pkgver}.tar.gz
+ 2.9.18-default-mysql-options.patch
+ pdns-2.9.22-gcc44.patch
+ pdns.rc
+ pdns.conf)
+md5sums=('8a6ff842733aca885577eb54e983a1ff'
+ '90fb32e843326d14359c508cef855929'
+ '530642273005bdabae27792098834ea6'
+ '16e2d32e9781be7afa8f1700740bcdb0'
+ 'a390ab49c4fcde205629be33bddc2e6c')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i "${srcdir}/2.9.18-default-mysql-options.patch"
+ patch -Np1 -i "${srcdir}/pdns-2.9.22-gcc44.patch"
+ touch AUTHORS NEWS
+ libtoolize --force --copy
+ aclocal
+ autoconf
+ automake --add-missing
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc/powerdns \
+ --libexecdir=/usr/lib \
+ --libdir=/usr/lib/powerdns \
+ --mandir=/usr/share/man \
+ --with-modules="" \
+ --with-dynmodules="ldap pipe gmysql gpgsql gsqlite3 geo" \
+ --disable-recursor \
+ --disable-static
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/etc/rc.d"
+ rm "${pkgdir}/etc/powerdns/pdns.conf-dist"
+ install -m644 "${srcdir}/pdns.conf" "${pkgdir}/etc/powerdns/"
+ install -m755 "${srcdir}/pdns.rc" "${pkgdir}/etc/rc.d/pdns"
+}
diff --git a/extra/pdns/pdns-2.9.22-gcc44.patch b/extra/pdns/pdns-2.9.22-gcc44.patch
new file mode 100644
index 000000000..35c1c7777
--- /dev/null
+++ b/extra/pdns/pdns-2.9.22-gcc44.patch
@@ -0,0 +1,22 @@
+diff -ur pdns-2.9.22.orig/pdns/dnsparser.cc pdns-2.9.22/pdns/dnsparser.cc
+--- pdns-2.9.22.orig/pdns/dnsparser.cc 2008-11-15 22:32:46.000000000 +0200
++++ pdns-2.9.22/pdns/dnsparser.cc 2009-07-06 22:09:02.000000000 +0300
+@@ -16,6 +16,7 @@
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
++#include <stdio.h>
+ #include "dnsparser.hh"
+ #include "dnswriter.hh"
+ #include <boost/lexical_cast.hpp>
+diff -ur pdns-2.9.22.orig/pdns/rcpgenerator.cc pdns-2.9.22/pdns/rcpgenerator.cc
+--- pdns-2.9.22.orig/pdns/rcpgenerator.cc 2008-11-15 23:20:27.000000000 +0200
++++ pdns-2.9.22/pdns/rcpgenerator.cc 2009-07-06 22:07:26.000000000 +0300
+@@ -16,6 +16,7 @@
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
++#include <stdio.h>
+ #include "rcpgenerator.hh"
+ #include "dnsparser.hh"
+ #include "misc.hh"
diff --git a/extra/pdns/pdns.conf b/extra/pdns/pdns.conf
new file mode 100644
index 000000000..1bf24e73f
--- /dev/null
+++ b/extra/pdns/pdns.conf
@@ -0,0 +1,290 @@
+# Autogenerated configuration file template
+#################################
+# allow-axfr-ips If disabled, DO allow zonetransfers from these IP addresses
+#
+# allow-axfr-ips=
+
+#################################
+# allow-recursion List of netmasks that are allowed to recurse
+#
+allow-recursion=127.0.0.1
+
+#################################
+# allow-recursion-override Local data overrrides hosts on the internet
+#
+allow-recursion-override=yes
+
+#################################
+# cache-ttl Seconds to store packets in the PacketCache
+#
+cache-ttl=60
+
+#################################
+# chroot If set, chroot to this directory for more security
+#
+chroot=/var/empty
+
+#################################
+# config-dir Location of configuration directory (pdns.conf)
+#
+config-dir=/etc
+
+#################################
+# config-name Name of this virtual configuration - will rename the binary image
+#
+# config-name=
+
+#################################
+# control-console Debugging switch - don't use
+#
+# control-console=no
+
+#################################
+# daemon Operate as a daemon
+#
+daemon=yes
+
+#################################
+# default-soa-name name to insert in the SOA record if none set in the backend
+#
+# default-soa-name=a.misconfigured.powerdns.server
+
+#################################
+# disable-axfr Disable zonetransfers but do allow TCP queries
+#
+# disable-axfr=no
+
+#################################
+# disable-tcp Do not listen to TCP queries
+#
+# disable-tcp=no
+
+#################################
+# distributor-threads Default number of Distributor (backend) threads to start
+#
+distributor-threads=3
+
+#################################
+# fancy-records Process URL and MBOXFW records
+#
+# fancy-records=no
+
+#################################
+# guardian Run within a guardian process
+#
+guardian=yes
+
+#################################
+# launch Which backends to launch and order to query them in
+#
+#launch=
+
+#################################
+# lazy-recursion Only recurse if question cannot be answered locally
+#
+lazy-recursion=yes
+
+#################################
+# load-modules Load this module - supply absolute or relative path
+#
+# load-modules=
+
+#################################
+# local-address Local IP address to which we bind
+#
+local-address=127.0.0.1
+
+#################################
+# local-ipv6 Local IP address to which we bind
+#
+# local-ipv6=
+
+#################################
+# local-port The port on which we listen
+#
+local-port=53
+
+#################################
+# log-dns-details If PDNS should log failed update requests
+#
+#log-dns-details=off
+
+#################################
+# log-failed-updates If PDNS should log failed update requests
+#
+#log-failed-updates=off
+
+#################################
+# logfile Logfile to use
+#
+# logfile=pdns.log
+
+#################################
+# logging-facility Log under a specific facility
+#
+# logging-facility=
+
+#################################
+# loglevel Amount of logging. Higher is more. Do not set below 3
+#
+loglevel=3
+
+#################################
+# master Act as a master
+#
+# master=no
+
+#################################
+# max-queue-length Maximum queuelength before considering situation lost
+#
+# max-queue-length=5000
+
+#################################
+# max-tcp-connections Maximum number of TCP connections
+#
+# max-tcp-connections=10
+
+#################################
+# module-dir Default directory for modules
+#
+module-dir=/usr/lib/powerdns
+
+#################################
+# negquery-cache-ttl Seconds to store packets in the PacketCache
+#
+negquery-cache-ttl=60
+
+#################################
+# only-soa Make sure that no SOA serial is less than this number
+#
+# only-soa=org
+
+#################################
+# out-of-zone-additional-processing Do out of zone additional processing
+#
+# out-of-zone-additional-processing=no
+
+#################################
+# query-cache-ttl Seconds to store packets in the PacketCache
+#
+# query-cache-ttl=20
+
+#################################
+# query-logging Hint backends that queries should be logged
+#
+# query-logging=no
+
+#################################
+# queue-limit Maximum number of milliseconds to queue a query
+#
+# queue-limit=1500
+
+#################################
+# receiver-threads Number of receiver threads to launch
+#
+# receiver-threads=1
+
+#################################
+# recursive-cache-ttl Seconds to store packets in the PacketCache
+#
+# recursive-cache-ttl=10
+
+#################################
+# recursor If recursion is desired, IP address of a recursing nameserver
+#
+#recursor=
+
+#################################
+# setgid If set, change group id to this gid for more security
+#
+setgid=nobody
+
+#################################
+# setuid If set, change user id to this uid for more security
+#
+setuid=nobody
+
+#################################
+# skip-cname Do not perform CNAME indirection for each query
+#
+# skip-cname=no
+
+#################################
+# slave Act as a slave
+#
+# slave=no
+
+#################################
+# slave-cycle-interval Reschedule failed SOA serial checks once every .. seconds
+#
+# slave-cycle-interval=60
+
+#################################
+# smtpredirector Our smtpredir MX host
+#
+# smtpredirector=a.misconfigured.powerdns.smtp.server
+
+#################################
+# soa-minimum-ttl Default SOA mininum ttl
+#
+# soa-minimum-ttl=3600
+
+#################################
+# soa-serial-offset Make sure that no SOA serial is less than this number
+#
+# soa-serial-offset=0
+
+#################################
+# socket-dir Where the controlsocket will live
+#
+socket-dir=/var/run
+
+#################################
+# strict-rfc-axfrs Perform strictly rfc compliant axfrs (very slow)
+#
+# strict-rfc-axfrs=no
+
+#################################
+# urlredirector Where we send hosts to that need to be url redirected
+#
+# urlredirector=127.0.0.1
+
+#################################
+# use-logfile Use a log file
+#
+use-logfile=no
+
+#################################
+# webserver Start a webserver for monitoring
+#
+webserver=no
+
+#################################
+# webserver-address IP Address of webserver to listen on
+#
+# webserver-address=127.0.0.1
+
+#################################
+# webserver-password Password required for accessing the webserver
+#
+# webserver-password=
+
+#################################
+# webserver-port Port of webserver to listen on
+#
+# webserver-port=8081
+
+#################################
+# webserver-print-arguments If the webserver should print arguments
+#
+# webserver-print-arguments=no
+
+#################################
+# wildcard-url Process URL and MBOXFW records
+#
+# wildcard-url=no
+
+#################################
+# wildcards Honor wildcards in the database
+#
+wildcards=yes
diff --git a/extra/pdns/pdns.install b/extra/pdns/pdns.install
new file mode 100644
index 000000000..f41b36b20
--- /dev/null
+++ b/extra/pdns/pdns.install
@@ -0,0 +1,11 @@
+post_install() {
+ cat << 'EOM'
+==> PowerDNS is built without recursor now. To use the recursor,
+==> please install the pdns-recursor package and update the
+==> configuration in /etc/powerdns/recursor.conf
+EOM
+}
+
+post_upgrade() {
+ post_install $1
+}
diff --git a/extra/pdns/pdns.rc b/extra/pdns/pdns.rc
new file mode 100644
index 000000000..2f143ddae
--- /dev/null
+++ b/extra/pdns/pdns.rc
@@ -0,0 +1,35 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+case "$1" in
+ start)
+ stat_busy "Starting DNS"
+ ! /usr/sbin/pdns_control ping > /dev/null 2>&1 && /usr/sbin/pdns_server --daemon
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon pdns
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping DNS"
+ pdns_control quit > /dev/null 2>&1
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon pdns
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 3
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
diff --git a/extra/pekwm/PKGBUILD b/extra/pekwm/PKGBUILD
new file mode 100644
index 000000000..76bcd5246
--- /dev/null
+++ b/extra/pekwm/PKGBUILD
@@ -0,0 +1,42 @@
+# $Id: PKGBUILD 78573 2010-04-26 19:07:35Z kevin $
+# Maintainer: Kevin Piche <kevin@archlinux.org>
+# Contributor: Eddie Lozon <almostlucky@attbi.com>
+
+pkgname=pekwm
+pkgver=0.1.12
+pkgrel=1
+pkgdesc="A small, fast, functional, and flexible window manager"
+arch=(i686 x86_64)
+license=('GPL')
+url="http://pekwm.org/"
+depends=('gcc-libs' 'libjpeg>=7' 'libpng' 'libxft' 'libxinerama' 'libxpm'
+'libxrandr')
+backup=(etc/pekwm/config
+ etc/pekwm/vars
+ etc/pekwm/autoproperties
+ etc/pekwm/start
+ etc/pekwm/keys
+ etc/pekwm/mouse
+ etc/pekwm/menu)
+source=(http://www.pekwm.org/projects/pekwm/files/${pkgname}-${pkgver}.tar.gz
+pekwm.desktop libpng-1.4.patch)
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+# patch -p1 < ../libpng-1.4.patch || return 1
+ # Default settings:
+ # --enable-shape --enable-xinerama --enable-menus \
+ # --enable-harbour --disable-debug --disable-pedantic \
+ # --enable-xft --enable-image-xpm --enable-image-jpeg \
+ # --enable-image-png --enable-xrandr
+ ./configure --prefix=/usr --sysconfdir=/etc
+
+ make || return 1
+ make DESTDIR=${pkgdir} install
+ install -D -m644 ${srcdir}/${pkgname}.desktop \
+ ${pkgdir}/etc/X11/sessions/${pkgname}.desktop
+}
+# vim: ts=2 sw=2 et ft=sh
+md5sums=('1f7f9ed32cc03f565a3ad30fd6045c1f'
+ '5a78fc6653fbb0b7282ecf7f1f81e2c5'
+ '075bf1b9d32bf94780329499e4fa40e3')
diff --git a/extra/pekwm/libpng-1.4.patch b/extra/pekwm/libpng-1.4.patch
new file mode 100644
index 000000000..bc4df2c4d
--- /dev/null
+++ b/extra/pekwm/libpng-1.4.patch
@@ -0,0 +1,21 @@
+diff -Naur pekwm-0.1.11-orig/src/PImageLoaderPng.cc pekwm-0.1.11/src/PImageLoaderPng.cc
+--- pekwm-0.1.11-orig/src/PImageLoaderPng.cc 2010-01-22 01:57:08.000000000 -0500
++++ pekwm-0.1.11/src/PImageLoaderPng.cc 2010-01-22 02:00:02.000000000 -0500
+@@ -108,7 +108,7 @@
+
+ // gray -> 8 bit gray
+ if (color_type == PNG_COLOR_TYPE_GRAY && (bpp < 8)) {
+- png_set_gray_1_2_4_to_8(png_ptr);
++ png_set_expand_gray_1_2_4_to_8(png_ptr);
+ }
+
+ if (png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS)) {
+@@ -179,7 +179,7 @@
+
+ status = fread(sig, 1, PImageLoaderPng::PNG_SIG_BYTES, fp);
+ if (status == PImageLoaderPng::PNG_SIG_BYTES) {
+- return (png_check_sig(sig, PImageLoaderPng::PNG_SIG_BYTES) != 0);
++ return (png_sig_cmp(sig, 0, PImageLoaderPng::PNG_SIG_BYTES) == 0);
+ }
+ return false;
+ }
diff --git a/extra/pekwm/pekwm.desktop b/extra/pekwm/pekwm.desktop
new file mode 100644
index 000000000..2f59528bd
--- /dev/null
+++ b/extra/pekwm/pekwm.desktop
@@ -0,0 +1,8 @@
+[Desktop Entry]
+Encoding=UTF-8
+Name=Pekwm
+Comment=The pekwm window manager
+Exec=pekwm
+# no icon yet, only the top three are currently used
+Icon=
+Type=Application
diff --git a/extra/perl-alien-sdl/PKGBUILD b/extra/perl-alien-sdl/PKGBUILD
new file mode 100644
index 000000000..ad8557e6a
--- /dev/null
+++ b/extra/perl-alien-sdl/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id: PKGBUILD 112695 2011-03-06 00:40:04Z heftig $
+# Maintainer: Jan "heftig" Steffens <jan.steffens@gmail.com>
+# Contributor: Allan McRae <allan@archlinux.org>
+# Contributor: Sarah Hay <sarahhay@mb.sympatico.ca>
+
+# This package must not by "any" arch.
+# Requires rebuild with every change to sdl-config
+
+pkgname=perl-alien-sdl
+_realname=Alien-SDL
+pkgver=1.425
+pkgrel=1
+pkgdesc="Building, finding and using SDL binaries"
+arch=(i686 x86_64)
+license=(PerlArtistic GPL)
+url="http://search.cpan.org/dist/Alien-SDL/"
+depends=(sdl=1.2.14 perl-file-sharedir perl-capture-tiny)
+makedepends=(perl-file-which perl-text-patch)
+options=(!emptydirs)
+source=(http://search.cpan.org/CPAN/authors/id/F/FR/FROGGS/$_realname-$pkgver.tar.gz)
+md5sums=('c6adaa35ea0779740950de36c8a8ffe2')
+
+package() {
+ cd "$srcdir/$_realname-$pkgver"
+
+ # install module in vendor directories
+ perl Build.PL installdirs=vendor destdir="$pkgdir" --with-sdl-config
+
+ perl Build
+ perl Build install
+}
diff --git a/extra/perl-bit-vector/PKGBUILD b/extra/perl-bit-vector/PKGBUILD
new file mode 100644
index 000000000..cbab210ac
--- /dev/null
+++ b/extra/perl-bit-vector/PKGBUILD
@@ -0,0 +1,33 @@
+# $Id: PKGBUILD 100723 2010-11-25 17:21:16Z kevin $
+# Maintainer: Kevin Piche <kevin@archlinux.org>
+# Contributor: K. Piche <kpiche@rogers.com>
+
+pkgname=perl-bit-vector
+_cpanname=Bit-Vector
+pkgver=7.1
+pkgrel=2
+pkgdesc='Efficient bit vector, set of integers and "big int" math library'
+arch=(i686 x86_64)
+license=('GPL' 'LGPL' 'PerlArtistic')
+url="http://search.cpan.org/dist/${_cpanname}/"
+depends=('perl-carp-clan' 'perl>=5.10.0')
+options=(!emptydirs)
+source=(http://search.cpan.org/CPAN/authors/id/S/ST/STBEY/${_cpanname}-${pkgver}.tar.gz)
+md5sums=('164c8574b728f6171b2a6f564fcd2e50')
+
+build() {
+ cd ${srcdir}/${_cpanname}-$pkgver
+ # install module in vendor directories.
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+ make test
+}
+
+package() {
+ cd ${srcdir}/${_cpanname}-$pkgver
+ make install DESTDIR=${pkgdir}
+
+ # remove perllocal.pod and .packlist
+ find ${pkgdir} -name perllocal.pod -delete
+ find ${pkgdir} -name .packlist -delete
+}
diff --git a/extra/perl-compress-bzip2/PKGBUILD b/extra/perl-compress-bzip2/PKGBUILD
new file mode 100644
index 000000000..fdfd5bcf3
--- /dev/null
+++ b/extra/perl-compress-bzip2/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 112695 2011-03-06 00:40:04Z heftig $
+# Maintainer: Jan "heftig" Steffens <jan.steffens@gmail.com>
+pkgname=perl-compress-bzip2
+_realname=Compress-Bzip2
+pkgver=2.09
+pkgrel=1
+pkgdesc="Interface to Bzip2 compression library"
+arch=(i686 x86_64)
+license=(GPL2)
+depends=(perl bzip2)
+url='http://search.cpan.org/dist/$_realname'
+options=('!emptydirs')
+source=("http://search.cpan.org/CPAN/authors/id/A/AR/ARJAY/$_realname-$pkgver.tar.gz")
+md5sums=('1699fde3e86f2a036f135ae606d456bf')
+
+build() {
+ cd "$srcdir/$_realname-$pkgver"
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+package() {
+ cd "$srcdir/$_realname-$pkgver"
+ make DESTDIR="$pkgdir" install
+}
diff --git a/extra/perl-crypt-ssleay/PKGBUILD b/extra/perl-crypt-ssleay/PKGBUILD
new file mode 100644
index 000000000..2864851a5
--- /dev/null
+++ b/extra/perl-crypt-ssleay/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id: PKGBUILD 103974 2010-12-24 20:16:07Z kevin $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: François Charette <firmicus ατ gmx δοτ net>
+
+pkgname=perl-crypt-ssleay
+pkgver=0.58
+pkgrel=2
+pkgdesc="OpenSSL glue that provides LWP https support"
+arch=('i686' 'x86_64')
+url="http://search.cpan.org/dist/Crypt-SSLeay"
+license=('GPL' 'PerlArtistic')
+depends=('openssl')
+options=('!emptydirs')
+source=(http://www.cpan.org/CPAN/authors/id/N/NA/NANIS/Crypt-SSLeay-$pkgver.tar.gz)
+md5sums=('fbf3d12e58462cee00ea63239c0b13c7')
+
+build() {
+ cd "${srcdir}/Crypt-SSLeay-${pkgver}"
+
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+ make test
+}
+
+package() {
+ cd "${srcdir}/Crypt-SSLeay-${pkgver}"
+ make install DESTDIR="${pkgdir}"
+
+ find ${pkgdir} -name '.packlist' -delete
+ find ${pkgdir} -name '*.pod' -delete
+}
diff --git a/extra/perl-dbd-mysql/PKGBUILD b/extra/perl-dbd-mysql/PKGBUILD
new file mode 100644
index 000000000..ed01cefd8
--- /dev/null
+++ b/extra/perl-dbd-mysql/PKGBUILD
@@ -0,0 +1,34 @@
+# $Id: PKGBUILD 115053 2011-03-16 15:26:25Z andrea $
+# Maintainer: kevin <kevin@archlinux.org>
+# Contributor: Eric Johnson <eric@coding-zone.com>
+
+pkgname=perl-dbd-mysql
+_realname=DBD-mysql
+pkgver=4.018
+pkgrel=2
+pkgdesc="Perl/CPAN DBD::mysql module for interacting with MySQL via DBD"
+arch=(i686 x86_64)
+license=('GPL' 'PerlArtistic')
+url="http://search.cpan.org/dist/${_realname}/"
+depends=('libmysqlclient' 'perl-dbi' 'perl>=5.10.0')
+makedepends=('mysql')
+options=(!emptydirs)
+source=(http://search.cpan.org/CPAN/authors/id/C/CA/CAPTTOFU/${_realname}-${pkgver}.tar.gz)
+md5sums=('d1d4ee2f20910d6491d1b6216471b2f1')
+
+build() {
+ cd ${srcdir}/${_realname}-${pkgver}
+
+ # install module in vendor directories.
+ perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+package() {
+ cd ${srcdir}/${_realname}-${pkgver}
+ make install DESTDIR=${pkgdir}
+
+ # remove perllocal.pod and .packlist
+ find ${pkgdir} -name perllocal.pod -delete
+ find ${pkgdir} -name .packlist -delete
+}
diff --git a/extra/perl-dbd-sqlite/PKGBUILD b/extra/perl-dbd-sqlite/PKGBUILD
new file mode 100644
index 000000000..e82203111
--- /dev/null
+++ b/extra/perl-dbd-sqlite/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 100851 2010-11-26 00:50:08Z kevin $
+# Contributor: Tom Killian <tomk@runbox.com>
+# Contributor: francois at archlinux dot org
+
+pkgname=perl-dbd-sqlite
+_cpanname=DBD-SQLite
+pkgver=1.31
+pkgrel=1
+pkgdesc="Self-contained RDBMS in a DBI driver"
+arch=('i686' 'x86_64')
+url="http://search.cpan.org/dist/${_cpanname}"
+license=('GPL' 'PerlArtistic')
+depends=('perl-dbi>=1.61' 'sqlite3')
+makedepends=('perl-pathtools>=0.82')
+options=('!emptydirs')
+source=(http://www.cpan.org/authors/id/A/AD/ADAMK/${_cpanname}-${pkgver}.tar.gz)
+md5sums=('67b3575104efd606c8093bc416e3338d')
+
+build() {
+ cd "${srcdir}/${_cpanname}-${pkgver}"
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+ make test
+}
+
+package() {
+ cd "${srcdir}/${_cpanname}-${pkgver}"
+ make install DESTDIR="${pkgdir}"
+}
diff --git a/extra/perl-dbi/PKGBUILD b/extra/perl-dbi/PKGBUILD
new file mode 100644
index 000000000..3c95327b5
--- /dev/null
+++ b/extra/perl-dbi/PKGBUILD
@@ -0,0 +1,32 @@
+# $Id: PKGBUILD 105336 2011-01-07 21:29:30Z angvp $
+# Maintainer: kevin <kevin@archlinux.org>
+# Contributor: Matt Thompson <mattt@defunct.ca>
+
+pkgname=perl-dbi
+_realname=DBI
+pkgver=1.616
+pkgrel=1
+pkgdesc="Database independent interface for Perl"
+arch=(i686 x86_64)
+license=('GPL' 'PerlArtistic')
+url="http://search.cpan.org/dist/${_realname}/"
+depends=('perl>=5.12.1')
+options=(!emptydirs)
+source=(http://www.cpan.org/authors/id/T/TI/TIMB/${_realname}-${pkgver}.tar.gz)
+md5sums=('799313e54a693beb635b47918458f7c4')
+
+build() {
+ cd "${srcdir}/${_realname}-${pkgver}"
+
+ # install module in vendor directories.
+ perl Makefile.PL INSTALLDIRS=vendor
+ make
+ make test
+}
+
+package() {
+ cd "${srcdir}/${_realname}-${pkgver}"
+ make install DESTDIR="${pkgdir}"
+}
+
+# vim: ts=2 sw=2 et ft=sh
diff --git a/extra/perl-digest-nilsimsa/PKGBUILD b/extra/perl-digest-nilsimsa/PKGBUILD
new file mode 100644
index 000000000..31728572d
--- /dev/null
+++ b/extra/perl-digest-nilsimsa/PKGBUILD
@@ -0,0 +1,35 @@
+# $Id: PKGBUILD 100551 2010-11-24 02:25:52Z kevin $
+# Maintainer: kevin <kevin@archlinux.org>
+# Contributor: Manolis Tzanidakis
+
+pkgname=perl-digest-nilsimsa
+_realname=Digest-Nilsimsa
+pkgver=0.06
+pkgrel=6
+pkgdesc="Perl version of Nilsimsa code."
+arch=('i686' 'x86_64')
+license=('LGPL')
+url="http://search.cpan.org/dist/${_realname}/"
+depends=('perl>=5.10.0')
+options=(!emptydirs)
+source=(http://www.cpan.org/authors/id/V/VI/VIPUL/${_realname}-${pkgver}.tar.gz)
+replaces=('digest-nilsimsa')
+provides=('digest-nilsimsa')
+md5sums=('08e940bd7f5d1167ef3fd1aa7ce234d7')
+
+build() {
+ cd ${srcdir}/${_realname}-${pkgver}
+ # install module in vendor directories.
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+ make test
+}
+
+package() {
+ cd ${srcdir}/${_realname}-${pkgver}
+ make install DESTDIR=${pkgdir}
+ # remove perllocal.pod and .packlist
+ find ${pkgdir} -name perllocal.pod -delete
+ find ${pkgdir} -name .packlist -delete
+}
+# vim: ts=2 sw=2 et ft=sh
diff --git a/extra/perl-digest-sha1/PKGBUILD b/extra/perl-digest-sha1/PKGBUILD
new file mode 100644
index 000000000..448bfb663
--- /dev/null
+++ b/extra/perl-digest-sha1/PKGBUILD
@@ -0,0 +1,38 @@
+# $Id: PKGBUILD 100547 2010-11-24 02:18:32Z kevin $
+# Maintainer: kevin <kevin@archlinux.org>
+# Contributor: Manolis Tzanidakis
+
+pkgname=perl-digest-sha1
+_realname=Digest-SHA1
+pkgver=2.13
+pkgrel=1
+pkgdesc="Perl interface to the SHA-1 Algorithm"
+arch=(i686 x86_64)
+license=('PerlArtistic')
+url="http://search.cpan.org/dist/${_realname}/"
+depends=('perl>=5.10.0')
+options=(!emptydirs)
+source=(http://www.cpan.org/authors/id/G/GA/GAAS/${_realname}-${pkgver}.tar.gz)
+replaces=('digest-sha1')
+provides=('digest-sha1')
+md5sums=('bd22388f268434f2b24f64e28bf1aa35')
+
+build() {
+ cd ${srcdir}/${_realname}-${pkgver}
+
+ # install module in vendor directories.
+ perl Makefile.PL INSTALLDIRS=vendor
+ make
+ make test
+}
+
+package() {
+ cd ${srcdir}/${_realname}-${pkgver}
+
+ make install DESTDIR=${pkgdir}
+
+ # remove perllocal.pod and .packlist
+ find ${pkgdir} -name perllocal.pod -delete
+ find ${pkgdir} -name .packlist -delete
+}
+# vim: ts=2 sw=2 et ft=sh
diff --git a/extra/perl-event/PKGBUILD b/extra/perl-event/PKGBUILD
new file mode 100644
index 000000000..a2c36f9aa
--- /dev/null
+++ b/extra/perl-event/PKGBUILD
@@ -0,0 +1,36 @@
+# $Id: PKGBUILD 100545 2010-11-24 01:37:38Z kevin $
+# Maintainer: tobias <tobias@archlinux.org>
+# Contributor: Tobias Kieslich <tobias@justdreams.de>
+# Contributor: François Charette <francois.archlinux.org>
+
+pkgname=perl-event
+_srcname=Event
+pkgver=1.13
+pkgrel=3
+pkgdesc="Framework for GUI events"
+arch=('i686' 'x86_64')
+license=('PerlArtistic' 'GPL')
+url="http://search.cpan.org/dist/${_srcname}/"
+depends=('perl>=5.10.0')
+options=(!emptydirs)
+source=(http://search.cpan.org/CPAN/authors/id/J/JP/JPRIT/${_srcname}-${pkgver}.tar.gz)
+md5sums=('88cf5bb6b4b06e016072a5ff2ff8fa1a')
+
+build() {
+ cd "${srcdir}/${_srcname}-${pkgver}"
+
+ # install module in vendor directories.
+ perl Makefile.PL INSTALLDIRS=vendor
+ make
+ make test
+}
+
+package() {
+ cd "${srcdir}/${_srcname}-${pkgver}"
+
+ make install DESTDIR="${pkgdir}"
+
+ # remove perllocal.pod and .packlist
+ find ${pkgdir} -name perllocal.pod -delete
+ find ${pkgdir} -name .packlist -delete
+}
diff --git a/extra/perl-fcgi/PKGBUILD b/extra/perl-fcgi/PKGBUILD
new file mode 100644
index 000000000..c658fd3b9
--- /dev/null
+++ b/extra/perl-fcgi/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id: PKGBUILD 101395 2010-11-29 01:59:43Z kevin $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: François Charette <firmicus ατ gmx δοτ net>
+
+pkgname=perl-fcgi
+pkgver=0.71
+pkgrel=3
+pkgdesc="Fast CGI"
+arch=('i686' 'x86_64')
+url="http://search.cpan.org/dist/FCGI"
+license=('GPL' 'PerlArtistic')
+depends=('perl')
+options=('!emptydirs')
+source=(http://www.cpan.org/CPAN/authors/id/F/FL/FLORA/FCGI-${pkgver}.tar.gz)
+md5sums=('26bc4ea53ccc9c9c16695e88e46a1cfb')
+
+build() {
+ cd "${srcdir}/FCGI-${pkgver}"
+
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+ make test
+}
+
+package() {
+ cd "${srcdir}/FCGI-${pkgver}"
+ make install DESTDIR="${pkgdir}"
+
+ find ${pkgdir} -name '.packlist' -delete
+ find ${pkgdir} -name '*.pod' -delete
+}
diff --git a/extra/perl-html-parser/PKGBUILD b/extra/perl-html-parser/PKGBUILD
new file mode 100644
index 000000000..98e5bdb51
--- /dev/null
+++ b/extra/perl-html-parser/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id: PKGBUILD 100913 2010-11-26 16:20:58Z kevin $
+# Maintainer: kevin <kevin@archlinux.org>
+# Contributor: Manolis Tzanidakis
+# Contributor: Firmicus <francois.archlinux.org>
+
+pkgname=perl-html-parser
+_realname=HTML-Parser
+pkgver=3.68
+pkgrel=1
+pkgdesc="Perl HTML parser class"
+arch=('i686' 'x86_64')
+license=('PerlArtistic')
+url="http://search.cpan.org/dist/${_realname}/"
+depends=('perl-html-tagset' 'perl>=5.12.1')
+options=(!emptydirs)
+source=(http://www.cpan.org/authors/id/G/GA/GAAS/${_realname}-${pkgver}.tar.gz)
+md5sums=('5550b2da7aa94341f1e8a17a4ac20c68')
+
+build() {
+ cd "${srcdir}/${_realname}-${pkgver}"
+ # install module in vendor directories.
+ perl Makefile.PL INSTALLDIRS=vendor
+ make
+ make test
+}
+
+package() {
+ cd "${srcdir}/${_realname}-${pkgver}"
+ make install DESTDIR="${pkgdir}"
+}
+# vim: ts=2 sw=2 et ft=sh
diff --git a/extra/perl-libintl-perl/PKGBUILD b/extra/perl-libintl-perl/PKGBUILD
new file mode 100644
index 000000000..b21c6bb36
--- /dev/null
+++ b/extra/perl-libintl-perl/PKGBUILD
@@ -0,0 +1,33 @@
+# $Id: PKGBUILD 100859 2010-11-26 01:58:35Z kevin $
+# Maintainer: kevin <kevin@archlinux.org>
+# Contributor: Tobias Kieslich <tobias@justdreams.de>
+
+pkgname=perl-libintl-perl
+_realname=libintl-perl
+pkgver=1.20
+pkgrel=2
+pkgdesc="Perl Module: Localization support"
+arch=('i686' 'x86_64')
+license=('LGPL')
+url="http://search.cpan.org/dist/${_realname}/"
+depends=('gettext' 'perl>=5.10.0')
+options=(!emptydirs)
+source=(http://www.cpan.org/authors/id/G/GU/GUIDO/${_realname}-$pkgver.tar.gz)
+md5sums=('cb36f58a7d2e15974f25b35381548b1b')
+
+build() {
+ cd ${srcdir}/${_realname}-$pkgver
+ # install module in vendor directories.
+ perl Makefile.PL INSTALLDIRS=vendor
+ make
+ make test
+}
+
+package() {
+ cd ${srcdir}/${_realname}-$pkgver
+ make install DESTDIR=${pkgdir}
+
+ # remove perllocal.pod and .packlist
+ find ${pkgdir} -name perllocal.pod -delete
+ find ${pkgdir} -name .packlist -delete
+}
diff --git a/extra/perl-locale-gettext/PKGBUILD b/extra/perl-locale-gettext/PKGBUILD
new file mode 100644
index 000000000..8b8cff5af
--- /dev/null
+++ b/extra/perl-locale-gettext/PKGBUILD
@@ -0,0 +1,38 @@
+# $Id: PKGBUILD 103982 2010-12-24 20:55:26Z kevin $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Mark Rosenstand <mark@borkware.net>
+# Contributor: Paul Mattal <paul@archlinux.org>
+
+pkgname=perl-locale-gettext
+_realname=gettext
+pkgver=1.05
+pkgrel=6
+pkgdesc="Permits access from Perl to the gettext() family of functions"
+arch=('i686' 'x86_64')
+license=('GPL' 'PerlArtistic')
+url="http://search.cpan.org/dist/${_realname}/"
+depends=('gettext' 'perl>=5.10.0')
+options=(!emptydirs)
+source=(http://search.cpan.org/CPAN/authors/id/P/PV/PVANDRY/${_realname}-${pkgver}.tar.gz
+ compatibility-with-POSIX-module.patch)
+md5sums=('f3d3f474a1458f37174c410dfef61a46'
+ '854302f34d01a2f8ae739187788973dd')
+
+build() {
+ cd "${srcdir}/${_realname}-${pkgver}"
+
+ patch -Np1 -i ${srcdir}/compatibility-with-POSIX-module.patch
+ # install module in vendor directories.
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+ make test
+}
+
+package() {
+ cd "${srcdir}/${_realname}-${pkgver}"
+ make install DESTDIR="${pkgdir}"
+
+ # remove perllocal.pod and .packlist
+ find "${pkgdir}" -name perllocal.pod -delete
+ find "${pkgdir}" -name .packlist -delete
+}
diff --git a/extra/perl-locale-gettext/compatibility-with-POSIX-module.patch b/extra/perl-locale-gettext/compatibility-with-POSIX-module.patch
new file mode 100644
index 000000000..ad675516b
--- /dev/null
+++ b/extra/perl-locale-gettext/compatibility-with-POSIX-module.patch
@@ -0,0 +1,10 @@
+--- a/gettext.pm 2005-05-31 20:11:16.000000000 -0700
++++ b/gettext.pm 2009-10-07 12:39:42.000000000 -0700
+@@ -32,6 +32,7 @@
+ =cut
+
+ use Carp;
++use POSIX qw(:locale_h);
+
+ require Exporter;
+ require DynaLoader;
diff --git a/extra/perl-net-dns/PKGBUILD b/extra/perl-net-dns/PKGBUILD
new file mode 100644
index 000000000..b34bed718
--- /dev/null
+++ b/extra/perl-net-dns/PKGBUILD
@@ -0,0 +1,33 @@
+# $Id: PKGBUILD 100863 2010-11-26 02:27:59Z kevin $
+# Maintainer: kevin <kevin@archlinux.org>
+# Contributor: Manolis Tzanidakis
+
+pkgname=perl-net-dns
+_realname=Net-DNS
+pkgver=0.66
+pkgrel=3
+pkgdesc="Perl Module: Interface to the DNS resolver."
+arch=(i686 x86_64)
+license=('PerlArtistic')
+url="http://search.cpan.org/dist/${_realname}/"
+depends=('perl-digest-hmac' 'perl-net-ip' 'perl>=5.10.0')
+source=(http://www.cpan.org/authors/id/O/OL/OLAF/${_realname}-$pkgver.tar.gz)
+options=(!emptydirs)
+
+build() {
+ cd $srcdir/${_realname}-${pkgver}
+ # install module in vendor directories.
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+package() {
+ cd $srcdir/${_realname}-${pkgver}
+ make install DESTDIR=${pkgdir}
+
+ # remove perllocal.pod and .packlist
+ find ${pkgdir} -name perllocal.pod -delete
+ find ${pkgdir} -name .packlist -delete
+}
+# vim: ts=2 sw=2 et ft=sh
+md5sums=('1635d876324e3c2f6e277d5778bfe94c')
diff --git a/extra/perl-net-ssleay/PKGBUILD b/extra/perl-net-ssleay/PKGBUILD
new file mode 100644
index 000000000..1c3b17d57
--- /dev/null
+++ b/extra/perl-net-ssleay/PKGBUILD
@@ -0,0 +1,33 @@
+# $Id: PKGBUILD 102842 2010-12-12 08:25:28Z angvp $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Manolis Tzanidakis
+
+pkgname=perl-net-ssleay
+_cpanname=Net-SSLeay
+pkgver=1.36
+pkgrel=4
+pkgdesc="Perl extension for using OpenSSL"
+arch=('i686' 'x86_64')
+license=('custom:BSD')
+url="http://search.cpan.org/dist/${_cpanname}/"
+depends=('perl' 'openssl')
+options=(!emptydirs)
+replaces=('net-ssleay')
+provides=('net-ssleay')
+source=(http://www.cpan.org/authors/id/F/FL/FLORA/${_cpanname}-${pkgver}.tar.gz)
+md5sums=('54061638720dd6a325395331c77f21d8')
+
+build() {
+ cd ${srcdir}/${_cpanname}-${pkgver}
+ # install module in vendor directories.
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL -- INSTALLDIRS=vendor
+ make
+ make install DESTDIR=${pkgdir}
+
+ # remove perllocal.pod and .packlist
+ find ${pkgdir} -name perllocal.pod -delete
+ find ${pkgdir} -name .packlist -delete
+
+ install -D -m644 README ${pkgdir}/usr/share/licenses/${pkgname}/README
+}
+# vim: ts=2 sw=2 et ft=sh
diff --git a/extra/perl-net-upnp/PKGBUILD b/extra/perl-net-upnp/PKGBUILD
new file mode 100644
index 000000000..9e77c0cb0
--- /dev/null
+++ b/extra/perl-net-upnp/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 102845 2010-12-12 08:32:04Z angvp $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Drew Gilbert <gilbert dot drew at gmail dot com>
+
+pkgname=perl-net-upnp
+pkgver=1.4.2
+pkgrel=2
+pkgdesc="Perl Module UPnP"
+arch=('i686' 'x86_64')
+url="http://search.cpan.org/~skonno/Net-UPnP-1.4.2/"
+license=('BSD' 'PerlArtistic')
+options=('!emptydirs')
+source=("http://search.cpan.org/CPAN/authors/id/S/SK/SKONNO/Net-UPnP-${pkgver}.tar.gz")
+depends=('perl')
+md5sums=('bc009fd76b565df40a70aca49af82a7d')
+
+build() {
+ cd "${srcdir}/Net-UPnP-${pkgver}"
+
+ # install module in vendor directories.
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+ make install DESTDIR="${pkgdir}"
+
+ find ${pkgdir} -name '.packlist' -delete
+ find ${pkgdir} -name '*.pod' -delete
+}
diff --git a/extra/perl-netaddr-ip/PKGBUILD b/extra/perl-netaddr-ip/PKGBUILD
new file mode 100644
index 000000000..adb0c7671
--- /dev/null
+++ b/extra/perl-netaddr-ip/PKGBUILD
@@ -0,0 +1,34 @@
+# $Id: PKGBUILD 100919 2010-11-26 17:02:08Z kevin $
+# Maintainer: Dale Blount <dale@archlinux.org>
+# Contributor: Dale Blount <dale@archlinux.org>
+# Contributor: Francois Charette <francois.archlinux.org>
+
+pkgname=perl-netaddr-ip
+_realname=NetAddr-IP
+pkgver=4.037
+pkgrel=1
+pkgdesc="Perl module to manage IP addresses and subnets"
+arch=(i686 x86_64)
+license=('PerlArtistic' 'GPL')
+depends=('perl>=5.10.0')
+options=(!emptydirs)
+url="http://search.cpan.org/dist/${_realname}/"
+source=(http://search.cpan.org/CPAN/authors/id/M/MI/MIKER/${_realname}-${pkgver}.tar.gz)
+md5sums=('d966eac6b5941af3f7c1fad839569cb4')
+
+build() {
+ cd ${srcdir}/${_realname}-${pkgver}
+ # install module in vendor directories.
+ perl Makefile.PL INSTALLDIRS=vendor
+ make
+ make test
+}
+
+package() {
+ cd ${srcdir}/${_realname}-${pkgver}
+ make install DESTDIR=${pkgdir}
+
+ # remove perllocal.pod and .packlist
+ find ${pkgdir} -name perllocal.pod -delete
+ find ${pkgdir} -name .packlist -delete
+}
diff --git a/extra/perl-sdl/PKGBUILD b/extra/perl-sdl/PKGBUILD
new file mode 100644
index 000000000..68d52a69d
--- /dev/null
+++ b/extra/perl-sdl/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id: PKGBUILD 112695 2011-03-06 00:40:04Z heftig $
+# Maintainer: Jan "heftig" Steffens <jan.steffens@gmail.com>
+# Contributor: Allan McRae <allan@archlinux.org>
+# Contributor: Sarah Hay <sarahhay@mb.sympatico.ca>
+
+pkgname=perl-sdl
+pkgver=2.531
+pkgrel=1
+pkgdesc="Simple DirectMedia Layer for Perl"
+arch=(i686 x86_64)
+license=(LGPL)
+url="http://sdl.perl.org"
+depends=(perl-alien-sdl perl-tie-simple
+ sdl_{net,ttf,image,mixer,gfx,pango} mesa smpeg)
+#makedepends=(perl-yaml)
+options=('!emptydirs')
+replaces=(sdl_perl)
+conflicts=(sdl_perl)
+provides=("sdl_perl=$pkgver")
+source=(http://search.cpan.org/CPAN/authors/id/G/GA/GARU/SDL-$pkgver.tar.gz)
+md5sums=('ed39c87ae685d3a933705a2ea82a9e18')
+
+package() {
+ cd "$srcdir/SDL-$pkgver"
+
+ # install module in vendor directories
+ perl Build.PL installdirs=vendor destdir="$pkgdir"
+
+ perl Build
+ perl Build install
+}
diff --git a/extra/perl-template-toolkit/PKGBUILD b/extra/perl-template-toolkit/PKGBUILD
new file mode 100644
index 000000000..49d2d4540
--- /dev/null
+++ b/extra/perl-template-toolkit/PKGBUILD
@@ -0,0 +1,32 @@
+# Maintainer: Firmicus <francois.archlinux.org>
+# Contributor: Tom Killian <tomk@runbox.com>
+# Contributor: FJ <joostef@gmail.com>
+
+pkgname=perl-template-toolkit
+_realname=Template-Toolkit
+pkgver=2.22
+pkgrel=3
+pkgdesc="Perl template processing system"
+arch=(i686 x86_64)
+license=('PerlArtistic')
+url="http://search.cpan.org/dist/${_realname}/"
+depends=('perl-appconfig' 'perl>=5.10.0')
+options=(!emptydirs)
+source=(http://search.cpan.org/CPAN/authors/id/A/AB/ABW/${_realname}-$pkgver.tar.gz)
+md5sums=('d98277f6420e5da6b93d99a8db2b3934')
+
+build() {
+ cd ${srcdir}/${_realname}-$pkgver
+ # install module in vendor directories.
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+package() {
+ cd ${srcdir}/${_realname}-$pkgver
+ make install DESTDIR=${startdir}/pkg
+
+ # remove perllocal.pod and .packlist
+ find ${startdir}/pkg -name perllocal.pod -delete
+ find ${startdir}/pkg -name .packlist -delete
+}
diff --git a/extra/perl-term-readkey/PKGBUILD b/extra/perl-term-readkey/PKGBUILD
new file mode 100644
index 000000000..5380fffe6
--- /dev/null
+++ b/extra/perl-term-readkey/PKGBUILD
@@ -0,0 +1,36 @@
+# $Id: PKGBUILD 100930 2010-11-26 17:19:14Z kevin $
+# Maintainer: kevin <kevin@archlinux.org>
+# Contributor: Wael Nasreddine <gandalf@siemens-mobiles.org>
+# Contributor: Francois Charette <francois.archlinux.org>
+
+pkgname=perl-term-readkey
+_realname=TermReadKey
+pkgver=2.30.01
+pkgrel=3
+pkgdesc="Provides simple control over terminal driver modes"
+arch=('i686' 'x86_64')
+license=('custom')
+depends=('perl>=5.10.0' 'glibc')
+url="http://search.cpan.org/~stsi/${_realname}/"
+source=(http://search.cpan.org/CPAN/authors/id/S/ST/STSI/${_realname}-$pkgver.tar.gz)
+options=('!emptydirs')
+md5sums=('6c099eddb76ec9b92179f1ed929be71a')
+
+build()
+{
+ cd ${srcdir}/TermReadKey-$pkgver
+ perl Makefile.PL INSTALLDIRS=vendor
+ make
+ make test
+}
+
+package() {
+ cd ${srcdir}/TermReadKey-$pkgver
+ make DESTDIR=${pkgdir} install
+ install -d ${pkgdir}/usr/share/licenses/$pkgname/
+ head -7 README > ${pkgdir}/usr/share/licenses/$pkgname/LICENSE
+
+ # remove perllocal.pod and .packlist
+ find ${pkgdir} -name perllocal.pod -delete
+ find ${pkgdir} -name .packlist -delete
+}
diff --git a/extra/perl-text-iconv/PKGBUILD b/extra/perl-text-iconv/PKGBUILD
new file mode 100644
index 000000000..c69bef274
--- /dev/null
+++ b/extra/perl-text-iconv/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 100932 2010-11-26 17:44:01Z kevin $
+# Maintainer:
+# Contributor: Francois Charette <firmicus@gmx.net>
+
+pkgname=perl-text-iconv
+_realname=Text-Iconv
+pkgver=1.7
+pkgrel=5
+pkgdesc="Interface to iconv codeset conversion"
+arch=('i686' 'x86_64')
+url="http://search.cpan.org/dist/${_realname}/"
+license=('GPL' 'PerlArtistic')
+depends=('perl>=5.10.0')
+options=('!emptydirs')
+source=(http://www.cpan.org/authors/id/M/MP/MPIOTR/${_realname}-${pkgver}.tar.gz)
+md5sums=('81b26e069eaebb084e91ea3c009b67ae')
+
+build() {
+ cd ${srcdir}/${_realname}-${pkgver}
+ perl Makefile.PL INSTALLDIRS=vendor
+ make
+ make test
+}
+
+package() {
+ cd ${srcdir}/${_realname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/perl-time-hires/PKGBUILD b/extra/perl-time-hires/PKGBUILD
new file mode 100644
index 000000000..779b5c9af
--- /dev/null
+++ b/extra/perl-time-hires/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 102848 2010-12-12 08:36:02Z angvp $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: mezcal <fila at pruda dot com>
+
+pkgname=perl-time-hires
+pkgver=1.9721
+pkgrel=3
+pkgdesc="Perl module: high resolution time, sleep, and alarm"
+arch=('i686' 'x86_64')
+license=('PerlArtistic')
+url="http://search.cpan.org/dist/Time-HiRes/"
+depends=('perl')
+options=(!emptydirs)
+source=(http://search.cpan.org/CPAN/authors/id/J/JH/JHI/Time-HiRes-${pkgver}.tar.gz)
+md5sums=('bf09911a36b9481537c8e0d28fbb3aaf')
+
+build() {
+ cd "${srcdir}/Time-HiRes-${pkgver}"
+
+ # install module in vendor directories.
+ perl Makefile.PL INSTALLDIRS=vendor
+ make
+ make test
+ make install DESTDIR="${pkgdir}"
+}
diff --git a/extra/perl-tk/PKGBUILD b/extra/perl-tk/PKGBUILD
new file mode 100644
index 000000000..3d779063b
--- /dev/null
+++ b/extra/perl-tk/PKGBUILD
@@ -0,0 +1,41 @@
+# $Id: PKGBUILD 102852 2010-12-12 10:35:16Z remy $
+# Maintainer: François Charette <francois ατ archlinux δοτ org>
+# Contributor: Jason Chu <jchu@xentac.net>
+# Contributor: Juergen Hoetzel <juergen@archlinux.org>
+
+pkgname=perl-tk
+_cpanname=Tk
+pkgver=804.029
+pkgrel=2
+pkgdesc="A graphical user interface toolkit for Perl"
+arch=('i686' 'x86_64')
+url="http://search.cpan.org/dist/${_cpanname}"
+license=('PerlArtistic' 'GPL' 'custom')
+depends=('libx11' 'libpng' 'libjpeg' 'tk' 'perl')
+options=('!emptydirs')
+replaces=('perltk')
+provides=('perltk')
+source=(http://www.cpan.org/authors/id/S/SR/SREZIC/${_cpanname}-${pkgver}.tar.gz)
+md5sums=('f4aebe6fcdb309a8480514f2ccf8117c')
+
+build() {
+ cd $srcdir/${_cpanname}-$pkgver
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ /bin/chmod -R u+w *
+ # The Xlib header is wrong...
+ sed -i 's/XKeycodeToKeysym\(.*\)unsigned int/XKeycodeToKeysym\1KeyCode/' pTk/Xlib.h
+ make
+}
+
+package() {
+ cd $srcdir/${_cpanname}-$pkgver
+ make install DESTDIR=$pkgdir
+ find $pkgdir -name '.packlist' -delete
+ find $pkgdir -name '*.pod' -delete
+
+ # license
+ install -D -m644 pTk/license.terms \
+ ${startdir}/pkg/usr/share/licenses/${pkgname}/tk.license
+ install -D -m644 pTk/Tix.license \
+ ${startdir}/pkg/usr/share/licenses/${pkgname}/tix.license
+}
diff --git a/extra/perl-unicode-string/PKGBUILD b/extra/perl-unicode-string/PKGBUILD
new file mode 100644
index 000000000..8df72bbfe
--- /dev/null
+++ b/extra/perl-unicode-string/PKGBUILD
@@ -0,0 +1,33 @@
+# $Id: PKGBUILD 101387 2010-11-29 01:27:16Z kevin $
+# Maintainer: James Rayner <iphitus@gmail.com>
+# Contributor: Andrew Simmons <andrew.simmons@gmail.com>
+
+pkgname=perl-unicode-string
+_realname=Unicode-String
+pkgver=2.09
+pkgrel=5
+pkgdesc="String of Unicode characters for perl (UCS2/UTF16)"
+arch=('i686' 'x86_64')
+license=('PerlArtistic')
+url="http://search.cpan.org/dist/${_realname}/"
+depends=('perl>=5.10.0')
+options=(!emptydirs)
+source=(http://search.cpan.org/CPAN/authors/id/G/GA/GAAS/${_realname}-${pkgver}.tar.gz)
+md5sums=('553e68e603723bf7c631f8701ab0d678')
+
+build() {
+ cd ${srcdir}/${_realname}-${pkgver}
+ # in stall module in vendor directories.
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+ make test
+}
+
+package() {
+ cd ${srcdir}/${_realname}-${pkgver}
+ make install DESTDIR=${pkgdir}
+
+ # remove perllocal.pod and .packlist
+ find ${pkgdir} -name perllocal.pod -delete
+ find ${pkgdir} -name .packlist -delete
+}
diff --git a/extra/perl-xml-parser/PKGBUILD b/extra/perl-xml-parser/PKGBUILD
new file mode 100644
index 000000000..aef91068e
--- /dev/null
+++ b/extra/perl-xml-parser/PKGBUILD
@@ -0,0 +1,38 @@
+# $Id: PKGBUILD 101389 2010-11-29 01:30:43Z kevin $
+# Maintainer:
+# Contributor: firmicus <francois@archlinux.org>
+# Contributor: dorphell <dorphell@archlinux.org>
+# Contributor: herb <hrose@archlinux.org>
+
+pkgname=perl-xml-parser
+_realname=XML-Parser
+pkgver=2.40
+pkgrel=2
+pkgdesc="Expat-based XML parser module for perl"
+arch=('i686' 'x86_64')
+license=('GPL' 'PerlArtistic')
+url="http://search.cpan.org/dist/${_realname}/"
+depends=('perl' 'expat')
+replaces=('perlxml')
+provides=("perlxml=${pkgver}")
+options=('!emptydirs')
+source=("http://search.cpan.org/CPAN/authors/id/C/CH/CHORNY/${_realname}-${pkgver}.tar.gz")
+md5sums=('c66e9adba003d0667cc40115ccd837a5')
+
+build() {
+ cd "${srcdir}/${_realname}-${pkgver}"
+
+ # install module in vendor directories.
+ perl Makefile.PL INSTALLDIRS=vendor
+ make
+ make test
+}
+
+package() {
+ cd "${srcdir}/${_realname}-${pkgver}"
+ make install DESTDIR="${pkgdir}"
+
+ # remove perllocal.pod and .packlist.
+ find "${pkgdir}" -name perllocal.pod -delete
+ find "${pkgdir}" -name .packlist -delete
+}
diff --git a/extra/perl-yaml-syck/PKGBUILD b/extra/perl-yaml-syck/PKGBUILD
new file mode 100644
index 000000000..5a2695d2a
--- /dev/null
+++ b/extra/perl-yaml-syck/PKGBUILD
@@ -0,0 +1,37 @@
+# $Id: PKGBUILD 101391 2010-11-29 01:38:44Z kevin $
+# This PKGBUILD was generated by cpan4pacman via CPANPLUS::Dist::Pacman
+# Maintainer: kevin <kevin@archlinux.org>
+
+pkgname=perl-yaml-syck
+_realname=YAML-Syck
+pkgver=1.17
+pkgrel=1
+pkgdesc="Fast, lightweight YAML loader and dumper"
+arch=('i686' 'x86_64')
+license=('custom')
+url="http://search.cpan.org/dist/${_realname}/"
+depends=('perl>=5.10.0')
+options=('!emptydirs')
+source=(http://www.cpan.org/authors/id/A/AV/AVAR/${_realname}-$pkgver.tar.gz)
+md5sums=('f788529ad4b2c2fd037ccdfd5e7a88ab')
+
+build() {
+ cd ${srcdir}/${_realname}-$pkgver
+
+ # install module in vendor directories.
+ perl Makefile.PL INSTALLDIRS=vendor
+ make
+ make test
+}
+
+package() {
+ cd ${srcdir}/${_realname}-$pkgver
+ make install DESTDIR=${pkgdir}
+
+ # remove perllocal.pod and .packlist
+ find ${pkgdir} -name perllocal.pod -delete
+ find ${pkgdir} -name .packlist -delete
+
+ # license.
+ install -D -m644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/COPYING
+}
diff --git a/extra/phonon-gstreamer/PKGBUILD b/extra/phonon-gstreamer/PKGBUILD
new file mode 100644
index 000000000..0b4ca11d0
--- /dev/null
+++ b/extra/phonon-gstreamer/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 107146 2011-01-21 18:57:32Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+
+pkgname=phonon-gstreamer
+pkgver=4.4.4
+pkgrel=1
+arch=('i686' 'x86_64')
+url="http://phonon.kde.org"
+pkgdesc="Phonon GStreamer backend"
+license=('LGPL')
+depends=('gstreamer0.10-base-plugins')
+makedepends=('cmake' 'automoc4' 'phonon' 'mesa')
+provides=('phonon-backend')
+source=("http://download.kde.org/stable/phonon/phonon-backend-gstreamer/${pkgver}/src/phonon-backend-gstreamer-${pkgver}.tar.bz2")
+md5sums=('fa313a77db3da9df20bc8991352378cb')
+
+build() {
+ cd ${srcdir}
+ mkdir build
+ cd build
+ cmake ../phonon-backend-gstreamer-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=/usr
+ make
+}
+
+package() {
+ cd ${srcdir}/build
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/phonon-vlc/PKGBUILD b/extra/phonon-vlc/PKGBUILD
new file mode 100644
index 000000000..cd6309f45
--- /dev/null
+++ b/extra/phonon-vlc/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 107138 2011-01-21 18:51:32Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+
+pkgname=phonon-vlc
+pkgver=0.3.2
+pkgrel=1
+arch=('i686' 'x86_64')
+url="http://phonon.kde.org"
+pkgdesc="Phonon VLC backend"
+license=('LGPL')
+depends=('vlc')
+makedepends=('cmake' 'automoc4' 'phonon')
+provides=('phonon-backend')
+source=("http://download.kde.org/stable/phonon/phonon-backend-vlc/${pkgver}/src/phonon-backend-vlc-${pkgver}.tar.bz2")
+md5sums=('40076298deb89a1f2fd7f43c95e344fb')
+
+build() {
+ cd ${srcdir}
+ mkdir build
+ cd build
+ cmake ../phonon-backend-vlc-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=/usr
+ make
+}
+
+package() {
+ cd ${srcdir}/build
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/phonon-xine/PKGBUILD b/extra/phonon-xine/PKGBUILD
new file mode 100644
index 000000000..2d4dccfb1
--- /dev/null
+++ b/extra/phonon-xine/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id$
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+
+pkgname=phonon-xine
+pkgver=4.4.4
+pkgrel=1
+arch=('i686' 'x86_64')
+url="http://phonon.kde.org"
+pkgdesc="Phonon Xine backend"
+license=('LGPL')
+depends=('xine-lib')
+makedepends=('cmake' 'automoc4' 'phonon')
+provides=('phonon-backend')
+source=("http://download.kde.org/stable/phonon/phonon-backend-xine/${pkgver}/src/phonon-backend-xine-${pkgver}.tar.bz2")
+md5sums=('b127104e67538e573adeed3b2fb3bf55')
+
+build() {
+ cd ${srcdir}
+ mkdir build
+ cd build
+ cmake ../phonon-backend-xine-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=/usr
+ make
+}
+
+package() {
+ cd ${srcdir}/build
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/phonon/PKGBUILD b/extra/phonon/PKGBUILD
new file mode 100644
index 000000000..e93c1dcde
--- /dev/null
+++ b/extra/phonon/PKGBUILD
@@ -0,0 +1,32 @@
+# $Id: PKGBUILD 116776 2011-03-25 20:41:06Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+
+pkgname=phonon
+pkgver=4.5.0
+pkgrel=1
+arch=('i686' 'x86_64')
+url="http://phonon.kde.org"
+license=('LGPL')
+pkgdesc="The multimedia framework for KDE4"
+depends=('qt' 'phonon-backend' 'libpulse')
+optdepends=('pulseaudio: PulseAudio support')
+makedepends=('cmake' 'automoc4' 'pulseaudio')
+source=("http://download.kde.org/stable/${pkgname}/${pkgver}/src/${pkgname}-${pkgver}.tar.bz2")
+md5sums=('32f8d388c18fde2e23dea7bb103f9713')
+
+build() {
+ cd ${srcdir}
+ mkdir build
+ cd build
+ cmake ../${pkgname}-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_SKIP_RPATH=ON \
+ -DWITH_QZeitgeist=OFF
+ make
+}
+
+package(){
+ cd ${srcdir}/build
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/php-apc/PKGBUILD b/extra/php-apc/PKGBUILD
new file mode 100644
index 000000000..74b579641
--- /dev/null
+++ b/extra/php-apc/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 105850 2011-01-13 11:54:50Z pierre $
+# Maintainer: Pierre Schmitz <pierre@archlinux.de>
+
+pkgname=php-apc
+pkgver=3.1.7
+pkgrel=1
+arch=('i686' 'x86_64')
+pkgdesc='A free, open, and robust framework for caching and optimizing PHP intermediate code'
+url='http://pecl.php.net/package/APC'
+depends=('php')
+license="PHP"
+source=("http://pecl.php.net/get/APC-${pkgver}.tgz")
+backup=('etc/php/conf.d/apc.ini')
+md5sums=('94239866e5d1b90e02675e988a5cbad4')
+
+build() {
+ cd $srcdir/APC-$pkgver
+ phpize
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd $srcdir/APC-$pkgver
+ make INSTALL_ROOT=$pkgdir install
+ echo ';extension=apc.so' > apc.ini
+ install -D -m644 apc.ini $pkgdir/etc/php/conf.d/apc.ini
+ install -D -m644 apc.php $pkgdir/usr/share/php-apc/apc.php
+ install -D -m644 INSTALL $pkgdir/usr/share/doc/php-apc/install.txt
+}
diff --git a/extra/php-suhosin/PKGBUILD b/extra/php-suhosin/PKGBUILD
new file mode 100644
index 000000000..a3173beaa
--- /dev/null
+++ b/extra/php-suhosin/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id: PKGBUILD 86069 2010-07-25 11:35:16Z pierre $
+# Maintainer: Pierre Schmitz <pierre@archlinux.de>
+
+pkgname=php-suhosin
+pkgver=0.9.32.1
+pkgrel=1
+arch=('i686' 'x86_64')
+pkgdesc='An advanced protection system for PHP installations'
+url='http://www.hardened-php.net/suhosin/'
+license='PHP'
+source=("http://download.suhosin.org/suhosin-${pkgver}.tar.gz")
+depends=('php')
+conflicts=('php-suhosin-extension')
+replaces=('php-suhosin-extension')
+backup=('etc/php/conf.d/suhosin.ini')
+md5sums=('26a86f0f684a656c3e789e3eb4ec1db3')
+
+build() {
+ cd ${srcdir}/suhosin-${pkgver}
+ phpize
+ ./configure --prefix=/usr --enable-suhosin
+ make
+}
+
+package() {
+ cd ${srcdir}/suhosin-${pkgver}
+ make INSTALL_ROOT=${pkgdir} install
+ # disable by default
+ sed -i 's|extension = suhosin.so|;extension=suhosin.so|g' suhosin.ini
+ install -D -m644 suhosin.ini ${pkgdir}/etc/php/conf.d/suhosin.ini
+}
diff --git a/extra/php/PKGBUILD b/extra/php/PKGBUILD
new file mode 100644
index 000000000..5c2531f8d
--- /dev/null
+++ b/extra/php/PKGBUILD
@@ -0,0 +1,380 @@
+# $Id: PKGBUILD 115705 2011-03-19 15:53:37Z pierre $
+# Maintainer: Pierre Schmitz <pierre@archlinux.de>
+
+pkgbase=php
+pkgname=('php'
+ 'php-cgi'
+ 'php-apache'
+ 'php-fpm'
+ 'php-embed'
+ 'php-pear'
+ 'php-curl'
+ 'php-enchant'
+ 'php-gd'
+ 'php-gmp'
+ 'php-intl'
+ 'php-ldap'
+ 'php-mcrypt'
+ 'php-mssql'
+ 'php-odbc'
+ 'php-pgsql'
+ 'php-pspell'
+ 'php-snmp'
+ 'php-sqlite'
+ 'php-tidy'
+ 'php-xsl')
+pkgver=5.3.6
+pkgrel=1
+_suhosinver=${pkgver}-0.9.10
+arch=('i686' 'x86_64')
+license=('PHP')
+url='http://www.php.net'
+makedepends=('apache' 'imap' 'postgresql-libs' 'mysql' 'libldap' 'postfix'
+ 'sqlite3' 'unixodbc' 'net-snmp' 'libzip' 'enchant' 'file' 'freetds'
+ 'libmcrypt' 'tidyhtml' 'aspell' 'libtool' 'libpng' 'libjpeg' 'icu'
+ 'curl' 'libxslt' 'openssl' 'bzip2' 'db' 'gmp' 'freetype2')
+source=("http://www.php.net/distributions/${pkgbase}-${pkgver}.tar.bz2"
+ "suhosin-patch-${_suhosinver}.patch.gz"
+ 'php.ini.patch' 'apache.conf' 'rc.d.php-fpm' 'php-fpm.conf.in.patch'
+ 'logrotate.d.php-fpm')
+md5sums=('2286f5a82a6e8397955a0025c1c2ad98'
+ 'fff1a38877142f3ae6036dbe5a85d0a6'
+ '39eaa70d276fc3d45d6bcf6cd5ae1106'
+ '96ca078be6729b665be8a865535a97bf'
+ 'b136a184dd055c559a03eb8bac562a3c'
+ 'd50ff349da08110a7cc8c691ce2d0423'
+ '07c4e412909ac65a44ec90e7a2c4bade')
+
+build() {
+ # ldap-sasl does not compile with --as-needed
+ export LDFLAGS="${LDFLAGS//-Wl,--as-needed}"
+ export LDFLAGS="${LDFLAGS//,--as-needed}"
+
+ phpconfig="--srcdir=../${pkgbase}-${pkgver} \
+ --prefix=/usr \
+ --sysconfdir=/etc/php \
+ --localstatedir=/var \
+ --with-layout=GNU \
+ --with-config-file-path=/etc/php \
+ --with-config-file-scan-dir=/etc/php/conf.d \
+ --enable-inline-optimization \
+ --disable-debug \
+ --disable-rpath \
+ --disable-static \
+ --enable-shared \
+ --mandir=/usr/share/man \
+ --without-pear \
+ "
+
+ phpextensions="--enable-bcmath=shared \
+ --enable-calendar=shared \
+ --enable-dba=shared \
+ --enable-exif=shared \
+ --enable-ftp=shared \
+ --enable-gd-native-ttf \
+ --enable-intl=shared \
+ --enable-json=shared \
+ --enable-mbregex \
+ --enable-mbstring \
+ --enable-pdo \
+ --enable-phar=shared \
+ --enable-posix=shared \
+ --enable-session \
+ --enable-shmop=shared \
+ --enable-soap=shared \
+ --enable-sockets=shared \
+ --enable-sqlite-utf8 \
+ --enable-sysvmsg=shared \
+ --enable-sysvsem=shared \
+ --enable-sysvshm=shared \
+ --enable-xml \
+ --enable-zip=shared \
+ --with-bz2=shared \
+ --with-curl=shared \
+ --with-db4=/usr \
+ --with-enchant=shared,/usr \
+ --with-freetype-dir=shared,/usr \
+ --with-gd=shared \
+ --with-gdbm=shared \
+ --with-gettext=shared \
+ --with-gmp=shared \
+ --with-iconv=shared \
+ --with-icu-dir=/usr \
+ --with-imap-ssl=shared \
+ --with-imap=shared \
+ --with-jpeg-dir=shared,/usr \
+ --with-ldap=shared \
+ --with-ldap-sasl \
+ --with-mcrypt=shared \
+ --with-mhash \
+ --with-mssql=shared \
+ --with-mysql-sock=/var/run/mysqld/mysqld.sock \
+ --with-mysql=shared,mysqlnd \
+ --with-mysqli=shared,mysqlnd \
+ --with-openssl=shared \
+ --with-pcre-regex=/usr \
+ --with-pdo-mysql=shared,mysqlnd \
+ --with-pdo-odbc=shared,unixODBC,/usr \
+ --with-pdo-pgsql=shared \
+ --with-pdo-sqlite=shared,/usr \
+ --with-pgsql=shared \
+ --with-png-dir=shared,/usr \
+ --with-pspell=shared \
+ --with-regex=php \
+ --with-snmp=shared \
+ --with-sqlite3=shared,/usr \
+ --with-sqlite=shared \
+ --with-tidy=shared \
+ --with-unixODBC=shared,/usr \
+ --with-xmlrpc=shared \
+ --with-xsl=shared \
+ --with-zlib \
+ --without-db2 \
+ --without-db3 \
+ "
+
+ EXTENSION_DIR=/usr/lib/php/modules
+ export EXTENSION_DIR
+ PEAR_INSTALLDIR=/usr/share/pear
+ export PEAR_INSTALLDIR
+
+ cd ${srcdir}/${pkgbase}-${pkgver}
+
+ # apply suhosin patch
+ patch -p1 -i ${srcdir}/suhosin-patch-${_suhosinver}.patch
+
+ # adjust paths
+ patch -p0 -i ${srcdir}/php.ini.patch
+ patch -p0 -i ${srcdir}/php-fpm.conf.in.patch
+
+ # php
+ mkdir ${srcdir}/build-php
+ cd ${srcdir}/build-php
+ ln -s ../${pkgbase}-${pkgver}/configure
+ ./configure ${phpconfig} \
+ --disable-cgi \
+ --with-readline \
+ --enable-pcntl \
+ ${phpextensions}
+ make
+
+ # cgi and fcgi
+ # reuse the previous run; this will save us a lot of time
+ cp -a ${srcdir}/build-php ${srcdir}/build-cgi
+ cd ${srcdir}/build-cgi
+ ./configure ${phpconfig} \
+ --disable-cli \
+ --enable-cgi \
+ ${phpextensions}
+ make
+
+ # apache
+ cp -a ${srcdir}/build-php ${srcdir}/build-apache
+ cd ${srcdir}/build-apache
+ ./configure ${phpconfig} \
+ --disable-cli \
+ --with-apxs2 \
+ ${phpextensions}
+ make
+
+ # fpm
+ cp -a ${srcdir}/build-php ${srcdir}/build-fpm
+ cd ${srcdir}/build-fpm
+ ./configure ${phpconfig} \
+ --disable-cli \
+ --enable-fpm \
+ --with-fpm-user=http \
+ --with-fpm-group=http \
+ ${phpextensions}
+ make
+
+ # embed
+ cp -a ${srcdir}/build-php ${srcdir}/build-embed
+ cd ${srcdir}/build-embed
+ ./configure ${phpconfig} \
+ --disable-cli \
+ --enable-embed=shared \
+ ${phpextensions}
+ make
+
+ # pear
+ cp -a ${srcdir}/build-php ${srcdir}/build-pear
+ cd ${srcdir}/build-pear
+ ./configure ${phpconfig} \
+ --disable-cgi \
+ --with-readline \
+ --enable-pcntl \
+ --with-pear \
+ ${phpextensions}
+ make
+}
+
+# check() {
+# cd ${srcdir}/build-php
+# make test
+# }
+
+package_php() {
+ pkgdesc='An HTML-embedded scripting language'
+ depends=('pcre' 'libxml2' 'bzip2' 'openssl')
+ replaces=('php-fileinfo')
+ provides=('php-fileinfo')
+ conflicts=('php-fileinfo')
+ backup=('etc/php/php.ini')
+
+ cd ${srcdir}/build-php
+ make -j1 INSTALL_ROOT=${pkgdir} install
+ install -d -m755 ${pkgdir}/usr/share/pear
+ # install php.ini
+ install -D -m644 ${srcdir}/${pkgbase}-${pkgver}/php.ini-production ${pkgdir}/etc/php/php.ini
+ install -d -m755 ${pkgdir}/etc/php/conf.d/
+
+ # remove static modules
+ rm -f ${pkgdir}/usr/lib/php/modules/*.a
+ # remove modules provided by sub packages
+ rm -f ${pkgdir}/usr/lib/php/modules/{curl,enchant,gd,gmp,intl,ldap,mcrypt,mssql,odbc,pdo_odbc,pgsql,pdo_pgsql,pspell,snmp,sqlite3,pdo_sqlite,tidy,xsl}.so
+}
+
+package_php-cgi() {
+ pkgdesc='CGI and FCGI SAPI for PHP'
+ depends=('php' 'pcre' 'libxml2')
+
+ install -D -m755 ${srcdir}/build-cgi/sapi/cgi/php-cgi ${pkgdir}/usr/bin/php-cgi
+}
+
+package_php-apache() {
+ pkgdesc='Apache SAPI for PHP'
+ depends=('php' 'apache' 'pcre' 'libxml2')
+ backup=('etc/httpd/conf/extra/php5_module.conf')
+
+ install -D -m755 ${srcdir}/build-apache/libs/libphp5.so ${pkgdir}/usr/lib/httpd/modules/libphp5.so
+ install -D -m644 ${srcdir}/apache.conf ${pkgdir}/etc/httpd/conf/extra/php5_module.conf
+}
+
+package_php-fpm() {
+ pkgdesc='FastCGI Process Manager for PHP'
+ depends=('php')
+ backup=('etc/php/php-fpm.conf')
+
+ install -D -m755 ${srcdir}/build-fpm/sapi/fpm/php-fpm ${pkgdir}/usr/sbin/php-fpm
+ install -D -m644 ${srcdir}/build-fpm/sapi/fpm/php-fpm.8 ${pkgdir}/usr/share/man/man8/php-fpm.8
+ install -D -m644 ${srcdir}/build-fpm/sapi/fpm/php-fpm.conf ${pkgdir}/etc/php/php-fpm.conf
+ install -D -m755 ${srcdir}/rc.d.php-fpm ${pkgdir}/etc/rc.d/php-fpm
+ install -D -m644 ${srcdir}/logrotate.d.php-fpm ${pkgdir}/etc/logrotate.d/php-fpm
+ install -d -m755 ${pkgdir}/var/run/php-fpm
+ install -d -m755 ${pkgdir}/etc/php/fpm.d
+}
+
+package_php-embed() {
+ pkgdesc='Embed SAPI for PHP'
+ depends=('php' 'pcre' 'libxml2')
+
+ install -D -m755 ${srcdir}/build-embed/libs/libphp5.so ${pkgdir}/usr/lib/libphp5.so
+ install -D -m644 ${srcdir}/${pkgbase}-${pkgver}/sapi/embed/php_embed.h ${pkgdir}/usr/include/php/sapi/embed/php_embed.h
+}
+
+package_php-pear() {
+ pkgdesc='PHP Extension and Application Repository'
+ depends=('php' 'bash')
+ backup=('etc/php/pear.conf')
+
+ cd ${srcdir}/build-pear
+ make -j1 install-pear INSTALL_ROOT=${pkgdir}
+ local i
+ while read i; do
+ [ ! -e "$i" ] || rm -rf "$i"
+ done < <(find ${pkgdir} -name '.*')
+}
+
+package_php-curl() {
+ depends=('php' 'curl')
+ pkgdesc='curl module for PHP'
+ install -D -m755 ${srcdir}/build-php/modules/curl.so ${pkgdir}/usr/lib/php/modules/curl.so
+}
+
+package_php-enchant() {
+ depends=('php' 'enchant')
+ pkgdesc='enchant module for PHP'
+ install -D -m755 ${srcdir}/build-php/modules/enchant.so ${pkgdir}/usr/lib/php/modules/enchant.so
+}
+
+package_php-gd() {
+ depends=('php' 'libpng' 'libjpeg' 'freetype2')
+ pkgdesc='gd module for PHP'
+ install -D -m755 ${srcdir}/build-php/modules/gd.so ${pkgdir}/usr/lib/php/modules/gd.so
+}
+
+package_php-gmp() {
+ depends=('php' 'gmp')
+ pkgdesc='gmp module for PHP'
+ install -D -m755 ${srcdir}/build-php/modules/gmp.so ${pkgdir}/usr/lib/php/modules/gmp.so
+}
+
+package_php-intl() {
+ depends=('php' 'icu')
+ pkgdesc='intl module for PHP'
+ install -D -m755 ${srcdir}/build-php/modules/intl.so ${pkgdir}/usr/lib/php/modules/intl.so
+}
+
+package_php-ldap() {
+ depends=('php' 'libldap')
+ pkgdesc='ldap module for PHP'
+ install -D -m755 ${srcdir}/build-php/modules/ldap.so ${pkgdir}/usr/lib/php/modules/ldap.so
+}
+
+package_php-mcrypt() {
+ depends=('php' 'libmcrypt' 'libtool')
+ pkgdesc='mcrypt module for PHP'
+ install -D -m755 ${srcdir}/build-php/modules/mcrypt.so ${pkgdir}/usr/lib/php/modules/mcrypt.so
+}
+
+package_php-mssql() {
+ depends=('php' 'freetds')
+ pkgdesc='mssql module for PHP'
+ install -D -m755 ${srcdir}/build-php/modules/mssql.so ${pkgdir}/usr/lib/php/modules/mssql.so
+}
+
+package_php-odbc() {
+ depends=('php' 'unixodbc')
+ pkgdesc='ODBC modules for PHP'
+ install -D -m755 ${srcdir}/build-php/modules/odbc.so ${pkgdir}/usr/lib/php/modules/odbc.so
+ install -D -m755 ${srcdir}/build-php/modules/pdo_odbc.so ${pkgdir}/usr/lib/php/modules/pdo_odbc.so
+}
+
+package_php-pgsql() {
+ depends=('php' 'postgresql-libs')
+ pkgdesc='PostgreSQL modules for PHP'
+ install -D -m755 ${srcdir}/build-php/modules/pgsql.so ${pkgdir}/usr/lib/php/modules/pgsql.so
+ install -D -m755 ${srcdir}/build-php/modules/pdo_pgsql.so ${pkgdir}/usr/lib/php/modules/pdo_pgsql.so
+}
+
+package_php-pspell() {
+ depends=('php' 'aspell')
+ pkgdesc='pspell module for PHP'
+ install -D -m755 ${srcdir}/build-php/modules/pspell.so ${pkgdir}/usr/lib/php/modules/pspell.so
+}
+
+package_php-snmp() {
+ depends=('php' 'net-snmp')
+ pkgdesc='snmp module for PHP'
+ install -D -m755 ${srcdir}/build-php/modules/snmp.so ${pkgdir}/usr/lib/php/modules/snmp.so
+}
+
+package_php-sqlite() {
+ depends=('php' 'sqlite3')
+ pkgdesc='sqlite3 module for PHP'
+ install -D -m755 ${srcdir}/build-php/modules/sqlite3.so ${pkgdir}/usr/lib/php/modules/sqlite3.so
+ install -D -m755 ${srcdir}/build-php/modules/pdo_sqlite.so ${pkgdir}/usr/lib/php/modules/pdo_sqlite.so
+}
+
+package_php-tidy() {
+ depends=('php' 'tidyhtml')
+ pkgdesc='tidy module for PHP'
+ install -D -m755 ${srcdir}/build-php/modules/tidy.so ${pkgdir}/usr/lib/php/modules/tidy.so
+}
+
+package_php-xsl() {
+ depends=('php' 'libxslt')
+ pkgdesc='xsl module for PHP'
+ install -D -m755 ${srcdir}/build-php/modules/xsl.so ${pkgdir}/usr/lib/php/modules/xsl.so
+}
diff --git a/extra/php/apache.conf b/extra/php/apache.conf
new file mode 100644
index 000000000..86344c803
--- /dev/null
+++ b/extra/php/apache.conf
@@ -0,0 +1,9 @@
+# Required modules: dir_module, php5_module
+
+<IfModule dir_module>
+ <IfModule php5_module>
+ DirectoryIndex index.php index.html
+ AddHandler application/x-httpd-php .php
+ AddHandler application/x-httpd-php-source .phps
+ </IfModule>
+</IfModule> \ No newline at end of file
diff --git a/extra/php/logrotate.d.php-fpm b/extra/php/logrotate.d.php-fpm
new file mode 100644
index 000000000..7a1ba2597
--- /dev/null
+++ b/extra/php/logrotate.d.php-fpm
@@ -0,0 +1,6 @@
+/var/log/php-fpm.log {
+ missingok
+ postrotate
+ /etc/rc.d/php-fpm logrotate >/dev/null || true
+ endscript
+}
diff --git a/extra/php/php-fpm.conf.in.patch b/extra/php/php-fpm.conf.in.patch
new file mode 100644
index 000000000..93c62430a
--- /dev/null
+++ b/extra/php/php-fpm.conf.in.patch
@@ -0,0 +1,80 @@
+--- sapi/fpm/php-fpm.conf.in 2010-12-11 08:31:47.695294987 +0100
++++ sapi/fpm/php-fpm.conf.in 2010-12-11 08:31:55.907812237 +0100
+@@ -12,7 +12,7 @@
+ ; Relative path can also be used. They will be prefixed by:
+ ; - the global prefix if it's been set (-p arguement)
+ ; - @prefix@ otherwise
+-;include=etc/fpm.d/*.conf
++;include=/etc/php/fpm.d/*.conf
+
+ ;;;;;;;;;;;;;;;;;;
+ ; Global Options ;
+@@ -22,7 +22,7 @@
+ ; Pid file
+ ; Note: the default prefix is @EXPANDED_LOCALSTATEDIR@
+ ; Default Value: none
+-;pid = run/php-fpm.pid
++pid = run/php-fpm/php-fpm.pid
+
+ ; Error log file
+ ; Note: the default prefix is @EXPANDED_LOCALSTATEDIR@
+@@ -93,7 +93,8 @@
+ ; specific port;
+ ; '/path/to/unix/socket' - to listen on a unix socket.
+ ; Note: This value is mandatory.
+-listen = 127.0.0.1:9000
++;listen = 127.0.0.1:9000
++listen = /var/run/php-fpm/php-fpm.sock
+
+ ; Set listen(2) backlog. A value of '-1' means unlimited.
+ ; Default Value: 128 (-1 on FreeBSD and OpenBSD)
+@@ -112,9 +113,9 @@
+ ; BSD-derived systems allow connections regardless of permissions.
+ ; Default Values: user and group are set as the running user
+ ; mode is set to 0666
+-;listen.owner = @php_fpm_user@
+-;listen.group = @php_fpm_group@
+-;listen.mode = 0666
++listen.owner = @php_fpm_user@
++listen.group = @php_fpm_group@
++listen.mode = 0660
+
+ ; Unix user/group of processes
+ ; Note: The user is mandatory. If the group is not set, the default user's group
+@@ -154,23 +155,23 @@
+ ; The number of child processes created on startup.
+ ; Note: Used only when pm is set to 'dynamic'
+ ; Default Value: min_spare_servers + (max_spare_servers - min_spare_servers) / 2
+-;pm.start_servers = 20
++pm.start_servers = 20
+
+ ; The desired minimum number of idle server processes.
+ ; Note: Used only when pm is set to 'dynamic'
+ ; Note: Mandatory when pm is set to 'dynamic'
+-;pm.min_spare_servers = 5
++pm.min_spare_servers = 5
+
+ ; The desired maximum number of idle server processes.
+ ; Note: Used only when pm is set to 'dynamic'
+ ; Note: Mandatory when pm is set to 'dynamic'
+-;pm.max_spare_servers = 35
++pm.max_spare_servers = 35
+
+ ; The number of requests each child process should execute before respawning.
+ ; This can be useful to work around memory leaks in 3rd party libraries. For
+ ; endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS.
+ ; Default Value: 0
+-;pm.max_requests = 500
++pm.max_requests = 500
+
+ ; The URI to view the FPM status page. If this value is not set, no URI will be
+ ; recognized as a status page. By default, the status page shows the following
+@@ -264,7 +265,7 @@
+ ; Chdir to this directory at the start.
+ ; Note: relative path can be used.
+ ; Default Value: current directory or / when chroot
+-;chdir = /var/www
++;chdir = /srv/http
+
+ ; Redirect worker stdout and stderr into main error log. If not set, stdout and
+ ; stderr will be redirected to /dev/null according to FastCGI specs.
diff --git a/extra/php/php.ini.patch b/extra/php/php.ini.patch
new file mode 100644
index 000000000..356e190b4
--- /dev/null
+++ b/extra/php/php.ini.patch
@@ -0,0 +1,126 @@
+--- php.ini-production 2011-02-09 01:25:44.000000000 +0100
++++ php.ini-production 2011-03-19 11:11:44.496987763 +0100
+@@ -376,7 +376,7 @@
+ ; or per-virtualhost web server configuration file. This directive is
+ ; *NOT* affected by whether Safe Mode is turned On or Off.
+ ; http://php.net/open-basedir
+-;open_basedir =
++open_basedir = /srv/http/:/home/:/tmp/:/usr/share/pear/
+
+ ; This directive allows you to disable certain functions for security reasons.
+ ; It receives a comma-delimited list of function names. This directive is
+@@ -781,7 +781,7 @@
+ ;;;;;;;;;;;;;;;;;;;;;;;;;
+
+ ; UNIX: "/path1:/path2"
+-;include_path = ".:/php/includes"
++include_path = ".:/usr/share/pear"
+ ;
+ ; Windows: "\path1;\path2"
+ ;include_path = ".;c:\php\includes"
+@@ -804,7 +804,7 @@
+
+ ; Directory in which the loadable extensions (modules) reside.
+ ; http://php.net/extension-dir
+-; extension_dir = "./"
++extension_dir = "/usr/lib/php/modules/"
+ ; On windows:
+ ; extension_dir = "ext"
+
+@@ -938,53 +938,49 @@
+ ; If you only provide the name of the extension, PHP will look for it in its
+ ; default extension directory.
+ ;
+-; Windows Extensions
+-; Note that ODBC support is built in, so no dll is needed for it.
+-; Note that many DLL files are located in the extensions/ (PHP 4) ext/ (PHP 5)
+-; extension folders as well as the separate PECL DLL download (PHP 5).
+-; Be sure to appropriately set the extension_dir directive.
+-;
+-;extension=php_bz2.dll
+-;extension=php_curl.dll
+-;extension=php_fileinfo.dll
+-;extension=php_gd2.dll
+-;extension=php_gettext.dll
+-;extension=php_gmp.dll
+-;extension=php_intl.dll
+-;extension=php_imap.dll
+-;extension=php_interbase.dll
+-;extension=php_ldap.dll
+-;extension=php_mbstring.dll
+-;extension=php_exif.dll ; Must be after mbstring as it depends on it
+-;extension=php_mysql.dll
+-;extension=php_mysqli.dll
+-;extension=php_oci8.dll ; Use with Oracle 10gR2 Instant Client
+-;extension=php_oci8_11g.dll ; Use with Oracle 11g Instant Client
+-;extension=php_openssl.dll
+-;extension=php_pdo_firebird.dll
+-;extension=php_pdo_mssql.dll
+-;extension=php_pdo_mysql.dll
+-;extension=php_pdo_oci.dll
+-;extension=php_pdo_odbc.dll
+-;extension=php_pdo_pgsql.dll
+-;extension=php_pdo_sqlite.dll
+-;extension=php_pgsql.dll
+-;extension=php_pspell.dll
+-;extension=php_shmop.dll
+-
+-; The MIBS data available in the PHP distribution must be installed.
+-; See http://www.php.net/manual/en/snmp.installation.php
+-;extension=php_snmp.dll
+-
+-;extension=php_soap.dll
+-;extension=php_sockets.dll
+-;extension=php_sqlite.dll
+-;extension=php_sqlite3.dll
+-;extension=php_sybase_ct.dll
+-;extension=php_tidy.dll
+-;extension=php_xmlrpc.dll
+-;extension=php_xsl.dll
+-;extension=php_zip.dll
++;extension=bcmath.so
++;extension=bz2.so
++;extension=calendar.so
++;extension=curl.so
++;extension=dba.so
++;extension=enchant.so
++;extension=exif.so
++;extension=ftp.so
++;extension=gd.so
++extension=gettext.so
++;extension=gmp.so
++;extension=iconv.so
++;extension=imap.so
++;extension=intl.so
++;extension=json.so
++;extension=ldap.so
++;extension=mcrypt.so
++;extension=mssql.so
++;extension=mysqli.so
++;extension=mysql.so
++;extension=odbc.so
++;extension=openssl.so
++;extension=pdo_mysql.so
++;extension=pdo_odbc.so
++;extension=pdo_pgsql.so
++;extension=pdo_sqlite.so
++;extension=pgsql.so
++;extension=phar.so
++;extension=posix.so
++;extension=pspell.so
++;extension=shmop.so
++;extension=snmp.so
++;extension=soap.so
++;extension=sockets.so
++;extension=sqlite3.so
++;extension=sqlite.so
++;extension=sysvmsg.so
++;extension=sysvsem.so
++;extension=sysvshm.so
++;extension=tidy.so
++;extension=xmlrpc.so
++;extension=xsl.so
++;extension=zip.so
+
+ ;;;;;;;;;;;;;;;;;;;
+ ; Module Settings ;
diff --git a/extra/php/rc.d.php-fpm b/extra/php/rc.d.php-fpm
new file mode 100644
index 000000000..35cf35652
--- /dev/null
+++ b/extra/php/rc.d.php-fpm
@@ -0,0 +1,136 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+
+wait_for_pid () {
+ try=0
+
+ while test $try -lt 35 ; do
+
+ case "$1" in
+ 'created')
+ if [ -f "$2" ] ; then
+ try=''
+ break
+ fi
+ ;;
+
+ 'removed')
+ if [ ! -f "$2" ] ; then
+ try=''
+ break
+ fi
+ ;;
+ esac
+
+ stat_append '.'
+ try=`expr $try + 1`
+ sleep 1
+
+ done
+
+}
+
+[ -d /var/run/php-fpm ] || install -d -m755 /var/run/php-fpm
+
+case "$1" in
+ start)
+ stat_busy 'Starting php-fpm'
+
+ /usr/sbin/php-fpm
+
+ if [ "$?" != 0 ] ; then
+ stat_fail
+ exit 1
+ fi
+
+ wait_for_pid created /var/run/php-fpm/php-fpm.pid
+
+ if [ -n "$try" ] ; then
+ stat_fail
+ exit 1
+ else
+ add_daemon php-fpm
+ stat_done
+ fi
+ ;;
+
+ stop)
+ stat_busy 'Gracefully shutting down php-fpm'
+
+ if [ ! -r /var/run/php-fpm/php-fpm.pid ] ; then
+ stat_fail
+ exit 1
+ fi
+
+ kill -QUIT `cat /var/run/php-fpm/php-fpm.pid`
+
+ wait_for_pid removed /var/run/php-fpm.pid
+
+ if [ -n "$try" ] ; then
+ stat_fail
+ exit 1
+ else
+ rm_daemon php-fpm
+ stat_done
+ fi
+ ;;
+
+ force-quit)
+ stat_busy 'Terminating php-fpm'
+
+ if [ ! -r /var/run/php-fpm/php-fpm.pid ] ; then
+ stat_fail
+ exit 1
+ fi
+
+ kill -TERM `cat /var/run/php-fpm/php-fpm.pid`
+
+ wait_for_pid removed /var/run/php-fpm/php-fpm.pid
+
+ if [ -n "$try" ] ; then
+ stat_fail
+ exit 1
+ else
+ rm_daemon php-fpm
+ stat_done
+ fi
+ ;;
+
+ restart)
+ $0 stop
+ $0 start
+ ;;
+
+ reload)
+ stat_busy 'Reload service php-fpm'
+
+ if [ ! -r /var/run/php-fpm/php-fpm.pid ] ; then
+ stat_fail
+ exit 1
+ fi
+
+ kill -USR2 `cat /var/run/php-fpm/php-fpm.pid`
+ stat_done
+ ;;
+
+ logrotate)
+ stat_busy 'Reopen php-fpm log'
+
+ if [ ! -r /var/run/php-fpm/php-fpm.pid ] ; then
+ stat_fail
+ exit 1
+ fi
+
+ kill -USR1 `cat /var/run/php-fpm/php-fpm.pid`
+ stat_done
+ ;;
+
+ *)
+ echo "usage: $0 {start|stop|force-quit|restart|reload|logrotate}"
+ exit 1
+ ;;
+
+esac
diff --git a/extra/php/suhosin-patch-5.3.6-0.9.10.patch.gz b/extra/php/suhosin-patch-5.3.6-0.9.10.patch.gz
new file mode 100644
index 000000000..7167ce2d0
--- /dev/null
+++ b/extra/php/suhosin-patch-5.3.6-0.9.10.patch.gz
Binary files differ
diff --git a/extra/physfs/PKGBUILD b/extra/physfs/PKGBUILD
new file mode 100644
index 000000000..0f1c90102
--- /dev/null
+++ b/extra/physfs/PKGBUILD
@@ -0,0 +1,37 @@
+# $Id: PKGBUILD 1214 2009-08-14 01:36:33Z dgriffiths $
+# Maintainer: Eric Bélanger <eric@archlinux.org>
+
+pkgname=physfs
+pkgver=2.0.2
+pkgrel=1
+pkgdesc="A library to provide abstract access to various archives"
+arch=('i686' 'x86_64')
+url="http://icculus.org/physfs/"
+license=('ZLIB')
+depends=('zlib' 'readline')
+makedepends=('cmake' 'doxygen')
+source=(http://icculus.org/physfs/downloads/${pkgname}-${pkgver}.tar.gz)
+md5sums=('4e8927c3d30279b03e2592106eb9184a')
+sha1sums=('2d3d3cc819ad26542d34451f44050b85635344d0')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ export CFLAGS="$CFLAGS -fno-strict-aliasing"
+ export CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
+ cmake . -DCMAKE_INSTALL_PREFIX=/usr -DPHYSFS_BUILD_TEST=OFF -DPHYSFS_BUILD_WX_TEST=OFF
+ make all docs
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+ install -d "${pkgdir}"/usr/share/{doc/physfs,man/man3}
+ install -m644 docs/html/* "${pkgdir}/usr/share/doc/physfs"
+ install -m644 docs/man/man3/* "${pkgdir}/usr/share/man/man3"
+
+ for i in author Deinit description extension Free Init major Malloc minor opaque patch Realloc url ; do
+ mv "${pkgdir}/usr/share/man/man3/$i.3" "${pkgdir}/usr/share/man/man3/PHYSFS_$i.3"
+ done
+
+ install -D -m644 LICENSE.txt "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+}
diff --git a/extra/pidgin-encryption/PKGBUILD b/extra/pidgin-encryption/PKGBUILD
new file mode 100644
index 000000000..d48c99c56
--- /dev/null
+++ b/extra/pidgin-encryption/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 79796 2010-05-07 19:39:52Z ibiru $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Dan McGee <dan@archlinux.org>
+# Contributor: Dale Blount <dale@archlinux.org>
+
+pkgname=pidgin-encryption
+pkgver=3.1
+pkgrel=1
+pkgdesc="A Pidgin plugin providing transparent RSA encryption using NSS"
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://pidgin-encrypt.sourceforge.net/"
+depends=('pidgin' 'nss')
+options=('!libtool')
+source=(http://downloads.sourceforge.net/pidgin-encrypt/$pkgname-$pkgver.tar.gz)
+md5sums=('d839eec602c21f913b32b742dc512f4b')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ ./configure --prefix=/usr --disable-static
+ make || return 1
+ make DESTDIR="$pkgdir" install
+}
diff --git a/extra/pidgin-encryption/fix_header_escaping.patch b/extra/pidgin-encryption/fix_header_escaping.patch
new file mode 100644
index 000000000..84df67b19
--- /dev/null
+++ b/extra/pidgin-encryption/fix_header_escaping.patch
@@ -0,0 +1,64 @@
+--- pidgin-encryption-3.0.orig/encrypt.c 2007-05-06 23:37:55.000000000 -0400
++++ pidgin-encryption-3.0.new/encrypt.c 2009-11-22 22:28:34.052010351 -0500
+@@ -1114,21 +1114,21 @@ static void PE_headers_init() {
+ notify_table = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
+
+ g_hash_table_insert(header_table, g_strdup("prpl-toc"),
+- g_strdup("*** Encrypted with the Gaim-Encryption plugin <A HREF=\""));
++ g_strdup("--- Encrypted with the Gaim-Encryption plugin <A HREF=\""));
+ g_hash_table_insert(footer_table, g_strdup("prpl-toc"),
+ g_strdup("\"></A>"));
+ g_hash_table_insert(notify_table, g_strdup("prpl-toc"),
+ g_strdup("<A HREF=\"Gaim-Encryption Capable\"></A>"));
+
+ g_hash_table_insert(header_table, g_strdup("prpl-oscar"),
+- g_strdup("*** Encrypted with the Gaim-Encryption plugin <A HREF=\""));
++ g_strdup("--- Encrypted with the Gaim-Encryption plugin <A HREF=\""));
+ g_hash_table_insert(footer_table, g_strdup("prpl-oscar"),
+ g_strdup("\"></A>"));
+ g_hash_table_insert(notify_table, g_strdup("prpl-oscar"),
+ g_strdup("<A HREF=\"Gaim-Encryption Capable\"></A>"));
+
+ g_hash_table_insert(header_table, g_strdup("prpl-aim"),
+- g_strdup("*** Encrypted with the Gaim-Encryption plugin <A HREF=\""));
++ g_strdup("--- Encrypted with the Gaim-Encryption plugin <A HREF=\""));
+ g_hash_table_insert(footer_table, g_strdup("prpl-aim"),
+ g_strdup("\"></A>"));
+ g_hash_table_insert(notify_table, g_strdup("prpl-aim"),
+@@ -1136,7 +1136,7 @@ static void PE_headers_init() {
+
+ /* If jabber stops stripping HTML, we can go back to these headers */
+ /* g_hash_table_insert(header_table, g_strdup("prpl-jabber"), */
+-/* g_strdup("*** Encrypted with the Gaim-Encryption plugin <A HREF='")); */
++/* g_strdup("--- Encrypted with the Gaim-Encryption plugin <A HREF='")); */
+ /* g_hash_table_insert(footer_table, g_strdup("prpl-jabber"), */
+ /* g_strdup("'></A>")); */
+ /* g_hash_table_insert(notify_table, g_strdup("prpl-jabber"), */
+@@ -1144,22 +1144,22 @@ static void PE_headers_init() {
+
+
+ g_hash_table_insert(header_table, g_strdup("prpl-jabber"),
+- g_strdup("*** Encrypted with the Gaim-Encryption plugin "));
++ g_strdup("--- Encrypted with the Gaim-Encryption plugin "));
+ g_hash_table_insert(footer_table, g_strdup("prpl-jabber"),
+ g_strdup(" "));
+ g_hash_table_insert(notify_table, g_strdup("prpl-jabber"),
+ g_strdup("<A HREF='Gaim-Encryption Capable'> </A>"));
+
+- header_default = g_strdup("*** Encrypted :");
++ header_default = g_strdup("--- Encrypted :");
+ }
+
+-/* #define CRYPT_HEADER "*** Encrypted with the Gaim-Encryption plugin <A HREF=\"" */
++/* #define CRYPT_HEADER "--- Encrypted with the Gaim-Encryption plugin <A HREF=\"" */
+ /* #define CRYPT_FOOTER "\"></A>" */
+ /* #define CRYPT_NOTIFY_HEADER "<A HREF=\"Gaim-Encryption Capable\"></A>" */
+
+ // Jabber seems to turn our double quotes into single quotes at times, so define
+ // the same headers, only with single quotes. Lengths MUST be the same as above
+-/* #define CRYPT_HEADER_MANGLED "*** Encrypted with the Gaim-Encryption plugin <A HREF='" */
++/* #define CRYPT_HEADER_MANGLED "--- Encrypted with the Gaim-Encryption plugin <A HREF='" */
+ /* #define CRYPT_NOTIFY_HEADER_MANGLED "<A HREF='Gaim-Encryption Capable'></A>" */
+
+
+
diff --git a/extra/pidgin-encryption/log_crash.patch b/extra/pidgin-encryption/log_crash.patch
new file mode 100644
index 000000000..a18416144
--- /dev/null
+++ b/extra/pidgin-encryption/log_crash.patch
@@ -0,0 +1,11 @@
+--- pidgin-encryption-3.0.orig/state_ui.c 2007-05-07 02:15:27.000000000 +0200
++++ pidgin-encryption-3.0.new/state_ui.c 2009-04-26 17:08:02.000000000 +0200
+@@ -268,6 +268,8 @@
+ static GtkIMHtmlSmiley * create_smiley_if_absent(GtkIMHtml *imhtml) {
+ GtkIMHtmlSmiley * smiley;
+ const char* category = gtk_imhtml_get_protocol_name(imhtml);
++
++ if (!category) return NULL;
+
+ /* make sure that the category we're about to use to add (based on the protocol name) */
+ /* already exists. If it doesn't, just use the default category so it isn't created. */
diff --git a/extra/pidgin/PKGBUILD b/extra/pidgin/PKGBUILD
new file mode 100644
index 000000000..6e743403d
--- /dev/null
+++ b/extra/pidgin/PKGBUILD
@@ -0,0 +1,90 @@
+# $Id: PKGBUILD 114233 2011-03-11 11:07:24Z ibiru $
+# Maintainer : Ionut Biru <ibiru@archlinux.org>
+# Contributor: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Alexander Fehr <pizzapunk gmail com>
+# Contributor: Lucien Immink <l.immink@student.fnt.hvu.nl>
+
+pkgbase=('pidgin')
+pkgname=('libpurple' 'pidgin' 'finch')
+pkgver=2.7.11
+pkgrel=1
+arch=('i686' 'x86_64')
+url="http://pidgin.im/"
+license=('GPL')
+makedepends=('startup-notification' 'gtkspell' 'libxss' 'nss' 'libsasl' 'python2' 'hicolor-icon-theme' 'silc-toolkit' 'gstreamer0.10'
+ 'farsight2' 'avahi' 'tk' 'ca-certificates' 'intltool' 'networkmanager')
+options=('!libtool')
+source=(http://downloads.sourceforge.net/${pkgbase}/${pkgbase}-${pkgver}.tar.bz2)
+md5sums=('07c2a2535b4d7436b5ec7685fe063fec')
+
+build() {
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ sed -i "s#env python#env python2#" */plugins/*.py
+ sed -i "s#env python#env python2#" libpurple/purple-{remote,notifications-example,url-handler}
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --disable-schemas-install \
+ --disable-meanwhile \
+ --disable-gnutls \
+ --enable-cyrus-sasl \
+ --disable-doxygen \
+ --enable-nm \
+ --with-python=/usr/bin/python2 \
+ --with-system-ssl-certs=/etc/ssl/certs
+ make
+}
+package_libpurple(){
+ pkgdesc="IM library extracted from Pidgin"
+ depends=('farsight2' 'libsasl' 'dbus-glib' 'silc-toolkit' 'nss' 'cyrus-sasl-plugins')
+ optdepends=('dbus-python: for purple-remote and purple-url-handler')
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+
+ for dir in libpurple share/sounds share/ca-certs m4macros po
+ do
+ make -C "${dir}" DESTDIR="${pkgdir}" install
+ done
+# rm -rf "$pkgdir/etc" || return 1
+}
+
+package_pidgin(){
+ pkgdesc="Multi-protocol instant messaging client"
+ depends=("libpurple=$pkgver" 'startup-notification' 'gtkspell' 'libxss' 'hicolor-icon-theme' 'gstreamer0.10')
+ optdepends=('aspell: for spelling correction'
+ 'avahi: Bonjour protocol support'
+ 'ca-certificates: SSL CA certificates'
+ 'gstreamer0.10-good-plugins: video and voice support'
+ 'tk: Tcl/Tk scripting support')
+
+ install=pidgin.install
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ #for linking
+ make -C libpurple DESTDIR="${pkgdir}" install-libLTLIBRARIES
+
+ make -C pidgin DESTDIR="${pkgdir}" install
+ make -C doc DESTDIR="${pkgdir}" install
+
+ #clean up libpurple
+ make -C libpurple DESTDIR="${pkgdir}" uninstall-libLTLIBRARIES
+
+ install -D -m 0644 pidgin.desktop "${pkgdir}"/usr/share/applications/pidgin.desktop
+
+ rm -f "${pkgdir}"/usr/share/man/man1/finch.1
+}
+package_finch(){
+ pkgdesc="A ncurses-based messaging client"
+ depends=("libpurple=$pkgver" 'python2' 'gstreamer0.10')
+ optdepends=('avahi: Bonjour protocol support'
+ 'ca-certificates: SSL CA certificates'
+ 'tk: Tcl/Tk scripting support')
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ #for linking
+ make -C libpurple DESTDIR="${pkgdir}" install-libLTLIBRARIES
+
+ make -C finch DESTDIR="${pkgdir}" install
+ make -C doc DESTDIR="${pkgdir}" install
+
+ #clean up libpurple
+ make -C libpurple DESTDIR="${pkgdir}" uninstall-libLTLIBRARIES
+ rm -f "${pkgdir}"/usr/share/man/man1/pidgin.1
+}
diff --git a/extra/pidgin/pidgin.install b/extra/pidgin/pidgin.install
new file mode 100644
index 000000000..1a05f573e
--- /dev/null
+++ b/extra/pidgin/pidgin.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/extra/pilot-link/PKGBUILD b/extra/pilot-link/PKGBUILD
new file mode 100644
index 000000000..b9b8f20b4
--- /dev/null
+++ b/extra/pilot-link/PKGBUILD
@@ -0,0 +1,32 @@
+# $Id: PKGBUILD 101454 2010-11-29 09:58:17Z allan $
+# Maintainer: dale <dale@archlinux.org>
+
+# todo: add perl support, DESTDIR has no affect on perl
+# and it seems that moving the files manually doesn't work
+
+pkgname=pilot-link
+pkgver=0.12.5
+pkgrel=2
+pkgdesc="A suite of tools for connecting to PalmOS handheld devices"
+arch=(i686 x86_64)
+license=('GPL' 'LGPL')
+depends=('readline>=6.0' 'libpng>=1.4.0' 'libusb-compat' 'popt' 'bluez>=4.59')
+options=('!libtool')
+url=http://www.pilot-link.org/
+source=(http://downloads.pilot-link.org/${pkgname}-${pkgver}.tar.bz2
+ pilot-link-png14.patch)
+md5sums=('568c55bf504b044f6fbd50baa407c990'
+ 'a21a2eeb01544a8a261a75e64a3120c3')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i "${srcdir}/pilot-link-png14.patch"
+ ./configure --prefix=/usr --enable-conduits --enable-libusb \
+ --with-libiconv --with-libpng
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/pilot-link/pilot-link-png14.patch b/extra/pilot-link/pilot-link-png14.patch
new file mode 100644
index 000000000..9d753332e
--- /dev/null
+++ b/extra/pilot-link/pilot-link-png14.patch
@@ -0,0 +1,100 @@
+diff -ru pilot-link-0.12.4/src/pilot-read-notepad.c pilot-link-0.12.4.png14/src/pilot-read-notepad.c
+--- pilot-link-0.12.4/src/pilot-read-notepad.c 2007-02-05 00:06:02.000000000 +0100
++++ pilot-link-0.12.4.png14/src/pilot-read-notepad.c 2010-01-17 15:04:33.000000000 +0100
+@@ -39,10 +39,6 @@
+
+ #ifdef HAVE_PNG
+ #include "png.h"
+-#if (PNG_LIBPNG_VER < 10201)
+- #define png_voidp_NULL (png_voidp)NULL
+- #define png_error_ptr_NULL (png_error_ptr)NULL
+-#endif
+ #endif
+
+ const char *progname;
+@@ -166,8 +162,8 @@
+ width = n->body.width + 8;
+
+ png_ptr = png_create_write_struct
+- ( PNG_LIBPNG_VER_STRING, png_voidp_NULL,
+- png_error_ptr_NULL, png_error_ptr_NULL);
++ ( PNG_LIBPNG_VER_STRING, NULL,
++ NULL, NULL);
+
+ if(!png_ptr)
+ return;
+diff -ru pilot-link-0.12.4/src/pilot-read-palmpix.c pilot-link-0.12.4.png14/src/pilot-read-palmpix.c
+--- pilot-link-0.12.4/src/pilot-read-palmpix.c 2007-02-05 00:06:03.000000000 +0100
++++ pilot-link-0.12.4.png14/src/pilot-read-palmpix.c 2010-01-17 15:03:20.000000000 +0100
+@@ -42,10 +42,6 @@
+
+ #ifdef HAVE_PNG
+ #include "png.h"
+-#if (PNG_LIBPNG_VER < 10201)
+- #define png_voidp_NULL (png_voidp)NULL
+- #define png_error_ptr_NULL (png_error_ptr)NULL
+-#endif
+ #endif
+
+ const char *progname;
+@@ -223,8 +219,8 @@
+ png_infop info_ptr;
+
+ png_ptr = png_create_write_struct
+- ( PNG_LIBPNG_VER_STRING, png_voidp_NULL,
+- png_error_ptr_NULL, png_error_ptr_NULL);
++ ( PNG_LIBPNG_VER_STRING, NULL,
++ NULL, NULL);
+
+ if(!png_ptr)
+ return;
+diff -ru pilot-link-0.12.4/src/pilot-read-screenshot.c pilot-link-0.12.4.png14/src/pilot-read-screenshot.c
+--- pilot-link-0.12.4/src/pilot-read-screenshot.c 2006-11-02 15:54:31.000000000 +0100
++++ pilot-link-0.12.4.png14/src/pilot-read-screenshot.c 2010-01-17 15:03:52.000000000 +0100
+@@ -40,10 +40,6 @@
+
+ #ifdef HAVE_PNG
+ # include "png.h"
+-# if (PNG_LIBPNG_VER < 10201)
+-# define png_voidp_NULL (png_voidp)NULL
+-# define png_error_ptr_NULL (png_error_ptr)NULL
+-# endif
+ #endif
+
+ #define pi_mktag(c1,c2,c3,c4) (((c1)<<24)|((c2)<<16)|((c3)<<8)|(c4))
+@@ -87,8 +83,8 @@
+ gray_buf = malloc( state->w );
+
+ png_ptr = png_create_write_struct
+- (PNG_LIBPNG_VER_STRING, png_voidp_NULL,
+- png_error_ptr_NULL, png_error_ptr_NULL);
++ (PNG_LIBPNG_VER_STRING, NULL,
++ NULL, NULL);
+
+ if (!png_ptr)
+ return;
+diff -ru pilot-link-0.12.4/src/pilot-read-veo.c pilot-link-0.12.4.png14/src/pilot-read-veo.c
+--- pilot-link-0.12.4/src/pilot-read-veo.c 2007-02-05 00:06:03.000000000 +0100
++++ pilot-link-0.12.4.png14/src/pilot-read-veo.c 2010-01-17 15:04:14.000000000 +0100
+@@ -41,10 +41,6 @@
+
+ #ifdef HAVE_PNG
+ # include "png.h"
+-# if (PNG_LIBPNG_VER < 10201)
+-# define png_voidp_NULL (png_voidp)NULL
+-# define png_error_ptr_NULL (png_error_ptr)NULL
+-# endif
+ #endif
+
+ #define pi_mktag(c1,c2,c3,c4) (((c1)<<24)|((c2)<<16)|((c3)<<8)|(c4))
+@@ -856,8 +852,8 @@
+ png_infop info_ptr;
+
+ png_ptr = png_create_write_struct
+- (PNG_LIBPNG_VER_STRING, png_voidp_NULL,
+- png_error_ptr_NULL, png_error_ptr_NULL);
++ (PNG_LIBPNG_VER_STRING, NULL,
++ NULL, NULL);
+
+ if (!png_ptr)
+ return;
diff --git a/extra/pinentry/PKGBUILD b/extra/pinentry/PKGBUILD
new file mode 100644
index 000000000..ae742029e
--- /dev/null
+++ b/extra/pinentry/PKGBUILD
@@ -0,0 +1,39 @@
+# $Id: PKGBUILD 106680 2011-01-17 20:41:54Z tpowa $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+pkgname=pinentry
+pkgver=0.8.1
+pkgrel=1
+pkgdesc="a collection of simple PIN or passphrase entry dialogs which utilize the Assuan protocol"
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://www.gnupg.org/aegypten2"
+depends=('ncurses' 'libcap>=2.16')
+makedepends=('gtk' 'qt3' 'gtk2' 'qt')
+optdepends=('gtk: for gtk backend'
+ 'gtk2: for gtk2 backend'
+ 'qt3: for qt3 backend'
+ 'qt: for qt4 backend')
+source=(ftp://ftp.gnupg.org/gcrypt/$pkgname/$pkgname-$pkgver.tar.gz
+ gtk2-pinentry-segfault.patch)
+
+build() {
+ cd $startdir/src/$pkgname-$pkgver
+ [ "$QTDIR" = "" ] && source /etc/profile.d/qt3.sh
+ for file in qt4/*.moc; do
+ /usr/bin/moc ${file/.moc/.h} > ${file}
+ done
+ ./configure --prefix=/usr \
+ --enable-pinentry-curses \
+ --enable-pinentry-gtk \
+ --enable-pinentry-gtk2 \
+ --enable-pinentry-qt \
+ --enable-pinentry-qt4 \
+ --enable-fallback-curses
+ make
+ make DESTDIR=${pkgdir} install
+ rm ${pkgdir}/usr/share/info/dir
+ rm ${pkgdir}/usr/bin/pinentry
+ ln -s /usr/bin/pinentry-gtk-2 ${pkgdir}/usr/bin/pinentry
+}
+md5sums=('81f99904daee5331eb6738408bb024b6'
+ 'bd9888fafc56464b2c4deaad5b8edb07')
diff --git a/extra/pinentry/gtk2-pinentry-segfault.patch b/extra/pinentry/gtk2-pinentry-segfault.patch
new file mode 100644
index 000000000..c0b9fb4ca
--- /dev/null
+++ b/extra/pinentry/gtk2-pinentry-segfault.patch
@@ -0,0 +1,11 @@
+--- gtk+-2/pinentry-gtk-2.c.orig 2010-03-03 05:19:55.000000000 -0600
++++ gtk+-2/pinentry-gtk-2.c 2010-07-07 00:11:30.413572124 -0500
+@@ -145,7 +145,7 @@
+ {
+ gdk_keyboard_ungrab (gdk_event_get_time (event));
+ /* Unmake window transient for the root window. */
+- gdk_window_set_transient_for (win->window, NULL);
++ gdk_property_delete (win->window, gdk_atom_intern_static_string ("WM_TRANSIENT_FOR"));
+ }
+
+
diff --git a/extra/pixman/PKGBUILD b/extra/pixman/PKGBUILD
new file mode 100644
index 000000000..688360578
--- /dev/null
+++ b/extra/pixman/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 106857 2011-01-19 14:56:47Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Alexander Baldeck <alexander@archlinux.org>
+
+pkgname=pixman
+pkgver=0.20.2
+pkgrel=1
+pkgdesc="Pixman library"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org"
+license=('custom')
+depends=('glibc')
+options=('!libtool')
+source=(http://xorg.freedesktop.org/releases/individual/lib/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('9972c8f8ce484f7649d9f588168cd29f61c05c63')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --disable-static
+ make
+ make check
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/plotutils/PKGBUILD b/extra/plotutils/PKGBUILD
new file mode 100644
index 000000000..cd8d4f347
--- /dev/null
+++ b/extra/plotutils/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 64564 2010-01-21 06:02:58Z eric $
+# Maintainer: damir <damir@archlinux.org>
+# Packager: Maksim Sipos (maxsipos at gmail dot com)
+
+pkgname=plotutils
+pkgver=2.6
+pkgrel=1
+arch=('x86_64' 'i686')
+pkgdesc="Set of utilities and libraries for plotting."
+url="http://directory.fsf.org/graphics/plotutils.html"
+license=("GPL")
+depends=("libpng" "gcc-libs" "libxaw>=1.0.5")
+options=('!libtool')
+install=plotutils.install
+source=(http://ftp.gnu.org/pub/gnu/plotutils/$pkgname-$pkgver.tar.gz)
+md5sums=('c08a424bd2438c80a786a7f4b5bb6a40')
+sha1sums=('7921301d9dfe8991e3df2829bd733df6b2a70838')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr \
+ --with-gnu-ld \
+ --with-x \
+ --enable-libplotter || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/plotutils/plotutils.install b/extra/plotutils/plotutils.install
new file mode 100644
index 000000000..dd3ffb74f
--- /dev/null
+++ b/extra/plotutils/plotutils.install
@@ -0,0 +1,13 @@
+infodir=/usr/share/info
+
+post_install() {
+ install-info $infodir/plotutils.info $infodir/dir 2> /dev/null
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ install-info --delete $infodir/plotutils.info $infodir/dir 2> /dev/null
+}
diff --git a/extra/pm-utils/02-logging-append.patch b/extra/pm-utils/02-logging-append.patch
new file mode 100644
index 000000000..987e0570a
--- /dev/null
+++ b/extra/pm-utils/02-logging-append.patch
@@ -0,0 +1,19 @@
+Author: James Westby <james.westby@ubuntu.com>
+Description: Do not clear the log file on each operation, but instead append to it.
+ This makes debugging of several suspends much easier.
+Bug: https://bugs.freedesktop.org/show_bug.cgi?id=25255
+Bug-Ubuntu: https://launchpad.net/bugs/410352
+
+Index: pm-utils/pm/pm-functions.in
+===================================================================
+--- pm-utils.orig/pm/pm-functions.in 2010-07-05 18:41:21.118322244 +0200
++++ pm-utils/pm/pm-functions.in 2010-07-05 18:41:24.126325221 +0200
+@@ -271,7 +271,7 @@
+ return 1
+ fi
+ export LOGGING=true
+- exec > "$1" 2>&1
++ exec >> "$1" 2>&1
+ }
+
+ check_suspend() { [ -n "$SUSPEND_MODULE" ]; }
diff --git a/extra/pm-utils/11netcfg b/extra/pm-utils/11netcfg
new file mode 100644
index 000000000..1b4d05ee7
--- /dev/null
+++ b/extra/pm-utils/11netcfg
@@ -0,0 +1,26 @@
+#!/bin/bash
+
+. /usr/lib/pm-utils/functions
+
+suspend_netcfg() {
+ netcfg2 all-suspend
+}
+
+resume_netcfg() {
+ netcfg2 all-resume
+}
+
+if [ -x /usr/bin/netcfg2 ]; then
+ case "$1" in
+ hibernate|suspend)
+ suspend_netcfg
+ ;;
+ thaw|resume)
+ resume_netcfg
+ ;;
+ *)
+ ;;
+ esac
+fi
+
+exit $?
diff --git a/extra/pm-utils/12-fix-intel-audio-powersave-hook.patch b/extra/pm-utils/12-fix-intel-audio-powersave-hook.patch
new file mode 100644
index 000000000..2d884da1e
--- /dev/null
+++ b/extra/pm-utils/12-fix-intel-audio-powersave-hook.patch
@@ -0,0 +1,40 @@
+From: Florian Kriener <florian@kriener.org>
+To: submit@bugs.debian.org
+Subject: [pm-utils] wrong path in intel-audio-powersave (and a small bug)
+Date: Sat, 25 Sep 2010 11:27:30 +0200
+
+In the script intel-audio-powersave is this loop
+
+for dev in /sys/module/snd_*/parameters/power_save; do
+ [ -w "$dev/parameters/power_save" ] || continue
+ printf "Setting power savings for $s to %d..." "$dev##*/" "$1"
+ echo $1 > "$dev/parameters/power_save" && echo Done. || echo Failed.
+done
+
+I think it should be
+
+for dev in /sys/module/snd_*; do
+ [ -w "$dev/parameters/power_save" ] || continue
+ printf "Setting power savings for %s to %d..." "${dev##*/}" "$1"
+ echo $1 > "$dev/parameters/power_save" && echo Done. || echo Failed.
+done
+
+
+This fixes the two bugs.
+
+diff --git a/pm/power.d/intel-audio-powersave b/pm/power.d/intel-audio-powersave
+index 36675a8..da63e40 100644
+--- a/pm/power.d/intel-audio-powersave
++++ b/pm/power.d/intel-audio-powersave
+@@ -20,9 +20,9 @@ EOF
+
+ audio_powersave() {
+ [ "$INTEL_AUDIO_POWERSAVE" = "true" ] || exit $NA
+- for dev in /sys/module/snd_*/parameters/power_save; do
++ for dev in /sys/module/snd_*; do
+ [ -w "$dev/parameters/power_save" ] || continue
+- printf "Setting power savings for $s to %d..." "$dev##*/" "$1"
++ printf "Setting power savings for %s to %d..." "${dev##*/}" "$1"
+ echo $1 > "$dev/parameters/power_save" && echo Done. || echo Failed.
+ done
+ }
diff --git a/extra/pm-utils/13-49bluetooth-sync.patch b/extra/pm-utils/13-49bluetooth-sync.patch
new file mode 100644
index 000000000..b41f32cf9
--- /dev/null
+++ b/extra/pm-utils/13-49bluetooth-sync.patch
@@ -0,0 +1,43 @@
+From 640b53438c20818b3e344343b58b1f1765606a85 Mon Sep 17 00:00:00 2001
+From: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Mon, 31 Jan 2011 15:30:01 +0100
+Subject: [PATCH] 49bluetooth: Wait for btusb module to get unused
+
+The 49bluetooth hook disables /proc/acpi/ibm/bluetooth but this isn't
+synchronous, i. e. it doesn't wait until the module usage count actually drops
+to 0. Due to that, it's impossible to add btusb to SUSPEND_MODULES (on some
+models/older kernels you need to do that to fix suspend problems), as at that
+point the module is still in use.
+
+On my system (ThinkPad X201) the module takes between 0.3 and 0.5 seconds to
+unload, so use 100 ms wait steps with a timeout of 2 seconds.
+
+Bug: https://bugs.freedesktop.org//show_bug.cgi?id=33759
+Bug-Ubuntu: https://launchpad.net/bugs/698331
+---
+ pm/sleep.d/49bluetooth | 9 +++++++++
+ 1 files changed, 9 insertions(+), 0 deletions(-)
+
+diff --git a/pm/sleep.d/49bluetooth b/pm/sleep.d/49bluetooth
+index d46ba49..0dc1909 100755
+--- a/pm/sleep.d/49bluetooth
++++ b/pm/sleep.d/49bluetooth
+@@ -12,6 +12,15 @@ suspend_bluetooth()
+ if grep -q enabled /proc/acpi/ibm/bluetooth; then
+ savestate ibm_bluetooth enable
+ echo disable > /proc/acpi/ibm/bluetooth
++
++ # wait for up to 2 seconds for the module to actually get
++ # unused
++ TIMEOUT=20
++ while [ $TIMEOUT -ge 0 ]; do
++ [ `cat /sys/module/btusb/refcnt` = 0 ] && break
++ TIMEOUT=$((TIMEOUT-1))
++ sleep 0.1
++ done
+ else
+ savestate ibm_bluetooth disable
+ fi
+--
+1.7.2.3
+
diff --git a/extra/pm-utils/14-disable-sata-alpm.patch b/extra/pm-utils/14-disable-sata-alpm.patch
new file mode 100644
index 000000000..7b5494932
--- /dev/null
+++ b/extra/pm-utils/14-disable-sata-alpm.patch
@@ -0,0 +1,26 @@
+Description: Disable SATA link power management by default, as it still causes disk errors and corruptions on many hardware.
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Bug-Ubuntu: https://launchpad.net/bugs/539467
+
+Index: pm-utils/pm/power.d/sata_alpm
+===================================================================
+--- pm-utils.orig/pm/power.d/sata_alpm 2011-02-01 15:53:09.164867778 +0100
++++ pm-utils/pm/power.d/sata_alpm 2011-02-01 15:53:28.954867786 +0100
+@@ -2,7 +2,7 @@
+
+ . "${PM_FUNCTIONS}"
+
+-SATA_ALPM_ENABLE=${SATA_ALPM_ENABLE:-true}
++SATA_ALPM_ENABLE=${SATA_ALPM_ENABLE:-false}
+
+ help() {
+ cat <<EOF
+@@ -16,7 +16,7 @@
+
+ This hook has 1 parameter:
+ SATA_ALPM_ENABLE = whether to use SATA ALPM on battery.
+-Defaults to "true".
++Defaults to "false".
+
+ EOF
+ }
diff --git a/extra/pm-utils/PKGBUILD b/extra/pm-utils/PKGBUILD
new file mode 100644
index 000000000..c4ec4e892
--- /dev/null
+++ b/extra/pm-utils/PKGBUILD
@@ -0,0 +1,48 @@
+# $Id: PKGBUILD 116693 2011-03-25 07:49:30Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Thayer Williams <thayer@archlinux.org>
+# Contributor: Giovanni Scafora <giovanni@archlinux.org>
+
+pkgname=pm-utils
+pkgver=1.4.1
+pkgrel=3
+pkgdesc="Utilities and scripts for suspend and hibernate power management"
+arch=('i686' 'x86_64')
+url="http://pm-utils.freedesktop.org"
+license=('GPL')
+depends=('bash' 'procps' 'pm-quirks')
+makedepends=('xmlto' 'docbook-xml' 'docbook-xsl')
+source=(http://pm-utils.freedesktop.org/releases/${pkgname}-${pkgver}.tar.gz
+02-logging-append.patch
+12-fix-intel-audio-powersave-hook.patch
+13-49bluetooth-sync.patch
+14-disable-sata-alpm.patch
+ 11netcfg)
+md5sums=('1742a556089c36c3a89eb1b957da5a60'
+ 'a45149617bf3eb8dc32e6d9e22ae715d'
+ 'edada31a7d722763513fbe705d95d19d'
+ '298f78b873c03c025700d5da619ac134'
+ 'd0040f7d30b6a0dd195b5401abbbbdb9'
+ '9839687c8787d99fd4ff36aa3238c27b')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i "${srcdir}/02-logging-append.patch"
+ patch -Np1 -i "${srcdir}/12-fix-intel-audio-powersave-hook.patch"
+ patch -Np1 -i "${srcdir}/13-49bluetooth-sync.patch"
+ patch -Np1 -i "${srcdir}/14-disable-sata-alpm.patch"
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --localstatedir=/var
+ make
+ make DESTDIR="${pkgdir}" install
+
+ # install additional hooks
+ install -m755 "${srcdir}/11netcfg" "${pkgdir}/usr/lib/pm-utils/sleep.d/"
+
+ # nm >=0.8.2 has native udev suspend/resume support
+ rm -f "${pkgdir}/usr/lib/pm-utils/sleep.d/55NetworkManager"
+
+ # Remove hooks that cause hardware failure or don't make sense at all
+ rm -f "${pkgdir}/usr/lib/pm-utils/power.d/"{harddrive,disable_wol}
+}
diff --git a/extra/pmount/PKGBUILD b/extra/pmount/PKGBUILD
new file mode 100644
index 000000000..88a50a361
--- /dev/null
+++ b/extra/pmount/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: PKGBUILD 84000 2010-06-25 09:22:24Z tpowa $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=pmount
+pkgver=0.9.23
+pkgrel=1
+pkgdesc="mount removable devices as normal user"
+arch=(i686 x86_64)
+license=('GPL2')
+url="http://pmount.alioth.debian.org/"
+backup=('etc/pmount.allow')
+depends=('sysfsutils>=2.0.0-1' 'bash')
+optdepends=('hal: needed for pmount-hal')
+makedepends=('intltool' 'hal')
+source=(https://alioth.debian.org/frs/download.php/3310/pmount-0.9.23.tar.bz2)
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --with-cryptsetup-prog=/sbin/cryptsetup || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
+md5sums=('db19f5bf3151b1b41705ec7bafa439d3')
diff --git a/extra/polkit-gnome/PKGBUILD b/extra/polkit-gnome/PKGBUILD
new file mode 100644
index 000000000..2b41612e5
--- /dev/null
+++ b/extra/polkit-gnome/PKGBUILD
@@ -0,0 +1,26 @@
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: onestep_ua <onestep@ukr.net>
+
+pkgname=polkit-gnome
+pkgver=0.99
+pkgrel=1
+pkgdesc="PolicyKit integration for the GNOME desktop"
+arch=('i686' 'x86_64')
+url="http://www.freedesktop.org/wiki/Software/PolicyKit"
+license=('LGPL')
+depends=('polkit>=0.99' 'gtk2>=2.22.0')
+makedepends=('intltool' 'gobject-introspection')
+replaces=('policykit-gnome')
+options=(!libtool !makeflags)
+source=(http://hal.freedesktop.org/releases/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('f1a2565083266bc8c05c60aa7d8a0f6a')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ sed -i -e 's/OnlyShowIn=GNOME/NotShowIn=KDE/' src/polkit-gnome-authentication-agent-1.desktop.in.in
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --libexecdir=/usr/lib/polkit-gnome \
+ --disable-static --disable-introspection
+ make
+ make GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 DESTDIR="${pkgdir}" install
+}
diff --git a/extra/polkit-kde/PKGBUILD b/extra/polkit-kde/PKGBUILD
new file mode 100644
index 000000000..ca94695e5
--- /dev/null
+++ b/extra/polkit-kde/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 102634 2010-12-09 08:51:18Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Pierre Schmitz <pierre@archlinux.de>
+
+pkgname=polkit-kde
+pkgver=0.99.0
+pkgrel=1
+pkgdesc='Daemon providing a polkit authentication UI for KDE'
+arch=('i686' 'x86_64')
+url='http://www.kde.org'
+license=('GPL')
+depends=('kdelibs')
+makedepends=('cmake' 'automoc4')
+source=("ftp://ftp.kde.org/pub/kde/stable/apps/KDE4.x/admin/${pkgname}-agent-1-${pkgver}.tar.bz2")
+md5sums=('a02d3fddc6270a88bceaf3ba604c92f8')
+
+build() {
+ cd ${srcdir}
+ mkdir build
+ cd build
+ cmake ../${pkgname}-agent-1-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=/usr
+ make
+}
+
+package() {
+ cd ${srcdir}/build
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/polkit-qt/PKGBUILD b/extra/polkit-qt/PKGBUILD
new file mode 100644
index 000000000..b71d737d8
--- /dev/null
+++ b/extra/polkit-qt/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 102633 2010-12-09 08:40:59Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Pierre Schmitz <pierre@archlinux.de>
+
+pkgname=polkit-qt
+pkgver=0.99.0
+pkgrel=1
+pkgdesc='A library that allows developers to access PolicyKit API with a nice Qt-style API'
+arch=('i686' 'x86_64')
+url='http://www.kde.org'
+license=('LGPL')
+depends=('polkit' 'qt')
+makedepends=('cmake' 'automoc4')
+source=("ftp://ftp.kde.org/pub/kde/stable/apps/KDE4.x/admin/${pkgname}-1-${pkgver}.tar.bz2")
+md5sums=('1c5b4113a2a167624b5f716b4f03a219')
+
+build() {
+ cd ${srcdir}
+ mkdir build
+ cd build
+ cmake ../${pkgname}-1-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=/usr
+ make
+}
+
+package() {
+ cd ${srcdir}/build
+ make DESTDIR=$pkgdir install
+}
diff --git a/extra/polkit/PKGBUILD b/extra/polkit/PKGBUILD
new file mode 100644
index 000000000..efc6b9d22
--- /dev/null
+++ b/extra/polkit/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 102286 2010-12-07 09:10:30Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=polkit
+pkgver=0.99
+pkgrel=1
+pkgdesc="Application development toolkit for controlling system-wide privileges"
+arch=(i686 x86_64)
+license=('LGPL')
+url="http://www.freedesktop.org/wiki/Software/PolicyKit"
+depends=('glib2>=2.26.0' 'pam' 'expat>=2.0.1')
+makedepends=('intltool>=0.41.1' 'gtk-doc>=1.15' 'gobject-introspection>=0.9.5')
+replaces=('policykit')
+options=('!libtool')
+source=(http://hal.freedesktop.org/releases/${pkgname}-${pkgver}.tar.gz
+ polkit.pam)
+md5sums=('fcc4d7b19c08ad54d3ce0eae0ab12398'
+ '6564f95878297b954f0572bc1610dd15')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --libexecdir=/usr/lib/polkit-1 \
+ --disable-static --enable-gtk-doc
+ make
+ make DESTDIR="${pkgdir}" install
+
+ install -m644 "${srcdir}/polkit.pam" "${pkgdir}/etc/pam.d/polkit-1"
+}
diff --git a/extra/polkit/polkit.pam b/extra/polkit/polkit.pam
new file mode 100644
index 000000000..04f53e0db
--- /dev/null
+++ b/extra/polkit/polkit.pam
@@ -0,0 +1,7 @@
+auth requisite pam_nologin.so
+auth required pam_env.so
+auth required pam_unix.so
+account required pam_unix.so
+session required pam_limits.so
+session required pam_unix.so
+password required pam_unix.so
diff --git a/extra/poppler/PKGBUILD b/extra/poppler/PKGBUILD
new file mode 100644
index 000000000..e08295597
--- /dev/null
+++ b/extra/poppler/PKGBUILD
@@ -0,0 +1,67 @@
+# $Id: PKGBUILD 117503 2011-04-04 08:59:49Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgbase=poppler
+pkgname=('poppler' 'poppler-glib' 'poppler-qt')
+pkgver=0.16.4
+pkgrel=1
+arch=(i686 x86_64)
+license=('GPL')
+makedepends=('libjpeg' 'gcc-libs' 'cairo' 'libxml2' 'fontconfig' 'openjpeg' 'gtk2' 'qt' 'pkgconfig' 'lcms' 'gobject-introspection')
+options=('!libtool')
+url="http://poppler.freedesktop.org/"
+source=(http://poppler.freedesktop.org/${pkgname}-${pkgver}.tar.gz)
+md5sums=('2b996ca77dad04b422f67238daab48e7')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ sed -i -e '/AC_PATH_XTRA/d' configure.ac
+ autoreconf
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-static \
+ --enable-cairo-output \
+ --enable-xpdf-headers \
+ --enable-libjpeg --enable-zlib \
+ --enable-poppler-qt4 \
+ --enable-poppler-glib
+ make
+ sed -e 's/^glib_subdir =.*/glib_subdir =/' \
+ -e 's/^qt4_subdir =.*/qt4_subdir =/' -i Makefile
+}
+
+package_poppler() {
+ pkgdesc="PDF rendering library based on xpdf 3.0"
+ depends=('libjpeg' 'gcc-libs' 'cairo' 'libxml2' 'fontconfig' 'openjpeg' 'lcms' 'poppler-data')
+ conflicts=("poppler-qt3<${pkgver}")
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+
+ rm -f "${pkgdir}"/usr/lib/pkgconfig/poppler-{glib,qt4}.pc
+}
+
+package_poppler-glib() {
+ pkgdesc="Poppler glib bindings"
+ depends=("poppler=${pkgver}" 'gtk2')
+
+ cd "${srcdir}/${pkgbase}-${pkgver}/poppler"
+ make DESTDIR="${pkgdir}" install-libLTLIBRARIES
+ cd "${srcdir}/${pkgbase}-${pkgver}/glib"
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/lib/pkgconfig"
+ install -m644 ../poppler-glib.pc "${pkgdir}/usr/lib/pkgconfig/"
+ rm -f "${pkgdir}"/usr/lib/libpoppler.*
+}
+
+package_poppler-qt() {
+ pkgdesc="Poppler Qt bindings"
+ depends=("poppler=${pkgver}" 'qt')
+
+ cd "${srcdir}/${pkgbase}-${pkgver}/poppler"
+ make DESTDIR="${pkgdir}" install-libLTLIBRARIES
+ cd "${srcdir}/${pkgbase}-${pkgver}/qt4"
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/lib/pkgconfig"
+ install -m644 ../poppler-qt4.pc "${pkgdir}/usr/lib/pkgconfig/"
+ rm -f "${pkgdir}"/usr/lib/libpoppler.*
+}
diff --git a/extra/postfix/PKGBUILD b/extra/postfix/PKGBUILD
new file mode 100644
index 000000000..d38b2648c
--- /dev/null
+++ b/extra/postfix/PKGBUILD
@@ -0,0 +1,64 @@
+# $Id: PKGBUILD 117190 2011-03-29 13:39:06Z bisson $
+# Contributor: Jeff Brodnax <tullyarcher@bellsouth.net>
+# Maintainer: Gaetan Bisson <bisson@archlinux.org>
+# Maintainer: Paul Mattal <paul@archlinux.org>
+
+pkgname=postfix
+pkgver=2.8.2
+pkgrel=3
+pkgdesc='Secure, fast, easy to administer drop in replacement for Sendmail (MTA)'
+url='http://www.postfix.org/'
+arch=('i686' 'x86_64')
+license=('custom')
+depends=('pcre' 'libsasl' 'libmysqlclient' 'postgresql-libs' 'sqlite3' 'libldap' 'db')
+backup=('etc/postfix/'{access,aliases,canonical,generic,header_checks,main.cf,master.cf,relocated,transport,virtual})
+source=("ftp://ftp.porcupine.org/mirrors/postfix-release/official/${pkgname}-${pkgver}.tar.gz" \
+ 'aliases.patch' \
+ 'rc.d')
+sha1sums=('224e0b6dd161f4648114de8902124c9dec64aa8c'
+ '5fc3de6c7df1e5851a0a379e825148868808318b'
+ '050e6afc5886049682c945ce147b3c47fe113939')
+
+provides=('smtp-server' 'smtp-forwarder')
+replaces=('postfix-mysql' 'postfix-pgsql')
+conflicts=('postfix-mysql' 'postfix-pgsql' 'smtp-server' 'smtp-forwarder')
+
+install=install
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ make makefiles CCARGS=' \
+ -DUSE_SASL_AUTH -I/usr/include/sasl \
+ -DUSE_CYRUS_SASL \
+ -DHAS_LDAP \
+ -DUSE_TLS \
+ -DHAS_MYSQL -I/usr/include/mysql \
+ -DHAS_PGSQL -I/usr/include/postgresql \
+ -DHAS_SQLITE \
+ ' AUXLIBS=' \
+ -lsasl2 -lssl -lcrypto \
+ -lldap -llber \
+ -lmysqlclient -lz -lm \
+ -lpq \
+ -lsqlite3 -lpthread \
+ '
+
+ make OPT="${CFLAGS}"
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ sh postfix-install -non-interactive \
+ install_root="${pkgdir}" \
+ daemon_directory="/usr/lib/${pkgname}" \
+ sample_directory="/etc/${pkgname}/sample" \
+ manpage_directory="/usr/share/man"
+
+ install -D -m755 ../rc.d "${pkgdir}/etc/rc.d/${pkgname}"
+ install -D -m644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+
+ cd "${pkgdir}"
+ patch -p0 < "${srcdir}"/aliases.patch
+}
diff --git a/extra/postfix/aliases.patch b/extra/postfix/aliases.patch
new file mode 100644
index 000000000..6767870b7
--- /dev/null
+++ b/extra/postfix/aliases.patch
@@ -0,0 +1,18 @@
+--- etc/postfix/main.cf.orig 2010-12-13 20:18:22.000000000 +0100
++++ etc/postfix/main.cf 2010-12-13 20:18:24.000000000 +0100
+@@ -382,6 +382,7 @@
+ #alias_maps = hash:/etc/aliases
+ #alias_maps = hash:/etc/aliases, nis:mail.aliases
+ #alias_maps = netinfo:/aliases
++alias_maps = hash:/etc/postfix/aliases
+
+ # The alias_database parameter specifies the alias database(s) that
+ # are built with "newaliases" or "sendmail -bi". This is a separate
+@@ -392,6 +393,7 @@
+ #alias_database = dbm:/etc/mail/aliases
+ #alias_database = hash:/etc/aliases
+ #alias_database = hash:/etc/aliases, hash:/opt/majordomo/aliases
++alias_database = $alias_maps
+
+ # ADDRESS EXTENSIONS (e.g., user+foo)
+ #
diff --git a/extra/postfix/install b/extra/postfix/install
new file mode 100644
index 000000000..f5d81a565
--- /dev/null
+++ b/extra/postfix/install
@@ -0,0 +1,35 @@
+post_install() {
+ getent group postdrop &>/dev/null || groupadd -g 75 postdrop >/dev/null
+ getent group postfix &>/dev/null || groupadd -g 73 postfix >/dev/null
+ getent passwd postfix &>/dev/null || useradd -u 73 -d /var/spool/postfix -g postfix -s /bin/false postfix >/dev/null
+
+ cd var/spool/postfix
+ chown postfix active bounce corrupt defer deferred flush hold incoming private public maildrop trace saved
+ chgrp postdrop public maildrop
+ cd ../../../usr/sbin
+ chgrp postdrop postqueue postdrop
+ chmod g+s postqueue postdrop
+ cd ../..
+ chown postfix var/lib/postfix
+
+ newaliases
+}
+
+post_upgrade() {
+ post_install
+
+ if [ `vercmp $2 2.8` = -1 ]; then cat <<EOF
+
+==> You must now execute "/etc/rc.d/postfix reload" (or restart).
+==> This is needed because the queue manager to delivery agent
+==> protocol has changed.
+
+EOF
+ fi
+}
+
+pre_remove() {
+ getent passwd postfix &>/dev/null && userdel postfix >/dev/null
+ getent group postfix &>/dev/null && groupdel postfix >/dev/null
+ getent group postdrop &>/dev/null && groupdel postdrop >/dev/null
+}
diff --git a/extra/postfix/rc.d b/extra/postfix/rc.d
new file mode 100755
index 000000000..94ccc2af0
--- /dev/null
+++ b/extra/postfix/rc.d
@@ -0,0 +1,37 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+name=postfix
+PID=$(pidof -o %PPID /usr/lib/postfix/master)
+
+case "$1" in
+start)
+ stat_busy "Starting $name daemon"
+ [[ -z "$PID" ]] && /usr/sbin/postfix start &>/dev/null \
+ && { add_daemon $name; stat_done; } \
+ || { stat_fail; exit 1; }
+ ;;
+stop)
+ stat_busy "Stopping $name daemon"
+ [[ -n "$PID" ]] && /usr/sbin/postfix stop &>/dev/null \
+ && { rm_daemon $name; stat_done; } \
+ || { stat_fail; exit 1; }
+ ;;
+reload)
+ stat_busy "Reloading $name daemon"
+ [[ -n "$PID" ]] && kill -HUP $PID &>/dev/null \
+ && { stat_done; } \
+ || { stat_fail; exit 1; }
+ ;;
+restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+*)
+ echo "usage: $0 {start|stop|restart|reload}"
+ ;;
+esac
+exit 0
diff --git a/extra/postgresql/PKGBUILD b/extra/postgresql/PKGBUILD
new file mode 100644
index 000000000..741ffc2fe
--- /dev/null
+++ b/extra/postgresql/PKGBUILD
@@ -0,0 +1,136 @@
+# $Id: PKGBUILD 108463 2011-01-31 13:52:30Z dan $
+# Maintainer: Dan McGee <dan@archlinux.org>
+
+pkgbase=postgresql
+pkgname=('postgresql-libs' 'postgresql-docs' 'postgresql')
+pkgver=9.0.3
+pkgrel=1
+arch=('i686' 'x86_64')
+url="http://www.postgresql.org"
+license=('custom:PostgreSQL')
+makedepends=('libxml2' 'python2' 'perl')
+source=(ftp://ftp.postgresql.org/pub/source/v${pkgver}/postgresql-${pkgver}.tar.bz2 \
+ postgresql postgresql.confd build.patch postgresql.pam postgresql.logrotate)
+
+build() {
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+
+ # patch to remove regress/test make target (won't build with it present)
+ patch -Np1 -i ../build.patch
+
+ # configure
+ ./configure --prefix=/usr --mandir=/usr/share/man --with-libxml \
+ --with-openssl --with-perl \
+ --with-python PYTHON=/usr/bin/python2 --with-pam \
+ --with-system-tzdata=/usr/share/zoneinfo --enable-nls \
+ --datadir=/usr/share/postgresql --enable-thread-safety
+
+ sed -i -e '/interfaces/d' src/Makefile
+
+ # build
+ make world
+
+ # build libs
+ for dir in src/interfaces src/bin/pg_config; do
+ pushd ${dir}
+ make
+ popd
+ done
+}
+
+package_postgresql-libs() {
+ pkgdesc="Libraries for use with PostgreSQL"
+ depends=('openssl>=1.0.0')
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+
+ # install license
+ install -D -m644 COPYRIGHT "${pkgdir}/usr/share/licenses/postgresql-libs/LICENSE"
+
+ # install libs
+ for dir in src/interfaces src/bin/pg_config; do
+ pushd ${dir}
+ make DESTDIR="${pkgdir}" install
+ popd
+ done
+
+ install -D -m644 doc/src/sgml/man1/pg_config.1 "${pkgdir}/usr/share/man/man1/pg_config.1"
+
+ cd src/include
+
+ mkdir -p "${pkgdir}"/usr/include/{libpq,postgresql/internal/libpq}
+
+ # these headers are needed by the public headers of the interfaces
+ install -m644 pg_config.h "${pkgdir}/usr/include/"
+ install -m644 pg_config_os.h "${pkgdir}/usr/include/"
+ install -m644 postgres_ext.h "${pkgdir}/usr/include/"
+ install -m644 libpq/libpq-fs.h "${pkgdir}/usr/include/libpq/"
+ install -m644 pg_config_manual.h "${pkgdir}/usr/include/"
+
+ # these headers are needed by the not-so-public headers of the interfaces
+ install -m644 c.h "${pkgdir}/usr/include/postgresql/internal/"
+ install -m644 port.h "${pkgdir}/usr/include/postgresql/internal/"
+ install -m644 postgres_fe.h "${pkgdir}/usr/include/postgresql/internal/"
+ install -m644 libpq/pqcomm.h "${pkgdir}/usr/include/postgresql/internal/libpq/"
+}
+
+package_postgresql-docs() {
+ pkgdesc="HTML documentation for PostgreSQL"
+ options=(docs)
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+
+ # install license
+ install -D -m644 COPYRIGHT "${pkgdir}/usr/share/licenses/postgresql-docs/LICENSE"
+
+ make -C doc/src/sgml DESTDIR="${pkgdir}" install-html
+ chown -R root:root "${pkgdir}/usr/share/doc/postgresql/html/"
+}
+
+package_postgresql() {
+ pkgdesc="A sophisticated object-relational DBMS"
+ backup=('etc/conf.d/postgresql' 'etc/pam.d/postgresql' 'etc/logrotate.d/postgresql')
+ depends=("postgresql-libs>=${pkgver}" 'libxml2' 'readline>=6.0')
+ optdepends=('python2: for PL/Python support'
+ 'perl: for PL/Perl support')
+ provides=('postgresql-client')
+ conflicts=('postgresql-client')
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+
+ # install
+ make DESTDIR="${pkgdir}" install
+ make -C contrib DESTDIR="${pkgdir}" install
+ make -C doc/src/sgml DESTDIR="${pkgdir}" install-man
+ # we don't want this, it is in the -libs package
+ make -C src/bin/pg_config DESTDIR="${pkgdir}" uninstall
+ rm "${pkgdir}/usr/share/man/man1/pg_config.1"
+
+ # install license
+ install -D -m644 COPYRIGHT "${pkgdir}/usr/share/licenses/${pkgbase}/LICENSE"
+
+ # clean up unneeded installed items
+ rm -rf "${pkgdir}/usr/include/postgresql/internal"
+ rm -rf "${pkgdir}/usr/include/libpq"
+ find "${pkgdir}/usr/include" -maxdepth 1 -type f -execdir rm {} +
+
+ # install launch script
+ install -D -m755 "${srcdir}/postgresql" "${pkgdir}/etc/rc.d/postgresql"
+
+ # install conf file
+ install -D -m644 ${srcdir}/postgresql.confd \
+ "${pkgdir}/etc/conf.d/postgresql"
+
+ install -D -m644 ${srcdir}/postgresql.pam \
+ "${pkgdir}/etc/pam.d/postgresql"
+
+ install -D -m644 ${srcdir}/postgresql.logrotate \
+ "${pkgdir}/etc/logrotate.d/postgresql"
+}
+
+md5sums=('928df8c40bb012ad10756e58b70516fb'
+ '49bfa0d1089e26e2098d362ca5fa6503'
+ 'd63a05943cf0a2726aa2070f3033c569'
+ '4d74f4227dc5e12bf95b3490758d86c9'
+ '96f82c38f3f540b53f3e5144900acf17'
+ 'd28e443f9f65a5712c52018b84e27137')
diff --git a/extra/postgresql/build.patch b/extra/postgresql/build.patch
new file mode 100644
index 000000000..c8f665d12
--- /dev/null
+++ b/extra/postgresql/build.patch
@@ -0,0 +1,11 @@
+diff -Naur postgresql-8.2.3-orig/src/Makefile postgresql-8.2.3/src/Makefile
+--- postgresql-8.2.3-orig/src/Makefile 2006-06-22 16:50:35.000000000 -0700
++++ postgresql-8.2.3/src/Makefile 2007-03-05 10:46:24.000000000 -0800
+@@ -23,7 +23,6 @@
+ $(MAKE) -C bin $@
+ $(MAKE) -C pl $@
+ $(MAKE) -C makefiles $@
+- $(MAKE) -C test/regress $@
+
+ install: install-local
+
diff --git a/extra/postgresql/postgresql b/extra/postgresql/postgresql
new file mode 100755
index 000000000..fb7be3dd7
--- /dev/null
+++ b/extra/postgresql/postgresql
@@ -0,0 +1,59 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+. /etc/conf.d/postgresql
+
+case "$1" in
+ start)
+ stat_busy "Starting PostgreSQL"
+ # initialization
+ if [ ! `egrep '^postgres:' /etc/group` ]; then
+ stat_busy "Adding postgres group"
+ groupadd -g 88 postgres
+ stat_done
+ fi
+ if [ ! `egrep '^postgres:' /etc/passwd` ]; then
+ stat_busy "Adding postgres user"
+ useradd -u 88 -g postgres -d $PGROOT -s /bin/bash postgres
+ [ -d $PGROOT ] && chown -R postgres:postgres $PGROOT
+ stat_done
+ fi
+ if [ ! -d $PGROOT/data ]; then
+ mkdir -p $PGROOT/data && chown -R postgres:postgres $PGROOT
+ su - postgres -c "/usr/bin/initdb $INITOPTS -D $PGROOT/data"
+ fi
+ if [ ! -e /var/log/postgresql.log ]; then
+ touch /var/log/postgresql.log
+ chown postgres /var/log/postgresql.log
+ fi
+ # start the process
+ su - postgres -c \
+ "/usr/bin/pg_ctl -D $PGROOT/data -l /var/log/postgresql.log -W start"
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon postgresql
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping PostgreSQL"
+ su - postgres -c \
+ "/usr/bin/pg_ctl -D $PGROOT/data -l /var/log/postgresql.log -w stop"
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon postgresql
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 3
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
diff --git a/extra/postgresql/postgresql.confd b/extra/postgresql/postgresql.confd
new file mode 100644
index 000000000..5f8fa034c
--- /dev/null
+++ b/extra/postgresql/postgresql.confd
@@ -0,0 +1,5 @@
+#
+# Parameters to be passed to postgresql
+#
+PGROOT="/var/lib/postgres"
+INITOPTS="--locale $LANG"
diff --git a/extra/postgresql/postgresql.logrotate b/extra/postgresql/postgresql.logrotate
new file mode 100644
index 000000000..9c36918be
--- /dev/null
+++ b/extra/postgresql/postgresql.logrotate
@@ -0,0 +1,4 @@
+/var/log/postgresql.log {
+ copytruncate
+ missingok
+}
diff --git a/extra/postgresql/postgresql.pam b/extra/postgresql/postgresql.pam
new file mode 100644
index 000000000..53724d1f8
--- /dev/null
+++ b/extra/postgresql/postgresql.pam
@@ -0,0 +1,3 @@
+auth required pam_unix.so
+account required pam_unix.so
+session required pam_unix.so
diff --git a/extra/potrace/PKGBUILD b/extra/potrace/PKGBUILD
new file mode 100644
index 000000000..0debf3aa1
--- /dev/null
+++ b/extra/potrace/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 104345 2011-01-01 13:50:24Z bisson $
+# Maintainer: damir <damir@archlinux.org>
+# Contributor: Damir Perisa <damir.perisa@bluewin.ch>
+
+pkgname=potrace
+pkgver=1.9
+pkgrel=2
+pkgdesc='Utility for tracing a bitmap. Input: PBM, PGM, PPM, or BMP. Output: EPS, PostScript, PDF, SVG, Xfig, Gimppath, or PGM.'
+arch=('i686' 'x86_64')
+url='http://potrace.sourceforge.net/'
+license=('GPL')
+depends=('zlib')
+options=('!libtool')
+source=("http://potrace.sourceforge.net/download/${pkgname}-${pkgver}.tar.gz")
+sha1sums=('c3ace609c24a0d5e03bbab5f22478c2af69cf1c4')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --mandir=/usr/share/man --with-libpotrace
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/procmail/PKGBUILD b/extra/procmail/PKGBUILD
new file mode 100644
index 000000000..df4a9c2a6
--- /dev/null
+++ b/extra/procmail/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id: PKGBUILD 114723 2011-03-15 18:50:11Z andyrtr $
+# Maintainer: Andreas Radke <andyrtr@archlinux.org>
+
+pkgname=procmail
+pkgver=3.22
+pkgrel=3
+pkgdesc="Highly configurable auto mail processing."
+arch=(i686 x86_64)
+url="http://www.procmail.org"
+license=('GPL' 'custom:Artistic')
+depends=('glibc' 'sh')
+makedepends=('smtp-server')
+source=(#http://www.procmail.org/${pkgname}-${pkgver}.tar.gz # currently down
+ ftp://ftp.informatik.rwth-aachen.de/pub/packages/procmail/${pkgname}-${pkgver}.tar.gz
+ procmail-3.22-getline.patch)
+md5sums=('1678ea99b973eb77eda4ecf6acae53f1'
+ 'cf8e5d4854050ab0c836e07406a3dfa9')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ patch -Np1 -i ${srcdir}/procmail-3.22-getline.patch
+ yes n | make LOCKINGTEST="/tmp ."
+ make BASENAME=${pkgdir}/usr MANDIR=${pkgdir}/usr/share/man install
+}
+
+package() {
+ cd $srcdir/$pkgname-$pkgver
+ install -D -m644 Artistic ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+ install -d -m755 ${pkgdir}/usr/share/doc/${pkgname}/examples
+ install -m644 examples/* ${pkgdir}/usr/share/doc/${pkgname}/examples/
+}
diff --git a/extra/procmail/procmail-3.22-getline.patch b/extra/procmail/procmail-3.22-getline.patch
new file mode 100644
index 000000000..fb9a4ec6e
--- /dev/null
+++ b/extra/procmail/procmail-3.22-getline.patch
@@ -0,0 +1,56 @@
+diff -up procmail-3.22/src/fields.c.getline procmail-3.22/src/fields.c
+--- procmail-3.22/src/fields.c.getline 2001-09-11 06:57:08.000000000 +0200
++++ procmail-3.22/src/fields.c 2009-06-30 16:10:36.000000000 +0200
+@@ -110,16 +110,16 @@ void dispfield(p)register const struct f
+ /* try and append one valid field to rdheader from stdin */
+ int readhead P((void))
+ { int idlen;
+- getline();
++ get_line();
+ if((idlen=breakfield(buf,buffilled))<=0) /* not the start of a valid field */
+ return 0;
+ if(idlen==STRLEN(FROM)&&eqFrom_(buf)) /* it's a From_ line */
+ { if(rdheader)
+ return 0; /* the From_ line was a fake! */
+- for(;buflast=='>';getline()); /* gather continued >From_ lines */
++ for(;buflast=='>';get_line()); /* gather continued >From_ lines */
+ }
+ else
+- for(;;getline()) /* get the rest of the continued field */
++ for(;;get_line()) /* get the rest of the continued field */
+ { switch(buflast) /* will this line be continued? */
+ { case ' ':case '\t': /* yep, it sure is */
+ continue;
+diff -up procmail-3.22/src/formail.c.getline procmail-3.22/src/formail.c
+--- procmail-3.22/src/formail.c.getline 2009-06-30 16:00:40.000000000 +0200
++++ procmail-3.22/src/formail.c 2009-06-30 16:10:49.000000000 +0200
+@@ -819,7 +819,7 @@ splitit: { if(!lnl) /* did the p
+ { if(split) /* gobble up the next start separator */
+ { buffilled=0;
+ #ifdef sMAILBOX_SEPARATOR
+- getline();buffilled=0; /* but only if it's defined */
++ get_line();buffilled=0; /* but only if it's defined */
+ #endif
+ if(buflast!=EOF) /* if any */
+ goto splitit;
+diff -up procmail-3.22/src/formisc.c.getline procmail-3.22/src/formisc.c
+--- procmail-3.22/src/formisc.c.getline 2001-06-29 04:20:45.000000000 +0200
++++ procmail-3.22/src/formisc.c 2009-06-30 16:12:20.000000000 +0200
+@@ -115,7 +115,7 @@ void loadchar(c)const int c; /* a
+ buf[buffilled++]=c;
+ }
+
+-int getline P((void)) /* read a newline-terminated line */
++int get_line P((void)) /* read a newline-terminated line */
+ { if(buflast==EOF) /* at the end of our Latin already? */
+ { loadchar('\n'); /* fake empty line */
+ return EOF; /* spread the word */
+diff -up procmail-3.22/src/formisc.h.getline procmail-3.22/src/formisc.h
+--- procmail-3.22/src/formisc.h.getline 1999-04-19 08:42:15.000000000 +0200
++++ procmail-3.22/src/formisc.h 2009-06-30 16:10:02.000000000 +0200
+@@ -17,4 +17,4 @@ void
+ char*
+ skipwords P((char*start));
+ int
+- getline P((void));
++ get_line P((void));
diff --git a/extra/proftpd/PKGBUILD b/extra/proftpd/PKGBUILD
new file mode 100644
index 000000000..075e30b6c
--- /dev/null
+++ b/extra/proftpd/PKGBUILD
@@ -0,0 +1,49 @@
+# $Id: PKGBUILD 117431 2011-04-02 01:06:40Z eric $
+# Contributor: Eric Belanger <eric@archlinux.org>
+# Maintainer: Daniel J Griffiths <ghost1227@archlinux.us>
+
+pkgname=proftpd
+pkgver=1.3.3e
+pkgrel=1
+pkgdesc="A high-performance, scalable FTP server"
+arch=('i686' 'x86_64')
+url="http://www.proftpd.org"
+license=('GPL')
+depends=('glibc' 'pam' 'ncurses' 'libcap' 'libldap'
+ 'libmysqlclient' 'postgresql-libs')
+backup=('etc/proftpd.conf' 'etc/conf.d/proftpd')
+source=(ftp://ftp.proftpd.org/distrib/source/${pkgname}-${pkgver}.tar.bz2
+ 'proftpd' 'proftpd.logrotate' 'proftpd.conf.d')
+md5sums=('acc49b6589bc8c9fdf1dce9000bebdbd'
+ '99f6f9a989e70e3fa50809fc2bbbbb0a'
+ 'ddb09eb13131becdf0e081eef413116b'
+ '71d5932b0461c318ed68c2c0c2660736')
+sha1sums=('b347aa72d12e41fe8f43e8d91a7a4eeaac6f472f'
+ 'b7819d725817e55b69c73e2572c21a05db48cc86'
+ '83c38ec40efb7cc09d9824b98e65cd948a195cc6'
+ 'f34f60cb4fb1f4af7be7aca427cbad3cad22bbb9')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ ./configure --prefix=/usr --mandir=/usr/share/man --disable-pam \
+ --with-modules=mod_quotatab:mod_quotatab_file:mod_tls:mod_ldap:mod_sql:mod_sql_mysql:mod_sql_postgres \
+ --sysconfdir=/etc --localstatedir=/var/run --enable-ctrls --enable-ipv6 \
+ --with-includes=/usr/include/mysql:/usr/include/postgresql \
+ --with-libraries=/usr/lib/mysql:/usr/lib/postgresql --enable-nls
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ make DESTDIR="${pkgdir}" install
+ install -Dm644 ../proftpd.logrotate "${pkgdir}/etc/logrotate.d/proftpd"
+ install -Dm644 ../proftpd.conf.d "${pkgdir}/etc/conf.d/proftpd"
+ install -Dm755 ../proftpd "${pkgdir}/etc/rc.d/proftpd"
+ install -Dm755 contrib/xferstats.holger-preiss \
+ "${pkgdir}/usr/bin/ftpstats"
+ cd "${pkgdir}/etc"
+ sed -i 's|nogroup|nobody|g' proftpd.conf
+ rmdir "${pkgdir}/usr/libexec"
+}
diff --git a/extra/proftpd/proftpd b/extra/proftpd/proftpd
new file mode 100755
index 000000000..357a7663d
--- /dev/null
+++ b/extra/proftpd/proftpd
@@ -0,0 +1,41 @@
+#!/bin/bash
+
+# source application-specific settings
+PROFTPD_ARGS=
+[ -f /etc/conf.d/proftpd ] && . /etc/conf.d/proftpd
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+case "$1" in
+ start)
+ stat_busy "Starting ProFTPd Server"
+ /usr/sbin/proftpd ${PROFTPD_ARGS}
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon proftpd
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping ProFTPd Server"
+ [ -f /var/run/proftpd.pid ] && kill $(cat /var/run/proftpd.pid) &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm -f /var/run/proftpd.pid
+ rm_daemon proftpd
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
+
diff --git a/extra/proftpd/proftpd.conf.d b/extra/proftpd/proftpd.conf.d
new file mode 100644
index 000000000..1a5a8a201
--- /dev/null
+++ b/extra/proftpd/proftpd.conf.d
@@ -0,0 +1,4 @@
+#
+# Parameters to be passed to proftpd
+#
+PROFTPD_ARGS=""
diff --git a/extra/proftpd/proftpd.logrotate b/extra/proftpd/proftpd.logrotate
new file mode 100644
index 000000000..7b6d7a87b
--- /dev/null
+++ b/extra/proftpd/proftpd.logrotate
@@ -0,0 +1,5 @@
+/var/log/xferlog {
+ postrotate
+ /bin/kill -HUP `cat /var/run/proftpd.pid 2>/dev/null` 2>/dev/null || true
+ endscript
+}
diff --git a/extra/progsreiserfs/PKGBUILD b/extra/progsreiserfs/PKGBUILD
new file mode 100644
index 000000000..38ad5c1fc
--- /dev/null
+++ b/extra/progsreiserfs/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 107514 2011-01-26 12:57:49Z tpowa $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=progsreiserfs
+pkgver=0.3.0.5
+pkgrel=6
+pkgdesc="library for accessing and manipulating reiserfs partitions"
+arch=(i686 x86_64)
+url="http://www.namesys.com"
+license=('GPL')
+depends=('e2fsprogs')
+options=('!libtool')
+source=(#ftp://ftp.namesys.com/pub/libreiserfs/${pkgname}-${pkgver}.tar.gz
+ ftp://ftp.archlinux.org/other/progsreiserfs/${pkgname}-${pkgver}.tar.gz
+ )
+md5sums=('d822579bbd4a29a1be5e4490869d9bee')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr --mandir=/usr/share/man
+ make
+}
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+ # only provide lib and includes files
+ # https://bugs.archlinux.org/task/22255
+ rm -r ${pkgdir}/usr/sbin
+ rm -r ${pkgdir}/usr/share/man/
+}
diff --git a/extra/psi/PKGBUILD b/extra/psi/PKGBUILD
new file mode 100644
index 000000000..cf3d17109
--- /dev/null
+++ b/extra/psi/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 107019 2011-01-20 14:18:34Z pierre $
+# Maintainer: Pierre Schmitz <pierre@archlinux.de>
+
+pkgname=psi
+pkgver=0.14
+pkgrel=4
+pkgdesc='Instant messaging application designed for the Jabber IM'
+url='http://psi-im.org/'
+license=('GPL')
+arch=('i686' 'x86_64')
+depends=('qca-ossl' 'qca-gnupg' 'enchant' 'libxss' 'xdg-utils')
+install='psi.install'
+source=("http://downloads.sourceforge.net/psi/psi-${pkgver}.tar.bz2"
+ 'archlinux.patch')
+md5sums=('9d7dcce3bcab53b741a712199bd986be'
+ 'a965c6a4ad1028f14a5897c3f5088ae8')
+
+build() {
+ cd ${srcdir}/psi-${pkgver}
+ patch -p1 -i ${srcdir}/archlinux.patch
+ ./configure --prefix=/usr --disable-bundled-qca --release --no-separate-debug-info
+ make
+}
+
+package() {
+ cd ${srcdir}/psi-${pkgver}
+ make INSTALL_ROOT=${pkgdir} install
+}
diff --git a/extra/psi/archlinux.patch b/extra/psi/archlinux.patch
new file mode 100644
index 000000000..bf89ab4a9
--- /dev/null
+++ b/extra/psi/archlinux.patch
@@ -0,0 +1,12 @@
+diff -aur psi-0.12.old/src/systeminfo.cpp psi-0.12/src/systeminfo.cpp
+--- psi-0.12.old/src/systeminfo.cpp 2007-04-08 10:37:46.000000000 +0200
++++ psi-0.12/src/systeminfo.cpp 2009-05-11 15:09:14.000000000 +0200
+@@ -89,7 +89,7 @@
+ { LinuxSlackware, OsAppendFile, "/etc/slackware-version", "Slackware Linux" },
+ { LinuxPLD, OsUseFile, "/etc/pld-release", "PLD Linux" },
+ { LinuxAurox, OsUseName, "/etc/aurox-release", "Aurox Linux" },
+- { LinuxArch, OsUseFile, "/etc/arch-release", "Arch Linux" },
++ { LinuxArch, OsUseName, "/etc/arch-release", "Arch Linux" },
+ { LinuxLFS, OsAppendFile, "/etc/lfs-release", "LFS Linux" },
+
+ // untested
diff --git a/extra/psi/psi.install b/extra/psi/psi.install
new file mode 100644
index 000000000..e70c054ec
--- /dev/null
+++ b/extra/psi/psi.install
@@ -0,0 +1,11 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/extra/psiconv/PKGBUILD b/extra/psiconv/PKGBUILD
new file mode 100644
index 000000000..0fb78ec8b
--- /dev/null
+++ b/extra/psiconv/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 86765 2010-08-03 22:27:52Z ibiru $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=psiconv
+pkgver=0.9.8
+pkgrel=7
+pkgdesc="Converts Psion 5(MX) files to more commonly used file formats"
+arch=('i686' 'x86_64')
+url="http://software.frodo.looijaard.name/psiconv/"
+license=('GPL')
+depends=('imagemagick')
+makedepends=('bc')
+backup=('etc/psiconv/psiconv.conf')
+options=('!libtool')
+source=(http://software.frodo.looijaard.name/${pkgname}/files/${pkgname}-${pkgver}.tar.gz)
+md5sums=('8d7548e3c6b9cd408544736133728acd')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man
+ make || return 1
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/pstoedit/PKGBUILD b/extra/pstoedit/PKGBUILD
new file mode 100644
index 000000000..8a075012c
--- /dev/null
+++ b/extra/pstoedit/PKGBUILD
@@ -0,0 +1,39 @@
+# $Id: PKGBUILD 88955 2010-08-26 15:26:52Z 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
+pkgdesc="Translates PostScript and PDF graphics into other vector formats"
+arch=("i686" "x86_64")
+url="http://www.pstoedit.net/"
+license=('GPL')
+depends=('gcc-libs' 'plotutils' 'gd' 'imagemagick')
+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'
+ '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
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/pstoedit/pstoedit-3.50-parallel.patch b/extra/pstoedit/pstoedit-3.50-parallel.patch
new file mode 100644
index 000000000..4f1f73b04
--- /dev/null
+++ b/extra/pstoedit/pstoedit-3.50-parallel.patch
@@ -0,0 +1,47 @@
+diff --git a/src/Makefile.am b/src/Makefile.am
+index d6178df..66f377b 100755
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -86,6 +86,7 @@ libp2edrvstd_la_SOURCES= \
+ $(sample_drivers_src)
+ libp2edrvstd_la_LIBADD=-L. libpstoedit.la
+ libp2edrvstd_la_LDFLAGS=-no-undefined -module
++libp2edrvstd_la_DEPENDENCIES = libpstoedit.la
+
+ #libp2edrvplugins_la_SOURCES=drvmif.cpp drvcgm.cpp drvrtf.cpp drvwwmf.cpp
+ #libp2edrvplugins_la_LIBADD=
+@@ -95,15 +96,18 @@ libp2edrvstd_la_LDFLAGS=-no-undefined -module
+ libp2edrvlplot_la_SOURCES=drvlplot.cpp drvlplot.h initlibrary.cpp
+ libp2edrvlplot_la_LIBADD=$(LIBPLOTTER_LDFLAGS) -L. libpstoedit.la
+ libp2edrvlplot_la_LDFLAGS=-no-undefined -module
++libp2edrvlplot_la_DEPENDENCIES = libpstoedit.la
+
+ libp2edrvswf_la_SOURCES=drvswf.cpp drvswf.h initlibrary.cpp
+ libp2edrvswf_la_LIBADD=$(LIBMING_LDFLAGS) -L. libpstoedit.la
+ libp2edrvswf_la_LDFLAGS=-no-undefined -module
++libp2edrvswf_la_DEPENDENCIES = libpstoedit.la
+
+ # note the __ stand for ++ - automake treats all no alphanums chars as _
+ libp2edrvmagick___la_SOURCES=drvmagick++.cpp drvmagick++.h initlibrary.cpp
+ libp2edrvmagick___la_LIBADD=-L. libpstoedit.la
+ libp2edrvmagick___la_LDFLAGS=-no-undefined ${LIBMAGICK_LDFLAGS} -module
++libp2edrvmagick___la_DEPENDENCIES = libpstoedit.la
+ # moved to configure.ac because needed only for g++ libp2edrvmagick___la_CPPFLAGS=$(LIBMAGICK_CFLAGS) $(AM_CPPFLAGS) -Wno-long-long
+
+ if USE_EMFBYSOURCE
+@@ -113,6 +117,7 @@ else
+ libp2edrvwmf_la_SOURCES=drvwmf.cpp drvwmf.h initlibrary.cpp
+ libp2edrvwmf_la_LDFLAGS=-no-undefined $(LIBEMF_LDFLAGS) -L. libpstoedit.la -module
+ endif
++libp2edrvwmf_la_DEPENDENCIES = libpstoedit.la
+
+ libpstoedit_la_SOURCES = \
+ dynload.cpp dynload.h \
+@@ -135,6 +140,7 @@ libpstoedit_la_LDFLAGS = -no-undefined
+
+ pstoedit_SOURCES = cmdmain.cpp
+ pstoedit_LDFLAGS = -no-undefined -L. libpstoedit.la ${LIBLD_LDFLAGS}
++pstoedit_DEPENDENCIES = libpstoedit.la
+
+ pkginclude_HEADERS = \
+ pstoedit.h \
diff --git a/extra/pstoedit/pstoedit-3.50-plugin-close.patch b/extra/pstoedit/pstoedit-3.50-plugin-close.patch
new file mode 100644
index 000000000..6787d6aef
--- /dev/null
+++ b/extra/pstoedit/pstoedit-3.50-plugin-close.patch
@@ -0,0 +1,14 @@
+http://bugzilla.redhat.com/507035
+
+diff --git a/src/dynload.cpp b/src/dynload.cpp
+index c0db355..7c073ef 100644
+--- a/src/dynload.cpp
++++ b/src/dynload.cpp
+@@ -147,7 +147,6 @@ void DynLoader::close()
+
+ DynLoader::~DynLoader()
+ {
+- close();
+ libname=0;
+ }
+
diff --git a/extra/pth/PKGBUILD b/extra/pth/PKGBUILD
new file mode 100644
index 000000000..3075d939b
--- /dev/null
+++ b/extra/pth/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id: PKGBUILD 78043 2010-04-19 08:33:13Z dgriffiths $
+# Maintainer: damir <damir@archlinux.org>
+
+pkgname=pth
+pkgver=2.0.7
+pkgrel=3
+pkgdesc="The GNU Portable Threads."
+arch=('i686' 'x86_64')
+url="http://www.gnu.org/software/pth/"
+license=('LGPL')
+depends=('glibc')
+options=('!libtool' '!makeflags')
+source=(ftp://ftp.gnu.org/gnu/pth/${pkgname}-${pkgver}.tar.gz)
+md5sums=('9cb4a25331a4c4db866a31cbe507c793')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --mandir=/usr/share/man || return 1
+ make || return 1
+ make DESTDIR=${pkgdir} install || return 1
+}
diff --git a/extra/ptlib/PKGBUILD b/extra/ptlib/PKGBUILD
new file mode 100644
index 000000000..d023243a5
--- /dev/null
+++ b/extra/ptlib/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 81955 2010-06-07 12:18:47Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=ptlib
+pkgver=2.6.7
+pkgrel=1
+pkgdesc="Portable Windows Library"
+arch=(i686 x86_64)
+url="http://www.ekiga.org/"
+license=('GPL')
+depends=('gcc-libs>=4.5.0' 'openssl' 'alsa-lib>=1.0.21.a' 'sdl>=1.2.14' 'libv4l>=0.6.4' 'expat>=2.0.1')
+replaces=('pwlib')
+conflicts=('pwlib')
+source=(http://ftp.gnome.org/pub/GNOME/sources/${pkgname}/2.6/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('7dd28225fedd21154d34899b21ee4b6d27c88eb1a9f9931c8e6ced28e8f3b97f')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --libdir=/usr/lib \
+ --sysconfdir=/etc --localstatedir=/var \
+ --enable-opal --enable-plugins \
+ --enable-oss --enable-v4l2 \
+ --disable-avc --enable-sdl \
+ --enable-ipv6 --enable-v4l \
+ --enable-dc --disable-odbc \
+ --enable-expat --enable-httpforms || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/pulseaudio-mixer-applet/PKGBUILD b/extra/pulseaudio-mixer-applet/PKGBUILD
new file mode 100644
index 000000000..54fcd03c7
--- /dev/null
+++ b/extra/pulseaudio-mixer-applet/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 99926 2010-11-19 14:16:58Z heftig $
+# Maintainer: Jan "heftig" Steffens <jan.steffens@gmail.com>
+# Contributor: Samed Beyribey <ras0ir AT eventualis DOT org>
+
+pkgname=pulseaudio-mixer-applet
+pkgver=0.2.2
+pkgrel=6
+pkgdesc="GNOME panel applet to control PulseAudio devices and streams"
+arch=(i686 x86_64)
+url="https://launchpad.net/pama"
+license=(GPL3)
+depends=(gnome-media gnome-panel-bonobo libpulse glib2)
+makedepends=(intltool)
+source=(http://launchpad.net/pama/${pkgver%.*}/$pkgver/+download/pulseaudio-mixer-applet-$pkgver.tar.gz)
+md5sums=('b7df43c999ad8583f779e678cfe768ae')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make DESTDIR="$pkgdir/" install
+}
diff --git a/extra/pulseaudio/PKGBUILD b/extra/pulseaudio/PKGBUILD
new file mode 100644
index 000000000..9d8c6945e
--- /dev/null
+++ b/extra/pulseaudio/PKGBUILD
@@ -0,0 +1,98 @@
+# $Id: PKGBUILD 103255 2010-12-17 00:02:37Z heftig $
+# Maintainer: Jan "heftig" Steffens <jan.steffens@gmail.com>
+# Contributor: Daniel J Griffiths <ghost1227@archlinux.us>
+# Contributor: Corrado Primier <bardo@aur.archlinux.org>
+# Contributor: William Rea <sillywilly@gmail.com>
+
+pkgbase=pulseaudio
+pkgname=(pulseaudio libpulse)
+pkgver=0.9.22
+pkgrel=2
+arch=(i686 x86_64)
+url="http://pulseaudio.org/"
+license=(GPL LGPL)
+makedepends=(libasyncns libcap attr libxtst libsm tcp_wrappers libsndfile
+ libtool rtkit speex libsamplerate tdb udev dbus-core xcb-util
+ avahi bluez gconf intltool jack lirc-utils pkgconfig openssl)
+options=(!emptydirs !libtool !makeflags)
+source=("http://0pointer.de/lennart/projects/$pkgbase/$pkgbase-$pkgver.tar.gz"
+ $pkgbase.xinit)
+md5sums=('ca85ab470669b05e100861654cf5eb3c'
+ 'eb1cfae28eb2e4d3fdbe45a90e4318ab')
+
+build() {
+ cd "$srcdir/$pkgbase-$pkgver"
+
+ # Don't break circular dependency between libpulse and libpulsecommon
+ LDFLAGS="${LDFLAGS//-Wl,--as-needed}"
+
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --libexecdir=/usr/lib \
+ --localstatedir=/var \
+ --with-database=tdb \
+ --disable-hal \
+ --disable-rpath \
+ --disable-default-build-tests
+
+ make
+}
+
+package_pulseaudio() {
+ pkgdesc="A featureful, general-purpose sound server"
+ depends=("libpulse=$pkgver-$pkgrel" rtkit libtool speex libsamplerate tdb
+ udev)
+ optdepends=('avahi: zeroconf support'
+ 'bluez: bluetooth support'
+ 'gconf: configuration through gconf'
+ 'jack: jack support'
+ 'lirc-utils: infra-red support'
+ 'openssl: RAOP support')
+ backup=(etc/pulse/{daemon.conf,default.pa,system.pa})
+ install=pulseaudio.install
+ cd "$srcdir/$pkgbase-$pkgver"
+ make DESTDIR="$pkgdir" install
+
+ # Lower resample quality
+ sed -e '/resample-method/iresample-method=speex-float-0' \
+ -i "$pkgdir/etc/pulse/daemon.conf"
+
+ # Disable cork-request module, can result in e.g. media players unpausing
+ # when there's a Skype call incoming
+ sed -e 's|/usr/bin/pactl load-module module-x11-cork-request|#&|' \
+ -i "$pkgdir/usr/bin/start-$pkgbase-x11"
+
+ # Make module-console-kit optional
+ sed -e $'/module-console-kit/{i.nofail\n;a.fail\n;}' \
+ -i "$pkgdir/etc/pulse/default.pa"
+
+ install -Dm755 "$srcdir/$pkgbase.xinit" "$pkgdir/etc/X11/xinit/xinitrc.d/$pkgbase"
+
+ rm "$pkgdir/etc/dbus-1/system.d/$pkgbase-system.conf"
+
+### Split libpulse
+
+ mkdir -p "$srcdir"/libpulse/{etc/pulse,usr/{lib,share/{man/man5,vala/vapi}}}
+
+ mv {"$pkgdir","$srcdir/libpulse"}/etc/pulse/client.conf
+
+ mv "$pkgdir"/usr/lib/libpulse{,dsp,-simple,-browse,-mainloop-glib}.so* \
+ "$pkgdir"/usr/lib/libpulsecommon-*.so \
+ "$srcdir/libpulse/usr/lib"
+
+ mv {"$pkgdir","$srcdir/libpulse"}/usr/lib/pkgconfig
+ mv {"$pkgdir","$srcdir/libpulse"}/usr/include
+
+ mv {"$pkgdir","$srcdir/libpulse"}/usr/share/man/man5/pulse-client.conf.5
+ mv {"$pkgdir","$srcdir/libpulse"}/usr/share/vala/vapi/libpulse.vapi
+}
+
+package_libpulse() {
+ pkgdesc="A featureful, general-purpose sound server (client library)"
+ depends=(tcp_wrappers dbus-core xcb-util libasyncns libcap libxtst libsm
+ libsndfile)
+ optdepends=('alsa-plugins: ALSA support'
+ 'avahi: zeroconf support')
+ backup=(etc/pulse/client.conf)
+ mv "$srcdir"/libpulse/* "$pkgdir"
+}
diff --git a/extra/pulseaudio/pulseaudio.install b/extra/pulseaudio/pulseaudio.install
new file mode 100755
index 000000000..67a346759
--- /dev/null
+++ b/extra/pulseaudio/pulseaudio.install
@@ -0,0 +1,26 @@
+post_install() {
+ cat << MES
+>>> See the wiki at http://wiki.archlinux.org/index.php/PulseAudio for details
+ on configuring your system for PulseAudio.
+
+>>> Make sure to install pulseaudio-alsa to configure ALSA for PulseAudio.
+
+>>> You might want to blacklist the "snd-pcm-oss" module in /etc/rc.conf to
+ keep ALSA's OSS emulation from interfering with ALSA or PulseAudio.
+MES
+}
+
+post_upgrade() {
+ # Delete old users and groups
+ # System-wide daemon not supported anymore
+ if (( $(vercmp $2 0.9.22) < 0 )); then
+ getent passwd pulse &>/dev/null && usr/sbin/userdel -f pulse
+ getent group pulse-access &>/dev/null && usr/sbin/groupdel pulse-access
+ getent group pulse-rt &>/dev/null && usr/sbin/groupdel pulse-rt
+ getent group pulse &>/dev/null && usr/sbin/groupdel pulse
+ fi
+
+ true
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/extra/pulseaudio/pulseaudio.xinit b/extra/pulseaudio/pulseaudio.xinit
new file mode 100644
index 000000000..ca510e882
--- /dev/null
+++ b/extra/pulseaudio/pulseaudio.xinit
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+case "$SESSION" in
+ GNOME|KDE*|xfce4) # PulseAudio is started via XDG Autostart
+ ;;
+ *) /usr/bin/start-pulseaudio-x11 ;;
+esac
diff --git a/extra/purple-plugin-pack/PKGBUILD b/extra/purple-plugin-pack/PKGBUILD
new file mode 100644
index 000000000..6d2e61e9c
--- /dev/null
+++ b/extra/purple-plugin-pack/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 77562 2010-04-15 22:34:21Z ibiru $
+# Maintainer : Ionut Biru <ibiru@archlinux.org>
+# Contributor: Alexander Fehr <pizzapunk gmail com>
+# Contributor: Dale Blount <dale@archlinux.org>
+
+pkgname=purple-plugin-pack
+pkgver=2.6.3
+pkgrel=1
+pkgdesc="Plugin pack for Pidgin"
+arch=('i686' 'x86_64')
+url="http://plugins.guifications.org/trac/wiki/PluginPack"
+license=('GPL')
+depends=('pidgin')
+makedepends=('intltool' 'python')
+options=('!libtool')
+source=(http://plugins.guifications.org/trac/downloads/48)
+md5sums=('2dccee28f087c7e81cef07ee845399bb')
+
+build() {
+ cd "$srcdir/purple-plugin_pack-$pkgver"
+
+ ./configure --prefix=/usr || return 1
+ make || return 1
+ make DESTDIR="$pkgdir" install || return 1
+}
diff --git a/extra/putty/PKGBUILD b/extra/putty/PKGBUILD
new file mode 100644
index 000000000..6252fc40c
--- /dev/null
+++ b/extra/putty/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 57024 2009-10-31 09:56:01Z allan $
+# Maintainer: damir <damir@archlinux.org>
+# Contributor: Andreas Schweitzer <andy@bootblock.de>
+# with ideas by Michael Baehr
+
+pkgname=putty
+pkgver=0.60
+pkgrel=2
+pkgdesc="A terminal integrated SSH/Telnet client known from Windows."
+arch=('i686' 'x86_64')
+url="http://www.chiark.greenend.org.uk/~sgtatham/putty/"
+license=('custom')
+depends=('gtk')
+#source=(ftp://ftp.chiark.greenend.org.uk/users/sgtatham/putty-latest/$pkgname-$pkgver.tar.gz)
+source=("http://the.earth.li/~sgtatham/putty/latest/putty-$pkgver.tar.gz")
+md5sums=('07e65fd98b16d115ae38a180bfb242e2')
+
+build() {
+ export CFLAGS="$CFLAGS -fno-strict-aliasing"
+ cd $srcdir/$pkgname-$pkgver/unix
+ ./configure --prefix=/usr
+ make || return 1
+ install -dm755 $pkgdir/usr/{bin,share/man/man1}
+ make DESTDIR=$pkgdir install
+ install -D -m644 ../LICENCE $pkgdir/usr/share/licenses/$pkgname/LICENSE
+}
diff --git a/extra/pwgen/PKGBUILD b/extra/pwgen/PKGBUILD
new file mode 100644
index 000000000..0f9327fe5
--- /dev/null
+++ b/extra/pwgen/PKGBUILD
@@ -0,0 +1,21 @@
+# $Id: PKGBUILD 78038 2010-04-19 08:28:26Z dgriffiths $
+# Maintainer: damir <damir@archlinux.org>
+# Contributor : Tobias Powalowski <t.powa@gmx.de>
+
+pkgname=pwgen
+pkgver=2.06
+pkgrel=2
+pkgdesc="Pwgen is a small password generator which creates passwords which can be easily memorized by a human"
+arch=("i686" "x86_64")
+url="http://sourceforge.net/projects/pwgen/"
+license=('GPL')
+depends=('glibc')
+source=(http://downloads.sourceforge.net/sourceforge/pwgen/${pkgname}-${pkgver}.tar.gz)
+md5sums=('935aebcbe610fbc9de8125e7b7d71297')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr --mandir=/usr/share/man || return 1
+ make || return 1
+ make DESTDIR=${pkgdir} install || return 1
+}
diff --git a/extra/pycrypto/PKGBUILD b/extra/pycrypto/PKGBUILD
new file mode 100644
index 000000000..fba0c5d51
--- /dev/null
+++ b/extra/pycrypto/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: PKGBUILD 96778 2010-10-24 17:01:27Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Kritoke <kritoke@gamebox.net>
+
+pkgname=pycrypto
+pkgver=2.3
+pkgrel=1
+pkgdesc="Collection of cryptographic algorithms and protocols, implemented for use from Python."
+arch=(i686 x86_64)
+depends=('python2')
+url="http://www.dlitz.net/software/pycrypto/"
+license=(custom)
+source=(http://ftp.dlitz.net/pub/dlitz/crypto/${pkgname}/${pkgname}-${pkgver}.tar.gz)
+sha256sums=('4f11e85fbcf13960373650fc2dae8f088f9b001f07fb6d3efb2fcb5334987182')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ python2 setup.py build
+ python2 setup.py install --root="${pkgdir}" --optimize=1
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYRIGHT "${pkgdir}/usr/share/licenses/${pkgname}/"
+ cp -r LEGAL "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/pycups/PKGBUILD b/extra/pycups/PKGBUILD
new file mode 100644
index 000000000..6e0ae9700
--- /dev/null
+++ b/extra/pycups/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 111850 2011-03-01 12:31:00Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: nesl247 <nesl247@gmail.com>
+
+pkgname=pycups
+pkgver=1.9.54
+pkgrel=1
+pkgdesc="Python CUPS Bindings"
+url="http://cyberelk.net/tim/software/pycups/"
+arch=('i686' 'x86_64')
+license=('GPL')
+depends=('libcups' 'python2')
+source=("http://cyberelk.net/tim/data/${pkgname}/${pkgname}-${pkgver}.tar.bz2")
+md5sums=('57e6e0b0e7ea814660c08b8d19fc20e1')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ python2 setup.py build
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ python2 setup.py install --root="${pkgdir}" --optimize=1
+}
diff --git a/extra/pygobject/PKGBUILD b/extra/pygobject/PKGBUILD
new file mode 100644
index 000000000..df4b5c086
--- /dev/null
+++ b/extra/pygobject/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 104901 2011-01-05 14:19:02Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=pygobject
+pkgver=2.26.0
+pkgrel=2
+pkgdesc="Python bindings for GObject"
+arch=('i686' 'x86_64')
+license=('LGPL')
+depends=('python2' 'glib2>=2.26.0' 'pycairo>=1.8.10' 'gobject-introspection>=0.9.6')
+source=(http://ftp.gnome.org/pub/gnome/sources/pygobject/2.26/${pkgname}-${pkgver}.tar.bz2)
+options=('!libtool')
+url="http://www.pygtk.org/"
+sha256sums=('5554acff9c27b647144143b0459359864e4a6f2ff62c7ba21cf310ad755cf7c7')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ PYTHON=python2 ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+
+ find "$pkgdir"/usr/share/pygobject -name '*.py' | \
+ xargs sed -i "s|#![ ]*/usr/bin/env python$|#!/usr/bin/env python2|"
+}
diff --git a/extra/pygtk/PKGBUILD b/extra/pygtk/PKGBUILD
new file mode 100644
index 000000000..49f758d0d
--- /dev/null
+++ b/extra/pygtk/PKGBUILD
@@ -0,0 +1,34 @@
+# $Id: PKGBUILD 101297 2010-11-28 20:54:23Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Sarah Hay <sarahhay@mb.sympatico.ca>
+
+pkgname=pygtk
+pkgver=2.22.0
+pkgrel=3
+pkgdesc="Python bindings for the GTK widget set"
+arch=('i686' 'x86_64')
+license=('LGPL')
+depends=('libglade>=2.6.4' 'pycairo>=1.8.10' 'pygobject>=2.21.5')
+makedepends=('python-numpy')
+optdepends=('python-numpy')
+options=('!libtool')
+url="http://www.pygtk.org/"
+source=(http://ftp.gnome.org/pub/gnome/sources/pygtk/2.22/${pkgname}-${pkgver}.tar.bz2
+ python27.patch)
+sha256sums=('4acf0ef2bde8574913c40ee4a43d9c4f43bb77b577b67147271b534501a54cc8'
+ '39a30456cba055a452bb55c74ef1ff2f5f7bfaad22855b4dd569ab009b56b682')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ #https://bugzilla.gnome.org/show_bug.cgi?id=623965
+ patch -Np1 -i "${srcdir}/python27.patch"
+ PYTHON=python2 ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+ sed -i -e 's#env python$#env python2#' "${pkgdir}"/usr/lib/pygtk/2.0/{,demos/}*.py
+ install -m644 gtk/gtk-extrafuncs.defs "${pkgdir}/usr/share/pygtk/2.0/defs/"
+}
diff --git a/extra/pygtk/python27.patch b/extra/pygtk/python27.patch
new file mode 100644
index 000000000..9bbe2b5ae
--- /dev/null
+++ b/extra/pygtk/python27.patch
@@ -0,0 +1,50 @@
+diff --git a/gtk/gtkmodule.c b/gtk/gtkmodule.c
+index c0e1493..aa8cf10 100644
+--- a/gtk/gtkmodule.c
++++ b/gtk/gtkmodule.c
+@@ -227,8 +227,12 @@ init_gtk(void)
+ pygtk_add_stock_items(d);
+
+ /* extension API */
+- PyDict_SetItemString(d, "_PyGtk_API",
+- o=PyCObject_FromVoidPtr(&functions, NULL));
++#if PY_VERSION_HEX >= 0x02070000
++ o = PyCapsule_New(&functions, "gtk._gtk._PyGtk_API", NULL);
++#else
++ o = PyCObject_FromVoidPtr(&functions, NULL);
++#endif
++ PyDict_SetItemString(d, "_PyGtk_API", o);
+ Py_DECREF(o);
+
+ PyGtkDeprecationWarning = PyErr_NewException("gtk.GtkDeprecationWarning",
+diff --git a/gtk/pygtk.h b/gtk/pygtk.h
+index 573c3b9..e4c680f 100644
+--- a/gtk/pygtk.h
++++ b/gtk/pygtk.h
+@@ -60,6 +60,18 @@ struct _PyGtk_FunctionStruct *_PyGtk_API;
+
+
+ /* a function to initialise the pygtk functions */
++
++/* Python 2.7 introduced the PyCapsule API and deprecated the CObject API */
++#if PY_VERSION_HEX >= 0x02070000
++#define init_pygtk() G_STMT_START { \
++ void *capsule = PyCapsule_Import("gtk._gtk._PyGtk_API", 0); \
++ if (!capsule) { \
++ return; \
++ } \
++ _PyGtk_API = (struct _PyGtk_FunctionStruct*)capsule; \
++} G_STMT_END
++#else /* PY_VERSION_HEX */
++/* Python 2.6 and earlier use the CObject API */
+ #define init_pygtk() G_STMT_START { \
+ PyObject *pygtk = PyImport_ImportModule("gtk"); \
+ if (pygtk != NULL) { \
+@@ -79,6 +91,7 @@ struct _PyGtk_FunctionStruct *_PyGtk_API;
+ return; \
+ } \
+ } G_STMT_END
++#endif /* PY_VERSION_HEX */
+
+ #endif
+
diff --git a/extra/pygtksourceview2/PKGBUILD b/extra/pygtksourceview2/PKGBUILD
new file mode 100644
index 000000000..b5e11dcdf
--- /dev/null
+++ b/extra/pygtksourceview2/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: PKGBUILD 101307 2010-11-28 20:57:19Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=pygtksourceview2
+pkgver=2.10.1
+pkgrel=3
+pkgdesc="Python bindings for gtksourceview2"
+arch=(i686 x86_64)
+license=('GPL')
+depends=('gtksourceview2>=2.10.0' 'pygtk>=2.17.0')
+makedepends=('intltool' 'pkgconfig')
+options=('!libtool')
+url="http://www.gnome.org"
+source=(http://ftp.gnome.org/pub/gnome/sources/pygtksourceview/2.10/pygtksourceview-${pkgver}.tar.bz2)
+sha256sums=('b4b47c5aeb67a26141cb03663091dfdf5c15c8a8aae4d69c46a6a943ca4c5974')
+
+build() {
+ cd "${srcdir}/pygtksourceview-${pkgver}"
+ PYTHON=python2 ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-static --disable-docs
+ make
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/pymad/PKGBUILD b/extra/pymad/PKGBUILD
new file mode 100644
index 000000000..7b552f30e
--- /dev/null
+++ b/extra/pymad/PKGBUILD
@@ -0,0 +1,19 @@
+# $Id: PKGBUILD 89638 2010-09-02 19:58:32Z remy $
+# Maintainer: Mark Rosenstand <mark@archlinux.org
+# Contributor: Corrado Primier <cp663137@stud.polimi.it>
+pkgname=pymad
+pkgver=0.6
+pkgrel=3
+pkgdesc="Python interface to libmad."
+arch=(i686 x86_64)
+url="http://www.spacepants.org/src/pymad/"
+license=('LGPL')
+depends=('libmad' 'python2')
+source=(http://www.spacepants.org/src/pymad/download/$pkgname-$pkgver.tar.gz)
+md5sums=('a1405fb4b610348565c8d0e400c5ff18')
+
+build() {
+ cd $startdir/src/$pkgname-$pkgver
+ python2 config_unix.py --prefix=/usr
+ python2 setup.py install --root=$startdir/pkg
+}
diff --git a/extra/pyopenssl/PKGBUILD b/extra/pyopenssl/PKGBUILD
new file mode 100644
index 000000000..6197ba57a
--- /dev/null
+++ b/extra/pyopenssl/PKGBUILD
@@ -0,0 +1,43 @@
+# $Id: PKGBUILD 110679 2011-02-21 13:19:09Z stephane $
+# Maintainer : Ionut Biru<ibiru@archlinux.org>
+# Contributor: Sergej Pupykin <pupykin.s+arch@gmail.com>
+
+pkgbase=pyopenssl
+pkgname=('pyopenssl' 'python2-pyopenssl')
+pkgver=0.11
+pkgrel=2
+arch=('i686' 'x86_64')
+url="https://launchpad.net/pyopenssl/"
+license=('LGPL2.1')
+makedepends=('python' 'python2' 'openssl')
+source=(http://launchpad.net/${pkgname}/main/${pkgver}/+download/pyOpenSSL-${pkgver}.tar.gz)
+md5sums=('9e76e57e00fa48745fcfe23944db1e6c')
+
+build() {
+ cd "${srcdir}"
+ cp -a "pyOpenSSL-${pkgver}"{,-python2}
+
+ #build python 3 module
+ cd "pyOpenSSL-${pkgver}"
+ python setup.py build
+
+ #build python 3 module
+ cd ../"pyOpenSSL-${pkgver}-python2"
+ python2 setup.py build
+}
+
+package_pyopenssl(){
+ pkgdesc="Python3 wrapper module around the OpenSSL library"
+ depends=('python>=3.2' 'openssl')
+
+ cd "${srcdir}/pyOpenSSL-${pkgver}"
+ python setup.py install --root "${pkgdir}" --optimize=1
+}
+
+package_python2-pyopenssl(){
+ pkgdesc="Python2 wrapper module around the OpenSSL library"
+ depends=('python2>=2.7' 'openssl')
+
+ cd "${srcdir}/pyOpenSSL-${pkgver}-python2"
+ python2 setup.py install --root "${pkgdir}" --optimize=1
+}
diff --git a/extra/pyorbit/PKGBUILD b/extra/pyorbit/PKGBUILD
new file mode 100644
index 000000000..930dd0dda
--- /dev/null
+++ b/extra/pyorbit/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id: PKGBUILD 89716 2010-09-03 12:01:46Z remy $
+# Mantainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=pyorbit
+pkgver=2.24.0
+pkgrel=3
+pkgdesc="Python bindings for ORBit2"
+arch=(i686 x86_64)
+license=('LGPL')
+url="http://www.pygtk.org"
+depends=('python2' 'orbit2>=2.14.16')
+makedepends=('pkgconfig')
+options=('!libtool')
+source=(http://ftp.gnome.org/pub/GNOME/sources/pyorbit/2.24/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('574593815e75ee6e98062c75d6d1581f')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/pypgsql/COPYING b/extra/pypgsql/COPYING
new file mode 100644
index 000000000..c13985414
--- /dev/null
+++ b/extra/pypgsql/COPYING
@@ -0,0 +1,20 @@
+ pyPgSQL, version 2.5
+ A Python DB-API 2.0 compliant interface for PostgreSQL
+ Copyright 2000 by Billy G. Allie.
+ All rights reserved.
+
+ Permission to use, copy, modify, and distribute this software and it's
+ documentation for any purpose and without fee is hereby granted,
+ provided that the above copyright notice appear in all copies and that
+ both that copyright notice and this permission notice appear in
+ supporting documentation, and that the copyright owner's name not be
+ used in advertising or publicity pertaining to distribution of the
+ software without specific, written prior permission.
+
+ THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN
+ NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
+ USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+ OTHER TORTUOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ PERFORMANCE OF THIS SOFTWARE.
diff --git a/extra/pypgsql/PKGBUILD b/extra/pypgsql/PKGBUILD
new file mode 100644
index 000000000..ef62e81c9
--- /dev/null
+++ b/extra/pypgsql/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: PKGBUILD 89618 2010-09-02 16:23:36Z remy $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+pkgname=pypgsql
+pkgver=2.5.1
+pkgrel=7
+pkgdesc="A python client library for postgresql"
+arch=(i686 x86_64)
+license=('custom')
+url="http://pypgsql.sourceforge.net/"
+depends=('python-egenix-mx-base>=2.0.6-3' 'postgresql-libs>=8.4')
+source=(http://downloads.sourceforge.net/${pkgname}/pyPgSQL-${pkgver}.tar.gz
+ 'COPYING')
+md5sums=('82670f6f1652aa4766fdaec2cb43debd'
+ '235c239b51a8b8e6b53c414ef71d7612')
+
+build() {
+ cd ${srcdir}/pyPgSQL-${pkgver} || return 1
+ python2 setup.py install --root=${pkgdir} || return 1
+
+ # install custom license
+ install -Dm644 $srcdir/COPYING \
+ $pkgdir/usr/share/licenses/$pkgname/COPYING
+}
diff --git a/extra/pysmbc/PKGBUILD b/extra/pysmbc/PKGBUILD
new file mode 100644
index 000000000..b3d4f91e8
--- /dev/null
+++ b/extra/pysmbc/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 103364 2010-12-18 14:48:53Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Shane Peelar <lookatyouhacker@gm@il(d0t)c0m>
+
+pkgname=pysmbc
+pkgver=1.0.10
+pkgrel=1
+pkgdesc="Python libsmbclient bindings"
+arch=('i686' 'x86_64')
+url="http://cyberelk.net/tim/software/pysmbc/"
+license=('GPL')
+depends=('python2' 'smbclient')
+source=("http://cyberelk.net/tim/data/${pkgname}/${pkgname}-${pkgver}.tar.bz2")
+md5sums=('72cc12d6c037c68ca81355151a58083b')
+
+build(){
+ cd ${srcdir}/${pkgname}-${pkgver}
+ python2 setup.py build
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ python2 setup.py install --root="$pkgdir" --optimize=1
+}
diff --git a/extra/python-cairo/PKGBUILD b/extra/python-cairo/PKGBUILD
new file mode 100644
index 000000000..864c6bb86
--- /dev/null
+++ b/extra/python-cairo/PKGBUILD
@@ -0,0 +1,44 @@
+# $Id: PKGBUILD 110756 2011-02-22 02:50:48Z stephane $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=python-cairo
+pkgver=1.8.10
+pkgrel=2
+pkgdesc="Python bindings for the cairo graphics library"
+arch=('i686' 'x86_64')
+license=('LGPL3')
+depends=('python' 'cairo')
+makedepends=('pkg-config')
+options=('!libtool')
+source=(http://cairographics.org/releases/pycairo-${pkgver}.tar.bz2
+ pycairo-1.8.10-pypath.patch)
+url="http://www.cairographics.org/pycairo"
+md5sums=('ddc544943d791e3c22ca8f019e10e1e3'
+ '047cfe0a98cfa73a156cd70e70082325')
+
+build() {
+ cd "${srcdir}/pycairo-${pkgver}"
+
+ # We patch the embedded copy of waf to fix compiling against python 3.2
+ # (due to PEP-3149), by using the appropriate python-config tool, rather
+ # than trying to find the libraries by directly using PYTHON_VERSION
+
+ # Ensure that ./waf has created the cached unpacked version
+ # of the wafadmin source tree.
+ # This will be created to a subdirectory like
+ # .waf3-1.5.18-a7b91e2a913ce55fa6ecdf310df95752
+ python ./waf --version
+
+ # Patch the unpacked version of waf:
+ pushd .waf3*
+ patch -Np0 -i ../../pycairo-1.8.10-pypath.patch
+ popd
+
+ ./waf configure --prefix=/usr
+ ./waf build
+}
+
+package() {
+ cd "${srcdir}/pycairo-${pkgver}"
+ ./waf install --destdir="${pkgdir}"
+}
diff --git a/extra/python-cairo/pycairo-1.8.10-pypath.patch b/extra/python-cairo/pycairo-1.8.10-pypath.patch
new file mode 100644
index 000000000..07d4e1b7a
--- /dev/null
+++ b/extra/python-cairo/pycairo-1.8.10-pypath.patch
@@ -0,0 +1,36 @@
+diff -up wafadmin/Tools/python.py.pypath wafadmin/Tools/python.py
+--- wafadmin/Tools/python.py.pypath 2011-02-10 15:30:44.118506004 -0500
++++ wafadmin/Tools/python.py 2011-02-10 15:32:50.922506002 -0500
+@@ -156,6 +156,9 @@ MACOSX_DEPLOYMENT_TARGET = %r
+ env.append_value('LINKFLAGS_PYEMBED',python_LDFLAGS.split())
+ result=False
+ name='python'+env['PYTHON_VERSION']
++ python_config=conf.find_program('python%s-config'%('.'.join(env['PYTHON_VERSION'].split('.')[:2])),var='PYTHON_CONFIG')
++ if not python_config:
++ python_config=conf.find_program('python-config-%s'%('.'.join(env['PYTHON_VERSION'].split('.')[:2])),var='PYTHON_CONFIG')
+ if python_LIBDIR is not None:
+ path=[python_LIBDIR]
+ conf.log.write("\n\n# Trying LIBDIR: %r\n"%path)
+@@ -169,6 +172,12 @@ MACOSX_DEPLOYMENT_TARGET = %r
+ path=[os.path.join(python_prefix,"libs")]
+ name='python'+env['PYTHON_VERSION'].replace('.','')
+ result=conf.check(lib=name,uselib='PYEMBED',libpath=path)
++ if not result and python_config:
++ conf.log.write("\n\n# try again with help of python-config\n")
++ for libstr in Utils.cmd_output("%s %s --libs"%(python,python_config)).strip().split():
++ if(libstr.startswith('-lpython')):
++ name=libstr[2:]
++ result=conf.check(lib=name,uselib='PYEMBED',libpath=path)
+ if result:
+ env['LIBPATH_PYEMBED']=path
+ env.append_value('LIB_PYEMBED',name)
+@@ -177,9 +186,6 @@ MACOSX_DEPLOYMENT_TARGET = %r
+ if(sys.platform=='win32'or sys.platform.startswith('os2')or sys.platform=='darwin'or Py_ENABLE_SHARED):
+ env['LIBPATH_PYEXT']=env['LIBPATH_PYEMBED']
+ env['LIB_PYEXT']=env['LIB_PYEMBED']
+- python_config=conf.find_program('python%s-config'%('.'.join(env['PYTHON_VERSION'].split('.')[:2])),var='PYTHON_CONFIG')
+- if not python_config:
+- python_config=conf.find_program('python-config-%s'%('.'.join(env['PYTHON_VERSION'].split('.')[:2])),var='PYTHON_CONFIG')
+ includes=[]
+ if python_config:
+ for incstr in Utils.cmd_output("%s %s --includes"%(python,python_config)).strip().split():
diff --git a/extra/python-egenix-mx-base/PKGBUILD b/extra/python-egenix-mx-base/PKGBUILD
new file mode 100644
index 000000000..8582040b1
--- /dev/null
+++ b/extra/python-egenix-mx-base/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 89533 2010-09-01 15:30:54Z remy $
+# Maintainer:
+# Contributor: Douglas Soares de Andrade <douglas@archlinux.org>
+
+pkgname=python-egenix-mx-base
+origname=egenix-mx-base
+pkgver=3.1.3
+pkgrel=2
+pkgdesc="A collection of professional quality Python software tools which enhance Python's usability in many important areas - Open Source parts of the eGenix.com mx Extension series"
+arch=('i686' 'x86_64')
+license=('custom')
+url="http://www.egenix.com/products/python/mxBase/"
+depends=('python2')
+replaces=('egenix-mx-base')
+provides=('egenix-mx-base')
+source=("http://downloads.egenix.com/python/${origname}-${pkgver}.tar.gz")
+md5sums=('398d6f8d62029f5bea4f94765a6ab4c8')
+
+package() {
+ cd $srcdir/$origname-$pkgver
+ BASECFLAGS=$BASECFLAGS" -DNDEBUG -O0 -Wall -Wstrict-prototypes "
+ python2 setup.py install --root=$pkgdir
+ install -D -m644 COPYRIGHT $pkgdir/usr/share/licenses/$pkgname/LICENSE
+}
diff --git a/extra/python-geoip/PKGBUILD b/extra/python-geoip/PKGBUILD
new file mode 100644
index 000000000..0e535d169
--- /dev/null
+++ b/extra/python-geoip/PKGBUILD
@@ -0,0 +1,20 @@
+# $Id: PKGBUILD 89623 2010-09-02 16:32:29Z remy $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=python-geoip
+pkgver=1.2.4
+pkgrel=2
+pkgdesc="Python bindings for the GeoIP IP-to-country resolver library."
+arch=(i686 x86_64)
+url="http://www.maxmind.com/app/python"
+license=('LGPL')
+depends=('python2' 'geoip')
+source=(http://www.maxmind.com/download/geoip/api/python/GeoIP-Python-${pkgver}.tar.gz)
+replaces=('geoip-python')
+provides=('geoip-python')
+
+build() {
+ cd ${startdir}/src/GeoIP-Python-${pkgver}
+ python2 setup.py build install --root=${startdir}/pkg
+}
+md5sums=('50f820d854476efaf3b7af733ffe4236')
diff --git a/extra/python-gtkglext/PKGBUILD b/extra/python-gtkglext/PKGBUILD
new file mode 100644
index 000000000..883b8d92e
--- /dev/null
+++ b/extra/python-gtkglext/PKGBUILD
@@ -0,0 +1,21 @@
+# $Id: PKGBUILD 89694 2010-09-03 10:37:56Z remy $
+# Maintainer: simo <simo@archlinux.org>
+pkgname=python-gtkglext
+pkgver=1.1.0
+pkgrel=4
+pkgdesc="Python language bindings for GtkGLExt"
+arch=(i686 x86_64)
+depends=('gtkglext' 'mesa' 'python-opengl' 'pygtk')
+makedepends=('libxmu')
+url="http://gtkglext.sourceforge.net/"
+source=(http://downloads.sourceforge.net/gtkglext/pygtkglext-$pkgver.tar.bz2)
+license="LGPL"
+md5sums=('720b421d3b8514a40189b285dd91de57')
+
+build() {
+ cd $startdir/src/pygtkglext-$pkgver
+ ./configure --prefix=/usr
+ make || return 1
+ make DESTDIR=$startdir/pkg install
+ find $startdir/pkg -name '*.la' -exec rm {} \;
+}
diff --git a/extra/python-imaging/PKGBUILD b/extra/python-imaging/PKGBUILD
new file mode 100644
index 000000000..a48ff7309
--- /dev/null
+++ b/extra/python-imaging/PKGBUILD
@@ -0,0 +1,48 @@
+# $Id: PKGBUILD 110352 2011-02-18 23:00:51Z allan $
+# Maintainer: Allan McRae <allan@archlinux.org>
+# Contributor: simo <simo@archlinux.org>
+
+pkgname=python-imaging
+pkgver=1.1.7
+pkgrel=3
+pkgdesc="PIL. Provides image processing capabilities for python"
+arch=('i686' 'x86_64')
+url="http://www.pythonware.com/products/pil/index.htm"
+license=('custom:"pil"')
+depends=('python2' 'libjpeg' 'freetype2')
+makedepends=('tk' 'sane')
+optdepends=('tk' 'sane')
+provides=("pil=$pkgver")
+conflicts=('pil')
+replaces=('pil')
+source=(http://effbot.org/downloads/Imaging-$pkgver.tar.gz)
+md5sums=('fc14a54e1ce02a0225be8854bfba478e')
+
+build() {
+ cd $srcdir/Imaging-$pkgver
+ python2 setup.py build_ext
+ cd Sane
+ python2 setup.py build_ext
+}
+
+package() {
+ cd $srcdir/Imaging-$pkgver
+ python2 setup.py install --root=$pkgdir
+
+ pushd Sane
+ python2 setup.py install --root=$pkgdir
+ popd
+
+ install -dm755 $pkgdir/usr/include/python2.7/
+ install -m644 -t $pkgdir/usr/include/python2.7/ libImaging/*.h
+
+ # do not have files ending in .py in /usr/bin
+ for f in pildriver pilprint pilconvert pilfile pilfont; do
+ mv $pkgdir/usr/bin/$f{.py,}
+ done
+
+ # Install license
+ install -Dm644 $srcdir/Imaging-$pkgver/README \
+ $pkgdir/usr/share/licenses/$pkgname/README
+}
+
diff --git a/extra/python-iwscan/PKGBUILD b/extra/python-iwscan/PKGBUILD
new file mode 100644
index 000000000..83019f82e
--- /dev/null
+++ b/extra/python-iwscan/PKGBUILD
@@ -0,0 +1,18 @@
+# Maintainer: Daniel Isenmann <daniel@archlinux.org>
+
+pkgname=python-iwscan
+pkgver=20090609
+pkgrel=2
+pkgdesc="A Python interface to iwlist, using the iwlib library"
+arch=('i686' 'x86_64')
+url="http://projects.otaku42.de/browser/python-iwscan"
+license=('LGPL')
+depends=('python2' 'wireless_tools')
+source=(ftp://ftp.archlinux.org/other/${pkgname}/${pkgname}-20090609.tar.gz)
+md5sums=('30fbe8ad3b07e67c1c35db2de16077d8')
+
+build() {
+ cd ${srcdir}/${pkgname}
+ python2 setup.py build
+ python2 setup.py install --root=${pkgdir}
+}
diff --git a/extra/python-lxml/PKGBUILD b/extra/python-lxml/PKGBUILD
new file mode 100644
index 000000000..76d995f9c
--- /dev/null
+++ b/extra/python-lxml/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 109621 2011-02-11 10:29:56Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Jaroslav Lichtblau <dragonlord@aur.archlinux.org>
+# Contributor: Angel 'angvp' Velasquez <angvp[at]archlinux.com.ve>
+# Contributor: William Rea <sillywilly@gmail.com>
+# Contributor: Guillem Rieu <guillemr@gmx.net>
+
+pkgname=python-lxml
+pkgver=2.3
+pkgrel=1
+pkgdesc="Python binding for the libxml2 and libxslt libraries"
+arch=('i686' 'x86_64')
+license=('BSD' 'GPL' 'custom')
+url="http://codespeak.net/lxml"
+depends=('python2' 'libxslt')
+optdepends=("beautiful-soup: support for parsing not well formed HTML")
+conflicts=('lxml')
+replaces=('lxml')
+source=("http://codespeak.net/lxml/lxml-${pkgver}.tgz")
+md5sums=('a245a015fd59b63e220005f263e1682a')
+
+package() {
+ cd ${srcdir}/lxml-$pkgver
+
+ python2 setup.py install --root="${pkgdir}" --optimize=1
+
+ install -D -m644 LICENSES.txt ${pkgdir}/usr/share/licenses/$pkgname/LICENSE
+ install -D -m644 doc/licenses/BSD.txt ${pkgdir}/usr/share/licenses/$pkgname/BSD.txt
+ install -D -m644 doc/licenses/elementtree.txt ${pkgdir}/usr/share/licenses/$pkgname/elementtree.txt
+}
diff --git a/extra/python-m2crypto/PKGBUILD b/extra/python-m2crypto/PKGBUILD
new file mode 100644
index 000000000..4e8a1aafb
--- /dev/null
+++ b/extra/python-m2crypto/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id: PKGBUILD 87898 2010-08-18 16:12:44Z ibiru $
+# Maintainer:
+# Contributor: Sergej Pupykin <sergej@aur.archlinux.org>
+# Contributor: William Rea <sillywilly@gmail.com>
+
+pkgname=python-m2crypto
+pkgver=0.20.2
+pkgrel=3
+pkgdesc="A crypto and SSL toolkit for Python"
+arch=('i686' 'x86_64')
+url="http://wiki.osafoundation.org/bin/view/Projects/MeTooCrypto"
+license=('BSD')
+depends=('python2' 'openssl')
+makedepends=('swig')
+source=("http://pypi.python.org/packages/source/M/M2Crypto/M2Crypto-${pkgver}.tar.gz"
+ 'openssl1.patch')
+md5sums=('6c24410410d6eb1920ea43f77a93613a'
+ '80a707ad6610f2871efdf40658e30364')
+
+build() {
+ cd "${srcdir}/M2Crypto-${pkgver}"
+ patch -Np0 -i ${srcdir}/openssl1.patch
+ python2 setup.py build
+}
+
+package() {
+ cd "${srcdir}/M2Crypto-${pkgver}"
+ python2 setup.py install --root="${pkgdir}/" --optimize=1
+
+ install -D -m644 LICENCE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+}
diff --git a/extra/python-m2crypto/openssl1.patch b/extra/python-m2crypto/openssl1.patch
new file mode 100644
index 000000000..59dba554d
--- /dev/null
+++ b/extra/python-m2crypto/openssl1.patch
@@ -0,0 +1,531 @@
+Index: tests/test_ssl.py
+===================================================================
+--- tests/test_ssl.py (revision 698)
++++ tests/test_ssl.py (working copy)
+@@ -405,8 +405,11 @@
+ try:
+ ctx = SSL.Context('sslv23', weak_crypto=1)
+ s = SSL.Connection(ctx)
+- s.connect(self.srv_addr)
+- self.failUnlessEqual(s.get_version(), 'SSLv2')
++ if m2.OPENSSL_VERSION_NUMBER < 0x10000000: # SSLv2 ciphers disabled by default in newer OpenSSL
++ s.connect(self.srv_addr)
++ self.failUnlessEqual(s.get_version(), 'SSLv2')
++ else:
++ self.assertRaises(SSL.SSLError, s.connect, self.srv_addr)
+ s.close()
+ finally:
+ self.stop_server(pid)
+Index: tests/test_x509.py
+===================================================================
+--- tests/test_x509.py (revision 698)
++++ tests/test_x509.py (working copy)
+@@ -142,7 +142,7 @@
+ cn.set_data("Hello There!")
+ assert cn.get_data().as_text() == "Hello There!", cn.get_data().as_text()
+
+- assert n.as_hash() == 1697185131
++ self.assertEquals(n.as_hash(), 1697185131)
+
+ self.assertRaises(IndexError, lambda: n[100])
+ self.assert_(n[10])
+Index: tests/test_smime.py
+===================================================================
+--- tests/test_smime.py (revision 698)
++++ tests/test_smime.py (working copy)
+@@ -6,7 +6,7 @@
+ """
+
+ import unittest
+-from M2Crypto import SMIME, BIO, Rand, X509, EVP
++from M2Crypto import SMIME, BIO, Rand, X509, EVP, Err
+
+ class SMIMETestCase(unittest.TestCase):
+ cleartext = 'some text to manipulate'
+@@ -213,7 +213,7 @@
+
+ self.filenameSmime = 'tests/sig.p7s'
+ f = BIO.openfile(self.filenameSmime, 'wb')
+- assert s.write(f, p7, BIO.MemoryBuffer('some text')) == 1
++ assert s.write(f, p7, BIO.MemoryBuffer('some text')) == 1, Err.get_error()
+ f.close()
+
+ def test_write_pkcs7_der(self):
+Index: SWIG/_evp.i
+===================================================================
+--- SWIG/_evp.i (revision 695)
++++ SWIG/_evp.i (working copy)
+@@ -180,7 +180,7 @@
+
+ PKCS5_PBKDF2_HMAC_SHA1(passbuf, passlen, saltbuf, saltlen, iter,
+ keylen, key);
+- ret = PyString_FromStringAndSize(key, keylen);
++ ret = PyString_FromStringAndSize((char*)key, keylen);
+ OPENSSL_cleanse(key, keylen);
+ return ret;
+ }
+@@ -339,7 +339,7 @@
+ klen = EVP_BytesToKey(cipher, md, (unsigned char *)sbuf,
+ (unsigned char *)dbuf, dlen, iter,
+ key, NULL); /* Since we are not returning IV no need to derive it */
+- ret = PyString_FromStringAndSize(key, klen);
++ ret = PyString_FromStringAndSize((char*)key, klen);
+ return ret;
+ }
+
+@@ -435,7 +435,7 @@
+ PyErr_SetString(_evp_err, ERR_reason_error_string(ERR_get_error()));
+ return NULL;
+ }
+- ret = PyString_FromStringAndSize(sigbuf, siglen);
++ ret = PyString_FromStringAndSize((char*)sigbuf, siglen);
+ OPENSSL_cleanse(sigbuf, siglen);
+ OPENSSL_free(sigbuf);
+ return ret;
+@@ -513,7 +513,7 @@
+ PyErr_SetString(PyExc_ValueError, "EVP_PKEY as DER failed");
+ return NULL;
+ }
+- der = PyString_FromStringAndSize(pp, len);
++ der = PyString_FromStringAndSize((char*)pp, len);
+ OPENSSL_free(pp);
+ return der;
+ }
+Index: SWIG/_ssl.i
+===================================================================
+--- SWIG/_ssl.i (revision 695)
++++ SWIG/_ssl.i (working copy)
+@@ -17,13 +17,17 @@
+ %apply Pointer NONNULL { SSL_CTX * };
+ %apply Pointer NONNULL { SSL * };
+ %apply Pointer NONNULL { SSL_CIPHER * };
+-%apply Pointer NONNULL { STACK * };
++%apply Pointer NONNULL { STACK_OF(SSL_CIPHER) * };
++%apply Pointer NONNULL { STACK_OF(X509) * };
+ %apply Pointer NONNULL { BIO * };
+ %apply Pointer NONNULL { DH * };
+ %apply Pointer NONNULL { RSA * };
+ %apply Pointer NONNULL { EVP_PKEY *};
+ %apply Pointer NONNULL { PyObject *pyfunc };
+
++%rename(ssl_get_ciphers) SSL_get_ciphers;
++extern STACK_OF(SSL_CIPHER) *SSL_get_ciphers(const SSL *ssl);
++
+ %rename(ssl_get_version) SSL_get_version;
+ extern const char *SSL_get_version(CONST SSL *);
+ %rename(ssl_get_error) SSL_get_error;
+@@ -668,29 +672,25 @@
+ return SSL_CIPHER_get_bits(c, NULL);
+ }
+
+-STACK *ssl_get_ciphers(SSL *ssl) {
+- return (STACK *)SSL_get_ciphers(ssl);
++int sk_ssl_cipher_num(STACK_OF(SSL_CIPHER) *stack) {
++ return sk_SSL_CIPHER_num(stack);
+ }
+
+-int sk_ssl_cipher_num(STACK *stack) {
+- return sk_num(stack);
++SSL_CIPHER *sk_ssl_cipher_value(STACK_OF(SSL_CIPHER) *stack, int idx) {
++ return sk_SSL_CIPHER_value(stack, idx);
+ }
+
+-SSL_CIPHER *sk_ssl_cipher_value(STACK *stack, int idx) {
+- return (SSL_CIPHER *)sk_value(stack, idx);
++STACK_OF(X509) *ssl_get_peer_cert_chain(SSL *ssl) {
++ return SSL_get_peer_cert_chain(ssl);
+ }
+
+-STACK *ssl_get_peer_cert_chain(SSL *ssl) {
+- return (STACK *)SSL_get_peer_cert_chain(ssl);
++int sk_x509_num(STACK_OF(X509) *stack) {
++ return sk_X509_num(stack);
+ }
+
+-int sk_x509_num(STACK *stack) {
+- return sk_num(stack);
++X509 *sk_x509_value(STACK_OF(X509) *stack, int idx) {
++ return sk_X509_value(stack, idx);
+ }
+-
+-X509 *sk_x509_value(STACK *stack, int idx) {
+- return (X509 *)sk_value(stack, idx);
+-}
+ %}
+
+ %threadallow i2d_ssl_session;
+Index: SWIG/_x509.i
+===================================================================
+--- SWIG/_x509.i (revision 695)
++++ SWIG/_x509.i (working copy)
+@@ -148,8 +148,15 @@
+ extern int X509_NAME_print_ex(BIO *, X509_NAME *, int, unsigned long);
+ %rename(x509_name_print_ex_fp) X509_NAME_print_ex_fp;
+ extern int X509_NAME_print_ex_fp(FILE *, X509_NAME *, int, unsigned long);
++
++#if OPENSSL_VERSION_NUMBER >= 0x10000000L
++%rename(x509_name_hash) X509_NAME_hash_old;
++extern unsigned long X509_NAME_hash_old(X509_NAME *);
++#else
+ %rename(x509_name_hash) X509_NAME_hash;
+ extern unsigned long X509_NAME_hash(X509_NAME *);
++#endif
++
+ %rename(x509_name_get_index_by_nid) X509_NAME_get_index_by_NID;
+ extern int X509_NAME_get_index_by_NID(X509_NAME *, int, int);
+
+@@ -171,7 +178,7 @@
+ if (PyString_Check($input)) {
+ Py_ssize_t len;
+
+- $1 = PyString_AsString($input);
++ $1 = (unsigned char *)PyString_AsString($input);
+ len = PyString_Size($input);
+ if (len > INT_MAX) {
+ PyErr_SetString(PyExc_ValueError, "object too large");
+@@ -184,7 +191,7 @@
+ }
+ }
+ %rename(x509_name_entry_set_data) X509_NAME_ENTRY_set_data;
+-extern int X509_NAME_ENTRY_set_data( X509_NAME_ENTRY *, int, CONST unsigned char *, int);
++extern int X509_NAME_ENTRY_set_data(X509_NAME_ENTRY *, int, CONST unsigned char *, int);
+ %typemap(in) (CONST unsigned char *, int);
+
+ %rename(x509_req_new) X509_REQ_new;
+@@ -230,7 +237,7 @@
+ %rename(x509_store_ctx_free) X509_STORE_CTX_free;
+ extern void X509_STORE_CTX_free(X509_STORE_CTX *);
+ %rename(x509_store_ctx_get1_chain) X509_STORE_CTX_get1_chain;
+-extern STACK *X509_STORE_CTX_get1_chain(X509_STORE_CTX *);
++extern STACK_OF(X509) *X509_STORE_CTX_get1_chain(X509_STORE_CTX *);
+
+ %rename(x509_extension_get_critical) X509_EXTENSION_get_critical;
+ extern int X509_EXTENSION_get_critical(X509_EXTENSION *);
+@@ -348,7 +355,7 @@
+ PyErr_SetString(_x509_err, ERR_reason_error_string(ERR_get_error()));
+ }
+ else {
+- ret = PyString_FromStringAndSize(buf, len);
++ ret = PyString_FromStringAndSize((char*)buf, len);
+ OPENSSL_free(buf);
+ }
+ return ret;
+@@ -435,12 +442,12 @@
+ }
+
+ int x509_name_set_by_nid(X509_NAME *name, int nid, PyObject *obj) {
+- return X509_NAME_add_entry_by_NID(name, nid, MBSTRING_ASC, PyString_AsString(obj), -1, -1, 0);
++ return X509_NAME_add_entry_by_NID(name, nid, MBSTRING_ASC, (unsigned char *)PyString_AsString(obj), -1, -1, 0);
+ }
+
+ /* x509_name_add_entry_by_txt */
+ int x509_name_add_entry_by_txt(X509_NAME *name, char *field, int type, char *bytes, int len, int loc, int set) {
+- return X509_NAME_add_entry_by_txt(name, field, type, bytes, len, loc, set);
++ return X509_NAME_add_entry_by_txt(name, field, type, (unsigned char *)bytes, len, loc, set);
+ }
+
+ PyObject *x509_name_get_der(X509_NAME *name)
+@@ -450,23 +457,23 @@
+ }
+
+ /* sk_X509_new_null() is a macro returning "STACK_OF(X509) *". */
+-STACK *sk_x509_new_null(void) {
+- return (STACK *)sk_X509_new_null();
++STACK_OF(X509) *sk_x509_new_null(void) {
++ return sk_X509_new_null();
+ }
+
+ /* sk_X509_free() is a macro. */
+-void sk_x509_free(STACK *stack) {
+- sk_X509_free((STACK_OF(X509) *)stack);
++void sk_x509_free(STACK_OF(X509) *stack) {
++ sk_X509_free(stack);
+ }
+
+ /* sk_X509_push() is a macro. */
+-int sk_x509_push(STACK *stack, X509 *x509) {
+- return sk_X509_push((STACK_OF(X509) *)stack, x509);
++int sk_x509_push(STACK_OF(X509) *stack, X509 *x509) {
++ return sk_X509_push(stack, x509);
+ }
+
+ /* sk_X509_pop() is a macro. */
+-X509 *sk_x509_pop(STACK *stack) {
+- return sk_X509_pop((STACK_OF(X509) *)stack);
++X509 *sk_x509_pop(STACK_OF(X509) *stack) {
++ return sk_X509_pop(stack);
+ }
+
+ int x509_store_load_locations(X509_STORE *store, const char *file) {
+@@ -493,21 +500,29 @@
+ return X509_REQ_set_version(x, version);
+ }
+
+-int x509_req_add_extensions(X509_REQ *req, STACK *exts) {
+- return X509_REQ_add_extensions(req, (STACK_OF(X509_EXTENSION) *)exts);
++int x509_req_add_extensions(X509_REQ *req, STACK_OF(X509_EXTENSION) *exts) {
++ return X509_REQ_add_extensions(req, exts);
+ }
+
+-X509_NAME_ENTRY *x509_name_entry_create_by_txt( X509_NAME_ENTRY **ne, char *field, int type, char *bytes, int len) {
+- return X509_NAME_ENTRY_create_by_txt( ne, field, type, bytes, len);
++X509_NAME_ENTRY *x509_name_entry_create_by_txt(X509_NAME_ENTRY **ne, char *field, int type, char *bytes, int len) {
++ return X509_NAME_ENTRY_create_by_txt( ne, field, type, (unsigned char *)bytes, len);
+ }
+
+-LHASH *
+-x509v3_lhash(){
+- return lh_new(NULL,NULL);
++#if OPENSSL_VERSION_NUMBER >= 0x10000000L
++LHASH_OF(CONF_VALUE)
++#else
++LHASH
++#endif
++*x509v3_lhash() {
++ return lh_new(NULL, NULL); /* Should probably be lh_CONF_VALUE_new but won't compile. */
+ }
+
+ X509V3_CTX *
+-x509v3_set_conf_lhash(LHASH * lhash){
++#if OPENSSL_VERSION_NUMBER >= 0x10000000L
++x509v3_set_conf_lhash(LHASH_OF(CONF_VALUE) * lhash) {
++#else
++x509v3_set_conf_lhash(LHASH * lhash) {
++#endif
+ X509V3_CTX * ctx;
+ if (!(ctx=(X509V3_CTX *)PyMem_Malloc(sizeof(X509V3_CTX)))) {
+ PyErr_SetString(PyExc_MemoryError, "x509v3_set_conf_lhash");
+@@ -517,11 +532,20 @@
+ return ctx;
+ }
+
+-X509_EXTENSION *x509v3_ext_conf(LHASH *conf, X509V3_CTX *ctx, char *name, char *value) {
++X509_EXTENSION *
++#if OPENSSL_VERSION_NUMBER >= 0x10000000L
++x509v3_ext_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx, char *name, char *value) {
++#else
++x509v3_ext_conf(LHASH *conf, X509V3_CTX *ctx, char *name, char *value) {
++#endif
+ X509_EXTENSION * ext = NULL;
+ ext = X509V3_EXT_conf(conf, ctx, name, value);
+ PyMem_Free(ctx);
++#if OPENSSL_VERSION_NUMBER >= 0x10000000L
++ lh_CONF_VALUE_free(conf);
++#else
+ lh_free(conf);
++#endif
+ return ext;
+ }
+
+@@ -543,33 +567,33 @@
+ }
+
+ /* sk_X509_EXTENSION_new_null is a macro. */
+-STACK *sk_x509_extension_new_null(void) {
+- return (STACK *)sk_X509_EXTENSION_new_null();
++STACK_OF(X509_EXTENSION) *sk_x509_extension_new_null(void) {
++ return sk_X509_EXTENSION_new_null();
+ }
+
+ /* sk_X509_EXTENSION_free() is a macro. */
+-void sk_x509_extension_free(STACK *stack) {
+- sk_X509_EXTENSION_free((STACK_OF(X509_EXTENSION) *)stack);
++void sk_x509_extension_free(STACK_OF(X509_EXTENSION) *stack) {
++ sk_X509_EXTENSION_free(stack);
+ }
+
+ /* sk_X509_EXTENSION_push() is a macro. */
+-int sk_x509_extension_push(STACK *stack, X509_EXTENSION *x509_ext) {
+- return sk_X509_EXTENSION_push((STACK_OF(X509_EXTENSION) *)stack, x509_ext);
++int sk_x509_extension_push(STACK_OF(X509_EXTENSION) *stack, X509_EXTENSION *x509_ext) {
++ return sk_X509_EXTENSION_push(stack, x509_ext);
+ }
+
+ /* sk_X509_EXTENSION_pop() is a macro. */
+-X509_EXTENSION *sk_x509_extension_pop(STACK *stack) {
+- return sk_X509_EXTENSION_pop((STACK_OF(X509_EXTENSION) *)stack);
++X509_EXTENSION *sk_x509_extension_pop(STACK_OF(X509_EXTENSION) *stack) {
++ return sk_X509_EXTENSION_pop(stack);
+ }
+
+ /* sk_X509_EXTENSION_num() is a macro. */
+-int sk_x509_extension_num(STACK *stack) {
+- return sk_X509_EXTENSION_num((STACK_OF(X509_EXTENSION) *)stack);
++int sk_x509_extension_num(STACK_OF(X509_EXTENSION) *stack) {
++ return sk_X509_EXTENSION_num(stack);
+ }
+
+ /* sk_X509_EXTENSION_value() is a macro. */
+-X509_EXTENSION *sk_x509_extension_value(STACK *stack, int i) {
+- return sk_X509_EXTENSION_value((STACK_OF(X509_EXTENSION) *)stack, i);
++X509_EXTENSION *sk_x509_extension_value(STACK_OF(X509_EXTENSION) *stack, int i) {
++ return sk_X509_EXTENSION_value(stack, i);
+ }
+
+ /* X509_STORE_CTX_get_app_data is a macro. */
+@@ -590,7 +614,7 @@
+ #define I2DTYPE int (*)()
+ #endif
+
+-STACK *
++STACK_OF(X509) *
+ make_stack_from_der_sequence(PyObject * pyEncodedString){
+ STACK_OF(X509) *certs;
+ Py_ssize_t encoded_string_len;
+@@ -606,7 +630,7 @@
+ return NULL;
+ }
+
+- certs = ASN1_seq_unpack((unsigned char *)encoded_string, encoded_string_len, (D2ITYPE)d2i_X509, (void(*)())X509_free );
++ certs = ASN1_seq_unpack_X509((unsigned char *)encoded_string, encoded_string_len, d2i_X509, X509_free );
+ if (!certs) {
+ PyErr_SetString(_x509_err, ERR_reason_error_string(ERR_get_error()));
+ return NULL;
+@@ -616,13 +640,13 @@
+ }
+
+ PyObject *
+-get_der_encoding_stack(STACK * stack){
++get_der_encoding_stack(STACK_OF(X509) *stack){
+ PyObject * encodedString;
+
+ unsigned char * encoding;
+ int len;
+
+- encoding = ASN1_seq_pack((STACK_OF(X509)*) stack, (I2DTYPE)i2d_X509, NULL, &len);
++ encoding = ASN1_seq_pack_X509(stack, i2d_X509, NULL, &len);
+ if (!encoding) {
+ PyErr_SetString(_x509_err, ERR_reason_error_string(ERR_get_error()));
+ return NULL;
+Index: SWIG/_aes.i
+===================================================================
+--- SWIG/_aes.i (revision 695)
++++ SWIG/_aes.i (working copy)
+@@ -76,7 +76,7 @@
+ AES_encrypt((const unsigned char *)in, out, key);
+ else
+ AES_decrypt((const unsigned char *)in, out, key);
+- return PyString_FromStringAndSize(out, outlen);
++ return PyString_FromStringAndSize((char*)out, outlen);
+ }
+
+ int AES_type_check(AES_KEY *key) {
+Index: SWIG/_util.i
+===================================================================
+--- SWIG/_util.i (revision 695)
++++ SWIG/_util.i (working copy)
+@@ -48,7 +48,7 @@
+ PyErr_SetString(_util_err, ERR_reason_error_string(ERR_get_error()));
+ return NULL;
+ }
+- obj = PyString_FromStringAndSize(ret, len);
++ obj = PyString_FromStringAndSize((char*)ret, len);
+ OPENSSL_free(ret);
+ return obj;
+ }
+Index: SWIG/_m2crypto.i
+===================================================================
+--- SWIG/_m2crypto.i (revision 695)
++++ SWIG/_m2crypto.i (working copy)
+@@ -38,6 +38,19 @@
+ #define CONST098
+ #endif
+
++/* Bring in STACK_OF macro definition */
++%include <openssl/safestack.h>
++
++/* Bring in LHASH_OF macro definition */
++/* XXX Can't include lhash.h where LHASH_OF is defined, because it includes
++ XXX stdio.h etc. which we fail to include. So we have to (re)define
++ XXX LHASH_OF here instead.
++%include <openssl/lhash.h>
++*/
++#if OPENSSL_VERSION_NUMBER >= 0x10000000L
++#define LHASH_OF(type) struct lhash_st_##type
++#endif
++
+ %include constraints.i
+ %include _threads.i
+ %include _lib.i
+Index: SWIG/_rand.i
+===================================================================
+--- SWIG/_rand.i (revision 695)
++++ SWIG/_rand.i (working copy)
+@@ -87,7 +87,7 @@
+ Py_INCREF(Py_None);
+ return Py_None;
+ } else {
+- PyTuple_SET_ITEM(tuple, 0, PyString_FromStringAndSize(blob, n));
++ PyTuple_SET_ITEM(tuple, 0, PyString_FromStringAndSize((char*)blob, n));
+ PyMem_Free(blob);
+ PyTuple_SET_ITEM(tuple, 1, PyInt_FromLong((long)ret));
+ return tuple;
+Index: SWIG/_pkcs7.i
+===================================================================
+--- SWIG/_pkcs7.i (revision 695)
++++ SWIG/_pkcs7.i (working copy)
+@@ -12,7 +12,7 @@
+ %apply Pointer NONNULL { EVP_CIPHER * };
+ %apply Pointer NONNULL { EVP_PKEY * };
+ %apply Pointer NONNULL { PKCS7 * };
+-%apply Pointer NONNULL { STACK * };
++%apply Pointer NONNULL { STACK_OF(X509) * };
+ %apply Pointer NONNULL { X509 * };
+
+ %rename(pkcs7_new) PKCS7_new;
+@@ -54,8 +54,8 @@
+
+ %threadallow pkcs7_encrypt;
+ %inline %{
+-PKCS7 *pkcs7_encrypt(STACK *stack, BIO *bio, EVP_CIPHER *cipher, int flags) {
+- return PKCS7_encrypt((STACK_OF(X509) *)stack, bio, cipher, flags);
++PKCS7 *pkcs7_encrypt(STACK_OF(X509) *stack, BIO *bio, EVP_CIPHER *cipher, int flags) {
++ return PKCS7_encrypt(stack, bio, cipher, flags);
+ }
+
+ PyObject *pkcs7_decrypt(PKCS7 *pkcs7, EVP_PKEY *pkey, X509 *cert, int flags) {
+@@ -96,14 +96,14 @@
+
+ %threadallow pkcs7_sign1;
+ %inline %{
+-PKCS7 *pkcs7_sign1(X509 *x509, EVP_PKEY *pkey, STACK *stack, BIO *bio, int flags) {
+- return PKCS7_sign(x509, pkey, (STACK_OF(X509) *)stack, bio, flags);
++PKCS7 *pkcs7_sign1(X509 *x509, EVP_PKEY *pkey, STACK_OF(X509) *stack, BIO *bio, int flags) {
++ return PKCS7_sign(x509, pkey, stack, bio, flags);
+ }
+ %}
+
+ %threadallow pkcs7_verify1;
+ %inline %{
+-PyObject *pkcs7_verify1(PKCS7 *pkcs7, STACK *stack, X509_STORE *store, BIO *data, int flags) {
++PyObject *pkcs7_verify1(PKCS7 *pkcs7, STACK_OF(X509) *stack, X509_STORE *store, BIO *data, int flags) {
+ int outlen;
+ char *outbuf;
+ BIO *bio;
+@@ -113,7 +113,7 @@
+ PyErr_SetString(PyExc_MemoryError, "pkcs7_verify1");
+ return NULL;
+ }
+- if (!PKCS7_verify(pkcs7, (STACK_OF(X509) *)stack, store, data, bio, flags)) {
++ if (!PKCS7_verify(pkcs7, stack, store, data, bio, flags)) {
+ PyErr_SetString(_pkcs7_err, ERR_reason_error_string(ERR_get_error()));
+ BIO_free(bio);
+ return NULL;
+@@ -131,7 +131,7 @@
+ return ret;
+ }
+
+-PyObject *pkcs7_verify0(PKCS7 *pkcs7, STACK *stack, X509_STORE *store, int flags) {
++PyObject *pkcs7_verify0(PKCS7 *pkcs7, STACK_OF(X509) *stack, X509_STORE *store, int flags) {
+ return pkcs7_verify1(pkcs7, stack, store, NULL, flags);
+ }
+ %}
+@@ -229,7 +229,7 @@
+ }
+
+ /* return STACK_OF(X509)* */
+-STACK *pkcs7_get0_signers(PKCS7 *p7, STACK *certs, int flags) {
++STACK_OF(X509) *pkcs7_get0_signers(PKCS7 *p7, STACK_OF(X509) *certs, int flags) {
+ return PKCS7_get0_signers(p7, certs, flags);
+ }
+
diff --git a/extra/python-markupsafe/PKGBUILD b/extra/python-markupsafe/PKGBUILD
new file mode 100644
index 000000000..4fba8e363
--- /dev/null
+++ b/extra/python-markupsafe/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id: PKGBUILD 113450 2011-03-08 17:36:15Z ibiru $
+# Maintainer : Ionut Biru <ibiru@archlinux.org>
+# Contributor: Alex Anthony <alex.anthony28991@gmail.com>
+
+pkgname=python-markupsafe
+pkgver=0.12
+pkgrel=0
+pkgdesc="Implements a XML/HTML/XHTML Markup safe string for Python"
+arch=('i686' 'x86_64')
+url="http://pypi.python.org/pypi/MarkupSafe"
+license=('custom')
+depends=('python2')
+makedepends=('setuptools')
+source=(http://pypi.python.org/packages/source/M/MarkupSafe/MarkupSafe-${pkgver}.tar.gz)
+md5sums=('edd4b6950f6d4ddc6e23fa322f8f0f53')
+
+build() {
+ cd ${srcdir}/MarkupSafe-${pkgver}
+ python2 setup.py install --root=${pkgdir} --optimize=1
+
+ install -D -m644 LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+}
diff --git a/extra/python-notify/PKGBUILD b/extra/python-notify/PKGBUILD
new file mode 100644
index 000000000..efb98fd88
--- /dev/null
+++ b/extra/python-notify/PKGBUILD
@@ -0,0 +1,43 @@
+# $Id: PKGBUILD 113112 2011-03-08 08:49:12Z ibiru $
+# Maintainer: Angel Velasquez <angvp@archlinux.org>
+# Contributor: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Roman Kyrylych <Roman.Kyrylych@gmail.com>
+# Contributor: Mario Danic <mario.danic@gmail.com>
+# Contributor: Daniel J Griffiths <ghost1227@archlinux.us>
+pkgname=python-notify
+pkgver=0.1.1
+pkgrel=10
+pkgdesc="Python bindings for libnotify"
+arch=('i686' 'x86_64')
+url="http://www.galago-project.org/"
+license=('GPL')
+depends=('pygtk>=2.22.0' 'libnotify>=0.7.1')
+makedepends=('pkgconfig' 'python2')
+options=(!libtool)
+source=(http://www.galago-project.org/files/releases/source/notify-python/notify-python-${pkgver}.tar.gz
+ libnotify07.patch
+ notify-python-0.1.1-fix-GTK-symbols.patch)
+md5sums=('8f0ef0939cc8edd2efd896ce5ba80cf4'
+ 'b40c4542575d5aef559908fe60a21634'
+ 'c6922028da5951e69a6a0167bdb4461c')
+
+build() {
+ cd ${srcdir}/notify-python-${pkgver}
+
+ patch -Np1 -i ${srcdir}/libnotify07.patch
+ patch -Np1 -i ${srcdir}/notify-python-0.1.1-fix-GTK-symbols.patch
+
+ ./configure --prefix=/usr
+
+ # WARNING - we touch src/pynotify.override in build because upstream did not rebuild pynotify.c
+ # from the input definitions, this forces pynotify.c to be regenerated, at some point this can be removed
+ touch src/pynotify.override
+
+ make clean
+ make
+}
+
+package() {
+ cd ${srcdir}/notify-python-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/python-notify/libnotify07.patch b/extra/python-notify/libnotify07.patch
new file mode 100644
index 000000000..289573d50
--- /dev/null
+++ b/extra/python-notify/libnotify07.patch
@@ -0,0 +1,36 @@
+diff -up notify-python-0.1.1/src/pynotify.defs.notify070 notify-python-0.1.1/src/pynotify.defs
+--- notify-python-0.1.1/src/pynotify.defs.notify070 2010-11-02 17:11:14.928179237 -0400
++++ notify-python-0.1.1/src/pynotify.defs 2010-11-02 17:11:51.153180231 -0400
+@@ -38,7 +38,6 @@
+ '("const-gchar*" "summary")
+ '("const-gchar*" "message" (null-ok) (default "NULL"))
+ '("const-gchar*" "icon" (null-ok) (default "NULL"))
+- '("GtkWidget*" "attach" (null-ok) (default "NULL"))
+ )
+ )
+
+@@ -53,24 +52,6 @@
+ )
+ )
+
+-(define-method attach_to_widget
+- (of-object "NotifyNotification")
+- (c-name "notify_notification_attach_to_widget")
+- (return-type "none")
+- (parameters
+- '("GtkWidget*" "attach")
+- )
+-)
+-
+-(define-method attach_to_status_icon
+- (of-object "NotifyNotification")
+- (c-name "notify_notification_attach_to_status_icon")
+- (return-type "none")
+- (parameters
+- '("GtkStatusIcon*" "attach")
+- )
+-)
+-
+ (define-method show
+ (of-object "NotifyNotification")
+ (c-name "notify_notification_show")
diff --git a/extra/python-notify/notify-python-0.1.1-fix-GTK-symbols.patch b/extra/python-notify/notify-python-0.1.1-fix-GTK-symbols.patch
new file mode 100644
index 000000000..f985c0136
--- /dev/null
+++ b/extra/python-notify/notify-python-0.1.1-fix-GTK-symbols.patch
@@ -0,0 +1,25 @@
+diff -up notify-python-0.1.1/src/__init__.py.BAD notify-python-0.1.1/src/__init__.py
+--- notify-python-0.1.1/src/__init__.py.BAD 2010-08-31 09:04:45.353844005 -0400
++++ notify-python-0.1.1/src/__init__.py 2010-08-31 09:04:49.281844300 -0400
+@@ -1 +1,21 @@
++"""
++Fedora's libnotify.so is not linked against GTK2 or GTK3. The idea
++was to support being linked against different parallel-installable
++GTK stacks.
++
++Unfortunately, python needs to jump through some special hoops in order
++to share symbols with extension modules, specifically, pygtk, which does
++link against GTK2.
++
++Without using sys.setdlopenflags(sys.getdlopenflags() | ctypes.RTLD_GLOBAL),
++the result is:
++libnotify-WARNING **: Missing symbol 'gdk_screen_make_display_name'
++
++Thanks to David Malcolm for figuring out the workaround.
++"""
++import ctypes
++import sys
++sys.setdlopenflags(sys.getdlopenflags() | ctypes.RTLD_GLOBAL)
++import gtk
++
+ from _pynotify import *
diff --git a/extra/python-numpy/PKGBUILD b/extra/python-numpy/PKGBUILD
new file mode 100755
index 000000000..f7aaa3edf
--- /dev/null
+++ b/extra/python-numpy/PKGBUILD
@@ -0,0 +1,61 @@
+# $Id: PKGBUILD 110670 2011-02-21 12:18:28Z stephane $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Douglas Soares de Andrade <dsa@aur.archlinux.org>
+# Contributor: Angel 'angvp' Velasquez <angvp[at]archlinux.com.ve>
+
+pkgbase=python-numpy
+pkgname=('python2-numpy' 'python3-numpy')
+pkgver=1.5.1
+pkgrel=2
+pkgdesc="Scientific tools for Python"
+arch=('i686' 'x86_64')
+license=('custom')
+url="http://numpy.scipy.org/"
+makedepends=('lapack' 'python' 'python2' 'python-distribute' 'python2-distribute' 'gcc-fortran' 'python-nose')
+source=(http://downloads.sourceforge.net/numpy/numpy-${pkgver}.tar.gz)
+md5sums=('376ef150df41b5353944ab742145352d')
+
+build() {
+ cd "${srcdir}"
+ cp -a numpy-${pkgver} numpy-py2-${pkgver}
+
+ export Atlas=None
+ export LDFLAGS="$LDFLAGS -shared"
+
+ echo "Building Python2"
+ cd "${srcdir}/numpy-py2-${pkgver}"
+ python2 setup.py config_fc --fcompiler=gnu95 build
+
+ echo "Building Python3"
+ cd "${srcdir}/numpy-${pkgver}"
+ python setup.py config_fc --fcompiler=gnu95 build
+}
+
+package_python2-numpy() {
+ depends=('lapack' 'python2')
+ provides=("python-numpy=${pkgver}")
+ replaces=('python-numpy')
+ conflicts=('python-numpy')
+ optdepends=('python-nose: testsuite')
+
+ cd "${srcdir}/numpy-py2-${pkgver}"
+ python2 setup.py config_fc --fcompiler=gnu95 install --prefix=/usr --root="${pkgdir}" --optimize=1
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/python2-numpy"
+ install -m644 LICENSE.txt "${pkgdir}/usr/share/licenses/python2-numpy/"
+
+ sed -i -e "s|#![ ]*/usr/bin/python$|#!/usr/bin/python2|" \
+ -e "s|#![ ]*/usr/bin/env python$|#!/usr/bin/env python2|" \
+ -e "s|#![ ]*/bin/env python$|#!/usr/bin/env python2|" \
+ $(find ${pkgdir} -name '*.py')
+}
+
+package_python3-numpy() {
+ depends=('lapack' 'python')
+
+ cd "${srcdir}/numpy-${pkgver}"
+ python setup.py config_fc --fcompiler=gnu95 install --prefix=/usr --root="${pkgdir}" --optimize=1
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/python3-numpy"
+ install -m644 LICENSE.txt "${pkgdir}/usr/share/licenses/python3-numpy/"
+}
diff --git a/extra/python-pygame/ChangeLog b/extra/python-pygame/ChangeLog
new file mode 100644
index 000000000..ddfd90fe8
--- /dev/null
+++ b/extra/python-pygame/ChangeLog
@@ -0,0 +1,30 @@
+2010-08-24 Eric Belanger <eric@archlinux.org>
+
+ * Rebuilt for python2
+
+2009-08-06 Douglas Soares de Andrade <douglas@archlinux.org>
+
+ * Updated to: 1.9.1
+
+2009-08-03 Douglas Soares de Andrade <douglas@archlinux.org>
+
+ * Adding the examples folder
+
+2009-08-01 Douglas Soares de Andrade <douglas@archlinux.org>
+
+ * Updated for x86_64: 1.9.0
+
+2008-08-06 Eric Belanger <eric@archlinux.org>
+
+ * python-pygame 1.8.1-2
+ * Fixed file permissions (close FS#11082)
+
+2008-07-31 Douglas Soares de Andrade <douglas@archlinux.org>
+
+ * Updated for i686: 1.8.1
+
+2008-03-31 Eric Belanger <eric@archlinux.org>
+
+ * python-pygame 1.8.0-1
+ * Upstream update
+ * Added ChangeLog
diff --git a/extra/python-pygame/PKGBUILD b/extra/python-pygame/PKGBUILD
new file mode 100644
index 000000000..a3447b7ce
--- /dev/null
+++ b/extra/python-pygame/PKGBUILD
@@ -0,0 +1,38 @@
+# $Id: PKGBUILD 88496 2010-08-24 05:39:06Z eric $
+# Contributor: Douglas Soares de Andrade <douglas@archlinux.org>
+# Contributor: Eric Belanger <eric@archlinux.org>
+# Contributor: john(?)
+# Maintainer: Daniel J Griffiths <ghost1227@archlinux.us>
+
+pkgname=python-pygame
+pkgver=1.9.1
+pkgrel=3
+pkgdesc="Python game library"
+arch=('i686' 'x86_64')
+url="http://www.pygame.org/"
+license=('LGPL')
+depends=('python2' 'sdl_mixer' 'libvorbis' 'sdl_ttf' 'sdl_image' 'smpeg')
+replaces=('pygame')
+provides=('pygame')
+changelog=ChangeLog
+source=(http://pygame.org/ftp/pygame-${pkgver}release.tar.gz 'config.patch')
+md5sums=('1c4cdc708d17c8250a2d78ef997222fc' 'aaa668f3cd710d8604114501ea6a6f48')
+sha1sums=('a45aeb0623e36ae7a1707b5f41ee6274f72ca4fa' '285815e28705d5a2aea53c9d952d35fddf10dd13')
+
+build() {
+ cd "${srcdir}/pygame-${pkgver}release"
+ patch -Np0 -i "${srcdir}/config.patch"
+ python2 config.py -auto
+}
+
+package() {
+ cd "${srcdir}/pygame-${pkgver}release"
+ python2 setup.py install --root="${pkgdir}" --prefix=/usr
+
+ # Copying the examples and tests
+ cp -R examples lib/* "${pkgdir}/usr/lib/python2.7/site-packages/pygame"
+ cp -R test/* "${pkgdir}/usr/lib/python2.7/site-packages/pygame/tests"
+
+ # Fixing permissions
+ chmod 644 "${pkgdir}"/usr/include/python2.7/pygame/*
+}
diff --git a/extra/python-pygame/config.patch b/extra/python-pygame/config.patch
new file mode 100644
index 000000000..b3dab162c
--- /dev/null
+++ b/extra/python-pygame/config.patch
@@ -0,0 +1,26 @@
+Index: config_unix.py
+===================================================================
+--- config_unix.py (revision 2567)
++++ config_unix.py (working copy)
+@@ -174,7 +174,7 @@
+
+ for d in DEPS[1:]:
+ if not d.found:
+- if not confirm("""
++ if "-auto" not in sys.argv and not confirm("""
+ Warning, some of the pygame dependencies were not found. Pygame can still
+ compile and install, but games that depend on those missing dependencies
+ will not run. Would you like to continue the configuration?"""):
+Index: config_msys.py
+===================================================================
+--- config_msys.py (revision 2567)
++++ config_msys.py (working copy)
+@@ -283,7 +283,7 @@
+
+ for d in DEPS[1:]:
+ if not d.found:
+- if not confirm("""
++ if "-auto" not in sys.argv and not confirm("""
+ Warning, some of the pygame dependencies were not found. Pygame can still
+ compile and install, but games that depend on those missing dependencies
+ will not run. Would you like to continue the configuration?"""):
diff --git a/extra/python-pyspi/PKGBUILD b/extra/python-pyspi/PKGBUILD
new file mode 100644
index 000000000..ef5c18be6
--- /dev/null
+++ b/extra/python-pyspi/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 89911 2010-09-04 17:41:32Z remy $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: William Rea <sillywilly@gmail.com>
+pkgname=python-pyspi
+pkgver=0.6.1
+pkgrel=4
+pkgdesc="Python AT-SPI bindings"
+arch=('i686' 'x86_64')
+url="http://people.redhat.com/zcerza/dogtail"
+license=('LGPL')
+depends=('python2' 'at-spi>=1.7.12')
+makedepends=('pyrex')
+conflicts=('pyspi')
+provides=('pyspi')
+replaces=('pyspi')
+source=(http://dlc.sun.com/osol/jds/downloads/sources/pyspi-${pkgver}.tar.gz
+ pyspi-build.patch)
+md5sums=('def336bd566ea688a06ec03db7ccf1f4'
+ '721f74cbae653a258c00b83acf7dd1da')
+
+build() {
+ cd ${srcdir}/pyspi-${pkgver}
+ patch -Np1 -i ${srcdir}/pyspi-build.patch
+ # Pyrex tells us to use __cinit__ instead of __new__
+ sed -i 's/__new__/__cinit__/' pyspi.pyx
+ python2 setup.py install --root=${pkgdir}
+}
diff --git a/extra/python-pyspi/pyspi-build.patch b/extra/python-pyspi/pyspi-build.patch
new file mode 100644
index 000000000..3d12c5ed5
--- /dev/null
+++ b/extra/python-pyspi/pyspi-build.patch
@@ -0,0 +1,1693 @@
+diff -Naur pyspi-0.6.1-old/cspi.pxd pyspi-0.6.1/cspi.pxd
+--- pyspi-0.6.1-old/cspi.pxd 2006-08-04 06:27:10.000000000 +1000
++++ pyspi-0.6.1/cspi.pxd 2009-05-09 15:24:31.000000000 +1000
+@@ -14,9 +14,7 @@
+
+ ctypedef struct AccessibleTextRange
+ ctypedef struct AccessibleKeySet
+- ctypedef enum SPIBoolean:
+- FALSE = 0,
+- TRUE
++ ctypedef unsigned int SPIBoolean
+
+ ctypedef struct AccessibleEvent:
+ char *type
+diff -Naur pyspi-0.6.1-old/pyspi.pyx pyspi-0.6.1/pyspi.pyx
+--- pyspi-0.6.1-old/pyspi.pyx 2006-10-03 02:46:41.000000000 +1000
++++ pyspi-0.6.1/pyspi.pyx 2009-05-09 15:24:31.000000000 +1000
+@@ -25,9 +25,15 @@
+ cdef class Event (EventBase)
+ cdef class DeviceEvent
+
+-ctypedef enum bool:
++ctypedef unsigned int bool
++
++import __builtin__
++try:
++ False = __builtin__.False
++ True = __builtin__.True
++except AttributeError:
+ False = 0
+- True
++ True = 1
+
+ # SPIExceptionCode values:
+ (SPI_EXCEPTION_UNSPECIFIED, SPI_EXCEPTION_DISCONNECT, SPI_EXCEPTION_NO_IMPL, SPI_EXCEPTION_IO, SPI_EXCEPTION_BAD_DATA)=range(5)
+@@ -731,7 +737,7 @@
+ Wrapper around the low-level cspi.AccessibleComponent_ functions,
+ giving an OO-style API.
+ """
+- def getExtents (self, type=0):
++ def getExtents (self, key_type=0):
+ """
+ Wraps cspi.AccessibleComponent_getExtents, returning an
+ (x,y,w,h) tuple.
+@@ -741,7 +747,7 @@
+ cspi.AccessibleComponent_getExtents (self.__item, &x, &y, &w, &h, type)
+ return (x, y, w, h)
+
+- def getPosition (self, type = 0):
++ def getPosition (self, key_type = 0):
+ """
+ Wraps cspi.AccessibleComponent_getPosition, returning an
+ (x,y) tuple.
+@@ -991,11 +997,11 @@
+ Wraps cspi.AccessibleHyperlink_getObject
+ """
+ self.__checkSelf ()
+- cdef Accessible object
+- object = Accessible ()
+- object.__setItem (cspi.AccessibleHyperlink_getObject (self.__item, i))
+- object.__checkSelf ()
+- return object
++ cdef Accessible obj
++ obj = Accessible ()
++ obj.__setItem (cspi.AccessibleHyperlink_getObject (self.__item, i))
++ obj.__checkSelf ()
++ return obj
+
+ def getURI (self, i):
+ """
+@@ -1032,7 +1038,7 @@
+ cspi.AccessibleImage_getImageSize(self.__item, &w, &h);
+ return [w, h]
+
+- def getImagePosition (self, type=0):
++ def getImagePosition (self, key_type=0):
+ """
+ Wraps cspi.AccessibleImage_getImagePosition, returning a (x,y)
+ pair
+@@ -1042,7 +1048,7 @@
+ cspi.AccessibleImage_getImagePosition(self.__item, &x, &y, type)
+ return [x, y]
+
+- def getImageExtents (self, type=0):
++ def getImageExtents (self, key_type=0):
+ """
+ Wraps cspi.AccessibleImage_getImageExtents, returning a
+ (x,y,w,h) tuple
+@@ -1551,7 +1557,7 @@
+ cdef cspi.AccessibleDeviceListener *__item
+ cdef public object modMasks
+
+- def __init__ (self, callback, eventMask = cspi.SPI_KEY_PRESSED | cspi.SPI_KEY_RELEASED):
++ def __init__ (self, callback, eventMask = <int> cspi.SPI_KEY_PRESSED | <int> cspi.SPI_KEY_RELEASED):
+ """
+ Registers a python callback function to be called.
+
+diff -Naur pyspi-0.6.1-old/pyspi.pyx.orig pyspi-0.6.1/pyspi.pyx.orig
+--- pyspi-0.6.1-old/pyspi.pyx.orig 1970-01-01 10:00:00.000000000 +1000
++++ pyspi-0.6.1/pyspi.pyx.orig 2006-10-03 02:46:41.000000000 +1000
+@@ -0,0 +1,1592 @@
++# Authors:
++# Zack Cerza <zcerza@redhat.com>
++# Chris Lee <clee@redhat.com>
++# Lawrence Lim <llim@redhat.com>
++# David Malcolm <dmalcolm@redhat.com>
++
++cdef class Registry
++
++cdef class Base
++cdef class EventBase
++cdef class StateSet
++cdef class Accessible (Base)
++cdef class Desktop (Accessible)
++cdef class Application (Accessible)
++cdef class Component (Accessible)
++cdef class Action (Base)
++cdef class Text (Base)
++cdef class EditableText (Text)
++cdef class Hypertext (Text)
++cdef class Hyperlink (Base)
++cdef class Image (Base)
++cdef class Value (Base)
++cdef class Selection (Base)
++cdef class Table (Base)
++cdef class Event (EventBase)
++cdef class DeviceEvent
++
++ctypedef enum bool:
++ False = 0
++ True
++
++# SPIExceptionCode values:
++(SPI_EXCEPTION_UNSPECIFIED, SPI_EXCEPTION_DISCONNECT, SPI_EXCEPTION_NO_IMPL, SPI_EXCEPTION_IO, SPI_EXCEPTION_BAD_DATA)=range(5)
++
++# SPIExceptionType values:
++(SPI_EXCEPTION_SOURCE_UNSPECIFIED, SPI_EXCEPTION_SOURCE_ACCESSIBLE, SPI_EXCEPTION_SOURCE_REGISTRY, SPI_EXCEPTION_SOURCE_DEVICE)=range(4)
++
++# Accessible roles
++(SPI_ROLE_INVALID, SPI_ROLE_ACCEL_LABEL, SPI_ROLE_ALERT, SPI_ROLE_ANIMATION, SPI_ROLE_ARROW, SPI_ROLE_CALENDAR, SPI_ROLE_CANVAS, SPI_ROLE_CHECK_BOX, SPI_ROLE_CHECK_MENU_ITEM, SPI_ROLE_COLOR_CHOOSER, SPI_ROLE_COLUMN_HEADER, SPI_ROLE_COMBO_BOX, SPI_ROLE_DATE_EDITOR, SPI_ROLE_DESKTOP_ICON, SPI_ROLE_DESKTOP_FRAME, SPI_ROLE_DIAL, SPI_ROLE_DIALOG, SPI_ROLE_DIRECTORY_PANE, SPI_ROLE_DRAWING_AREA, SPI_ROLE_FILE_CHOOSER, SPI_ROLE_FILLER, SPI_ROLE_FONT_CHOOSER, SPI_ROLE_FRAME, SPI_ROLE_GLASS_PANE, SPI_ROLE_HTML_CONTAINER, SPI_ROLE_ICON, SPI_ROLE_IMAGE, SPI_ROLE_INTERNAL_FRAME, SPI_ROLE_LABEL, SPI_ROLE_LAYERED_PANE, SPI_ROLE_LIST, SPI_ROLE_LIST_ITEM, SPI_ROLE_MENU, SPI_ROLE_MENU_BAR, SPI_ROLE_MENU_ITEM, SPI_ROLE_OPTION_PANE, SPI_ROLE_PAGE_TAB, SPI_ROLE_PAGE_TAB_LIST, SPI_ROLE_PANEL, SPI_ROLE_PASSWORD_TEXT, SPI_ROLE_POPUP_MENU, SPI_ROLE_PROGRESS_BAR, SPI_ROLE_PUSH_BUTTON, SPI_ROLE_RADIO_BUTTON, SPI_ROLE_RADIO_MENU_ITEM, SPI_ROLE_ROOT_PANE, SPI_ROLE_ROW_HEADER, SPI_ROLE_SCROLL_BAR, SPI_ROLE_SCROLL_PANE, SPI_ROLE_SEPARATOR, SPI_ROLE_SLIDER, SPI_ROLE_SPIN_BUTTON, SPI_ROLE_SPLIT_PANE, SPI_ROLE_STATUS_BAR, SPI_ROLE_TABLE, SPI_ROLE_TABLE_CELL, SPI_ROLE_TABLE_COLUMN_HEADER, SPI_ROLE_TABLE_ROW_HEADER, SPI_ROLE_TEAROFF_MENU_ITEM, SPI_ROLE_TERMINAL, SPI_ROLE_TEXT, SPI_ROLE_TOGGLE_BUTTON, SPI_ROLE_TOOL_BAR, SPI_ROLE_TOOL_TIP, SPI_ROLE_TREE, SPI_ROLE_TREE_TABLE, SPI_ROLE_UNKNOWN, SPI_ROLE_VIEWPORT, SPI_ROLE_WINDOW, SPI_ROLE_EXTENDED, SPI_ROLE_HEADER, SPI_ROLE_FOOTER, SPI_ROLE_PARAGRAPH, SPI_ROLE_RULER, SPI_ROLE_APPLICATION, SPI_ROLE_AUTOCOMPLETE, SPI_ROLE_EDITBAR, SPI_ROLE_EMBEDDED, SPI_ROLE_LAST_DEFINED)=range(79)
++
++# Accessible states
++(SPI_STATE_INVALID, SPI_STATE_ACTIVE, SPI_STATE_ARMED, SPI_STATE_BUSY, SPI_STATE_CHECKED, SPI_STATE_COLLAPSED, SPI_STATE_DEFUNCT, SPI_STATE_EDITABLE, SPI_STATE_ENABLED, SPI_STATE_EXPANDABLE, SPI_STATE_EXPANDED, SPI_STATE_FOCUSABLE, SPI_STATE_FOCUSED, SPI_STATE_HORIZONTAL, SPI_STATE_ICONIFIED, SPI_STATE_MODAL, SPI_STATE_MULTI_LINE, SPI_STATE_MULTISELECTABLE, SPI_STATE_OPAQUE, SPI_STATE_PRESSED, SPI_STATE_RESIZABLE, SPI_STATE_SELECTABLE, SPI_STATE_SELECTED, SPI_STATE_SENSITIVE, SPI_STATE_SHOWING, SPI_STATE_SINGLE_LINE, SPI_STATE_STALE, SPI_STATE_TRANSIENT, SPI_STATE_VERTICAL, SPI_STATE_VISIBLE, SPI_STATE_MANAGES_DESCENDANTS, SPI_STATE_INDETERMINATE) = range(32);
++
++# Accessible relation types
++(SPI_RELATION_NULL, SPI_RELATION_LABEL_FOR, SPI_RELATION_LABELED_BY, SPI_RELATION_CONTROLLER_FOR, SPI_RELATION_CONTROLLED_BY, SPI_RELATION_MEMBER_OF, SPI_RELATION_NODE_CHILD_OF, SPI_RELATION_EXTENDED, SPI_RELATION_FLOWS_TO, SPI_RELATION_FLOWS_FROM, SPI_RELATION_SUBWINDOW_OF, SPI_RELATION_EMBEDS, SPI_RELATION_EMBEDDED_BY, SPI_RELATION_POPUP_FOR, SPI_RELATION_LAST_DEFINED) = range (15);
++
++# AccessibleComponent layers
++(SPI_LAYER_INVALID, SPI_LAYER_BACKGROUND, SPI_LAYER_CANVAS, SPI_LAYER_WIDGET, SPI_LAYER_MDI, SPI_LAYER_POPUP, SPI_LAYER_OVERLAY, SPI_LAYER_WINDOW, SPI_LAYER_LAST_DEFINED) = range(9)
++
++#AccessibleKeySynthType
++(SPI_KEY_PRESS, SPI_KEY_RELEASE, SPI_KEY_PRESSRELEASE, SPI_KEY_SYM, SPI_KEY_STRING) = range(5)
++
++# AccessibleKeyListenerSyncType
++(SPI_KEYLISTENER_NOSYNC, SPI_KEYLISTENER_SYNCHRONOUS, SPI_KEYLISTENER_CANCONSUME, SPI_KEYLISTENER_ALL_WINDOWS) = range(4)
++
++# AccessibleDeviceEventType
++SPI_KEY_PRESSED = 1<<0
++SPI_KEY_RELEASED = 1<<1
++SPI_BUTTON_PRESSED = 1<<2
++SPI_BUTTON_RELEASED = 1<<3
++
++cdef cspi.AccessibleKeySet *SPI_KEYSET_ALL_KEYS
++SPI_KEYSET_ALL_KEYS = NULL
++
++Accessibility_MODIFIER_SHIFT = 1 << 0
++Accessibility_MODIFIER_SHIFTLOCK = 1 << 1
++Accessibility_MODIFIER_CONTROL = 1 << 2
++Accessibility_MODIFIER_ALT = 1 << 3
++Accessibility_MODIFIER_META = 1 << 4
++Accessibility_MODIFIER_META2 = 1 << 5
++Accessibility_MODIFIER_META3 = 1 << 6
++Accessibility_MODIFIER_NUMLOCK = 1 << 7
++
++
++cdef object string(char * string):
++ cdef object pyString
++ pyString = string
++ cspi.SPI_freeString(string)
++ return pyString
++
++import os
++class X11Exception(Exception):
++ def __init__(self, display = os.environ.get('DISPLAY', None)):
++ self.display = display
++ def __str__(self):
++ msg = "Cannot open display"
++ if self.display: return msg + ': ' + self.display
++ else: return msg
++
++class AtspiException(Exception):
++ """
++ Exceptions raised when calls to the AT-SPI C bindings return FALSE to
++ indicate failure.
++ """
++ def __init__(self, message):
++ self.message = message
++
++ def __str__(self):
++ return "AtspiException: %s"%self.message
++
++class SpiException(Exception):
++ """
++ Exceptions to be raised in response to an installed
++ SPIExceptionHandler, corresponding to a SPIException. These appear to
++ be short-lived structs, so we gather all applicable data immediately
++ """
++ def __init__(self, is_fatal, sourceType, exceptionCode, description):
++ # print "got to __init__"
++ self.fatal = is_fatal
++ self.sourceType = sourceType
++ self.exceptionCode = exceptionCode
++ self.description = description
++
++ # print "leaving __init__"
++ # print self.fatal
++ # print self.sourceType
++ # print self.exceptionCode
++ # print self.description
++
++ def __str__(self):
++ if self.fatal:
++ fatalStr = "Fatal"
++ else:
++ fatalStr = "Non-fatal"
++ result = '%s SPIException: type:%s source:%s "%s"'%(fatalStr, self.sourceType, self.exceptionCode, self.description)
++ return result
++
++cdef make_exception(cspi.SPIException *err, cspi.SPIBoolean is_fatal):
++ # Don't attempt to use SPIAccessibleException_getSource; this is error
++ # handling code, we don't want to introduce further complications
++ return SpiException(is_fatal,
++ cspi.SPIException_getSourceType (err),
++ cspi.SPIException_getExceptionCode (err),
++ cspi.SPIException_getDescription (err))
++
++
++def event_main():
++ cspi.SPI_event_main()
++
++def event_quit():
++ cspi.SPI_event_quit()
++
++cdef cspi.SPIBoolean exception_handler (cspi.SPIException *err, cspi.SPIBoolean is_fatal) except *:
++ # print "got exception!!!"
++ e = make_exception(err, is_fatal)
++ raise e
++
++# at-spi-<version>/cpsi.h contains:
++# typedef SPIBoolean (*SPIExceptionHandler) (SPIException *err, SPIBoolean is_fatal);
++# and
++# SPIBoolean SPI_exceptionHandlerPush (SPIExceptionHandler *handler);
++# There's thus an extra unnecessary level of indirection.
++# We have to jump through the following hoops to get pyrex to deal with this:
++cdef cspi.SPIExceptionHandler exception_handler_as_type
++cdef cspi.SPIExceptionHandler* exception_handler_ptr
++exception_handler_as_type = exception_handler
++exception_handler_ptr = &exception_handler_as_type
++
++global_exception = None
++
++cdef class Registry:
++ def __init__ (self):
++ cdef Xlib.Display *display
++ display = Xlib.XOpenDisplay(NULL)
++ if display == NULL:
++ raise X11Exception
++ else:
++ Xlib.XCloseDisplay(display)
++
++ result = cspi.SPI_init ()
++ #if result!=0:
++ # raise AtspiException("SPI_init: exit code %s" % str(result))
++
++ result = cspi.SPI_exceptionHandlerPush (exception_handler_ptr)
++ if not result:
++ raise AtspiException("Unable to install SPI exception handler")
++
++ def __dealloc (self):
++ result = cspi.SPI_exit ()
++ if result!=0:
++ raise AtspiException("SPI_init: exit code %s" % str(result))
++
++ def getDesktopCount (self):
++ return cspi.SPI_getDesktopCount()
++
++ def getDesktop (self, index = 0):
++ cdef Desktop desktop
++ desktop = Desktop ()
++ if not desktop.__setItem (cspi.SPI_getDesktop (index)):
++ return False
++ return desktop
++
++ def getDesktopList (self):
++ # Using the bonobo.activation bindings, getDesktopList() returns a
++ # Python list of Desktop objects. The C bindings seem to do it differently,
++ # and Pyrex doesn't like that method. So we're re-implementing the function
++ # using getDesktopCount() and getDesktop() to work around that.
++ # Yay for Zack!
++ #
++ # -Zack
++ cdef Desktop desktop
++ desktops = []
++ desktop = Desktop ()
++ for i in xrange (cspi.SPI_getDesktopCount ()):
++ desktop.__setItem (cspi.SPI_getDesktop (i))
++ desktops = desktops + [desktop]
++ return desktops
++
++registry = Registry()
++
++cdef class Base:
++ """
++ Wrapper around a cspi.Accessible
++ """
++
++ cdef cspi.Accessible *__item
++
++ def __new__ (self):
++ self.__item = NULL
++
++ def __dealloc__ (self):
++ if self.__item != NULL:
++ cspi.Accessible_unref (self.__item)
++
++ cdef bool __setItem (self, cspi.Accessible *obj):
++ if self.__item != NULL:
++ cspi.Accessible_unref (self.__item)
++ if obj != NULL:
++ self.__item = obj
++ cspi.Accessible_ref (self.__item)
++ return True
++ else:
++ return False
++
++ def __checkSelf (self):
++ assert self.__item != NULL
++
++# WHY OH WHY won't this work? :(
++# I need to be able to find out of two Accessible classes contain
++# the same cspi.Accessible objects.
++#
++# def isSameAs (self, base):
++# cdef bool foo
++# foo = self.__item == base.__item
++# return foo
++
++cdef class EventBase:
++ """
++ Wrapper around a cspi.AccessibleEvent
++ """
++ cdef cspi.AccessibleEvent *__item
++
++ def __new__ (self):
++ self.__item = NULL
++
++ def __dealloc__ (self):
++ if self.__item != NULL:
++ cspi.AccessibleEvent_unref (self.__item)
++
++ cdef bool __setItem (self, cspi.AccessibleEvent *obj):
++ if self.__item != NULL:
++ cspi.AccessibleEvent_unref (self.__item)
++ if obj != NULL:
++ self.__item = obj
++ cspi.AccessibleEvent_ref (self.__item)
++ return True
++ else:
++ return False
++
++ def __checkSelf (self):
++ if self.__item == NULL:
++ raise AttributeError, "__item must not be NULL"
++
++ def __getattr__ (self, attrName):
++ cdef cspi.Accessible* acc
++ cdef Accessible result
++ if attrName == "source":
++ acc = self.__item.source
++ if acc!=NULL:
++ result = Accessible ()
++ result.__setItem (acc)
++ return result
++ elif attrName == "detail1":
++ detail1 = self.__item.detail1
++ return detail1
++ elif attrName == "detail2":
++ detail1 = self.__item.detail2
++ return detail1
++ elif attrName == "type":
++ return self.__item.type
++
++cdef class StateSet:
++ """
++ Wrapper around a cspi.AccessibleStateSet
++ """
++ cdef cspi.AccessibleStateSet *__item
++
++ def __new__ (self):
++ self.__item = NULL
++
++ def __dealloc__ (self):
++ if self.__item != NULL:
++ cspi.AccessibleStateSet_unref (self.__item)
++
++ def __checkSelf (self):
++ if self.__item == NULL:
++ raise AttributeError, "__item must not be NULL"
++
++ cdef bool __setItem (self, cspi.AccessibleStateSet *obj):
++ if self.__item != NULL:
++ cspi.AccessibleStateSet_unref (self.__item)
++ if obj != NULL:
++ self.__item = obj
++ cspi.AccessibleStateSet_ref (self.__item)
++ return True
++ else:
++ return False
++
++ cdef bool __contains (self, cspi.AccessibleState s):
++ self.__checkSelf ()
++ return cspi.AccessibleStateSet_contains (self.__item, s)
++
++ def contains (self, state):
++ self.__checkSelf ()
++ return self.__contains(state)
++
++ cdef void __add (self, cspi.AccessibleState s):
++ self.__checkSelf ()
++ cspi.AccessibleStateSet_add(self.__item, s)
++
++ def add (self, state):
++ self.__checkSelf ()
++ self.__add (state)
++
++ cdef void __remove (self, cspi.AccessibleState s):
++ self.__checkSelf ()
++ cspi.AccessibleStateSet_remove (self.__item, s)
++
++ def remove (self, state):
++ self.__checkSelf ()
++ self.__remove (state)
++
++ def __str__ (self):
++ self.__checkSelf ()
++ return str(self.states)
++
++ def __getattr__(self, name):
++ if name == "states":
++ result = []
++ for state in range(SPI_STATE_INVALID, SPI_STATE_INDETERMINATE):
++ if self.contains(state):
++ result.append(state)
++ return result
++ else:
++ raise AttributeError, name
++
++cdef class Relation:
++ """
++ Wrapper around a cspi.AccessibleRelation
++ """
++ cdef cspi.AccessibleRelation *__item
++
++ def __new__ (self):
++ self.__item = NULL
++
++ def __dealloc__ (self):
++ if self.__item != NULL:
++ cspi.AccessibleRelation_unref (self.__item)
++
++ def __checkSelf (self):
++ if self.__item == NULL:
++ raise AttributeError, "__item must not be NULL"
++
++ def __str__ (self):
++ self.__checkSelf ()
++ return "relation %s -> %s"%(self.getRelationType (), self.getTargets())
++
++ def __repr__ (self):
++ self.__checkSelf ()
++ return "relation %s -> %s"%(self.getRelationType (), self.getTargets())
++
++ cdef bool __setItem (self, cspi.AccessibleRelation *obj):
++ if self.__item != NULL:
++ cspi.AccessibleRelation_unref (self.__item)
++ if obj != NULL:
++ self.__item = obj
++ cspi.AccessibleRelation_ref (self.__item)
++ return True
++ else:
++ return False
++
++ def getNTargets (self):
++ """
++ Wrapper around cspi.AccessibleRelation_getNTargets
++ """
++ self.__checkSelf ()
++ return cspi.AccessibleRelation_getNTargets (self.__item)
++
++ def getTarget (self, i):
++ """
++ Wrapper around cspi.AccessibleRelation_getTarget
++ """
++ self.__checkSelf ()
++ cdef Accessible target
++ target = Accessible ()
++ target.__setItem (cspi.AccessibleRelation_getTarget (self.__item, i))
++ target.__checkSelf ()
++ return target
++
++ def getTargets (self):
++ """
++ Gets the targets of this AccessibleRelation as a list of atspi.Accessible
++ """
++ self.__checkSelf ()
++ result = []
++ count = self.getNTargets()
++ for i in range(count):
++ result.append(self.getTarget(i))
++ return result
++
++ def getRelationType (self):
++ """
++ Wrapper around cspi.AccessibleRelation_getRelationType
++ """
++ self.__checkSelf ()
++ return cspi.AccessibleRelation_getRelationType (self.__item)
++
++cdef class Accessible (Base):
++ """
++ Wrapper around cspi.Accessible
++ """
++ def __getattr__ (self, name):
++ if name == "name":
++ return self.getName ()
++ elif name == "role":
++ return self.getRole ()
++ elif name == "roleName":
++ return self.getRoleName ()
++ elif name == "description":
++ return self.getDescription ()
++ elif name == "parent":
++ return self.getParent ()
++ elif name == "childCount":
++ return self.getChildCount ()
++ elif name == "indexInParent":
++ return self.getIndexInParent ()
++ elif name == "stateSet":
++ return self.getStateSet ()
++ else:
++ raise AttributeError, name
++
++ def getName (self):
++ """
++ Wrapper around cspi.Accessible_getName
++ """
++ self.__checkSelf()
++ return string(cspi.Accessible_getName(self.__item))
++
++ def getDescription (self):
++ """
++ Wrapper around cspi.Accessible_getDescription
++ """
++ self.__checkSelf()
++ return string(cspi.Accessible_getDescription(self.__item))
++
++ def getParent (self):
++ """
++ Wrapper around cspi.Accessible_getParent, returning an
++ atspi.Accessible or None
++ """
++ self.__checkSelf()
++ cdef Accessible parent
++ cdef cspi.Accessible* spiParent
++
++ spiParent = cspi.Accessible_getParent (self.__item)
++ if spiParent!=NULL:
++ parent = Accessible ()
++ parent.__setItem (spiParent)
++ parent.__checkSelf ()
++ return parent
++ else:
++ return None
++
++ def getChildAtIndex (self, index):
++ """
++ Wrapper around cspi.Accessible_getChildAtIndex, returning an
++ atspi.Accessible, atspi.Application, or None
++ """
++ self.__checkSelf()
++ cdef int i
++ i = index
++
++ # This hairiness is due to the fact that Pyrex doesn't allow cdefs
++ # inside if blocks.
++
++ cdef cspi.Accessible* spiChild
++ spiChild = cspi.Accessible_getChildAtIndex (self.__item, i)
++ # Workaround for GNOME bug #321273
++ # http://bugzilla.gnome.org/show_bug.cgi?id=321273
++ if spiChild == NULL: return None
++
++ cdef object child
++ cdef Application app
++ cdef Accessible acc
++ cdef Text text
++
++ if cspi.Accessible_isApplication (spiChild):
++ app = Application ()
++ app.__setItem (spiChild)
++ child = app
++ else:
++ acc = Accessible ()
++ acc.__setItem (spiChild)
++ child = acc
++
++ return child
++
++ def getIndexInParent (self):
++ """
++ Wrapper around cspi.Accessible_getIndexInParent
++ """
++ self.__checkSelf()
++ return cspi.Accessible_getIndexInParent (self.__item)
++
++ def getRole (self):
++ """
++ Wrapper around cspi.Accessible_getRole
++ """
++ self.__checkSelf()
++ return cspi.Accessible_getRole (self.__item)
++
++ def getRoleName (self):
++ """
++ Wrapper around cspi.Accessible_getRoleName
++ """
++ self.__checkSelf()
++ return string(cspi.Accessible_getRoleName (self.__item))
++
++ def getChildCount (self):
++ """
++ Wrapper around cspi.Accessible_getChildCount
++ """
++ self.__checkSelf()
++ return cspi.Accessible_getChildCount (self.__item)
++
++ def getStateSet (self):
++ """
++ Wrapper around cspi.Accessible_getStateSet, returning an
++ atspi.StateSet
++ """
++ self.__checkSelf()
++ cdef StateSet set
++ set = StateSet()
++ set.__setItem (cspi.Accessible_getStateSet (self.__item))
++ return set
++
++ def getInterface (self, interface):
++ """
++ This is NOT part of cspi, it is just for compatibility with
++ the bonobo bindings and will probably go away soon.
++ """
++ self.__checkSelf()
++ return getattr(self, "get%s" % interface) ()
++
++ def getAction (self):
++ """
++ Wrapper around cspi.Accessible_getAction, returning
++ an atspi.Action or None
++ """
++ self.__checkSelf()
++ cdef Action action
++ action = Action ()
++ action.__setItem (cspi.Accessible_getAction (self.__item))
++ if action.__item != NULL:
++ return action
++
++ def getText (self):
++ """
++ Wrapper around cspi.Accessible_getText, returning an atspi.Text
++ or None
++ """
++ self.__checkSelf ()
++ cdef Text text
++ text = Text ()
++ text.__setItem (cspi.Accessible_getText (self.__item))
++ if text.__item != NULL:
++ return text
++
++ def getEditableText (self):
++ """
++ Wrapper around cspi.Accessible_getText, returning an
++ atspi.EditableText or None
++ """
++ self.__checkSelf ()
++ cdef EditableText etext
++ etext = EditableText ()
++ etext.__setItem (cspi.Accessible_getEditableText (self.__item))
++ if etext.__item != NULL:
++ return etext
++
++ def getHypertext (self):
++ """
++ Wrapper around cspi.Accessible_getHypertext, returning an
++ atspi.Hypertext or None
++ """
++ self.__checkSelf ()
++ cdef Hypertext hypertext
++ hypertext = Hypertext ()
++ hypertext.__setItem (cspi.Accessible_getHypertext (self.__item))
++ if hypertext.__item != NULL:
++ return hypertext
++
++ def getImage (self):
++ """
++ Wrapper around cspi.Accessible_getImage, returning an
++ atspi.Image or None
++ """
++ self.__checkSelf ()
++ cdef Image image
++ image = Image ()
++ image.__setItem (cspi.Accessible_getImage (self.__item))
++ if image.__item != NULL:
++ return image
++
++ def getValue (self):
++ """
++ Wrapper around cspi.Accessible_getValue, returning an
++ atspi.Value or None
++ """
++ self.__checkSelf ()
++ cdef Value value
++ value = Value ()
++ value.__setItem (cspi.Accessible_getValue (self.__item))
++ if value.__item != NULL:
++ return value
++
++ def getSelection (self):
++ """
++ Wrapper around cspi.Accessible_getSelection, returning an
++ atspi.Selection or None
++ """
++ self.__checkSelf ()
++ cdef Selection selection
++ selection = Selection ()
++ selection.__setItem (cspi.Accessible_getSelection (self.__item))
++ if selection.__item != NULL:
++ return selection
++
++ def getComponent (self):
++ """
++ Wrapper around cspi.Accessible_getComponent, returning an
++ atspi.Component or None
++ """
++ self.__checkSelf ()
++ cdef Component component
++ component = Component ()
++ component.__setItem (cspi.Accessible_getComponent (self.__item))
++ if component.__item != NULL:
++ return component
++
++ def getRelationSet (self):
++ """
++ Wraps Accessible_getRelationSet, returning a list
++ of atspi.Relation
++ """
++ # looking at at-poke, result from C API appears to be a NULL-terminated list of pointers, and that we should free the buffer
++ self.__checkSelf ()
++ cdef Relation relation
++
++ relations = []
++ cdef cspi.AccessibleRelation **relationSet
++ relationSet = cspi.Accessible_getRelationSet (self.__item)
++
++ i=0
++ while relationSet[i]:
++ relation = Relation ()
++ relation.__setItem (relationSet[i])
++ relations.append(relation)
++ i=i+1
++ cspi.free (relationSet)
++
++ return relations
++
++
++cdef class Desktop (Accessible):
++ pass
++
++
++cdef class Application (Accessible):
++ """
++ Wrapper around the low-level cspi.AccessibleApplication_ functions,
++ giving an OO-style API.
++ """
++ def getToolkit (self):
++ """
++ Wraps AccessibleApplication_getToolkitName, returning a string
++ """
++ self.__checkSelf ()
++ return cspi.AccessibleApplication_getToolkitName (self.__item)
++
++ def getVersion (self):
++ """
++ Wraps AccessibleApplication_getVersion, returning a string
++ """
++ self.__checkSelf ()
++ return cspi.AccessibleApplication_getVersion(self.__item)
++
++ def getID (self):
++ """
++ Wraps AccessibleApplication_getID, returning a string
++ """
++ self.__checkSelf ()
++ return cspi.AccessibleApplication_getID (self.__item)
++
++ def pause (self):
++ """
++ Wraps AccessibleApplication_pause
++ """
++ self.__checkSelf ()
++ return cspi.AccessibleApplication_pause (self.__item)
++
++ def resume (self):
++ """
++ Wraps AccessibleApplication_resume
++ """
++ self.__checkSelf ()
++ return cspi.AccessibleApplication_resume (self.__item)
++
++cdef class Component (Accessible):
++ """
++ Wrapper around the low-level cspi.AccessibleComponent_ functions,
++ giving an OO-style API.
++ """
++ def getExtents (self, type=0):
++ """
++ Wraps cspi.AccessibleComponent_getExtents, returning an
++ (x,y,w,h) tuple.
++ """
++ self.__checkSelf ()
++ cdef long x, y, w, h
++ cspi.AccessibleComponent_getExtents (self.__item, &x, &y, &w, &h, type)
++ return (x, y, w, h)
++
++ def getPosition (self, type = 0):
++ """
++ Wraps cspi.AccessibleComponent_getPosition, returning an
++ (x,y) tuple.
++ """
++ self.__checkSelf ()
++ cdef long x, y
++ cspi.AccessibleComponent_getPosition (self.__item, &x, &y, type)
++ return (x, y)
++
++ def getSize (self):
++ """
++ Wraps cspi.AccessibleComponent_getSize, returning a
++ (w,h) tuple.
++ """
++ self.__checkSelf ()
++ cdef long w, h
++ cspi.AccessibleComponent_getSize (self.__item, &w, &h)
++ return (w, h)
++
++ def getLayer (self):
++ """
++ Wraps cspi.AccessibleComponent_getLayer, returning an
++ AccessibleComponentLayer.
++ """
++ self.__checkSelf ()
++ return cspi.AccessibleComponent_getLayer (self.__item)
++
++ def grabFocus (self):
++ """
++ Wraps cspi.AccessibleComponent_grabFocus, raising AtspiException
++ if it fails
++ """
++ self.__checkSelf ()
++ if not cspi.AccessibleComponent_grabFocus (self.__item):
++ raise AtspiException("AccessibleComponent_grabFocus")
++
++ def getMDIZOrder (self):
++ """
++ Wraps cspi.AccessibleComponent_getMDIZOrder, returning an integer.
++ """
++ self.__checkSelf ()
++ return cspi.AccessibleComponent_getMDIZOrder(self.__item)
++
++cdef class Action (Base):
++ """
++ Wrapper around the low-level cspi.AccessibleAction_ functions,
++ giving an OO-style API.
++ """
++ def __getattr__ (self, name):
++ if name == "nActions":
++ return self.getNActions ()
++ else:
++ raise AttributeError, name
++
++ def getNActions (self):
++ """
++ Wraps cspi.AccessibleAction_getNActions
++ """
++ self.__checkSelf ()
++ return cspi.AccessibleAction_getNActions (self.__item)
++
++ def doAction (self, index):
++ """
++ Wraps cspi.AccessibleAction_doAction
++ """
++ self.__checkSelf ()
++ return cspi.AccessibleAction_doAction (self.__item, index)
++
++ def getKeyBinding (self, index):
++ """
++ Wraps cspi.AccessibleAction_getKeyBinding
++ """
++ self.__checkSelf ()
++ return cspi.AccessibleAction_getKeyBinding (self.__item, index)
++
++ def getName (self, index):
++ """
++ Wraps cspi.AccessibleAction_getName
++ """
++ self.__checkSelf ()
++ return string(cspi.AccessibleAction_getName (self.__item, index))
++
++ def getDescription (self, index):
++ """
++ Wraps cspi.AccessibleAction_getDescription
++ """
++ self.__checkSelf ()
++ return string(cspi.AccessibleAction_getDescription (self.__item, index))
++
++
++cdef class Text (Base):
++ """
++ Wrapper around the low-level cspi.AccessibleText_ functions,
++ giving an OO-style API.
++ """
++ def addSelection (self, startOffset, endOffset):
++ """
++ Wraps cspi.AccessibleText_addSelection
++ """
++ self.__checkSelf ()
++ if not cspi.AccessibleText_addSelection (self.__item, startOffset, endOffset):
++ raise AtspiException("AccessibleText_addSelection")
++
++
++ #def getAttributes (self, offset, startOffset, endOffset):
++ # self.__checkSelf ()
++ # return cspi.AccessibleText_getAttributes (self.__item, offset, startOffset, endOffset)
++ def getCaretOffset (self):
++ """
++ Wraps cspi.AccessibleText_getCaretOffset
++ """
++ self.__checkSelf ()
++ return cspi.AccessibleText_getCaretOffset (self.__item)
++
++ def getCharacterCount (self):
++ """
++ Wraps cspi.AccessibleText_getCharacterCount
++ """
++ self.__checkSelf ()
++ return cspi.AccessibleText_getCharacterCount (self.__item)
++
++ def getNSelections (self):
++ """
++ Wraps cspi.AccessibleText_getNSelections
++ """
++ self.__checkSelf ()
++ return cspi.AccessibleText_getNSelections (self.__item)
++
++ #def getSelection (self, selectionNum, startOffset, endOffset):
++ # self.__checkSelf ()
++ # return cspi.AccessibleText_getSelection (self.__item, selectionNum, startOffset, endOffset)
++
++ def getText (self, startOffset, endOffset):
++ """
++ Wraps cspi.AccessibleText_getText
++ """
++ self.__checkSelf ()
++ return string(cspi.AccessibleText_getText (self.__item, startOffset, endOffset))
++
++ def removeSelection (self, selectionNum):
++ """
++ Wraps cspi.AccessibleText_removeSelection, raising AtspiException if it fails
++ """
++ self.__checkSelf ()
++ if not cspi.AccessibleText_removeSelection (self.__item, selectionNum):
++ raise AtspiException("AccessibleText_removeSelection")
++
++ def setSelection (self, selectionNum, startOffset, endOffset):
++ """
++ Wraps cspi.AccessibleText_setSelection, raising AtspiException if it fails
++ """
++ self.__checkSelf ()
++ if not cspi.AccessibleText_setSelection (self.__item, selectionNum, startOffset, endOffset):
++ raise AtspiException("AccessibleText_setSelection")
++
++ def setCaretOffset (self, position):
++ """
++ Wraps cspi.AccessibleText_setCaretOffset, raising AtspiException if it fails
++ """
++ self.__checkSelf ()
++ if not cspi.AccessibleText_setCaretOffset (self.__item, position):
++ raise AtspiException("AccessibleText_setCaretOffset")
++
++cdef class EditableText (Text):
++ """
++ Wrapper around the low-level cspi.AccessibleEditableText_ functions,
++ giving an OO-style API.
++ """
++ def setTextContents (self, newContents):
++ """
++ Wraps cspi.AccessibleEditableText_setTextContents, raising AtspiException if it fails
++ """
++ self.__checkSelf ()
++ if not cspi.AccessibleEditableText_setTextContents (self.__item, newContents):
++ raise AtspiException("AccessibleEditableText_setTextContents")
++
++ def setAttributes (self, attributes, startOffset, endOffset):
++ """
++ Wraps cspi.AccessibleEditableText_setAttributes, raising AtspiException if it fails
++ """
++ self.__checkSelf ()
++ if not cspi.AccessibleEditableText_setAttributes (self.__item, attributes, startOffset, endOffset):
++ raise AtspiException("AccessibleEditableText_setAttributes")
++
++ def insertText (self, position, text):
++ """
++ Wraps cspi.AccessibleEditableText_insertText, raising AtspiException if it fails
++ """
++ self.__checkSelf ()
++ if not cspi.AccessibleEditableText_insertText (self.__item, position, text, cspi.strlen(text)):
++ raise AtspiException("AccessibleEditableText_insertText")
++
++cdef class Hypertext (Text):
++ """
++ Wrapper around the low-level cspi.AccessibleHypertext_ functions,
++ giving an OO-style API.
++ """
++ def getNLinks (self):
++ """
++ Wraps cspi.AccessibleHypertext_getNLinks, raising AtspiException if it fails
++ """
++ self.__checkSelf ()
++ return cspi.AccessibleHypertext_getNLinks (self.__item)
++
++ def getLink (self, linkIndex):
++ """
++ Wraps cspi.AccessibleHypertext_getLink, raising AtspiException if it fails
++ """
++ self.__checkSelf ()
++ cdef Hyperlink hyperlink
++ hyperlink = Hyperlink ()
++ hyperlink.__setItem (cspi.AccessibleHypertext_getLink (self.__item, linkIndex))
++ if hyperlink.__item != NULL:
++ return hyperlink
++
++ def getLinkIndex (self, characterOffset):
++ """
++ Wraps cspi.AccessibleHypertext_getLinkIndex, raising AtspiException if it fails
++ """
++ self.__checkSelf ()
++ return cspi.AccessibleHypertext_getLinkIndex (self.__item, characterOffset)
++
++cdef class Hyperlink (Base):
++ """
++ Wrapper around the low-level cspi.AccessibleHyperlink_ functions,
++ giving an OO-style API.
++ """
++ def getNAnchors (self):
++ """
++ Wraps cspi.AccessibleHyperlink_getNAnchors, raising AtspiException if it fails
++ """
++ self.__checkSelf ()
++ return cspi.AccessibleHyperlink_getNAnchors (self.__item)
++
++ def getIndexRange (self):
++ """
++ Wraps cspi.AccessibleHyperlink_getIndexRange, returning [startIndex, endIndex] pair
++ """
++ self.__checkSelf ()
++ cdef long startIndex, endIndex
++ cspi.AccessibleHyperlink_getIndexRange(self.__item, &startIndex, &endIndex)
++ return [startIndex, endIndex]
++
++
++ def getObject (self, i):
++ """
++ Wraps cspi.AccessibleHyperlink_getObject
++ """
++ self.__checkSelf ()
++ cdef Accessible object
++ object = Accessible ()
++ object.__setItem (cspi.AccessibleHyperlink_getObject (self.__item, i))
++ object.__checkSelf ()
++ return object
++
++ def getURI (self, i):
++ """
++ Wraps cspi.AccessibleHyperlink_getURI, raising AtspiException if it fails
++ """
++ self.__checkSelf ()
++ return cspi.AccessibleHyperlink_getURI (self.__item, i)
++
++ def isValid (self):
++ """
++ Wraps cspi.AccessibleHyperlink_isValid, raising AtspiException if it fails
++ """
++ self.__checkSelf ()
++ return cspi.AccessibleHyperlink_isValid (self.__item)
++
++cdef class Image (Base):
++ """
++ Wrapper around the low-level cspi.AccessibleImage_ functions,
++ giving an OO-style API.
++ """
++ def getImageDescription (self):
++ """
++ Wraps cspi.AccessibleImage_getImageDescription
++ """
++ self.__checkSelf ()
++ return cspi.AccessibleImage_getImageDescription (self.__item)
++
++ def getImageSize (self):
++ """
++ Wraps cspi.AccessibleImage_getImageSize, returning a (w,h) pair
++ """
++ self.__checkSelf ()
++ cdef long w, h
++ cspi.AccessibleImage_getImageSize(self.__item, &w, &h);
++ return [w, h]
++
++ def getImagePosition (self, type=0):
++ """
++ Wraps cspi.AccessibleImage_getImagePosition, returning a (x,y)
++ pair
++ """
++ self.__checkSelf ()
++ cdef long x, y
++ cspi.AccessibleImage_getImagePosition(self.__item, &x, &y, type)
++ return [x, y]
++
++ def getImageExtents (self, type=0):
++ """
++ Wraps cspi.AccessibleImage_getImageExtents, returning a
++ (x,y,w,h) tuple
++ """
++ self.__checkSelf ()
++ cdef long x, y, w, h
++ cspi.AccessibleImage_getImageExtents(self.__item, &x, &y, &w, &h, type)
++ return [x, y, w, h]
++
++cdef class Value (Base):
++ """
++ Wrapper around the low-level cspi.AccessibleValue_ functions,
++ giving an OO-style API.
++ """
++ def getMinimumValue (self):
++ """
++ Wraps cspi.AccessibleValue_getMinimumValue
++ """
++ self.__checkSelf ()
++ return cspi.AccessibleValue_getMinimumValue(self.__item)
++
++ def getCurrentValue (self):
++ """
++ Wraps cspi.AccessibleValue_getMinimumValue
++ """
++ self.__checkSelf ()
++ return cspi.AccessibleValue_getCurrentValue(self.__item)
++
++ def getMaximumValue (self):
++ """
++ Wraps cspi.AccessibleValue_getMinimumValue
++ """
++ self.__checkSelf ()
++ return cspi.AccessibleValue_getMaximumValue(self.__item)
++
++ def setCurrentValue (self, newValue):
++ """
++ Wraps cspi.AccessibleValue_setCurrentValue
++ """
++ self.__checkSelf ()
++ if not cspi.AccessibleValue_setCurrentValue (self.__item, newValue):
++ raise AtspiException("AccessibleValue_setCurrentValue")
++
++cdef class Selection (Base):
++ """
++ Wrapper around the low-level cspi.AccessibleSelection_ functions,
++ giving an OO-style API.
++ """
++
++ def getNSelectedChildren (self):
++ """
++ Wraps cspi.AccessibleSelection_getNSelectedChildren
++ """
++ self.__checkSelf ()
++ return cspi.AccessibleSelection_getNSelectedChildren (self.__item)
++
++ def getSelectedChild (self, index):
++ """
++ Wraps cspi.AccessibleSelection_getSelectedChild
++ """
++ self.__checkSelf ()
++
++ cdef cspi.Accessible* spiChild
++ spiChild = cspi.AccessibleSelection_getSelectedChild (self.__item, index)
++
++ assert spiChild != NULL
++
++ cdef object child
++ cdef Application app
++ cdef Accessible acc
++ cdef Text text
++
++ if cspi.Accessible_isApplication (spiChild):
++ app = Application ()
++ app.__setItem (spiChild)
++ child = app
++ else:
++ acc = Accessible ()
++ acc.__setItem (spiChild)
++ child = acc
++
++ return child
++
++ def selectChild (self, index):
++ """
++ Wraps cspi.AccessibleSelection_selectChild
++ """
++ self.__checkSelf ()
++ return cspi.AccessibleSelection_selectChild (self.__item, index)
++
++ def deselectSelectedChild (self, index):
++ """
++ Wraps cspi.AccessibleSelection_deselectSelectedChild
++ """
++ self.__checkSelf ()
++ return cspi.AccessibleSelection_deselectSelectedChild (self.__item, index)
++
++ def isChildSelected (self, index):
++ """
++ Wraps cspi.AccessibleSelection_isChildSelected
++ """
++ self.__checkSelf ()
++ return cspi.AccessibleSelection_isChildSelected (self.__item, index)
++
++ def selectAll (self):
++ """
++ Wraps cspi.AccessibleSelection_selectAll
++ """
++ self.__checkSelf ()
++ return cspi.AccessibleSelection_selectAll( self.__item)
++
++ def clearSelection (self):
++ """
++ Wraps cspi.AccessibleSelection_clearSelection
++ """
++ self.__checkSelf ()
++ return cspi.AccessibleSelection_clearSelection (self.__item)
++
++cdef class Table (Base):
++ """
++ Wrapper around the low-level cspi.AccessibleTable_ functions,
++ giving an OO-style API.
++ """
++
++ # def getTableAccessibleAt (self, row, column):
++ # def getTableCaption (self):
++
++ def getTableColumnAtIndex (self, index):
++ """
++ Wraps cspi.AccessibleTable_getColumnAtIndex
++ """
++ self.__checkSelf ()
++ return cspi.AccessibleTable_getColumnAtIndex(self.__item, index)
++
++ def getTableColumnDescription (self, column):
++ """
++ Wraps cspi.AccessibleTable_getColumnDescription
++ """
++ self.__checkSelf ()
++ return cspi.AccessibleTable_getColumnDescription(self.__item, column)
++
++ def getTableColumnExtentAt (self, row, column):
++ """
++ Wraps cspi.AccessibleTable_getColumnExtentAt
++ """
++ self.__checkSelf ()
++ return cspi.AccessibleTable_getColumnExtentAt(self.__item, row, column)
++
++ # def getTableColumnHeader (self, column):
++
++ def getTableIndexAt (self, row, column):
++ """
++ Wraps cspi.AccessibleTable_getIndexAt
++ """
++ self.__checkSelf ()
++ return cspi.AccessibleTable_getIndexAt(self.__item, row, column)
++
++ def getTableNColumns (self):
++ """
++ Wraps cspi.AccessibleTable_getNColumns
++ """
++ self.__checkSelf ()
++ return cspi.AccessibleTable_getNColumns(self.__item)
++
++ def getTableNRows (self):
++ """
++ Wraps cspi.AccessibleTable_getNRows
++ """
++ self.__checkSelf ()
++ return cspi.AccessibleTable_getNRows(self.__item)
++
++ def getTableNSelectedColumns (self):
++ """
++ Wraps cspi.AccessibleTable_getNSelectedColumns
++ """
++ self.__checkSelf ()
++ return cspi.AccessibleTable_getNSelectedColumns(self.__item)
++
++ def getTableNSelectedRows (self):
++ """
++x Wraps cspi.AccessibleTable_getNSelectedRows
++ """
++ self.__checkSelf ()
++ return cspi.AccessibleTable_getNSelectedRows(self.__item)
++
++ def getTableRowAtIndex (self, index):
++ """
++ Wraps cspi.AccessibleTable_getRowAtIndex
++ """
++ self.__checkSelf ()
++ return cspi.AccessibleTable_getRowAtIndex(self.__item, index)
++
++ def getTableRowDescription (self, row):
++ """
++ Wraps cspi.AccessibleTable_getRowDescription
++ """
++ self.__checkSelf ()
++ return cspi.AccessibleTable_getRowDescription(self.__item, row)
++
++ def getTableRowExtentAt (self, row, column):
++ """
++ Wraps cspi.AccessibleTable_getRowExtentAt
++ """
++ self.__checkSelf ()
++ return cspi.AccessibleTable_getRowExtentAt(self.__item, row, column)
++
++ # def getTableRowHeader (self, row):
++ # def getTableSelectedRows (self, **selectedRows): - Not sure if the variable which is a pointer to a pointer is acceptable
++ # def getTableSelectedColumns (self, **selectedColumns): - Same issue as above
++ # def getTableSummary (self):
++
++ def isTableColumnSelected (self, column):
++ """
++ Wraps cspi.AccessibleTable_isColumnSelected
++ """
++ self.__checkSelf ()
++ return cspi.AccessibleTable_isColumnSelected(self.__item, column)
++
++ def isTableRowSelected (self, row):
++ """
++ Wraps cspi.AccessibleTable_isRowSelected
++ """
++ self.__checkSelf ()
++ return cspi.AccessibleTable_isRowSelected(self.__item, row)
++
++ def isTableSelected (self, row, column):
++ """
++ Wraps cspi.AccessibleTable_isSelected
++ """
++ self.__checkSelf ()
++ return cspi.AccessibleTable_isSelected(self.__item, row, column)
++
++
++cdef class Event (EventBase):
++ #def AccessibleEventListener* SPI_createAccessibleEventListener (AccessibleEventListenerCB callback, void *user_data)
++ #void AccessibleEventListener_unref (AccessibleEventListener *listener)
++ #SPIBoolean AccessibleEventListener_addCallback (AccessibleEventListener *listener, AccessibleEventListenerCB callback, void *user_data)
++ #SPIBoolean AccessibleEventListener_removeCallback (AccessibleEventListener *listener, AccessibleEventListenerCB callback)
++
++ #Accessible* AccessibleActiveDescendantChangedEvent_getActiveDescendant (AccessibleEvent *event)
++ #Accessible* AccessibleChildChangedEvent_getChildAccessible (AccessibleEvent *event)
++
++ def getDescriptionChangedEventDescriptionString (self):
++ self.__checkSelf()
++ return string(cspi.AccessibleDescriptionChangedEvent_getDescriptionString(self.__item))
++
++ def getNameChangedEventNameString (self):
++ self.__checkSelf()
++ return string(cspi.AccessibleNameChangedEvent_getNameString(self.__item))
++
++ # Accessible* AccessibleParentChangedEvent_getParentAccessible (AccessibleEvent *event)
++
++ def getTableCaptionChangedEventCaptionString(self):
++ self.__checkSelf()
++ return string(cspi.AccessibleTableCaptionChangedEvent_getCaptionString(self.__item))
++
++ def getTableColumnDescriptionChangedEventDescriptionString(self):
++ self.__checkSelf ()
++ return string(cspi.AccessibleTableColumnDescriptionChangedEvent_getDescriptionString(self.__item))
++
++ # Accessible* AccessibleTableHeaderChangedEvent_getHeaderAccessible (AccessibleEvent *event)
++
++ def getTableRowDescriptionChangedEventDescriptionString(self):
++ self.__checkSelf ()
++ return string(cspi.AccessibleTableRowDescriptionChangedEvent_getDescriptionString(self.__item))
++
++ #Accessible* AccessibleTableSummaryChangedEvent_getSummaryAccessible (AccessibleEvent *event)
++
++ def getTextChangedEventChangeString (self):
++ self.__checkSelf ()
++ return string(cspi.AccessibleTextChangedEvent_getChangeString(self.__item))
++
++ def getTextSelectionChangedEventSelectionString (self):
++ self.__checkSelf ()
++ return string(cspi.AccessibleTextSelectionChangedEvent_getSelectionString(self.__item))
++
++ def getWindowEventTitleString (self):
++ self.__checkSelf ()
++ return string(cspi.AccessibleWindowEvent_getTitleString(self.__item))
++
++class EventGenerator:
++ """
++ Wrapper layer around SPI_generateKeyboardEvent and
++ SPI_generateMouseEvent, used for generating input events.
++
++ Use AccessibleAction in preference to this.
++ """
++ def injectKeyboardString (self, string):
++ """
++ Inject a string as if it had been typed using an input method.
++ """
++ # Seems to only work if you do it one character at a time...
++ for char in string:
++ self.__generateKeystringEvent (str(char), cspi.SPI_KEY_STRING)
++
++ def __keyStringToKeyCode(self, keyString):
++ cdef Xlib.Display *display
++ display = Xlib.XOpenDisplay(NULL)
++
++ cdef Xlib.KeySym sym
++ sym = Xlib.XStringToKeysym(keyString)
++ cdef Xlib.KeyCode code
++ code = Xlib.XKeysymToKeycode(display, sym)
++
++ #print str(keyString), str(int(sym)), code
++
++ Xlib.XCloseDisplay(display)
++ return int(code)
++
++ def generateKeyCombo (self, keyStrings):
++ modifiers = keyStrings[:-1]
++ finalKey = keyStrings[-1]
++
++ for modifier in modifiers:
++ code = self.__keyStringToKeyCode(modifier)
++ self.generateKeyboardEvent(code, '', cspi.SPI_KEY_PRESS)
++
++ code = self.__keyStringToKeyCode(finalKey)
++ self.generateKeyboardEvent(code, '', cspi.SPI_KEY_PRESSRELEASE)
++
++ for modifier in modifiers:
++ code = self.__keyStringToKeyCode(modifier)
++ self.generateKeyboardEvent(code, '', cspi.SPI_KEY_RELEASE)
++
++
++ def __generateKeyvalEvent (self, keyval, synthType):
++ self.generateKeyboardEvent (keyval, None, synthType)
++
++ def __generateKeystringEvent (self, keystring, synthType):
++ self.generateKeyboardEvent (0, keystring, synthType)
++
++ def generateKeyboardEvent (self, keyval, keystring, synthType):
++ if not cspi.SPI_generateKeyboardEvent (keyval, keystring, synthType):
++ raise AtspiException("SPI_generateKeyboardEvent")
++
++ def click (self, x, y, button):
++ """
++ Synthesize a mouse button click at (x,y)
++ """
++ self.__generateButtonEvent (x, y, button, "c")
++
++ def doubleClick (self, x, y, button):
++ """
++ Synthesize a mouse button double-click at (x,y)
++ """
++ self.__generateButtonEvent (x, y, button, "d")
++
++ def press (self, x, y, button):
++ """
++ Synthesize a mouse button press at (x,y)
++ """
++ self.__generateButtonEvent (x, y, button, "p")
++
++ def release (self, x, y, button):
++ """
++ Synthesize a mouse button release at (x,y)
++ """
++ self.__generateButtonEvent (x, y, button, "r")
++
++ def absoluteMotion (self, x, y):
++ """
++ Synthesize mouse absolute motion to (x,y)
++ """
++ self.__generateEvent (x, y, "abs")
++
++ def relativeMotion (self, x, y):
++ """
++ Synthesize mouse relative motion of (x,y)
++ """
++ self.__generateEvent (x, y, "rel")
++
++ def drag (self, fromXY, toXY, button):
++ """
++ Synthesize a drag (press, move and release) from (x,y) to (x,y).
++
++ These are absolute screen coordinates
++ """
++ (x,y) = fromXY
++ self.press (x, y, button)
++
++ (x,y) = toXY
++ self.absoluteMotion(x,y)
++
++ self.release (x, y, button)
++
++ def __generateEvent (self, x, y, name):
++ """
++ Thin wrapper around SPI_generateMouseEvent.
++
++ Event names: b1p = button 1 press; b2r = button 2 release;
++ b3c = button 3 click; b2d = button 2 double-click;
++ abs = absolute motion; rel = relative motion.
++ """
++ if not cspi.SPI_generateMouseEvent (x, y, name):
++ raise AtspiException("Error generating mouse event")
++
++ def __generateButtonEvent (self, x, y, button, suffix):
++ self.__generateEvent (x, y, self.__generateButtonName(button)+suffix)
++
++ def __generateButtonName(self, button):
++ if button==1:
++ return "b1"
++ elif button==2:
++ return "b2"
++ elif button==3:
++ return "b3"
++ else: raise ValueError, "Unknown button"
++
++# We use this C function to marshal a call to a python function. The Python callback
++# function is installed as the userdata of this C callback function. See the
++# "cheesefinder" demo in the Pyrex sources.
++# We ignore the "const"ness of the AccessibleEvent
++cdef void marshalAccessibleEventCallback (cspi.AccessibleEvent *event, void *python_fn) except *:
++ e = Event()
++ EventBase.__setItem(e, event)
++ (<object>python_fn) (e)
++
++cdef class EventListener:
++ """
++ Wrapper around the low-level cspi.AccessibleEventListener_ functions,
++ giving an OO-style API.
++ """
++ cdef cspi.AccessibleEventListener *__item
++ cdef public object eventTypes
++
++ def __init__ (self, callback, eventTypes):
++ """
++ Registers a python callback function to be called.
++ The callback is expected to have one input, of type atspi.Event, and no return value.
++ See documentation of SPI_registerGlobalEventListener for the event names
++ """
++ self.eventTypes = eventTypes
++ self.__item = cspi.SPI_createAccessibleEventListener (marshalAccessibleEventCallback, <void*>callback)
++ for eventType in self.eventTypes:
++ #char *e
++ e = eventType
++ if not cspi.SPI_registerGlobalEventListener (self.__item, e):
++ raise AtspiException("Unable to register event listener")
++
++ def deregister(self):
++ for eventType in self.eventTypes:
++ cspi.SPI_deregisterGlobalEventListener(self.__item, eventType)
++
++ def __dealloc__ (self):
++ if self.__item != NULL:
++ self.deregister()
++ cspi.AccessibleEventListener_unref (self.__item)
++
++ def __checkSelf (self):
++ if self.__item == NULL:
++ raise AttributeError, "__item must not be NULL"
++
++cdef class DeviceEvent:
++ """
++ Wrapper around a cspi.AccessibleDeviceEvent
++ """
++ cdef cspi.AccessibleDeviceEvent *__item
++ cdef public object keyID
++ cdef public object keyCode
++ cdef public object keyString
++ cdef public object timeStamp
++ cdef public object type
++ cdef public object modifiers
++ cdef public object isText
++
++ def __new__ (self):
++ self.__item = NULL
++
++ cdef bool __setItem (self, cspi.AccessibleDeviceEvent *obj):
++ if obj != NULL:
++ self.__item = obj
++ self.keyID = self.__item.keyID
++ self.keyCode = self.__item.keycode
++ self.keyString = self.__item.keystring
++ self.timeStamp = self.__item.timestamp
++ self.type = self.__item.type
++ self.modifiers = self.__item.modifiers
++ if self.__item.is_text: self.isText = True
++ else: self.isText = False
++ return True
++ else:
++ return False
++
++ def __checkSelf (self):
++ if self.__item == NULL:
++ raise AttributeError, "__item must not be NULL"
++
++# def __dealloc__ (self):
++# if self.__item != NULL:
++# cspi.AccessibleDeviceEvent_unref (self.__item)
++
++
++cdef cspi.SPIBoolean marshalAccessibleDeviceEventCallback (cspi.AccessibleDeviceEvent *event, void *python_fn) except 1:
++ k = DeviceEvent()
++ #k.__setItem(event)
++ DeviceEvent.__setItem(k, event)
++ k.__checkSelf()
++ (<object>python_fn) (k)
++ return False
++
++cdef class DeviceListener:
++ """
++ Wrapper around the low-level cspi.AccessibleDeviceListener_ functions,
++ giving an OO-style API.
++ """
++ cdef cspi.AccessibleDeviceListener *__item
++ cdef public object modMasks
++
++ def __init__ (self, callback, eventMask = cspi.SPI_KEY_PRESSED | cspi.SPI_KEY_RELEASED):
++ """
++ Registers a python callback function to be called.
++
++ eventMask may be one of the following:
++ key pressed: 1
++ key released: 2
++ key pressed or released (default): 3
++ """
++ self.__item = cspi.SPI_createAccessibleDeviceListener (marshalAccessibleDeviceEventCallback, <void*>callback)
++ cdef cspi.AccessibleKeySet *keySet
++ keySet = SPI_KEYSET_ALL_KEYS
++ self.modMasks = []
++ cdef short int modMask
++ syncType = SPI_KEYLISTENER_SYNCHRONOUS | SPI_KEYLISTENER_CANCONSUME
++ #syncType = SPI_KEYLISTENER_NOSYNC
++ for modMask from 0 <= modMask < (1 << 8):
++ self.modMasks.append(modMask)
++ desc = "keySet "+str(<int> keySet)+" modMask "+str(modMask)+" eventMask "+str(eventMask)+" syncType "+str(syncType)
++ desc = str(desc)
++ if not cspi.SPI_registerAccessibleKeystrokeListener (self.__item, keySet, modMask, eventMask, syncType):
++ raise AtspiException("Unable to register keystroke listener", desc)
++
++ def deregister(self):
++ if self.__item != NULL:
++ for modMask in self.modMasks:
++ cspi.SPI_deregisterAccessibleKeystrokeListener(self.__item, modMask)
++
++ def __dealloc__ (self):
++ if self.__item != NULL:
++ self.deregister()
++ cspi.AccessibleDeviceListener_unref (self.__item)
++
++ def __checkSelf (self):
++ if self.__item == NULL:
++ raise AttributeError, "__item must not be NULL"
++
++
++# vim: sw=4 ts=4 sts=4 noet ai
diff --git a/extra/python-pysqlite/ChangeLog b/extra/python-pysqlite/ChangeLog
new file mode 100644
index 000000000..12c0ad090
--- /dev/null
+++ b/extra/python-pysqlite/ChangeLog
@@ -0,0 +1,13 @@
+
+2009-08-06 Douglas Soares de Andrade <douglas@archlinux.org>
+
+ * Updated to: 2.5.5
+
+2009-07-19 Douglas Soares de Andrade <douglas@archlinux.org>
+
+ * Updated for i686: 2.5.5
+
+2008-07-15 Douglas Soares de Andrade <douglas@archlinux.org>
+
+ * Updated for i686: 2.4.1
+
diff --git a/extra/python-pysqlite/PKGBUILD b/extra/python-pysqlite/PKGBUILD
new file mode 100644
index 000000000..54265b30d
--- /dev/null
+++ b/extra/python-pysqlite/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 89652 2010-09-02 20:47:02Z remy $
+# Contributor: Aaron Griffin <aaron@archlinux.org>
+# Contributor: Aaron Griffin <aaron@archlinux.org>
+# Maintainer: Daniel J Griffiths <ghost1227@archlinux.us>
+
+pkgname=python-pysqlite
+pkgver=2.6.0
+pkgrel=2
+pkgdesc="A Python DB-API 2.0 interface for the SQLite embedded relational database engine"
+license=('custom')
+arch=('i686' 'x86_64')
+url="http://code.google.com/p/pysqlite/"
+depends=('python2' 'sqlite3')
+replaces=('pysqlite2')
+source=(http://pysqlite.googlecode.com/files/pysqlite-${pkgver}.tar.gz \
+ setup.cfg)
+md5sums=('fc92618b3b39d02e6ff10dc467c36640'
+ '86dd356c65afd14a22f2f8f64a26441e')
+build() {
+ cd ${srcdir}/pysqlite-${pkgver}
+ cp ${srcdir}/setup.cfg .
+ python2 setup.py install --root=${pkgdir}
+}
+
+package() {
+ cd ${srcdir}/pysqlite-${pkgver}
+ install -Dm644 LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+ rm -r ${pkgdir}/usr/pysqlite2-doc
+}
diff --git a/extra/python-pysqlite/setup.cfg b/extra/python-pysqlite/setup.cfg
new file mode 100644
index 000000000..ba6c77075
--- /dev/null
+++ b/extra/python-pysqlite/setup.cfg
@@ -0,0 +1,5 @@
+[build_ext]
+define=
+include_dirs=/usr/include
+library_dirs=/usr/lib
+libraries=sqlite3
diff --git a/extra/python-qt/PKGBUILD b/extra/python-qt/PKGBUILD
new file mode 100644
index 000000000..43a00111e
--- /dev/null
+++ b/extra/python-qt/PKGBUILD
@@ -0,0 +1,41 @@
+# $Id: PKGBUILD 110673 2011-02-21 12:42:56Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+
+pkgname=python-qt
+pkgver=4.8.3
+pkgrel=2
+arch=('i686' 'x86_64')
+url="http://riverbankcomputing.co.uk/software/pyqt/intro"
+license=('GPL')
+pkgdesc="A set of Python 3 bindings for the Qt toolkit"
+depends=('python2-qt' 'python-sip')
+optdepends=('phonon: enable audio and video in PyQt applications'
+ 'qscintilla: QScintilla API'
+ 'qt-assistant-compat: add PyQt online help in Qt Assistant')
+makedepends=('phonon' 'qt-assistant-compat')
+source=("http://riverbankcomputing.co.uk/static/Downloads/PyQt4/PyQt-x11-gpl-${pkgver}.tar.gz")
+md5sums=('d54fd1c37a74864faf42709c8102f254')
+
+build() {
+ cd "${srcdir}/PyQt-x11-gpl-${pkgver}"
+
+ python configure.py \
+ --confirm-license \
+ --qsci-api
+
+ # Thanks Gerardo for the rpath fix
+ find -name 'Makefile' | xargs sed -i 's|-Wl,-rpath,/usr/lib||g;s|-Wl,-rpath,.* ||g'
+
+ make
+}
+
+package(){
+ cd "${srcdir}/PyQt-x11-gpl-${pkgver}"
+ # INSTALL_ROOT is needed for the QtDesigner module, the other Makefiles use DESTDIR
+ make DESTDIR="${pkgdir}" INSTALL_ROOT="${pkgdir}" install
+
+ # Provided by python2-qt package
+ rm ${pkgdir}/usr/bin/{pylupdate4,pyrcc4,pyuic4}
+ rm ${pkgdir}/usr/lib/qt/plugins/designer/libpythonplugin.so
+ rm ${pkgdir}/usr/share/qt/qsci/api/python/PyQt4.api
+}
diff --git a/extra/python-sip/PKGBUILD b/extra/python-sip/PKGBUILD
new file mode 100644
index 000000000..48b2cd96f
--- /dev/null
+++ b/extra/python-sip/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 110667 2011-02-21 12:01:59Z stephane $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+
+pkgname=python-sip
+pkgver=4.12.1
+pkgrel=2
+arch=('i686' 'x86_64')
+url="http://www.riverbankcomputing.com/software/sip/"
+license=('custom:"sip"')
+pkgdesc="A tool that makes it easy to create Python 3 bindings for C and C++ libraries"
+depends=('python2-sip' 'python')
+source=("http://www.riverbankcomputing.com/static/Downloads/sip4/sip-${pkgver}.tar.gz")
+md5sums=('0f8e8305b14c1812191de2e0ee22fea9')
+
+build() {
+ cd "${srcdir}/sip-${pkgver}"
+
+ python configure.py CFLAGS="${CFLAGS}" LFLAGS="${LDFLAGS}"
+ make
+}
+
+package() {
+ cd "${srcdir}/sip-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+
+ install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+
+ # Provided by python2-sip package
+ rm "${pkgdir}/usr/bin/sip"
+}
diff --git a/extra/python-telepathy/PKGBUILD b/extra/python-telepathy/PKGBUILD
new file mode 100644
index 000000000..13fde3c16
--- /dev/null
+++ b/extra/python-telepathy/PKGBUILD
@@ -0,0 +1,21 @@
+# $Id: PKGBUILD 102076 2010-12-04 12:37:04Z ibiru $
+# Maintainer: Ionut Biru <ibiru@archlinux.org>
+# Contributor: Daniel Balieiro <daniel@balieiro.com>
+pkgname=python-telepathy
+pkgver=0.15.19
+pkgrel=1
+pkgdesc="Python libraries for use in Telepathy clients and connection managers"
+arch=('i686' 'x86_64')
+url="http://telepathy.freedesktop.org"
+license=('LGPL')
+depends=('dbus-python')
+makedepends=('libxslt')
+source=(http://telepathy.freedesktop.org/releases/telepathy-python/telepathy-python-${pkgver}.tar.gz)
+md5sums=('f7ca25ab3c88874015b7e9728f7f3017')
+
+build() {
+ cd "${srcdir}/telepathy-python-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/python-urwid/PKGBUILD b/extra/python-urwid/PKGBUILD
new file mode 100644
index 000000000..c91d5675d
--- /dev/null
+++ b/extra/python-urwid/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: PKGBUILD,v 1.10 2009/03/13 21:14:09 sergej Exp $
+# Maintainer: Daniel Isenmann <daniel@archlinux.org>
+# Maintainer: Sergej Pupykin <sergej@aur.archlinux.org>
+# Maintainer: Douglas Soares de Andrade <dsandrade@gmail.com>
+
+pkgname=python-urwid
+pkgver=0.9.9.1
+pkgrel=2
+pkgdesc="Urwid is a curses-based user interface library."
+license=('GPL')
+arch=('i686' 'x86_64')
+depends=('python2')
+url="http://excess.org/urwid/"
+source=(http://excess.org/urwid/urwid-$pkgver.tar.gz)
+md5sums=('4722cdf898f711dcae1121aa80920152')
+
+build() {
+ cd $startdir/src/urwid-$pkgver
+ sed -i 's#bin/python#bin/python2#' urwid/*.py
+ python2 setup.py install --prefix=/usr --root=$startdir/pkg || return 1
+
+ rm -rf $startdir/src/$_hgname-build
+}
diff --git a/extra/python-wpactrl/PKGBUILD b/extra/python-wpactrl/PKGBUILD
new file mode 100644
index 000000000..0f3f9b84c
--- /dev/null
+++ b/extra/python-wpactrl/PKGBUILD
@@ -0,0 +1,18 @@
+# Maintainer: Daniel Isenmann <daniel@archlinux.org>
+
+pkgname=python-wpactrl
+pkgver=20090609
+pkgrel=2
+pkgdesc="A Python extension for wpa_supplicant/hostapd control interface access"
+arch=('i686' 'x86_64')
+url="http://projects.otaku42.de/wiki/PythonWpaCtrl"
+license=('GPL2')
+depends=('python2')
+source=(ftp://ftp.archlinux.org/other/${pkgname}/python-wpactrl-20090609.tar.gz)
+md5sums=('8d45739aa9bfa1110a4570bb5ceda768')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ python2 setup.py build
+ python2 setup.py install --root=${pkgdir}
+}
diff --git a/extra/python/PKGBUILD b/extra/python/PKGBUILD
new file mode 100644
index 000000000..b8d376acc
--- /dev/null
+++ b/extra/python/PKGBUILD
@@ -0,0 +1,69 @@
+# $Id: PKGBUILD 110651 2011-02-21 01:21:12Z stephane $
+# Maintainer: Stéphane Gaudreault <stephane@archlinux.org>
+# Maintainer: Allan McRae <allan@archlinux.org>
+# Contributer: Jason Chu <jason@archlinux.org>
+
+pkgname=python
+pkgver=3.2
+pkgrel=1
+_pybasever=3.2
+pkgdesc="Next generation of the python high-level scripting language"
+arch=('i686' 'x86_64')
+license=('custom')
+url="http://www.python.org/"
+depends=('expat' 'bzip2' 'gdbm' 'openssl' 'libffi' 'zlib')
+makedepends=('tk' 'sqlite3' 'valgrind')
+optdepends=('tk: for tkinter')
+provides=('python3')
+replaces=('python3')
+options=('!makeflags')
+source=(http://www.python.org/ftp/python/${_pybasever}/Python-${pkgver}.tar.xz)
+sha1sums=('55a3a9d39f31563370d0c494373bb6d38e4d1a00')
+
+build() {
+ cd "${srcdir}/Python-${pkgver}"
+
+ # Ensure that we are using the system copy of various libraries (expat, zlib and libffi),
+ # rather than copies shipped in the tarball
+ rm -r Modules/expat
+ rm -r Modules/zlib
+ rm -r Modules/_ctypes/{darwin,libffi}*
+
+ ./configure --prefix=/usr \
+ --enable-shared \
+ --with-threads \
+ --with-computed-gotos \
+ --enable-ipv6 \
+ --with-valgrind \
+ --with-wide-unicode \
+ --with-system-expat \
+ --with-system-ffi
+
+ make
+
+ # Run the upstream test suite
+# LD_LIBRARY_PATH="${srcdir}/Python-${pkgver}":${LD_LIBRARY_PATH} \
+# "${srcdir}/Python-${pkgver}/python" -m test.regrtest -x test_distutils
+}
+
+package() {
+ cd "${srcdir}/Python-${pkgver}"
+ make DESTDIR="${pkgdir}" install maninstall
+
+ # Why are these not done by default...
+ ln -sf python3 "${pkgdir}/usr/bin/python"
+ ln -sf python3-config "${pkgdir}/usr/bin/python-config"
+ ln -sf idle3 "${pkgdir}/usr/bin/idle"
+ ln -sf pydoc3 "${pkgdir}/usr/bin/pydoc"
+ ln -sf python${_pybasever}.1 "${pkgdir}/usr/share/man/man1/python3.1"
+
+ # Fix FS#22552
+ ln -sf ../../libpython${_pybasever}mu.so \
+ "${pkgdir}/usr/lib/python${_pybasever}/config-${_pybasever}mu/libpython${_pybasever}mu.so"
+
+ # Clean-up reference to build directory
+ sed -i "s#$srcdir/Python-${pkgver}:##" "$pkgdir/usr/lib/python${_pybasever}/config-${_pybasever}mu/Makefile"
+
+ # License
+ install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+}
diff --git a/extra/python2-cairo/PKGBUILD b/extra/python2-cairo/PKGBUILD
new file mode 100644
index 000000000..3e8a7ced2
--- /dev/null
+++ b/extra/python2-cairo/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 102340 2010-12-07 11:21:30Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=python2-cairo
+pkgver=1.8.10
+pkgrel=1
+pkgdesc="Python2 bindings for the cairo graphics library"
+arch=('i686' 'x86_64')
+license=('LGPL' 'MPL')
+depends=('python2' 'cairo')
+options=('!libtool')
+provides=("pycairo=${pkgver}")
+conflicts=('pycairo')
+replaces=('pycairo')
+source=(http://cairographics.org/releases/py2cairo-${pkgver}.tar.gz)
+url="http://www.cairographics.org/pycairo"
+md5sums=('87421a6a70304120555ba7ba238f3dc3')
+
+build() {
+ cd "${srcdir}/pycairo-${pkgver}"
+ PYTHON=python2 ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}/pycairo-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/python2-qt/PKGBUILD b/extra/python2-qt/PKGBUILD
new file mode 100644
index 000000000..41b2354f1
--- /dev/null
+++ b/extra/python2-qt/PKGBUILD
@@ -0,0 +1,41 @@
+# $Id: PKGBUILD 107404 2011-01-24 17:30:13Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Douglas Soares de Andrade <douglas@archlinux.org>
+# Contributor: riai <riai@bigfoot.com> Ben <ben@benmazer.net>
+
+pkgname=python2-qt
+pkgver=4.8.3
+pkgrel=1
+pkgdesc="A set of Python 2 bindings for the Qt toolkit"
+arch=('i686' 'x86_64')
+url="http://riverbankcomputing.co.uk/software/pyqt/intro"
+license=('GPL')
+depends=('qt' 'python2-sip' 'dbus-python')
+makedepends=('phonon' 'python-opengl' 'qt-assistant-compat')
+optdepends=('phonon: enable audio and video in PyQt applications'
+ 'python-opengl: enable OpenGL 3D graphics in PyQt applications'
+ 'qscintilla: QScintilla API'
+ 'qt-assistant-compat: add PyQt online help in Qt Assistant')
+replaces=('pyqt')
+source=("http://riverbankcomputing.co.uk/static/Downloads/PyQt4/PyQt-x11-gpl-${pkgver}.tar.gz")
+md5sums=('d54fd1c37a74864faf42709c8102f254')
+
+build() {
+ cd "${srcdir}/PyQt-x11-gpl-${pkgver}"
+
+ python2 configure.py \
+ --confirm-license \
+ -v /usr/share/sip \
+ --qsci-api
+
+ # Thanks Gerardo for the rpath fix
+ find -name 'Makefile' | xargs sed -i 's|-Wl,-rpath,/usr/lib||g;s|-Wl,-rpath,.* ||g'
+
+ make
+}
+
+package(){
+ cd "${srcdir}/PyQt-x11-gpl-${pkgver}"
+ # INSTALL_ROOT is needed for the QtDesigner module, the other Makefiles use DESTDIR
+ make DESTDIR="${pkgdir}" INSTALL_ROOT="${pkgdir}" install
+}
diff --git a/extra/python2-sip/PKGBUILD b/extra/python2-sip/PKGBUILD
new file mode 100644
index 000000000..d08638428
--- /dev/null
+++ b/extra/python2-sip/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 107403 2011-01-24 17:30:04Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Douglas Soares de Andrade <douglas@archlinux.org>
+# Contributor: riai <riai@bigfoot.com>, Ben <ben@benmazer.net>
+
+pkgname=python2-sip
+pkgver=4.12.1
+pkgrel=1
+pkgdesc="A tool that makes it easy to create Python 2 bindings for C and C++ libraries"
+arch=('i686' 'x86_64')
+url="http://www.riverbankcomputing.com/software/sip/"
+license=('custom:"sip"')
+depends=('python2')
+replaces=('sip')
+source=("http://www.riverbankcomputing.com/static/Downloads/sip4/sip-${pkgver}.tar.gz")
+md5sums=('0f8e8305b14c1812191de2e0ee22fea9')
+
+build() {
+ cd "${srcdir}/sip-${pkgver}"
+
+ python2 configure.py CFLAGS="${CFLAGS}" LFLAGS="${LDFLAGS}"
+ make
+}
+
+package() {
+ cd "${srcdir}/sip-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+
+ install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+}
diff --git a/extra/python2/PKGBUILD b/extra/python2/PKGBUILD
new file mode 100644
index 000000000..50a02686c
--- /dev/null
+++ b/extra/python2/PKGBUILD
@@ -0,0 +1,84 @@
+# $Id: PKGBUILD 110650 2011-02-21 01:06:01Z stephane $
+# Maintainer: Allan McRae <allan@archlinux.org>
+# Contributer: Stéphane Gaudreault <stephane@archlinux.org>
+# Contributer: Jason Chu <jason@archlinux.org>
+
+pkgname=python2
+pkgver=2.7.1
+pkgrel=7
+_pybasever=2.7
+pkgdesc="A high-level scripting language"
+arch=('i686' 'x86_64')
+license=('PSF')
+url="http://www.python.org/"
+depends=('db' 'bzip2' 'gdbm' 'openssl' 'zlib' 'expat' 'sqlite3' 'libffi')
+makedepends=('tk')
+optdepends=('tk: for IDLE')
+conflicts=('python<3')
+options=('!makeflags')
+source=(http://www.python.org/ftp/python/${pkgver}/Python-${pkgver}.tar.bz2
+ python-2.7-db51.diff)
+md5sums=('aa27bc25725137ba155910bd8e5ddc4f'
+ 'd9b8161568ce17a305c1b71e61ccd4b5')
+
+build() {
+ cd "${srcdir}/Python-${pkgver}"
+
+ patch -Np1 -i ../python-2.7-db51.diff
+
+ # Temporary workaround for FS#22322
+ # See http://bugs.python.org/issue10835 for upstream report
+ sed -i "/progname =/s/python/python${_pybasever}/" Python/pythonrun.c
+
+ # Enable built-in SQLite3 module to load extensions (fix FS#22122)
+ sed -i "/SQLITE_OMIT_LOAD_EXTENSION/d" setup.py
+
+ # Ensure that we are using the system copy of various libraries (expat, zlib and libffi),
+ # rather than copies shipped in the tarball
+ rm -r Modules/expat
+ rm -r Modules/zlib
+ rm -r Modules/_ctypes/{darwin,libffi}*
+
+ export OPT="${CFLAGS}"
+ ./configure --prefix=/usr --enable-shared --with-threads --enable-ipv6 \
+ --enable-unicode=ucs4 --with-system-expat --with-system-ffi
+
+ make
+}
+
+package() {
+ cd "${srcdir}/Python-${pkgver}"
+ make DESTDIR="${pkgdir}" altinstall maninstall
+
+ ln -sf python${_pybasever} "${pkgdir}/usr/bin/python2"
+ ln -sf python${_pybasever}-config "${pkgdir}/usr/bin/python2-config"
+ ln -sf python${_pybasever}.1 "${pkgdir}/usr/share/man/man1/python2.1"
+
+ ln -sf ../../libpython${_pybasever}.so \
+ "${pkgdir}/usr/lib/python${_pybasever}/config/libpython${_pybasever}.so"
+
+ mv "${pkgdir}/usr/bin/smtpd.py" "${pkgdir}/usr/lib/python${_pybasever}/"
+
+ # some useful "stuff"
+ install -dm755 "${pkgdir}"/usr/lib/python${_pybasever}/Tools/{i18n,scripts}
+ install -m755 Tools/i18n/{msgfmt,pygettext}.py \
+ "${pkgdir}/usr/lib/python${_pybasever}/Tools/i18n/"
+ install -m755 Tools/scripts/{README,*py} \
+ "${pkgdir}/usr/lib/python${_pybasever}/Tools/scripts/"
+
+ # fix conflicts with python
+ mv "${pkgdir}"/usr/bin/idle{,2}
+ mv "${pkgdir}"/usr/bin/pydoc{,2}
+ mv "${pkgdir}"/usr/bin/2to3{,-2.7}
+
+ # clean up #!s
+ find "${pkgdir}/usr/lib/python${_pybasever}/" -name '*.py' | \
+ xargs sed -i "s|#[ ]*![ ]*/usr/bin/env python$|#!/usr/bin/env python2|"
+
+ # clean-up reference to build directory
+ sed -i "s#${srcdir}/Python-${pkgver}:##" \
+ "${pkgdir}/usr/lib/python${_pybasever}/config/Makefile"
+
+ # license
+ install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+}
diff --git a/extra/python2/python-2.7-db51.diff b/extra/python2/python-2.7-db51.diff
new file mode 100644
index 000000000..2da95c375
--- /dev/null
+++ b/extra/python2/python-2.7-db51.diff
@@ -0,0 +1,42 @@
+diff -Naur Python-2.7-orig//Modules/_bsddb.c Python-2.7/Modules/_bsddb.c
+--- Python-2.7-orig//Modules/_bsddb.c 2010-05-10 00:46:46.000000000 +1000
++++ Python-2.7/Modules/_bsddb.c 2010-10-20 13:19:26.436669911 +1000
+@@ -9765,8 +9765,11 @@
+
+ ADD_INT(d, DB_REP_PERMANENT);
+
+-#if (DBVER >= 44)
++#if (DBVER >= 44) && (DBVER <= 48)
+ ADD_INT(d, DB_REP_CONF_NOAUTOINIT);
++#endif
++
++#if (DBVER >= 44)
+ ADD_INT(d, DB_REP_CONF_DELAYCLIENT);
+ ADD_INT(d, DB_REP_CONF_BULK);
+ ADD_INT(d, DB_REP_CONF_NOWAIT);
+diff -Naur Python-2.7-orig//setup.py Python-2.7/setup.py
+--- Python-2.7-orig//setup.py 2010-06-27 22:36:16.000000000 +1000
++++ Python-2.7/setup.py 2010-10-20 13:10:48.256670026 +1000
+@@ -765,7 +765,7 @@
+ # a release. Most open source OSes come with one or more
+ # versions of BerkeleyDB already installed.
+
+- max_db_ver = (4, 8)
++ max_db_ver = (5, 1)
+ min_db_ver = (4, 1)
+ db_setup_debug = False # verbose debug prints from this script?
+
+@@ -787,8 +787,12 @@
+ return True
+
+ def gen_db_minor_ver_nums(major):
+- if major == 4:
++ if major == 5:
+ for x in range(max_db_ver[1]+1):
++ if allow_db_ver((5, x)):
++ yield x
++ if major == 4:
++ for x in range(9):
+ if allow_db_ver((4, x)):
+ yield x
+ elif major == 3:
diff --git a/extra/pywebkitgtk/PKGBUILD b/extra/pywebkitgtk/PKGBUILD
new file mode 100644
index 000000000..6f5690029
--- /dev/null
+++ b/extra/pywebkitgtk/PKGBUILD
@@ -0,0 +1,27 @@
+# Contributor: kasa <biuta.jr@gmail.com>
+# Maintainer: Daniel J Griffiths <ghost1227@archlinux.us>
+
+pkgname=pywebkitgtk
+pkgver=1.1.7
+pkgrel=4
+pkgdesc="Python bindings to the WebKit GTK+ port"
+arch=('i686' 'x86_64')
+url="http://code.google.com/p/pywebkitgtk/"
+license=('LGPL')
+depends=('libwebkit' 'pygtk')
+options=('!libtool' '!makeflags')
+source=(http://pywebkitgtk.googlecode.com/files/${pkgname}-${pkgver}.tar.gz)
+md5sums=('4dbe0111c0b0ad2280052e4534903a9b')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/pyxml/PKGBUILD b/extra/pyxml/PKGBUILD
new file mode 100644
index 000000000..eea70cc62
--- /dev/null
+++ b/extra/pyxml/PKGBUILD
@@ -0,0 +1,38 @@
+# $Id: PKGBUILD 98285 2010-11-06 14:25:36Z schiv $
+# Maintainer:
+# Contributor: Jan de Groot <jgc@archlinux.org>
+
+pkgname=pyxml
+pkgver=0.8.4
+pkgrel=8
+pkgdesc="Python XML parsing library"
+arch=('i686' 'x86_64')
+url="http://sourceforge.net/projects/pyxml/"
+license=('custom')
+depends=('python2')
+source=(http://downloads.sourceforge.net/sourceforge/pyxml/PyXML-${pkgver}.tar.gz
+ fix-python2.6.patch
+ foreigncharsfix.patch)
+md5sums=('1f7655050cebbb664db976405fdba209'
+ '4b652e0c866e3cca7e2386e8e383d5ba'
+ 'c9c54fdf0f7d1515a3b7aa34b01d1c46')
+
+package() {
+ cd "${srcdir}/PyXML-${pkgver}"
+
+ patch -Np1 -i "${srcdir}/fix-python2.6.patch"
+
+ # as warranted by eric (the python IDE)
+ patch -Np1 -i "${srcdir}/foreigncharsfix.patch"
+
+ python2 setup.py build
+ python2 setup.py install --prefix=/usr --root="${pkgdir}" --optimize=1
+ install -D -m644 LICENCE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+
+ sed -e 's|#! /usr/bin/env python|#!/usr/bin/env python2|' \
+ -i ${pkgdir}/usr/lib/python2.7/site-packages/_xmlplus/dom/ext/c14n.py
+ sed -e 's|#!/usr/bin/env python|#!/usr/bin/env python2|' \
+ -i ${pkgdir}/usr/lib/python2.7/site-packages/_xmlplus/dom/html/GenerateHtml.py
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/extra/pyxml/fix-python2.6.patch b/extra/pyxml/fix-python2.6.patch
new file mode 100644
index 000000000..7bf1c46fc
--- /dev/null
+++ b/extra/pyxml/fix-python2.6.patch
@@ -0,0 +1,28 @@
+diff -ur a/xml/xpath/ParsedAbbreviatedAbsoluteLocationPath.py b/xml/xpath/ParsedAbbreviatedAbsoluteLocationPath.py
+--- a/xml/xpath/ParsedAbbreviatedAbsoluteLocationPath.py 2003-03-11 15:01:34.000000000 +0100
++++ b/xml/xpath/ParsedAbbreviatedAbsoluteLocationPath.py 2009-05-25 16:32:26.000000000 +0200
+@@ -24,8 +24,8 @@
+ self._rel = rel
+ nt = ParsedNodeTest.ParsedNodeTest('node', '')
+ ppl = ParsedPredicateList.ParsedPredicateList([])
+- as = ParsedAxisSpecifier.ParsedAxisSpecifier('descendant-or-self')
+- self._step = ParsedStep.ParsedStep(as, nt, ppl)
++ asp = ParsedAxisSpecifier.ParsedAxisSpecifier('descendant-or-self')
++ self._step = ParsedStep.ParsedStep(asp, nt, ppl)
+ return
+
+ def evaluate(self, context):
+diff -ur a/xml/xpath/ParsedAbbreviatedRelativeLocationPath.py b/xml/xpath/ParsedAbbreviatedRelativeLocationPath.py
+--- a/xml/xpath/ParsedAbbreviatedRelativeLocationPath.py 2003-03-11 15:01:34.000000000 +0100
++++ b/xml/xpath/ParsedAbbreviatedRelativeLocationPath.py 2009-05-25 16:27:55.000000000 +0200
+@@ -28,8 +28,8 @@
+ self._right = right
+ nt = ParsedNodeTest.ParsedNodeTest('node','')
+ ppl = ParsedPredicateList.ParsedPredicateList([])
+- as = ParsedAxisSpecifier.ParsedAxisSpecifier('descendant-or-self')
+- self._middle = ParsedStep.ParsedStep(as, nt, ppl)
++ asp = ParsedAxisSpecifier.ParsedAxisSpecifier('descendant-or-self')
++ self._middle = ParsedStep.ParsedStep(asp, nt, ppl)
+
+ def evaluate(self, context):
+ res = []
diff --git a/extra/pyxml/foreigncharsfix.patch b/extra/pyxml/foreigncharsfix.patch
new file mode 100644
index 000000000..024d4472d
--- /dev/null
+++ b/extra/pyxml/foreigncharsfix.patch
@@ -0,0 +1,11 @@
+diff -aur PyXML-0.8.4.orig//xml/parsers/xmlproc/xmlutils.py PyXML-0.8.4/xml/parsers/xmlproc/xmlutils.py
+--- PyXML-0.8.4.orig//xml/parsers/xmlproc/xmlutils.py 2010-11-06 17:27:53.936666669 +0800
++++ PyXML-0.8.4/xml/parsers/xmlproc/xmlutils.py 2010-11-06 17:30:39.230000003 +0800
+@@ -720,6 +720,7 @@
+ # to the recoding.
+ try:
+ self.data = self.charset_converter(self.data)
++ self.datasize = len(self.data)
+ except UnicodeError, e:
+ self._handle_decoding_error(self.data, e)
+ self.input_encoding = enc1
diff --git a/extra/qalculate-gtk/PKGBUILD b/extra/qalculate-gtk/PKGBUILD
new file mode 100644
index 000000000..9eb48dcaf
--- /dev/null
+++ b/extra/qalculate-gtk/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 108632 2011-02-02 01:54:11Z eric $
+# Maintainer: Eric Bélanger <eric@archlinux.org>
+
+pkgname=qalculate-gtk
+pkgver=0.9.7
+pkgrel=2
+pkgdesc="GNOME frontend for libqalculate"
+arch=('i686' 'x86_64')
+url="http://qalculate.sourceforge.net/"
+license=('GPL')
+depends=('libqalculate' 'libgnome' 'libglade' 'cln')
+makedepends=('perlxml' 'gnome-doc-utils')
+optdepends=('yelp: for displaying the help')
+source=(http://downloads.sourceforge.net/sourceforge/qalculate/${pkgname}-${pkgver}.tar.gz)
+md5sums=('7a7ab4680e285690ca3625992f477f0f')
+sha1sums=('c714c91224045fa49f261686e985df0aefa1d678')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/qalculate-kde/PKGBUILD b/extra/qalculate-kde/PKGBUILD
new file mode 100644
index 000000000..1b8a372a1
--- /dev/null
+++ b/extra/qalculate-kde/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 108637 2011-02-02 01:55:58Z eric $
+# Maintainer: Eric Bélanger <eric@archlinux.org>
+
+pkgname=qalculate-kde
+pkgver=0.9.7
+pkgrel=2
+pkgdesc="KDE frontend for libqalculate"
+arch=('i686' 'x86_64')
+url="http://qalculate.sourceforge.net/"
+license=('GPL')
+depends=('libqalculate' 'kdelibs3' 'cln')
+source=(http://downloads.sourceforge.net/sourceforge/qalculate/${pkgname}-${pkgver}.tar.gz)
+md5sums=('90104c97894f4775737349ad99428bcf')
+sha1sums=('fa0db8a3fb80264328770c4bbcbc0892a4d4ce91')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/opt/kde --without-arts
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/qca-gnupg/PKGBUILD b/extra/qca-gnupg/PKGBUILD
new file mode 100644
index 000000000..1ce3c6c32
--- /dev/null
+++ b/extra/qca-gnupg/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: $
+# Maintainer: Pierre Schmitz <pierre@archlinux.de>
+
+pkgname=qca-gnupg
+pkgver=2.0.0
+_pkgver=2.0.0-beta3
+pkgrel=1
+pkgdesc="Qt Cryptographic Architecture"
+arch=('i686' 'x86_64')
+url="http://delta.affinix.com/qca/"
+license=('LGPL')
+depends=('qca')
+optdepends=('gnupg' 'gnupg2')
+source=("http://delta.affinix.com/download/qca/2.0/plugins/${pkgname}-${_pkgver}.tar.bz2")
+md5sums=('9b4d020efd835a52d98b2ced9ae79c4b')
+
+build() {
+ cd $srcdir/${pkgname}-${_pkgver}
+ ./configure \
+ --release \
+ --no-separate-debug-info
+ make || return 1
+ make INSTALL_ROOT=$pkgdir install
+}
diff --git a/extra/qca-ossl/PKGBUILD b/extra/qca-ossl/PKGBUILD
new file mode 100644
index 000000000..700e8a634
--- /dev/null
+++ b/extra/qca-ossl/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: $
+# Maintainer: Pierre Schmitz <pierre@archlinux.de>
+
+pkgname=qca-ossl
+pkgver=2.0.0
+_pkgver=2.0.0-beta3
+pkgrel=3
+pkgdesc="Qt Cryptographic Architecture"
+arch=('i686' 'x86_64')
+url="http://delta.affinix.com/qca/"
+license=('LGPL')
+depends=('qca')
+source=("http://delta.affinix.com/download/qca/2.0/plugins/${pkgname}-${_pkgver}.tar.bz2"
+ 'no-whirlpool.patch')
+md5sums=('bdc62c01321385c7da8d27b3902910ce'
+ '1be7ee2e5f32733b90452fb46b9c69f9')
+
+build() {
+ cd $srcdir/${pkgname}-${_pkgver}
+ patch -p1 -i $srcdir/no-whirlpool.patch
+ ./configure \
+ --release \
+ --no-separate-debug-info
+ make
+}
+
+package() {
+ cd $srcdir/${pkgname}-${_pkgver}
+ make INSTALL_ROOT=$pkgdir install
+}
diff --git a/extra/qca-ossl/no-whirlpool.patch b/extra/qca-ossl/no-whirlpool.patch
new file mode 100644
index 000000000..609ea61f2
--- /dev/null
+++ b/extra/qca-ossl/no-whirlpool.patch
@@ -0,0 +1,21 @@
+diff -up qca-ossl-2.0.0-beta3/qca-ossl.cpp.no-whirlpool qca-ossl-2.0.0-beta3/qca-ossl.cpp
+--- qca-ossl-2.0.0-beta3/qca-ossl.cpp.no-whirlpool 2007-12-11 07:34:57.000000000 +0100
++++ qca-ossl-2.0.0-beta3/qca-ossl.cpp 2009-01-26 14:59:42.000000000 +0100
+@@ -6597,7 +6597,7 @@ static QStringList all_hash_types()
+ #ifdef SHA512_DIGEST_LENGTH
+ list += "sha512";
+ #endif
+-#ifdef OBJ_whirlpool
++#ifdef WHIRLPOOL_DIGEST_LENGTH
+ list += "whirlpool";
+ #endif
+ return list;
+@@ -6810,7 +6810,7 @@ public:
+ else if ( type == "sha512" )
+ return new opensslHashContext( EVP_sha512(), this, type);
+ #endif
+-#ifdef OBJ_whirlpool
++#ifdef WHIRLPOOL_DIGEST_LENGTH
+ else if ( type == "whirlpool" )
+ return new opensslHashContext( EVP_whirlpool(), this, type);
+ #endif
diff --git a/extra/qca/PKGBUILD b/extra/qca/PKGBUILD
new file mode 100644
index 000000000..41b8aeba9
--- /dev/null
+++ b/extra/qca/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 101667 2010-11-30 11:00:58Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Pierre Schmitz <pierre@archlinux.de>
+
+pkgname=qca
+pkgver=2.0.3
+pkgrel=1
+pkgdesc="Qt Cryptographic Architecture"
+arch=('i686' 'x86_64')
+url="http://delta.affinix.com/qca/"
+license=('LGPL')
+depends=('qt' 'ca-certificates')
+source=("http://delta.affinix.com/download/qca/2.0/${pkgname}-${pkgver}.tar.bz2")
+md5sums=('fc15bd4da22b8096c51fcfe52d2fa309')
+
+build() {
+ cd $srcdir/${pkgname}-${pkgver}
+ ./configure \
+ --prefix=/usr \
+ --disable-tests \
+ --certstore-path=/etc/ssl/certs/ca-certificates.crt \
+ --release \
+ --no-separate-debug-info
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make INSTALL_ROOT=${pkgdir} install
+}
diff --git a/extra/qemu-kvm/65-kvm.rules b/extra/qemu-kvm/65-kvm.rules
new file mode 100644
index 000000000..c2f7317aa
--- /dev/null
+++ b/extra/qemu-kvm/65-kvm.rules
@@ -0,0 +1 @@
+KERNEL=="kvm", GROUP="kvm", MODE="0660"
diff --git a/extra/qemu-kvm/PKGBUILD b/extra/qemu-kvm/PKGBUILD
new file mode 100644
index 000000000..04e93f2f9
--- /dev/null
+++ b/extra/qemu-kvm/PKGBUILD
@@ -0,0 +1,49 @@
+# $Id: PKGBUILD 110855 2011-02-22 19:17:39Z tpowa $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+pkgname=qemu-kvm
+pkgver=0.14.0
+pkgrel=1
+pkgdesc="Latest KVM QEMU is a generic and open source processor emulator which achieves a good emulation speed by using dynamic translation."
+arch=(i686 x86_64)
+license=('GPL2' 'LGPL2.1')
+url="http://www.linux-kvm.org"
+depends=('libjpeg' 'libpng' 'libsasl' 'curl' 'sdl' 'alsa-lib' 'esound' 'gnutls>=2.4.1' 'bluez' 'vde2' 'util-linux-ng')
+makedepends=('texi2html' 'perl')
+backup=('etc/qemu/target-x86_64.conf')
+install=qemu-kvm.install
+conflicts=('qemu')
+provides=('qemu')
+replaces=('kvm')
+source=(http://downloads.sourceforge.net/kvm/${pkgname}-${pkgver}.tar.gz
+ 65-kvm.rules)
+
+build()
+{
+ cd ${srcdir}/${pkgname}-${pkgver}
+ # fix esound building
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --audio-drv-list=alsa,sdl,oss,esd \
+ --audio-card-list=ac97,sb16,es1370,adlib \
+ --enable-docs
+ make
+}
+package()
+{
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+ # symbolic link for backwards compatibility
+ ln -s qemu-system-x86_64 ${pkgdir}/usr/bin/qemu-kvm
+ # symbolic link for to qemu binary for emulator apps
+ ln -s qemu-system-x86_64 ${pkgdir}/usr/bin/qemu
+ # symbolic link for to qemu binary for emulator apps
+ ln -s qemu-system-x86_64 ${pkgdir}/usr/bin/kvm
+ # fix man page
+ mv ${pkgdir}/usr/share/man/man1/qemu.1 \
+ ${pkgdir}/usr/share/man/man1/qemu-kvm.1
+ # install udev rules
+ install -D -m644 ${srcdir}/65-kvm.rules \
+ ${pkgdir}/lib/udev/rules.d/65-kvm.rules
+}
+md5sums=('4ea6f412d85a826e0b0690f5c4c59f13'
+ 'b316a066d2f1bb57d8f5b7ea1d0d1caf')
diff --git a/extra/qemu-kvm/qemu-kvm.install b/extra/qemu-kvm/qemu-kvm.install
new file mode 100644
index 000000000..84aa773b9
--- /dev/null
+++ b/extra/qemu-kvm/qemu-kvm.install
@@ -0,0 +1,16 @@
+post_install() {
+ groupadd kvm -f -g 78
+ echo ">>> PLEASE READ FOR KVM USAGE!"
+ echo ">>> Load the correct KVM module, you will need a KVM capable CPU!"
+ echo ">>> Add yourself to the group 'kvm'."
+ echo ">>> Use 'qemu-kvm -enable-kvm' to use KVM."
+ echo ""
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ groupdel kvm
+}
diff --git a/extra/qemu/65-kvm.rules b/extra/qemu/65-kvm.rules
new file mode 100644
index 000000000..c2f7317aa
--- /dev/null
+++ b/extra/qemu/65-kvm.rules
@@ -0,0 +1 @@
+KERNEL=="kvm", GROUP="kvm", MODE="0660"
diff --git a/extra/qemu/PKGBUILD b/extra/qemu/PKGBUILD
new file mode 100644
index 000000000..12baed1c6
--- /dev/null
+++ b/extra/qemu/PKGBUILD
@@ -0,0 +1,35 @@
+# $Id: PKGBUILD 110725 2011-02-21 20:11:19Z tpowa $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+pkgname=qemu
+pkgver=0.14.0
+pkgrel=1
+pkgdesc="QEMU is a generic and open source processor emulator which achieves a good emulation speed by using dynamic translation."
+arch=('i686' 'x86_64')
+license=('GPL2' 'LGPL2.1')
+url="http://wiki.qemu.org/Index.html"
+makedepends=('texi2html' 'perl')
+depends=('libjpeg' 'libpng' 'sdl' 'alsa-lib' 'esound' 'gnutls>=2.4.1' 'bluez' 'vde2' 'util-linux-ng' 'curl' 'libsasl')
+backup=('etc/qemu/target-x86_64.conf')
+install=qemu.install
+source=(http://savannah.nongnu.org/download/${pkgname}/${pkgname}-${pkgver}.tar.gz
+ 65-kvm.rules)
+
+build()
+{
+ cd ${srcdir}/${pkgname}-${pkgver}
+ sed -i -e 's/lib64/lib/g' x86_64.ld
+ ./configure --prefix=/usr --sysconfdir=/etc --audio-drv-list=oss,alsa,sdl,esd \
+ --audio-card-list=ac97,sb16,es1370,adlib \
+ --enable-docs \
+ --kerneldir="/usr/src/linux-$(uname -r)"
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+ install -D -m644 ${srcdir}/65-kvm.rules \
+ ${pkgdir}/lib/udev/rules.d/65-kvm.rules
+}
+md5sums=('f9d145d5c09de9f0984ffe9bd1229970'
+ 'b316a066d2f1bb57d8f5b7ea1d0d1caf')
diff --git a/extra/qemu/qemu.install b/extra/qemu/qemu.install
new file mode 100644
index 000000000..e16ac027c
--- /dev/null
+++ b/extra/qemu/qemu.install
@@ -0,0 +1,24 @@
+# kvm: the new package version
+post_install() {
+ #
+ groupadd kvm -f -g 78
+ echo ">>> PLEASE READ FOR KVM USAGE!"
+ echo ">>> Load the correct KVM module, you will need a KVM capable CPU!"
+ echo ">>> Add yourself to the group 'kvm'."
+ echo ">>> Use 'qemu -enable-kvm' to use KVM."
+ echo ""
+ if [ "$(vercmp $2 0.11)" -lt 0 ]; then
+ echo "With the release of qemu and qemu-kvm 0.12.X, the kqemu kernel module"
+ echo "is no longer supported and will be removed from the repositories. You"
+ echo "can safely uninstall it from your system."
+ fi
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ #
+ groupdel kvm
+}
diff --git a/extra/qimageblitz/PKGBUILD b/extra/qimageblitz/PKGBUILD
new file mode 100644
index 000000000..a6717e077
--- /dev/null
+++ b/extra/qimageblitz/PKGBUILD
@@ -0,0 +1,32 @@
+# $Id: PKGBUILD 88089 2010-08-19 13:00:48Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=qimageblitz
+pkgver=0.0.6
+pkgrel=1
+pkgdesc="An interm image effect library"
+arch=('i686' 'x86_64')
+url="http://sourceforge.net/projects/qimageblitz"
+license=('GPL2')
+depends=('qt')
+makedepends=('cmake' 'pkgconfig')
+source=("http://download.kde.org/stable/${pkgname}/${pkgname}-${pkgver}.tar.bz2")
+md5sums=('5a6c718a56643ffe1f347410bdcca64d')
+options=(!libtool)
+
+build() {
+ cd ${srcdir}
+ mkdir build
+ cd build
+ cmake ../${pkgname}-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=/usr
+ make
+}
+
+package() {
+ cd ${srcdir}/build
+ make DESTDIR=${pkgdir} install
+}
+md5sums=('0ae2f7d4e0876764a97ca73799f61df4')
diff --git a/extra/qiv/PKGBUILD b/extra/qiv/PKGBUILD
new file mode 100644
index 000000000..3a63edc93
--- /dev/null
+++ b/extra/qiv/PKGBUILD
@@ -0,0 +1,21 @@
+# $Id: PKGBUILD 84750 2010-07-04 02:53:11Z angvp $
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+# Maintainer: Paul Mattal <paul@archlinux.org>
+pkgname=qiv
+pkgver=2.2.3
+pkgrel=2
+pkgdesc="Quick Image Viewer (qiv) is a very small and fast GDK/Imlib image viewer"
+arch=('i686' 'x86_64')
+license=('GPL2')
+depends=('file' 'gtk2' 'imlib2')
+makedepends=('pkgconfig')
+source=(http://spiegl.de/qiv/download/$pkgname-$pkgver.tgz)
+url="http://spiegl.de/qiv/"
+md5sums=('f692f665ad429f13c732156351420850')
+
+build() {
+ cd $startdir/src/$pkgname-$pkgver || return 1
+ make || return 1
+ install -D -m 0755 qiv $startdir/pkg/usr/bin/qiv || return 1
+ install -D -m 0644 qiv.1 $startdir/pkg/usr/share/man/man1/qiv.1 || return 1
+}
diff --git a/extra/qjackctl/PKGBUILD b/extra/qjackctl/PKGBUILD
new file mode 100644
index 000000000..9916f3d5c
--- /dev/null
+++ b/extra/qjackctl/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 101735 2010-12-01 12:16:41Z schiv $
+# Maintainer: Ray Rashif <schiv@archlinux.org>
+# Contributor: Tobias Kieslich <tobias@archlinux.org>
+
+pkgname=qjackctl
+pkgver=0.3.7
+pkgrel=1
+pkgdesc="A Qt front-end for the JACK low-latency audio server"
+url="http://qjackctl.sourceforge.net/"
+arch=('i686' 'x86_64')
+license=('GPL')
+depends=('jack' 'qt')
+options=('!makeflags')
+source=("http://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.gz")
+md5sums=('3462613bd5c92fa6e6ae92950bd69c0b')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ make DESTDIR="$pkgdir/" install
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/extra/qjson/PKGBUILD b/extra/qjson/PKGBUILD
new file mode 100644
index 000000000..c399bb632
--- /dev/null
+++ b/extra/qjson/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+
+pkgname=qjson
+pkgver=0.7.1
+pkgrel=1
+pkgdesc="A qt-based library that maps JSON data to QVariant objects"
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://qjson.sourceforge.net"
+depends=('qt')
+makedepends=('cmake')
+source=("http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.bz2")
+md5sums=('5a833ad606c164ed8aa69f0873366ace')
+
+build() {
+ cd ${srcdir}
+ mkdir build
+ cd build
+ cmake ../${pkgname} \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_BUILD_TYPE=Release
+ make
+}
+
+package() {
+ cd "${srcdir}/build"
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/qscintilla/PKGBUILD b/extra/qscintilla/PKGBUILD
new file mode 100644
index 000000000..2d21dfd54
--- /dev/null
+++ b/extra/qscintilla/PKGBUILD
@@ -0,0 +1,68 @@
+# $Id: PKGBUILD 117371 2011-03-31 21:19:18Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Douglas Soares de Andrade <dsa@aur.archlinux.org>
+
+pkgbase=qscintilla
+pkgname=('qscintilla' 'python-qscintilla' 'python2-qscintilla')
+pkgver=2.5
+pkgrel=1
+license=('GPL')
+arch=('i686' 'x86_64')
+url="http://www.riverbankcomputing.co.uk/software/qscintilla/intro"
+makedepends=('python-qt')
+source=("http://riverbankcomputing.com/static/Downloads/QScintilla2/QScintilla-gpl-${pkgver}.tar.gz"
+ 'configure.py-objdir-support.diff')
+md5sums=('c4677b837c16bcb9d806ff04d5a727b8'
+ '8cf9c06252e2f11ab00e62848e322fd3')
+
+
+build() {
+ cd "${srcdir}/QScintilla-gpl-${pkgver}"
+ patch -Np1 -i "${srcdir}/configure.py-objdir-support.diff"
+
+ cd Qt4
+ qmake qscintilla.pro
+ make
+
+ cd ../designer-Qt4
+ qmake designer.pro INCLUDEPATH+=../Qt4 QMAKE_LIBDIR+=../Qt4
+ make
+
+ cd ../
+ cp -rf Python Python2
+ cd Python
+ python configure.py -n ../Qt4/ -o ../Qt4 -c -p 4
+ make
+
+ cd ../Python2
+ python2 configure.py -n ../Qt4/ -o ../Qt4 -c -p 4
+ make
+}
+
+package_qscintilla() {
+ pkgdesc="A port to Qt4 of Neil Hodgson's Scintilla C++ editor class"
+ depends=('qt')
+
+ cd "${srcdir}/QScintilla-gpl-${pkgver}/Qt4"
+ make DESTDIR="${pkgdir}" INSTALL_ROOT="${pkgdir}" install
+
+ cd "${srcdir}/QScintilla-gpl-${pkgver}/designer-Qt4"
+ make DESTDIR="${pkgdir}" INSTALL_ROOT="${pkgdir}" install
+}
+
+package_python-qscintilla() {
+ pkgdesc="Python 3 bindings for QScintilla2"
+ depends=('python-qt' 'python2-qscintilla')
+
+ cd "${srcdir}/QScintilla-gpl-${pkgver}/Python"
+ install -Dm755 Qsci.so \
+ "${pkgdir}/usr/lib/python3.2/site-packages/PyQt4/Qsci.so"
+}
+
+package_python2-qscintilla() {
+ pkgdesc="Python 2 bindings for QScintilla2"
+ depends=('qscintilla' 'python2-qt')
+
+ cd "${srcdir}/QScintilla-gpl-${pkgver}/Python2"
+ make DESTDIR="${pkgdir}" INSTALL_ROOT="${pkgdir}" install
+}
diff --git a/extra/qscintilla/configure.py-objdir-support.diff b/extra/qscintilla/configure.py-objdir-support.diff
new file mode 100644
index 000000000..b595de18c
--- /dev/null
+++ b/extra/qscintilla/configure.py-objdir-support.diff
@@ -0,0 +1,39 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 02_configure.dpatch by Torsten Marek <shlomme@debian.org>
+##
+## DP: patch the configure script for the Python bindings to support object dir builds
+
+@DPATCH@
+Index: qscintilla2-2.4.2/Python/configure.py
+===================================================================
+--- qscintilla2-2.4.2.orig/Python/configure.py 2010-01-20 20:56:09.000000000 +0100
++++ qscintilla2-2.4.2/Python/configure.py 2010-01-27 22:54:35.603870417 +0100
+@@ -33,6 +33,7 @@
+ import glob
+ import optparse
+
++src_dir = os.path.dirname(os.path.abspath(__file__))
+
+ # Import SIP's configuration module so that we have access to the error
+ # reporting. Then try and import the configuration modules for both PyQt3 and
+@@ -162,7 +163,7 @@
+ if os.access(sciglobal, os.F_OK):
+ # Get the QScintilla version string.
+ _, sciversstr = sipconfig.read_version(sciglobal, "QScintilla", "QSCINTILLA_VERSION", "QSCINTILLA_VERSION_STR")
+-
++ return # Debian: do not check for the installed version, we're good this way.
+ if glob.glob(os.path.join(opts.qscilibdir, "*qscintilla2*")):
+ # Because we include the Python bindings with the C++ code we can
+ # reasonably force the same version to be used and not bother about
+@@ -232,9 +233,9 @@
+ argv.append(buildfile)
+
+ if pyqt.pyqt_version >= 0x040000:
+- argv.append("sip/qscimod4.sip")
++ argv.append(os.path.join(src_dir, "sip/qscimod4.sip"))
+ else:
+- argv.append("sip/qscimod3.sip")
++ argv.append(os.path.join(src_dir, "sip/qscimod3.sip"))
+
+ os.system(" ".join(argv))
+
diff --git a/extra/qsynth/PKGBUILD b/extra/qsynth/PKGBUILD
new file mode 100644
index 000000000..781def0d3
--- /dev/null
+++ b/extra/qsynth/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id: PKGBUILD 85922 2010-07-22 10:34:18Z schiv $
+# Maintainer: Ray Rashif <schivmeister@gmail.com>
+# Contributor: damir <damir@archlinux.org>
+
+pkgname=qsynth
+pkgver=0.3.5
+pkgrel=1
+pkgdesc="Qt GUI for fluidsynth"
+arch=('i686' 'x86_64')
+url="http://qsynth.sourceforge.net/qsynth-index.html"
+license=('GPL')
+depends=('fluidsynth' 'qt')
+options=('!makeflags')
+source=(http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.gz)
+md5sums=('e1566eecf7bf3869211783cfe7a327b5')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make || return 1
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/qt-assistant-compat/PKGBUILD b/extra/qt-assistant-compat/PKGBUILD
new file mode 100644
index 000000000..49fa9f0f2
--- /dev/null
+++ b/extra/qt-assistant-compat/PKGBUILD
@@ -0,0 +1,55 @@
+# $Id: PKGBUILD 92392 2010-09-29 14:51:01Z ronald $
+# Maintainer: Ronald van Haren <ronald.archlinux.org>
+
+pkgname=qt-assistant-compat
+pkgver=4.6.3
+pkgrel=1
+pkgdesk="compat version of Qt Assistant"
+url="http://qt.nokia.com/"
+arch=('i686' 'x86_64')
+license=('GPL3' 'LGPL')
+depends=('qt')
+source=('ftp://ftp.qt.nokia.com/qt/source/qt-assistant-qassistantclient-library-compat-src-4.6.3.tar.gz'
+ 'debian_patches_01_build_system.diff')
+md5sums=('a20148e0488d5c12ab35ccc107dcc64d'
+ '1b55290dc9fab0c035797e9301d2fa61')
+
+# separate package function does not really work here due to broken build files
+build() {
+ cd ${srcdir}/qt-assistant-qassistantclient-library-compat-version-${pkgver}
+
+ patch -Np1 -i ${srcdir}/debian_patches_01_build_system.diff
+
+ cd lib; if [ -e Makefile ]; then $(MAKE) distclean; fi
+ rm -f translations/assistant_adp_*.qm
+
+ qmake CONFIG+=create_prl
+ make
+ cd ../translations; lrelease assistant_adp_*.ts
+ cd ..
+ qmake CONFIG+=create_prl
+ make
+}
+
+package(){
+ cd ${srcdir}/qt-assistant-qassistantclient-library-compat-version-${pkgver}
+
+ make install INSTALL_ROOT=${pkgdir}
+ cd lib
+ make install INSTALL_ROOT=${pkgdir}
+ cd ..
+
+ # Fix wrong path in prl file
+ sed -i -e "/^QMAKE_PRL_BUILD_DIR/d" \
+ ${pkgdir}/usr/lib/libQtAssistantClient.prl
+
+ # Install translations
+ install -d ${pkgdir}/usr/share/qt/translations/
+ install -p -m0644 translations/assistant_adp_*.qm \
+ ${pkgdir}/usr/share/qt/translations/
+
+ # Install prf file
+ install -D -p -m0644 features/assistant.prf \
+ ${pkgdir}/usr/share/qt/mkspecs/features/assistant.prf
+
+}
diff --git a/extra/qt-assistant-compat/debian_patches_01_build_system.diff b/extra/qt-assistant-compat/debian_patches_01_build_system.diff
new file mode 100644
index 000000000..3266ced61
--- /dev/null
+++ b/extra/qt-assistant-compat/debian_patches_01_build_system.diff
@@ -0,0 +1,48 @@
+Description: several workarounds for the build system which is completely broken
+Author: Fathi Boudra <fabo@debian.org>
+
+--- a/compat.pro
++++ b/compat.pro
+@@ -66,8 +66,6 @@ TRANSLATIONS = translations/assistant_ad
+ translations/assistant_adp_zh_CN.ts \
+ translations/assistant_adp_zh_TW.ts
+
+-unix:!contains(QT_CONFIG, zlib):LIBS += -lz
+-
+ contains(CONFIG, static): {
+ win32 {
+ exists($$[QT_INSTALL_PLUGINS]/imageformats/qjpeg.lib) {
+@@ -81,3 +79,7 @@ contains(CONFIG, static): {
+ }
+ }
+ }
++
++target.path = $$[QT_INSTALL_BINS]
++INSTALLS += target
++
+--- a/lib/lib.pro
++++ b/lib/lib.pro
+@@ -16,8 +16,8 @@ HEADERS = qassistantclient.h \
+ qassistantclient_global.h
+ SOURCES = qassistantclient.cpp
+
+-DESTDIR = ../../../../lib
+-DLLDESTDIR = ../../../../bin
++DESTDIR = lib
++DLLDESTDIR = bin
+
+ unix {
+ QMAKE_CFLAGS += $$QMAKE_CFLAGS_SHLIB
+@@ -62,7 +62,7 @@ win32 {
+ }
+
+ qt_install_headers {
+- assistant_headers.files = $$SYNCQT.HEADER_FILES $$SYNCQT.HEADER_CLASSES
++ assistant_headers.files = qassistantclient.h qassistantclient_global.h
+ assistant_headers.path = $$[QT_INSTALL_HEADERS]/QtAssistant
+ INSTALLS += assistant_headers
+ }
+--- /dev/null
++++ b/lib/QtAssistant/qassistantclient_global.h
+@@ -0,0 +1 @@
++#include "../qassistantclient_global.h"
diff --git a/extra/qt/PKGBUILD b/extra/qt/PKGBUILD
new file mode 100644
index 000000000..4e6d6dfb0
--- /dev/null
+++ b/extra/qt/PKGBUILD
@@ -0,0 +1,219 @@
+# $Id: PKGBUILD 117207 2011-03-29 18:21:55Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Pierre Schmitz <pierre@archlinux.de>
+
+pkgbase=qt
+pkgname=('qt' 'qt-private-headers')
+pkgver=4.7.2
+pkgrel=6
+arch=('i686' 'x86_64')
+url='http://qt.nokia.com/'
+license=('GPL3' 'LGPL')
+makedepends=('libtiff' 'libpng' 'libmng' 'sqlite3' 'ca-certificates' 'glib2' 'dbus'
+ 'fontconfig' 'libgl' 'libsm' 'libxrandr' 'libxv' 'libxi' 'alsa-lib'
+ 'xdg-utils' 'hicolor-icon-theme' 'desktop-file-utils' 'mesa' 'postgresql-libs'
+ 'mysql' 'unixodbc' 'cups' 'gtk2')
+options=('!libtool')
+_pkgfqn="qt-everywhere-opensource-src-${pkgver}"
+source=("ftp://ftp.qt.nokia.com/qt/source/${_pkgfqn}.tar.gz"
+ 'assistant.desktop' 'designer.desktop' 'linguist.desktop'
+ 'qtconfig.desktop'
+ 'blacklist-fraudulent-comodo-certificates.patch')
+md5sums=('66b992f5c21145df08c99d21847f4fdb'
+ 'fc211414130ab2764132e7370f8e5caa'
+ '85179f5e0437514f8639957e1d8baf62'
+ 'f11852b97583610f3dbb669ebc3e21bc'
+ '6b771c8a81dd90b45e8a79afa0e5bbfd'
+ 'af1259401447f4de59f1d4c2cbedafed')
+
+build() {
+ unset QMAKESPEC
+ export QT4DIR=$srcdir/$_pkgfqn
+ export PATH=${QT4DIR}/bin:${PATH}
+ export LD_LIBRARY_PATH=${QT4DIR}/lib:${LD_LIBRARY_PATH}
+
+ cd $srcdir/$_pkgfqn
+
+ sed -i "s|-O2|$CXXFLAGS|" mkspecs/common/g++.conf
+ sed -i "/^QMAKE_RPATH/s| -Wl,-rpath,||g" mkspecs/common/g++.conf
+ sed -i "/^QMAKE_LFLAGS\s/s|+=|+= $LDFLAGS|g" mkspecs/common/g++.conf
+
+ ./configure -confirm-license -opensource \
+ -prefix /usr \
+ -docdir /usr/share/doc/qt \
+ -plugindir /usr/lib/qt/plugins \
+ -importdir /usr/lib/qt/imports \
+ -datadir /usr/share/qt \
+ -translationdir /usr/share/qt/translations \
+ -sysconfdir /etc \
+ -examplesdir /usr/share/doc/qt/examples \
+ -demosdir /usr/share/doc/qt/demos \
+ -largefile \
+ -plugin-sql-{psql,mysql,sqlite,odbc} \
+ -system-sqlite \
+ -xmlpatterns \
+ -no-phonon \
+ -no-phonon-backend \
+ -svg \
+ -webkit \
+ -script \
+ -scripttools \
+ -system-zlib \
+ -system-libtiff \
+ -system-libpng \
+ -system-libmng \
+ -system-libjpeg \
+ -nomake demos \
+ -nomake examples \
+ -nomake docs \
+ -no-rpath \
+ -openssl-linked \
+ -silent \
+ -optimized-qmake \
+ -dbus \
+ -reduce-relocations \
+ -no-separate-debug-info \
+ -gtkstyle \
+ -opengl \
+ -no-openvg \
+ -glib
+ make
+}
+
+package_qt() {
+ pkgdesc='A cross-platform application and UI framework'
+ depends=('libtiff' 'libpng' 'libmng' 'sqlite3' 'ca-certificates' 'glib2' 'dbus'
+ 'fontconfig' 'libgl' 'libsm' 'libxrandr' 'libxv' 'libxi' 'alsa-lib'
+ 'xdg-utils' 'hicolor-icon-theme' 'desktop-file-utils')
+ optdepends=('postgresql-libs: PostgreSQL driver'
+ 'libmysqlclient: MySQL driver'
+ 'unixodbc: ODBC driver'
+ 'libxinerama: Xinerama support'
+ 'libxcursor: Xcursor support'
+ 'libxfixes: Xfixes support')
+ install='qt.install'
+
+ cd $srcdir/$_pkgfqn
+ make INSTALL_ROOT=$pkgdir install
+
+ # install missing icons and desktop files
+ for icon in tools/linguist/linguist/images/icons/linguist-*-32.png ; do
+ size=$(echo $(basename ${icon}) | cut -d- -f2)
+ install -p -D -m644 ${icon} ${pkgdir}/usr/share/icons/hicolor/${size}x${size}/apps/linguist.png
+ done
+ install -p -D -m644 src/gui/dialogs/images/qtlogo-64.png ${pkgdir}/usr/share/icons/hicolor/64x64/apps/qtlogo.png
+ install -p -D -m644 tools/assistant/tools/assistant/images/assistant.png ${pkgdir}/usr/share/icons/hicolor/32x32/apps/assistant.png
+ install -p -D -m644 tools/designer/src/designer/images/designer.png ${pkgdir}/usr/share/icons/hicolor/128x128/apps/designer.png
+ install -d ${pkgdir}/usr/share/applications
+ install -m644 ${srcdir}/{linguist,designer,assistant,qtconfig}.desktop ${pkgdir}/usr/share/applications/
+
+ # install license addition
+ install -D -m644 LGPL_EXCEPTION.txt ${pkgdir}/usr/share/licenses/qt/LGPL_EXCEPTION.txt
+
+ # Fix wrong path in pkgconfig files
+ find ${pkgdir}/usr/lib/pkgconfig -type f -name '*.pc' \
+ -exec perl -pi -e "s, -L${srcdir}/?\S+,,g" {} \;
+ # Fix wrong path in prl files
+ find ${pkgdir}/usr/lib -type f -name '*.prl' \
+ -exec sed -i -e '/^QMAKE_PRL_BUILD_DIR/d;s/\(QMAKE_PRL_LIBS =\).*/\1/' {} \;
+}
+
+package_qt-private-headers(){
+ pkgdesc="Qt private headers for development"
+ depends=("qt=${pkgver}")
+
+ install -d ${pkgdir}/usr/include/phonon/private
+ cd ${srcdir}/$_pkgfqn/src/3rdparty/phonon/phonon/
+ find . -name "*_p.h" -exec install -m644 {} \
+ ${pkgdir}/usr/include/phonon/private/ \; &> /dev/null
+
+ install -d ${pkgdir}/usr/include/Qt3Support/private
+ cd ${srcdir}/$_pkgfqn/src/qt3support/
+ find . -name "*_p.h" -exec install -m644 {} \
+ ${pkgdir}/usr/include/Qt3Support/private/ \; &> /dev/null
+
+ install -d ${pkgdir}/usr/include/QtCore/private
+ cd ${srcdir}/$_pkgfqn/src/corelib/
+ find . -name "*_p.h" -exec install -m644 {} \
+ ${pkgdir}/usr/include/QtCore/private/ \; &> /dev/null
+
+ install -d ${pkgdir}/usr/include/QtDBus/private
+ cd ${srcdir}/$_pkgfqn/src/dbus/
+ find . -name "*_p.h" -exec install -m644 {} \
+ ${pkgdir}/usr/include/QtDBus/private/ \; &> /dev/null
+
+ install -d ${pkgdir}/usr/include/QtDeclarative/private
+ cd ${srcdir}/$_pkgfqn/src/declarative/
+ find . -name "*_p.h" -exec install -m644 {} \
+ ${pkgdir}/usr/include/QtDeclarative/private/ \; &> /dev/null
+
+ install -d ${pkgdir}/usr/include/QtDesigner/private
+ cd ${srcdir}/$_pkgfqn/tools/designer/
+ find . -name "*_p.h" -exec install -m644 {} \
+ ${pkgdir}/usr/include/QtDesigner/private/ \; &> /dev/null
+
+ install -d ${pkgdir}/usr/include/QtGui/private
+ cd ${srcdir}/$_pkgfqn/src/gui/
+ find . -name "*_p.h" -exec install -m644 {} \
+ ${pkgdir}/usr/include/QtGui/private/ \; &> /dev/null
+
+ install -d ${pkgdir}/usr/include/QtHelp/private
+ cd ${srcdir}/$_pkgfqn/tools/assistant/
+ find . -name "*_p.h" -exec install -m644 {} \
+ ${pkgdir}/usr/include/QtHelp/private/ \; &> /dev/null
+
+ install -d ${pkgdir}/usr/include/QtMultimedia/private
+ cd ${srcdir}/$_pkgfqn/src/multimedia/
+ find . -name "*_p.h" -exec install -m644 {} \
+ ${pkgdir}/usr/include/QtMultimedia/private/ \; &> /dev/null
+
+ install -d ${pkgdir}/usr/include/QtNetwork/private
+ cd ${srcdir}/$_pkgfqn/src/network/
+ find . -name "*_p.h" -exec install -m644 {} \
+ ${pkgdir}/usr/include/QtNetwork/private/ \; &> /dev/null
+
+ install -d ${pkgdir}/usr/include/QtOpenGL/private
+ cd ${srcdir}/$_pkgfqn/src/opengl/
+ find . -name "*_p.h" -exec install -m644 {} \
+ ${pkgdir}/usr/include/QtOpenGL/private/ \; &> /dev/null
+
+ install -d ${pkgdir}/usr/include/QtScript/private
+ cd ${srcdir}/$_pkgfqn/src/script/
+ find . -name "*_p.h" -exec install -m644 {} \
+ ${pkgdir}/usr/include/QtScript/private/ \; &> /dev/null
+
+ install -d ${pkgdir}/usr/include/QtScriptTools/private
+ cd ${srcdir}/$_pkgfqn/src/scripttools/
+ find . -name "*_p.h" -exec install -m644 {} \
+ ${pkgdir}/usr/include/QtScriptTools/private/ \; &> /dev/null
+
+ install -d ${pkgdir}/usr/include/QtSql/private
+ cd ${srcdir}/$_pkgfqn/src/sql/
+ find . -name "*_p.h" -exec install -m644 {} \
+ ${pkgdir}/usr/include/QtSql/private/ \; &> /dev/null
+
+ install -d ${pkgdir}/usr/include/QtSvg/private
+ cd ${srcdir}/$_pkgfqn/src/svg/
+ find . -name "*_p.h" -exec install -m644 {} \
+ ${pkgdir}/usr/include/QtSvg/private/ \; &> /dev/null
+
+ install -d ${pkgdir}/usr/include/QtTest/private
+ cd ${srcdir}/$_pkgfqn/src/testlib/
+ find . -name "*_p.h" -exec install -m644 {} \
+ ${pkgdir}/usr/include/QtTest/private/ \; &> /dev/null
+
+ install -d ${pkgdir}/usr/include/QtUiTools/private
+ cd ${srcdir}/$_pkgfqn/tools/designer/src/uitools
+ find . -name "*_p.h" -exec install -m644 {} \
+ ${pkgdir}/usr/include/QtUiTools/private/ \; &> /dev/null
+
+ install -d ${pkgdir}/usr/include/QtWebKit/private
+ cd ${srcdir}/$_pkgfqn/src/3rdparty/webkit
+ find . -name "*_p.h" -exec install -m644 {} \
+ ${pkgdir}/usr/include/QtWebKit/private/ \; &> /dev/null
+
+ install -d ${pkgdir}/usr/include/QtXmlPatterns/private
+ cd ${srcdir}/$_pkgfqn/src/xmlpatterns/
+ find . -name "*_p.h" -exec install -m644 {} \
+ ${pkgdir}/usr/include/QtXmlPatterns/private/ \; &> /dev/null
+}
diff --git a/extra/qt/assistant.desktop b/extra/qt/assistant.desktop
new file mode 100644
index 000000000..a9e98c44b
--- /dev/null
+++ b/extra/qt/assistant.desktop
@@ -0,0 +1,9 @@
+[Desktop Entry]
+Name=Qt Assistant
+Comment=Shows Qt documentation and examples
+Exec=/usr/bin/assistant
+Icon=assistant
+Terminal=false
+Encoding=UTF-8
+Type=Application
+Categories=Qt;Development;Documentation;
diff --git a/extra/qt/blacklist-fraudulent-comodo-certificates.patch b/extra/qt/blacklist-fraudulent-comodo-certificates.patch
new file mode 100644
index 000000000..bd2da5bb3
--- /dev/null
+++ b/extra/qt/blacklist-fraudulent-comodo-certificates.patch
@@ -0,0 +1,89 @@
+diff --git a/src/network/ssl/qsslcertificate.cpp b/src/network/ssl/qsslcertificate.cpp
+index 618ac79..a5cdf01 100644
+--- a/src/network/ssl/qsslcertificate.cpp
++++ b/src/network/ssl/qsslcertificate.cpp
+@@ -219,17 +219,19 @@ bool QSslCertificate::isNull() const
+ Returns true if this certificate is valid; otherwise returns
+ false.
+
+- Note: Currently, this function only checks that the current
++ Note: Currently, this function checks that the current
+ data-time is within the date-time range during which the
+- certificate is considered valid. No other checks are
+- currently performed.
++ certificate is considered valid, and checks that the
++ certificate is not in a blacklist of fraudulent certificates.
+
+ \sa isNull()
+ */
+ bool QSslCertificate::isValid() const
+ {
+ const QDateTime currentTime = QDateTime::currentDateTime();
+- return currentTime >= d->notValidBefore && currentTime <= d->notValidAfter;
++ return currentTime >= d->notValidBefore &&
++ currentTime <= d->notValidAfter &&
++ ! QSslCertificatePrivate::isBlacklisted(*this);
+ }
+
+ /*!
+@@ -798,6 +800,30 @@ QList<QSslCertificate> QSslCertificatePrivate::certificatesFromDer(const QByteAr
+ return certificates;
+ }
+
++// These certificates are known to be fraudulent and were created during the comodo
++// compromise. See http://www.comodo.com/Comodo-Fraud-Incident-2011-03-23.html
++static const char *certificate_blacklist[] = {
++ "04:7e:cb:e9:fc:a5:5f:7b:d0:9e:ae:36:e1:0c:ae:1e",
++ "f5:c8:6a:f3:61:62:f1:3a:64:f5:4f:6d:c9:58:7c:06",
++ "d7:55:8f:da:f5:f1:10:5b:b2:13:28:2b:70:77:29:a3",
++ "39:2a:43:4f:0e:07:df:1f:8a:a3:05:de:34:e0:c2:29",
++ "3e:75:ce:d4:6b:69:30:21:21:88:30:ae:86:a8:2a:71",
++ "e9:02:8b:95:78:e4:15:dc:1a:71:0a:2b:88:15:44:47",
++ "92:39:d5:34:8f:40:d1:69:5a:74:54:70:e1:f2:3f:43",
++ "b0:b7:13:3e:d0:96:f9:b5:6f:ae:91:c8:74:bd:3a:c0",
++ "d8:f3:5f:4e:b7:87:2b:2d:ab:06:92:e3:15:38:2f:b0",
++ 0
++};
++
++bool QSslCertificatePrivate::isBlacklisted(const QSslCertificate &certificate)
++{
++ for (int a = 0; certificate_blacklist[a] != 0; a++) {
++ if (certificate.serialNumber() == certificate_blacklist[a])
++ return true;
++ }
++ return false;
++}
++
+ #ifndef QT_NO_DEBUG_STREAM
+ QDebug operator<<(QDebug debug, const QSslCertificate &certificate)
+ {
+diff --git a/src/network/ssl/qsslcertificate_p.h b/src/network/ssl/qsslcertificate_p.h
+index cdceb0f..1ce33d3 100644
+--- a/src/network/ssl/qsslcertificate_p.h
++++ b/src/network/ssl/qsslcertificate_p.h
+@@ -96,6 +96,7 @@ public:
+ static QSslCertificate QSslCertificate_from_X509(X509 *x509);
+ static QList<QSslCertificate> certificatesFromPem(const QByteArray &pem, int count = -1);
+ static QList<QSslCertificate> certificatesFromDer(const QByteArray &der, int count = -1);
++ static bool isBlacklisted(const QSslCertificate &certificate);
+
+ friend class QSslSocketBackendPrivate;
+
+diff --git a/src/network/ssl/qsslsocket_openssl.cpp b/src/network/ssl/qsslsocket_openssl.cpp
+index 0866534..2427193 100644
+--- a/src/network/ssl/qsslsocket_openssl.cpp
++++ b/src/network/ssl/qsslsocket_openssl.cpp
+@@ -1193,6 +1193,13 @@ bool QSslSocketBackendPrivate::startHandshake()
+ X509 *x509 = q_SSL_get_peer_certificate(ssl);
+ configuration.peerCertificate = QSslCertificatePrivate::QSslCertificate_from_X509(x509);
+ q_X509_free(x509);
++ if (QSslCertificatePrivate::isBlacklisted(configuration.peerCertificate)) {
++ q->setErrorString(QSslSocket::tr("The peer certificate is blacklisted"));
++ q->setSocketError(QAbstractSocket::SslHandshakeFailedError);
++ emit q->error(QAbstractSocket::SslHandshakeFailedError);
++ plainSocket->disconnectFromHost();
++ return false;
++ }
+
+ // Start translating errors.
+ QList<QSslError> errors;
diff --git a/extra/qt/designer.desktop b/extra/qt/designer.desktop
new file mode 100644
index 000000000..9b7b6e9aa
--- /dev/null
+++ b/extra/qt/designer.desktop
@@ -0,0 +1,11 @@
+[Desktop Entry]
+Name=Qt Designer
+GenericName=Interface Designer
+Comment=Design GUIs for Qt applications
+Exec=/usr/bin/designer
+Icon=designer
+MimeType=application/x-designer;
+Terminal=false
+Encoding=UTF-8
+Type=Application
+Categories=Qt;Development;
diff --git a/extra/qt/linguist.desktop b/extra/qt/linguist.desktop
new file mode 100644
index 000000000..8cbe86599
--- /dev/null
+++ b/extra/qt/linguist.desktop
@@ -0,0 +1,10 @@
+[Desktop Entry]
+Name=Qt Linguist
+Comment=Add translations to Qt applications
+Exec=/usr/bin/linguist
+Icon=linguist
+MimeType=text/vnd.trolltech.linguist;application/x-linguist;
+Terminal=false
+Encoding=UTF-8
+Type=Application
+Categories=Qt;Development;
diff --git a/extra/qt/qt.install b/extra/qt/qt.install
new file mode 100644
index 000000000..81ce5c4b0
--- /dev/null
+++ b/extra/qt/qt.install
@@ -0,0 +1,12 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+ update-desktop-database -q
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/extra/qt/qtconfig.desktop b/extra/qt/qtconfig.desktop
new file mode 100644
index 000000000..46dcf9e3d
--- /dev/null
+++ b/extra/qt/qtconfig.desktop
@@ -0,0 +1,10 @@
+[Desktop Entry]
+Name=Qt Config
+Comment=Configure Qt behavior, styles, fonts
+Exec=/usr/bin/qtconfig
+Icon=qtlogo
+Terminal=false
+Encoding=UTF-8
+Type=Application
+Categories=Qt;Settings;
+NoDisplay=true
diff --git a/extra/qt3/PKGBUILD b/extra/qt3/PKGBUILD
new file mode 100644
index 000000000..c7f6570e2
--- /dev/null
+++ b/extra/qt3/PKGBUILD
@@ -0,0 +1,118 @@
+# $Id: PKGBUILD 114776 2011-03-15 23:09:15Z andrea $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+# Contributor: John Proctor <jproctor@prium.net>
+
+pkgname=qt3
+pkgver=3.3.8
+pkgrel=19
+pkgdesc="The QT gui toolkit."
+arch=(i686 x86_64)
+license=('GPL')
+url="http://www.trolltech.com/products/qt/index.html"
+pkgfqn=qt-x11-free-${pkgver}
+install=qt.install
+depends=('libpng>=1.4.0' 'libxmu' 'libxcursor' 'libxinerama' 'mesa' \
+ 'libxft' 'libxrandr' 'libmng>=1.0.10-3')
+makedepends=('mysql' 'postgresql>=8.2.3' 'unixodbc' 'sqlite3')
+optdepends=('libmysqlclient' 'postgresql-libs' 'unixodbc')
+source=(ftp://ftp.trolltech.com/qt/source/${pkgfqn}.tar.bz2 qt3-png14.patch qt.profile \
+ qt-copy-kde-patches.tar.bz2 qt-patches.tar.bz2 utf8-bug-qt3.diff \
+ qt-font-default-subst.diff mysql.patch eastern_asian_languagues.diff qt-odbc.patch)
+options=(!libtool)
+md5sums=('cf3c43a7dfde5bfb76f8001102fe6e85'
+ '1dc671df42b9030dbdf68bb61cd3375e'
+ 'f72d1eb4eb49b9a9467c1f6035194266'
+ 'f2a2dbdbfee9422c90efc3ef3f86197c'
+ '2f00e5c0c1e2c2a23dddc982cd79f3e0'
+ 'f6b3b39040f2b8f19ba1cf1445468c28'
+ '9370d82e85f2c799335ed0dcc1d53189'
+ '7d40ed1bd40d33d8b9b27a2076a5d22a'
+ '616f1f3029cf8375256ad6a406de3549'
+ '2178ca88dfd75a230918593b30eb0dbe')
+
+# qt-copy-kde-patches come from http://websvn.kde.org/trunk/qt-copy/patches/
+# other qt-patches come from fedora and gentoo
+
+build() {
+ unset QMAKESPEC
+ export QTDIR=${srcdir}/$pkgfqn
+ export PATH=${QTDIR}/bin:${PATH}
+ export LD_LIBRARY_PATH=${QTDIR}/lib:${LD_LIBRARY_PATH}
+ export QMAKESPEC=$QTDIR/mkspecs/linux-g++
+ cd ${srcdir}/$pkgfqn
+ # apply qt patches from kde.org
+ for i in ../qt-copy-kde-patches/*; do
+ patch -Np0 -i $i || return 1
+ done
+ # apply other qt patches and one security fix from debian/gentoo
+ for i in ../qt-patches/*; do
+ patch -Np1 -i $i || return 1
+ done
+ # fix utf8 bug
+ patch -Np0 -i ../utf8-bug-qt3.diff || return 1
+ # fix asia fonts
+ patch -Np0 -i ../qt-font-default-subst.diff || return 1
+ # fix segfaults on exit when using mysql DB driver
+ patch -Np0 -i ../mysql.patch || return 1
+ # fix CJK font/chars select error (FS#11245)
+ patch -p1 -i ${srcdir}/eastern_asian_languagues.diff || return 1
+ # fix build problem against new unixODBC
+ patch -p1 -i ${srcdir}/qt-odbc.patch || return 1
+
+ patch -p0 -i ${srcdir}/qt3-png14.patch || return 1
+ # start compiling qt
+ sed -i 's|-cp -P -f|-cp -L -f|' qmake/Makefile.unix
+ rm -rf doc/html examples tutorial
+ sed -i "s|sub-tutorial sub-examples||" Makefile
+ sed -i "s|-O2|$CXXFLAGS|" mkspecs/linux-g++/qmake.conf
+ sed -i "s|-O2|$CXXFLAGS|" mkspecs/linux-g++-32/qmake.conf
+ sed -i "s|-O2|$CXXFLAGS|" mkspecs/linux-g++-64/qmake.conf
+ sed -i "s|-I. |$CXXFLAGS -I. |" qmake/Makefile.unix
+ sed -i "s|read acceptance|acceptance=yes|" configure
+
+ # remove unwanted mkspecs
+ rm -rf mkspecs/{*aix*,*bsd*,cygwin*,dgux*,darwin*,hpux*,hurd*,irix*,lynxos*,macx*,qnx*,reliant*,sco*,solaris*,tru64*,unixware*,win32*}
+
+ if [ "$CARCH" = "x86_64" ]; then
+ export ARCH="-64"
+ else unset ARCH
+ fi
+
+ ./configure -prefix /opt/qt -platform linux-g++$ARCH \
+ -system-zlib -qt-gif -release -shared -sm -nis -thread -stl \
+ -system-lib{png,jpeg,mng} \
+ -no-g++-exceptions -plugin-sql-{mysql,psql,sqlite,odbc}
+
+ # fix /opt/qt/lib path
+ [ "$CARCH" = "x86_64" ] && sed -i "s|/opt/qt/lib64|/opt/qt/lib|g" ${srcdir}/$pkgfqn/src/Makefile
+ [ "$CARCH" = "x86_64" ] && sed -i "s|/opt/qt/lib64|/opt/qt/lib|g" ${srcdir}/$pkgfqn/tools/designer/designer/Makefile
+ [ "$CARCH" = "x86_64" ] && sed -i "s|/opt/qt/lib64|/opt/qt/lib|g" ${srcdir}/$pkgfqn/tools/designer/editor/Makefile
+ [ "$CARCH" = "x86_64" ] && sed -i "s|/opt/qt/lib64|/opt/qt/lib|g" ${srcdir}/$pkgfqn/tools/assistant/lib/Makefile
+ [ "$CARCH" = "x86_64" ] && sed -i "s|/opt/qt/lib64|/opt/qt/lib|g" ${srcdir}/$pkgfqn/tools/designer/uilib/Makefile
+
+ cd ${srcdir}/$pkgfqn
+ make -C qmake || return 1
+ cd ${srcdir}/$pkgfqn/plugins/src/sqldrivers/mysql
+ ${srcdir}/$pkgfqn/bin/qmake -o Makefile "INCPATH+=/usr/include/mysql" "LIBS+=-L/usr/lib/mysql -lmysqlclient" mysql.pro
+ cd ${srcdir}/$pkgfqn/plugins/src/sqldrivers/psql
+ ${srcdir}/$pkgfqn/bin/qmake -o Makefile "INCPATH+=/usr/src/include /usr/include/postgresql/server" "LIBS+=-L/usr/lib -lpq" psql.pro
+
+ cd ${srcdir}/$pkgfqn
+ # fix the broken makefiles
+ #sed -i 's|[[:space:]]*strip.*doc/html.*$|#|g' src/Makefile
+ make || return 1
+ make INSTALL_ROOT=${pkgdir} install
+ rm -rf ${pkgdir}/opt/qt/{phrasebooks,templates,translations}
+ sed -i "s|-L${srcdir}/$pkgfqn/lib ||g" ${pkgdir}/opt/qt/lib/*.prl
+ install -D -m755 qmake/qmake ${pkgdir}/opt/qt/bin/qmake
+ install -D -m755 ${srcdir}/qt.profile ${pkgdir}/etc/profile.d/qt3.sh
+ ln -sf /opt/qt/bin/qtconfig ${pkgdir}/opt/qt/bin/qt3config
+ rm -f ${pkgdir}/opt/qt/mkspecs/linux-g++$ARCH/linux-g++$ARCH
+
+ # install man pages
+ mkdir -p ${pkgdir}/opt/qt/man
+ cp -r ${srcdir}/$pkgfqn/doc/man/{man1,man3} ${pkgdir}/opt/qt/man/
+
+ install -d -m755 ${pkgdir}/etc/ld.so.conf.d/
+ echo '/opt/qt/lib' > ${pkgdir}/etc/ld.so.conf.d/qt3.conf
+}
diff --git a/extra/qt3/eastern_asian_languagues.diff b/extra/qt3/eastern_asian_languagues.diff
new file mode 100644
index 000000000..7c25eef7d
--- /dev/null
+++ b/extra/qt3/eastern_asian_languagues.diff
@@ -0,0 +1,39 @@
+--- qt-x11-free-3.3.8b/src/kernel/qfontdatabase.cpp 2008-01-15 21:09:13.000000000 +0200
++++ qt-x11-free-3.3.8b/src/kernel/qfontdatabase.cpp 2008-03-10 11:34:22.000000000 +0200
+@@ -966,20 +966,22 @@
+
+ #ifdef Q_WS_X11
+ if (script == QFont::Han) {
+- // modify script according to locale
+- static QFont::Script defaultHan = QFont::UnknownScript;
+- if (defaultHan == QFont::UnknownScript) {
+- QCString locale = setlocale(LC_ALL, NULL);
+- if (locale.contains("ko"))
+- defaultHan = QFont::Han_Korean;
+- else if (locale.contains("zh_TW") || locale.contains("zh_HK"))
+- defaultHan = QFont::Han_TraditionalChinese;
+- else if (locale.contains("zh"))
+- defaultHan = QFont::Han_SimplifiedChinese;
+- else
+- defaultHan = QFont::Han_Japanese;
+- }
+- script = defaultHan;
++ // modify script according to locale
++ static QFont::Script defaultHan;
++ QCString locale = setlocale(LC_ALL, NULL);
++
++ if (locale.contains("ko"))
++ defaultHan = QFont::Han_Korean;
++ else if (locale.contains("zh_TW") || locale.contains("zh_HK"))
++ defaultHan = QFont::Han_TraditionalChinese;
++ else if (locale.contains("zh"))
++ defaultHan = QFont::Han_SimplifiedChinese;
++ else if (locale.contains("ja"))
++ defaultHan = QFont::Han_Japanese;
++ else
++ defaultHan = QFont::Han; // don't change
++
++ script = defaultHan;
+ }
+ #endif
+
diff --git a/extra/qt3/mysql.patch b/extra/qt3/mysql.patch
new file mode 100644
index 000000000..5f61edc67
--- /dev/null
+++ b/extra/qt3/mysql.patch
@@ -0,0 +1,47 @@
+--- src/sql/drivers/mysql/qsql_mysql.cpp
++++ src/sql/drivers/mysql/qsql_mysql.cpp
+@@ -37,7 +37,6 @@
+ #include "qsql_mysql.h"
+ #include <private/qsqlextension_p.h>
+
+-#include <qapplication.h>
+ #include <qdatetime.h>
+ #include <qvaluevector.h>
+ #include <qsqlrecord.h>
+@@ -341,14 +340,6 @@ int QMYSQLResult::numRowsAffected()
+ }
+
+ /////////////////////////////////////////////////////////
+-static void qServerEnd()
+-{
+-#ifndef Q_NO_MYSQL_EMBEDDED
+-# if MYSQL_VERSION_ID >= 40000
+- mysql_server_end();
+-# endif // MYSQL_VERSION_ID
+-#endif // Q_NO_MYSQL_EMBEDDED
+-}
+
+ static void qServerInit()
+ {
+@@ -366,9 +357,7 @@ static void qServerInit()
+ qWarning( "QMYSQLDriver::qServerInit: unable to start server." );
+ # endif
+ }
+- qAddPostRoutine(qServerEnd);
+ init = TRUE;
+-
+ # endif // MYSQL_VERSION_ID
+ #endif // Q_NO_MYSQL_EMBEDDED
+ }
+@@ -411,6 +400,11 @@ QMYSQLDriver::~QMYSQLDriver()
+ QSqlOpenExtension *ext = qSqlOpenExtDict()->take( this );
+ delete ext;
+ }
++#ifndef Q_NO_MYSQL_EMBEDDED
++# if MYSQL_VERSION_ID > 40000
++ mysql_server_end();
++# endif
++#endif
+ }
+
+ bool QMYSQLDriver::hasFeature( DriverFeature f ) const
diff --git a/extra/qt3/qt-copy-kde-patches.tar.bz2 b/extra/qt3/qt-copy-kde-patches.tar.bz2
new file mode 100644
index 000000000..19d899963
--- /dev/null
+++ b/extra/qt3/qt-copy-kde-patches.tar.bz2
Binary files differ
diff --git a/extra/qt3/qt-font-default-subst.diff b/extra/qt3/qt-font-default-subst.diff
new file mode 100644
index 000000000..3e286f74e
--- /dev/null
+++ b/extra/qt3/qt-font-default-subst.diff
@@ -0,0 +1,77 @@
+--- src/kernel/qfontdatabase_x11.cpp
++++ src/kernel/qfontdatabase_x11.cpp
+@@ -1589,15 +1589,6 @@ QFontEngine *loadEngine( QFont::Script s
+ if (script == QFont::Latin)
+ // add Euro character
+ FcCharSetAddChar(cs, 0x20ac);
+- if (script == QFont::Han_SimplifiedChinese)
+- FcCharSetAddChar(cs, 0x3400);
+- if (script == QFont::Han_TraditionalChinese){
+- FcCharSetAddChar(cs, 0x3435);
+- FcCharSetAddChar(cs, 0xE000);
+- FcCharSetAddChar(cs, 0xF6B1);
+- }
+- if (script == QFont::MiscellaneousSymbols)
+- FcCharSetAddChar(cs, 0x2714);
+ FcPatternAddCharSet(pattern, FC_CHARSET, cs);
+ FcCharSetDestroy(cs);
+ }
+@@ -1813,7 +1804,11 @@ static QFontEngine *loadFontConfigFont(c
+ FcPatternPrint(pattern);
+ #endif
+
++ // XftFontMatch calls the right ConfigSubstitute variants, but as we use
++ // FcFontMatch/Sort here we have to do it manually.
+ FcConfigSubstitute(0, pattern, FcMatchPattern);
++ XftDefaultSubstitute(QPaintDevice::x11AppDisplay(), QPaintDevice::x11AppScreen(), pattern);
++
+ // qDebug("1: pattern contains:");
+ // FcPatternPrint(pattern);
+
+@@ -1847,10 +1842,6 @@ static QFontEngine *loadFontConfigFont(c
+ value.u.s = (const FcChar8 *)cs.data();
+ FcPatternAddWeak(pattern, FC_FAMILY, value, FcTrue);
+ }
+-#ifdef FONT_MATCH_DEBUG
+- printf("final pattern contains:\n");
+- FcPatternPrint(pattern);
+-#endif
+ }
+
+ if (script != QFont::Unicode) {
+@@ -1860,19 +1851,15 @@ static QFontEngine *loadFontConfigFont(c
+ if (script == QFont::Latin)
+ // add Euro character
+ FcCharSetAddChar(cs, 0x20ac);
+- if (script == QFont::Han_SimplifiedChinese)
+- FcCharSetAddChar(cs, 0x3400);
+- if (script == QFont::Han_TraditionalChinese) {
+- FcCharSetAddChar(cs, 0x3435);
+- FcCharSetAddChar(cs, 0xE000);
+- FcCharSetAddChar(cs, 0xF6B1);
+- }
+- if (script == QFont::MiscellaneousSymbols)
+- FcCharSetAddChar(cs, 0x2714);
+ FcPatternAddCharSet(pattern, FC_CHARSET, cs);
+ FcCharSetDestroy(cs);
+ }
+
++#ifdef FONT_MATCH_DEBUG
++ printf("final pattern contains:\n");
++ FcPatternPrint(pattern);
++#endif
++
+ QFontEngine *fe = 0;
+
+ for( int jj = (FcGetVersion() >= 20392 ? 0 : 1); jj < 2; ++jj ) {
+--- src/kernel/qfontdatabase.cpp
++++ src/kernel/qfontdatabase.cpp
+@@ -554,7 +554,7 @@ static const unsigned short sample_chars
+ // GeometricSymbols,
+ { 0x2500, 0x0 },
+ // MiscellaneousSymbols,
+- { 0x2640, 0x0 },
++ { 0x2640, 0x2714, 0x0 },
+ // EnclosedAndSquare,
+ { 0x2460, 0x0 },
+ // Braille,
diff --git a/extra/qt3/qt-odbc.patch b/extra/qt3/qt-odbc.patch
new file mode 100644
index 000000000..6f21e3cf1
--- /dev/null
+++ b/extra/qt3/qt-odbc.patch
@@ -0,0 +1,19 @@
+diff -up qt-x11-free-3.3.8/src/sql/drivers/odbc/qsql_odbc.cpp.orig qt-x11-free-3.3.8/src/sql/drivers/odbc/qsql_odbc.cpp
+--- qt-x11-free-3.3.8/src/sql/drivers/odbc/qsql_odbc.cpp.orig 2009-02-24 11:32:27.000000000 +0100
++++ qt-x11-free-3.3.8/src/sql/drivers/odbc/qsql_odbc.cpp 2009-02-24 11:33:43.000000000 +0100
+@@ -57,13 +57,13 @@
+ #endif
+
+ // newer platform SDKs use SQLLEN instead of SQLINTEGER
+-#ifdef SQLLEN
++#if defined(SQLLEN) || defined(Q_OS_WIN64) || defined(Q_OS_UNIX)
+ # define QSQLLEN SQLLEN
+ #else
+ # define QSQLLEN SQLINTEGER
+ #endif
+
+-#ifdef SQLULEN
++#if defined(SQLULEN) || defined(Q_OS_WIN64) || defined(Q_OS_UNIX)
+ # define QSQLULEN SQLULEN
+ #else
+ # define QSQLULEN SQLUINTEGER
diff --git a/extra/qt3/qt-patches.tar.bz2 b/extra/qt3/qt-patches.tar.bz2
new file mode 100644
index 000000000..3f4aee171
--- /dev/null
+++ b/extra/qt3/qt-patches.tar.bz2
Binary files differ
diff --git a/extra/qt3/qt.install b/extra/qt3/qt.install
new file mode 100644
index 000000000..6d042daae
--- /dev/null
+++ b/extra/qt3/qt.install
@@ -0,0 +1,12 @@
+post_install() {
+ post_remove
+}
+
+post_upgrade() {
+ post_remove
+}
+
+post_remove() {
+ # this can be removed in future versions
+ sed -e '/\/opt\/qt\/lib/d' -i etc/ld.so.conf
+}
diff --git a/extra/qt3/qt.profile b/extra/qt3/qt.profile
new file mode 100644
index 000000000..ed4d232ae
--- /dev/null
+++ b/extra/qt3/qt.profile
@@ -0,0 +1,4 @@
+export QTDIR=/opt/qt
+export QT_XFT=true
+export PATH=$PATH:$QTDIR/bin
+export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/opt/qt/lib/pkgconfig
diff --git a/extra/qt3/qt3-png14.patch b/extra/qt3/qt3-png14.patch
new file mode 100644
index 000000000..e8a194529
--- /dev/null
+++ b/extra/qt3/qt3-png14.patch
@@ -0,0 +1,33 @@
+--- src/kernel/qpngio.cpp.orig 2010-01-16 22:02:41.000000000 +0100
++++ src/kernel/qpngio.cpp 2010-01-16 22:03:56.000000000 +0100
+@@ -159,7 +159,7 @@
+ image.setColor( i, qRgba(c,c,c,0xff) );
+ }
+ if ( png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS) ) {
+- const int g = info_ptr->trans_values.gray;
++ const int g = info_ptr->trans_color.gray;
+ if (g < ncols) {
+ image.setAlphaBuffer(TRUE);
+ image.setColor(g, image.color(g) & RGB_MASK);
+@@ -187,7 +187,7 @@
+ info_ptr->palette[i].red,
+ info_ptr->palette[i].green,
+ info_ptr->palette[i].blue,
+- info_ptr->trans[i]
++ info_ptr->trans_alpha[i]
+ )
+ );
+ i++;
+@@ -321,9 +321,9 @@
+ png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS)
+ if (image.depth()==32 && png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS)) {
+ QRgb trans = 0xFF000000 | qRgb(
+- (info_ptr->trans_values.red << 8 >> bit_depth)&0xff,
+- (info_ptr->trans_values.green << 8 >> bit_depth)&0xff,
+- (info_ptr->trans_values.blue << 8 >> bit_depth)&0xff);
++ (info_ptr->trans_color.red << 8 >> bit_depth)&0xff,
++ (info_ptr->trans_color.green << 8 >> bit_depth)&0xff,
++ (info_ptr->trans_color.blue << 8 >> bit_depth)&0xff);
+ for (uint y=0; y<height; y++) {
+ for (uint x=0; x<info_ptr->width; x++) {
+ if (((uint**)jt)[y][x] == trans) {
diff --git a/extra/qt3/utf8-bug-qt3.diff b/extra/qt3/utf8-bug-qt3.diff
new file mode 100644
index 000000000..43e84a99f
--- /dev/null
+++ b/extra/qt3/utf8-bug-qt3.diff
@@ -0,0 +1,101 @@
+--- src/codecs/qutfcodec.cpp
++++ src/codecs/qutfcodec.cpp
+@@ -154,6 +154,7 @@
+
+ class QUtf8Decoder : public QTextDecoder {
+ uint uc;
++ uint min_uc;
+ int need;
+ bool headerDone;
+ public:
+@@ -167,8 +168,9 @@
+ result.setLength( len ); // worst case
+ QChar *qch = (QChar *)result.unicode();
+ uchar ch;
++ int error = -1;
+ for (int i=0; i<len; i++) {
+- ch = *chars++;
++ ch = chars[i];
+ if (need) {
+ if ( (ch&0xc0) == 0x80 ) {
+ uc = (uc << 6) | (ch & 0x3f);
+@@ -182,6 +184,8 @@
+ *qch++ = QChar(high);
+ *qch++ = QChar(low);
+ headerDone = TRUE;
++ } else if ((uc < min_uc) || (uc >= 0xd800 && uc <= 0xdfff) || (uc >= 0xfffe)) {
++ *qch++ = QChar::replacement;
+ } else {
+ if (headerDone || QChar(uc) != QChar::byteOrderMark)
+ *qch++ = uc;
+@@ -190,6 +194,7 @@
+ }
+ } else {
+ // error
++ i = error;
+ *qch++ = QChar::replacement;
+ need = 0;
+ }
+@@ -200,12 +205,21 @@
+ } else if ((ch & 0xe0) == 0xc0) {
+ uc = ch & 0x1f;
+ need = 1;
++ error = i;
++ min_uc = 0x80;
+ } else if ((ch & 0xf0) == 0xe0) {
+ uc = ch & 0x0f;
+ need = 2;
++ error = i;
++ min_uc = 0x800;
+ } else if ((ch&0xf8) == 0xf0) {
+ uc = ch & 0x07;
+ need = 3;
++ error = i;
++ min_uc = 0x10000;
++ } else {
++ // error
++ *qch++ = QChar::replacement;
+ }
+ }
+ }
+--- src/tools/qstring.cpp
++++ src/tools/qstring.cpp
+@@ -5805,6 +5805,7 @@
+ result.setLength( len ); // worst case
+ QChar *qch = (QChar *)result.unicode();
+ uint uc = 0;
++ uint min_uc = 0;
+ int need = 0;
+ int error = -1;
+ uchar ch;
+@@ -5822,6 +5823,12 @@
+ unsigned short low = uc%0x400 + 0xdc00;
+ *qch++ = QChar(high);
+ *qch++ = QChar(low);
++ } else if (uc < min_uc || (uc >= 0xd800 && uc <= 0xdfff) || (uc >= 0xfffe)) {
++ // overlong seqence, UTF16 surrogate or BOM
++ i = error;
++ qch = addOne(qch, result);
++ *qch++ = QChar(0xdbff);
++ *qch++ = QChar(0xde00+((uchar)utf8[i]));
+ } else {
+ *qch++ = uc;
+ }
+@@ -5844,14 +5851,17 @@
+ uc = ch & 0x1f;
+ need = 1;
+ error = i;
++ min_uc = 0x80;
+ } else if ((ch & 0xf0) == 0xe0) {
+ uc = ch & 0x0f;
+ need = 2;
+ error = i;
++ min_uc = 0x800;
+ } else if ((ch&0xf8) == 0xf0) {
+ uc = ch & 0x07;
+ need = 3;
+ error = i;
++ min_uc = 0x10000;
+ } else {
+ // Error
+ qch = addOne(qch, result);
diff --git a/extra/qtcurve-gtk2/PKGBUILD b/extra/qtcurve-gtk2/PKGBUILD
new file mode 100644
index 000000000..22fff627f
--- /dev/null
+++ b/extra/qtcurve-gtk2/PKGBUILD
@@ -0,0 +1,32 @@
+# $Id: PKGBUILD 115505 2011-03-18 09:05:13Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Pierre Schmitz <pierre@archlinux.de>
+
+pkgname=qtcurve-gtk2
+pkgver=1.8.7
+pkgrel=1
+arch=('i686' 'x86_64')
+groups=('qtcurve')
+license=('GPL')
+pkgdesc='A configurable set of widget styles for KDE and Gtk'
+url='http://www.kde-look.org/content/show.php?content=40492'
+depends=('gtk2')
+makedepends=('pkgconfig' 'cmake')
+options=('!libtool')
+source=("http://craigd.wikispaces.com/file/view/QtCurve-Gtk2-${pkgver}.tar.bz2")
+md5sums=('da80db7f6a0b60e37ce14b918bc5e682')
+
+build() {
+ cd $srcdir
+ mkdir build
+ cd build
+ cmake ../QtCurve-Gtk2-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=/usr
+ make
+}
+
+package() {
+ cd $srcdir/build
+ make DESTDIR=$pkgdir install
+}
diff --git a/extra/qtcurve-kde3/PKGBUILD b/extra/qtcurve-kde3/PKGBUILD
new file mode 100644
index 000000000..afec99259
--- /dev/null
+++ b/extra/qtcurve-kde3/PKGBUILD
@@ -0,0 +1,49 @@
+# $Id: PKGBUILD,v 1.43 2008/07/14 01:06:07 Pierre Exp $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Pierre Schmitz <pierre@archlinux.de>
+
+pkgname=qtcurve-kde3
+pkgver=1.8.3
+pkgrel=1
+arch=('i686' 'x86_64')
+groups=('qtcurve')
+license=('GPL')
+pkgdesc='A configurable set of widget styles for KDE and Gtk'
+url='http://www.kde-look.org/content/show.php?content=40492'
+depends=('kdelibs3')
+makedepends=('cmake' 'kdelibs')
+source=("http://craigd.wikispaces.com/file/view/QtCurve-KDE3-${pkgver}.tar.bz2"
+ 'kdeglobals'
+ 'bypass-kde-config.patch')
+md5sums=('ef0d682cafc2f1ada4939d3b43e2dc76'
+ '05a6294c7f0e239e698e7e5224fc8e7f'
+ 'e1ab2c0995e412b2cbfe804fba75517e')
+
+build() {
+ . /etc/profile.d/qt3.sh
+ . /etc/profile.d/kde3.sh
+
+ cd ${srcdir}/QtCurve-KDE3-${pkgver}
+ # Bypass KDE prefix detection by kde4-config, see:
+ # http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=541667
+ patch -Np1 -i ${srcdir}/bypass-kde-config.patch
+
+ cd ${srcdir}
+ mkdir build
+ cd build
+ cmake ../QtCurve-KDE3-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=/opt/kde
+ make
+}
+
+package() {
+ cd $srcdir/build
+ make DESTDIR=$pkgdir install
+
+ # remove kcontrol plugins
+ rm -f $pkgdir/opt/kde/lib/kde3/kstyle_qtcurve_config.*
+
+ # set default theme
+ install -D -m644 $srcdir/kdeglobals $pkgdir/opt/kde/share/config/kdeglobals
+}
diff --git a/extra/qtcurve-kde3/bypass-kde-config.patch b/extra/qtcurve-kde3/bypass-kde-config.patch
new file mode 100644
index 000000000..113fb93b8
--- /dev/null
+++ b/extra/qtcurve-kde3/bypass-kde-config.patch
@@ -0,0 +1,24 @@
+--- QtCurve-KDE3-1.6.0/CMakeLists.txt~ 2010-09-14 16:19:36.543333337 +0200
++++ QtCurve-KDE3-1.6.0/CMakeLists.txt 2010-09-14 16:22:18.160000003 +0200
+@@ -44,6 +44,12 @@
+ endif (QT_PLUGINS_DIR MATCHES NOTFOUND)
+ endif (NOT QTC_QT_ONLY)
+
++# Comment the kde3/kde4 prefix detection as a whole as it wants to run
++# kde-config and kde4-config, which in turn can create stuff in ~/.kde.
++# This cannot work on read-only homes.
++# So, the "fallback" prefixes ("/usr" for both) will be used.
++if (BRAINDEAD_DETECTION)
++
+ if (NOT QTC_QT_ONLY)
+ exec_program(kde-config
+ ARGS --prefix --expandvars
+@@ -71,6 +77,8 @@
+ OUTPUT_VARIABLE KDE4PREFIX)
+ endif(KDE4_KDECONFIG_EXECUTABLE)
+
++endif (BRAINDEAD_DETECTION)
++
+ if(NOT KDE4PREFIX)
+ set(KDE4PREFIX ${KDE3PREFIX})
+ endif(NOT KDE4PREFIX)
diff --git a/extra/qtcurve-kde3/kdeglobals b/extra/qtcurve-kde3/kdeglobals
new file mode 100644
index 000000000..ffbe26579
--- /dev/null
+++ b/extra/qtcurve-kde3/kdeglobals
@@ -0,0 +1,2 @@
+[General]
+widgetStyle=qtcurve
diff --git a/extra/qtcurve-kde4/PKGBUILD b/extra/qtcurve-kde4/PKGBUILD
new file mode 100644
index 000000000..267f40eae
--- /dev/null
+++ b/extra/qtcurve-kde4/PKGBUILD
@@ -0,0 +1,38 @@
+# $Id: PKGBUILD 115510 2011-03-18 09:08:27Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Pierre Schmitz <pierre@archlinux.de>
+
+pkgname=qtcurve-kde4
+pkgver=1.8.6
+pkgrel=1
+arch=('i686' 'x86_64')
+groups=('qtcurve')
+license=('GPL')
+pkgdesc='A configurable set of widget styles for KDE and Gtk'
+url='http://www.kde-look.org/content/show.php?content=40492'
+depends=('kdebase-workspace')
+makedepends=('cmake' 'automoc4')
+source=("http://craigd.wikispaces.com/file/view/QtCurve-KDE4-${pkgver}.tar.bz2"
+ 'bypass-kde-config.patch')
+md5sums=('2c7a9ab5d71da48a3118c6859b2b38e6'
+ '3f6681147cc361bd2bfd4d7477f2a8d0')
+
+build() {
+ cd ${srcdir}/QtCurve-KDE4-${pkgver}
+ # Bypass KDE prefix detection by kde4-config, see:
+ # http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=541667
+ patch -Np1 -i ${srcdir}/bypass-kde-config.patch
+
+ cd ${srcdir}
+ mkdir build
+ cd build
+ cmake ../QtCurve-KDE4-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=/usr
+ make
+}
+
+package() {
+ cd $srcdir/build
+ make DESTDIR=$pkgdir install
+}
diff --git a/extra/qtcurve-kde4/bypass-kde-config.patch b/extra/qtcurve-kde4/bypass-kde-config.patch
new file mode 100644
index 000000000..d09e5ead5
--- /dev/null
+++ b/extra/qtcurve-kde4/bypass-kde-config.patch
@@ -0,0 +1,32 @@
+From: Pino Toscano <pino@kde.org>
+Description: Disable braindead KDE3/4 prefix detection
+ The current detection of the KDE 3 and KDE 4 prefixes is done running
+ kde-config and kde4-config, resp.
+ This can be problematic, as these two could create files in ~/.kde,
+ thus breaking when the home of the current user (eg in buildds) is read-only.
+ Given the build system sets anyway "/usr" as prefix of KDE 3 and KDE 4
+ if they were not detected, then just let it to.
+Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=541667
+
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -16,6 +16,11 @@ set(CPACK_SOURCE_PACKAGE_FILE_NAME "${CM
+ set(CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${QTCURVE_VERSION_FULL}")
+ include(CPack)
+
++# Comment the kde3/kde4 prefix detection as a whole as it wants to run
++# kde-config and kde4-config, which in turn can create stuff in ~/.kde.
++# This cannot work on read-only homes.
++# So, the "fallback" prefixes ("/usr" for both) will be used.
++if (BRAINDEAD_DETECTION)
+ set(OLD_CMAKE_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX})
+
+ # Try to find kde4-config...
+@@ -48,6 +53,7 @@ if (KDE4_KDECONFIG_EXECUTABLE)
+ ARGS --prefix
+ OUTPUT_VARIABLE KDE4PREFIX)
+ endif (KDE4_KDECONFIG_EXECUTABLE)
++endif (BRAINDEAD_DETECTION)
+
+ if(NOT KDE3PREFIX)
+ if(KDE4PREFIX)
diff --git a/extra/qtiplot/PKGBUILD b/extra/qtiplot/PKGBUILD
new file mode 100644
index 000000000..03644f0cf
--- /dev/null
+++ b/extra/qtiplot/PKGBUILD
@@ -0,0 +1,78 @@
+# $Id: PKGBUILD 112432 2011-03-04 22:39:07Z eric $
+# Maintainer: Ronald van Haren <ronald.archlinux.org>
+# Contributor: damir <damir.archlinux.org>
+# Contributor: Gergely Imreh <imrehg@gmail.com>
+
+pkgname=qtiplot
+pkgver=0.9.8.2
+pkgrel=6
+pkgdesc="Data analysis and scientific plotting - free clone of Origin"
+arch=('i686' 'x86_64')
+url="http://soft.proindependent.com/qtiplot.html"
+depends=('muparser' 'gsl' 'python2-qt' 'boost-libs' 'shared-mime-info' 'mesa' 'liborigin2' 'qt-assistant-compat')
+# build against qwtplot3d provided in the package ...
+# build against qwt provided in the package ...
+# as systemwide one doesn't provide all needed functions
+makedepends=('pkg-config' 'boost')
+license=('GPL2')
+install=${pkgname}.install
+source=(http://download.berlios.de/qtiplot/qtiplot-${pkgver}.tar.bz2
+ $pkgname.desktop
+ $pkgname.png
+ build.conf.archlinux
+ qwtplot3d_gcc.patch
+ qtiplot.xml
+ qtiplot-0.9.7.14-system-liborigin.patch
+ gentoo-fix-origin-build-failure.patch)
+md5sums=('e8335a8760e8c2ac044607d5a4bb80ca' '56bd53f4f1367c285086acb969f13348'\
+ 'ad8affbd6f0d5cbdcde46c923ee2668a' '4fc37151dc30d5ca36fd7d891a8bc41b'\
+ 'ab02c436ec2c04b1838cb5517383b4eb' '35683f3b32e1edcca0bb02c471d284e9'\
+ 'fa7cfc5ba60d28f264ad53869d31fcc8' '642cb38c6579b51b86834c8640130b6f')
+sha1sums=('dd8d1003cee8767d4ba9e616e5263da1302c290d' '4d5d7cf3965a0a1b1aa9cafc34e70ee207700bc8'\
+ '4301cb2a36024a10108b689990d28c4fe5c7416e' '7afcdd4eca157f55e3ec4276712c466b3dc05106'\
+ '301bf6f70e8c1bb9ffd55eb49eedde7b29a12909' '285f57d865956d93250ec548288c5bface096b6b'\
+ '86899322f259be8594399642170f3f642d7f5f75' '9d6373fd9c0d1061796d1b920981124b6e9a49cf')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np0 -i "${srcdir}/qtiplot-0.9.7.14-system-liborigin.patch"
+ patch -Np0 -i "${srcdir}/gentoo-fix-origin-build-failure.patch"
+ install -Dm644 "${srcdir}/build.conf.archlinux" build.conf
+
+ # Make qwt
+ sed -i "s:elif:else:g" qtiplot/src/scripting/ScriptEdit.cpp
+ patch -Np1 -i "${srcdir}/qwtplot3d_gcc.patch"
+ cd ./3rdparty/qwt
+ qmake
+ make
+
+ # Make qwtplot3d
+ cd ../qwtplot3d
+ qmake
+ make
+
+ # Make qtiplot
+ cd "${srcdir}/${pkgname}-${pkgver}/${pkgname}"
+
+ # fix stuff
+ sed -i 's|/usr/local/|/usr/share/|' qtiplot.pro
+ sed -i 's|<QAssistantClient>|<QtAssistant/qassistantclient.h>|' src/core/ApplicationWindow.cpp
+ sed -i 's#d_python_config_folder + "#"/usr/share/qtiplot#' src/core/ApplicationWindow.cpp
+
+ qmake qtiplot.pro QMAKESPEC=linux-g++
+ make QTDIR=/usr/ QMAKESPEC=linux-g++
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}/${pkgname}"
+
+ INSTALL_ROOT="${pkgdir}" make install
+
+ # make it nice:
+ install -D -m644 "${srcdir}/${pkgname}.png" \
+ "${pkgdir}/usr/share/pixmaps/${pkgname}.png"
+ install -D -m644 "${srcdir}/${pkgname}.desktop" \
+ "${pkgdir}/usr/share/applications/${pkgname}.desktop"
+ install -D -m644 "${srcdir}/${pkgname}.xml" \
+ "${pkgdir}/usr/share/mime/packages/${pkgname}.xml"
+}
diff --git a/extra/qtiplot/build.conf.archlinux b/extra/qtiplot/build.conf.archlinux
new file mode 100644
index 000000000..2cab47f9c
--- /dev/null
+++ b/extra/qtiplot/build.conf.archlinux
@@ -0,0 +1,29 @@
+isEmpty( QTI_ROOT ) {
+ message( "each file including this config needs to set QTI_ROOT to the dir containing this file!" )
+}
+
+SYS_INCLUDEPATH = /usr/include
+SYS_LIBS = -L/usr/lib
+
+MUPARSER_LIBS = -lmuparser
+GSL_LIBS = -lgsl -lgslcblas
+BOOST_INCLUDEPATH = /usr/include/boost
+BOOST_LIBS = -lboost_date_time -lboost_thread
+QWT_INCLUDEPATH = $$QTI_ROOT/3rdparty/qwt/src
+QWT_LIBS = $$QTI_ROOT/3rdparty/qwt/lib/libqwt.a
+QWT3D_INCLUDEPATH = $$QTI_ROOT/3rdparty/qwtplot3d/include
+QWT3D_LIBS = $$QTI_ROOT/3rdparty/qwtplot3d/lib/libqwtplot3d.a
+LIB_ORIGIN_INCLUDEPATH = /usr/include/liborigin2
+LIB_ORIGIN_LIBS = -lorigin2
+QTEXENGINE_LIBS = $$QTI_ROOT/3rdparty/QTeXEngine
+
+PYTHON = python2
+LUPDATE = lupdate
+LRELEASE = lrelease
+
+SCRIPTING_LANGS += muParser
+SCRIPTING_LANGS += Python
+
+CONFIG += CustomInstall
+DEFINES += SCRIPTING_CONSOLE
+
diff --git a/extra/qtiplot/gentoo-fix-origin-build-failure.patch b/extra/qtiplot/gentoo-fix-origin-build-failure.patch
new file mode 100644
index 000000000..931d87009
--- /dev/null
+++ b/extra/qtiplot/gentoo-fix-origin-build-failure.patch
@@ -0,0 +1,72 @@
+--- qtiplot/src/origin/importOPJ.cpp 2010-09-01 11:07:38 +0000
++++ qtiplot/src/origin/importOPJ.cpp 2010-09-07 10:12:30 +0000
+@@ -473,6 +473,8 @@
+ }
+ table->setDayFormat(format, j);
+ break;
++ default:
++ break;
+ }
+ table->freeMemory();
+ }
+@@ -720,7 +722,6 @@
+ bkg.setAlpha(0);
+ graph->setCanvasBackground(bkg);
+
+- int auto_color = -1;
+ int style = 0;
+ bool matrixImage = false;
+ for(unsigned int c = 0; c < layer.curves.size(); ++c){
+@@ -1461,7 +1462,7 @@
+
+ if (boxWhiskersPlot){
+ QStringList curveNames;
+- for (unsigned int i = 0; i < graph->curveCount(); i++){
++ for (int i = 0; i < graph->curveCount(); i++){
+ BoxCurve *box = (BoxCurve *)graph->curve(i);
+ if (!box || box->type() != Graph::Box)
+ continue;
+@@ -1659,7 +1660,6 @@
+ for(unsigned int c = 0; c < layer.curves.size(); ++c){
+ Origin::GraphCurve& _curve = layer.curves[c];
+ QString data(_curve.dataName.c_str());
+- int color = 0;
+ double fFontScaleFactor = 2.0;
+ switch(_curve.type){
+ case Origin::GraphCurve::Line3D:
+@@ -1809,7 +1809,6 @@
+ }
+
+ QStringList formulas;
+- double start, end;
+
+ plot->showColorLegend(false);
+ plot->setFramed();
+@@ -1951,8 +1950,8 @@
+
+ QList <PieLabel *> pieTexts = p->labelsList();
+ QFont font(mw->plotLegendFont);
+- unsigned int lsize = layer.pieTexts.size();
+- for(unsigned int i = 0; i < lsize && i < pieTexts.size(); ++i){
++ int lsize = layer.pieTexts.size();
++ for(int i = 0; i < lsize && i < pieTexts.size(); ++i){
+ Origin::TextBox text = layer.pieTexts[lsize - i - 1];
+ font.setPointSizeF(text.fontSize*fFontScaleFactor);
+ QFontMetrics fm(font, graph);
+@@ -2159,12 +2158,12 @@
+ line.replace("&lbracket;", "(");
+ line.replace("&rbracket;", ")");
+
+- QRegExp fontModifier("\p(\\d)+\\(.*\\)");//remove \p163(...) like tags
++ QRegExp fontModifier("\\\\p(\\d)+\\(.*\\)");//remove \p163(...) like tags
+ int index = line.indexOf(fontModifier);
+ while (index >= 0){
+ int pos1 = line.indexOf("(", index + 2) + 1;
+ int length = fontModifier.matchedLength();
+- line = line.mid(pos1, length - pos1);
++ line = line.mid(pos1, length - pos1 - 1);
+ index = line.indexOf(fontModifier, index + length);
+ }
+
+
+
diff --git a/extra/qtiplot/qtiplot-0.9.7.14-system-liborigin.patch b/extra/qtiplot/qtiplot-0.9.7.14-system-liborigin.patch
new file mode 100644
index 000000000..71ecfd5b0
--- /dev/null
+++ b/extra/qtiplot/qtiplot-0.9.7.14-system-liborigin.patch
@@ -0,0 +1,101 @@
+=== modified file 'build.conf.example'
+--- build.conf.example 2010-04-22 18:57:40 +0000
++++ build.conf.example 2010-04-22 18:58:06 +0000
+@@ -118,6 +118,14 @@
+ EMF_ENGINE_LIBS = $$QTI_ROOT/3rdparty/EmfEngine/libEmfEngine.a
+
+ ##########################################################
++## liborigin - keep commented if you wish to use local copy
++# http://sourceforge.net/projects/liborigin/
++##########################################################
++
++# LIB_ORIGIN_INCLUDEPATH = /usr/include/liborigin2
++# LIB_ORIGIN_LIBS = -lorigin2
++
++##########################################################
+ ## python - only used if python is needed
+ ##########################################################
+
+
+=== modified file 'qtiplot/qtiplot.pro'
+--- qtiplot/qtiplot.pro 2010-04-22 18:57:40 +0000
++++ qtiplot/qtiplot.pro 2010-04-22 19:08:57 +0000
+@@ -16,6 +16,7 @@
+ INCLUDEPATH += $$QWT_INCLUDEPATH
+ INCLUDEPATH += $$QWT3D_INCLUDEPATH
+ INCLUDEPATH += $$GSL_INCLUDEPATH
++INCLUDEPATH += $$LIB_ORIGIN_INCLUDEPATH
+
+ # configurable libs
+ LIBS += $$MUPARSER_LIBS
+@@ -23,6 +24,7 @@
+ LIBS += $$QWT3D_LIBS
+ LIBS += $$QTEXENGINE_LIBS
+ LIBS += $$GSL_LIBS
++LIBS += $$LIB_ORIGIN_LIBS
+
+ #############################################################################
+ ###################### BASIC PROJECT PROPERTIES #############################
+@@ -150,6 +152,10 @@
+ SOURCES += ../3rdparty/QTeXEngine/src/QTeXPaintDevice.cpp
+ }
+
++isEmpty(LIB_ORIGIN_LIBS) {
++ INCLUDEPATH += ../3rdparty/liborigin
++}
++
+ ###############################################################
+ ##################### Scripting: PYTHON + SIP + PyQT ##########
+ ###############################################################
+
+=== modified file 'qtiplot/src/origin/origin.pri'
+--- qtiplot/src/origin/origin.pri 2010-04-22 17:58:49 +0000
++++ qtiplot/src/origin/origin.pri 2010-04-22 19:08:15 +0000
+@@ -4,24 +4,28 @@
+ INCLUDEPATH += src/origin/
+
+ HEADERS += src/origin/importOPJ.h
+-HEADERS += ../3rdparty/liborigin/OriginObj.h
+-HEADERS += ../3rdparty/liborigin/OriginFile.h
+-HEADERS += ../3rdparty/liborigin/OriginParser.h
+-HEADERS += ../3rdparty/liborigin/OriginDefaultParser.h
+-HEADERS += ../3rdparty/liborigin/Origin600Parser.h
+-HEADERS += ../3rdparty/liborigin/Origin610Parser.h
+-HEADERS += ../3rdparty/liborigin/Origin700Parser.h
+-HEADERS += ../3rdparty/liborigin/Origin750Parser.h
+-HEADERS += ../3rdparty/liborigin/Origin800Parser.h
+-HEADERS += ../3rdparty/liborigin/Origin810Parser.h
+
+ SOURCES += src/origin/importOPJ.cpp
+-SOURCES += ../3rdparty/liborigin/OriginFile.cpp
+-SOURCES += ../3rdparty/liborigin/OriginParser.cpp
+-SOURCES += ../3rdparty/liborigin/OriginDefaultParser.cpp
+-SOURCES += ../3rdparty/liborigin/Origin600Parser.cpp
+-SOURCES += ../3rdparty/liborigin/Origin610Parser.cpp
+-SOURCES += ../3rdparty/liborigin/Origin700Parser.cpp
+-SOURCES += ../3rdparty/liborigin/Origin750Parser.cpp
+-SOURCES += ../3rdparty/liborigin/Origin800Parser.cpp
+-SOURCES += ../3rdparty/liborigin/Origin810Parser.cpp
++
++isEmpty(LIB_ORIGIN_LIBS) {
++ HEADERS += ../3rdparty/liborigin/OriginObj.h
++ HEADERS += ../3rdparty/liborigin/OriginFile.h
++ HEADERS += ../3rdparty/liborigin/OriginParser.h
++ HEADERS += ../3rdparty/liborigin/OriginDefaultParser.h
++ HEADERS += ../3rdparty/liborigin/Origin600Parser.h
++ HEADERS += ../3rdparty/liborigin/Origin610Parser.h
++ HEADERS += ../3rdparty/liborigin/Origin700Parser.h
++ HEADERS += ../3rdparty/liborigin/Origin750Parser.h
++ HEADERS += ../3rdparty/liborigin/Origin800Parser.h
++ HEADERS += ../3rdparty/liborigin/Origin810Parser.h
++
++ SOURCES += ../3rdparty/liborigin/OriginFile.cpp
++ SOURCES += ../3rdparty/liborigin/OriginParser.cpp
++ SOURCES += ../3rdparty/liborigin/OriginDefaultParser.cpp
++ SOURCES += ../3rdparty/liborigin/Origin600Parser.cpp
++ SOURCES += ../3rdparty/liborigin/Origin610Parser.cpp
++ SOURCES += ../3rdparty/liborigin/Origin700Parser.cpp
++ SOURCES += ../3rdparty/liborigin/Origin750Parser.cpp
++ SOURCES += ../3rdparty/liborigin/Origin800Parser.cpp
++ SOURCES += ../3rdparty/liborigin/Origin810Parser.cpp
++}
diff --git a/extra/qtiplot/qtiplot.desktop b/extra/qtiplot/qtiplot.desktop
new file mode 100644
index 000000000..ab64b3852
--- /dev/null
+++ b/extra/qtiplot/qtiplot.desktop
@@ -0,0 +1,13 @@
+[Desktop Entry]
+Encoding=UTF-8
+Type=Application
+Exec=qtiplot
+Comment=An application for plotting and analysis of data sets and functions
+Comment[de]=Ein Programm zum Plotten und analysieren von Daten und Funktionen
+Terminal=false
+Name=QtiPlot
+Protocols=file
+Icon=/usr/share/pixmaps/qtiplot.png
+# Categories=QT;KDE;Science;Utility;X-KDE-More
+# Categories=Qt;KDE;Math;Education
+Categories=Science;X-Plotting;
diff --git a/extra/qtiplot/qtiplot.install b/extra/qtiplot/qtiplot.install
new file mode 100644
index 000000000..66631520d
--- /dev/null
+++ b/extra/qtiplot/qtiplot.install
@@ -0,0 +1,12 @@
+post_install() {
+ update-mime-database usr/share/mime &> /dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove () {
+ post_install
+}
+
diff --git a/extra/qtiplot/qtiplot.png b/extra/qtiplot/qtiplot.png
new file mode 100644
index 000000000..5b4b87b21
--- /dev/null
+++ b/extra/qtiplot/qtiplot.png
Binary files differ
diff --git a/extra/qtiplot/qtiplot.xml b/extra/qtiplot/qtiplot.xml
new file mode 100644
index 000000000..7ad4c4aa0
--- /dev/null
+++ b/extra/qtiplot/qtiplot.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
+ <mime-type type="application/x-qtiplot-project">
+ <sub-class-of type="text/plain"/>
+ <comment>QtiPlot project file</comment>
+ <glob pattern="*.qti" />
+ </mime-type>
+ <mime-type type="application/x-qtiplot-project-compressed">
+ <comment>Compressed QtiPlot project file</comment>
+ <glob pattern="*.qti.gz" />
+ </mime-type>
+ <mime-type type="application/x-qtiplot-project-backup">
+ <sub-class-of type="text/plain"/>
+ <comment>QtiPlot project file backup</comment>
+ <glob pattern="*.qti~" />
+ </mime-type>
+</mime-info>
diff --git a/extra/qtiplot/qwtplot3d_gcc.patch b/extra/qtiplot/qwtplot3d_gcc.patch
new file mode 100644
index 000000000..06aeb50f5
--- /dev/null
+++ b/extra/qtiplot/qwtplot3d_gcc.patch
@@ -0,0 +1,9 @@
+--- a/3rdparty/qwtplot3d/src/qwt3d_function.cpp 2009-07-25 20:03:28.000000000 -0700
++++ b/3rdparty/qwtplot3d/src/qwt3d_function.cpp 2009-07-25 20:03:28.000000000 -0700
+@@ -1,5 +1,6 @@
+ #include "qwt3d_surfaceplot.h"
+ #include "qwt3d_function.h"
++#include <cstdio>
+
+ using namespace Qwt3D;
+
diff --git a/extra/qtiplot/sip.patch b/extra/qtiplot/sip.patch
new file mode 100644
index 000000000..146f4c277
--- /dev/null
+++ b/extra/qtiplot/sip.patch
@@ -0,0 +1,13 @@
+--- qtiplot/src/scripting/scripting.pri.bak 2009-09-09 07:18:51.000000000 +0800
++++ qtiplot/src/scripting/scripting.pri 2009-11-08 12:45:03.000000000 +0800
+@@ -80,7 +80,9 @@
+ $${SIP_DIR}/sipqtiPythonScript.cpp\
+ $${SIP_DIR}/sipqtiPythonScripting.cpp\
+ $${SIP_DIR}/sipqtiFolder.cpp\
+- $${SIP_DIR}/sipqtiQList.cpp\
++ $${SIP_DIR}/sipqtiQList0101Folder.cpp \
++ $${SIP_DIR}/sipqtiQList0101Graph.cpp \
++ $${SIP_DIR}/sipqtiQList0101MdiSubWindow.cpp \
+ $${SIP_DIR}/sipqtiFit.cpp \
+ $${SIP_DIR}/sipqtiExponentialFit.cpp \
+ $${SIP_DIR}/sipqtiTwoExpFit.cpp \
diff --git a/extra/qtscriptgenerator/PKGBUILD b/extra/qtscriptgenerator/PKGBUILD
new file mode 100644
index 000000000..7e9773a58
--- /dev/null
+++ b/extra/qtscriptgenerator/PKGBUILD
@@ -0,0 +1,38 @@
+# $Id: PKGBUILD 75658 2010-04-02 04:17:23Z pierre $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=qtscriptgenerator
+pkgver=0.1.0
+pkgrel=4
+pkgdesc="Script generator for qt"
+arch=("i686" "x86_64")
+url="http://code.google.com/p/qtscriptgenerator/"
+license=('GPL')
+depends=('qt' 'phonon')
+makedepends=('pkgconfig' 'mesa')
+source=(http://qtscriptgenerator.googlecode.com/files/qtscriptgenerator-src-0.1.0.tar.gz
+ phonon.patch
+ qtscriptgenerator-gcc44.patch)
+md5sums=('ca4046ad4bda36cd4e21649d4b98886d' 'c0266892ecc645b3407f2203ee11a808'\
+ 'a3d48d6a3cfdd9be397bef01d3e4f638')
+
+build() {
+ cd $srcdir/$pkgname-src-$pkgver/generator
+ patch -p1 -i $srcdir/qtscriptgenerator-gcc44.patch || return 1
+ # prepare plugins
+ patch -Np2 -i $srcdir/phonon.patch || return 1
+ qmake || return 1
+ make || return 1
+ ./generator --include-paths=/usr/include || return 1
+ # build plugins
+ cd "$srcdir/$pkgname-src-$pkgver/qtbindings"
+ qmake || return 1
+ make || return 1
+}
+
+package() {
+ cd "$srcdir/$pkgname-src-$pkgver/qtbindings"
+ # move plugins to correct directory
+ mkdir -p $pkgdir/usr/lib/qt/plugins/script
+ mv $srcdir/$pkgname-src-$pkgver/plugins/script/* $pkgdir/usr/lib/qt/plugins/script/
+}
diff --git a/extra/qtscriptgenerator/phonon.patch b/extra/qtscriptgenerator/phonon.patch
new file mode 100644
index 000000000..cef0e1fa1
--- /dev/null
+++ b/extra/qtscriptgenerator/phonon.patch
@@ -0,0 +1,55 @@
+--- b/generator/qtscript_masterinclude.h 2009-03-21 20:37:30.719523909 -0400
++++ a/generator/qtscript_masterinclude.h 2009-03-21 21:00:25.108149339 -0400
+@@ -31,17 +31,41 @@
+
+ #include <QtUiTools/QtUiTools>
+
+-#ifndef QT_NO_XMLPATTERNS
+-# include <QtXmlPatterns/QtXmlPatterns>
+-#endif
+-
+-#ifndef QT_NO_WEBKIT
+-# include <QtWebKit/QtWebKit>
+-#endif
+-
+-#ifndef QT_NO_PHONON
+-# include <phonon/phonon>
+-#endif
++#include <QtXmlPatterns/QtXmlPatterns>
++
++#include <QtWebKit/QtWebKit>
++
++#include "phonon/abstractaudiooutput.h"
++#include "phonon/abstractmediastream.h"
++#include "phonon/abstractvideooutput.h"
++#include "phonon/addoninterface.h"
++#include "phonon/audiooutput.h"
++#include "phonon/audiooutputinterface.h"
++#include "phonon/backendcapabilities.h"
++#include "phonon/backendinterface.h"
++#include "phonon/effect.h"
++#include "phonon/effectinterface.h"
++#include "phonon/effectparameter.h"
++#include "phonon/effectwidget.h"
++#include "phonon/mediacontroller.h"
++#include "phonon/medianode.h"
++#include "phonon/mediaobject.h"
++#include "phonon/mediaobjectinterface.h"
++#include "phonon/mediasource.h"
++#include "phonon/objectdescription.h"
++#include "phonon/objectdescriptionmodel.h"
++#include "phonon/path.h"
++#include "phonon/phonondefs.h"
++#include "phonon/phononnamespace.h"
++#include "phonon/platformplugin.h"
++#include "phonon/seekslider.h"
++#include "phonon/streaminterface.h"
++#include "phonon/videoplayer.h"
++#include "phonon/videowidget.h"
++#include "phonon/videowidgetinterface.h"
++#include "phonon/volumefadereffect.h"
++#include "phonon/volumefaderinterface.h"
++#include "phonon/volumeslider.h"
+
+ #include "../qtbindings/qtscript_core/qtscriptconcurrent.h"
+
diff --git a/extra/qtscriptgenerator/qtscriptgenerator-gcc44.patch b/extra/qtscriptgenerator/qtscriptgenerator-gcc44.patch
new file mode 100644
index 000000000..dbb423e5d
--- /dev/null
+++ b/extra/qtscriptgenerator/qtscriptgenerator-gcc44.patch
@@ -0,0 +1,15 @@
+# Patch from upstream bug tracker:
+# http://code.google.com/p/qtscriptgenerator/issues/detail?id=37
+# So far (2009-06-12) this has not been applied at upstream git repo
+
+diff -uNr generator.orig/parser/rpp/pp.h generator/parser/rpp/pp.h
+--- generator.orig/parser/rpp/pp.h 2008-12-05 11:01:44.000000000 +0100
++++ generator/parser/rpp/pp.h 2008-12-13 10:42:22.000000000 +0100
+@@ -30,6 +30,7 @@
+ #include <cctype>
+
+ #include <fcntl.h>
++#include <cstdio>
+
+ #ifdef HAVE_MMAP
+ # include <sys/mman.h>
diff --git a/extra/quodlibet/PKGBUILD b/extra/quodlibet/PKGBUILD
new file mode 100644
index 000000000..b55269622
--- /dev/null
+++ b/extra/quodlibet/PKGBUILD
@@ -0,0 +1,38 @@
+#$Id: PKGBUILD 117459 2011-04-02 23:31:59Z eric $
+# Maintainer: Eric Bélanger <eric@archlinux.org>
+
+pkgname=quodlibet
+pkgver=2.3
+pkgrel=1
+pkgdesc="An audio player written in pygtk"
+arch=('i686' 'x86_64')
+license=('GPL2')
+url="http://code.google.com/p/quodlibet/"
+depends=('gstreamer0.10-python' 'gstreamer0.10-base-plugins' 'gstreamer0.10-good-plugins'
+ 'gstreamer0.10-ugly-plugins' 'mutagen' 'pygtk')
+makedepends=('intltool')
+optdepends=('gstreamer0.10-ffmpeg: for ffmpeg (ASF/WMA) support '
+ 'gstreamer0.10-bad-plugins: for MPEG-4 (AAC) and Musepack support'
+ 'dbus-python: for dbus support'
+ 'notification-daemon: for notification support'
+ 'libgpod: for ipod support'
+ 'python-feedparser: for audio feeds (podcast) support'
+ 'hal: for media devices support'
+ 'media-player-info: for media devices support')
+options=('!makeflags')
+source=(http://quodlibet.googlecode.com/files/${pkgname}-${pkgver}.tar.gz)
+md5sums=('e6bdb97decba40c33bd57e039d82c217')
+sha1sums=('dae756e8224139989f6b253ef2afe18eca55ef9f')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ sed -i 's#env python#env python2#' *.py
+ ./setup.py build
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./setup.py install --prefix="${pkgdir}/usr"
+ install -D -m644 quodlibet/images/exfalso.png "${pkgdir}/usr/share/pixmaps/exfalso.png"
+ install -D -m644 quodlibet/images/quodlibet.png "${pkgdir}/usr/share/pixmaps/quodlibet.png"
+}
diff --git a/extra/quota-tools/ChangeLog b/extra/quota-tools/ChangeLog
new file mode 100644
index 000000000..56c760b78
--- /dev/null
+++ b/extra/quota-tools/ChangeLog
@@ -0,0 +1,9 @@
+2009-01-07 Eric Belanger <eric@archlinux.org>
+
+ * quota-tools 3.17-1
+ * Upstream update
+
+2008-05-01 Eric Belanger <eric@archlinux.org>
+
+ * quota-tools 3.16-1
+ * Upstream update
diff --git a/extra/quota-tools/LICENSE b/extra/quota-tools/LICENSE
new file mode 100644
index 000000000..4bae71589
--- /dev/null
+++ b/extra/quota-tools/LICENSE
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 1980, 1990 Regents of the University of California. All
+ * rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by Robert Elz at
+ * The University of Melbourne.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met: 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer. 2.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution. 3. All advertising
+ * materials mentioning features or use of this software must display the
+ * following acknowledgement: This product includes software developed by the
+ * University of California, Berkeley and its contributors. 4. Neither the
+ * name of the University nor the names of its contributors may be used to
+ * endorse or promote products derived from this software without specific
+ * prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
diff --git a/extra/quota-tools/PKGBUILD b/extra/quota-tools/PKGBUILD
new file mode 100644
index 000000000..c4340848a
--- /dev/null
+++ b/extra/quota-tools/PKGBUILD
@@ -0,0 +1,32 @@
+# $Id: PKGBUILD 23363 2009-01-08 00:26:14Z eric $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+# Contributor: Judd <judd@archlinux.org>
+
+pkgname=quota-tools
+pkgver=3.17
+pkgrel=1
+pkgdesc="Tools to manage kernel-level quotas in Linux"
+arch=('i686' 'x86_64')
+url="http://sourceforge.net/projects/linuxquota/"
+license=('GPL' 'BSD')
+depends=('e2fsprogs' 'tcp_wrappers')
+backup=('etc/warnquota.conf' 'etc/quotatab' 'etc/quotagrpadmins')
+options=('!emptydirs')
+source=(http://downloads.sourceforge.net/sourceforge/linuxquota/quota-${pkgver}.tar.gz LICENSE)
+md5sums=('cb3e98a039c0cf98e7c1ad4b50a5bda7' 'dd792440e684043e4e4ef80963d0237b')
+sha1sums=('8dc04ea803a43496dfe275a8260757f558a2d762' '57297bdc9e638c500506169bbbe12eb89bcf7d07')
+
+build() {
+ cd ${srcdir}/${pkgname}
+ ./configure --prefix=/usr --sysconfdir=/etc || return 1
+ make || return 1
+ make ROOTDIR=${pkgdir} install || return 1
+ install -D -m644 ../LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE || return 1
+
+ # remove conflicts
+ # glibc
+ rm ${pkgdir}/usr/include/rpcsvc/rquota.h || return 1
+ rm ${pkgdir}/usr/include/rpcsvc/rquota.x || return 1
+ # man-pages
+ rm ${pkgdir}/usr/share/man/man2/quotactl.2 || return 1
+}
diff --git a/extra/qwt/PKGBUILD b/extra/qwt/PKGBUILD
new file mode 100644
index 000000000..daac13765
--- /dev/null
+++ b/extra/qwt/PKGBUILD
@@ -0,0 +1,42 @@
+# $Id: PKGBUILD 94465 2010-10-07 10:54:24Z ronald $
+# Maintainer: Ronald van Haren <ronald.archlinux.org>
+
+pkgname=qwt
+pkgver=5.2.1
+pkgrel=1
+pkgdesc="Qt Widgets for Technical Applications"
+arch=('i686' 'x86_64')
+url="http://qwt.sourceforge.net/"
+depends=('qt>=4.5.1')
+options=('!makeflags')
+license=("custom:$pkgname")
+source=("http://downloads.sourceforge.net/sourceforge/qwt/$pkgname-$pkgver.tar.bz2" \
+ "qwtconfig-archlinux.pri")
+md5sums=('4a595b8db0ec3856b117836c1d60cb27'
+ '2cb9135ec875d6de0214fcb032f184a3')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ # copy our config file to the right place
+ install -Dm644 ${srcdir}/qwtconfig-archlinux.pri \
+ ${srcdir}/${pkgname}-${pkgver}/qwtconfig.pri
+
+ # build qwt:
+ qmake qwt.pro
+ make || return 1
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ make INSTALL_ROOT=${pkgdir} QTDIR=/usr install
+
+ # fix doc files
+ install -d ${pkgdir}/usr/share/doc/${pkgname}
+ mv -f ${pkgdir}/usr/share/html/* ${pkgdir}/usr/share/doc/${pkgname}
+
+ # install licence
+ install -Dm644 ${srcdir}/${pkgname}-${pkgver}/COPYING \
+ ${pkgdir}/usr/share/licenses/${pkgname}/license.txt
+}
diff --git a/extra/qwt/qwtconfig-archlinux.pri b/extra/qwt/qwtconfig-archlinux.pri
new file mode 100644
index 000000000..646a2b759
--- /dev/null
+++ b/extra/qwt/qwtconfig-archlinux.pri
@@ -0,0 +1,85 @@
+######################################################################
+# Install paths
+######################################################################
+
+unix {
+ INSTALLBASE = /usr
+}
+
+win32 {
+ INSTALLBASE = C:/Qwt
+}
+
+target.path = $$INSTALLBASE/lib
+headers.path = $$INSTALLBASE/include/qwt
+doc.path = $$INSTALLBASE/share
+
+######################################################################
+# qmake internal options
+######################################################################
+
+CONFIG += qt # Also for Qtopia Core!
+CONFIG += warn_on
+CONFIG += thread
+
+######################################################################
+# release/debug mode
+# The designer plugin is always built in release mode.
+# If want to change this, you have to edit designer/designer.pro.
+######################################################################
+
+CONFIG += release # release/debug
+
+######################################################################
+# Build the static/shared libraries.
+# If QwtDll is enabled, a shared library is built, otherwise
+# it will be a static library.
+######################################################################
+
+CONFIG += QwtDll
+
+######################################################################
+# QwtPlot enables all classes, that are needed to use the QwtPlot
+# widget.
+######################################################################
+
+CONFIG += QwtPlot
+
+######################################################################
+# QwtWidgets enables all classes, that are needed to use the all other
+# widgets (sliders, dials, ...), beside QwtPlot.
+######################################################################
+
+CONFIG += QwtWidgets
+
+######################################################################
+# If you want to display svg images on the plot canvas, enable the
+# line below. Note that Qwt needs the svg+xml, when enabling
+# QwtSVGItem.
+######################################################################
+
+CONFIG += QwtSVGItem
+
+######################################################################
+# If you have a commercial license you can use the MathML renderer
+# of the Qt solutions package to enable MathML support in Qwt.
+# So if you want this, copy qtmmlwidget.h + qtmmlwidget.cpp to
+# textengines/mathml and enable the line below.
+######################################################################
+
+#CONFIG += QwtMathML
+
+######################################################################
+# If you want to build the Qwt designer plugin,
+# enable the line below.
+# Otherwise you have to build it from the designer directory.
+######################################################################
+
+CONFIG += QwtDesigner
+
+######################################################################
+# If you want to auto build the examples, enable the line below
+# Otherwise you have to build them from the examples directory.
+######################################################################
+
+#CONFIG += QwtExamples
diff --git a/extra/qwtplot3d/PKGBUILD b/extra/qwtplot3d/PKGBUILD
new file mode 100644
index 000000000..ec339174d
--- /dev/null
+++ b/extra/qwtplot3d/PKGBUILD
@@ -0,0 +1,42 @@
+# $Id: PKGBUILD 64675 2010-01-21 21:29:39Z eric $
+# Maintainer: damir <damir@archlinux.org>
+
+pkgname=qwtplot3d
+pkgver=0.2.7
+origver=0.2.7
+pkgrel=2
+pkgdesc="Qt/OpenGL-based C++ programming library containing 3d-widgets"
+arch=("i686" "x86_64")
+license=('custom:zlib')
+url="http://qwtplot3d.sourceforge.net/"
+depends=('qt>=4.3' 'qwt>=5.0.2')
+source=("http://downloads.sourceforge.net/sourceforge/qwtplot3d/qwtplot3d-$origver.tgz"
+ qwtplot3d-gcc44.patch)
+md5sums=('2f14660152e2e26bfeaaeec479ed9f2b' '92ad261ed5344bc773cba05b324cfe74')
+sha1sums=('4463fafb8420a91825e165da7a296aaabd70abea' '52fa169b651a98550f8a8391ddf52e0eaeb2c215')
+
+build() {
+ cd $startdir/src/$pkgname
+ patch -p1 < ../qwtplot3d-gcc44.patch || return 1
+ # . /etc/profile.d/qt3.sh
+ # build qwt:
+ qmake qwtplot3d.pro
+ make || return 1
+
+ # install qwtplot3d: (by hand, because the Makefile do not provide a "install:")
+ mkdir -p $startdir/pkg/usr/{include/qwtplot3d,lib}
+ # mkdir -p $startdir/pkg/usr/man/man3 .. no manpages yet
+
+ for n in include/* ; do
+ cp -d $n $startdir/pkg/usr/include/qwtplot3d || return 1
+ done
+
+ for n in lib/libqwtplot3d.so* ; do
+ cp -d $n $startdir/pkg/usr/lib || return 1
+ done
+
+ # for n in doc/man/man3/*.3 ; do
+ # install -m 644 $n $startdir/pkg/usr/man/man3
+ # done
+}
+
diff --git a/extra/qwtplot3d/qwtplot3d-gcc44.patch b/extra/qwtplot3d/qwtplot3d-gcc44.patch
new file mode 100644
index 000000000..a76fe831a
--- /dev/null
+++ b/extra/qwtplot3d/qwtplot3d-gcc44.patch
@@ -0,0 +1,12 @@
+diff -ur qwtplot3d-orig/include/qwt3d_function.h qwtplot3d/include/qwt3d_function.h
+--- qwtplot3d-orig/include/qwt3d_function.h 2009-07-25 18:18:58.000000000 -0400
++++ qwtplot3d/include/qwt3d_function.h 2009-07-25 18:19:19.000000000 -0400
+@@ -2,6 +2,7 @@
+ #define qwt3d_function_h__2004_03_05_13_51_begin_guarded_code
+
+ #include "qwt3d_gridmapping.h"
++#include <cstdio>
+
+ namespace Qwt3D
+ {
+Only in qwtplot3d/tmp: qwt3d_function.o
diff --git a/extra/r/PKGBUILD b/extra/r/PKGBUILD
new file mode 100644
index 000000000..f33ccd90e
--- /dev/null
+++ b/extra/r/PKGBUILD
@@ -0,0 +1,63 @@
+# $Id: PKGBUILD 111269 2011-02-25 16:10:57Z ronald $
+# Maintainer: Ronald van Haren <ronald.archlinux.org>
+# Contributor: Damir Perisa <damir.perisa@bluewin.ch>
+# Contributor: K. Piche <kpiche@rogers.com>
+
+pkgname=r
+pkgver=2.12.2
+pkgrel=1
+pkgdesc="R is a language and environment for statistical computing and graphics"
+arch=('i686' 'x86_64')
+license=('GPL')
+url=('http://www.r-project.org/')
+depends=('blas' 'lapack' 'bzip2' 'libpng' 'libjpeg' 'libtiff'
+ 'ncurses' 'pcre' 'readline' 'zlib' 'perl' 'gcc-libs'
+ 'tk' 'libxt' 'libxmu' 'pango')
+makedepends=('openjdk6' 'gcc-fortran')
+options=('!makeflags')
+source=("http://cran.r-project.org/src/base/R-2/R-${pkgver}.tar.gz"
+ 'r.desktop'
+ 'r.png')
+sha1sums=('dbdc46edbab2dbbdc115b7247f80da5fee3dd912'
+ 'bcc0320d7cc49d56408edc756b50a0f9ba98fe43'
+ 'a69a07ec363440efc18ce0a7f2af103375dea978')
+
+build() {
+ cd ${srcdir}/R-${pkgver}
+ sed -i 's|#define NeedFunctionPrototypes 0|#define NeedFunctionPrototypes 1|g' src/modules/X11/dataentry.c
+ ./configure --prefix=/usr \
+ --libdir=/usr/lib \
+ --datarootdir=/usr/share \
+ rsharedir=/usr/share/R/ \
+ rincludedir=/usr/include/R/ \
+ rdocdir=/usr/share/R/docs/ \
+ --with-gnu-ld \
+ --with-readline \
+ --with-x \
+ --with-zlib \
+ --with-bzlib \
+ --with-pcre \
+ --enable-R-shlib \
+ --with-lapack \
+ --with-blas \
+ F77=gfortran \
+ LIBnn=lib
+ make
+}
+
+package() {
+ cd ${srcdir}/R-${pkgver}
+ make -j1 DESTDIR=${pkgdir} install
+
+ # Fixup R wrapper scripts.
+ sed -i "s|${pkgdir} ||" ${pkgdir}/usr/bin/R
+ rm ${pkgdir}/usr/lib/R/bin/R
+ cd ${pkgdir}/usr/lib/R/bin
+ ln -s ../../../bin/R
+
+ # install some freedesktop.org compatibility
+ install -Dm644 ${srcdir}/r.desktop \
+ ${pkgdir}/usr/share/applications/r.desktop
+ install -Dm644 ${srcdir}/r.png \
+ ${pkgdir}/usr/share/pixmaps/r.png
+ }
diff --git a/extra/r/r.desktop b/extra/r/r.desktop
new file mode 100644
index 000000000..a1b6b1254
--- /dev/null
+++ b/extra/r/r.desktop
@@ -0,0 +1,12 @@
+[Desktop Entry]
+Name=R
+GenericName=environment for statistical computing
+Comment=language and environment for statistical computing and graphics
+Exec=R
+Icon=/usr/share/pixmaps/r.png
+DocPath=/usr/lib/R/doc/html/index.html
+StartupNotify=true
+Terminal=true
+TerminalOptions=
+Type=Application
+Categories=Science;Math
diff --git a/extra/r/r.png b/extra/r/r.png
new file mode 100644
index 000000000..1303ccdb9
--- /dev/null
+++ b/extra/r/r.png
Binary files differ
diff --git a/extra/racket/PKGBUILD b/extra/racket/PKGBUILD
new file mode 100644
index 000000000..21345b269
--- /dev/null
+++ b/extra/racket/PKGBUILD
@@ -0,0 +1,36 @@
+# $Id: PKGBUILD 110163 2011-02-17 06:55:24Z eric $
+# Maintainer: Eric Bélanger <eric@archlinux.org>
+
+pkgname=racket
+pkgver=5.1
+pkgrel=1
+pkgdesc="PLT Racket (a variant of Scheme) Environment"
+arch=('i686' 'x86_64')
+url="http://racket-lang.org/"
+license=('LGPL')
+depends=('gtk2' 'libjpeg' 'desktop-file-utils')
+provides=('drscheme')
+conflicts=('drscheme')
+replaces=('drscheme')
+options=('!strip')
+install=racket.install
+source=(http://download.racket-lang.org/installers/${pkgver}/racket/${pkgname}-${pkgver}-src-unix.tgz \
+ drracket.desktop jpeg-version.patch)
+md5sums=('c3b0bffb998ad530c06512d045a59f15' '9223c9736ead677431542b41271c7b3c'\
+ '0aae72b6f19963c569d20fa8793482e1')
+sha1sums=('6c314a71bab77eb48efad8f6c9fa597b6a5a305d' 'a20808f6b250225704856f82a544681a962a299d'\
+ 'afa13f3ef66f5434b209f545f82545a869ada2b2')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}/src"
+ (cd ..; patch -p1 -i "${srcdir}/jpeg-version.patch")
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}/src"
+ make DESTDIR="${pkgdir}" install
+ install -D -m644 ../collects/icons/plt.xpm "${pkgdir}/usr/share/pixmaps/drracket.xpm"
+ install -D -m644 "${srcdir}/drracket.desktop" "${pkgdir}/usr/share/applications/drracket.desktop"
+}
diff --git a/extra/racket/drracket.desktop b/extra/racket/drracket.desktop
new file mode 100644
index 000000000..79876de50
--- /dev/null
+++ b/extra/racket/drracket.desktop
@@ -0,0 +1,9 @@
+[Desktop Entry]
+Name=DrRacket
+GenericName=IDE for Racket
+Comment=DrRacket is an interactive, integrated, graphical programming environment for the Racket programming languages.
+Exec=drracket
+Terminal=false
+Type=Application
+Categories=Education;Development;
+Icon=drracket
diff --git a/extra/racket/jpeg-version.patch b/extra/racket/jpeg-version.patch
new file mode 100644
index 000000000..253f08ae6
--- /dev/null
+++ b/extra/racket/jpeg-version.patch
@@ -0,0 +1,621 @@
+From: Matthew Flatt <mflatt@racket-lang.org>
+Date: Wed, 16 Feb 2011 14:30:34 +0000 (-0700)
+Subject: fix jpeg structs to better adapt to jpeglib versions and platforms
+X-Git-Url: http://git.racket-lang.org/plt/commitdiff_plain/e59b96e26c7f1edb193a42f16c97d30a085a182c
+
+fix jpeg structs to better adapt to jpeglib versions and platforms
+ --- specifically fixing jpeglib version 8 on x86_64
+---
+
+diff --git a/collects/racket/draw/unsafe/jpeg.rkt b/collects/racket/draw/unsafe/jpeg.rkt
+index 9399aec..77606d8 100644
+--- a/collects/racket/draw/unsafe/jpeg.rkt
++++ b/collects/racket/draw/unsafe/jpeg.rkt
+@@ -100,20 +100,24 @@
+ (unless (member JPEG_LIB_VERSION '(62 64 70 80))
+ (error 'jpeg "unsupported library version: ~e" JPEG_LIB_VERSION))
+
+-(define _scaled_size
+- (case JPEG_LIB_VERSION
+- [(62 64) _int]
+- [else (make-cstruct-type (list _int _int))]))
+-
+-(define _prog_scan_size
+- (case JPEG_LIB_VERSION
+- [(62 64 70) (make-cstruct-type (list _int _int _int _int))]
+- [else (make-cstruct-type (list _int _int _int _int _int _pointer _int))]))
+-
+-(define _comp_info_size
+- (case JPEG_LIB_VERSION
+- [(62 64 70) _pointer]
+- [else (make-cstruct-type (list _pointer _jbool))]))
++(define-syntax-rule (cstruct-type/version elem ...)
++ (make-cstruct-type (flatten-type (list (cstruct-type/version-elem elem) ...))))
++
++(define-syntax cstruct-type/version-elem
++ (syntax-rules (unquote)
++ [(_ (unquote ([vers (elem ...)] ...)))
++ (case JPEG_LIB_VERSION
++ [vers (list (cstruct-type/version-elem elem) ...)]
++ ...)]
++ [(_ [name type]) type]))
++
++(define (flatten-type l)
++ (cond
++ [(null? l) null]
++ [(list? (car l))
++ (append (flatten-type (car l)) (flatten-type (cdr l)))]
++ [else
++ (cons (car l) (flatten-type (cdr l)))]))
+
+ (define-cstruct _jpeg_decompress_struct ([err _jpeg_error_mgr-pointer]
+ [mem _jpeg_memory_mgr-pointer]
+@@ -150,7 +154,7 @@
+ [enable_2pass_quant _jbool]
+
+ [output_width _JDIMENSION]
+- [output_height _JDIMENSION]
++ [output_height _JDIMENSION] ; <-
+ [out_color_components _int]
+ [output_components _int]
+ [rec_outbuf_height _int]
+@@ -158,21 +162,230 @@
+ [actual_number_of_colors _int]
+ [colormap _pointer]
+
+- [output_scanline _JDIMENSION]
++ ;; We don't need to refer to any of the remaining
++ ;; fields, and the specific set of fields depends
++ ;; on the version
++ [rest
++ (cstruct-type/version
++ [output_scanline _JDIMENSION]
++
++ [input_scan_number _int]
++ [input_iMCU_row _JDIMENSION]
++
++ [output_scan_number _int]
++ [output_iMCU_row _JDIMENSION]
++
++ [coef_bits _pointer]
++
++ [quant_tbl_ptrs_1 _pointer]
++ [quant_tbl_ptrs_2 _pointer]
++ [quant_tbl_ptrs_3 _pointer]
++ [quant_tbl_ptrs_4 _pointer]
++
++ [dc_huff_tbl_ptrs_1 _pointer]
++ [dc_huff_tbl_ptrs_2 _pointer]
++ [dc_huff_tbl_ptrs_3 _pointer]
++ [dc_huff_tbl_ptrs_4 _pointer]
++ [ac_huff_tbl_ptrs_1 _pointer]
++ [ac_huff_tbl_ptrs_2 _pointer]
++ [ac_huff_tbl_ptrs_3 _pointer]
++ [ac_huff_tbl_ptrs_4 _pointer]
++
++ [data_precision _int]
++
++ [comp_info _pointer]
++
++ ,([(62 64 70) ()]
++ [else ([is_baseline _jbool])])
++ [progressive_mode _jbool]
++ [arith_code _jbool]
++
++ [arith_dc_L_1 _uint8]
++ [arith_dc_L_2 _uint8]
++ [arith_dc_L_3 _uint8]
++ [arith_dc_L_4 _uint8]
++ [arith_dc_L_5 _uint8]
++ [arith_dc_L_6 _uint8]
++ [arith_dc_L_7 _uint8]
++ [arith_dc_L_8 _uint8]
++ [arith_dc_L_9 _uint8]
++ [arith_dc_L_10 _uint8]
++ [arith_dc_L_11 _uint8]
++ [arith_dc_L_12 _uint8]
++ [arith_dc_L_13 _uint8]
++ [arith_dc_L_14 _uint8]
++ [arith_dc_L_15 _uint8]
++ [arith_dc_L_16 _uint8]
++
++ [arith_dc_U_1 _uint8]
++ [arith_dc_U_2 _uint8]
++ [arith_dc_U_3 _uint8]
++ [arith_dc_U_4 _uint8]
++ [arith_dc_U_5 _uint8]
++ [arith_dc_U_6 _uint8]
++ [arith_dc_U_7 _uint8]
++ [arith_dc_U_8 _uint8]
++ [arith_dc_U_9 _uint8]
++ [arith_dc_U_10 _uint8]
++ [arith_dc_U_11 _uint8]
++ [arith_dc_U_12 _uint8]
++ [arith_dc_U_13 _uint8]
++ [arith_dc_U_14 _uint8]
++ [arith_dc_U_15 _uint8]
++ [arith_dc_U_16 _uint8]
++
++ [arith_dc_K_1 _uint8]
++ [arith_dc_K_2 _uint8]
++ [arith_dc_K_3 _uint8]
++ [arith_dc_K_4 _uint8]
++ [arith_dc_K_5 _uint8]
++ [arith_dc_K_6 _uint8]
++ [arith_dc_K_7 _uint8]
++ [arith_dc_K_8 _uint8]
++ [arith_dc_K_9 _uint8]
++ [arith_dc_K_10 _uint8]
++ [arith_dc_K_11 _uint8]
++ [arith_dc_K_12 _uint8]
++ [arith_dc_K_13 _uint8]
++ [arith_dc_K_14 _uint8]
++ [arith_dc_K_15 _uint8]
++ [arith_dc_K_16 _uint8]
++
++ [restart_interval _uint]
++
++ [saw_JFIF_marker _jbool]
++ [JFIF_major_version _uint8]
++ [JFIF_minor_version _uint8]
++ [density_unit _uint8]
++ [X_density _uint16]
++ [Y_density _uint16]
++ [saw_Adobe_marker _jbool]
++ [Adobe_transform _uint8]
++
++ [CCIR601_sampling _jbool]
++
++ [marker_list _pointer]
++
++ [max_h_samp_factor _int]
++ [max_v_samp_factor _int]
++
++ ,([(62 64) ([min_DCT_scaled_size _int])]
++ [else ([min_DCT_h_scaled_size _int]
++ [min_DCT_v_scaled_size _int])])
++
++ [total_iMCU_rows _JDIMENSION]
++ [sample_range_limit _pointer]
++
++ [comps_in_scan _int]
++
++ [cur_comp_info_1 _pointer]
++ [cur_comp_info_2 _pointer]
++ [cur_comp_info_3 _pointer]
++ [cur_comp_info_4 _pointer]
++
++ [MCUs_per_row _JDIMENSION]
++ [MCU_rows_in_scan _JDIMENSION]
++
++ [blocks_in_MCU _int]
++
++ [MCU_membership_1 _int]
++ [MCU_membership_2 _int]
++ [MCU_membership_3 _int]
++ [MCU_membership_4 _int]
++ [MCU_membership_5 _int]
++ [MCU_membership_6 _int]
++ [MCU_membership_7 _int]
++ [MCU_membership_8 _int]
++ [MCU_membership_9 _int]
++ [MCU_membership_10 _int]
++
++ [Ss _int]
++ [Se _int]
++ [Ah _int]
++ [Al _int]
++
++ ,([(62 64 70) ()]
++ [else
++ ([block_size _int]
++ [natural_order _pointer]
++ [lim_Se _int])])
++
++ [unread_marker _int]
++
++ [master _pointer]
++ [main _pointer]
++ [coef _pointer]
++ [post _pointer]
++ [inputctl _pointer]
++ [marker _pointer]
++ [entropy _pointer]
++ [idct _pointer]
++ [upsample _pointer]
++ [cconvert _pointer]
++ [cquantize _pointer])]))
+
+- [input_scan_number _int]
+- [input_iMCU_row _JDIMENSION]
++(define _j_decompress_ptr _jpeg_decompress_struct-pointer)
+
+- [output_scan_number _int]
+- [output_iMCU_row _JDIMENSION]
++(define-cstruct _jpeg_source_mgr ([next_input_byte _pointer] ;; /* => next byte to read from buffer */
++ [bytes_in_buffer _size_t] ;; /* # of bytes remaining in buffer */
++ [init_source (_fun _j_decompress_ptr -> _void)]
++ [fill_input_buffer (_fun _j_decompress_ptr -> _jbool)]
++ [skip_input_data (_fun _j_decompress_ptr _long -> _void)]
++ [resync_to_restart (_fun _j_decompress_ptr _int -> _jbool)]
++ [term_source (_fun _j_decompress_ptr -> _void)]
++ ;; extra fields specific to this binding:
++ [buffer _pointer]))
+
+- [coef_bits _pointer]
++(define (jpeg_decompress_struct-src m)
++ (ptr-cast (jpeg_decompress_struct-src* m) _jpeg_source_mgr-pointer))
++
++(define-cstruct _jpeg_compress_struct ([err _jpeg_error_mgr-pointer]
++ [mem _jpeg_memory_mgr-pointer]
++ [progress _pointer] ; _jpeg_progress_mgr_pointer
++ [client_data _pointer]
++ [is_decompressor _jbool]
++ [global_state _int]
++
++ [dest* _pointer] ; actually jpeg_destination_mgr-pointer
++
++ [image_width _JDIMENSION]
++ [image_height _JDIMENSION]
++ [input_components _int]
++ [in_color_space _J_COLOR_SPACE] ; <-
++
++ [input_gamma _double]
++
++ ;; We don't need to refer to any of the remaining
++ ;; fields, and the specific set of fields depends
++ ;; on the version
++ [rest
++ (cstruct-type/version
++ ,([(62 64) ()]
++ [else
++ ([scale_num _uint]
++ [scale_denom _uint]
++ [jpeg_width _JDIMENSION]
++ [jpeg_height _JDIMENSION])])
++
++ [data_precission _int]
++
++ [num_components _int]
++ [jpeg_color_space _J_COLOR_SPACE]
++
++ [comp_info _pointer]
+
+ [quant_tbl_ptrs_1 _pointer]
+ [quant_tbl_ptrs_2 _pointer]
+ [quant_tbl_ptrs_3 _pointer]
+ [quant_tbl_ptrs_4 _pointer]
+
++ ,([(62 64) ()]
++ [else
++ ([q_scale_factor_1 _int]
++ [q_scale_factor_2 _int]
++ [q_scale_factor_3 _int]
++ [q_scale_factor_4 _int])])
++
+ [dc_huff_tbl_ptrs_1 _pointer]
+ [dc_huff_tbl_ptrs_2 _pointer]
+ [dc_huff_tbl_ptrs_3 _pointer]
+@@ -182,13 +395,6 @@
+ [ac_huff_tbl_ptrs_3 _pointer]
+ [ac_huff_tbl_ptrs_4 _pointer]
+
+- [data_precision _int]
+-
+- [comp_info&is_baseline _comp_info_size]
+-
+- [progressive_mode _jbool]
+- [arith_code _jbool]
+-
+ [arith_dc_L_1 _uint8]
+ [arith_dc_L_2 _uint8]
+ [arith_dc_L_3 _uint8]
+@@ -239,40 +445,54 @@
+ [arith_dc_K_14 _uint8]
+ [arith_dc_K_15 _uint8]
+ [arith_dc_K_16 _uint8]
++
++ [num_scans _int]
++ [scan_info _pointer]
+
+- [restart_interval _uint]
++ [raw_data_in _jbool]
++ [arith_code _jbool]
++ [optimize_coding _jbool]
++ [CCIR601_sampling _jbool]
++ ,([(62 64) ()]
++ [else
++ ([do_fancy_downsampling _jbool])])
+
+- [saw_JFIF_marker _jbool]
++ [smoothing_factor _int]
++ [dct_method _J_DCT_METHOD]
++
++ [restart_interval _uint]
++ [restart_in_rows _int]
++
++ [write_JFIF_header _jbool]
+ [JFIF_major_version _uint8]
+ [JFIF_minor_version _uint8]
+ [density_unit _uint8]
+ [X_density _uint16]
+ [Y_density _uint16]
+- [saw_Adobe_marker _jbool]
+- [Adobe_transform _uint8]
+-
+- [CCIR601_sampling _jbool]
+-
+- [marker_list _pointer]
+-
++ [write_Adobe_marker _jbool]
++
++ [next_scanline _JDIMENSION]
++
++ [progressive_mode _jbool]
++
+ [max_h_samp_factor _int]
+ [max_v_samp_factor _int]
+
+- [min_DCT_scaled_size _scaled_size]
++ ,([(62 64) ()]
++ [else ([min_DCT_h_scaled_size _int]
++ [min_DCT_v_scaled_size _int])])
+
+ [total_iMCU_rows _JDIMENSION]
+- [sample_range_limit _pointer]
+
+ [comps_in_scan _int]
+-
+ [cur_comp_info_1 _pointer]
+ [cur_comp_info_2 _pointer]
+ [cur_comp_info_3 _pointer]
+ [cur_comp_info_4 _pointer]
+-
++
+ [MCUs_per_row _JDIMENSION]
+ [MCU_rows_in_scan _JDIMENSION]
+-
++
+ [blocks_in_MCU _int]
+
+ [MCU_membership_1 _int]
+@@ -286,223 +506,28 @@
+ [MCU_membership_9 _int]
+ [MCU_membership_10 _int]
+
+- [prog_scan _prog_scan_size] ; Ss, Se, Ah, Al
+-
+- [unread_marker _int]
++ [Ss _int]
++ [Se _int]
++ [Ah _int]
++ [Al _int]
++
++ ,([(62 64 70) ()]
++ [else
++ ([block_size _int]
++ [natural_order _pointer]
++ [lim_Se _int])])
+
+ [master _pointer]
+ [main _pointer]
++ [prep _pointer]
+ [coef _pointer]
+- [post _pointer]
+- [inputctl _pointer]
+ [marker _pointer]
+- [entropy _pointer]
+- [idct _pointer]
+- [upsample _pointer]
+ [cconvert _pointer]
+- [cquantize _pointer]))
+-
+-(define _j_decompress_ptr _jpeg_decompress_struct-pointer)
+-
+-(define-cstruct _jpeg_source_mgr ([next_input_byte _pointer] ;; /* => next byte to read from buffer */
+- [bytes_in_buffer _size_t] ;; /* # of bytes remaining in buffer */
+- [init_source (_fun _j_decompress_ptr -> _void)]
+- [fill_input_buffer (_fun _j_decompress_ptr -> _jbool)]
+- [skip_input_data (_fun _j_decompress_ptr _long -> _void)]
+- [resync_to_restart (_fun _j_decompress_ptr _int -> _jbool)]
+- [term_source (_fun _j_decompress_ptr -> _void)]
+- ;; extra fields specific to this binding:
+- [buffer _pointer]))
+-
+-(define (jpeg_decompress_struct-src m)
+- (ptr-cast (jpeg_decompress_struct-src* m) _jpeg_source_mgr-pointer))
+-
+-(define-cstruct _jpeg7_compression_params ([scale_num _uint]
+- [scale_denom _uint]
+- [jpeg_width _JDIMENSION]
+- [jpeg_height _JDIMENSION]
+- [data_precision _int]))
+-(define _compression_params_t
+- (case JPEG_LIB_VERSION
+- [(62 64) _int] ; just data_precission
+- [else _jpeg7_compression_params]))
+-
+-(define-cstruct _quant_tbl_62_t ([quant_tbl_ptrs_1 _pointer]
+- [quant_tbl_ptrs_2 _pointer]
+- [quant_tbl_ptrs_3 _pointer]
+- [quant_tbl_ptrs_4 _pointer]))
+-(define-cstruct (_quant_tbl_70_t _quant_tbl_62_t) ([q_scale_factor_1 _int]
+- [q_scale_factor_2 _int]
+- [q_scale_factor_3 _int]
+- [q_scale_factor_4 _int]))
+-
+-(define _quant_tbl_t
+- (case JPEG_LIB_VERSION
+- [(62 64) _quant_tbl_62_t]
+- [else _quant_tbl_70_t]))
+-
+-(define _sampling_t
+- (case JPEG_LIB_VERSION
+- [(62 64) _jbool] ; just CCIR601_sampling
+- [else (make-cstruct-type (list _jbool _jbool))])) ; CCIR601_sampling and do_fancy_downsampling
+-
+-(define-cstruct _factors_62_t ([max_h_samp_factor _int]
+- [max_v_samp_factor _int]))
+-(define-cstruct (_factors_70_t _factors_62_t) ([scaled _scaled_size]))
+-(define _factors_t
+- (case JPEG_LIB_VERSION
+- [(62 64) _factors_62_t]
+- [else _factors_70_t]))
+-
+-
+-(define-cstruct _jpeg_compress_struct ([err _jpeg_error_mgr-pointer]
+- [mem _jpeg_memory_mgr-pointer]
+- [progress _pointer] ; _jpeg_progress_mgr_pointer
+- [client_data _pointer]
+- [is_decompressor _jbool]
+- [global_state _int]
+-
+- [dest* _pointer] ; actually jpeg_destination_mgr-pointer
+-
+- [image_width _JDIMENSION]
+- [image_height _JDIMENSION]
+- [input_components _int]
+- [in_color_space _J_COLOR_SPACE]
+-
+- [input_gamma _double]
+-
+- [compression_params _compression_params_t]
+-
+- [num_components _int]
+- [jpeg_color_space _J_COLOR_SPACE]
+-
+- [comp_info _pointer]
+-
+- [quant_tbl _quant_tbl_t]
+-
+- [dc_huff_tbl_ptrs_1 _pointer]
+- [dc_huff_tbl_ptrs_2 _pointer]
+- [dc_huff_tbl_ptrs_3 _pointer]
+- [dc_huff_tbl_ptrs_4 _pointer]
+- [ac_huff_tbl_ptrs_1 _pointer]
+- [ac_huff_tbl_ptrs_2 _pointer]
+- [ac_huff_tbl_ptrs_3 _pointer]
+- [ac_huff_tbl_ptrs_4 _pointer]
+-
+- [arith_dc_L_1 _uint8]
+- [arith_dc_L_2 _uint8]
+- [arith_dc_L_3 _uint8]
+- [arith_dc_L_4 _uint8]
+- [arith_dc_L_5 _uint8]
+- [arith_dc_L_6 _uint8]
+- [arith_dc_L_7 _uint8]
+- [arith_dc_L_8 _uint8]
+- [arith_dc_L_9 _uint8]
+- [arith_dc_L_10 _uint8]
+- [arith_dc_L_11 _uint8]
+- [arith_dc_L_12 _uint8]
+- [arith_dc_L_13 _uint8]
+- [arith_dc_L_14 _uint8]
+- [arith_dc_L_15 _uint8]
+- [arith_dc_L_16 _uint8]
+-
+- [arith_dc_U_1 _uint8]
+- [arith_dc_U_2 _uint8]
+- [arith_dc_U_3 _uint8]
+- [arith_dc_U_4 _uint8]
+- [arith_dc_U_5 _uint8]
+- [arith_dc_U_6 _uint8]
+- [arith_dc_U_7 _uint8]
+- [arith_dc_U_8 _uint8]
+- [arith_dc_U_9 _uint8]
+- [arith_dc_U_10 _uint8]
+- [arith_dc_U_11 _uint8]
+- [arith_dc_U_12 _uint8]
+- [arith_dc_U_13 _uint8]
+- [arith_dc_U_14 _uint8]
+- [arith_dc_U_15 _uint8]
+- [arith_dc_U_16 _uint8]
+-
+- [arith_dc_K_1 _uint8]
+- [arith_dc_K_2 _uint8]
+- [arith_dc_K_3 _uint8]
+- [arith_dc_K_4 _uint8]
+- [arith_dc_K_5 _uint8]
+- [arith_dc_K_6 _uint8]
+- [arith_dc_K_7 _uint8]
+- [arith_dc_K_8 _uint8]
+- [arith_dc_K_9 _uint8]
+- [arith_dc_K_10 _uint8]
+- [arith_dc_K_11 _uint8]
+- [arith_dc_K_12 _uint8]
+- [arith_dc_K_13 _uint8]
+- [arith_dc_K_14 _uint8]
+- [arith_dc_K_15 _uint8]
+- [arith_dc_K_16 _uint8]
+-
+- [num_scans _int]
+- [scan_info _pointer]
+-
+- [raw_data_in _jbool]
+- [arith_code _jbool]
+- [optimize_coding _jbool]
+- [sampling _sampling_t]
+- [smoothing_factor _int]
+- [dct_method _J_DCT_METHOD]
+-
+- [restart_interval _uint]
+- [restart_in_rows _int]
+-
+- [write_JFIF_header _jbool]
+- [JFIF_major_version _uint8]
+- [JFIF_minor_version _uint8]
+- [density_unit _uint8]
+- [X_density _uint16]
+- [Y_density _uint16]
+- [write_Adobe_marker _jbool]
+-
+- [next_scanline _JDIMENSION]
+-
+- [progressive_mode _jbool]
+- [factors _factors_t]
+-
+- [total_iMCU_rows _JDIMENSION]
+-
+- [comps_in_scan _int]
+- [cur_comp_info_1 _pointer]
+- [cur_comp_info_2 _pointer]
+- [cur_comp_info_3 _pointer]
+- [cur_comp_info_4 _pointer]
+-
+- [MCUs_per_row _JDIMENSION]
+- [MCU_rows_in_scan _JDIMENSION]
+-
+- [blocks_in_MCU _int]
+-
+- [MCU_membership_1 _int]
+- [MCU_membership_2 _int]
+- [MCU_membership_3 _int]
+- [MCU_membership_4 _int]
+- [MCU_membership_5 _int]
+- [MCU_membership_6 _int]
+- [MCU_membership_7 _int]
+- [MCU_membership_8 _int]
+- [MCU_membership_9 _int]
+- [MCU_membership_10 _int]
+-
+- [prog_scan _prog_scan_size] ; Ss, Se, Ah, Al
+-
+- [master _pointer]
+- [main _pointer]
+- [prep _pointer]
+- [coef _pointer]
+- [marker _pointer]
+- [cconvert _pointer]
+- [downsample _pointer]
+- [fdct _pointer]
+- [entropy _pointer]
+- [script_space _pointer]
+- [script_space_size _int]))
++ [downsample _pointer]
++ [fdct _pointer]
++ [entropy _pointer]
++ [script_space _pointer]
++ [script_space_size _int])]))
+
+ (define _j_compress_ptr _jpeg_compress_struct-pointer)
+
diff --git a/extra/racket/racket.install b/extra/racket/racket.install
new file mode 100644
index 000000000..660593cf5
--- /dev/null
+++ b/extra/racket/racket.install
@@ -0,0 +1,11 @@
+post_install() {
+ update-desktop-database -q
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/extra/raptor/PKGBUILD b/extra/raptor/PKGBUILD
new file mode 100644
index 000000000..ac925631e
--- /dev/null
+++ b/extra/raptor/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 102988 2010-12-13 20:32:09Z andyrtr $
+# Maintainer: Andreas Radke <andyrtr at archlinux.org>
+# Contributor: eric <eric@archlinux.org>
+# Contributor: Damir Perisa <damir.perisa@bluewin.ch>
+
+pkgname=raptor
+pkgver=1.4.21
+pkgrel=2
+pkgdesc="A C library that parses RDF/XML/N-Triples into RDF triples"
+arch=('i686' 'x86_64')
+url="http://librdf.org/raptor"
+depends=('libxml2>=2.7.8' 'curl>=7.21.2' 'zlib>=1.2.5' 'libxslt>=1.1.26')
+license=('LGPL')
+options=('!libtool')
+source=(http://librdf.org/dist/source/$pkgname-$pkgver.tar.gz)
+md5sums=('992061488af7a9e2d933df6b694bb876')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr --disable-static
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make prefix=${pkgdir}/usr install
+}
diff --git a/extra/rarian/PKGBUILD b/extra/rarian/PKGBUILD
new file mode 100644
index 000000000..b83caff46
--- /dev/null
+++ b/extra/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/extra/rarian/user-segfault.patch b/extra/rarian/user-segfault.patch
new file mode 100644
index 000000000..3311cecdd
--- /dev/null
+++ b/extra/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/extra/rasqal/PKGBUILD b/extra/rasqal/PKGBUILD
new file mode 100644
index 000000000..293aaf093
--- /dev/null
+++ b/extra/rasqal/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 102968 2010-12-13 19:43:14Z andyrtr $
+# Maintainer: AndyRTR <andyrtr@archlinux.org>
+# Contributor: Lawrence Lee <valheru@facticius.net>
+
+pkgname=rasqal
+pkgver=0.9.21
+pkgrel=1
+pkgdesc="a free C library that handles Resource Description Framework (RDF) query syntaxes, query construction and query execution returning result bindings"
+url="http://librdf.org/rasqal"
+license=('GPL' 'LGPL')
+arch=('i686' 'x86_64')
+depends=('raptor>=1.4.21' 'mpfr')
+options=('!libtool')
+source=(http://download.librdf.org/source/${pkgname}-${pkgver}.tar.gz)
+md5sums=('55b67ec92a059ef8979d46486b00a032')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr \
+ --disable-static \
+ --enable-release \
+ --with-raptor=system
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/ratpoison/PKGBUILD b/extra/ratpoison/PKGBUILD
new file mode 100644
index 000000000..fcea6c2ec
--- /dev/null
+++ b/extra/ratpoison/PKGBUILD
@@ -0,0 +1,50 @@
+# $Id: PKGBUILD 109087 2011-02-05 20:30:52Z andrea $
+# Maintainer: Aaron Griffin <aaron@archlinux.org>
+# Contributor: juergen <juergen@archlinux.org>
+# Contributor: John Proctor <jproctor@prium.net>
+
+pkgname=ratpoison
+pkgver=1.4.5
+pkgrel=4
+pkgdesc="A simple keystroke-driven window manager"
+arch=('i686' 'x86_64')
+license=('GPL')
+depends=('libxinerama' 'readline' 'bash' 'perl' 'libxtst' 'libxft' 'texinfo')
+url="http://www.nongnu.org/ratpoison/"
+install="${pkgname}.install"
+source=(http://savannah.nongnu.org/download/${pkgname}/${pkgname}-${pkgver}.tar.gz
+ ${pkgname}.desktop)
+md5sums=('330a08dbed6be88cab54f6947e9f0b60'
+ '29c3cb9be59758e39d8471391231a74a')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ ./configure --prefix=/usr
+ make CFLAGS="$CFLAGS -DHAVE_GETLINE"
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+
+ # fix permissions
+ chmod a+x ${pkgdir}/usr/share/ratpoison/{allwindows.sh,clickframe.pl,rpshowall.sh,rpws,split.sh}
+
+ # Not useful outside the source tree. Kill it
+ rm ${pkgdir}/usr/share/ratpoison/genrpbindings
+
+ cd contrib
+ ./genrpbindings
+ install -dm755 ${pkgdir}/usr/share/ratpoison/bindings
+ install -m644 {Ratpoison.pm,ratpoison-cmd.el,ratpoison.rb,ratpoison.lisp,ratpoison.py} \
+ ${pkgdir}/usr/share/ratpoison/bindings/
+
+ install -Dm644 ${srcdir}/${pkgname}.desktop \
+ ${pkgdir}/etc/X11/sessions/${pkgname}.desktop
+
+ install -Dm644 ${pkgdir}/usr/share/ratpoison/ratpoison.el \
+ ${pkgdir}/usr/share/emacs/site-lisp/ratpoison.el
+}
+
+# vim: ts=2 sw=2 et ft=sh
diff --git a/extra/ratpoison/ratpoison.desktop b/extra/ratpoison/ratpoison.desktop
new file mode 100644
index 000000000..9e29bd46a
--- /dev/null
+++ b/extra/ratpoison/ratpoison.desktop
@@ -0,0 +1,8 @@
+[Desktop Entry]
+Encoding=UTF-8
+Name=Ratpoison
+Comment=The ratpoison window manager
+Exec=ratpoison
+# no icon yet, only the top three are currently used
+Icon=
+Type=Application
diff --git a/extra/ratpoison/ratpoison.install b/extra/ratpoison/ratpoison.install
new file mode 100644
index 000000000..1eafd8f69
--- /dev/null
+++ b/extra/ratpoison/ratpoison.install
@@ -0,0 +1,20 @@
+infodir=/usr/share/info
+filelist=(ratpoison.info.gz)
+
+post_install() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info --delete $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
diff --git a/extra/razor/PKGBUILD b/extra/razor/PKGBUILD
new file mode 100644
index 000000000..3f596706d
--- /dev/null
+++ b/extra/razor/PKGBUILD
@@ -0,0 +1,40 @@
+# $Id: PKGBUILD 101393 2010-11-29 01:47:33Z kevin $
+# Maintainer: Dale Blount <dale@archlinux.org>
+# Contributor: Manolis Tzanidakis
+
+pkgname=razor
+pkgver=2.84
+pkgrel=4
+pkgdesc="A distributed, collaborative, spam detection and filtering network."
+arch=(i686 x86_64)
+url="http://razor.sourceforge.net"
+license=('PerlArtistic')
+depends=('glibc' 'perl-net-dns' 'perl-digest-sha1' 'perl-uri' 'perl-digest-nilsimsa' 'perl>=5.10.0')
+source=(http://downloads.sourceforge.net/sourceforge/razor/${pkgname}-agents-${pkgver}.tar.bz2)
+md5sums=('8b9a11a6ce020383c32c45d1530d77c2')
+options=(!emptydirs)
+
+build() {
+ cd ${srcdir}/${pkgname}-agents-${pkgver}
+
+ # skip install_razor_agents (we'll do the linking later)
+ # /bin/sed -i "s|install :: all pure_install doc_install install_razor_agents|install :: all pure_install doc_install|g" Makefile
+
+ perl Makefile.PL INSTALLDIRS=vendor
+ make
+ make test
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-agents-${pkgver}
+ make DESTDIR=${pkgdir} install
+
+ # remove perllocal.pod and .packlist
+ find ${pkgdir} -name perllocal.pod -delete
+ find ${pkgdir} -name .packlist -delete
+
+ # cd ${pkgdir}/usr/bin
+ # for i in razor-check razor-report razor-revoke razor-admin; do
+ # /bin/ln -sf razor-client $i;
+ # done
+}
diff --git a/extra/rcs/PKGBUILD b/extra/rcs/PKGBUILD
new file mode 100644
index 000000000..a9edf2fe8
--- /dev/null
+++ b/extra/rcs/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id: PKGBUILD 78028 2010-04-19 08:23:42Z dgriffiths $
+# Maintainer: dorphell <dorphell@archlinux.org>
+pkgname=rcs
+pkgver=5.7
+pkgrel=5
+pkgdesc="Revision Control System"
+arch=('i686' 'x86_64')
+url="http://www.cs.purdue.edu/homes/trinkle/RCS/"
+license=('GPL')
+depends=('glibc')
+source=(http://www.cs.purdue.edu/homes/trinkle/RCS/rcs-${pkgver}.tar.Z \
+ rcs-5.7.patch)
+md5sums=('423282f0edb353296d9f3498ab683abf' '7ae4b7cb79259ccdf5eee0ab94fe2a2a')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ patch -Np1 -i ../rcs-5.7.patch || return 1
+ ./configure --prefix=/usr || return 1
+ make || return 1
+ make prefix=${pkgdir}/usr man1dir=${pkgdir}/usr/share/man/man1 \
+ man5dir=${pkgdir}/usr/share/man/man5 install || return 1
+}
diff --git a/extra/rcs/rcs-5.7.patch b/extra/rcs/rcs-5.7.patch
new file mode 100644
index 000000000..0f062b357
--- /dev/null
+++ b/extra/rcs/rcs-5.7.patch
@@ -0,0 +1,67 @@
+diff -Naur rcs-5.7-orig/src/conf.heg rcs-5.7/src/conf.heg
+--- rcs-5.7-orig/src/conf.heg 1995-06-02 11:19:00.000000000 -0700
++++ rcs-5.7/src/conf.heg 2004-11-29 12:41:37.000000000 -0800
+@@ -210,10 +210,10 @@
+ /* Do struct stat s and t describe the same file? Answer d if unknown. */
+ #define same_file(s,t,d) ((s).st_ino==(t).st_ino && (s).st_dev==(t).st_dev)
+ #define has_utimbuf 1 /* Does struct utimbuf work? */
+-#define CO "/usr/local/bin/co" /* name of 'co' program */
++#define CO "/usr/bin/co" /* name of 'co' program */
+ #define COMPAT2 0 /* Are version 2 files supported? */
+-#define DIFF "/usr/local/bin/diff" /* name of 'diff' program */
+-#define DIFF3 "/usr/local/bin/diff3" /* name of 'diff3' program */
++#define DIFF "/usr/bin/diff" /* name of 'diff' program */
++#define DIFF3 "/usr/bin/diff3" /* name of 'diff3' program */
+ #define DIFF3_BIN 1 /* Is diff3 user-visible (not the /usr/lib auxiliary)? */
+ #define DIFFFLAGS "-an" /* Make diff output suitable for RCS. */
+ #define DIFF_L 1 /* Does diff -L work? */
+@@ -221,7 +221,7 @@
+ #define DIFF_FAILURE 1 /* DIFF status if differences are found */
+ #define DIFF_TROUBLE 2 /* DIFF status if trouble */
+ #define ED "/bin/ed" /* name of 'ed' program (used only if !DIFF3_BIN) */
+-#define MERGE "/usr/local/bin/merge" /* name of 'merge' program */
++#define MERGE "/usr/bin/merge" /* name of 'merge' program */
+ #define TMPDIR "/tmp" /* default directory for temporary files */
+ #define SLASH '/' /* principal filename separator */
+ #define SLASHes '/' /* `case SLASHes:' labels all filename separators */
+diff -Naur rcs-5.7-orig/src/conf.sh rcs-5.7/src/conf.sh
+--- rcs-5.7-orig/src/conf.sh 1995-06-15 23:19:24.000000000 -0700
++++ rcs-5.7/src/conf.sh 2004-11-29 12:42:28.000000000 -0800
+@@ -32,7 +32,7 @@
+ # and can be inspected for clues otherwise.
+
+ # The Makefile overrides the following defaults.
+-: ${RCSPREFIX=/usr/local/bin/}
++: ${RCSPREFIX=/usr/bin/}
+ : ${ALL_CFLAGS=-Dhas_conf_h}
+ : ${CC=cc}
+ : ${COMPAT2=0}
+@@ -42,8 +42,8 @@
+ : ${DIFFFLAGS=-an}
+ : ${DIFF_L=1}
+ : ${DIFF_SUCCESS=0} ${DIFF_FAILURE=1} ${DIFF_TROUBLE=2}
+-: ${ED=/bin/ed}
+-: ${SENDMAIL='"/usr/lib/sendmail"'}
++: ${ED=/usr/bin/ed}
++: ${SENDMAIL='"/usr/sbin/sendmail"'}
+ # : ${LDFLAGS=} ${LIBS=} tickles old shell bug
+
+ C="$CC $ALL_CFLAGS"
+@@ -73,17 +73,6 @@
+ ech='echo -n' dots='... '
+ esac
+
+-$ech >&3 "$0: testing permissions $dots"
+-rm -f a.d &&
+-date >a.d &&
+-chmod 0 a.d &&
+-{ test -w a.d || cp /dev/null a.d 2>/dev/null; } && {
+- echo >&3 "$n$0: This command should not be run with superuser permissions."
+- exit 1
+-}
+-echo >&3 OK
+-rm -f a.d || exit
+-
+ $ech >&3 "$0: testing compiler for plausibility $dots"
+ echo 'main() { return 0; }' >a.c
+ rm -f a.exe a.out || exit
diff --git a/extra/rdesktop/PKGBUILD b/extra/rdesktop/PKGBUILD
new file mode 100644
index 000000000..bdcd3a283
--- /dev/null
+++ b/extra/rdesktop/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 77123 2010-04-10 21:21:07Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Dan McGee <dan@archlinux.org>
+
+pkgname=rdesktop
+pkgver=1.6.0
+pkgrel=5
+depends=('libx11' 'openssl' 'libao' 'libsamplerate')
+pkgdesc="Is used to connect to windows terminal servers"
+url="http://www.rdesktop.org/"
+license=('GPL')
+arch=('i686' 'x86_64')
+source=(http://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.gz
+ 'rdesktop-send_physical_buttons.diff')
+md5sums=('c6fcbed7f0ad7e60ac5fcb2d324d8b16'
+ '880d3aeac67b901e6bf44d1323374768')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ patch -i ${srcdir}/rdesktop-send_physical_buttons.diff || return 1
+
+ ./configure --prefix=/usr
+ make || return 1
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install || return 1
+}
diff --git a/extra/rdesktop/rdesktop-send_physical_buttons.diff b/extra/rdesktop/rdesktop-send_physical_buttons.diff
new file mode 100644
index 000000000..8e0f6cee7
--- /dev/null
+++ b/extra/rdesktop/rdesktop-send_physical_buttons.diff
@@ -0,0 +1,70 @@
+? aclocal.m4
+Index: rdesktop.c
+===================================================================
+RCS file: /cvsroot/rdesktop/rdesktop/rdesktop.c,v
+retrieving revision 1.163
+diff -u -r1.163 rdesktop.c
+--- rdesktop.c 5 Apr 2008 06:15:45 -0000 1.163
++++ rdesktop.c 5 Aug 2008 11:46:04 -0000
+@@ -73,6 +73,7 @@
+ int g_win_button_size = 0; /* If zero, disable single app mode */
+ RD_BOOL g_bitmap_compression = True;
+ RD_BOOL g_sendmotion = True;
++RD_BOOL g_send_physical_buttons = True;
+ RD_BOOL g_bitmap_cache = True;
+ RD_BOOL g_bitmap_cache_persist_enable = False;
+ RD_BOOL g_bitmap_cache_precache = True;
+@@ -152,6 +153,7 @@
+ fprintf(stderr, " -B: use BackingStore of X-server (if available)\n");
+ fprintf(stderr, " -e: disable encryption (French TS)\n");
+ fprintf(stderr, " -E: disable encryption from client to server\n");
++ fprintf(stderr, " -M: do not map logical mouse buttons to physical\n");
+ fprintf(stderr, " -m: do not send motion events\n");
+ fprintf(stderr, " -C: use private colour map\n");
+ fprintf(stderr, " -D: hide window manager decorations\n");
+@@ -450,7 +452,7 @@
+ #endif
+
+ while ((c = getopt(argc, argv,
+- VNCOPT "Au:L:d:s:c:p:n:k:g:fbBeEmzCDKS:T:NX:a:x:Pr:045h?")) != -1)
++ VNCOPT "Au:L:d:s:c:p:n:k:g:fbBeEMmzCDKS:T:NX:a:x:Pr:045h?")) != -1)
+ {
+ switch (c)
+ {
+@@ -584,6 +586,9 @@
+ case 'E':
+ g_packet_encryption = False;
+ break;
++ case 'M':
++ g_send_physical_buttons = False;
++ break;
+ case 'm':
+ g_sendmotion = False;
+ break;
+Index: xwin.c
+===================================================================
+RCS file: /cvsroot/rdesktop/rdesktop/xwin.c,v
+retrieving revision 1.235
+diff -u -r1.235 xwin.c
+--- xwin.c 11 Jul 2008 03:51:23 -0000 1.235
++++ xwin.c 5 Aug 2008 11:46:06 -0000
+@@ -36,6 +36,7 @@
+ extern int g_ypos;
+ extern int g_pos;
+ extern RD_BOOL g_sendmotion;
++extern RD_BOOL g_send_physical_buttons;
+ extern RD_BOOL g_fullscreen;
+ extern RD_BOOL g_grab_keyboard;
+ extern RD_BOOL g_hide_decorations;
+@@ -2190,7 +2191,8 @@
+ receive physical buttons (true in mstsc as well) and
+ logical button behavior depends on the remote desktop's own
+ mouse settings */
+- xevent.xbutton.button = g_pointer_log_to_phys_map[xevent.xbutton.button - 1];
++ if (g_send_physical_buttons)
++ xevent.xbutton.button = g_pointer_log_to_phys_map[xevent.xbutton.button - 1];
+ button = xkeymap_translate_button(xevent.xbutton.button);
+ if (button == 0)
+ return;
+
+
diff --git a/extra/re2c/PKGBUILD b/extra/re2c/PKGBUILD
new file mode 100644
index 000000000..86adee2b5
--- /dev/null
+++ b/extra/re2c/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: PKGBUILD 24272 2009-01-15 20:24:40Z giovanni $
+# Contributor: nut543 <kfs1@online.no>
+# Maintainer: Dale Blount <dale@archlinux.org>
+pkgname=re2c
+pkgver=0.13.5
+arch=('i686' 'x86_64')
+depends=('gcc-libs')
+makedepends=('gcc')
+pkgrel=1
+pkgdesc="a tool for generating C-based recognizers from regular expressions."
+url="http://re2c.sourceforge.net/"
+license=('GPL')
+source=(http://downloads.sourceforge.net/sourceforge/re2c/re2c-${pkgver}.tar.gz)
+md5sums=('4a97d8f77ed6d2c76c8bd840a43f5633')
+
+build() {
+ cd $startdir/src/$pkgname-$pkgver
+ ./configure --prefix=/usr
+ make || return 1
+ make DESTDIR=$startdir/pkg install
+}
+
+
diff --git a/extra/recode/PKGBUILD b/extra/recode/PKGBUILD
new file mode 100644
index 000000000..f95e08fde
--- /dev/null
+++ b/extra/recode/PKGBUILD
@@ -0,0 +1,43 @@
+# $Id: PKGBUILD 103548 2010-12-21 11:02:32Z andrea $
+# Maintainer: Kevin Piche <kevin@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=recode
+pkgver=3.6
+pkgrel=6
+pkgdesc="Converts files between various character sets and usages"
+arch=('i686' 'x86_64')
+url="http://recode.progiciels-bpi.ca/index.html"
+license=('GPL' 'LGPL')
+depends=('glibc' 'texinfo')
+options=('!libtool')
+install=recode.install
+source=(${pkgname}-${pkgver}.tar.gz::"https://github.com/pinard/${pkgname}/tarball/v${pkgver}"
+ http://ftp.de.debian.org/debian/pool/main/r/recode/recode_3.6-15.diff.gz
+ recode-3.6-as-if.patch recode-3.6-gettextfix.diff)
+md5sums=('f82e9a6ede9119268c13493c9add2809'
+ '95ca772e367a7ef56d3f46d724b6f86e'
+ 'fca7484ba332c8ad59eb02334883cd92'
+ 'eb602e80a24b5448604bfebeacc55304')
+
+build() {
+ cd ${srcdir}/pinard-Recode-2127b34
+ patch -Np1 -i ${srcdir}/recode-3.6-as-if.patch
+ patch -Np1 -i ${srcdir}/recode-3.6-gettextfix.diff
+ patch -Np1 -i ${srcdir}/recode_3.6-15.diff
+ sed -i '1i#include <stdlib.h>' src/argmatch.c
+ rm -f acinclude.m4
+ autoreconf -fi
+ libtoolize
+ ./configure --prefix=/usr --mandir=/usr/share/man \
+ --infodir=/usr/share/info --without-included-gettext
+ make
+}
+
+package() {
+ cd ${srcdir}/pinard-Recode-2127b34
+ make DESTDIR=${pkgdir} install
+
+ rm ${pkgdir}/usr/share/info/dir
+ gzip ${pkgdir}/usr/share/info/*
+}
diff --git a/extra/recode/recode-3.6-as-if.patch b/extra/recode/recode-3.6-as-if.patch
new file mode 100644
index 000000000..c7bcc27c8
--- /dev/null
+++ b/extra/recode/recode-3.6-as-if.patch
@@ -0,0 +1,19 @@
+http://bugs.gentoo.org/283029
+
+--- a/m4/flex.m4
++++ b/m4/flex.m4
+@@ -8,11 +8,11 @@ dnl ad_AC_PROG_FLEX
+ dnl Look for flex or missing, then run AC_PROG_LEX and AC_DECL_YYTEXT
+ AC_DEFUN(ad_AC_PROG_FLEX,
+ [AC_CHECK_PROGS(LEX, flex, missing)
+-if test "$LEX" = missing; then
++AS_IF([test "$LEX" = missing], [dnl
+ LEX="\$(top_srcdir)/$ac_aux_dir/missing flex"
+ LEX_OUTPUT_ROOT=lex.yy
+ AC_SUBST(LEX_OUTPUT_ROOT)dnl
+-else
++], [:
+ AC_PROG_LEX
+ AC_DECL_YYTEXT
+-fi])
++])])
diff --git a/extra/recode/recode-3.6-gcc43.patch b/extra/recode/recode-3.6-gcc43.patch
new file mode 100644
index 000000000..beaf26e9a
--- /dev/null
+++ b/extra/recode/recode-3.6-gcc43.patch
@@ -0,0 +1,20 @@
+http://bugs.gentoo.org/209036
+
+fix building with gcc-4.3
+
+--- src/recodext.h 2008-04-03 18:35:42 +0000
++++ src/recodext.h 2008-04-03 18:36:32 +0000
+@@ -215,10 +215,10 @@
+ struct recode_single *unsurfacer;
+
+ /* Non zero if this is an acceptable charset (not only a surface). */
+- enum recode_symbol_type type : 3;
++ enum recode_symbol_type type : 2;
+
+ /* Non zero if this one should be ignored. */
+- bool ignore : 2;
++ bool ignore : 1;
+ };
+
+ struct recode_surface_list
+
diff --git a/extra/recode/recode-3.6-gettextfix.diff b/extra/recode/recode-3.6-gettextfix.diff
new file mode 100644
index 000000000..3b7eb8ba2
--- /dev/null
+++ b/extra/recode/recode-3.6-gettextfix.diff
@@ -0,0 +1,23 @@
+http://bugs.gentoo.org/239372
+
+patch by Dmitry Karasik
+
+--- recode-3.6/m4/gettext.m4
++++ recode-3.6/m4/gettext.m4
+@@ -109,12 +109,12 @@
+ else
+ ac_items="$LINGUAS"
+ for ac_item in $ac_items; do
+- case "$ALL_LINGUAS" in
+- *$ac_item*)
++ for supported_item in $ALL_LINGUAS; do
++ if test "$ac_item" = "$supported_item"; then
+ ac_print="$ac_print $ac_item"
+ MOFILES="$MOFILES $ac_item.mo"
+- ;;
+- esac
++ fi
++ done
+ done
+ fi
+ AC_SUBST(MOFILES)
diff --git a/extra/recode/recode.install b/extra/recode/recode.install
new file mode 100644
index 000000000..6304d5906
--- /dev/null
+++ b/extra/recode/recode.install
@@ -0,0 +1,20 @@
+infodir=/usr/share/info
+filelist=(recode.info-5.gz recode.info-3.gz recode.info-7.gz recode.info-6.gz recode.info-2.gz recode.info-4.gz recode.info.gz recode.info-1.gz)
+
+post_install() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info --delete $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
diff --git a/extra/redland/PKGBUILD b/extra/redland/PKGBUILD
new file mode 100644
index 000000000..8f87b360a
--- /dev/null
+++ b/extra/redland/PKGBUILD
@@ -0,0 +1,77 @@
+# $Id: PKGBUILD 115186 2011-03-17 11:09:01Z andrea $
+# Maintainer: AndyRTR <andyrtr@archlinux.org>
+# Contributor: Francois Charette <francois.archlinux.org>
+
+pkgbase=redland
+pkgname=('redland' 'redland-storage-mysql' 'redland-storage-postgresql' 'redland-storage-virtuoso' 'redland-storage-sqlite')
+pkgver=1.0.12
+pkgrel=6
+url="http://librdf.org/"
+license=("GPL")
+arch=('i686' 'x86_64')
+makedepends=('rasqal>=0.9.21' 'raptor>=1.4.21' 'db>=5.1' 'postgresql-libs' 'libmysqlclient' 'unixodbc' 'sqlite3')
+options=('!libtool')
+source=(http://download.librdf.org/source/$pkgname-$pkgver.tar.gz
+ rpath.diff)
+md5sums=('40f37a5ad97fdfbf984f78dcea0c6115'
+ 'acc85e784f01a656bd56777f95880787')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr \
+ --enable-release \
+ --disable-static \
+ --with-raptor=system \
+ --with-rasqal=system \
+ --with-sqlite=3
+
+ # nuke rpath
+ patch -Np0 -i ${srcdir}/rpath.diff
+
+ make
+}
+
+package_redland() {
+ pkgdesc="Library that provides a high-level interface to RDF data"
+ depends=('rasqal>=0.9.21' 'raptor>=1.4.21' 'libtool')
+
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+ rm -rf ${pkgdir}/usr/lib/redland
+}
+
+package_redland-storage-mysql() {
+ pkgdesc="MySQL storage support for Redland"
+ depends=('redland' 'libmysqlclient')
+
+ cd ${srcdir}/${pkgname}-${pkgver}
+ install -dm755 ${pkgdir}/usr/lib/redland
+ install -m755 src/.libs/librdf_storage_mysql.so ${pkgdir}/usr/lib/redland/librdf_storage_mysql.so
+}
+
+package_redland-storage-postgresql() {
+ pkgdesc="PostgreSQL storage support for Redland"
+ depends=('redland' 'postgresql-libs')
+
+ cd ${srcdir}/${pkgname}-${pkgver}
+ install -dm755 ${pkgdir}/usr/lib/redland
+ install -m755 src/.libs/librdf_storage_postgresql.so ${pkgdir}/usr/lib/redland/
+}
+
+package_redland-storage-virtuoso() {
+ pkgdesc="Virtuoso storage support for Redland"
+ depends=('redland' 'unixodbc' 'db')
+
+ cd ${srcdir}/${pkgname}-${pkgver}
+ install -dm755 ${pkgdir}/usr/lib/redland
+ install -m755 src/.libs/librdf_storage_virtuoso.so ${pkgdir}/usr/lib/redland/
+}
+
+package_redland-storage-sqlite() {
+ pkgdesc="SQLite storage support for Redland"
+ depends=('redland' 'sqlite3' 'db')
+
+ cd ${srcdir}/${pkgname}-${pkgver}
+ install -dm755 ${pkgdir}/usr/lib/redland
+ install -m755 src/.libs/librdf_storage_sqlite.so ${pkgdir}/usr/lib/redland/
+}
diff --git a/extra/redland/rpath.diff b/extra/redland/rpath.diff
new file mode 100644
index 000000000..831bc80ed
--- /dev/null
+++ b/extra/redland/rpath.diff
@@ -0,0 +1,11 @@
+--- libtool 2011-02-20 10:46:47.000000000 +0100
++++ libtool.new 2011-02-20 10:52:58.285764909 +0100
+@@ -324,7 +324,7 @@
+
+ # Flag to hardcode $libdir into a binary during linking.
+ # This must work even if $libdir does not exist
+-hardcode_libdir_flag_spec="\${wl}-rpath \${wl}\$libdir"
++hardcode_libdir_flag_spec=" "
+
+ # If ld is used when linking, flag to hardcode $libdir into a binary
+ # during linking. This must work even if $libdir does not exist.
diff --git a/extra/rhino/PKGBUILD b/extra/rhino/PKGBUILD
new file mode 100644
index 000000000..27d7c46fc
--- /dev/null
+++ b/extra/rhino/PKGBUILD
@@ -0,0 +1,18 @@
+# Maintainer: Andreas Radke <andyrtr@archlinux.org>
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=rhino
+pkgver=1.7R1
+pkgrel=1
+pkgdesc="Open-source implementation of JavaScript written entirely in Java"
+arch=('i686' 'x86_64')
+url="http://www.mozilla.org/rhino/"
+license=('MPL' 'GPL2')
+source=(ftp://ftp.mozilla.org/pub/mozilla.org/js/rhino1_7R1.zip)
+md5sums=('613eed8201d37be201805e5048ebb0c3')
+
+build() {
+ cd ${srcdir}/rhino1_7R1
+ install -m755 -d ${pkgdir}/usr/share/java
+ install -m644 js.jar ${pkgdir}/usr/share/java/ || return 1
+}
diff --git a/extra/rhythmbox/PKGBUILD b/extra/rhythmbox/PKGBUILD
new file mode 100644
index 000000000..a7c54a9a6
--- /dev/null
+++ b/extra/rhythmbox/PKGBUILD
@@ -0,0 +1,39 @@
+# $Id: PKGBUILD 112869 2011-03-07 11:45:31Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Giovanni Scafora <giovanni@archlinux.org>
+
+pkgname=rhythmbox
+pkgver=0.13.3
+pkgrel=2
+pkgdesc="An iTunes-like music player/libary"
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://www.rhythmbox.org"
+depends=('libgpod' 'libsoup-gnome' 'gnome-media' 'totem-plparser' 'libmusicbrainz3' 'libmtp' 'libnotify' 'lirc-utils' 'desktop-file-utils'
+ 'gstreamer0.10-python' 'gstreamer0.10-base-plugins' 'gstreamer0.10-good-plugins' 'pygtk' 'gvfs-afc' 'hicolor-icon-theme' 'pywebkitgtk'
+ 'python-mako' 'libdmapsharing' 'json-glib' 'python2-gconf' 'python2-libgnome' 'python-gnomekeyring' 'media-player-info')
+makedepends=('pkgconfig' 'gnome-doc-utils>=0.20.1' 'intltool' 'brasero')
+optdepends=('gstreamer0.10-ugly-plugins: Extra media codecs'
+ 'gstreamer0.10-bad-plugins: Extra media codecs'
+ 'gstreamer0.10-ffmpeg: Extra media codecs'
+ 'brasero: cd burning')
+options=('!libtool' '!emptydirs')
+install=rhythmbox.install
+source=(http://ftp.gnome.org/pub/GNOME/sources/${pkgname}/0.13/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('ad6532864bb4df30f1014ec81ddc0d2d3f69241235627f46abe5578cf629052a')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ PYTHON=python2 ./configure --prefix=/usr --sysconfdir=/etc \
+ --libexecdir=/usr/lib/rhythmbox \
+ --localstatedir=/var --disable-static \
+ --enable-daap --enable-python \
+ --with-mdns=avahi --disable-scrollkeeper
+
+ make
+ 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 rhythmbox ${pkgdir}/etc/gconf/schemas/*.schemas
+ rm -f ${pkgdir}/etc/gconf/schemas/*.schemas
+}
diff --git a/extra/rhythmbox/rhythmbox.install b/extra/rhythmbox/rhythmbox.install
new file mode 100644
index 000000000..10c4f2229
--- /dev/null
+++ b/extra/rhythmbox/rhythmbox.install
@@ -0,0 +1,24 @@
+pkgname=rhythmbox
+
+post_install() {
+ usr/sbin/gconfpkg --install ${pkgname}
+ update-desktop-database -q
+ gtk-update-icon-cache -f -q -t usr/share/icons/hicolor
+}
+
+pre_upgrade() {
+ pre_remove
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ usr/sbin/gconfpkg --uninstall ${pkgname}
+}
+
+post_remove() {
+ update-desktop-database -q
+ gtk-update-icon-cache -f -q -t usr/share/icons/hicolor
+}
diff --git a/extra/ristretto/PKGBUILD b/extra/ristretto/PKGBUILD
new file mode 100644
index 000000000..604cf20c1
--- /dev/null
+++ b/extra/ristretto/PKGBUILD
@@ -0,0 +1,32 @@
+# $Id: PKGBUILD 112061 2011-03-03 17:24:57Z andyrtr $
+# Maintainer: AndyRTR <andyrtr@archlinux.org>
+# Contributor: Ronald van Haren <ronald.archlinux.org>
+
+pkgname=ristretto
+pkgver=0.0.93
+pkgrel=1
+pkgdesc="Ristretto is a image viewer for Xfce"
+arch=('i686' 'x86_64')
+url="http://goodies.xfce.org/projects/applications/ristretto"
+license=('GPL2')
+depends=('libxfce4ui' 'libexif' 'desktop-file-utils' 'hicolor-icon-theme')
+makedepends=('intltool')
+options=('!libtool')
+groups=('xfce4-goodies')
+source=(http://archive.xfce.org/src/apps/$pkgname/0.0/$pkgname-$pkgver.tar.bz2)
+install=ristretto.install
+md5sums=('74dcdf0fcbf7039852b817732a91fb6c')
+
+build() {
+ cd ${srcdir}/$pkgname-$pkgver
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --disable-debug
+ make
+}
+
+package() {
+ cd ${srcdir}/$pkgname-$pkgver
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/ristretto/ristretto.install b/extra/ristretto/ristretto.install
new file mode 100644
index 000000000..75e2b7b55
--- /dev/null
+++ b/extra/ristretto/ristretto.install
@@ -0,0 +1,13 @@
+post_install() {
+ update-desktop-database -q
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ update-desktop-database -q
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
diff --git a/extra/rosegarden/PKGBUILD b/extra/rosegarden/PKGBUILD
new file mode 100644
index 000000000..8362e9f18
--- /dev/null
+++ b/extra/rosegarden/PKGBUILD
@@ -0,0 +1,42 @@
+# $Id: PKGBUILD 109447 2011-02-09 17:52:06Z schiv $
+# Maintainer: Ray Rashif <schivmeister@gmail.com>
+# Contributor: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: damir <damir@archlinux.org>
+# Contributor: Robert Emil Berge <robert@rebi.no>
+
+pkgname=rosegarden
+pkgver=11.02
+pkgrel=1
+pkgdesc="MIDI/audio sequencer and notation editor"
+arch=('i686' 'x86_64')
+url="http://www.rosegardenmusic.com/"
+license=('GPL')
+depends=('liblrdf' 'dssi' 'fftw' 'lirc-utils'
+ 'perl' 'qt' 'shared-mime-info')
+makedepends=('pkgconfig' 'imake')
+optdepends=('lilypond: notation display'
+ 'cups: printing support'
+ 'okular: print preview, or any other PDF viewer'
+ 'timidity++: MIDI playback, or any other softsynth'
+ 'flac'
+ 'wavpack')
+[ "$CARCH" = "i686" ] && optdepends=("${optdepends[@]}"
+ 'dssi-vst: win32 VST support')
+install=$pkgname.install
+source=(http://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.bz2)
+md5sums=('fca86bfd7351a16cc2b55a85d2c8a128')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ make DESTDIR="$pkgdir/" install
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/extra/rosegarden/rosegarden.install b/extra/rosegarden/rosegarden.install
new file mode 100644
index 000000000..5119faec2
--- /dev/null
+++ b/extra/rosegarden/rosegarden.install
@@ -0,0 +1,14 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+ update-mime-database usr/share/mime &> /dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/extra/rox/PKGBUILD b/extra/rox/PKGBUILD
new file mode 100644
index 000000000..34b72f227
--- /dev/null
+++ b/extra/rox/PKGBUILD
@@ -0,0 +1,51 @@
+# $Id: PKGBUILD 46891 2009-07-20 23:09:07Z giovanni $
+# Maintainer: tobias <tobias@archlinux.org>
+# Contributor: Jochem Kossen <j.kossen@home.nl>
+
+pkgname=rox
+_appname=${pkgname}-filer
+pkgver=2.10
+pkgrel=1
+pkgdesc="A small and fast file manager which can optionally manage the desktop background and panels."
+arch=(i686 x86_64)
+license=('GPL2')
+url="http://roscidus.com/desktop/"
+depends=('libxml2' 'gtk2' 'shared-mime-info' 'bash' 'libsm' 'libglade')
+makedepends=('librsvg' 'python')
+source=(http://downloads.sourceforge.net/sourceforge/${pkgname}/${_appname}-${pkgver}.tar.bz2 \
+ ${pkgname}.desktop ${pkgname}.svg)
+md5sums=('28e8494c9af783258ff86c830f8f0062'
+ '80e7a90e9d58375b25494fbdc01a05bd'
+ '658c8648b51e215558e13e6afb2b5c76')
+
+build() {
+ cd ${startdir}/src/${_appname}-${pkgver}/Choices
+ mkdir -p ${startdir}/pkg/usr/share/Choices
+ cp -rp MIME-types ${startdir}/pkg/usr/share/Choices/
+ # manually copy the manpages first
+ cd ../
+ install -Dm 0644 rox.1 ${startdir}/pkg/usr/share/man/man1/rox.1
+ cd ${startdir}/pkg/usr/share/man/man1
+ ln -sf rox.1 ROX-Filer.1
+ # this compiles and installs rox
+ cd ${startdir}/src/${_appname}-${pkgver}/ROX-Filer
+ ./AppRun --compile
+ cd ..
+ cp -rp ROX-Filer ${startdir}/pkg/usr/share/
+ rm -fr ${startdir}/pkg/usr/share/ROX-Filer/{src,build}
+ # create a shellscript which is known in the PATH
+ mkdir -p ${startdir}/pkg/usr/bin
+ echo "#!/bin/sh" > "${startdir}/pkg/usr/bin/rox"
+ echo "exec /usr/share/ROX-Filer/AppRun \"\$@\"" >> "${startdir}/pkg/usr/bin/rox"
+ chmod a+x ${startdir}/pkg/usr/bin/rox
+ # install some freedesktop.org compatibility
+ install -D -m644 ${startdir}/src/${pkgname}.desktop \
+ ${startdir}/pkg/usr/share/applications/${pkgname}.desktop
+ install -D -m644 ${startdir}/src/${pkgname}.svg \
+ ${startdir}/pkg/usr/share/pixmaps/${pkgname}.svg
+ # finally we render a png as fallback for not svg aware menu applications
+ # Attention: always make sure you check the dimensions of the source-svg,
+ # you can read the dimensions via inkscapes export funktion
+ rsvg -w 48 -h 38 -f png ${startdir}/src/${pkgname}.svg \
+ ${startdir}/pkg/usr/share/pixmaps/${pkgname}.png
+}
diff --git a/extra/rox/rox.desktop b/extra/rox/rox.desktop
new file mode 100644
index 000000000..b1a2014f7
--- /dev/null
+++ b/extra/rox/rox.desktop
@@ -0,0 +1,10 @@
+[Desktop Entry]
+Name=ROX Filer
+Comment=ROX Filer
+Exec=rox
+Icon=rox
+Terminal=false
+MultipleArgs=false
+Type=Application
+Categories=Application;FileManager;
+
diff --git a/extra/rox/rox.svg b/extra/rox/rox.svg
new file mode 100644
index 000000000..4cbd7cc28
--- /dev/null
+++ b/extra/rox/rox.svg
@@ -0,0 +1,493 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ id="svg1573"
+ sodipodi:version="0.32"
+ inkscape:version="0.39"
+ width="100.00000pt"
+ height="80.000000pt"
+ sodipodi:docbase="/home/keep/graphics/arch_candy/svg-icons"
+ sodipodi:docname="rox_filer.svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:cc="http://web.resource.org/cc/"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs
+ id="defs1575">
+ <linearGradient
+ id="linearGradient2267">
+ <stop
+ style="stop-color:#fdffc6;stop-opacity:1.0000000;"
+ offset="0.0000000"
+ id="stop2268" />
+ <stop
+ style="stop-color:#ffbc00;stop-opacity:1.0000000;"
+ offset="1.0000000"
+ id="stop2269" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2267"
+ id="linearGradient2270"
+ x1="0.17269076"
+ y1="0.14173229"
+ x2="0.97590363"
+ y2="0.72834647" />
+ <linearGradient
+ id="linearGradient2263">
+ <stop
+ style="stop-color:#b4b4b4;stop-opacity:1.0000000;"
+ offset="0.0000000"
+ id="stop2264" />
+ <stop
+ style="stop-color:#e6e6e6;stop-opacity:1.0000000;"
+ offset="1.0000000"
+ id="stop2265" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient1589">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1.0000000;"
+ offset="0.0000000"
+ id="stop1590" />
+ <stop
+ style="stop-color:#9a9a9a;stop-opacity:1.0000000;"
+ offset="1.0000000"
+ id="stop1593" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient2196">
+ <stop
+ style="stop-color:#bee3ff;stop-opacity:1.0000000;"
+ offset="0.0000000"
+ id="stop2197" />
+ <stop
+ style="stop-color:#7dd3ff;stop-opacity:1.0000000;"
+ offset="0.073038995"
+ id="stop2200" />
+ <stop
+ style="stop-color:#2494d0;stop-opacity:1.0000000;"
+ offset="0.81849396"
+ id="stop2199" />
+ <stop
+ style="stop-color:#465b72;stop-opacity:1.0000000;"
+ offset="1.0000000"
+ id="stop2198" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient1606">
+ <stop
+ style="stop-color:#000000;stop-opacity:0.62745100;"
+ offset="0.0000000"
+ id="stop1607" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0.0000000;"
+ offset="1.0000000"
+ id="stop1608" />
+ </linearGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient1606"
+ id="radialGradient1636"
+ cx="1.0000000"
+ cy="1.0000000"
+ r="0.99467027"
+ fx="1.0000000"
+ fy="1.0000000" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient1606"
+ id="linearGradient1638"
+ x1="0.50000000"
+ y1="1.0000000"
+ x2="0.50000000"
+ y2="0.0000000" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient1606"
+ id="radialGradient1643"
+ cx="0.0000000"
+ cy="1.0000000"
+ r="1.0000000"
+ fx="0.0000000"
+ fy="1.0000000" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient1606"
+ id="linearGradient1645"
+ x1="0.0000000"
+ y1="0.50000000"
+ x2="1.0000000"
+ y2="0.50000000" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient1606"
+ id="linearGradient1647"
+ x1="1.0000000"
+ y1="0.50000000"
+ x2="0.0000000"
+ y2="0.50000000" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient1606"
+ id="linearGradient1649"
+ x1="0.50000000"
+ y1="1.8735014e-14"
+ x2="0.50000000"
+ y2="1.0000000" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient1606"
+ id="radialGradient1651"
+ cx="1.0000000"
+ cy="0.0000000"
+ r="1.0000000"
+ fx="1.0000000"
+ fy="0.0000000" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient1606"
+ id="radialGradient1653"
+ cx="0.0000000"
+ cy="0.0000000"
+ r="1.0000000"
+ fx="0.0000000"
+ fy="0.0000000" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2196"
+ id="linearGradient2195"
+ x1="0.28313252"
+ y1="0.17968750"
+ x2="0.32777777"
+ y2="0.82031250" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2196"
+ id="linearGradient2202"
+ x1="0.67934781"
+ y1="0.96875000"
+ x2="0.63000000"
+ y2="-0.054687500" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2196"
+ id="linearGradient2207"
+ x1="0.34701493"
+ y1="0.58801496"
+ x2="0.71766168"
+ y2="1.0074906" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient1589"
+ id="linearGradient1588"
+ x1="0.34029850"
+ y1="0.052631579"
+ x2="0.88955224"
+ y2="0.85964912" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2263"
+ id="radialGradient2272"
+ cx="0.65671641"
+ cy="0.34579438"
+ r="0.36985061"
+ fx="0.65671641"
+ fy="0.35046729" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="6.4980189"
+ inkscape:cx="45.259790"
+ inkscape:cy="38.198748"
+ inkscape:window-width="1018"
+ inkscape:window-height="744"
+ showgrid="true"
+ snaptogrid="false"
+ gridspacingy="10.000000pt"
+ gridspacingx="10.000000pt"
+ gridoriginy="0.0000000pt"
+ gridoriginx="0.0000000pt"
+ gridtolerance="2.0000000px"
+ inkscape:grid-bbox="false"
+ inkscape:grid-points="false"
+ inkscape:window-x="0"
+ inkscape:window-y="3"
+ showguides="true"
+ inkscape:guide-bbox="true"
+ inkscape:guide-points="true"
+ guidetolerance="3.0000000pt" />
+ <metadata
+ id="metadata1576">
+ <rdf:RDF
+ id="RDF1577">
+ <cc:Work
+ rdf:about=""
+ id="Work1578">
+ <dc:description
+ id="description1579">Created with Inkscape
+http://www.inkscape.org/</dc:description>
+ <dc:format
+ id="format1581">image/svg+xml</dc:format>
+ <dc:type
+ id="type1583"
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title
+ id="title1606">Rox-Filer Icon for Archlinux
+based on work found on the internet trying to match the original xpm</dc:title>
+ <dc:date
+ id="date1608">2004-07-14</dc:date>
+ <dc:creator
+ id="creator1610">
+ <cc:Agent
+ id="Agent1611">
+ <dc:title
+ id="title1612">Tobias Kieslich, Archlinux package maintainer</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:coverage
+ id="coverage1614" />
+ <cc:license
+ id="license1616"
+ rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/GPL/2.0/"
+ id="License1624">
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Reproduction"
+ id="permits1625" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Distribution"
+ id="permits1626" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/Notice"
+ id="requires1627" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/DerivativeWorks"
+ id="permits1628" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/ShareAlike"
+ id="requires1629" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/SourceCode"
+ id="requires1630" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <rect
+ style="fill:url(#radialGradient1636);fill-opacity:0.56000000;fill-rule:evenodd;stroke:none;"
+ id="sh_up_left"
+ width="18.750000"
+ height="18.750000"
+ x="0.15625000"
+ y="0.15624750" />
+ <rect
+ style="fill:url(#linearGradient1638);fill-opacity:0.56000000;fill-rule:evenodd;stroke:none;"
+ id="sh_up_top"
+ width="87.500000"
+ height="18.750000"
+ x="18.906250"
+ y="-2.4999999e-06" />
+ <rect
+ style="fill:url(#radialGradient1643);fill-opacity:0.56000000;fill-rule:evenodd;stroke:none;"
+ id="sh_up_right"
+ width="18.750000"
+ height="18.750000"
+ x="106.40625"
+ y="0.15624750" />
+ <rect
+ style="fill:url(#linearGradient1645);fill-opacity:0.56000000;fill-rule:evenodd;stroke:none;"
+ id="sh_side_right"
+ width="18.750000"
+ height="62.500000"
+ x="106.40625"
+ y="18.906250"
+ ry="0.0000000" />
+ <rect
+ style="fill:url(#radialGradient1653);fill-opacity:0.56000000;fill-rule:evenodd;stroke:none;"
+ id="sh_lo_right"
+ width="18.750000"
+ height="18.750000"
+ x="106.40625"
+ y="81.406250" />
+ <rect
+ style="fill:url(#linearGradient1649);fill-opacity:0.56000000;fill-rule:evenodd;stroke:none;"
+ id="sh_lo_button"
+ width="87.500000"
+ height="18.750000"
+ x="18.906250"
+ y="81.406250"
+ ry="0.0000000" />
+ <rect
+ style="fill:url(#radialGradient1651);fill-opacity:0.56000000;fill-rule:evenodd;stroke:none;"
+ id="sh_lo_left"
+ width="18.750000"
+ height="18.750000"
+ x="0.15625000"
+ y="81.406250"
+ ry="0.0000000" />
+ <rect
+ style="fill:url(#linearGradient1647);fill-opacity:0.56000000;fill-rule:evenodd;stroke:none;"
+ id="sh_side_left"
+ width="18.750000"
+ height="62.500000"
+ x="0.15625000"
+ y="18.906250" />
+ <path
+ style="fill:url(#linearGradient2195);fill-opacity:1.0000000;fill-rule:evenodd;stroke:#005ec6;stroke-width:0.37500000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:0.76973683;"
+ d="M 10.000000,17.031250 C 15.781250,16.406250 12.187501,7.1874998 23.593751,7.4999998 C 45.937500,7.6562498 50.000000,5.4687498 55.937501,12.031250 C 73.437502,11.875000 95.781252,12.187500 106.25000,13.437500 C 111.09375,21.718750 109.03244,76.848192 111.25000,85.000000 C 105.93750,85.781250 31.718750,84.843750 17.187500,85.000000 C 19.687500,74.062500 13.593750,31.093750 10.000000,17.031250 z "
+ id="path2194"
+ sodipodi:nodetypes="ccccccc" />
+ <path
+ style="fill:url(#linearGradient2202);fill-opacity:1.0000000;fill-rule:evenodd;stroke:#003465;stroke-width:0.50000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:0.51315790;"
+ d="M 22.656253,20.937500 C 27.656253,18.125000 102.18751,22.656260 118.12500,20.781250 C 113.28125,46.875000 107.43528,64.689405 111.09375,85.156250 C 92.656250,89.531250 42.031253,85.000000 17.187502,85.000000 C 8.7500029,53.281250 17.656253,23.750000 22.656253,20.937500 z "
+ id="path2201"
+ sodipodi:nodetypes="ccccc" />
+ <path
+ id="outline"
+ stroke="black"
+ stroke-width="1"
+ d="M 55.515353,11.233098 C 87.695353,13.593098 87.040232,46.022391 105.94188,47.608732 C 113.45000,47.428732 86.513146,58.158732 68.693146,56.338732 C 60.333146,56.338732 57.423146,56.698732 47.423146,57.608732 C 41.423146,58.518732 35.435573,58.989217 27.975573,57.179217 C 20.902855,58.670188 21.171750,57.406693 19.875646,46.904982 C 21.358146,46.737482 21.292460,46.313412 22.819854,48.554647 C 23.991544,50.273937 24.425353,46.595305 25.854085,48.756854 C 33.124085,44.026854 26.153146,23.978732 33.423146,21.428732 C 29.603146,15.978732 33.973146,9.4287317 36.693146,9.7887317 C 37.783146,7.2487317 37.221926,4.5924878 39.401926,5.5024878 C 43.194694,7.1884025 46.004695,3.4125365 48.214085,3.2643658 C 50.330329,3.9390609 49.603146,4.8787317 51.243146,5.4287317 C 57.063146,2.8787317 55.923427,9.3281222 55.515353,11.233098 z "
+ style="fill:url(#radialGradient2272);stroke:#000000;stroke-width:1.8000009;stroke-miterlimit:4.0000000;opacity:1.0000000;"
+ sodipodi:nodetypes="ccccccsccccccc"
+ transform="translate(-4.687500,23.28125)" />
+ <path
+ style="fill:#8c8c8c;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
+ d="M 84.890446,38.997755 C 84.890446,38.997755 88.581336,37.807146 90.724434,37.092780 C 91.795983,40.069305 97.868097,47.689207 107.15485,48.046390 C 110.72668,47.808268 93.343775,48.522634 90.248190,49.475122 C 87.152604,50.427610 84.652324,41.140853 84.890446,38.997755 z "
+ id="path2244"
+ sodipodi:nodetypes="ccccc"
+ transform="translate(-4.687500,23.28125)" />
+ <path
+ style="fill:#aaaaaa;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.95000046;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
+ d="M 78.173843,39.831182 C 78.650087,44.117377 78.411965,55.904415 86.269989,56.142537 C 98.176087,55.904415 112.93964,49.237000 102.46229,48.284512 C 94.842380,47.689208 93.175526,50.427610 85.555623,38.759633 C 85.079379,32.330340 85.317501,38.759634 85.555623,38.759634 L 78.173843,39.831182 z "
+ id="path2243"
+ sodipodi:nodetypes="cccccc"
+ transform="translate(-4.687500,23.28125)" />
+ <path
+ style="fill:#aaaaaa;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.95000046;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
+ d="M 72.173840,40.069304 C 72.650084,44.355499 75.388487,56.142537 80.508108,55.904415 C 92.414206,55.666293 110.27335,48.046390 99.795987,48.284512 C 92.890450,48.998878 81.936840,51.261037 79.793742,39.593060 C 79.317498,33.163767 79.793742,39.593061 79.793742,39.593061 L 72.173840,40.069304 z "
+ id="path2242"
+ sodipodi:nodetypes="cccccc"
+ transform="translate(-4.687500,23.28125)" />
+ <path
+ style="fill:#aaaaaa;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.95000046;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
+ d="M 65.744547,40.188365 C 66.220791,44.474560 67.054218,56.142537 74.912242,56.380659 C 86.818339,56.142537 101.34378,49.594183 90.866413,49.832305 C 82.889327,49.832305 75.626608,51.261037 73.364449,39.950243 C 72.888205,33.520950 73.364449,39.950244 73.364449,39.950244 L 65.744547,40.188365 z "
+ id="path1620"
+ sodipodi:nodetypes="cccccc"
+ transform="translate(-4.687500,23.28125)" />
+ <path
+ style="fill:#aaaaaa;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.95000046;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
+ d="M 61.554493,41.021792 C 62.030737,45.307987 62.745103,55.309110 70.603127,55.547232 C 77.389603,57.095025 90.605372,50.903854 80.128005,51.141976 C 72.627163,50.308549 70.841249,47.689208 68.698151,40.783670 C 67.983785,30.782548 68.221907,39.593061 68.221907,39.593061 L 61.554493,41.021792 z "
+ id="path1619"
+ sodipodi:nodetypes="cccccc"
+ transform="translate(-4.687500,23.28125)" />
+ <path
+ style="fill:#0e5ca4;fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#linearGradient2207);stroke-width:2.8750000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
+ d="M 18.125000,83.750000 C 15.781250,74.687500 55.937499,78.593750 65.156250,78.593750 C 78.125000,78.906250 82.031249,57.656250 89.843750,57.500000 C 94.531250,57.656250 104.59597,56.966529 109.75222,56.966529 C 108.17076,66.501032 108.33487,74.284818 109.68750,84.218750 C 92.500002,87.968750 42.343750,83.593750 18.125000,83.750000 z "
+ id="path2206"
+ sodipodi:nodetypes="cccccc" />
+ <path
+ style="fill:#aaaaaa;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.95000046;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
+ d="M 30.241456,38.045267 C 29.288968,47.927329 28.336481,47.927329 26.431505,49.951366 C 25.479017,48.403573 24.407468,48.403573 23.097797,49.951366 C 21.669066,48.284512 21.779994,46.597620 20.172530,47.349456 C 21.072561,50.995102 20.280329,54.730317 22.014628,58.317134 C 28.786566,56.578346 35.306033,59.977218 53.934591,56.542597 C 58.339847,54.756683 47.386237,41.855219 46.314688,42.212402 C 45.243139,42.569585 33.337041,44.355500 30.241456,38.045267 z "
+ id="path2245"
+ sodipodi:nodetypes="cccccccc"
+ transform="translate(-4.687500,23.28125)" />
+ <path
+ style="fill:#ffc800;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.85000044;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
+ d="M 32.136364,51.487233 C 28.207348,51.844415 27.753870,54.946654 28.230114,57.565995 C 30.023765,56.968112 32.078234,57.581448 34.761364,57.362233 L 34.761364,51.987233 C 34.066700,51.633088 33.237515,51.349589 32.136364,51.487233 z "
+ id="path2261"
+ sodipodi:nodetypes="ccccc"
+ transform="translate(-4.687500,23.28125)" />
+ <path
+ style="fill:#ffc800;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.85000044;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
+ d="M 35.470071,51.606294 C 31.541055,51.963476 31.087577,55.065715 31.563821,57.685056 C 33.357472,57.087173 35.411941,57.700509 38.095071,57.481294 L 38.095071,52.106294 C 37.400407,51.752149 36.571222,51.468650 35.470071,51.606294 z "
+ id="path2260"
+ sodipodi:nodetypes="ccccc"
+ transform="translate(-4.687500,23.28125)" />
+ <path
+ style="fill:#ffc800;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.85000044;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
+ d="M 38.208474,51.606294 C 34.279458,51.963476 33.825980,56.018203 34.302224,58.637544 C 36.095875,58.039661 38.150344,57.700509 40.833474,57.481294 L 40.833474,52.106294 C 40.138810,51.752149 39.309625,51.468650 38.208474,51.606294 z "
+ id="path2259"
+ transform="translate(-4.687500,23.28125)" />
+ <path
+ style="fill:#ffc800;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.85000044;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
+ d="M 41.184999,51.606294 C 37.255983,51.963476 36.802505,56.018203 37.278749,58.637544 C 39.072400,58.039661 41.126869,57.700509 43.809999,57.481294 L 43.809999,52.106294 C 43.115335,51.752149 42.286150,51.468650 41.184999,51.606294 z "
+ id="path2258"
+ transform="translate(-4.687500,23.28125)" />
+ <path
+ style="fill:#ffc800;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.85000044;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
+ d="M 44.280584,51.487233 C 40.351568,51.844415 39.898090,55.899142 40.374334,58.518483 C 42.167985,57.920600 44.222454,57.581448 46.905584,57.362233 L 46.905584,51.987233 C 46.210920,51.633088 45.381735,51.349589 44.280584,51.487233 z "
+ id="path2249"
+ transform="translate(-4.687500,23.28125)" />
+ <path
+ style="fill:#ffc800;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.85000044;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
+ d="M 61.911677,45.307988 C 61.375902,44.415030 61.765709,44.034840 61.733085,42.658881 C 58.268663,42.540664 58.280316,48.344042 58.697030,52.570707 C 56.077688,52.808829 55.363323,52.570707 54.291774,52.689768 C 53.220225,52.808829 52.029615,50.546671 49.172152,50.903854 C 45.243139,51.261036 44.766896,55.309110 45.243140,57.928451 C 49.172151,56.618781 53.577408,56.380658 65.721628,56.499719 C 56.672994,50.070426 60.721067,44.593622 61.911677,45.307988 z "
+ id="path2248"
+ sodipodi:nodetypes="cccccccc"
+ transform="translate(-4.687500,23.28125)" />
+ <path
+ style="fill:#ffffff;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.75000042;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
+ d="M 38.862811,5.8564233 C 40.714965,6.4457451 43.778156,8.4025157 47.566654,3.8563191 C 48.661109,3.2669973 49.839752,5.5400956 51.186773,5.7926621 C 48.745297,8.2341380 48.324354,12.527769 45.461933,12.527768 C 42.431136,13.032901 41.841814,10.423048 37.295617,10.423047 C 36.958861,9.9179145 36.673901,6.3615563 38.862811,5.8564233 z "
+ id="path2273"
+ sodipodi:nodetypes="cccccc"
+ transform="translate(-4.687500,23.28125)" />
+ <path
+ style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.45000023;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
+ d="M 37.884939,9.1602151 C 38.726827,8.5708933 41.168303,9.1602151 42.094380,9.9179146 C 43.020458,10.675614 47.314087,4.3614521 49.166242,4.8665850 C 50.850018,6.0452286 51.439340,5.5400956 50.765829,6.4661727 C 50.092319,7.3922498 47.903409,12.696146 45.798689,12.611957 C 43.693968,12.527768 38.474261,9.9179146 37.463995,10.338859 C 36.453729,10.759803 37.884939,9.1602151 37.884939,9.1602151 z "
+ id="path2274"
+ sodipodi:nodetypes="ccccccc"
+ transform="translate(-4.687500,23.28125)" />
+ <path
+ style="fill:url(#linearGradient2270);fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.90000045;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
+ d="M 40.480700,28.282268 C 35.837322,26.139170 26.550566,13.399645 37.146993,10.304059 C 42.504737,10.423120 41.314127,13.042462 44.409712,12.447157 C 47.505298,11.851852 49.886518,4.3510105 53.339286,4.9463154 C 55.601444,7.0894130 55.958628,15.423681 53.101164,18.757389 C 50.005579,19.709877 46.195627,19.471755 40.480700,28.282268 z "
+ id="path2262"
+ sodipodi:nodetypes="cccccc"
+ transform="translate(-4.687500,23.28125)" />
+ <path
+ style="fill:#000000;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.2500006;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
+ d="M 42.346947,9.9179146 C 41.926003,10.338859 41.505058,10.759803 41.589247,11.180747 C 42.431136,11.601691 43.273024,12.443579 44.788422,12.527769 C 45.967067,11.517503 46.135443,8.4867045 45.377745,8.3183268 C 44.367479,7.8973828 43.020457,9.0760263 42.346947,9.9179146 z "
+ id="path2275"
+ sodipodi:nodetypes="ccccc"
+ transform="translate(-4.687500,23.28125)" />
+ <path
+ style="fill:#ffffff;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.85000044;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
+ d="M 41.195066,29.115694 C 40.123518,29.472877 34.765774,29.591938 35.242017,36.140292 C 35.718261,42.688646 40.718822,50.427609 48.100603,50.903853 C 49.291213,51.022914 58.339847,48.165450 55.958627,36.973718 C 52.267738,26.734474 46.314688,28.520389 41.195066,29.115694 z "
+ id="path2276"
+ sodipodi:nodetypes="ccccc"
+ transform="translate(-4.687500,23.28125)" />
+ <path
+ style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.85000044;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
+ d="M 20.025215,48.192533 C 20.739581,49.025960 19.406907,55.190048 26.193383,50.189487"
+ id="path2278"
+ sodipodi:nodetypes="cc"
+ transform="translate(-4.687500,23.28125)" />
+ <path
+ style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.85000044;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
+ d="M 24.185500,48.718875 C 24.304561,49.552301 24.764651,51.141975 26.431505,49.832305"
+ id="path2279"
+ sodipodi:nodetypes="cc"
+ transform="translate(-4.687500,23.28125)" />
+ <path
+ style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.85000044;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
+ d="M 53.815530,22.448279 C 57.625482,22.686401 60.482945,27.925084 61.554494,41.736158"
+ id="path2280"
+ sodipodi:nodetypes="cc"
+ transform="translate(-4.687500,23.28125)" />
+ <path
+ style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.85000044;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;"
+ d="M 36.908871,25.662926 C 35.480139,28.401329 33.932347,29.710999 35.122956,36.140292"
+ id="path2281"
+ sodipodi:nodetypes="cc"
+ transform="translate(-4.687500,23.28125)" />
+</svg>
diff --git a/extra/rrdtool/PKGBUILD b/extra/rrdtool/PKGBUILD
new file mode 100644
index 000000000..7f4416ccd
--- /dev/null
+++ b/extra/rrdtool/PKGBUILD
@@ -0,0 +1,36 @@
+# $Id: PKGBUILD 104670 2011-01-04 18:37:53Z eric $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+
+pkgname=rrdtool
+pkgver=1.4.5
+pkgrel=1
+pkgdesc="Data logging and graphing application"
+arch=('i686' 'x86_64')
+url="http://www.rrdtool.org"
+license=('GPL' 'custom')
+depends=('libpng' 'libxml2' 'pango' 'tcp_wrappers')
+makedepends=('intltool' 'ruby' 'python2' 'tcl' 'lua')
+optdepends=('tcl: to use corresponding binding' \
+ 'python2: to use corresponding binding' \
+ 'ruby: to use corresponding binding' \
+ 'lua: to use corresponding binding')
+options=('!libtool' '!emptydirs' '!makeflags')
+source=(http://oss.oetiker.ch/rrdtool/pub/rrdtool-${pkgver}.tar.gz)
+md5sums=('4d116dba9a0888d8aaac179e35d3980a')
+sha1sums=('56638e8aedd5d5522152e86746e382b75dc48c35')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --localstatedir=/var --disable-rpath \
+ --enable-perl --enable-perl-site-install --with-perl-options='INSTALLDIRS=vendor' \
+ --enable-ruby --enable-ruby-site-install --enable-python \
+ --enable-lua --enable-lua-site-install --enable-tcl
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+
+ install -D -m644 COPYRIGHT "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+}
diff --git a/extra/rssh/PKGBUILD b/extra/rssh/PKGBUILD
new file mode 100644
index 000000000..131c0ed16
--- /dev/null
+++ b/extra/rssh/PKGBUILD
@@ -0,0 +1,34 @@
+# $Id: PKGBUILD 100737 2010-11-25 18:27:36Z bisson $
+# Maintainer: Judd Vinet <jvinet@zeroflux.org>
+pkgname=rssh
+pkgver=2.3.3
+pkgrel=2
+pkgdesc='A restricted shell for use with OpenSSH, allowing only scp and/or sftp'
+arch=('i686' 'x86_64')
+url='http://www.pizzashack.org/rssh/'
+depends=('openssh' 'glibc')
+backup=('etc/rssh.conf')
+license=('custom:rssh')
+source=("http://downloads.sourceforge.net/sourceforge/rssh/rssh-$pkgver.tar.gz"
+ 'destdir.patch'
+ 'rsync.patch')
+sha1sums=('0a6dd80b5e6059e0db12c9f1276121dd966b610a'
+ '85bd1694decae5872cbeeafd578b147eb13313c6'
+ '41f32f8a77b3a2b924ede6044ab67846e06b5d20')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ patch -p1 < ../destdir.patch
+ patch -p1 < ../rsync.patch # FS#21783, debian patch
+
+ ./configure --prefix=/usr --libexecdir=/usr/lib/rssh \
+ --mandir=/usr/share/man --sysconfdir=/etc
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make DESTDIR="$pkgdir" install
+ install -Dm644 LICENSE "$pkgdir"/usr/share/licenses/rssh/LICENSE
+}
diff --git a/extra/rssh/destdir.patch b/extra/rssh/destdir.patch
new file mode 100644
index 000000000..90fa03e6d
--- /dev/null
+++ b/extra/rssh/destdir.patch
@@ -0,0 +1,24 @@
+diff -aur old//Makefile.am new//Makefile.am
+--- old//Makefile.am 2006-12-21 23:22:37.000000000 +0100
++++ new//Makefile.am 2010-11-25 18:15:29.253376150 +0100
+@@ -16,7 +16,7 @@
+ $(CC) -c $(DEFS) $(ourdefs) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $<
+
+ install-exec-hook:
+- chmod u+s $(libexecdir)/rssh_chroot_helper
++ chmod u+s $(DESTDIR)$(libexecdir)/rssh_chroot_helper
+
+ rpm: dist
+ rpmbuild -ta --sign $(base).tar.gz
+diff -aur old//Makefile.in new//Makefile.in
+--- old//Makefile.in 2010-08-01 15:59:54.000000000 +0200
++++ new//Makefile.in 2010-11-25 18:15:29.253376150 +0100
+@@ -830,7 +830,7 @@
+ $(CC) -c $(DEFS) $(ourdefs) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $<
+
+ install-exec-hook:
+- chmod u+s $(libexecdir)/rssh_chroot_helper
++ chmod u+s $(DESTDIR)$(libexecdir)/rssh_chroot_helper
+
+ rpm: dist
+ rpmbuild -ta --sign $(base).tar.gz
diff --git a/extra/rssh/rsync.patch b/extra/rssh/rsync.patch
new file mode 100644
index 000000000..cafd6c54b
--- /dev/null
+++ b/extra/rssh/rsync.patch
@@ -0,0 +1,57 @@
+diff -aur old//util.c new//util.c
+--- old//util.c 2010-08-01 15:07:00.000000000 +0200
++++ new//util.c 2010-11-25 18:16:24.086709600 +0100
+@@ -56,6 +56,7 @@
+ #ifdef HAVE_LIBGEN_H
+ #include <libgen.h>
+ #endif /* HAVE_LIBGEN_H */
++#include <regex.h>
+
+ /* LOCAL INCLUDES */
+ #include "pathnames.h"
+@@ -187,6 +188,33 @@
+ }
+
+ /*
++ * check_rsync_e() - take the command line passed to rssh and look for a -e
++ * option. If one is found, make sure --server is provided
++ * and the option contains only the protocol information.
++ * Returns 1 if the command line is safe; 0 otherwise.
++ */
++static int check_rsync_e( char *cl )
++{
++ int status;
++ regex_t re;
++
++ /*
++ * This is more complicated than it looks because we don't want to
++ * trigger on the e in --server, but we do want to catch the common
++ * case of -ltpre.iL (which contains -e.).
++ */
++ static const char pattern[] = "[ \t\v\f]-([^-][^ ]*)?e[^.0-9]";
++
++ if ( strstr(cl, "--server") == NULL ) return 0;
++ if ( regcomp(&re, pattern, REG_EXTENDED | REG_NOSUB) != 0 ){
++ return 0;
++ }
++ status = regexec(&re, cl, 0, NULL, 0);
++ regfree(&re);
++ return (status == 0) ? 0 : 1;
++}
++
++/*
+ * check_command_line() - take the command line passed to rssh, and verify
+ * that the specified command is one the user is
+ * allowed to run. Return the path of the command
+@@ -230,9 +258,9 @@
+
+ if ( check_command(cl, opts, PATH_RSYNC, RSSH_ALLOW_RSYNC) ){
+ /* filter -e option */
+- if ( opt_exist(cl, 'e') ){
++ if ( opt_exist(cl, 'e') && !check_rsync_e(cl) ){
+ fprintf(stderr, "\ninsecure -e option not allowed.");
+- log_msg("insecure -e option in rdist command line!");
++ log_msg("insecure -e option in rsync command line!");
+ return NULL;
+ }
+
diff --git a/extra/rsync/ChangeLog b/extra/rsync/ChangeLog
new file mode 100644
index 000000000..a1d6b4f9d
--- /dev/null
+++ b/extra/rsync/ChangeLog
@@ -0,0 +1,35 @@
+2010-01-01 Eric Belanger <eric@archlinux.org>
+
+ * rsync 3.0.7-1
+ * Upstream update
+
+2009-05-08 Eric Belanger <eric@archlinux.org>
+
+ * rsync 3.0.6-1
+ * Upstream update
+
+2008-12-29 Eric Belanger <eric@archlinux.org>
+
+ * rsync 3.0.5-1
+ * Upstream update
+
+2008-09-06 Eric Belanger <eric@archlinux.org>
+
+ * rsync 3.0.4-1
+ * Upstream update
+
+2008-07-05 Eric Belanger <eric@archlinux.org>
+
+ * rsync 3.0.3-1
+ * Upstream update
+
+2008-04-13 Eric Belanger <eric@archlinux.org>
+
+ * rsync 3.0.2-1
+ * Upstream update
+
+2008-03-01 Eric Belanger <eric@archlinux.org>
+
+ * rsync 3.0.0-1
+ * Upstream update
+ * Updated license
diff --git a/extra/rsync/PKGBUILD b/extra/rsync/PKGBUILD
new file mode 100644
index 000000000..9441a7322
--- /dev/null
+++ b/extra/rsync/PKGBUILD
@@ -0,0 +1,41 @@
+# $Id: PKGBUILD 107956 2011-01-28 05:41:54Z angvp $
+# Maintainer: Angel Velasquez <angvp@archlinux.org>
+# Contributor: Eric Belanger <eric@archlinux.org>
+# Contributor: Judd Vinet <jvinet@zeroflux.org>
+# Contributor: Daniel J Griffiths <ghost1227@archlinux.us>
+pkgname=rsync
+pkgver=3.0.7
+pkgrel=2
+pkgdesc="A file transfer program to keep remote files in sync"
+arch=('i686' 'x86_64')
+url="http://samba.anu.edu.au/rsync/"
+license=('GPL3')
+depends=('acl')
+backup=('etc/rsyncd.conf' 'etc/xinetd.d/rsync')
+source=(http://rsync.samba.org/ftp/rsync/${pkgname}-${pkgver}.tar.gz \
+ rsyncd.conf rsyncd rsync.xinetd)
+md5sums=('b53525900817cf1ba7ad3a516ab5bfe9'
+ '4395c0591638349b1a7aeaaa4da1f03a'
+ '3d8f90ac8467ff6af28754584a61fd11'
+ 'ea3e9277dc908bc51f9eddc0f6b935c1')
+sha1sums=('63426a1bc71991d93159cd522521fbacdafb7a61'
+ '48be09294134dfed888818872fe552a59c29147a'
+ '357af5648eb4ecf84cc6b1de1cd79d21eca3a518'
+ 'fdb99785bc87ee13d77aa90dc1804f3f75dd7fc1')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./prepare-source
+ ./configure --prefix=/usr --with-included-popt \
+ --enable-acl-support --enable-xattr-support
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+ install -Dm755 ../rsyncd ${pkgdir}/etc/rc.d/rsyncd
+ install -Dm644 ../rsyncd.conf ${pkgdir}/etc/rsyncd.conf
+ install -Dm644 ../rsync.xinetd ${pkgdir}/etc/xinetd.d/rsync
+}
+
diff --git a/extra/rsync/rsync.xinetd b/extra/rsync/rsync.xinetd
new file mode 100644
index 000000000..f5b6b1ed5
--- /dev/null
+++ b/extra/rsync/rsync.xinetd
@@ -0,0 +1,11 @@
+service rsync
+{
+ socket_type = stream
+ wait = no
+ user = root
+ server = /usr/bin/rsync
+ server_args = --daemon
+ log_on_success += HOST DURATION
+ log_on_failure += HOST
+ disable = yes
+}
diff --git a/extra/rsync/rsyncd b/extra/rsync/rsyncd
new file mode 100644
index 000000000..573130fb3
--- /dev/null
+++ b/extra/rsync/rsyncd
@@ -0,0 +1,37 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+case "$1" in
+ start)
+ stat_busy "Starting rsyncd"
+ [ ! -f /var/run/daemons/rsyncd ] && /usr/bin/rsync --daemon
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ #pgrep -of "/usr/bin/rsync --daemon" > /var/run/rsyncd.pid # Removed FS#20942
+ add_daemon rsyncd
+ stat_done
+ fi
+ ;;
+
+ stop)
+ stat_busy "Stopping rsyncd"
+ [ -f /var/run/rsyncd.pid ] && kill `cat /var/run/rsyncd.pid`
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon rsyncd
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
diff --git a/extra/rsync/rsyncd.conf b/extra/rsync/rsyncd.conf
new file mode 100644
index 000000000..f7161f3f8
--- /dev/null
+++ b/extra/rsync/rsyncd.conf
@@ -0,0 +1,16 @@
+uid = nobody
+gid = nobody
+use chroot = no
+max connections = 4
+syslog facility = local5
+pid file = /var/run/rsyncd.pid
+
+[ftp]
+ path = /home/ftp
+ comment = ftp area
+
+#[cvs]
+# path = /data/cvs
+# comment = CVS repository (requires authentication)
+# auth users = tridge, susan
+# secrets file = /etc/rsyncd.secrets
diff --git a/extra/rtkit/PKGBUILD b/extra/rtkit/PKGBUILD
new file mode 100644
index 000000000..553c69d38
--- /dev/null
+++ b/extra/rtkit/PKGBUILD
@@ -0,0 +1,36 @@
+# $Id: PKGBUILD 111724 2011-02-28 21:05:00Z heftig $
+# Maintainer: Jan "heftig" Steffens <jan.steffens@gmail.com>
+# Contributor: Corrado Primier <bardo@aur.archlinux.org>
+
+pkgname=rtkit
+pkgver=0.10
+pkgrel=1
+pkgdesc="Realtime Policy and Watchdog Daemon"
+arch=('i686' 'x86_64')
+url="http://git.0pointer.de/?p=rtkit.git"
+license=('GPL' 'custom:BSD')
+depends=('dbus' 'polkit')
+makedepends=('pkgconfig')
+install=rtkit.install
+source=(http://0pointer.de/public/$pkgname-$pkgver.tar.gz)
+md5sums=('9ab7f2a25ddf05584ea2216dfe4cefd4')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ ./configure --libexecdir=/usr/lib --prefix=/usr --sysconfdir=/etc
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make DESTDIR="$pkgdir" install
+
+ # DBus configuration
+ mkdir -p "$pkgdir/usr/share/dbus-1/interfaces"
+ ./rtkit-daemon --introspect >"$pkgdir/usr/share/dbus-1/interfaces/org.freedesktop.RealtimeKit1.xml"
+
+ # Client license
+ mkdir -p "$pkgdir/usr/share/licenses/rtkit"
+ sed -ne '4,25p' rtkit.c >"$pkgdir/usr/share/licenses/rtkit/COPYING"
+}
diff --git a/extra/rtkit/rtkit.install b/extra/rtkit/rtkit.install
new file mode 100644
index 000000000..0ec1fab52
--- /dev/null
+++ b/extra/rtkit/rtkit.install
@@ -0,0 +1,26 @@
+post_install() {
+ getent group rtkit &>/dev/null || /usr/sbin/groupadd -g 133 rtkit || return 1
+ getent passwd rtkit &>/dev/null || /usr/sbin/useradd -u 133 -g rtkit -c 'RealtimeKit' -s /sbin/nologin -d /proc rtkit || return 1
+
+ dbus-send --system --type=method_call --dest=org.freedesktop.DBus / org.freedesktop.DBus.ReloadConfig >/dev/null 2>&1
+
+ true
+}
+
+post_upgrade() {
+ if (( $(vercmp $2 0.10) < 0 )); then
+ # Get rid of old user and group
+ post_remove
+ fi
+
+ post_install
+}
+
+post_remove() {
+ getent passwd rtkit &>/dev/null && /usr/sbin/userdel -f rtkit
+ getent group rtkit &>/dev/null && /usr/sbin/groupdel rtkit
+
+ true
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/extra/rtmpdump/PKGBUILD b/extra/rtmpdump/PKGBUILD
new file mode 100644
index 000000000..6e7d26e4c
--- /dev/null
+++ b/extra/rtmpdump/PKGBUILD
@@ -0,0 +1,20 @@
+# $Id: $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: xduugu
+# Contributor: Elis Hughes <elishughes@googlemail.com>
+pkgname=rtmpdump
+pkgver=2.3
+pkgrel=3
+pkgdesc="A tool to download rtmp streams"
+arch=('i686' 'x86_64')
+url="http://rtmpdump.mplayerhq.hu/"
+license=('LGPL')
+depends=('openssl')
+source=(http://rtmpdump.mplayerhq.hu/download/${pkgname}-${pkgver}.tgz)
+sha256sums=('ef38b7a99d82ce6912063d21063aeaf28185341b3df486e24bffce5354224b2c')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ sed -i 's/^install_so.0:.*/& install_base/' librtmp/Makefile
+ make prefix=/usr MANDIR="${pkgdir}/usr/share/man" DESTDIR="${pkgdir}" install
+}
diff --git a/extra/rubberband/PKGBUILD b/extra/rubberband/PKGBUILD
new file mode 100644
index 000000000..3566886e3
--- /dev/null
+++ b/extra/rubberband/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 86992 2010-08-08 20:57:26Z schiv $
+# Maintainer: Ray Rashif <schivmeister@gmail.com>
+# Contributor: Felipe Machado aka arch_audio <machado.felipe@gmail.com>
+
+pkgname=rubberband
+pkgver=1.5.0
+pkgrel=1
+pkgdesc="Time-stretching and pitch-shifting audio library and utility"
+arch=('i686' 'x86_64')
+url="http://www.breakfastquay.com/rubberband/"
+license=('GPL')
+depends=('libsamplerate' 'fftw' 'vamp-plugin-sdk')
+makedepends=('ladspa')
+source=(http://code.breakfastquay.com/attachments/download/1/$pkgname-$pkgver.tar.bz2)
+md5sums=('c5f288d644fcd46bd159e187bcc33f25')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ make DESTDIR="$pkgdir/" install
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/extra/rubberband/rubberband.changelog b/extra/rubberband/rubberband.changelog
new file mode 100644
index 000000000..1d479b0f2
--- /dev/null
+++ b/extra/rubberband/rubberband.changelog
@@ -0,0 +1,11 @@
+9 Aug 2010 (GMT+8) Ray Rashif <schivmeister@gmail.com>
+
+ * 1.5.0-1 :
+ Brought into extra from community for ardour
+ - replaces soundtouch for enhanced functionality
+
+ * PKGBUILD :
+ Minor cosmetic ammendments.
+
+ * rubberband.changelog :
+ Added this changelog.
diff --git a/extra/ruby/PKGBUILD b/extra/ruby/PKGBUILD
new file mode 100644
index 000000000..09050b137
--- /dev/null
+++ b/extra/ruby/PKGBUILD
@@ -0,0 +1,50 @@
+# $Id: PKGBUILD 110397 2011-02-19 07:14:33Z eric $
+# Maintainer:
+# Contributor: Allan McRae <allan@archlinux.org>
+# Contributor: John Proctor <jproctor@prium.net>
+# Contributor: Jeramy Rutley <jrutley@gmail.com>
+
+pkgbase=ruby
+pkgname=('ruby' 'ruby-docs')
+pkgver=1.9.2_p180
+pkgrel=1
+pkgdesc="An object-oriented language for quick and easy programming"
+arch=('i686' 'x86_64')
+url="http://www.ruby-lang.org/en/"
+license=('custom')
+makedepends=('gdbm' 'db' 'openssl' 'zlib' 'readline' 'tk' 'libffi' 'doxygen'
+ 'graphviz')
+options=('!emptydirs')
+source=("ftp://ftp.ruby-lang.org/pub/ruby/1.9/${pkgbase}-${pkgver//_/-}.tar.bz2")
+md5sums=('68510eeb7511c403b91fe5476f250538')
+sha1sums=('10824b44c8060c7b9b5afc0b3519a1e9f02f7fe5')
+
+build() {
+ cd "${srcdir}/${pkgbase}-${pkgver//_/-}"
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --enable-shared \
+ --enable-pthread \
+ --disable-rpath
+ make
+}
+
+package_ruby() {
+ depends=('gdbm' 'db' 'openssl' 'zlib' 'readline' 'libffi')
+ provides=('rubygems' 'rake')
+ conflicts=('rubygems' 'rake')
+ optdepends=('tk: for Ruby/TK')
+
+ cd "${srcdir}/${pkgbase}-${pkgver//_/-}"
+ make DESTDIR="${pkgdir}" install-nodoc
+ install -Dm644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+}
+
+package_ruby-docs() {
+ pkgdesc="Documentation files for ruby"
+ depends=('ruby')
+
+ cd "${srcdir}/${pkgbase}-${pkgver//_/-}"
+ make -j1 DESTDIR="${pkgdir}" install-doc install-capi
+ install -Dm644 COPYING "${pkgdir}/usr/share/licenses/ruby-docs/LICENSE"
+}
diff --git a/extra/rxvt-unicode/PKGBUILD b/extra/rxvt-unicode/PKGBUILD
new file mode 100644
index 000000000..aed626312
--- /dev/null
+++ b/extra/rxvt-unicode/PKGBUILD
@@ -0,0 +1,59 @@
+# $Id: PKGBUILD 106127 2011-01-14 17:50:21Z angvp $
+# Maintainer: tobias <tobias@archlinux.org>
+# Contributor: dibblethewrecker dibblethewrecker.at.jiwe.dot.org
+
+pkgname=rxvt-unicode
+pkgver=9.10
+pkgrel=1
+pkgdesc="An unicode enabled rxvt-clone terminal emulator (urxvt)"
+arch=(i686 x86_64)
+depends=('gcc-libs' 'libxft' 'gdk-pixbuf2')
+makedepends=('ncurses' 'perl>=5.12.2' 'pkgconfig')
+optdepends=('perl: lots of utilities' 'gtk2-perl: to use the urxvt-tabbed')
+url="http://software.schmorp.de/pkg/rxvt-unicode.html"
+license=("GPL")
+source=(http://dist.schmorp.de/rxvt-unicode/${pkgname}-${pkgver}.tar.bz2 \
+ ${pkgname}.desktop ${pkgname}.png popup-menu-hang.diff)
+md5sums=('a23aa40b31e843878b6f9c44768de430'
+ '5bfefa1b41c2b81ca18f2ef847330543'
+ '84328cada91751df07324d95f8be4d1b'
+ 'aead33ba3b08eeb251fb0c1427a4a024')
+sha1sums=('54c896a4885b8984b0dfa652269c3c34c4d75f2d'
+ '79b7cacb7d6ce4a34f8a31a2e33475a8f7bf69cb'
+ '9ff58d7b1d60838c51c9045bc0be342fac456790'
+ 'ec4013f4af3a45da928b75f40fbf6389070e7fdd')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -p0 < ../popup-menu-hang.diff
+ ./configure --prefix=/usr \
+ --with-terminfo=/usr/share/terminfo \
+ --enable-256-color \
+ --enable-font-styles \
+ --enable-xim \
+ --enable-keepscrolling \
+ --enable-selectionscrolling \
+ --enable-smart-resize \
+ --enable-pixbuf \
+ --enable-transparency \
+ --enable-utmp \
+ --enable-wtmp \
+ --enable-lastlog \
+ --disable-frills
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ install -d "${pkgdir}/usr/share/terminfo"
+ export TERMINFO="${pkgdir}/usr/share/terminfo"
+ make DESTDIR="${pkgdir}" install
+ # install the tabbing wrapper ( requires gtk2-perl! )
+ sed -i 's/\"rxvt\"/"urxvt"/' doc/rxvt-tabbed
+ install -Dm 755 doc/rxvt-tabbed "${pkgdir}/usr/bin/urxvt-tabbed"
+ # install freedesktop menu and icon ( icon from cvs checkout )
+ install -Dm644 ../${pkgname}.desktop \
+ "${pkgdir}/usr/share/applications/${pkgname}.desktop"
+ install -Dm644 ../${pkgname}.png \
+ "${pkgdir}/usr/share/pixmaps/${pkgname}.png"
+}
diff --git a/extra/rxvt-unicode/popup-menu-hang.diff b/extra/rxvt-unicode/popup-menu-hang.diff
new file mode 100644
index 000000000..09bb3c64b
--- /dev/null
+++ b/extra/rxvt-unicode/popup-menu-hang.diff
@@ -0,0 +1,24 @@
+Index: src/perl/urxvt-popup
+===================================================================
+RCS file: /schmorpforge/rxvt-unicode/src/perl/urxvt-popup,v
+retrieving revision 1.15
+diff -u -r1.15 urxvt-popup
+--- src/perl/urxvt-popup 24 Dec 2007 08:21:40 -0000 1.15
++++ src/perl/urxvt-popup 2 Aug 2009 08:22:52 -0000
+@@ -120,7 +120,7 @@
+ $self->refresh;
+
+ # might fail, but try anyways
+- $self->grab ($self->{data}{event}{time}, 1)
++ $self->grab ($self->{data}{event}{time})
+ and $self->allow_events_async;
+
+ on_button_press $self, $self->{data}{event} if $self->{data}{event}{button};
+@@ -132,7 +132,7 @@
+ my ($self, $event) = @_;
+
+ # should definitely not fail
+- $self->grab ($self->{data}{event}{time}, 1)
++ $self->grab ($self->{data}{event}{time})
+ and $self->allow_events_async;
+ }
diff --git a/extra/rxvt-unicode/rxvt-unicode.desktop b/extra/rxvt-unicode/rxvt-unicode.desktop
new file mode 100644
index 000000000..436e8d119
--- /dev/null
+++ b/extra/rxvt-unicode/rxvt-unicode.desktop
@@ -0,0 +1,10 @@
+[Desktop Entry]
+Version=1.0
+Encoding=UTF-8
+Name=rxvt-unicode
+Comment=An Unicode capable rxvt clone
+Exec=urxvt
+Icon=rxvt-unicode
+Terminal=false
+Type=Application
+Categories=Application;System;TerminalEmulator;
diff --git a/extra/rxvt-unicode/rxvt-unicode.png b/extra/rxvt-unicode/rxvt-unicode.png
new file mode 100644
index 000000000..0738a7840
--- /dev/null
+++ b/extra/rxvt-unicode/rxvt-unicode.png
Binary files differ
diff --git a/extra/samba/PKGBUILD b/extra/samba/PKGBUILD
new file mode 100644
index 000000000..070c3f169
--- /dev/null
+++ b/extra/samba/PKGBUILD
@@ -0,0 +1,139 @@
+# $Id: PKGBUILD 116932 2011-03-26 14:54:05Z tpowa $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+# Contributor: judd <jvinet@zeroflux.org>
+pkgbase=samba
+pkgname=('smbclient' 'samba')
+pkgver=3.5.8
+# We use the 'A' to fake out pacman's version comparators. Samba chooses
+# to append 'a','b',etc to their subsequent releases, which pamcan
+# misconstrues as alpha, beta, etc. Bad samba!
+_realver=3.5.8
+pkgrel=2
+arch=(i686 x86_64)
+url="http://www.samba.org"
+license=('GPL3')
+makedepends=('db>=4.7' 'popt' 'libcups' 'acl' 'libldap' 'libcap>=2.16' 'heimdal>=1.2-1' 'pam' 'fam' 'gnutls>=2.4.1' 'talloc' 'tdb')
+options=(!makeflags)
+source=(http://us1.samba.org/samba/ftp/stable/${pkgbase}-${_realver}.tar.gz
+ samba samba.logrotate
+ swat.xinetd
+ samba.pam
+ samba.conf.d
+ fix-ipv6-mount.patch)
+### UNINSTALL dmapi package before building!!!
+
+build() {
+ cd ${srcdir}/${pkgbase}-${_realver}/source3
+ ./configure --prefix=/usr \
+ --libdir=/usr/lib/ \
+ --localstatedir=/var \
+ --with-configdir=/etc/samba \
+ --with-lockdir=/var/cache/samba \
+ --with-piddir=/var/run/samba \
+ --with-fhs \
+ --with-pam \
+ --with-pam_smbpass \
+ --with-pammodulesdir=/lib/security \
+ --with-ads \
+ --with-acl-support \
+ --with-cifsmount \
+ --with-libsmbclient \
+ --with-syslog \
+ --enable-external-libtalloc \
+ --disable-dnssd \
+ --disable-avahi \
+ --with-shared-modules=idmap_ad,idmap_adex,idmap_rid,idmap_hash \
+ --enable-external-libtdb
+ make || return 1
+}
+
+package_smbclient () {
+pkgdesc="Tools to access a server's filespace and printers via SMB"
+depends=('readline>=6.0.00' 'popt' 'libldap>=2.4.18-1' 'cifs-utils' 'libcap>=2.16' 'heimdal>=1.2-1' 'db>=4.7' 'e2fsprogs' 'tdb' 'talloc')
+ cd ${srcdir}/${pkgbase}-${_realver}/source3
+ mkdir -p ${pkgdir}/usr/bin ${pkgdir}/usr/lib
+ install -m755 bin/{smbclient,rpcclient,smbspool,smbtree,smbcacls,smbcquotas,smbget,net,nmblookup} ${pkgdir}/usr/bin/
+ for i in libnetapi* libwbclient* libsmbclient*;do
+ cp -a bin/${i}*.so* ${pkgdir}/usr/lib/
+ done
+ install -m755 script/smbtar ${pkgdir}/usr/bin/
+ mkdir -p ${pkgdir}/usr/lib/cups/backend
+ ln -sf /usr/bin/smbspool ${pkgdir}/usr/lib/cups/backend/smb
+ mkdir -p ${pkgdir}/usr/include
+ install -m644 include/libsmbclient.h ${pkgdir}/usr/include/
+ install -m644 lib/netapi/netapi.h ${pkgdir}/usr/include/
+ mkdir -p ${pkgdir}/usr/share/man/man{1,7}
+ for man in rpcclient smbcacls smbclient smbcquotas smbget \
+ smbtree smbtar nmblookup; do
+ install -m644 ../docs/manpages/${man}.1 ${pkgdir}/usr/share/man/man1/
+ done
+ install -m644 ../docs/manpages/libsmbclient.7 ${pkgdir}/usr/share/man/man7/
+}
+
+package_samba () {
+pkgdesc="Tools to access a server's filespace and printers via SMB"
+backup=(etc/logrotate.d/samba
+ etc/pam.d/samba
+ etc/samba/smb.conf
+ etc/xinetd.d/swat
+ etc/conf.d/samba)
+depends=('db>=4.7' 'popt' 'libcups' 'acl' 'libldap' "smbclient>=$pkgver" 'libcap>=2.16' 'heimdal>=1.2-1' 'pam' 'fam' 'gnutls>=2.4.1' 'e2fsprogs' 'tdb' 'talloc')
+ cd ${srcdir}/samba-${_realver}/source3
+ mkdir -p ${pkgdir}/var/log/samba
+ mkdir -p ${pkgdir}/etc/samba/private
+ chmod 700 ${pkgdir}/etc/samba/private
+ make DESTDIR=${pkgdir} install
+ chmod 644 ${pkgdir}/usr/include/*.h
+ rm -rf ${pkgdir}/usr/var
+ (cd script; cp installbin.sh i; cat i | sed 's/\/sbin\///' > installbin.sh)
+ install -D -m755 ../../samba ${pkgdir}/etc/rc.d/samba
+ install -D -m644 ../../samba.conf.d ${pkgdir}/etc/conf.d/samba
+ mkdir -p ${pkgdir}/etc/samba
+ cat ../examples/smb.conf.default | \
+ sed 's|log file = .*$|log file = /var/log/samba/log.%m|g' >${pkgdir}/etc/samba/smb.conf.default
+ install -D -m644 ../../samba.logrotate ${pkgdir}/etc/logrotate.d/samba
+ install -D -m644 ../../swat.xinetd ${pkgdir}/etc/xinetd.d/swat
+ install -D -m644 ../../samba.pam ${pkgdir}/etc/pam.d/samba
+ # spool directory
+ install -d -m1777 ${pkgdir}/var/spool/samba
+ sed -i 's|/usr/spool/samba|/var/spool/samba|g' ${pkgdir}/etc/samba/smb.conf.default
+ # fix logrotate
+ sed -i -e 's|log.%m|%m.log|g' ${pkgdir}/etc/samba/smb.conf.default
+ # nsswitch libraries
+ install -D -m755 ${srcdir}/samba-${_realver}/nsswitch/libnss_wins.so ${pkgdir}/lib/libnss_wins.so
+ ln -s libnss_wins.so ${pkgdir}/lib/libnss_wins.so.2
+ install -D -m755 ${srcdir}/samba-${_realver}/nsswitch/libnss_winbind.so ${pkgdir}/lib/libnss_winbind.so
+ # remove conflict files of smbclient
+ for man in libsmbclient smbspool \
+ mount.cifs net cifs.upcall; do
+ rm -f ${pkgdir}/usr/share/man/man8/${man}.8
+ done
+ for i in libnetapi* libwbclient* libsmbclient*;do
+ rm -f ${pkgdir}/usr/lib/$i
+ done
+ for bin in net \
+ nmblookup rpcclient smbcacls smbclient \
+ smbcquotas smbget smbspool smbtar smbtree; do
+ rm -f ${pkgdir}/usr/bin/$bin
+ done
+ rm -f ${pkgdir}/usr/sbin/cifs.upcall
+ rm -f ${pkgdir}/usr/include/netapi.h
+ for man in rpcclient smbcacls smbclient smbcquotas \
+ smbtree smbtar nmblookup smbget; do
+ rm -f ${pkgdir}/usr/share/man/man1/${man}.1
+ done
+ for man in tdbbackup tdbdump tdbtool; do
+ rm -f ${pkgdir}/usr/share/man/man8/${man}.8
+ done
+ rm -f ${pkgdir}/usr/share/man/man7/libsmbclient.7
+ rm -f ${pkgdir}/usr/include/libsmbclient.h
+ # copy ldap example
+ install -D -m644 ${srcdir}/samba-${_realver}/examples/LDAP/samba.schema ${pkgdir}/usr/share/doc/samba/examples/LDAP/samba.schema
+}
+md5sums=('355b4530c20997e94aebc74cd6ea5307'
+ '891b9be03e7adf65c9a00319c76d33e5'
+ '5697da77590ec092cc8a883bae06093c'
+ 'a4bbfa39fee95bba2e7ad6b535fae7e6'
+ '96f82c38f3f540b53f3e5144900acf17'
+ 'f2f2e348acd1ccb566e95fa8a561b828'
+ 'c6a38a8c8fa24979e6217aed533358ea')
diff --git a/extra/samba/fix-ipv6-mount.patch b/extra/samba/fix-ipv6-mount.patch
new file mode 100644
index 000000000..89bef6533
--- /dev/null
+++ b/extra/samba/fix-ipv6-mount.patch
@@ -0,0 +1,11 @@
+--- client/mount.cifs.c.orig 2010-03-03 13:42:02.143936727 +1000
++++ client/mount.cifs.c 2010-03-04 01:53:22.752879004 +1000
+@@ -1563,7 +1563,7 @@
+ }
+ }
+
+- if (addr->ai_addr->sa_family == AF_INET6 && addr6->sin6_scope_id) {
++ if (addr && addr->ai_addr->sa_family == AF_INET6 && addr6->sin6_scope_id) {
+ strlcat(options, "%", options_size);
+ current_len = strnlen(options, options_size);
+ optionstail = options + current_len;
diff --git a/extra/samba/samba b/extra/samba/samba
new file mode 100755
index 000000000..1b222d6cc
--- /dev/null
+++ b/extra/samba/samba
@@ -0,0 +1,54 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+[ -f /etc/conf.d/samba ] && . /etc/conf.d/samba
+
+[ -z "$SAMBA_DAEMONS" ] && SAMBA_DAEMONS=(smbd nmbd)
+
+case "$1" in
+ start)
+ rc=0
+ stat_busy "Starting Samba Server"
+ if [ ! -x /var/run/samba ] ; then
+ install -m755 -g 81 -o 81 -d /var/run/samba
+ fi
+ for d in ${SAMBA_DAEMONS[@]}; do
+ PID=`pidof -o %PPID /usr/sbin/$d`
+ [ -z "$PID" ] && /usr/sbin/$d -D
+ rc=$(($rc+$?))
+ done
+ if [ $rc -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon samba
+ stat_done
+ fi
+ ;;
+ stop)
+ rc=0
+ stat_busy "Stopping Samba Server"
+ for d in ${SAMBA_DAEMONS[@]}; do
+ PID=`pidof -o %PPID /usr/sbin/$d`
+ [ -z "$PID" ] || kill $PID &> /dev/null
+ rc=$(($rc+$?))
+ done
+ if [ $rc -gt 0 ]; then
+ stat_fail
+ else
+ rm /var/run/samba/smbd.pid &>/dev/null
+ rm /var/run/samba/nmbd.pid &>/dev/null
+ rm /var/run/samba/winbindd.pid &>/dev/null
+ rm_daemon samba
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
diff --git a/extra/samba/samba.conf.d b/extra/samba/samba.conf.d
new file mode 100644
index 000000000..8721f956a
--- /dev/null
+++ b/extra/samba/samba.conf.d
@@ -0,0 +1,7 @@
+#
+# Configuration for the samba init script
+#
+
+# space separated list of daemons to launch
+SAMBA_DAEMONS=(smbd nmbd)
+#SAMBA_DAEMONS=(smbd nmbd winbindd)
diff --git a/extra/samba/samba.logrotate b/extra/samba/samba.logrotate
new file mode 100644
index 000000000..581f4c33b
--- /dev/null
+++ b/extra/samba/samba.logrotate
@@ -0,0 +1,9 @@
+/var/log/samba/log.smbd /var/log/samba/log.nmbd /var/log/samba/*.log {
+ notifempty
+ missingok
+ sharedscripts
+ copytruncate
+ postrotate
+ /bin/kill -HUP `cat /var/run/samba/*.pid 2>/dev/null` 2>/dev/null || true
+ endscript
+}
diff --git a/extra/samba/samba.pam b/extra/samba/samba.pam
new file mode 100644
index 000000000..53724d1f8
--- /dev/null
+++ b/extra/samba/samba.pam
@@ -0,0 +1,3 @@
+auth required pam_unix.so
+account required pam_unix.so
+session required pam_unix.so
diff --git a/extra/samba/swat.xinetd b/extra/samba/swat.xinetd
new file mode 100644
index 000000000..2e62a82b2
--- /dev/null
+++ b/extra/samba/swat.xinetd
@@ -0,0 +1,10 @@
+service swat
+{
+ socket_type = stream
+ wait = no
+ user = root
+ server = /usr/sbin/swat
+ log_on_success += HOST DURATION
+ log_on_failure += HOST
+ disable = yes
+}
diff --git a/extra/sane-frontends/MissingCapsFlag.patch b/extra/sane-frontends/MissingCapsFlag.patch
new file mode 100644
index 000000000..4175a87f8
--- /dev/null
+++ b/extra/sane-frontends/MissingCapsFlag.patch
@@ -0,0 +1,12 @@
+--- src/gtkglue.c 2005-04-16 15:12:07.000000000 +0200
++++ src/gtkglue.c.new 2009-06-24 00:26:46.000000000 +0200
+@@ -1476,8 +1476,7 @@
+ || opt->type == SANE_TYPE_GROUP || !dialog->element[i].widget)
+ continue;
+
+- if (!(opt->cap & SANE_CAP_ALWAYS_SETTABLE))
+- gtk_widget_set_sensitive (dialog->element[i].widget, sensitive);
++ gtk_widget_set_sensitive (dialog->element[i].widget, sensitive);
+ }
+ }
+
diff --git a/extra/sane-frontends/PKGBUILD b/extra/sane-frontends/PKGBUILD
new file mode 100644
index 000000000..0389326dd
--- /dev/null
+++ b/extra/sane-frontends/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id: PKGBUILD 64806 2010-01-22 08:53:01Z eric $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+# Contributor: Sarah Hay <sarahhay@mb.sympatico.ca>
+
+pkgname=sane-frontends
+pkgver=1.0.14
+pkgrel=5
+pkgdesc="A set of frontends for SANE."
+arch=(i686 x86_64)
+url="http://www.sane-project.org"
+license=('GPL')
+depends=('sane' 'gimp' 'libjpeg>=7')
+source=(ftp://ftp.sane-project.org/pub/sane/$pkgname-$pkgver/$pkgname-$pkgver.tar.gz MissingCapsFlag.patch)
+md5sums=('c63bf7b0bb5f530cf3c08715db721cd3' '770f66e0534953f6129e1fc03d88ae01')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ patch -p0 < ../MissingCapsFlag.patch || return 1
+ ./configure --prefix=/usr --mandir=/usr/share/man || return 1
+ make || return 1
+ make DESTDIR="$pkgdir" install || return 1
+}
diff --git a/extra/sane/PKGBUILD b/extra/sane/PKGBUILD
new file mode 100644
index 000000000..e5b28cdd7
--- /dev/null
+++ b/extra/sane/PKGBUILD
@@ -0,0 +1,48 @@
+# $Id: PKGBUILD 110715 2011-02-21 19:15:42Z tpowa $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+# Contributed by Sarah Hay <sarahhay@mb.sympatico.ca>, Tobias Powalowski <t.powa@gmx.de>, Simo L. <neotuli@yahoo.com>, eric <eric@archlinux.org>
+
+pkgname=sane
+pkgver=1.0.22
+pkgrel=1
+pkgdesc="Scanner Access Now Easy"
+url="http://www.sane-project.org"
+arch=('i686' 'x86_64')
+license=('GPL')
+depends=('libtiff>=3.9.2-2' 'libgphoto2>=2.4.7-2' 'libjpeg>=8' 'libieee1284' 'libusb-compat' 'v4l-utils' 'avahi' 'bash')
+makedepends=('texlive-latexextra')
+install=$pkgname.install
+backup=(etc/sane.d/{abaton.conf,agfafocus.conf,apple.conf,artec.conf,artec_eplus48u.conf,avision.conf,bh.conf,canon.conf,canon630u.conf,canon_dr.conf,canon_pp.conf,cardscan.conf,coolscan2.conf,coolscan3.conf,coolscan.conf,dc25.conf,dc210.conf,dc240.conf,dell1600n_net.conf,dll.conf,dmc.conf,epjitsu.conf,epson.conf,epson2.conf,fujitsu.conf,genesys.conf,gphoto2.conf,gt68xx.conf,hp.conf,hp3900.conf,hp4200.conf,hp5400.conf,hpsj5s.conf,hs2p.conf,ibm.conf,kodak.conf,leo.conf,lexmark.conf,ma1509.conf,magicolor.conf,matsushita.conf,microtek.conf,microtek2.conf,mustek.conf,mustek_pp.conf,mustek_usb.conf,nec.conf,net.conf,p5.conf,pie.conf,pixma.conf,plustek.conf,plustek_pp.conf,qcam.conf,ricoh.conf,rts8891.conf,s9036.conf,saned.conf,sceptre.conf,sharp.conf,sm3840.conf,snapscan.conf,sp15c.conf,st400.conf,stv680.conf,tamarack.conf,teco1.conf,teco2.conf,teco3.conf,test.conf,u12.conf,umax.conf,umax1220u.conf,umax_pp.conf,xerox_mfp.conf,v4l.conf} etc/xinetd.d/sane)
+source=(ftp://ftp2.sane-project.org/pub/sane/$pkgname-backends-$pkgver/$pkgname-backends-$pkgver.tar.gz
+ sane.xinetd)
+options=(!libtool)
+
+build() {
+ cd "${srcdir}/${pkgname}-backends-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --with-docdir=/usr/share/doc/sane --enable-avahi
+ make
+}
+
+package () {
+ cd "${srcdir}/${pkgname}-backends-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+ # fix hp officejets
+ echo "#hpaio" >> "${pkgdir}/etc/sane.d/dll.conf"
+ # install udev files
+ install -D -m0644 tools/udev/libsane.rules \
+ "${pkgdir}/lib/udev/rules.d/53-sane.rules"
+ # fix udev rules
+ sed -i 's|NAME="%k", ||g' ${pkgdir}/lib/udev/rules.d/53-sane.rules
+ # fix group on /var/lock
+ mkdir -p "${pkgdir}/var/lock/sane"
+ chgrp 0 "${pkgdir}/var"
+ chmod 755 "${pkgdir}/var"
+ chmod 1777 "${pkgdir}/var/lock"
+ chgrp 0 "${pkgdir}/var/lock"
+ chmod 775 "${pkgdir}/var/lock/sane"
+ chgrp 96 "${pkgdir}/var/lock/sane"
+ # install xinetd file
+ install -D -m644 "${srcdir}/sane.xinetd" "${pkgdir}/etc/xinetd.d/sane"
+}
+md5sums=('fadf56a60f4776bfb24491f66b617cf5'
+ 'da946cc36fb83612162cf9505986d4b2')
diff --git a/extra/sane/sane.install b/extra/sane/sane.install
new file mode 100644
index 000000000..850bd3255
--- /dev/null
+++ b/extra/sane/sane.install
@@ -0,0 +1,14 @@
+# arg 1: the new package version
+post_install() {
+getent group scanner >/dev/null || usr/sbin/groupadd -g 96 scanner
+ /bin/cat <<THEEND
+NOTE
+----
+Add your user to group 'scanner' to use scanner devices.
+THEEND
+}
+
+# arg 1: the old package version
+pre_remove() {
+ usr/sbin/groupdel scanner &>/dev/null
+}
diff --git a/extra/sane/sane.xinetd b/extra/sane/sane.xinetd
new file mode 100644
index 000000000..b035664b4
--- /dev/null
+++ b/extra/sane/sane.xinetd
@@ -0,0 +1,11 @@
+service sane-port
+{
+ port = 6566
+ socket_type = stream
+ wait = no
+ user = root
+ group = scanner
+ server = /usr/sbin/saned
+ # disabled by default!
+ disable = yes
+ }
diff --git a/extra/sbcl/PKGBUILD b/extra/sbcl/PKGBUILD
new file mode 100644
index 000000000..c54bc6df9
--- /dev/null
+++ b/extra/sbcl/PKGBUILD
@@ -0,0 +1,73 @@
+# $Id: PKGBUILD 117231 2011-03-30 10:39:06Z juergen $
+# Contributor: John Proctor <jproctor@prium.net>
+# Contributor: Daniel White <daniel@whitehouse.id.au>
+# Maintainer: Juergen Hoetzel <juergen@archlinux.org>
+# Contributor: Leslie Polzer (skypher)
+
+pkgname=sbcl
+pkgver=1.0.47
+pkgrel=1
+pkgdesc="Steel Bank Common Lisp"
+arch=('i686' 'x86_64')
+license=('custom')
+depends=('glibc')
+provides=('common-lisp' 'cl-asdf')
+makedepends=('sbcl' 'texinfo')
+source=("http://downloads.sourceforge.net/project/sbcl/sbcl/$pkgver/$pkgname-$pkgver-source.tar.bz2" "arch-fixes.lisp")
+md5sums=('2e90fca5ffec9ce19ed232b24f09cd0a'
+ '7ac0c1936547f4278198b8bf7725204d')
+url="http://www.sbcl.org/"
+install=sbcl.install
+
+build() {
+ export CFLAGS="${CFLAGS} -DSBCL_HOME=\\\"/usr/lib/sbcl\\\""
+ export GNUMAKE="make -e"
+
+ # build system uses LINKFLAGS and OS_LIBS to build LDFLAGS
+ export LINKFLAGS="$LD_FLAGS"
+ unset LDFLAGS
+ cd ${startdir}/src/${pkgname}-${pkgver}
+ # Make a multi-threaded SBCL, disable LARGEFILE
+ cat >customize-target-features.lisp <<EOF
+(lambda (features)
+ (flet ((enable (x) (pushnew x features))
+ (disable (x) (setf features (remove x features))))
+ (enable :sb-thread)
+ (disable :largefile)))
+EOF
+
+ sh make.sh sbcl
+ mkdir -p ${startdir}/pkg/usr
+ pushd doc/manual
+ make info || return 1
+ popd
+ INSTALL_ROOT=${startdir}/pkg/usr sh install.sh
+
+ src/runtime/sbcl --core output/sbcl.core --script ${startdir}/src/arch-fixes.lisp
+ mv sbcl-new.core ${startdir}/pkg/usr/lib/sbcl/sbcl.core
+
+# sources
+ mkdir -p ${startdir}/pkg/usr/share/sbcl-source
+ cp -R -t ${startdir}/pkg/usr/share/sbcl-source \
+ ${startdir}/src/${pkgname}-${pkgver}/{src,contrib}
+
+# drop unwanted files
+ find ${startdir}/pkg/usr/share/sbcl-source -type f \
+ -name \*.fasl -or \
+ -name \*.o -or \
+ -name \*.log -or \
+ -name \*.so -or \
+ -name a.out -delete
+
+ rm ${startdir}/pkg/usr/share/sbcl-source/src/runtime/sbcl
+ rm ${startdir}/pkg/usr/share/sbcl-source/src/runtime/sbcl.nm
+
+ find ${startdir}/pkg \( -name Makefile -o -name .cvsignore \) -delete
+
+ rm $startdir/pkg/usr/share/info/dir
+ gzip -9nf $startdir/pkg/usr/share/info/*
+
+ # license
+ install -D -m644 ${startdir}/src/${pkgname}-${pkgver}/COPYING \
+ ${startdir}/pkg/usr/share/licenses/${pkgname}/license.txt
+}
diff --git a/extra/sbcl/arch-fixes.lisp b/extra/sbcl/arch-fixes.lisp
new file mode 100644
index 000000000..bdc631331
--- /dev/null
+++ b/extra/sbcl/arch-fixes.lisp
@@ -0,0 +1,21 @@
+(in-package "COMMON-LISP-USER")
+
+(let* ((parent (make-pathname :directory '(:absolute "usr" "share" "sbcl-source")))
+ (src
+ (merge-pathnames
+ (make-pathname :directory '(:relative "src" :wild-inferiors)
+ :name :wild :type :wild)
+ parent))
+ (contrib
+ (merge-pathnames
+ (make-pathname :directory '(:relative "contrib" :wild-inferiors)
+ :name :wild :type :wild)
+ parent)))
+ (setf (logical-pathname-translations "SYS")
+ `(("SYS:SRC;**;*.*.*" ,src)
+ ("SYS:CONTRIB;**;*.*.*" ,contrib))))
+
+(ignore-errors
+ (sb-ext:gc :full t)
+ (sb-ext:enable-debugger)
+ (sb-ext:save-lisp-and-die "sbcl-new.core"))
diff --git a/extra/sbcl/sbcl.install b/extra/sbcl/sbcl.install
new file mode 100644
index 000000000..83ee3c00c
--- /dev/null
+++ b/extra/sbcl/sbcl.install
@@ -0,0 +1,18 @@
+info_dir=/usr/share/info
+info_files=(asdf.info sbcl.info)
+
+post_install() {
+ for f in ${info_files[@]}; do
+ install-info ${info_dir}/$f.gz ${info_dir}/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ for f in ${info_files[@]}; do
+ install-info --delete ${info_dir}/$f.gz ${info_dir}/dir 2> /dev/null
+ done
+}
diff --git a/extra/schedtool/PKGBUILD b/extra/schedtool/PKGBUILD
new file mode 100644
index 000000000..345c96ce6
--- /dev/null
+++ b/extra/schedtool/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 100636 2010-11-24 23:01:00Z schiv $
+# Maintainer: Ray Rashif <schiv@archlinux.org>
+# Contributor: James Rayner <james@archlinux.org>
+
+pkgname=schedtool
+pkgver=1.3.0
+pkgrel=1
+pkgdesc="Query or alter a process' scheduling policy"
+arch=('i686' 'x86_64')
+url="http://freequaos.host.sk/schedtool/"
+license=('GPL')
+depends=('glibc')
+source=(http://freequaos.host.sk/schedtool/$pkgname-$pkgver.tar.bz2)
+md5sums=('0d968f05d3ad7675f1f33ef1f6d0a3fb')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ install -dm755 "$pkgdir/usr"
+ make DESTPREFIX="$pkgdir/usr" install
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/extra/schroedinger/PKGBUILD b/extra/schroedinger/PKGBUILD
new file mode 100644
index 000000000..22fc3e9b2
--- /dev/null
+++ b/extra/schroedinger/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 103964 2010-12-24 15:29:22Z ibiru $
+# Maintainer: Ionut Biru <ibiru@archlinux.org>
+# Contributor: Timm Preetz <timm@preetz.us>
+# Contributor: rabyte <rabyte__gmail>
+pkgname=schroedinger
+pkgver=1.0.10
+pkgrel=1
+pkgdesc="An implemenation of the Dirac video codec in ANSI C code"
+arch=('i686' 'x86_64')
+url="http://www.diracvideo.org/"
+license=('GPL2' 'LGPL2' 'MPL' 'MIT')
+depends=('orc>=0.4.11')
+options=(!libtool)
+source=(http://www.diracvideo.org/download/schroedinger/${pkgname}-${pkgver}.tar.gz)
+md5sums=('9de088ccc314bb9e766cb3aa6510a0ef')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr
+
+ make
+ make DESTDIR=${pkgdir} install
+
+ install -m644 -D COPYING.MIT ${pkgdir}/usr/share/licenses/${pkgname}/COPYING.MIT
+}
diff --git a/extra/scim-anthy/PKGBUILD b/extra/scim-anthy/PKGBUILD
new file mode 100644
index 000000000..ba47b28a5
--- /dev/null
+++ b/extra/scim-anthy/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 110875 2011-02-22 20:13:47Z bisson $
+# Contributor: damir <damir@archlinux.org>
+# Maintainer: Gaetan Bisson <bisson@archlinux.org>
+
+pkgname=scim-anthy
+pkgver=1.2.7
+pkgrel=2
+_filecode=37309
+pkgdesc='Japanese input method module for SCIM'
+arch=('i686' 'x86_64')
+url='http://sourceforge.jp/projects/scim-imengine/'
+license=('GPL')
+depends=('scim' 'anthy')
+options=('!libtool')
+source=("http://osdn.dl.sourceforge.jp/scim-imengine/${_filecode}/${pkgname}-${pkgver}.tar.gz")
+sha1sums=('1429cf202f5cdcfc4733220acbe27dd9edb75db8')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ ./configure --prefix=/usr --disable-static
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make DESTDIR="$pkgdir" install
+}
diff --git a/extra/scim-chewing/PKGBUILD b/extra/scim-chewing/PKGBUILD
new file mode 100644
index 000000000..d9e6451b5
--- /dev/null
+++ b/extra/scim-chewing/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 111539 2011-02-27 15:04:14Z bisson $
+# Contributor: damir <damir@archlinux.org>
+# Contributor: whisky <archlinux.cle(at)gmail.com>
+# Maintainer: Gaetan Bisson <bisson@archlinux.org>
+
+pkgname=scim-chewing
+pkgver=0.3.4
+pkgrel=1
+pkgdesc='Traditional Chinese input method module for SCIM'
+arch=('i686' 'x86_64')
+url='http://chewing.csie.net/'
+license=('GPL')
+depends=('scim' 'libchewing')
+makedepends=('intltool')
+options=('!libtool')
+source=("http://chewing.csie.net/download/scim/${pkgname}-${pkgver}.tar.bz2")
+sha1sums=('f6c8d16f19f17449ee169f1ca787350353e93b05')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --disable-static
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/scim-hangul/PKGBUILD b/extra/scim-hangul/PKGBUILD
new file mode 100644
index 000000000..ee612c62e
--- /dev/null
+++ b/extra/scim-hangul/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 111080 2011-02-23 22:13:26Z bisson $
+# Contributor: damir <damir@archlinux.org>
+# Maintainer: Gaetan Bisson <bisson@archlinux.org>
+
+pkgname=scim-hangul
+pkgver=0.3.2
+pkgrel=3
+pkgdesc='Korean input method module for SCIM'
+arch=('i686' 'x86_64')
+url='http://www.scim-im.org/'
+license=('GPL')
+depends=('libhangul' 'scim')
+options=('!libtool')
+source=("http://downloads.sourceforge.net/sourceforge/scim/$pkgname-$pkgver.tar.gz"
+ 'gcc43.patch')
+sha1sums=('d1f4a2114d284c926d64fbfe8ea83307b8d8e2ec'
+ '956bb2b6bd75b3d2756895f8ade429f95bacc0ff')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -p1 -i ../gcc43.patch
+ ./bootstrap # skim complains; it's alright
+ ./configure --prefix=/usr --enable-skim-support
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/scim-hangul/gcc43.patch b/extra/scim-hangul/gcc43.patch
new file mode 100644
index 000000000..4d33471d9
--- /dev/null
+++ b/extra/scim-hangul/gcc43.patch
@@ -0,0 +1,22 @@
+diff -Naur scim-hangul-0.3.2-orig/src/scim_hangul_imengine.cpp scim-hangul-0.3.2/src/scim_hangul_imengine.cpp
+--- scim-hangul-0.3.2-orig/src/scim_hangul_imengine.cpp 2008-03-26 09:33:43.000000000 +0100
++++ scim-hangul-0.3.2/src/scim_hangul_imengine.cpp 2008-03-26 09:34:41.000000000 +0100
+@@ -33,6 +33,7 @@
+ #include <config.h>
+ #endif
+
++#include <cstring>
+ #include <scim.h>
+ #include "scim_hangul_imengine.h"
+
+diff -Naur scim-hangul-0.3.2-orig/src/scim_hangul_imengine_setup.cpp scim-hangul-0.3.2/src/scim_hangul_imengine_setup.cpp
+--- scim-hangul-0.3.2-orig/src/scim_hangul_imengine_setup.cpp 2008-03-26 09:33:43.000000000 +0100
++++ scim-hangul-0.3.2/src/scim_hangul_imengine_setup.cpp 2008-03-26 09:34:53.000000000 +0100
+@@ -34,6 +34,7 @@
+ #include <config.h>
+ #endif
+
++#include <cstring>
+ #include <scim.h>
+ #include <gtk/scimkeyselection.h>
+
diff --git a/extra/scim-m17n/PKGBUILD b/extra/scim-m17n/PKGBUILD
new file mode 100644
index 000000000..4fcb26155
--- /dev/null
+++ b/extra/scim-m17n/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 110890 2011-02-22 20:14:59Z bisson $
+# Contributor: Camille Moncelier <pix@devlife.org>
+# Contributor: damir <damir@archlinux.org>
+# Maintainer: Gaetan Bisson <bisson@archlinux.org>
+
+pkgname=scim-m17n
+pkgver=0.2.3
+pkgrel=3
+pkgdesc='Multilingual input method module for SCIM'
+arch=('i686' 'x86_64')
+url='http://www.scim-im.org/'
+license=('GPL')
+depends=('scim' 'm17n-lib')
+options=('!libtool')
+source=("http://downloads.sourceforge.net/sourceforge/scim/${pkgname}-${pkgver}.tar.gz")
+sha1sums=('96172846eaa211d2bde0f76184990d13e5ecdaea')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --enable-static=no
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/scim-pinyin/PKGBUILD b/extra/scim-pinyin/PKGBUILD
new file mode 100644
index 000000000..3f8e1e149
--- /dev/null
+++ b/extra/scim-pinyin/PKGBUILD
@@ -0,0 +1,33 @@
+# $Id: PKGBUILD 77980 2010-04-19 08:02:17Z allan $
+# Maintainer:
+# Contributer: Gan Lu <rhythm.gan@gmail.com>
+
+pkgname=scim-pinyin
+pkgver=0.5.91
+pkgrel=5
+pkgdesc="Chinese 拼音 (PinYin) input for SCIM"
+arch=('i686' 'x86_64')
+url="http://www.scim-im.org/"
+license=GPL
+depends=('scim>=1.4.7')
+options=('!libtool')
+source=(http://downloads.sourceforge.net/sourceforge/scim/$pkgname-$pkgver.tar.gz
+ scim-pinyin-0.5.91-gcc43.patch)
+md5sums=('fb96d3545090d7681ea03edaced4eccb'
+ 'ef84582d9bac7ac250d2d64cf260ad39')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ patch -Np1 -i $srcdir/scim-pinyin-0.5.91-gcc43.patch
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --disable-static
+ make || return 1
+}
+
+package() {
+ cd $srcdir/$pkgname-$pkgver
+ make DESTDIR=$pkgdir install
+}
+
+
diff --git a/extra/scim-pinyin/scim-pinyin-0.5.91-cannot-build-against-scim-1.4.7 b/extra/scim-pinyin/scim-pinyin-0.5.91-cannot-build-against-scim-1.4.7
new file mode 100644
index 000000000..30a556acf
--- /dev/null
+++ b/extra/scim-pinyin/scim-pinyin-0.5.91-cannot-build-against-scim-1.4.7
@@ -0,0 +1,3 @@
+if /bin/sh ../libtool --silent --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I../src -I/opt/kde/include -I/opt/qt/include -I. -I/opt/kde/include/skim -I/usr/include/scim-1.0 -DQT_THREAD_SUPPORT -D_REENTRANT -Wnon-virtual-dtor -Wno-long-long -Wundef -ansi -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -Wcast-align -Wconversion -Wchar-subscripts -Wall -W -Wpointer-arith -Wwrite-strings -O2 -march=i686 -mtune=generic -O2 -pipe -Wformat-security -Wmissing-format-attribute -fno-exceptions -fno-check-new -fno-common -MT smartpinyinui.lo -MD -MP -MF ".deps/smartpinyinui.Tpo" -c -o smartpinyinui.lo smartpinyinui.cpp; \
+ then mv -f ".deps/smartpinyinui.Tpo" ".deps/smartpinyinui.Plo"; else rm -f ".deps/smartpinyinui.Tpo"; exit 1; fi
+smartpinyinui.cpp:26:36: error: skimeditshortcutbutton.h: No such file or directory
diff --git a/extra/scim-pinyin/scim-pinyin-0.5.91-gcc43.patch b/extra/scim-pinyin/scim-pinyin-0.5.91-gcc43.patch
new file mode 100644
index 000000000..91a948d5d
--- /dev/null
+++ b/extra/scim-pinyin/scim-pinyin-0.5.91-gcc43.patch
@@ -0,0 +1,44 @@
+diff -up scim-pinyin-0.5.91/src/scim_phrase.cpp.gcc43 scim-pinyin-0.5.91/src/scim_phrase.cpp
+--- scim-pinyin-0.5.91/src/scim_phrase.cpp.gcc43 2008-02-25 16:27:05.000000000 +0800
++++ scim-pinyin-0.5.91/src/scim_phrase.cpp 2008-02-25 16:26:41.000000000 +0800
+@@ -28,6 +28,7 @@
+ #define SCIM_PHRASE_MAX_RELATION 1000
+
+ #include <scim.h>
++#include <cstring>
+ #include "scim_pinyin_private.h"
+ #include "scim_phrase.h"
+
+diff -up scim-pinyin-0.5.91/src/scim_special_table.cpp.gcc43 scim-pinyin-0.5.91/src/scim_special_table.cpp
+--- scim-pinyin-0.5.91/src/scim_special_table.cpp.gcc43 2008-02-25 16:27:55.000000000 +0800
++++ scim-pinyin-0.5.91/src/scim_special_table.cpp 2008-02-25 16:28:08.000000000 +0800
+@@ -22,6 +22,7 @@
+
+ #include <time.h>
+ #include <scim.h>
++#include <cstring>
+ #include "scim_pinyin_private.h"
+ #include "scim_special_table.h"
+
+diff -up scim-pinyin-0.5.91/src/scim_pinyin.cpp.gcc43 scim-pinyin-0.5.91/src/scim_pinyin.cpp
+--- scim-pinyin-0.5.91/src/scim_pinyin.cpp.gcc43 2008-02-25 16:26:10.000000000 +0800
++++ scim-pinyin-0.5.91/src/scim_pinyin.cpp 2008-02-25 16:26:26.000000000 +0800
+@@ -29,6 +29,7 @@
+ #define Uses_SCIM_LOOKUP_TABLE
+
+ #include <scim.h>
++#include <cstring>
+ #include "scim_pinyin.h"
+
+ // Internal functions
+diff -up scim-pinyin-0.5.91/src/scim_pinyin_phrase.cpp.gcc43 scim-pinyin-0.5.91/src/scim_pinyin_phrase.cpp
+--- scim-pinyin-0.5.91/src/scim_pinyin_phrase.cpp.gcc43 2008-02-25 16:27:15.000000000 +0800
++++ scim-pinyin-0.5.91/src/scim_pinyin_phrase.cpp 2008-02-25 16:27:28.000000000 +0800
+@@ -27,6 +27,7 @@
+ #define Uses_SCIM_LOOKUP_TABLE
+
+ #include <scim.h>
++#include <cstring>
+ #include "scim_pinyin_private.h"
+ #include "scim_phrase.h"
+ #include "scim_pinyin.h"
diff --git a/extra/scim-tables/PKGBUILD b/extra/scim-tables/PKGBUILD
new file mode 100644
index 000000000..fec4728e9
--- /dev/null
+++ b/extra/scim-tables/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 110895 2011-02-22 20:15:32Z bisson $
+# Contributor: damir <damir@archlinux.org>
+# Contributor: Gan Lu <rhythm.gan@gmail.com>
+# Maintainer: Gaetan Bisson <bisson@archlinux.org>
+
+pkgname=scim-tables
+pkgver=0.5.9
+pkgrel=2
+pkgdesc='Generic table input method module for SCIM'
+arch=('i686' 'x86_64')
+url='http://www.scim-im.org/'
+license=('GPL')
+depends=('scim')
+options=('!libtool')
+source=("http://downloads.sourceforge.net/sourceforge/scim/${pkgname}-${pkgver}.tar.gz")
+sha1sums=('aeca1c8a2eb10a214edc07fa248cd7450f78e387')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --enable-static=no
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/scim-uim/PKGBUILD b/extra/scim-uim/PKGBUILD
new file mode 100644
index 000000000..b93293cf4
--- /dev/null
+++ b/extra/scim-uim/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id: PKGBUILD 92903 2010-10-01 19:04:42Z bisson $
+# Maintainer: damir <damir@archlinux.org>
+
+pkgname=scim-uim
+pkgver=0.2.0
+pkgrel=4
+pkgdesc='UIM bridging input engine for SCIM'
+arch=('i686' 'x86_64')
+url='http://www.scim-im.org/'
+license=('GPL')
+depends=('scim>=1.4.8' 'uim>=1.5.5')
+options=(!libtool)
+source=("http://downloads.sourceforge.net/sourceforge/scim/$pkgname-$pkgver.tar.gz"
+ 'scim-uim-0.2.0-fix-gcc43-build.patch'
+ 'uim-1.5.5-header.diff')
+sha1sums=('456621d5969b6552c3c33c83cf295aa4134fff0a'
+ 'a9d67946f956d0572c73065e2b4b268bfdf149e3'
+ '3b083260910f7855b5446960ab1203c052f4b56c')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ patch -p1 < ../scim-uim-0.2.0-fix-gcc43-build.patch
+ patch -p1 < ../uim-1.5.5-header.diff
+ ./configure --prefix=/usr --sysconfdir=/etc --disable-static
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make DESTDIR="$pkgdir" install
+}
diff --git a/extra/scim-uim/scim-uim-0.2.0-fix-gcc43-build.patch b/extra/scim-uim/scim-uim-0.2.0-fix-gcc43-build.patch
new file mode 100644
index 000000000..d142fd7b7
--- /dev/null
+++ b/extra/scim-uim/scim-uim-0.2.0-fix-gcc43-build.patch
@@ -0,0 +1,10 @@
+--- scim-uim-0.2.0/src/scim_uim_imengine.cpp 2007-04-10 07:43:59.000000000 +0200
++++ scim-uim-0.2.0/src/scim_uim_imengine.cpp.gcc43buildfixed 2008-03-23 10:53:23.000000000 +0100
+@@ -32,6 +32,7 @@
+ #include <config.h>
+ #endif
+
++#include <string.h>
+ #include <scim.h>
+ #include "scim_uim_imengine.h"
+ #include <uim/uim-compat-scm.h>
diff --git a/extra/scim-uim/uim-1.5.5-header.diff b/extra/scim-uim/uim-1.5.5-header.diff
new file mode 100644
index 000000000..0e6565827
--- /dev/null
+++ b/extra/scim-uim/uim-1.5.5-header.diff
@@ -0,0 +1,13 @@
+--- scim-uim-0.2.0.orig/src/scim_uim_imengine.cpp
++++ scim-uim-0.2.0/src/scim_uim_imengine.cpp
+@@ -34,7 +34,8 @@
+
+ #include <scim.h>
+ #include "scim_uim_imengine.h"
+-#include <uim/uim-compat-scm.h>
++#include <uim/uim-scm.h>
++#include <uim/uim-util.h>
+
+ #define scim_module_init uim_LTX_scim_module_init
+ #define scim_module_exit uim_LTX_scim_module_exit
+
diff --git a/extra/scim/PKGBUILD b/extra/scim/PKGBUILD
new file mode 100644
index 000000000..7e7fb2457
--- /dev/null
+++ b/extra/scim/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 84723 2010-07-03 19:29:41Z ibiru $
+# Maintainer: damir <damir@archlinux.org>
+# Contributor: Gan Lu <rhythm.gan@gmail.com>
+
+pkgname=scim
+pkgver=1.4.9
+pkgrel=2
+pkgdesc="A Input Method development platform"
+arch=("i686" "x86_64")
+url="http://www.scim-im.org/projects/scim"
+license=('GPL')
+depends=('gtk2' 'gcc-libs')
+makedepends=('intltool')
+backup=('etc/scim/config' 'etc/scim/global')
+options=('!libtool')
+install=scim.install
+source=(http://downloads.sourceforge.net/sourceforge/scim/$pkgname-$pkgver.tar.gz
+ gcc45.patch)
+md5sums=('975ba34b01304ea8166ac8ea27aa9e88'
+ '9d7b41421424cedcbc5740098afa4921')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ patch -Np1 -i $srcdir/gcc45.patch
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --with-gnu-ld --with-x --disable-static
+ make
+ make DESTDIR=$pkgdir install
+}
diff --git a/extra/scim/gcc45.patch b/extra/scim/gcc45.patch
new file mode 100644
index 000000000..267a2bbf6
--- /dev/null
+++ b/extra/scim/gcc45.patch
@@ -0,0 +1,12 @@
+diff -Nur scim-1.4.9.orig//src/ltdl.cpp scim-1.4.9/src/ltdl.cpp
+--- scim-1.4.9.orig//src/ltdl.cpp 2008-11-02 01:42:40.000000000 -0500
++++ scim-1.4.9/src/ltdl.cpp 2010-07-04 00:19:58.924925581 -0500
+@@ -3361,7 +3361,7 @@
+ {
+ lt_dlhandle handle = 0;
+ char * tmp = 0;
+- char * ext = 0;
++ const char * ext = 0;
+ size_t len;
+ int errors = 0;
+
diff --git a/extra/scim/scim.install b/extra/scim/scim.install
new file mode 100644
index 000000000..1097ea400
--- /dev/null
+++ b/extra/scim/scim.install
@@ -0,0 +1,13 @@
+post_install() {
+ echo -n "updating gtk.immodules... "
+ /usr/bin/gtk-query-immodules-2.0 > /etc/gtk-2.0/gtk.immodules
+ echo "done."
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/extra/screen/PKGBUILD b/extra/screen/PKGBUILD
new file mode 100644
index 000000000..0a1383e22
--- /dev/null
+++ b/extra/screen/PKGBUILD
@@ -0,0 +1,47 @@
+# $Id: PKGBUILD 114599 2011-03-14 13:43:00Z allan $
+# Maintainer: Allan McRae <allan@archlinux.org>
+# Committer: dorphell <dorphell@gmx.net>
+
+pkgname=screen
+pkgver=4.0.3
+pkgrel=11
+_ptygroup=5 #the UID of our PTY/TTY group
+pkgdesc="Full-screen window manager that multiplexes a physical terminal"
+arch=('i686' 'x86_64')
+url="http://www.gnu.org/software/screen/"
+license=('GPL')
+depends=('ncurses' 'pam')
+backup=('etc/screenrc' 'etc/pam.d/screen')
+options=('!makeflags')
+install=screen.install
+source=(ftp://ftp.uni-erlangen.de/pub/utilities/screen/screen-${pkgver}.tar.gz
+ screen-4.0.3-long-term.patch
+ screen-4.0.3-caption-colors.patch
+ screen.pam)
+md5sums=('8506fd205028a96c741e4037de6e3c42'
+ '2723c3e71d5a2e5a74b6ddbc5215ef0f'
+ '191b6ced695ce2ae3a65bf02c2d4220f'
+ '74f7919d7b65436cc2ea5341fa8ca374')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ patch -Np1 -i $srcdir/screen-4.0.3-long-term.patch
+ patch -Np2 -i $srcdir/screen-4.0.3-caption-colors.patch
+
+ ./configure --prefix=/usr --enable-pam \
+ --with-sys-screenrc=/etc/screenrc --enable-colors256 \
+ --enable-rxvt_osc --with-pty-group=$_ptygroup \
+ --mandir=/usr/share/man --infodir=/usr/share/info
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+
+ install -Dm644 ${srcdir}/screen.pam ${pkgdir}/etc/pam.d/screen
+
+ install -Dm644 etc/completer.zsh ${pkgdir}/usr/share/zsh/site-functions/screen
+ install -Dm644 etc/etcscreenrc ${pkgdir}/etc/screenrc
+ install -Dm644 etc/screenrc ${pkgdir}/etc/skel/.screenrc
+}
diff --git a/extra/screen/screen-4.0.3-caption-colors.patch b/extra/screen/screen-4.0.3-caption-colors.patch
new file mode 100644
index 000000000..c92cb0c54
--- /dev/null
+++ b/extra/screen/screen-4.0.3-caption-colors.patch
@@ -0,0 +1,21 @@
+From e6a28cf8bfdac15faa6c267bf476ddcaddf48d67 Mon Sep 17 00:00:00 2001
+From: Sadrul Habib Chowdhury <sadrul@users.sourceforge.net>
+Date: Tue, 26 Jan 2010 20:17:26 +0000
+Subject: Accommodate more color changes in the caption.
+
+---
+diff --git a/src/screen.c b/src/screen.c
+index b1c3dfb..2cceae0 100644
+--- a/src/screen.c
++++ b/src/screen.c
+@@ -2204,7 +2204,7 @@ static const char months[] = "JanFebMarAprMayJunJulAugSepOctNovDec";
+ #endif
+
+ static char winmsg_buf[MAXSTR];
+-#define MAX_WINMSG_REND 16 /* rendition changes */
++#define MAX_WINMSG_REND 256 /* rendition changes */
+ static int winmsg_rend[MAX_WINMSG_REND];
+ static int winmsg_rendpos[MAX_WINMSG_REND];
+ static int winmsg_numrend;
+--
+cgit v0.8.3.4
diff --git a/extra/screen/screen-4.0.3-long-term.patch b/extra/screen/screen-4.0.3-long-term.patch
new file mode 100644
index 000000000..3e66acda6
--- /dev/null
+++ b/extra/screen/screen-4.0.3-long-term.patch
@@ -0,0 +1,24 @@
+diff -Naur screen-4.0.3-orig//display.h screen-4.0.3/display.h
+--- screen-4.0.3-orig//display.h 2003-07-02 00:01:42.000000000 +1000
++++ screen-4.0.3/display.h 2010-12-03 20:19:23.826671689 +1000
+@@ -85,7 +85,7 @@
+ struct win *d_other; /* pointer to other window */
+ int d_nonblock; /* -1 don't block if obufmax reached */
+ /* >0: block after nonblock secs */
+- char d_termname[20 + 1]; /* $TERM */
++ char d_termname[40 + 1]; /* $TERM */
+ char *d_tentry; /* buffer for tgetstr */
+ char d_tcinited; /* termcap inited flag */
+ int d_width, d_height; /* width/height of the screen */
+diff -Naur screen-4.0.3-orig//screen.h screen-4.0.3/screen.h
+--- screen-4.0.3-orig//screen.h 2003-08-22 22:28:43.000000000 +1000
++++ screen-4.0.3/screen.h 2010-12-03 20:19:43.163338333 +1000
+@@ -202,7 +202,7 @@
+ char preselect[20];
+ int esc; /* his new escape character unless -1 */
+ int meta_esc; /* his new meta esc character unless -1 */
+- char envterm[20 + 1]; /* terminal type */
++ char envterm[40 + 1]; /* terminal type */
+ int encoding; /* encoding of display */
+ }
+ attach;
diff --git a/extra/screen/screen.install b/extra/screen/screen.install
new file mode 100644
index 000000000..9340e6067
--- /dev/null
+++ b/extra/screen/screen.install
@@ -0,0 +1,21 @@
+infodir=usr/share/info
+filelist=(screen.info screen.info-1 screen.info-2 screen.info-3 screen.info-4 screen.info-5)
+
+post_install() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info $infodir/$file.gz $infodir/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info --delete $infodir/$file.gz $infodir/dir 2> /dev/null
+ done
+}
+
diff --git a/extra/screen/screen.pam b/extra/screen/screen.pam
new file mode 100644
index 000000000..07c42adb1
--- /dev/null
+++ b/extra/screen/screen.pam
@@ -0,0 +1 @@
+auth required pam_unix.so
diff --git a/extra/scribus/PKGBUILD b/extra/scribus/PKGBUILD
new file mode 100644
index 000000000..4e81935e3
--- /dev/null
+++ b/extra/scribus/PKGBUILD
@@ -0,0 +1,48 @@
+# $Id: PKGBUILD 102618 2010-12-08 18:20:12Z dgriffiths $
+# Contributor: Ronald van Haren <ronald.archlinux.org>
+# Contributor: tobias <tobias@archlinux.org>
+# Contributor: Ben <ben@benmazer.net>
+# Maintainer: Daniel J Griffiths <ghost1227@archlinux.us>
+
+pkgname=scribus
+pkgver=1.3.9
+pkgrel=1
+pkgdesc="A desktop publishing program"
+arch=('i686' 'x86_64')
+url="http://www.scribus.net"
+license=('GPL')
+install=scribus.install
+depends=('libcups>=1.3.11' 'lcms>=1.18' 'qt' 'ghostscript>=8.70' \
+ 'libart-lgpl>=2.3.20' 'python2' 'libxml2>=2.7.3' 'cairo' \
+ 'desktop-file-utils' 'shared-mime-info')
+makedepends=('cmake')
+options=(!libtool !makeflags)
+source=(http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('a54dbf2e10cd88d683d0d34565d29378')
+sha1sums=('86bc4db2d8fbb91fe94f8535327991e9128c5862')
+
+build() {
+ cd "${srcdir}"
+ sed -i 's|#!/usr/bin/python|#!/usr/bin/python2|' ${pkgname}-${pkgver}/scribus/plugins/scriptplugin/scripts/ColorChart.py
+ mkdir build
+ cd build
+ cmake ../${pkgname}-${pkgver} \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_SKIP_RPATH=ON \
+ -DWANT_CAIRO=1 \
+ -DLIB_SUFFIX=""
+ make
+}
+
+package() {
+ cd "${srcdir}/build"
+ make DESTDIR="${pkgdir}" install
+
+ # fix icon path in .desktop file
+ sed -i 's|Icon=scribus|Icon=/usr/share/scribus/icons/scribus.png|' \
+ "${srcdir}/${pkgname}-${pkgver}/scribus.desktop"
+
+ install -Dm644 "${srcdir}/${pkgname}-${pkgver}/scribus.desktop" \
+ "${pkgdir}/usr/share/applications/scribus.desktop"
+}
diff --git a/extra/scribus/scribus.install b/extra/scribus/scribus.install
new file mode 100644
index 000000000..0598e46ed
--- /dev/null
+++ b/extra/scribus/scribus.install
@@ -0,0 +1,13 @@
+
+post_install() {
+ echo "update desktop mime database..."
+ update-mime-database usr/share/mime > /dev/null 2>&1
+ update-desktop-database -q > /dev/null 2>&1
+}
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ post_install $1
+}
diff --git a/extra/scrot/PKGBUILD b/extra/scrot/PKGBUILD
new file mode 100644
index 000000000..4d6921fda
--- /dev/null
+++ b/extra/scrot/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id: PKGBUILD 71789 2010-03-09 16:23:42Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+
+pkgname=scrot
+pkgver=0.8
+pkgrel=4
+pkgdesc="A simple command-line screenshot utility for X"
+arch=('i686' 'x86_64')
+url="http://scrot.sourcearchive.com/"
+license=('MIT')
+depends=('giblib')
+source=(ftp://ftp.archlinux.org/other/scrot/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('6a02df0e3bb26ec578dfeb8f56a7b30d')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ ./configure --prefix=/usr \
+ --mandir=/usr/share/man
+ make || return 1
+ make DESTDIR=$pkgdir docsdir=/usr/share/doc/scrot install || return 1
+ install -D -m644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+}
diff --git a/extra/scummvm/PKGBUILD b/extra/scummvm/PKGBUILD
new file mode 100644
index 000000000..061962a8e
--- /dev/null
+++ b/extra/scummvm/PKGBUILD
@@ -0,0 +1,38 @@
+# $Id: PKGBUILD 106447 2011-01-17 06:22:16Z angvp $
+# Maintainer: juergen <juergen@hoetzel.info>
+# Contributor: Manolis Tzanidakis, Petter Gundersen
+
+pkgname=scummvm
+pkgver=1.2.1
+pkgrel=1
+pkgdesc="A 'virtual machine' for several classic graphical point-and-click adventure games."
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://www.scummvm.org/"
+depends=('gcc-libs' 'alsa-lib' 'libmad' 'libvorbis' 'zlib' 'flac>=1.1.4' 'sdl' 'fluidsynth')
+source=(http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('b1d224d7640bc7fdccaca958164b31df')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --backend=sdl --disable-debug \
+ --with-mpeg2-prefix=/usr \
+ --with-flac-prefix=/usr \
+ --with-fluidsynth-prefix=/usr \
+ --prefix=/usr
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ install -Dm755 scummvm ${pkgdir}/usr/bin/scummvm
+ install -Dm644 dists/scummvm.6 ${pkgdir}/usr/share/man/man6/scummvm.6
+ # fixes FS#9118
+ install -Dm644 dists/${pkgname}.desktop \
+ ${pkgdir}/usr/share/applications/${pkgname}.desktop
+ install -Dm644 icons/scummvm.xpm \
+ ${pkgdir}/usr/share/pixmaps/scummvm.xpm
+
+ install -Dm644 gui/themes/scummmodern.zip ${pkgdir}/usr/share/scummvm/scummmodern.zip
+
+}
diff --git a/extra/sdl/PKGBUILD b/extra/sdl/PKGBUILD
new file mode 100644
index 000000000..46ed5bfdd
--- /dev/null
+++ b/extra/sdl/PKGBUILD
@@ -0,0 +1,37 @@
+# $Id: PKGBUILD 99967 2010-11-19 16:37:58Z heftig $
+# Maintainer: Allan McRae <allan@archlinux.org>
+# Contributor: dorphell <dorphell@archlinux.org>
+
+pkgname=sdl
+pkgver=1.2.14
+pkgrel=6
+pkgdesc="A library for portable low-level access to a video framebuffer, audio output, mouse, and keyboard"
+arch=('i686' 'x86_64')
+url="http://www.libsdl.org"
+license=('LGPL')
+depends=('glibc' 'libxext' 'libxrender' 'libx11')
+makedepends=('alsa-lib' 'esound' 'mesa' 'libpulse')
+options=('!libtool')
+source=(http://www.libsdl.org/release/SDL-${pkgver}.tar.gz
+ sdl-1.2.14-joystick-crash.diff
+ sdl-1.2.14-fix-mouse-clicking.patch
+ sdl-1.2.14-fix-disappearing-cursor.patch)
+md5sums=('e52086d1b508fa0b76c52ee30b55bec4'
+ '9d8890b3817736a5d365f7497f096634'
+ '04d8c179f125e04bcd4c9d60e013c2d7'
+ 'a6cf3e71b653aa97d0d8ae6c0a789807')
+
+build() {
+ cd ${srcdir}/SDL-${pkgver}
+ patch -Np1 -i $srcdir/sdl-1.2.14-joystick-crash.diff
+ patch -Np1 -i $srcdir/sdl-1.2.14-fix-mouse-clicking.patch
+ patch -Np1 -i $srcdir/sdl-1.2.14-fix-disappearing-cursor.patch
+ ./configure --prefix=/usr --disable-nasm --enable-alsa --enable-esd \
+ --with-x --disable-rpath
+ make
+}
+
+package() {
+ cd ${srcdir}/SDL-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/sdl/sdl-1.2.14-fix-disappearing-cursor.patch b/extra/sdl/sdl-1.2.14-fix-disappearing-cursor.patch
new file mode 100644
index 000000000..fcd3c314d
--- /dev/null
+++ b/extra/sdl/sdl-1.2.14-fix-disappearing-cursor.patch
@@ -0,0 +1,17 @@
+Index: SDL-1.2.14/src/video/x11/SDL_x11events.c
+===================================================================
+--- SDL-1.2.14.orig/src/video/x11/SDL_x11events.c 2010-04-30 09:16:35.000000000 -0400
++++ SDL-1.2.14/src/video/x11/SDL_x11events.c 2010-04-30 09:16:35.000000000 -0400
+@@ -444,8 +444,10 @@
+ if ( xevent.xcrossing.mode == NotifyUngrab )
+ printf("Mode: NotifyUngrab\n");
+ #endif
+- if ( xevent.xcrossing.detail != NotifyInferior ) {
+- if ( this->input_grab == SDL_GRAB_OFF ) {
++ if ( (xevent.xcrossing.mode != NotifyGrab) &&
++ (xevent.xcrossing.mode != NotifyUngrab) &&
++ (xevent.xcrossing.detail != NotifyInferior) ) {
++ if ( this->input_grab == SDL_GRAB_OFF ) {
+ posted = SDL_PrivateAppActive(0, SDL_APPMOUSEFOCUS);
+ } else {
+ posted = SDL_PrivateMouseMotion(0, 0,
diff --git a/extra/sdl/sdl-1.2.14-fix-mouse-clicking.patch b/extra/sdl/sdl-1.2.14-fix-mouse-clicking.patch
new file mode 100644
index 000000000..7d3e5acfc
--- /dev/null
+++ b/extra/sdl/sdl-1.2.14-fix-mouse-clicking.patch
@@ -0,0 +1,23 @@
+--- SDL-1.2.14/src/video/x11/SDL_x11events.c.orig 2010-04-08 11:57:05.003169834 -0700
++++ SDL-1.2.14/src/video/x11/SDL_x11events.c 2010-04-08 12:33:51.690926340 -0700
+@@ -423,12 +423,15 @@
+ if ( xevent.xcrossing.mode == NotifyUngrab )
+ printf("Mode: NotifyUngrab\n");
+ #endif
+- if ( this->input_grab == SDL_GRAB_OFF ) {
+- posted = SDL_PrivateAppActive(1, SDL_APPMOUSEFOCUS);
++ if ( (xevent.xcrossing.mode != NotifyGrab) &&
++ (xevent.xcrossing.mode != NotifyUngrab) ) {
++ if ( this->input_grab == SDL_GRAB_OFF ) {
++ posted = SDL_PrivateAppActive(1, SDL_APPMOUSEFOCUS);
++ }
++ posted = SDL_PrivateMouseMotion(0, 0,
++ xevent.xcrossing.x,
++ xevent.xcrossing.y);
+ }
+- posted = SDL_PrivateMouseMotion(0, 0,
+- xevent.xcrossing.x,
+- xevent.xcrossing.y);
+ }
+ break;
+
diff --git a/extra/sdl/sdl-1.2.14-joystick-crash.diff b/extra/sdl/sdl-1.2.14-joystick-crash.diff
new file mode 100644
index 000000000..949e18b96
--- /dev/null
+++ b/extra/sdl/sdl-1.2.14-joystick-crash.diff
@@ -0,0 +1,14 @@
+Description: Fix crash with joystick detection.
+Index: libsdl1.2-1.2.14/src/joystick/linux/SDL_sysjoystick.c
+===================================================================
+--- libsdl1.2-1.2.14.orig/src/joystick/linux/SDL_sysjoystick.c 2010-01-12 12:37:36.000000000 -0500
++++ libsdl1.2-1.2.14/src/joystick/linux/SDL_sysjoystick.c 2010-01-12 12:38:27.000000000 -0500
+@@ -700,7 +700,7 @@
+ continue;
+ }
+ if ( test_bit(i, absbit) ) {
+- int values[5];
++ int values[6];
+
+ if ( ioctl(fd, EVIOCGABS(i), values) < 0 )
+ continue;
diff --git a/extra/sdl_gfx/PKGBUILD b/extra/sdl_gfx/PKGBUILD
new file mode 100644
index 000000000..393f04784
--- /dev/null
+++ b/extra/sdl_gfx/PKGBUILD
@@ -0,0 +1,32 @@
+# $Id: PKGBUILD 96464 2010-10-21 10:33:40Z allan $
+# Maintainer: Allan McRae <allan@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=sdl_gfx
+pkgver=2.0.22
+pkgrel=1
+pkgdesc="SDL Graphic Primitives"
+arch=('i686' 'x86_64')
+license=('LGPL')
+options=(!libtool)
+url="http://www.ferzkopp.net/joomla/software-mainmenu-14/4-ferzkopps-linux-software/19-sdlgfx"
+source=(http://www.ferzkopp.net/Software/SDL_gfx-2.0/SDL_gfx-${pkgver}.tar.gz)
+depends=('sdl')
+md5sums=('330f291f1f09a1bdf397c9b40d92ca41')
+
+build() {
+ cd ${srcdir}/SDL_gfx-${pkgver}
+
+ if [ "${CARCH}" == "x86_64" ]; then
+ ./configure --prefix=/usr --disable-mmx
+ else
+ ./configure --prefix=/usr
+ fi
+
+ make
+}
+
+package() {
+ cd ${srcdir}/SDL_gfx-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/sdl_image/PKGBUILD b/extra/sdl_image/PKGBUILD
new file mode 100644
index 000000000..3eb670bd6
--- /dev/null
+++ b/extra/sdl_image/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id: PKGBUILD 64922 2010-01-23 10:17:20Z eric $
+# Maintainer: Allan McRae <allan@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=sdl_image
+pkgver=1.2.10
+pkgrel=2
+pkgdesc="A simple library to load images of various formats as SDL surfaces"
+arch=('i686' 'x86_64')
+license=('LGPL')
+depends=('sdl>=1.2.13' 'libpng' 'libjpeg>=7' 'libtiff' 'zlib')
+options=('!libtool')
+url="http://www.libsdl.org/projects/SDL_image/"
+source=(http://www.libsdl.org/projects/SDL_image/release/SDL_image-${pkgver}.tar.gz)
+md5sums=('6c06584b31559e2b59f2b982d0d1f628')
+
+build() {
+ cd ${srcdir}/SDL_image-${pkgver}
+ ./configure --prefix=/usr
+ make || return 1
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/sdl_mixer/PKGBUILD b/extra/sdl_mixer/PKGBUILD
new file mode 100644
index 000000000..f241519be
--- /dev/null
+++ b/extra/sdl_mixer/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 70367 2010-02-26 13:24:25Z allan $
+# Maintainer: Allan McRae <allan@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+# Contributor: Lukas Sabota <punkrockguy318@cocmast.net> (Timidity Patch)
+
+pkgname=sdl_mixer
+pkgver=1.2.11
+pkgrel=2
+pkgdesc="A simple multi-channel audio mixer"
+arch=('i686' 'x86_64')
+url="http://www.libsdl.org/projects/SDL_mixer/"
+license=('LGPL' 'GPL')
+depends=('sdl>=1.2.12' 'libvorbis' 'libmikmod' 'smpeg')
+options=('!libtool')
+source=(http://www.libsdl.org/projects/SDL_mixer/release/SDL_mixer-${pkgver}.tar.gz)
+md5sums=('65ada3d997fe85109191a5fb083f248c')
+
+build() {
+ cd ${srcdir}/SDL_mixer-${pkgver}
+
+ sed -e "/CONFIG_FILE_ETC/s/\/etc\/timidity.cfg/\/etc\/timidity++\/timidity.cfg/" \
+ -e "/DEFAULT_PATH/s/\/etc\/timidity/\/etc\/timidity++/" \
+ -e "/DEFAULT_PATH2/s/\/usr\/local\/lib\/timidity/\/usr\/lib\/timidity/" \
+ -i timidity/config.h
+
+ ./configure --prefix=/usr
+ make || return 1
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/sdl_net/PKGBUILD b/extra/sdl_net/PKGBUILD
new file mode 100644
index 000000000..b26327678
--- /dev/null
+++ b/extra/sdl_net/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: PKGBUILD 51822 2009-09-12 07:01:31Z allan $
+# Maintainer: Allan McRae <allan@archlinux.org>
+# Contributor: dorphell <dorphell@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=sdl_net
+pkgver=1.2.7
+pkgrel=3
+pkgdesc="A small sample cross-platform networking library"
+arch=('i686' 'x86_64')
+url="http://www.libsdl.org/projects/SDL_net/"
+license=('GPL')
+depends=('sdl')
+options=('!libtool')
+source=(http://www.libsdl.org/projects/SDL_net/release/SDL_net-${pkgver}.tar.gz)
+md5sums=('6bd4662d1423810f3140d4da21b6d912')
+
+build() {
+ cd ${srcdir}/SDL_net-${pkgver}
+ ./configure --prefix=/usr
+ make || return 1
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/sdl_pango/PKGBUILD b/extra/sdl_pango/PKGBUILD
new file mode 100644
index 000000000..68b686aeb
--- /dev/null
+++ b/extra/sdl_pango/PKGBUILD
@@ -0,0 +1,32 @@
+# $Id: PKGBUILD 106434 2011-01-16 22:40:34Z andrea $
+# Maintainer: Allan McRae <allan@archlinux.com>
+# Contributor: gyo <nucleogeek@gmail.com>
+
+pkgname=sdl_pango
+pkgver=0.1.2
+pkgrel=3
+pkgdesc="Pango SDL binding"
+arch=('i686' 'x86_64')
+url="http://sdlpango.sourceforge.net/"
+license=('LGPL')
+depends=('pango' 'sdl')
+options=('!libtool')
+source=(http://downloads.sourceforge.net/sourceforge/sdlpango/SDL_Pango-$pkgver.tar.gz
+ SDL_Pango-$pkgver-API-adds.patch
+ matrix_declarations.patch)
+md5sums=('85bbf9bb7b1cee0538154dadd045418c'
+ '5decf3d7eb724e27548af3142131a2f6'
+ '1067d401f4df54c7eb84ac3fd56ab76f')
+
+build() {
+ cd $srcdir/SDL_Pango-$pkgver
+ patch -Np0 -i $srcdir/SDL_Pango-$pkgver-API-adds.patch
+ patch -Np1 -i $srcdir/matrix_declarations.patch
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd $srcdir/SDL_Pango-$pkgver
+ make DESTDIR=$pkgdir install
+}
diff --git a/extra/sdl_pango/SDL_Pango-0.1.2-API-adds.patch b/extra/sdl_pango/SDL_Pango-0.1.2-API-adds.patch
new file mode 100644
index 000000000..1535a5673
--- /dev/null
+++ b/extra/sdl_pango/SDL_Pango-0.1.2-API-adds.patch
@@ -0,0 +1,116 @@
+--- src/SDL_Pango.c 2004-12-10 10:06:33.000000000 +0100
++++ src/SDL_Pango.c 2006-09-24 22:46:24.000000000 +0200
+@@ -723,13 +723,8 @@
+ SDL_UnlockSurface(surface);
+ }
+
+-/*!
+- Create a context which contains Pango objects.
+-
+- @return A pointer to the context as a SDLPango_Context*.
+-*/
+ SDLPango_Context*
+-SDLPango_CreateContext()
++SDLPango_CreateContext_GivenFontDesc(const char* font_desc)
+ {
+ SDLPango_Context *context = g_malloc(sizeof(SDLPango_Context));
+ G_CONST_RETURN char *charset;
+@@ -743,8 +738,7 @@
+ pango_context_set_language (context->context, pango_language_from_string (charset));
+ pango_context_set_base_dir (context->context, PANGO_DIRECTION_LTR);
+
+- context->font_desc = pango_font_description_from_string(
+- MAKE_FONT_NAME (DEFAULT_FONT_FAMILY, DEFAULT_FONT_SIZE));
++ context->font_desc = pango_font_description_from_string(font_desc);
+
+ context->layout = pango_layout_new (context->context);
+
+@@ -762,6 +756,17 @@
+ }
+
+ /*!
++ Create a context which contains Pango objects.
++
++ @return A pointer to the context as a SDLPango_Context*.
++*/
++SDLPango_Context*
++SDLPango_CreateContext()
++{
++ SDLPango_CreateContext_GivenFontDesc(MAKE_FONT_NAME(DEFAULT_FONT_FAMILY, DEFAULT_FONT_SIZE));
++}
++
++/*!
+ Free a context.
+
+ @param *context [i/o] Context to be free
+@@ -1053,6 +1058,20 @@
+ pango_layout_set_font_description (context->layout, context->font_desc);
+ }
+
++void
++SDLPango_SetText_GivenAlignment(
++ SDLPango_Context *context,
++ const char *text,
++ int length,
++ SDLPango_Alignment alignment)
++{
++ pango_layout_set_attributes(context->layout, NULL);
++ pango_layout_set_text (context->layout, text, length);
++ pango_layout_set_auto_dir (context->layout, TRUE);
++ pango_layout_set_alignment (context->layout, alignment);
++ pango_layout_set_font_description (context->layout, context->font_desc);
++}
++
+ /*!
+ Set plain text to context.
+ Text must be utf-8.
+@@ -1067,11 +1086,7 @@
+ const char *text,
+ int length)
+ {
+- pango_layout_set_attributes(context->layout, NULL);
+- pango_layout_set_text (context->layout, text, length);
+- pango_layout_set_auto_dir (context->layout, TRUE);
+- pango_layout_set_alignment (context->layout, PANGO_ALIGN_LEFT);
+- pango_layout_set_font_description (context->layout, context->font_desc);
++ SDLPango_SetText_GivenAlignment(context, text, length, SDLPANGO_ALIGN_LEFT);
+ }
+
+ /*!
+--- src/SDL_Pango.h 2004-12-10 10:06:33.000000000 +0100
++++ src/SDL_Pango.h 2006-09-24 22:46:01.000000000 +0200
+@@ -109,12 +109,20 @@
+ SDLPANGO_DIRECTION_NEUTRAL /*! Neutral */
+ } SDLPango_Direction;
+
+-
++/*!
++ Specifies alignment of text. See Pango reference for detail
++*/
++typedef enum {
++ SDLPANGO_ALIGN_LEFT,
++ SDLPANGO_ALIGN_CENTER,
++ SDLPANGO_ALIGN_RIGHT
++} SDLPango_Alignment;
+
+ extern DECLSPEC int SDLCALL SDLPango_Init();
+
+ extern DECLSPEC int SDLCALL SDLPango_WasInit();
+
++extern DECLSPEC SDLPango_Context* SDLCALL SDLPango_CreateContext_GivenFontDesc(const char* font_desc);
+ extern DECLSPEC SDLPango_Context* SDLCALL SDLPango_CreateContext();
+
+ extern DECLSPEC void SDLCALL SDLPango_FreeContext(
+@@ -157,6 +165,12 @@
+ const char *markup,
+ int length);
+
++extern DECLSPEC void SDLCALL SDLPango_SetText_GivenAlignment(
++ SDLPango_Context *context,
++ const char *text,
++ int length,
++ SDLPango_Alignment alignment);
++
+ extern DECLSPEC void SDLCALL SDLPango_SetText(
+ SDLPango_Context *context,
+ const char *markup,
diff --git a/extra/sdl_pango/matrix_declarations.patch b/extra/sdl_pango/matrix_declarations.patch
new file mode 100644
index 000000000..c35d0a708
--- /dev/null
+++ b/extra/sdl_pango/matrix_declarations.patch
@@ -0,0 +1,131 @@
+Index: SDL_Pango-0.1.2/src/SDL_Pango.c
+===================================================================
+--- SDL_Pango-0.1.2.orig/src/SDL_Pango.c 2007-09-18 15:03:10.732910311 +0200
++++ SDL_Pango-0.1.2/src/SDL_Pango.c 2007-09-18 15:04:41.970109622 +0200
+@@ -286,6 +286,59 @@
+ } contextImpl;
+
+
++const SDLPango_Matrix _MATRIX_WHITE_BACK
++ = {255, 0, 0, 0,
++ 255, 0, 0, 0,
++ 255, 0, 0, 0,
++ 255, 255, 0, 0,};
++
++/*!
++ Specifies white back and black letter.
++*/
++const SDLPango_Matrix *MATRIX_WHITE_BACK = &_MATRIX_WHITE_BACK;
++
++const SDLPango_Matrix _MATRIX_BLACK_BACK
++ = {0, 255, 0, 0,
++ 0, 255, 0, 0,
++ 0, 255, 0, 0,
++ 255, 255, 0, 0,};
++/*!
++ Specifies black back and white letter.
++*/
++const SDLPango_Matrix *MATRIX_BLACK_BACK = &_MATRIX_BLACK_BACK;
++
++const SDLPango_Matrix _MATRIX_TRANSPARENT_BACK_BLACK_LETTER
++ = {0, 0, 0, 0,
++ 0, 0, 0, 0,
++ 0, 0, 0, 0,
++ 0, 255, 0, 0,};
++/*!
++ Specifies transparent back and black letter.
++*/
++const SDLPango_Matrix *MATRIX_TRANSPARENT_BACK_BLACK_LETTER = &_MATRIX_TRANSPARENT_BACK_BLACK_LETTER;
++
++const SDLPango_Matrix _MATRIX_TRANSPARENT_BACK_WHITE_LETTER
++ = {255, 255, 0, 0,
++ 255, 255, 0, 0,
++ 255, 255, 0, 0,
++ 0, 255, 0, 0,};
++/*!
++ Specifies transparent back and white letter.
++*/
++const SDLPango_Matrix *MATRIX_TRANSPARENT_BACK_WHITE_LETTER = &_MATRIX_TRANSPARENT_BACK_WHITE_LETTER;
++
++const SDLPango_Matrix _MATRIX_TRANSPARENT_BACK_TRANSPARENT_LETTER
++ = {255, 255, 0, 0,
++ 255, 255, 0, 0,
++ 255, 255, 0, 0,
++ 0, 0, 0, 0,};
++/*!
++ Specifies transparent back and transparent letter.
++ This is useful for KARAOKE like rendering.
++*/
++const SDLPango_Matrix *MATRIX_TRANSPARENT_BACK_TRANSPARENT_LETTER = &_MATRIX_TRANSPARENT_BACK_TRANSPARENT_LETTER;
++
++
+ /*!
+ Initialize the Glib and Pango API.
+ This must be called before using other functions in this library,
+Index: SDL_Pango-0.1.2/src/SDL_Pango.h
+===================================================================
+--- SDL_Pango-0.1.2.orig/src/SDL_Pango.h 2007-09-18 15:03:10.732910311 +0200
++++ SDL_Pango-0.1.2/src/SDL_Pango.h 2007-09-18 15:06:24.919976401 +0200
+@@ -47,57 +47,27 @@
+ Uint8 m[4][4]; /*! Matrix variables */
+ } SDLPango_Matrix;
+
+-const SDLPango_Matrix _MATRIX_WHITE_BACK
+- = {255, 0, 0, 0,
+- 255, 0, 0, 0,
+- 255, 0, 0, 0,
+- 255, 255, 0, 0,};
+-
+ /*!
+ Specifies white back and black letter.
+ */
+-const SDLPango_Matrix *MATRIX_WHITE_BACK = &_MATRIX_WHITE_BACK;
+-
+-const SDLPango_Matrix _MATRIX_BLACK_BACK
+- = {0, 255, 0, 0,
+- 0, 255, 0, 0,
+- 0, 255, 0, 0,
+- 255, 255, 0, 0,};
++extern const SDLPango_Matrix *MATRIX_WHITE_BACK;
+ /*!
+ Specifies black back and white letter.
+ */
+-const SDLPango_Matrix *MATRIX_BLACK_BACK = &_MATRIX_BLACK_BACK;
+-
+-const SDLPango_Matrix _MATRIX_TRANSPARENT_BACK_BLACK_LETTER
+- = {0, 0, 0, 0,
+- 0, 0, 0, 0,
+- 0, 0, 0, 0,
+- 0, 255, 0, 0,};
++extern const SDLPango_Matrix *MATRIX_BLACK_BACK;
+ /*!
+ Specifies transparent back and black letter.
+ */
+-const SDLPango_Matrix *MATRIX_TRANSPARENT_BACK_BLACK_LETTER = &_MATRIX_TRANSPARENT_BACK_BLACK_LETTER;
+-
+-const SDLPango_Matrix _MATRIX_TRANSPARENT_BACK_WHITE_LETTER
+- = {255, 255, 0, 0,
+- 255, 255, 0, 0,
+- 255, 255, 0, 0,
+- 0, 255, 0, 0,};
++extern const SDLPango_Matrix *MATRIX_TRANSPARENT_BACK_BLACK_LETTER;
+ /*!
+ Specifies transparent back and white letter.
+ */
+-const SDLPango_Matrix *MATRIX_TRANSPARENT_BACK_WHITE_LETTER = &_MATRIX_TRANSPARENT_BACK_WHITE_LETTER;
+-
+-const SDLPango_Matrix _MATRIX_TRANSPARENT_BACK_TRANSPARENT_LETTER
+- = {255, 255, 0, 0,
+- 255, 255, 0, 0,
+- 255, 255, 0, 0,
+- 0, 0, 0, 0,};
++extern const SDLPango_Matrix *MATRIX_TRANSPARENT_BACK_WHITE_LETTER;
+ /*!
+ Specifies transparent back and transparent letter.
+ This is useful for KARAOKE like rendering.
+ */
+-const SDLPango_Matrix *MATRIX_TRANSPARENT_BACK_TRANSPARENT_LETTER = &_MATRIX_TRANSPARENT_BACK_TRANSPARENT_LETTER;
++extern const SDLPango_Matrix *MATRIX_TRANSPARENT_BACK_TRANSPARENT_LETTER;
+
+ /*!
+ Specifies direction of text. See Pango reference for detail
diff --git a/extra/sdl_sound/PKGBUILD b/extra/sdl_sound/PKGBUILD
new file mode 100644
index 000000000..f452d63bf
--- /dev/null
+++ b/extra/sdl_sound/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 22260 2008-12-24 15:29:53Z allan $
+# Maintainer: Allan McRae <allan@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=sdl_sound
+pkgver=1.0.3
+pkgrel=2
+pkgdesc="A library to decode several popular sound file formats, such as .WAV and .MP3"
+arch=('i686' 'x86_64')
+url="http://icculus.org/SDL_sound/"
+license=('LGPL')
+depends=('sdl' 'libmikmod' 'libvorbis' 'flac' 'speex' 'smpeg')
+options=('!libtool')
+source=(http://icculus.org/SDL_sound/downloads/SDL_sound-$pkgver.tar.gz
+ flac.patch)
+md5sums=('aa09cd52df85d29bee87a664424c94b5'
+ '302aa9dc94cc71dd3339ca3177d36e1c')
+
+build() {
+ cd ${srcdir}/SDL_sound-${pkgver}
+
+ CFLAGS="$CFLAGS -I/usr/include/smpeg" \
+ CXXFLAGS="$CXXFLAGS -I/usr/include/smpeg" \
+ ./configure --prefix=/usr
+
+ make || return 1
+ make DESTDIR=${pkgdir} install
+}
+
diff --git a/extra/sdl_sound/flac.patch b/extra/sdl_sound/flac.patch
new file mode 100644
index 000000000..d0ed49194
--- /dev/null
+++ b/extra/sdl_sound/flac.patch
@@ -0,0 +1,126 @@
+diff -u -r SDL_sound-1.0.1/configure.in SDL_sound-1.0.1-flac/configure.in
+--- SDL_sound-1.0.1/configure.in 2003-10-12 20:49:54.000000000 +0200
++++ SDL_sound-1.0.1-flac/configure.in 2006-12-11 20:43:46.546583251 +0100
+@@ -155,9 +155,12 @@
+ dnl FLAC developers tend to break their API with every release, so we're
+ dnl checking for the latest-and-greatest here so we don't have to support
+ dnl obsolete versions.
++dnl Starting with FLAC 1.1.3:
++dnl libFLAC supports Ogg FLAC (no more libOggFLAC) so we also need -logg
++dnl the libFLAC .so version is also #defined in FLAC/export.h
+
+ dnl Hooray for shitty autoconf bugs!
+-x="C__seekable_stream_decoder_process_single"
++x="C__stream_decoder_process_single"
+ flcsym="FLA$x"
+ dnl Check for libFLAC
+ AC_ARG_ENABLE(flac,
+@@ -167,7 +170,7 @@
+ AC_CHECK_HEADER(FLAC/stream_decoder.h, have_flac_hdr=yes)
+ AC_CHECK_LIB(FLAC, $flcsym, have_flac_lib=yes)
+ if test x$have_flac_hdr = xyes -a x$have_flac_lib = xyes; then
+- LIBS="$LIBS -lFLAC"
++ LIBS="$LIBS -lFLAC -logg"
+ AC_DEFINE(SOUND_SUPPORTS_FLAC)
+ fi
+ fi
+diff -u -r SDL_sound-1.0.1/decoders/flac.c SDL_sound-1.0.1-flac/decoders/flac.c
+--- SDL_sound-1.0.1/decoders/flac.c 2003-03-10 23:44:14.000000000 +0100
++++ SDL_sound-1.0.1-flac/decoders/flac.c 2006-12-11 20:43:57.880097062 +0100
+@@ -44,6 +44,16 @@
+ #define __SDL_SOUND_INTERNAL__
+ #include "SDL_sound_internal.h"
+
++#include <FLAC/export.h>
++
++/* FLAC 1.1.3 has FLAC_API_VERSION_CURRENT == 8 */
++#if !defined(FLAC_API_VERSION_CURRENT) || FLAC_API_VERSION_CURRENT < 8
++#define LEGACY_FLAC
++#else
++#undef LEGACY_FLAC
++#endif
++
++#ifdef LEGACY_FLAC
+ #include <FLAC/seekable_stream_decoder.h>
+
+ #define D_END_OF_STREAM FLAC__SEEKABLE_STREAM_DECODER_END_OF_STREAM
+@@ -80,6 +90,34 @@
+ typedef FLAC__SeekableStreamDecoderSeekStatus d_seek_status_t;
+ typedef FLAC__SeekableStreamDecoderTellStatus d_tell_status_t;
+ typedef FLAC__SeekableStreamDecoderLengthStatus d_length_status_t;
++#else
++#include <FLAC/stream_decoder.h>
++
++#define D_END_OF_STREAM FLAC__STREAM_DECODER_END_OF_STREAM
++
++#define d_new() FLAC__stream_decoder_new()
++#define d_process_metadata(x) FLAC__stream_decoder_process_until_end_of_metadata(x)
++#define d_process_one_frame(x) FLAC__stream_decoder_process_single(x)
++#define d_get_state(x) FLAC__stream_decoder_get_state(x)
++#define d_finish(x) FLAC__stream_decoder_finish(x)
++#define d_delete(x) FLAC__stream_decoder_delete(x)
++
++typedef FLAC__StreamDecoder decoder_t;
++typedef FLAC__StreamDecoderReadStatus d_read_status_t;
++
++#define D_SEEK_STATUS_OK FLAC__STREAM_DECODER_SEEK_STATUS_OK
++#define D_SEEK_STATUS_ERROR FLAC__STREAM_DECODER_SEEK_STATUS_ERROR
++#define D_TELL_STATUS_OK FLAC__STREAM_DECODER_TELL_STATUS_OK
++#define D_TELL_STATUS_ERROR FLAC__STREAM_DECODER_TELL_STATUS_ERROR
++#define D_LENGTH_STATUS_OK FLAC__STREAM_DECODER_LENGTH_STATUS_OK
++#define D_LENGTH_STATUS_ERROR FLAC__STREAM_DECODER_LENGTH_STATUS_ERROR
++
++#define d_seek_absolute(x, y) FLAC__stream_decoder_seek_absolute(x, y)
++
++typedef FLAC__StreamDecoderSeekStatus d_seek_status_t;
++typedef FLAC__StreamDecoderTellStatus d_tell_status_t;
++typedef FLAC__StreamDecoderLengthStatus d_length_status_t;
++#endif
+
+ #define D_WRITE_CONTINUE FLAC__STREAM_DECODER_WRITE_STATUS_CONTINUE
+ #define D_READ_END_OF_STREAM FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM
+@@ -141,9 +179,15 @@
+ } /* free_flac */
+
+
++#ifdef LEGACY_FLAC
+ static d_read_status_t read_callback(
+ const decoder_t *decoder, FLAC__byte buffer[],
+ unsigned int *bytes, void *client_data)
++#else
++static d_read_status_t read_callback(
++ const decoder_t *decoder, FLAC__byte buffer[],
++ size_t *bytes, void *client_data)
++#endif
+ {
+ flac_t *f = (flac_t *) client_data;
+ Uint32 retval;
+@@ -400,6 +444,7 @@
+ BAIL_MACRO(ERR_OUT_OF_MEMORY, 0);
+ } /* if */
+
++#ifdef LEGACY_FLAC
+ d_set_read_callback(decoder, read_callback);
+ d_set_write_callback(decoder, write_callback);
+ d_set_metadata_callback(decoder, metadata_callback);
+@@ -410,6 +455,7 @@
+ d_set_eof_callback(decoder, eof_callback);
+
+ d_set_client_data(decoder, f);
++#endif
+
+ f->rw = internal->rw;
+ f->sample = sample;
+@@ -418,7 +464,12 @@
+ f->is_flac = 0 /* !!! FIXME: should be "has_extension", not "0". */;
+
+ internal->decoder_private = f;
++ /* really should check the init return value here: */
++#ifdef LEGACY_FLAC
+ d_init(decoder);
++#else
++ FLAC__stream_decoder_init_stream(decoder, read_callback, seek_callback, tell_callback, length_callback, eof_callback, write_callback, metadata_callback, error_callback, f);
++#endif
+
+ sample->flags = SOUND_SAMPLEFLAG_NONE;
+
diff --git a/extra/sdl_ttf/PKGBUILD b/extra/sdl_ttf/PKGBUILD
new file mode 100644
index 000000000..56e56d9f0
--- /dev/null
+++ b/extra/sdl_ttf/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 85134 2010-07-09 10:09:49Z allan $
+# Maintainer: Allan McRae <allan@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=sdl_ttf
+pkgver=2.0.10
+pkgrel=1
+pkgdesc="A library that allows you to use TrueType fonts in your SDL applications"
+arch=('i686' 'x86_64')
+license=('LGPL')
+url="http://www.libsdl.org/projects/SDL_ttf/"
+depends=('sdl>=1.2.12' 'freetype2')
+options=('!libtool')
+source=(http://www.libsdl.org/projects/SDL_ttf/release/SDL_ttf-${pkgver}.tar.gz)
+md5sums=('814e6e17e8879254208d23b3b7e0354b')
+
+build() {
+ cd ${srcdir}/SDL_ttf-${pkgver}
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd ${srcdir}/SDL_ttf-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/seahorse-plugins/PKGBUILD b/extra/seahorse-plugins/PKGBUILD
new file mode 100644
index 000000000..d081ed186
--- /dev/null
+++ b/extra/seahorse-plugins/PKGBUILD
@@ -0,0 +1,38 @@
+# $Id: PKGBUILD 112893 2011-03-07 15:53:09Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=seahorse-plugins
+pkgver=2.30.1
+pkgrel=3
+pkgdesc="Seahorse plugins"
+arch=(i686 x86_64)
+license=('GPL')
+depends=('seahorse>=2.30.1' 'desktop-file-utils')
+makedepends=('intltool' 'gnome-doc-utils>=0.20.0' 'pkgconfig' 'gedit>=2.30.2' 'nautilus>=2.30.1' 'gnome-panel-bonobo>=2.32.0')
+optdepends=('gnome-panel-bonobo: applet support')
+groups=('gnome-extra')
+url="http://www.gnome.org"
+options=('!libtool' '!emptydirs')
+install=seahorse-plugins.install
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.30/${pkgname}-${pkgver}.tar.bz2
+ gpgme-init.patch
+ seahorse-plugins-2.30.1-libnotify-0.7.patch)
+sha256sums=('1fdfed1aef2c22a29a9abc00eae67752854e466a66cee2a8c1c278277e832d66'
+ '418d67892b348d02885e968c5299416baf545b12cf8f58b23579f79e87776ab2'
+ '9da8c5552217a56f4b7d12e28a425b3980b20953d8312c3017378e5a71536905')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i "${srcdir}/gpgme-init.patch"
+ patch -Np0 -i "${srcdir}/seahorse-plugins-2.30.1-libnotify-0.7.patch"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-scrollkeeper \
+ --disable-update-mime-database \
+ --disable-static
+ make
+ 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 seahorse-plugins ${pkgdir}/etc/gconf/schemas/*.schemas
+ rm -f ${pkgdir}/etc/gconf/schemas/*.schemas
+}
diff --git a/extra/seahorse-plugins/gpgme-init.patch b/extra/seahorse-plugins/gpgme-init.patch
new file mode 100644
index 000000000..7e2e94be2
--- /dev/null
+++ b/extra/seahorse-plugins/gpgme-init.patch
@@ -0,0 +1,43 @@
+diff -ruN seahorse-plugins-2.29.90.orig/agent/seahorse-agent-cache.c seahorse-plugins-2.29.90/agent/seahorse-agent-cache.c
+--- seahorse-plugins-2.29.90.orig/agent/seahorse-agent-cache.c 2010-01-25 03:06:50.000000000 +0100
++++ seahorse-plugins-2.29.90/agent/seahorse-agent-cache.c 2010-02-14 12:31:01.000000000 +0100
+@@ -236,6 +236,7 @@
+ if (g_cache == NULL) {
+ g_cache =
+ g_hash_table_new_full (g_str_hash, g_str_equal, NULL, destroy_cache_item);
++ gpgme_check_version (NULL);
+
+ err = gpgme_engine_check_version (proto);
+ g_return_if_fail (GPG_IS_OK (err));
+diff -ruN seahorse-plugins-2.29.90.orig/libseahorse/seahorse-pgp-operation.c seahorse-plugins-2.29.90/libseahorse/seahorse-pgp-operation.c
+--- seahorse-plugins-2.29.90.orig/libseahorse/seahorse-pgp-operation.c 2010-01-25 03:06:50.000000000 +0100
++++ seahorse-plugins-2.29.90/libseahorse/seahorse-pgp-operation.c 2010-02-14 12:31:25.000000000 +0100
+@@ -322,6 +322,8 @@
+ gpgme_protocol_t proto = GPGME_PROTOCOL_OpenPGP;
+ gpgme_error_t err;
+ gpgme_ctx_t ctx;
++
++ gpgme_check_version (NULL);
+
+ err = gpgme_engine_check_version (proto);
+ g_return_if_fail (GPG_IS_OK (err));
+diff -ruN seahorse-plugins-2.29.90.orig/plugins/nautilus/seahorse-tool.c seahorse-plugins-2.29.90/plugins/nautilus/seahorse-tool.c
+--- seahorse-plugins-2.29.90.orig/plugins/nautilus/seahorse-tool.c 2010-01-25 03:06:50.000000000 +0100
++++ seahorse-plugins-2.29.90/plugins/nautilus/seahorse-tool.c 2010-02-14 12:32:44.000000000 +0100
+@@ -171,6 +171,7 @@
+
+ if (recips) {
+
++ gpgme_check_version (NULL);
+ gerr = gpgme_new (&ctx);
+ g_return_val_if_fail (GPG_IS_OK (gerr), NULL);
+
+@@ -328,6 +329,8 @@
+ id = cryptui_keyset_key_raw_keyid (keyset, signer);
+ g_free (signer);
+
++ gpgme_check_version (NULL);
++
+ gerr = gpgme_new (&ctx);
+ g_return_val_if_fail (GPG_IS_OK (gerr), NULL);
+
diff --git a/extra/seahorse-plugins/seahorse-plugins-2.30.1-libnotify-0.7.patch b/extra/seahorse-plugins/seahorse-plugins-2.30.1-libnotify-0.7.patch
new file mode 100644
index 000000000..060340707
--- /dev/null
+++ b/extra/seahorse-plugins/seahorse-plugins-2.30.1-libnotify-0.7.patch
@@ -0,0 +1,26 @@
+--- libseahorse/seahorse-notification.c
++++ libseahorse/seahorse-notification.c
+@@ -34,6 +34,9 @@
+
+ #ifdef HAVE_LIBNOTIFY
+ #include <libnotify/notify.h>
++#ifndef NOTIFY_CHECK_VERSION
++#define NOTIFY_CHECK_VERSION(x,y,z) 0
++#endif
+ #endif
+
+ /* -----------------------------------------------------------------------------
+@@ -213,7 +216,12 @@
+ heading = format_key_text (snotif->heading);
+ message = format_key_text (snotif->message);
+
+- notif = notify_notification_new (heading, message, snotif->icon, attachto);
++ notif = notify_notification_new (heading, message, snotif->icon
++#if NOTIFY_CHECK_VERSION (0, 7, 0)
++ );
++#else
++ , attachto);
++#endif
+
+ g_free (heading);
+ g_free (message);
diff --git a/extra/seahorse-plugins/seahorse-plugins.install b/extra/seahorse-plugins/seahorse-plugins.install
new file mode 100644
index 000000000..3f36ff2a2
--- /dev/null
+++ b/extra/seahorse-plugins/seahorse-plugins.install
@@ -0,0 +1,26 @@
+pkgname=seahorse-plugins
+
+post_install() {
+ usr/sbin/gconfpkg --install ${pkgname}
+ update-desktop-database -q
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+ update-mime-database usr/share/mime >/dev/null 2>&1
+}
+
+pre_upgrade() {
+ pre_remove $1
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ usr/sbin/gconfpkg --uninstall ${pkgname}
+}
+
+post_remove() {
+ update-desktop-database -q
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+ update-mime-database usr/share/mime
+}
diff --git a/extra/seahorse/PKGBUILD b/extra/seahorse/PKGBUILD
new file mode 100644
index 000000000..81ab87de5
--- /dev/null
+++ b/extra/seahorse/PKGBUILD
@@ -0,0 +1,36 @@
+# $Id: PKGBUILD 112875 2011-03-07 12:51:47Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Michel Brabants <michel.linux@tiscali.be>
+
+pkgname=seahorse
+pkgver=2.32.0
+pkgrel=2
+pkgdesc="GNOME application for managing PGP keys."
+arch=(i686 x86_64)
+license=('GPL')
+url="http://projects.gnome.org/seahorse/"
+depends=('libgnome-keyring>=2.32.0' 'avahi>=0.6.27' 'libnotify>=0.7.1' 'libsoup>=2.32.0' 'gpgme>=1.2.0' 'desktop-file-utils' 'hicolor-icon-theme' 'gconf>=2.32.0' 'gnome-keyring')
+makedepends=('gettext' 'libldap' 'intltool' 'pkgconfig' 'gnome-doc-utils>=0.20.1' 'openssh' 'libsm')
+options=('!libtool' '!emptydirs')
+groups=('gnome-extra')
+install=seahorse.install
+source=(http://ftp.gnome.org/pub/GNOME/sources/seahorse/2.32/seahorse-${pkgver}.tar.bz2
+ seahorse-2.32.0-libnotify-0.7.patch)
+sha256sums=('f55468237246a485317d59e2fbc1b1ef5f5bd4c5a7b9ff6f40c3d921af0ed52d'
+ '8f7b2fc0ad1cb572de3c31ed694e5131e8ec6373e9f3e202d98858a12902c467')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np0 -i "${srcdir}/seahorse-2.32.0-libnotify-0.7.patch"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-static \
+ --enable-ldap --enable-hkp \
+ --enable-libnotify \
+ --disable-scrollkeeper --disable-update-mime-database
+ make
+ 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 seahorse ${pkgdir}/etc/gconf/schemas/*.schemas
+ rm -f ${pkgdir}/etc/gconf/schemas/*.schemas
+}
diff --git a/extra/seahorse/seahorse-2.32.0-libnotify-0.7.patch b/extra/seahorse/seahorse-2.32.0-libnotify-0.7.patch
new file mode 100644
index 000000000..1a6b478ac
--- /dev/null
+++ b/extra/seahorse/seahorse-2.32.0-libnotify-0.7.patch
@@ -0,0 +1,26 @@
+--- libseahorse/seahorse-notification.c
++++ libseahorse/seahorse-notification.c
+@@ -37,6 +37,9 @@
+
+ #ifdef HAVE_LIBNOTIFY
+ #include <libnotify/notify.h>
++#ifndef NOTIFY_CHECK_VERSION
++#define NOTIFY_CHECK_VERSION(x,y,z) 0
++#endif
+ #endif
+
+ /* -----------------------------------------------------------------------------
+@@ -231,7 +234,12 @@
+ heading = format_key_text (snotif->heading);
+ message = format_key_text (snotif->message);
+
+- notif = notify_notification_new (heading, message, snotif->icon, attachto);
++ notif = notify_notification_new (heading, message, snotif->icon
++#if NOTIFY_CHECK_VERSION (0, 7, 0)
++ );
++#else
++ , attachto);
++#endif
+
+ g_free (heading);
+ g_free (message);
diff --git a/extra/seahorse/seahorse.install b/extra/seahorse/seahorse.install
new file mode 100644
index 000000000..97feac3b1
--- /dev/null
+++ b/extra/seahorse/seahorse.install
@@ -0,0 +1,24 @@
+pkgname=seahorse
+
+post_install() {
+ usr/sbin/gconfpkg --install ${pkgname}
+ update-desktop-database -q
+ 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() {
+ update-desktop-database -q
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
diff --git a/extra/setserial/PKGBUILD b/extra/setserial/PKGBUILD
new file mode 100644
index 000000000..fea301684
--- /dev/null
+++ b/extra/setserial/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 68104 2010-02-10 18:44:17Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Aurelien Foret <orelien@chez.com>
+
+pkgname=setserial
+pkgver=2.17
+pkgrel=3
+pkgdesc="Allows to change various attributes of a serial device"
+arch=('i686' 'x86_64')
+url="http://setserial.sourceforge.net/"
+license=('GPL')
+depends=('glibc')
+source=(http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.gz
+ $pkgname.patch)
+md5sums=('c4867d72c41564318e0107745eb7a0f2'
+ '99919d3be7c1550721494070a7ace66a')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ patch -Np1 -i ../$pkgname.patch || return 1
+ ./configure --prefix=/usr \
+ --mandir=/usr/share/man || return 1
+ make || return 1
+ install -d ${pkgdir}/usr/{bin,share/man/man8}
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/setserial/setserial.patch b/extra/setserial/setserial.patch
new file mode 100644
index 000000000..3cce1f07d
--- /dev/null
+++ b/extra/setserial/setserial.patch
@@ -0,0 +1,28 @@
+diff -ur setserial-2.17/Makefile.in setserial-2.17-new/Makefile.in
+--- setserial-2.17/Makefile.in 2000-01-27 16:39:07.000000000 +0100
++++ setserial-2.17-new/Makefile.in 2005-03-09 20:53:31.000000000 +0100
+@@ -17,6 +17,11 @@
+ INCS = -I.
+ TAR = tar
+
++prefix=@prefix@
++exec_prefix=@exec_prefix@
++bindir=@bindir@
++mandir=@mandir@
++
+ all: setserial setserial.cat
+
+ setserial: setserial.c
+@@ -26,9 +31,9 @@
+ nroff -man setserial.8 > setserial.cat
+
+ install: setserial setserial.8
+- $(INSTALL_PROGRAM) setserial $(DESTDIR)/bin
+- $(STRIP) $(DESTDIR)/bin/setserial
+- $(INSTALL_DATA) setserial.8 $(DESTDIR)/usr/man/man8
++ $(INSTALL_PROGRAM) setserial $(DESTDIR)$(bindir)
++ $(STRIP) $(DESTDIR)$(bindir)/setserial
++ $(INSTALL_DATA) setserial.8 $(DESTDIR)$(mandir)/man8
+
+ clean:
+ $(RM) setserial setserial.o setserial.cat *~
diff --git a/extra/sg3_utils/PKGBUILD b/extra/sg3_utils/PKGBUILD
new file mode 100644
index 000000000..eca1068a5
--- /dev/null
+++ b/extra/sg3_utils/PKGBUILD
@@ -0,0 +1,27 @@
+#$Id: PKGBUILD 109019 2011-02-05 11:24:51Z andyrtr $
+# Maintainer: Daniel Isenmann <daniel@archlinux.org>
+
+pkgname=sg3_utils
+pkgver=1.30
+pkgrel=1
+pkgdesc="Generic SCSI utilities"
+arch=(i686 x86_64)
+url="http://sg.danny.cz/sg/sg3_utils.html"
+license=('GPL' 'custom:BSD')
+depends=('glibc')
+options=('!libtool')
+source=(http://sg.danny.cz/sg/p/${pkgname}-${pkgver}.tgz)
+md5sums=('8acb9328abe17d012db8c5f95f1d7d75')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/sg3_utils/stdint.patch b/extra/sg3_utils/stdint.patch
new file mode 100644
index 000000000..8f8c5f581
--- /dev/null
+++ b/extra/sg3_utils/stdint.patch
@@ -0,0 +1,22 @@
+--- include/sg_cmds_basic.h 2008/06/26 23:27:40 1.1
++++ include/sg_cmds_basic.h 2008/06/26 23:28:06
+@@ -30,6 +30,8 @@
+ *
+ */
+
++#include <stdint.h>
++
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+--- include/sg_cmds_extra.h 2008/06/26 23:27:40 1.1
++++ include/sg_cmds_extra.h 2008/06/26 23:29:02
+@@ -30,6 +30,8 @@
+ *
+ */
+
++#include <stdint.h>
++
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
diff --git a/extra/shared-mime-info/PKGBUILD b/extra/shared-mime-info/PKGBUILD
new file mode 100644
index 000000000..1bf40a9b2
--- /dev/null
+++ b/extra/shared-mime-info/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 109014 2011-02-05 11:17:17Z andyrtr $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=shared-mime-info
+pkgver=0.90
+pkgrel=1
+pkgdesc="Freedesktop.org Shared MIME Info"
+arch=('i686' 'x86_64')
+license=('GPL')
+depends=('libxml2>=2.7.7' 'glib2>=2.26.0')
+makedepends=('intltool' 'pkgconfig')
+install=shared-mime-info.install
+url="http://freedesktop.org/Software/shared-mime-info"
+source=(http://freedesktop.org/~hadess/${pkgname}-${pkgver}.tar.bz2
+ pbm.patch)
+md5sums=('967d68d3890ba3994cfce3adf5b8f15b'
+ '39fcc08fbd33145684ba97f1f64644c2')
+options=(!makeflags)
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -p1 -i "${srcdir}/pbm.patch"
+ ./configure --prefix=/usr --disable-update-mimedb
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/shared-mime-info/pbm.patch b/extra/shared-mime-info/pbm.patch
new file mode 100644
index 000000000..040900e01
--- /dev/null
+++ b/extra/shared-mime-info/pbm.patch
@@ -0,0 +1,49 @@
+diff -Naur shared-mime-info-0.70-orig/freedesktop.org.xml shared-mime-info-0.70/freedesktop.org.xml
+--- shared-mime-info-0.70-orig/freedesktop.org.xml 2010-02-06 02:39:24.000000000 -0500
++++ shared-mime-info-0.70/freedesktop.org.xml 2010-02-06 02:48:01.000000000 -0500
+@@ -17025,12 +17025,10 @@
+ <magic priority="50">
+ <match value="P1" type="string" offset="0">
+ <match value="0x0a" type="byte" offset="2">
+- <match value="#" type="string" offset="3"/>
+ </match>
+ </match>
+ <match value="P4" type="string" offset="0">
+ <match value="0x0a" type="byte" offset="2">
+- <match value="#" type="string" offset="3"/>
+ </match>
+ </match>
+ </magic>
+@@ -17074,12 +17072,10 @@
+ <magic priority="50">
+ <match value="P2" type="string" offset="0">
+ <match value="0x0a" type="byte" offset="2">
+- <match value="#" type="string" offset="3"/>
+ </match>
+ </match>
+ <match value="P5" type="string" offset="0">
+ <match value="0x0a" type="byte" offset="2">
+- <match value="#" type="string" offset="3"/>
+ </match>
+ </match>
+ </magic>
+@@ -17123,12 +17119,10 @@
+ <magic priority="50">
+ <match value="P3" type="string" offset="0">
+ <match value="0x0a" type="byte" offset="2">
+- <match value="#" type="string" offset="3"/>
+ </match>
+ </match>
+ <match value="P6" type="string" offset="0">
+ <match value="0x0a" type="byte" offset="2">
+- <match value="#" type="string" offset="3"/>
+ </match>
+ </match>
+ </magic>
+@@ -23926,4 +23920,4 @@
+ </treemagic>
+ </mime-type>
+
+-</mime-info>
+\ No newline at end of file
++</mime-info>
diff --git a/extra/shared-mime-info/shared-mime-info.install b/extra/shared-mime-info/shared-mime-info.install
new file mode 100644
index 000000000..fac0c1c79
--- /dev/null
+++ b/extra/shared-mime-info/shared-mime-info.install
@@ -0,0 +1,15 @@
+post_install() {
+ update-mime-database usr/share/mime > /dev/null 2>&1
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ if [ -d usr/share/mime ]; then
+ rm -f usr/share/mime/{globs,globs2,icons,treemagic,generic-icons,types,magic,XMLnamespaces,subclasses,aliases,mime.cache}
+ rm -rf usr/share/mime/{application,audio,image,inode,message,model,multipart,text,video,x-content,x-epoc}
+ rmdir --ignore-fail-on-non-empty usr/share/mime
+ fi
+}
diff --git a/extra/sharutils/PKGBUILD b/extra/sharutils/PKGBUILD
new file mode 100644
index 000000000..308051009
--- /dev/null
+++ b/extra/sharutils/PKGBUILD
@@ -0,0 +1,32 @@
+# $Id: PKGBUILD 98391 2010-11-08 19:40:29Z andrea $
+# Maintainer:
+# Contributor: Kevin Piche <kevin@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=sharutils
+pkgver=4.10
+pkgrel=1
+pkgdesc="GNU shar makes so-called shell archives out of many files"
+arch=('i686' 'x86_64')
+url="http://www.gnu.org/software/sharutils/"
+license=('GPL')
+depends=('perl' 'gettext' 'texinfo')
+install=${pkgname}.install
+source=(ftp://ftp.gnu.org/gnu/${pkgname}/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('f918859228238d69e1ce78ccbec8f9e0')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --disable-nls
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+
+ rm ${pkgdir}/usr/share/info/dir
+ gzip ${pkgdir}/usr/share/info/*
+}
diff --git a/extra/sharutils/sharutils.install b/extra/sharutils/sharutils.install
new file mode 100644
index 000000000..e8d9f8c07
--- /dev/null
+++ b/extra/sharutils/sharutils.install
@@ -0,0 +1,20 @@
+infodir=/usr/share/info
+filelist=(sharutils.info.gz)
+
+post_install() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install
+}
+
+pre_remove() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info --delete $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
diff --git a/extra/silc-toolkit/PKGBUILD b/extra/silc-toolkit/PKGBUILD
new file mode 100644
index 000000000..a74d067fa
--- /dev/null
+++ b/extra/silc-toolkit/PKGBUILD
@@ -0,0 +1,27 @@
+# Maintainer: Ionut Biru <ionut@archlinux.ro>
+# Maintainer: Vesa Kaihlavirta <vesa@archlinux.org>
+
+pkgname=silc-toolkit
+pkgver=1.1.10
+pkgrel=1
+pkgdesc="Toolkit for Secure Internet Live Conferencing"
+url="http://www.silcnet.org"
+license=('GPL')
+arch=('i686' 'x86_64')
+depends=('glibc' 'perl' 'libidn')
+source=(http://www.silcnet.org/download/toolkit/sources/$pkgname-$pkgver.tar.bz2)
+options=(!libtool)
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ ./configure --prefix=/usr --with-etcdir=/etc/silc \
+ --enable-ipv6 --with-perl=yes \
+ --with-simdir=/usr/lib/silc/modules
+
+ make || return 1
+ make DESTDIR=$pkgdir install
+
+ # remove the crapload of html docs (26MB!)
+ rm -rf $pkgdir/usr/share/doc/$pkgname/toolkit
+}
+sha256sums=('a76cc364813b2d09dee7a9e99fda77db71b5bf752297176eb8de4fb0466eed76')
diff --git a/extra/skanlite/PKGBUILD b/extra/skanlite/PKGBUILD
new file mode 100644
index 000000000..6e64a82e4
--- /dev/null
+++ b/extra/skanlite/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 101716 2010-11-30 22:05:56Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Pierre Schmitz <pierre@archlinux.de>
+
+pkgname=skanlite
+pkgver=0.7
+pkgrel=1
+pkgdesc="Image Scanning Application for KDE"
+arch=('i686' 'x86_64')
+url='http://kde-apps.org/content/show.php?content=109803'
+license=('GPL')
+depends=('kdegraphics-libs')
+makedepends=('pkgconfig' 'cmake' 'automoc4' 'docbook-xsl')
+source=("http://downloads.sourceforge.net/sanewidget/${pkgname}-${pkgver}.tar.bz2")
+md5sums=('cb256c392210c43d51e317c6a5ba9ad2')
+
+build() {
+ cd ${srcdir}
+ mkdir build
+ cd build
+ cmake ../${pkgname}-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=/usr
+ make
+}
+
+package() {
+ cd ${srcdir}/build
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/slang/PKGBUILD b/extra/slang/PKGBUILD
new file mode 100644
index 000000000..8f78015e3
--- /dev/null
+++ b/extra/slang/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 106236 2011-01-15 15:15:05Z giovanni $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=slang
+pkgver=2.2.3
+pkgrel=2
+pkgdesc="S-Lang is a powerful interpreted language"
+arch=('i686' 'x86_64')
+url="http://www.jedsoft.org/slang/"
+license=('GPL')
+depends=('glibc' 'pcre' 'zlib')
+backup=('etc/slsh.rc')
+options=('!makeflags')
+source=(ftp://ftp.fu-berlin.de/pub/unix/misc/slang/v${pkgver%.*}/${pkgname}-${pkgver}.tar.bz2
+ ${pkgname}-2.2.3-faster-baud-rates.patch)
+md5sums=('17e1864de999ae9535a9f7350a010427'
+ '4e22e58836100adfae34e824f5fbcb1c')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i "${srcdir}"/${pkgname}-2.2.3-faster-baud-rates.patch || return 1
+
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install-all || return 1
+}
diff --git a/extra/slang/slang-2.2.3-faster-baud-rates.patch b/extra/slang/slang-2.2.3-faster-baud-rates.patch
new file mode 100644
index 000000000..b37b253f4
--- /dev/null
+++ b/extra/slang/slang-2.2.3-faster-baud-rates.patch
@@ -0,0 +1,62 @@
+The baud rate constant list used for setting the SLang_TT_Baud_Rate
+variable contains baud rates only up to 230400; any faster baud rate is
+not properly detected, and SLang_TT_Baud_Rate is left as 0. This caused
+problems at least with the Midnight Commander:
+
+ https://www.midnight-commander.org/ticket/2452
+
+(recent versions of rxvt-unicode set speed 4000000 for the pty (and
+there is no configurable option for this), and mc then considers such
+terminal as "slow" due to SLang_TT_Baud_Rate == 0 and turns off some
+useful UI options).
+
+This patch adds missing values to the Baud_Rates array in src/slutty.c,
+which fixes the baud rate detection problem. It also brings this array
+in sync with Baudrate_Map in modules/termios-module.c, where those
+higher baud rates were already present for some time.
+
+
+--- slang-2.2.3/src/slutty.c.alt-baud-rates 2010-12-15 13:56:48.000000000 +0300
++++ slang-2.2.3/src/slutty.c 2011-01-09 22:34:59.911000008 +0300
+@@ -170,6 +170,42 @@ static Baud_Rate_Type Baud_Rates [] =
+ #ifdef B230400
+ {B230400, 230400},
+ #endif
++#ifdef B460800
++ {B460800, 460800},
++#endif
++#ifdef B500000
++ {B500000, 500000},
++#endif
++#ifdef B576000
++ {B576000, 576000},
++#endif
++#ifdef B921600
++ {B921600, 921600},
++#endif
++#ifdef B1000000
++ {B1000000, 1000000},
++#endif
++#ifdef B1152000
++ {B1152000, 1152000},
++#endif
++#ifdef B1500000
++ {B1500000, 1500000},
++#endif
++#ifdef B2000000
++ {B2000000, 2000000},
++#endif
++#ifdef B2500000
++ {B2500000, 2500000},
++#endif
++#ifdef B3000000
++ {B3000000, 3000000},
++#endif
++#ifdef B3500000
++ {B3500000, 3500000},
++#endif
++#ifdef B4000000
++ {B4000000, 4000000},
++#endif
+ {0, 0}
+ };
diff --git a/extra/slim/PKGBUILD b/extra/slim/PKGBUILD
new file mode 100644
index 000000000..c468d578f
--- /dev/null
+++ b/extra/slim/PKGBUILD
@@ -0,0 +1,58 @@
+# $Id: PKGBUILD 108522 2011-01-31 22:56:10Z bisson $
+# Maintainer: Thayer Williams <thayer@archlinux.org>
+# Contributor: Alexander Fehr <pizzapunk gmail com>
+# Contributor: Hugo Ideler <hugoideler@dse.nl>
+
+pkgname=slim
+pkgver=1.3.2
+pkgrel=3
+pkgdesc='Desktop-independent graphical login manager for X11'
+arch=('i686' 'x86_64')
+url='http://slim.berlios.de/'
+license=('GPL2')
+depends=('pam' 'libxmu' 'libpng' 'libjpeg' 'libxft')
+backup=('etc/slim.conf' 'etc/logrotate.d/slim' 'etc/pam.d/slim')
+install=slim.install
+source=("http://download.berlios.de/${pkgname}/${pkgname}-${pkgver}.tar.gz"
+ 'slim'
+ 'slim.logrotate'
+ 'slim.pam'
+ 'gcc44.patch'
+ 'tty-slowness.patch'
+ 'restart.patch'
+ 'no-host.patch')
+sha1sums=('e421d5487732c8317f8f591906661e014b036358'
+ '6fe0ba83509af634bce47be34e30995965bffc79'
+ 'b969cc902c1d9915a5609141a652c77b2732407b'
+ 'a0e991ef0ac5120465a3be014a26e70ba073b6ae'
+ '51121d451116c768d0fc027ff1ea70aaaef036e7'
+ '213fefe8533c845ea8c40585b6a8097820d5e5d2'
+ '2d526bc0c498bf307ee50e2d22b4f53ffa0c4435'
+ 'b86eddd083fb9f6259e46c735f55ebe76c655bd3')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ sed -i -e 's/png12/png14/g' Makefile
+ patch -p1 -i ../gcc44.patch
+
+ patch -p1 -i ../tty-slowness.patch # fix sluggish tty after slim start
+ patch -p1 -i ../restart.patch # restart X server if killed
+ patch -p1 -i ../no-host.patch # do not set PAM host
+
+ make USE_PAM=1
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ make DESTDIR="${pkgdir}" MANDIR=/usr/share/man install
+
+ install -D -m755 ../slim "${pkgdir}/etc/rc.d/slim"
+ install -D -m644 ../slim.logrotate "${pkgdir}/etc/logrotate.d/slim"
+ install -D -m644 ../slim.pam "${pkgdir}/etc/pam.d/slim"
+
+ # Provide sane defaults
+ sed -i 's|#xserver_arguments.*|xserver_arguments -nolisten tcp vt07|' "${pkgdir}/etc/slim.conf"
+ sed -i 's|/var/run/slim.lock|/var/lock/slim.lock|' "${pkgdir}/etc/slim.conf"
+}
diff --git a/extra/slim/gcc44.patch b/extra/slim/gcc44.patch
new file mode 100644
index 000000000..390ea8a86
--- /dev/null
+++ b/extra/slim/gcc44.patch
@@ -0,0 +1,11 @@
+diff -aur slim-1.3.2/switchuser.h slim-1.3.2.a/switchuser.h
+--- slim-1.3.2/switchuser.h 2010-07-08 07:04:10.000000000 +0200
++++ slim-1.3.2.a/switchuser.h 2010-08-21 15:10:34.306212393 +0200
+@@ -13,6 +13,7 @@
+ #define _SWITCHUSER_H_
+
+ #include <stdlib.h>
++#include <stdio.h> /* remove */
+ #include <unistd.h>
+ #include <string.h>
+ #include <pwd.h>
diff --git a/extra/slim/no-host.patch b/extra/slim/no-host.patch
new file mode 100644
index 000000000..c40f25bca
--- /dev/null
+++ b/extra/slim/no-host.patch
@@ -0,0 +1,29 @@
+Datum: Sun, 30 Jan 2011 12:49:00 +0200
+Von: Samuli Suominen <ssuominen@gentoo.org>
+An: jgc@archlinux.org, andyrtr@archlinux.org, thayer@archlinux.org
+Betreff: SLIM and ConsoleKit 0.4.2 (and up)
+
+People have been coming to #xfce after Arch's ConsoleKit 0.4.3 upgrade
+to ask for help why Suspend / Hibernate / and such doesn't work.
+
+It's because SLIM is using pam_ck_connector.so and SLIM sets Host to localhost
+and makes pam_ck_connector.so believe it's actually a *remote host* called
+localhost and will refuse access.
+
+http://bugs.gentoo.org/346037
+https://developer.berlios.de/bugs/?func=detailbug&bug_id=17757&group_id=2663
+http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/x11-misc/slim/files/346037-stop_setting_host_for_pam_ck_connector_so.patch?view=log
+
+
+diff -aur old/app.cpp new/app.cpp
+--- old/app.cpp 2011-01-30 12:39:34.033337944 +0100
++++ new/app.cpp 2011-01-30 12:40:25.843337943 +0100
+@@ -228,8 +228,6 @@
+ pam.start("slim");
+ pam.set_item(PAM::Authenticator::TTY, DisplayName);
+ pam.set_item(PAM::Authenticator::Requestor, "root");
+- pam.set_item(PAM::Authenticator::Host, "localhost");
+-
+ }
+ catch(PAM::Exception& e){
+ cerr << APPNAME << ": " << e << endl;
diff --git a/extra/slim/restart.patch b/extra/slim/restart.patch
new file mode 100644
index 000000000..4e5049000
--- /dev/null
+++ b/extra/slim/restart.patch
@@ -0,0 +1,144 @@
+http://developer.berlios.de/patch/?func=detailpatch&patch_id=2378&group_id=2663
+
+
+diff -aur slim-1.3.2.b/app.cpp slim-1.3.2.c/app.cpp
+--- slim-1.3.2.b/app.cpp 2010-08-21 15:10:48.579631179 +0200
++++ slim-1.3.2.c/app.cpp 2010-08-21 15:11:03.946389843 +0200
+@@ -104,6 +104,11 @@
+
+ extern App* LoginApp;
+
++int xioerror(Display *disp) {
++ LoginApp->RestartServer();
++ return 0;
++}
++
+ void CatchSignal(int sig) {
+ cerr << APPNAME << ": unexpected signal " << sig << endl;
+
+@@ -114,19 +119,6 @@
+ exit(ERR_EXIT);
+ }
+
+-
+-void AlarmSignal(int sig) {
+- int pid = LoginApp->GetServerPID();
+- if(waitpid(pid, NULL, WNOHANG) == pid) {
+- LoginApp->StopServer();
+- LoginApp->RemoveLock();
+- exit(OK_EXIT);
+- }
+- signal(sig, AlarmSignal);
+- alarm(2);
+-}
+-
+-
+ void User1Signal(int sig) {
+ signal(sig, User1Signal);
+ }
+@@ -277,7 +269,6 @@
+ signal(SIGHUP, CatchSignal);
+ signal(SIGPIPE, CatchSignal);
+ signal(SIGUSR1, User1Signal);
+- signal(SIGALRM, AlarmSignal);
+
+ #ifndef XNEST_DEBUG
+ if (!force_nodaemon && cfg->getOption("daemon") == "yes") {
+@@ -298,7 +289,6 @@
+
+ CreateServerAuth();
+ StartServer();
+- alarm(2);
+ #endif
+
+ }
+@@ -614,6 +604,8 @@
+ int status;
+ while (wpid != pid) {
+ wpid = wait(&status);
++ if (wpid == ServerPID)
++ xioerror(Dpy); // Server died, simulate IO error
+ }
+ if (WIFEXITED(status) && WEXITSTATUS(status)) {
+ LoginPanel->Message("Failed to execute login command");
+@@ -659,9 +651,6 @@
+
+
+ void App::Reboot() {
+- // Stop alarm clock
+- alarm(0);
+-
+ #ifdef USE_PAM
+ try{
+ pam.end();
+@@ -684,9 +673,6 @@
+
+
+ void App::Halt() {
+- // Stop alarm clock
+- alarm(0);
+-
+ #ifdef USE_PAM
+ try{
+ pam.end();
+@@ -772,6 +758,7 @@
+
+ StopServer();
+ RemoveLock();
++ while (waitpid(-1, NULL, WNOHANG) > 0); // Collects all dead childrens
+ Run();
+ }
+
+@@ -842,6 +829,7 @@
+
+ for(cycles = 0; cycles < ncycles; cycles++) {
+ if((Dpy = XOpenDisplay(DisplayName))) {
++ XSetIOErrorHandler(xioerror);
+ return 1;
+ } else {
+ if(!ServerTimeout(1, (char *) "X server to begin accepting connections"))
+@@ -926,9 +914,6 @@
+ ServerPID = -1;
+ break;
+ }
+- alarm(15);
+- pause();
+- alarm(0);
+
+ // Wait for server to start up
+ if(WaitForServer() == 0) {
+@@ -963,15 +948,12 @@
+
+
+ void App::StopServer() {
+- // Stop alars clock and ignore signals
+- alarm(0);
+ signal(SIGQUIT, SIG_IGN);
+ signal(SIGINT, SIG_IGN);
+ signal(SIGHUP, SIG_IGN);
+ signal(SIGPIPE, SIG_IGN);
+ signal(SIGTERM, SIG_DFL);
+ signal(SIGKILL, SIG_DFL);
+- signal(SIGALRM, SIG_DFL);
+
+ // Catch X error
+ XSetIOErrorHandler(IgnoreXIO);
+diff -aur slim-1.3.2.b/app.h slim-1.3.2.c/app.h
+--- slim-1.3.2.b/app.h 2010-08-21 15:10:40.499582804 +0200
++++ slim-1.3.2.c/app.h 2010-08-21 15:11:03.946389843 +0200
+@@ -34,6 +34,7 @@
+ ~App();
+ void Run();
+ int GetServerPID();
++ void RestartServer();
+ void StopServer();
+
+ bool serverStarted;
+@@ -49,7 +50,6 @@
+ void Console();
+ void Exit();
+ void KillAllClients(Bool top);
+- void RestartServer();
+ void ReadConfig();
+ void OpenLog();
+ void CloseLog();
diff --git a/extra/slim/slim b/extra/slim/slim
new file mode 100755
index 000000000..b0be7ffc5
--- /dev/null
+++ b/extra/slim/slim
@@ -0,0 +1,36 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+PID=`pidof -o %PPID /usr/bin/slim`
+case "$1" in
+ start)
+ stat_busy "Starting Simple Login Manager"
+ [ -z "$PID" ] && /usr/bin/slim -d &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon slim
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping Simple Login Manager"
+ [ ! -z "$PID" ] && kill $PID &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon slim
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 3
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
diff --git a/extra/slim/slim.install b/extra/slim/slim.install
new file mode 100644
index 000000000..65aa77d72
--- /dev/null
+++ b/extra/slim/slim.install
@@ -0,0 +1,7 @@
+post_install() {
+ cat <<EOF
+
+==> Add slim to the DAEMONS array in /etc/rc.conf or update /etc/inittab.
+
+EOF
+}
diff --git a/extra/slim/slim.logrotate b/extra/slim/slim.logrotate
new file mode 100644
index 000000000..26ec3b0f4
--- /dev/null
+++ b/extra/slim/slim.logrotate
@@ -0,0 +1,9 @@
+/var/log/slim.log {
+ compress
+ rotate 1
+ size 1024k
+ notifempty
+ missingok
+ copytruncate
+ noolddir
+}
diff --git a/extra/slim/slim.pam b/extra/slim/slim.pam
new file mode 100644
index 000000000..78a981f74
--- /dev/null
+++ b/extra/slim/slim.pam
@@ -0,0 +1,10 @@
+#%PAM-1.0
+auth requisite pam_nologin.so
+auth required pam_env.so
+auth required pam_unix.so
+account required pam_unix.so
+password required pam_unix.so
+session required pam_limits.so
+session required pam_unix.so
+session optional pam_loginuid.so
+session optional pam_ck_connector.so
diff --git a/extra/slim/tty-slowness.patch b/extra/slim/tty-slowness.patch
new file mode 100644
index 000000000..c590fbed8
--- /dev/null
+++ b/extra/slim/tty-slowness.patch
@@ -0,0 +1,30 @@
+diff -aur slim-1.3.2.a/app.cpp slim-1.3.2.b/app.cpp
+--- slim-1.3.2.a/app.cpp 2010-08-21 15:10:13.702755711 +0200
++++ slim-1.3.2.b/app.cpp 2010-08-21 15:10:48.579631179 +0200
+@@ -280,21 +280,22 @@
+ signal(SIGALRM, AlarmSignal);
+
+ #ifndef XNEST_DEBUG
+- OpenLog();
+-
+ if (!force_nodaemon && cfg->getOption("daemon") == "yes") {
+ daemonmode = true;
+ }
+
+ // Daemonize
+ if (daemonmode) {
+- if (daemon(0, 1) == -1) {
++ if (daemon(0, 0) == -1) {
+ cerr << APPNAME << ": " << strerror(errno) << endl;
+ exit(ERR_EXIT);
+ }
+- UpdatePid();
+ }
+
++ OpenLog();
++
++ if (daemonmode) UpdatePid();
++
+ CreateServerAuth();
+ StartServer();
+ alarm(2);
diff --git a/extra/slv2/PKGBUILD b/extra/slv2/PKGBUILD
new file mode 100644
index 000000000..f83e988d2
--- /dev/null
+++ b/extra/slv2/PKGBUILD
@@ -0,0 +1,32 @@
+# $Id: PKGBUILD 100618 2010-11-24 17:48:28Z schiv $
+# Maintainer: Ray Rashif <schiv@archlinux.org>
+# Contributor: Leslie P. Polzer <polzer@stardawn.org>
+
+pkgname=slv2
+pkgver=0.6.6
+pkgrel=2
+pkgdesc="Library for LV2 hosts"
+arch=('i686' 'x86_64')
+url="http://drobilla.net/software/slv2"
+license=('GPL')
+depends=('redland' 'lv2core' 'jack')
+makedepends=('python2')
+install=$pkgname.install
+changelog=$pkgname.changelog
+source=(http://download.drobilla.net/$pkgname-$pkgver.tar.bz2)
+md5sums=('b8e8e0e82dd04324fcd533e8acd1ce85')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ python2 waf configure --prefix=/usr
+ python2 waf build $MAKEFLAGS
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ python2 waf install --destdir="$pkgdir/"
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/extra/slv2/slv2.changelog b/extra/slv2/slv2.changelog
new file mode 100644
index 000000000..e5be06200
--- /dev/null
+++ b/extra/slv2/slv2.changelog
@@ -0,0 +1,18 @@
+24 Nov 2010 (GMT+8) Ray Rashif <schiv@archlinux.org>
+
+ * PKGBUILD :
+ Get rid of sed and use python2 directly for waf.
+ waf fix for python transition already included previously (unlogged).
+ Release only (no need binary update; no runtime python requirement).
+
+9 Aug 2010 (GMT+8) Ray Rashif <schiv@archlinux.org>
+
+ * 0.6.6-2 :
+ Brought into extra from community for ardour
+ - adds "LV2" plug-ins support
+
+ * PKGBUILD :
+ Minor cosmetic ammendments.
+
+ * slv2.changelog :
+ Added this changelog.
diff --git a/extra/slv2/slv2.install b/extra/slv2/slv2.install
new file mode 100644
index 000000000..c980ddfab
--- /dev/null
+++ b/extra/slv2/slv2.install
@@ -0,0 +1,14 @@
+post_install() {
+ echo "Updating Shared Library Links"
+ /sbin/ldconfig
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/extra/smartmontools/PKGBUILD b/extra/smartmontools/PKGBUILD
new file mode 100644
index 000000000..3961405be
--- /dev/null
+++ b/extra/smartmontools/PKGBUILD
@@ -0,0 +1,42 @@
+# $Id: PKGBUILD 96222 2010-10-19 12:09:31Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Jeff Mickey <jeff@archlinux.org>
+# Contributor: Jani Talikka <jani.talikka@gmail.com>
+# Contributor: Ralf Barth <archlinux.org@haggy.org>
+
+pkgname=smartmontools
+pkgver=5.40
+pkgrel=1
+pkgdesc="Control and monitor S.M.A.R.T. enabled ATA and SCSI Hard Drives."
+url="http://smartmontools.sourceforge.net"
+license=('GPL')
+arch=('i686' 'x86_64')
+depends=('gcc-libs')
+backup=('etc/smartd.conf'
+ 'etc/conf.d/smartd')
+source=(http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.gz \
+ smartd.conf
+ smartd.rc)
+md5sums=('0f0be0239914ad87830a4fff594bda5b'
+ '28c1b80c41dac52d433961dcfb4f70e0'
+ 'fb30e07f87f2c1d99532e018291ad3e8')
+
+build()
+{
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --enable-drivedb
+ make || return 1
+}
+
+package()
+{
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ make DESTDIR=${pkgdir}/ install || return 1
+ rm -rf ${pkgdir}/etc/rc.d
+ install -Dm755 ${srcdir}/smartd.rc ${pkgdir}/etc/rc.d/smartd
+ install -Dm644 ${srcdir}/smartd.conf ${pkgdir}/etc/conf.d/smartd
+}
diff --git a/extra/smartmontools/smartd.conf b/extra/smartmontools/smartd.conf
new file mode 100644
index 000000000..f14870abf
--- /dev/null
+++ b/extra/smartmontools/smartd.conf
@@ -0,0 +1 @@
+SMARTD_ARGS=""
diff --git a/extra/smartmontools/smartd.rc b/extra/smartmontools/smartd.rc
new file mode 100755
index 000000000..16920db12
--- /dev/null
+++ b/extra/smartmontools/smartd.rc
@@ -0,0 +1,39 @@
+#!/bin/bash
+
+# source application-specific settings
+SMARTD_ARGS=
+[ -f /etc/conf.d/smartd ] && . /etc/conf.d/smartd
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+case "$1" in
+
+ start)
+ stat_busy "Starting smartd"
+ /usr/sbin/smartd ${SMARTD_ARGS} &>/dev/null
+ if [ $? -ne 0 ]; then
+ stat_fail
+ else
+ add_daemon smartd
+ stat_done
+ fi
+ ;;
+
+ stop)
+ stat_busy "Stopping smartd"
+ kill -9 `pidof /usr/sbin/smartd` &>/dev/null
+ rm_daemon smartd
+ stat_done
+ ;;
+
+ restart)
+ stat_busy "Restarting smartd ..."
+ $0 stop
+ $0 start
+ stat_done
+ ;;
+
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
diff --git a/extra/smb4k/PKGBUILD b/extra/smb4k/PKGBUILD
new file mode 100644
index 000000000..9d0fb81ae
--- /dev/null
+++ b/extra/smb4k/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 116040 2011-03-22 16:37:49Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Emanuele Rampichini <emanuele.rampichini@gmail.com>
+
+pkgname=smb4k
+pkgver=0.10.10
+pkgrel=1
+pkgdesc="A KDE program that browses samba shares"
+arch=('i686' 'x86_64')
+url="http://smb4k.berlios.de/"
+license=('GPL')
+depends=('kdebase-runtime')
+makedepends=('cmake' 'automoc4' 'docbook-xsl')
+install=smb4k.install
+source=("http://download.berlios.de/smb4k/${pkgname}-${pkgver}.tar.bz2")
+md5sums=('637ca913ffe9ac24a4dd09d4eddf0dcf')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=RELEASE
+ make VERBOSE=1
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/smb4k/smb4k.install b/extra/smb4k/smb4k.install
new file mode 100644
index 000000000..c5e097f49
--- /dev/null
+++ b/extra/smb4k/smb4k.install
@@ -0,0 +1,14 @@
+# $Id: smb4k.install,v 1.2 2009/02/23 03:09:26 travis Exp $
+# arg 1: the new package version
+post_install() {
+ echo "==> Note: To enable mounting and unmounting of smb/cifs shares as"
+ echo "==> user, you will need to issue the following command as root:"
+ echo "# chmod +s \$(which mount.cifs) \$(which umount.cifs)"
+ echo "==> These command will need to be re-run every upgrade of smbclient"
+}
+
+# arg 1: the new package version
+# arg 2: the old package version
+post_upgrade() {
+ post_install $1
+}
diff --git a/extra/smpeg/ChangeLog b/extra/smpeg/ChangeLog
new file mode 100644
index 000000000..77a784590
--- /dev/null
+++ b/extra/smpeg/ChangeLog
@@ -0,0 +1,6 @@
+2009-02-07 Eric Belanger <eric@archlinux.org>
+
+ * smpeg 0.4.4-5
+ * Added gtk and mesa optdepends (close FS#12693)
+ * FHS man pages
+ * Added ChangeLog
diff --git a/extra/smpeg/PKGBUILD b/extra/smpeg/PKGBUILD
new file mode 100644
index 000000000..46e52f304
--- /dev/null
+++ b/extra/smpeg/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 26425 2009-02-07 22:15:52Z eric $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+# Contributor: Jan de Groot <jgc@archlinux.org>
+
+pkgname=smpeg
+pkgver=0.4.4
+pkgrel=5
+pkgdesc="SDL MPEG Player Library"
+arch=('i686' 'x86_64')
+url="http://icculus.org/smpeg/"
+license=('LGPL')
+depends=('sdl')
+makedepends=('gtk' 'mesa')
+optdepends=('gtk: to use gtv ' 'mesa: to use glmovie')
+options=('!libtool' '!makeflags')
+source=(http://mirrors.dotsrc.org/lokigames/open-source/smpeg/${pkgname}-${pkgver}.tar.gz smpeg-0.4.4-gcc41.patch)
+md5sums=('59c76ac704088ef5539210190c4e1fe3' '8b979a58307d7196655758bd3d2466c4')
+sha1sums=('6d7f4449472e6270ab435b2224f3fad951c35259' '7d9a2ad7f6b702dfe3adcb87601d9b55022bbd1e')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ patch -p1 < ../smpeg-0.4.4-gcc41.patch || return 1
+ ./configure --prefix=/usr --mandir=/usr/share/man || return 1
+ make LDFLAGS+=-lstdc++ || return 1
+ make DESTDIR=${pkgdir} install || return 1
+
+ #fix aclocal warnings
+ sed -i "s#(AM_PATH_SMPEG#([AM_PATH_SMPEG]#" ${pkgdir}/usr/share/aclocal/smpeg.m4 || return 1
+}
diff --git a/extra/smpeg/smpeg-0.4.4-gcc41.patch b/extra/smpeg/smpeg-0.4.4-gcc41.patch
new file mode 100644
index 000000000..4a0eeb453
--- /dev/null
+++ b/extra/smpeg/smpeg-0.4.4-gcc41.patch
@@ -0,0 +1,41 @@
+Index: MPEGaudio.h
+===================================================================
+RCS file: /cvs/cvsroot/smpeg/MPEGaudio.h,v
+retrieving revision 1.23
+diff -u -p -r1.23 MPEGaudio.h
+--- smpeg/MPEGaudio.h 17 Jul 2001 19:52:24 -0000 1.23
++++ smpeg/MPEGaudio.h 6 Dec 2005 06:10:43 -0000
+@@ -151,12 +151,6 @@ private:
+ /* The actual MPEG audio class */
+ class MPEGaudio : public MPEGerror, public MPEGaudioaction {
+
+- friend void Play_MPEGaudioSDL(void *udata, Uint8 *stream, int len);
+- friend int Play_MPEGaudio(MPEGaudio *audio, Uint8 *stream, int len);
+-#ifdef THREADED_AUDIO
+- friend int Decode_MPEGaudio(void *udata);
+-#endif
+-
+ public:
+ MPEGaudio(MPEGstream *stream, bool initSDL = true);
+ virtual ~MPEGaudio();
+@@ -367,6 +361,20 @@ public:
+ #define N_TIMESTAMPS 5
+
+ double timestamp[N_TIMESTAMPS];
++
++ /* Functions which access MPEGaudio internals */
++ friend void Play_MPEGaudioSDL(void *udata, Uint8 *stream, int len);
++ friend int Play_MPEGaudio(MPEGaudio *audio, Uint8 *stream, int len);
++#ifdef THREADED_AUDIO
++ friend int Decode_MPEGaudio(void *udata);
++#endif
+ };
+
++/* Need to duplicate the prototypes, this is not a typo :) */
++void Play_MPEGaudioSDL(void *udata, Uint8 *stream, int len);
++int Play_MPEGaudio(MPEGaudio *audio, Uint8 *stream, int len);
++#ifdef THREADED_AUDIO
++int Decode_MPEGaudio(void *udata);
++#endif
++
+ #endif /* _MPEGAUDIO_H_ */
diff --git a/extra/smplayer-themes/ChangeLog b/extra/smplayer-themes/ChangeLog
new file mode 100644
index 000000000..3b8e487e1
--- /dev/null
+++ b/extra/smplayer-themes/ChangeLog
@@ -0,0 +1,56 @@
+2010-01-14 Ionut Biru <ionut@archlinux.ro>
+ * smplayer-themes 0.1.20-1
+ * Upstream update
+
+2009-03-13 Allan McRae <allan@archlinux.org>
+ * smplayer-themes 0.1.19-1
+ * Upstream update
+
+2008-12-20 Allan McRae <allan@archlinux.org>
+ * smplayer-themes 0.1.18-1
+ * Upstream update
+
+2008-09-27 Allan McRae <allan@archlinux.org>
+ * smplayer-themes 0.1.17-1
+ * Upstream update
+
+2008-06-22 Allan McRae <allan@archlinux.org>
+
+ * smplayer-themes 0.1.16-1
+ * Upstream update
+
+2008-05-23 Eric Belanger <eric@archlinux.org>
+
+ * smplayer-themes 0.1.15-1
+ * Upstream update
+
+2008-01-24 Varun Acharya <varun@archlinux.org>
+
+ * smplayer-themes-0.1.14-1 moved to extra
+
+2007-11-27 Alessio 'mOLOk' Bolognino <themolok@gmail.com>
+
+ * smplayer-themes-0.1.14-1
+ * version bump
+
+2007-10-24 Alessio 'mOLOk' Bolognino <themolok@gmail.com>
+
+ * smplayer-themes-0.1.13-1
+ * version bump
+
+2007-09-02 Alessio 'mOLOk' Bolognino <themolok@gmail.com>
+
+ * smplayer-themes-0.1.7-1
+ * version bump
+
+2007-07-12 Alessio 'mOLOk' Bolognino <themolok@gmail.com>
+ * smplayer-themes-0.1.3-1
+ * version bump
+
+2007-06-18 Eric Belanger (Snowman) <eric@archlinux.org>
+ * smplayer-themes-0.1.1-1
+ * fixed minor permission issue
+
+2007-05-30 Alessio 'mOLOk' Bolognino <themolok@gmail.com>
+ * smplayer-themes-0.1.1-1
+ * version bump
diff --git a/extra/smplayer-themes/PKGBUILD b/extra/smplayer-themes/PKGBUILD
new file mode 100644
index 000000000..5f7be24bb
--- /dev/null
+++ b/extra/smplayer-themes/PKGBUILD
@@ -0,0 +1,20 @@
+# $Id: PKGBUILD 63102 2010-01-14 17:20:39Z ibiru $
+# Maintainer: Allan McRae <allan@archlinux.org>
+# Contributor: Alessio 'mOLOk' Bolognino <themolok@gmail.com>
+
+pkgname=smplayer-themes
+pkgver=0.1.20
+pkgrel=1
+pkgdesc="Themes for smplayer"
+arch=('i686' 'x86_64')
+url="http://smplayer.sourceforge.net/"
+license=('GPL')
+depends=('smplayer')
+source=(http://downloads.sourceforge.net/sourceforge/smplayer/smplayer-themes-$pkgver.tar.bz2)
+md5sums=('384108911caded86306ddfdc047870ef')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make PREFIX=${pkgdir}/usr CONF_PREFIX= || return 1
+ make PREFIX=${pkgdir}/usr install
+}
diff --git a/extra/smplayer/ChangeLog b/extra/smplayer/ChangeLog
new file mode 100644
index 000000000..e8397b3ec
--- /dev/null
+++ b/extra/smplayer/ChangeLog
@@ -0,0 +1,74 @@
+2010-02-23 Ionut Biru <ibiru@archlinux.org>
+ * smplayer 0.6.9-2
+ * changed exec argument from %U to %F in smplayer.desktop
+
+2010-02-22 Ionut Biru <ibiru@archlinux.org>
+ * smplayer 0.6.9-1
+ * Upstream update
+
+2009-07-25 Allan McRae <allan@archlinux.org>
+ * smplayer 0.6.8-1
+ * Upstream update
+
+2009-03-13 Allan McRae <allan@archlinux.org>
+ * smplayer 0.6.7-1
+ * Upstream update
+
+2009-01-01 Allan McRae <allan@archlinux.org>
+ * smplayer 0.6.6-1
+ * Upstream update
+
+2008-11-14 Allan McRae <allan@archlinux.org>
+ * smplayer 0.6.5.1-1
+ * Upstream update
+
+2008-10-27 Allan McRae <allan@archlinux.org>
+ * smplayer 0.6.4-1
+ * Upstream update
+
+2008-09-27 Allan McRae <allan@archlinux.org>
+ * smplayer 0.6.3-1
+ * Upstream update
+
+2008-06-21 Allan McRae <allan@archlinux.org>
+
+ * smplayer 0.6.2-1
+ * Upstream update
+ * Removed install message
+
+2008-06-21 Allan McRae <allan@archlinux.org>
+
+ * smplayer 0.6.1-1
+ * Upstream update
+ * Removed provides/conflicts/replaces
+
+2008-05-23 Eric Belanger <eric@archlinux.org>
+
+ * smplayer 0.6.0-1
+ * Upstream update
+ * Updated .install file
+
+2008-01-32 Varun Acharya <varun@archlinux.org>
+
+ * smplayer-0.5.62-1 moved to extra, thanks molok
+ * PKGBUILD cleanup
+
+2007-11-27 Alessio 'mOLOk' Bolognino <themolok@gmail.com>
+
+ * smplayer-0.5.62-1
+ * version bump
+
+2007-10-24 Alessio 'mOLOk' Bolognino <themolok@gmail.com>
+
+ * smplayer-0.5.61-1
+ * build against qt4
+ * removed post_upgrade message
+
+2007-07-12 Alessio 'mOLOk' Bolognino <themolok@gmail.com>
+
+ * smplayer-0.5.21-1
+ * version bump
+
+2007-05-30 Alessio 'mOLOk' Bolognino <themolok@gmail.com>
+ * smplayer-0.5.0-1
+ * version bump
diff --git a/extra/smplayer/PKGBUILD b/extra/smplayer/PKGBUILD
new file mode 100644
index 000000000..1646f0c75
--- /dev/null
+++ b/extra/smplayer/PKGBUILD
@@ -0,0 +1,35 @@
+# $Id: PKGBUILD 98594 2010-11-11 17:27:01Z ibiru $
+# Maintainer : Ionut Biru <ibiru@archlinux.org>
+# Contributor: Allan McRae <allan@archlinux.org>
+# Contributor: Alessio 'mOLOk' Bolognino <themolok@gmail.com>
+# Contributor: shamrok <szamrok@gmail.com>
+
+pkgname=smplayer
+pkgver=0.6.9
+pkgrel=3
+pkgdesc="A complete front-end for MPlayer"
+arch=('i686' 'x86_64')
+url="http://smplayer.sourceforge.net/"
+license=('GPL')
+depends=('qt>=4.7.1' 'mplayer')
+source=(http://downloads.sourceforge.net/sourceforge/smplayer/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('dfe874b386509de5df78537489f95004')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ # remove broken translation
+ sed -i "s|translations/smplayer_gl.ts|#translations/smplayer_gl.ts|" src/smplayer.pro
+
+ make PREFIX=/usr
+ make PREFIX=${pkgdir}/usr install
+
+ install -dm755 ${pkgdir}/usr/share/pixmaps
+ ln -s /usr/share/icons/hicolor/64x64/apps/smplayer.png \
+ ${pkgdir}/usr/share/pixmaps/
+
+ sed -i 's|Exec=smplayer %U|Exec=smplayer %F|' ${pkgdir}/usr/share/applications/smplayer.desktop
+ sed -i 's|Exec=smplayer -add-to-playlist %U|Exec=smplayer -add-to-playlist %F|' \
+ ${pkgdir}/usr/share/applications/smplayer_enqueue.desktop
+}
+
diff --git a/extra/snarf/PKGBUILD b/extra/snarf/PKGBUILD
new file mode 100644
index 000000000..591fd1a7c
--- /dev/null
+++ b/extra/snarf/PKGBUILD
@@ -0,0 +1,20 @@
+# $Id: PKGBUILD 77998 2010-04-19 08:10:26Z dgriffiths $
+# Maintainer: dorphell <dorphell@archlinux.org>
+# Committer: Judd Vinet <jvinet@zeroflux.org>
+pkgname=snarf
+pkgver=7.0
+pkgrel=4
+pkgdesc="Command-line URL retrieval tool (http/ftp/gopher)"
+arch=(i686 x86_64)
+url="http://www.xach.com/snarf/"
+license=('GPL')
+depends=('glibc')
+source=(http://www.xach.com/snarf/download/source/${pkgname}-${pkgver}.tar.gz)
+md5sums=('7470d8457bc0d347b5cd8668c9e735c4')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr --mandir=/usr/share/man || return 1
+ make || return 1
+ make DESTDIR=${pkgdir} install || return 1
+}
diff --git a/extra/snd/PKGBUILD b/extra/snd/PKGBUILD
new file mode 100644
index 000000000..cfc281db5
--- /dev/null
+++ b/extra/snd/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 84807 2010-07-04 16:07:26Z eric $
+# Maintainer: Juergen Hoetzel <juergen@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+# Contributor: dorphell <dorphell@archlinux.org>
+
+pkgname=snd
+pkgver=11.6
+pkgrel=1
+pkgdesc="An advanced sound editor"
+arch=('i686' 'x86_64')
+url="http://ccrma.stanford.edu/software/snd/"
+license=('custom')
+depends=('lesstif' 'fam')
+source=(http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.gz)
+md5sums=('a48bb692ecba320fe6aa2e00fd6d360b')
+sha1sums=('383978c94a1f503e331f8f84b21df375fb208c27')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --without-gsl --without-fftw
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make prefix="${pkgdir}/usr" install
+ install -D -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/COPYING"
+}
diff --git a/extra/socat/PKGBUILD b/extra/socat/PKGBUILD
new file mode 100644
index 000000000..1ed30bf7f
--- /dev/null
+++ b/extra/socat/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 87629 2010-08-17 13:33:30Z bisson $
+# Maintainer:
+# Contributor: Juergen Hoetzel <juergen@archlinux.org>
+# Contributor: John Proctor <jproctor@prium.net>
+
+pkgname=socat
+pkgver=1.7.1.3
+pkgrel=1
+pkgdesc='Relay for bidirectional data transfer via socket, pty, pipe, file and more'
+arch=('i686' 'x86_64')
+license=('GPL2')
+url='http://www.dest-unreach.org/socat/'
+depends=('readline' 'openssl' 'tcp_wrappers')
+makedepends=('imake')
+source=("http://www.dest-unreach.org/socat/download/$pkgname-$pkgver.tar.gz")
+sha1sums=('5a42275da0d8a5182452b36535a74c3cdf21793b')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ ./configure --prefix=/usr \
+ --mandir=/usr/share/man
+ make depend || return 1
+ make || return 1
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make DESTDIR="$pkgdir" install || return 1
+}
diff --git a/extra/sofia-sip/PKGBUILD b/extra/sofia-sip/PKGBUILD
new file mode 100644
index 000000000..244979be8
--- /dev/null
+++ b/extra/sofia-sip/PKGBUILD
@@ -0,0 +1,21 @@
+# $Id: PKGBUILD 75544 2010-04-01 19:17:05Z ibiru $
+# Maintainer : Ionut Biru <ibiru@archlinux.org>
+# Contributor: Bjorn Lindeijer <bjorn lindeijer nl>
+pkgname=sofia-sip
+pkgver=1.12.10
+pkgrel=2
+pkgdesc="An open-source SIP User-Agent library"
+arch=('i686' 'x86_64')
+url="http://sofia-sip.sourceforge.net"
+options=('!libtool' 'zipman')
+license=('LGPL')
+depends=('glib2' 'openssl')
+source=(http://downloads.sourceforge.net/sofia-sip/$pkgname-$pkgver.tar.gz)
+md5sums=('9e07fde3ad2009e44d1100ca3950d02b')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ ./configure --prefix=/usr --with-openssl
+ make || return 1
+ make DESTDIR="$pkgdir" install
+}
diff --git a/extra/sonata/ChangeLog b/extra/sonata/ChangeLog
new file mode 100644
index 000000000..b83211d02
--- /dev/null
+++ b/extra/sonata/ChangeLog
@@ -0,0 +1,12 @@
+2009-03-30 Alexander Fehr <pizzapunk gmail com>
+
+ * sonata-1.6-1:
+ New upstream release.
+
+2008-09-15 Alexander Fehr <pizzapunk gmail com>
+
+ * sonata-1.5.3-1:
+ New upstream release.
+ New maintainer.
+ Replaced install file with optdepends.
+ Added ChangeLog.
diff --git a/extra/sonata/PKGBUILD b/extra/sonata/PKGBUILD
new file mode 100644
index 000000000..29c426a11
--- /dev/null
+++ b/extra/sonata/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: PKGBUILD 112050 2011-03-03 12:31:43Z angvp $
+# Maintainer: Angel Velasquez <angvp@archlinux.org>
+# Contributor: William Rea <sillywilly@gmail.com>
+
+pkgname=sonata
+pkgver=1.6.2.1
+pkgrel=5
+pkgdesc="Elegant GTK+ music client for MPD"
+arch=('i686' 'x86_64')
+url="http://sonata.berlios.de/"
+license=('GPL3')
+depends=('pygtk' 'python-mpd')
+optdepends=('gnome-python-extras: Enhanced system tray support'
+ 'tagpy: Metadata editing support'
+ 'zsi: Lyrics fetching support'
+ 'dbus-python: Various extra functionality (e.g. multimedia keys support)')
+source=(http://download.berlios.de/${pkgname}/${pkgname}-$pkgver.tar.gz)
+md5sums=('0b912325e7175abad3bf6c0edc071e05')
+
+build() {
+ cd "$srcdir/${pkgname}-$pkgver"
+ python2 setup.py install --prefix=/usr --root="$pkgdir"
+}
diff --git a/extra/soprano/PKGBUILD b/extra/soprano/PKGBUILD
new file mode 100644
index 000000000..24832241f
--- /dev/null
+++ b/extra/soprano/PKGBUILD
@@ -0,0 +1,33 @@
+# $Id: PKGBUILD 108617 2011-02-01 23:20:16Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=soprano
+pkgver=2.6.0
+pkgrel=1
+pkgdesc='A library which provides a highly usable object-oriented C++/Qt4 framework for RDF data'
+arch=('i686' 'x86_64')
+url='http://soprano.sourceforge.net/'
+license=('GPL' 'LGPL')
+depends=('qt' 'clucene' 'redland' 'libiodbc' 'virtuoso')
+makedepends=('cmake' 'openjdk6' 'postgresql-libs' 'libmysqlclient' 'unixodbc')
+source=("http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.bz2")
+md5sums=('03ae49e87c6ec99e57d0433c2650846f')
+
+build() {
+ cd ${srcdir}
+ mkdir build
+ cd build
+ . /etc/profile.d/openjdk6.sh
+ # we need the rpath
+ cmake ../${pkgname}-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_SKIP_RPATH=OFF \
+ -DCMAKE_INSTALL_PREFIX=/usr
+ make
+}
+
+package() {
+ cd ${srcdir}/build
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/sound-juicer/PKGBUILD b/extra/sound-juicer/PKGBUILD
new file mode 100644
index 000000000..49f8f50e3
--- /dev/null
+++ b/extra/sound-juicer/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id: PKGBUILD 110458 2011-02-19 15:59:30Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributer: Ben <contrasutra@myrealbox.com>
+
+pkgname=sound-juicer
+pkgver=2.32.0
+pkgrel=2
+pkgdesc="A cd ripper application"
+arch=(i686 x86_64)
+license=('GPL')
+depends=('libmusicbrainz3>=3.0.3' 'gnome-media>=2.32.0' 'gstreamer0.10-base-plugins' 'gstreamer0.10-good-plugins' 'brasero>=2.32.0' 'hicolor-icon-theme')
+makedepends=('intltool' 'gnome-doc-utils>=0.20.0' 'pkgconfig')
+options=(!emptydirs)
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.32/${pkgname}-${pkgver}.tar.bz2)
+groups=('gnome-extra')
+install=sound-juicer.install
+url="http://www.burtonini.com/blog/computers/sound-juicer"
+sha256sums=('f6040e19e50094daff9699dea3e9884ce3226a61f28acbe9ad3a0458975a305a')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var \
+ --disable-scrollkeeper
+ make
+ 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 sound-juicer ${pkgdir}/etc/gconf/schemas/*.schemas
+ rm -f ${pkgdir}/etc/gconf/schemas/*.schemas
+}
diff --git a/extra/sound-juicer/sound-juicer.install b/extra/sound-juicer/sound-juicer.install
new file mode 100644
index 000000000..5286a0055
--- /dev/null
+++ b/extra/sound-juicer/sound-juicer.install
@@ -0,0 +1,24 @@
+pkgname=sound-juicer
+
+post_install() {
+ usr/sbin/gconfpkg --install ${pkgname}
+ update-desktop-database -q
+ 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() {
+ update-desktop-database -q
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
diff --git a/extra/soundtouch/ChangeLog b/extra/soundtouch/ChangeLog
new file mode 100644
index 000000000..06d96ba3b
--- /dev/null
+++ b/extra/soundtouch/ChangeLog
@@ -0,0 +1,10 @@
+2010-02-06 Eric Belanger <eric@archlinux.org>
+
+ * soundtouch 1.5.0-1
+ * Upstream update
+ * Added shared libs
+
+2008-12-12 Eric Belanger <eric@archlinux.org>
+
+ * soundtouch 1.3.1-3
+ * Added to [extra] repo
diff --git a/extra/soundtouch/PKGBUILD b/extra/soundtouch/PKGBUILD
new file mode 100644
index 000000000..5a016aa63
--- /dev/null
+++ b/extra/soundtouch/PKGBUILD
@@ -0,0 +1,36 @@
+# $Id: PKGBUILD 67310 2010-02-06 08:17:47Z eric $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+# Contributor: Jaroslaw Swierczynski <swiergot@juvepoland.com>
+# Contributor: Raymano <re1212122000@yahoo.com>
+
+pkgname=soundtouch
+pkgver=1.5.0
+pkgrel=1
+pkgdesc="An audio processing library"
+arch=('i686' 'x86_64')
+url="http://www.surina.net/soundtouch/"
+license=('LGPL')
+depends=('gcc-libs')
+options=('!libtool')
+source=(http://www.surina.net/soundtouch/${pkgname}-${pkgver}.tar.gz
+ soundtouch-1.4.0-mmx-sse-compile-fix.patch
+ soundtouch-1.4.0-x86_64-asm-broken.patch)
+md5sums=('5456481d8707d2a2c27466ea64a099cb' 'f0204136c90ce4f6d4761073151eb4dc'\
+ '0d856bb5b519b18c6ba3a2e1770bdfd2')
+sha1sums=('c3e73419acec242a49a408b78c55883def937fc0' '39815091c4cb1817f8a56b8fb29fa684984514d1'\
+ '95282cca856b3b8645fadb530ce5eb892074f193')
+
+build() {
+ cd "${srcdir}/${pkgname}"
+ patch -Np1 -i "${srcdir}/soundtouch-1.4.0-mmx-sse-compile-fix.patch" || return 1
+ patch -Np1 -i "${srcdir}/soundtouch-1.4.0-x86_64-asm-broken.patch" || return 1
+ if [ "${CARCH}" = "x86_64" ]; then
+ ./configure --prefix=/usr --enable-shared --with-pic || return 1
+ else
+ ./configure --prefix=/usr --enable-shared || return 1
+ fi
+ make || return 1
+ make DESTDIR="${pkgdir}" pkgdocdir=/usr/share/doc/soundtouch install || return 1
+ # Upstream changed pkgconfig filename
+ ln -sf soundtouch-1.4.pc "${pkgdir}/usr/lib/pkgconfig/soundtouch-1.0.pc" || return 1
+}
diff --git a/extra/soundtouch/soundtouch-1.4.0-mmx-sse-compile-fix.patch b/extra/soundtouch/soundtouch-1.4.0-mmx-sse-compile-fix.patch
new file mode 100644
index 000000000..4369b178b
--- /dev/null
+++ b/extra/soundtouch/soundtouch-1.4.0-mmx-sse-compile-fix.patch
@@ -0,0 +1,14 @@
+diff -up soundtouch/source/SoundTouch/Makefile.in~ soundtouch/source/SoundTouch/Makefile.in
+--- soundtouch/source/SoundTouch/Makefile.in~ 2009-02-15 11:21:36.000000000 +0100
++++ soundtouch/source/SoundTouch/Makefile.in 2009-02-15 11:23:30.000000000 +0100
+@@ -209,7 +209,9 @@ libSoundTouch_la_SOURCES = AAFilter.cpp
+ # Note by authore: '-msse2' might not work in non-X86 compilations. If someone can
+ # fix this script to automatically check for CPU architecture, please submit a patch
+ # to me.
+-AM_CXXFLAGS = -O3 -msse2 -fcheck-new -I../../include
++AM_CXXFLAGS = -fcheck-new -I../../include
++mmx_optimized.lo : AM_CXXFLAGS = -mmmx -fcheck-new -I../../include
++sse_optimized.lo : AM_CXXFLAGS = -msse -fcheck-new -I../../include
+ all: all-am
+
+ .SUFFIXES:
diff --git a/extra/soundtouch/soundtouch-1.4.0-x86_64-asm-broken.patch b/extra/soundtouch/soundtouch-1.4.0-x86_64-asm-broken.patch
new file mode 100644
index 000000000..4c777d60e
--- /dev/null
+++ b/extra/soundtouch/soundtouch-1.4.0-x86_64-asm-broken.patch
@@ -0,0 +1,12 @@
+diff -up soundtouch/include/STTypes.h~ soundtouch/include/STTypes.h
+--- soundtouch/include/STTypes.h~ 2009-01-25 17:32:53.000000000 +0100
++++ soundtouch/include/STTypes.h 2009-02-14 22:22:37.000000000 +0100
+@@ -87,7 +87,7 @@ namespace soundtouch
+
+ #endif
+
+- #if (WIN32 || __i386__ || __x86_64__)
++ #if (WIN32 || __i386__)
+ /// Define this to allow X86-specific assembler/intrinsic optimizations.
+ /// Notice that library contains also usual C++ versions of each of these
+ /// these routines, so if you're having difficulties getting the optimized
diff --git a/extra/source-highlight/PKGBUILD b/extra/source-highlight/PKGBUILD
new file mode 100644
index 000000000..4846c97f0
--- /dev/null
+++ b/extra/source-highlight/PKGBUILD
@@ -0,0 +1,33 @@
+# $Id: PKGBUILD 111993 2011-03-02 22:17:55Z ibiru $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Douglas Soares de Andrade <douglas@archlinux.org>
+
+pkgname=source-highlight
+pkgver=3.1.4
+pkgrel=2
+pkgdesc="Convert source code to syntax highlighted document"
+arch=('i686' 'x86_64')
+url="http://www.gnu.org/software/src-highlite/"
+license=('GPL')
+depends=('gcc-libs' 'bash' 'boost-libs')
+makedepends=('ctags' 'boost')
+options=('!libtool')
+install=$pkgname.install
+source=("ftp://ftp.gnu.org/gnu/src-highlite/${pkgname}-${pkgver}.tar.gz")
+md5sums=('becf8292b84ece6b532b0f0c92b530ee')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --with-bash-completion=${pkgdir}/etc/bash_completion.d
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ make prefix="${pkgdir}/usr" install
+ rm -rf ${pkgdir}/usr/share/info/dir
+}
diff --git a/extra/source-highlight/source-highlight.install b/extra/source-highlight/source-highlight.install
new file mode 100644
index 000000000..fb764f5ed
--- /dev/null
+++ b/extra/source-highlight/source-highlight.install
@@ -0,0 +1,18 @@
+info_dir=/usr/share/info
+info_files=(source-highlight.info source-highlight-lib.info)
+
+post_install() {
+ for f in ${info_files[@]}; do
+ install-info ${info_dir}/$f.gz ${info_dir}/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install
+}
+
+pre_remove() {
+ for f in ${info_files[@]}; do
+ install-info --delete ${info_dir}/$f.gz ${info_dir}/dir 2> /dev/null
+ done
+}
diff --git a/extra/sox/PKGBUILD b/extra/sox/PKGBUILD
new file mode 100644
index 000000000..ce7768a7a
--- /dev/null
+++ b/extra/sox/PKGBUILD
@@ -0,0 +1,35 @@
+# $Id: PKGBUILD 117296 2011-03-30 18:17:00Z schiv $
+# Maintainer: Eric Bélanger <eric@archlinux.org>
+
+pkgname=sox
+pkgver=14.3.2
+pkgrel=2
+pkgdesc="The Swiss Army knife of sound processing tools"
+arch=('i686' 'x86_64')
+url="http://sox.sourceforge.net/"
+license=('GPL' 'LGPL')
+depends=('libtool' 'file' 'libsndfile' 'libpng' 'lame' 'opencore-amr')
+makedepends=('ffmpeg' 'libao' 'libmad' 'libid3tag' 'wavpack')
+optdepends=('libao: for ao plugin'
+ 'ffmpeg: for ffmpeg plugin'
+ 'libmad: for mp3 plugin'
+ 'libid3tag: for mp3 plugin'
+ 'wavpack: for wavpack plugin')
+options=('!libtool')
+source=(http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('f6e1999b05d9b0cc9bb47ce8d3208dee')
+sha1sums=('026636c90d7accba76225a2821aaa2ffa6fe41a3')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --with-dyn-default --with-distro="Arch Linux"
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+ ln -sf play "${pkgdir}/usr/bin/rec"
+ ln -sf ../man1/sox.1.gz "${pkgdir}/usr/share/man/man7/soxeffect.7"
+}
diff --git a/extra/spamassassin/PKGBUILD b/extra/spamassassin/PKGBUILD
new file mode 100644
index 000000000..5559ec48e
--- /dev/null
+++ b/extra/spamassassin/PKGBUILD
@@ -0,0 +1,51 @@
+# $Id: PKGBUILD 106385 2011-01-16 17:09:43Z angvp $
+# Maintainer: Dale Blount <dale@archlinux.org>
+# Contributor: Manolis Tzanidakis
+
+pkgname=spamassassin
+pkgver=3.3.1
+pkgrel=4
+pkgdesc="A mail filter to identify spam."
+arch=(i686 x86_64)
+license=(APACHE)
+url="http://spamassassin.apache.org"
+depends=('perl>=5.12.2' 'perl-net-dns' 'perl-uri' 'perl-html-parser' \
+ 'perl-digest-sha1' 'perl-io-socket-ssl' 'openssl' \
+ 'perl-libwww' 'perl-io-zlib' 'perl-mail-spf' \
+ 'perl-archive-tar' 'zlib' 're2c')
+makedepends=('razor' 'perl-dbi')
+optdepends=('razor: to identify collaborately-flagged spam'
+ 'gnupg: gpg support, without this use --nogpg flag for sa-update'
+ 're2c: regexp compiler, for compiling rules with sa-compile')
+backup=(etc/conf.d/spamd etc/mail/spamassassin/local.cf \
+ etc/mail/spamassassin/init.pre \
+ etc/mail/spamassassin/v310.pre \
+ etc/mail/spamassassin/v312.pre \
+ etc/mail/spamassassin/v320.pre)
+install=${pkgname}.install
+options=(!emptydirs)
+source=(http://mirrors.devlib.org/apache/${pkgname}/source/Mail-SpamAssassin-${pkgver}.tar.gz \
+ spamd.conf.d spamd)
+md5sums=('5a93f81fda315411560ff5da099382d2'
+ 'af501c6b0bb937a2775b747cc4b6d150'
+ '0534d3071a526a27ddc2b297afa03b04')
+
+build() {
+ cd ${srcdir}/Mail-SpamAssassin-${pkgver}
+
+ # install module in vendor directories.
+ PERL_MM_USE_DEFAULT=1 /usr/bin/perl Makefile.PL INSTALLDIRS=vendor \
+ CONTACT_ADDRESS=root@localhost ENABLE_SSL=yes PERL_TAINT=no
+ /usr/bin/make
+}
+
+package() {
+ cd ${srcdir}/Mail-SpamAssassin-${pkgver}
+ /usr/bin/make DESTDIR=${pkgdir} install
+ # remove perllocal.pod and .packlist
+ find ${pkgdir} -name perllocal.pod -delete
+ find ${pkgdir} -name .packlist -delete
+
+ /bin/install -D -m644 ${srcdir}/spamd.conf.d ${pkgdir}/etc/conf.d/spamd
+ /bin/install -D -m755 ${srcdir}/spamd ${pkgdir}/etc/rc.d/spamd
+}
diff --git a/extra/spamassassin/spamassassin.install b/extra/spamassassin/spamassassin.install
new file mode 100644
index 000000000..5109956c9
--- /dev/null
+++ b/extra/spamassassin/spamassassin.install
@@ -0,0 +1,25 @@
+# arg 1: the new package version
+post_install() {
+ echo "You must run 'sa-update' to install spam rules before use."
+ /bin/true
+}
+
+# arg 1: the new package version
+# arg 2: the old package version
+post_upgrade() {
+ # Compile rules, if rules have previously been compiled, and it's possible
+ if [ -x /usr/bin/re2c -a -x /usr/bin/perlbin/vendor/sa-compile -a -d /var/lib/spamassassin/compiled ]; then
+ echo "Detected compiled rules, running sa-compile..."
+ sa-compile > /dev/null 2>&1
+fi
+}
+
+# arg 1: the old package version
+pre_remove() {
+ /bin/true
+}
+
+# arg 1: the old package version
+post_remove() {
+ /bin/true
+}
diff --git a/extra/spamassassin/spamd b/extra/spamassassin/spamd
new file mode 100644
index 000000000..11d35f7cd
--- /dev/null
+++ b/extra/spamassassin/spamd
@@ -0,0 +1,49 @@
+#!/bin/bash
+
+# source application-specific settings
+[ -f /etc/conf.d/spamd ] && . /etc/conf.d/spamd
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+PID=`pidof -o %PPID /usr/bin/vendor_perl/spamd`
+case "$1" in
+ start)
+ stat_busy "Starting spamd"
+ [ -z "$PID" ] && /usr/bin/vendor_perl/spamd -d ${SPAMD_OPTS}
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon spamd
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping spamd"
+ [ ! -z "$PID" ] && kill $PID &> /dev/null
+ if [ $? -gt 0 ]; then
+ # Some users report that a second attempt at stopping the process
+ # works. So, take a little nap and give it another whirl...
+ sleep 2
+ kill $PID &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon spamd
+ stat_done
+ fi
+ else
+ rm_daemon spamd
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 3
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
+# vim: ts=2 sw=2 et ft=sh
diff --git a/extra/spamassassin/spamd.conf.d b/extra/spamassassin/spamd.conf.d
new file mode 100644
index 000000000..4295e0073
--- /dev/null
+++ b/extra/spamassassin/spamd.conf.d
@@ -0,0 +1 @@
+SPAMD_OPTS="-c"
diff --git a/extra/spassgen/PKGBUILD b/extra/spassgen/PKGBUILD
new file mode 100644
index 000000000..653a51f57
--- /dev/null
+++ b/extra/spassgen/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 77993 2010-04-19 08:07:51Z dgriffiths $
+# Maintainer : Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=spassgen
+pkgver=1.5
+pkgrel=7
+pkgdesc="A small program that generates passwords"
+arch=(i686 x86_64)
+url="http://spassgen.sourceforge.net/"
+license=('GPL2')
+depends=('qt3')
+options=('!makeflags')
+source=(http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('ed019dda56551fb860c74016baa91fa4')
+
+build() {
+ cd ${srcdir}/${pkgname}
+ . /etc/profile.d/qt3.sh
+ qmake -project spassgen.pro || return 1
+ qmake || return 1
+ make || return 1
+ install -d ${pkgdir}/opt/kde/{bin,share/icons/crystalsvg}
+ install -m755 spassgen ${pkgdir}/opt/kde/bin/spassgen || return 1
+ cd icons
+ cp -r * ${pkgdir}/opt/kde/share/icons/crystalsvg || return 1
+ rm -r ${pkgdir}/opt/kde/share/icons/crystalsvg/16x16/.xvpics
+ }
diff --git a/extra/speech-dispatcher/PKGBUILD b/extra/speech-dispatcher/PKGBUILD
new file mode 100644
index 000000000..c0269f941
--- /dev/null
+++ b/extra/speech-dispatcher/PKGBUILD
@@ -0,0 +1,68 @@
+# $Id: PKGBUILD 110767 2011-02-22 05:28:34Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Steve Holmes <steve.holmes88@gmail.com>
+# Contributor: Alexander Jenisch <nt@divzero.at>
+# Contributor: Chris Brannon <cmbrannon@cox.net>
+# Contributor: Andreas Messer <andi@bupfen.de>
+
+pkgname=speech-dispatcher
+pkgver=0.7.1
+pkgrel=5
+arch=('i686' 'x86_64')
+pkgdesc="High-level device independent layer for speech synthesis interface"
+url="http://www.freebsoft.org/speechd"
+license=('GPL2' 'FDL')
+depends=('glib2' 'python2' 'dotconf' 'texinfo' 'libpulse')
+makedepends=('pkgconfig' 'espeak')
+optdepends=('festival: Speech output using Festival'
+ 'espeak: Speech output using ESpeak'
+ 'pulseaudio: PulseAudio support')
+provides=("speechd=${pkgver}")
+options=('!libtool')
+backup=(etc/speech-dispatcher/clients/gnome-speech.conf
+ etc/speech-dispatcher/clients/emacs.conf
+ etc/speech-dispatcher/modules/ibmtts.conf
+ etc/speech-dispatcher/modules/espeak-generic.conf
+ etc/speech-dispatcher/modules/espeak.conf
+ etc/speech-dispatcher/modules/swift-generic.conf
+ etc/speech-dispatcher/modules/festival.conf
+ etc/speech-dispatcher/modules/cicero.conf
+ etc/speech-dispatcher/modules/espeak-mbrola-generic.conf
+ etc/speech-dispatcher/modules/dtk-generic.conf
+ etc/speech-dispatcher/modules/llia_phon-generic.conf
+ etc/speech-dispatcher/modules/ivona.conf
+ etc/speech-dispatcher/modules/epos-generic.conf
+ etc/speech-dispatcher/modules/flite.conf
+ etc/speech-dispatcher/speechd.conf)
+install="${pkgname}.install"
+source=("http://www.freebsoft.org/pub/projects/speechd/$pkgname-$pkgver.tar.gz"
+ 'speechd.sh')
+md5sums=('ccfc30ac006673d36b4223eb760ed696'
+ '858293f464b83f03f3b6bb796291c71d')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --without-flite
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR=${pkgdir} install
+
+ install -Dm755 ${srcdir}/speechd.sh ${pkgdir}/etc/rc.d/speechd
+ install -d ${pkgdir}/var/log/speech-dispatcher
+
+ # Fix spd-conf to use python 2.7
+ sed -i -e 's|#!/usr/bin/python|#!/usr/bin/python2|' ${pkgdir}/usr/bin/spd-conf
+ sed -i -e 's|#!/usr/bin/env python|#!/usr/bin/env python2|' ${pkgdir}/usr/lib/python2.7/site-packages/speechd/_test.py
+
+ rm -f ${pkgdir}/usr/share/info/dir
+ gzip -9nf ${pkgdir}/usr/share/info/*
+
+ # Remove conflicts with erlang (FS#21674)
+ rm -r ${pkgdir}/usr/bin/run_test
+}
diff --git a/extra/speech-dispatcher/speech-dispatcher.install b/extra/speech-dispatcher/speech-dispatcher.install
new file mode 100644
index 000000000..17e273bed
--- /dev/null
+++ b/extra/speech-dispatcher/speech-dispatcher.install
@@ -0,0 +1,21 @@
+info_dir=/usr/share/info
+info_files=('speech-dispatcher.info'
+ 'speech-dispatcher-cs.info'
+ 'ssip.info'
+ 'spd-say.info')
+
+post_install() {
+ for f in ${info_files[@]}; do
+ install-info ${info_dir}/$f.gz ${info_dir}/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install
+}
+
+pre_remove() {
+ for f in ${info_files[@]}; do
+ install-info --delete ${info_dir}/$f.gz ${info_dir}/dir 2> /dev/null
+ done
+}
diff --git a/extra/speech-dispatcher/speechd.sh b/extra/speech-dispatcher/speechd.sh
new file mode 100644
index 000000000..eb44198cb
--- /dev/null
+++ b/extra/speech-dispatcher/speechd.sh
@@ -0,0 +1,37 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+PID=$(pidof -o %PPID /usr/bin/speech-dispatcher)
+case "$1" in
+ start)
+ stat_busy "Starting speech dispatcher Daemon"
+ [ -z "$PID" ] && /usr/bin/speech-dispatcher -d &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon speechd
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping speech dispatcher Daemon"
+ [ ! -z "$PID" ] && kill $PID &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon speechd
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+
+exit 0
diff --git a/extra/speedcrunch/PKGBUILD b/extra/speedcrunch/PKGBUILD
new file mode 100644
index 000000000..5b78123d8
--- /dev/null
+++ b/extra/speedcrunch/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 67114 2010-02-03 16:04:47Z andrea $
+# Maintainer:
+# Contributor: Ronald van Haren <ronald.archlinux.org>
+
+pkgname=speedcrunch
+pkgver=0.10.1
+pkgrel=2
+pkgdesc="Simple but powerful calculator using Qt"
+url="http://speedcrunch.org/"
+arch=('i686' 'x86_64')
+depends=('qt')
+makedepends=('cmake')
+license=('GPL2')
+source=(http://speedcrunch.googlecode.com/files/$pkgname-$pkgver.tar.gz)
+md5sums=('344ee1303b05502d28c58a2fff1ca6b2')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver/src
+ cmake . -DCMAKE_INSTALL_PREFIX=/usr || return 1
+ make || return 1
+
+ # fix make install issue
+ lrelease speedcrunch.pro
+ make DESTDIR=$pkgdir install
+}
diff --git a/extra/speedtouch/PKGBUILD b/extra/speedtouch/PKGBUILD
new file mode 100644
index 000000000..bdd98eb90
--- /dev/null
+++ b/extra/speedtouch/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 77988 2010-04-19 08:04:32Z dgriffiths $
+# Maintainer: dorphell <dorphell@archlinux.org>
+# Contributor: Aurelien Foret <orelien@chez.com>
+
+pkgname=speedtouch
+pkgver=1.3.1
+pkgrel=3
+pkgdesc="Driver for the ADSL Speed Touch USB modem"
+arch=('i686' 'x86_64')
+url="http://speedtouch.sourceforge.net/"
+license=('GPL')
+depends=('bash')
+source=(http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.bz2
+ speedtouch-1.3.1-gcc4.patch)
+md5sums=('0848a120ae0eeab6c8ab378e11dc4fa2'
+ '4191035925db745944c75e26937c42a3')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ patch -p1 < ../speedtouch-1.3.1-gcc4.patch || return 1
+ ./configure --prefix=/usr --sysconfdir=/etc --mandir=/usr/share/man || return 1
+ make || return 1
+ make prefix=${pkgdir}/usr sysconfdir=${pkgdir}/etc mandir=${pkgdir}/usr/share/man install || return 1
+}
diff --git a/extra/speedtouch/speedtouch-1.3.1-gcc4.patch b/extra/speedtouch/speedtouch-1.3.1-gcc4.patch
new file mode 100644
index 000000000..bdd323c50
--- /dev/null
+++ b/extra/speedtouch/speedtouch-1.3.1-gcc4.patch
@@ -0,0 +1,11 @@
+--- speedtouch-1.3.1/src/modem.h 2004-09-29 21:56:31.000000000 +0100
++++ speedtouch-1.3.1-gcc4/src/modem.h 2005-07-21 07:15:03.000000000 +0100
+@@ -38,7 +38,4 @@
+ #define EP_CODE_IN 0x85
+ #define EP_CODE_OUT 0x05
+
+-/* Global Variables */
+-extern int verbose;
+-
+ #endif
+ \ No newline at end of file
diff --git a/extra/speex/PKGBUILD b/extra/speex/PKGBUILD
new file mode 100644
index 000000000..672dc9887
--- /dev/null
+++ b/extra/speex/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 7447 2008-08-02 04:56:05Z eric $
+# Contributer: Jason Chu <jason@archlinux.org>
+# Maintainer: Jason Chu <jason@archlinux.org>
+
+pkgname=speex
+pkgver=1.2rc1
+pkgrel=1
+pkgdesc="A free codec for free speech"
+arch=('i686' 'x86_64')
+license=('BSD')
+depends=('libogg')
+options=('!libtool')
+source=(http://downloads.us.xiph.org/releases/$pkgname/$pkgname-$pkgver.tar.gz)
+md5sums=('c4438b22c08e5811ff10e2b06ee9b9ae')
+url="http://www.speex.org/"
+
+build() {
+ cd $startdir/src/speex-$pkgver
+ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var
+ make || return 1
+ make DESTDIR=$startdir/pkg install
+ #to fix kde detection
+ cp $startdir/pkg/usr/include/speex/* $startdir/pkg/usr/include/
+ install -D -m644 COPYING $startdir/pkg/usr/share/licenses/$pkgname/LICENSE
+}
diff --git a/extra/squeeze/PKGBUILD b/extra/squeeze/PKGBUILD
new file mode 100644
index 000000000..ad6b7ae74
--- /dev/null
+++ b/extra/squeeze/PKGBUILD
@@ -0,0 +1,45 @@
+# $Id: PKGBUILD 105853 2011-01-13 13:09:13Z andyrtr $
+# Maintainer: AndyRTR <andyrtr@archlinux.org>
+# Contributor: David Keogh <davekeogh@shaw.ca>
+
+pkgname=squeeze
+pkgver=0.2.3
+pkgrel=4
+pkgdesc="Squeeze is a modern and advanced archive manager for the Xfce Desktop Environment."
+arch=('i686' 'x86_64')
+license=('GPL2')
+url="http://squeeze.xfce.org/"
+groups=('xfce4-goodies')
+depends=('thunar-vfs' 'desktop-file-utils' 'hicolor-icon-theme')
+makedepends=('pkgconfig' 'tar' 'desktop-file-utils')
+optdepends=('tar: TAR support'
+ 'gzip: GZIP support'
+ 'bzip2: BZIP2 support'
+ 'zip: ZIP support'
+ 'unzip: ZIP support'
+ 'unrar: RAR support'
+ 'p7zip: 7z support'
+ 'arj: ARJ support'
+ 'lha: LHA support'
+ 'lzma-utils: LZMA support'
+ 'lzop: LZOP support')
+options=('!libtool')
+conflicts=('squeeze-svn')
+install=${pkgname}.install
+source=(http://squeeze.xfce.org/downloads/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('bd3cb0648b49be1f146fc4f675606176')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --libexecdir=/usr/lib/xfce4 \
+ --localstatedir=/var \
+ --disable-static \
+ --disable-debug
+ make
+}
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/squeeze/squeeze.install b/extra/squeeze/squeeze.install
new file mode 100644
index 000000000..709ad81f2
--- /dev/null
+++ b/extra/squeeze/squeeze.install
@@ -0,0 +1,12 @@
+post_install() {
+ update-desktop-database -q
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ post_install $1
+}
diff --git a/extra/squid/PKGBUILD b/extra/squid/PKGBUILD
new file mode 100644
index 000000000..ab4cca63d
--- /dev/null
+++ b/extra/squid/PKGBUILD
@@ -0,0 +1,62 @@
+# $Id: PKGBUILD 79502 2010-05-04 00:58:56Z kevin $
+# Maintainer: Kevin Piche <kevin@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=squid
+pkgver=2.7.STABLE9
+pkgrel=1
+pkgdesc="A full-featured Web proxy cache server."
+arch=(i686 x86_64)
+url="http://www.squid-cache.org"
+depends=('openssl' 'pam' 'cron' 'perl')
+makedepends=('libcap>=2.16')
+license=('GPL')
+backup=(etc/squid/squid.conf etc/squid/mime.conf etc/conf.d/squid)
+install=${pkgname}.install
+source=(http://www.squid-cache.org/Versions/v2/2.7/${pkgname}-${pkgver}.tar.bz2
+ squid-makefiles.patch squid squid.conf.d squid.pam
+ squid.cron fix-for-new-cap-headers.patch)
+md5sums=('3c6642c85470b1079207d43bba25a819'
+ '082e53bb6e2c79bc44ac95c3d69145da'
+ 'd213b0cc1db72b749bb8c88716fdab39'
+ '81f9a446d143f42c6a3f30304e91c39f'
+ '270977cdd9b47ef44c0c427ab9034777'
+ '5e17df989e2a74e869790c066f61225b'
+ '9b7586646c8a81730029798895a0eaca')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ patch -Np1 -i ${srcdir}/squid-makefiles.patch || return 1
+
+ ./configure --prefix=/usr --datadir=/usr/share/squid \
+ --sysconfdir=/etc/squid --libexecdir=/usr/lib/squid \
+ --localstatedir=/var --enable-auth="basic,digest,ntlm" \
+ --enable-removal-policies="lru,heap" \
+ --enable-digest-auth-helpers="password" \
+ --enable-storeio="aufs,ufs,diskd,coss,null" \
+ --enable-basic-auth-helpers="getpwnam,YP,NCSA,SMB,MSNT,PAM,multi-domain-NTLM" \
+ --enable-external-acl-helpers="ip_user,unix_group,wbinfo_group" \
+ --enable-ntlm-auth-helpers="SMB,fakeauth,no_check" \
+ --enable-delay-pools --enable-arp-acl --enable-ssl --enable-snmp \
+ --enable-linux-netfilter --enable-ident-lookups \
+ --enable-useragent-log --enable-cache-digests --enable-referer-log \
+ --enable-async-io --enable-truncate --enable-arp-acl \
+ --enable-htcp --enable-carp --enable-epoll --with-maxfd=4096
+ --with-large-files
+#some versions have build problems with both async and truncate enabled:
+# --enable-async-io --enable-arp-acl \
+
+ make || return 1
+ make DESTDIR=${pkgdir} install || return 1
+ rm -rf ${pkgdir}/var
+ mv ${pkgdir}/usr/bin/Run* ${pkgdir}/usr/lib/squid
+ mkdir -p ${pkgdir}/var/cache/squid
+ mkdir -p ${pkgdir}/var/log/squid
+ install -D -m755 ${srcdir}/squid ${pkgdir}/etc/rc.d/squid
+ install -D -m755 ${srcdir}/squid.cron ${pkgdir}/etc/cron.weekly/squid
+ install -D -m644 ${srcdir}/squid.conf.d ${pkgdir}/etc/conf.d/squid
+ install -D -m644 ${srcdir}/squid.pam ${pkgdir}/etc/pam.d/squid
+ install -D -m644 ${pkgdir}/etc/squid/squid.conf \
+ ${pkgdir}/etc/squid/squid.conf.default
+}
+# vim: ts=2 sw=2 et ft=sh
diff --git a/extra/squid/fix-for-new-cap-headers.patch b/extra/squid/fix-for-new-cap-headers.patch
new file mode 100644
index 000000000..ce24681e8
--- /dev/null
+++ b/extra/squid/fix-for-new-cap-headers.patch
@@ -0,0 +1,14 @@
+--- src/tools.c.orig 2009-11-02 10:54:49.000000000 -0500
++++ src/tools.c 2009-11-02 10:55:05.000000000 -0500
+@@ -44,9 +44,9 @@
+ #if HAVE_SYS_CAPABILITY_H
+ #undef _POSIX_SOURCE
+ /* Ugly glue to get around linux header madness colliding with glibc */
+-#define _LINUX_TYPES_H
++/*#define _LINUX_TYPES_H*/
+ #define _LINUX_FS_H
+-typedef uint32_t __u32;
++/*typedef uint32_t __u32;*/
+ #include <sys/capability.h>
+ #endif
+ #endif
diff --git a/extra/squid/squid b/extra/squid/squid
new file mode 100644
index 000000000..2df1fc72d
--- /dev/null
+++ b/extra/squid/squid
@@ -0,0 +1,52 @@
+#!/bin/bash
+
+# source application-specific settings
+SQUID_ARGS=
+[ -f /etc/conf.d/squid ] && . /etc/conf.d/squid
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+PID=`pidof -o %PPID /usr/sbin/squid`
+case "$1" in
+
+ start)
+ if [ ! -f /var/cache/squid/swap.state ]; then
+ stat_busy "Creating squid's swap directories"
+ /usr/sbin/squid -z
+ fi
+ stat_busy "Starting squid"
+ [ -z "$PID" ] && /usr/sbin/squid ${SQUID_ARGS}
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon squid
+ stat_done
+ fi
+ ;;
+
+ stop)
+ stat_busy "Stopping squid"
+ [ ! -z "$PID" ] && /usr/sbin/squid -k shutdown &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ # wait for squid to shutdown so we can safely do a restart
+ while [ ! -z "`pidof -o %PPID /usr/sbin/squid`" ]; do
+ stat_append "."
+ sleep 3
+ done
+ rm_daemon squid
+ stat_done
+ fi
+ ;;
+
+ restart)
+ $0 stop
+ sleep 5
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
diff --git a/extra/squid/squid-makefiles.patch b/extra/squid/squid-makefiles.patch
new file mode 100644
index 000000000..4cefb89a0
--- /dev/null
+++ b/extra/squid/squid-makefiles.patch
@@ -0,0 +1,53 @@
+diff -Naur squid-2.7.STABLE2-orig/helpers/basic_auth/SMB/Makefile.in squid-2.7.STABLE2/helpers/basic_auth/SMB/Makefile.in
+--- squid-2.7.STABLE2-orig/helpers/basic_auth/SMB/Makefile.in 2007-11-11 20:14:01.000000000 -0500
++++ squid-2.7.STABLE2/helpers/basic_auth/SMB/Makefile.in 2008-06-09 21:32:52.000000000 -0400
+@@ -268,7 +268,7 @@
+ sysconfdir = @sysconfdir@
+ target_alias = @target_alias@
+ SMB_AUTH_HELPER = smb_auth.sh
+-SAMBAPREFIX = /usr/local/samba
++SAMBAPREFIX = /usr
+ SMB_AUTH_HELPER_PATH = $(libexecdir)/$(SMB_AUTH_HELPER)
+ libexec_SCRIPTS = $(SMB_AUTH_HELPER)
+ smb_auth_CFLAGS = -DSAMBAPREFIX=\"$(SAMBAPREFIX)\" -DHELPERSCRIPT=\"$(SMB_AUTH_HELPER_PATH)\"
+diff -Naur squid-2.7.STABLE2-orig/src/Makefile.in squid-2.7.STABLE2/src/Makefile.in
+--- squid-2.7.STABLE2-orig/src/Makefile.in 2008-01-02 20:16:40.000000000 -0500
++++ squid-2.7.STABLE2/src/Makefile.in 2008-06-09 21:34:39.000000000 -0400
+@@ -653,13 +653,13 @@
+ DEFAULT_CONFIG_FILE = $(sysconfdir)/squid.conf
+ DEFAULT_MIME_TABLE = $(sysconfdir)/mime.conf
+ DEFAULT_DNSSERVER = $(libexecdir)/`echo dnsserver | sed '$(transform);s/$$/$(EXEEXT)/'`
+-DEFAULT_LOG_PREFIX = $(localstatedir)/logs
++DEFAULT_LOG_PREFIX = $(localstatedir)/log/squid
+ DEFAULT_CACHE_LOG = $(DEFAULT_LOG_PREFIX)/cache.log
+ DEFAULT_ACCESS_LOG = $(DEFAULT_LOG_PREFIX)/access.log
+ DEFAULT_STORE_LOG = $(DEFAULT_LOG_PREFIX)/store.log
+-DEFAULT_PID_FILE = $(DEFAULT_LOG_PREFIX)/squid.pid
++DEFAULT_PID_FILE = $(localstatedir)/run/squid.pid
+ DEFAULT_NETDB_FILE = $(DEFAULT_LOG_PREFIX)/netdb.state
+-DEFAULT_SWAP_DIR = $(localstatedir)/cache
++DEFAULT_SWAP_DIR = $(localstatedir)/cache/squid
+ DEFAULT_PINGER = $(libexecdir)/`echo pinger | sed '$(transform);s/$$/$(EXEEXT)/'`
+ DEFAULT_UNLINKD = $(libexecdir)/`echo unlinkd | sed '$(transform);s/$$/$(EXEEXT)/'`
+ DEFAULT_DISKD = $(libexecdir)/`echo diskd-daemon | sed '$(transform);s/$$/$(EXEEXT)/'`
+diff -Naur squid-2.7.STABLE2-orig/src/cf.data.pre squid-2.7.STABLE2/src/cf.data.pre
+--- squid-2.7.STABLE2-orig/src/cf.data.pre 2008-05-31 16:49:45.000000000 -0400
++++ squid-2.7.STABLE2/src/cf.data.pre 2008-06-09 21:35:43.000000000 -0400
+@@ -3749,7 +3749,7 @@
+
+ NAME: cache_effective_user
+ TYPE: string
+-DEFAULT: nobody
++DEFAULT: proxy
+ LOC: Config.effectiveUser
+ DOC_START
+ If you start Squid as root, it will change its effective/real
+@@ -3763,7 +3763,7 @@
+
+ NAME: cache_effective_group
+ TYPE: string
+-DEFAULT: none
++DEFAULT: proxy
+ LOC: Config.effectiveGroup
+ DOC_START
+ If you want Squid to run with a specific GID regardless of
diff --git a/extra/squid/squid.conf.d b/extra/squid/squid.conf.d
new file mode 100644
index 000000000..b41916a1d
--- /dev/null
+++ b/extra/squid/squid.conf.d
@@ -0,0 +1,4 @@
+#
+# Parameters to be passed to squid
+#
+SQUID_ARGS="-D -sYC"
diff --git a/extra/squid/squid.cron b/extra/squid/squid.cron
new file mode 100644
index 000000000..c2b5bc9ce
--- /dev/null
+++ b/extra/squid/squid.cron
@@ -0,0 +1,4 @@
+#!/bin/bash
+
+PID=`pidof -o %PPID /usr/sbin/squid`
+[ -n "$PID" ] && /usr/sbin/squid -k rotate
diff --git a/extra/squid/squid.install b/extra/squid/squid.install
new file mode 100644
index 000000000..85776358c
--- /dev/null
+++ b/extra/squid/squid.install
@@ -0,0 +1,28 @@
+post_install() {
+ if [ -z "$(grep ^proxy: /etc/group)" ]; then
+ usr/sbin/groupadd -g 15 proxy &>/dev/null
+ fi
+
+ id proxy &>/dev/null || \
+ usr/sbin/useradd -u 15 -g proxy -d /var/empty proxy
+
+ chown proxy.proxy var/{cache,log}/squid
+
+ cat << EOF
+Release notes for version 2.7:
+ http://www.squid-cache.org/Versions/v2/2.7/RELEASENOTES.html
+
+EOF
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ usr/sbin/userdel proxy &> /dev/null
+ if [ ! -z "$(grep ^proxy: /etc/group)" ]; then
+ usr/sbin/groupdel proxy &>/dev/null
+ fi
+}
+
diff --git a/extra/squid/squid.pam b/extra/squid/squid.pam
new file mode 100644
index 000000000..df8a8104f
--- /dev/null
+++ b/extra/squid/squid.pam
@@ -0,0 +1,4 @@
+#/etc/pam.d/squid
+#
+auth required pam_unix.so
+account required pam_unix.so
diff --git a/extra/squirrelmail/PKGBUILD b/extra/squirrelmail/PKGBUILD
new file mode 100644
index 000000000..dcdb822f5
--- /dev/null
+++ b/extra/squirrelmail/PKGBUILD
@@ -0,0 +1,50 @@
+# $Id: PKGBUILD 71649 2010-03-07 23:43:31Z paul $
+# Maintainer: Paul Mattal <paul@archlinux.org>
+# Contributor: Manolis Tzanidakis <manolis@archlinux.org>
+
+pkgname=squirrelmail
+pkgver=1.4.20
+pkgrel=1
+pkgdesc="Webmail for Nuts!"
+arch=(i686 x86_64)
+license=('GPL')
+url="http://www.squirrelmail.org"
+depends=('php' 'perl' 'imap-server')
+makedepends=('findutils')
+backup=(srv/http/squirrelmail/.htaccess srv/http/squirrelmail/config/config.php)
+install=$pkgname.install
+source=(http://superb-sea2.dl.sf.net/sourceforge/$pkgname/$pkgname-$pkgver.tar.gz)
+md5sums=('60ffedc61b295650c7695c2b74209294')
+
+build() {
+ # install
+ mkdir -p $startdir/pkg/srv/http/squirrelmail || return 1
+ cd $startdir/pkg/srv/http/squirrelmail || return 1
+ cp -a $startdir/src/squirrelmail-$pkgver/* . || return 1
+
+ # remove CVS dirs
+ find $startdir/pkg -type d -name CVS -exec rm -rf {} \; || return 1
+
+ # customize config (data and attachments in /var/lib/squirrelmail)
+ cd config || return 1
+ cp -p config_default.php config.php || return 1
+ sed -i 's|^$attachment_dir = $data_dir;|$attachment_dir = "/var/lib/squirrelmail/attachments";|' config.php || return 1
+ sed -i 's|^$data_dir = "/var/local/squirrelmail/data";|$data_dir = "/var/lib/squirrelmail/data";|' config.php || return 1
+
+ # create data and attachments directories, set ownership/permissions
+ # ideally we would set attachments differently to root:-1 with 0730, but
+ # I don't know how to get chgrp to take "-1" properly; perhaps someday
+ # I'll figure out how to make this work
+ mkdir -p $startdir/pkg/var/lib/squirrelmail/{data,attachments} || return 1
+ chown -R http:http $startdir/pkg/var/lib/squirrelmail/data \
+ || return 1
+ chown -R http:http $startdir/pkg/var/lib/squirrelmail/attachments \
+ || return 1
+ chmod 0700 $startdir/pkg/var/lib/squirrelmail/data || return 1
+ chmod 0300 $startdir/pkg/var/lib/squirrelmail/attachments || return 1
+
+ # restrict access to squirrelmail by default
+ echo "deny from all" >$startdir/pkg/srv/http/squirrelmail/.htaccess \
+ || return 1
+}
+# vim: ts=2 sw=2 et ft=sh
diff --git a/extra/squirrelmail/squirrelmail.install b/extra/squirrelmail/squirrelmail.install
new file mode 100644
index 000000000..06f411f16
--- /dev/null
+++ b/extra/squirrelmail/squirrelmail.install
@@ -0,0 +1,34 @@
+post_install() {
+ /bin/cat <<THEEND
+
+NOTE
+----
+To configure squirrelmail :
+$ cd /srv/http/squirrelmail/config
+$ perl conf.pl
+
+Make sure to check the documentation on its webpage for more details,
+especially about securing your setup. The default attachments dir
+has been placed in /var/lib/squirrelmail/attachments.
+
+Also make sure your php module is loaded in your Apache config.
+
+THEEND
+}
+
+post_upgrade() {
+ /bin/true
+}
+
+pre_remove() {
+ /bin/true
+}
+
+post_remove() {
+ /bin/true
+}
+
+op=$1
+shift
+
+$op $*
diff --git a/extra/srm/PKGBUILD b/extra/srm/PKGBUILD
new file mode 100644
index 000000000..8609ada5b
--- /dev/null
+++ b/extra/srm/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: PKGBUILD 100939 2010-11-26 19:52:12Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=srm
+pkgver=1.2.11
+pkgrel=1
+pkgdesc="A secure replacement for rm(1) that overwrites data before unlinking"
+arch=('i686' 'x86_64')
+url="http://srm.sourceforge.net/"
+license=('custom')
+depends=('glibc')
+source=(http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('ee8269be18de6bbd3f74252d6e3039fe')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ ./configure --prefix=/usr
+ make || return 1
+ make prefix="${pkgdir}/usr" install || return 1
+ install -Dm644 COPYING "${pkgdir}/usr/share/licenses/srm/LICENSE" || return 1
+}
diff --git a/extra/sshfs/PKGBUILD b/extra/sshfs/PKGBUILD
new file mode 100644
index 000000000..4a29c7d84
--- /dev/null
+++ b/extra/sshfs/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id: PKGBUILD 68119 2010-02-10 20:04:33Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+
+pkgname=sshfs
+pkgver=2.2
+pkgrel=3
+pkgdesc="FUSE client based on the SSH File Transfer Protocol"
+arch=('i686' 'x86_64')
+url="http://fuse.sourceforge.net/sshfs.html"
+license=('GPL')
+depends=('fuse' 'glib2' 'openssh')
+makedepends=('pkgconfig')
+source=(http://downloads.sourceforge.net/sourceforge/fuse/${pkgname}-fuse-${pkgver}.tar.gz)
+md5sums=('26e9206eb5169e87e6f95f54bc005a4f')
+
+build() {
+ cd "${srcdir}/${pkgname}-fuse-${pkgver}"
+
+ ./configure --prefix=/usr
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/ssmtp/PKGBUILD b/extra/ssmtp/PKGBUILD
new file mode 100644
index 000000000..03b72606d
--- /dev/null
+++ b/extra/ssmtp/PKGBUILD
@@ -0,0 +1,35 @@
+# $Id: PKGBUILD 75590 2010-04-01 22:29:13Z ibiru $
+# Maintainer: Hugo Doria <hugo@archlinux.org>
+
+pkgname=ssmtp
+pkgver=2.64
+pkgrel=2
+pkgdesc="Extremely simple MTA to get mail off the system to a mailhub"
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://packages.debian.org/stable/mail/ssmtp"
+depends=('openssl')
+conflicts=('exim')
+provides=('smtp-forwarder')
+backup=('etc/ssmtp/ssmtp.conf' 'etc/ssmtp/revaliases')
+options=('!makeflags' '!emptydirs')
+source=(http://ftp.debian.org/debian/pool/main/s/ssmtp/${pkgname}_${pkgver}.orig.tar.bz2)
+md5sums=('65b4e0df4934a6cd08c506cabcbe584f')
+
+## if you build in chroot, make sure the chroots fully qualified hostname is the same as in your real root system ##
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --enable-md5auth --enable-ssl || return 1
+ make || return 1
+ yes | make prefix="${pkgdir}/usr" mandir="${pkgdir}/usr/share/man/man8" etcdir="${pkgdir}/etc" install || return 1
+
+ install -D -m644 ssmtp.conf.5 "${pkgdir}/usr/share/man/man5/ssmtp.conf.5" || return 1
+
+ ln -s ssmtp "${pkgdir}/usr/sbin/sendmail"
+ ln -s ssmtp "${pkgdir}/usr/sbin/newaliases"
+ ln -s ssmtp "${pkgdir}/usr/sbin/mailq"
+}
diff --git a/extra/stardict/PKGBUILD b/extra/stardict/PKGBUILD
new file mode 100644
index 000000000..b02aefd11
--- /dev/null
+++ b/extra/stardict/PKGBUILD
@@ -0,0 +1,42 @@
+# $Id: PKGBUILD 106155 2011-01-14 21:07:17Z bisson $
+# Maintainer: Aaron Griffin <aaron@archlinux.org>
+# Contributor: Neil Lin <neil@vip.url.com.tw>
+
+pkgname=stardict
+pkgver=3.0.2
+pkgrel=2
+pkgdesc='A powerful international dictionary written in Gtk2.'
+arch=('i686' 'x86_64')
+url='http://stardict.sourceforge.net/'
+license=('GPL')
+depends=('enchant' 'gtk2' 'libsigc++' 'libsm')
+makedepends=('intltool' 'popt' 'gnome-doc-utils')
+options=('!libtool' '!emptydirs')
+source=("http://downloads.sourceforge.net/sourceforge/stardict/$pkgname-$pkgver.tar.bz2"
+ 'help-in-destdir.patch'
+ 'as-needed.patch')
+sha1sums=('301875657cd39b5f25e5933ece22936a28db1230'
+ '0249d769e5cc85e183eb395b824342f8ca320f56'
+ '22fca061d1be23ac79da6c0ec5fc488ae0aca9c1')
+
+build()
+{
+ cd "$srcdir/$pkgname-$pkgver"
+
+ # patches accepted upstream; will be in stardict>3.0.2
+ patch -p1 -i ../help-in-destdir.patch
+ patch -p1 -i ../as-needed.patch
+ automake
+
+ ./configure PKG_CONFIG=/usr/bin/pkg-config --prefix=/usr \
+ --sysconfdir=/etc --mandir=/usr/share/man \
+ --disable-gnome-support --disable-schemas-install \
+ --disable-espeak --disable-gucharmap \
+ --disable-festival --disable-updateinfo
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make DESTDIR="$pkgdir" install
+}
diff --git a/extra/stardict/as-needed.patch b/extra/stardict/as-needed.patch
new file mode 100644
index 000000000..1e924be9f
--- /dev/null
+++ b/extra/stardict/as-needed.patch
@@ -0,0 +1,29 @@
+Index: stardict/src/Makefile.am
+===================================================================
+--- stardict/src/Makefile.am (revision 489)
++++ stardict/src/Makefile.am (working copy)
+@@ -26,9 +26,9 @@
+ -DSTARDICT_LIB_DIR=\""$(libdir)/stardict"\"
+
+
+-stardict_DEPENDENCIES = $(LOCAL_SIGCPP_LIBFILE) lib/libstardict.a
++stardict_DEPENDENCIES = lib/libstardict.a $(LOCAL_SIGCPP_LIBFILE)
+ stardict_LDFLAGS =
+-stardict_LDADD = $(STARDICT_LIBS) $(LOCAL_SIGCPP_LIBFILE) lib/libstardict.a
++stardict_LDADD = lib/libstardict.a $(STARDICT_LIBS) $(LOCAL_SIGCPP_LIBFILE)
+
+ if !GNOME_SUPPORT
+ if MAEMO_SUPPORT
+Index: stardict/tests/Makefile.am
+===================================================================
+--- stardict/tests/Makefile.am (revision 489)
++++ stardict/tests/Makefile.am (working copy)
+@@ -49,7 +49,7 @@
+ t_res_database_SOURCES = t_res_database.cpp
+ t_res_database_DEPENDENCIES = $(top_builddir)/src/lib/libstardict.a
+
+-LDADD = @STARDICT_LIBS@ $(top_builddir)/src/lib/libstardict.a \
++LDADD = $(top_builddir)/src/lib/libstardict.a $(STARDICT_LIBS) \
+ $(LOCAL_SIGCPP_LIBFILE)
+ ## -I$(top_builddir) is for config.h, it's generated by configure in the build dir
+ AM_CPPFLAGS = @STARDICT_CFLAGS@ $(LOCAL_SIGCPP_INCLUDE) -I$(top_builddir) \
diff --git a/extra/stardict/help-in-destdir.patch b/extra/stardict/help-in-destdir.patch
new file mode 100644
index 000000000..ba301b332
--- /dev/null
+++ b/extra/stardict/help-in-destdir.patch
@@ -0,0 +1,21 @@
+diff -aur old/help/Makefile.am new/help/Makefile.am
+--- old/help/Makefile.am 2011-01-03 17:14:20.000000000 +0100
++++ new/help/Makefile.am 2011-01-13 21:42:06.046672489 +0100
+@@ -104,7 +104,7 @@
+ else
+ stardict-install-html:
+ for lc in $(STARDICT_ALL_LINGUAS); do \
+- install_dir=$(STARDICT_HTML_INSTALL_DIR)/$${lc}; \
++ install_dir=$(DESTDIR)$(STARDICT_HTML_INSTALL_DIR)/$${lc}; \
+ htmldir=$(srcdir)/$${lc}/html; \
+ for file in `find $${htmldir} -type f -print`; do \
+ relfile=$${file#$${htmldir}/}; \
+@@ -126,7 +126,7 @@
+ else
+ stardict-uninstall-html:
+ for lc in $(STARDICT_ALL_LINGUAS); do \
+- install_dir=$(STARDICT_HTML_INSTALL_DIR)/$${lc}; \
++ install_dir=$(DESTDIR)$(STARDICT_HTML_INSTALL_DIR)/$${lc}; \
+ rm -rf $${install_dir}; \
+ done;
+ endif
diff --git a/extra/startup-notification/PKGBUILD b/extra/startup-notification/PKGBUILD
new file mode 100644
index 000000000..c3e5760a6
--- /dev/null
+++ b/extra/startup-notification/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 111001 2011-02-23 15:59:58Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: dorphell <dorphell@archlinux.org>
+
+pkgname=startup-notification
+pkgver=0.10
+pkgrel=2
+pkgdesc="Monitor and display application startup"
+arch=(i686 x86_64)
+license=('LGPL')
+depends=('libx11' 'xcb-util>=0.3.4')
+options=('!libtool')
+url="http://www.freedesktop.org"
+source=(http://www.freedesktop.org/software/startup-notification/releases/${pkgname}-${pkgver}.tar.gz)
+md5sums=('bca0ed1c74bc4e483ea2ed12a5717354')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ sed -i -e '/AC_PATH_XTRA/d' configure.in
+ autoreconf --force --install
+ ./configure --prefix=/usr --localstatedir=/var --sysconfdir=/etc
+ make
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/stellarium/PKGBUILD b/extra/stellarium/PKGBUILD
new file mode 100644
index 000000000..9e8f6d8b1
--- /dev/null
+++ b/extra/stellarium/PKGBUILD
@@ -0,0 +1,38 @@
+# $Id: PKGBUILD 108873 2011-02-04 15:03:02Z ronald $
+# Maintainer: Ronald van Haren <ronald.archlinux.org>
+# Contributor: Damir Perisa <damir.perisa@bluewin.ch>
+
+pkgname=stellarium
+pkgver=0.10.6
+pkgrel=1
+pkgdesc="A stellarium with great graphics and a nice database of sky-objects"
+arch=("i686" "x86_64")
+url="http://stellarium.free.fr/"
+license=('GPL2')
+depends=('libpng' 'mesa' 'libgl' 'freetype2' 'qt' 'openssl')
+makedepends=('cmake' 'boost')
+source=(http://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.gz
+ stellarium.desktop
+ stellarium.png)
+md5sums=('daab49529f0ad76efe871b639ac79295'
+ 'b4f9ebd082c4e112c2bbfac9f2c8465d'
+ '134ab08e73f4f5d995a7931a7957b7a3')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ cmake . -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=RELEASE
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ make DESTDIR=${pkgdir} install
+
+ # install desktop file & pixmap
+ install -Dm644 ${srcdir}/stellarium.desktop \
+ ${pkgdir}/usr/share/applications/stellarium.desktop
+ install -Dm644 ${srcdir}/stellarium.png \
+ ${pkgdir}/usr/share/pixmaps/stellarium.png
+}
diff --git a/extra/stellarium/libpng14.patch b/extra/stellarium/libpng14.patch
new file mode 100644
index 000000000..7ed1da689
--- /dev/null
+++ b/extra/stellarium/libpng14.patch
@@ -0,0 +1,21 @@
+diff -Naur stellarium-0.10.2-orig/src/core/StelTextureMgr.cpp stellarium-0.10.2/src/core/StelTextureMgr.cpp
+--- stellarium-0.10.2-orig/src/core/StelTextureMgr.cpp 2010-01-21 17:04:57.000000000 -0500
++++ stellarium-0.10.2/src/core/StelTextureMgr.cpp 2010-01-21 17:06:55.000000000 -0500
+@@ -513,7 +513,7 @@
+ fread (magic, 1, sizeof (magic), fp);
+
+ /* check for valid magic number */
+- if (!png_check_sig (magic, sizeof (magic)))
++ if (png_sig_cmp (magic, 0, sizeof (magic)))
+ {
+ qWarning() << "error: \"" << filename << "\" is not a valid PNG image!";
+ fclose (fp);
+@@ -576,7 +576,7 @@
+ /* convert 1-2-4 bits grayscale images to 8 bits
+ grayscale. */
+ if (color_type == PNG_COLOR_TYPE_GRAY && bit_depth < 8)
+- png_set_gray_1_2_4_to_8 (png_ptr);
++ png_set_expand_gray_1_2_4_to_8 (png_ptr);
+
+ if (png_get_valid (png_ptr, info_ptr, PNG_INFO_tRNS))
+ png_set_tRNS_to_alpha (png_ptr);
diff --git a/extra/stellarium/stellarium.desktop b/extra/stellarium/stellarium.desktop
new file mode 100644
index 000000000..1b82b18bd
--- /dev/null
+++ b/extra/stellarium/stellarium.desktop
@@ -0,0 +1,9 @@
+[Desktop Entry]
+Name=Stellarium nightsky renderer
+GenericName=Nightsky renderer
+Comment=A real-time nightsky renderer
+Categories=Education;Science;Astronomy;
+Icon=stellarium
+Exec=stellarium
+Terminal=false
+Type=Application
diff --git a/extra/stellarium/stellarium.png b/extra/stellarium/stellarium.png
new file mode 100644
index 000000000..08bce127c
--- /dev/null
+++ b/extra/stellarium/stellarium.png
Binary files differ
diff --git a/extra/strace/PKGBUILD b/extra/strace/PKGBUILD
new file mode 100644
index 000000000..93923b007
--- /dev/null
+++ b/extra/strace/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 115123 2011-03-17 01:51:59Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=strace
+pkgver=4.6
+pkgrel=1
+pkgdesc="A useful diagnositic, instructional, and debugging tool"
+arch=('i686' 'x86_64')
+url="http://sourceforge.net/projects/strace/"
+license=('custom')
+depends=('perl')
+source=(http://downloads.sourceforge.net/${pkgname}/${pkgname}-$pkgver.tar.xz)
+md5sums=('e537b2b1afeec70c0e6e27a0d0fd671e')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}/" install
+
+ install -Dm644 COPYRIGHT ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+}
diff --git a/extra/streamripper/PKGBUILD b/extra/streamripper/PKGBUILD
new file mode 100644
index 000000000..009f2eb27
--- /dev/null
+++ b/extra/streamripper/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: PKGBUILD 51858 2009-09-12 21:44:06Z eric $
+# Contributor: damir <damir@archlinux.org>
+# Maintainer: Thayer Williams <thayer@archlinux.org>
+
+pkgname=streamripper
+pkgver=1.64.6
+pkgrel=1
+pkgdesc="Records and splits streaming mp3 into tracks"
+arch=('i686' 'x86_64')
+url="http://streamripper.sourceforge.net"
+license=('GPL')
+depends=('glibc' 'glib2' 'libmad' 'faad2>=2.7' 'libvorbis')
+options=('!libtool')
+source=(http://downloads.sourceforge.net/sourceforge/streamripper/streamripper-$pkgver.tar.gz)
+md5sums=('a37a1a8b8f9228522196a122a1c2dd32')
+sha1sums=('bc8a8d3ad045e0772ca691d2063c39efcc0dca45')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ ./configure --prefix=/usr || return 1
+ make || return 1
+ make DESTDIR="$pkgdir" install || return 1
+}
diff --git a/extra/streamtuner/PKGBUILD b/extra/streamtuner/PKGBUILD
new file mode 100644
index 000000000..f449a3f89
--- /dev/null
+++ b/extra/streamtuner/PKGBUILD
@@ -0,0 +1,49 @@
+# $Id: PKGBUILD 94130 2010-10-04 18:10:32Z andyrtr $
+# Contributor: Greg Grabinski <greg@grabinski.ch>
+# Maintainer: ndreas Radke <andyrtr@archlinux.org>
+
+pkgname=streamtuner
+pkgver=0.99.99
+pkgrel=11
+pkgdesc="A stream directory browser"
+arch=('i686' 'x86_64')
+url="http://www.nongnu.org/streamtuner/"
+license=('custom')
+depends=('taglib' 'libxml2' 'gtk2' 'curl>=7.16.2' 'pygtk>=2.13.0-2')
+conflicts=('streamtuner-live365')
+replaces=('streamtuner-live365')
+source=(http://savannah.nongnu.org/download/streamtuner/$pkgname-$pkgver.tar.gz \
+ http://savannah.nongnu.org/download/streamtuner/streamtuner-0.99.99-live365.diff \
+ http://savannah.nongnu.org/download/streamtuner/streamtuner-0.99.99-pygtk-2.6.diff
+ streamtuner-0.99.99-shoutcast.diff
+ shoutcast-redesign-patch.diff)
+options=('!libtool' '!emptydirs')
+md5sums=('2027b7c34e85b594524b0b4351c14362'
+ '8aa1994a849b05d2b8fffbda702b8a25'
+ '7aff45a41c60358cb2332c7ce644f661'
+ '1eab6edce130e1a1e5f208cd3ed6766a'
+ '8a3a17a1719a79353d6ad7ac8564947b')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ patch -p0 -i ${srcdir}/streamtuner-0.99.99-live365.diff || return 1
+ patch -p0 -i ${srcdir}/streamtuner-0.99.99-pygtk-2.6.diff || return 1
+ # fix http://bugs.archlinux.org/task/10308
+ patch -p0 -i ${srcdir}/streamtuner-0.99.99-shoutcast.diff || return 1
+ # fix http://bugs.archlinux.org/task/11463
+ patch -p1 -i ${srcdir}/shoutcast-redesign-patch.diff || return 1
+
+ # python2 fixes
+ sed -i "s:^for ac_prog in python:for ac_prog in python2:" ${srcdir}/${pkgname}-${pkgver}/configure
+
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make prefix=${pkgdir}/usr install
+
+ #Add license file
+ install -Dm0644 ${srcdir}/${pkgname}-${pkgver}/COPYING ${pkgdir}/usr/share/licenses/${pkgname}/COPYING
+}
diff --git a/extra/streamtuner/shoutcast-redesign-patch.diff b/extra/streamtuner/shoutcast-redesign-patch.diff
new file mode 100644
index 000000000..644e2273e
--- /dev/null
+++ b/extra/streamtuner/shoutcast-redesign-patch.diff
@@ -0,0 +1,12 @@
+diff -uar streamtuner-0.99.99-orig/src/plugins/shoutcast/shoutcast.c streamtuner-0.99.99-patched/src/plugins/shoutcast/shoutcast.c
+--- streamtuner-0.99.99-orig/src/plugins/shoutcast/shoutcast.c 2008-09-12 18:04:00.229785732 -0400
++++ streamtuner-0.99.99-patched/src/plugins/shoutcast/shoutcast.c 2008-09-12 18:05:56.716440720 -0400
+@@ -37,7 +37,7 @@
+
+ /*** cpp *********************************************************************/
+
+-#define SHOUTCAST_ROOT "http://www.shoutcast.com/"
++#define SHOUTCAST_ROOT "http://classic.shoutcast.com/"
+
+ #define MAX_STREAMS_PER_PAGE 100 /* enforced by SHOUTcast */
+
diff --git a/extra/streamtuner/streamtuner-0.99.99-shoutcast.diff b/extra/streamtuner/streamtuner-0.99.99-shoutcast.diff
new file mode 100644
index 000000000..e7fcbca94
--- /dev/null
+++ b/extra/streamtuner/streamtuner-0.99.99-shoutcast.diff
@@ -0,0 +1,41 @@
+--- src/plugins/shoutcast/shoutcast.c.orig 2004-12-19 15:21:00.000000000 +0000
++++ src/plugins/shoutcast/shoutcast.c 2008-03-16 10:39:24.000000000 +0000
+@@ -94,6 +94,8 @@
+
+ GNode *parent_node;
+ SHOUTcastStream *stream;
++
++ int parse_genres;
+ } ReloadInfo;
+
+ /*** variable declarations ***************************************************/
+@@ -518,6 +520,7 @@
+ info.npages = 0;
+ info.parent_node = NULL;
+ info.stream = NULL;
++ info.parse_genres = 0;
+
+ status = st_transfer_session_get_by_line(session,
+ url,
+@@ -565,10 +568,16 @@
+ info->stream = stream_new_cb(NULL);
+ info->stream->url_postfix = st_sgml_ref_expand_len(s1, s2 - s1);
+ }
+- else if (info->page < 2
+- && (((s1 = st_str_has_prefix_span(line, "\t<OPTION VALUE=\""))
+- || (s1 = st_str_has_prefix_span(line, "\t\t<OPTION VALUE=\"")))
+- && (s2 = strstr(s1, "\">"))))
++ else if (info->page < 2 && (s1 = st_strstr_span(line, "<OPTION VALUE=\"TopTen\">")))
++ {
++ info->parse_genres = 1;
++ }
++ else if (info->page < 2 && info->parse_genres == 1 && (s1 = st_strstr_span(line, "</SELECT>")))
++ {
++ info->parse_genres = 0;
++ }
++ else if (info->page < 2 && info->parse_genres == 1
++ && ((s1 = st_strstr_span(line, "<OPTION VALUE=\"")) && (s2 = strstr(s1, "\">"))))
+ {
+ STCategory *category;
+ GNode *node;
+
diff --git a/extra/strigi/PKGBUILD b/extra/strigi/PKGBUILD
new file mode 100644
index 000000000..736ca5379
--- /dev/null
+++ b/extra/strigi/PKGBUILD
@@ -0,0 +1,33 @@
+# $Id: PKGBUILD 110940 2011-02-23 08:05:50Z eric $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=strigi
+pkgver=git20110107
+pkgrel=2
+pkgdesc="Fast crawling desktop search engine with Qt4 GUI"
+arch=('i686' 'x86_64')
+url="http://www.vandenoever.info/software/strigi/"
+license=('GPL2')
+depends=('qt' 'clucene' 'bzip2' 'exiv2' 'libxml2')
+makedepends=('cmake' 'pkg-config')
+source=("ftp://ftp.archlinux.org/other/kde/${pkgname}-${pkgver}.tar.bz2")
+md5sums=('6f648631061c61328ee60c0287ad2e37')
+sha1sums=('7c3dd5d6d18045d0fcf36831bcf8b9e24abfdd52')
+options=('!libtool' 'force')
+
+build() {
+ cd "${srcdir}"
+ mkdir build
+ cd build
+ cmake ../${pkgname}-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DENABLE_INOTIFY=ON
+ make
+}
+
+package() {
+ cd "${srcdir}/build"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/subversion/PKGBUILD b/extra/subversion/PKGBUILD
new file mode 100644
index 000000000..8465f232d
--- /dev/null
+++ b/extra/subversion/PKGBUILD
@@ -0,0 +1,92 @@
+# $Id: PKGBUILD 103462 2010-12-19 17:12:50Z paul $
+# Maintainer: Paul Mattal <paul@archlinux.org>
+# Contributor: Jason Chu <jason@archlinux.org>
+
+pkgname=subversion
+pkgver=1.6.15
+pkgrel=1
+pkgdesc="Replacement for CVS, another versioning system (SVN)"
+arch=('i686' 'x86_64')
+license=('apache' 'bsd')
+depends=('neon' 'apr-util')
+makedepends=('heimdal' 'apache' 'python2' 'perl' 'swig' 'ruby' 'java-runtime'
+ 'autoconf' 'sqlite3' 'db' 'e2fsprogs' 'libgnome-keyring' 'kdelibs')
+source=(http://subversion.tigris.org/downloads/$pkgname-$pkgver.tar.bz2
+ svnserve svn svnserve.conf svnmerge.py
+ subversion.rpath.fix.patch
+ subversion.suppress.deprecation.warnings.patch)
+
+backup=('etc/xinetd.d/svn' 'etc/conf.d/svnserve')
+url="http://subversion.apache.org/"
+provides=('svn')
+options=('!makeflags' '!libtool')
+optdepends=('libgnome-keyring' 'kdeutils-kwallet' 'bash-completion: for svn bash completion')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ export PYTHON=/usr/bin/python2
+
+ # apply patches
+ patch -p0 < $srcdir/subversion.rpath.fix.patch
+ patch -p1 -i $srcdir/subversion.suppress.deprecation.warnings.patch
+
+ # configure
+ autoreconf
+ ./configure --prefix=/usr --with-apr=/usr --with-apr-util=/usr \
+ --with-zlib=/usr --with-neon=/usr --with-apxs \
+ --with-sqlite=/usr --with-berkeley-db=:/usr/include/:/usr/lib:db-5.1 \
+ --enable-javahl --with-gnome-keyring --with-kwallet
+
+ # build
+ (make external-all && make LT_LDFLAGS="-L$Fdestdir/usr/lib" local-all )
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ # install
+ export LD_LIBRARY_PATH=${pkgdir}/usr/lib:$LD_LIBRARY_PATH
+ make DESTDIR=${pkgdir} install
+
+ make DESTDIR=${pkgdir} swig-py
+ make install-swig-py DESTDIR=${pkgdir}
+
+ install -d ${pkgdir}/usr/lib/python2.7
+ mv ${pkgdir}/usr/lib/svn-python/ ${pkgdir}/usr/lib/python2.7/site-packages
+
+ install -d ${pkgdir}/usr/share/subversion
+ install -d -m 755 tools/hook-scripts ${pkgdir}/usr/share/subversion/
+ rm -f ${pkgdir}/usr/share/subversion/hook-scripts/*.in
+
+ make DESTDIR=${pkgdir} swig-pl
+ make install-swig-pl DESTDIR=${pkgdir} INSTALLDIRS=vendor
+ rm -f ${pkgdir}/usr/lib/perl5/vendor_perl/auto/SVN/_Core/.packlist
+ rm -rf ${pkgdir}/usr/lib/perl5/core_perl
+
+ make DESTDIR=${pkgdir} swig-rb
+ make install-swig-rb DESTDIR=${pkgdir}
+
+ make DESTDIR=${pkgdir} javahl
+ make DESTDIR=${pkgdir} install-javahl
+
+ install -d ${pkgdir}/etc/{rc.d,xinetd.d,conf.d}
+
+ install -m 755 ${srcdir}/svnserve ${pkgdir}/etc/rc.d
+ install -m 644 ${srcdir}/svn ${pkgdir}/etc/xinetd.d
+ install -m 644 ${srcdir}/svnserve.conf ${pkgdir}/etc/conf.d/svnserve
+ install -m 755 ${srcdir}/svnmerge.py ${pkgdir}/usr/bin/svnmerge
+ install -D -m 644 ${srcdir}/subversion-$pkgver/COPYING \
+ ${pkgdir}/usr/share/licenses/$pkgname/LICENSE
+
+ # bash completion
+ install -Dm 644 ${srcdir}/${pkgname}-${pkgver}/tools/client-side/bash_completion \
+ ${pkgdir}/etc/bash_completion.d/subversion
+}
+md5sums=('113fca1d9e4aa389d7dc2b210010fa69'
+ 'a2b029e8385007ffb99b437b30521c90'
+ 'a0db6dd43af33952739b6ec089852630'
+ 'c459e299192552f61578f3438abf0664'
+ 'a6371baeda7e224504629ecdda2749b4'
+ '6b4340ba9d8845cd8497e013ae01be3f'
+ '1166f3b7413d7e7450299b3525680bbe')
diff --git a/extra/subversion/subversion.rpath.fix.patch b/extra/subversion/subversion.rpath.fix.patch
new file mode 100644
index 000000000..ba6ee9e4e
--- /dev/null
+++ b/extra/subversion/subversion.rpath.fix.patch
@@ -0,0 +1,10 @@
+--- Makefile.in.orig 2009-02-16 14:10:48.000000000 -0200
++++ Makefile.in 2009-06-04 00:56:29.000000000 -0300
+@@ -678,6 +678,7 @@
+
+ $(SWIG_PL_DIR)/native/Makefile: $(SWIG_PL_DIR)/native/Makefile.PL
+ cd $(SWIG_PL_DIR)/native; $(PERL) Makefile.PL
++ cd $(SWIG_PL_DIR)/native; sed -i 's|LD_RUN_PATH|DIE_RPATH_DIE|g' Makefile{,.{client,delta,fs,ra,repos,wc}}
+
+ swig-pl_DEPS = autogen-swig-pl libsvn_swig_perl \
+ $(SWIG_PL_DIR)/native/Makefile
diff --git a/extra/subversion/subversion.suppress.deprecation.warnings.patch b/extra/subversion/subversion.suppress.deprecation.warnings.patch
new file mode 100644
index 000000000..94ce89b18
--- /dev/null
+++ b/extra/subversion/subversion.suppress.deprecation.warnings.patch
@@ -0,0 +1,22 @@
+diff -urN subversion-1.6.9/subversion/bindings/swig/python/svn/core.py subversion-1.6.9-fixed/subversion/bindings/swig/python/svn/core.py
+--- subversion-1.6.9/subversion/bindings/swig/python/svn/core.py 2009-02-13 11:22:26.000000000 -0500
++++ subversion-1.6.9-fixed/subversion/bindings/swig/python/svn/core.py 2010-02-08 07:46:29.000000000 -0500
+@@ -19,6 +19,7 @@
+ from libsvn.core import *
+ import libsvn.core as _libsvncore
+ import atexit as _atexit
++import warnings
+
+ class SubversionException(Exception):
+ def __init__(self, message=None, apr_err=None, child=None,
+@@ -44,7 +45,9 @@
+ Exception.__init__(self, *args)
+
+ self.apr_err = apr_err
+- self.message = message
++ with warnings.catch_warnings():
++ warnings.simplefilter("ignore", DeprecationWarning)
++ self.message = message
+ self.child = child
+ self.file = file
+ self.line = line
diff --git a/extra/subversion/svn b/extra/subversion/svn
new file mode 100644
index 000000000..8988aaf63
--- /dev/null
+++ b/extra/subversion/svn
@@ -0,0 +1,11 @@
+service svn
+{
+ flags = REUSE
+ socket_type = stream
+ wait = no
+ user = root
+ server = /usr/bin/svnserve
+ server_args = -i
+ log_on_failure += USERID
+ disable = yes
+}
diff --git a/extra/subversion/svnmerge.py b/extra/subversion/svnmerge.py
new file mode 100644
index 000000000..d8931648f
--- /dev/null
+++ b/extra/subversion/svnmerge.py
@@ -0,0 +1,2370 @@
+#!/usr/bin/env python2
+# -*- coding: utf-8 -*-
+# Copyright (c) 2005, Giovanni Bajo
+# Copyright (c) 2004-2005, Awarix, Inc.
+# All rights reserved.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+#
+# Author: Archie Cobbs <archie at awarix dot com>
+# Rewritten in Python by: Giovanni Bajo <rasky at develer dot com>
+#
+# Acknowledgments:
+# John Belmonte <john at neggie dot net> - metadata and usability
+# improvements
+# Blair Zajac <blair at orcaware dot com> - random improvements
+# Raman Gupta <rocketraman at fastmail dot fm> - bidirectional and transitive
+# merging support
+# Dustin J. Mitchell <dustin at zmanda dot com> - support for multiple
+# location identifier formats
+#
+# $HeadURL$
+# $LastChangedDate$
+# $LastChangedBy$
+# $LastChangedRevision$
+#
+# Requisites:
+# svnmerge.py has been tested with all SVN major versions since 1.1 (both
+# client and server). It is unknown if it works with previous versions.
+#
+# Differences from svnmerge.sh:
+# - More portable: tested as working in FreeBSD and OS/2.
+# - Add double-verbose mode, which shows every svn command executed (-v -v).
+# - "svnmerge avail" now only shows commits in source, not also commits in
+# other parts of the repository.
+# - Add "svnmerge block" to flag some revisions as blocked, so that
+# they will not show up anymore in the available list. Added also
+# the complementary "svnmerge unblock".
+# - "svnmerge avail" has grown two new options:
+# -B to display a list of the blocked revisions
+# -A to display both the blocked and the available revisions.
+# - Improved generated commit message to make it machine parsable even when
+# merging commits which are themselves merges.
+# - Add --force option to skip working copy check
+# - Add --record-only option to "svnmerge merge" to avoid performing
+# an actual merge, yet record that a merge happened.
+# - Can use a variety of location-identifier formats
+#
+# TODO:
+# - Add "svnmerge avail -R": show logs in reverse order
+#
+# Information for Hackers:
+#
+# Identifiers for branches:
+# A branch is identified in three ways within this source:
+# - as a working copy (variable name usually includes 'dir')
+# - as a fully qualified URL
+# - as a path identifier (an opaque string indicating a particular path
+# in a particular repository; variable name includes 'pathid')
+# A "target" is generally user-specified, and may be a working copy or
+# a URL.
+
+import sys, os, getopt, re, types, tempfile, time, locale
+from bisect import bisect
+from xml.dom import pulldom
+
+NAME = "svnmerge"
+if not hasattr(sys, "version_info") or sys.version_info < (2, 0):
+ error("requires Python 2.0 or newer")
+
+# Set up the separator used to separate individual log messages from
+# each revision merged into the target location. Also, create a
+# regular expression that will find this same separator in already
+# committed log messages, so that the separator used for this run of
+# svnmerge.py will have one more LOG_SEPARATOR appended to the longest
+# separator found in all the commits.
+LOG_SEPARATOR = 8 * '.'
+LOG_SEPARATOR_RE = re.compile('^((%s)+)' % re.escape(LOG_SEPARATOR),
+ re.MULTILINE)
+
+# Each line of the embedded log messages will be prefixed by LOG_LINE_PREFIX.
+LOG_LINE_PREFIX = 2 * ' '
+
+# Set python to the default locale as per environment settings, same as svn
+# TODO we should really parse config and if log-encoding is specified, set
+# the locale to match that encoding
+locale.setlocale(locale.LC_ALL, '')
+
+# We want the svn output (such as svn info) to be non-localized
+# Using LC_MESSAGES should not affect localized output of svn log, for example
+if os.environ.has_key("LC_ALL"):
+ del os.environ["LC_ALL"]
+os.environ["LC_MESSAGES"] = "C"
+
+###############################################################################
+# Support for older Python versions
+###############################################################################
+
+# True/False constants are Python 2.2+
+try:
+ True, False
+except NameError:
+ True, False = 1, 0
+
+def lstrip(s, ch):
+ """Replacement for str.lstrip (support for arbitrary chars to strip was
+ added in Python 2.2.2)."""
+ i = 0
+ try:
+ while s[i] == ch:
+ i = i+1
+ return s[i:]
+ except IndexError:
+ return ""
+
+def rstrip(s, ch):
+ """Replacement for str.rstrip (support for arbitrary chars to strip was
+ added in Python 2.2.2)."""
+ try:
+ if s[-1] != ch:
+ return s
+ i = -2
+ while s[i] == ch:
+ i = i-1
+ return s[:i+1]
+ except IndexError:
+ return ""
+
+def strip(s, ch):
+ """Replacement for str.strip (support for arbitrary chars to strip was
+ added in Python 2.2.2)."""
+ return lstrip(rstrip(s, ch), ch)
+
+def rsplit(s, sep, maxsplits=0):
+ """Like str.rsplit, which is Python 2.4+ only."""
+ L = s.split(sep)
+ if not 0 < maxsplits <= len(L):
+ return L
+ return [sep.join(L[0:-maxsplits])] + L[-maxsplits:]
+
+###############################################################################
+
+def kwextract(s):
+ """Extract info from a svn keyword string."""
+ try:
+ return strip(s, "$").strip().split(": ")[1]
+ except IndexError:
+ return "<unknown>"
+
+__revision__ = kwextract('$Rev$')
+__date__ = kwextract('$Date$')
+
+# Additional options, not (yet?) mapped to command line flags
+default_opts = {
+ "svn": "svn",
+ "prop": NAME + "-integrated",
+ "block-prop": NAME + "-blocked",
+ "commit-verbose": True,
+ "verbose": 0,
+}
+logs = {}
+
+def console_width():
+ """Get the width of the console screen (if any)."""
+ try:
+ return int(os.environ["COLUMNS"])
+ except (KeyError, ValueError):
+ pass
+
+ try:
+ # Call the Windows API (requires ctypes library)
+ from ctypes import windll, create_string_buffer
+ h = windll.kernel32.GetStdHandle(-11)
+ csbi = create_string_buffer(22)
+ res = windll.kernel32.GetConsoleScreenBufferInfo(h, csbi)
+ if res:
+ import struct
+ (bufx, bufy,
+ curx, cury, wattr,
+ left, top, right, bottom,
+ maxx, maxy) = struct.unpack("hhhhHhhhhhh", csbi.raw)
+ return right - left + 1
+ except ImportError:
+ pass
+
+ # Parse the output of stty -a
+ if os.isatty(1):
+ out = os.popen("stty -a").read()
+ m = re.search(r"columns (\d+);", out)
+ if m:
+ return int(m.group(1))
+
+ # sensible default
+ return 80
+
+def error(s):
+ """Subroutine to output an error and bail."""
+ print >> sys.stderr, "%s: %s" % (NAME, s)
+ sys.exit(1)
+
+def report(s):
+ """Subroutine to output progress message, unless in quiet mode."""
+ if opts["verbose"]:
+ print "%s: %s" % (NAME, s)
+
+def prefix_lines(prefix, lines):
+ """Given a string representing one or more lines of text, insert the
+ specified prefix at the beginning of each line, and return the result.
+ The input must be terminated by a newline."""
+ assert lines[-1] == "\n"
+ return prefix + lines[:-1].replace("\n", "\n"+prefix) + "\n"
+
+def recode_stdout_to_file(s):
+ if locale.getdefaultlocale()[1] is None or not hasattr(sys.stdout, "encoding") \
+ or sys.stdout.encoding is None:
+ return s
+ u = s.decode(sys.stdout.encoding)
+ return u.encode(locale.getdefaultlocale()[1])
+
+class LaunchError(Exception):
+ """Signal a failure in execution of an external command. Parameters are the
+ exit code of the process, the original command line, and the output of the
+ command."""
+
+try:
+ """Launch a sub-process. Return its output (both stdout and stderr),
+ optionally split by lines (if split_lines is True). Raise a LaunchError
+ exception if the exit code of the process is non-zero (failure).
+
+ This function has two implementations, one based on subprocess (preferred),
+ and one based on popen (for compatibility).
+ """
+ import subprocess
+ import shlex
+
+ def launch(cmd, split_lines=True):
+ # Requiring python 2.4 or higher, on some platforms we get
+ # much faster performance from the subprocess module (where python
+ # doesn't try to close an exhorbitant number of file descriptors)
+ stdout = ""
+ stderr = ""
+ try:
+ if os.name == 'nt':
+ p = subprocess.Popen(cmd, stdout=subprocess.PIPE, \
+ close_fds=False, stderr=subprocess.PIPE)
+ else:
+ # Use shlex to break up the parameters intelligently,
+ # respecting quotes. shlex can't handle unicode.
+ args = shlex.split(cmd.encode('ascii'))
+ p = subprocess.Popen(args, stdout=subprocess.PIPE, \
+ close_fds=False, stderr=subprocess.PIPE)
+ stdoutAndErr = p.communicate()
+ stdout = stdoutAndErr[0]
+ stderr = stdoutAndErr[1]
+ except OSError, inst:
+ # Using 1 as failure code; should get actual number somehow? For
+ # examples see svnmerge_test.py's TestCase_launch.test_failure and
+ # TestCase_launch.test_failurecode.
+ raise LaunchError(1, cmd, stdout + " " + stderr + ": " + str(inst))
+
+ if p.returncode == 0:
+ if split_lines:
+ # Setting keepends=True for compatibility with previous logic
+ # (where file.readlines() preserves newlines)
+ return stdout.splitlines(True)
+ else:
+ return stdout
+ else:
+ raise LaunchError(p.returncode, cmd, stdout + stderr)
+except ImportError:
+ # support versions of python before 2.4 (slower on some systems)
+ def launch(cmd, split_lines=True):
+ if os.name not in ['nt', 'os2']:
+ import popen2
+ p = popen2.Popen4(cmd)
+ p.tochild.close()
+ if split_lines:
+ out = p.fromchild.readlines()
+ else:
+ out = p.fromchild.read()
+ ret = p.wait()
+ if ret == 0:
+ ret = None
+ else:
+ ret >>= 8
+ else:
+ i,k = os.popen4(cmd)
+ i.close()
+ if split_lines:
+ out = k.readlines()
+ else:
+ out = k.read()
+ ret = k.close()
+
+ if ret is None:
+ return out
+ raise LaunchError(ret, cmd, out)
+
+def launchsvn(s, show=False, pretend=False, **kwargs):
+ """Launch SVN and grab its output."""
+ username = password = configdir = ""
+ if opts.get("username", None):
+ username = "--username=" + opts["username"]
+ if opts.get("password", None):
+ password = "--password=" + opts["password"]
+ if opts.get("config-dir", None):
+ configdir = "--config-dir=" + opts["config-dir"]
+ cmd = ' '.join(filter(None, [opts["svn"], "--non-interactive",
+ username, password, configdir, s]))
+ if show or opts["verbose"] >= 2:
+ print cmd
+ if pretend:
+ return None
+ return launch(cmd, **kwargs)
+
+def svn_command(s):
+ """Do (or pretend to do) an SVN command."""
+ out = launchsvn(s, show=opts["show-changes"] or opts["dry-run"],
+ pretend=opts["dry-run"],
+ split_lines=False)
+ if not opts["dry-run"]:
+ print out
+
+def check_dir_clean(dir):
+ """Check the current status of dir for local mods."""
+ if opts["force"]:
+ report('skipping status check because of --force')
+ return
+ report('checking status of "%s"' % dir)
+
+ # Checking with -q does not show unversioned files or external
+ # directories. Though it displays a debug message for external
+ # directories, after a blank line. So, practically, the first line
+ # matters: if it's non-empty there is a modification.
+ out = launchsvn("status -q %s" % dir)
+ if out and out[0].strip():
+ error('"%s" has local modifications; it must be clean' % dir)
+
+class PathIdentifier:
+ """Abstraction for a path identifier, so that we can start talking
+ about it before we know the form that it takes in the properties (its
+ external_form). Objects are referenced in the class variable 'locobjs',
+ keyed by all known forms."""
+
+ # a map of UUID (or None) to repository root URL.
+ repo_hints = {}
+
+ # a map from any known string form to the corresponding PathIdentifier
+ locobjs = {}
+
+ def __init__(self, repo_relative_path, uuid=None, url=None, external_form=None):
+ self.repo_relative_path = repo_relative_path
+ self.uuid = uuid
+ self.url = url
+ self.external_form = external_form
+
+ def __repr__(self):
+ return "<PathIdentifier " + ', '.join('%s=%r' % i for i in self.__dict__.items()) + '>'
+
+ def __str__(self):
+ """Return a printable string representation"""
+ if self.external_form:
+ return self.external_form
+ if self.url:
+ return self.format('url')
+ if self.uuid:
+ return self.format('uuid')
+ return self.format('path')
+
+ def from_pathid(pathid_str):
+ """convert pathid_str to a PathIdentifier"""
+ if not PathIdentifier.locobjs.has_key(pathid_str):
+ if is_url(pathid_str):
+ # we can determine every form; PathIdentifier.hint knows how to do that
+ PathIdentifier.hint(pathid_str)
+ elif pathid_str[:7] == 'uuid://':
+ mo = re.match('uuid://([^/]*)(.*)', pathid_str)
+ if not mo:
+ error("Invalid path identifier '%s'" % pathid_str)
+ uuid, repo_relative_path = mo.groups()
+ pathid = PathIdentifier(repo_relative_path, uuid=uuid)
+ # we can cache this by uuid:// pathid and by repo-relative path
+ PathIdentifier.locobjs[pathid_str] = PathIdentifier.locobjs[repo_relative_path] = pathid
+ elif pathid_str and pathid_str[0] == '/':
+ # strip any trailing slashes
+ pathid_str = pathid_str.rstrip('/')
+ pathid = PathIdentifier(repo_relative_path=pathid_str)
+ # we can only cache this by repo-relative path
+ PathIdentifier.locobjs[pathid_str] = pathid
+ else:
+ error("Invalid path identifier '%s'" % pathid_str)
+ return PathIdentifier.locobjs[pathid_str]
+ from_pathid = staticmethod(from_pathid)
+
+ def from_target(target):
+ """Convert a target (either a working copy path or an URL) into a
+ path identifier."""
+ # prime the cache first if we don't know about this target yet
+ if not PathIdentifier.locobjs.has_key(target):
+ PathIdentifier.hint(target)
+
+ try:
+ return PathIdentifier.locobjs[target]
+ except KeyError:
+ error("Could not recognize path identifier '%s'" % target)
+ from_target = staticmethod(from_target)
+
+ def hint(target):
+ """Cache some information about target, as it may be referenced by
+ repo-relative path in subversion properties; the cache can help to
+ expand such a relative path to a full path identifier."""
+ if PathIdentifier.locobjs.has_key(target): return
+ if not is_url(target) and not is_wc(target): return
+
+ url = target_to_url(target)
+
+ root = get_repo_root(url)
+ assert root[-1] != "/"
+ assert url[:len(root)] == root, "url=%r, root=%r" % (url, root)
+ repo_relative_path = url[len(root):]
+
+ try:
+ uuid = get_svninfo(target)['Repository UUID']
+ uuid_pathid = 'uuid://%s%s' % (uuid, repo_relative_path)
+ except KeyError:
+ uuid = None
+ uuid_pathid = None
+
+ locobj = PathIdentifier.locobjs.get(url) or \
+ (uuid_pathid and PathIdentifier.locobjs.get(uuid_pathid))
+ if not locobj:
+ locobj = PathIdentifier(repo_relative_path, uuid=uuid, url=url)
+
+ PathIdentifier.repo_hints[uuid] = root # (uuid may be None)
+
+ PathIdentifier.locobjs[target] = locobj
+ PathIdentifier.locobjs[url] = locobj
+ if uuid_pathid:
+ PathIdentifier.locobjs[uuid_pathid] = locobj
+ if not PathIdentifier.locobjs.has_key(repo_relative_path):
+ PathIdentifier.locobjs[repo_relative_path] = locobj
+ hint = staticmethod(hint)
+
+ def format(self, fmt):
+ if fmt == 'path':
+ return self.repo_relative_path
+ elif fmt == 'uuid':
+ return "uuid://%s%s" % (self.uuid, self.repo_relative_path)
+ elif fmt == 'url':
+ return self.url
+ else:
+ error("Unkonwn path type '%s'" % fmt)
+
+ def match_substring(self, str):
+ """Test whether str is a substring of any representation of this
+ PathIdentifier."""
+ if self.repo_relative_path.find(str) >= 0:
+ return True
+
+ if self.uuid:
+ if ("uuid://%s%s" % (self.uuid, self.repo_relative_path)).find(str) >= 0:
+ return True
+
+ if self.url:
+ if (self.url + self.repo_relative_path).find(str) >= 0:
+ return True
+
+ return False
+
+ def get_url(self):
+ """Convert a pathid into a URL. If this is not possible, error out."""
+ if self.url:
+ return self.url
+ # if we have a uuid and happen to know the URL for it, use that
+ elif self.uuid and PathIdentifier.repo_hints.has_key(self.uuid):
+ self.url = PathIdentifier.repo_hints[self.uuid] + self.repo_relative_path
+ PathIdentifier.locobjs[self.url] = self
+ return self.url
+ # if we've only seen one rep, use that (a guess, but an educated one)
+ elif not self.uuid and len(PathIdentifier.repo_hints) == 1:
+ uuid, root = PathIdentifier.repo_hints.items()[0]
+ if uuid:
+ self.uuid = uuid
+ PathIdentifier.locobjs['uuid://%s%s' % (uuid, self.repo_relative_path)] = self
+ self.url = root + self.repo_relative_path
+ PathIdentifier.locobjs[self.url] = self
+ report("Guessing that '%s' refers to '%s'" % (self, self.url))
+ return self.url
+ else:
+ error("Cannot determine URL for '%s'; " % self +
+ "Explicit source argument (-S/--source) required.\n")
+
+class RevisionLog:
+ """
+ A log of the revisions which affected a given URL between two
+ revisions.
+ """
+
+ def __init__(self, url, begin, end, find_propchanges=False):
+ """
+ Create a new RevisionLog object, which stores, in self.revs, a list
+ of the revisions which affected the specified URL between begin and
+ end. If find_propchanges is True, self.propchange_revs will contain a
+ list of the revisions which changed properties directly on the
+ specified URL. URL must be the URL for a directory in the repository.
+ """
+ self.url = url
+
+ # Setup the log options (--quiet, so we don't show log messages)
+ log_opts = '--xml --quiet -r%s:%s "%s"' % (begin, end, url)
+ if find_propchanges:
+ # The --verbose flag lets us grab merge tracking information
+ # by looking at propchanges
+ log_opts = "--verbose " + log_opts
+
+ # Read the log to look for revision numbers and merge-tracking info
+ self.revs = []
+ self.propchange_revs = []
+ repos_pathid = PathIdentifier.from_target(url)
+ for chg in SvnLogParser(launchsvn("log %s" % log_opts,
+ split_lines=False)):
+ self.revs.append(chg.revision())
+ for p in chg.paths():
+ if p.action() == 'M' and p.pathid() == repos_pathid.repo_relative_path:
+ self.propchange_revs.append(chg.revision())
+
+ # Save the range of the log
+ self.begin = int(begin)
+ if end == "HEAD":
+ # If end is not provided, we do not know which is the latest
+ # revision in the repository. So we set 'end' to the latest
+ # known revision.
+ self.end = self.revs[-1]
+ else:
+ self.end = int(end)
+
+ self._merges = None
+ self._blocks = None
+
+ def merge_metadata(self):
+ """
+ Return a VersionedProperty object, with a cached view of the merge
+ metadata in the range of this log.
+ """
+
+ # Load merge metadata if necessary
+ if not self._merges:
+ self._merges = VersionedProperty(self.url, opts["prop"])
+ self._merges.load(self)
+
+ return self._merges
+
+ def block_metadata(self):
+ if not self._blocks:
+ self._blocks = VersionedProperty(self.url, opts["block-prop"])
+ self._blocks.load(self)
+
+ return self._blocks
+
+
+class VersionedProperty:
+ """
+ A read-only, cached view of a versioned property.
+
+ self.revs contains a list of the revisions in which the property changes.
+ self.values stores the new values at each corresponding revision. If the
+ value of the property is unknown, it is set to None.
+
+ Initially, we set self.revs to [0] and self.values to [None]. This
+ indicates that, as of revision zero, we know nothing about the value of
+ the property.
+
+ Later, if you run self.load(log), we cache the value of this property over
+ the entire range of the log by noting each revision in which the property
+ was changed. At the end of the range of the log, we invalidate our cache
+ by adding the value "None" to our cache for any revisions which fall out
+ of the range of our log.
+
+ Once self.revs and self.values are filled, we can find the value of the
+ property at any arbitrary revision using a binary search on self.revs.
+ Once we find the last revision during which the property was changed,
+ we can lookup the associated value in self.values. (If the associated
+ value is None, the associated value was not cached and we have to do
+ a full propget.)
+
+ An example: We know that the 'svnmerge' property was added in r10, and
+ changed in r21. We gathered log info up until r40.
+
+ revs = [0, 10, 21, 40]
+ values = [None, "val1", "val2", None]
+
+ What these values say:
+ - From r0 to r9, we know nothing about the property.
+ - In r10, the property was set to "val1". This property stayed the same
+ until r21, when it was changed to "val2".
+ - We don't know what happened after r40.
+ """
+
+ def __init__(self, url, name):
+ """View the history of a versioned property at URL with name"""
+ self.url = url
+ self.name = name
+
+ # We know nothing about the value of the property. Setup revs
+ # and values to indicate as such.
+ self.revs = [0]
+ self.values = [None]
+
+ # We don't have any revisions cached
+ self._initial_value = None
+ self._changed_revs = []
+ self._changed_values = []
+
+ def load(self, log):
+ """
+ Load the history of property changes from the specified
+ RevisionLog object.
+ """
+
+ # Get the property value before the range of the log
+ if log.begin > 1:
+ self.revs.append(log.begin-1)
+ try:
+ self._initial_value = self.raw_get(log.begin-1)
+ except LaunchError:
+ # The specified URL might not exist before the
+ # range of the log. If so, we can safely assume
+ # that the property was empty at that time.
+ self._initial_value = { }
+ self.values.append(self._initial_value)
+ else:
+ self._initial_value = { }
+ self.values[0] = self._initial_value
+
+ # Cache the property values in the log range
+ old_value = self._initial_value
+ for rev in log.propchange_revs:
+ new_value = self.raw_get(rev)
+ if new_value != old_value:
+ self._changed_revs.append(rev)
+ self._changed_values.append(new_value)
+ self.revs.append(rev)
+ self.values.append(new_value)
+ old_value = new_value
+
+ # Indicate that we know nothing about the value of the property
+ # after the range of the log.
+ if log.revs:
+ self.revs.append(log.end+1)
+ self.values.append(None)
+
+ def raw_get(self, rev=None):
+ """
+ Get the property at revision REV. If rev is not specified, get
+ the property at revision HEAD.
+ """
+ return get_revlist_prop(self.url, self.name, rev)
+
+ def get(self, rev=None):
+ """
+ Get the property at revision REV. If rev is not specified, get
+ the property at revision HEAD.
+ """
+
+ if rev is not None:
+
+ # Find the index using a binary search
+ i = bisect(self.revs, rev) - 1
+
+ # Return the value of the property, if it was cached
+ if self.values[i] is not None:
+ return self.values[i]
+
+ # Get the current value of the property
+ return self.raw_get(rev)
+
+ def changed_revs(self, key=None):
+ """
+ Get a list of the revisions in which the specified dictionary
+ key was changed in this property. If key is not specified,
+ return a list of revisions in which any key was changed.
+ """
+ if key is None:
+ return self._changed_revs
+ else:
+ changed_revs = []
+ old_val = self._initial_value
+ for rev, val in zip(self._changed_revs, self._changed_values):
+ if val.get(key) != old_val.get(key):
+ changed_revs.append(rev)
+ old_val = val
+ return changed_revs
+
+ def initialized_revs(self):
+ """
+ Get a list of the revisions in which keys were added or
+ removed in this property.
+ """
+ initialized_revs = []
+ old_len = len(self._initial_value)
+ for rev, val in zip(self._changed_revs, self._changed_values):
+ if len(val) != old_len:
+ initialized_revs.append(rev)
+ old_len = len(val)
+ return initialized_revs
+
+class RevisionSet:
+ """
+ A set of revisions, held in dictionary form for easy manipulation. If we
+ were to rewrite this script for Python 2.3+, we would subclass this from
+ set (or UserSet). As this class does not include branch
+ information, it's assumed that one instance will be used per
+ branch.
+ """
+ def __init__(self, parm):
+ """Constructs a RevisionSet from a string in property form, or from
+ a dictionary whose keys are the revisions. Raises ValueError if the
+ input string is invalid."""
+
+ self._revs = {}
+
+ revision_range_split_re = re.compile('[-:]')
+
+ if isinstance(parm, types.DictType):
+ self._revs = parm.copy()
+ elif isinstance(parm, types.ListType):
+ for R in parm:
+ self._revs[int(R)] = 1
+ else:
+ parm = parm.strip()
+ if parm:
+ for R in parm.split(","):
+ rev_or_revs = re.split(revision_range_split_re, R)
+ if len(rev_or_revs) == 1:
+ self._revs[int(rev_or_revs[0])] = 1
+ elif len(rev_or_revs) == 2:
+ for rev in range(int(rev_or_revs[0]),
+ int(rev_or_revs[1])+1):
+ self._revs[rev] = 1
+ else:
+ raise ValueError, 'Ill formatted revision range: ' + R
+
+ def sorted(self):
+ revnums = self._revs.keys()
+ revnums.sort()
+ return revnums
+
+ def normalized(self):
+ """Returns a normalized version of the revision set, which is an
+ ordered list of couples (start,end), with the minimum number of
+ intervals."""
+ revnums = self.sorted()
+ revnums.reverse()
+ ret = []
+ while revnums:
+ s = e = revnums.pop()
+ while revnums and revnums[-1] in (e, e+1):
+ e = revnums.pop()
+ ret.append((s, e))
+ return ret
+
+ def __str__(self):
+ """Convert the revision set to a string, using its normalized form."""
+ L = []
+ for s,e in self.normalized():
+ if s == e:
+ L.append(str(s))
+ else:
+ L.append(str(s) + "-" + str(e))
+ return ",".join(L)
+
+ def __contains__(self, rev):
+ return self._revs.has_key(rev)
+
+ def __sub__(self, rs):
+ """Compute subtraction as in sets."""
+ revs = {}
+ for r in self._revs.keys():
+ if r not in rs:
+ revs[r] = 1
+ return RevisionSet(revs)
+
+ def __and__(self, rs):
+ """Compute intersections as in sets."""
+ revs = {}
+ for r in self._revs.keys():
+ if r in rs:
+ revs[r] = 1
+ return RevisionSet(revs)
+
+ def __nonzero__(self):
+ return len(self._revs) != 0
+
+ def __len__(self):
+ """Return the number of revisions in the set."""
+ return len(self._revs)
+
+ def __iter__(self):
+ return iter(self.sorted())
+
+ def __or__(self, rs):
+ """Compute set union."""
+ revs = self._revs.copy()
+ revs.update(rs._revs)
+ return RevisionSet(revs)
+
+def merge_props_to_revision_set(merge_props, pathid):
+ """A converter which returns a RevisionSet instance containing the
+ revisions from PATH as known to BRANCH_PROPS. BRANCH_PROPS is a
+ dictionary of pathid -> revision set branch integration information
+ (as returned by get_merge_props())."""
+ if not merge_props.has_key(pathid):
+ error('no integration info available for path "%s"' % pathid)
+ return RevisionSet(merge_props[pathid])
+
+def dict_from_revlist_prop(propvalue):
+ """Given a property value as a string containing per-source revision
+ lists, return a dictionary whose key is a source path identifier
+ and whose value is the revisions for that source."""
+ prop = {}
+
+ # Multiple sources are separated by any whitespace.
+ for L in propvalue.split():
+ # We use rsplit to play safe and allow colons in pathids.
+ pathid_str, revs = rsplit(L.strip(), ":", 1)
+
+ pathid = PathIdentifier.from_pathid(pathid_str)
+
+ # cache the "external" form we saw
+ pathid.external_form = pathid_str
+
+ prop[pathid] = revs
+ return prop
+
+def get_revlist_prop(url_or_dir, propname, rev=None):
+ """Given a repository URL or working copy path and a property
+ name, extract the values of the property which store per-source
+ revision lists and return a dictionary whose key is a source path
+ identifier, and whose value is the revisions for that source."""
+
+ # Note that propget does not return an error if the property does
+ # not exist, it simply does not output anything. So we do not need
+ # to check for LaunchError here.
+ args = '--strict "%s" "%s"' % (propname, url_or_dir)
+ if rev:
+ args = '-r %s %s' % (rev, args)
+ out = launchsvn('propget %s' % args, split_lines=False)
+
+ return dict_from_revlist_prop(out)
+
+def get_merge_props(dir):
+ """Extract the merged revisions."""
+ return get_revlist_prop(dir, opts["prop"])
+
+def get_block_props(dir):
+ """Extract the blocked revisions."""
+ return get_revlist_prop(dir, opts["block-prop"])
+
+def get_blocked_revs(dir, source_pathid):
+ p = get_block_props(dir)
+ if p.has_key(source_pathid):
+ return RevisionSet(p[source_pathid])
+ return RevisionSet("")
+
+def format_merge_props(props, sep=" "):
+ """Formats the hash PROPS as a string suitable for use as a
+ Subversion property value."""
+ assert sep in ["\t", "\n", " "] # must be a whitespace
+ props = props.items()
+ props.sort()
+ L = []
+ for h, r in props:
+ L.append("%s:%s" % (h, r))
+ return sep.join(L)
+
+def _run_propset(dir, prop, value):
+ """Set the property 'prop' of directory 'dir' to value 'value'. We go
+ through a temporary file to not run into command line length limits."""
+ try:
+ fd, fname = tempfile.mkstemp()
+ f = os.fdopen(fd, "wb")
+ except AttributeError:
+ # Fallback for Python <= 2.3 which does not have mkstemp (mktemp
+ # suffers from race conditions. Not that we care...)
+ fname = tempfile.mktemp()
+ f = open(fname, "wb")
+
+ try:
+ f.write(value)
+ f.close()
+ report("property data written to temp file: %s" % value)
+ svn_command('propset "%s" -F "%s" "%s"' % (prop, fname, dir))
+ finally:
+ os.remove(fname)
+
+def set_props(dir, name, props):
+ props = format_merge_props(props)
+ if props:
+ _run_propset(dir, name, props)
+ else:
+ # Check if NAME exists on DIR before trying to delete it.
+ # As of 1.6 propdel no longer supports deleting a
+ # non-existent property.
+ out = launchsvn('propget "%s" "%s"' % (name, dir))
+ if out:
+ svn_command('propdel "%s" "%s"' % (name, dir))
+
+def set_merge_props(dir, props):
+ set_props(dir, opts["prop"], props)
+
+def set_block_props(dir, props):
+ set_props(dir, opts["block-prop"], props)
+
+def set_blocked_revs(dir, source_pathid, revs):
+ props = get_block_props(dir)
+ if revs:
+ props[source_pathid] = str(revs)
+ elif props.has_key(source_pathid):
+ del props[source_pathid]
+ set_block_props(dir, props)
+
+def is_url(url):
+ """Check if url looks like a valid url."""
+ return re.search(r"^[a-zA-Z][-+\.\w]*://[^\s]+$", url) is not None and url[:4] != 'uuid'
+
+def check_url(url):
+ """Similar to is_url, but actually invoke get_svninfo to find out"""
+ return get_svninfo(url) != {}
+
+def is_pathid(pathid):
+ return isinstance(pathid, PathIdentifier)
+
+def is_wc(dir):
+ """Check if a directory is a working copy."""
+ return os.path.isdir(os.path.join(dir, ".svn")) or \
+ os.path.isdir(os.path.join(dir, "_svn"))
+
+_cache_svninfo = {}
+def get_svninfo(target):
+ """Extract the subversion information for a target (through 'svn info').
+ This function uses an internal cache to let clients query information
+ many times."""
+ if _cache_svninfo.has_key(target):
+ return _cache_svninfo[target]
+ info = {}
+ for L in launchsvn('info "%s"' % target):
+ L = L.strip()
+ if not L:
+ continue
+ key, value = L.split(": ", 1)
+ info[key] = value.strip()
+ _cache_svninfo[target] = info
+ return info
+
+def target_to_url(target):
+ """Convert working copy path or repos URL to a repos URL."""
+ if is_wc(target):
+ info = get_svninfo(target)
+ return info["URL"]
+ return target
+
+_cache_reporoot = {}
+def get_repo_root(target):
+ """Compute the root repos URL given a working-copy path, or a URL."""
+ # Try using "svn info WCDIR". This works only on SVN clients >= 1.3
+ if not is_url(target):
+ try:
+ info = get_svninfo(target)
+ root = info["Repository Root"]
+ _cache_reporoot[root] = None
+ return root
+ except KeyError:
+ pass
+ url = target_to_url(target)
+ assert url[-1] != '/'
+ else:
+ url = target
+
+ # Go through the cache of the repository roots. This avoids extra
+ # server round-trips if we are asking the root of different URLs
+ # in the same repository (the cache in get_svninfo() cannot detect
+ # that of course and would issue a remote command).
+ assert is_url(url)
+ for r in _cache_reporoot:
+ if url.startswith(r):
+ return r
+
+ # Try using "svn info URL". This works only on SVN clients >= 1.2
+ try:
+ info = get_svninfo(url)
+ # info may be {}, in which case we'll see KeyError here
+ root = info["Repository Root"]
+ _cache_reporoot[root] = None
+ return root
+ except (KeyError, LaunchError):
+ pass
+
+ # Constrained to older svn clients, we are stuck with this ugly
+ # trial-and-error implementation. It could be made faster with a
+ # binary search.
+ while url:
+ temp = os.path.dirname(url)
+ try:
+ launchsvn('proplist "%s"' % temp)
+ except LaunchError:
+ _cache_reporoot[url] = None
+ return rstrip(url, "/")
+ url = temp
+
+ error("svn repos root of %s not found" % target)
+
+class SvnLogParser:
+ """
+ Parse the "svn log", going through the XML output and using pulldom (which
+ would even allow streaming the command output).
+ """
+ def __init__(self, xml):
+ self._events = pulldom.parseString(xml)
+ def __getitem__(self, idx):
+ for event, node in self._events:
+ if event == pulldom.START_ELEMENT and node.tagName == "logentry":
+ self._events.expandNode(node)
+ return self.SvnLogRevision(node)
+ raise IndexError, "Could not find 'logentry' tag in xml"
+
+ class SvnLogRevision:
+ def __init__(self, xmlnode):
+ self.n = xmlnode
+ def revision(self):
+ return int(self.n.getAttribute("revision"))
+ def author(self):
+ return self.n.getElementsByTagName("author")[0].firstChild.data
+ def paths(self):
+ return [self.SvnLogPath(n)
+ for n in self.n.getElementsByTagName("path")]
+
+ class SvnLogPath:
+ def __init__(self, xmlnode):
+ self.n = xmlnode
+ def action(self):
+ return self.n.getAttribute("action")
+ def pathid(self):
+ return self.n.firstChild.data
+ def copyfrom_rev(self):
+ try: return self.n.getAttribute("copyfrom-rev")
+ except KeyError: return None
+ def copyfrom_pathid(self):
+ try: return self.n.getAttribute("copyfrom-path")
+ except KeyError: return None
+
+def get_copyfrom(target):
+ """Get copyfrom info for a given target (it represents the
+ repository-relative path from where it was branched). NOTE:
+ repos root has no copyfrom info. In this case None is returned.
+
+ Returns the:
+ - source file or directory from which the copy was made
+ - revision from which that source was copied
+ - revision in which the copy was committed
+ """
+ repos_path = PathIdentifier.from_target(target).repo_relative_path
+ for chg in SvnLogParser(launchsvn('log -v --xml --stop-on-copy "%s"'
+ % target, split_lines=False)):
+ for p in chg.paths():
+ if p.action() == 'A' and p.pathid() == repos_path:
+ # These values will be None if the corresponding elements are
+ # not found in the log.
+ return p.copyfrom_pathid(), p.copyfrom_rev(), chg.revision()
+ return None,None,None
+
+def get_latest_rev(url):
+ """Get the latest revision of the repository of which URL is part."""
+ try:
+ info = get_svninfo(url)
+ if not info.has_key("Revision"):
+ error("Not a valid URL: %s" % url)
+ return info["Revision"]
+ except LaunchError:
+ # Alternative method for latest revision checking (for svn < 1.2)
+ report('checking latest revision of "%s"' % url)
+ L = launchsvn('proplist --revprop -r HEAD "%s"' % opts["source-url"])[0]
+ rev = re.search("revision (\d+)", L).group(1)
+ report('latest revision of "%s" is %s' % (url, rev))
+ return rev
+
+def get_created_rev(url):
+ """Lookup the revision at which the path identified by the
+ provided URL was first created."""
+ oldest_rev = -1
+ report('determining oldest revision for URL "%s"' % url)
+ ### TODO: Refactor this to use a modified RevisionLog class.
+ lines = None
+ cmd = "log -r1:HEAD --stop-on-copy -q " + url
+ try:
+ lines = launchsvn(cmd + " --limit=1")
+ except LaunchError:
+ # Assume that --limit isn't supported by the installed 'svn'.
+ lines = launchsvn(cmd)
+ if lines and len(lines) > 1:
+ i = lines[1].find(" ")
+ if i != -1:
+ oldest_rev = int(lines[1][1:i])
+ if oldest_rev == -1:
+ error('unable to determine oldest revision for URL "%s"' % url)
+ return oldest_rev
+
+def get_commit_log(url, revnum):
+ """Return the log message for a specific integer revision
+ number."""
+ out = launchsvn("log --incremental -r%d %s" % (revnum, url))
+ return recode_stdout_to_file("".join(out[1:]))
+
+def construct_merged_log_message(url, revnums):
+ """Return a commit log message containing all the commit messages
+ in the specified revisions at the given URL. The separator used
+ in this log message is determined by searching for the longest
+ svnmerge separator existing in the commit log messages and
+ extending it by one more separator. This results in a new commit
+ log message that is clearer in describing merges that contain
+ other merges. Trailing newlines are removed from the embedded
+ log messages."""
+ messages = ['']
+ longest_sep = ''
+ for r in revnums.sorted():
+ message = get_commit_log(url, r)
+ if message:
+ message = re.sub(r'(\r\n|\r|\n)', "\n", message)
+ message = rstrip(message, "\n") + "\n"
+ messages.append(prefix_lines(LOG_LINE_PREFIX, message))
+ for match in LOG_SEPARATOR_RE.findall(message):
+ sep = match[1]
+ if len(sep) > len(longest_sep):
+ longest_sep = sep
+
+ longest_sep += LOG_SEPARATOR + "\n"
+ messages.append('')
+ return longest_sep.join(messages)
+
+def get_default_source(branch_target, branch_props):
+ """Return the default source for branch_target (given its branch_props).
+ Error out if there is ambiguity."""
+ if not branch_props:
+ error("no integration info available")
+
+ props = branch_props.copy()
+ pathid = PathIdentifier.from_target(branch_target)
+
+ # To make bidirectional merges easier, find the target's
+ # repository local path so it can be removed from the list of
+ # possible integration sources.
+ if props.has_key(pathid):
+ del props[pathid]
+
+ if len(props) > 1:
+ err_msg = "multiple sources found. "
+ err_msg += "Explicit source argument (-S/--source) required.\n"
+ err_msg += "The merge sources available are:"
+ for prop in props:
+ err_msg += "\n " + str(prop)
+ error(err_msg)
+
+ return props.keys()[0]
+
+def should_find_reflected(branch_dir):
+ should_find_reflected = opts["bidirectional"]
+
+ # If the source has integration info for the target, set find_reflected
+ # even if --bidirectional wasn't specified
+ if not should_find_reflected:
+ source_props = get_merge_props(opts["source-url"])
+ should_find_reflected = source_props.has_key(PathIdentifier.from_target(branch_dir))
+
+ return should_find_reflected
+
+def analyze_revs(target_pathid, url, begin=1, end=None,
+ find_reflected=False):
+ """For the source of the merges in the source URL being merged into
+ target_pathid, analyze the revisions in the interval begin-end (which
+ defaults to 1-HEAD), to find out which revisions are changes in
+ the url, which are changes elsewhere (so-called 'phantom'
+ revisions), optionally which are reflected changes (to avoid
+ conflicts that can occur when doing bidirectional merging between
+ branches), and which revisions initialize merge tracking against other
+ branches. Return a tuple of four RevisionSet's:
+ (real_revs, phantom_revs, reflected_revs, initialized_revs).
+
+ NOTE: To maximize speed, if "end" is not provided, the function is
+ not able to find phantom revisions following the last real
+ revision in the URL.
+ """
+
+ begin = str(begin)
+ if end is None:
+ end = "HEAD"
+ else:
+ end = str(end)
+ if long(begin) > long(end):
+ return RevisionSet(""), RevisionSet(""), \
+ RevisionSet(""), RevisionSet("")
+
+ logs[url] = RevisionLog(url, begin, end, find_reflected)
+ revs = RevisionSet(logs[url].revs)
+
+ if end == "HEAD":
+ # If end is not provided, we do not know which is the latest revision
+ # in the repository. So return the phantom revision set only up to
+ # the latest known revision.
+ end = str(list(revs)[-1])
+
+ phantom_revs = RevisionSet("%s-%s" % (begin, end)) - revs
+
+ if find_reflected:
+ reflected_revs = logs[url].merge_metadata().changed_revs(target_pathid)
+ reflected_revs += logs[url].block_metadata().changed_revs(target_pathid)
+ else:
+ reflected_revs = []
+
+ initialized_revs = RevisionSet(logs[url].merge_metadata().initialized_revs())
+ reflected_revs = RevisionSet(reflected_revs)
+
+ return revs, phantom_revs, reflected_revs, initialized_revs
+
+def analyze_source_revs(branch_target, source_url, **kwargs):
+ """For the given branch and source, extract the real and phantom
+ source revisions."""
+ branch_url = target_to_url(branch_target)
+ branch_pathid = PathIdentifier.from_target(branch_target)
+
+ # Extract the latest repository revision from the URL of the branch
+ # directory (which is already cached at this point).
+ end_rev = get_latest_rev(source_url)
+
+ # Calculate the base of analysis. If there is a "1-XX" interval in the
+ # merged_revs, we do not need to check those.
+ base = 1
+ r = opts["merged-revs"].normalized()
+ if r and r[0][0] == 1:
+ base = r[0][1] + 1
+
+ # See if the user filtered the revision set. If so, we are not
+ # interested in something outside that range.
+ if opts["revision"]:
+ revs = RevisionSet(opts["revision"]).sorted()
+ if base < revs[0]:
+ base = revs[0]
+ if end_rev > revs[-1]:
+ end_rev = revs[-1]
+
+ return analyze_revs(branch_pathid, source_url, base, end_rev, **kwargs)
+
+def minimal_merge_intervals(revs, phantom_revs):
+ """Produce the smallest number of intervals suitable for merging. revs
+ is the RevisionSet which we want to merge, and phantom_revs are phantom
+ revisions which can be used to concatenate intervals, thus minimizing the
+ number of operations."""
+ revnums = revs.normalized()
+ ret = []
+
+ cur = revnums.pop()
+ while revnums:
+ next = revnums.pop()
+ assert next[1] < cur[0] # otherwise it is not ordered
+ assert cur[0] - next[1] > 1 # otherwise it is not normalized
+ for i in range(next[1]+1, cur[0]):
+ if i not in phantom_revs:
+ ret.append(cur)
+ cur = next
+ break
+ else:
+ cur = (next[0], cur[1])
+
+ ret.append(cur)
+ ret.reverse()
+ return ret
+
+def display_revisions(revs, display_style, revisions_msg, source_url):
+ """Show REVS as dictated by DISPLAY_STYLE, either numerically, in
+ log format, or as diffs. When displaying revisions numerically,
+ prefix output with REVISIONS_MSG when in verbose mode. Otherwise,
+ request logs or diffs using SOURCE_URL."""
+ if display_style == "revisions":
+ if revs:
+ report(revisions_msg)
+ print revs
+ elif display_style == "logs":
+ for start,end in revs.normalized():
+ svn_command('log --incremental -v -r %d:%d %s' % \
+ (start, end, source_url))
+ elif display_style in ("diffs", "summarize"):
+ if display_style == 'summarize':
+ summarize = '--summarize '
+ else:
+ summarize = ''
+
+ for start, end in revs.normalized():
+ print
+ if start == end:
+ print "%s: changes in revision %d follow" % (NAME, start)
+ else:
+ print "%s: changes in revisions %d-%d follow" % (NAME,
+ start, end)
+ print
+
+ # Note: the starting revision number to 'svn diff' is
+ # NOT inclusive so we have to subtract one from ${START}.
+ svn_command("diff -r %d:%d %s %s" % (start - 1, end, summarize,
+ source_url))
+ else:
+ assert False, "unhandled display style: %s" % display_style
+
+def action_init(target_dir, target_props):
+ """Initialize for merges."""
+ # Check that directory is ready for being modified
+ check_dir_clean(target_dir)
+
+ target_pathid = PathIdentifier.from_target(target_dir)
+ source_pathid = opts['source-pathid']
+ if source_pathid == target_pathid:
+ error("cannot init integration source path '%s'\nIts path identifier does not "
+ "differ from the path identifier of the current directory, '%s'."
+ % (source_pathid, target_pathid))
+
+ source_url = opts['source-url']
+
+ # If the user hasn't specified the revisions to use, see if the
+ # "source" is a copy from the current tree and if so, we can use
+ # the version data obtained from it.
+ revision_range = opts["revision"]
+ if not revision_range:
+ # If source was originally copied from target, and we are merging
+ # changes from source to target (the copy target is the merge source,
+ # and the copy source is the merge target), then we want to mark as
+ # integrated up to the rev in which the copy was committed which
+ # created the merge source:
+ cf_source, cf_rev, copy_committed_in_rev = get_copyfrom(source_url)
+
+ cf_pathid = None
+ if cf_source:
+ cf_url = get_repo_root(source_url) + cf_source
+ if is_url(cf_url) and check_url(cf_url):
+ cf_pathid = PathIdentifier.from_target(cf_url)
+
+ if target_pathid == cf_pathid:
+ report('the source "%s" was copied from "%s" in rev %s and committed in rev %s' %
+ (source_url, target_dir, cf_rev, copy_committed_in_rev))
+ revision_range = "1-" + str(copy_committed_in_rev)
+
+ if not revision_range:
+ # If the reverse is true: copy source is the merge source, and
+ # the copy target is the merge target, then we want to mark as
+ # integrated up to the specific rev of the merge target from
+ # which the merge source was copied. (Longer discussion at:
+ # http://subversion.tigris.org/issues/show_bug.cgi?id=2810 )
+ cf_source, cf_rev, copy_committed_in_rev = get_copyfrom(target_dir)
+
+ cf_pathid = None
+ if cf_source:
+ cf_url = get_repo_root(target_dir) + cf_source
+ if is_url(cf_url) and check_url(cf_url):
+ cf_pathid = PathIdentifier.from_target(cf_url)
+
+ source_pathid = PathIdentifier.from_target(source_url)
+ if source_pathid == cf_pathid:
+ report('the target "%s" was copied the source "%s" in rev %s and committed in rev %s' %
+ (target_dir, source_url, cf_rev, copy_committed_in_rev))
+ revision_range = "1-" + cf_rev
+
+ # When neither the merge source nor target is a copy of the other, and
+ # the user did not specify a revision range, then choose a default which is
+ # the current revision; saying, in effect, "everything has been merged, so
+ # mark as integrated up to the latest rev on source url).
+ if not revision_range:
+ revision_range = "1-" + get_latest_rev(source_url)
+
+ revs = RevisionSet(revision_range)
+
+ report('marking "%s" as already containing revisions "%s" of "%s"' %
+ (target_dir, revs, source_url))
+
+ revs = str(revs)
+ # If the local svnmerge-integrated property already has an entry
+ # for the source-pathid, simply error out.
+ if not opts["force"] and target_props.has_key(source_pathid):
+ error('Repository-relative path %s has already been initialized at %s\n'
+ 'Use --force to re-initialize' % (source_pathid, target_dir))
+ # set the pathid's external_form based on the user's options
+ source_pathid.external_form = source_pathid.format(opts['location-type'])
+
+ revs = str(revs)
+ target_props[source_pathid] = revs
+
+ # Set property
+ set_merge_props(target_dir, target_props)
+
+ # Write out commit message if desired
+ if opts["commit-file"]:
+ f = open(opts["commit-file"], "w")
+ print >>f, 'Initialized merge tracking via "%s" with revisions "%s" from ' \
+ % (NAME, revs)
+ print >>f, '%s' % source_url
+ f.close()
+ report('wrote commit message to "%s"' % opts["commit-file"])
+
+def action_avail(branch_dir, branch_props):
+ """Show commits available for merges."""
+ source_revs, phantom_revs, reflected_revs, initialized_revs = \
+ analyze_source_revs(branch_dir, opts["source-url"],
+ find_reflected=
+ should_find_reflected(branch_dir))
+ report('skipping phantom revisions: %s' % phantom_revs)
+ if reflected_revs:
+ report('skipping reflected revisions: %s' % reflected_revs)
+ report('skipping initialized revisions: %s' % initialized_revs)
+
+ blocked_revs = get_blocked_revs(branch_dir, opts["source-pathid"])
+ avail_revs = source_revs - opts["merged-revs"] - blocked_revs - \
+ reflected_revs - initialized_revs
+
+ # Compose the set of revisions to show
+ revs = RevisionSet("")
+ report_msg = "revisions available to be merged are:"
+ if "avail" in opts["avail-showwhat"]:
+ revs |= avail_revs
+ if "blocked" in opts["avail-showwhat"]:
+ revs |= blocked_revs
+ report_msg = "revisions blocked are:"
+
+ # Limit to revisions specified by -r (if any)
+ if opts["revision"]:
+ revs = revs & RevisionSet(opts["revision"])
+
+ display_revisions(revs, opts["avail-display"],
+ report_msg,
+ opts["source-url"])
+
+def action_integrated(branch_dir, branch_props):
+ """Show change sets already merged. This set of revisions is
+ calculated from taking svnmerge-integrated property from the
+ branch, and subtracting any revision older than the branch
+ creation revision."""
+ # Extract the integration info for the branch_dir
+ branch_props = get_merge_props(branch_dir)
+ revs = merge_props_to_revision_set(branch_props, opts["source-pathid"])
+
+ # Lookup the oldest revision on the branch path.
+ oldest_src_rev = get_created_rev(opts["source-url"])
+
+ # Subtract any revisions which pre-date the branch.
+ report("subtracting revisions which pre-date the source URL (%d)" %
+ oldest_src_rev)
+ revs = revs - RevisionSet(range(1, oldest_src_rev))
+
+ # Limit to revisions specified by -r (if any)
+ if opts["revision"]:
+ revs = revs & RevisionSet(opts["revision"])
+
+ display_revisions(revs, opts["integrated-display"],
+ "revisions already integrated are:", opts["source-url"])
+
+def action_merge(branch_dir, branch_props):
+ """Record merge meta data, and do the actual merge (if not
+ requested otherwise via --record-only)."""
+ # Check branch directory is ready for being modified
+ check_dir_clean(branch_dir)
+
+ source_revs, phantom_revs, reflected_revs, initialized_revs = \
+ analyze_source_revs(branch_dir, opts["source-url"],
+ find_reflected=
+ should_find_reflected(branch_dir))
+
+ if opts["revision"]:
+ revs = RevisionSet(opts["revision"])
+ else:
+ revs = source_revs
+
+ blocked_revs = get_blocked_revs(branch_dir, opts["source-pathid"])
+ merged_revs = opts["merged-revs"]
+
+ # Show what we're doing
+ if opts["verbose"]: # just to avoid useless calculations
+ if merged_revs & revs:
+ report('"%s" already contains revisions %s' % (branch_dir,
+ merged_revs & revs))
+ if phantom_revs:
+ report('memorizing phantom revision(s): %s' % phantom_revs)
+ if reflected_revs:
+ report('memorizing reflected revision(s): %s' % reflected_revs)
+ if blocked_revs & revs:
+ report('skipping blocked revisions(s): %s' % (blocked_revs & revs))
+ if initialized_revs:
+ report('skipping initialized revision(s): %s' % initialized_revs)
+
+ # Compute final merge set.
+ revs = revs - merged_revs - blocked_revs - reflected_revs - \
+ phantom_revs - initialized_revs
+ if not revs:
+ report('no revisions to merge, exiting')
+ return
+
+ # When manually marking revisions as merged, we only update the
+ # integration meta data, and don't perform an actual merge.
+ record_only = opts["record-only"]
+
+ if record_only:
+ report('recording merge of revision(s) %s from "%s"' %
+ (revs, opts["source-url"]))
+ else:
+ report('merging in revision(s) %s from "%s"' %
+ (revs, opts["source-url"]))
+
+ # Do the merge(s). Note: the starting revision number to 'svn merge'
+ # is NOT inclusive so we have to subtract one from start.
+ # We try to keep the number of merge operations as low as possible,
+ # because it is faster and reduces the number of conflicts.
+ old_block_props = get_block_props(branch_dir)
+ merge_metadata = logs[opts["source-url"]].merge_metadata()
+ block_metadata = logs[opts["source-url"]].block_metadata()
+ for start,end in minimal_merge_intervals(revs, phantom_revs):
+ if not record_only:
+ # Preset merge/blocked properties to the source value at
+ # the start rev to avoid spurious property conflicts
+ set_merge_props(branch_dir, merge_metadata.get(start - 1))
+ set_block_props(branch_dir, block_metadata.get(start - 1))
+ # Do the merge
+ svn_command("merge --force -r %d:%d %s %s" % \
+ (start - 1, end, opts["source-url"], branch_dir))
+ # TODO: to support graph merging, add logic to merge the property
+ # meta-data manually
+
+ # Update the set of merged revisions.
+ merged_revs = merged_revs | revs | reflected_revs | phantom_revs | initialized_revs
+ branch_props[opts["source-pathid"]] = str(merged_revs)
+ set_merge_props(branch_dir, branch_props)
+ # Reset the blocked revs
+ set_block_props(branch_dir, old_block_props)
+
+ # Write out commit message if desired
+ if opts["commit-file"]:
+ f = open(opts["commit-file"], "w")
+ if record_only:
+ print >>f, 'Recorded merge of revisions %s via %s from ' % \
+ (revs, NAME)
+ else:
+ print >>f, 'Merged revisions %s via %s from ' % \
+ (revs, NAME)
+ print >>f, '%s' % opts["source-url"]
+ if opts["commit-verbose"]:
+ print >>f
+ print >>f, construct_merged_log_message(opts["source-url"], revs),
+
+ f.close()
+ report('wrote commit message to "%s"' % opts["commit-file"])
+
+def action_block(branch_dir, branch_props):
+ """Block revisions."""
+ # Check branch directory is ready for being modified
+ check_dir_clean(branch_dir)
+
+ source_revs, phantom_revs, reflected_revs, initialized_revs = \
+ analyze_source_revs(branch_dir, opts["source-url"])
+ revs_to_block = source_revs - opts["merged-revs"]
+
+ # Limit to revisions specified by -r (if any)
+ if opts["revision"]:
+ revs_to_block = RevisionSet(opts["revision"]) & revs_to_block
+
+ if not revs_to_block:
+ error('no available revisions to block')
+
+ # Change blocked information
+ blocked_revs = get_blocked_revs(branch_dir, opts["source-pathid"])
+ blocked_revs = blocked_revs | revs_to_block
+ set_blocked_revs(branch_dir, opts["source-pathid"], blocked_revs)
+
+ # Write out commit message if desired
+ if opts["commit-file"]:
+ f = open(opts["commit-file"], "w")
+ print >>f, 'Blocked revisions %s via %s' % (revs_to_block, NAME)
+ if opts["commit-verbose"]:
+ print >>f
+ print >>f, construct_merged_log_message(opts["source-url"],
+ revs_to_block),
+
+ f.close()
+ report('wrote commit message to "%s"' % opts["commit-file"])
+
+def action_unblock(branch_dir, branch_props):
+ """Unblock revisions."""
+ # Check branch directory is ready for being modified
+ check_dir_clean(branch_dir)
+
+ blocked_revs = get_blocked_revs(branch_dir, opts["source-pathid"])
+ revs_to_unblock = blocked_revs
+
+ # Limit to revisions specified by -r (if any)
+ if opts["revision"]:
+ revs_to_unblock = revs_to_unblock & RevisionSet(opts["revision"])
+
+ if not revs_to_unblock:
+ error('no available revisions to unblock')
+
+ # Change blocked information
+ blocked_revs = blocked_revs - revs_to_unblock
+ set_blocked_revs(branch_dir, opts["source-pathid"], blocked_revs)
+
+ # Write out commit message if desired
+ if opts["commit-file"]:
+ f = open(opts["commit-file"], "w")
+ print >>f, 'Unblocked revisions %s via %s' % (revs_to_unblock, NAME)
+ if opts["commit-verbose"]:
+ print >>f
+ print >>f, construct_merged_log_message(opts["source-url"],
+ revs_to_unblock),
+ f.close()
+ report('wrote commit message to "%s"' % opts["commit-file"])
+
+def action_rollback(branch_dir, branch_props):
+ """Rollback previously integrated revisions."""
+
+ # Make sure the revision arguments are present
+ if not opts["revision"]:
+ error("The '-r' option is mandatory for rollback")
+
+ # Check branch directory is ready for being modified
+ check_dir_clean(branch_dir)
+
+ # Extract the integration info for the branch_dir
+ branch_props = get_merge_props(branch_dir)
+ # Get the list of all revisions already merged into this source-pathid.
+ merged_revs = merge_props_to_revision_set(branch_props,
+ opts["source-pathid"])
+
+ # At which revision was the src created?
+ oldest_src_rev = get_created_rev(opts["source-url"])
+ src_pre_exist_range = RevisionSet("1-%d" % oldest_src_rev)
+
+ # Limit to revisions specified by -r (if any)
+ revs = merged_revs & RevisionSet(opts["revision"])
+
+ # make sure there's some revision to rollback
+ if not revs:
+ report("Nothing to rollback in revision range r%s" % opts["revision"])
+ return
+
+ # If even one specified revision lies outside the lifetime of the
+ # merge source, error out.
+ if revs & src_pre_exist_range:
+ err_str = "Specified revision range falls out of the rollback range.\n"
+ err_str += "%s was created at r%d" % (opts["source-pathid"],
+ oldest_src_rev)
+ error(err_str)
+
+ record_only = opts["record-only"]
+
+ if record_only:
+ report('recording rollback of revision(s) %s from "%s"' %
+ (revs, opts["source-url"]))
+ else:
+ report('rollback of revision(s) %s from "%s"' %
+ (revs, opts["source-url"]))
+
+ # Do the reverse merge(s). Note: the starting revision number
+ # to 'svn merge' is NOT inclusive so we have to subtract one from start.
+ # We try to keep the number of merge operations as low as possible,
+ # because it is faster and reduces the number of conflicts.
+ rollback_intervals = minimal_merge_intervals(revs, [])
+ # rollback in the reverse order of merge
+ rollback_intervals.reverse()
+ for start, end in rollback_intervals:
+ if not record_only:
+ # Do the merge
+ svn_command("merge --force -r %d:%d %s %s" % \
+ (end, start - 1, opts["source-url"], branch_dir))
+
+ # Write out commit message if desired
+ # calculate the phantom revs first
+ if opts["commit-file"]:
+ f = open(opts["commit-file"], "w")
+ if record_only:
+ print >>f, 'Recorded rollback of revisions %s via %s from ' % \
+ (revs , NAME)
+ else:
+ print >>f, 'Rolled back revisions %s via %s from ' % \
+ (revs , NAME)
+ print >>f, '%s' % opts["source-url"]
+
+ f.close()
+ report('wrote commit message to "%s"' % opts["commit-file"])
+
+ # Update the set of merged revisions.
+ merged_revs = merged_revs - revs
+ branch_props[opts["source-pathid"]] = str(merged_revs)
+ set_merge_props(branch_dir, branch_props)
+
+def action_uninit(branch_dir, branch_props):
+ """Uninit SOURCE URL."""
+ # Check branch directory is ready for being modified
+ check_dir_clean(branch_dir)
+
+ # If the source-pathid does not have an entry in the svnmerge-integrated
+ # property, simply error out.
+ if not branch_props.has_key(opts["source-pathid"]):
+ error('Repository-relative path "%s" does not contain merge '
+ 'tracking information for "%s"' \
+ % (opts["source-pathid"], branch_dir))
+
+ del branch_props[opts["source-pathid"]]
+
+ # Set merge property with the selected source deleted
+ set_merge_props(branch_dir, branch_props)
+
+ # Set blocked revisions for the selected source to None
+ set_blocked_revs(branch_dir, opts["source-pathid"], None)
+
+ # Write out commit message if desired
+ if opts["commit-file"]:
+ f = open(opts["commit-file"], "w")
+ print >>f, 'Removed merge tracking for "%s" for ' % NAME
+ print >>f, '%s' % opts["source-url"]
+ f.close()
+ report('wrote commit message to "%s"' % opts["commit-file"])
+
+###############################################################################
+# Command line parsing -- options and commands management
+###############################################################################
+
+class OptBase:
+ def __init__(self, *args, **kwargs):
+ self.help = kwargs["help"]
+ del kwargs["help"]
+ self.lflags = []
+ self.sflags = []
+ for a in args:
+ if a.startswith("--"): self.lflags.append(a)
+ elif a.startswith("-"): self.sflags.append(a)
+ else:
+ raise TypeError, "invalid flag name: %s" % a
+ if kwargs.has_key("dest"):
+ self.dest = kwargs["dest"]
+ del kwargs["dest"]
+ else:
+ if not self.lflags:
+ raise TypeError, "cannot deduce dest name without long options"
+ self.dest = self.lflags[0][2:]
+ if kwargs:
+ raise TypeError, "invalid keyword arguments: %r" % kwargs.keys()
+ def repr_flags(self):
+ f = self.sflags + self.lflags
+ r = f[0]
+ for fl in f[1:]:
+ r += " [%s]" % fl
+ return r
+
+class Option(OptBase):
+ def __init__(self, *args, **kwargs):
+ self.default = kwargs.setdefault("default", 0)
+ del kwargs["default"]
+ self.value = kwargs.setdefault("value", None)
+ del kwargs["value"]
+ OptBase.__init__(self, *args, **kwargs)
+ def apply(self, state, value):
+ assert value == ""
+ if self.value is not None:
+ state[self.dest] = self.value
+ else:
+ state[self.dest] += 1
+
+class OptionArg(OptBase):
+ def __init__(self, *args, **kwargs):
+ self.default = kwargs["default"]
+ del kwargs["default"]
+ self.metavar = kwargs.setdefault("metavar", None)
+ del kwargs["metavar"]
+ OptBase.__init__(self, *args, **kwargs)
+
+ if self.metavar is None:
+ if self.dest is not None:
+ self.metavar = self.dest.upper()
+ else:
+ self.metavar = "arg"
+ if self.default:
+ self.help += " (default: %s)" % self.default
+ def apply(self, state, value):
+ assert value is not None
+ state[self.dest] = value
+ def repr_flags(self):
+ r = OptBase.repr_flags(self)
+ return r + " " + self.metavar
+
+class CommandOpts:
+ class Cmd:
+ def __init__(self, *args):
+ self.name, self.func, self.usage, self.help, self.opts = args
+ def short_help(self):
+ return self.help.split(".")[0]
+ def __str__(self):
+ return self.name
+ def __call__(self, *args, **kwargs):
+ return self.func(*args, **kwargs)
+
+ def __init__(self, global_opts, common_opts, command_table, version=None):
+ self.progname = NAME
+ self.version = version.replace("%prog", self.progname)
+ self.cwidth = console_width() - 2
+ self.ctable = command_table.copy()
+ self.gopts = global_opts[:]
+ self.copts = common_opts[:]
+ self._add_builtins()
+ for k in self.ctable.keys():
+ cmd = self.Cmd(k, *self.ctable[k])
+ opts = []
+ for o in cmd.opts:
+ if isinstance(o, types.StringType) or \
+ isinstance(o, types.UnicodeType):
+ o = self._find_common(o)
+ opts.append(o)
+ cmd.opts = opts
+ self.ctable[k] = cmd
+
+ def _add_builtins(self):
+ self.gopts.append(
+ Option("-h", "--help", help="show help for this command and exit"))
+ if self.version is not None:
+ self.gopts.append(
+ Option("-V", "--version", help="show version info and exit"))
+ self.ctable["help"] = (self._cmd_help,
+ "help [COMMAND]",
+ "Display help for a specific command. If COMMAND is omitted, "
+ "display brief command description.",
+ [])
+
+ def _cmd_help(self, cmd=None, *args):
+ if args:
+ self.error("wrong number of arguments", "help")
+ if cmd is not None:
+ cmd = self._command(cmd)
+ self.print_command_help(cmd)
+ else:
+ self.print_command_list()
+
+ def _paragraph(self, text, width=78):
+ chunks = re.split("\s+", text.strip())
+ chunks.reverse()
+ lines = []
+ while chunks:
+ L = chunks.pop()
+ while chunks and len(L) + len(chunks[-1]) + 1 <= width:
+ L += " " + chunks.pop()
+ lines.append(L)
+ return lines
+
+ def _paragraphs(self, text, *args, **kwargs):
+ pars = text.split("\n\n")
+ lines = self._paragraph(pars[0], *args, **kwargs)
+ for p in pars[1:]:
+ lines.append("")
+ lines.extend(self._paragraph(p, *args, **kwargs))
+ return lines
+
+ def _print_wrapped(self, text, indent=0):
+ text = self._paragraphs(text, self.cwidth - indent)
+ print text.pop(0)
+ for t in text:
+ print " " * indent + t
+
+ def _find_common(self, fl):
+ for o in self.copts:
+ if fl in o.lflags+o.sflags:
+ return o
+ assert False, fl
+
+ def _compute_flags(self, opts, check_conflicts=True):
+ back = {}
+ sfl = ""
+ lfl = []
+ for o in opts:
+ sapp = lapp = ""
+ if isinstance(o, OptionArg):
+ sapp, lapp = ":", "="
+ for s in o.sflags:
+ if check_conflicts and back.has_key(s):
+ raise RuntimeError, "option conflict: %s" % s
+ back[s] = o
+ sfl += s[1:] + sapp
+ for l in o.lflags:
+ if check_conflicts and back.has_key(l):
+ raise RuntimeError, "option conflict: %s" % l
+ back[l] = o
+ lfl.append(l[2:] + lapp)
+ return sfl, lfl, back
+
+ def _extract_command(self, args):
+ """
+ Try to extract the command name from the argument list. This is
+ non-trivial because we want to allow command-specific options even
+ before the command itself.
+ """
+ opts = self.gopts[:]
+ for cmd in self.ctable.values():
+ opts.extend(cmd.opts)
+ sfl, lfl, _ = self._compute_flags(opts, check_conflicts=False)
+
+ lopts,largs = getopt.getopt(args, sfl, lfl)
+ if not largs:
+ return None
+ return self._command(largs[0])
+
+ def _fancy_getopt(self, args, opts, state=None):
+ if state is None:
+ state= {}
+ for o in opts:
+ if not state.has_key(o.dest):
+ state[o.dest] = o.default
+
+ sfl, lfl, back = self._compute_flags(opts)
+ try:
+ lopts,args = getopt.gnu_getopt(args, sfl, lfl)
+ except AttributeError:
+ # Before Python 2.3, there was no gnu_getopt support.
+ # So we can't parse intermixed positional arguments
+ # and options.
+ lopts,args = getopt.getopt(args, sfl, lfl)
+
+ for o,v in lopts:
+ back[o].apply(state, v)
+ return state, args
+
+ def _command(self, cmd):
+ if not self.ctable.has_key(cmd):
+ self.error("unknown command: '%s'" % cmd)
+ return self.ctable[cmd]
+
+ def parse(self, args):
+ if not args:
+ self.print_small_help()
+ sys.exit(0)
+
+ cmd = None
+ try:
+ cmd = self._extract_command(args)
+ opts = self.gopts[:]
+ if cmd:
+ opts.extend(cmd.opts)
+ args.remove(cmd.name)
+ state, args = self._fancy_getopt(args, opts)
+ except getopt.GetoptError, e:
+ self.error(e, cmd)
+
+ # Handle builtins
+ if self.version is not None and state["version"]:
+ self.print_version()
+ sys.exit(0)
+ if state["help"]: # special case for --help
+ if cmd:
+ self.print_command_help(cmd)
+ sys.exit(0)
+ cmd = self.ctable["help"]
+ else:
+ if cmd is None:
+ self.error("command argument required")
+ if str(cmd) == "help":
+ cmd(*args)
+ sys.exit(0)
+ return cmd, args, state
+
+ def error(self, s, cmd=None):
+ print >>sys.stderr, "%s: %s" % (self.progname, s)
+ if cmd is not None:
+ self.print_command_help(cmd)
+ else:
+ self.print_small_help()
+ sys.exit(1)
+ def print_small_help(self):
+ print "Type '%s help' for usage" % self.progname
+ def print_usage_line(self):
+ print "usage: %s <subcommand> [options...] [args...]\n" % self.progname
+ def print_command_list(self):
+ print "Available commands (use '%s help COMMAND' for more details):\n" \
+ % self.progname
+ cmds = self.ctable.keys()
+ cmds.sort()
+ indent = max(map(len, cmds))
+ for c in cmds:
+ h = self.ctable[c].short_help()
+ print " %-*s " % (indent, c),
+ self._print_wrapped(h, indent+6)
+ def print_command_help(self, cmd):
+ cmd = self.ctable[str(cmd)]
+ print 'usage: %s %s\n' % (self.progname, cmd.usage)
+ self._print_wrapped(cmd.help)
+ def print_opts(opts, self=self):
+ if not opts: return
+ flags = [o.repr_flags() for o in opts]
+ indent = max(map(len, flags))
+ for f,o in zip(flags, opts):
+ print " %-*s :" % (indent, f),
+ self._print_wrapped(o.help, indent+5)
+ print '\nCommand options:'
+ print_opts(cmd.opts)
+ print '\nGlobal options:'
+ print_opts(self.gopts)
+
+ def print_version(self):
+ print self.version
+
+###############################################################################
+# Options and Commands description
+###############################################################################
+
+global_opts = [
+ Option("-F", "--force",
+ help="force operation even if the working copy is not clean, or "
+ "there are pending updates"),
+ Option("-n", "--dry-run",
+ help="don't actually change anything, just pretend; "
+ "implies --show-changes"),
+ Option("-s", "--show-changes",
+ help="show subversion commands that make changes"),
+ Option("-v", "--verbose",
+ help="verbose mode: output more information about progress"),
+ OptionArg("-u", "--username",
+ default=None,
+ help="invoke subversion commands with the supplied username"),
+ OptionArg("-p", "--password",
+ default=None,
+ help="invoke subversion commands with the supplied password"),
+ OptionArg("-c", "--config-dir", metavar="DIR",
+ default=None,
+ help="cause subversion commands to consult runtime config directory DIR"),
+]
+
+common_opts = [
+ Option("-b", "--bidirectional",
+ value=True,
+ default=False,
+ help="remove reflected and initialized revisions from merge candidates. "
+ "Not required but may be specified to speed things up slightly"),
+ OptionArg("-f", "--commit-file", metavar="FILE",
+ default="svnmerge-commit-message.txt",
+ help="set the name of the file where the suggested log message "
+ "is written to"),
+ Option("-M", "--record-only",
+ value=True,
+ default=False,
+ help="do not perform an actual merge of the changes, yet record "
+ "that a merge happened"),
+ OptionArg("-r", "--revision",
+ metavar="REVLIST",
+ default="",
+ help="specify a revision list, consisting of revision numbers "
+ 'and ranges separated by commas, e.g., "534,537-539,540"'),
+ OptionArg("-S", "--source", "--head",
+ default=None,
+ help="specify a merge source for this branch. It can be either "
+ "a working directory path, a full URL, or an unambiguous "
+ "substring of one of the locations for which merge tracking was "
+ "already initialized. Needed only to disambiguate in case of "
+ "multiple merge sources"),
+]
+
+command_table = {
+ "init": (action_init,
+ "init [OPTION...] [SOURCE]",
+ """Initialize merge tracking from SOURCE on the current working
+ directory.
+
+ If SOURCE is specified, all the revisions in SOURCE are marked as already
+ merged; if this is not correct, you can use --revision to specify the
+ exact list of already-merged revisions.
+
+ If SOURCE is omitted, then it is computed from the "svn cp" history of the
+ current working directory (searching back for the branch point); in this
+ case, %s assumes that no revision has been integrated yet since
+ the branch point (unless you teach it with --revision).""" % NAME,
+ [
+ "-f", "-r", # import common opts
+ OptionArg("-L", "--location-type",
+ dest="location-type",
+ default="path",
+ help="Use this type of location identifier in the new " +
+ "Subversion properties; 'uuid', 'url', or 'path' " +
+ "(default)"),
+ ]),
+
+ "avail": (action_avail,
+ "avail [OPTION...] [PATH]",
+ """Show unmerged revisions available for PATH as a revision list.
+ If --revision is given, the revisions shown will be limited to those
+ also specified in the option.
+
+ When svnmerge is used to bidirectionally merge changes between a
+ branch and its source, it is necessary to not merge the same changes
+ forth and back: e.g., if you committed a merge of a certain
+ revision of the branch into the source, you do not want that commit
+ to appear as available to merged into the branch (as the code
+ originated in the branch itself!). svnmerge will automatically
+ exclude these so-called "reflected" revisions.""",
+ [
+ Option("-A", "--all",
+ dest="avail-showwhat",
+ value=["blocked", "avail"],
+ default=["avail"],
+ help="show both available and blocked revisions (aka ignore "
+ "blocked revisions)"),
+ "-b",
+ Option("-B", "--blocked",
+ dest="avail-showwhat",
+ value=["blocked"],
+ help="show the blocked revision list (see '%s block')" % NAME),
+ Option("-d", "--diff",
+ dest="avail-display",
+ value="diffs",
+ default="revisions",
+ help="show corresponding diff instead of revision list"),
+ Option("--summarize",
+ dest="avail-display",
+ value="summarize",
+ help="show summarized diff instead of revision list"),
+ Option("-l", "--log",
+ dest="avail-display",
+ value="logs",
+ help="show corresponding log history instead of revision list"),
+ "-r",
+ "-S",
+ ]),
+
+ "integrated": (action_integrated,
+ "integrated [OPTION...] [PATH]",
+ """Show merged revisions available for PATH as a revision list.
+ If --revision is given, the revisions shown will be limited to
+ those also specified in the option.""",
+ [
+ Option("-d", "--diff",
+ dest="integrated-display",
+ value="diffs",
+ default="revisions",
+ help="show corresponding diff instead of revision list"),
+ Option("-l", "--log",
+ dest="integrated-display",
+ value="logs",
+ help="show corresponding log history instead of revision list"),
+ "-r",
+ "-S",
+ ]),
+
+ "rollback": (action_rollback,
+ "rollback [OPTION...] [PATH]",
+ """Rollback previously merged in revisions from PATH. The
+ --revision option is mandatory, and specifies which revisions
+ will be rolled back. Only the previously integrated merges
+ will be rolled back.
+
+ When manually rolling back changes, --record-only can be used to
+ instruct %s that a manual rollback of a certain revision
+ already happened, so that it can record it and offer that
+ revision for merge henceforth.""" % (NAME),
+ [
+ "-f", "-r", "-S", "-M", # import common opts
+ ]),
+
+ "merge": (action_merge,
+ "merge [OPTION...] [PATH]",
+ """Merge in revisions into PATH from its source. If --revision is omitted,
+ all the available revisions will be merged. In any case, already merged-in
+ revisions will NOT be merged again.
+
+ When svnmerge is used to bidirectionally merge changes between a
+ branch and its source, it is necessary to not merge the same changes
+ forth and back: e.g., if you committed a merge of a certain
+ revision of the branch into the source, you do not want that commit
+ to appear as available to merged into the branch (as the code
+ originated in the branch itself!). svnmerge will automatically
+ exclude these so-called "reflected" revisions.
+
+ When manually merging changes across branches, --record-only can
+ be used to instruct %s that a manual merge of a certain revision
+ already happened, so that it can record it and not offer that
+ revision for merge anymore. Conversely, when there are revisions
+ which should not be merged, use '%s block'.""" % (NAME, NAME),
+ [
+ "-b", "-f", "-r", "-S", "-M", # import common opts
+ ]),
+
+ "block": (action_block,
+ "block [OPTION...] [PATH]",
+ """Block revisions within PATH so that they disappear from the available
+ list. This is useful to hide revisions which will not be integrated.
+ If --revision is omitted, it defaults to all the available revisions.
+
+ Do not use this option to hide revisions that were manually merged
+ into the branch. Instead, use '%s merge --record-only', which
+ records that a merge happened (as opposed to a merge which should
+ not happen).""" % NAME,
+ [
+ "-f", "-r", "-S", # import common opts
+ ]),
+
+ "unblock": (action_unblock,
+ "unblock [OPTION...] [PATH]",
+ """Revert the effect of '%s block'. If --revision is omitted, all the
+ blocked revisions are unblocked""" % NAME,
+ [
+ "-f", "-r", "-S", # import common opts
+ ]),
+
+ "uninit": (action_uninit,
+ "uninit [OPTION...] [PATH]",
+ """Remove merge tracking information from PATH. It cleans any kind of merge
+ tracking information (including the list of blocked revisions). If there
+ are multiple sources, use --source to indicate which source you want to
+ forget about.""",
+ [
+ "-f", "-S", # import common opts
+ ]),
+}
+
+
+def main(args):
+ global opts
+
+ # Initialize default options
+ opts = default_opts.copy()
+ logs.clear()
+
+ optsparser = CommandOpts(global_opts, common_opts, command_table,
+ version="%%prog r%s\n modified: %s\n\n"
+ "Copyright (C) 2004,2005 Awarix Inc.\n"
+ "Copyright (C) 2005, Giovanni Bajo"
+ % (__revision__, __date__))
+
+ cmd, args, state = optsparser.parse(args)
+ opts.update(state)
+
+ source = opts.get("source", None)
+ branch_dir = "."
+
+ if str(cmd) == "init":
+ if len(args) == 1:
+ source = args[0]
+ elif len(args) > 1:
+ optsparser.error("wrong number of parameters", cmd)
+ elif str(cmd) in command_table.keys():
+ if len(args) == 1:
+ branch_dir = args[0]
+ elif len(args) > 1:
+ optsparser.error("wrong number of parameters", cmd)
+ else:
+ assert False, "command not handled: %s" % cmd
+
+ # Validate branch_dir
+ if not is_wc(branch_dir):
+ if str(cmd) == "avail":
+ info = None
+ # it should be noted here that svn info does not error exit
+ # if an invalid target is specified to it (as is
+ # intuitive). so the try, except code is not absolutely
+ # necessary. but, I retain it to indicate the intuitive
+ # handling.
+ try:
+ info = get_svninfo(branch_dir)
+ except LaunchError:
+ pass
+ # test that we definitely targeted a subversion directory,
+ # mirroring the purpose of the earlier is_wc() call
+ if info is None or not info.has_key("Node Kind") or info["Node Kind"] != "directory":
+ error('"%s" is neither a valid URL, nor a working directory' % branch_dir)
+ else:
+ error('"%s" is not a subversion working directory' % branch_dir)
+
+ # give out some hints as to potential pathids
+ PathIdentifier.hint(branch_dir)
+ if source: PathIdentifier.hint(source)
+
+ # Extract the integration info for the branch_dir
+ branch_props = get_merge_props(branch_dir)
+
+ # Calculate source_url and source_path
+ report("calculate source path for the branch")
+ if not source:
+ if str(cmd) == "init":
+ cf_source, cf_rev, copy_committed_in_rev = get_copyfrom(branch_dir)
+ if not cf_source:
+ error('no copyfrom info available. '
+ 'Explicit source argument (-S/--source) required.')
+ opts["source-url"] = get_repo_root(branch_dir) + cf_source
+ opts["source-pathid"] = PathIdentifier.from_target(opts["source-url"])
+
+ if not opts["revision"]:
+ opts["revision"] = "1-" + cf_rev
+ else:
+ opts["source-pathid"] = get_default_source(branch_dir, branch_props)
+ opts["source-url"] = opts["source-pathid"].get_url()
+
+ assert is_pathid(opts["source-pathid"])
+ assert is_url(opts["source-url"])
+ else:
+ # The source was given as a command line argument and is stored in
+ # SOURCE. Ensure that the specified source does not end in a /,
+ # otherwise it's easy to have the same source path listed more
+ # than once in the integrated version properties, with and without
+ # trailing /'s.
+ source = rstrip(source, "/")
+ if not is_wc(source) and not is_url(source):
+ # Check if it is a substring of a pathid recorded
+ # within the branch properties.
+ found = []
+ for pathid in branch_props.keys():
+ if pathid.match_substring(source):
+ found.append(pathid)
+ if len(found) == 1:
+ # (assumes pathid is a repository-relative-path)
+ source_pathid = found[0]
+ source = source_pathid.get_url()
+ else:
+ error('"%s" is neither a valid URL, nor an unambiguous '
+ 'substring of a repository path, nor a working directory'
+ % source)
+ else:
+ source_pathid = PathIdentifier.from_target(source)
+
+ source_pathid = PathIdentifier.from_target(source)
+ if str(cmd) == "init" and \
+ source_pathid == PathIdentifier.from_target("."):
+ error("cannot init integration source path '%s'\n"
+ "Its repository-relative path must differ from the "
+ "repository-relative path of the current directory."
+ % source_pathid)
+ opts["source-pathid"] = source_pathid
+ opts["source-url"] = target_to_url(source)
+
+ # Sanity check source_url
+ assert is_url(opts["source-url"])
+ # SVN does not support non-normalized URL (and we should not
+ # have created them)
+ assert opts["source-url"].find("/..") < 0
+
+ report('source is "%s"' % opts["source-url"])
+
+ # Get previously merged revisions (except when command is init)
+ if str(cmd) != "init":
+ opts["merged-revs"] = merge_props_to_revision_set(branch_props,
+ opts["source-pathid"])
+
+ # Perform the action
+ cmd(branch_dir, branch_props)
+
+
+if __name__ == "__main__":
+ try:
+ main(sys.argv[1:])
+ except LaunchError, (ret, cmd, out):
+ err_msg = "command execution failed (exit code: %d)\n" % ret
+ err_msg += cmd + "\n"
+ err_msg += "".join(out)
+ error(err_msg)
+ except KeyboardInterrupt:
+ # Avoid traceback on CTRL+C
+ print "aborted by user"
+ sys.exit(1)
diff --git a/extra/subversion/svnserve b/extra/subversion/svnserve
new file mode 100755
index 000000000..670fee742
--- /dev/null
+++ b/extra/subversion/svnserve
@@ -0,0 +1,42 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+. /etc/conf.d/svnserve
+
+PID=`pidof -o %PPID /usr/bin/svnserve`
+case "$1" in
+ start)
+ stat_busy "Starting svnserve"
+ if [ -z "$PID" ]; then
+ if [ -n "$SVNSERVE_USER" ]; then
+ su -s '/bin/sh' $SVNSERVE_USER -c "/usr/bin/svnserve -d $SVNSERVE_ARGS" &
+ else
+ /usr/bin/svnserve -d $SVNSERVE_ARGS &
+ fi
+ fi
+ if [ ! -z "$PID" -o $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon svnserve
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping svnserve"
+ [ ! -z "$PID" ] && kill $PID &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon svnserve
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
diff --git a/extra/subversion/svnserve.conf b/extra/subversion/svnserve.conf
new file mode 100644
index 000000000..37fb7ea10
--- /dev/null
+++ b/extra/subversion/svnserve.conf
@@ -0,0 +1,7 @@
+#
+# Parameters to be passed to svnserve
+#
+#SVNSERVE_ARGS="-r /path/to/some/repos"
+SVNSERVE_ARGS=""
+
+#SVNSERVE_USER="svn"
diff --git a/extra/sweep/PKGBUILD b/extra/sweep/PKGBUILD
new file mode 100644
index 000000000..3b664723e
--- /dev/null
+++ b/extra/sweep/PKGBUILD
@@ -0,0 +1,20 @@
+# $Id: PKGBUILD 54821 2009-10-11 19:41:33Z giovanni $
+# Maintainer: dorphell <dorphell@archlinux.org>
+# Contributer: Jason Chu <jchu@xentac.net>
+pkgname=sweep
+pkgver=0.9.3
+pkgrel=1
+pkgdesc="Sound editing and mixing program"
+arch=(i686 x86_64)
+license=('GPL2')
+depends=('gtk2' 'libsamplerate' 'libmad' 'libvorbis' 'alsa-lib' 'speex')
+source=(http://downloads.sourceforge.net/sourceforge/$pkgname/$pkgname-$pkgver.tar.gz)
+url="http://www.metadecks.org/software/sweep/"
+
+build() {
+ cd $startdir/src/sweep-$pkgver
+ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var
+ make || return 1
+ make prefix=$startdir/pkg/usr sysconfdir=$startdir/pkg/etc localstatedir=$startdir/pkg/var install
+}
+md5sums=('69e19bad2673f20e15224c0a5b5d4c85')
diff --git a/extra/swfdec-mozilla/PKGBUILD b/extra/swfdec-mozilla/PKGBUILD
new file mode 100644
index 000000000..d9503119b
--- /dev/null
+++ b/extra/swfdec-mozilla/PKGBUILD
@@ -0,0 +1,21 @@
+#$Id: PKGBUILD 17042 2008-10-24 15:55:09Z andyrtr $
+#Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=swfdec-mozilla
+pkgver=0.8.2
+pkgrel=1
+pkgdesc="free plugin for Mozilla browsers that uses the Swfdec library for playing SWF files"
+arch=('i686' 'x86_64')
+url="http://swfdec.freedesktop.org"
+license=('LGPL')
+depends=("swfdec>=$pkgver")
+source=(http://swfdec.freedesktop.org/download/swfdec-mozilla/0.8/${pkgname}-${pkgver}.tar.gz)
+options=('!libtool')
+md5sums=('716632e0d35b3c1582c180569ba30346')
+
+build() {
+ cd ${startdir}/src/${pkgname}-${pkgver}
+ ./configure --prefix=/usr --disable-static --with-plugin-dir=/usr/lib/mozilla/plugins/
+ make || return 1
+ make DESTDIR=${startdir}/pkg install
+}
diff --git a/extra/swfdec/PKGBUILD b/extra/swfdec/PKGBUILD
new file mode 100644
index 000000000..974c85aa9
--- /dev/null
+++ b/extra/swfdec/PKGBUILD
@@ -0,0 +1,25 @@
+#$Id: PKGBUILD 64546 2010-01-21 03:43:49Z eric $
+#Maintainer: Andreas Radke <andyrtr@archlinux.org>
+
+pkgname=swfdec
+pkgver=0.8.4
+pkgrel=2
+pkgdesc="free library for decoding and rendering Flash animations"
+arch=('i686' 'x86_64')
+url="http://swfdec.freedesktop.org"
+license=('LGPL')
+depends=('alsa-lib>=1.0.18' 'liboil>=0.3.15' 'gtk2>=2.14.6' 'libsoup>=2.24.2.1-1')
+makedepends=('pkgconfig' 'gstreamer0.10-ffmpeg>=0.10.6-1')
+optdepends=('gstreamer0.10-base: required for various audio and video formats'
+ 'gstreamer0.10-ffmpeg: most common audio/video format for internet flash')
+source=(http://swfdec.freedesktop.org/download/swfdec/0.8/${pkgname}-${pkgver}.tar.gz)
+md5sums=('aece501d0e73f3e564200a44ec03c385')
+options=('!libtool' '!emptydirs')
+
+build() {
+ cd ${startdir}/src/${pkgname}-${pkgver}
+ ./configure --prefix=/usr --disable-static --enable-gtk \
+ --enable-gstreamer --enable-soup --with-audio=alsa
+ make || return 1
+ make DESTDIR=${startdir}/pkg install || return 1
+}
diff --git a/extra/swh-plugins/PKGBUILD b/extra/swh-plugins/PKGBUILD
new file mode 100644
index 000000000..a8db515c6
--- /dev/null
+++ b/extra/swh-plugins/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 77978 2010-04-19 08:02:08Z dgriffiths $
+#Maintainer: Damir Perisa <damir.perisa@bluewin.ch>
+#Contributor: Robert Emil Berge
+
+pkgname=swh-plugins
+pkgver=0.4.15
+pkgrel=3
+pkgdesc="LADSPA Plugin-Collection from plugin.org.uk"
+arch=(i686 x86_64)
+url="http://plugin.org.uk/"
+license=('GPL')
+depends=('fftw' 'ladspa')
+groups=('ladspa-plugins')
+source=(http://plugin.org.uk/releases/${pkgver}/${pkgname}-${pkgver}.tar.gz)
+md5sums=('2fbdccef2462ea553901acd429fa3573')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+#Arch64 fix, -fPIC seems to be the only option
+if [ "$CARCH" = "x86_64" ]; then
+ export CFLAGS="$CFLAGS -fPIC"
+ export CXXFLAGS="$CFLAGS"
+fi
+
+ ./configure --prefix=/usr || return 1
+ make || return 1
+ make DESTDIR=${pkgdir} install || return 1
+}
diff --git a/extra/swig/PKGBUILD b/extra/swig/PKGBUILD
new file mode 100644
index 000000000..b74e723ad
--- /dev/null
+++ b/extra/swig/PKGBUILD
@@ -0,0 +1,40 @@
+# $Id: PKGBUILD 115117 2011-03-17 01:15:24Z stephane $
+# Maintainer: Stéphane Gaudreault <stephane@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=swig
+pkgver=2.0.2
+pkgrel=4
+pkgdesc="Generate scripting interfaces to C/C++ code"
+arch=('i686' 'x86_64')
+url="http://www.swig.org/"
+license=('custom')
+depends=('gcc-libs' 'zlib' 'pcre')
+source=(http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.gz
+ swig-deprecated-pycobject.patch
+ swig-pyslice.patch)
+sha1sums=('1fc5a7b42ae41c51772d7268ba0f987e9514d110'
+ 'add71330c5d839d9a27b1ca688e6c5e31f1edb7b'
+ '7248b34032db7cb84143a6cefae425b222ce43a6')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ # Use PyCapsule API instead of deprecated PyCObject API in python bindings
+ # See https://bugzilla.redhat.com/show_bug.cgi?id=623854
+ patch -Np1 -i ../swig-deprecated-pycobject.patch
+
+ # Fix PySlice* API/ABI issues with the Python 3.2
+ # See https://bugzilla.redhat.com/show_bug.cgi?id=666429
+ patch -Np1 -i ../swig-pyslice.patch
+
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+ install -D -m644 LICENSE "${pkgdir}"/usr/share/licenses/${pkgname}/LICENSE
+ install -D -m644 LICENSE-UNIVERSITIES "${pkgdir}"/usr/share/licenses/${pkgname}/LICENSE-UNIVERSITIES
+}
diff --git a/extra/swig/swig-deprecated-pycobject.patch b/extra/swig/swig-deprecated-pycobject.patch
new file mode 100644
index 000000000..5665252bb
--- /dev/null
+++ b/extra/swig/swig-deprecated-pycobject.patch
@@ -0,0 +1,92 @@
+diff -up swig-2.0.0/Lib/python/pyrun.swg.rh623854 swig-2.0.0/Lib/python/pyrun.swg
+--- swig-2.0.0/Lib/python/pyrun.swg.rh623854 2010-02-28 00:26:02.000000000 +0100
++++ swig-2.0.0/Lib/python/pyrun.swg 2010-08-17 16:32:16.581604656 +0200
+@@ -45,8 +45,18 @@
+ #define SWIG_SetErrorMsg SWIG_Python_SetErrorMsg
+ #define SWIG_ErrorType(code) SWIG_Python_ErrorType(code)
+ #define SWIG_Error(code, msg) SWIG_Python_SetErrorMsg(SWIG_ErrorType(code), msg)
+-#define SWIG_fail goto fail
++#define SWIG_fail goto fail
+
++/*
++ * Python 2.7 and newer and Python 3.1 and newer should use Capsules API instead of
++ * CObjects API.
++ */
++#if ((PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION > 6) || \
++ (PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION > 0))
++#define USE_CAPSULES
++#define TYPE_POINTER_NAME \
++ ((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION ".type_pointer_capsule" SWIG_TYPE_TABLE_NAME)
++#endif
+
+ /* Runtime API implementation */
+
+@@ -1356,8 +1366,12 @@ SWIG_Python_GetModule(void) {
+ #ifdef SWIG_LINK_RUNTIME
+ type_pointer = SWIG_ReturnGlobalTypeList((void *)0);
+ #else
++#ifdef USE_CAPSULES
++ type_pointer = PyCapsule_Import(TYPE_POINTER_NAME, 0);
++#else
+ type_pointer = PyCObject_Import((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION,
+ (char*)"type_pointer" SWIG_TYPE_TABLE_NAME);
++#endif
+ if (PyErr_Occurred()) {
+ PyErr_Clear();
+ type_pointer = (void *)0;
+@@ -1402,9 +1416,14 @@ PyModule_AddObject(PyObject *m, char *na
+ SWIGRUNTIME void
+ SWIG_Python_DestroyModule(void *vptr)
+ {
++ size_t i;
++#ifdef USE_CAPSULES
++ swig_module_info *swig_module =
++ (swig_module_info *) PyCapsule_GetPointer((PyObject *)vptr, TYPE_POINTER_NAME);
++#else
+ swig_module_info *swig_module = (swig_module_info *) vptr;
++#endif
+ swig_type_info **types = swig_module->types;
+- size_t i;
+ for (i =0; i < swig_module->size; ++i) {
+ swig_type_info *ty = types[i];
+ if (ty->owndata) {
+@@ -1426,9 +1445,18 @@ SWIG_Python_SetModule(swig_module_info *
+ PyObject *module = Py_InitModule((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION,
+ swig_empty_runtime_method_table);
+ #endif
++#ifdef USE_CAPSULES
++ PyObject *pointer = PyCapsule_New((void *)swig_module, TYPE_POINTER_NAME,
++ (PyCapsule_Destructor)SWIG_Python_DestroyModule);
++#else
+ PyObject *pointer = PyCObject_FromVoidPtr((void *) swig_module, SWIG_Python_DestroyModule);
++#endif
+ if (pointer && module) {
++#ifdef USE_CAPSULES
++ PyModule_AddObject(module, (char*)"type_pointer_capsule" SWIG_TYPE_TABLE_NAME, pointer);
++#else
+ PyModule_AddObject(module, (char*)"type_pointer" SWIG_TYPE_TABLE_NAME, pointer);
++#endif
+ } else {
+ Py_XDECREF(pointer);
+ }
+@@ -1449,12 +1477,20 @@ SWIG_Python_TypeQuery(const char *type)
+ PyObject *obj = PyDict_GetItem(cache, key);
+ swig_type_info *descriptor;
+ if (obj) {
++#ifdef USE_CAPSULES
++ descriptor = (swig_type_info *) PyCapsule_GetPointer(obj, type);
++#else
+ descriptor = (swig_type_info *) PyCObject_AsVoidPtr(obj);
++#endif
+ } else {
+ swig_module_info *swig_module = SWIG_Python_GetModule();
+ descriptor = SWIG_TypeQueryModule(swig_module, swig_module, type);
+ if (descriptor) {
++#ifdef USE_CAPSULES
++ obj = PyCapsule_New(descriptor, type, NULL);
++#else
+ obj = PyCObject_FromVoidPtr(descriptor, NULL);
++#endif
+ PyDict_SetItem(cache, key, obj);
+ Py_DECREF(obj);
+ }
diff --git a/extra/swig/swig-pyslice.patch b/extra/swig/swig-pyslice.patch
new file mode 100644
index 000000000..e615b5d03
--- /dev/null
+++ b/extra/swig/swig-pyslice.patch
@@ -0,0 +1,66 @@
+diff -Naur swig-2.0.2.ori/Lib/python/pycontainer.swg swig-2.0.2/Lib/python/pycontainer.swg
+--- swig-2.0.2.ori/Lib/python/pycontainer.swg 2010-10-19 02:31:31.000000000 -0400
++++ swig-2.0.2/Lib/python/pycontainer.swg 2011-03-16 20:41:28.090000004 -0400
+@@ -630,6 +630,7 @@
+ return x;
+ }
+
++#if !NO_PYSLICE
+ /* typemap for slice object support */
+ %typemap(in) PySliceObject* {
+ $1 = (PySliceObject *) $input;
+@@ -637,6 +638,7 @@
+ %typemap(typecheck,precedence=SWIG_TYPECHECK_POINTER) PySliceObject* {
+ $1 = PySlice_Check($input);
+ }
++#endif
+
+ Sequence* __getslice__(difference_type i, difference_type j) throw (std::out_of_range) {
+ return swig::getslice(self, i, j);
+@@ -659,7 +661,11 @@
+ /* Overloaded methods for Python 3 compatibility
+ * (Also useful in Python 2.x)
+ */
++#if NO_PYSLICE
++ Sequence* __getitem__(PyObject *slice) throw (std::out_of_range) {
++#else
+ Sequence* __getitem__(PySliceObject *slice) throw (std::out_of_range) {
++#endif
+ Py_ssize_t i, j, step;
+ if( !PySlice_Check(slice) ) {
+ SWIG_Error(SWIG_TypeError, "Slice object expected.");
+@@ -669,7 +675,11 @@
+ return swig::getslice(self, i, j);
+ }
+
++#if NO_PYSLICE
++ void __setitem__(PyObject *slice, const Sequence& v)
++#else
+ void __setitem__(PySliceObject *slice, const Sequence& v)
++#endif
+ throw (std::out_of_range, std::invalid_argument) {
+ Py_ssize_t i, j, step;
+ if( !PySlice_Check(slice) ) {
+@@ -680,7 +690,11 @@
+ swig::setslice(self, i, j, v);
+ }
+
++#if NO_PYSLICE
++ void __delitem__(PyObject *slice)
++#else
+ void __delitem__(PySliceObject *slice)
++#endif
+ throw (std::out_of_range) {
+ Py_ssize_t i, j, step;
+ if( !PySlice_Check(slice) ) {
+diff -Naur swig-2.0.2.ori/Source/Modules/python.cxx swig-2.0.2/Source/Modules/python.cxx
+--- swig-2.0.2.ori/Source/Modules/python.cxx 2011-02-20 08:47:14.000000000 -0500
++++ swig-2.0.2/Source/Modules/python.cxx 2011-03-16 20:40:01.223333338 -0400
+@@ -440,6 +440,7 @@
+ if (py3) {
+ /* force disable features that not compatible with Python 3.x */
+ classic = 0;
++ Preprocessor_define((DOH *) "NO_PYSLICE 1", 0);
+ }
+
+ if (cppcast) {
diff --git a/extra/swt/PKGBUILD b/extra/swt/PKGBUILD
new file mode 100644
index 000000000..b78448b94
--- /dev/null
+++ b/extra/swt/PKGBUILD
@@ -0,0 +1,72 @@
+# $Id: PKGBUILD 90058 2010-09-06 21:07:12Z guillaume $
+# Maintainer: Guillaume ALAUX <guillaume@archlinux.org>
+pkgname=swt
+pkgver=3.6
+pkgrel=2
+pkgdesc="An open source widget toolkit for Java"
+_date=201006080911
+arch=(i686 x86_64)
+url="http://www.eclipse.org/swt/"
+license=('EPL')
+depends=('java-runtime>=6' 'gtk2>=2.20.1' 'libxtst')
+optdepends=('libgnomeui' 'xulrunner' 'mesa')
+makedepends=('openjdk6' 'libxtst' 'mesa' 'libgnomeui' 'xulrunner>=1.9.1' 'unzip' 'pkgconfig' 'apache-ant')
+source=(http://download.eclipse.org/eclipse/downloads/drops/R-${pkgver}-${_date}/swt-${pkgver}-gtk-linux-x86.zip
+ http://download.eclipse.org/eclipse/downloads/drops/R-${pkgver}-${_date}/swt-${pkgver}-gtk-linux-x86_64.zip
+ build-swt.xml)
+md5sums=('514206a4b9e27ac66cb7876157c3e74f'
+ '244f63edc7e609c7ac7f4bd1d7e0298a'
+ 'f5e548bc26a0f1f3c18131be76face40')
+if [ "${CARCH}" = "i686" ]; then
+ source=(http://download.eclipse.org/eclipse/downloads/drops/R-${pkgver}-${_date}/swt-${pkgver}-gtk-linux-x86.zip
+ build-swt.xml)
+ noextract=(swt-${pkgver}-gtk-linux-x86.zip)
+ md5sums=('514206a4b9e27ac66cb7876157c3e74f'
+ 'f5e548bc26a0f1f3c18131be76face40')
+fi
+if [ "${CARCH}" = "x86_64" ]; then
+ source=(http://download.eclipse.org/eclipse/downloads/drops/R-${pkgver}-${_date}/swt-${pkgver}-gtk-linux-x86_64.zip
+ build-swt.xml)
+ md5sums=('244f63edc7e609c7ac7f4bd1d7e0298a'
+ 'f5e548bc26a0f1f3c18131be76face40')
+ noextract=(swt-${pkgver}-gtk-linux-x86_64.zip)
+fi
+
+build() {
+ cd "${srcdir}"
+ . /etc/profile.d/openjdk6.sh
+ . /etc/profile.d/apache-ant.sh
+ unzip -jqo ${srcdir}/swt-${pkgver}-gtk-linux-*.zip "*src.zip"
+ unzip -qo src.zip
+ rm -rf about_files
+ mkdir src
+ mv org src/
+ cp build-swt.xml build.xml || return 1
+
+ [ "${CARCH}" = "x86_64" ] && export SWT_PTR_CFLAGS=-DSWT_PTR_SIZE_64
+
+ make -f make_linux.mak make_awt || return 1
+ make -f make_linux.mak make_swt || return 1
+ make -f make_linux.mak make_atk || return 1
+ make -f make_linux.mak make_gnome || return 1
+ export MOZILLA_INCLUDES="`pkg-config --cflags libxul`"
+ export MOZILLA_LIBS="-Wl,-R`pkg-config libxul --variable=libdir` `pkg-config libxul --libs`"
+ export XULRUNNER_INCLUDES="${MOZILLA_INCLUDES}"
+ export XULRUNNER_LIBS="${MOZILLA_LIBS}"
+ make -f make_linux.mak make_mozilla || return 1
+ make -f make_linux.mak make_xulrunner || return 1
+
+ make -f make_linux.mak make_cairo || return 1
+ make -f make_linux.mak make_glx || return 1
+
+ ant compile || return 1
+ cp version.txt build/version.txt
+ cp src/org/eclipse/swt/internal/SWTMessages.properties build/org/eclipse/swt/internal/
+
+ ant jar || return 1
+
+ install -m755 -d "${pkgdir}/usr/share/java"
+ install -m755 -d "${pkgdir}/usr/lib"
+ install -m644 swt.jar "${pkgdir}/usr/share/java/" || return 1
+ install -m755 *.so "${pkgdir}/usr/lib/" || return 1
+}
diff --git a/extra/swt/build-swt.xml b/extra/swt/build-swt.xml
new file mode 100644
index 000000000..ea775871b
--- /dev/null
+++ b/extra/swt/build-swt.xml
@@ -0,0 +1,17 @@
+<project name="SWT" default="jar" basedir=".">
+ <property name="src" location="."/>
+ <property name="build" location="build"/>
+
+ <target name="init">
+ <tstamp/>
+ <mkdir dir="${build}"/>
+ </target>
+
+ <target name="compile" depends="init" description="Compile the SWT toolset">
+ <javac srcdir="${src}" destdir="${build}"/>
+ </target>
+
+ <target name="jar">
+ <jar destfile="swt.jar" basedir="${build}"/>
+ </target>
+</project>
diff --git a/extra/sysklogd/ChangeLog b/extra/sysklogd/ChangeLog
new file mode 100644
index 000000000..aa374cfe0
--- /dev/null
+++ b/extra/sysklogd/ChangeLog
@@ -0,0 +1,5 @@
+2008-03-13 Eric Belanger <eric@archlinux.org>
+
+ * Added support for > 2 GB logfiles (close FS#9831)
+ * FSH man pages
+ * Added ChangeLog file
diff --git a/extra/sysklogd/LICENSE b/extra/sysklogd/LICENSE
new file mode 100644
index 000000000..7e9b5d59c
--- /dev/null
+++ b/extra/sysklogd/LICENSE
@@ -0,0 +1,16 @@
+/*
+ * Copyright (c) 1983, 1988 Regents of the University of California.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms are permitted
+ * provided that the above copyright notice and this paragraph are
+ * duplicated in all such forms and that any documentation,
+ * advertising materials, and other materials related to such
+ * distribution and use acknowledge that the software was developed
+ * by the University of California, Berkeley. The name of the
+ * University may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
+ * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+ */
diff --git a/extra/sysklogd/PKGBUILD b/extra/sysklogd/PKGBUILD
new file mode 100644
index 000000000..a548a165c
--- /dev/null
+++ b/extra/sysklogd/PKGBUILD
@@ -0,0 +1,39 @@
+# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+# Contributor: judd <jvinet@zeroflux.org>
+
+pkgname=sysklogd
+pkgver=1.5
+pkgrel=2
+pkgdesc="System and kernel log daemons"
+arch=('i686' 'x86_64')
+url="http://www.infodrom.org/projects/sysklogd/"
+license=('GPL' 'BSD')
+depends=('glibc' 'logrotate')
+provides=('logger')
+backup=(etc/syslog.conf)
+source=(http://www.infodrom.org/projects/sysklogd/download/$pkgname-$pkgver.tar.gz \
+ syslog.conf syslog.logrotate syslogd klogd LICENSE)
+md5sums=('e053094e8103165f98ddafe828f6ae4b' 'b8bc568494359fa932b7a5e17c4ba4de'\
+ 'fb3fdb03959ff62ede00487c853bb950' '92531ee64cdc0ca978bbe9a81c269211'\
+ 'c2fe75c82c35371972b6ceda72d6a861' '7930f7ff5038e1318511624e348581cc')
+sha1sums=('070cce745b023f2ce7ca7d9888af434d6d61c236'
+ '35b4cb76109a6ffe9269021a6bfb4f8da614a4eb'
+ 'e67c0f78f13c94507d3f686b4e5b8340db4624fd'
+ '848beb23b9ca4de19c6022df03878dbe57e04c0a'
+ 'f46088f761c033562a59bc13d4888b7343bc02fc'
+ 'c416bcefd3d3d618139cc7912310caddf34c0c0b')
+
+build() {
+ cd $startdir/src/$pkgname-$pkgver
+ sed -i "s/-O3/${CFLAGS} -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE/" Makefile || return 1
+ make || return 1
+ install -d $startdir/pkg/usr/sbin
+ install -d $startdir/pkg/usr/share/man/{man5,man8}
+ make INSTALL=/bin/install prefix=$startdir/pkg install
+ install -D -m644 ../syslog.conf $startdir/pkg/etc/syslog.conf
+ install -D -m644 ../syslog.logrotate $startdir/pkg/etc/logrotate.d/syslog
+ install -D -m755 ../syslogd $startdir/pkg/etc/rc.d/syslogd
+ install -D -m755 ../klogd $startdir/pkg/etc/rc.d/klogd
+ install -D -m644 ../LICENSE $startdir/pkg/usr/share/licenses/$pkgname/LICENSE
+}
diff --git a/extra/sysklogd/klogd b/extra/sysklogd/klogd
new file mode 100755
index 000000000..690e13ab4
--- /dev/null
+++ b/extra/sysklogd/klogd
@@ -0,0 +1,37 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+PID=`pidof -o %PPID /usr/sbin/klogd`
+case "$1" in
+ start)
+ stat_busy "Starting Kernel Logger"
+ [ -z "$PID" ] && /usr/sbin/klogd -c 4
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon klogd
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping Kernel Logger"
+ [ ! -z "$PID" ] && kill $PID &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm -f /var/run/klogd.pid
+ rm_daemon klogd
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
diff --git a/extra/sysklogd/syslog.conf b/extra/sysklogd/syslog.conf
new file mode 100644
index 000000000..7b0eae2e2
--- /dev/null
+++ b/extra/sysklogd/syslog.conf
@@ -0,0 +1,15 @@
+#
+# /etc/syslog.conf
+#
+
+*.emerg *
+*.err /var/log/errors
+kern.* /var/log/kernel
+authpriv.*;auth.* /var/log/auth
+mail.* /var/log/mail
+*.info;*.!err;authpriv,auth,mail,kern.none /var/log/messages
+
+# Log everything to vc12
+# *.* /dev/vc/12
+
+# End of file
diff --git a/extra/sysklogd/syslog.logrotate b/extra/sysklogd/syslog.logrotate
new file mode 100644
index 000000000..b3d8d8552
--- /dev/null
+++ b/extra/sysklogd/syslog.logrotate
@@ -0,0 +1,6 @@
+/var/log/messages /var/log/auth /var/log/mail /var/log/errors /var/log/kernel {
+ sharedscripts
+ postrotate
+ /bin/kill -HUP `cat /var/run/syslogd.pid 2>/dev/null` 2> /dev/null || true
+ endscript
+}
diff --git a/extra/sysklogd/syslogd b/extra/sysklogd/syslogd
new file mode 100755
index 000000000..24c81ec8a
--- /dev/null
+++ b/extra/sysklogd/syslogd
@@ -0,0 +1,37 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+PID=`pidof -o %PPID /usr/sbin/syslogd`
+case "$1" in
+ start)
+ stat_busy "Starting System Logger"
+ [ -z "$PID" ] && /usr/sbin/syslogd -m 0
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon syslogd
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping System Logger"
+ [ ! -z "$PID" ] && kill $PID &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm -f /var/run/syslogd.pid
+ rm_daemon syslogd
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
diff --git a/extra/system-config-printer/PKGBUILD b/extra/system-config-printer/PKGBUILD
new file mode 100644
index 000000000..0cc06257a
--- /dev/null
+++ b/extra/system-config-printer/PKGBUILD
@@ -0,0 +1,105 @@
+# $Id: PKGBUILD 117485 2011-04-04 07:01:13Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+
+pkgbase=system-config-printer
+pkgname=('system-config-printer-common'
+ 'system-config-printer-gnome')
+pkgver=1.3.2
+pkgrel=1
+pkgdesc="A CUPS printer configuration tool and status applet"
+url="http://cyberelk.net/tim/software/system-config-printer/"
+arch=('i686' 'x86_64')
+license=('GPL')
+makedepends=('intltool' 'python2' 'xmlto' 'docbook-xsl' 'desktop-file-utils' 'libcups' 'libxml2')
+source=("http://cyberelk.net/tim/data/${pkgbase}/1.3/${pkgbase}-${pkgver}.tar.xz")
+md5sums=('34a0ce9a11be5695b3b4065e4f17b009')
+
+build() {
+ cd ${srcdir}/${pkgbase}-${pkgver}
+
+ sed -i -e "s|#![ ]*/usr/bin/python$|#!/usr/bin/python2|" \
+ -e "s|#![ ]*/usr/bin/env python$|#!/usr/bin/env python2|" \
+ $(find . -name '*.py')
+ sed -i "s|#!/usr/bin/python|#!/usr/bin/python2|" udev/udev-add-printer
+
+ ./configure --prefix=/usr \
+ --sbindir=/usr/bin \
+ --sysconfdir=/etc \
+ --with-udev-rules
+
+ make
+}
+
+package_system-config-printer-common() {
+ pkgdesc='Pygtk CUPS Configuration'
+ depends=('pycups' 'dbus-python' 'pysmbc')
+ optdepends=('system-config-printer-gnome: for the GTK frontend'
+ 'kdeadmin-system-config-printer-kde: for the administration tool in KDE System Settings')
+ replaces=('system-config-printer')
+ provides=("system-config-printer=${pkgver}")
+ conflicts=('system-config-printer')
+
+ cd ${srcdir}/${pkgbase}-${pkgver}
+ install -d ${pkgdir}/usr/share/${pkgbase}
+ install -m644 config.py \
+ debug.py \
+ installpackage.py \
+ monitor.py \
+ PhysicalDevice.py \
+ ppdippstr.py \
+ probe_printer.py \
+ SearchCriterion.py \
+ smburi.py \
+ statereason.py \
+ XmlHelper.py \
+ ${pkgdir}/usr/share/${pkgbase}/
+
+ install -m755 pysmb.py \
+ ${pkgdir}/usr/share/${pkgbase}/
+
+ install -d ${pkgdir}/etc/dbus-1/system.d/
+ install -m644 dbus/com.redhat.NewPrinterNotification.conf \
+ dbus/com.redhat.PrinterDriversInstaller.conf \
+ ${pkgdir}/etc/dbus-1/system.d/
+ install -d ${pkgdir}/etc/cupshelpers/
+ install -m644 xml/preferreddrivers.xml ${pkgdir}/etc/cupshelpers/
+
+ install -d ${pkgdir}/lib/udev/rules.d
+ install -m755 udev/{udev-add-printer,udev-configure-printer} \
+ ${pkgdir}/lib/udev/
+ install -m644 udev/70-printers.rules \
+ ${pkgdir}/lib/udev/rules.d
+
+ for file in build/lib/cupshelpers/*.py; do
+ install -Dm644 $file \
+ ${pkgdir}/usr/lib/python2.7/site-packages/cupshelpers/$(basename $file)
+ done
+}
+
+package_system-config-printer-gnome() {
+ pkgdesc='A CUPS printer configuration tool and status applet - GTK frontend'
+ depends=('system-config-printer-common' 'gnome-icon-theme' 'python-notify')
+ optdependence=('gnome-keyring: password management')
+
+ cd ${srcdir}/${pkgbase}-${pkgver}
+ make DESTDIR="${pkgdir}" install
+
+ # files provided by system-config-printer-common
+ cd ${pkgdir}/usr/share/${pkgbase}
+ rm config.py \
+ debug.py \
+ installpackage.py \
+ monitor.py \
+ PhysicalDevice.py \
+ ppdippstr.py \
+ probe_printer.py \
+ SearchCriterion.py \
+ smburi.py \
+ statereason.py \
+ XmlHelper.py \
+ pysmb.py
+ rm -r ${pkgdir}/etc/dbus-1/
+ rm -r ${pkgdir}/etc/cupshelpers/
+ rm -r ${pkgdir}/etc/udev/
+ rm -r ${pkgdir}/usr/lib/
+}
diff --git a/extra/t1lib/PKGBUILD b/extra/t1lib/PKGBUILD
new file mode 100644
index 000000000..96f0c7a6d
--- /dev/null
+++ b/extra/t1lib/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id: PKGBUILD 18717 2008-11-08 21:45:38Z giovanni $
+# Maintainer: tobias <tobias@archlinux.org>
+# Contributor: Rainer Moll <renari@arcor.de>
+
+pkgname=t1lib
+pkgver=5.1.2
+pkgrel=2
+pkgdesc="Library for generating character- and string-glyphs from Adobe Type 1 fonts"
+arch=(i686 x86_64)
+license=("GPL")
+depends=('libxaw')
+options=(!libtool)
+url="http://www.ibiblio.org/pub/Linux/libs/graphics/!INDEX.html"
+source=(http://www.ibiblio.org/pub/Linux/libs/graphics/${pkgname}-${pkgver}.tar.gz )
+md5sums=('a5629b56b93134377718009df1435f3c')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make without_doc || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/taglib-extras/PKGBUILD b/extra/taglib-extras/PKGBUILD
new file mode 100644
index 000000000..3becb51f9
--- /dev/null
+++ b/extra/taglib-extras/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 52970 2009-09-23 20:36:32Z giovanni $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=taglib-extras
+pkgver=1.0.1
+pkgrel=1
+pkgdesc="Additional taglib plugins for KDE"
+arch=("i686" "x86_64")
+url="http://developer.kde.org/~wheeler/taglib.html"
+license=('LGPL')
+depends=('taglib>=1.6')
+makedepends=('pkgconfig' 'cmake' 'automoc4')
+source=(http://www.kollide.net/~jefferai/${pkgname}-${pkgver}.tar.gz)
+md5sums=('e973ca609b18e2c03c147ff9fd9e6eb8')
+
+build() {
+ cd $srcdir
+ mkdir build
+ cd build
+ cmake ../$pkgname-$pkgver \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_SKIP_RPATH=ON || return 1
+ make || return 1
+ make DESTDIR=$pkgdir install
+}
diff --git a/extra/taglib-sharp/PKGBUILD b/extra/taglib-sharp/PKGBUILD
new file mode 100644
index 000000000..bde9d495e
--- /dev/null
+++ b/extra/taglib-sharp/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 75153 2010-03-31 23:10:28Z giovanni $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Carlos Ruiz <cailovirtual@gmail.com>
+
+pkgname=taglib-sharp
+pkgver=2.0.3.7
+pkgrel=1
+pkgdesc="Free and Open Source library for the .NET 2.0 and Mono frameworks which will let you tag your software with as much or as little detail as you like without slowing you down."
+arch=('i686' 'x86_64')
+url="http://www.taglib-sharp.com/Main_Page"
+license=('LGPL2')
+depends=('mono')
+source=(http://download.banshee-project.org/taglib-sharp/${pkgver}/${pkgname}-${pkgver}.tar.gz)
+md5sums=('fa45d2519ca26b04716789fe4ac81f8b')
+
+build() {
+ export MONO_SHARED_DIR="${startdir}/src/.wabi"
+ mkdir -p "${MONO_SHARED_DIR}"
+
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr --disable-docs || return 1
+ make || return 1
+ make DESTDIR=${pkgdir} install || return 1
+}
diff --git a/extra/taglib/PKGBUILD b/extra/taglib/PKGBUILD
new file mode 100644
index 000000000..c1732f1aa
--- /dev/null
+++ b/extra/taglib/PKGBUILD
@@ -0,0 +1,33 @@
+# $Id: PKGBUILD 79406 2010-05-04 00:23:40Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=taglib
+pkgver=1.6.3
+pkgrel=1
+pkgdesc="A Library for reading and editing the meta-data of several popular audio formats"
+arch=('i686' 'x86_64')
+url="http://developer.kde.org/~wheeler/taglib.html"
+license=('GPL2')
+depends=('sh' 'zlib' 'gcc-libs')
+makedepends=('cmake' 'pkgconfig')
+source=(http://developer.kde.org/~wheeler/files/src/$pkgname-$pkgver.tar.gz)
+options=('!libtool')
+md5sums=('ddf02f4e1d2dc30f76734df806e613eb')
+
+build() {
+ cd ${srcdir}
+ mkdir build
+ cd build
+ cmake ../$pkgname-$pkgver \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DWITH_MP4=ON \
+ -DWITH_ASF=ON
+ make VERBOSE=1 || return 1
+}
+
+package() {
+ cd ${srcdir}/build
+ make DESTDIR=${pkgdir} install || return 1
+}
diff --git a/extra/talloc/PKGBUILD b/extra/talloc/PKGBUILD
new file mode 100644
index 000000000..678ee5af4
--- /dev/null
+++ b/extra/talloc/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 116938 2011-03-26 14:56:31Z tpowa $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=talloc
+pkgver=2.0.5
+pkgrel=1
+pkgdesc="A hierarchical pool based memory allocator with destructors"
+arch=(i686 x86_64)
+license=('GPL3')
+url="http://talloc.samba.org/"
+source=(http://samba.org/ftp/${pkgname}/${pkgname}-${pkgver}.tar.gz)
+makedepends=('python2')
+depends=('glibc')
+optdepends=('python2: for python bindings')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ sed -i -e 's#python#python2#g' buildtools/bin/waf
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc/samba \
+ --localstatedir=/var \
+ --enable-talloc-compat1
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=$pkgdir/ install
+}
+md5sums=('6e3fdfbc43dde8ccba27b6af894b8fb2')
diff --git a/extra/tcl/PKGBUILD b/extra/tcl/PKGBUILD
new file mode 100644
index 000000000..acce9e847
--- /dev/null
+++ b/extra/tcl/PKGBUILD
@@ -0,0 +1,48 @@
+# $Id: PKGBUILD 90377 2010-09-11 03:54:51Z allan $
+# Maintainer: Allan McRae <allan@archlinux.org>
+# Committer: Judd Vinet <jvinet@zeroflux.org>
+
+pkgname=tcl
+pkgver=8.5.9
+pkgrel=1
+pkgdesc="The Tcl scripting language"
+arch=('i686' 'x86_64')
+url="http://tcl.sourceforge.net/"
+license=('custom')
+depends=('glibc')
+source=(http://downloads.sourceforge.net/sourceforge/tcl/tcl${pkgver}-src.tar.gz)
+md5sums=('8512d8db3233041dd68a81476906012a')
+
+build() {
+ cd ${srcdir}/tcl${pkgver}/unix
+
+ if [ "$CARCH" = "x86_64" ]; then
+ ./configure --prefix=/usr --mandir=/usr/share/man --enable-threads --enable-64bit
+ else
+ ./configure --prefix=/usr --mandir=/usr/share/man --enable-threads --disable-64bit
+ fi
+
+ make
+}
+
+package()
+{
+ cd ${srcdir}/tcl${pkgver}/unix
+
+ make INSTALL_ROOT=${pkgdir} install install-private-headers
+ ln -sf tclsh8.5 ${pkgdir}/usr/bin/tclsh
+
+ # install license
+ install -Dm644 ../license.terms ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+
+ # remove buildroot traces
+ sed -i \
+ -e "s,^TCL_BUILD_LIB_SPEC='-L.*/unix,TCL_BUILD_LIB_SPEC='-L/usr/lib," \
+ -e "s,^TCL_SRC_DIR='.*',TCL_SRC_DIR='/usr/include'," \
+ -e "s,^TCL_BUILD_STUB_LIB_SPEC='-L.*/unix,TCL_BUILD_STUB_LIB_SPEC='-L/usr/lib," \
+ -e "s,^TCL_BUILD_STUB_LIB_PATH='.*/unix,TCL_BUILD_STUB_LIB_PATH='/usr/lib," \
+ -e "s,^TCL_LIB_FILE='libtcl8.5..TCL_DBGX..so',TCL_LIB_FILE=\"libtcl8.5\$\{TCL_DBGX\}.so\"," \
+ -e "s,^TCL_CC_SEARCH_FLAGS='\(.*\)',TCL_CC_SEARCH_FLAGS='\1:/usr/lib'," \
+ -e "s,^TCL_LD_SEARCH_FLAGS='\(.*\)',TCL_LD_SEARCH_FLAGS='\1:/usr/lib'," \
+ ${pkgdir}/usr/lib/tclConfig.sh
+}
diff --git a/extra/tcpdump/PKGBUILD b/extra/tcpdump/PKGBUILD
new file mode 100644
index 000000000..c6c455be5
--- /dev/null
+++ b/extra/tcpdump/PKGBUILD
@@ -0,0 +1,34 @@
+# $Id: PKGBUILD 117379 2011-04-01 00:46:15Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: dorphell <dorphell@archlinux.org>
+
+pkgname=tcpdump
+pkgver=4.1.1
+pkgrel=2
+pkgdesc="A tool for network monitoring and data acquisition"
+arch=('i686' 'x86_64')
+url="http://www.tcpdump.org"
+license=('BSD')
+depends=('libpcap' 'openssl')
+source=("http://www.tcpdump.org/release/${pkgname}-${pkgver}.tar.gz"
+ tcpdump_duplicate_executable.patch)
+md5sums=('d0dd58bbd6cd36795e05c6f1f74420b0'
+ 'd4c374b25d10e41b77d2c72bb9ec0d79')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ # do not install tcpdump-4.1.1 executable (FS#23346)
+ patch -Np1 -i "${srcdir}/tcpdump_duplicate_executable.patch"
+ ./configure --prefix=/usr \
+ --enable-ipv6
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+
+ #install the license
+ install -D -m644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+}
diff --git a/extra/tcpdump/tcpdump_duplicate_executable.patch b/extra/tcpdump/tcpdump_duplicate_executable.patch
new file mode 100644
index 000000000..6e27b717a
--- /dev/null
+++ b/extra/tcpdump/tcpdump_duplicate_executable.patch
@@ -0,0 +1,10 @@
+--- a/Makefile.in 2010-04-06 03:18:35.000000000 +0200
++++ b/Makefile.in 2011-04-01 02:39:10.000000000 +0200
+@@ -403,7 +403,6 @@
+ [ -d $(DESTDIR)$(sbindir) ] || \
+ (mkdir -p $(DESTDIR)$(sbindir); chmod 755 $(DESTDIR)$(sbindir))
+ $(INSTALL_PROGRAM) $(PROG) $(DESTDIR)$(sbindir)/$(PROG)
+- $(INSTALL_PROGRAM) $(PROG) $(DESTDIR)$(sbindir)/$(PROG).`cat ${srcdir}/VERSION`
+ [ -d $(DESTDIR)$(mandir)/man1 ] || \
+ (mkdir -p $(DESTDIR)$(mandir)/man1; chmod 755 $(DESTDIR)$(mandir)/man1)
+ $(INSTALL_DATA) $(PROG).1 $(DESTDIR)$(mandir)/man1/$(PROG).1
diff --git a/extra/tdb/PKGBUILD b/extra/tdb/PKGBUILD
new file mode 100644
index 000000000..dca95ae49
--- /dev/null
+++ b/extra/tdb/PKGBUILD
@@ -0,0 +1,34 @@
+# $Id: PKGBUILD 116933 2011-03-26 14:55:24Z tpowa $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+# Contributor: eric <eric@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=tdb
+pkgver=1.2.9
+pkgrel=1
+pkgdesc="A Trivia Database similar to GDBM but allows simultaneous commits"
+arch=(i686 x86_64)
+license=('GPL3')
+url="http://tdb.samba.org/"
+source=(http://samba.org/ftp/${pkgname}/${pkgname}-${pkgver}.tar.gz)
+makedepends=('python2' 'libxslt' 'docbook-xsl')
+optdepends=('python2: for python bindings')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ sed -i -e 's#python#python2#g' buildtools/bin/waf
+ #sed -i 's#python2\.6\([^ ]*\)#python2.7\1 python2.6\1#' configure
+ # Use system docbook.xsl
+ #_manstyle="/usr/share/xml/docbook/xsl-stylesheets-1.76.1/manpages/docbook.xsl"
+ #sed -i "s#http.*xsl#$_manstyle#" tdb.mk
+ ./configure --prefix=/usr \
+ --localstatedir=/var \
+ --sysconfdir=/etc/samba
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=$pkgdir/ install
+}
+md5sums=('4d97d18bbe9040038d4e003495bb8cd1')
diff --git a/extra/telepathy-butterfly/0001-bugfix-remove-bad-import-from-im-module.patch b/extra/telepathy-butterfly/0001-bugfix-remove-bad-import-from-im-module.patch
new file mode 100644
index 000000000..6580dcc7f
--- /dev/null
+++ b/extra/telepathy-butterfly/0001-bugfix-remove-bad-import-from-im-module.patch
@@ -0,0 +1,26 @@
+From 501b46c364c5608d1b3b84dd48fe57abcabd4aea Mon Sep 17 00:00:00 2001
+From: Ionut Biru <ibiru@archlinux.org>
+Date: Mon, 6 Dec 2010 04:22:45 -0800
+Subject: [PATCH] bugfix: remove bad import from im module
+
+Signed-off-by: Ionut Biru <ibiru@archlinux.org>
+---
+ butterfly/channel/im.py | 2 --
+ 1 files changed, 0 insertions(+), 2 deletions(-)
+
+diff --git a/butterfly/channel/im.py b/butterfly/channel/im.py
+index 1781234..ac8dd44 100644
+--- a/butterfly/channel/im.py
++++ b/butterfly/channel/im.py
+@@ -30,8 +30,6 @@ import papyon.event
+
+ from butterfly.channel.text import ButterflyTextChannel
+
+-from butterfly.Channel_Interface_Conference import CHANNEL_INTERFACE_CONFERENCE
+-
+ __all__ = ['ButterflyImChannel']
+
+ logger = logging.getLogger('Butterfly.ImChannel')
+--
+1.7.3.2
+
diff --git a/extra/telepathy-butterfly/PKGBUILD b/extra/telepathy-butterfly/PKGBUILD
new file mode 100644
index 000000000..915673e49
--- /dev/null
+++ b/extra/telepathy-butterfly/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 102171 2010-12-06 12:36:03Z ibiru $
+# Maintainer: Ionut Biru <ibiru@archlinux.org>
+# Contributor: Daniel Balieiro <daniel@balieiro.com>
+pkgname=telepathy-butterfly
+pkgver=0.5.15
+pkgrel=1
+pkgdesc="A MSN connection manager for Telepathy"
+arch=('i686' 'x86_64')
+url="http://telepathy.freedesktop.org"
+groups=('telepathy')
+license=('GPL')
+depends=('papyon>=0.5.4' 'python-telepathy>=0.15.19')
+source=(http://telepathy.freedesktop.org/releases/telepathy-butterfly/telepathy-butterfly-${pkgver}.tar.gz
+ 0001-bugfix-remove-bad-import-from-im-module.patch)
+install=telepathy-butterfly.install
+md5sums=('4baa6337822f01d817c4b9d8fd406e82'
+ '08417a06a0e4a1875f1baf4b910cdcf4')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i "${srcdir}/0001-bugfix-remove-bad-import-from-im-module.patch"
+ ./configure --prefix=/usr --libexecdir=/usr/lib/telepathy
+ make
+ make DESTDIR="${pkgdir}" install
+
+ sed -i -e "s|#![ ]*/usr/bin/python$|#!/usr/bin/python2|" \
+ "${pkgdir}/usr/lib/telepathy/telepathy-butterfly"
+}
diff --git a/extra/telepathy-butterfly/telepathy-butterfly.install b/extra/telepathy-butterfly/telepathy-butterfly.install
new file mode 100644
index 000000000..87d7838b8
--- /dev/null
+++ b/extra/telepathy-butterfly/telepathy-butterfly.install
@@ -0,0 +1,13 @@
+post_install() {
+ killall -HUP dbus-daemon 2>&1
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ post_install $1
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/extra/telepathy-farsight/PKGBUILD b/extra/telepathy-farsight/PKGBUILD
new file mode 100644
index 000000000..100183822
--- /dev/null
+++ b/extra/telepathy-farsight/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 91084 2010-09-22 10:08:21Z ibiru $
+# Maintainer: Ionut Biru <ibiru@archlinux.org>
+# Contributor: Ju Liu <liuju86 at gmail dot com>
+# Contributor: Denis Zawada <deno@rootnode.net>
+pkgname=telepathy-farsight
+pkgver=0.0.15
+pkgrel=2
+pkgdesc="A telepathy-backend to use stream engine."
+arch=('i686' 'x86_64')
+url="http://telepathy.freedesktop.org"
+license=('GPL')
+depends=('telepathy-glib>=0.10.6' 'farsight2>=0.0.17' 'gstreamer0.10-base')
+makedepends=('libxslt' 'python2')
+groups=('telepathy')
+options=('!libtool')
+source=(http://telepathy.freedesktop.org/releases/${pkgname}/${pkgname}-${pkgver}.tar.gz)
+md5sums=('8a15bad987579656be38df237d302610')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr \
+ --libexecdir=/usr/lib/telepathy \
+ --enable-static=no
+ make
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/telepathy-gabble/PKGBUILD b/extra/telepathy-gabble/PKGBUILD
new file mode 100644
index 000000000..d5c9ae32e
--- /dev/null
+++ b/extra/telepathy-gabble/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 110136 2011-02-16 17:45:07Z ibiru $
+# Maintainer : Ionut Biru <ibiru@archlinux.org>
+# Contributor: Daniel Balieiro <daniel@balieiro.com>
+# Contributor: Rodrigo L. M. Flores <mail@rodrigoflores.org>
+pkgname=telepathy-gabble
+pkgver=0.10.5
+pkgrel=1
+pkgdesc="A Jabber/XMPP connection manager for Telepathy"
+arch=('i686' 'x86_64')
+url="http://telepathy.freedesktop.org"
+groups=('telepathy')
+license=('LGPL2.1')
+depends=('telepathy-glib>=0.12.2' 'libsoup>=2.32' 'libnice' 'util-linux-ng' 'sqlite3')
+makedepends=('libxslt' 'python2')
+options=('!libtool')
+source=(http://telepathy.freedesktop.org/releases/telepathy-gabble/${pkgname}-${pkgver}.tar.gz)
+install=telepathy-gabble.install
+md5sums=('6d3e07354fb6d3ea5f8375e7cf776a27')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr \
+ --libexecdir=/usr/lib/telepathy
+ make
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/telepathy-gabble/telepathy-gabble.install b/extra/telepathy-gabble/telepathy-gabble.install
new file mode 100644
index 000000000..87d7838b8
--- /dev/null
+++ b/extra/telepathy-gabble/telepathy-gabble.install
@@ -0,0 +1,13 @@
+post_install() {
+ killall -HUP dbus-daemon 2>&1
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ post_install $1
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/extra/telepathy-glib/PKGBUILD b/extra/telepathy-glib/PKGBUILD
new file mode 100644
index 000000000..772405de1
--- /dev/null
+++ b/extra/telepathy-glib/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 103588 2010-12-21 23:15:02Z ibiru $
+# Maintainer: Ionut Biru <ibiru@archlinux.org>
+# Contributor: Kessia 'even' Pinheiro <kessiapinheiro at gmail.com
+# Contributor: Bjorn Lindeijer <bjorn lindeijer nl>
+pkgname=telepathy-glib
+pkgver=0.12.7
+pkgrel=1
+pkgdesc="GLib bindings for the Telepathy D-Bus protocol"
+arch=('i686' 'x86_64')
+url="http://telepathy.freedesktop.org"
+groups=('telepathy')
+license=('LGPL2.1')
+options=('!libtool')
+depends=('dbus-glib>=0.92')
+makedepends=('libxslt' 'vala' 'gobject-introspection')
+source=("http://telepathy.freedesktop.org/releases/${pkgname}/${pkgname}-${pkgver}.tar.gz")
+md5sums=('a3b5f526e2c831472395352685aba3fe')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr \
+ --enable-vala-bindings \
+ --enable-static=no
+ make
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/telepathy-haze/PKGBUILD b/extra/telepathy-haze/PKGBUILD
new file mode 100644
index 000000000..773a9277a
--- /dev/null
+++ b/extra/telepathy-haze/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 86857 2010-08-05 17:22:25Z ibiru $
+# Maintainer: Ionut Biru <ibiru@archlinux.org>
+# Contributor: Timm Preetz <timm@preetz.us>
+pkgname=telepathy-haze
+pkgver=0.4.0
+pkgrel=1
+pkgdesc="A telepathy-backend to use libpurple (Pidgin) protocols."
+arch=('i686' 'x86_64')
+url="http://telepathy.freedesktop.org"
+license=('GPL')
+depends=('telepathy-glib' 'libpurple')
+makedepends=('libxslt')
+install=telepathy-haze.install
+groups=('telepathy')
+source=(http://telepathy.freedesktop.org/releases/${pkgname}/${pkgname}-${pkgver}.tar.gz)
+md5sums=('6e3e048cbee27aa37a64b8e9cc611664')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --libexecdir=/usr/lib/telepathy
+ make
+ make DESTDIR="${pkgdir}" install
+
+ #remove manager, upstream suggested and it would be removed in the near future
+ rm -rf "${pkgdir}/usr/share/telepathy/managers"
+}
diff --git a/extra/telepathy-haze/telepathy-haze.install b/extra/telepathy-haze/telepathy-haze.install
new file mode 100644
index 000000000..87d7838b8
--- /dev/null
+++ b/extra/telepathy-haze/telepathy-haze.install
@@ -0,0 +1,13 @@
+post_install() {
+ killall -HUP dbus-daemon 2>&1
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ post_install $1
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/extra/telepathy-idle/PKGBUILD b/extra/telepathy-idle/PKGBUILD
new file mode 100644
index 000000000..05fd9edd6
--- /dev/null
+++ b/extra/telepathy-idle/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 102391 2010-12-07 17:47:06Z ibiru $
+# Maintainer: Ionut Biru <ibiru@archlinux.org>
+# Contributor: Bjorn Lindeijer <bjorn lindeijer nl>
+# Contributor: Samuel Mendes <heka.lok@gmail.com>
+pkgname=telepathy-idle
+pkgver=0.1.7
+pkgrel=1
+pkgdesc="An IRC connection manager for Telepathy"
+arch=('i686' 'x86_64')
+url="http://telepathy.freedesktop.org"
+groups=('telepathy')
+license=('LGPL')
+depends=('telepathy-glib>=0.12.5' 'openssl')
+makedepends=('libxslt' 'python2')
+install=telepathy-idle.install
+source=(http://telepathy.freedesktop.org/releases/telepathy-idle/${pkgname}-${pkgver}.tar.gz
+ python27.patch)
+md5sums=('5ee3aa5c6e1112922b11711e6a209331'
+ '03661efde8f768417e224720e1346d7b')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i "${srcdir}/python27.patch"
+ autoreconf -fi
+ ./configure --prefix=/usr \
+ --libexecdir=/usr/lib/telepathy
+ make
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/telepathy-idle/python27.patch b/extra/telepathy-idle/python27.patch
new file mode 100644
index 000000000..f8abffb57
--- /dev/null
+++ b/extra/telepathy-idle/python27.patch
@@ -0,0 +1,21 @@
+diff -Nur telepathy-idle-0.1.7.orig/configure.ac telepathy-idle-0.1.7/configure.ac
+--- telepathy-idle-0.1.7.orig/configure.ac 2010-12-07 03:52:29.000000000 -0800
++++ telepathy-idle-0.1.7/configure.ac 2010-12-07 09:41:21.179715253 -0800
+@@ -103,7 +103,7 @@
+ AC_MSG_ERROR([xsltproc (from the libxslt source package) is required])
+ fi
+ PYTHON=
+-AC_CHECK_PROGS([PYTHON], [python2.3 python2.4 python2.5 python])
++AC_CHECK_PROGS([PYTHON], [python2.3 python2.4 python2.5 python2.7 python])
+ if test -z "$PYTHON"; then
+ AC_MSG_ERROR([Python is required to compile this package])
+ fi
+@@ -111,7 +111,7 @@
+
+ dnl check for a version of python that can run the twisted tests
+ AC_MSG_CHECKING([for Python with Twisted and IRC protocol support])
+-for TEST_PYTHON in python2.5 python2.6 python; do
++for TEST_PYTHON in python2.5 python2.6 python2.7 python; do
+ if $TEST_PYTHON -c "from sys import version_info; import dbus, dbus.mainloop.glib; raise SystemExit(version_info < (2, 5, 0, 'final', 0))" >/dev/null 2>&1; then
+ if $TEST_PYTHON -c "import twisted.words.protocols.irc, twisted.internet.reactor" >/dev/null 2>&1; then
+ AM_CONDITIONAL([WANT_TWISTED_TESTS], true)
diff --git a/extra/telepathy-idle/telepathy-idle.install b/extra/telepathy-idle/telepathy-idle.install
new file mode 100644
index 000000000..87d7838b8
--- /dev/null
+++ b/extra/telepathy-idle/telepathy-idle.install
@@ -0,0 +1,13 @@
+post_install() {
+ killall -HUP dbus-daemon 2>&1
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ post_install $1
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/extra/telepathy-logger/PKGBUILD b/extra/telepathy-logger/PKGBUILD
new file mode 100644
index 000000000..12a5ab927
--- /dev/null
+++ b/extra/telepathy-logger/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 101587 2010-11-29 17:14:18Z ibiru $
+# Maintainer: Ionut Biru <ibiru@archlinux.org>
+pkgname=telepathy-logger
+pkgver=0.1.7
+pkgrel=1
+pkgdesc="Telepathy framework logging daemon"
+arch=(i686 x86_64)
+url="http://telepathy.freedesktop.org/wiki/Logger"
+license=('LGPL2.1')
+depends=('telepathy-glib>=0.12.5' 'sqlite3' 'libxml2>=2.7.8' 'dconf')
+makedepends=('intltool' 'gnome-doc-utils')
+options=('!libtool')
+source=(http://telepathy.freedesktop.org/releases/${pkgname}/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('92fdf8bd2ced40831b3c1198ed1b88d2')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --libexecdir=/usr/lib/telepathy \
+ --disable-static \
+ --disable-scrollkeeper \
+ --disable-schemas-compile
+
+ make
+ make DESTDIR="$pkgdir/" install
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/extra/telepathy-logger/telepathy-logger.install b/extra/telepathy-logger/telepathy-logger.install
new file mode 100644
index 000000000..8fd591f55
--- /dev/null
+++ b/extra/telepathy-logger/telepathy-logger.install
@@ -0,0 +1,11 @@
+post_install() {
+ usr/bin/glib-compile-schemas usr/share/glib-2.0/schemas
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove(){
+ post_install
+}
diff --git a/extra/telepathy-mission-control/PKGBUILD b/extra/telepathy-mission-control/PKGBUILD
new file mode 100644
index 000000000..502a4e9d9
--- /dev/null
+++ b/extra/telepathy-mission-control/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 99782 2010-11-17 16:36:42Z ibiru $
+# Maintainer: Ionut Biru <ibiru@archlinux.org>
+# Contributor: Ju Liu <liuju86 at gmail dot com>
+# Contributor: Bjorn Lindeijer <bjorn lindeijer nl>
+# Contributor: Andreas Zwinkau <beza1e1@web.de>
+pkgname=telepathy-mission-control
+pkgver=5.6.1
+pkgrel=1
+pkgdesc="A Telepathy component providing abstraction of some of the details of connection managers."
+arch=('i686' 'x86_64')
+url="http://mission-control.sourceforge.net/"
+license=('LGPL2.1')
+depends=('telepathy-glib>=0.12.4' 'libgnome-keyring>=2.32.0')
+makedepends=('libxslt' 'python2')
+options=('!libtool')
+source=(http://telepathy.freedesktop.org/releases/telepathy-mission-control/$pkgname-$pkgver.tar.gz)
+md5sums=('0627423bfdf1f5616a4250205ec35b70')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ ./configure --prefix=/usr \
+ --libexecdir=/usr/lib/telepathy \
+ --enable-gnome-keyring
+ make
+ make DESTDIR="$pkgdir" install
+}
diff --git a/extra/telepathy-qt4/PKGBUILD b/extra/telepathy-qt4/PKGBUILD
new file mode 100644
index 000000000..cedc5ca0c
--- /dev/null
+++ b/extra/telepathy-qt4/PKGBUILD
@@ -0,0 +1,32 @@
+# $Id: PKGBUILD 104722 2011-01-04 19:45:22Z ibiru $
+# Maintainer: Ionut Biru <ibiru@archlinux.org>
+pkgname=telepathy-qt4
+pkgver=0.4.2
+pkgrel=1
+pkgdesc="A library for Qt-based Telepathy clients."
+arch=('i686' 'x86_64')
+url="http://telepathy.freedesktop.org"
+groups=('telepathy')
+license=('LGPL')
+options=('!libtool')
+depends=('qt' 'telepathy-farsight')
+makedepends=('libxslt' 'python2' 'cmake')
+source=(http://telepathy.freedesktop.org/releases/$pkgname/$pkgname-$pkgver.tar.gz)
+md5sums=('d014e49b11fcbb4dc87aa1757d209a3a')
+
+build() {
+ cd "${srcdir}"
+
+ mkdir build
+ cd build
+ cmake ../${pkgname}-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DHAVE_QDBUSVARIANT_OPERATOR_EQUAL=1
+ make
+}
+
+package() {
+ cd "${srcdir}"/build
+ make DESTDIR="$pkgdir" install
+}
diff --git a/extra/telepathy-salut/PKGBUILD b/extra/telepathy-salut/PKGBUILD
new file mode 100644
index 000000000..f90d2f1fa
--- /dev/null
+++ b/extra/telepathy-salut/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 94337 2010-10-06 16:43:18Z ibiru $
+# Maintainer: Ionut Biru <ibiru@archlinux.org>
+# Contributor: Daniel Balieiro <daniel@balieiro.com>
+pkgname=telepathy-salut
+pkgver=0.4.0
+pkgrel=1
+pkgdesc="A link-local XMPP connection manager for Telepathy"
+arch=('i686' 'x86_64')
+url="http://telepathy.freedesktop.org"
+groups=('telepathy')
+license=('LGPL')
+depends=('telepathy-glib>=0.12.0' 'avahi' 'libsoup')
+makedepends=('libxslt' 'python2')
+install=telepathy-salut.install
+source=(http://telepathy.freedesktop.org/releases/${pkgname}/${pkgname}-${pkgver}.tar.gz)
+md5sums=('95f0cf9681912104474b0f4c4d00807f')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr \
+ --libexecdir=/usr/lib/telepathy
+ make
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/telepathy-salut/telepathy-salut.install b/extra/telepathy-salut/telepathy-salut.install
new file mode 100644
index 000000000..87d7838b8
--- /dev/null
+++ b/extra/telepathy-salut/telepathy-salut.install
@@ -0,0 +1,13 @@
+post_install() {
+ killall -HUP dbus-daemon 2>&1
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ post_install $1
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/extra/telepathy-sofiasip/PKGBUILD b/extra/telepathy-sofiasip/PKGBUILD
new file mode 100644
index 000000000..796e24c8a
--- /dev/null
+++ b/extra/telepathy-sofiasip/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: PKGBUILD 108673 2011-02-02 13:28:13Z ibiru $
+# Maintainer : Ionut Biru <ibiru@archlinux.org>
+# Contributor: Timm Preetz <timm@preetz.us>
+pkgname=telepathy-sofiasip
+pkgver=0.6.6
+pkgrel=1
+pkgdesc="a SIP-protocol connection manager for the Telepathy framework based on SofiaSIP-stack."
+arch=('i686' 'x86_64')
+url="http://telepathy.freedesktop.org"
+license=('LGPL')
+depends=('telepathy-glib' 'sofia-sip')
+makedepends=('libxslt' 'python2')
+install=telepathy-sofiasip.install
+groups=('telepathy')
+source=(http://telepathy.freedesktop.org/releases/${pkgname}/${pkgname}-${pkgver}.tar.gz)
+md5sums=('aebdadeb92db02b0da916fd077fa8c7e')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --libexecdir=/usr/lib/telepathy
+ make
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/telepathy-sofiasip/telepathy-sofiasip.install b/extra/telepathy-sofiasip/telepathy-sofiasip.install
new file mode 100644
index 000000000..87d7838b8
--- /dev/null
+++ b/extra/telepathy-sofiasip/telepathy-sofiasip.install
@@ -0,0 +1,13 @@
+post_install() {
+ killall -HUP dbus-daemon 2>&1
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ post_install $1
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/extra/terminal/PKGBUILD b/extra/terminal/PKGBUILD
new file mode 100644
index 000000000..838775fdf
--- /dev/null
+++ b/extra/terminal/PKGBUILD
@@ -0,0 +1,36 @@
+# $Id: PKGBUILD 108268 2011-01-30 17:20:36Z andyrtr $
+# Maintainer: AndyRTR <andyrtr@archlinux.org>
+# Contributor: tobias <tobias funnychar archlinux.org>
+# Contributor: Aurelien Foret <orelien@chez.com>
+
+pkgname=terminal
+pkgver=0.4.6
+pkgrel=1
+pkgdesc="A modern terminal emulator primarly for the Xfce desktop environment"
+arch=(i686 x86_64)
+license=('GPL2')
+url="http://www.xfce.org/projects/terminal/"
+groups=('xfce4')
+depends=('exo>=0.5.4' "vte" 'dbus-glib'
+ 'startup-notification' 'hicolor-icon-theme')
+makedepends=('pkgconfig' 'intltool')
+options=('!libtool')
+install=terminal.install
+source=(http://archive.xfce.org/src/apps/${pkgname}/0.4/Terminal-${pkgver}.tar.bz2)
+md5sums=('e5c592b56d260b4a7b57039882e18b81')
+
+build() {
+ cd ${srcdir}/Terminal-${pkgver}
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --libexecdir=/usr/lib/xfce4 \
+ --localstatedir=/var \
+ --disable-static \
+ --disable-debug
+ make
+}
+
+package() {
+ cd ${srcdir}/Terminal-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/terminal/terminal.install b/extra/terminal/terminal.install
new file mode 100644
index 000000000..21b79d2d4
--- /dev/null
+++ b/extra/terminal/terminal.install
@@ -0,0 +1,11 @@
+post_install() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
diff --git a/extra/testdisk/PKGBUILD b/extra/testdisk/PKGBUILD
new file mode 100644
index 000000000..efed07cd6
--- /dev/null
+++ b/extra/testdisk/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 75596 2010-04-01 22:40:17Z giovanni $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+# Contributor: Sergej Pupykin <pupykin.s+arch@gmail.com>
+# Contributor: Michal Krenek <mikos@sg1.cz>
+
+pkgname=testdisk
+pkgver=6.11.3
+pkgrel=3
+pkgdesc="Checks and undeletes partitions + PhotoRec, signature based recovery tool"
+arch=('i686' 'x86_64')
+url="http://www.cgsecurity.org/index.html?testdisk.html"
+license=('GPL')
+depends=('libjpeg>=8' 'openssl' 'progsreiserfs' 'ntfsprogs')
+makedepends=('pkgconfig')
+source=(http://www.cgsecurity.org/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('ceee384a8613d8f7ffff5ccfa3fba510')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ ./configure --prefix=/usr \
+ --without-ewf \
+ --enable-sudo
+ make || return 1
+ make DESTDIR="${pkgdir}/" install || return 1
+}
diff --git a/extra/texi2html/PKGBUILD b/extra/texi2html/PKGBUILD
new file mode 100644
index 000000000..0a3af063c
--- /dev/null
+++ b/extra/texi2html/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 65086 2010-01-24 10:15:30Z tpowa $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+# Contributor: dibblethewrecker dibblethewrecker.at.jiwe.dot.org
+# Contributor: dibblethewrecker dibblethewrecker.at.jiwe.dot.org
+
+pkgname=texi2html
+pkgver=1.82
+pkgrel=1
+pkgdesc="Converts texinfo documents to HTML"
+arch=('i686' 'x86_64')
+url="http://www.nongnu.org/texi2html/"
+license=('GPL')
+depends=('perl')
+source=(http://www.very-clever.com/download/nongnu/texi2html/$pkgname-$pkgver.tar.gz)
+
+build() {
+ cd $startdir/src/$pkgname-$pkgver
+ ./configure --prefix=/usr
+ sed -i "s|mandir = /usr/man|mandir = \${prefix}/share/man|g" Makefile
+ make || return 1
+ make prefix=$startdir/pkg/usr install
+ rm -r $startdir/pkg/usr/share/texinfo
+ rm -r $startdir/pkg/usr/share/info
+}
+md5sums=('7ea537a8c81ffbf5421b39c0333e91df')
diff --git a/extra/texlive-bin/09-texlive-fonts.conf b/extra/texlive-bin/09-texlive-fonts.conf
new file mode 100644
index 000000000..f870fbd7a
--- /dev/null
+++ b/extra/texlive-bin/09-texlive-fonts.conf
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+<fontconfig>
+ <dir>/usr/share/texmf-dist/fonts/opentype</dir>
+ <dir>/usr/share/texmf-dist/fonts/truetype</dir>
+ <dir>/usr/local/share/texmf/fonts/opentype</dir>
+ <dir>/usr/local/share/texmf/fonts/truetype</dir>
+</fontconfig>
+
diff --git a/extra/texlive-bin/PKGBUILD b/extra/texlive-bin/PKGBUILD
new file mode 100644
index 000000000..2a2139d9c
--- /dev/null
+++ b/extra/texlive-bin/PKGBUILD
@@ -0,0 +1,293 @@
+# Maintainer: francois <francois.archlinux.org>
+
+pkgname=texlive-bin
+pkgver=2010.1
+_luatex_ver=0.62.0
+pkgrel=7
+pkgdesc="TeX Live binaries"
+license=('GPL')
+arch=('i686' 'x86_64')
+depends=('t1lib' 'gd' 'libgraphite' 'poppler' 'libsigsegv')
+makedepends=('perl' 'clisp' 'ffcall')
+optdepends=('ed: for texconfig')
+provides=('lcdf-typetools' 'kpathsea' 'xindy' 'pdfjam')
+conflicts=('pdfjam')
+options=('!libtool')
+url='http://tug.org/texlive/'
+source=('texmf.cnf'
+ 'fix-fontforge-encoding.patch'
+ '09-texlive-fonts.conf'
+ 'dvipng-fix-options.patch'
+ 'http://mirrors.kernel.org/archlinux/other/texlive/texlive-bin-source-20100926.tar.xz'
+ 'http://mirrors.kernel.org/archlinux/other/texlive/texlive-bin-texmf-20101105.tar.xz'
+ "http://foundry.supelec.fr/gf/download/frsrelease/381/1533/luatex-beta-${_luatex_ver}.tar.bz2")
+backup=(etc/texmf/web2c/texmf.cnf \
+ etc/texmf/chktex/chktexrc \
+ etc/texmf/web2c/mktex.cnf \
+ etc/texmf/web2c/updmap.cfg \
+ etc/texmf/web2c/fmtutil.cnf \
+ etc/texmf/tex/generic/config/language.dat \
+ etc/texmf/tex/generic/config/language.def \
+ etc/texmf/tex/generic/config/pdftexconfig.tex \
+ etc/texmf/ttf2pk/ttf2pk.cfg \
+ etc/texmf/dvips/config/config.ps \
+ etc/texmf/dvipdfmx/dvipdfmx.cfg \
+ etc/texmf/dvipdfm/config/config \
+ etc/texmf/xdvi/XDvi)
+
+build() {
+ if [ "${CARCH}" = "x86_64" ]; then
+ export CFLAGS="${CFLAGS} -fPIC"
+ export CXXFLAGS="${CXXFLAGS} -fPIC"
+ fi
+
+ cd $srcdir
+ # Building LuaTeX
+ cd luatex-beta-${_luatex_ver}
+ patch -p0 -i ../fix-fontforge-encoding.patch
+ mkdir build
+ cd build
+ ../source/configure --prefix=/usr -C \
+ --disable-native-texlive-build \
+ --with-banner-add="/Arch Linux" \
+ --enable-cxx-runtime-hack \
+ --disable-all-pkgs \
+ --disable-dump-share \
+ --disable-ptex \
+ --enable-luatex \
+ --without-system-ptexenc \
+ --with-system-graphite \
+ --without-system-icu \
+ --without-system-kpathsea \
+ --with-system-freetype2 \
+ --with-system-poppler \
+ --with-freetype2-libdir=/usr/lib \
+ --with-freetype2-include=/usr/include/freetype2 \
+ --with-system-gd \
+ --with-system-libpng \
+ --without-system-teckit \
+ --with-system-zlib \
+ --with-system-t1lib \
+ --disable-shared \
+ --disable-largefile \
+ --disable-ipc \
+ --without-mf-x-toolkit \
+ --without-x
+ make
+ make -C libs/zziplib
+ make -C libs/obsdcompat
+ make -C texk/kpathsea
+ make -C texk/web2c luatex
+
+ cd "$srcdir"
+ # this patch removes spurious error message with locale "xx_YY.utf8"
+ patch -p0 -i fix-fontforge-encoding.patch
+ ## fix dvipng (bug #20157)
+ pushd "source/texk/dvipng/dvipng-1.13"
+ patch -p0 -i "$srcdir/dvipng-fix-options.patch"
+ popd
+
+ #############################################################
+ ### configure
+ cd source
+ ## prevent compiling Xdvi with libXp
+ sed -i~ 's|-lXp ||' texk/xdvik/configure
+ test ! -d Work && mkdir Work
+ cd Work
+ echo "--> Initial configuration..."
+ # we use temporary prefix to avoid messing the existing $pkgdir/usr/share/texmf tree
+ ../configure --prefix=/usr -C \
+ --datarootdir=$srcdir/inst/usr/share \
+ --datadir=$srcdir/inst/usr/share \
+ --mandir=$srcdir/inst/usr/share/man \
+ --disable-native-texlive-build \
+ --with-banner-add="/Arch Linux" \
+ --disable-multiplatform \
+ --disable-dialog \
+ --disable-psutils \
+ --disable-t1utils \
+ --disable-bibtexu \
+ --disable-xz \
+ --with-system-zlib \
+ --with-system-pnglib \
+ --with-system-ncurses \
+ --with-system-t1lib \
+ --with-system-gd \
+ --with-system-xpdf \
+ --with-system-freetype2 \
+ --with-system-graphite \
+ --with-freetype2-libdir=/usr/lib \
+ --with-freetype2-include=/usr/include/freetype2 \
+ --with-xdvi-x-toolkit=xaw \
+ --disable-dump-share \
+ --disable-aleph \
+ --disable-luatex \
+ --with-clisp-runtime=default \
+ --enable-xindy --disable-xindy-rules --disable-xindy-docs
+ #############################################################
+ ### make
+ echo "-------------------------------------------------------"
+ echo "--> Building the whole beast ..."
+ echo "-------------------------------------------------------"
+ make
+}
+
+package() {
+ cd $srcdir
+ #############################################################
+ ### install texmf tree
+ echo "-------------------------------------------------------"
+ echo "--> installing the texmf tree"
+ echo "-------------------------------------------------------"
+ install -m755 -d $pkgdir/usr/share
+ cp -r texmf $pkgdir/usr/share/
+ install -d -m755 $pkgdir/etc/texmf/web2c
+ install -d -m755 $pkgdir/etc/texmf/chktex
+ install -d -m755 $pkgdir/etc/texmf/dvips/config
+ install -d -m755 $pkgdir/etc/texmf/dvipdfm/config
+ install -d -m755 $pkgdir/etc/texmf/dvipdfmx
+ install -d -m755 $pkgdir/etc/texmf/tex/generic/config
+ install -d -m755 $pkgdir/etc/texmf/ttf2pk
+ install -d -m755 $pkgdir/etc/texmf/xdvi
+ install -d -m755 $pkgdir/etc/fonts/conf.avail
+ install -m644 $srcdir/09-texlive-fonts.conf $pkgdir/etc/fonts/conf.avail/
+ # replace upstream texmf.cnf with ours
+ rm -f $pkgdir/usr/share/texmf/web2c/texmf.cnf
+ install -m644 $srcdir/texmf.cnf $pkgdir/etc/texmf/web2c/texmf.cnf
+ # since the location of texmf.cnf is hard-wired to be under /usr/share/texmf/web2c
+ # we make a symlink from /etc/texmf/web2c/texmf.cnf to the latter
+ ln -s /etc/texmf/web2c/texmf.cnf $pkgdir/usr/share/texmf/web2c/texmf.cnf
+ # fix location of TEXMFCACHE for luatools
+ sed -i 's#texlive2010#texlive#' $pkgdir/usr/share/texmf/web2c/texmfcnf.lua
+ ## remove aleph from fmtutil.cnf
+ sed -i -e '/aleph/d' $pkgdir/usr/share/texmf/web2c/fmtutil.cnf
+ # move man files to /usr/share/man
+ for i in 1 5; do
+ install -d -m755 $pkgdir/usr/share/man/man$i
+ mv $pkgdir/usr/share/texmf/doc/man/man$i/*.$i $pkgdir/usr/share/man/man$i/
+ done
+ # move info files to /usr/share/info
+ install -d -m755 $pkgdir/usr/share/info
+ mv $pkgdir/usr/share/texmf/doc/info/*.info $pkgdir/usr/share/info/
+ rm -rf $pkgdir/usr/share/texmf/doc/{man,info}
+ # copy config files to $TEXMFCONFIG tree
+ cp -a $pkgdir/usr/share/texmf/chktex/chktexrc \
+ $pkgdir/etc/texmf/chktex/
+ cp -a $pkgdir/usr/share/texmf/web2c/mktex.cnf \
+ $pkgdir/etc/texmf/web2c/
+ cp -a $pkgdir/usr/share/texmf/web2c/updmap.cfg \
+ $pkgdir/etc/texmf/web2c/
+ cp -a $pkgdir/usr/share/texmf/web2c/fmtutil.cnf \
+ $pkgdir/etc/texmf/web2c/
+ cp -a $pkgdir/usr/share/texmf/dvips/config/config.ps \
+ $pkgdir/etc/texmf/dvips/config/
+ cp -a $pkgdir/usr/share/texmf/dvipdfm/config/config \
+ $pkgdir/etc/texmf/dvipdfm/config/
+ cp -a $pkgdir/usr/share/texmf/dvipdfmx/dvipdfmx.cfg \
+ $pkgdir/etc/texmf/dvipdfmx/
+ cp -a $pkgdir/usr/share/texmf/tex/generic/config/pdftexconfig.tex \
+ $pkgdir/etc/texmf/tex/generic/config/
+ cp -a $pkgdir/usr/share/texmf/tex/generic/config/language.dat \
+ $pkgdir/etc/texmf/tex/generic/config/
+ cp -a $pkgdir/usr/share/texmf/tex/generic/config/language.def \
+ $pkgdir/etc/texmf/tex/generic/config/
+ cp -a $pkgdir/usr/share/texmf/ttf2pk/ttf2pk.cfg \
+ $pkgdir/etc/texmf/ttf2pk/
+ cp -a $pkgdir/usr/share/texmf/xdvi/XDvi \
+ $pkgdir/etc/texmf/xdvi/
+ # remove TL specific warnings in the language.{dat,def} files:
+ sed -i -e '/DO NOT EDIT/,+3 d' $pkgdir/etc/texmf/tex/generic/config/language.*
+ # clean updmap.cfg
+ sed -i '/^\(Map\|MixedMap\)/d' $pkgdir/etc/texmf/web2c/updmap.cfg
+ sed -i '/^#! \(Map\|MixedMap\)/d' $pkgdir/etc/texmf/web2c/updmap.cfg
+
+ #############################################################
+ ### install
+ cd source
+ # fixes for xindy
+ find utils/xindy -name Makefile -exec sed -i -e "s|^prefix =.\+$|prefix = $pkgdir/usr|" -e "s|^mandir =.\+$|mandir = \${prefix}/share/man|" -e "s|^datadir =.\+$|datadir = \${datarootdir}/texmf|" -e "s|^docdir =.\+$|docdir = \${datadir}/doc/xindy|" '{}' \;
+
+ echo "-------------------------------------------------------"
+ echo "--> Proceeding with make install ..."
+ echo "-------------------------------------------------------"
+ cd Work
+ make prefix=$srcdir/inst/usr texmf=$pkgdir/usr/share/texmf install
+
+ # restore install location of bin/lib/include
+ mv -f $srcdir/inst/usr/bin $pkgdir/usr/bin
+ mv -f $srcdir/inst/usr/lib $pkgdir/usr/lib
+ mv -f $srcdir/inst/usr/include $pkgdir/usr/include
+ # add symlinks to manpages since they are not included in the original texmf tree
+ for m in $srcdir/inst/usr/share/man/man1/*; do
+ bm=$(basename $m)
+ test -f $pkgdir/usr/share/man/man1/$bm || mv -f $m $pkgdir/usr/share/man/man1/
+ done
+
+ ## install luatex binary
+ install -m755 $srcdir/luatex-beta-${_luatex_ver}/build/texk/web2c/luatex $pkgdir/usr/bin/
+ cd $pkgdir/usr/bin
+ /bin/ln -s luatex texlua
+ /bin/ln -s luatex texluac
+
+ # symlinks in $pkgdir/usr/bin are incorrect
+ echo "--> Fixing symlinks for scripts ..."
+ for f in $pkgdir/usr/bin/* ; do
+ if [ -L $f ]; then
+ target=`ls -l "$f" | sed 's/^.\+ -> //'`
+ if [[ "$target" == ..* ]]; then
+ newtarget=`echo $target | sed -e 's#../#/usr/share/#'`
+ rm -f $f
+ ln -s $newtarget $f
+ test -f $pkgdir/$newtarget && chmod a+x $pkgdir/$newtarget
+ fi
+ fi
+ done
+
+ # create symlinks for formats
+ echo "--> Create symlinks for TeX formats ..."
+ PATH="$PATH:${pkgdir}/usr/bin" texlinks -f $pkgdir/usr/share/texmf/web2c/fmtutil.cnf $pkgdir/usr/bin/
+ #############################################################
+ # remove symlinks to scripts that are not in texlive-bin or texlive-core:
+ SYMLINKS_TO_REMOVE="authorindex \
+ebong \
+bibexport \
+cachepic \
+epspdf \
+epspdftk \
+fig4latex \
+makeglossaries \
+mathspic \
+mkgrkindex \
+pdfannotextractor \
+perltex \
+pdfthumb \
+ppower4 \
+pst2pdf \
+ps4pdf \
+splitindex \
+svn-multi \
+htcontext \
+htlatex \
+htmex \
+ht \
+httexi \
+httex \
+htxelatex \
+htxetex \
+mk4ht \
+ulqda \
+vpe \
+tlmgr"
+ for s in $SYMLINKS_TO_REMOVE; do
+ rm -f $pkgdir/usr/bin/$s
+ done
+ ###################################################################
+}
+
+md5sums=('626f900fb59f036d6fea95f08c74b00b'
+ 'bfb9716aa00c86c08cd31e5b32edeb98'
+ '393a4bf67adc7ca5df2b386759d1a637'
+ '60e405158f53519348d9783e8d420670'
+ '0b2c3a4a1b1e4befb90d7fbb5f08a6e9'
+ '7ae1400dafdb079dcd08d233de83ec44'
+ '4b22a50866849ec14886906474a72a01')
diff --git a/extra/texlive-bin/dvipng-fix-options.patch b/extra/texlive-bin/dvipng-fix-options.patch
new file mode 100644
index 000000000..c0eda1d90
--- /dev/null
+++ b/extra/texlive-bin/dvipng-fix-options.patch
@@ -0,0 +1,10 @@
+--- papersiz.c 2010/03/17 21:40:00 1.16
++++ papersiz.c 2010/09/29 21:14:40 1.17
+@@ -52,6 +52,7 @@
+ while (*q != ',' && *q !='\0')
+ q++;
+ tmp = tmp*lengthsp[i]*dpi/4736286L; /* sp * dots/in / (sp/in), convert sp to pixels */
++ *p=q;
+ return((int32_t) tmp);
+ }
+
diff --git a/extra/texlive-bin/fix-fontforge-encoding.patch b/extra/texlive-bin/fix-fontforge-encoding.patch
new file mode 100644
index 000000000..8104b3289
--- /dev/null
+++ b/extra/texlive-bin/fix-fontforge-encoding.patch
@@ -0,0 +1,12 @@
+--- source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/noprefs.c.orig 2009-09-30 19:27:00.935039526 +0200
++++ source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/noprefs.c 2009-09-30 19:28:04.908364646 +0200
+@@ -495,6 +495,9 @@
+ { "Big5HKSCS", e_big5hkscs },
+ { "Big5-HKSCS", e_big5hkscs },
+ { "UTF-8", e_utf8 },
++ { "utf-8", e_utf8 },
++ { "UTF8", e_utf8 },
++ { "utf8", e_utf8 },
+ { "ISO-10646/UTF-8", e_utf8 },
+ { "ISO_10646/UTF-8", e_utf8 },
+ { "UCS2", e_unicode },
diff --git a/extra/texlive-bin/texmf.cnf b/extra/texlive-bin/texmf.cnf
new file mode 100644
index 000000000..b9d51682a
--- /dev/null
+++ b/extra/texlive-bin/texmf.cnf
@@ -0,0 +1,663 @@
+% texmf.cnf for TeXLive/Arch Linux -- runtime path configuration file for kpathsea.
+% Public domain.
+%
+% What follows is a super-summary of what this .cnf file can
+% contain. Please read the Kpathsea manual for more information.
+%
+% Any identifier (sticking to A-Za-z_ for names is safest) can be assigned.
+% The `=' (and surrounding spaces) is optional.
+% $foo (or ${foo}) in a value expands to the envvar or cnf value of foo.
+% Long lines can be continued with a \.
+%
+% Earlier entries (in the same or another file) override later ones, and
+% an environment variable foo overrides any texmf.cnf definition of foo.
+%
+% All definitions are read before anything is expanded, so you can use
+% variables before they are defined.
+%
+% If a variable assignment is qualified with `.PROGRAM', it is ignored
+% unless the current executable (last filename component of argv[0]) is
+% named PROGRAM. This foo.PROGRAM construct is not recognized on the
+% right-hand side. For environment variables, use FOO_PROGRAM.
+%
+% Which file formats use which paths for searches is described in the
+% various programs' and the Kpathsea documentation (http://tug.org/kpathsea).
+%
+% // means to search subdirectories (recursively).
+% A leading !! means to look only in the ls-R db, never on the disk.
+% In this file, either ; or : can be used to separate path components.
+% A leading/trailing/doubled path separator in the paths will be
+% expanded into the compile-time default. Probably not what you want.
+%
+
+% Brace notation is supported, for example: /usr/local/{mytex,othertex}
+% expands to /usr/local/mytex:/usr/local/othertex. You can use the path
+% separator as well as the comma for this: /usr/local/{mytex:othertex}
+% also expands to /usr/local/mytex:/usr/local/othertex. We make
+% extensive use of this.
+
+% Part 1: Search paths and directories.
+
+% You can set an environment variable to override TEXMF if you're testing
+% a new TeX tree, without changing anything else.
+%
+% You may wish to use one of the $SELFAUTO... variables here so TeX will
+% find where to look dynamically. See the manual and the definition
+% below of TEXMFCNF.
+
+% The tree containing the runtime files closely related to the specific
+% program version used:
+TEXMFMAIN = /usr/share/texmf
+
+% The main distribution tree:
+TEXMFDIST = /usr/share/texmf-dist
+
+% Our documentation-only tree, arranged by language:
+TEXMFDOC = /usr/share/texmf-doc
+
+% A place for local additions to a "standard" texmf tree.
+% This tree is not used for local configuration maintained by
+% texconfig, it uses TEXMFCONFIG below.
+TEXMFLOCAL = /usr/local/share/texmf
+
+% TEXMFSYSVAR, where texconfig-sys stores variable runtime data.
+TEXMFSYSVAR = /var/lib/texmf
+
+% TEXMFSYSCONFIG, where texconfig-sys stores configuration data.
+TEXMFSYSCONFIG = /etc/texmf
+
+% User texmf trees are allowed as follows.
+TEXMFHOME = ~/texmf
+
+% TEXMFVAR, where texconfig stores variable runtime data.
+TEXMFVAR = ~/.texlive/texmf-var
+
+% TEXMFCONFIG, where texconfig stores configuration data.
+TEXMFCONFIG = ~/.texlive/texmf-config
+
+% Now, list all the texmf trees. If you have multiple trees you can
+% use shell brace notation, like this:
+% TEXMF = {$TEXMFHOME,!!$TEXMFLOCAL,!!$TEXMFMAIN}
+% The braces are necessary.
+%
+% For texconfig to work properly, TEXMFCONFIG and TEXMFVAR should be named
+% explicitly and before all other trees.
+%
+% TEXMFLOCAL follows TEXMFMAIN (and precedes TEXMFDIST) because the
+% files in TEXMFMAIN are tightly coupled with the particular version of
+% the distribution, such as format files. Overriding them would be more
+% likely to cause trouble than help. On the other hand, all the
+% standard packages and fonts are in TEXMFDIST, and locally-installed
+% versions should take precedence over those (although it is generally a
+% source of confusion to have different versions of a package installed,
+% whatever the trees, so try to avoid it).
+TEXMF = {$TEXMFCONFIG,$TEXMFVAR,$TEXMFHOME,!!$TEXMFSYSCONFIG,!!$TEXMFSYSVAR,!!$TEXMFMAIN,!!$TEXMFLOCAL,!!$TEXMFDIST}
+
+% Where to look for ls-R files. There need not be an ls-R in the
+% directories in this path, but if there is one, Kpathsea will use it.
+% By default, this is only the !! elements of TEXMF, so that mktexlsr
+% does not create ls-R files in the non-!! elements -- because if an
+% ls-R is present, it will be used, and the disk will not be searched.
+% This is arguably a bug in kpathsea.
+TEXMFDBS = {!!$TEXMFSYSCONFIG,!!$TEXMFSYSVAR,!!$TEXMFMAIN,!!$TEXMFLOCAL,!!$TEXMFDIST}
+
+% The system trees. These are the trees that are shared by all the users.
+% If a tree appears in this list, the mktex* scripts will use
+% VARTEXFONTS for generated files, if the original tree isn't writable;
+% otherwise the current working directory is used.
+SYSTEXMF = $TEXMFSYSVAR;$TEXMFMAIN;$TEXMFLOCAL;$TEXMFDIST
+
+% Where generated fonts may be written. This tree is used when the sources
+% were found in a system tree and either that tree wasn't writable, or the
+% varfonts feature was enabled in MT_FEATURES in mktex.cnf.
+VARTEXFONTS = $TEXMFVAR/fonts
+
+% On some systems, there will be a system tree which contains all the font
+% files that may be created as well as the formats. For example
+% TEXMFVAR = /var/lib/texmf
+% is used in many distros. In this case, set VARTEXFONTS like this
+% VARTEXFONTS = $TEXMFVAR/fonts
+% and do not mention it in TEXMFDBS (but _do_ mention TEXMFVAR).
+%
+% Remove $VARTEXFONTS from TEXMFDBS if the VARTEXFONTS directory is below
+% one of the TEXMF directories (avoids overlapping ls-R files).
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Usually you will not need to edit any of the following variables.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% WEB2C is for Web2C specific files. The current directory may not be
+% a good place to look for them.
+WEB2C = $TEXMF/web2c
+
+% TEXINPUTS is for TeX input files -- i.e., anything to be found by \input
+% or \openin, including .sty, .eps, etc. We specify paths for all known
+% formats, past or present. Not all of them are built these days.
+
+% Plain TeX. Have the command tex check all directories as a last
+% resort, we may have plain-compatible stuff anywhere.
+TEXINPUTS.tex = .;$TEXMF/tex/{plain,generic,}//
+
+% Fontinst needs to read afm files.
+TEXINPUTS.fontinst = .;$TEXMF/{tex,fonts/afm}//
+
+% Other plain-based formats.
+TEXINPUTS.amstex = .;$TEXMF/tex/{amstex,plain,generic,}//
+TEXINPUTS.csplain = .;$TEXMF/tex/{csplain,plain,generic,}//
+TEXINPUTS.eplain = .;$TEXMF/tex/{eplain,plain,generic,}//
+TEXINPUTS.ftex = .;$TEXMF/tex/{formate,plain,generic,}//
+TEXINPUTS.mex = .;$TEXMF/tex/{mex,plain,generic,}//
+TEXINPUTS.texinfo = .;$TEXMF/tex/{texinfo,plain,generic,}//
+
+% LaTeX 2e specific macros are stored in latex/, macros that can only be
+% used with 2.09 in latex209/. In addition, we look in the directory
+% latex209, useful for macros that were written for 2.09 and do not
+% mention 2e at all, but can be used with 2e.
+TEXINPUTS.cslatex = .;$TEXMF/tex/{cslatex,csplain,latex,generic,}//
+TEXINPUTS.latex = .;$TEXMF/tex/{latex,generic,}//
+TEXINPUTS.latex209 = .;$TEXMF/tex/{latex209,generic,latex,}//
+TEXINPUTS.olatex = .;$TEXMF/tex/{latex,generic,}//
+
+% MLTeX.
+TEXINPUTS.frlatex = .;$TEXMF/tex/{french,latex,generic,}//
+TEXINPUTS.frtex = .;$TEXMF/tex/{french,plain,generic,}//
+TEXINPUTS.mllatex = .;$TEXMF/tex/{latex,generic,}//
+TEXINPUTS.mltex = .;$TEXMF/tex/{plain,generic,}//
+
+% e-TeX.
+TEXINPUTS.elatex = .;$TEXMF/tex/{latex,generic,}//
+TEXINPUTS.etex = .;$TEXMF/tex/{plain,generic,}//
+
+% pdfTeX.
+TEXINPUTS.pdfcslatex = .;$TEXMF/tex/{cslatex,csplain,latex,generic,}//
+TEXINPUTS.pdfcsplain = .;$TEXMF/tex/{csplain,plain,generic,}//
+TEXINPUTS.pdflatex = .;$TEXMF/tex/{latex,generic,}//
+TEXINPUTS.pdfmex = .;$TEXMF/tex/{mex,plain,generic,}//
+TEXINPUTS.utf8mex = .;$TEXMF/tex/{mex,plain,generic,}//
+TEXINPUTS.pdftex = .;$TEXMF/tex/{plain,generic,}//
+TEXINPUTS.pdftexinfo = .;$TEXMF/tex/{texinfo,plain,generic,}//
+TEXINPUTS.pdfamstex = .;$TEXMF/tex/{amstex,plain,generic,}//
+
+% pdfeTeX.
+TEXINPUTS.pdfelatex = .;$TEXMF/tex/{latex,generic,}//
+TEXINPUTS.pdfetex = .;$TEXMF/tex/{plain,generic,}//
+
+% pdfxTeX.
+TEXINPUTS.pdfxlatex = .;$TEXMF/tex/{latex,generic,}//
+TEXINPUTS.pdfxmex = .;$TEXMF/tex/{mex,plain,generic,}//
+TEXINPUTS.pdfxtex = .;$TEXMF/tex/{plain,generic,}//
+
+% LuaTeX.
+TEXINPUTS.lualatex = .;$TEXMF/tex/{lualatex,latex,luatex,generic,}//
+TEXINPUTS.luatex = .;$TEXMF/tex/{luatex,plain,generic,}//
+TEXINPUTS.dvilualatex = .;$TEXMF/tex/{lualatex,latex,luatex,generic,}//
+TEXINPUTS.dviluatex = .;$TEXMF/tex/{luatex,plain,generic,}//
+
+% XeTeX.
+TEXINPUTS.xelatex = .;$TEXMF/tex/{xelatex,latex,xetex,generic,}//
+TEXINPUTS.xeplain = .;$TEXMF/tex/{xeplain,eplain,plain,xetex,generic,}//
+TEXINPUTS.xetex = .;$TEXMF/tex/{xetex,plain,generic,}//
+
+
+% ConTeXt.
+TEXINPUTS.context = .;$TEXMF/tex/{context,plain,generic,}//
+
+% jadetex
+TEXINPUTS.jadetex = .;$TEXMF/tex/{jadetex,latex,generic,}//
+TEXINPUTS.pdfjadetex = .;$TEXMF/tex/{jadetex,latex,generic,}//
+
+% XMLTeX.
+TEXINPUTS.xmltex = .;$TEXMF/tex/{xmltex,latex,generic,}//
+TEXINPUTS.pdfxmltex = .;$TEXMF/tex/{xmltex,latex,generic,}//
+
+% Miscellany, no longer built.
+TEXINPUTS.lamstex = .;$TEXMF/tex/{lamstex,plain,generic,}//
+TEXINPUTS.lollipop = .;$TEXMF/tex/{lollipop,plain,generic,}//
+TEXINPUTS.frpdflatex = .;$TEXMF/tex/{french,latex,generic,}//
+TEXINPUTS.frpdftex = .;$TEXMF/tex/{french,plain,generic,}//
+
+% Earlier entries override later ones, so put this generic one last.
+TEXINPUTS = .;$TEXMF/tex/{$progname,generic,}//
+
+% ttf2tfm.
+TTF2TFMINPUTS = .;$TEXMF/ttf2pk//
+
+% Metafont, MetaPost inputs.
+MFINPUTS = .;$TEXMF/metafont//;{$TEXMF/fonts,$VARTEXFONTS}/source//
+MPINPUTS = .;$TEXMF/metapost//
+
+% Dump files (fmt/base/mem) for vir{tex,mf,mp} to read.
+% We want to find the engine-specific file, e.g., cont-en.fmt can
+% exist under both pdftex/ and xetex/. But just in case some formats
+% end up without an engine directory, look directly in web2c/ too.
+% We repeat the same definition three times because of the way fmtutil
+% is implemented; if we use ${TEXFORMATS}, the mpost/mf/etc. formats
+% will not be found.
+TEXFORMATS = .;$TEXMF/web2c{/$engine,}
+MFBASES = .;$TEXMF/web2c{/$engine,}
+MPMEMS = .;$TEXMF/web2c{/$engine,}
+%
+% As of 2008, pool files don't exist any more (the strings are compiled
+% into the binaries), but just in case something expects to find these:
+TEXPOOL = .;$TEXMF/web2c
+MFPOOL = ${TEXPOOL}
+MPPOOL = ${TEXPOOL}
+
+% support the original xdvi. Must come before the generic settings.
+PKFONTS.XDvi = .;$TEXMF/%s;$VARTEXFONTS/pk/{%m,modeless}//
+VFFONTS.XDvi = .;$TEXMF/%s
+PSHEADERS.XDvi = .;$TEXMF/%q{dvips,fonts/type1}//
+TEXPICTS.XDvi = .;$TEXMF/%q{dvips,tex}//
+
+% Device-independent font metric files.
+VFFONTS = .;$TEXMF/fonts/vf//
+TFMFONTS = .;{$TEXMF/fonts,$VARTEXFONTS}/tfm//
+
+% The $MAKETEX_MODE below means the drivers will not use a cx font when
+% the mode is ricoh. If no mode is explicitly specified, kpse_prog_init
+% sets MAKETEX_MODE to /, so all subdirectories are searched. See the manual.
+% The modeless part guarantees that bitmaps for PostScript fonts are found.
+PKFONTS = .;{$TEXMF/fonts,$VARTEXFONTS}/pk/{$MAKETEX_MODE,modeless}//
+
+% Similarly for the GF format, which only remains in existence because
+% Metafont outputs it (and MF isn't going to change).
+GFFONTS = .;$TEXMF/fonts/gf/$MAKETEX_MODE//
+
+% A backup for PKFONTS and GFFONTS. Not used for anything.
+GLYPHFONTS = .;$TEXMF/fonts
+
+% A place to puth everything that doesn't fit the other font categories.
+MISCFONTS = .;$TEXMF/fonts/misc//
+
+% font name map files. This isn't just fonts/map// because ConTeXt
+% wants support for having files with the same name in the different
+% subdirs. Maybe if the programs ever get unified to accepting the same
+% map file syntax the definition can be simplified again.
+TEXFONTMAPS = .;$TEXMF/fonts/map/{$progname,pdftex,dvips,}//
+
+% BibTeX bibliographies and style files. bibtex8 also uses these.
+BIBINPUTS = .;$TEXMF/bibtex/bib//
+BSTINPUTS = .;$TEXMF/bibtex/{bst,csf}//
+
+% MlBibTeX.
+MLBIBINPUTS = .;$TEXMF/bibtex/bib/{mlbib,}//
+MLBSTINPUTS = .;$TEXMF/bibtex/{mlbst,bst}//
+
+% MFT style files.
+MFTINPUTS = .;$TEXMF/mft//
+
+% PostScript headers and prologues (.pro); unfortunately, some programs
+% also use this for acessing font files (enc, type1, truetype)
+TEXPSHEADERS = .;$TEXMF/{dvips,fonts/{enc,type1,type42,type3}}//
+TEXPSHEADERS.gsftopk = .;$TEXMF/{dvips,fonts/{enc,type1,type42,type3,truetype}}//
+
+% OSFONTDIR is to provide a convenient hook for allowing TeX to find
+% fonts installed on the system (outside of TeX). An empty default
+% value would add "//" to the search paths, so we give it a dummy value.
+% OSFONTDIR = /usr/share/fonts
+
+% PostScript Type 1 outline fonts.
+T1FONTS = .;$TEXMF/fonts/type1//;$OSFONTDIR//
+
+% PostScript AFM metric files.
+AFMFONTS = .;$TEXMF/fonts/afm//;$OSFONTDIR//
+
+% TrueType outline fonts.
+TTFONTS = .;$TEXMF/fonts/truetype//;$OSFONTDIR//
+
+% Opentype outline fonts.
+OPENTYPEFONTS = .;$TEXMF/fonts/opentype//;$OSFONTDIR//
+
+% Type 42 outline fonts.
+T42FONTS = .;$TEXMF/fonts/type42//
+
+% Ligature definition files.
+LIGFONTS = .;$TEXMF/fonts/lig//
+
+% Dvips' config.* files (this name should not start with `TEX'!).
+TEXCONFIG = $TEXMF/dvips//
+
+% Makeindex style (.ist) files.
+INDEXSTYLE = .;$TEXMF/makeindex//
+
+% Font encoding files (.enc).
+ENCFONTS = .;$TEXMF/fonts/enc//
+
+% CMap files.
+CMAPFONTS = .;$TEXMF/fonts/cmap//
+
+% Subfont definition files.
+SFDFONTS = .;$TEXMF/fonts/sfd//
+
+% OpenType outline fonts.
+OPENTYPEFONTS = .;$TEXMF/fonts/opentype//
+
+% OpenType feature files (.fea).
+FONTFEATURES=.;$TEXMF/fonts/fea//
+
+% .cid and .cidmap
+FONTCIDMAPS=.;$TEXMF/fonts/cid//
+
+% pdftex config files:
+PDFTEXCONFIG = .;$TEXMF/pdftex/{$progname,}//
+
+% Used by DMP (ditroff-to-mpx), called by makempx -troff.
+TRFONTS = /usr{/local,}/share/groff/{current/font,site-font}/devps
+MPSUPPORT = .;$TEXMF/metapost/support
+
+% For xdvi to find mime.types and .mailcap, if they do not exist in
+% ~. These are single directories, not paths.
+% (But the default mime.types, at least, may well suffice.)
+MIMELIBDIR = /etc
+MAILCAPLIBDIR = /etc
+
+% Default settings for fontconfig library, used by Windows versions of
+% xetex/xdvipdfmx. On Unixish systems, fontconfig ignores this.
+FONTCONFIG_FILE=fonts.conf
+FONTCONFIG_PATH=$TEXMFSYSVAR/fonts/conf
+FC_CACHEDIR=$TEXMFSYSVAR/fonts/cache
+
+% TeX documentation and source files, for use with texdoc and kpsewhich.
+TEXDOCS = $TEXMF/doc//
+TEXSOURCES = .;$TEXMF/source//
+
+% Web and CWeb input paths.
+WEBINPUTS = .;$TEXMF/web//
+CWEBINPUTS = .;$TEXMF/cweb//
+
+% Omega-related fonts and other files.
+OFMFONTS = .;{$TEXMF/fonts,$VARTEXFONTS}/{ofm,tfm}//
+OPLFONTS = .;{$TEXMF/fonts,$VARTEXFONTS}/opl//
+OVFFONTS = .;{$TEXMF/fonts,$VARTEXFONTS}/{ovf,vf}//
+OVPFONTS = .;{$TEXMF/fonts,$VARTEXFONTS}/ovp//
+OTPINPUTS = .;$TEXMF/omega/otp//
+OCPINPUTS = .;$TEXMF/omega/ocp//
+
+% Some additional input variables for several programs. If you add
+% a program that uses the `other text files' or `other binary files'
+% search formats, you'll want to add their variables here as well.
+T4HTINPUTS = .;$TEXMF/tex4ht//
+
+%% t4ht utility, sharing files with TeX4ht
+TEX4HTFONTSET=alias,iso8859,unicode
+TEX4HTINPUTS = .;$TEXMF/tex4ht/base//;$TEXMF/tex4ht/ht-fonts/{$TEX4HTFONTSET}//
+
+% TeXworks editor configuration and settings
+TW_LIBPATH = $TEXMFCONFIG/texworks
+TW_INIPATH = $TW_LIBPATH
+
+% Find scripts that are distributed/installed in the texmf tree.
+
+% Lua needs to look in TEXINPUTS for lua scripts distributed with packages.
+LUAINPUTS = .;$TEXMF/scripts/{$progname,$engine,}/{lua,}//;$TEXINPUTS
+
+% Lua needs to look for binary lua libraries distributed with packages.
+CLUAINPUTS = .;$SELFAUTOLOC/lib/{$progname,$engine,}/lua//
+
+% Architecture independent executables.
+TEXMFSCRIPTS = $TEXMF/scripts/{$progname,$engine,}//
+
+% Other languages.
+JAVAINPUTS = .;$TEXMF/scripts/{$progname,$engine,}/java//
+PERLINPUTS = .;$TEXMF/scripts/{$progname,$engine,}/perl//
+PYTHONINPUTS = .;$TEXMF/scripts/{$progname,$engine,}/python//
+RUBYINPUTS = .;$TEXMF/scripts/{$progname,$engine,}/ruby//
+
+
+%% The mktex* scripts rely on KPSE_DOT. Do not set it in the environment.
+% KPSE_DOT = .
+
+% This definition isn't used from this .cnf file itself (that would be
+% paradoxical), but the compile-time default in paths.h is built from it.
+% The SELFAUTO* variables are set automatically from the location of
+% argv[0], in kpse_set_program_name.
+%
+% This main texmf.cnf file is installed, for a release YYYY, in a
+% directory such as /usr/local/texlive/YYYY/texmf/web2c/texmf.cnf.
+% Since this file is subject to future updates, the TeX Live installer
+% or human administrator may also create a file
+% /usr/local/texlive/YYYY/texmf.cnf; any settings in this latter file
+% will take precedence over the distributed one under texmf/web2c.
+%
+% For security reasons, it is better not to include . in this path.
+%
+TEXMFCNF = {$SELFAUTOLOC,$SELFAUTODIR,$SELFAUTOPARENT}{,{/share,}/texmf{-local,}/web2c}
+
+% kpathsea 3.5.3 and later sets these at runtime. To avoid empty
+% expansions from binaries linked against an earlier version of the
+% library, we set $progname and $engine to something non-empty:
+progname = unsetprogname
+engine = unsetengine
+
+
+% Part 2: Options.
+
+% If this option is set to true, `tex a.b' will look first for a.b.tex
+% (within each path element), and then for a.b, i.e., we try standard
+% extensions first. If this is false, we first look for a.b and then
+% a.b.tex, i.e., we try the name as-is first.
+%
+% Both names are always tried; the difference is the order in which they
+% are tried. The setting applies to all searches, not just .tex.
+%
+% This setting only affects names being looked up which *already* have
+% an extension. A name without an extension (e.g., `tex story') will
+% always have an extension added first.
+%
+% The default is true, because we already avoid adding the standard
+% extension(s) in the usual cases. E.g., babel.sty will only look for
+% babel.sty, not babel.sty.tex, regardless of this setting.
+try_std_extension_first = t
+
+% Enable system commands via \write18{...}. When enabled fully (set to
+% t), obviously insecure. When enabled partially (set to p), only the
+% commands listed in shell_escape_commands are allowed. Although this
+% is not fully secure either, it is much better, and so useful that we
+% enable it for everything but bare tex.
+shell_escape = p
+
+% No spaces in this command list.
+%
+% The programs listed here are as safe as any we know: they either do
+% not write any output files, respect openout_any, or have hard-coded
+% restrictions similar or higher to openout_any=p. They also have no
+% features to invoke arbitrary other programs, and no known exploitable
+% bugs. All to the best of our knowledge. They also have practical use
+% for being called from TeX.
+%
+shell_escape_commands = \
+bibtex,bibtex8,\
+kpsewhich,\
+makeindex,\
+repstopdf,\
+
+% we'd like to allow:
+% dvips - but external commands can be executed, need at least -R1.
+% epspdf, ps2pdf, pstopdf - need to respect openout_any,
+% and gs -dSAFER must be used and check for shell injection with filenames.
+% (img)convert (ImageMagick) - delegates.mgk possible misconfig, besides,
+% without Unix convert it hardly seems worth it, and Windows convert
+% is something completely different that destroys filesystems, so skip.
+% pygmentize - but is the filter feature insecure?
+% ps4pdf - but it calls an unrestricted latex.
+% rpdfcrop - maybe ok, but let's get experience with repstopdf first.
+% texindy,xindy - but is the module feature insecure?
+% ulqda - but requires optional SHA1.pm, so why bother.
+% tex, latex, etc. - need to forbid --shell-escape, and inherit openout_any.
+
+% plain TeX should remain unenhanced.
+shell_escape.tex = f
+
+% Allow TeX \openin, \openout, or \input on filenames starting with `.'
+% (e.g., .rhosts) or outside the current tree (e.g., /etc/passwd)?
+% a (any) : any file can be opened.
+% r (restricted) : disallow opening "dotfiles".
+% p (paranoid) : as `r' and disallow going to parent directories, and
+% restrict absolute paths to be under $TEXMFOUTPUT.
+openout_any = p
+openin_any = a
+
+% Write .log/.dvi/etc. files here, if the current directory is unwritable.
+% TEXMFOUTPUT = /tmp
+
+% If a dynamic file creation fails, log the command to this file, in
+% either the current directory or TEXMFOUTPUT. Set to the
+% empty string or 0 to avoid logging.
+MISSFONT_LOG = missfont.log
+
+% Set to a colon-separated list of words specifying warnings to suppress.
+% To suppress everything, use TEX_HUSH = all; this is currently equivalent to
+% TEX_HUSH = checksum:lostchar:readable:special
+% To suppress nothing, use TEX_HUSH = none or do not set the variable at all.
+TEX_HUSH = none
+
+% Allow TeX, and MF to parse the first line of an input file for
+% the %&format construct.
+parse_first_line = t
+
+% But don't parse the first line if invoked as "tex", since we want that
+% to remain Knuth-compatible. The src_specials and
+% file_line_error_style settings, as well as the options -enctex,
+% -mltex, -8bit, etc., also affect this, but they are all off by default.
+parse_first_line.tex = f
+
+% Control file:line:error style messages.
+file_line_error_style = f
+
+% Enable the mktex... scripts by default? These must be set to 0 or 1.
+% Particular programs can and do override these settings, for example
+% dvips's -M option. Your first chance to specify whether the scripts
+% are invoked by default is at configure time.
+%
+% These values are ignored if the script names are changed; e.g., if you
+% set DVIPSMAKEPK to `foo', what counts is the value of the environment
+% variable/config value `FOO', not the `MKTEXPK' value.
+%
+% MKTEXTEX = 0
+% MKTEXPK = 0
+% MKTEXMF = 0
+% MKTEXTFM = 0
+% MKTEXFMT = 0
+% MKOCP = 0
+% MKOFM = 0
+
+% Used by makempx to run TeX. We use "etex" because MetaPost is
+% expecting DVI, and not "tex" because we want first line parsing.
+TEX = etex
+
+% These variables specify the external program called for the
+% interactive `e' option. %d is replaced by the line number and %s by
+% the current filename. The default is specified at compile-time, and
+% we let that stay in place since different platforms like different values.
+%TEXEDIT = vi +%d "%s"
+%MFEDIT = ${TEXEDIT}
+%MPEDIT = ${TEXEDIT}
+
+% The default `codepage and sort order' file for BibTeX8, when none is
+% given as command line option or environment variable.
+BIBTEX_CSFILE = 88591lat.csf
+
+% Part 3: Array and other sizes for TeX (and Metafont).
+%
+% If you want to change some of these sizes only for a certain TeX
+% variant, the usual dot notation works, e.g.,
+% main_memory.hugetex = 20000000
+%
+% If a change here appears to be ignored, try redumping the format file.
+
+% Memory. Must be less than 8,000,000 total.
+%
+% main_memory is relevant only to initex, extra_mem_* only to non-ini.
+% Thus, have to redump the .fmt file after changing main_memory; to add
+% to existing fmt files, increase extra_mem_*. (To get an idea of how
+% much, try \tracingstats=2 in your TeX source file;
+% web2c/tests/memtest.tex might also be interesting.)
+%
+% To increase space for boxes (as might be needed by, e.g., PiCTeX),
+% increase extra_mem_bot.
+%
+% For some xy-pic samples, you may need as much as 700000 words of memory.
+% For the vast majority of documents, 60000 or less will do.
+%
+main_memory = 3000000 % words of inimemory available; also applies to inimf&mp
+extra_mem_top = 0 % extra high memory for chars, tokens, etc.
+extra_mem_bot = 0 % extra low memory for boxes, glue, breakpoints, etc.
+
+% ConTeXt needs lots of memory.
+extra_mem_top.context = 2000000
+extra_mem_bot.context = 4000000
+
+% Words of font info for TeX (total size of all TFM files, approximately).
+% Must be >= 20000 and <= 147483647 (without tex.ch changes).
+font_mem_size = 3000000
+
+% Total number of fonts. Must be >= 50 and <= 9000 (without tex.ch changes).
+font_max = 9000
+
+% Extra space for the hash table of control sequences.
+hash_extra = 200000
+
+% Max number of characters in all strings, including all error messages,
+% help texts, font names, control sequences. These values apply to TeX.
+pool_size = 3250000
+% Minimum pool space after TeX's own strings; must be at least
+% 25000 less than pool_size, but doesn't need to be nearly that large.
+string_vacancies = 90000
+% Maximum number of strings.
+max_strings = 500000
+% min pool space left after loading .fmt
+pool_free = 47500
+
+% Buffer size. TeX uses the buffer to contain input lines, but macro
+% expansion works by writing material into the buffer and reparsing the
+% line. As a consequence, certain constructs require the buffer to be
+% very large, even though most documents can be handled with a small value.
+buf_size = 200000
+
+% Hyphenation trie. The maximum possible is 4194303 (ssup_trie_size in
+% the sources), but we don't need that much. The value here suffices
+% for all known free hyphenation patterns to be loaded simultaneously
+% (as TeX Live does).
+%
+trie_size = 1000000
+
+hyph_size = 8191 % prime number of hyphenation exceptions, >610, <32767.
+ % http://primes.utm.edu/curios/page.php/8191.html
+nest_size = 500 % simultaneous semantic levels (e.g., groups)
+max_in_open = 15 % simultaneous input files and error insertions,
+ % also applies to MetaPost
+param_size = 10000 % simultaneous macro parameters, also applies to MP
+save_size = 50000 % for saving values outside current group
+stack_size = 5000 % simultaneous input sources
+
+% These work best if they are the same as the I/O buffer size, but it
+% doesn't matter much. Must be a multiple of 8.
+dvi_buf_size = 16384 % TeX
+gf_buf_size = 16384 % MF
+
+% It's probably inadvisable to change these. At any rate, we must have:
+% 45 < error_line < 255;
+% 30 < half_error_line < error_line - 15;
+% 60 <= max_print_line;
+% These apply to TeX, Metafont, and MetaPost.
+error_line = 79
+half_error_line = 50
+max_print_line = 79
+
+% Metafont only.
+screen_width.mf = 1664
+screen_depth.mf = 1200
+
+% BibTeX only (max_strings also determines hash_size and hash_prime).
+ent_str_size = 250
+glob_str_size = 5000
+max_strings.bibtex = 35307
+max_strings.bibtex8 = 35307
+max_strings.bibtexu = 35307
+max_strings.pbibtex = 35307
+
+% GFtype only.
+line_length.gftype = 500
+max_rows.gftype = 8191
+max_cols.gftype = 8191
diff --git a/extra/texmacs/PKGBUILD b/extra/texmacs/PKGBUILD
new file mode 100644
index 000000000..96150e9d5
--- /dev/null
+++ b/extra/texmacs/PKGBUILD
@@ -0,0 +1,36 @@
+# $Id: PKGBUILD 108863 2011-02-04 14:42:17Z ronald $
+# Maintainer: Ronald van Haren <ronald.archlinux.org>
+# Contributor: Damir Perisa <damir.perisa@bluewin.ch>
+
+pkgname=texmacs
+pkgver=1.0.7.9
+pkgrel=1
+pkgdesc="Free scientific text editor, inspired by TeX and GNU Emacs. WYSIWYG editor TeX-fonts and CAS-interface (Giac, GTybalt, Macaulay 2, Maxima, Octave, Pari, Qcl, R and Yacas) in one."
+arch=('i686' 'x86_64')
+url="http://www.texmacs.org/"
+license=('GPL')
+depends=('perl' 'guile' 'texlive-core' 'python2' 'libxext' 'freetype2')
+# do not remove texlive-core dependency, as it is needed!
+optdepends=('transfig: convert images using fig2ps')
+source=(ftp://ftp.texmacs.org/pub/TeXmacs/targz/TeXmacs-${pkgver}-src.tar.gz)
+md5sums=('255d64ebdd900218c091667643f06e44')
+
+build() {
+ cd ${srcdir}/TeXmacs-${pkgver}-src
+ sed -i 's/env python/env python2/' \
+ plugins/{mathematica/bin/realpath.py,python/bin/tm_python,sage/bin/tm_sage}
+ sed -i 's/"python"/"python2"/' plugins/python/progs/init-python.scm
+ sed -i '/^LDPATH/d' src/makefile.in
+ ./configure --prefix=/usr \
+ --mandir=/usr/share/man \
+ --libexecdir=/usr/lib
+ make
+}
+
+package() {
+ cd ${srcdir}/TeXmacs-${pkgver}-src
+ make DESTDIR=${pkgdir} install
+
+ # fix fig2ps script
+ sed -i 's|${prefix}|/usr|' ${pkgdir}/usr/bin/fig2ps
+}
diff --git a/extra/tftp-hpa/LICENSE b/extra/tftp-hpa/LICENSE
new file mode 100644
index 000000000..6dade6984
--- /dev/null
+++ b/extra/tftp-hpa/LICENSE
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 1983, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
diff --git a/extra/tftp-hpa/PKGBUILD b/extra/tftp-hpa/PKGBUILD
new file mode 100644
index 000000000..33d44dae7
--- /dev/null
+++ b/extra/tftp-hpa/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 42756 2009-06-18 19:44:52Z tpowa $
+# Maintainer: dorphell <dorphell@archlinux.org>
+# Contributor: Jose Javier <jojapa@terra.es>
+pkgname=tftp-hpa
+pkgver=5.0
+pkgrel=3
+pkgdesc="Official tftp server"
+arch=('i686' 'x86_64')
+url="http://www.kernel.org/pub/software/network/tftp/"
+license=('BSD')
+depends=('tcp_wrappers' 'readline>=6.0.00')
+conflicts=('netkit-tftp')
+backup=('etc/conf.d/tftpd')
+source=(http://www.kernel.org/pub/software/network/tftp/$pkgname-$pkgver.tar.gz tftpd.rc tftpd.conf LICENSE)
+md5sums=('1ae813a94670f0d8c294aafa9f5ecf65' 'a974d02526f19222146c8e3d3b598871'\
+ '414a79dc891bced056d99a9bb790fc9e' '6ce21e27b6fdc1a1adf85c81e42aeecf')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --mandir=/usr/share/man || return 1
+ make || return 1
+ make INSTALLROOT="${pkgdir}" install || return 1
+ install -d "${pkgdir}/etc/rc.d"
+ install -d "${pkgdir}/var/tftpboot"
+ install -m755 "${srcdir}/tftpd.rc" "${pkgdir}/etc/rc.d/tftpd" || return 1
+ install -D -m644 "${srcdir}/tftpd.conf" "${pkgdir}/etc/conf.d/tftpd" || return 1
+ rm "${pkgdir}/usr/share/man/man8/tftpd.8"
+ install -D -m644 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+}
diff --git a/extra/tftp-hpa/tftpd.conf b/extra/tftp-hpa/tftpd.conf
new file mode 100644
index 000000000..4705cc3a9
--- /dev/null
+++ b/extra/tftp-hpa/tftpd.conf
@@ -0,0 +1,4 @@
+#
+# Parameters to be passed to TFTPD
+#
+TFTPD_ARGS="-l -s /var/tftpboot"
diff --git a/extra/tftp-hpa/tftpd.rc b/extra/tftp-hpa/tftpd.rc
new file mode 100755
index 000000000..b21f87f5c
--- /dev/null
+++ b/extra/tftp-hpa/tftpd.rc
@@ -0,0 +1,38 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+TFTPD_ARGS=
+[ -f /etc/conf.d/tftpd ] && . /etc/conf.d/tftpd
+
+PID=$(pidof -o %PPID /usr/sbin/in.tftpd)
+case "$1" in
+ start)
+ stat_busy "Starting TFTPD"
+ [ -z "$PID" ] && /usr/sbin/in.tftpd ${TFTPD_ARGS}
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon in.tftpd
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping TFTPD"
+ [ ! -z "$PID" ] && kill $PID &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon in.tftpd
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
diff --git a/extra/thinkfinger/PKGBUILD b/extra/thinkfinger/PKGBUILD
new file mode 100644
index 000000000..bf6c8c9bc
--- /dev/null
+++ b/extra/thinkfinger/PKGBUILD
@@ -0,0 +1,38 @@
+# $Id: PKGBUILD 101457 2010-11-29 10:02:41Z allan $
+# Maintainer: François Charette <francois.archlinux.org>
+# Contributor: Damir Perisa <damir.archlinux.org>
+# Contributor: Björn Martensen <bjoern.martensen@gmail.com>
+
+pkgname=thinkfinger
+pkgver=0.3
+pkgrel=4
+pkgdesc="ThinkFinger is a driver for the SGS Thomson Microelectronics fingerprint reader found in most IBM/Lenovo ThinkPads"
+url="http://thinkfinger.sourceforge.net/"
+arch=('i686' 'x86_64')
+license=("GPL")
+depends=('pam' 'libusb-compat')
+install=thinkfinger.install
+options=('!libtool')
+source=(http://downloads.sourceforge.net/thinkfinger/$pkgname-$pkgver.tar.gz thinkfinger-uinput-hack.patch)
+md5sums=('588565233bcbea5ff0a7f5314361c380'
+ '71dc334282d19e6db4f6254542ba563c')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ # Patch from Ubuntu: see http://bugs.archlinux.org/task/12580
+ patch -p0 < ../thinkfinger-uinput-hack.patch
+ ./configure --prefix=/usr \
+ --with-securedir=/lib/security \
+ --with-birdir=/etc/pam_thinkfinger
+ make
+}
+
+package() {
+ cd $srcdir/$pkgname-$pkgver
+
+ # create dir to store fingerprints
+ install -d $pkgdir/etc/pam_thinkfinger
+
+ make DESTDIR=$pkgdir install
+}
+
diff --git a/extra/thinkfinger/thinkfinger-uinput-hack.patch b/extra/thinkfinger/thinkfinger-uinput-hack.patch
new file mode 100644
index 000000000..0ac153464
--- /dev/null
+++ b/extra/thinkfinger/thinkfinger-uinput-hack.patch
@@ -0,0 +1,13 @@
+#Source: http://launchpadlibrarian.net/18515541/thinkfinger-uinput-hack.patch (26-12-2008)
+Index: pam/pam_thinkfinger-uinput.c
+===================================================================
+--- pam/pam_thinkfinger-uinput.c (revision 118)
++++ pam/pam_thinkfinger-uinput.c (working copy)
+@@ -95,6 +95,7 @@
+ /* our single key keyboard */
+ i = ioctl (*fd, UI_SET_EVBIT, EV_KEY) < 0;
+ i |= ioctl (*fd, UI_SET_KEYBIT, KEY_ENTER) < 0;
++ i |= ioctl (*fd, UI_SET_KEYBIT, KEY_A) < 0;
+
+ if (write (*fd, &device, device_size) != device_size) {
+ retval = errno;
diff --git a/extra/thinkfinger/thinkfinger.install b/extra/thinkfinger/thinkfinger.install
new file mode 100644
index 000000000..bb1f6dde0
--- /dev/null
+++ b/extra/thinkfinger/thinkfinger.install
@@ -0,0 +1,4 @@
+post_install() {
+ echo "==> To use thinkfinger, add 'uinput' to the MODULES=() in /etc/rc.conf."
+ echo " More Infos: http://wiki.archlinux.org/index.php/Thinkfinger"
+}
diff --git a/extra/thunar-archive-plugin/PKGBUILD b/extra/thunar-archive-plugin/PKGBUILD
new file mode 100644
index 000000000..2f3a99803
--- /dev/null
+++ b/extra/thunar-archive-plugin/PKGBUILD
@@ -0,0 +1,33 @@
+# $Id: PKGBUILD 107340 2011-01-23 18:55:43Z andyrtr $
+# Maintainer: AndyRTR <andyrtr@archlinux.org>
+# Contributor: Tobias Kieslich <tobias (at) archlinux.org>
+
+pkgname=thunar-archive-plugin
+pkgver=0.3.0
+pkgrel=1
+pkgdesc="create and deflate archives in thunar"
+arch=(i686 x86_64)
+license=('GPL2')
+url="http://goodies.xfce.org/projects/thunar-plugins/thunar-archive-plugin"
+groups=('xfce4-goodies')
+depends=('thunar>=1.2.0' 'hicolor-icon-theme')
+makedepends=('intltool')
+options=('!libtool')
+install=${pkgname}.install
+source=(http://archive.xfce.org/src/thunar-plugins/${pkgname}/0.3/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('afeb3f1c65a4529dbdadc6e7b349a712')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --libexecdir=/usr/lib/xfce4 \
+ --localstatedir=/var \
+ --disable-static
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/thunar-archive-plugin/thunar-archive-plugin.install b/extra/thunar-archive-plugin/thunar-archive-plugin.install
new file mode 100644
index 000000000..2538109de
--- /dev/null
+++ b/extra/thunar-archive-plugin/thunar-archive-plugin.install
@@ -0,0 +1,17 @@
+post_install() {
+ cat << EOF
+
+NOTE for thunar-archive-plugin:
+----
+ ==> please install xarchiver, squeeze, file-roller or ark to use the plugin
+EOF
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
diff --git a/extra/thunar-media-tags-plugin/0001-Switch-to-the-new-tooltip-api-in-gtk-depend-on-gtk-2.patch b/extra/thunar-media-tags-plugin/0001-Switch-to-the-new-tooltip-api-in-gtk-depend-on-gtk-2.patch
new file mode 100644
index 000000000..4e613ebb1
--- /dev/null
+++ b/extra/thunar-media-tags-plugin/0001-Switch-to-the-new-tooltip-api-in-gtk-depend-on-gtk-2.patch
@@ -0,0 +1,177 @@
+From d225ada545e196ebd7833103412f4a013f8a44f1 Mon Sep 17 00:00:00 2001
+From: Lionel Le Folgoc <mrpouit@ubuntu.com>
+Date: Mon, 8 Mar 2010 21:25:12 +0100
+Subject: [PATCH] Switch to the new tooltip api in gtk, depend on gtk 2.12, and switch to exo-1
+
+---
+ configure.in.in | 3 ++-
+ thunar-plugin/audio-tags-page.c | 22 +++++++---------------
+ thunar-plugin/tag-renamer.c | 16 +++-------------
+ 3 files changed, 12 insertions(+), 29 deletions(-)
+
+diff --git a/configure.in.in b/configure.in.in
+index ed3099b..c345c5c 100644
+--- a/configure.in.in
++++ b/configure.in.in
+@@ -64,7 +64,8 @@ XDT_I18N([@LINGUAS@])
+ dnl ***********************************
+ dnl *** Check for required packages ***
+ dnl ***********************************
+-XDT_CHECK_PACKAGE([EXO], [exo-0.3], [0.3.1.3])
++XDT_CHECK_PACKAGE([GTK], [gtk+-2.0], [2.12.0])
++XDT_CHECK_PACKAGE([EXO], [exo-1], [0.5.0])
+ XDT_CHECK_PACKAGE([THUNARX], [thunarx-2], [1.0.1])
+ XDT_CHECK_PACKAGE([TAGLIB], [taglib], [1.4])
+
+diff --git a/thunar-plugin/audio-tags-page.c b/thunar-plugin/audio-tags-page.c
+index 7e5dab5..40b226f 100644
+--- a/thunar-plugin/audio-tags-page.c
++++ b/thunar-plugin/audio-tags-page.c
+@@ -89,7 +89,6 @@ struct _AudioTagsPage
+ ThunarxPropertyPage __parent__;
+
+ /* Widgets */
+- GtkTooltips *tooltips;
+ GtkWidget *table;
+ GtkWidget *save_button;
+ GtkWidget *info_button;
+@@ -281,10 +280,6 @@ audio_tags_page_init (AudioTagsPage *page)
+
+ gtk_container_set_border_width (GTK_CONTAINER (page), 8);
+
+- /* Allocate the shared tooltips */
+- page->tooltips = gtk_tooltips_new ();
+- exo_gtk_object_ref_sink (GTK_OBJECT (page->tooltips));
+-
+ /* Main container */
+ vbox = gtk_vbox_new (FALSE, 8);
+ gtk_container_add (GTK_CONTAINER (page), vbox);
+@@ -316,7 +311,7 @@ audio_tags_page_init (AudioTagsPage *page)
+ /* Track spin button */
+ spin = gtk_spin_button_new (GTK_ADJUSTMENT (adjustment), 0.0, 0);
+ exo_mutual_binding_new (G_OBJECT (adjustment), "value", G_OBJECT (page), "track");
+- gtk_tooltips_set_tip (page->tooltips, spin, _("Enter the track number here."), NULL);
++ gtk_widget_set_tooltip_text (GTK_WIDGET (spin), _("Enter the track number here."));
+ gtk_container_add (GTK_CONTAINER (alignment), spin);
+ gtk_label_set_mnemonic_widget (GTK_LABEL (label), spin);
+ gtk_widget_show (spin);
+@@ -339,7 +334,7 @@ audio_tags_page_init (AudioTagsPage *page)
+ /* Year spin button */
+ spin = gtk_spin_button_new (GTK_ADJUSTMENT (adjustment), 1, 0);
+ exo_mutual_binding_new (G_OBJECT (adjustment), "value", G_OBJECT (page), "year");
+- gtk_tooltips_set_tip (page->tooltips, spin, _("Enter the release year here."), NULL);
++ gtk_widget_set_tooltip_text (GTK_WIDGET (spin), _("Enter the release year here."));
+ gtk_container_add (GTK_CONTAINER (alignment), spin);
+ gtk_label_set_mnemonic_widget (GTK_LABEL (label), spin);
+ gtk_widget_show (spin);
+@@ -354,7 +349,7 @@ audio_tags_page_init (AudioTagsPage *page)
+ /* Artist entry */
+ entry = gtk_entry_new ();
+ exo_mutual_binding_new (G_OBJECT (entry), "text", G_OBJECT (page), "artist");
+- gtk_tooltips_set_tip (page->tooltips, entry, _("Enter the name of the artist or author of this file here."), NULL);
++ gtk_widget_set_tooltip_text (GTK_WIDGET (entry), _("Enter the name of the artist or author of this file here."));
+ gtk_table_attach (GTK_TABLE (page->table), entry, 1, 4, 1, 2, GTK_EXPAND | GTK_FILL, 0, 0, 0);
+ gtk_label_set_mnemonic_widget (GTK_LABEL (label), entry);
+ gtk_widget_show (entry);
+@@ -369,7 +364,7 @@ audio_tags_page_init (AudioTagsPage *page)
+ /* Title entry */
+ entry = gtk_entry_new ();
+ exo_mutual_binding_new (G_OBJECT (entry), "text", G_OBJECT (page), "title");
+- gtk_tooltips_set_tip (page->tooltips, entry, _("Enter the song title here."), NULL);
++ gtk_widget_set_tooltip_text (GTK_WIDGET (entry), _("Enter the song title here."));
+ gtk_table_attach (GTK_TABLE (page->table), entry, 1, 4, 2, 3, GTK_EXPAND | GTK_FILL, 0, 0, 0);
+ gtk_widget_show (entry);
+
+@@ -383,7 +378,7 @@ audio_tags_page_init (AudioTagsPage *page)
+ /* Album entry */
+ entry = gtk_entry_new ();
+ exo_mutual_binding_new (G_OBJECT (entry), "text", G_OBJECT (page), "album");
+- gtk_tooltips_set_tip (page->tooltips, entry, _("Enter the album/record title here."), NULL);
++ gtk_widget_set_tooltip_text (GTK_WIDGET (entry), _("Enter the album/record title here."));
+ gtk_table_attach (GTK_TABLE (page->table), entry, 1, 4, 3, 4, GTK_EXPAND | GTK_FILL, 0, 0, 0);
+ gtk_widget_show (entry);
+
+@@ -397,7 +392,7 @@ audio_tags_page_init (AudioTagsPage *page)
+ /* Comment entry */
+ entry = gtk_entry_new ();
+ exo_mutual_binding_new (G_OBJECT (entry), "text", G_OBJECT (page), "comment");
+- gtk_tooltips_set_tip (page->tooltips, entry, _("Enter your comments here."), NULL);
++ gtk_widget_set_tooltip_text (GTK_WIDGET (entry), _("Enter your comments here."));
+ gtk_table_attach (GTK_TABLE (page->table), entry, 1, 4, 4, 5, GTK_EXPAND | GTK_FILL, 0, 0, 0);
+ gtk_widget_show (entry);
+
+@@ -411,7 +406,7 @@ audio_tags_page_init (AudioTagsPage *page)
+ /* Genre combo box */
+ combo = gtk_combo_box_entry_new_text ();
+ exo_mutual_binding_new (G_OBJECT (GTK_BIN (combo)->child), "text", G_OBJECT (page), "genre");
+- gtk_tooltips_set_tip (page->tooltips, combo, _("Select or enter the genre of this song here."), NULL);
++ gtk_widget_set_tooltip_text (GTK_WIDGET (combo), _("Select or enter the genre of this song here."));
+ gtk_table_attach (GTK_TABLE (page->table), combo, 1, 4, 5, 6, GTK_FILL, 0, 0, 0);
+ gtk_widget_show (combo);
+
+@@ -511,9 +506,6 @@ audio_tags_page_finalize (GObject *object)
+ if (G_LIKELY (page->genre != NULL))
+ g_free (page->genre);
+
+- /* Release the tooltips */
+- g_object_unref (G_OBJECT (page->tooltips));
+-
+ (*G_OBJECT_CLASS (audio_tags_page_parent_class)->finalize) (object);
+ }
+
+diff --git a/thunar-plugin/tag-renamer.c b/thunar-plugin/tag-renamer.c
+index acb694e..bdbb17c 100644
+--- a/thunar-plugin/tag-renamer.c
++++ b/thunar-plugin/tag-renamer.c
+@@ -132,9 +132,6 @@ struct _TagRenamer
+ {
+ ThunarxRenamer __parent__;
+
+- /* Widgets */
+- GtkTooltips *tooltips;
+-
+ /* Properties */
+ TagRenamerFormat format;
+ gchar *text;
+@@ -238,10 +235,6 @@ tag_renamer_init (TagRenamer *tag_renamer)
+ GtkTreeIter iter;
+ gint n;
+
+- /* Allocate shared tooltips */
+- tag_renamer->tooltips = gtk_tooltips_new ();
+- exo_gtk_object_ref_sink (GTK_OBJECT (tag_renamer->tooltips));
+-
+ table = gtk_table_new (2, 4, FALSE);
+ gtk_table_set_row_spacings (GTK_TABLE (table), 6);
+ gtk_table_set_col_spacings (GTK_TABLE (table), 12);
+@@ -320,14 +313,14 @@ tag_renamer_init (TagRenamer *tag_renamer)
+
+ button = gtk_check_button_new_with_mnemonic (_("_Underscores"));
+ exo_mutual_binding_new (G_OBJECT (button), "active", G_OBJECT (tag_renamer), "replace-spaces");
+- gtk_tooltips_set_tip (tag_renamer->tooltips, button, _("Activating this option will replace all spaces in the target filename "
+- "with underscores."), NULL);
++ gtk_widget_set_tooltip_text (GTK_WIDGET (button), _("Activating this option will replace all spaces in the target filename "
++ "with underscores."));
+ gtk_table_attach (GTK_TABLE (table), button, 3, 4, 0, 1, GTK_FILL, 0, 0, 0);
+ gtk_widget_show (button);
+
+ button = gtk_check_button_new_with_mnemonic (_("_Lowercase"));
+ exo_mutual_binding_new (G_OBJECT (button), "active", G_OBJECT (tag_renamer), "lowercase");
+- gtk_tooltips_set_tip (tag_renamer->tooltips, button, _("If you activate this, the resulting filename will only contain lowercase letters."), NULL);
++ gtk_widget_set_tooltip_text (GTK_WIDGET (button), _("If you activate this, the resulting filename will only contain lowercase letters."));
+ gtk_table_attach (GTK_TABLE (table), button, 3, 4, 1, 2, GTK_FILL, 0, 0, 0);
+ gtk_widget_show (button);
+ }
+@@ -341,9 +334,6 @@ tag_renamer_finalize (GObject *object)
+ {
+ TagRenamer *tag_renamer = TAG_RENAMER (object);
+
+- /* release the tooltips */
+- g_object_unref (G_OBJECT (tag_renamer->tooltips));
+-
+ /* Free string */
+ g_free (tag_renamer->text);
+
+--
+1.6.3.3
+
diff --git a/extra/thunar-media-tags-plugin/04_fix-implicit-dso-linking.patch b/extra/thunar-media-tags-plugin/04_fix-implicit-dso-linking.patch
new file mode 100644
index 000000000..abe4ada18
--- /dev/null
+++ b/extra/thunar-media-tags-plugin/04_fix-implicit-dso-linking.patch
@@ -0,0 +1,10 @@
+--- thunar-media-tags-plugin-0.1.2.orig/thunar-plugin/Makefile.am
++++ thunar-media-tags-plugin-0.1.2/thunar-plugin/Makefile.am
+@@ -32,6 +32,7 @@ thunar_media_tags_plugin_la_LDFLAGS =
+ -avoid-version \
+ -export-dynamic \
+ -module \
++ $(EXO_LIBS) \
+ $(THUNARX_LIBS) \
+ $(TAGLIB_LIBS) \
+ $(TAGLIBC_LIBS) \
diff --git a/extra/thunar-media-tags-plugin/PKGBUILD b/extra/thunar-media-tags-plugin/PKGBUILD
new file mode 100644
index 000000000..142378be6
--- /dev/null
+++ b/extra/thunar-media-tags-plugin/PKGBUILD
@@ -0,0 +1,47 @@
+# $Id: PKGBUILD 108077 2011-01-29 12:18:52Z andyrtr $
+# Maintainer: Andreas Radke <andyrtr@archlinux.org>
+# Contributor: Andrew Simmons <andrew.simmons@gmail.com>
+
+pkgname=thunar-media-tags-plugin
+pkgver=0.1.2.99.git20110129
+pkgrel=1
+pkgdesc="adds special features for media files to the Thunar File Manager"
+arch=('i686' 'x86_64')
+license=('GPL2')
+url="http://goodies.xfce.org/projects/thunar-plugins/thunar-media-tags-plugin"
+groups=('xfce4-goodies')
+depends=('taglib' 'thunar')
+makedepends=('intltool' 'xfce4-dev-tools')
+options=('!libtool')
+source=(#http://archive.xfce.org/src/thunar-plugins/${pkgname}/0.1/${pkgname}-${pkgver}.tar.bz2
+ # broken master http://git.xfce.org/thunar-plugins/thunar-media-tags-plugin/snapshot/thunar-media-tags-plugin-8d29c1f4672f41baabc84ec02630c79793ead159.tar.bz2
+ # thunarx-2 branch
+ #http://git.xfce.org/thunar-plugins/thunar-media-tags-plugin/snapshot/thunar-media-tags-plugin-270924abcab81275dede68d882936c14b238b3ec.tar.bz2
+ ftp://ftp.archlinux.org/other/$pkgname/thunar-media-tags-plugin-270924abcab81275dede68d882936c14b238b3ec.tar.bz2
+ 0001-Switch-to-the-new-tooltip-api-in-gtk-depend-on-gtk-2.patch
+ 04_fix-implicit-dso-linking.patch)
+md5sums=('faf79a2568ae7b76477ddd0d9ffe9380'
+ '199e0f657333ed1d09947b7d4fdeb493'
+ 'b310ccc46752f672a1030c4e17093b77')
+
+build() {
+# cd ${srcdir}/${pkgname}-${pkgver}
+ cd ${srcdir}/${pkgname}*
+ # fixes for new thunar taken from http://bugzilla.xfce.org/show_bug.cgi?id=6295
+ patch -Np1 -i ${srcdir}/0001-Switch-to-the-new-tooltip-api-in-gtk-depend-on-gtk-2.patch
+ patch -Np1 -i ${srcdir}/04_fix-implicit-dso-linking.patch
+ xdt-autogen
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --libexecdir=/usr/lib/xfce4 \
+ --localstatedir=/var \
+ --disable-static \
+ --disable-debug
+ make
+}
+
+package() {
+# cd ${srcdir}/${pkgname}-${pkgver}
+ cd ${srcdir}/${pkgname}*
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/thunar-vfs/PKGBUILD b/extra/thunar-vfs/PKGBUILD
new file mode 100644
index 000000000..bd2934dbc
--- /dev/null
+++ b/extra/thunar-vfs/PKGBUILD
@@ -0,0 +1,35 @@
+# $Id: PKGBUILD 106948 2011-01-19 20:20:07Z andyrtr $
+# Maintainer: AndyRTR <andyrtr@archlinux.org>
+# Contributor: Xavier Devlamynck <magicrhesus@ouranos.be>
+
+pkgname=thunar-vfs
+pkgver=1.2.0
+pkgrel=2
+pkgdesc="Virtual filesystem shipped with the thunar 1.0 and earlier releases"
+arch=('i686' 'x86_64')
+license=('GPL2')
+url="http://www.xfce.org/"
+depends=('exo' 'startup-notification' 'hal' 'fam')
+makedepends=('intltool')
+options=('!libtool')
+source=(http://archive.xfce.org/src/xfce/thunar-vfs/1.2/thunar-vfs-$pkgver.tar.bz2)
+md5sums=('1fbc55af8ed98174f5c3c7f8daec10cc')
+
+build() {
+ cd ${srcdir}/thunar-vfs-${pkgver}
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --libexecdir=/usr/lib \
+ --localstatedir=/var \
+ --disable-static \
+ --enable-startup-notification \
+ --enable-dbus \
+ --with-volume-manager=hal \
+ --disable-debug
+ make
+}
+
+package() {
+ cd ${srcdir}/thunar-vfs-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/thunar-volman/PKGBUILD b/extra/thunar-volman/PKGBUILD
new file mode 100644
index 000000000..8679d8273
--- /dev/null
+++ b/extra/thunar-volman/PKGBUILD
@@ -0,0 +1,34 @@
+# $Id: PKGBUILD 112913 2011-03-07 18:34:43Z andyrtr $
+# Maintainer: AndyRTR <andyrtr@archlinux.org>
+# Contributor: Tobias Kieslich <tobias (at) archlinux.org>
+
+pkgname=thunar-volman
+pkgver=0.6.0
+pkgrel=2
+pkgdesc="automatic management for removeable devices in thunar"
+arch=('i686' 'x86_64')
+license=('GPL2')
+url="http://foo-projects.org/~benny/projects/thunar-volman"
+groups=('xfce4-goodies')
+depends=('thunar>=1.2.0' 'libxfce4ui' 'hicolor-icon-theme')
+makedepends=('intltool')
+options=('!libtool')
+install=${pkgname}.install
+source=(http://archive.xfce.org/src/apps/${pkgname}/0.6/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('2f166662dd100d5195da238af417f305')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --libexecdir=/usr/lib/xfce4 \
+ --localstatedir=/var \
+ --disable-static \
+ --disable-debug
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/thunar-volman/thunar-volman.install b/extra/thunar-volman/thunar-volman.install
new file mode 100644
index 000000000..21b79d2d4
--- /dev/null
+++ b/extra/thunar-volman/thunar-volman.install
@@ -0,0 +1,11 @@
+post_install() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
diff --git a/extra/thunar/PKGBUILD b/extra/thunar/PKGBUILD
new file mode 100644
index 000000000..b323cd5cd
--- /dev/null
+++ b/extra/thunar/PKGBUILD
@@ -0,0 +1,59 @@
+# $Id: PKGBUILD 112910 2011-03-07 18:29:57Z andyrtr $
+# Maintainer: andyrtr <andyrtr funnychar archlinux.org>
+# Contributor: Andrew Simmons <andrew.simmons@gmail.com>
+
+pkgname=thunar
+pkgver=1.2.1
+pkgrel=2
+pkgdesc="modern file manager for Xfce"
+arch=('i686' 'x86_64')
+license=('GPL2' 'LGPL2.1')
+url="http://thunar.xfce.org"
+groups=('xfce4')
+depends=('desktop-file-utils' 'libexif' 'hicolor-icon-theme' 'libnotify>=0.7.1' 'udev'
+ 'gtk2' 'exo>=0.6.0' 'libxfce4util>=4.8.1' 'libxfce4ui' 'libpng')
+makedepends=('intltool' 'gtk-doc' 'xfce4-panel>=4.8.0')
+optdepends=('gvfs: for trash support, mounting with udisk and remote filesystems'
+ 'xfce4-panel: for trash applet'
+ 'tumbler: for thumbnail previews'
+ 'thunar-volman: manages removable devices'
+ 'thunar-archive-plugin: create and deflate archives'
+ 'thunar-media-tags-plugin: view/edit id3/ogg tags')
+options=('!libtool')
+install=${pkgname}.install
+backup=('etc/polkit-1/localauthority/50-local.d/org.freedesktop.udisks.pkla')
+source=(http://archive.xfce.org/src/xfce/${pkgname}/1.2/Thunar-${pkgver}.tar.bz2
+ org.freedesktop.udisks.pkla)
+md5sums=('d8dce796890619d67aed0cd7ef84c7b1'
+ 'a7ddb5eec02d9a8e91a2997862e73cd8')
+
+build() {
+ cd ${srcdir}/Thunar-${pkgver}
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --libexecdir=/usr/lib \
+ --localstatedir=/var \
+ --disable-static \
+ --enable-gio-unix \
+ --enable-dbus \
+ --enable-startup-notification \
+ --enable-gudev \
+ --enable-notifications \
+ --enable-exif \
+ --enable-pcre \
+ --enable-gtk-doc \
+ --disable-debug
+ make
+}
+
+package() {
+ cd ${srcdir}/Thunar-${pkgver}
+ make DESTDIR=${pkgdir} install
+ sed -i 's:x-directory/gnome-default-handler;::' \
+ ${pkgdir}/usr/share/applications/Thunar-folder-handler.desktop
+
+ # install udisks permission file
+ install -dm700 ${pkgdir}/etc/polkit-1/localauthority
+ install -dm755 ${pkgdir}/etc/polkit-1/localauthority/50-local.d
+ install -m644 ${srcdir}/org.freedesktop.udisks.pkla ${pkgdir}/etc/polkit-1/localauthority/50-local.d/
+}
diff --git a/extra/thunar/org.freedesktop.udisks.pkla b/extra/thunar/org.freedesktop.udisks.pkla
new file mode 100644
index 000000000..5cc443bd1
--- /dev/null
+++ b/extra/thunar/org.freedesktop.udisks.pkla
@@ -0,0 +1,7 @@
+[Local Users]
+#Identity=unix-user: your_username
+Identity=unix-group:storage
+Action=org.freedesktop.udisks.*
+ResultAny=yes
+ResultInactive=no
+ResultActive=yes
diff --git a/extra/thunar/thunar.install b/extra/thunar/thunar.install
new file mode 100644
index 000000000..28fdb48fb
--- /dev/null
+++ b/extra/thunar/thunar.install
@@ -0,0 +1,14 @@
+post_install() {
+ update-desktop-database -q
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ update-desktop-database -q
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
diff --git a/extra/tidyhtml/PKGBUILD b/extra/tidyhtml/PKGBUILD
new file mode 100644
index 000000000..031234da6
--- /dev/null
+++ b/extra/tidyhtml/PKGBUILD
@@ -0,0 +1,36 @@
+# $Id: PKGBUILD 69561 2010-02-21 04:47:38Z allan $
+# Maintainer: eric <eric@archlinux.org>
+# Contributor : Markus Meissner <markus@meissna.de>
+
+pkgname=tidyhtml
+# obtain pkgver from http://tidy.cvs.sourceforge.net/tidy/tidy/src/version.h?view=markup
+pkgver=1.46
+pkgrel=1
+pkgdesc="A tool to tidy down your HTML code to a clean style"
+arch=('i686' 'x86_64')
+url="http://tidy.sourceforge.net/"
+license=('custom')
+options=('!libtool')
+source=(ftp://ftp.archlinux.org/other/tidyhtml/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('3d970d54be83c5ec985687e9976a2832')
+
+mksource() {
+ mkdir tidyhtml-${pkgver}
+ cd tidyhtml-${pkgver}
+ cvs -d:pserver:anonymous@tidy.cvs.sourceforge.net:/cvsroot/tidy login #hit enter for password
+ cvs -z3 -d:pserver:anonymous@tidy.cvs.sourceforge.net:/cvsroot/tidy co -P tidy
+ cd ..
+ tar -cvjf tidyhtml-${pkgver}.tar.bz2 tidyhtml-${pkgver}/*
+}
+
+build(){
+ cd $srcdir/${pkgname}-${pkgver}/tidy
+ source build/gnuauto/setup.sh
+
+ ./configure --prefix=/usr
+ make || return 1
+ make DESTDIR=$pkgdir install
+
+ install -Dm644 htmldoc/license.html \
+ ${pkgdir}/usr/share/licenses/${pkgname}/license.txt
+}
diff --git a/extra/tightvnc/PKGBUILD b/extra/tightvnc/PKGBUILD
new file mode 100644
index 000000000..642ba8d7f
--- /dev/null
+++ b/extra/tightvnc/PKGBUILD
@@ -0,0 +1,39 @@
+# $Id: PKGBUILD 64786 2010-01-22 07:44:39Z eric $
+# Maintainer: Paul Mattal <paul@archlinux.org>
+pkgname=tightvnc
+pkgver=1.3.10
+pkgrel=5
+pkgdesc="VNC Unix server && viewer"
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://www.tightvnc.com"
+depends=('libjpeg>=7' 'zlib' 'libxaw' 'libxp' 'xorg-xauth')
+makedepends=('imake')
+conflicts=('vnc')
+options=(!makeflags)
+source=(http://downloads.sf.net/sourceforge/vnc-tight/$pkgname-${pkgver}_unixsrc.tar.bz2
+ tightvnc-fontpath-xcolors.patch)
+md5sums=('397b35faad32d5246b6d44b142f8304f'
+ '21aa7f3376ec3c608ff22d199a19c601')
+
+build() {
+ cd $srcdir/vnc_unixsrc || return 1
+ patch -Np1 -i ../tightvnc-fontpath-xcolors.patch || return 1
+ sed -i 's|/usr/local/|/usr/share/|' vncserver || return 1
+
+ xmkmf || return 1
+ make World || return 1
+ cd Xvnc || return 1
+ ./configure || return 1
+ sed 's|PROTO_DEFINES =|PROTO_DEFINES = -D_XOPEN_SOURCE=500L|' \
+ -i programs/Xserver/os/Makefile lib/font/fc/Makefile || return 1
+ make || return 1
+ cd .. || return 1
+ mkdir -p $pkgdir/usr/bin $pkgdir/usr/share/man/man1 || return 1
+ ./vncinstall $pkgdir/usr/bin $pkgdir/usr/share/man || return 1
+
+ # install java classes
+ mkdir -p $pkgdir/usr/share/vnc/classes || return 1
+ install -Dm644 $srcdir/vnc_unixsrc/classes/* \
+ $pkgdir/usr/share/vnc/classes || return 1
+}
diff --git a/extra/tightvnc/tightvnc-fontpath-xcolors.patch b/extra/tightvnc/tightvnc-fontpath-xcolors.patch
new file mode 100644
index 000000000..10bc4b596
--- /dev/null
+++ b/extra/tightvnc/tightvnc-fontpath-xcolors.patch
@@ -0,0 +1,13 @@
+diff -urN vnc_unixsrc/vncserver vnc_unixsrc.fixed/vncserver
+--- vnc_unixsrc/vncserver 2009-02-11 23:27:18.000000000 -0500
++++ vnc_unixsrc.fixed/vncserver 2009-04-23 21:46:46.000000000 -0400
+@@ -34,7 +34,8 @@
+ $desktopName = "X";
+ $vncClasses = "/usr/local/vnc/classes";
+ $vncUserDir = "$ENV{HOME}/.vnc";
+-$fontPath = "unix/:7100";
++$fontPath = "/usr/share/fonts/misc/,/usr/share/fonts/75dpi/,/usr/share/fonts/100dpi/,/usr/share/fonts/Type1/";
++$colorPath = "/usr/share/X11/rgb";
+ $authType = "-rfbauth $vncUserDir/passwd";
+
+ # Read configuration from the system-wide and user files if present.
diff --git a/extra/time/PKGBUILD b/extra/time/PKGBUILD
new file mode 100644
index 000000000..78d5a7d61
--- /dev/null
+++ b/extra/time/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 109750 2011-02-12 13:42:27Z stephane $
+# Maintainer: Stéphane Gaudreault <stephane@archlinux.us>
+# Contributor: Daniel J Griffiths <ghost1227@archlinux.us>
+# Contributor: damir <damir@archlinux.org>
+
+pkgname=time
+pkgver=1.7
+pkgrel=4
+pkgdesc="Utility for monitoring a program's use of system resources"
+arch=('i686' 'x86_64')
+url="http://www.gnu.org/directory/time.html"
+license=('GPL')
+depends=('glibc')
+install=time.install
+source=(http://ftp.gnu.org/pub/gnu/${pkgname}/${pkgname}-${pkgver}.tar.gz)
+md5sums=('e38d2b8b34b1ca259cf7b053caac32b3')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ ./configure --prefix=/usr --infodir=/usr/share/info
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ make exec_prefix="${pkgdir}/usr" infodir="${pkgdir}/usr/share/info" install
+}
diff --git a/extra/time/time.install b/extra/time/time.install
new file mode 100644
index 000000000..011597c00
--- /dev/null
+++ b/extra/time/time.install
@@ -0,0 +1,20 @@
+infodir=/usr/share/info
+filelist=(time.info.gz)
+
+post_install() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info --delete $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
diff --git a/extra/timidity++/2.13.2-gcc4.patch b/extra/timidity++/2.13.2-gcc4.patch
new file mode 100644
index 000000000..af0b5f8f7
--- /dev/null
+++ b/extra/timidity++/2.13.2-gcc4.patch
@@ -0,0 +1,30 @@
+diff -ur TiMidity++-2.13.2-orig/interface/xaw_i.c TiMidity++-2.13.2/interface/xaw_i.c
+--- TiMidity++-2.13.2-orig/interface/xaw_i.c 2005-06-25 21:55:19.000000000 -0400
++++ TiMidity++-2.13.2/interface/xaw_i.c 2005-06-25 21:56:01.000000000 -0400
+@@ -261,7 +261,7 @@
+ String bitmapdir = XAW_BITMAP_DIR;
+ Boolean arrangetitle,savelist;
+ static char **current_flist = NULL;
+-static int voices = 0, last_voice = 0, voices_num_width;
++static int xaw_i_voices = 0, last_voice = 0, voices_num_width;
+ static int maxentry_on_a_menu = 0,submenu_n = 0;
+ #define OPTIONS_WINDOW 1
+ #define FLIST_WINDOW 2
+@@ -1329,7 +1329,7 @@
+ c= *(local_buf+1);
+ n= atoi(local_buf+2);
+ if(c == 'L')
+- voices = n;
++ xaw_i_voices = n;
+ else
+ last_voice = n;
+ if(IsTracePlaying()) drawVoices();
+@@ -2070,7 +2070,7 @@
+ XSetForeground(disp, gct, tracecolor);
+ XFillRectangle(disp,XtWindow(trace),gct,voices_num_width +4,
+ MAX_XAW_MIDI_CHANNELS*BAR_SPACE+TRACEV_OFS+1,VOICENUM_WIDTH,TRACE_FOOT);
+- sprintf(local_buf, "%3d/%d", last_voice, voices);
++ sprintf(local_buf, "%3d/%d", last_voice, xaw_i_voices);
+ XSetForeground(disp, gct, capcolor);
+ XDrawString(disp, XtWindow(trace),gct,voices_num_width+6,
+ MAX_XAW_MIDI_CHANNELS*BAR_SPACE+TRACEV_OFS+16,local_buf,strlen(local_buf));
diff --git a/extra/timidity++/PKGBUILD b/extra/timidity++/PKGBUILD
new file mode 100644
index 000000000..82ced473c
--- /dev/null
+++ b/extra/timidity++/PKGBUILD
@@ -0,0 +1,53 @@
+# $Id: PKGBUILD 89194 2010-08-30 06:14:52Z eric $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=timidity++
+pkgver=2.13.2
+pkgrel=10
+pkgdesc="A MIDI to WAVE converter and player"
+arch=('i686' 'x86_64')
+url="http://timidity.sourceforge.net"
+license=('GPL')
+depends=('libao' 'libvorbis' 'jack' 'ncurses')
+makedepends=('xaw3d' 'gtk2' 'tk' 'libxaw')
+optdepends=('gtk2: for using the GTK+ interface' 'tk: for using the Tk interface' \
+ 'xaw3d: for using the Xaw interface')
+backup=('etc/timidity++/timidity.cfg')
+source=(http://downloads.sourceforge.net/timidity/TiMidity++-${pkgver}.tar.bz2 \
+ timidity.cfg timidity++.sh 2.13.2-gcc4.patch TiMidity++-2.13.2+flac-1.1.3.patch \
+ timidity++-2.13.2-exiterror.patch timidity++-2.13.2-gtk26.patch \
+ timidity++-2.13.2-polling.patch)
+md5sums=('a82ceeb2245e22f4de2b41da21eaee32' '3fcc8f065c959205113fa7e9ab2be3c6'\
+ '35606c12af9c6be9361d64fc536f046f' '0868926c5290817cacb9a1849bc043c2'\
+ 'fcbd27ff83066f69a3f8bd2442a3b3e2' '31bdaea612f18e2c3d45a8a73ab44c81'\
+ '16a4adec164836d4390dc6b0f9a69ce9' '3f0034ead451cdd1078868e9e9b0494c')
+sha1sums=('8e603146e1164335303a5ac5dff291f369241b4e' '660b3afbb720d26e8f008034cee66dd8da082d6e'\
+ '9f3e732a7ca1e97119a76df62ecf154df04d4f77' '8d50618a2379c078b07e8d0fc59457855c16106c'\
+ '59b0dbe3cde8f7b41d83676d8c37809255d3fb36' '7cd697b4f7cb1ce45cec46c2e0f6e5e8bf1d9d60'\
+ 'ce115e84d99708f0bdb5b57bd98b0c3514fa2bf4' '6abaedaecdecabf9dc76c062f7157571aed53984')
+
+build() {
+ cd "${srcdir}/TiMidity++-${pkgver}"
+ patch -p1 < ../2.13.2-gcc4.patch
+ patch -p1 < ../TiMidity++-2.13.2+flac-1.1.3.patch
+ patch -p1 < ../timidity++-2.13.2-exiterror.patch
+ patch -p0 < ../timidity++-2.13.2-gtk26.patch
+ patch -p0 < ../timidity++-2.13.2-polling.patch
+ sed -i 's/tcl8.4/tcl8.5/' configure
+ sed -i 's/tk8.4/tk8.5/' configure
+
+ ./configure --prefix=/usr --mandir=/usr/share/man --with-default-path=/etc/timidity++/ \
+ --enable-server --enable-alsaseq --enable-spectrogram \
+ --enable-audio=alsa,oss,ao,vorbis,flac,esd,jack \
+ --enable-dynamic=ncurses,tcltk,vt100,xaw,gtk \
+ --disable-gtktest
+ make
+}
+
+package() {
+ cd "${srcdir}/TiMidity++-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+ install -D -m644 ../timidity.cfg "${pkgdir}/etc/timidity++/timidity.cfg"
+ install -D -m755 ../timidity++.sh "${pkgdir}/etc/rc.d/timidity++"
+}
diff --git a/extra/timidity++/TiMidity++-2.13.2+flac-1.1.3.patch b/extra/timidity++/TiMidity++-2.13.2+flac-1.1.3.patch
new file mode 100644
index 000000000..200d011a3
--- /dev/null
+++ b/extra/timidity++/TiMidity++-2.13.2+flac-1.1.3.patch
@@ -0,0 +1,349 @@
+diff -urN TiMidity++-2.13.2.orig/configure.in TiMidity++-2.13.2/configure.in
+--- TiMidity++-2.13.2.orig/configure.in 2004-10-03 15:39:52 +0300
++++ TiMidity++-2.13.2/configure.in 2007-02-19 13:06:42 +0200
+@@ -1216,11 +1216,39 @@
+ EXTRACT_CPPFLAGS(CPPFLAGS,CFLAGS,$LIBFLAC_CFLAGS)
+ LIBS="$LIBS $LIBFLAC_LIBS"
+ ])
+- AM_PATH_LIBOGGFLAC([
+- EXTRADEFS="$EXTRADEFS -DAU_OGGFLAC"
+- EXTRACT_CPPFLAGS(CPPFLAGS,CFLAGS,$LIBOGGFLAC_CFLAGS)
+- LIBS="$LIBS $LIBOGGFLAC_LIBS"
+- ])
++ # in FLAC-1.1.3, libOggFLAC was merged into libFLAC
++ # FLAC_API_VERSION_CURRENT first appears in FLAC-1.1.3
++ AC_MSG_CHECKING(for legacy libFLAC (<1.1.13))
++ ac_save_LIBS="$LIBS"
++ LIBS=
++ AC_TRY_RUN([
++ #include <FLAC/export.h>
++ int main () { return FLAC_API_VERSION_CURRENT<8; }
++ ],legacy_flac=no,legacy_flac=yes,legacy_flac=no)
++ AC_MSG_RESULT($legacy_flac)
++ LIBS="$ac_save_LIBS"
++ if test "x$legacy_flac" = xyes; then
++ AM_PATH_LIBOGGFLAC([
++ EXTRADEFS="$EXTRADEFS -DAU_OGGFLAC"
++ EXTRACT_CPPFLAGS(CPPFLAGS,CFLAGS,$LIBOGGFLAC_CFLAGS)
++ LIBS="$LIBS $LIBOGGFLAC_LIBS"
++ ])
++ else
++
++ AC_MSG_CHECKING(for Ogg support in libFLAC )
++ ac_save_LIBS="$LIBS"
++ LIBS="-lFLAC -lm -logg"
++ AC_TRY_RUN([
++ #include <FLAC/export.h>
++ int main () { return !FLAC_API_SUPPORTS_OGG_FLAC; }
++ ],ogg_flac=yes,ogg_flac=yes,ogg_flac=no)
++ AC_MSG_RESULT($ogg_flac)
++ LIBS="$ac_save_LIBS"
++ if test "x$ogg_flac" = xyes; then
++ LIBS="$LIBS -logg"
++ CFLAGS="$CFLAGS -DAU_OGGFLAC"
++ fi
++ fi
+ else
+ AC_MSG_RESULT(no)
+ fi
+diff -urN TiMidity++-2.13.2.orig/timidity/flac_a.c TiMidity++-2.13.2/timidity/flac_a.c
+--- TiMidity++-2.13.2.orig/timidity/flac_a.c 2004-05-23 07:35:44 +0300
++++ TiMidity++-2.13.2/timidity/flac_a.c 2007-02-19 13:06:55 +0200
+@@ -38,14 +38,22 @@
+
+ #if defined(AU_FLAC_DLL) || defined(AU_OGGFLAC_DLL)
+ #include <windows.h>
+-#define FLAC__EXPORT_H /* don't include "OggFLAC/export.h" */
+-#define FLAC_API
+-#define OggFLAC__EXPORT_H /* don't include "FLAC/export.h" */
+-#define OggFLAC_API
++#include <FLAC/export.h> /* need export.h to figure out API version from FLAC_API_VERSION_CURRENT */
++#undef FLAC_API
++#undef OggFLAC_API
+ #endif
+
+ #include <FLAC/all.h>
+-#ifdef AU_OGGFLAC
++
++/* by LEGACY_FLAC we mean before FLAC 1.1.3 */
++/* in FLAC 1.1.3, libOggFLAC is merged into libFLAC and all encoding layers are merged into the stream encoder */
++#if !defined(FLAC_API_VERSION_CURRENT) || FLAC_API_VERSION_CURRENT < 8
++#define LEGACY_FLAC
++#else
++#undef LEGACY_FLAC
++#endif
++
++#if defined(LEGACY_FLAC) && defined(AU_OGGFLAC)
+ #include <OggFLAC/stream_encoder.h>
+ #endif
+
+@@ -100,17 +108,21 @@
+ unsigned long out_bytes;
+ union {
+ FLAC__StreamEncoderState flac;
++#ifdef LEGACY_FLAC
+ FLAC__SeekableStreamEncoderState s_flac;
+ #ifdef AU_OGGFLAC
+ OggFLAC__StreamEncoderState ogg;
+ #endif
++#endif
+ } state;
+ union {
+ union {
+ FLAC__StreamEncoder *stream;
++#ifdef LEGACY_FLAC
+ FLAC__SeekableStreamEncoder *s_stream;
++#endif
+ } flac;
+-#ifdef AU_OGGFLAC
++#if defined(LEGACY_FLAC) && defined(AU_OGGFLAC)
+ union {
+ OggFLAC__StreamEncoder *stream;
+ } ogg;
+@@ -158,7 +170,7 @@
+ static long serial_number = 0;
+ FLAC_ctx *flac_ctx = NULL;
+
+-#ifdef AU_OGGFLAC
++#if defined(LEGACY_FLAC) && defined(AU_OGGFLAC)
+ static FLAC__StreamEncoderWriteStatus
+ ogg_stream_encoder_write_callback(const OggFLAC__StreamEncoder *encoder,
+ const FLAC__byte buffer[],
+@@ -168,8 +180,13 @@
+ static FLAC__StreamEncoderWriteStatus
+ flac_stream_encoder_write_callback(const FLAC__StreamEncoder *encoder,
+ const FLAC__byte buffer[],
++#ifdef LEGACY_FLAC
+ unsigned bytes, unsigned samples,
++#else
++ size_t bytes, unsigned samples,
++#endif
+ unsigned current_frame, void *client_data);
++#ifdef LEGACY_FLAC
+ static void flac_stream_encoder_metadata_callback(const FLAC__StreamEncoder *encoder,
+ const FLAC__StreamMetadata *metadata,
+ void *client_data);
+@@ -181,6 +198,7 @@
+ static void flac_seekable_stream_encoder_metadata_callback(const FLAC__SeekableStreamEncoder *encoder,
+ const FLAC__StreamMetadata *metadata,
+ void *client_data);
++#endif
+
+ /* preset */
+ void flac_set_compression_level(int compression_level)
+@@ -281,7 +299,11 @@
+ #ifdef AU_OGGFLAC
+ void flac_set_option_oggflac(int isogg)
+ {
++#ifdef LEGACY_FLAC
+ flac_options.isogg = isogg;
++#else
++ flac_options.isogg = (FLAC_API_SUPPORTS_OGG_FLAC && isogg);
++#endif
+ }
+ #endif
+
+@@ -295,6 +317,7 @@
+ dpm.fd = -1;
+
+ if (ctx != NULL) {
++#ifdef LEGACY_FLAC
+ #ifdef AU_OGGFLAC
+ if (flac_options.isogg) {
+ if (ctx->encoder.ogg.stream) {
+@@ -317,6 +340,12 @@
+ FLAC__stream_encoder_delete(ctx->encoder.flac.stream);
+ }
+ }
++#else
++ if (ctx->encoder.flac.stream) {
++ FLAC__stream_encoder_finish(ctx->encoder.flac.stream);
++ FLAC__stream_encoder_delete(ctx->encoder.flac.stream);
++ }
++#endif
+ free(ctx);
+ flac_ctx = NULL;
+ }
+@@ -329,6 +358,9 @@
+ FLAC__StreamMetadata padding;
+ FLAC__StreamMetadata *metadata[4];
+ int num_metadata = 0;
++#ifndef LEGACY_FLAC
++ FLAC__StreamEncoderInitStatus init_status;
++#endif
+
+ FLAC_ctx *ctx;
+
+@@ -371,6 +403,7 @@
+ metadata[num_metadata++] = &padding;
+ }
+
++#ifdef LEGACY_FLAC
+ #ifdef AU_OGGFLAC
+ if (flac_options.isogg) {
+ if ((ctx->encoder.ogg.stream = OggFLAC__stream_encoder_new()) == NULL) {
+@@ -542,6 +575,67 @@
+ return -1;
+ }
+ }
++#else /* !LEGACY_FLAC */
++ if ((ctx->encoder.flac.stream = FLAC__stream_encoder_new()) == NULL) {
++ ctl->cmsg(CMSG_ERROR, VERB_NORMAL, "cannot create FLAC stream");
++ flac_session_close();
++ return -1;
++ }
++
++#ifdef AU_OGGFLAC
++ if (flac_options.isogg) {
++ /* set sequential number for serial */
++ serial_number++;
++ if (serial_number == 1) {
++ srand(time(NULL));
++ serial_number = rand();
++ }
++ FLAC__stream_encoder_set_ogg_serial_number(ctx->encoder.flac.stream, serial_number);
++ }
++#endif /* AU_OGGFLAC */
++ FLAC__stream_encoder_set_channels(ctx->encoder.flac.stream, nch);
++ /* 16bps only */
++ FLAC__stream_encoder_set_bits_per_sample(ctx->encoder.flac.stream, 16);
++
++ FLAC__stream_encoder_set_verify(ctx->encoder.flac.stream, flac_options.verify);
++
++ if (!FLAC__format_sample_rate_is_valid(dpm.rate)) {
++ ctl->cmsg(CMSG_ERROR, VERB_NORMAL, "invalid sampling rate %d", dpm.rate);
++ flac_session_close();
++ return -1;
++ }
++ FLAC__stream_encoder_set_sample_rate(ctx->encoder.flac.stream, dpm.rate);
++
++ FLAC__stream_encoder_set_qlp_coeff_precision(ctx->encoder.flac.stream, flac_options.qlp_coeff_precision);
++ /* expensive! */
++ FLAC__stream_encoder_set_do_qlp_coeff_prec_search(ctx->encoder.flac.stream, flac_options.qlp_coeff_precision_search);
++
++ if (nch == 2) {
++ FLAC__stream_encoder_set_do_mid_side_stereo(ctx->encoder.flac.stream, flac_options.mid_side);
++ FLAC__stream_encoder_set_loose_mid_side_stereo(ctx->encoder.flac.stream, flac_options.adaptive_mid_side);
++ }
++
++ FLAC__stream_encoder_set_max_lpc_order(ctx->encoder.flac.stream, flac_options.max_lpc_order);
++ FLAC__stream_encoder_set_min_residual_partition_order(ctx->encoder.flac.stream, flac_options.min_residual_partition_order);
++ FLAC__stream_encoder_set_max_residual_partition_order(ctx->encoder.flac.stream, flac_options.max_residual_partition_order);
++
++ FLAC__stream_encoder_set_blocksize(ctx->encoder.flac.stream, flac_options.blocksize);
++
++ if (0 < num_metadata)
++ FLAC__stream_encoder_set_metadata(ctx->encoder.flac.stream, metadata, num_metadata);
++
++#ifdef AU_OGGFLAC
++ if (flac_options.isogg)
++ init_status = FLAC__stream_encoder_init_ogg_stream(ctx->encoder.flac.stream, NULL, flac_stream_encoder_write_callback, NULL, NULL, NULL, ctx);
++ else
++#endif
++ init_status = FLAC__stream_encoder_init_stream(ctx->encoder.flac.stream, flac_stream_encoder_write_callback, NULL, NULL, NULL, ctx);
++ if (init_status != FLAC__STREAM_ENCODER_INIT_STATUS_OK) {
++ ctl->cmsg(CMSG_ERROR, VERB_NORMAL, "cannot create FLAC encoder (init status: %s)", FLAC__StreamEncoderInitStatusString[init_status]);
++ flac_session_close();
++ return -1;
++ }
++#endif
+
+ return 0;
+ }
+@@ -638,7 +732,7 @@
+ return 0;
+ }
+
+-#ifdef AU_OGGFLAC
++#if defined(LEGACY_FLAC) && defined(AU_OGGFLAC)
+ static FLAC__StreamEncoderWriteStatus
+ ogg_stream_encoder_write_callback(const OggFLAC__StreamEncoder *encoder,
+ const FLAC__byte buffer[],
+@@ -658,7 +752,11 @@
+ static FLAC__StreamEncoderWriteStatus
+ flac_stream_encoder_write_callback(const FLAC__StreamEncoder *encoder,
+ const FLAC__byte buffer[],
++#ifdef LEGACY_FLAC
+ unsigned bytes, unsigned samples,
++#else
++ size_t bytes, unsigned samples,
++#endif
+ unsigned current_frame, void *client_data)
+ {
+ FLAC_ctx *ctx = (FLAC_ctx *)client_data;
+@@ -670,6 +768,7 @@
+ else
+ return FLAC__STREAM_ENCODER_WRITE_STATUS_FATAL_ERROR;
+ }
++#ifdef LEGACY_FLAC
+ static void flac_stream_encoder_metadata_callback(const FLAC__StreamEncoder *encoder,
+ const FLAC__StreamMetadata *metadata,
+ void *client_data)
+@@ -695,6 +794,7 @@
+ void *client_data)
+ {
+ }
++#endif
+
+ static int output_data(char *buf, int32 nbytes)
+ {
+@@ -723,6 +823,7 @@
+ oggbuf[i] = *s++;
+ }
+
++#ifdef LEGACY_FLAC
+ #ifdef AU_OGGFLAC
+ if (flac_options.isogg) {
+ ctx->state.ogg = OggFLAC__stream_encoder_get_state(ctx->encoder.ogg.stream);
+@@ -793,6 +894,29 @@
+ return -1;
+ }
+ }
++#else /* !LEGACY_FLAC */
++ ctx->state.flac = FLAC__stream_encoder_get_state(ctx->encoder.flac.stream);
++ if (ctx->state.flac != FLAC__STREAM_ENCODER_OK) {
++ if (ctx->state.flac == FLAC__STREAM_ENCODER_VERIFY_DECODER_ERROR |
++ FLAC__STREAM_ENCODER_VERIFY_MISMATCH_IN_AUDIO_DATA) {
++ ctl->cmsg(CMSG_ERROR, VERB_NORMAL, "FLAC stream verify error (%s)",
++ FLAC__StreamDecoderStateString[FLAC__stream_encoder_get_verify_decoder_state(ctx->encoder.flac.stream)]);
++ }
++ else {
++ ctl->cmsg(CMSG_ERROR, VERB_NORMAL, "cannot encode FLAC stream (%s)",
++ FLAC__StreamEncoderStateString[ctx->state.flac]);
++ }
++ flac_session_close();
++ return -1;
++ }
++
++ if (!FLAC__stream_encoder_process_interleaved(ctx->encoder.flac.stream, oggbuf,
++ nbytes / nch / 2 )) {
++ ctl->cmsg(CMSG_ERROR, VERB_NORMAL, "cannot encode FLAC stream");
++ flac_session_close();
++ return -1;
++ }
++#endif
+ ctx->in_bytes += nbytes;
+
+ free(oggbuf);
+@@ -813,6 +937,7 @@
+ return;
+ }
+
++#ifdef LEGACY_FLAC
+ if (flac_options.isogg) {
+ #ifdef AU_OGGFLAC
+ if ((ctx->state.ogg = OggFLAC__stream_encoder_get_state(ctx->encoder.ogg.stream)) != OggFLAC__STREAM_ENCODER_OK) {
+@@ -838,6 +963,13 @@
+ /* fall through */
+ }
+ }
++#else /* !LEGACY_FLAC */
++ if ((ctx->state.flac = FLAC__stream_encoder_get_state(ctx->encoder.flac.stream)) != FLAC__STREAM_ENCODER_OK) {
++ ctl->cmsg(CMSG_ERROR, VERB_NORMAL, "FLAC stream encoder is invalid (%s)",
++ FLAC__StreamEncoderStateString[ctx->state.flac]);
++ /* fall through */
++ }
++#endif
+
+ ctl->cmsg(CMSG_INFO, VERB_NORMAL, "Wrote %lu/%lu bytes(%g%% compressed)",
+ ctx->out_bytes, ctx->in_bytes, ((double)ctx->out_bytes / (double)ctx->in_bytes) * 100.);
diff --git a/extra/timidity++/timidity++-2.13.2-exiterror.patch b/extra/timidity++/timidity++-2.13.2-exiterror.patch
new file mode 100644
index 000000000..01a83fead
--- /dev/null
+++ b/extra/timidity++/timidity++-2.13.2-exiterror.patch
@@ -0,0 +1,695 @@
+diff -ur TiMidity++-2.13.2/interface/alsaseq_c.c TiMidity++-2.13.2-new/interface/alsaseq_c.c
+--- TiMidity++-2.13.2/interface/alsaseq_c.c 2005-01-02 02:53:01.000000000 +0100
++++ TiMidity++-2.13.2-new/interface/alsaseq_c.c 2005-01-02 03:39:15.968158520 +0100
+@@ -177,7 +177,7 @@
+ static int ctl_read(int32 *valp);
+ static int cmsg(int type, int verbosity_level, char *fmt, ...);
+ static void ctl_event(CtlEvent *e);
+-static void ctl_pass_playing_list(int n, char *args[]);
++static int ctl_pass_playing_list(int n, char *args[]);
+
+ /**********************************/
+ /* export the interface functions */
+@@ -308,7 +308,7 @@
+ return 0;
+ }
+
+-static void ctl_pass_playing_list(int n, char *args[])
++static int ctl_pass_playing_list(int n, char *args[])
+ {
+ double btime;
+ int i, j;
+@@ -323,7 +323,7 @@
+
+ if (alsa_seq_open(&alsactx.handle) < 0) {
+ fprintf(stderr, "error in snd_seq_open\n");
+- return;
++ return 1;
+ }
+ alsactx.queue = -1;
+ alsactx.client = snd_seq_client_id(alsactx.handle);
+@@ -342,7 +342,7 @@
+ int port;
+ port = alsa_create_port(alsactx.handle, i);
+ if (port < 0)
+- return;
++ return 1;
+ alsactx.port[i] = port;
+ alsa_set_timestamping(&alsactx, port);
+ printf(" %d:%d", alsactx.client, alsactx.port[i]);
+@@ -411,6 +411,7 @@
+ server_reset();
+ doit(&alsactx);
+ }
++ return 0;
+ }
+
+ /*
+diff -ur TiMidity++-2.13.2/interface/emacs_c.c TiMidity++-2.13.2-new/interface/emacs_c.c
+--- TiMidity++-2.13.2/interface/emacs_c.c 2005-01-02 02:53:01.000000000 +0100
++++ TiMidity++-2.13.2-new/interface/emacs_c.c 2005-01-02 03:02:02.000000000 +0100
+@@ -78,7 +78,7 @@
+ static void ctl_close(void);
+ static int ctl_read(int32 *valp);
+ static int cmsg(int type, int verbosity_level, char *fmt, ...);
+-static void ctl_pass_playing_list(int number_of_files, char *list_of_files[]);
++static int ctl_pass_playing_list(int number_of_files, char *list_of_files[]);
+ static void ctl_event(CtlEvent *e);
+ static int read_ready(void);
+ static int emacs_type = 0; /* 0:emacs, 1:mule, 2:??
+@@ -249,7 +249,7 @@
+ return s;
+ }
+
+-static void ctl_pass_playing_list(int argc, char *argv[])
++static int ctl_pass_playing_list(int argc, char *argv[])
+ {
+ int i;
+ char cmd[BUFSIZ];
+@@ -274,7 +274,7 @@
+ {
+ for(i = 1; i < argc; i++)
+ play_midi_file(argv[i]);
+- return;
++ return 0;
+ }
+
+ /* Main Loop */
+@@ -296,11 +296,11 @@
+ ctl_refresh();
+ break;
+ case RC_QUIT:
+- return;
++ return 0;
+ } /* skipping others command */
+ }
+ else if(!strncmp(cmd, "QUIT", 4))
+- return;
++ return 0;
+ else
+ continue; /* skipping unknown command */
+ }
+diff -ur TiMidity++-2.13.2/interface/gtk_c.c TiMidity++-2.13.2-new/interface/gtk_c.c
+--- TiMidity++-2.13.2/interface/gtk_c.c 2005-01-02 02:53:01.000000000 +0100
++++ TiMidity++-2.13.2-new/interface/gtk_c.c 2005-01-02 03:35:53.447946272 +0100
+@@ -57,7 +57,7 @@
+
+ static int ctl_open(int using_stdin, int using_stdout);
+ static void ctl_close(void);
+-static void ctl_pass_playing_list(int number_of_files, char *list_of_files[]);
++static int ctl_pass_playing_list(int number_of_files, char *list_of_files[]);
+ static int ctl_read(int32 *valp);
+ static int cmsg(int type, int verbosity_level, char *fmt, ...);
+ static void ctl_event(CtlEvent *e);
+@@ -528,7 +528,7 @@
+ #endif
+ }
+
+-static void
++static int
+ ctl_pass_playing_list(int number_of_files, char *list_of_files[])
+ {
+ int i=0;
+@@ -558,7 +558,7 @@
+ }
+ else {
+ if (command==RC_QUIT)
+- return;
++ return 0;
+ if (command==RC_ERROR)
+ command=RC_TUNE_END; /* Launch next file */
+
+@@ -580,6 +580,7 @@
+ command = ctl_blocking_read(&val);
+ }
+ }
++ return 0;
+ }
+
+ /*
+diff -ur TiMidity++-2.13.2/interface/mac_c.c TiMidity++-2.13.2-new/interface/mac_c.c
+--- TiMidity++-2.13.2/interface/mac_c.c 2005-01-02 02:53:01.000000000 +0100
++++ TiMidity++-2.13.2-new/interface/mac_c.c 2005-01-02 03:04:13.000000000 +0100
+@@ -71,7 +71,7 @@
+ static void ctl_pitch_bend(int channel, int val);
+ static void ctl_reset(void);
+ static int ctl_open(int using_stdin, int using_stdout);
+-static void ctl_pass_playing_list(int number_of_files, char *list_of_files[]);
++static int ctl_pass_playing_list(int number_of_files, char *list_of_files[]);
+ static void ctl_close(void);
+ static int ctl_read(int32 *valp);
+ static int cmsg(int type, int verbosity_level, char *fmt, ...);
+@@ -955,7 +955,7 @@
+ }
+
+
+-static void ctl_pass_playing_list(int init_number_of_files,
++static int ctl_pass_playing_list(int init_number_of_files,
+ char * /*init_list_of_files*/ [])
+ {
+ EventRecord event;
+@@ -983,6 +983,7 @@
+ mac_HandleEvent(&event);
+ }
+ Do_Quit();
++ return 0;
+ }
+
+ static Boolean UserWantsControl()
+diff -ur TiMidity++-2.13.2/interface/motif_c.c TiMidity++-2.13.2-new/interface/motif_c.c
+--- TiMidity++-2.13.2/interface/motif_c.c 2005-01-02 02:53:01.000000000 +0100
++++ TiMidity++-2.13.2-new/interface/motif_c.c 2005-01-02 03:05:04.000000000 +0100
+@@ -60,7 +60,7 @@
+ static void ctl_close(void);
+ static int ctl_read(int32 *valp);
+ static int cmsg(int type, int verbosity_level, char *fmt, ...);
+-static void ctl_pass_playing_list(int number_of_files, char *list_of_files[]);
++static int ctl_pass_playing_list(int number_of_files, char *list_of_files[]);
+ static void ctl_event(CtlEvent *e);
+
+ static int motif_ready = 0;
+@@ -346,12 +346,13 @@
+ return(ctl_blocking_read(valp));
+ }
+
+-static void ctl_pass_playing_list(int number_of_files, char *list_of_files[])
++static int ctl_pass_playing_list(int number_of_files, char *list_of_files[])
+ {
+ int i=0;
+ char file_to_play[1000];
+ int command;
+ int32 val;
++ int retval;
+
+ motif_ready = 1;
+
+@@ -381,12 +382,13 @@
+ else
+ {
+ if (command==RC_QUIT)
+- return;
++ return 0;
+
+ switch(command)
+ {
+ case RC_ERROR:
+ m_pipe_int_write(ERROR_MESSAGE);
++ retval=1;
+ break;
+ case RC_NONE:
+ break;
+@@ -411,6 +413,7 @@
+ command = ctl_blocking_read(&val);
+ }
+ }
++ return retval;
+ }
+
+ /*
+diff -ur TiMidity++-2.13.2/interface/ncurs_c.c TiMidity++-2.13.2-new/interface/ncurs_c.c
+--- TiMidity++-2.13.2/interface/ncurs_c.c 2005-01-02 02:53:01.000000000 +0100
++++ TiMidity++-2.13.2-new/interface/ncurs_c.c 2005-01-02 03:05:48.000000000 +0100
+@@ -174,7 +174,7 @@
+
+ static int ctl_open(int using_stdin, int using_stdout);
+ static void ctl_close(void);
+-static void ctl_pass_playing_list(int number_of_files, char *list_of_files[]);
++static int ctl_pass_playing_list(int number_of_files, char *list_of_files[]);
+ static int ctl_read(int32 *valp);
+ static int cmsg(int type, int verbosity_level, char *fmt, ...);
+ static void ctl_event(CtlEvent *e);
+@@ -3100,7 +3100,7 @@
+ reuse_mblock(&tmpbuffer);
+ }
+
+-static void ctl_pass_playing_list(int number_of_files, char *list_of_files[])
++static int ctl_pass_playing_list(int number_of_files, char *list_of_files[])
+ {
+ int i;
+ int act_number_of_files;
+@@ -3128,7 +3128,7 @@
+
+ if (file_list.number<0) {
+ cmsg(CMSG_FATAL, VERB_NORMAL, "No MIDI file to play!");
+- return;
++ return 1;
+ }
+
+ ctl_listmode_max=1;
+@@ -3169,7 +3169,7 @@
+ if(!(ctl.flags & CTLF_LIST_LOOP) || stdin_check)
+ {
+ aq_flush(0);
+- return;
++ return 0;
+ }
+ i = 0;
+ if(rc == RC_TUNE_END)
+@@ -3187,7 +3187,7 @@
+
+ /* else fall through */
+ case RC_QUIT:
+- return;
++ return 0;
+ }
+ ctl_reset();
+ }
+diff -ur TiMidity++-2.13.2/interface/portmidisyn_c.c TiMidity++-2.13.2-new/interface/portmidisyn_c.c
+--- TiMidity++-2.13.2/interface/portmidisyn_c.c 2005-01-02 02:53:01.000000000 +0100
++++ TiMidity++-2.13.2-new/interface/portmidisyn_c.c 2005-01-02 03:13:05.000000000 +0100
+@@ -96,7 +96,7 @@
+ static int ctl_read(int32 *valp);
+ static int cmsg(int type, int verbosity_level, char *fmt, ...);
+ static void ctl_event(CtlEvent *e);
+-static void ctl_pass_playing_list(int n, char *args[]);
++static int ctl_pass_playing_list(int n, char *args[]);
+
+ #ifndef __W32__
+ static void init_keybord(void);
+@@ -215,17 +215,17 @@
+
+ #ifdef IA_W32G_SYN
+ extern void w32g_syn_doit(void);
+-extern void w32g_syn_ctl_pass_playing_list(int n_, char *args_[]);
++extern int w32g_syn_ctl_pass_playing_list(int n_, char *args_[]);
+
+
+-static void ctl_pass_playing_list(int n, char *args[])
++static int ctl_pass_playing_list(int n, char *args[])
+ {
+- w32g_syn_ctl_pass_playing_list ( n, args );
++ return w32g_syn_ctl_pass_playing_list ( n, args );
+ }
+ #endif
+
+ #ifndef IA_W32G_SYN
+-static void ctl_pass_playing_list(int n, char *args[])
++static int ctl_pass_playing_list(int n, char *args[])
+ #else
+ // 0: OK, 2: Require to reset.
+ int ctl_pass_playing_list2(int n, char *args[])
+@@ -241,7 +241,7 @@
+ #ifndef IA_W32G_SYN
+ if(n > MAX_PORT ){
+ printf( "Usage: timidity -iW [Midi interface No s]\n");
+- return;
++ return 1;
+ }
+ #endif
+
+@@ -347,11 +347,7 @@
+ #endif /* USE_GTK_GUI */
+ rtsyn_close();
+
+-#ifdef IA_W32G_SYN
+ return 0;
+-#else
+- return;
+-#endif
+ }
+
+
+diff -ur TiMidity++-2.13.2/interface/server_c.c TiMidity++-2.13.2-new/interface/server_c.c
+--- TiMidity++-2.13.2/interface/server_c.c 2005-01-02 02:53:01.000000000 +0100
++++ TiMidity++-2.13.2-new/interface/server_c.c 2005-01-02 03:07:38.000000000 +0100
+@@ -176,7 +176,7 @@
+ static int ctl_read(int32 *valp);
+ static int cmsg(int type, int verbosity_level, char *fmt, ...);
+ static void ctl_event(CtlEvent *e);
+-static void ctl_pass_playing_list(int n, char *args[]);
++static int ctl_pass_playing_list(int n, char *args[]);
+
+ /**********************************/
+ /* export the interface functions */
+@@ -356,14 +356,14 @@
+ static void compute_sample_increment(void);
+ static void server_reset(void);
+
+-static void ctl_pass_playing_list(int n, char *args[])
++static int ctl_pass_playing_list(int n, char *args[])
+ {
+ int sock;
+
+ if(n != 2 && n != 1)
+ {
+ fprintf(stderr, "Usage: timidity -ir control-port [data-port]\n");
+- return;
++ return 1;
+ }
+
+ #ifdef SIGPIPE
+@@ -379,7 +379,7 @@
+ if (control_port) {
+ sock = pasv_open(&control_port);
+ if(sock == -1)
+- return;
++ return 1;
+ }
+ opt_realtime_playing = 1; /* Enable loading patch while playing */
+ allocate_cache_size = 0; /* Don't use pre-calclated samples */
+@@ -404,7 +404,7 @@
+ continue;
+ perror("accept");
+ close(sock);
+- return;
++ return 1;
+ }
+ }
+ else control_fd = 0;
+@@ -446,6 +446,7 @@
+ if (!control_port)
+ break;
+ }
++ return 0;
+ }
+
+ #define MAX_GETCMD_PARAMS 8
+diff -ur TiMidity++-2.13.2/interface/tk_c.c TiMidity++-2.13.2-new/interface/tk_c.c
+--- TiMidity++-2.13.2/interface/tk_c.c 2005-01-02 02:53:01.000000000 +0100
++++ TiMidity++-2.13.2-new/interface/tk_c.c 2005-01-02 03:08:48.000000000 +0100
+@@ -86,7 +86,7 @@
+ static void ctl_close(void);
+ static int ctl_read(int32 *valp);
+ static int cmsg(int type, int verbosity_level, char *fmt, ...);
+-static void ctl_pass_playing_list(int number_of_files, char *list_of_files[]);
++static int ctl_pass_playing_list(int number_of_files, char *list_of_files[]);
+ static int ctl_blocking_read(int32 *valp);
+ static void ctl_note(int status, int ch, int note, int vel);
+ static void ctl_event(CtlEvent *e);
+@@ -587,7 +587,7 @@
+ return(ctl_blocking_read(valp));
+ }
+
+-static void ctl_pass_playing_list(int number_of_files, char *list_of_files[])
++static int ctl_pass_playing_list(int number_of_files, char *list_of_files[])
+ {
+ int i=0;
+ char local[1000];
+@@ -618,7 +618,7 @@
+ /* if really QUIT */
+ k_pipe_gets(local, sizeof(local)-1);
+ if (*local == 'Z')
+- return;
++ return 0;
+ /* only stop playing..*/
+ }
+ if (command==RC_CHANGE_VOLUME) /* init volume */
+@@ -646,6 +646,7 @@
+ command = ctl_blocking_read(&val);
+ }
+ }
++ return 0;
+ }
+
+
+diff -ur TiMidity++-2.13.2/interface/w32g_c.c TiMidity++-2.13.2-new/interface/w32g_c.c
+--- TiMidity++-2.13.2/interface/w32g_c.c 2005-01-02 02:53:01.000000000 +0100
++++ TiMidity++-2.13.2-new/interface/w32g_c.c 2005-01-02 03:10:03.000000000 +0100
+@@ -86,7 +86,7 @@
+
+ static int ctl_open(int using_stdin, int using_stdout);
+ static void ctl_close(void);
+-static void ctl_pass_playing_list(int number_of_files, char *list_of_files[]);
++static int ctl_pass_playing_list(int number_of_files, char *list_of_files[]);
+ static void ctl_event(CtlEvent *e);
+ static int ctl_read(int32 *valp);
+ static int cmsg(int type, int verbosity_level, char *fmt, ...);
+@@ -662,7 +662,7 @@
+ }
+
+ extern BOOL SetWrdWndActive(void);
+-static void ctl_pass_playing_list(int number_of_files, char *list_of_files[])
++static int ctl_pass_playing_list(int number_of_files, char *list_of_files[])
+ {
+ static int init_flag = 1;
+ int rc;
+@@ -779,7 +779,7 @@
+ if(ctl.flags & CTLF_AUTOEXIT) {
+ if(play_mode->fd != -1)
+ aq_flush(0);
+- return;
++ return 0;
+ }
+ break;
+ }
+@@ -803,7 +803,7 @@
+ if(ctl.flags & CTLF_AUTOEXIT){
+ if(play_mode->fd != -1)
+ aq_flush(0);
+- return;
++ return 0;
+ }
+ if((ctl.flags & CTLF_LIST_LOOP) && w32g_nvalid_playlist())
+ {
+@@ -839,7 +839,7 @@
+ case RC_QUIT:
+ if(play_mode->fd != -1)
+ aq_flush(1);
+- return;
++ return 0;
+
+ case RC_CHANGE_VOLUME:
+ amplification += value;
+@@ -868,6 +868,7 @@
+ PrefSettingApplyReally();
+ rc = RC_NONE;
+ }
++ return 0;
+ }
+
+ static void ctl_lcd_mark(int flag, int x, int y)
+diff -ur TiMidity++-2.13.2/interface/w32g_syn.c TiMidity++-2.13.2-new/interface/w32g_syn.c
+--- TiMidity++-2.13.2/interface/w32g_syn.c 2005-01-02 02:53:01.000000000 +0100
++++ TiMidity++-2.13.2-new/interface/w32g_syn.c 2005-01-02 03:10:49.000000000 +0100
+@@ -281,7 +281,7 @@
+ static int wait_for_termination_of_syn_thread ( void );
+ int w32g_message_set ( int cmd );
+ int w32g_message_get ( w32g_syn_message_t *msg );
+-void w32g_syn_ctl_pass_playing_list ( int n_, char *args_[] );
++int w32g_syn_ctl_pass_playing_list ( int n_, char *args_[] );
+ int w32g_syn_do_before_pref_apply ( void );
+ int w32g_syn_do_after_pref_apply ( void );
+
+@@ -1403,7 +1403,7 @@
+ }
+ }
+
+-void w32g_syn_ctl_pass_playing_list ( int n_, char *args_[] )
++int w32g_syn_ctl_pass_playing_list ( int n_, char *args_[] )
+ {
+ int i;
+ #ifndef TWSYNSRV
+@@ -1471,6 +1471,7 @@
+ }
+ #endif
+ if ( w32g_syn.quit_state < 2 ) w32g_syn.quit_state = 2;
++ return 0;
+ }
+
+ int w32g_syn_do_before_pref_apply ( void )
+diff -ur TiMidity++-2.13.2/interface/winsyn_c.c TiMidity++-2.13.2-new/interface/winsyn_c.c
+--- TiMidity++-2.13.2/interface/winsyn_c.c 2005-01-02 02:53:01.000000000 +0100
++++ TiMidity++-2.13.2-new/interface/winsyn_c.c 2005-01-02 03:11:36.000000000 +0100
+@@ -88,7 +88,7 @@
+ static int ctl_read(int32 *valp);
+ static int cmsg(int type, int verbosity_level, char *fmt, ...);
+ static void ctl_event(CtlEvent *e);
+-static void ctl_pass_playing_list(int n, char *args[]);
++static int ctl_pass_playing_list(int n, char *args[]);
+
+ #ifndef __W32__
+ static void init_keybord(void);
+@@ -207,17 +207,17 @@
+
+ #ifdef IA_W32G_SYN
+ extern void w32g_syn_doit(void);
+-extern void w32g_syn_ctl_pass_playing_list(int n_, char *args_[]);
++extern int w32g_syn_ctl_pass_playing_list(int n_, char *args_[]);
+
+
+-static void ctl_pass_playing_list(int n, char *args[])
++static int ctl_pass_playing_list(int n, char *args[])
+ {
+- w32g_syn_ctl_pass_playing_list ( n, args );
++ return w32g_syn_ctl_pass_playing_list ( n, args );
+ }
+ #endif
+
+ #ifndef IA_W32G_SYN
+-static void ctl_pass_playing_list(int n, char *args[])
++static int ctl_pass_playing_list(int n, char *args[])
+ #else
+ // 0: OK, 2: Require to reset.
+ int ctl_pass_playing_list2(int n, char *args[])
+@@ -233,7 +233,7 @@
+ #ifndef IA_W32G_SYN
+ if(n > MAX_PORT ){
+ printf( "Usage: timidity -iW [Midi interface No s]\n");
+- return;
++ return 1;
+ }
+ #endif
+
+@@ -339,11 +339,7 @@
+ #endif /* USE_GTK_GUI */
+ rtsyn_close();
+
+-#ifdef IA_W32G_SYN
+ return 0;
+-#else
+- return;
+-#endif
+ }
+
+
+diff -ur TiMidity++-2.13.2/interface/xaw_c.c TiMidity++-2.13.2-new/interface/xaw_c.c
+--- TiMidity++-2.13.2/interface/xaw_c.c 2005-01-02 02:53:01.000000000 +0100
++++ TiMidity++-2.13.2-new/interface/xaw_c.c 2005-01-02 03:11:57.000000000 +0100
+@@ -55,7 +55,7 @@
+ static void ctl_close(void);
+ static int ctl_read(int32 *valp);
+ static int cmsg(int type, int verbosity_level, char *fmt, ...);
+-static void ctl_pass_playing_list(int number_of_files, char *list_of_files[]);
++static int ctl_pass_playing_list(int number_of_files, char *list_of_files[]);
+ static void ctl_event(CtlEvent *e);
+
+ static void a_pipe_open(void);
+@@ -463,7 +463,7 @@
+ }
+ }
+
+-static void ctl_pass_playing_list(int init_number_of_files,
++static int ctl_pass_playing_list(int init_number_of_files,
+ char *init_list_of_files[]) {
+ int current_no,command=RC_NONE,i,j;
+ int32 val;
+diff -ur TiMidity++-2.13.2/interface/xskin_c.c TiMidity++-2.13.2-new/interface/xskin_c.c
+--- TiMidity++-2.13.2/interface/xskin_c.c 2005-01-02 02:53:01.000000000 +0100
++++ TiMidity++-2.13.2-new/interface/xskin_c.c 2005-01-02 03:12:31.000000000 +0100
+@@ -55,7 +55,7 @@
+ static void ctl_close(void);
+ static int ctl_read(int32 *valp);
+ static int cmsg(int type, int verbosity_level, char *fmt, ...);
+-static void ctl_pass_playing_list(int number_of_files, char *list_of_files[]);
++static int ctl_pass_playing_list(int number_of_files, char *list_of_files[]);
+ static void ctl_event(CtlEvent *e);
+ static void ctl_speana_data(double *val, int size);
+ static void initialize_exp_hz_table( void );
+@@ -342,7 +342,7 @@
+ }
+ }
+
+-static void ctl_pass_playing_list(int number_of_files, char *list_of_files[]) {
++static int ctl_pass_playing_list(int number_of_files, char *list_of_files[]) {
+
+ int current_no,command,i;
+ int32 val;
+@@ -403,7 +403,7 @@
+ command=play_midi_file(list_of_files[file_table[current_no]]);
+ } else {
+ /* Quit timidity*/
+- if (exitflag) return;
++ if (exitflag) return 0;
+ /* Stop playing */
+ if (command==RC_QUIT) {
+ sprintf(local_buf,"T 00:00");
+@@ -461,6 +461,7 @@
+ command=ctl_blocking_read(&val);
+ }
+ }
++ return 0;
+ }
+
+ /* ------ Pipe handlers ----- */
+diff -ur TiMidity++-2.13.2/timidity/controls.h TiMidity++-2.13.2-new/timidity/controls.h
+--- TiMidity++-2.13.2/timidity/controls.h 2005-01-02 02:53:01.000000000 +0100
++++ TiMidity++-2.13.2-new/timidity/controls.h 2005-01-02 02:59:37.000000000 +0100
+@@ -147,7 +147,7 @@
+
+ int (*open)(int using_stdin, int using_stdout);
+ void (*close)(void);
+- void (*pass_playing_list)(int number_of_files, char *list_of_files[]);
++ int (*pass_playing_list)(int number_of_files, char *list_of_files[]);
+ int (*read)(int32 *valp);
+ int (*cmsg)(int type, int verbosity_level, char *fmt, ...);
+ void (*event)(CtlEvent *ev); /* Control events */
+diff -ur TiMidity++-2.13.2/timidity/playmidi.c TiMidity++-2.13.2-new/timidity/playmidi.c
+--- TiMidity++-2.13.2/timidity/playmidi.c 2005-01-02 02:53:01.000000000 +0100
++++ TiMidity++-2.13.2-new/timidity/playmidi.c 2005-01-02 03:15:55.000000000 +0100
+@@ -8562,7 +8562,7 @@
+ return rc;
+ }
+
+-void dumb_pass_playing_list(int number_of_files, char *list_of_files[])
++int dumb_pass_playing_list(int number_of_files, char *list_of_files[])
+ {
+ #ifndef CFG_FOR_SF
+ int i = 0;
+@@ -8586,12 +8586,12 @@
+ aq_flush(0);
+
+ if(!(ctl->flags & CTLF_LIST_LOOP))
+- return;
++ return 0;
+ i = 0;
+ break;
+
+ case RC_QUIT:
+- return;
++ return 0;
+ }
+ }
+ #endif
+diff -ur TiMidity++-2.13.2/timidity/playmidi.h TiMidity++-2.13.2-new/timidity/playmidi.h
+--- TiMidity++-2.13.2/timidity/playmidi.h 2005-01-02 02:53:01.000000000 +0100
++++ TiMidity++-2.13.2-new/timidity/playmidi.h 2005-01-02 03:16:07.000000000 +0100
+@@ -577,7 +577,7 @@
+ extern int opt_pan_delay;
+
+ extern int play_midi_file(char *fn);
+-extern void dumb_pass_playing_list(int number_of_files, char *list_of_files[]);
++extern int dumb_pass_playing_list(int number_of_files, char *list_of_files[]);
+ extern void default_ctl_lyric(int lyricid);
+ extern int check_apply_control(void);
+ extern void recompute_freq(int v);
+diff -ur TiMidity++-2.13.2/timidity/sndfont.c TiMidity++-2.13.2-new/timidity/sndfont.c
+--- TiMidity++-2.13.2/timidity/sndfont.c 2005-01-02 02:53:01.000000000 +0100
++++ TiMidity++-2.13.2-new/timidity/sndfont.c 2005-01-02 03:15:27.000000000 +0100
+@@ -1893,7 +1893,7 @@
+
+ #if CFG_FOR_SF_SUPPORT_FFT
+ int check_apply_control(void) { return 0; } // not pass
+-void dumb_pass_playing_list(int number_of_files, char *list_of_files[]) {}
++int dumb_pass_playing_list(int number_of_files, char *list_of_files[]) {return 0;}
+ void recompute_freq(int v) {} // not pass
+ int32 control_ratio = 0;
+ int reduce_quality_flag = 0;
+diff -ur TiMidity++-2.13.2/timidity/timidity.c TiMidity++-2.13.2-new/timidity/timidity.c
+--- TiMidity++-2.13.2/timidity/timidity.c 2005-01-02 02:53:01.000000000 +0100
++++ TiMidity++-2.13.2-new/timidity/timidity.c 2005-01-02 02:59:29.000000000 +0100
+@@ -5291,6 +5291,7 @@
+ int need_stdin = 0, need_stdout = 0;
+ int i;
+ int output_fail = 0;
++ int retval;
+
+ if(nfiles == 0 && !strchr(INTERACTIVE_INTERFACE_IDS, ctl->id_character))
+ return 0;
+@@ -5410,7 +5411,7 @@
+ ctl->cmsg(CMSG_INFO, VERB_DEBUG_SILLY,
+ "pass_playing_list() nfiles=%d", nfiles);
+
+- ctl->pass_playing_list(nfiles, files);
++ retval=ctl->pass_playing_list(nfiles, files);
+
+ if(intr)
+ aq_flush(1);
+@@ -5451,7 +5452,7 @@
+ url_news_connection_cache(URL_NEWS_CLOSE_CACHE);
+ #endif /* SUPPORT_SOCKET */
+
+- return 0;
++ return retval;
+ }
+
+ #ifdef IA_W32GUI
diff --git a/extra/timidity++/timidity++-2.13.2-gtk26.patch b/extra/timidity++/timidity++-2.13.2-gtk26.patch
new file mode 100644
index 000000000..73dc8de6c
--- /dev/null
+++ b/extra/timidity++/timidity++-2.13.2-gtk26.patch
@@ -0,0 +1,19 @@
+--- interface/gtk_i.c 2004/12/21 16:59:33 1.1
++++ interface/gtk_i.c 2004/12/21 16:59:41
+@@ -365,6 +365,7 @@ void
+ Launch_Gtk_Process(int pipe_number)
+ {
+ int argc = 0;
++ gchar **argv = NULL;
+ GtkWidget *button, *mbar, *swin;
+ GtkWidget *table, *align, *handlebox;
+ GtkWidget *vbox, *hbox, *vbox2, *scrolled_win;
+@@ -373,7 +374,7 @@ Launch_Gtk_Process(int pipe_number)
+ /* enable locale */
+ gtk_set_locale ();
+
+- gtk_init (&argc, NULL);
++ gtk_init (&argc, &argv);
+
+ ttip = create_yellow_tooltips();
+ window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
diff --git a/extra/timidity++/timidity++-2.13.2-polling.patch b/extra/timidity++/timidity++-2.13.2-polling.patch
new file mode 100644
index 000000000..a9638dba1
--- /dev/null
+++ b/extra/timidity++/timidity++-2.13.2-polling.patch
@@ -0,0 +1,34 @@
+--- interface/alsaseq_c.c 2006/12/13 23:22:53 1.28
++++ interface/alsaseq_c.c 2008/04/16 00:14:45 1.29
+@@ -501,6 +501,8 @@
+
+ static void doit(struct seq_context *ctxp)
+ {
++ fd_set rfds;
++ struct timeval timeout;
+ for (;;) {
+ while (snd_seq_event_input_pending(ctxp->handle, 1)) {
+ if (do_sequencer(ctxp))
+@@ -528,15 +530,17 @@
+ play_event(&ev);
+ aq_fill_nonblocking();
+ }
+- if (! ctxp->active || ! IS_STREAM_TRACE) {
+- fd_set rfds;
+- struct timeval timeout;
+- FD_ZERO(&rfds);
+- FD_SET(ctxp->fd, &rfds);
++
++ FD_ZERO(&rfds);
++ FD_SET(ctxp->fd, &rfds);
++ if (ctxp->active) {
+ timeout.tv_sec = 0;
+ timeout.tv_usec = 10000; /* 10ms */
+ if (select(ctxp->fd + 1, &rfds, NULL, NULL, &timeout) < 0)
+ goto __done;
++ } else {
++ if (select(ctxp->fd + 1, &rfds, NULL, NULL, NULL) < 0)
++ goto __done;
+ }
+ }
+
diff --git a/extra/timidity++/timidity++.sh b/extra/timidity++/timidity++.sh
new file mode 100644
index 000000000..3fa13cea9
--- /dev/null
+++ b/extra/timidity++/timidity++.sh
@@ -0,0 +1,38 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+PID=`pidof -o %PPID /usr/bin/timidity`
+case "$1" in
+ start)
+ stat_busy "Starting Timidity++ ALSA Daemon"
+ [ -z "$PID" ] && /usr/bin/timidity -iAD > /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ echo $PID > /var/run/timidity.pid
+ add_daemon timidity++
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping Timidity++ ALSA Daemon"
+ [ ! -z "$PID" ] && kill $PID &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm /var/run/timidity.pid
+ rm_daemon timidity++
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
diff --git a/extra/timidity++/timidity.cfg b/extra/timidity++/timidity.cfg
new file mode 100644
index 000000000..59bbfa935
--- /dev/null
+++ b/extra/timidity++/timidity.cfg
@@ -0,0 +1,29 @@
+# details on this file and other examples see here:
+# http://www.onicos.com/staff/iz/timidity/dist/cfg/sndfont.cfg
+# http://www.onicos.com/staff/iz/timidity/dist/cfg/
+#----------------------------------------------------------------
+# SoundFont extension configuration
+#
+# soundfont <filename> [order={0|1}] [remove]
+# <filename> is the path of SoundFont file.
+# order: 0(preload) or 1(load after GUS).
+# remove: disable specified soundfont.
+#
+# font exclude <tonebank> [<preset> [<keynote>]]
+# font order {0|1} <tonebank> [<preset> [<keynote>]]
+# <tonebank>: 0-127
+#
+# font exclude 128 [<drumset> [<key>]]
+# font order {0|1} 128 [<drumset> [<key>]]
+#----------------------------------------------------------------
+
+# change the next line to point to a soundfont you have
+# soundfonts can be found e.g. here: http://www.hammersound.net/
+# soundfont /usr/share/soundfonts/DX7Piano.SF2
+
+# you can do manipulations of the soundfont you load like this:
+# e.g. removing drumset 99
+# font exclude 128 99
+
+# load drum samples after GUS patches
+# font order 1 128
diff --git a/extra/tk/PKGBUILD b/extra/tk/PKGBUILD
new file mode 100644
index 000000000..4b1807027
--- /dev/null
+++ b/extra/tk/PKGBUILD
@@ -0,0 +1,51 @@
+# $Id: PKGBUILD 90372 2010-09-11 03:52:30Z allan $
+# Maintainer: Allan McRae <allan@archlinux.org>
+# Contributor: Judd Vinet <jvinet@zeroflux.org>
+
+pkgname=tk
+pkgver=8.5.9
+pkgrel=1
+pkgdesc="A windowing toolkit for use with tcl"
+arch=('i686' 'x86_64')
+url="http://tcl.sourceforge.net/"
+license=('custom')
+depends=("tcl=${pkgver}" 'libxss' 'libxft')
+source=(http://downloads.sourceforge.net/sourceforge/tcl/tk${pkgver}-src.tar.gz)
+md5sums=('7cdeb9feb61593f58a0ae61f2497580e')
+
+build() {
+ cd ${srcdir}/tk${pkgver}/unix
+
+ if [ "$CARCH" = "x86_64" ]; then
+ ./configure --prefix=/usr --mandir=/usr/share/man --enable-threads --enable-64bit
+ else
+ ./configure --prefix=/usr --mandir=/usr/share/man --enable-threads --disable-64bit
+ fi
+
+ make
+}
+
+package() {
+ cd ${srcdir}/tk${pkgver}/unix
+
+ make INSTALL_ROOT=${pkgdir} install install-private-headers
+ ln -sf wish8.5 ${pkgdir}/usr/bin/wish
+
+ # install private headers (FS#14388)
+ cd ${srcdir}/tk${pkgver}
+ for dir in compat generic generic/ttk unix; do
+ install -dm755 ${pkgdir}/usr/include/tk-private/$dir
+ install -m644 -t ${pkgdir}/usr/include/tk-private/$dir $dir/*.h
+ done
+
+ # install license
+ install -Dm644 license.terms ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+
+ # remove buildroot traces
+ sed -i \
+ -e "s,^TK_BUILD_LIB_SPEC='-L.*/unix,TK_BUILD_LIB_SPEC='-L/usr/lib," \
+ -e "s,^TK_SRC_DIR='.*',TK_SRC_DIR='/usr/include'," \
+ -e "s,^TK_BUILD_STUB_LIB_SPEC='-L.*/unix,TK_BUILD_STUB_LIB_SPEC='-L/usr/lib," \
+ -e "s,^TK_BUILD_STUB_LIB_PATH='.*/unix,TK_BUILD_STUB_LIB_PATH='/usr/lib," \
+ ${pkgdir}/usr/lib/tkConfig.sh
+}
diff --git a/extra/tomboy/PKGBUILD b/extra/tomboy/PKGBUILD
new file mode 100644
index 000000000..b7d2e223d
--- /dev/null
+++ b/extra/tomboy/PKGBUILD
@@ -0,0 +1,34 @@
+# $Id: PKGBUILD 103907 2010-12-23 17:41:14Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=tomboy
+pkgver=1.4.2
+pkgrel=1
+pkgdesc="Desktop note-taking application for Linux and Unix"
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://www.gnome.org/projects/tomboy/"
+depends=('gtkspell' 'gmime>=2.4.21' 'ndesk-dbus-glib>=0.4.1' 'gnome-sharp>=2.24.1' 'mono-addins>=0.5' 'libsm' 'gnome-desktop-sharp>=2.26.0' 'hicolor-icon-theme')
+makedepends=('intltool' 'pkgconfig' 'gnome-panel-bonobo' 'gnome-doc-utils>=0.20.0')
+optdepends=('gnome-panel-bonobo: applet support')
+options=('!libtool' '!emptydirs' '!makeflags')
+groups=('gnome-extra')
+install=tomboy.install
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/1.4/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('823270473c819d6592074a0dcd41c29fd857b29a0318061aaabfa38fff3cc7e7')
+
+build() {
+ export MONO_SHARED_DIR="${srcdir}/.wabi"
+ mkdir -p "${MONO_SHARED_DIR}"
+
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-scrollkeeper \
+ --disable-update-mimedb --enable-panel-applet
+ make
+ make DESTDIR="${pkgdir}" GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 install
+
+ install -m755 -d "${pkgdir}/usr/share/gconf/schemas"
+ gconf-merge-schema "${pkgdir}/usr/share/gconf/schemas/${pkgname}.schemas" --domain tomboy ${pkgdir}/etc/gconf/schemas/*.schemas
+ rm -f ${pkgdir}/etc/gconf/schemas/*.schemas
+}
diff --git a/extra/tomboy/tomboy.install b/extra/tomboy/tomboy.install
new file mode 100644
index 000000000..f8e2e4a07
--- /dev/null
+++ b/extra/tomboy/tomboy.install
@@ -0,0 +1,25 @@
+pkgname=tomboy
+
+post_install() {
+ usr/sbin/gconfpkg --install ${pkgname}
+
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+ update-mime-database usr/share/mime
+}
+
+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
+ update-mime-database usr/share/mime
+}
diff --git a/extra/tomcat/PKGBUILD b/extra/tomcat/PKGBUILD
new file mode 100644
index 000000000..b58268347
--- /dev/null
+++ b/extra/tomcat/PKGBUILD
@@ -0,0 +1,46 @@
+# $Id: PKGBUILD 117492 2011-04-04 07:40:54Z guillaume $
+# Maintainer: Guillaume ALAUX <guillaume at archlinux dot org>
+# Contributor: Hugo Doria <hugo@archlinux.org>
+pkgname=tomcat
+pkgver=5.5.33
+pkgrel=1
+arch=('i686' 'x86_64')
+pkgdesc="Servlet container for Java Servlet and JavaServer Pages"
+url="http://tomcat.apache.org/"
+license=('APACHE')
+depends=('java-environment')
+makedepends=('openjdk6')
+backup=('opt/tomcat/conf/server.xml' 'opt/tomcat/conf/tomcat-users.xml' 'etc/conf.d/tomcat')
+install=tomcat.install
+source=(http://archive.apache.org/dist/tomcat/tomcat-5/v${pkgver}/bin/apache-tomcat-${pkgver}.tar.gz
+ 'tomcat'
+ 'tomcat.conf.d')
+md5sums=('3d79cd245497b2c501b4fd64e1da641c'
+ '20e6a8e89a148e2b0ac81ca03ceea6b1'
+ '368322d8a51ce20cc5dbdb505706a16a')
+
+build() {
+ unset LDFLAGS
+ # build jsvc
+ cd ${srcdir}/apache-${pkgname}-${pkgver}/bin
+ tar xzf commons-daemon-native.tar.gz
+ cd commons-daemon-1.0.5-native-src/unix
+ sh configure --with-java=/usr/lib/jvm/java-6-openjdk
+ make clean
+ make
+ cp jsvc ../..
+
+ # get rid of some cruft
+ cd ${srcdir}/apache-${pkgname}-${pkgver}
+ rm -f LICENSE NOTICE RELEASE-NOTES RUNNING.txt
+ rm -fr bin/*.exe bin/*.bat bin/*.tar.gz bin/jsvc-src
+
+ # install everything
+ mkdir -p ${pkgdir}/opt/tomcat
+ cp -R * ${pkgdir}/opt/tomcat
+ install -D -m755 ${srcdir}/tomcat ${pkgdir}/etc/rc.d/tomcat
+ install -D -m644 ${srcdir}/tomcat.conf.d ${pkgdir}/etc/conf.d/tomcat
+ chgrp -R 66 ${pkgdir}/opt/tomcat/{conf,work,webapps}
+ chmod 0660 ${pkgdir}/opt/tomcat/conf/{*.xml,*.policy,*.properties,/Catalina/localhost/*.xml}
+ chmod 775 ${pkgdir}/opt/tomcat/{conf,work,webapps}
+}
diff --git a/extra/tomcat/tomcat b/extra/tomcat/tomcat
new file mode 100755
index 000000000..43116783d
--- /dev/null
+++ b/extra/tomcat/tomcat
@@ -0,0 +1,53 @@
+#!/bin/bash
+
+[ -f /etc/conf.d/tomcat ] && . /etc/conf.d/tomcat
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+case "$1" in
+ start)
+ stat_busy "Starting Tomcat"
+ /opt/tomcat/bin/jsvc \
+ -user tomcat \
+ -home $TOMCAT_JAVA_HOME \
+ -Dcatalina.home=/opt/tomcat \
+ -Dcatalina.base=/opt/tomcat \
+ -Djava.io.tmpdir=/opt/tomcat/temp \
+ -wait 10 \
+ -pidfile /var/run/tomcat.pid \
+ -errfile /opt/tomcat/logs/catalina.log \
+ $CATALINA_OPTS \
+ -cp $TOMCAT_JAVA_HOME/lib/tools.jar:/opt/tomcat/bin/commons-daemon.jar:/opt/tomcat/bin/bootstrap.jar \
+ org.apache.catalina.startup.Bootstrap
+
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon tomcat
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping Tomcat"
+ /opt/tomcat/bin/jsvc \
+ -stop \
+ -pidfile /var/run/tomcat.pid \
+ org.apache.catalina.startup.Bootstrap
+
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon tomcat
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
diff --git a/extra/tomcat/tomcat.conf.d b/extra/tomcat/tomcat.conf.d
new file mode 100644
index 000000000..aed805cd3
--- /dev/null
+++ b/extra/tomcat/tomcat.conf.d
@@ -0,0 +1,5 @@
+# The JAVA_HOME of the JVM for Tomcat to use
+TOMCAT_JAVA_HOME=/usr/lib/jvm/java-6-openjdk
+
+# Tomcat additional commandline options
+CATALINA_OPTS=
diff --git a/extra/tomcat/tomcat.install b/extra/tomcat/tomcat.install
new file mode 100644
index 000000000..4308274ce
--- /dev/null
+++ b/extra/tomcat/tomcat.install
@@ -0,0 +1,27 @@
+post_install() {
+ getent group tomcat >/dev/null 2>&1 || groupadd -g 66 tomcat
+ getent passwd tomcat >/dev/null 2>&1 || useradd -u 66 -g tomcat -d /opt/tomcat -s /bin/false tomcat
+
+ if [ -f lib/modules/`uname -r`/kernel/security/capability.ko ]; then
+ echo ">>> It appears that your current kernel has linux security"
+ echo ">>> capabilities built as a module. Tomcat requires this"
+ echo ">>> functionality to operate."
+ echo ">>>"
+ echo ">>> To activate the module, please load it now (modprobe capability)."
+ echo ">>> Also, you should add it to your MODULES array in rc.conf, so"
+ echo ">>> it will be activated automatically at boot-up."
+ fi
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ if getent passwd tomcat >/dev/null 2>&1; then
+ userdel tomcat
+ fi
+ if getent group tomcat >/dev/null 2>&1; then
+ groupdel tomcat
+ fi
+}
diff --git a/extra/totem-plparser/PKGBUILD b/extra/totem-plparser/PKGBUILD
new file mode 100644
index 000000000..1d7d30b1b
--- /dev/null
+++ b/extra/totem-plparser/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 111264 2011-02-25 14:59:26Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=totem-plparser
+pkgver=2.32.3
+pkgrel=1
+url="http://www.hadess.net/totem.php3"
+pkgdesc="Totem playlist parser library"
+license=('LGPL')
+arch=(i686 x86_64)
+depends=('gmime' 'libsoup-gnome')
+makedepends=('intltool' 'pkgconfig' 'gobject-introspection')
+options=('!libtool')
+source=(http://ftp.gnome.org/pub/gnome/sources/totem-pl-parser/2.32/totem-pl-parser-${pkgver}.tar.bz2)
+sha256sums=('c15149650c5420426e7becd6eb4298e898d1975cb7c9ff534cc0785d350916e2')
+
+build() {
+ cd "${srcdir}/totem-pl-parser-${pkgver}"
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --disable-static
+ make
+}
+
+package(){
+ cd "${srcdir}/totem-pl-parser-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/totem/PKGBUILD b/extra/totem/PKGBUILD
new file mode 100644
index 000000000..4241b3209
--- /dev/null
+++ b/extra/totem/PKGBUILD
@@ -0,0 +1,80 @@
+# $Id: PKGBUILD 96293 2010-10-19 20:31:32Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgbase=totem
+pkgname=('totem' 'totem-plugin')
+pkgver=2.32.0
+pkgrel=3
+url="http://www.hadess.net/totem.php3"
+arch=('i686' 'x86_64')
+license=('GPL2' 'custom')
+makedepends=('gstreamer0.10-base-plugins>=0.10.30' 'gstreamer0.10-good-plugins>=0.10.22' 'totem-plparser>=2.32.0' 'libxxf86vm' 'libxtst' 'desktop-file-utils' 'iso-codes>=3.10.1' 'libepc>=0.3.10' 'python2' 'libgdata>=0.6.4' 'nautilus>=2.32.0' 'xulrunner>=1.9.2' 'pkgconfig' 'bluez>=4.64' 'lirc-utils' 'gnome-doc-utils>=0.20.1' 'gnome-control-center>=2.32.0' 'intltool' 'pygtk>=2.22.0')
+
+options=('!libtool' '!emptydirs')
+source=(http://ftp.gnome.org/pub/gnome/sources/totem/2.32/${pkgbase}-${pkgver}.tar.bz2)
+sha256sums=('982d6aaeca3e4844694fc0a2540d792bea753e24b55cf33203188b32b5914f47')
+
+build() {
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --libexecdir=/usr/lib/totem \
+ --localstatedir=/var --disable-static \
+ --enable-python --enable-nautilus \
+ --with-dbus --disable-scrollkeeper
+ make
+}
+
+package_totem() {
+ pkgdesc="A GNOME2 integrated movie player based on Gstreamer."
+ depends=('gstreamer0.10-base-plugins>=0.10.30' 'gstreamer0.10-good-plugins>=0.10.22' 'totem-plparser>=2.32.0' 'libxxf86vm' 'libxtst' 'desktop-file-utils' 'iso-codes>=3.10.1' 'python2' 'libunique>=1.1.6')
+ groups=('gnome-extra')
+ install=totem.install
+ optdepends=('gstreamer0.10-ugly-plugins: Extra media codecs'
+ 'gstreamer0.10-bad-plugins: Extra media codecs'
+ 'gstreamer0.10-ffmpeg: Extra media codecs'
+ 'httplib2: BBC iPlayer plugin'
+ 'python-feedparser: BBC iPlayer plugin'
+ 'beautiful-soup: BBC iPlayer plugin'
+ 'coherence: Coherence DLNA/UPnP Client plugin'
+ 'dbus-python: D-Bus Service plugin'
+ 'gromit: Gromit Annotations plugin'
+ 'lirc-utils: Infrared Remote Control plugin'
+ 'libepc: Publish Playlist plugin'
+ 'pyxdg: Subtitle Downloader plugin'
+ 'libgdata: YouTube Browser plugin'
+ 'gnome-python: Subtitle plugin')
+ conflicts=('totem-xine')
+ replaces=('totem-xine')
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ make GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 DESTDIR="${pkgdir}" install
+
+ rm -f ${pkgdir}/usr/share/totem/vanity.*
+ rm -f "${pkgdir}/usr/share/pixmaps/vanity.png"
+
+ rm -rf "${pkgdir}/usr/lib/mozilla"
+ rm -f "${pkgdir}/usr/lib/totem/totem-plugin-viewer"
+
+ install -m755 -d "${pkgdir}/usr/share/gconf/schemas"
+ gconf-merge-schema "${pkgdir}/usr/share/gconf/schemas/${pkgname}.schemas" --domain totem ${pkgdir}/etc/gconf/schemas/*.schemas
+ rm -f ${pkgdir}/etc/gconf/schemas/*.schemas
+
+ sed -i "s|#!/usr/bin/python$|#!/usr/bin/python2|" \
+ $pkgdir/usr/lib/totem/{totem/totem-bugreport.py,plugins/iplayer/iplayer2.py}
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
+
+package_totem-plugin() {
+ pkgdesc="Totem mozilla/firefox plugin"
+ depends="totem=${pkgver}"
+
+ cd "${srcdir}/${pkgbase}-${pkgver}/browser-plugin"
+ make plugindir=/usr/lib/mozilla/plugins \
+ xptdir=/usr/lib/mozilla/plugins \
+ DESTDIR="${pkgdir}" install
+
+ rm -rf "${pkgdir}/usr/share"
+}
+
diff --git a/extra/totem/totem.install b/extra/totem/totem.install
new file mode 100644
index 000000000..98dabd71a
--- /dev/null
+++ b/extra/totem/totem.install
@@ -0,0 +1,24 @@
+pkgname=totem
+
+post_install() {
+ usr/sbin/gconfpkg --install ${pkgname}
+ update-desktop-database -q
+ 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() {
+ update-desktop-database -q
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
diff --git a/extra/transcode/PKGBUILD b/extra/transcode/PKGBUILD
new file mode 100644
index 000000000..403d93a39
--- /dev/null
+++ b/extra/transcode/PKGBUILD
@@ -0,0 +1,76 @@
+# $Id: PKGBUILD 91207 2010-09-24 03:35:03Z eric $
+# Maintainer:
+# Contributor: Sarah Hay <sarahhay@mb.sympatico.ca>
+# Contributor: roberto <roberto@archlinux.org>
+
+pkgname=transcode
+_sripver=0.3-4
+pkgver=1.1.5
+pkgrel=5
+pkgdesc="A video/DVD ripper and encoder for the terminal/console"
+arch=('i686' 'x86_64')
+url="http://tcforge.berlios.de/"
+license=('GPL')
+depends=('imagemagick' 'lzo2' 'libdv' 'libdvdread' 'ffmpeg' 'mjpegtools'
+ 'libmpeg2' 'libtheora' 'libxaw' 'libxml2' 'libxv' 'a52dec' 'alsa-lib')
+makedepends=('nasm' 'pkg-config')
+options=('!libtool' '!makeflags')
+source=(http://download2.berlios.de/tcforge/${pkgname}-${pkgver}.tar.bz2
+ http://downloads.sourceforge.net/sourceforge/subtitleripper/subtitleripper-${_sripver}.tgz
+ transcode-1.1.5-jpeg-7.patch transcode-1.1.5-mpa.patch)
+md5sums=('41ac6b1c0fe30f3aab286e771fc31b9e' 'c0bd49a88f667c68c4430ad25bbed510'\
+ 'af4056b7530a6f147594f676849e7c7b' 'c299cfc6c4be6a5512d1a129f04e5450')
+sha1sums=('48c36e06ca0cd1cdc1a9c6a241e231f896eefd26' 'd93ff3578dd5f722c8f4ef16bc0903eec5781a0d'\
+ '9e380c00a3b31725dc3ec483fa7bf5e3d8a8a977' '6f45d9167c3aa15a83cb29545749f55eb1f1e5a2')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -p0 < ../transcode-1.1.5-jpeg-7.patch
+ patch -p1 < ../transcode-1.1.5-mpa.patch
+
+ # building from here
+ ./configure --prefix=/usr \
+ --enable-sse=no --enable-sse2=no --enable-altivec=no --enable-mmx \
+ --enable-lame --enable-ogg --enable-vorbis --enable-theora \
+ --enable-libdv --enable-libxml2 --enable-v4l \
+ --enable-imagemagick --enable-libjpeg --enable-lzo --enable-mjpegtools \
+ --enable-sdl --enable-freetype2 --enable-a52 --enable-libpostproc \
+ --enable-xvid --enable-x264 --enable-alsa \
+ --enable-libmpeg2 --enable-libmpeg2convert \
+ --with-libxml2-prefix=/usr \
+ --with-mjpegtools-prefix=/usr \
+ --with-imagemagick-prefix=/usr \
+ --with-libdv-includes=/usr \
+ --with-libpostproc-includes=/usr/include/libpostproc \
+ --with-ogg-prefix=/usr \
+ --with-lame-libs=/usr \
+ --with-lzo-libs=/usr/lib \
+ --with-libavcodec-prefix=/usr \
+ --with-libavcodec-includes=/usr/include \
+ --with-libavcodec-libs=/usr/lib
+
+ make
+ ##############################################################################
+ # this imports the latest subtitleripper sources and replaces the internal
+ mkdir contrib
+ mv "${srcdir}/subtitleripper" contrib/subrip
+ # removes dependency on libppm, make it dependend on netpbm just failed, argh...
+ cd contrib/subrip
+ sed -e 's|^\(.*lppm.*\)$|#\1|' \
+ -e 's|^\(.*D_HAVE_LIB_PPM.*\)$|#\1|' \
+ -e 's/DEFINES :=/DEFINES = -DHAVE_GETLINE/' \
+ -i Makefile
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+
+ cd contrib/subrip
+ install -m 755 pgm2txt "${pkgdir}/usr/bin/"
+ install -m 755 srttool "${pkgdir}/usr/bin/"
+ install -m 755 subtitle2pgm "${pkgdir}/usr/bin/"
+ install -m 755 subtitle2vobsub "${pkgdir}/usr/bin/"
+ install -m 755 vobsub2pgm "${pkgdir}/usr/bin/"
+}
diff --git a/extra/transcode/transcode-1.1.5-jpeg-7.patch b/extra/transcode/transcode-1.1.5-jpeg-7.patch
new file mode 100644
index 000000000..288932a61
--- /dev/null
+++ b/extra/transcode/transcode-1.1.5-jpeg-7.patch
@@ -0,0 +1,16 @@
+http://bugs.gentoo.org/show_bug.cgi?id=294488
+
+Patch by: Salah Coronya
+
+Fix segmentation fault with jpeg-7 and above where dinfo.do_fancy_upsampling isn't set by default to FALSE anymore.
+
+--- export/export_jpg.c
++++ export/export_jpg.c
+@@ -91,6 +91,7 @@
+
+ jpeg_set_quality(&encinfo, quality, TRUE);
+ encinfo.raw_data_in = TRUE;
++ encinfo.do_fancy_downsampling = FALSE;
+ encinfo.in_color_space = JCS_YCbCr;
+
+ encinfo.comp_info[0].h_samp_factor = 2;
diff --git a/extra/transcode/transcode-1.1.5-mpa.patch b/extra/transcode/transcode-1.1.5-mpa.patch
new file mode 100644
index 000000000..e7fb0fc1c
--- /dev/null
+++ b/extra/transcode/transcode-1.1.5-mpa.patch
@@ -0,0 +1,10 @@
+--- transcode-1.1.5-old/export/aud_aux.c 2010-07-04 12:44:31.867550180 -0500
++++ transcode-1.1.5/export/aud_aux.c 2010-07-04 13:41:01.253292529 -0500
+@@ -347,6 +347,7 @@
+ //-- set parameters (bitrate, channels and sample-rate) --
+ //--------------------------------------------------------
+ memset(&mpa_ctx, 0, sizeof(mpa_ctx)); // default all
++ mpa_ctx.codec_type = CODEC_TYPE_AUDIO;
+ mpa_ctx.bit_rate = vob->mp3bitrate * 1000; // bitrate dest.
+ mpa_ctx.channels = vob->dm_chan; // channels
+ mpa_ctx.sample_rate = vob->a_rate;
diff --git a/extra/transfig/ChangeLog b/extra/transfig/ChangeLog
new file mode 100644
index 000000000..c303c33c0
--- /dev/null
+++ b/extra/transfig/ChangeLog
@@ -0,0 +1,36 @@
+2010-05-26 Jan de Groot <jgc@archlinux.org>
+ * transfig 3.2.5c-3
+ * Rebuilt for libpng 1.4.2, png_set_dither has been renamed
+
+2010-01-27 Eric Belanger <eric@archlinux.org>
+
+ * transfig 3.2.5c-2
+ * Rebuilt for libpng 1.4 and libjpeg 8
+
+2010-01-11 Eric Belanger <eric@archlinux.org>
+
+ * transfig 3.2.5c-1
+ * Upstream update
+ * Removed force option
+
+2009-08-12 Eric Belanger <eric@archlinux.org>
+
+ * transfig 3.2.5a-1
+ * Upstream update
+ * Added force option
+
+2009-03-21 Eric Belanger <eric@archlinux.org>
+
+ * transfig 3.2.5-2
+ * Removed uneeded stderr message (close FS#13825)
+
+2008-12-14 Eric Belanger <eric@archlinux.org>
+
+ * transfig 3.2.5-1
+ * Upstream update
+ * Added arch tag
+ * Added license
+ * Added imake makedepends
+ * Added man pages
+ * Removed old patches
+ * Added ChangeLog
diff --git a/extra/transfig/LICENSE b/extra/transfig/LICENSE
new file mode 100644
index 000000000..b944bb992
--- /dev/null
+++ b/extra/transfig/LICENSE
@@ -0,0 +1,23 @@
+/*
+ * TransFig: Facility for Translating Fig code
+ * Copyright (c) 1991 by Micah Beck
+ * Parts Copyright (c) 1985-1988 by Supoj Sutanthavibul
+ *
+ * Any party obtaining a copy of these files is granted, free of charge, a
+ * full and unrestricted irrevocable, world-wide, paid up, royalty-free,
+ * nonexclusive right and license to deal in this software and
+ * documentation files (the "Software"), including without limitation the
+ * rights to use, copy, modify, merge, publish and/or distribute copies of
+ * the Software, and to permit persons who receive copies from any such
+ * party to do so, with the only requirement being that this copyright
+ * notice remain intact.
+ *
+ */
+
+THE LAWRENCE BERKELEY NATIONAL LABORATORY DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS, IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY SPECIAL,
+INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
diff --git a/extra/transfig/PKGBUILD b/extra/transfig/PKGBUILD
new file mode 100644
index 000000000..6a223da76
--- /dev/null
+++ b/extra/transfig/PKGBUILD
@@ -0,0 +1,36 @@
+# $Id: PKGBUILD 81063 2010-05-26 10:19:14Z jgc $
+# Contributor: Eric Belanger <eric@archlinux.org>
+# Contributor: J. Santiago Hirschfeld <jsantiagoh@yahoo.com.ar>
+# Maintainer: Daniel J Griffiths <ghost1227@archlinux.us>
+
+pkgname=transfig
+pkgver=3.2.5c
+pkgrel=3
+pkgdesc="Format conversion utility that can be used with xfig"
+arch=('i686' 'x86_64')
+url="http://www.xfig.org"
+license=('custom')
+depends=('libpng' 'libxpm')
+makedepends=('imake')
+source=(http://downloads.sourceforge.net/mcj/${pkgname}.${pkgver}.tar.gz LICENSE)
+md5sums=('0cc55ed6b4ae67a3e610e501acd694f9' 'a0b2ea903821c46dbc77afefc06d1aa4')
+sha1sums=('20013b350e81400943cd91744173445d7bd4d98e' 'b8b712871615308b8b6add92f86d218437d652f2')
+
+build() {
+ cd ${srcdir}/${pkgname}.${pkgver}
+ sed -i 's/XCOMM USELATEX2E = -DLATEX2E/USELATEX2E = -DLATEX2E/' transfig/Imakefile || return 1
+ sed -i 's/XCOMM USEINLINE = -DUSE_INLINE/USEINLINE = -DUSE_INLINE/' fig2dev/Imakefile || return 1
+
+ xmkmf || return 1
+ make FIG2DEV_LIBDIR=/usr/share/fig2dev Makefiles || return 1
+ make FIG2DEV_LIBDIR=/usr/share/fig2dev XFIGLIBDIR=/usr/share/xfig || return 1
+}
+
+package() {
+ cd ${srcdir}/${pkgname}.${pkgver}
+
+ make DESTDIR=${pkgdir} XFIGLIBDIR=/usr/share/xfig \
+ FIG2DEV_LIBDIR=/usr/share/fig2dev MANPATH=/usr/share/man \
+ install install.man || return 1
+ install -Dm644 ../LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE || return 1
+}
diff --git a/extra/transmission/PKGBUILD b/extra/transmission/PKGBUILD
new file mode 100644
index 000000000..03f967d13
--- /dev/null
+++ b/extra/transmission/PKGBUILD
@@ -0,0 +1,74 @@
+# $Id: PKGBUILD 115693 2011-03-19 13:02:20Z ibiru $
+# Maintainer : Ionut Biru <ibiru@archlinux.org>
+
+pkgbase=transmission
+pkgname=('transmission-cli' 'transmission-gtk' 'transmission-qt')
+pkgver=2.22
+pkgrel=3
+arch=('i686' 'x86_64')
+url="http://www.transmissionbt.com/"
+license=('MIT')
+makedepends=('intltool' 'curl' 'libnotify' 'desktop-file-utils' 'qt' 'libevent' 'libcanberra' 'dbus-glib')
+source=(http://mirrors.m0k.org/transmission/files/${pkgbase}-${pkgver}.tar.bz2
+ transmissiond transmissiond.conf)
+md5sums=('6499986bf769276310b00bda1090090d'
+ '50b7c17300bc8b38f44fb6f681ba05d0'
+ 'be39806c35b7544856fa4070b00fc960')
+
+build() {
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+
+ export CFLAGS="$CFLAGS -fno-strict-aliasing"
+
+ ./configure --prefix=/usr --disable-gconf2
+ make
+ pushd qt
+ qmake qtr.pro
+ make
+}
+package_transmission-cli() {
+ pkgdesc="Fast, easy, and free BitTorrent client (CLI tools, daemon and web client)"
+ depends=('curl' 'libevent')
+ backup=('etc/conf.d/transmissiond')
+ install=transmission-cli.install
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+
+ for dir in daemon cli web utils
+ do
+ make -C "${dir}" DESTDIR="${pkgdir}" install
+ done
+
+ install -D -m755 "${srcdir}/transmissiond" "${pkgdir}/etc/rc.d/transmissiond"
+ install -D -m644 "${srcdir}/transmissiond.conf" "${pkgdir}/etc/conf.d/transmissiond"
+ install -D -m644 COPYING "${pkgdir}/usr/share/licenses/transmission-cli/COPYING"
+}
+
+package_transmission-gtk() {
+ pkgdesc="Fast, easy, and free BitTorrent client (GTK+ GUI)"
+ depends=('curl' 'libevent' 'libnotify' 'desktop-file-utils' 'hicolor-icon-theme'
+ 'gtk2' 'dbus-glib' 'libcanberra')
+ optdepends=('notification-daemon: Desktop notification support'
+ 'transmission-cli: daemon and web support')
+ install=transmission-gtk.install
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+
+ make -C gtk DESTDIR="${pkgdir}" install
+ make -C po DESTDIR="${pkgdir}" install
+ install -D -m644 COPYING "${pkgdir}/usr/share/licenses/transmission-gtk/COPYING"
+}
+
+package_transmission-qt() {
+ pkgdesc="Fast, easy, and free BitTorrent client (Qt GUI)"
+ depends=('curl' 'qt' 'libevent')
+ optdepends=('transmission-cli: daemon and web support')
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+
+ make -C qt INSTALL_ROOT="${pkgdir}"/usr install
+
+ install -D -m644 COPYING "${pkgdir}/usr/share/licenses/transmission-qt/COPYING"
+ install -D -m644 qt/icons/transmission.png "${pkgdir}/usr/share/pixmaps/transmission-qt.png"
+ install -D -m644 qt/transmission-qt.desktop "${pkgdir}/usr/share/applications/transmission-qt.desktop"
+}
diff --git a/extra/transmission/transmission-cli.install b/extra/transmission/transmission-cli.install
new file mode 100644
index 000000000..cb6bf6050
--- /dev/null
+++ b/extra/transmission/transmission-cli.install
@@ -0,0 +1,9 @@
+post_install() {
+ cat << _EOF
+
+ If you want to run the Transmission daemon at boot,
+ add transmissiond to the DAEMONS array in /etc/rc.conf.
+ You have to set the user in /etc/conf.d/transmissiond.
+
+_EOF
+}
diff --git a/extra/transmission/transmission-gtk.install b/extra/transmission/transmission-gtk.install
new file mode 100644
index 000000000..c317fbaca
--- /dev/null
+++ b/extra/transmission/transmission-gtk.install
@@ -0,0 +1,12 @@
+post_install() {
+ update-desktop-database -q
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/extra/transmission/transmissiond b/extra/transmission/transmissiond
new file mode 100644
index 000000000..ff83bd331
--- /dev/null
+++ b/extra/transmission/transmissiond
@@ -0,0 +1,37 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+. /etc/conf.d/transmissiond
+
+PID=`pidof -o %PPID /usr/bin/transmission-daemon`
+case "$1" in
+ start)
+ stat_busy "Starting Transmission Daemon"
+ [ -z "$PID" ] && su -l -s /bin/sh -c "/usr/bin/transmission-daemon $TRANS_ARGS" $TRANS_USER
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon transmissiond
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping Transmission Daemon"
+ [ ! -z "$PID" ] && kill $PID &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon transmissiond
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ while [ ! -z "$PID" -a -d "/proc/$PID" ]; do sleep 1; done
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
diff --git a/extra/transmission/transmissiond.conf b/extra/transmission/transmissiond.conf
new file mode 100644
index 000000000..cf6c6f26e
--- /dev/null
+++ b/extra/transmission/transmissiond.conf
@@ -0,0 +1,5 @@
+# example configuration file
+
+# TRANSMISSION_HOME=/home/foo
+# TRANS_USER="foo"
+# TRANS_ARGS="-g $TRANSMISSION_HOME/.config/transmission-daemon"
diff --git a/extra/trayer/PKGBUILD b/extra/trayer/PKGBUILD
new file mode 100644
index 000000000..5e67c6402
--- /dev/null
+++ b/extra/trayer/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: PKGBUILD 15775 2008-10-18 20:40:50Z eric $
+# Maintainer: Thayer Williams <thayer@archlinux.org>
+
+pkgname=trayer
+pkgver=1.0
+pkgrel=4
+pkgdesc="Swallows GTK 1.2/2.x application docklets, and KDE docklets."
+arch=('i686' 'x86_64')
+url="https://gna.org/projects/fvwm-crystal/"
+license=('GPL' 'MIT')
+depends=('gtk2' 'libxmu')
+options=('!makeflags')
+source=(http://download.gna.org/fvwm-crystal/trayer/$pkgver/$pkgname-$pkgver.tar.gz
+ trayer.diff)
+md5sums=('e1b0b6464f991f2c296561e377585867' '7f66eee885563871f9f76646bca6b14d')
+
+build() {
+ cd $startdir/src/$pkgname-$pkgver
+ patch -Np0 -i ${startdir}/src/trayer.diff || return 1
+ make || return 1
+ make PREFIX=$startdir/pkg/usr install
+ install -D -m644 COPYING $startdir/pkg/usr/share/licenses/$pkgname/LICENSE
+}
diff --git a/extra/trayer/trayer.diff b/extra/trayer/trayer.diff
new file mode 100644
index 000000000..469d249dc
--- /dev/null
+++ b/extra/trayer/trayer.diff
@@ -0,0 +1,22 @@
+ # This patchfile was courtesy of the Debian team. Thanks!
+--- Makefile.common
++++ Makefile.common~
+@@ -25,7 +25,7 @@
+ endif
+
+ # -DGTK_DISABLE_DEPRECATED does not work yet
+-CFLAGS += -DG_DISABLE_DEPRECATED -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED
++CFLAGS += -DG_DISABLE_DEPRECATED -DGDK_DISABLE_DEPRECATED
+
+ %.o: %.c
+ $(CC) $(CFLAGS) $(INCS) -c $<
+--- panel.c
++++ panel.c~
+@@ -588,7 +588,6 @@
+ printf(" --height <number>\n");
+ printf(" --SetDockType <true|false>\n");
+ printf(" --SetPartialStrut <true|false>\n");
+- printf(" --RoundCorners <true|false>\n");
+ printf(" --transparent <true|false>\n");
+ printf(" --alpha <number>\n");
+ printf(" --tint <int>\n");
diff --git a/extra/tree/PKGBUILD b/extra/tree/PKGBUILD
new file mode 100644
index 000000000..d221616d1
--- /dev/null
+++ b/extra/tree/PKGBUILD
@@ -0,0 +1,21 @@
+# $Id: PKGBUILD 64859 2010-01-22 13:47:51Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=tree
+pkgver=1.5.3
+pkgrel=1
+pkgdesc="A directory listing program displaying a depth indented list of files"
+arch=('i686' 'x86_64')
+url="http://mama.indstate.edu/users/ice/tree/"
+license=('GPL')
+depends=('glibc')
+source=(ftp://mama.indstate.edu/linux/tree/${pkgname}-${pkgver}.tgz)
+md5sums=('c07ce9065667a23f27aca4de8ecccb10')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ make || return 1
+ make prefix="${pkgdir}/usr" MANDIR="${pkgdir}/usr/share/man/man1" install || return 1
+}
diff --git a/extra/truecrypt/PKGBUILD b/extra/truecrypt/PKGBUILD
new file mode 100644
index 000000000..4c7d585ed
--- /dev/null
+++ b/extra/truecrypt/PKGBUILD
@@ -0,0 +1,40 @@
+# $Id: PKGBUILD 105442 2011-01-08 22:25:31Z paul $
+# Maintainer: Paul Mattal <paul.archlinux.org>
+
+pkgname=truecrypt
+pkgver=7.0a
+pkgrel=2
+pkgdesc="Free open-source cross-platform disk encryption software"
+url="http://www.truecrypt.org/"
+arch=('i686' 'x86_64')
+license=('custom') # TrueCrypt License v2.6
+depends=('fuse>=2.8.0' 'wxgtk>=2.8.9' 'libsm' 'device-mapper')
+optdepends=('sudo: mounting encrypted volumes as nonroot users')
+conflicts=('truecrypt-utils')
+replaces=('truecrypt-utils')
+options=('force')
+# N.B. Truecrypt's web-based source download is incompatible with
+# makepkg. Source has been placed on ftp.archlinux.org instead
+source=('ftp://ftp.archlinux.org/other/tc/truecrypt-7.0a.tar.gz' \
+ 'ftp://ftp.archlinux.org/other/tc/pkcs-2.20.tar.gz' \
+ "${pkgname}.desktop")
+
+build() {
+ export PKCS11_INC="${srcdir}/pkcs-2.20"
+
+ cd ${srcdir}/${pkgname}-${pkgver}-source || return 1
+ make || return 1
+
+ # Install Binary
+ install -D -m755 Main/${pkgname} ${pkgdir}/usr/bin/${pkgname} || return 1
+
+ # Install Desktop file and Icon
+ install -D -m644 ${srcdir}/${pkgname}.desktop ${pkgdir}/usr/share/applications/${pkgname}.desktop || return 1
+ install -D -m644 Resources/Icons/TrueCrypt-48x48.xpm ${pkgdir}/usr/share/pixmaps/truecrypt.xpm || return 1
+
+ # Install License
+ install -D -m644 License.txt ${pkgdir}/usr/share/licenses/${pkgname}/License.txt || return 1
+}
+md5sums=('0a61616bc5c5ad90e876b4014c004ac9'
+ 'ce6a707b79411e82e8e558aa03e764b0'
+ '183b9bf04a943454d4e216130bcbac01')
diff --git a/extra/truecrypt/truecrypt.desktop b/extra/truecrypt/truecrypt.desktop
new file mode 100644
index 000000000..53626f29f
--- /dev/null
+++ b/extra/truecrypt/truecrypt.desktop
@@ -0,0 +1,9 @@
+[Desktop Entry]
+Type=Application
+Exec=truecrypt
+Icon=truecrypt
+Comment=On-the-fly encryption
+Terminal=false
+Name=TrueCrypt
+StartupNotify=true
+Categories=System;
diff --git a/extra/tsocks/PKGBUILD b/extra/tsocks/PKGBUILD
new file mode 100644
index 000000000..0c65f8794
--- /dev/null
+++ b/extra/tsocks/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 111127 2011-02-24 08:00:08Z bisson $
+# Maintainer: Gaetan Bisson <bisson@archlinux.org>
+
+pkgname=tsocks
+pkgver=1.8beta5
+pkgrel=4
+pkgdesc='Transparent SOCKS proxying library'
+arch=('i686' 'x86_64')
+url='http://tsocks.sourceforge.net/'
+license=('GPL')
+source=("http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.gz")
+sha1sums=('489f88c5df999ba21b27cdaa7836d9426d062aec')
+
+build() {
+ cd "${srcdir}/${pkgname}-1.8"
+ ./configure --prefix=/usr --sysconfdir=/etc --mandir=/usr/share/man --libdir=/usr/lib
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-1.8"
+ make DESTDIR="${pkgdir}" install
+ install -d "${pkgdir}"/etc
+ install -m644 tsocks.conf.{simple,complex}.example "${pkgdir}"/etc
+}
diff --git a/extra/tumbler/PKGBUILD b/extra/tumbler/PKGBUILD
new file mode 100644
index 000000000..4df33bad0
--- /dev/null
+++ b/extra/tumbler/PKGBUILD
@@ -0,0 +1,33 @@
+# $Id: PKGBUILD 114612 2011-03-14 15:06:46Z jgc $
+# Maintainer: Andreas Radke <andyrtr@archlinux.org>
+# Contributor: Jan Jezek <honzin.jezek@gmail.com>
+
+pkgname=tumbler
+pkgver=0.1.21
+pkgrel=2
+pkgdesc="D-Bus service for applications to request thumbnails"
+url="http://git.xfce.org/xfce/tumbler/"
+license=('GPL2' 'LGPL')
+arch=('i686' 'x86_64')
+groups=('xfce4')
+depends=('poppler-glib' 'dbus-glib' 'ffmpegthumbnailer')
+makedepends=( 'intltool' 'gtk-doc')
+options=('!libtool')
+source=(http://archive.xfce.org/src/apps/${pkgname}/0.1/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('2ef0d30750f95efe345de4655049d4f6')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --libexecdir=/usr/lib/xfce4 \
+ --disable-static \
+ --disable-debug \
+ --enable-gtk-doc
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=$pkgdir install
+}
diff --git a/extra/tunepimp/PKGBUILD b/extra/tunepimp/PKGBUILD
new file mode 100644
index 000000000..a3fe45ed5
--- /dev/null
+++ b/extra/tunepimp/PKGBUILD
@@ -0,0 +1,46 @@
+# $Id: PKGBUILD 90474 2010-09-11 21:30:49Z andrea $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=tunepimp
+pkgver=0.5.3
+pkgrel=8
+pkgdesc="A development library geared towards developers who wish to create MusicBrainz enabled tagging applications (aka libtunepimp)"
+url="http://www.musicbrainz.org/products/tunepimp/"
+arch=('i686' 'x86_64')
+license=('GPL')
+options=('!libtool' '!makeflags')
+makedepends=('python2')
+depends=('curl' 'musicbrainz' 'zlib' 'libmad' 'flac' 'libvorbis' 'readline' 'libmpcdec' 'libofa' 'taglib' 'libmp4v2')
+replaces=('trm')
+source=(ftp://ftp.musicbrainz.org/pub/musicbrainz/lib${pkgname}-${pkgver}.tar.gz
+ tunepimp-gcc43.patch
+ gcc4.4.patch
+ mp4v2-1.9.patch)
+md5sums=('09649f983acef679a548344ba7a9bb2f'
+ '40f48ad658958b909909b204bf9b1367'
+ 'b325bf8ed98bc008611ece0c418642f8'
+ '9f41d473a07e13808762545772fe3435')
+
+ build() {
+ cd ${srcdir}/lib${pkgname}-${pkgver}
+ sed -i -e 's,-ltermcap,-lncurses,' configure
+ sed -i -e 's:-lthr:-lpthread:g' lib/threads/posix/Makefile.in
+ patch -Np0 -i ${srcdir}/tunepimp-gcc43.patch
+ patch -Np1 -i ${srcdir}/gcc4.4.patch
+ patch -Np1 -i ${srcdir}/mp4v2-1.9.patch
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd ${srcdir}/lib${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+
+ # install python bindings
+ cd python
+ python2 setup.py install --root=${pkgdir}
+
+ # fix includes for kdemultimedia
+ cd ${pkgdir}/usr/include
+ ln -s tunepimp-0.5 tunepimp
+}
diff --git a/extra/tunepimp/gcc4.4.patch b/extra/tunepimp/gcc4.4.patch
new file mode 100644
index 000000000..2c5e4f9db
--- /dev/null
+++ b/extra/tunepimp/gcc4.4.patch
@@ -0,0 +1,13 @@
+diff -ruN libtunepimp-0.5.3.orig/lib/fileio.cpp libtunepimp-0.5.3/lib/fileio.cpp
+--- libtunepimp-0.5.3.orig/lib/fileio.cpp 2009-05-28 11:49:43.000000000 -0700
++++ libtunepimp-0.5.3/lib/fileio.cpp 2009-05-28 11:59:05.000000000 -0700
+@@ -124,7 +124,8 @@
+
+ void tmktempname(const char *path, char *newPath, int newPathLen)
+ {
+- char *ptr, *temp;
++ const char *ptr;
++ char *temp;
+
+ temp = (char *)malloc(strlen(path) + 32);
+ ptr = strrchr(path, dirSepChar);
diff --git a/extra/tunepimp/mp4v2-1.9.patch b/extra/tunepimp/mp4v2-1.9.patch
new file mode 100644
index 000000000..ec3ec7261
--- /dev/null
+++ b/extra/tunepimp/mp4v2-1.9.patch
@@ -0,0 +1,30 @@
+diff -ur libtunepimp-0.5.3.orig/plugins/mp4/mp4.cpp libtunepimp-0.5.3/plugins/mp4/mp4.cpp
+--- libtunepimp-0.5.3.orig/plugins/mp4/mp4.cpp 2009-07-10 15:50:20.000000000 +0300
++++ libtunepimp-0.5.3/plugins/mp4/mp4.cpp 2009-07-10 15:51:18.000000000 +0300
+@@ -28,7 +28,7 @@
+ #include <string.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+-#include <mp4.h>
++#include <mp4v2/mp4v2.h>
+ #include "metadata.h"
+ #include "plugin.h"
+ #ifndef WIN32
+@@ -232,7 +232,7 @@
+
+ strcpy(mdata->fileFormat, fileName + strlen(fileName) - 3);
+
+- if (!MP4Close(mp4file))
++ MP4Close(mp4file);
+ return 0;
+
+ return 1;
+@@ -316,7 +316,7 @@
+ sprintf(temp, "%d", mdata->nonAlbum);
+ MP4SetMetadataFreeForm(mp4file, "MusicBrainz Non-Album", (u_int8_t *)temp, strlen(temp) + 1);
+
+- if (!MP4Close(mp4file))
++ MP4Close(mp4file);
+ return 0;
+
+ #ifndef WIN32
diff --git a/extra/tunepimp/tunepimp-gcc43.patch b/extra/tunepimp/tunepimp-gcc43.patch
new file mode 100644
index 000000000..e6d2a83e8
--- /dev/null
+++ b/extra/tunepimp/tunepimp-gcc43.patch
@@ -0,0 +1,145 @@
+diff -up lib/metadata.cpp.gcc43 lib/metadata.cpp
+--- lib/metadata.cpp.gcc43 2006-11-18 04:52:33.000000000 -0600
++++ lib/metadata.cpp 2008-02-21 20:39:10.000000000 -0600
+@@ -26,6 +26,7 @@
+ ----------------------------------------------------------------------------*/
+ #include <math.h>
+ #include <stdio.h>
++#include <stdlib.h>
+ #include "metadata.h"
+ #include "../config.h"
+ using namespace std;
+diff -up lib/protocol.cpp.gcc43 lib/protocol.cpp
+--- lib/protocol.cpp.gcc43 2006-11-28 14:25:04.000000000 -0600
++++ lib/protocol.cpp 2008-02-21 20:39:10.000000000 -0600
+@@ -8,6 +8,7 @@
+ -------------------------------------------------------------------*/
+ #include <stdio.h>
+ #include <stdlib.h>
++#include <string.h>
+ #include <string>
+ #include <map>
+ #include <expat.h>
+diff -up lib/utf8/utf8util.cpp.gcc43 lib/utf8/utf8util.cpp
+--- lib/utf8/utf8util.cpp.gcc43 2006-11-18 04:52:26.000000000 -0600
++++ lib/utf8/utf8util.cpp 2008-02-21 20:39:10.000000000 -0600
+@@ -26,6 +26,7 @@
+ ----------------------------------------------------------------------------*/
+
+ #include <stdio.h>
++#include <stdlib.h>
+ #include "utf8util.h"
+ #include "utf8.h"
+ #ifdef WIN32
+diff -up lib/tunepimp.cpp.gcc43 lib/tunepimp.cpp
+--- lib/tunepimp.cpp.gcc43 2006-11-18 04:52:33.000000000 -0600
++++ lib/tunepimp.cpp 2008-02-21 20:39:10.000000000 -0600
+@@ -30,7 +30,9 @@
+ #endif
+ #endif
+
++#include <string.h>
+ #include <stdio.h>
++#include <stdlib.h>
+ #include <map>
+ using namespace std;
+
+diff -up lib/c_wrapper.cpp.gcc43 lib/c_wrapper.cpp
+--- lib/c_wrapper.cpp.gcc43 2006-11-18 04:52:33.000000000 -0600
++++ lib/c_wrapper.cpp 2008-02-21 20:39:10.000000000 -0600
+@@ -24,6 +24,7 @@
+ $Id: tunepimp-0.5.3-gcc43.patch,v 1.1 2008/04/07 05:49:36 philantrop Exp $
+
+ ----------------------------------------------------------------------------*/
++#include <stdlib.h>
+ #include "tunepimp.h"
+ #include "mutex.h"
+ #include "tp_c.h"
+diff -up lib/readmeta.cpp.gcc43 lib/readmeta.cpp
+--- lib/readmeta.cpp.gcc43 2006-11-18 04:52:33.000000000 -0600
++++ lib/readmeta.cpp 2008-02-21 20:39:10.000000000 -0600
+@@ -31,6 +31,7 @@
+ #endif
+
+ #include <stdio.h>
++#include <stdlib.h>
+ #ifndef WIN32
+ #include <unistd.h>
+ #endif
+diff -up lib/fileio.cpp.gcc43 lib/fileio.cpp
+--- lib/fileio.cpp.gcc43 2006-11-18 04:52:33.000000000 -0600
++++ lib/fileio.cpp 2008-02-21 20:39:10.000000000 -0600
+@@ -27,6 +27,8 @@
+
+ #include <assert.h>
+ #include <errno.h>
++#include <stdlib.h>
++#include <string.h>
+ #include <string>
+ #ifndef WIN32
+ #include <unistd.h>
+diff -up plugins/mp4/mp4.cpp.gcc43 plugins/mp4/mp4.cpp
+--- plugins/mp4/mp4.cpp.gcc43 2006-11-18 04:51:08.000000000 -0600
++++ plugins/mp4/mp4.cpp 2008-02-21 20:39:10.000000000 -0600
+@@ -27,6 +27,7 @@
+
+ #include <string.h>
+ #include <stdio.h>
++#include <stdlib.h>
+ #include <mp4.h>
+ #include "metadata.h"
+ #include "plugin.h"
+diff -up plugins/mp3/id3_meta.cpp.gcc43 plugins/mp3/id3_meta.cpp
+--- plugins/mp3/id3_meta.cpp.gcc43 2006-11-18 04:51:07.000000000 -0600
++++ plugins/mp3/id3_meta.cpp 2008-02-21 20:41:35.000000000 -0600
+@@ -26,6 +26,7 @@
+ ----------------------------------------------------------------------------*/
+
+ #include <stdio.h>
++#include <stdlib.h>
+ #include <time.h>
+ #include <ctype.h>
+ #include <musicbrainz/mb_c.h>
+diff -up plugins/mp3/id3_2_3_meta.cpp.gcc43 plugins/mp3/id3_2_3_meta.cpp
+--- plugins/mp3/id3_2_3_meta.cpp.gcc43 2006-11-18 04:51:07.000000000 -0600
++++ plugins/mp3/id3_2_3_meta.cpp 2008-02-21 20:41:59.000000000 -0600
+@@ -26,6 +26,7 @@
+ ----------------------------------------------------------------------------*/
+
+ #include <stdio.h>
++#include <stdlib.h>
+ #include <assert.h>
+ #include <ctype.h>
+ #include <musicbrainz/mb_c.h>
+diff -up plugins/wma/wma.cpp.gcc43 plugins/wma/wma.cpp
+--- plugins/wma/wma.cpp.gcc43 2006-11-18 04:51:28.000000000 -0600
++++ plugins/wma/wma.cpp 2008-02-21 20:39:10.000000000 -0600
+@@ -27,6 +27,7 @@
+
+ #include <string.h>
+ #include <stdio.h>
++#include <stdlib.h>
+ #include <wmafile.h>
+ #include "metadata.h"
+ #include "plugin.h"
+diff -up plugins/wma/wmafile.cpp.gcc43 plugins/wma/wmafile.cpp
+--- plugins/wma/wmafile.cpp.gcc43 2006-11-18 04:51:28.000000000 -0600
++++ plugins/wma/wmafile.cpp 2008-02-21 20:39:10.000000000 -0600
+@@ -19,6 +19,7 @@
+ * USA *
+ ***************************************************************************/
+
++#include <string.h>
+ #include <tstring.h>
+ #include <wmafile.h>
+ #include <wmatag.h>
+diff -up include/tunepimp-0.5/metadata.h.gcc43 include/tunepimp-0.5/metadata.h
+--- include/tunepimp-0.5/metadata.h.gcc43 2006-11-18 04:52:08.000000000 -0600
++++ include/tunepimp-0.5/metadata.h 2008-02-21 20:39:10.000000000 -0600
+@@ -27,6 +27,7 @@
+ #ifndef __METADATA_H__
+ #define __METADATA_H__
+
++#include <string.h>
+ #include <string>
+ #include <cstdio> \ No newline at end of file
diff --git a/extra/tuxpuck/PKGBUILD b/extra/tuxpuck/PKGBUILD
new file mode 100644
index 000000000..bbd316b5d
--- /dev/null
+++ b/extra/tuxpuck/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id: PKGBUILD 63695 2010-01-18 10:38:26Z andrea $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=tuxpuck
+pkgver=0.8.2
+pkgrel=4
+pkgdesc="Airhockey with tux"
+arch=('i686' 'x86_64')
+url="http://home.no.net/munsuun/tuxpuck/"
+license=('GPL2')
+depends=('libjpeg>=8' 'sdl' 'libpng>=1.4.0' 'libvorbis')
+makedepends=('freetype2')
+options=('!makeflags')
+source=(http://ftp.de.debian.org/debian/pool/main/t/${pkgname}/${pkgname}_$pkgver.orig.tar.gz)
+md5sums=('fc839abc2b1f3eafae397e1ed6487079')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ sed -i 's|usr/man|usr/share/man|' Makefile || return 1
+ make || return 1
+ make DESTDIR=$pkgdir install || return 1
+}
diff --git a/extra/twisted/4771.diff b/extra/twisted/4771.diff
new file mode 100644
index 000000000..4e36f2632
--- /dev/null
+++ b/extra/twisted/4771.diff
@@ -0,0 +1,22 @@
+Index: twisted/words/protocols/jabber/jstrports.py
+===================================================================
+--- twisted/words/protocols/jabber/jstrports.py (revision 30346)
++++ twisted/words/protocols/jabber/jstrports.py (working copy)
+@@ -6,7 +6,7 @@
+ """ A temporary placeholder for client-capable strports, until we
+ sufficient use cases get identified """
+
+-from twisted.application import strports
++from twisted.internet.endpoints import _parse
+
+ def _parseTCPSSL(factory, domain, port):
+ """ For the moment, parse TCP or SSL connections the same """
+@@ -22,7 +22,7 @@
+
+
+ def parse(description, factory):
+- args, kw = strports._parse(description)
++ args, kw = _parse(description)
+ return (args[0].upper(),) + _funcs[args[0]](factory, *args[1:], **kw)
+
+ def client(description, factory):
diff --git a/extra/twisted/PKGBUILD b/extra/twisted/PKGBUILD
new file mode 100644
index 000000000..14991ddb8
--- /dev/null
+++ b/extra/twisted/PKGBUILD
@@ -0,0 +1,33 @@
+# $Id: PKGBUILD 107380 2011-01-24 14:03:19Z ibiru $
+# Maintainer : Ionut Biru <ibiru@archlinux.org>
+# Contributor: Juergen Hoetzel <juergen@archlinux.org>
+# Contributor: Douglas Soares de Andrade <douglas@archlinux.org>
+
+pkgname=twisted
+pkgver=10.2.0
+pkgrel=3
+pkgdesc="Asynchronous networking framework written in Python."
+arch=('i686' 'x86_64')
+url="http://twistedmatrix.com/"
+license=('MIT')
+depends=('python2' 'pycrypto' 'zope-interface')
+optdepends=('python2-pyopenssl'
+ 'python-soappy:for twisted.web.soap')
+install=twisted.install
+source=(http://tmrc.mit.edu/mirror/twisted/Twisted/${pkgver%.*}/Twisted-${pkgver}.tar.bz2
+ 4771.diff)
+md5sums=('73da62c793269eade8121da336b01ba5'
+ '087ed6149abca43919dcece24ba222ab')
+build() {
+ cd "${srcdir}/Twisted-${pkgver}"
+ #http://twistedmatrix.com/trac/ticket/4771
+ patch -Np0 -i ${srcdir}/4771.diff
+
+ python2 setup.py install --prefix=/usr --root=${pkgdir} --optimize=1
+ install -D -m644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+
+ sed -e 's|#!/usr/bin/env python|#!/usr/bin/env python2|' \
+ -i ${pkgdir}/usr/lib/python2.7/site-packages/twisted/trial/test/scripttest.py
+ sed -e 's|#!/usr/bin/env python|#!/usr/bin/env python2|' \
+ -i ${pkgdir}/usr/lib/python2.7/site-packages/twisted/mail/test/pop3testserver.py
+}
diff --git a/extra/twisted/twisted.install b/extra/twisted/twisted.install
new file mode 100644
index 000000000..8e93ffd3c
--- /dev/null
+++ b/extra/twisted/twisted.install
@@ -0,0 +1,11 @@
+post_install() {
+ python2 -c 'from twisted.plugin import IPlugin, getPlugins; list(getPlugins(IPlugin))' >/dev/null 2>&1 || return 1
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ find /usr/lib/python2.7/site-packages/twisted/plugins -name dropin.cache | xargs -r rm -f
+}
diff --git a/extra/udisks/PKGBUILD b/extra/udisks/PKGBUILD
new file mode 100644
index 000000000..ea7e1bc7a
--- /dev/null
+++ b/extra/udisks/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 106693 2011-01-17 23:18:27Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=udisks
+pkgver=1.0.2
+pkgrel=2
+pkgdesc="Disk Management Service"
+arch=('i686' 'x86_64')
+url="http://www.freedesktop.org/wiki/Software/udisks"
+license=('GPL')
+depends=('udev>=164' 'sg3_utils>=1.29' 'glib2>=2.26.1' 'dbus-glib>=0.92' 'polkit>=0.98' 'parted>=2.3' 'device-mapper>=2.02.77' 'libatasmart>=0.17' 'lsof' 'lvm2>=2.02.77' 'eject')
+makedepends=('intltool' 'docbook-xsl')
+options=(!libtool)
+replaces=('devicekit-disks')
+source=(http://hal.freedesktop.org/releases/${pkgname}-${pkgver}.tar.gz)
+sha256sums=('7dc1a150a6a31b2727144603fa5a8f9852696fc5bdc4a11917b9b0f1b8e3dcf1')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \
+ --libexecdir=/usr/lib/udisks --disable-static
+ #fix location for bash_completion helper
+ sed -i -e 's|profile.d|bash_completion.d|' tools/Makefile
+
+ make
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/uim/PKGBUILD b/extra/uim/PKGBUILD
new file mode 100644
index 000000000..fb26f8a91
--- /dev/null
+++ b/extra/uim/PKGBUILD
@@ -0,0 +1,37 @@
+# $Id: PKGBUILD 109572 2011-02-10 20:32:59Z bisson $
+# Maintainer: damir <damir@archlinux.org>
+
+pkgname=uim
+pkgver=1.6.1
+pkgrel=2
+pkgdesc='Multilingual input method library'
+arch=('i686' 'x86_64')
+url='http://code.google.com/p/uim/'
+license=('custom')
+depends=('gtk2' 'libxft' 'libedit' 'anthy' 'm17n-lib')
+makedepends=('intltool' 'gettext' 'gnome-panel')
+optdepends=('gnome-panel: gnome applet indicator')
+options=('!libtool')
+source=("http://uim.googlecode.com/files/${pkgname}-${pkgver}.tar.bz2"
+ 'home.patch')
+sha1sums=('412bb2df6041185084e2f64fb73357389bf992b5'
+ 'dbcf90f3ea246c5723d715e0935072baa9364cd2')
+
+install=install
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ # UIM's Makefile needs to write in $HOME
+ patch -p0 < ../home.patch; export HOME="`pwd`"
+
+ ./configure --prefix=/usr --libexecdir=/usr/lib/uim \
+ --with-anthy-utf8
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+ install -D -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/COPYING"
+}
diff --git a/extra/uim/home.patch b/extra/uim/home.patch
new file mode 100644
index 000000000..5d171529d
--- /dev/null
+++ b/extra/uim/home.patch
@@ -0,0 +1,24 @@
+diff -aur uim/uim-helper.c uim/uim-helper.c
+--- uim/uim-helper.c 2010-08-22 19:23:37.646666698 +0200
++++ uim/uim-helper.c 2010-08-22 19:26:57.676666781 +0200
+@@ -178,7 +178,7 @@
+ goto path_error;
+ }
+
+- if (strlcpy(helper_path, pw->pw_dir, len) >= (size_t)len) {
++ if (strlcpy(helper_path, getenv("HOME"), len) >= (size_t)len) {
+ endpwent();
+ goto path_error;
+ }
+diff -aur uim/uim-posix.c uim/uim-posix.c
+--- uim/uim-posix.c 2010-08-22 19:23:37.650000031 +0200
++++ uim/uim-posix.c 2010-08-22 19:26:40.096666322 +0200
+@@ -100,7 +100,7 @@
+ home[0] = '\0';
+ return UIM_FALSE;
+ }
+- if (strlcpy(home, pw->pw_dir, len) >= (size_t)len) {
++ if (strlcpy(home, getenv("HOME"), len) >= (size_t)len) {
+ home[0] = '\0';
+ endpwent();
+ return UIM_FALSE;
diff --git a/extra/uim/install b/extra/uim/install
new file mode 100644
index 000000000..ffed34d01
--- /dev/null
+++ b/extra/uim/install
@@ -0,0 +1,13 @@
+post_install() {
+ echo -n "updating gtk.immodules... "
+ usr/bin/gtk-query-immodules-2.0 > etc/gtk-2.0/gtk.immodules
+ echo "done."
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/extra/umfpack/PKGBUILD b/extra/umfpack/PKGBUILD
new file mode 100644
index 000000000..b37f17f42
--- /dev/null
+++ b/extra/umfpack/PKGBUILD
@@ -0,0 +1,58 @@
+# $Id: PKGBUILD 16363 2010-04-29 09:59:57Z ronald $
+# Maintainer: Ronald van Haren <ronald.archlinux.org>
+# Contributor: Sergej Pupykin <pupykin.s+arch@gmail.com>
+# Contributor: iKevin <kellwood at ameritech dot net>
+
+pkgname=umfpack
+pkgver=5.5.0
+_ufcfgver=3.5.0
+_amdver=2.2.1
+_cholmodver=1.7.1
+_colamdver=2.7.2
+_ccolamdver=2.7.2
+pkgrel=1
+pkgdesc="A multifrontal direct solver for unsymmetric linear systems (AMD/${_amdver}, UFConfig/${_ufcgfgver})"
+arch=('i686' 'x86_64')
+url="http://www.cise.ufl.edu/research/sparse/umfpack"
+license=('LGPL')
+makedepends=('lapack' 'blas')
+noextract=(CHOLMOD-${_cholmodver}.tar.gz
+ COLAMD-${_colamdver}.tar.gz
+ CCOLAMD-${_ccolamdver}.tar.gz)
+source=(http://www.cise.ufl.edu/research/sparse/umfpack/UMFPACK-$pkgver.tar.gz
+ http://www.cise.ufl.edu/research/sparse/UFconfig/UFconfig-${_ufcfgver}.tar.gz
+ http://www.cise.ufl.edu/research/sparse/amd/AMD-${_amdver}.tar.gz
+ http://www.cise.ufl.edu/research/sparse/cholmod/CHOLMOD-${_cholmodver}.tar.gz
+ http://www.cise.ufl.edu/research/sparse/colamd/COLAMD-${_colamdver}.tar.gz
+ http://www.cise.ufl.edu/research/sparse/ccolamd/CCOLAMD-${_ccolamdver}.tar.gz
+ UFconfig.mk)
+md5sums=('b3490d4f529fbcf4f415e60aa2680a15'
+ '4335ee565feec67e8ba9fc0f6a5e2504'
+ '25548053958c1c5810b17d077b8f37b9'
+ '9032c5724bee43ccd8f4546338a29fac'
+ '2b4e43c8ef33dacfade6d1ec49542ac1'
+ '79d813d5b54951060fc264172bfb5ca6'
+ 'ce9731da58d58923a3cdc3fbef724c4e')
+
+build() {
+ cd "$srcdir/UMFPACK"
+ cp -rf "$srcdir/UFconfig/xerbla" .
+ cp -L ../UFconfig.mk $startdir/src/UFconfig
+ [ $CARCH == "x86_64" ] && sed -i 's#CFLAGS = -O3 -fexceptions#CFLAGS = -O3 -fexceptions -fPIC#' $srcdir/UFconfig/UFconfig.mk
+ make library || return 1
+ install -d "$pkgdir/usr/lib" "$pkgdir/usr/include"
+
+ install -D -m644 Lib/libumfpack.a "$pkgdir/usr/lib/libumfpack.a"
+ cp $startdir/src/UMFPACK/Include/*.h $startdir/pkg/usr/include
+
+ install -D -m644 "$srcdir/AMD/Lib/libamd.a" "$pkgdir/usr/lib/libamd.a"
+ cp $startdir/src/AMD/Include/*.h $startdir/pkg/usr/include
+
+ install -m644 "$srcdir/UFconfig/UFconfig.h" "$pkgdir/usr/include" || return 1
+
+ # Fix permissions
+ cd $startdir/pkg/usr/include
+ chmod oug+r *
+ cd $startdir/pkg/usr/lib
+ chmod oug+r *
+}
diff --git a/extra/umfpack/UFconfig.mk b/extra/umfpack/UFconfig.mk
new file mode 100644
index 000000000..209be5bd0
--- /dev/null
+++ b/extra/umfpack/UFconfig.mk
@@ -0,0 +1,351 @@
+#===============================================================================
+# UFconfig.mk: common configuration file for the SuiteSparse
+#===============================================================================
+
+# This file contains all configuration settings for all packages authored or
+# co-authored by Tim Davis at the University of Florida:
+#
+# Package Version Description
+# ------- ------- -----------
+# AMD 1.2 or later approximate minimum degree ordering
+# COLAMD 2.4 or later column approximate minimum degree ordering
+# CCOLAMD 1.0 or later constrained column approximate minimum degree ordering
+# CAMD any constrained approximate minimum degree ordering
+# UMFPACK 4.5 or later sparse LU factorization, with the BLAS
+# CHOLMOD any sparse Cholesky factorization, update/downdate
+# KLU 0.8 or later sparse LU factorization, BLAS-free
+# BTF 0.8 or later permutation to block triangular form
+# LDL 1.2 or later concise sparse LDL'
+# LPDASA any linear program solve (dual active set algorithm)
+# CXSparse any extended version of CSparse (int/long, real/complex)
+# SuiteSparseQR any sparse QR factorization
+#
+# The UFconfig directory and the above packages should all appear in a single
+# directory, in order for the Makefile's within each package to find this file.
+#
+# To enable an option of the form "# OPTION = ...", edit this file and
+# delete the "#" in the first column of the option you wish to use.
+
+#------------------------------------------------------------------------------
+# Generic configuration
+#------------------------------------------------------------------------------
+
+# C compiler and compiler flags: These will normally not give you optimal
+# performance. You should select the optimization parameters that are best
+# for your system. On Linux, use "CFLAGS = -O3 -fexceptions" for example.
+CC = cc
+ CFLAGS = -O (for example; see below for details)
+
+# C++ compiler (also uses CFLAGS)
+CPLUSPLUS = g++
+
+# ranlib, and ar, for generating libraries
+RANLIB = ranlib
+AR = ar cr
+
+# delete and rename a file
+RM = rm -f
+MV = mv -f
+
+# Fortran compiler (not normally required)
+F77 = gfortran
+F77FLAGS = -O3
+F77LIB =
+
+# C and Fortran libraries
+LIB = -lm
+
+# For compiling MATLAB mexFunctions (MATLAB 7.5 or later)
+MEX = mex -O -largeArrayDims -lmwlapack -lmwblas
+
+# For compiling MATLAB mexFunctions (MATLAB 7.3 and 7.4)
+# MEX = mex -O -largeArrayDims -lmwlapack
+
+# For MATLAB 7.2 or earlier, you must use one of these options:
+# MEX = mex -O -lmwlapack
+# MEX = mex -O
+
+# Which version of MAKE you are using (default is "make")
+# MAKE = make
+# MAKE = gmake
+
+#------------------------------------------------------------------------------
+# BLAS and LAPACK configuration:
+#------------------------------------------------------------------------------
+
+# UMFPACK and CHOLMOD both require the BLAS. CHOLMOD also requires LAPACK.
+# See Kazushige Goto's BLAS at http://www.cs.utexas.edu/users/flame/goto/ or
+# http://www.tacc.utexas.edu/~kgoto/ for the best BLAS to use with CHOLMOD.
+# LAPACK is at http://www.netlib.org/lapack/ . You can use the standard
+# Fortran LAPACK along with Goto's BLAS to obtain very good performance.
+# CHOLMOD gets a peak numeric factorization rate of 3.6 Gflops on a 3.2 GHz
+# Pentium 4 (512K cache, 4GB main memory) with the Goto BLAS, and 6 Gflops
+# on a 2.5Ghz dual-core AMD Opteron.
+
+# These settings will probably not work, since there is no fixed convention for
+# naming the BLAS and LAPACK library (*.a or *.so) files.
+
+# Using the Goto BLAS:
+# BLAS = -lgoto -lgfortran -lgfortranbegin -lg2c
+
+# This is probably slow ... it might connect to the Standard Reference BLAS:
+BLAS = -Lusr/lib -lblas -lgfortran -lgfortranbegin
+LAPACK = -llapack
+
+# Using non-optimized versions:
+# BLAS = -lblas_plain -lgfortran -lgfortranbegin -lg2c
+# LAPACK = -llapack_plain
+
+# The BLAS might not contain xerbla, an error-handling routine for LAPACK and
+# the BLAS. Also, the standard xerbla requires the Fortran I/O library, and
+# stops the application program if an error occurs. A C version of xerbla
+# distributed with this software (UFconfig/xerbla/libcerbla.a) includes a
+# Fortran-callable xerbla routine that prints nothing and does not stop the
+# application program. This is optional.
+# XERBLA = ../../UFconfig/xerbla/libcerbla.a
+
+# If you wish to use the XERBLA in LAPACK and/or the BLAS instead,
+# use this option:
+XERBLA =
+
+# If you wish to use the Fortran UFconfig/xerbla/xerbla.f instead, use this:
+# XERBLA = ../../UFconfig/xerbla/libxerbla.a
+
+#------------------------------------------------------------------------------
+# METIS, optionally used by CHOLMOD
+#------------------------------------------------------------------------------
+
+# If you do not have METIS, or do not wish to use it in CHOLMOD, you must
+# compile CHOLMOD with the -DNPARTITION flag. You must also use the
+# "METIS =" option, below.
+
+# The path is relative to where it is used, in CHOLMOD/Lib, CHOLMOD/MATLAB, etc.
+# You may wish to use an absolute path. METIS is optional. Compile
+# CHOLMOD with -DNPARTITION if you do not wish to use METIS.
+METIS_PATH = ../../metis-4.0
+METIS = ../../metis-4.0/libmetis.a
+
+# If you use CHOLMOD_CONFIG = -DNPARTITION then you must use the following
+# options:
+# METIS_PATH =
+# METIS =
+
+#------------------------------------------------------------------------------
+# UMFPACK configuration:
+#------------------------------------------------------------------------------
+
+# Configuration flags for UMFPACK. See UMFPACK/Source/umf_config.h for details.
+#
+# -DNBLAS do not use the BLAS. UMFPACK will be very slow.
+# -D'LONGBLAS=long' or -DLONGBLAS='long long' defines the integers used by
+# LAPACK and the BLAS (defaults to 'int')
+# -DNSUNPERF do not use the Sun Perf. Library (default is use it on Solaris)
+# -DNPOSIX do not use POSIX routines sysconf and times.
+# -DGETRUSAGE use getrusage
+# -DNO_TIMER do not use any timing routines
+# -DNRECIPROCAL do not multiply by the reciprocal
+# -DNO_DIVIDE_BY_ZERO do not divide by zero
+
+UMFPACK_CONFIG =
+
+#------------------------------------------------------------------------------
+# CHOLMOD configuration
+#------------------------------------------------------------------------------
+
+# CHOLMOD Library Modules, which appear in libcholmod.a:
+# Core requires: none
+# Check requires: Core
+# Cholesky requires: Core, AMD, COLAMD. optional: Partition, Supernodal
+# MatrixOps requires: Core
+# Modify requires: Core
+# Partition requires: Core, CCOLAMD, METIS. optional: Cholesky
+# Supernodal requires: Core, BLAS, LAPACK
+#
+# CHOLMOD test/demo Modules (all are GNU GPL, do not appear in libcholmod.a):
+# Tcov requires: Core, Check, Cholesky, MatrixOps, Modify, Supernodal
+# optional: Partition
+# Valgrind same as Tcov
+# Demo requires: Core, Check, Cholesky, MatrixOps, Supernodal
+# optional: Partition
+#
+# Configuration flags:
+# -DNCHECK do not include the Check module. License GNU LGPL
+# -DNCHOLESKY do not include the Cholesky module. License GNU LGPL
+# -DNPARTITION do not include the Partition module. License GNU LGPL
+# also do not include METIS.
+# -DNGPL do not include any GNU GPL Modules in the CHOLMOD library:
+# -DNMATRIXOPS do not include the MatrixOps module. License GNU GPL
+# -DNMODIFY do not include the Modify module. License GNU GPL
+# -DNSUPERNODAL do not include the Supernodal module. License GNU GPL
+#
+# -DNPRINT do not print anything.
+# -D'LONGBLAS=long' or -DLONGBLAS='long long' defines the integers used by
+# LAPACK and the BLAS (defaults to 'int')
+# -DNSUNPERF for Solaris only. If defined, do not use the Sun
+# Performance Library
+
+CHOLMOD_CONFIG =
+
+#------------------------------------------------------------------------------
+# SuiteSparseQR configuration:
+#------------------------------------------------------------------------------
+
+# The SuiteSparseQR library can be compiled with the following options:
+#
+# -DNPARTITION do not include the CHOLMOD partition module
+# -DNEXPERT do not include the functions in SuiteSparseQR_expert.cpp
+# -DTIMING enable timing and flop counts
+# -DHAVE_TBB enable the use of Intel's Threading Building Blocks (TBB)
+
+# default, without timing, without TBB:
+SPQR_CONFIG =
+# with timing and TBB:
+# SPQR_CONFIG = -DTIMING -DHAVE_TBB
+# with timing
+# SPQR_CONFIG = -DTIMING
+
+# with TBB, you must select this:
+# TBB = -ltbb
+# without TBB:
+TBB =
+
+# with timing, you must include the timing library:
+# RTLIB = -lrt
+# without timing
+RTLIB =
+
+#------------------------------------------------------------------------------
+# Linux
+#------------------------------------------------------------------------------
+
+# Using default compilers:
+# CC = gcc
+CFLAGS = -O3 -fexceptions -DNCHOLMOD
+
+# alternatives:
+# CFLAGS = -g -fexceptions \
+ -Wall -W -Wshadow -Wmissing-prototypes -Wstrict-prototypes \
+ -Wredundant-decls -Wnested-externs -Wdisabled-optimization -ansi
+# CFLAGS = -O3 -fexceptions \
+ -Wall -W -Werror -Wshadow -Wmissing-prototypes -Wstrict-prototypes \
+ -Wredundant-decls -Wnested-externs -Wdisabled-optimization -ansi
+# CFLAGS = -O3 -fexceptions -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE
+# CFLAGS = -O3
+# CFLAGS = -O3 -g -fexceptions
+
+# consider:
+# -fforce-addr -fmove-all-movables -freduce-all-givs -ftsp-ordering
+# -frename-registers -ffast-math -funroll-loops
+
+# Using the Goto BLAS:
+# BLAS = -lgoto -lfrtbegin -lg2c $(XERBLA) -lpthread
+
+# Using Intel's icc and ifort compilers:
+# (does not work for mexFunctions unless you add a mexopts.sh file)
+# F77 = ifort
+# CC = icc
+# CFLAGS = -O3 -xN -vec_report=0
+# CFLAGS = -g
+# old (broken): CFLAGS = -ansi -O3 -ip -tpp7 -xW -vec_report0
+
+# 64bit:
+# F77FLAGS = -O -m64
+# CFLAGS = -O3 -fexceptions -m64
+# BLAS = -lgoto64 -lfrtbegin -lg2c -lpthread $(XERBLA)
+# LAPACK = -llapack64
+
+
+# SUSE Linux 10.1, AMD Opteron, with GOTO Blas
+# F77 = gfortran
+# BLAS = -lgoto_opteron64 -lgfortran
+
+# SUSE Linux 10.1, Intel Pentium, with GOTO Blas
+# F77 = gfortran
+# BLAS = -lgoto -lgfortran
+
+#------------------------------------------------------------------------------
+# Solaris
+#------------------------------------------------------------------------------
+
+# 32-bit
+# CFLAGS = -KPIC -dalign -xc99=%none -Xc -xlibmieee -xO5 -xlibmil -m32
+
+# 64-bit
+# CFLAGS = -fast -KPIC -xc99=%none -xlibmieee -xlibmil -m64 -Xc
+
+# FFLAGS = -fast -KPIC -dalign -xlibmil -m64
+
+# The Sun Performance Library includes both LAPACK and the BLAS:
+# BLAS = -xlic_lib=sunperf
+# LAPACK =
+
+
+#------------------------------------------------------------------------------
+# Compaq Alpha
+#------------------------------------------------------------------------------
+
+# 64-bit mode only
+# CFLAGS = -O2 -std1
+# BLAS = -ldxml
+# LAPACK =
+
+#------------------------------------------------------------------------------
+# Macintosh
+#------------------------------------------------------------------------------
+
+# CC = gcc
+# CFLAGS = -O3 -fno-common -no-cpp-precomp -fexceptions
+# LIB = -lstdc++
+# BLAS = -framework Accelerate
+# LAPACK = -framework Accelerate
+
+#------------------------------------------------------------------------------
+# IBM RS 6000
+#------------------------------------------------------------------------------
+
+# BLAS = -lessl
+# LAPACK =
+
+# 32-bit mode:
+# CFLAGS = -O4 -qipa -qmaxmem=16384 -qproto
+# F77FLAGS = -O4 -qipa -qmaxmem=16384
+
+# 64-bit mode:
+# CFLAGS = -O4 -qipa -qmaxmem=16384 -q64 -qproto
+# F77FLAGS = -O4 -qipa -qmaxmem=16384 -q64
+# AR = ar -X64
+
+#------------------------------------------------------------------------------
+# SGI IRIX
+#------------------------------------------------------------------------------
+
+# BLAS = -lscsl
+# LAPACK =
+
+# 32-bit mode
+# CFLAGS = -O
+
+# 64-bit mode (32 bit int's and 64-bit long's):
+# CFLAGS = -64
+# F77FLAGS = -64
+
+# SGI doesn't have ranlib
+# RANLIB = echo
+
+#------------------------------------------------------------------------------
+# AMD Opteron (64 bit)
+#------------------------------------------------------------------------------
+
+# BLAS = -lgoto_opteron64 -lg2c
+# LAPACK = -llapack_opteron64
+
+# SUSE Linux 10.1, AMD Opteron
+# F77 = gfortran
+# BLAS = -lgoto_opteron64 -lgfortran
+# LAPACK = -llapack_opteron64
+
+#------------------------------------------------------------------------------
+# remove object files and profile output
+#------------------------------------------------------------------------------
+
+CLEAN = *.o *.obj *.ln *.bb *.bbg *.da *.tcov *.gcov gmon.out *.bak *.d *.gcda *.gcno
diff --git a/extra/unison/PKGBUILD b/extra/unison/PKGBUILD
new file mode 100644
index 000000000..021950ef5
--- /dev/null
+++ b/extra/unison/PKGBUILD
@@ -0,0 +1,46 @@
+# $Id: PKGBUILD 110780 2011-02-22 07:48:24Z tpowa $
+#Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=unison
+pkgver=2.40.61
+pkgrel=1
+pkgdesc="Unison is a file-synchronization tool"
+arch=(i686 x86_64)
+license=('GPL2')
+url="http://www.cis.upenn.edu/~bcpierce/unison"
+depends=('glibc')
+makedepends=('ocaml' 'lablgtk2' 'imagemagick')
+source=(http://www.cis.upenn.edu/~bcpierce/unison/download/releases/stable/$pkgname-$pkgver.tar.gz
+ $pkgname.desktop)
+options=(!makeflags)
+
+build() {
+ cd $startdir/src/$pkgname-$pkgver
+ CFLAGS=""
+ make clean
+ make mkProjectInfo
+ make UISTYLE=text DEBUGGING=false THREADS=true
+ mkdir -p $startdir/pkg/usr/bin
+ install -Dm755 unison $startdir/pkg/usr/bin/unison
+
+ # clean the builddir and rebuild with gtk support
+ # broken at the moment!
+ # make clean
+ # make mkProjectInfo
+ # make UISTYLE=gtk DEBUGGING=false THREADS=true
+ # install -Dm755 unison $startdir/pkg/usr/bin/unison-gtk
+ # clean the builddir and rebuild with gtk2 support
+ make clean
+ make mkProjectInfo
+ make UISTYLE=gtk2 DEBUGGING=false THREADS=true
+ install -Dm755 unison $startdir/pkg/usr/bin/unison-gtk2
+ # install a .desktop file; create a compliant icon from ico file and install the png
+ install -Dm644 ../$pkgname.desktop $startdir/pkg/usr/share/applications/$pkgname.desktop
+ convert win32rc/U.ico unison.png
+ install -Dm644 ${pkgname}-1.png $startdir/pkg/usr/share/pixmaps/$pkgname.png
+ # make symlink for .desktop file
+ cd $startdir/pkg//usr/bin
+ ln -s unison-gtk2 unison-x11
+}
+md5sums=('9d48796b115704321c6a4a50dd0928ee'
+ '2daecba7705455a8e4b769e48b059872')
diff --git a/extra/unison/unison-ssh-ocaml.patch b/extra/unison/unison-ssh-ocaml.patch
new file mode 100644
index 000000000..1b9c66c7f
--- /dev/null
+++ b/extra/unison/unison-ssh-ocaml.patch
@@ -0,0 +1,25 @@
+Index: src/terminal.ml
+===================================================================
+--- src/terminal.ml (révision 463)
++++ src/terminal.ml (copie de travail)
+@@ -191,7 +191,6 @@
+ exit 127
+ end
+ | childPid ->
+- Unix.close slaveFd;
+ (Some masterFd, childPid)
+ end
+
+Index: src/update.mli
+===================================================================
+--- src/update.mli (révision 463)
++++ src/update.mli (copie de travail)
+@@ -1,7 +1,7 @@
+ (* Unison file synchronizer: src/update.mli *)
+ (* Copyright 1999-2009, Benjamin C. Pierce (see COPYING for details) *)
+
+-module NameMap : Map.S with type key = Name.t
++module NameMap : MyMap.S with type key = Name.t
+
+ type archive =
+ ArchiveDir of Props.t * archive NameMap.t
diff --git a/extra/unison/unison.desktop b/extra/unison/unison.desktop
new file mode 100644
index 000000000..3a7e1d762
--- /dev/null
+++ b/extra/unison/unison.desktop
@@ -0,0 +1,13 @@
+[Desktop Entry]
+Encoding=UTF-8
+Name=unison
+Name[de]=unison
+Comment=File synchronisation tool for X11
+Comment[de]=Datei Abgleicher und Synchronisierer
+TryExec=unison-x11
+Exec=unison-x11
+Terminal=false
+Type=Application
+Categories=GTK;Application;Network;
+Icon=unison.png
+StartupNotify=true
diff --git a/extra/unison/unison.install b/extra/unison/unison.install
new file mode 100644
index 000000000..a3790ab7d
--- /dev/null
+++ b/extra/unison/unison.install
@@ -0,0 +1,28 @@
+# arg 1: the new package version
+post_install() {
+ echo "NOTE:"
+ echo " For gtk1 frontend please add 'gtk' package."
+ echo " For gtk2 frontend please add 'gtk2' package."
+ echo " Default X11 frontend is set to gtk2. "
+ echo ""
+ echo " If you want to default to gtk1 unison:"
+ echo " 'rm /usr/bin/unison-x11'"
+ echo " 'ln -s /usr/bin/unison-gtk /usr/bin/unison-x11'"
+ echo ""
+}
+
+# arg 1: the new package version
+# arg 2: the old package version
+post_upgrade() {
+ post_install $1
+}
+
+# arg 1: the old package version
+pre_remove() {
+ /bin/true
+}
+
+# arg 1: the old package version
+post_remove() {
+ /bin/true
+}
diff --git a/extra/unixodbc/PKGBUILD b/extra/unixodbc/PKGBUILD
new file mode 100644
index 000000000..fbb4bdc26
--- /dev/null
+++ b/extra/unixodbc/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 78429 2010-04-23 18:51:55Z andyrtr $
+# Maintainer: AndyRTR <andyrtr@archlinux.org>
+
+# Contributor: Judd Vinet <jvinet@zeroflux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=unixodbc
+pkgver=2.3.0
+pkgrel=1
+pkgdesc="ODBC is an open specification for providing application developers with a predictable API with which to access Data Sources"
+arch=(i686 x86_64)
+license=('GPL2' 'LGPL2.1')
+url="http://www.unixodbc.org/"
+backup=('etc/odbc.ini' 'etc/odbcinst.ini')
+depends=('readline>=6.0' 'libtool')
+options=('!libtool')
+source=(http://www.unixodbc.org/unixODBC-$pkgver.tar.gz)
+md5sums=('f2ad22cbdffe836c58987ed2332c2e99')
+
+build() {
+ cd ${srcdir}/unixODBC-${pkgver}
+ ./configure --prefix=/usr --sysconfdir=/etc
+ make || return 1
+}
+
+package() {
+ cd ${srcdir}/unixODBC-${pkgver}
+ make DESTDIR=${pkgdir} install || return 1
+}
diff --git a/extra/unzip/PKGBUILD b/extra/unzip/PKGBUILD
new file mode 100644
index 000000000..77608dd01
--- /dev/null
+++ b/extra/unzip/PKGBUILD
@@ -0,0 +1,40 @@
+# $Id: PKGBUILD 70615 2010-02-27 15:46:11Z thayer $
+# Maintainer: Thayer Williams <thayer@archlinux.org>
+# Contributor: Douglas Soares de Andrade <douglas@archlinux.org>
+# Contributor: Robson Peixoto
+
+pkgname=unzip
+pkgver=6.0
+pkgrel=5
+pkgdesc="Unpacks .zip archives such as those made by PKZIP"
+arch=('i686' 'x86_64')
+url="http://www.info-zip.org/"
+license=('custom')
+depends=('bzip2' 'bash')
+source=('http://downloads.sourceforge.net/infozip/unzip60.tar.gz')
+md5sums=('62b490407489521db863b523a7f86375')
+
+build() {
+ cd ${srcdir}/${pkgname}${pkgver/./}
+
+ # set CFLAGS -- from Debian
+ export CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64 -DACORN_FTYPE_NFS \
+ -DWILD_STOP_AT_DIR -DLARGE_FILE_SUPPORT -DUNICODE_SUPPORT \
+ -DUNICODE_WCHAR -DUTF8_MAYBE_NATIVE -DNO_LCHMOD -DDATE_FORMAT=DF_YMD \
+ -DUSE_BZIP2 -DNATIVE"
+
+ # make -- from Debian
+ make -f unix/Makefile LOCAL_UNZIP="$CFLAGS" prefix=/usr LF2="" \
+ D_USE_BZ2=-DUSE_BZIP2 L_BZ2=-lbz2 unzips || return 1
+
+ # install -- from Debian
+ make -f unix/Makefile prefix=${pkgdir}/usr INSTALL_PROGRAM="install" install || return 1
+
+ # install the license file
+ install -Dm644 LICENSE ${pkgdir}/usr/share/licenses/unzip/LICENSE || return 1
+
+ # fix manpage location
+ mkdir -p ${pkgdir}/usr/share || return 1
+ mv ${pkgdir}/usr/man ${pkgdir}/usr/share/ || return 1
+}
+
diff --git a/extra/upower/PKGBUILD b/extra/upower/PKGBUILD
new file mode 100644
index 000000000..431d98e13
--- /dev/null
+++ b/extra/upower/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 107049 2011-01-20 21:06:41Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=upower
+pkgver=0.9.8
+pkgrel=2
+pkgdesc="Abstraction for enumerating power devices, listening to device events and querying history and statistics"
+arch=('i686' 'x86_64')
+url="http://upower.freedesktop.org"
+license=('GPL')
+depends=('udev>=165' 'libusb>=1.0.8' 'polkit>=0.99' 'pm-utils' 'dbus-glib>=0.92')
+makedepends=('pkg-config' 'intltool' 'docbook-xsl')
+replaces=('devicekit-power')
+options=('!libtool')
+source=($url/releases/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('7afaec3cb10ebbc898308c7abd250c27fd58e10379a42e80444d7a4b32f2eb91')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \
+ --libexecdir=/usr/lib/upower --disable-static
+ make
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/usbmuxd/PKGBUILD b/extra/usbmuxd/PKGBUILD
new file mode 100644
index 000000000..d579eef00
--- /dev/null
+++ b/extra/usbmuxd/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 101289 2010-11-28 18:01:54Z ibiru $
+# Maintainer : Ionut Biru <ibiru@archlinux.org>
+# Contributor: Gabriel Martinez < reitaka at gmail dot com >
+
+pkgname=usbmuxd
+pkgver=1.0.6
+pkgrel=2
+pkgdesc="USB Multiplex Daemon"
+url="http://marcansoft.com/blog/iphonelinux/usbmuxd/"
+arch=('i686' 'x86_64')
+license=('GPL2' 'GPL3' 'LGPL2.1')
+depends=('libusb>=1.0.8')
+makedepends=('cmake')
+install=usbmuxd.install
+source=(http://marcansoft.com/uploads/${pkgname}/${pkgname}-${pkgver}.tar.bz2
+ usbmuxd-udevuser.patch)
+md5sums=('c8909cfd9253d8d1a5e26f2ff7e5908b'
+ '299349dcacd60af9dceecec1ceebce06')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i "${srcdir}/usbmuxd-udevuser.patch"
+ mkdir build
+ cd build
+ cmake ../ -DCMAKE_INSTALL_PREFIX:PATH=/usr -DLIB_SUFFIX=""
+ make
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/usbmuxd/usbmuxd-udevuser.patch b/extra/usbmuxd/usbmuxd-udevuser.patch
new file mode 100644
index 000000000..af091e64d
--- /dev/null
+++ b/extra/usbmuxd/usbmuxd-udevuser.patch
@@ -0,0 +1,11 @@
+--- usbmuxd-1.0.6/udev/85-usbmuxd.rules.in.orig 2010-11-09 04:23:44.873368717 -0800
++++ usbmuxd-1.0.6/udev/85-usbmuxd.rules.in 2010-11-09 04:24:13.986655838 -0800
+@@ -1,7 +1,7 @@
+ # usbmuxd (iPhone "Apple Mobile Device" MUXer listening on /var/run/usbmuxd)
+
+ # Forces iPhone 1.0, 3G, 3GS, iPodTouch 1/2 and iPad to USB configuration 3 and run usbmuxd
+-ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="05ac", ATTR{idProduct}=="129[0-9a-f]", ENV{USBMUX_SUPPORTED}="1", ATTR{bConfigurationValue}!="$attr{bNumConfigurations}", ATTR{bConfigurationValue}="$attr{bNumConfigurations}", RUN+="@CMAKE_INSTALL_PREFIX@/sbin/usbmuxd -u -U usbmux"
++ACTION=="add", SUBSYSTEM=="usb", OWNER="usbmux", ATTR{idVendor}=="05ac", ATTR{idProduct}=="129[0-9a-f]", ENV{USBMUX_SUPPORTED}="1", ATTR{bConfigurationValue}!="$attr{bNumConfigurations}", ATTR{bConfigurationValue}="$attr{bNumConfigurations}", RUN+="@CMAKE_INSTALL_PREFIX@/sbin/usbmuxd -u -U usbmux"
+
+ # Exit usbmuxd when the last device is removed
+ ACTION=="remove", SUBSYSTEM=="usb", ENV{PRODUCT}=="5ac/129[0-9a-f]/*", ENV{INTERFACE}=="255/*", RUN+="@CMAKE_INSTALL_PREFIX@/sbin/usbmuxd -x"
diff --git a/extra/usbmuxd/usbmuxd.install b/extra/usbmuxd/usbmuxd.install
new file mode 100644
index 000000000..1a4859674
--- /dev/null
+++ b/extra/usbmuxd/usbmuxd.install
@@ -0,0 +1,19 @@
+post_install() {
+ groupadd -g 140 usbmux &>/dev/null
+ useradd -c 'usbmux user' -u 140 -g usbmux -d / -s /sbin/nologin usbmux &>/dev/null
+ passwd -l usbmux &>/dev/null
+}
+
+post_upgrade() {
+ getent group usbmux >/dev/null 2>&1 || groupadd -g 140 usbmux &>/dev/null
+ getent passwd usbmux >/dev/null 2>&1 || useradd -c 'usbmux user' -u 140 -g usbmux -d / -s /sbin/nologin usbmux &>/dev/null
+}
+
+post_remove() {
+ if getent passwd usbmux >/dev/null 2>&1; then
+ userdel usbmux
+ fi
+ if getent group usbmux >/dev/null 2>&1; then
+ groupdel usbmux
+ fi
+}
diff --git a/extra/usbview/PKGBUILD b/extra/usbview/PKGBUILD
new file mode 100644
index 000000000..84dc43232
--- /dev/null
+++ b/extra/usbview/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 68125 2010-02-10 20:30:36Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Jason Chu <jason@archlinux.org>
+
+pkgname=usbview
+pkgver=1.1
+pkgrel=2
+pkgdesc="USB Viewer"
+arch=('i686' 'x86_64')
+url="http://www.kroah.com/linux-usb/"
+license=('GPL')
+depends=('gtk2')
+makedepends=('pkgconfig')
+source=(http://www.kroah.com/linux-usb/${pkgname}-${pkgver}.tar.gz)
+md5sums=('8bf5e66351156356f3ad07454123affa')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --localstatedir=/var
+ make || return 1
+ make prefix="${pkgdir}/usr" \
+ sysconfdir="${pkgdir}/etc" \
+ localstatedir="${pkgdir}/var" install || return 1
+}
diff --git a/extra/usermin/PKGBUILD b/extra/usermin/PKGBUILD
new file mode 100644
index 000000000..c7494e10a
--- /dev/null
+++ b/extra/usermin/PKGBUILD
@@ -0,0 +1,129 @@
+# $Id: PKGBUILD 104514 2011-01-03 20:58:29Z tpowa $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+pkgname=usermin
+pkgver=1.460
+pkgrel=1
+pkgdesc="a web interface that can be used to easily perform tasks like reading mail, setting up SSH or configuring mail forwarding"
+arch=(i686 x86_64)
+license=('custom:usermin')
+url="http://www.webmin.com/"
+depends=('perl' 'webmin')
+makedepends=('perl-net-ssleay')
+backup=('etc/usermin/miniserv.conf' 'etc/usermin/miniserv.users' 'etc/usermin/config' 'etc/usermin/usermin.cats' \
+'etc/usermin/at/config' \
+'etc/usermin/man/config' \
+'etc/usermin/ssh/config' \
+'etc/usermin/chfn/config' \
+'etc/usermin/cron/config' \
+'etc/usermin/file/config' \
+'etc/usermin/plan/config' \
+'etc/usermin/proc/config' \
+'etc/usermin/spam/config' \
+'etc/usermin/htaccess/config' \
+'etc/usermin/cshrc/config' \
+'etc/usermin/gnupg/config' \
+'etc/usermin/mysql/config' \
+'etc/usermin/quota/config' \
+'etc/usermin/shell/config' \
+'etc/usermin/theme/config' \
+'etc/usermin/mailbox/config' \
+'etc/usermin/schedule/config' \
+'etc/usermin/config' \
+'etc/usermin/commands/config' \
+'etc/usermin/htaccess-htpasswd/config' \
+'etc/usermin/forward/config' \
+'etc/usermin/telnet/config' \
+'etc/usermin/tunnel/config' \
+'etc/usermin/updown/config' \
+'etc/usermin/procmail/config' \
+'etc/usermin/fetchmail/config' \
+'etc/usermin/changepass/config' \
+'etc/usermin/language/config' \
+'etc/usermin/postgresql/config' \
+'etc/usermin/usermount/config' \
+)
+install=usermin.install
+source=(http://downloads.sourceforge.net/sourceforge/webadmin/$pkgname-$pkgver.tar.gz
+ usermin.rc
+ ftp://ftp.archlinux.org/other/usermin/usermin-config.tar.bz2)
+
+build() {
+ cd $startdir/src/$pkgname-$pkgver
+
+ # remove modules we do not support
+
+ #remove config files from other distros
+ rm -f $(find . ! -name 'config-generic-linux' ! -name 'config-\*-linux' ! -name 'config-lib.pl' -name 'config-*')
+
+ # remove caldera theme
+ rm -rf caldera
+
+ # remove init-scripts from other distros
+ rm usermin-init
+ rm usermin-daemon
+
+ # setting perl path
+ (find . -name '*.cgi' ; find . -name '*.pl') | perl perlpath.pl /usr/bin/perl -
+
+ # create dirs
+ mkdir -p $startdir/pkg/opt/usermin
+ mkdir -p $startdir/pkg/var/log/usermin
+ mkdir -p $startdir/pkg/etc/usermin
+
+ # install pam stuff
+ install -D -m 644 usermin-pam $startdir/pkg/etc/pam.d/usermin
+
+ # remove other distros and add only Archlinux don't change next line else it will not work!
+ rm os_list.txt
+ echo 'Archlinux Any version generic-linux * -d "/etc/pacman.d"' >> os_list.txt
+
+ # copy stuff to right dirs
+ cd $startdir/src/$pkgname-$pkgver
+ cp -rp * $startdir/pkg/opt/usermin
+ cd $startdir/src/usermin-config
+ cp -rfp * $startdir/pkg/opt/usermin
+
+ # define parameters for setup.sh
+ config_dir=$startdir/pkg/etc/usermin
+ var_dir=$startdir/pkg/var/log/usermin
+ perl=/usr/bin/perl
+ autoos=1
+ port=20000
+ login=root
+ crypt="XXX"
+ ssl=1
+ atboot=0
+ nostart=1
+ nochown=1
+ autothird=1
+ nouninstall=1
+ noperlpath=1
+ atbootyn=n
+ tempdir=$startdir/pkg/tmp
+ export config_dir var_dir perl autoos port tempdir ssl nochown autothird nouninstall nostart noperlpath atbootyn login crypt
+
+ # Fix setup.sh
+ sed -i -e 's:read atbootyn::g' -e 's:exit 13::g' $startdir/pkg/opt/usermin/setup.sh
+ $startdir/pkg/opt/usermin/setup.sh
+
+ # Fixup the config files to use their real locations
+ sed -i 's:^pidfile=.*$:pidfile=/var/run/usermin.pid:' $startdir/pkg/etc/usermin/miniserv.conf
+ find $startdir/pkg/etc/usermin -type f -exec sed -i "s:$startdir/pkg::g" {} \;
+
+ # make it only accessible by localhost
+ echo 'allow=127.0.0.1' >> $startdir/pkg/etc/usermin/miniserv.conf
+
+ # enable user and password login
+ sed -i -e '/localauth/d' $startdir/pkg/etc/usermin/miniserv.conf
+
+ #install rc file
+ install -D -m 755 $startdir/src/usermin.rc $startdir/pkg/etc/rc.d/usermin
+
+ # delete temp dir
+ rm -r $startdir/pkg/tmp
+ #install license
+ install -m 644 -D $startdir/src/$pkgname-$pkgver/LICENCE $startdir/pkg/usr/share/licenses/usermin/LICENCE
+}
+md5sums=('d22452de87891e4012411e3aa86aec1f'
+ 'cfef4490cd1ef9517c0b39a7bd75c968'
+ 'ec37a79f948f778224550930d2a7ca07')
diff --git a/extra/usermin/usermin-config.tar.bz2 b/extra/usermin/usermin-config.tar.bz2
new file mode 100644
index 000000000..056bb6298
--- /dev/null
+++ b/extra/usermin/usermin-config.tar.bz2
Binary files differ
diff --git a/extra/usermin/usermin.install b/extra/usermin/usermin.install
new file mode 100644
index 000000000..3ace10ea2
--- /dev/null
+++ b/extra/usermin/usermin.install
@@ -0,0 +1,34 @@
+# arg 1: the new package version
+post_install() {
+ local crypt=$(grep "^root:" ${ROOT}/etc/shadow | cut -f 2 -d :)
+ crypt=${crypt//\\/\\\\}
+ crypt=${crypt//\//\\\/}
+ sed -i "s/root:XXX/root:${crypt}/" /etc/usermin/miniserv.users
+cat << EOF
+Note:
+==> It is not allowed to install 3rd party modules, or delete existing modules.
+==> Please write your own PKGBUILDS for 3rd party modules and additional themes.
+Setup:
+==> To make usermin start at boot time, add usermin to rc.conf daemons
+==> Point your web browser to http://localhost:20000 to use usermin.
+==> To change the modules setup please use webmin.
+
+==> The access is restricted to localhost, if you want to connect from other locations
+==> change /etc/usermin/miniserv.conf to something like that: allow=127.0.0.1 <your-ip>
+==> If you want to have ssl encryption please install 'perl-net-ssleay' additional.
+EOF
+# fix man module
+ cd /opt/usermin/man
+ gzip -df $(find . -name '*.gz')
+}
+
+# arg 1: the new package version
+# arg 2: the old package version
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ # uninstall unzipped files
+ rm -r /opt/usermin/man
+}
diff --git a/extra/usermin/usermin.rc b/extra/usermin/usermin.rc
new file mode 100644
index 000000000..af365780a
--- /dev/null
+++ b/extra/usermin/usermin.rc
@@ -0,0 +1,44 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+start=/etc/usermin/start
+stop=/etc/usermin/stop
+lockfile=/var/lock/usermin
+
+case "$1" in
+'start')
+ stat_busy "Starting Usermin daemon"
+ $start >/dev/null 2>&1 </dev/null
+ RETVAL=$?
+ if [ "$RETVAL" = "0" ]; then
+ touch $lockfile >/dev/null 2>&1
+ stat_done
+ else
+ stat_fail
+fi
+;;
+
+'stop')
+ stat_busy "Stopping Usermin daemon"
+ $stop >/dev/null 2>&1 </dev/null
+ RETVAL=$?
+ if [ "$RETVAL" = "0" ]; then
+ rm -f $lockfile
+ stat_done
+ else
+ stat_fail
+fi
+;;
+
+'restart')
+ $stop && $start
+ RETVAL=$?
+;;
+*)
+echo "Usage: $0 { start | stop | restart }"
+RETVAL=1
+;;
+esac
+exit $RETVAL \ No newline at end of file
diff --git a/extra/v4l-utils/PKGBUILD b/extra/v4l-utils/PKGBUILD
new file mode 100644
index 000000000..87af80c6a
--- /dev/null
+++ b/extra/v4l-utils/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id: PKGBUILD 111480 2011-02-27 10:18:47Z thomas $
+# Maintainer: Thomas Bächler <thomas@archlinux.org>
+pkgname=v4l-utils
+pkgver=0.8.3
+pkgrel=1
+pkgdesc="Userspace tools and conversion library for Video 4 Linux"
+arch=('i686' 'x86_64')
+url="http://freshmeat.net/projects/libv4l"
+provides=("libv4l=$pkgver")
+replaces=('libv4l')
+conflicts=('libv4l')
+license=('LGPL')
+makedepends=('qt')
+optdepends=('qt')
+depends=('glibc' 'gcc-libs' 'sysfsutils')
+source=(http://linuxtv.org/downloads/v4l-utils/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('525ebed7ef6e0f6a4bb68fe10403a3725eb1ec31a4c557c68256079b00e283b5')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ sed -i 's|CFLAGS :=|CFLAGS ?=|' Make.rules
+
+ make PREFIX="/usr"
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make install PREFIX="/usr" DESTDIR="${pkgdir}/"
+ rm -f "${pkgdir}/usr/bin/ivtv-ctl"
+}
diff --git a/extra/v86d/PKGBUILD b/extra/v86d/PKGBUILD
new file mode 100644
index 000000000..e1c3e78d2
--- /dev/null
+++ b/extra/v86d/PKGBUILD
@@ -0,0 +1,38 @@
+# $Id: PKGBUILD 102014 2010-12-03 22:27:43Z pierre $
+# Maintainer: Thomas Baechler <thomas@archlinux.org>
+
+pkgname="v86d"
+pkgver=0.1.9
+pkgrel=11
+pkgdesc="userspace helper for uvesafb that runs x86 code in an emulated environment"
+url="http://dev.gentoo.org/~spock/projects/uvesafb/"
+license=('GPL2')
+arch=("i686" "x86_64")
+depends=('glibc')
+conflicts=('mkinitcpio<0.5.99')
+backup=(etc/modprobe.d/uvesafb.conf)
+source=(http://dev.gentoo.org/~spock/projects/uvesafb/archive/v86d-$pkgver.tar.bz2
+ v86d
+ v86d_hook
+ modprobe.uvesafb)
+md5sums=('ebbbc8e7013c9544b6ba6981add43831'
+ '33f3131e7bf041ed6a67e92bff272f4c'
+ '813958b8f6c75a7063e4858f31509694'
+ '2d7cc8dc6a41916a13869212d0191147')
+options=(!makeflags)
+
+build() {
+ cd $srcdir/v86d-$pkgver
+ ./configure --with-x86emu
+ # we only need /usr/include/video/uvesafb.h
+ make KDIR=/usr
+}
+
+package() {
+ cd $srcdir/v86d-$pkgver
+ make DESTDIR=$pkgdir install
+
+ install -D -m644 $srcdir/v86d $pkgdir/lib/initcpio/install/v86d
+ install -D -m644 $srcdir/v86d_hook $pkgdir/lib/initcpio/hooks/v86d
+ install -D -m644 $srcdir/modprobe.uvesafb $pkgdir/etc/modprobe.d/uvesafb.conf
+}
diff --git a/extra/v86d/modprobe.uvesafb b/extra/v86d/modprobe.uvesafb
new file mode 100644
index 000000000..5e46e1088
--- /dev/null
+++ b/extra/v86d/modprobe.uvesafb
@@ -0,0 +1,10 @@
+#
+# This file sets the parameters for uvesafb module.
+# The following format should be used:
+# options uvesafb mode=<xres>x<yres>[-<bpp>][@<refresh>] scroll=<ywrap|ypan|redraw> ...
+#
+# For more details see:
+# http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=Documentation/fb/uvesafb.txt
+#
+
+options uvesafb mode_option=1024x768-32 scroll=ywrap
diff --git a/extra/v86d/v86d b/extra/v86d/v86d
new file mode 100644
index 000000000..57383fe78
--- /dev/null
+++ b/extra/v86d/v86d
@@ -0,0 +1,12 @@
+install() {
+ add_binary "/sbin/v86d"
+ add_file "/etc/modprobe.d/uvesafb.conf"
+ MODULES="uvesafb"
+ SCRIPT="v86d"
+}
+
+help() {
+ echo "This hook sets up v86d, the userspace helper for uvesafb."
+}
+
+# vim: set ft=sh ts=4 sw=4 expandtab:
diff --git a/extra/v86d/v86d_hook b/extra/v86d/v86d_hook
new file mode 100644
index 000000000..e5dff01c1
--- /dev/null
+++ b/extra/v86d/v86d_hook
@@ -0,0 +1,4 @@
+run_hook()
+{
+ /sbin/modprobe uvesafb
+} \ No newline at end of file
diff --git a/extra/vala/PKGBUILD b/extra/vala/PKGBUILD
new file mode 100644
index 000000000..8772c333f
--- /dev/null
+++ b/extra/vala/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 117513 2011-04-04 09:41:11Z ibiru $
+# Maintainer : Ionut Biru <ibiru@archlinux.org>
+# Contributor: Timm Preetz <timm@preetz.us>
+
+pkgname=vala
+pkgver=0.12.0
+pkgrel=1
+pkgdesc="Compiler for the GObject type system"
+arch=('i686' 'x86_64')
+url="http://live.gnome.org/Vala"
+license=('LGPL')
+depends=('glib2')
+makedepends=('libxslt')
+options=('!libtool')
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/0.12/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('9a398e16fba2c78c9bcadb05e489c9bc318e34901d43451ac5d2ce4bc46b1225')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --enable-vapigen
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/valgrind/PKGBUILD b/extra/valgrind/PKGBUILD
new file mode 100644
index 000000000..0772fc3e4
--- /dev/null
+++ b/extra/valgrind/PKGBUILD
@@ -0,0 +1,40 @@
+# $Id: PKGBUILD 110184 2011-02-17 12:26:47Z allan $
+# Maintainer: Dan McGee <dan@archlinux.org>
+# Maintainer: Allan McRae <allan@archlinux.org>
+
+pkgname=valgrind
+pkgver=3.6.1
+pkgrel=1
+pkgdesc="A tool to help find memory-management problems in programs"
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://valgrind.org/"
+depends=('glibc>=2.13' 'glibc<2.14' 'perl')
+makedepends=('gdb')
+options=('!emptydirs')
+source=(http://valgrind.org/downloads/${pkgname}-${pkgver}.tar.bz2
+ glibc-patch-version.patch)
+md5sums=('2c3aa122498baecc9d69194057ca88f5'
+ 'b657f0ebdde3d9aefc9fd16f9e653702')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ # make sure our CFLAGS are respected
+ sed -i -e 's:^CFLAGS="-Wno-long-long":CFLAGS="$CFLAGS -Wno-long-long":' configure.in
+
+ # prevent need to rebuild with glibc patch level version bumps
+ patch -Np1 -i ${srcdir}/glibc-patch-version.patch
+
+ if [ "${CARCH}" = "x86_64" ]; then
+ ./configure --prefix=/usr --mandir=/usr/share/man --enable-only64bit
+ else
+ ./configure --prefix=/usr --mandir=/usr/share/man
+ fi
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/valgrind/glibc-patch-version.patch b/extra/valgrind/glibc-patch-version.patch
new file mode 100644
index 000000000..2c6830aef
--- /dev/null
+++ b/extra/valgrind/glibc-patch-version.patch
@@ -0,0 +1,52 @@
+Saves having to rebuild valgrind on glibc-x.x.* patch level releases
+
+diff -Naur valgrind-3.5.0-old//glibc-2.X.supp.in valgrind-3.5.0/glibc-2.X.supp.in
+--- valgrind-3.5.0-old//glibc-2.X.supp.in 2009-08-19 23:37:48.000000000 +1000
++++ valgrind-3.5.0/glibc-2.X.supp.in 2010-05-22 19:43:08.088007038 +1000
+@@ -168,9 +168,9 @@
+ Memcheck:Param
+ socketcall.sendto(msg)
+ fun:__sendto_nocancel
+- obj:/*libc-@GLIBC_VERSION@.so
+- obj:/*libc-@GLIBC_VERSION@.so
+- obj:/*libc-@GLIBC_VERSION@.so
++ obj:/*libc-@GLIBC_VERSION@*.so
++ obj:/*libc-@GLIBC_VERSION@*.so
++ obj:/*libc-@GLIBC_VERSION@*.so
+ }
+ {
+ glibc24-64bit-padding-1c
+@@ -180,7 +180,7 @@
+ fun:__nscd_get_map_ref
+ fun:nscd_get*_r
+ fun:*nscd*
+- obj:/*libc-@GLIBC_VERSION@.so
++ obj:/*libc-@GLIBC_VERSION@*.so
+ }
+
+
+@@ -199,18 +199,18 @@
+ Memcheck:Param
+ socketcall.sendto(msg)
+ fun:send
+- obj:/*libc-@GLIBC_VERSION@.so
+- obj:/*libc-@GLIBC_VERSION@.so
+- obj:/*libc-@GLIBC_VERSION@.so
++ obj:/*libc-@GLIBC_VERSION@*.so
++ obj:/*libc-@GLIBC_VERSION@*.so
++ obj:/*libc-@GLIBC_VERSION@*.so
+ }
+ {
+ X11-64bit-padding-4b
+ Memcheck:Param
+ socketcall.send(msg)
+ fun:send
+- obj:/*libc-@GLIBC_VERSION@.so
+- obj:/*libc-@GLIBC_VERSION@.so
+- obj:/*libc-@GLIBC_VERSION@.so
++ obj:/*libc-@GLIBC_VERSION@*.so
++ obj:/*libc-@GLIBC_VERSION@*.so
++ obj:/*libc-@GLIBC_VERSION@*.so
+ }
+
+ ##----------------------------------------------------------------------##
diff --git a/extra/vamp-plugin-sdk/PKGBUILD b/extra/vamp-plugin-sdk/PKGBUILD
new file mode 100644
index 000000000..06633b1de
--- /dev/null
+++ b/extra/vamp-plugin-sdk/PKGBUILD
@@ -0,0 +1,38 @@
+# $Id: PKGBUILD 86992 2010-08-08 20:57:26Z schiv $
+# Maintainer: Ray Rashif <schivmeister@gmail.com>
+# Contributor: Orivej Desh <smpuj@bk.ru>
+
+pkgname=vamp-plugin-sdk
+pkgver=2.1
+pkgrel=1
+pkgdesc="The Vamp audio analysis plugin system"
+arch=('i686' 'x86_64')
+url="http://www.vamp-plugins.org/"
+license=('BSD')
+depends=('gcc-libs' 'libsndfile')
+#options=('!libtool')
+source=(http://downloads.sourceforge.net/vamp/$pkgname-$pkgver.tar.gz
+ gcc44.patch)
+md5sums=('13252077a73987dae72a9174e529b6b9'
+ 'a07e3ef9c657a56cf2e8c4afc0ba1cec')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ # gcc 4.4 compatibility
+ patch -Np1 -i ../gcc44.patch
+
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ make DESTDIR="$pkgdir/" install
+
+ install -Dm644 COPYING \
+ "$pkgdir/usr/share/licenses/$pkgname/COPYING"
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/extra/vamp-plugin-sdk/gcc44.patch b/extra/vamp-plugin-sdk/gcc44.patch
new file mode 100644
index 000000000..f559a7da9
--- /dev/null
+++ b/extra/vamp-plugin-sdk/gcc44.patch
@@ -0,0 +1,14 @@
+diff -ur vamp-plugin-sdk-2.0.orig/examples/FixedTempoEstimator.cpp vamp-plugin-sdk-2.0/examples/FixedTempoEstimator.cpp
+--- vamp-plugin-sdk-2.0.orig/examples/FixedTempoEstimator.cpp 2008-12-01 13:48:41.000000000 +0200
++++ vamp-plugin-sdk-2.0/examples/FixedTempoEstimator.cpp 2009-06-06 00:57:58.000000000 +0300
+@@ -43,9 +43,9 @@
+
+ using Vamp::RealTime;
+
++#include <cstdio>
+ #include <cmath>
+
+-
+ class FixedTempoEstimator::D
+ // this class just avoids us having to declare any data members in the header
+ {
diff --git a/extra/vamp-plugin-sdk/vamp-plugin-sdk.changelog b/extra/vamp-plugin-sdk/vamp-plugin-sdk.changelog
new file mode 100644
index 000000000..04f17247e
--- /dev/null
+++ b/extra/vamp-plugin-sdk/vamp-plugin-sdk.changelog
@@ -0,0 +1,11 @@
+9 Aug 2010 (GMT+8) Ray Rashif <schivmeister@gmail.com>
+
+ * 2.1-1 :
+ Brought into extra from community for rubberband/ardour
+ - dep of rubberband
+
+ * PKGBUILD :
+ Minor cosmetic ammendments.
+
+ * vamp-plugin-sdk.changelog :
+ Added this changelog.
diff --git a/extra/vbetool/PKGBUILD b/extra/vbetool/PKGBUILD
new file mode 100644
index 000000000..0122f4130
--- /dev/null
+++ b/extra/vbetool/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 19267 2008-11-18 03:22:15Z eric $
+# Contributor: Christian Storm <Christian.Storm@gmx.DE>
+# Contributor: James Rayner <james@archlinux.org>
+# Maintainer: Thayer Williams <thayer@archlinux.org>
+
+pkgname=vbetool
+pkgver=1.1
+pkgrel=1
+pkgdesc="vbetool uses lrmi in order to run code from the video BIOS"
+url="http://www.srcf.ucam.org/~mjg59/vbetool/"
+license=('GPL2')
+arch=('i686' 'x86_64')
+depends=('zlib' 'libx86')
+makedepends=('pciutils')
+source=(http://www.codon.org.uk/~mjg59/vbetool/download/vbetool-${pkgver}.tar.gz)
+md5sums=('ffb03b118867a02296d7449019ad8846')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ if [ "${CARCH}" = "x86_64" ]; then
+ ./configure --prefix=/usr --without-x86emu || return 1
+ else
+ ./configure --prefix=/usr || return 1
+ fi
+ make LIBS=-lpci || return 1
+ make DESTDIR=$pkgdir install || return 1
+}
+
diff --git a/extra/vcdimager/PKGBUILD b/extra/vcdimager/PKGBUILD
new file mode 100644
index 000000000..dc392cb84
--- /dev/null
+++ b/extra/vcdimager/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 59898 2009-11-29 15:48:57Z jgc $
+# Maintainer: damir <damir@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=vcdimager
+pkgver=0.7.23
+pkgrel=7
+pkgdesc="GNU VCDImager is a full-featured mastering suite for authoring disassembling and analyzing Video CD's and Super Video CD's"
+arch=(i686 x86_64)
+license=('GPL')
+url="http://www.vcdimager.org/"
+depends=('libcdio>=0.82' 'libxml2>=2.7.3' 'popt')
+options=('!libtool')
+install=vcdimager.install
+source=(ftp://ftp.gnu.org/gnu/vcdimager/${pkgname}-${pkgver}.tar.gz)
+md5sums=('5e7d80fdbf0037ad20e438f2a9573253')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr \
+ --mandir=/usr/share/man --infodir=/usr/share/info || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/vcdimager/vcdimager.install b/extra/vcdimager/vcdimager.install
new file mode 100644
index 000000000..faa9748c2
--- /dev/null
+++ b/extra/vcdimager/vcdimager.install
@@ -0,0 +1,19 @@
+infodir=/usr/share/info
+filelist=(vcd-info.info.gz vcdimager.info.gz vcdxrip.info.gz)
+
+post_install() {
+ for file in ${filelist[@]}; do
+ install-info $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ for file in ${filelist[@]}; do
+ install-info --delete $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
+
diff --git a/extra/vde2/PKGBUILD b/extra/vde2/PKGBUILD
new file mode 100644
index 000000000..17dc83588
--- /dev/null
+++ b/extra/vde2/PKGBUILD
@@ -0,0 +1,44 @@
+# $Id: PKGBUILD 87311 2010-08-12 11:45:43Z tpowa $
+# Contributor: Sergej Pupykin
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+pkgname=vde2
+pkgver=2.3.1
+pkgrel=1
+pkgdesc="Virtual Distributed Ethernet for emulators like qemu"
+url="http://sourceforge.net/projects/vde/"
+license=("GPL" "LGPL" "CUSTOM")
+arch=('i686' 'x86_64')
+depends=('bash' 'libpcap' 'openssl')
+backup=(etc/conf.d/vde)
+source=(http://downloads.sourceforge.net/vde/$pkgname-$pkgver.tar.bz2
+ dhcpd.conf.sample
+ iptables.rules.sample
+ vde-config.sample
+ vde-connection.sample
+ vde.conf
+ vde.rc)
+install=vde2.install
+options=(!libtool)
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ ./configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib/vde2 \
+ --enable-experimental
+ make
+ make prefix=$pkgdir/usr sysconfdir=$pkgdir/etc libexecdir=$pkgdir/usr/lib/vde2 install
+ install -D -m 755 ../vde.rc $pkgdir/etc/rc.d/vde
+ install -D -m 644 ../vde.conf $pkgdir/etc/conf.d/vde
+ install -D -m 644 ../vde-config.sample $pkgdir/etc/vde/vde-config.sample
+ install -D -m 644 ../vde-connection.sample $pkgdir/etc/vde/vde-connection.sample
+ install -D -m 644 ../dhcpd.conf.sample $pkgdir/usr/share/vde2/dhcpd.conf.sample
+ install -D -m 644 ../iptables.rules.sample $pkgdir/usr/share/vde2/iptables.rules.sample
+ # install slirp license
+ install -D -m 644 COPYING.slirpvde $pkgdir/usr/share/licenses/vde2/COPYING.slirpvde
+}
+md5sums=('22a7913beb50d6706155fc502ff3cbbe'
+ '7d9bc56d2e561d849e915000d1c0f269'
+ 'a920123fc620bcedbccb703a8d1bdc55'
+ 'cb8ace28e8efd4dad128be4be71b3b07'
+ '63033c33565e2030541c5e05e9d9b063'
+ 'a22730f051f4840da4a3162a88ff8156'
+ '6c7dc01bc2f039f0ff1682ee70d3d1da')
diff --git a/extra/vde2/dhcpd.conf.sample b/extra/vde2/dhcpd.conf.sample
new file mode 100644
index 000000000..565a78b27
--- /dev/null
+++ b/extra/vde2/dhcpd.conf.sample
@@ -0,0 +1,12 @@
+ddns-update-style none;
+
+subnet 192.168.254.0 netmask 255.255.255.0 {
+ range 192.168.254.1 192.168.254.253;
+ option routers 192.168.254.254;
+ option domain-name "virtual.example.com";
+ # find your DNS servers from /etc/resolv.conf
+ # otherwise only pure IP addresses will work
+ option domain-name-servers 192.168.254.254;
+ option broadcast-address 192.168.254.255;
+ default-lease-time 86400;
+}
diff --git a/extra/vde2/iptables.rules.sample b/extra/vde2/iptables.rules.sample
new file mode 100644
index 000000000..ac712ee21
--- /dev/null
+++ b/extra/vde2/iptables.rules.sample
@@ -0,0 +1,5 @@
+*filter
+-A INPUT -i tun -j ACCEPT
+-A FORWARD -s 192.168.254.0/255.255.255.0 -j ACCEPT
+*nat
+-A POSTROUTING -s 192.168.254.0/24 -j MASQUERADE
diff --git a/extra/vde2/vde-config.sample b/extra/vde2/vde-config.sample
new file mode 100644
index 000000000..c5a5b7d88
--- /dev/null
+++ b/extra/vde2/vde-config.sample
@@ -0,0 +1,35 @@
+# Set options vde_switch program
+# To activate this vde profile add it to /etc/conf.d/vde
+
+# Global options
+VDE_NUMPORTS="32" # Number of ports (default 32)
+VDE_HUB="no" # [yes|no] Make the switch act as a hub
+VDE_FSTP="no" # [yes|no] Activate the fast spanning tree protocol
+VDE_MAC="" # Set the Switch MAC address
+VDE_PRIOTIRY="" # Set the priority for FST (MAC extension)
+VDE_HASHSIZE="" # Hash table size
+
+# Options from datasock module
+VDE_SOCK="/var/run/vde/sample.sock" # control directory pathname
+VDE_SOCK_MODE="660" # Standard access mode for comm sockets (octal)
+VDE_SOCK_GROUP="root" # Group owner for comm sockets
+
+# Options from consmgmt module
+VDE_MANAGEMENT_SOCK="/var/run/vde/sample.mgmt" # path of the management UNIX socket
+VDE_MANAGEMENT_SOCK_MODE="660" # management UNIX socket access mode (octal)
+
+# Other options to parse to vde_switch
+VDE_OPTIONS=""
+
+# VDE with internet support
+# You can use either tuntap method or slirpvde method.
+
+# Options from tuntap module
+VDE_TAP="" # Enable routing through TAP tap interface (comma separated array eg.:"tap0,tap1").
+
+# slirpvde daemon support
+SLIRP="no" # [yes|no] enable/disable SLIRP daemon support
+SLIRP_DHCP="no" # [yes|no] turn on the DHCP server for the network autoconfiguration of all the units connected to the VDE
+SLIRP_NETWORK="" # specify the network address (default 10.0.2.0)
+# other options to parse to slirpvde
+SLIRP_OPTIONS="" \ No newline at end of file
diff --git a/extra/vde2/vde-connection.sample b/extra/vde2/vde-connection.sample
new file mode 100644
index 000000000..4a75e1f52
--- /dev/null
+++ b/extra/vde2/vde-connection.sample
@@ -0,0 +1,6 @@
+# You can add vde switch connections below
+# just without the # at the beginning:
+# vde_plug /var/run/vde/sample.sock = vde_plug /var/run/vde/sample2.sock
+# or if hosts are different use this syntax:
+# vde_plug /var/run/vde/sample.sock = ssh host2 vde_plug /var/run/vde/sample.sock
+
diff --git a/extra/vde2/vde.conf b/extra/vde2/vde.conf
new file mode 100644
index 000000000..bc61dceda
--- /dev/null
+++ b/extra/vde2/vde.conf
@@ -0,0 +1,11 @@
+# Set options for a vde daemon script
+#
+# Array for your vde config files, eg.: "internal-net external-net"
+# You need a config file in /etc/vde/ with the same name.
+# Sample config file provided: /etc/vde/vde-config.sample
+VDE_CONFIG=""
+
+# Array for your dpipe connections, eg.: "connect-switches"
+# You need a config file in /etc/vde/ with the same name.
+# Sample config file provided: /etc/vde/vde-connection.sample
+VDE_CONNECTION="" \ No newline at end of file
diff --git a/extra/vde2/vde.rc b/extra/vde2/vde.rc
new file mode 100755
index 000000000..b368f9955
--- /dev/null
+++ b/extra/vde2/vde.rc
@@ -0,0 +1,113 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+. /etc/conf.d/vde
+
+case "$1" in
+ start)
+ # bring up all defined profiles
+ for i in $VDE_CONFIG; do
+ [ -e /etc/vde/$i ] && . /etc/vde/$i
+ stat_busy "Starting vde_switch $i"
+ # get options from profile
+ [ -n "$VDE_NUMPORTS" ] && OPTIONS="-n $VDE_NUMPORTS"
+ [ "$VDE_HUB" = "yes" ] && OPTIONS="$OPTIONS -x"
+ [ "$VDE_FSTP" = "yes" ] && OPTIONS="$OPTIONS -F"
+ [ -n "$VDE_MAC" ] && OPTIONS="$OPTIONS --macaddr $VDE_MAC"
+ [ -n "$VDE_PRIORITY" ] && OPTIONS="$OPTIONS --priority $VDE_PRIORITY"
+ [ -n "$VDE_HASH" ] && OPTIONS="$OPTIONS --hashsize $VDE_HASH"
+ [ -n "$VDE_SOCK" ] && OPTIONS="$OPTIONS -s $VDE_SOCK"
+ [ -n "$VDE_SOCK_MODE" ] && OPTIONS="$OPTIONS -m $VDE_SOCK_MODE"
+ [ -n "$VDE_SOCK_GROUP" ] && OPTIONS="$OPTIONS -g $VDE_SOCK_GROUP"
+ [ -n "$VDE_MANAGEMENT_SOCK" ] && OPTIONS="$OPTIONS -M $VDE_MANAGEMENT_SOCK"
+ [ -n "$VDE_MANAGEMENT_SOCK_MODE" ] && OPTIONS="$OPTIONS --mgmtmode $VDE_MANAGEMENT_SOCK_MODE"
+ [ -n "$VDE_TAP" ] && OPTIONS="$OPTIONS -t $VDE_TAP"
+ [ -n "$VDE_OPTIONS" ] && OPTIONS="$OPTIONS $VDE_OPTIONS"
+ vde_switch $OPTIONS -p /var/run/vde-$i.pid -daemon &>/dev/null
+ [ -n "$VDE_SOCK" -a -n "$VDE_SOCK_GROUP" ] && chgrp "$VDE_SOCK_GROUP" "$VDE_SOCK"
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ stat_done
+ fi
+ if [ "$SLIRP" = "yes" ]; then
+ stat_busy "Starting slirpvde for $i"
+ [ "$SLIRP_DHCP" = "yes" ] && SP_OPTIONS="-D"
+ [ -n "$SLIRP_NETWORK" ] && SP_OPTIONS="$SP_OPTIONS -n $SLIRP_NETWORK"
+ [ -n "$SLIRP_OPTIONS" ] && SP_OPTIONS="$SP_OPTIONS $SLIRP_OPTIONS"
+ [ -n "$VDE_SOCK" ] && SP_OPTIONS="$SP_OPTIONS -s $VDE_SOCK"
+ [ -n "$VDE_SOCK_MODE" ] && SP_OPTIONS="$SP_OPTIONS -m $VDE_SOCK_MODE"
+ [ -n "$VDE_SOCK_GROUP" ] && SP_OPTIONS="$SP_OPTIONS -g $VDE_SOCK_GROUP"
+ slirpvde $SP_OPTIONS -p /var/run/slirpvde-$i.pid -daemon &>/dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ stat_done
+ fi
+ unset OPTIONS
+ unset SP_OPTIONS
+ fi
+ done
+ for i in $VDE_CONNECTION; do
+ # connect specified vde_switches
+ if [ "$(grep ^vde_plug /etc/vde/$i)" ]; then
+ stat_busy "Connecting VDE switches $i together..."
+ while read j; do
+ switch="$(echo $j | grep ^vde_plug)"
+ [ -n "$switch" ] && (dpipe $switch &)
+ done </etc/vde/$i
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ stat_done
+ fi
+ fi
+ done
+ add_daemon vde
+ ;;
+ stop)
+ # kill vde_plug if switches are connected
+ [ -n "$VDE_CONNECTION" ] && killall vde_plug >/dev/null 2>&1
+ for i in $VDE_CONFIG; do
+ [ -e /etc/vde/$i ] && . /etc/vde/$i
+ if [ "$SLIRP" = "yes" ]; then
+ stat_busy "Stopping slirpvde for $i"
+ kill $(cat /var/run/slirpvde-$i.pid) &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ stat_done
+ fi
+ rm /var/run/slirpvde-$i.pid &> /dev/null
+ fi
+ stat_busy "Stopping vde_switch $i"
+ kill $(cat /var/run/vde-$i.pid) &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ stat_done
+ fi
+ rm /var/run/vde-$i.pid &> /dev/null
+ stat_busy "Removing $i vde sockets"
+ rm -rf $VDE_SOCK $VDE_MANAGEMENT_SOCK
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ stat_done
+ fi
+ done
+ unset OPTIONS
+ unset SP_OPTIONS
+ [ -e /var/run/vde/gmon.out ] && rm /var/run/vde/gmon.out
+ rm_daemon vde
+ ;;
+ restart)
+ $0 stop
+ sleep 3
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
diff --git a/extra/vde2/vde2.install b/extra/vde2/vde2.install
new file mode 100644
index 000000000..5005fb448
--- /dev/null
+++ b/extra/vde2/vde2.install
@@ -0,0 +1,14 @@
+post_install() {
+ echo "Change /etc/conf.d/vde to your needs."
+ echo "vde config files should be placed in /etc/vde, sample files are provided."
+ echo "iptables and dhcpd sample files have been installed to '/usr/share/vde2'."
+ echo "Merge those examples, if needed to the according config files."
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+op=$1
+shift
+$op $*
diff --git a/extra/vdpau-video/PKGBUILD b/extra/vdpau-video/PKGBUILD
new file mode 100644
index 000000000..b426e758e
--- /dev/null
+++ b/extra/vdpau-video/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 117134 2011-03-28 20:41:09Z ibiru $
+# Maintainer: Ionut Biru <ibiru@archlinux.org>
+pkgname=vdpau-video
+pkgver=0.7.3
+pkgrel=2
+pkgdesc="VDPAU backend for VA API"
+arch=('i686' 'x86_64')
+url="http://www.splitted-desktop.com/~gbeauchesne/vdpau-video/"
+license=('GPL')
+depends=('libva' 'libvdpau')
+makedepends=('mesa')
+options=('!libtool')
+source=(http://www.splitted-desktop.com/~gbeauchesne/vdpau-video/${pkgname}-${pkgver}.tar.gz)
+md5sums=('18870e007ecdc50a528861fa55556364')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+}
+
+# vim:set ts=2 sw=2 et:
+
+
diff --git a/extra/vice/PKGBUILD b/extra/vice/PKGBUILD
new file mode 100644
index 000000000..cb6f922c9
--- /dev/null
+++ b/extra/vice/PKGBUILD
@@ -0,0 +1,33 @@
+# $Id: PKGBUILD 111554 2011-02-27 17:55:34Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=vice
+pkgver=2.3
+pkgrel=1
+pkgdesc="A Versatile Commodore Emulator"
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://www.viceteam.org/"
+depends=('esound' 'gcc-libs' 'giflib' 'lame' 'libxrandr' 'libxv' 'libjpeg>=8' 'libpng>=1.4.0' 'libxaw' 'libxxf86vm')
+makedepends=('xorg-font-utils')
+options=('!makeflags')
+source=(http://downloads.sourceforge.net/project/vice-emu/releases/${pkgname}-${pkgver}.tar.gz
+ vice-2.3-x11video.patch)
+md5sums=('b48d137874daad50c087a0686cbdde34'
+ '088292ce9efe785edfb2b0c7c670785e')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ patch -Np1 -i ${srcdir}/vice-2.3-x11video.patch || return 1
+ ./configure --prefix=/usr \
+ --enable-fullscreen
+ make || return 1
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/vice/vice-2.3-x11video.patch b/extra/vice/vice-2.3-x11video.patch
new file mode 100644
index 000000000..d698638c6
--- /dev/null
+++ b/extra/vice/vice-2.3-x11video.patch
@@ -0,0 +1,11 @@
+--- a/src/arch/unix/x11/xaw/x11video.c 2011-01-18 23:59:00.000000000 +0100
++++ b/src/arch/unix/x11/xaw/x11video.c 2011-02-27 18:40:52.000000000 +0100
+@@ -60,6 +60,8 @@
+ #include <X11/Xutil.h>
+ #include <X11/Intrinsic.h>
+ #include <X11/cursorfont.h>
++#include <X11/Xmd.h>
++#include <X11/extensions/shmproto.h>
+
+ #include <stdio.h>
+ #include <stdlib.h>
diff --git a/extra/vigra/PKGBUILD b/extra/vigra/PKGBUILD
new file mode 100644
index 000000000..88bd5696b
--- /dev/null
+++ b/extra/vigra/PKGBUILD
@@ -0,0 +1,35 @@
+# $Id: PKGBUILD 112123 2011-03-04 03:09:16Z eric $
+# Maintainer: AndyRTR <andyrtr@archlinux.org>
+# Contributor: Lukas Jirkovsky <l.jirkovsky@gmail.com>
+
+pkgname=vigra
+pkgver=1.7.0
+pkgrel=6
+pkgdesc="Computer vision library"
+arch=('i686' 'x86_64')
+url="http://hci.iwr.uni-heidelberg.de/vigra/"
+license=('custom:MIT')
+depends=('libpng' 'libtiff' 'gcc-libs' 'sh' 'hdf5' 'fftw')
+makedepends=('cmake' 'python-nose' 'doxygen' 'python-sphinx' 'boost' 'python-numpy')
+optdepends=('python2: for python bindings'
+ 'boost-libs: for python bindings')
+options=('!libtool')
+source=(http://kogs-www.informatik.uni-hamburg.de/~koethe/vigra/${pkgname}-${pkgver}-src.tar.gz libpng-1.4.patch)
+md5sums=('a40b3b013653f75dc84ba55b2df1fae2' 'db610e48558eb323490ad21d636bac76')
+sha1sums=('31875646cbb1928d93c96fc4da4fda31772cf8f6' '5f668c861f5fe927a4f51014afab94805db60c46')
+
+build() {
+ cd "${srcdir}"/${pkgname}-${pkgver}-src
+ patch -p1 < ../libpng-1.4.patch
+ cmake -DCMAKE_INSTALL_PREFIX=/usr \
+ -DWITH_VIGRANUMPY=1 \
+ -DDOCINSTALL=share/doc
+ make
+}
+
+package() {
+ cd "${srcdir}"/${pkgname}-${pkgver}-src
+ make DESTDIR="${pkgdir}" install
+ # license
+ install -D -m644 LICENSE.txt "${pkgdir}"/usr/share/licenses/${pkgname}/LICENSE
+}
diff --git a/extra/vigra/libpng-1.4.patch b/extra/vigra/libpng-1.4.patch
new file mode 100644
index 000000000..3c69e8eb8
--- /dev/null
+++ b/extra/vigra/libpng-1.4.patch
@@ -0,0 +1,14 @@
+diff -Naur vigra1.6.0-orig/src/impex/png.cxx vigra1.6.0/src/impex/png.cxx
+--- vigra1.6.0-orig/src/impex/png.cxx 2010-01-20 19:46:57.000000000 -0500
++++ vigra1.6.0/src/impex/png.cxx 2010-01-20 19:47:55.000000000 -0500
+@@ -270,8 +270,8 @@
+ // expand gray values to at least one byte size
+ if ( color_type == PNG_COLOR_TYPE_GRAY && bit_depth < 8 ) {
+ if (setjmp(png->jmpbuf))
+- vigra_postcondition( false,png_error_message.insert(0, "error in png_set_gray_1_2_4_to_8(): ").c_str());
+- png_set_gray_1_2_4_to_8(png);
++ vigra_postcondition( false,png_error_message.insert(0, "error in png_set_expand_gray_1_2_4_to_8(): ").c_str());
++ png_set_expand_gray_1_2_4_to_8(png);
+ bit_depth = 8;
+ }
+
diff --git a/extra/vim/PKGBUILD b/extra/vim/PKGBUILD
new file mode 100644
index 000000000..0cf39707c
--- /dev/null
+++ b/extra/vim/PKGBUILD
@@ -0,0 +1,198 @@
+# $Id: PKGBUILD 115648 2011-03-18 18:01:46Z heftig $
+# Contributor: Jan "heftig" Steffens <jan.steffens@gmail.com>
+# Maintainer: tobias [ tobias at archlinux org ]
+# Maintainer: Daniel J Griffiths <ghost1227@archlinux.us>
+
+pkgbase=vim
+pkgname=(vim gvim vim-runtime)
+_topver=7.3
+_patchlevel=138
+pkgver=${_topver}.${_patchlevel}
+__hgrev=ea399ac2c1b9
+pkgrel=1
+arch=('i686' 'x86_64')
+license=('custom:vim')
+url="http://www.vim.org"
+makedepends=('gpm' 'perl' 'python2>=2.7.1' 'ruby' 'libxt' 'desktop-file-utils' 'gtk2'
+ 'gettext' 'pkgconfig' 'mercurial' 'rsync' 'sed')
+source=(pythoncomplete.vim::http://www.vim.org/scripts/download_script.php\?src_id=10872
+ vimrc archlinux.vim gvim.desktop)
+md5sums=('6e7adfbd5d26c1d161030ec203a7f243'
+ 'e57777374891063b9ca48a1fe392ac05'
+ '10353a61aadc3f276692d0e17db1478e'
+ '4b83e5fe0e534c53daaba91dd1cd4cbb')
+
+__hgroot='http://vim.googlecode.com/hg/'
+__hgrepo='vim'
+__hgbranch='default'
+
+_versiondir="vim${_topver//./}"
+
+##### Build #####
+
+build() {
+ cd ${srcdir}
+
+ msg2 'Checking out source from Mercurial...'
+
+ if [[ -d ${__hgrepo} ]]; then
+ cd ${__hgrepo}
+ hg pull -b ${__hgbranch}|| warning 'hg pull failed!'
+ hg update -r ${__hgrev}
+ else
+ hg clone -b ${__hgbranch} -u ${__hgrev} "${__hgroot}${__hgrepo}" ${__hgrepo}
+ cd ${__hgrepo}
+ fi
+
+ if (( $(hg id -n) < $(hg id -nr ${__hgbranch}) )); then
+ warning 'You are not building the latest revision!'
+ warning "Consider updating __hgrev to $(hg id -r ${__hgbranch})."
+ sleep 10
+ fi
+
+ cd ..
+ rm -rf vim-build gvim-build
+ rsync -a --exclude='.hg/' ${__hgrepo}/ vim-build
+
+ msg2 'Patching...'
+
+ # define the place for the global (g)vimrc file (set to /etc/vimrc)
+ sed -i 's|^.*\(#define SYS_.*VIMRC_FILE.*"\) .*$|\1|' \
+ vim-build/src/feature.h
+ sed -i 's|^.*\(#define VIMRC_FILE.*"\) .*$|\1|' \
+ vim-build/src/feature.h
+ # fix python name
+ sed -i -e 's|vi_cv_path_python, python|vi_cv_path_python, python2|' \
+ vim-build/src/configure.in
+ (cd vim-build/src && autoconf)
+
+ msg2 'Building...'
+
+ cp -a vim-build gvim-build
+
+ cd ${srcdir}/vim-build
+
+ ./configure --prefix=/usr --localstatedir=/var/lib/vim \
+ --mandir=/usr/share/man --with-compiledby=ArchLinux \
+ --with-features=big --enable-gpm --enable-acl --with-x=no \
+ --disable-gui --enable-multibyte --enable-cscope \
+ --disable-netbeans --enable-perlinterp --disable-pythoninterp \
+ --disable-rubyinterp
+
+ make
+
+ cd ${srcdir}/gvim-build
+
+ ./configure --prefix=/usr --localstatedir=/var/lib/vim \
+ --mandir=/usr/share/man --with-compiledby=ArchLinux \
+ --with-features=big --enable-gpm --enable-acl --with-x=yes \
+ --enable-gui=gtk2 --enable-multibyte --enable-cscope \
+ --enable-netbeans --enable-perlinterp --enable-pythoninterp \
+ --enable-rubyinterp
+
+ make
+}
+
+##### Packaging #####
+
+package_vim() {
+ pkgdesc='Vi Improved, a highly configurable, improved version of the vi text editor'
+ depends=("vim-runtime=${pkgver}-${pkgrel}" 'gpm' 'perl')
+ conflicts=('gvim')
+
+ cd ${srcdir}/vim-build
+ make -j1 VIMRCLOC=/etc DESTDIR=${pkgdir} install
+
+ # provided by (n)vi in core
+ rm ${pkgdir}/usr/bin/{ex,view}
+
+ # delete some manpages
+ find ${pkgdir}/usr/share/man -type d -name 'man1' 2>/dev/null | \
+ while read _mandir; do
+ cd ${_mandir}
+ rm -f ex.1 view.1 # provided by (n)vi
+ rm -f evim.1 # this does not make sense if we have no GUI
+ done
+
+ # Runtime provided by runtime package
+ rm -r ${pkgdir}/usr/share/vim
+
+ # license
+ install -dm755 ${pkgdir}/usr/share/licenses/vim
+ ln -s /usr/share/vim/${_versiondir}/doc/uganda.txt \
+ ${pkgdir}/usr/share/licenses/vim/license.txt
+}
+
+package_gvim() {
+ pkgdesc='Vi Improved, a highly configurable, improved version of the vi text editor (with advanced features, such as a GUI)'
+ depends=("vim-runtime=${pkgver}-${pkgrel}" 'gpm' 'perl' 'python2>=2.7.1' 'ruby' 'libxt'
+ 'desktop-file-utils' 'gtk2')
+ provides=("vim=${pkgver}-${pkgrel}")
+ conflicts=('vim')
+ install=gvim.install
+
+ cd ${srcdir}/gvim-build
+ make -j1 VIMRCLOC=/etc DESTDIR=${pkgdir} install
+
+ # provided by (n)vi in core
+ rm ${pkgdir}/usr/bin/{ex,view}
+
+ # delete some manpages
+ find ${pkgdir}/usr/share/man -type d -name 'man1' 2>/dev/null | \
+ while read _mandir; do
+ cd ${_mandir}
+ rm -f ex.1 view.1 # provided by (n)vi
+ done
+
+ # Move the runtime for later packaging
+ mv ${pkgdir}/usr/share/vim ${srcdir}/runtime-install
+
+ # freedesktop links
+ install -Dm644 ${srcdir}/gvim.desktop \
+ ${pkgdir}/usr/share/applications/gvim.desktop
+ install -Dm644 runtime/vim48x48.png ${pkgdir}/usr/share/pixmaps/gvim.png
+
+ # license
+ install -dm755 ${pkgdir}/usr/share/licenses/gvim
+ ln -s /usr/share/vim/${_versiondir}/doc/uganda.txt \
+ ${pkgdir}/usr/share/licenses/gvim/license.txt
+}
+
+package_vim-runtime() {
+ pkgdesc='Runtime for vim and gvim'
+ backup=(etc/vimrc)
+
+ # Install the runtime split from gvim
+ install -dm755 ${pkgdir}/usr/share
+ mv ${srcdir}/runtime-install ${pkgdir}/usr/share/vim
+
+ # Don't forget logtalk.dict
+ install -Dm644 ${srcdir}/gvim-build/runtime/ftplugin/logtalk.dict \
+ ${pkgdir}/usr/share/vim/${_versiondir}/ftplugin/logtalk.dict
+
+ # fix FS#17216
+ sed -i 's|messages,/var|messages,/var/log/messages.log,/var|' \
+ ${pkgdir}/usr/share/vim/${_versiondir}/filetype.vim
+
+ # patch filetype.vim for better handling of pacman related files
+ sed -i "s/rpmsave/pacsave/;s/rpmnew/pacnew/;s/,\*\.ebuild/\0,PKGBUILD*,*.install/" \
+ ${pkgdir}/usr/share/vim/${_versiondir}/filetype.vim
+ sed -i "/find the end/,+3{s/changelog_date_entry_search/changelog_date_end_entry_search/}" \
+ ${pkgdir}/usr/share/vim/${_versiondir}/ftplugin/changelog.vim
+
+ # make Aaron happy
+ install -Dm644 ${srcdir}/pythoncomplete.vim \
+ ${pkgdir}/usr/share/vim/${_versiondir}/autoload/pythoncomplete.vim
+
+ # rc files
+ install -Dm644 ${srcdir}/vimrc ${pkgdir}/etc/vimrc
+ install -Dm644 ${srcdir}/archlinux.vim \
+ ${pkgdir}/usr/share/vim/vimfiles/archlinux.vim
+
+ # license
+ install -dm755 ${pkgdir}/usr/share/licenses/vim-runtime
+ ln -s /usr/share/vim/${_versiondir}/doc/uganda.txt \
+ ${pkgdir}/usr/share/licenses/vim-runtime/license.txt
+}
+
+# vim:set sw=2 sts=2 et:
diff --git a/extra/vim/archlinux.vim b/extra/vim/archlinux.vim
new file mode 100644
index 000000000..148bb930f
--- /dev/null
+++ b/extra/vim/archlinux.vim
@@ -0,0 +1,26 @@
+" The ArchLinux global vimrc - setting only a few sane defaults
+"
+" Maintainer: Tobias Kieslich [tobias funnychar archlinux dot org]
+"
+" NEVER EDIT THIS FILE, IT'S OVERWRITTEN UPON UPGRADES, GLOBAL CONFIGURATION
+" SHALL BE DONE IN /etc/vimrc, USER SPECIFIC CONFIGURATION IN ~/.vimrc
+
+" Normally we use vim-extensions. If you want true vi-compatibility
+" remove change the following statements
+set nocompatible " Use Vim defaults instead of 100% vi compatibility
+set backspace=indent,eol,start " more powerful backspacing
+
+" Now we set some defaults for the editor
+set history=50 " keep 50 lines of command line history
+set ruler " show the cursor position all the time
+
+" Suffixes that get lower priority when doing tab completion for filenames.
+" These are files we are not likely to want to edit or read.
+set suffixes=.bak,~,.swp,.o,.info,.aux,.log,.dvi,.bbl,.blg,.brf,.cb,.ind,.idx,.ilg,.inx,.out,.toc
+
+
+if has('gui_running')
+ " Make shift-insert work like in Xterm
+ map <S-Insert> <MiddleMouse>
+ map! <S-Insert> <MiddleMouse>
+endif
diff --git a/extra/vim/gvim.desktop b/extra/vim/gvim.desktop
new file mode 100644
index 000000000..56fd61b8f
--- /dev/null
+++ b/extra/vim/gvim.desktop
@@ -0,0 +1,42 @@
+[Desktop Entry]
+Encoding=UTF-8
+Version=1.0
+Name=gVim
+Name[eo]=VIM-fasado
+Name[sv]=gVim
+Name[xx]=xx
+Comment=GTK2 enhanced vim text editor
+Comment[ar]=محرر نصوص
+Comment[bg]=ТекÑÑ‚ Редактор
+Comment[de]=Texteditor
+Comment[el]=ΔιοÏθωτής Κειμένου
+Comment[eo]=Tekstredaktilo
+Comment[et]=Tekstiredaktor
+Comment[eu]=Testu Editorea
+Comment[fi]=Tekstieditori
+Comment[he]=עורך טקסט
+Comment[is]=Textaritill
+Comment[ja]=テキストエディタ
+Comment[lt]=Teksto redaktorius
+Comment[mt]=Editur tat-test
+Comment[pt_BR]=Editor de Texto
+Comment[ro]=Editor de text
+Comment[ru]=редактор
+Comment[sk]=Textový editor
+Comment[sl]=Urejevalnik besedil
+Comment[ta]=¯¨Ã ¦¾¡ÌôÀ¡Ç÷
+Comment[tr]=Metin Düzenleyici
+Comment[uk]=Редактор текÑтів
+Comment[vi]=Trình soạn văn bản
+Comment[xx]=xx
+Comment[zh_CN]=文本编辑器
+Comment[zh_TW]=文字編輯器
+GenericName=Text Editor
+Type=Application
+TryExec=gvim
+Exec=gvim %u
+Icon=gvim
+Terminal=false
+X-MultipleArgs=false
+Categories=GTK;Application;Utility;TextEditor;
+MimeType=application/mathml+xml;application/xhtml+xml;application/x-perl;application/x-python;application/x-shellscript;audio/x-mpegurl;audio/x-scpls;image/svg+xml;message/news;message/rfc822;text/calendar;text/css;text/english;text/html;text/mrml;text/plain;text/rdf;text/rss;text/rtf;text/sgml;text/vnd.wap.wml;text/x-adasrc;text/x-bibtex;text/x-chdr;text/x-c++hdr;text/x-csrc;text/x-c++src;text/x-c;text/x-objc;text/x-csv;text/x-diff;text/x-java;text/x-katefilelist;text/x-latex;text/x-log;text/x-lyx;text/x-makefile;text/xmcd;text/xml;text/x-moc;text/x-mswinurl;text/x-objcsrc;text/x-pascal;text/x-perl;text/x-php;text/x-php-source;text/x-python;text/x-tcl;text/x-tex;text/x-vcalendar;text/x-vcard;text/x-xslfo;text/x-xslt;
diff --git a/extra/vim/gvim.install b/extra/vim/gvim.install
new file mode 100644
index 000000000..0a8d3b0a9
--- /dev/null
+++ b/extra/vim/gvim.install
@@ -0,0 +1,13 @@
+post_install() {
+ echo -n "Updating desktop and mime database..."
+ update-desktop-database -q
+ echo "done."
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ post_install $1
+}
diff --git a/extra/vim/vimrc b/extra/vim/vimrc
new file mode 100644
index 000000000..92d3ff980
--- /dev/null
+++ b/extra/vim/vimrc
@@ -0,0 +1,16 @@
+" All system-wide defaults are set in $VIMRUNTIME/archlinux.vim (usually just
+" /usr/share/vim/vimfiles/archlinux.vim) and sourced by the call to :runtime
+" you can find below. If you wish to change any of those settings, you should
+" do it in this file (/etc/vimrc), since archlinux.vim will be overwritten
+" everytime an upgrade of the vim packages is performed. It is recommended to
+" make changes after sourcing archlinux.vim since it alters the value of the
+" 'compatible' option.
+
+" This line should not be removed as it ensures that various options are
+" properly set to work with the Vim-related packages.
+runtime! archlinux.vim
+
+" If you prefer the old-style vim functionalty, add 'runtime! vimrc_example.vim'
+" Or better yet, read /usr/share/vim/vim72/vimrc_example.vim or the vim manual
+" and configure vim to your own liking!
+
diff --git a/extra/vinagre/PKGBUILD b/extra/vinagre/PKGBUILD
new file mode 100644
index 000000000..17c01726d
--- /dev/null
+++ b/extra/vinagre/PKGBUILD
@@ -0,0 +1,32 @@
+# $Id: PKGBUILD 94920 2010-10-12 14:39:07Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Maintainer: Allan McRae <mcrae_allan@hotmail.com>
+# Contributor: lp76 <l.peduto@gmail.com>
+
+pkgname=vinagre
+pkgver=2.30.3
+pkgrel=1
+pkgdesc="A VNC Client for the GNOME Desktop"
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://www.gnome.org/projects/vinagre/"
+install=vinagre.install
+depends=('libgnome-keyring>=2.32.0' 'gtk-vnc>=0.3.10' 'avahi>=0.6.27' 'desktop-file-utils' 'hicolor-icon-theme' 'telepathy-glib>=0.12.0' 'gconf>=2.32.0')
+makedepends=('gnome-doc-utils>=0.20.1' 'intltool' 'gnome-panel-bonobo')
+optdepends=('gnome-panel-bonobo: Remote desktop viewer applet')
+groups=('gnome-extra')
+options=('!emptydirs' '!libtool')
+source=(http://ftp.gnome.org/pub/GNOME/sources/vinagre/2.30/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('28bfc70a816bc3f1e71ada82e260c39ee2dac693cb7859323b06c8b1452a39f4')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc --disable-scrollkeeper \
+ --libexecdir=/usr/lib/vinagre
+ make
+ make GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 DESTDIR="${pkgdir}" install
+
+ install -d -m755 "${pkgdir}/usr/share/gconf/schemas"
+ gconf-merge-schema "${pkgdir}/usr/share/gconf/schemas/${pkgname}.schemas" --domain vinagre ${pkgdir}/etc/gconf/schemas/*.schemas
+ rm -f ${pkgdir}/etc/gconf/schemas/*.schemas
+}
diff --git a/extra/vinagre/vinagre.install b/extra/vinagre/vinagre.install
new file mode 100644
index 000000000..ffccf65d5
--- /dev/null
+++ b/extra/vinagre/vinagre.install
@@ -0,0 +1,26 @@
+pkgname=vinagre
+
+post_install() {
+ usr/sbin/gconfpkg --install ${pkgname}
+ 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() {
+ pre_remove $1
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ usr/sbin/gconfpkg --uninstall ${pkgname}
+}
+
+post_remove() {
+ update-desktop-database -q
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+ update-mime-database usr/share/mime > /dev/null
+}
diff --git a/extra/vino/PKGBUILD b/extra/vino/PKGBUILD
new file mode 100644
index 000000000..7298ca857
--- /dev/null
+++ b/extra/vino/PKGBUILD
@@ -0,0 +1,33 @@
+# $Id: PKGBUILD 112935 2011-03-07 19:28:46Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=vino
+pkgver=2.32.1
+pkgrel=1
+pkgdesc="a VNC server for the GNOME desktop"
+arch=('i686' 'x86_64')
+license=('GPL')
+depends=('libnotify>=0.7.1' 'libxtst' 'libunique>=1.1.6' 'libsm' 'gconf>=2.32.0' 'libsoup>=2.32.1' 'telepathy-glib>=0.12.4' 'gtk2>=2.22.1'
+ 'libgnome-keyring>=2.32' 'avahi>=0.6.27')
+makedepends=('intltool' 'networkmanager')
+groups=('gnome-extra')
+url="http://www.gnome.org"
+options=(!emptydirs)
+install=vino.install
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.32/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('8ec3cb84216323660d6301e02f5853f928789c20be68ded538dd849eafac4087')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --libexecdir=/usr/lib/vino \
+ --localstatedir=/var \
+ --enable-gnome-keyring \
+ --enable-avahi
+ make
+ 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 vino ${pkgdir}/etc/gconf/schemas/*.schemas
+ rm -f ${pkgdir}/etc/gconf/schemas/*.schemas
+}
diff --git a/extra/vino/vino.install b/extra/vino/vino.install
new file mode 100644
index 000000000..3bc7d3917
--- /dev/null
+++ b/extra/vino/vino.install
@@ -0,0 +1,17 @@
+pkgname=vino
+
+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/extra/virtuoso/PKGBUILD b/extra/virtuoso/PKGBUILD
new file mode 100644
index 000000000..db2433971
--- /dev/null
+++ b/extra/virtuoso/PKGBUILD
@@ -0,0 +1,38 @@
+# $Id $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Massimiliano Torromeo <massimiliano DOT torromeo AT google mail service>
+
+pkgname=virtuoso
+pkgver=6.1.2
+pkgrel=1
+arch=('i686' 'x86_64')
+pkgdesc='A scalable cross-platform server that combines SQL/RDF/XML Data Management with Web Application Server and Web Services Platform functionality'
+url='http://virtuoso.openlinksw.com/wiki/main/Main/'
+license=('GPL')
+depends=('openssl')
+makedepends=('bison' 'flex')
+options=('!libtool' '!makeflags')
+source=("http://downloads.sourceforge.net/${pkgname}/${pkgname}-opensource-${pkgver}.tar.gz")
+md5sums=('0519e1f104428e0c8b25fad89e3c57ef')
+
+build() {
+ cd ${srcdir}/${pkgname}-opensource-${pkgver}
+
+ ./configure --prefix=/usr \
+ --localstatedir=/var \
+ --sysconfdir=/etc \
+ --disable-rendezvous \
+ --disable-hslookup \
+ --disable-all-vads
+ make
+}
+
+package() {
+ # install server
+ cd ${srcdir}/${pkgname}-opensource-${pkgver}/binsrc/virtuoso
+ make DESTDIR=${pkgdir} install
+
+ # install driver
+ cd ${srcdir}/${pkgname}-opensource-${pkgver}/binsrc/driver
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/vlc/PKGBUILD b/extra/vlc/PKGBUILD
new file mode 100644
index 000000000..40ab855bc
--- /dev/null
+++ b/extra/vlc/PKGBUILD
@@ -0,0 +1,92 @@
+# $Id: PKGBUILD 117111 2011-03-28 19:51:51Z ibiru $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Sarah Hay <sarahhay@mb.sympatico.ca>
+# Contributor: Martin Sandsmark <martin.sandsmark@kde.org>
+
+pkgbase=vlc
+pkgname=('vlc' 'vlc-plugin')
+pkgver=1.1.8
+pkgrel=2
+arch=('i686' 'x86_64')
+url="http://www.videolan.org/vlc/"
+license=('GPL')
+makedepends=('a52dec' 'fluidsynth' 'libmtp' 'libdvbpsi' 'lirc-utils'
+ 'libdca' 'qt' 'libproxy' 'sdl_image' 'libdvdnav' 'mesa'
+ 'lua' 'v4l-utils' 'libcddb' 'smbclient' 'libmatroska' 'zvbi'
+ 'taglib' 'sysfsutils' 'libmpcdec' 'ffmpeg' 'faad2'
+ 'libshout' 'libmad' 'fribidi' 'libmpeg2' 'libmodplug'
+ 'avahi' 'ttf-freefont' 'libxv' 'libass' 'xdg-utils' 'libxpm'
+ 'xulrunner' 'pkgconfig' 'live-media' 'libnotify' 'libcdio'
+ 'flac' 'libtheora' 'alsa-lib' 'jack' 'kdelibs' 'udev'
+ 'libraw1394' 'libdc1394' 'libavc1394' 'libva' 'libpulse')
+options=('!libtool')
+source=("http://download.videolan.org/pub/videolan/${pkgbase}/${pkgver}/${pkgbase}-${pkgver}.tar.bz2")
+md5sums=('c0065ec11b6fd12167cd440cbe0ef0d9')
+
+build() {
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+
+ sed -i -e 's:truetype/freefont:TTF:g' modules/misc/freetype.c
+ ./configure --prefix=/usr \
+ --disable-rpath \
+ --enable-faad \
+ --enable-v4l \
+ --enable-snapshot \
+ --enable-dbus-control \
+ --enable-nls \
+ --enable-lirc \
+ --enable-pvr \
+ --enable-ncurses \
+ --enable-mozilla \
+ --with-live555-tree=/usr/lib/live \
+ --enable-realrtsp
+ make
+}
+
+package_vlc() {
+ pkgdesc="A multi-platform MPEG, VCD/DVD, and DivX player"
+ depends=('a52dec' 'fluidsynth' 'libmtp' 'libdvbpsi' 'libcdio'
+ 'libdca' 'qt' 'libproxy' 'sdl_image' 'libdvdnav' 'mesa'
+ 'lua' 'v4l-utils' 'libcddb' 'smbclient' 'libmatroska' 'zvbi'
+ 'taglib' 'sysfsutils' 'libmpcdec' 'ffmpeg' 'faad2'
+ 'libshout' 'libmad' 'fribidi' 'libmpeg2' 'libmodplug'
+ 'ttf-freefont' 'libxv' 'libass' 'xdg-utils' 'desktop-file-utils')
+ optdepends=('avahi: for service discovery using bonjour protocol'
+ 'libnotify: for notification plugin'
+ 'ncurses: for ncurses interface support'
+ 'libdvdcss: for decoding encrypted DVDs'
+ 'lirc-utils: for lirc plugin'
+ 'libavc1394: for devices using the 1394ta AV/C'
+ 'libdc1394: for IEEE 1394 plugin'
+ 'kdelibs: KDE Solid hardware integration'
+ 'vdpau-video: VDPAU backend for VA API (for GPU acceleration on Nvidia cards)'
+ 'libpulse: PulseAudio support')
+ options=('!libtool')
+ conflicts=('vlc-pulse-plugin')
+ replaces=('vlc-pulse-plugin')
+ install=vlc.install
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+
+ make DESTDIR="${pkgdir}/" install
+
+ for res in 16 32 48 128; do
+ install -D -m644 "${srcdir}/vlc-${pkgver}/share/icons/${res}x${res}/vlc.png" \
+ "${pkgdir}/usr/share/icons/hicolor/${res}x${res}/apps/vlc.png"
+ done
+
+ rm -rf "${pkgdir}/usr/lib/mozilla"
+}
+
+package_vlc-plugin() {
+ pkgdesc="VLC mozilla browser plugin"
+ depends=("${pkgbase}=${pkgver}" 'nspr' 'xulrunner' 'libxpm')
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+
+ #for linking against libvlc
+ make -C src DESTDIR="${pkgdir}" install-libLTLIBRARIES
+
+ make -C projects/mozilla DESTDIR="${pkgdir}/" install
+
+ #clean up libvlc
+ make -C src DESTDIR="${pkgdir}" uninstall-libLTLIBRARIES
+}
diff --git a/extra/vlc/vlc.install b/extra/vlc/vlc.install
new file mode 100644
index 000000000..4a1091bc5
--- /dev/null
+++ b/extra/vlc/vlc.install
@@ -0,0 +1,18 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+ usr/lib/vlc/vlc-cache-gen -f usr/lib/vlc/plugins
+ update-desktop-database -q
+}
+
+post_upgrade() {
+ post_install
+}
+
+pre_remove() {
+ rm -f usr/lib/vlc/plugins/plugins-*.dat
+}
+
+post_remove() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+ update-desktop-database -q
+}
diff --git a/extra/vorbis-tools/ChangeLog b/extra/vorbis-tools/ChangeLog
new file mode 100644
index 000000000..54e3adcb8
--- /dev/null
+++ b/extra/vorbis-tools/ChangeLog
@@ -0,0 +1,26 @@
+2010-04-10 Andrea Scarpino <andrea@archlinux.org>
+
+ * vorbis-tools 1.4.0-2
+ * libao 1.0 rebuild
+
+2010-04-10 Andrea Scarpino <andrea@archlinux.org>
+
+ * vorbis-tools 1.4.0-1
+ * Upstream release
+
+2009-10-04 Eric Belanger <eric@archlinux.org>
+
+ * vorbis-tools 1.2.0-4
+ * Added vcut tool (close FS#14749)
+ * Fixed license
+
+2008-03-15 Travis Willard <travis@archlinux.org>
+
+ * vorbis-tools 1.2.0-3
+ * Removed explicit /usr/man usage
+
+2008-03-15 Travis Willard <travis@archlinux.org>
+
+ * vorbis-tools 1.2.0-1
+ * New upstream release.
+ * Added ChangeLog
diff --git a/extra/vorbis-tools/PKGBUILD b/extra/vorbis-tools/PKGBUILD
new file mode 100644
index 000000000..706d8a8fb
--- /dev/null
+++ b/extra/vorbis-tools/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 77125 2010-04-10 21:21:48Z andrea $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+# Contributor: Judd Vinet <jvinet@zeroflux.org>
+
+pkgname=vorbis-tools
+pkgver=1.4.0
+pkgrel=2
+pkgdesc="Extra tools for Ogg-Vorbis"
+arch=('i686' 'x86_64')
+url='http://www.xiph.org/vorbis/'
+license=('GPL2')
+depends=('libao' 'libvorbis' 'curl' 'flac')
+source=(http://downloads.xiph.org/releases/vorbis/${pkgname}-${pkgver}.tar.gz)
+md5sums=('567e0fb8d321b2cd7124f8208b8b90e6')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr \
+ --without-speex \
+ --enable-vcut || return 1
+ make || return 1
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/vsftpd/PKGBUILD b/extra/vsftpd/PKGBUILD
new file mode 100644
index 000000000..259190904
--- /dev/null
+++ b/extra/vsftpd/PKGBUILD
@@ -0,0 +1,42 @@
+# $Id: PKGBUILD 111119 2011-02-24 05:05:08Z eric $
+# Maintainer: Andreas Radke <andyrtr@archlinux.org>
+# Contributor: judd <jvinet@zeroflux.org>
+
+pkgname=vsftpd
+pkgver=2.3.4
+pkgrel=1
+pkgdesc="Very Secure FTP daemon"
+arch=('i686' 'x86_64')
+url="http://vsftpd.beasts.org/"
+license=('GPL2')
+depends=('tcp_wrappers' 'openssl')
+backup=('etc/vsftpd.conf' 'etc/xinetd.d/vsftpd')
+install=vsftpd.install
+source=(ftp://vsftpd.beasts.org/users/cevans/vsftpd-$pkgver.tar.gz \
+ vsftpd.xinetd vsftpd.d)
+md5sums=('2ea5d19978710527bb7444d93b67767a' 'b07fd4609c70063c1d6b20142910c1a6'\
+ '60060a6c7db3b3b7baa1561a302e6923')
+sha1sums=('b774cc6b4c50e20f4fe9ca7f6aa74169ce7fe5ea' 'c87b4ce56dac15223694a6e86c01ea813b877596'\
+ '24f268956c24e78be0c234c6d31f41487922eafe')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ # build-time config
+ sed \
+ -e 's|^#undef VSF_BUILD_TCPWRAPPERS$|#define VSF_BUILD_TCPWRAPPERS|' \
+ -e 's|^#undef VSF_BUILD_SSL$|#define VSF_BUILD_SSL|' \
+ -i builddefs.h
+ make CFLAGS="${CFLAGS}"
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ install -D -m755 vsftpd "${pkgdir}/usr/sbin/vsftpd"
+ install -D -m644 vsftpd.conf "${pkgdir}/etc/vsftpd.conf"
+ install -D -m644 vsftpd.8 "${pkgdir}/usr/share/man/man8/vsftpd.8"
+ install -D -m644 vsftpd.conf.5 "${pkgdir}/usr/share/man/man5/vsftpd.conf.5"
+ install -D -m644 "${srcdir}/vsftpd.xinetd" "${pkgdir}/etc/xinetd.d/vsftpd"
+ install -D -m755 "${srcdir}/vsftpd.d" "${pkgdir}/etc/rc.d/vsftpd"
+
+ install -d -m755 "${pkgdir}/usr/share/empty"
+}
diff --git a/extra/vsftpd/vsftpd.d b/extra/vsftpd/vsftpd.d
new file mode 100644
index 000000000..27310855c
--- /dev/null
+++ b/extra/vsftpd/vsftpd.d
@@ -0,0 +1,67 @@
+#!/bin/bash
+
+daemon_name=vsftpd
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+get_pid() {
+ pidof -o %PPID $daemon_name
+}
+
+case "$1" in
+ start)
+ stat_busy "Starting $daemon_name daemon"
+
+ PID=$(get_pid)
+ if [ -z "$PID" ]; then
+ [ -f /var/run/$daemon_name.pid ] && rm -f /var/run/$daemon_name.pid
+ # RUN
+ $daemon_name &
+ #
+ if [ $? -gt 0 ]; then
+ stat_fail
+ exit 1
+ else
+ echo $(get_pid) > /var/run/$daemon_name.pid
+ add_daemon $daemon_name
+ stat_done
+ fi
+ else
+ stat_fail
+ exit 1
+ fi
+ ;;
+
+ stop)
+ stat_busy "Stopping $daemon_name daemon"
+ PID=$(get_pid)
+ # KILL
+ [ ! -z "$PID" ] && kill $PID &> /dev/null
+ #
+ if [ $? -gt 0 ]; then
+ stat_fail
+ exit 1
+ else
+ rm -f /var/run/$daemon_name.pid &> /dev/null
+ rm_daemon $daemon_name
+ stat_done
+ fi
+ ;;
+
+ restart)
+ $0 stop
+ sleep 3
+ $0 start
+ ;;
+
+ status)
+ stat_busy "Checking $daemon_name status";
+ ck_status $daemon_name
+ ;;
+
+ *)
+ echo "usage: $0 {start|stop|restart|status}"
+esac
+
+exit 0
diff --git a/extra/vsftpd/vsftpd.install b/extra/vsftpd/vsftpd.install
new file mode 100644
index 000000000..48f134e24
--- /dev/null
+++ b/extra/vsftpd/vsftpd.install
@@ -0,0 +1,17 @@
+# arg 1: the new package version
+post_install() {
+ if [ -f lib/modules/`uname -r`/kernel/security/capability.ko ]; then
+ echo ">>> It appears that your current kernel has linux security"
+ echo ">>> capabilities built as a module. vsftpd requires this"
+ echo ">>> functionality to operate."
+ echo ">>>"
+ echo ">>> To activate the module, please load it now (modprobe capability)."
+ echo ">>> Also, you should add it to your MODULES array in rc.conf, so"
+ echo ">>> it will be activated automatically at boot-up."
+ fi
+}
+
+post_upgrade() {
+ post_install $1
+}
+
diff --git a/extra/vsftpd/vsftpd.xinetd b/extra/vsftpd/vsftpd.xinetd
new file mode 100644
index 000000000..eff2eb3db
--- /dev/null
+++ b/extra/vsftpd/vsftpd.xinetd
@@ -0,0 +1,10 @@
+service ftp
+{
+ socket_type = stream
+ wait = no
+ user = root
+ server = /usr/sbin/vsftpd
+ log_on_success += HOST DURATION
+ log_on_failure += HOST
+ disable = yes
+}
diff --git a/extra/vte/PKGBUILD b/extra/vte/PKGBUILD
new file mode 100644
index 000000000..50ed147a1
--- /dev/null
+++ b/extra/vte/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 101302 2010-11-28 20:55:38Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=vte
+pkgver=0.26.2
+pkgrel=1
+pkgdesc="Virtual Terminal Emulator library"
+arch=('i686' 'x86_64')
+license=('LGPL')
+depends=('gtk2>=2.22.0')
+options=('!libtool')
+makedepends=('pygtk>=2.22.0' 'intltool' 'gobject-introspection')
+url="http://www.gnome.org"
+source=(http://ftp.gnome.org/pub/GNOME/sources/vte/0.26/vte-${pkgver}.tar.bz2)
+sha256sums=('f02c350340266c9515a98b8f69c72b4bdc53b352cd053624a63a7cb97ddec9bd')
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ PYTHON=python2 ./configure --prefix=/usr --sysconfdir=/etc \
+ --libexecdir=/usr/lib/vte \
+ --localstatedir=/var --disable-static \
+ --enable-introspection
+ make
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/w3m/PKGBUILD b/extra/w3m/PKGBUILD
new file mode 100644
index 000000000..80e79e08b
--- /dev/null
+++ b/extra/w3m/PKGBUILD
@@ -0,0 +1,37 @@
+# $Id: PKGBUILD 106210 2011-01-15 11:51:10Z bisson $
+# Contributor: dorphell <dorphell@archlinux.org>
+
+pkgname=w3m
+pkgver=0.5.3
+pkgrel=1
+pkgdesc='Text-based Web browser, as well as pager'
+arch=('i686' 'x86_64')
+url='http://w3m.sourceforge.net/'
+license=('custom')
+depends=('openssl' 'gc' 'ncurses' 'zlib')
+makedepends=('imlib2')
+optdepends=('imlib2: for graphics support')
+source=("http://downloads.sourceforge.net/sourceforge/w3m/$pkgname-$pkgver.tar.gz")
+sha1sums=('444b6c8cf7094ee95f8e9de96b37f814b9d83237')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ ./configure \
+ --prefix=/usr \
+ --libexecdir=/usr/lib \
+ --enable-image=x11,fb \
+ --with-imagelib=imlib2 \
+ --with-termlib=ncurses \
+ --disable-w3mmailer \
+ --disable-mouse
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make DESTDIR="$pkgdir" install
+
+ install -d "$pkgdir"/usr/share/{doc,licenses}/"$pkgname"
+ find doc/* | grep -v CVS | xargs -i install "{}" "$pkgdir/usr/share/doc/$pkgname/"
+ ln -s "../../doc/$pkgname/README" "$pkgdir/usr/share/licenses/$pkgname/"
+} \ No newline at end of file
diff --git a/extra/watchdog/PKGBUILD b/extra/watchdog/PKGBUILD
new file mode 100644
index 000000000..70ec8a57b
--- /dev/null
+++ b/extra/watchdog/PKGBUILD
@@ -0,0 +1,44 @@
+# $Id: PKGBUILD 111485 2011-02-27 10:22:27Z thomas $
+# Maintainer: Thomas Bächler <thomas@archlinux.org>
+
+pkgname=watchdog
+pkgver=5.9
+pkgrel=1
+pkgdesc="Watchdog daemon"
+arch=(i686 x86_64)
+url="http://sourceforge.net/projects/watchdog"
+license=('GPL')
+depends=('glibc')
+backup=(etc/watchdog.conf
+ etc/conf.d/watchdog
+ etc/conf.d/wd_keepalive)
+source=(http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.gz
+ watchdog.sh
+ watchdog.cf)
+md5sums=('d7cae3c9829f5d9a680764f314234867'
+ '854451f554718b55186599faaa8d85f6'
+ '01c1e2e13f515131180b4ebe9b8b7cc3')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ ./configure \
+ --prefix=/usr \
+ --mandir=/usr/share/man \
+ --sysconfdir=/etc \
+ --localstatedir=/var
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make install DESTDIR=${pkgdir}
+ for fil in watchdog wd_keepalive ; do
+ install -D -m755 ${srcdir}/watchdog.sh ${pkgdir}/etc/rc.d/${fil}
+ install -D -m644 ${srcdir}/watchdog.cf ${pkgdir}/etc/conf.d/${fil}
+ done
+
+ sed -i 's/watchdog/wd_keepalive/g' ${pkgdir}/etc/rc.d/wd_keepalive
+ sed -i 's/watchdog/wd_keepalive/g' ${pkgdir}/etc/conf.d/wd_keepalive
+ sed -i 's/Watchdog/Simple Watchdog/' ${pkgdir}/etc/rc.d/wd_keepalive
+}
diff --git a/extra/watchdog/watchdog.cf b/extra/watchdog/watchdog.cf
new file mode 100644
index 000000000..a33e1ea91
--- /dev/null
+++ b/extra/watchdog/watchdog.cf
@@ -0,0 +1,2 @@
+# watchdog configuration
+WATCHDOG_OPTIONS=""
diff --git a/extra/watchdog/watchdog.sh b/extra/watchdog/watchdog.sh
new file mode 100644
index 000000000..00d5078a9
--- /dev/null
+++ b/extra/watchdog/watchdog.sh
@@ -0,0 +1,44 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+PID="$( cat /var/run/watchdog.pid 2>/dev/null )"
+[ -r /etc/conf.d/watchdog ] && source /etc/conf.d/watchdog
+
+case "$1" in
+ start)
+ stat_busy "Starting Watchdog Daemon"
+
+ [ -z "$PID" ] && /usr/sbin/watchdog ${WATCHDOG_OPTIONS}
+
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon watchdog
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping Watchdog Daemon"
+
+ [ -n "$PID" ] && kill $PID &> /dev/null
+
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon watchdog
+ stat_done
+ fi
+
+ rm -f /var/run/watchdog.pid
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
diff --git a/extra/wavpack/PKGBUILD b/extra/wavpack/PKGBUILD
new file mode 100644
index 000000000..389bd0721
--- /dev/null
+++ b/extra/wavpack/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 69147 2010-02-18 00:38:05Z dgriffiths $
+# Maintainer: François Charette <firmicus ατ gmx δοτ net>
+# Contributor: Shinlun Hsieh <yngwiexx@yahoo.com.tw>
+# Contributor: Michal Hybner <dta081@gmail.com>
+pkgname=wavpack
+pkgver=4.60.1
+pkgrel=1
+pkgdesc="Audio compression format with lossless, lossy, and hybrid compression modes"
+arch=('i686' 'x86_64')
+url="http://www.wavpack.com/"
+license=('custom')
+depends=('glibc')
+options=('!libtool')
+source=(http://www.wavpack.com/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('7bb1528f910e4d0003426c02db856063')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr --enable-mmx --disable-static || return 1
+ make || return 1
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install || return 1
+ install -m755 -d ${pkgdir}/usr/share/licenses/${pkgname}
+ install -m644 license.txt ${pkgdir}/usr/share/licenses/${pkgname}/ || return 1
+ rm -f ${pkgdir}/usr/lib/*.a
+}
diff --git a/extra/webkit-sharp/PKGBUILD b/extra/webkit-sharp/PKGBUILD
new file mode 100644
index 000000000..e8e16c578
--- /dev/null
+++ b/extra/webkit-sharp/PKGBUILD
@@ -0,0 +1,28 @@
+# Maintainer: Daniel Isenmann <daniel@archlinux.org>
+# Contributor: TDY <tdy@gmx.com>
+# Contributor: Paul Burton <paulburton89@gmail.com>
+# Contributor: rabyte <rabyte__gmail>
+
+pkgname=webkit-sharp
+pkgver=0.3
+pkgrel=1
+pkgdesc="Mono/.NET bindings for the WebKit rendering engine"
+arch=('i686' 'x86_64')
+url="http://www.mono-project.com/"
+license=('custom:MIT')
+depends=('gtk-sharp-2' 'libwebkit')
+makedepends=('pkgconfig>=0.9.0')
+source=(http://ftp.novell.com/pub/mono/sources/$pkgname/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('21482f9d5eafb0ef4acc6e790482f934')
+
+build() {
+ export MONO_SHARED_DIR="${srcdir}/.wabi"
+ mkdir -p "${MONO_SHARED_DIR}"
+
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ sed -i 's/\.1/.2/' sources/webkit-sharp.dll.config.in
+ ./configure --prefix=/usr || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+ install -Dm644 COPYING "$pkgdir/usr/share/licenses/$pkgname/COPYING"
+}
diff --git a/extra/webmin/PKGBUILD b/extra/webmin/PKGBUILD
new file mode 100644
index 000000000..98097f557
--- /dev/null
+++ b/extra/webmin/PKGBUILD
@@ -0,0 +1,215 @@
+# $Id: PKGBUILD 104516 2011-01-03 20:59:12Z tpowa $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+pkgname=webmin
+pkgver=1.530
+pkgrel=1
+pkgdesc="a web-based interface for system administration"
+arch=(i686 x86_64)
+license=('custom:webmin')
+url="http://www.webmin.com/"
+depends=('perl')
+makedepends=('perl-net-ssleay')
+backup=('etc/webmin/miniserv.conf' 'etc/webmin/miniserv.users' 'etc/webmin/config' 'etc/webmin/webmin.cats' \
+'etc/webmin/pacman/config' \
+'etc/webmin/at/config' \
+'etc/webmin/acl/config' \
+'etc/webmin/lvm/config' \
+'etc/webmin/net/config' \
+'etc/webmin/nis/config' \
+'etc/webmin/pam/config' \
+'etc/webmin/cron/config' \
+'etc/webmin/file/config' \
+'etc/webmin/grub/config' \
+'etc/webmin/init/config' \
+'etc/webmin/ipfw/config' \
+'etc/webmin/lilo/config' \
+'etc/webmin/proc/config' \
+'etc/webmin/raid/config' \
+'etc/webmin/spam/config' \
+'etc/webmin/sshd/config' \
+'etc/webmin/time/config' \
+'etc/webmin/cluster-passwd/config' \
+'etc/webmin/software/config' \
+'etc/webmin/webminlog/config' \
+'etc/webmin/cluster-webmin/config' \
+'etc/webmin/bind8/config' \
+'etc/webmin/dhcpd/config' \
+'etc/webmin/fdisk/config' \
+'etc/webmin/mount/config' \
+'etc/webmin/mysql/config' \
+'etc/webmin/quota/config' \
+'etc/webmin/samba/config' \
+'etc/webmin/shell/config' \
+'etc/webmin/squid/config' \
+'etc/webmin/adsl-client/config' \
+'etc/webmin/servers/config' \
+'etc/webmin/cluster-shell/config' \
+'etc/webmin/bandwidth/config' \
+'etc/webmin/ppp-client/config' \
+'etc/webmin/lpadmin/config' \
+'etc/webmin/apache/config' \
+'etc/webmin/firewall/config' \
+'etc/webmin/stunnel/config' \
+'etc/webmin/burner/config' \
+'etc/webmin/exports/config' \
+'etc/webmin/backup-config/config' \
+'etc/webmin/custom/config' \
+'etc/webmin/htaccess-htpasswd/config' \
+'etc/webmin/logrotate/config' \
+'etc/webmin/format/config' \
+'etc/webmin/fsdump/config' \
+'etc/webmin/passwd/config' \
+'etc/webmin/cluster-useradmin/config' \
+'etc/webmin/cluster-software/config' \
+'etc/webmin/cluster-copy/config' \
+'etc/webmin/cluster-cron/config' \
+'etc/webmin/telnet/config' \
+'etc/webmin/status/config' \
+'etc/webmin/syslog/config' \
+'etc/webmin/updown/config' \
+'etc/webmin/usermin/config' \
+'etc/webmin/webmin/config' \
+'etc/webmin/xinetd/config' \
+'etc/webmin/openslp/config' \
+'etc/webmin/procmail/config' \
+'etc/webmin/fetchmail/config' \
+'etc/webmin/postgresql/config' \
+'etc/webmin/useradmin/config' \
+'etc/webmin/mailboxes/config' \
+'etc/webmin/inittab/config' \
+'etc/webmin/change-user/config' \
+'etc/webmin/postfix/config' \
+'etc/webmin/proftpd/config' \
+'etc/webmin/pserver/config' \
+'etc/webmin/dnsadmin/config' )
+install=webmin.install
+source=(http://downloads.sourceforge.net/sourceforge/webadmin/$pkgname-$pkgver.tar.gz
+ ftp://ftp.archlinux.org/other/webmin/webmin-config.tar.bz2
+ ftp://ftp.archlinux.org/other/webmin/webmin-pacman.tar.bz2
+ webmin.rc)
+
+build() {
+ # NOTE: USE --asroot build option to avoid fakeroot error!
+ cd $startdir/src/$pkgname-$pkgver
+ # add patches from webmin.com
+ #for i in ../*.wbm
+ #do tar xvf $i
+ #done
+ #for i in ../*.wbt
+ #do tar xvf $i
+ #done
+ # delete stuff that's not needed
+ rm -f mount/freebsd-mounts*
+ rm -f mount/openbsd-mounts*
+ rm -f mount/macos-mounts*
+
+ # remove modules we do not support
+ rm -rf {bacula-backup,ldap-useradmin,mon,sentry,frox,jabber,majordomo,qmail,sendmail,sarg,wuftpd,webalizer,inetd,ipsec,pap,pptp-client,pptp-server,shorewall,smart-status,vgetty,heartbeat,cfengine,cpan,sgiexports,hpuxexports,qmailadmin,bsdexports,dfsadmin}
+
+ #remove config files from other distros
+ rm -f $(find . ! -name 'config-generic-linux' ! -name 'config-\*-linux' ! -name 'config-lib.pl' -name 'config-*')
+
+ # remove caldera theme
+ rm -rf caldera
+
+ # remove init-scripts from other distros
+ rm webmin-gentoo-init
+ rm webmin-init
+ rm webmin-caldera-init
+ rm webmin-daemon
+
+ # remove update stuff to avoid problems with updating webmin,modules and themes without pacman
+ rm -f webmin/{update.cgi,update.pl,update_sched.cgi,upgrade.cgi,edit_upgrade.cgi,install_mod.cgi,delete_mod.cgi,install_theme.cgi}
+ rm -f usermin/{upgrade.cgi,update.cgi,update.pl,edit_upgrade.cgi,install_mod.cgi,delete_mod.cgi,install_theme.cgi}
+
+ # remove modules add because we don't want files installed without pacman control
+ rm -f webmin/{install_mod.cgi,delete_mod.cgi}
+
+ # setting perl path
+ (find . -name '*.cgi' ; find . -name '*.pl') | perl perlpath.pl /usr/bin/perl -
+
+ # create dirs
+ mkdir -p $startdir/pkg/opt/webmin
+ mkdir -p $startdir/pkg/var/log/webmin
+ mkdir -p $startdir/pkg/etc/webmin
+
+ # install pam stuff
+ install -D -m 644 webmin-pam $startdir/pkg/etc/pam.d/webmin
+
+ # remove other distros and add only Archlinux don't change next line else it will not work!
+ rm os_list.txt
+ echo 'Archlinux Any version generic-linux * -d "/etc/pacman.d"' >> os_list.txt
+
+ # Add rc.conf support to boot and shutdown menu and lock editing of this module
+ cd init/
+ sed -i -e 's:^local_down=.*:local_down=Archlinux RC.CONF,3,None:g' $(find . ! -name 'config.info.pl' -name 'config.info*')
+ sed -i -e 's:^local_script=.*:local_script=Archlinux RC.LOCAL,3,None:g' $(find . ! -name 'config.info.pl' -name 'config.info*')
+ sed -i -e 's:^index_downscript=.*:index_downscript=Archlinux RC.CONF:g' lang/*
+ sed -i -e 's:^index_script=.*:index_script=Archlinux RC.LOCAL:g' lang/*
+ sed -i -e 's:^noconfig=0:noconfig=1:g' defaultacl
+
+ # Add pacman menu
+ cd $startdir/src/$pkgname-$pkgver
+ cp -rf custom/ pacman
+ cp -rf mscstyle3/custom mscstyle3/pacman
+ sed -i -e 's:^noconfig=0:noconfig=1:g' -e 's:^edit=1:edit=0:g' pacman/defaultacl
+ sed -i -e '/desc/d' -e '/longdesc/d' pacman/module.info
+ sed -i -e 's:^name=Custom:name=Pacman:g' pacman/module.info
+ echo 'category=system' >> pacman/module.info
+ echo 'desc=Pacman' >> pacman/module.info
+ sed -i -e 's:^index_title=.*:index_title=Pacman:g' pacman/lang/*
+
+ # copy stuff to right dirs
+ cd $startdir/src/$pkgname-$pkgver
+ cp -rp * $startdir/pkg/opt/webmin
+ cd $startdir/src/webmin-config
+ cp -rfp * $startdir/pkg/opt/webmin
+
+ # define parameters for setup.sh
+ config_dir=$startdir/pkg/etc/webmin
+ var_dir=$startdir/pkg/var/log/webmin
+ perl=/usr/bin/perl
+ autoos=1
+ port=10000
+ login=root
+ crypt="XXX"
+ ssl=1
+ atboot=0
+ nostart=1
+ nochown=1
+ autothird=1
+ nouninstall=1
+ noperlpath=1
+ atbootyn=n
+ tempdir=$startdir/pkg/tmp
+ export config_dir var_dir perl autoos port tempdir login crypt ssl nochown autothird nouninstall nostart noperlpath atbootyn
+
+ # Fix setup.sh
+ sed -i -e 's:read atbootyn::g' -e 's:exit 13::g' $startdir/pkg/opt/webmin/setup.sh
+ $startdir/pkg/opt/webmin/setup.sh
+
+ # Fixup the config files to use their real locations
+ sed -i 's:^pidfile=.*$:pidfile=/var/run/webmin.pid:' $startdir/pkg/etc/webmin/miniserv.conf
+ find $startdir/pkg/etc/webmin -type f -exec sed -i "s:$startdir/pkg::g" {} \;
+
+ # make it only accessible by localhost
+ echo 'allow=127.0.0.1' >> $startdir/pkg/etc/webmin/miniserv.conf
+
+ # install pacman menu
+ cd $startdir/src/webmin-pacman/config
+ cp -rfp * $startdir/pkg/etc/webmin/pacman
+
+ #install rc file
+ install -D -m 755 $startdir/src/webmin.rc $startdir/pkg/etc/rc.d/webmin
+
+ # delete temp dir
+ rm -r $startdir/pkg/tmp
+ # change sticky bit
+ chmod 0644 $pkgdir/opt/webmin/man/config-generic-linux
+ # install license
+ install -m 644 -D $startdir/src/$pkgname-$pkgver/LICENCE $startdir/pkg/usr/share/licenses/webmin/LICENCE
+}
+md5sums=('acf531f248bd575a0617472faa5013d3'
+ 'da6bea412a5be8cf82a813078fec5847'
+ 'bfebb75bb94029b48c46b7f1ba1aa811'
+ '0673e51af0e81418b4a6c1e205f7e5cd')
diff --git a/extra/webmin/webmin-config.tar.bz2 b/extra/webmin/webmin-config.tar.bz2
new file mode 100644
index 000000000..a51b43dcd
--- /dev/null
+++ b/extra/webmin/webmin-config.tar.bz2
Binary files differ
diff --git a/extra/webmin/webmin-pacman.tar.bz2 b/extra/webmin/webmin-pacman.tar.bz2
new file mode 100644
index 000000000..e8ad9fd7b
--- /dev/null
+++ b/extra/webmin/webmin-pacman.tar.bz2
Binary files differ
diff --git a/extra/webmin/webmin.install b/extra/webmin/webmin.install
new file mode 100644
index 000000000..efdd9291d
--- /dev/null
+++ b/extra/webmin/webmin.install
@@ -0,0 +1,35 @@
+# arg 1: the new package version
+post_install() {
+ local crypt=$(grep "^root:" ${ROOT}/etc/shadow | cut -f 2 -d :)
+ crypt=${crypt//\\/\\\\}
+ crypt=${crypt//\//\\\/}
+ sed -i "s/root:XXX/root:${crypt}/" /etc/webmin/miniserv.users
+
+cat << EOF
+Note:
+==> It is not allowed to install 3rd party modules, or delete existing modules.
+==> Please write your own PKGBUILDS for 3rd party modules and additional themes.
+Setup:
+==> To make webmin start at boot time, add webmin to rc.conf daemons
+==> Point your web browser to http://localhost:10000 to use webmin.
+==> The access is restricted to localhost, if you want to connect from other locations
+==> change /etc/webmin/miniserv.conf to something like that: allow=127.0.0.1 <your-ip>
+==> If you want to have ssl encryption please install 'perl-net-ssleay' additional.
+EOF
+# fix man module
+ cd /opt/webmin/man
+ for i in $(find . -name '*.gz'); do
+ gzip -df $i
+ done
+}
+
+# arg 1: the new package version
+# arg 2: the old package version
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ # uninstall unzipped files
+ rm -r /opt/webmin/man
+}
diff --git a/extra/webmin/webmin.rc b/extra/webmin/webmin.rc
new file mode 100644
index 000000000..ee83fbea2
--- /dev/null
+++ b/extra/webmin/webmin.rc
@@ -0,0 +1,44 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+start=/etc/webmin/start
+stop=/etc/webmin/stop
+lockfile=/var/lock/webmin
+
+case "$1" in
+'start')
+ stat_busy "Starting Webmin daemon"
+ $start >/dev/null 2>&1 </dev/null
+ RETVAL=$?
+ if [ "$RETVAL" = "0" ]; then
+ touch $lockfile >/dev/null 2>&1
+ stat_done
+ else
+ stat_fail
+fi
+;;
+
+'stop')
+ stat_busy "Stopping Webmin daemon"
+ $stop >/dev/null 2>&1 </dev/null
+ RETVAL=$?
+ if [ "$RETVAL" = "0" ]; then
+ rm -f $lockfile
+ stat_done
+ else
+ stat_fail
+fi
+;;
+
+'restart')
+ $stop && $start
+ RETVAL=$?
+;;
+*)
+echo "Usage: $0 { start | stop | restart }"
+RETVAL=1
+;;
+esac
+exit $RETVAL \ No newline at end of file
diff --git a/extra/weechat/PKGBUILD b/extra/weechat/PKGBUILD
new file mode 100644
index 000000000..bb3be2eb4
--- /dev/null
+++ b/extra/weechat/PKGBUILD
@@ -0,0 +1,33 @@
+# $Id: PKGBUILD 106274 2011-01-16 13:41:19Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: lucke <lucke at o2 dot pl>
+
+pkgname=weechat
+pkgver=0.3.4
+pkgrel=1
+pkgdesc="Fast, light and extensible IRC client (curses UI)"
+arch=('i686' 'x86_64')
+url="http://www.weechat.org/"
+license=('GPL')
+depends=('gnutls')
+makedepends=('cmake' 'pkgconfig' 'perl' 'python2' 'lua' 'tcl' 'ruby' 'aspell')
+optdepends=('perl' 'python2' 'lua' 'tcl' 'ruby' 'aspell')
+options=('!libtool')
+source=(http://www.weechat.org/files/src/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('79207fea567548462fe36397e633d287')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ mkdir build
+ cd build
+ cmake .. -DPREFIX=/usr \
+ -DPYTHON_EXECUTABLE=/usr/bin/python2 \
+ -DPYTHON_LIBRARY=/usr/lib/libpython2.7.so || return 1
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}/build"
+
+ make DESTDIR="${pkgdir}/" install || return 1
+}
diff --git a/extra/wesnoth/PKGBUILD b/extra/wesnoth/PKGBUILD
new file mode 100644
index 000000000..a60a35818
--- /dev/null
+++ b/extra/wesnoth/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 112017 2011-03-03 06:20:54Z eric $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Tobias Powalowski <tpowa@archlinux.org>
+# Contributor: Jacobo Arvelo <unix4all@ya.com>
+# Contributor: Douglas Soares de Andrade <douglas@archlinux.org>
+
+pkgname=wesnoth
+pkgver=1.8.5
+pkgrel=3
+pkgdesc="A turn-based strategy game on a fantasy world"
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://www.wesnoth.org/"
+depends=('sdl_ttf' 'sdl_net' 'sdl_mixer' 'sdl_image' 'fribidi' 'boost-libs' 'pango' 'lua' "wesnoth-data=${pkgver}" 'dbus-core')
+makedepends=('boost')
+install=wesnoth.install
+source=(http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.bz2
+ wesnoth-libpng-1.4.0.patch)
+md5sums=('a800285d1406690755dd0ea22b98b6df'
+ 'ca7412ffc4682ef55ddf82d56b0e2f08')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i ../wesnoth-libpng-1.4.0.patch
+ ./autogen.sh
+ ./configure --prefix=/usr --localstatedir=/var --enable-tools --enable-editor --enable-server
+ make DESTDIR="${pkgdir}" install-exec
+}
diff --git a/extra/wesnoth/wesnoth-libpng-1.4.0.patch b/extra/wesnoth/wesnoth-libpng-1.4.0.patch
new file mode 100644
index 000000000..be8adfcaa
--- /dev/null
+++ b/extra/wesnoth/wesnoth-libpng-1.4.0.patch
@@ -0,0 +1,14 @@
+diff -Nur wesnoth-1.8.orig/src/tools/exploder_utils.cpp wesnoth-1.8/src/tools/exploder_utils.cpp
+--- wesnoth-1.8.orig/src/tools/exploder_utils.cpp 2010-01-01 15:16:49.000000000 +0200
++++ wesnoth-1.8/src/tools/exploder_utils.cpp 2010-04-08 17:38:03.066201123 +0300
+@@ -174,8 +174,8 @@
+ //TODO: review whether providing NULL error handlers is something
+ //sensible
+ png_struct* png_ptr = png_create_write_struct
+- (PNG_LIBPNG_VER_STRING, reinterpret_cast<png_voidp>(png_voidp_NULL),
+- png_error_ptr_NULL, png_error_ptr_NULL);
++ (PNG_LIBPNG_VER_STRING, reinterpret_cast<png_voidp>(NULL),
++ NULL, NULL);
+ if(!png_ptr)
+ throw exploder_failure("Unable to initialize the png write structure");
+
diff --git a/extra/wesnoth/wesnoth.install b/extra/wesnoth/wesnoth.install
new file mode 100644
index 000000000..4f1e419ae
--- /dev/null
+++ b/extra/wesnoth/wesnoth.install
@@ -0,0 +1,9 @@
+# arg 1: the new package version
+post_install() {
+cat << EOF
+Note:
+==> If you experience sound problems try setting your SDL_AUDIODRIVER environment variable to "dma"
+==> eg. export SDL_AUDIODRIVER="dma" ; wesnoth
+==> If "dma" doesn't work,other options are: dsp,alsa,artsc,esd,nas try to find the right output.
+EOF
+}
diff --git a/extra/whois/PKGBUILD b/extra/whois/PKGBUILD
new file mode 100644
index 000000000..99e4b2a91
--- /dev/null
+++ b/extra/whois/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 108896 2011-02-04 18:32:02Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=whois
+pkgver=5.0.11
+pkgrel=1
+pkgdesc="The whois client by Marco d'Itri"
+arch=('i686' 'x86_64')
+url="http://www.linux.it/~md/software/"
+license=('GPL')
+depends=('libidn')
+makedepends=('perl')
+source=("http://ftp.debian.org/debian/pool/main/w/whois/${pkgname}_${pkgver}.tar.gz")
+md5sums=('942e2d90b0bcd7d22765c8e3344fe118')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ make prefix=/usr CFLAGS="$CFLAGS" HAVE_LIBIDN=1
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ make prefix=/usr BASEDIR="${pkgdir}" install-whois
+}
diff --git a/extra/windowmaker-crm-git/PKGBUILD b/extra/windowmaker-crm-git/PKGBUILD
new file mode 100644
index 000000000..6a4789552
--- /dev/null
+++ b/extra/windowmaker-crm-git/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 94218 2010-10-05 16:33:23Z daniel $
+# Maintainer: Daniel Isenmann <daniel@archlinux.org>
+
+pkgname=windowmaker-crm-git
+pkgver=20101005
+pkgrel=1
+pkgdesc="An X11 window manager with a NEXTSTEP look and feel - git version from Carlos R. Mafra"
+arch=(i686 x86_64)
+url="http://www.windowmaker.org"
+license=('GPL' 'custom')
+depends=('libxinerama' 'libxrandr' 'libpng' 'libxpm' 'libxft' 'libtiff>=3.9.1' 'giflib' 'libxmu')
+options=('!libtool')
+provides=('windowmaker')
+conflicts=('windowmaker')
+source=(ftp://ftp.archlinux.org/other/windowmaker/windowmaker-$pkgver.tar.gz wmaker.desktop)
+md5sums=('8cc7e736a8d7e446f696b80fc7dcb79c'
+ '2fba97bebfd691836b92b8f0db79ff13')
+
+build() {
+ cd $srcdir/windowmaker-$pkgver
+ [ -z "$LINGUAS" ] && export LINGUAS="`ls po/*.po | sed 's:po/\(.*\)\.po$:\1:'`"
+ ./autogen.sh
+ ./configure --prefix=/usr --sysconfdir=/etc --enable-xinerama \
+ --with-nlsdir=/usr/share/locale --with-gnustepdir=/usr/lib/GNUstep \
+ --enable-usermenu --enable-modelock
+ make || return 1
+ make DESTDIR=$pkgdir install || return 1
+ install -D -m644 COPYING.WTFPL $pkgdir/usr/share/licenses/$pkgname/COPYING.WTFPL
+ install -D -m644 $srcdir/wmaker.desktop $pkgdir/usr/share/xsessions/wmaker.desktop
+}
diff --git a/extra/windowmaker-crm-git/libpng-1.4.patch b/extra/windowmaker-crm-git/libpng-1.4.patch
new file mode 100644
index 000000000..5dbe5fd25
--- /dev/null
+++ b/extra/windowmaker-crm-git/libpng-1.4.patch
@@ -0,0 +1,12 @@
+diff -Naur windowmaker-20091221-orig/wrlib/load.c windowmaker-20091221/wrlib/load.c
+--- windowmaker-20091221-orig/wrlib/load.c 2010-01-21 17:01:10.000000000 -0500
++++ windowmaker-20091221/wrlib/load.c 2010-01-21 17:02:38.000000000 -0500
+@@ -327,7 +327,7 @@
+
+ #ifdef USE_PNG
+ /* check for PNG */
+- if (png_check_sig(buffer, 8))
++ if (!png_sig_cmp(buffer, 0, 8))
+ return IM_PNG;
+ #endif
+
diff --git a/extra/windowmaker-crm-git/wmaker.desktop b/extra/windowmaker-crm-git/wmaker.desktop
new file mode 100644
index 000000000..f819c7577
--- /dev/null
+++ b/extra/windowmaker-crm-git/wmaker.desktop
@@ -0,0 +1,5 @@
+[Desktop Entry]
+Encoding=UTF-8
+Name=windowmaker
+Exec=/usr/bin/wmaker
+Type=Application
diff --git a/extra/windowmaker-extra/PKGBUILD b/extra/windowmaker-extra/PKGBUILD
new file mode 100644
index 000000000..07aa9b019
--- /dev/null
+++ b/extra/windowmaker-extra/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: PKGBUILD 27783 2009-02-25 22:56:21Z eric $
+# Contributor: orelien <orelien@chez.com>
+#
+
+pkgname=windowmaker-extra
+pkgver=0.1
+pkgrel=3
+pkgdesc="Extra WindowMaker icons and themes."
+arch=(i686 x86_64)
+url="http://www.windowmaker.info"
+license=('GPL2')
+depends=('windowmaker')
+source=(http://www.sgiweb.org/freeware/source/windowmaker-extra/windowmaker-extra-$pkgver.tar.gz)
+md5sums=('3ef850cfe0fb6660a55ccc8a2e408f74')
+
+build() {
+ cd $srcdir/WindowMaker-extra-$pkgver
+ ./configure --prefix=/usr || return 1
+ make || return 1
+ make DESTDIR=$pkgdir install || return 1
+ rm -f $pkgdir/usr/share/WindowMaker/Icons/xv.xpm
+}
+# vim: ts=2 sw=2 et ft=sh
diff --git a/extra/windowmaker/PKGBUILD b/extra/windowmaker/PKGBUILD
new file mode 100644
index 000000000..85fdd5062
--- /dev/null
+++ b/extra/windowmaker/PKGBUILD
@@ -0,0 +1,35 @@
+# $Id: PKGBUILD 71460 2010-03-07 10:56:49Z daniel $
+# Maintainer: Daniel Isenmann <daniel@archlinux.org>
+# Contributor: Judd Vinet <jvinet@zeroflux.org>
+pkgname=windowmaker
+pkgver=0.92.0
+pkgrel=8
+pkgdesc="An X11 window manager with a NEXTSTEP look and feel"
+arch=(i686 x86_64)
+url="http://www.windowmaker.info/"
+license=('GPL' 'custom')
+depends=('libxinerama' 'libpng' 'libxpm' 'libxft' 'libtiff' 'giflib')
+options=('!libtool')
+source=(http://windowmaker.info/pub/source/release/WindowMaker-$pkgver.tar.bz2 windowmaker-gcc4.patch.tar.bz2 libpng-1.4.patch)
+md5sums=('aaac5421b686ed2d3e6ab65229c98097' 'd9fb6a9c255f5c03d0e0c83dc3cd2320'\
+ '409173062955f4a527d88cd7a007efa7')
+sha1sums=('4f7fea6f40b9ba9f870d2e2f0ce46274750edb2c' '764aa4883b289994177fd3735541d050fda5bcdb'\
+ '027e1d06360fa38fe95afab6e73b7e9f144da687')
+
+build() {
+ cd $srcdir/WindowMaker-$pkgver
+ patch -p1 < ../libpng-1.4.patch || return 1
+ patch -Np1 -i ../windowmaker-gcc4.patch || return 1
+ libtoolize --force --copy || return 1
+ aclocal || return 1
+ autoconf || return 1
+ automake || return 1
+ [ -z "$LINGUAS" ] && export LINGUAS="`ls po/*.po | sed 's:po/\(.*\)\.po$:\1:'`"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --with-gnustepdir=/usr/lib/GNUstep --with-nlsdir=/usr/share/locale \
+ --enable-xinerama || return 1
+ make || return 1
+ make DESTDIR=$pkgdir install || return 1
+ install -D -m644 COPYING.WTFPL $pkgdir/usr/share/licenses/$pkgname/COPYING.WTFPL
+}
+
diff --git a/extra/windowmaker/libpng-1.4.patch b/extra/windowmaker/libpng-1.4.patch
new file mode 100644
index 000000000..419e8faca
--- /dev/null
+++ b/extra/windowmaker/libpng-1.4.patch
@@ -0,0 +1,12 @@
+diff -Naur WindowMaker-0.92.0-orig/wrlib/load.c WindowMaker-0.92.0/wrlib/load.c
+--- WindowMaker-0.92.0-orig/wrlib/load.c 2010-01-21 16:10:39.000000000 -0500
++++ WindowMaker-0.92.0/wrlib/load.c 2010-01-21 16:13:15.000000000 -0500
+@@ -348,7 +348,7 @@
+
+ #ifdef USE_PNG
+ /* check for PNG */
+- if (png_check_sig(buffer, 8))
++ if (!png_sig_cmp(buffer, 0, 8))
+ return IM_PNG;
+ #endif
+
diff --git a/extra/windowmaker/windowmaker-gcc4.patch.tar.bz2 b/extra/windowmaker/windowmaker-gcc4.patch.tar.bz2
new file mode 100644
index 000000000..fae12a98d
--- /dev/null
+++ b/extra/windowmaker/windowmaker-gcc4.patch.tar.bz2
Binary files differ
diff --git a/extra/wipe/PKGBUILD b/extra/wipe/PKGBUILD
new file mode 100644
index 000000000..95767e587
--- /dev/null
+++ b/extra/wipe/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 103446 2010-12-19 16:53:45Z andrea $
+# Maintainer:
+# Contributor: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Jason Chu <jason@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=wipe
+pkgver=2.3.1
+pkgrel=1
+pkgdesc="A file and block device wiping utility - a secure rm"
+arch=('i686' 'x86_64')
+url="http://wipe.sourceforge.net/"
+license=('GPL')
+depends=('glibc')
+source=(http://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.bz2)
+md5sums=('3aed00711e0490edbec115bc283b8544')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ ./configure --prefix=/usr \
+ --mandir=/usr/share/man
+ make
+}
+
+package() {
+ cd $srcdir/$pkgname-$pkgver
+ make prefix=$pkgdir/usr mandir=$pkgdir/usr/share/man install
+}
diff --git a/extra/wireshark/PKGBUILD b/extra/wireshark/PKGBUILD
new file mode 100644
index 000000000..e99b73914
--- /dev/null
+++ b/extra/wireshark/PKGBUILD
@@ -0,0 +1,54 @@
+# $Id: PKGBUILD 111927 2011-03-02 08:18:23Z guillaume $
+# Maintainer: Guillaume ALAUX <guillaume at alaux dot net>
+# Contributor: Florian Pritz <bluewind at jabber dot ccc dot de>
+pkgname=(wireshark-cli wireshark-gtk)
+pkgbase=wireshark
+pkgver=1.4.4
+pkgrel=1
+arch=('i686' 'x86_64')
+license=('GPL2')
+makedepends=('bison' 'flex' 'gtk2' 'heimdal' 'libpcap' 'bash' 'gnutls' 'libcap')
+url="http://www.wireshark.org/"
+options=(!libtool)
+source=(http://www.wireshark.org/download/src/${pkgbase}-${pkgver}.tar.bz2)
+md5sums=('11ce019d85d9822597b163ce5b4da858')
+
+build() {
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ export CFLAGS="-fno-unit-at-a-time ${CFLAGS}"
+
+ ./configure --prefix=/usr --with-ssl --with-zlib=no
+ make all
+}
+
+package_wireshark-cli() {
+ pkgdesc="A free network protocol analyzer for Unix/Linux and Windows - CLI version"
+ depends=('heimdal' 'libpcap' 'bash' 'gnutls' 'libcap' 'glib2')
+ install=wireshark.install
+ conflicts=(wireshark)
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+
+ make DESTDIR="${pkgdir}" install
+
+ #wireshark uid group is 150
+ chgrp 150 "${pkgdir}/usr/bin/dumpcap"
+ chmod 754 "${pkgdir}/usr/bin/dumpcap"
+ rm "$pkgdir/usr/bin/wireshark"
+}
+
+package_wireshark-gtk() {
+ pkgdesc="A free network protocol analyzer for Unix/Linux and Windows - GTK frontend"
+ depends=('gtk2' 'wireshark-cli')
+ install=wireshark-gtk.install
+ replaces=(wireshark)
+ conflicts=(wireshark)
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+
+ install -Dm755 .libs/wireshark "$pkgdir/usr/bin/wireshark"
+ for d in 16 32 48; do
+ install -Dm644 image/hi${d}-app-wireshark.png ${pkgdir}/usr/share/icons/hicolor/${d}x${d}/apps/wireshark.png
+ done
+ install -Dm644 wireshark.desktop ${pkgdir}/usr/share/applications/wireshark.desktop
+}
diff --git a/extra/wireshark/wireshark-gtk.install b/extra/wireshark/wireshark-gtk.install
new file mode 100644
index 000000000..6b1b64bdd
--- /dev/null
+++ b/extra/wireshark/wireshark-gtk.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/extra/wireshark/wireshark.install b/extra/wireshark/wireshark.install
new file mode 100644
index 000000000..0afdf0c8f
--- /dev/null
+++ b/extra/wireshark/wireshark.install
@@ -0,0 +1,16 @@
+post_install() {
+ getent group wireshark >/dev/null 2>&1 || usr/sbin/groupadd -g 150 wireshark &>/dev/null
+
+ setcap 'CAP_NET_RAW+eip CAP_NET_ADMIN+eip' usr/bin/dumpcap
+ echo "NOTE: To run wireshark as normal user you have to add yourself into wireshark group"
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ if getent group wireshark >/dev/null 2>&1; then
+ groupdel wireshark
+ fi
+}
diff --git a/extra/wpa_supplicant_gui/PKGBUILD b/extra/wpa_supplicant_gui/PKGBUILD
new file mode 100644
index 000000000..96095398d
--- /dev/null
+++ b/extra/wpa_supplicant_gui/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 90602 2010-09-13 18:07:52Z thomas $
+# Maintainer: Thomas Bächler <thomas@archlinux.org>
+
+pkgname=wpa_supplicant_gui
+pkgver=0.7.3
+pkgrel=1
+pkgdesc="A Qt frontend to wpa_supplicant"
+url="http://hostap.epitest.fi/wpa_supplicant"
+arch=('i686' 'x86_64')
+depends=('qt' "wpa_supplicant=$pkgver")
+license=('GPL')
+source=("http://hostap.epitest.fi/releases/wpa_supplicant-$pkgver.tar.gz")
+sha256sums=('d0cd50caa85346ccc376dcda5ed3c258eef19a93b3cade39d25760118ad59443')
+
+build() {
+ cd "${srcdir}/wpa_supplicant-${pkgver}/wpa_supplicant/wpa_gui-qt4"
+ qmake
+ make
+}
+
+package() {
+ cd "${srcdir}/wpa_supplicant-${pkgver}/wpa_supplicant/wpa_gui-qt4"
+ install -Dm755 wpa_gui "${pkgdir}/usr/sbin/wpa_gui"
+ install -Dm644 icons/wpa_gui.svg "${pkgdir}/usr/share/pixmaps/wpa_gui.svg"
+ install -Dm644 wpa_gui.desktop "${pkgdir}/usr/share/applications/wpa_gui.desktop"
+ install -Dm644 "${srcdir}/wpa_supplicant-${pkgver}/wpa_supplicant/doc/docbook/wpa_gui.8" \
+ "${pkgdir}/usr/share/man/man8/wpa_gui.8"
+}
diff --git a/extra/wv/PKGBUILD b/extra/wv/PKGBUILD
new file mode 100644
index 000000000..0e8208ae6
--- /dev/null
+++ b/extra/wv/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 82057 2010-06-08 10:05:16Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: William Rea <sillywilly@gmail.com>
+pkgname=wv
+pkgver=1.2.7
+pkgrel=1
+pkgdesc="MSWord library can load and parse Word 2000, 97, 95 and 6 file formats"
+arch=(i686 x86_64)
+url="http://sourceforge.net/projects/wvware"
+license=(GPL)
+depends=('libgsf>=1.14.18' 'libpng>=1.4.2' 'sh')
+makedepends=('pkg-config')
+options=('!libtool')
+source=(http://www.abisource.com/downloads/${pkgname}/${pkgver}/${pkgname}-${pkgver}.tar.gz
+ fix-soname.patch)
+sha256sums=('a3a367062e894770fc3ef63bbf7e285cb025253f972fa899c16931f741e856ea'
+ '0fccf12cc5db8481dfcd5cffa987545e060f8bb526c9c910fd76a18468bd7ce1')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i "${srcdir}/fix-soname.patch" || return 1
+ ./configure --prefix=/usr --mandir=/usr/share/man || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/wv/fix-soname.patch b/extra/wv/fix-soname.patch
new file mode 100644
index 000000000..81dff86e6
--- /dev/null
+++ b/extra/wv/fix-soname.patch
@@ -0,0 +1,14 @@
+diff -ru wv-1.2.7.orig//configure wv-1.2.7//configure
+--- wv-1.2.7.orig//configure 2009-09-21 12:22:46.000000000 +0200
++++ wv-1.2.7//configure 2010-06-08 12:00:27.948857203 +0200
+@@ -2082,8 +2082,8 @@
+ WV_MAJOR_VERSION=1
+ WV_MINOR_VERSION=2
+ WV_MICRO_VERSION=7
+-WV_INTERFACE_AGE=3
+-WV_BINARY_AGE=3
++WV_INTERFACE_AGE=4
++WV_BINARY_AGE=4
+ WV_VERSION=$WV_MAJOR_VERSION.$WV_MINOR_VERSION.$WV_MICRO_VERSION
+
+
diff --git a/extra/wv2/PKGBUILD b/extra/wv2/PKGBUILD
new file mode 100644
index 000000000..72ebab120
--- /dev/null
+++ b/extra/wv2/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 57827 2009-11-02 14:26:13Z ronald $
+# Maintainer: Ronald van Haren <ronald.archlinux.org>
+# Contributor: damir <damir@archlinux.org>
+
+pkgname=wv2
+pkgver=0.4.2
+pkgrel=1
+pkgdesc="MSWord 9,8,7,6 formats parser"
+arch=('i686' 'x86_64')
+url="http://sourceforge.net/projects/wvware/"
+depends=('libgsf')
+makedepends=('cmake')
+options=(!libtool)
+source=(http://downloads.sourceforge.net/sourceforge/wvware/${pkgname}-${pkgver}.tar.bz2)
+license=('GPL2')
+md5sums=('850ed8e44a84e7bf0610747827018cbc')
+
+build() {
+ cd ${srcdir}
+ mkdir build
+ cd build
+
+ cmake ../${pkgname}-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_SKIP_RPATH=ON \
+ -DCMAKE_INSTALL_PREFIX=/usr
+
+ make || return 1
+ make DESTDIR=${pkgdir} install || return 1
+}
diff --git a/extra/wvdial/PKGBUILD b/extra/wvdial/PKGBUILD
new file mode 100644
index 000000000..91026ced8
--- /dev/null
+++ b/extra/wvdial/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 57749 2009-11-01 22:53:25Z giovanni $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: dorphell <dorphell@archlinux.org>
+# Contributor: Judd Vinet <jvinet@zeroflux.org>
+
+pkgname=wvdial
+pkgver=1.61
+pkgrel=2
+pkgdesc="A dialer program to connect to the Internet"
+url="http://alumnit.ca/wiki/index.php?page=WvDial"
+arch=('i686' 'x86_64')
+license=('custom')
+depends=('wvstreams>=4.6.1' 'ppp')
+source=(http://wvstreams.googlecode.com/files/${pkgname}-${pkgver}.tar.gz)
+md5sums=('acd3b2050c9b65fff2aecda6576ee7bc')
+
+build() {
+ unset LDFLAGS
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure
+ make || return 1
+ make prefix=${pkgdir}/usr PPPDIR=${pkgdir}/etc/ppp/peers install || return 1
+ install -Dm644 COPYING.LIB ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+}
diff --git a/extra/wvstreams/PKGBUILD b/extra/wvstreams/PKGBUILD
new file mode 100644
index 000000000..3abe73609
--- /dev/null
+++ b/extra/wvstreams/PKGBUILD
@@ -0,0 +1,40 @@
+# $Id: PKGBUILD 75519 2010-04-01 18:49:52Z andrea $
+# Maintainer:
+# Contributor: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: dorphell <dorphell@archlinux.org>
+
+pkgname=wvstreams
+pkgver=4.6.1
+pkgrel=2
+pkgdesc="A network programming library written in C++"
+arch=('i686' 'x86_64')
+url="http://alumnit.ca/wiki/?page=WvStreams"
+license=('LGPL')
+depends=('zlib' 'pam' 'xplc' "openssl" 'readline')
+source=(http://wvstreams.googlecode.com/files/${pkgname}-${pkgver}.tar.gz)
+md5sums=('2760dac31a43d452a19a3147bfde571c')
+options=('!makeflags')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --without-dbus \
+ --with-pam \
+ --with-openssl \
+ --without-tcl \
+ --without-qt || return 1
+ make COPTS="$CFLAGS -fPIC" CXXOPTS="$CXXFLAGS -fPIC -fpermissive" VERBOSE=1 || return 1
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install || return 1
+
+ # FS#15974
+ # --without-dbus still installs the pkg-config file
+ rm ${pkgdir}/usr/lib/pkgconfig/libwvdbus.pc
+ # --without-qt still installs the pkg-config file
+ rm ${pkgdir}/usr/lib/pkgconfig/libwvqt.pc
+}
diff --git a/extra/wxgtk/PKGBUILD b/extra/wxgtk/PKGBUILD
new file mode 100644
index 000000000..7352b5573
--- /dev/null
+++ b/extra/wxgtk/PKGBUILD
@@ -0,0 +1,36 @@
+# $Id: PKGBUILD 99629 2010-11-15 21:53:38Z eric $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+
+pkgname=wxgtk
+pkgver=2.8.11
+pkgrel=2
+pkgdesc="GTK+ implementation of wxWidgets API for GUI"
+arch=('i686' 'x86_64')
+url="http://wxwidgets.org"
+license=('custom:wxWindows')
+depends=('gtk2' 'gstreamer0.10-base' 'libgl' 'libxxf86vm')
+makedepends=('libgnomeprintui' 'gstreamer0.10-base-plugins' 'gconf' 'mesa')
+#source=(http://downloads.sourceforge.net/wxpython/wxPython-src-${pkgver}.tar.bz2)
+source=(http://downloads.sourceforge.net/wxwindows/wxGTK-${pkgver}.tar.bz2)
+md5sums=('6040933d200037f90f6aa1c5169e7ec6')
+sha1sums=('e979d9d2b1ee5bd10e90fd00b02f3306327c661a')
+
+build() {
+# cd "${srcdir}/wxPython-src-${pkgver}"
+ cd "${srcdir}/wxGTK-${pkgver}"
+ ./configure --prefix=/usr --libdir=/usr/lib --with-gtk=2 --with-opengl --enable-unicode \
+ --enable-graphics_ctx --with-gnomeprint --disable-optimize --enable-mediactrl \
+ --with-libpng=sys --with-libxpm=sys --with-libjpeg=sys --with-libtiff=sys
+ make
+ make -C locale allmo
+ cd contrib/src
+ make
+}
+
+package() {
+ cd "${srcdir}/wxGTK-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+ cd contrib/src
+ make DESTDIR="${pkgdir}" install
+ install -D -m644 ../../docs/licence.txt "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+}
diff --git a/extra/wxmaxima/PKGBUILD b/extra/wxmaxima/PKGBUILD
new file mode 100644
index 000000000..2bac890f3
--- /dev/null
+++ b/extra/wxmaxima/PKGBUILD
@@ -0,0 +1,36 @@
+# $Id: PKGBUILD,v 1.10 2008/05/13 19:03:39 ronald Exp $
+# Maintainer: Ronald van Haren <ronald.archlinux.org>
+# Contributor: Angelo Theodorou <encelo@users.sourceforge.net>
+# Contributor: Vinay S Shastry <vinayshastry@gmail.com>
+
+pkgname=wxmaxima
+pkgver=0.8.6
+pkgrel=1
+pkgdesc="A wxWidgets GUI for the computer algebra system Maxima"
+arch=('i686' 'x86_64')
+url="http://wxmaxima.sourceforge.net/"
+license=('GPL2')
+depends=('maxima' 'libxml2' 'wxgtk')
+source=(http://downloads.sourceforge.net/$pkgname/wxMaxima-$pkgver.tar.gz)
+sha1sums=('124357c83672564ce7ee1bc20ff82c262adae52f')
+
+build() {
+ cd "${srcdir}/wxMaxima-${pkgver}"
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}/wxMaxima-${pkgver}"
+
+ make DESTDIR="${pkgdir}" install
+
+ # Fix category in .desktop file
+ sed -i -e 's/Utility;X-Red-Hat-Base;X-Red-Hat-Base-Only;/Science;Math;/' wxmaxima.desktop
+
+ # Install desktop file and icon
+ install -m755 -d "${pkgdir}/usr/share/applications"
+ install -m755 -d "${pkgdir}/usr/share/pixmaps"
+ install -m644 wxmaxima.desktop "${pkgdir}/usr/share/applications/"
+ install -m644 data/wxmaxima.png "${pkgdir}/usr/share/pixmaps/"
+}
diff --git a/extra/wxpython/ChangeLog b/extra/wxpython/ChangeLog
new file mode 100644
index 000000000..02c759e01
--- /dev/null
+++ b/extra/wxpython/ChangeLog
@@ -0,0 +1,48 @@
+2010-08-21 Eric Belanger <eric@archlinux.org>
+
+ * wxpython 2.8.11.0-2
+ * Rebuilt for python2
+
+2010-06-03 Eric Belanger <eric@archlinux.org>
+
+ * wxpython 2.8.11.0-1
+ * Upstream update
+
+2010-05-08 Eric Belanger <eric@archlinux.org>
+
+ * wxpython 2.8.10.1-2
+ * Rebuilt against wxgtk 2.8.11
+ * Added mediactrl support (close FS#18522)
+
+2009-05-18 Eric Belanger <eric@archlinux.org>
+
+ * wxpython 2.8.10.1-1
+ * Upstream update
+ * Added patch for editra
+
+2009-05-05 Eric Belanger <eric@archlinux.org>
+
+ * wxpython 2.8.9.2-2
+ * Rebuilt against wxgtk 2.8.10
+
+2009-03-06 Eric Belanger <eric@archlinux.org>
+
+ * wxpython 2.8.9.2-1
+ * Upstream update
+
+2008-10-28 Eric Belanger <eric@archlinux.org>
+
+ * wxpython 2.8.9.1-1
+ * Upstream update
+ * Python 2.6 rebuild
+
+2008-08-19 Eric Belanger <eric@archlinux.org>
+
+ * wxpython 2.8.8.1-1
+ * Upstream update
+
+2008-07-05 Eric Belanger <eric@archlinux.org>
+
+ * wxpython 2.8.8.0-1
+ * Upstream update
+ * Added ChangeLog
diff --git a/extra/wxpython/PKGBUILD b/extra/wxpython/PKGBUILD
new file mode 100644
index 000000000..b9375cca7
--- /dev/null
+++ b/extra/wxpython/PKGBUILD
@@ -0,0 +1,33 @@
+# $Id: PKGBUILD 88207 2010-08-21 05:14:19Z eric $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+# Contributor: Andrew Wright <andreww@photism.org>
+
+pkgname=wxpython
+pkgver=2.8.11.0
+pkgrel=2
+pkgdesc="A wxWidgets GUI toolkit for Python"
+arch=('i686' 'x86_64')
+license=('custom:wxWindows')
+url="http://www.wxpython.org"
+depends=('wxgtk' 'python2')
+makedepends=('mesa')
+changelog=ChangeLog
+source=(http://downloads.sourceforge.net/wxpython/wxPython-src-${pkgver}.tar.bz2 editra-aui.diff)
+md5sums=('63f73aae49e530852db56a31b57529fa' '06c637c34c1570d8c82b870ce19c0622')
+sha1sums=('18982edc236a1d87e4eef018928358c925aa5b17' '077fe341bf8822647934d6b1ea82ce9b0adbf93a')
+
+build() {
+ cd "${srcdir}/wxPython-src-${pkgver}"
+ patch -p1 < ../editra-aui.diff
+ ./configure --prefix=/usr --libdir=/usr/lib --with-gtk=2 --with-opengl --enable-unicode \
+ --enable-graphics_ctx --with-gnomeprint --disable-optimize --enable-mediactrl \
+ --with-libpng=sys --with-libxpm=sys --with-libjpeg=sys --with-libtiff=sys
+ cd "${srcdir}/wxPython-src-${pkgver}/wxPython"
+ python2 setup.py WXPORT=gtk2 UNICODE=1 build
+}
+
+package() {
+ cd "${srcdir}/wxPython-src-${pkgver}/wxPython"
+ python2 setup.py WXPORT=gtk2 UNICODE=1 install --root="${pkgdir}"
+ install -D -m644 ../docs/licence.txt "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+}
diff --git a/extra/wxpython/editra-aui.diff b/extra/wxpython/editra-aui.diff
new file mode 100644
index 000000000..afdcf9f8f
--- /dev/null
+++ b/extra/wxpython/editra-aui.diff
@@ -0,0 +1,11 @@
+diff -Naur wxPython-src-2.8.11.0-orig/wxPython/setup.py wxPython-src-2.8.11.0/wxPython/setup.py
+--- wxPython-src-2.8.11.0-orig/wxPython/setup.py 2010-06-04 04:15:47.000000000 -0400
++++ wxPython-src-2.8.11.0/wxPython/setup.py 2010-06-04 04:18:36.000000000 -0400
+@@ -893,6 +893,7 @@
+ 'wx.tools.Editra.src.eclib',
+ 'wx.tools.Editra.src.ebmlib',
+ 'wx.tools.Editra.src.extern',
++ 'wx.tools.Editra.src.extern.aui',
+ 'wx.tools.Editra.src.syntax',
+ ]
+
diff --git a/extra/x11vnc/PKGBUILD b/extra/x11vnc/PKGBUILD
new file mode 100644
index 000000000..15d64aa92
--- /dev/null
+++ b/extra/x11vnc/PKGBUILD
@@ -0,0 +1,36 @@
+# $Id: PKGBUILD 91112 2010-09-22 19:40:25Z bisson $
+# Maintainer: Gaetan Bisson <bisson@archlinux.org>
+# Contributor: damir <damir@archlinux.org>
+
+pkgname=x11vnc
+pkgver=0.9.12
+pkgrel=1
+pkgdesc='VNC server for real X displays'
+arch=('i686' 'x86_64')
+url='http://www.karlrunge.com/x11vnc/'
+license=('GPL2')
+depends=('openssl' 'libjpeg' 'zlib' 'libx11' 'libxtst' 'libxinerama' 'libxdamage' 'libxrandr' 'avahi')
+optdepends=('tk: for GUI support')
+backup=('etc/conf.d/x11vnc')
+source=("http://downloads.sourceforge.net/libvncserver/${pkgname}-${pkgver}.tar.gz"
+ 'x11vnc.rc'
+ 'x11vnc.conf')
+sha1sums=('cf4e24bee5962b52d8f2a5442a7c44943a9cc0bb'
+ '3abb3fcadff32662ab847a9e772cd23cfdfe3d1a'
+ '11011cce06511e9ba61672a1c80bb63a3a187539')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --mandir=/usr/share/man
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+
+ rm -fr "${pkgdir}"/usr/include/rfb # provided by libvncserver
+
+ install -D -m 755 "${srcdir}/x11vnc.rc" "${pkgdir}/etc/rc.d/x11vnc"
+ install -D -m 644 "${srcdir}/x11vnc.conf" "${pkgdir}/etc/conf.d/x11vnc"
+}
diff --git a/extra/x11vnc/x11vnc.conf b/extra/x11vnc/x11vnc.conf
new file mode 100644
index 000000000..8a81e3286
--- /dev/null
+++ b/extra/x11vnc/x11vnc.conf
@@ -0,0 +1,5 @@
+#
+# Parameters to be passed to x11vnc
+#
+
+X11VNC_ARGS=""
diff --git a/extra/x11vnc/x11vnc.rc b/extra/x11vnc/x11vnc.rc
new file mode 100644
index 000000000..d7bbdd15e
--- /dev/null
+++ b/extra/x11vnc/x11vnc.rc
@@ -0,0 +1,37 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+. /etc/conf.d/x11vnc
+
+PID=$(pidof -o %PPID /usr/bin/x11vnc)
+case "$1" in
+ start)
+ stat_busy "Starting x11vnc"
+ [ -z "$PID" ] && /usr/bin/x11vnc $X11VNC_ARGS &> /dev/null &
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon x11vnc
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping x11vnc"
+ [ ! -z "$PID" ] && kill $PID &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon x11vnc
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
diff --git a/extra/x264/PKGBUILD b/extra/x264/PKGBUILD
new file mode 100644
index 000000000..a0aacc6ea
--- /dev/null
+++ b/extra/x264/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id: PKGBUILD 117096 2011-03-28 18:20:15Z ibiru $
+# Maintainer : Ionut Biru <ibiru@archlinux.org>
+# Contributor: damir <damir@archlinux.org>
+# Contributor: Paul Mattal <paul@archlinux.org>
+
+pkgname=x264
+pkgver=20110327
+pkgrel=1
+pkgdesc="free library for encoding H264/AVC video streams"
+arch=('i686' 'x86_64')
+url="http://www.videolan.org/developers/x264.html"
+license=('GPL')
+depends=('glibc')
+makedepends=('yasm')
+source=(ftp://ftp.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-$pkgver-2245.tar.bz2)
+md5sums=('7579aff8166a974a1b293cd18b9ead92')
+
+build() {
+ cd "$srcdir/$pkgname-snapshot-$pkgver-2245"
+
+ ./configure --enable-shared
+
+ make
+ make DESTDIR="$pkgdir" \
+ bindir=/usr/bin \
+ libdir=/usr/lib \
+ includedir=/usr/include \
+ install
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/extra/x2x/LICENSE b/extra/x2x/LICENSE
new file mode 100644
index 000000000..99ff948f8
--- /dev/null
+++ b/extra/x2x/LICENSE
@@ -0,0 +1,39 @@
+/*
+ * x2x: Uses the XTEST extension to forward keystrokes from a window on
+ * one display to another display. Useful for desks
+ * with multiple keyboards.
+ *
+ * Copyright (c) 1997
+ * Digital Equipment Corporation. All rights reserved.
+ *
+ * By downloading, installing, using, modifying or distributing this
+ * software, you agree to the following:
+ *
+ * 1. CONDITIONS. Subject to the following conditions, you may download,
+ * install, use, modify and distribute this software in source and binary
+ * forms:
+ *
+ * a) Any source code, binary code and associated documentation
+ * (including the online manual) used, modified or distributed must
+ * reproduce and retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * b) No right is granted to use any trade name, trademark or logo of
+ * Digital Equipment Corporation. Neither the "Digital Equipment
+ * Corporation" name nor any trademark or logo of Digital Equipment
+ * Corporation may be used to endorse or promote products derived from
+ * this software without the prior written permission of Digital
+ * Equipment Corporation.
+ *
+ * 2. DISCLAIMER. THIS SOFTWARE IS PROVIDED BY DIGITAL "AS IS" AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.IN NO EVENT SHALL DIGITAL BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+ * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
diff --git a/extra/x2x/PKGBUILD b/extra/x2x/PKGBUILD
new file mode 100644
index 000000000..bccbba6a4
--- /dev/null
+++ b/extra/x2x/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: PKGBUILD 36334 2009-04-21 02:04:21Z eric $
+# Maintainer: dorphell <dorphell@archlinux.org>
+# Contributor: Judd Vinet <jvinet@zeroflux.org>
+pkgname=x2x
+pkgver=1.27
+pkgrel=5
+pkgdesc="Control one X display from another"
+arch=(i686 x86_64)
+url="http://x2x.dottedmag.net/"
+license=('custom')
+depends=('libxtst')
+makedepends=('imake')
+source=(http://x2x.dottedmag.net/releases/$pkgname-$pkgver.tar.gz LICENSE)
+md5sums=('3d1bc863f3209ec37caf7f57bde7e8f0' '7ebc35f66a8ded9b8d8d7ca4131c7ae8')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ mv x2x.1 x2x.man
+ xmkmf || return 1
+ make || return 1
+ make DESTDIR=$pkgdir MANPATH=/usr/share/man install install.man || return 1
+ install -D -m644 ../LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+}
diff --git a/extra/xaos/ChangeLog b/extra/xaos/ChangeLog
new file mode 100644
index 000000000..7554cd7b3
--- /dev/null
+++ b/extra/xaos/ChangeLog
@@ -0,0 +1,24 @@
+2010-02-06 Eric Belanger <eric@archlinux.org>
+
+ * xaos 3.5-3
+ * Added aalib support
+ * Removed unneeded depends
+ * Improved description
+
+2010-01-19 Eric Belanger <eric@archlinux.org>
+
+ * xaos 3.5-2
+ * Rebuilt for libpng 1.4 and libjpeg 8
+
+2009-07-21 Eric Belanger <eric@archlinux.org>
+
+ * xaos 3.5-1
+ * Upstream update
+ * Added texinfo depends
+
+2008-11-08 Eric Belanger <eric@archlinux.org>
+
+ * xaos 3.4-1
+ * Upstream update
+ * Added install scriptlet for info file
+ * Added ChangeLog
diff --git a/extra/xaos/PKGBUILD b/extra/xaos/PKGBUILD
new file mode 100644
index 000000000..4f958385b
--- /dev/null
+++ b/extra/xaos/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 67322 2010-02-06 10:00:38Z eric $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+# Contributor: Damir Perisa <damir.perisa@bluewin.ch>
+
+pkgname=xaos
+pkgver=3.5
+pkgrel=3
+pkgdesc="A fast portable real-time interactive fractal zoomer"
+arch=('i686' 'x86_64')
+url="http://sourceforge.net/projects/xaos/"
+license=('GPL')
+depends=('gsl' 'libpng' 'aalib')
+options=('!makeflags')
+install=xaos.install
+source=(http://downloads.sourceforge.net/sourceforge/xaos/${pkgname}-${pkgver}.tar.gz)
+md5sums=('465d1469b276501a58bf325e493ea591')
+sha1sums=('6d16a58187fba7276e6bd0547cc2fd6bb073b801')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --with-gsl --with-aa-driver || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/xaos/xaos.install b/extra/xaos/xaos.install
new file mode 100644
index 000000000..1de05a018
--- /dev/null
+++ b/extra/xaos/xaos.install
@@ -0,0 +1,20 @@
+infodir=/usr/share/info
+filelist=(xaos.info.gz)
+
+post_install() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info --delete $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
diff --git a/extra/xarchiver/ChangeLog b/extra/xarchiver/ChangeLog
new file mode 100644
index 000000000..c3abc0d0e
--- /dev/null
+++ b/extra/xarchiver/ChangeLog
@@ -0,0 +1,9 @@
+2008-11-27 Alexander Fehr <pizzapunk gmail com>
+
+ * xarchiver-0.5.2-1:
+ New upstream release.
+ New maintainer.
+ Changed license to GPL.
+ Added dependencies on desktop-file-utils and hicolor-icon-theme.
+ Replaced install message with optdepends.
+ Added ChangeLog.
diff --git a/extra/xarchiver/PKGBUILD b/extra/xarchiver/PKGBUILD
new file mode 100644
index 000000000..4934636fc
--- /dev/null
+++ b/extra/xarchiver/PKGBUILD
@@ -0,0 +1,37 @@
+# $Id: PKGBUILD 20752 2008-12-06 14:28:02Z alexanderf $
+# Maintainer: Alexander Fehr <pizzapunk gmail com>
+# Contributor: Andrew Simmons <andrew.simmons@gmail.com>
+
+pkgname=xarchiver
+pkgver=0.5.2
+pkgrel=1
+pkgdesc="GTK+ frontend to various command line archivers"
+arch=('i686' 'x86_64')
+url="http://xarchiver.xfce.org/"
+license=('GPL')
+groups=('xfce4-goodies')
+depends=('gtk2' 'desktop-file-utils' 'hicolor-icon-theme')
+makedepends=('intltool')
+optdepends=('tar: TAR support'
+ 'gzip: GZIP support'
+ 'bzip2: BZIP2 support'
+ 'zip: ZIP support'
+ 'unzip: ZIP support'
+ 'unrar: RAR support'
+ 'p7zip: 7z support'
+ 'arj: ARJ support'
+ 'lha: LHA support'
+ 'lzma-utils: LZMA support'
+ 'lzop: LZOP support')
+options=('!libtool')
+install=xarchiver.install
+source=(http://downloads.sourceforge.net/xarchiver/xarchiver-$pkgver.tar.bz2)
+md5sums=('2bc7f06403cc6582dd4a8029ec9d038d')
+
+build() {
+ cd "$srcdir/xarchiver-$pkgver"
+
+ ./configure --prefix=/usr --libexecdir=/usr/lib/xfce4 || return 1
+ make || return 1
+ make DESTDIR="$pkgdir" install || return 1
+}
diff --git a/extra/xarchiver/xarchiver.install b/extra/xarchiver/xarchiver.install
new file mode 100644
index 000000000..c317fbaca
--- /dev/null
+++ b/extra/xarchiver/xarchiver.install
@@ -0,0 +1,12 @@
+post_install() {
+ update-desktop-database -q
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/extra/xaw3d/ChangeLog b/extra/xaw3d/ChangeLog
new file mode 100644
index 000000000..077b24d3d
--- /dev/null
+++ b/extra/xaw3d/ChangeLog
@@ -0,0 +1,15 @@
+2009-05-10 Jan de Groot <jgc@archlinux.org>
+
+ * xaw3d 1.5E-2
+ * Build without libxp (requires latest imake)
+ * Simplify PKGBUILD a bit
+ * Add extra patches from Fedora
+ * Fix URL
+
+2008-12-14 Eric Belanger <eric@archlinux.org>
+
+ * xaw3d 1.5E-1
+ * Upstream update
+ * Updated url
+ * Added misc. patches
+ * Added ChangeLog
diff --git a/extra/xaw3d/LICENSE b/extra/xaw3d/LICENSE
new file mode 100644
index 000000000..395de2d9b
--- /dev/null
+++ b/extra/xaw3d/LICENSE
@@ -0,0 +1,22 @@
+Copyright (c) 1989 X Consortium
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of the X Consortium shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from the X Consortium.
diff --git a/extra/xaw3d/PKGBUILD b/extra/xaw3d/PKGBUILD
new file mode 100644
index 000000000..5cbb0e0a1
--- /dev/null
+++ b/extra/xaw3d/PKGBUILD
@@ -0,0 +1,49 @@
+# $Id: PKGBUILD 38896 2009-05-10 18:12:17Z jgc $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+# Contributor: Judd Vinet <jvinet@zeroflux.org>
+
+pkgname=xaw3d
+pkgver=1.5E
+pkgrel=2
+pkgdesc="Three-D Athena widgets"
+arch=('i686' 'x86_64')
+url="http://directory.fsf.org/project/xaw3d/"
+license=('MIT')
+depends=('libxmu' 'libxpm')
+makedepends=('imake')
+options=('!makeflags' 'force')
+source=(ftp://ftp.visi.com/users/hawkeyd/X/Xaw3d-${pkgver}.tar.gz
+ Xaw3d-1.5E-xorg-imake.patch
+ Xaw3d-1.5-i18n.patch
+ Xaw3d-1.5-box.c.patch
+ Xaw3d-1.5-debian-fixes.patch
+ xaw3d.patch
+ Xaw3d-1.5E-warnings.patch
+ Xaw3d-ia64.patch
+ LICENSE)
+md5sums=('29ecfdcd6bcf47f62ecfd672d31269a1'
+ '2cca7950cf7d270609bc810b8996f0a9'
+ 'e7105bc1452f0c5f5d0bcdcf212aac0c'
+ 'c061ab65467766f5817752ef216e3cc2'
+ '33bf0f1b52822b7293a3f45474178dfe'
+ '5acb23e5a52c75e62a22aef59882df14'
+ 'c3aa4cbf95442081e7af810c13306cc9'
+ 'f766e8eb6371cbb1f68af4f2932dc118'
+ '5b6b0242b3f53b7fe308e702abe28561')
+
+build() {
+ cd "${srcdir}/xc/lib/Xaw3d"
+ patch -Np0 -i "${srcdir}/Xaw3d-1.5E-xorg-imake.patch" || return 1
+ patch -Np4 -i "${srcdir}/xaw3d.patch" || return 1
+ patch -Np4 -i "${srcdir}/Xaw3d-ia64.patch" || return 1
+ patch -Np4 -i "${srcdir}/Xaw3d-1.5-i18n.patch" || return 1
+ patch -Np4 -i "${srcdir}/Xaw3d-1.5-box.c.patch" || return 1
+ patch -Np4 -i "${srcdir}/Xaw3d-1.5-debian-fixes.patch" || return 1
+ patch -Np4 -i "${srcdir}/Xaw3d-1.5E-warnings.patch" || return 1
+
+ ln -s .. X11
+ xmkmf || return 1
+ make CDEBUGFLAGS="${CFLAGS} -DARROW_SCROLLBAR"
+ make DESTDIR="${pkgdir}" SHLIBDIR=/usr/lib INCDIR=/usr/include install || return 1
+ install -D -m644 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" || return 1
+}
diff --git a/extra/xaw3d/Xaw3d-1.5-box.c.patch b/extra/xaw3d/Xaw3d-1.5-box.c.patch
new file mode 100644
index 000000000..252238af8
--- /dev/null
+++ b/extra/xaw3d/Xaw3d-1.5-box.c.patch
@@ -0,0 +1,27 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## box.c.dpatch by Francesco Paolo Lovergine <frankie@debian.org>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: No description.
+
+@DPATCH@
+diff -urNad xaw3d-1.5+E~/lib/Xaw3d/Box.c xaw3d-1.5+E/lib/Xaw3d/Box.c
+--- Xaw3d-1.5E/xc/lib/Xaw3d/Box.c 1996-10-15 16:41:18.000000000 +0200
++++ Xaw3d-1.5E/xc/lib/Xaw3d/Box.c 2007-04-24 15:28:39.000000000 +0200
+@@ -353,8 +353,16 @@
+ else {
+ width = preferred_width;
+ do { /* find some width big enough to stay within this height */
++#if 0
+ width *= 2;
+ if (width > constraint->width) width = constraint->width;
++#endif
++ if (width > constraint->width/2) { /* avoid short int overflow */
++ width = constraint->width;
++ }
++ else {
++ width *= 2;
++ }
+ DoLayout(w, width, 0, &preferred_width, &preferred_height, FALSE);
+ } while (preferred_height > constraint->height &&
+ width < constraint->width);
diff --git a/extra/xaw3d/Xaw3d-1.5-debian-fixes.patch b/extra/xaw3d/Xaw3d-1.5-debian-fixes.patch
new file mode 100644
index 000000000..5593f249b
--- /dev/null
+++ b/extra/xaw3d/Xaw3d-1.5-debian-fixes.patch
@@ -0,0 +1,647 @@
+diff -up Xaw3d-1.5E/xc/lib/Xaw3d/AsciiSrc.c.debian Xaw3d-1.5E/xc/lib/Xaw3d/AsciiSrc.c
+--- Xaw3d-1.5E/xc/lib/Xaw3d/AsciiSrc.c.debian 2000-11-27 14:19:36.000000000 +0100
++++ Xaw3d-1.5E/xc/lib/Xaw3d/AsciiSrc.c 2008-10-06 11:42:13.000000000 +0200
+@@ -51,11 +51,17 @@ in this Software without prior written a
+ #include <X11/Xaw3d/MultiSrcP.h>
+ #endif
+
++#include <sys/types.h>
++#include <sys/stat.h>
++#include <fcntl.h>
+
+ #if (defined(ASCII_STRING) || defined(ASCII_DISK))
+ # include <X11/Xaw3d/AsciiText.h> /* for Widget Classes. */
+ #endif
+
++#include <sys/types.h>
++#include <sys/stat.h>
++#include <fcntl.h>
+
+ /****************************************************************
+ *
+@@ -1007,7 +1013,9 @@ InitStringOrFile(src, newString)
+ AsciiSrcObject src;
+ Boolean newString;
+ {
+- char * open_mode = NULL;
++ mode_t open_mode = 0;
++ const char *fdopen_mode = NULL;
++ int fd;
+ FILE * file;
+ char fileName[TMPSIZ];
+
+@@ -1049,7 +1057,8 @@ Boolean newString;
+ XtErrorMsg("NoFile", "asciiSourceCreate", "XawError",
+ "Creating a read only disk widget and no file specified.",
+ NULL, 0);
+- open_mode = "r";
++ open_mode = O_RDONLY;
++ fdopen_mode = "r";
+ break;
+ case XawtextAppend:
+ case XawtextEdit:
+@@ -1057,9 +1066,17 @@ Boolean newString;
+ src->ascii_src.string = fileName;
+ (void) tmpnam(src->ascii_src.string);
+ src->ascii_src.is_tempfile = TRUE;
+- open_mode = "w";
+- } else
+- open_mode = "r+";
++ open_mode = O_WRONLY | O_CREAT | O_EXCL;
++ fdopen_mode = "w";
++ } else {
++/* O_NOFOLLOW is a BSD & Linux extension */
++#ifdef O_NOFOLLOW
++ open_mode = O_RDWR | O_NOFOLLOW;
++#else
++ open_mode = O_RDWR; /* unsafe; subject to race conditions */
++#endif
++ fdopen_mode = "r+";
++ }
+ break;
+ default:
+ XtErrorMsg("badMode", "asciiSourceCreate", "XawError",
+@@ -1078,11 +1095,14 @@ Boolean newString;
+ }
+
+ if (!src->ascii_src.is_tempfile) {
+- if ((file = fopen(src->ascii_src.string, open_mode)) != 0) {
+- (void) fseek(file, (Off_t)0, 2);
+- src->ascii_src.length = (XawTextPosition) ftell(file);
+- return file;
+- } else {
++ if ((fd = open(src->ascii_src.string, open_mode, 0666))) {
++ if ((file = fdopen(fd, fdopen_mode)) != NULL) {
++ (void)fseek(file, 0, SEEK_END);
++ src->ascii_src.length = (XawTextPosition)ftell(file);
++ return (file);
++ }
++ }
++ {
+ String params[2];
+ Cardinal num_params = 2;
+
+@@ -1094,7 +1114,7 @@ Boolean newString;
+ }
+ }
+ src->ascii_src.length = 0;
+- return((FILE *)NULL);
++ return(NULL);
+ }
+
+ static void
+diff -up Xaw3d-1.5E/xc/lib/Xaw3d/AsciiSrcP.h.debian Xaw3d-1.5E/xc/lib/Xaw3d/AsciiSrcP.h
+--- Xaw3d-1.5E/xc/lib/Xaw3d/AsciiSrcP.h.debian 1996-10-15 16:41:18.000000000 +0200
++++ Xaw3d-1.5E/xc/lib/Xaw3d/AsciiSrcP.h 2008-10-06 11:42:13.000000000 +0200
+@@ -85,7 +85,11 @@ SOFTWARE.
+ #ifdef L_tmpnam
+ #define TMPSIZ L_tmpnam
+ #else
+-#define TMPSIZ 32 /* bytes to allocate for tmpnam */
++#ifdef PATH_MAX
++#define TMPSIZ PATH_MAX
++#else
++#define TMPSIZ 1024 /* bytes to allocate for tmpnam */
++#endif
+ #endif
+
+ #define MAGIC_VALUE ((XawTextPosition) -1) /* Magic value. */
+diff -up Xaw3d-1.5E/xc/lib/Xaw3d/MenuButton.c.debian Xaw3d-1.5E/xc/lib/Xaw3d/MenuButton.c
+--- Xaw3d-1.5E/xc/lib/Xaw3d/MenuButton.c.debian 1996-10-15 16:41:20.000000000 +0200
++++ Xaw3d-1.5E/xc/lib/Xaw3d/MenuButton.c 2008-10-06 11:42:13.000000000 +0200
+@@ -53,6 +53,8 @@ in this Software without prior written a
+ #include <X11/Xaw3d/XawInit.h>
+ #include <X11/Xaw3d/MenuButtoP.h>
+
++#include "XawAlloc.h"
++
+ static void ClassInitialize();
+ static void PopupMenu();
+
+@@ -179,9 +181,16 @@ Cardinal * num_params;
+
+ if (menu == NULL) {
+ char error_buf[BUFSIZ];
+- (void) sprintf(error_buf, "MenuButton: %s %s.",
+- "Could not find menu widget named", mbw->menu_button.menu_name);
+- XtAppWarning(XtWidgetToApplicationContext(w), error_buf);
++ char *err1 = "MenuButton: Could not find menu widget named ";
++ char *perr;
++ int len;
++
++ len = strlen(err1) + strlen(mbw->menu_button.menu_name) + 1 + 1;
++ perr = XtStackAlloc(len, error_buf);
++ if (perr == NULL) return;
++ sprintf(perr, "%s%s.", err1, mbw->menu_button.menu_name);
++ XtAppWarning(XtWidgetToApplicationContext(w), perr);
++ XtStackFree(perr, error_buf);
+ return;
+ }
+ if (!XtIsRealized(menu))
+diff -up Xaw3d-1.5E/xc/lib/Xaw3d/MultiSrc.c.debian Xaw3d-1.5E/xc/lib/Xaw3d/MultiSrc.c
+--- Xaw3d-1.5E/xc/lib/Xaw3d/MultiSrc.c.debian 2008-10-06 11:42:13.000000000 +0200
++++ Xaw3d-1.5E/xc/lib/Xaw3d/MultiSrc.c 2008-10-06 11:42:13.000000000 +0200
+@@ -74,6 +74,9 @@ in this Software without prior written a
+ #include <stdio.h>
+ #include <ctype.h>
+ #include <errno.h>
++#include <sys/types.h>
++#include <sys/stat.h>
++#include <fcntl.h>
+
+ /****************************************************************
+ *
+@@ -1077,7 +1080,9 @@ InitStringOrFile(src, newString)
+ MultiSrcObject src;
+ Boolean newString;
+ {
+- char * open_mode = NULL;
++ mode_t open_mode = 0;
++ const char *fdopen_mode = NULL;
++ int fd;
+ FILE * file;
+ char fileName[TMPSIZ];
+ Display *d = XtDisplayOfObject((Widget)src);
+@@ -1128,7 +1133,8 @@ InitStringOrFile(src, newString)
+ XtErrorMsg("NoFile", "multiSourceCreate", "XawError",
+ "Creating a read only disk widget and no file specified.",
+ NULL, 0);
+- open_mode = "r";
++ open_mode = O_RDONLY;
++ fdopen_mode = "r";
+ break;
+ case XawtextAppend:
+ case XawtextEdit:
+@@ -1141,9 +1147,17 @@ InitStringOrFile(src, newString)
+
+ (void) tmpnam(src->multi_src.string);
+ src->multi_src.is_tempfile = TRUE;
+- open_mode = "w";
+- } else
+- open_mode = "r+";
++ open_mode = O_WRONLY | O_CREAT | O_EXCL;
++ fdopen_mode = "w";
++ } else {
++/* O_NOFOLLOW is a BSD & Linux extension */
++#ifdef O_NOFOLLOW
++ open_mode = O_RDWR | O_NOFOLLOW;
++#else
++ open_mode = O_RDWR; /* unsafe; subject to race conditions */
++#endif
++ fdopen_mode = "r+";
++ }
+ break;
+ default:
+ XtErrorMsg("badMode", "multiSourceCreate", "XawError",
+@@ -1162,11 +1176,14 @@ InitStringOrFile(src, newString)
+ }
+
+ if (!src->multi_src.is_tempfile) {
+- if ((file = fopen(src->multi_src.string, open_mode)) != 0) {
+- (void) fseek(file, (Off_t)0, 2);
+- src->multi_src.length = ftell (file);
+- return file;
+- } else {
++ if ((fd = open(src->multi_src.string, open_mode, 0666))) {
++ if ((file = fdopen(fd, fdopen_mode)) != NULL) {
++ (void)fseek(file, 0, SEEK_END);
++ src->multi_src.length = (XawTextPosition)ftell(file);
++ return (file);
++ }
++ }
++ {
+ String params[2];
+ Cardinal num_params = 2;
+
+@@ -1178,7 +1195,7 @@ InitStringOrFile(src, newString)
+ }
+ }
+ src->multi_src.length = 0;
+- return((FILE *)NULL);
++ return(NULL);
+ #undef StrLen
+ }
+
+diff -up Xaw3d-1.5E/xc/lib/Xaw3d/MultiSrcP.h.debian Xaw3d-1.5E/xc/lib/Xaw3d/MultiSrcP.h
+--- Xaw3d-1.5E/xc/lib/Xaw3d/MultiSrcP.h.debian 1996-10-15 16:41:21.000000000 +0200
++++ Xaw3d-1.5E/xc/lib/Xaw3d/MultiSrcP.h 2008-10-06 11:42:13.000000000 +0200
+@@ -113,7 +113,11 @@ SOFTWARE.
+ #ifdef L_tmpnam
+ #define TMPSIZ L_tmpnam
+ #else
+-#define TMPSIZ 32 /* bytes to allocate for tmpnam */
++#ifdef PATH_MAX
++#define TMPSIZ PATH_MAX
++#else
++#define TMPSIZ 1024 /* bytes to allocate for tmpnam */
++#endif
+ #endif
+
+ #define MAGIC_VALUE ((XawTextPosition) -1) /* Magic value. */
+diff -up Xaw3d-1.5E/xc/lib/Xaw3d/Simple.c.debian Xaw3d-1.5E/xc/lib/Xaw3d/Simple.c
+--- Xaw3d-1.5E/xc/lib/Xaw3d/Simple.c.debian 2000-11-27 14:19:36.000000000 +0100
++++ Xaw3d-1.5E/xc/lib/Xaw3d/Simple.c 2008-10-06 11:42:13.000000000 +0200
+@@ -56,6 +56,8 @@ SOFTWARE.
+ #include <X11/Xaw3d/SimpleP.h>
+ #include <X11/Xmu/Drawing.h>
+
++#include "XawAlloc.h"
++
+ #define offset(field) XtOffsetOf(SimpleRec, simple.field)
+
+ static XtResource resources[] = {
+@@ -148,11 +150,17 @@ static void ClassPartInitialize(class)
+
+ if (c->simple_class.change_sensitive == NULL) {
+ char buf[BUFSIZ];
+-
+- (void) sprintf(buf,
+- "%s Widget: The Simple Widget class method 'change_sensitive' is undefined.\nA function must be defined or inherited.",
+- c->core_class.class_name);
+- XtWarning(buf);
++ char *pbuf;
++ char *msg1 = " Widget: The Simple Widget class method 'change_sensitive' is undefined.\nA function must be defined or inherited.";
++ int len;
++
++ len = strlen(msg1) + strlen(c->core_class.class_name) + 1;
++ pbuf = XtStackAlloc(len, buf);
++ if (pbuf != NULL) {
++ sprintf(pbuf, "%s%s", c->core_class.class_name, msg1);
++ XtWarning(pbuf);
++ XtStackFree(pbuf, buf);
++ }
+ c->simple_class.change_sensitive = ChangeSensitive;
+ }
+
+diff -up Xaw3d-1.5E/xc/lib/Xaw3d/SimpleMenu.c.debian Xaw3d-1.5E/xc/lib/Xaw3d/SimpleMenu.c
+--- Xaw3d-1.5E/xc/lib/Xaw3d/SimpleMenu.c.debian 2003-02-17 07:45:07.000000000 +0100
++++ Xaw3d-1.5E/xc/lib/Xaw3d/SimpleMenu.c 2008-10-06 11:42:13.000000000 +0200
+@@ -51,6 +51,8 @@ in this Software without prior written a
+ #include <X11/Xmu/Initer.h>
+ #include <X11/Xmu/CharSet.h>
+
++#include "XawAlloc.h"
++
+ #define streq(a, b) ( strcmp((a), (b)) == 0 )
+
+ #define offset(field) XtOffsetOf(SimpleMenuRec, simple_menu.field)
+@@ -755,9 +757,17 @@ Cardinal * num_params;
+
+ if ( (menu = FindMenu(w, params[0])) == NULL) {
+ char error_buf[BUFSIZ];
+- (void) sprintf(error_buf, "%s '%s'",
+- "Xaw - SimpleMenuWidget: could not find menu named: ", params[0]);
+- XtAppWarning(XtWidgetToApplicationContext(w), error_buf);
++ char *err1 = "Xaw - SimpleMenuWidget: could not find menu named: ";
++ char *perr;
++ int len;
++
++ len = strlen(err1) + strlen(params[0]) + 2 + 1;
++ perr = XtStackAlloc(len, error_buf);
++ if (perr == NULL)
++ return;
++ sprintf(perr, "%s'%s'", err1, params[0]);
++ XtAppWarning(XtWidgetToApplicationContext(w), perr);
++ XtStackFree(perr, error_buf);
+ return;
+ }
+
+diff -up Xaw3d-1.5E/xc/lib/Xaw3d/StripChart.c.debian Xaw3d-1.5E/xc/lib/Xaw3d/StripChart.c
+--- Xaw3d-1.5E/xc/lib/Xaw3d/StripChart.c.debian 2003-02-10 18:18:00.000000000 +0100
++++ Xaw3d-1.5E/xc/lib/Xaw3d/StripChart.c 2008-10-06 11:42:13.000000000 +0200
+@@ -315,7 +315,15 @@ XtIntervalId *id; /* unused */
+ if (w->strip_chart.points != NULL) {
+ w->strip_chart.points[0].x = w->strip_chart.interval + s;
+ XDrawPoints(XtDisplay(w), XtWindow(w), w->strip_chart.hiGC,
+- w->strip_chart.points, w->strip_chart.scale,
++ /*
++ * patch:
++ *
++ * w->strip_chart.points, w->strip_chart.scale,
++ *
++ * this to avoid a subdle bug of extra spurios scan
++ * line in this widget.
++ */
++ w->strip_chart.points, w->strip_chart.scale - 1,
+ CoordModePrevious);
+ }
+
+diff -up Xaw3d-1.5E/xc/lib/Xaw3d/Text.c.debian Xaw3d-1.5E/xc/lib/Xaw3d/Text.c
+--- Xaw3d-1.5E/xc/lib/Xaw3d/Text.c.debian 2008-10-06 11:42:13.000000000 +0200
++++ Xaw3d-1.5E/xc/lib/Xaw3d/Text.c 2008-10-06 11:43:16.000000000 +0200
+@@ -76,6 +76,8 @@ SOFTWARE.
+ #include <ctype.h> /* for isprint() */
+ #include <stdlib.h>
+
++#include "XawAlloc.h"
++
+ #ifndef MAX_LEN_CT
+ #define MAX_LEN_CT 6 /* for sequence: ESC $ ( A \xx \xx */
+ #endif
+@@ -521,6 +523,8 @@ Cardinal *num_args; /* unused */
+ TextWidget ctx = (TextWidget) new;
+ char error_buf[BUFSIZ];
+ int s;
++ char *perr; /* frankie */
++ size_t len; /* frankie */
+
+ ctx->text.threeD = XtVaCreateWidget("threeD", threeDWidgetClass, new,
+ XtNx, 0, XtNy, 0,
+@@ -569,10 +573,17 @@ Cardinal *num_args; /* unused */
+ if (ctx->text.scroll_vert != XawtextScrollNever)
+ if ( (ctx->text.resize == XawtextResizeHeight) ||
+ (ctx->text.resize == XawtextResizeBoth) ) {
+- (void) sprintf(error_buf, "Xaw Text Widget %s:\n %s %s.", ctx->core.name,
+- "Vertical scrolling not allowed with height resize.\n",
+- "Vertical scrolling has been DEACTIVATED.");
+- XtAppWarning(XtWidgetToApplicationContext(new), error_buf);
++ char *err1 = "Xaw Text Widget ";
++ char *err2 = ":\nVertical scrolling not allowed with height resize.\n";
++ char *err3 = "Vertical scrolling has been DEACTIVATED.";
++ len = strlen(err1) + strlen(err2) + strlen(err3) +
++ strlen(ctx->core.name) + 1;
++ perr = XtStackAlloc(len, error_buf);
++ if (perr != NULL) {
++ (void) sprintf(perr, "%s%s%s%s", err1, ctx->core.name, err2, err3);
++ XtAppWarning(XtWidgetToApplicationContext(new), perr);
++ XtStackFree(perr, error_buf);
++ }
+ ctx->text.scroll_vert = XawtextScrollNever;
+ }
+ else if (ctx->text.scroll_vert == XawtextScrollAlways)
+@@ -580,18 +591,32 @@ Cardinal *num_args; /* unused */
+
+ if (ctx->text.scroll_horiz != XawtextScrollNever)
+ if (ctx->text.wrap != XawtextWrapNever) {
+- (void) sprintf(error_buf, "Xaw Text Widget %s:\n %s %s.", ctx->core.name,
+- "Horizontal scrolling not allowed with wrapping active.\n",
+- "Horizontal scrolling has been DEACTIVATED.");
+- XtAppWarning(XtWidgetToApplicationContext(new), error_buf);
++ char *err1 = "Xaw Text Widget ";
++ char *err2 = ":\nHorizontal scrolling not allowed with wrapping active.";
++ char *err3 = "\nHorizontal scrolling has been DEACTIVATED.";
++ len = strlen(err1) + strlen(err2) + strlen(err3) +
++ strlen(ctx->core.name) + 1;
++ perr = XtStackAlloc(len, error_buf);
++ if (perr != NULL) {
++ (void) sprintf(perr, "%s%s%s%s", err1, ctx->core.name, err2, err3);
++ XtAppWarning(XtWidgetToApplicationContext(new), perr);
++ XtStackFree(perr, error_buf);
++ }
+ ctx->text.scroll_horiz = XawtextScrollNever;
+ }
+ else if ( (ctx->text.resize == XawtextResizeWidth) ||
+ (ctx->text.resize == XawtextResizeBoth) ) {
+- (void) sprintf(error_buf, "Xaw Text Widget %s:\n %s %s.", ctx->core.name,
+- "Horizontal scrolling not allowed with width resize.\n",
+- "Horizontal scrolling has been DEACTIVATED.");
+- XtAppWarning(XtWidgetToApplicationContext(new), error_buf);
++ char *err1 = "Xaw Text Widget ";
++ char *err2 = ":\nHorizontal scrolling not allowed with width resize.\n";
++ char *err3 = "Horizontal scrolling has been DEACTIVATED.";
++ len = strlen(err1) + strlen(err2) + strlen(err3) +
++ strlen(ctx->core.name) + 1;
++ perr = XtStackAlloc(len, error_buf);
++ if (perr != NULL) {
++ (void) sprintf(perr, "%s%s%s%s", err1, ctx->core.name, err2, err3);
++ XtAppWarning(XtWidgetToApplicationContext(new), perr);
++ XtStackFree(perr, error_buf);
++ }
+ ctx->text.scroll_horiz = XawtextScrollNever;
+ }
+ else if (ctx->text.scroll_horiz == XawtextScrollAlways)
+diff -up Xaw3d-1.5E/xc/lib/Xaw3d/TextPop.c.debian Xaw3d-1.5E/xc/lib/Xaw3d/TextPop.c
+--- Xaw3d-1.5E/xc/lib/Xaw3d/TextPop.c.debian 2000-11-27 14:19:36.000000000 +0100
++++ Xaw3d-1.5E/xc/lib/Xaw3d/TextPop.c 2008-10-06 11:42:13.000000000 +0200
+@@ -66,6 +66,8 @@ in this Software without prior written a
+ #include <X11/Xos.h> /* for O_RDONLY */
+ #include <errno.h>
+
++#include "XawAlloc.h"
++
+ #ifdef X_NOT_STDC_ENV
+ extern int errno;
+ #endif
+@@ -809,6 +811,8 @@ DoSearch(search)
+ struct SearchAndReplace * search;
+ {
+ char msg[BUFSIZ];
++ char *pmsg;
++ int len;
+ Widget tw = XtParent(search->search_popup);
+ XawTextPosition pos;
+ XawTextScanDirection dir;
+@@ -835,9 +839,20 @@ struct SearchAndReplace * search;
+ /* The Raw string in find.ptr may be WC I can't use here, so I re - call
+ GetString to get a tame version. */
+
+- if (pos == XawTextSearchError)
+- (void) sprintf( msg, "Could not find string ``%s''.", GetString( search->search_text ) );
+- else {
++ if (pos == XawTextSearchError) {
++ char *msg1 = "Could not find string ``";
++ char *msg2 = "''.";
++ len = strlen(msg1) + strlen(msg2) +
++ strlen(GetString( search->search_text )) + 1;
++ pmsg = XtStackAlloc(len, msg);
++ if (pmsg != NULL) {
++ (void) sprintf( pmsg, "%s%s%s", msg1, GetString( search->search_text ),
++ msg2);
++ } else {
++ pmsg = msg;
++ (void) sprintf( pmsg, "Could not find string");
++ }
++ } else {
+ if (dir == XawsdRight)
+ XawTextSetInsertionPoint( tw, pos + text.length);
+ else
+@@ -849,7 +864,8 @@ struct SearchAndReplace * search;
+ }
+
+ XawTextUnsetSelection(tw);
+- SetSearchLabels(search, msg, "", TRUE);
++ SetSearchLabels(search, pmsg, "", TRUE);
++ XtStackFree(pmsg, msg);
+ return(FALSE);
+ }
+
+@@ -982,13 +998,26 @@ Boolean once_only, show_current;
+ if ( (new_pos == XawTextSearchError) ) {
+ if (count == 0) {
+ char msg[BUFSIZ];
++ char *pmsg;
++ int len;
++ char *msg1 = "*** Error: Could not find string ``";
++ char *msg2 = "''. ***";
+
+ /* The Raw string in find.ptr may be WC I can't use here,
+ so I call GetString to get a tame version.*/
+
+- (void) sprintf( msg, "%s %s %s", "*** Error: Could not find string ``",
+- GetString( search->search_text ), "''. ***");
+- SetSearchLabels(search, msg, "", TRUE);
++ len = strlen(msg1) + strlen(msg2) +
++ strlen(GetString( search->search_text )) + 1;
++ pmsg = XtStackAlloc(len, msg);
++ if (pmsg != NULL) {
++ (void) sprintf( pmsg, "%s%s%s", msg1,
++ GetString( search->search_text ), msg2);
++ } else {
++ pmsg = msg;
++ (void) sprintf(pmsg, "*** Error: Could not find string ***");
++ }
++ SetSearchLabels(search, pmsg, "", TRUE);
++ XtStackFree(pmsg, msg);
+ return(FALSE);
+ }
+ else
+@@ -1011,9 +1040,22 @@ Boolean once_only, show_current;
+
+ if (XawTextReplace(tw, pos, end_pos, &replace) != XawEditDone) {
+ char msg[BUFSIZ];
+-
+- (void) sprintf( msg, "'%s' with '%s'. ***", find.ptr, replace.ptr);
++ char *pmsg;
++ int len;
++ char *msg1 = "' with '";
++ char *msg2 = "'. ***";
++
++ len = 1 + strlen(msg1) + strlen(msg2) + strlen(find.ptr) +
++ strlen(replace.ptr) + 1;
++ pmsg = XtStackAlloc(len, msg);
++ if (pmsg != NULL) {
++ (void) sprintf( pmsg, "`%s%s%s%s", find.ptr, msg1, replace.ptr, msg2);
++ } else {
++ pmsg = msg;
++ (void) sprintf(pmsg, "string ***");
++ }
+ SetSearchLabels(search, "*** Error while replacing", msg, TRUE);
++ XtStackFree(pmsg, msg);
+ return(FALSE);
+ }
+
+@@ -1164,13 +1206,20 @@ XtArgVal value;
+ {
+ Widget temp_widget;
+ char buf[BUFSIZ];
++ char *pbuf;
++ int len;
+
+- (void) sprintf(buf, "%s.%s", FORM_NAME, name);
++ len = strlen(FORM_NAME) + strlen(name) + 2;
++ pbuf = XtStackAlloc(len, buf);
++ if (pbuf == NULL) return FALSE;
++ (void) sprintf(pbuf, "%s.%s", FORM_NAME, name);
+
+- if ( (temp_widget = XtNameToWidget(shell, buf)) != NULL) {
++ if ( (temp_widget = XtNameToWidget(shell, pbuf)) != NULL) {
+ SetResource(temp_widget, res_name, value);
++ XtStackFree(pbuf, buf);
+ return(TRUE);
+ }
++ XtStackFree(pbuf, buf);
+ return(FALSE);
+ }
+
+diff -up /dev/null Xaw3d-1.5E/xc/lib/Xaw3d/XawAlloc.h
+--- /dev/null 2008-10-06 08:37:32.418005377 +0200
++++ Xaw3d-1.5E/xc/lib/Xaw3d/XawAlloc.h 2008-10-06 11:42:13.000000000 +0200
+@@ -0,0 +1,10 @@
++/* $XFree86: xc/lib/Xaw/XawAlloc.h,v 1.1.2.1 1998/05/16 09:05:23 dawes Exp $ */
++
++#define XtStackAlloc(size, stack_cache_array) \
++ ((size) <= sizeof(stack_cache_array) \
++ ? (XtPointer)(stack_cache_array) \
++ : XtMalloc((unsigned)(size)))
++
++#define XtStackFree(pointer, stack_cache_array) \
++ if ((pointer) != ((XtPointer)(stack_cache_array))) XtFree(pointer); else
++
+--- xaw3d-1.5e/xc/lib/Xaw3d/SmeBSB.c 2003-08-04 17:27:58.000000000 +0200
++++ xaw3d-1.5e/xc/lib/Xaw3d/SmeBSB.c 2003-08-07 15:02:39.000000000 +0200
+@@ -52,6 +52,8 @@
+ #include <X11/Xaw3d/Cardinals.h>
+ #include <stdio.h>
+
++#include "XawAlloc.h"
++
+ /* needed for abs() */
+ #ifndef X_NOT_STDC_ENV
+ #include <stdlib.h>
+@@ -712,6 +714,8 @@
+ int x, y;
+ unsigned int width, height, bw;
+ char buf[BUFSIZ];
++ char *pbuf;
++ int len;
+
+ if (is_left) {
+ width = height = 0;
+@@ -720,18 +724,24 @@
+ if (!XGetGeometry(XtDisplayOfObject(w),
+ entry->sme_bsb.left_bitmap, &root, &x, &y,
+ &width, &height, &bw, &entry->sme_bsb.left_depth)) {
+- (void) sprintf(buf, "Xaw SmeBSB Object: %s %s \"%s\".",
+- "Could not get Left Bitmap",
+- "geometry information for menu entry",
+- XtName(w));
+- XtAppError(XtWidgetToApplicationContext(w), buf);
++ char *err1 = "Xaw SmeBSB Object: Could not get Left Bitmap geometry information for menu entry ";
++ len = strlen(err1) + strlen(XtName(w)) + 3 + 1;
++ pbuf = XtStackAlloc(len, buf);
++ if (pbuf == NULL) return;
++ sprintf(pbuf, "%s\"%s\".", err1, XtName(w));
++ XtAppError(XtWidgetToApplicationContext(w), pbuf);
++ XtStackFree(pbuf, buf);
+ }
+ #ifdef NEVER
+ if (entry->sme_bsb.left_depth != 1) {
+- (void) sprintf(buf, "Xaw SmeBSB Object: %s \"%s\" %s.",
+- "Left Bitmap of entry", XtName(w),
+- "is not one bit deep");
+- XtAppError(XtWidgetToApplicationContext(w), buf);
++ char *err1 = "Xaw SmeBSB Object: Left Bitmap of entry ";
++ char *err2 = " is not one bit deep.";
++ len = strlen(err1) + strlen(err2) + strlen(XtName(w)) + 2 + 1;
++ pbuf = XtStackAlloc(len, buf);
++ if (pbuf == NULL) return;
++ sprintf(pbuf, "%s\"%s\"%s", err1, XtName(w), err2);
++ XtAppError(XtWidgetToApplicationContext(w), pbuf);
++ XtStackFree(pbuf, buf);
+ }
+ #endif
+ }
+@@ -745,18 +755,24 @@
+ if (!XGetGeometry(XtDisplayOfObject(w),
+ entry->sme_bsb.right_bitmap, &root, &x, &y,
+ &width, &height, &bw, &entry->sme_bsb.right_depth)) {
+- (void) sprintf(buf, "Xaw SmeBSB Object: %s %s \"%s\".",
+- "Could not get Right Bitmap",
+- "geometry information for menu entry",
+- XtName(w));
+- XtAppError(XtWidgetToApplicationContext(w), buf);
++ char *err1 = "Xaw SmeBSB Object: Could not get Right Bitmap geometry information for menu entry ";
++ len = strlen(err1) + strlen(XtName(w)) + 3 + 1;
++ pbuf = XtStackAlloc(len, buf);
++ if (pbuf == NULL) return;
++ sprintf(pbuf, "%s\"%s\".", err1, XtName(w));
++ XtAppError(XtWidgetToApplicationContext(w), pbuf);
++ XtStackFree(pbuf, buf);
+ }
+ #ifdef NEVER
+ if (entry->sme_bsb.right_depth != 1) {
+- (void) sprintf(buf, "Xaw SmeBSB Object: %s \"%s\" %s.",
+- "Right Bitmap of entry", XtName(w),
+- "is not one bit deep");
+- XtAppError(XtWidgetToApplicationContext(w), buf);
++ char *err1 = "Xaw SmeBSB Object: Right Bitmap of entry ";
++ char *err2 = " is not one bit deep.";
++ len = strlen(err1) + strlen(err2) + strlen(XtName(w)) + 2 + 1;
++ pbuf = XtStackAlloc(len, buf);
++ if (pbuf == NULL) return;
++ sprintf(pbuf, "%s\"%s\"%s", err1, XtName(w), err2);
++ XtAppError(XtWidgetToApplicationContext(w), pbuf);
++ XtStackFree(pbuf, buf);
+ }
+ #endif
+ }
diff --git a/extra/xaw3d/Xaw3d-1.5-i18n.patch b/extra/xaw3d/Xaw3d-1.5-i18n.patch
new file mode 100644
index 000000000..aa4730238
--- /dev/null
+++ b/extra/xaw3d/Xaw3d-1.5-i18n.patch
@@ -0,0 +1,10 @@
+--- Xaw3d-1.5/xc/lib/Xaw3d/MultiSrc.c.orig Tue Aug 6 22:51:08 2002
++++ Xaw3d-1.5/xc/lib/Xaw3d/MultiSrc.c Tue Aug 6 22:51:16 2002
+@@ -735,6 +735,7 @@
+
+ if ( string_set || (old_src->multi_src.type != src->multi_src.type) ) {
+ RemoveOldStringOrFile(old_src, string_set);
++ src->multi_src.allocated_string = old_src->multi_src.allocated_string;
+ file = InitStringOrFile(src, string_set);
+
+ /* Load pieces does this logic for us, but it shouldn't. Its messy.*/
diff --git a/extra/xaw3d/Xaw3d-1.5E-warnings.patch b/extra/xaw3d/Xaw3d-1.5E-warnings.patch
new file mode 100644
index 000000000..8ffa7f8f9
--- /dev/null
+++ b/extra/xaw3d/Xaw3d-1.5E-warnings.patch
@@ -0,0 +1,114 @@
+--- Xaw3d-1.5E/xc/lib/Xaw3d/MultiSrc.c 2009-03-15 17:04:35.000000000 +0100
++++ Xaw3d-1.5E.new/xc/lib/Xaw3d/MultiSrc.c 2009-03-15 14:22:05.000000000 +0100
+@@ -77,6 +77,7 @@
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ #include <fcntl.h>
++#include <wchar.h>
+
+ /****************************************************************
+ *
+--- Xaw3d-1.5E/xc/lib/Xaw3d/Panner.c 2000-11-27 14:19:24.000000000 +0100
++++ Xaw3d-1.5E.new/xc/lib/Xaw3d/Panner.c 2009-03-15 13:50:40.000000000 +0100
+@@ -36,7 +36,7 @@
+ #include <X11/Xmu/Misc.h> /* for Min */
+ #include <X11/Xmu/Drawing.h>
+ #include <ctype.h> /* for isascii() etc. */
+-#include <math.h> /* for atof() */
++#include <stdlib.h> /* for atof() */
+
+ extern Bool XmuDistinguishablePixels(); /* not defined in any Xmu headers */
+
+--- Xaw3d-1.5E/xc/lib/Xaw3d/Text.c 2009-03-15 17:04:35.000000000 +0100
++++ Xaw3d-1.5E.new/xc/lib/Xaw3d/Text.c 2009-03-15 13:54:10.000000000 +0100
+@@ -75,6 +75,7 @@
+ #include <X11/Xfuncs.h>
+ #include <ctype.h> /* for isprint() */
+ #include <stdlib.h>
++#include <wchar.h>
+
+ #include "XawAlloc.h"
+
+--- Xaw3d-1.5E/xc/lib/Xaw3d/TextAction.c 2000-11-27 14:19:36.000000000 +0100
++++ Xaw3d-1.5E.new/xc/lib/Xaw3d/TextAction.c 2009-03-15 14:19:27.000000000 +0100
+@@ -45,7 +45,9 @@
+ #include "XawI18n.h"
+ #endif
+ #include <stdio.h>
++#include <stdlib.h>
+ #include <ctype.h>
++#include <wchar.h>
+
+ #define SrcScan XawTextSourceScan
+ #define FindDist XawTextSinkFindDistance
+--- Xaw3d-1.5E/xc/lib/Xaw3d/TextPop.c 2009-03-15 17:04:35.000000000 +0100
++++ Xaw3d-1.5E.new/xc/lib/Xaw3d/TextPop.c 2009-03-15 14:19:44.000000000 +0100
+@@ -65,6 +65,7 @@
+ #include <stdio.h>
+ #include <X11/Xos.h> /* for O_RDONLY */
+ #include <errno.h>
++#include <wchar.h>
+
+ #include "XawAlloc.h"
+
+--- Xaw3d-1.5E/xc/lib/Xaw3d/TextSrc.c 2000-11-27 14:19:36.000000000 +0100
++++ Xaw3d-1.5E.new/xc/lib/Xaw3d/TextSrc.c 2009-03-15 14:19:13.000000000 +0100
+@@ -49,6 +49,7 @@
+ #endif
+ #include <stdio.h>
+ #include <ctype.h>
++#include <wchar.h>
+
+ /****************************************************************
+ *
+--- Xaw3d-1.5E/xc/lib/Xaw3d/ThreeD.c 2003-02-11 12:41:56.000000000 +0100
++++ Xaw3d-1.5E.new/xc/lib/Xaw3d/ThreeD.c 2009-03-15 14:21:20.000000000 +0100
+@@ -39,6 +39,7 @@
+ #include <X11/Xaw3d/XawInit.h>
+ #include <X11/Xaw3d/ThreeDP.h>
+ #include <X11/Xosdefs.h>
++#include <X11/Xmu/CharSet.h>
+
+ /* Initialization of defaults */
+
+--- Xaw3d-1.5E/xc/lib/Xaw3d/Tip.c 2003-03-09 01:31:49.000000000 +0100
++++ Xaw3d-1.5E.new/xc/lib/Xaw3d/Tip.c 2009-03-15 14:21:36.000000000 +0100
+@@ -41,6 +41,7 @@
+ #include <X11/Xmu/Converters.h>
+ #include <X11/Xaw3d/TipP.h>
+ #include <X11/Xaw3d/XawInit.h>
++#include <stdlib.h>
+
+ #define TIP_EVENT_MASK (ButtonPressMask | \
+ ButtonReleaseMask | \
+--- Xaw3d-1.5E/xc/lib/Xaw3d/XawI18n.c 1996-10-15 16:41:25.000000000 +0200
++++ Xaw3d-1.5E.new/xc/lib/Xaw3d/XawI18n.c 2009-03-15 14:23:11.000000000 +0100
+@@ -55,6 +55,7 @@
+
+ */
+
++#include <stdlib.h>
+ #include <X11/IntrinsicP.h>
+ #include "XawI18n.h"
+
+--- Xaw3d-1.5E/xc/lib/Xaw3d/XawIm.c 1998-04-21 15:42:02.000000000 +0200
++++ Xaw3d-1.5E.new/xc/lib/Xaw3d/XawIm.c 2009-03-15 14:22:41.000000000 +0100
+@@ -59,6 +59,7 @@
+ #include <X11/Xos.h>
+ #include <X11/Xfuncs.h>
+ #include <X11/ShellP.h>
++#include <X11/ResourceI.h>
+ #include <X11/Xaw3d/TextP.h>
+ #include <X11/Xaw3d/MultiSrc.h>
+ #include <X11/Xaw3d/MultiSinkP.h>
+diff -up Xaw3d-1.5E/xc/lib/Xaw3d/XawI18n.h~ Xaw3d-1.5E/xc/lib/Xaw3d/XawI18n.h
+--- Xaw3d-1.5E/xc/lib/Xaw3d/XawI18n.h~ 1996-10-15 16:41:26.000000000 +0200
++++ Xaw3d-1.5E/xc/lib/Xaw3d/XawI18n.h 2009-03-15 17:18:04.000000000 +0100
+@@ -72,7 +72,4 @@ extern wchar_t _Xaw_atowc (
+
+ #ifndef HAS_ISW_FUNCS
+ #include <ctype.h>
+-#ifndef iswspace
+-#define iswspace(c) (isascii(c) && isspace(toascii(c)))
+-#endif
+ #endif
diff --git a/extra/xaw3d/Xaw3d-1.5E-xorg-imake.patch b/extra/xaw3d/Xaw3d-1.5E-xorg-imake.patch
new file mode 100644
index 000000000..9d5312e33
--- /dev/null
+++ b/extra/xaw3d/Xaw3d-1.5E-xorg-imake.patch
@@ -0,0 +1,35 @@
+--- Imakefile.config 2003-03-08 15:55:18.000000000 +0100
++++ Imakefile 2005-01-20 14:48:55.630795072 +0100
+@@ -5,24 +5,24 @@
+ XCOMM Build options. Have you read the README.XAW3D file yet?
+ XCOMM
+ XCOMM For color pixmaps, define MULTIPLANE_PIXMAPS:
+-#undef MULTIPLANE_PIXMAPS
++#define MULTIPLANE_PIXMAPS
+ XCOMM For grayed stipple shadows, define GRAY_BLKWHT_STIPPLES:
+ #define GRAY_BLKWHT_STIPPLES
+ XCOMM For scrollbars with arrows, define ARROW_SCROLLBARS:
+-#undef ARROW_SCROLLBARS
++#define ARROW_SCROLLBARS
+
+-#define DoNormalLib NormalLibXaw
+-#define DoSharedLib SharedLibXaw
+-#define DoDebugLib DebugLibXaw
+-#define DoProfileLib ProfileLibXaw
++#define DoNormalLib NormalLibXaw7
++#define DoSharedLib SharedLibXaw7
++#define DoDebugLib DebugLibXaw7
++#define DoProfileLib ProfileLibXaw7
+ #define HasSharedData YES
+ #define LibName Xaw3d
+-#define SoRev SOXAWREV
++#define SoRev SOXAW7REV
+ #define IncSubdir X11
+ #define IncSubSubdir Xaw3d
+
+ XCOMM When building outside an X11 source tree:
+-XCOMM EXTRA_INCLUDES = -I.
++EXTRA_INCLUDES = -I.
+
+ #ifdef SharedXawReqs
+ REQUIREDLIBS = SharedXawReqs
diff --git a/extra/xaw3d/Xaw3d-ia64.patch b/extra/xaw3d/Xaw3d-ia64.patch
new file mode 100644
index 000000000..90ce711e9
--- /dev/null
+++ b/extra/xaw3d/Xaw3d-ia64.patch
@@ -0,0 +1,33 @@
+diff -up Xaw3d-1.5E/xc/lib/Xaw3d/List.c.prototypes Xaw3d-1.5E/xc/lib/Xaw3d/List.c
+--- Xaw3d-1.5E/xc/lib/Xaw3d/List.c.prototypes 2000-11-27 14:19:36.000000000 +0100
++++ Xaw3d-1.5E/xc/lib/Xaw3d/List.c 2008-10-06 10:11:28.000000000 +0200
+@@ -38,6 +38,7 @@ in this Software without prior written a
+
+ #include "Xaw3dP.h"
+ #include <stdio.h>
++#include <stdlib.h>
+ #include <ctype.h>
+ #include <X11/IntrinsicP.h>
+ #include <X11/StringDefs.h>
+diff -up Xaw3d-1.5E/xc/lib/Xaw3d/MultiSink.c.prototypes Xaw3d-1.5E/xc/lib/Xaw3d/MultiSink.c
+--- Xaw3d-1.5E/xc/lib/Xaw3d/MultiSink.c.prototypes 1996-10-15 16:41:20.000000000 +0200
++++ Xaw3d-1.5E/xc/lib/Xaw3d/MultiSink.c 2008-10-06 10:10:37.000000000 +0200
+@@ -81,6 +81,7 @@ SOFTWARE.
+ #include <X11/Xaw3d/TextP.h>
+ #include "XawI18n.h"
+ #include <stdio.h>
++#include <stdlib.h>
+ #include <ctype.h>
+
+ #ifdef GETLASTPOS
+diff -up Xaw3d-1.5E/xc/lib/Xaw3d/Text.c.prototypes Xaw3d-1.5E/xc/lib/Xaw3d/Text.c
+--- Xaw3d-1.5E/xc/lib/Xaw3d/Text.c.prototypes 2003-02-10 18:28:13.000000000 +0100
++++ Xaw3d-1.5E/xc/lib/Xaw3d/Text.c 2008-10-06 10:11:11.000000000 +0200
+@@ -74,6 +74,7 @@ SOFTWARE.
+ #include <X11/Xaw3d/ThreeDP.h>
+ #include <X11/Xfuncs.h>
+ #include <ctype.h> /* for isprint() */
++#include <stdlib.h>
+
+ #ifndef MAX_LEN_CT
+ #define MAX_LEN_CT 6 /* for sequence: ESC $ ( A \xx \xx */
diff --git a/extra/xaw3d/xaw3d.patch b/extra/xaw3d/xaw3d.patch
new file mode 100644
index 000000000..d126f7c5c
--- /dev/null
+++ b/extra/xaw3d/xaw3d.patch
@@ -0,0 +1,30 @@
+diff -up Xaw3d-1.5E/xc/lib/Xaw3d/Scrollbar.c.orig Xaw3d-1.5E/xc/lib/Xaw3d/Scrollbar.c
+--- Xaw3d-1.5E/xc/lib/Xaw3d/Scrollbar.c.orig 2003-02-10 18:22:26.000000000 +0100
++++ Xaw3d-1.5E/xc/lib/Xaw3d/Scrollbar.c 2008-10-06 10:07:46.000000000 +0200
+@@ -1087,7 +1087,11 @@ static void NotifyThumb (w, event, param
+ Cardinal *num_params; /* unused */
+ {
+ register ScrollbarWidget sbw = (ScrollbarWidget) w;
+- float top = sbw->scrollbar.top;
++ union {
++ XtPointer pt;
++ float top;
++ } foo;
++ foo.top = sbw->scrollbar.top;
+
+ #ifndef XAW_ARROW_SCROLLBARS
+ if (sbw->scrollbar.direction == 0) return; /* if no StartScroll */
+@@ -1116,10 +1120,10 @@ static void NotifyThumb (w, event, param
+ /* Removed the dependancy on scrollbar arrows. Xterm as distributed in
+ X11R6.6 by The XFree86 Project wants this correction, with or without
+ the arrows. */
+- top += 0.0001;
++ foo.top += 0.0001;
+ /* #endif */
+- XtCallCallbacks (w, XtNthumbProc, *(XtPointer*)&top);
+- XtCallCallbacks (w, XtNjumpProc, (XtPointer)&top);
++ XtCallCallbacks (w, XtNthumbProc, foo.pt);
++ XtCallCallbacks (w, XtNjumpProc, (XtPointer)&sbw->scrollbar.top);
+ }
+
+
diff --git a/extra/xawtv/PKGBUILD b/extra/xawtv/PKGBUILD
new file mode 100644
index 000000000..3a8498c10
--- /dev/null
+++ b/extra/xawtv/PKGBUILD
@@ -0,0 +1,42 @@
+# $Id: PKGBUILD 63661 2010-01-18 09:35:32Z andrea $
+# Maintainer:
+# Contributor: Sarah Hay <sarahhay@mb.sympatico.ca>
+# Contributor: Jason Chu <jason@archlinux.org>
+
+pkgname=xawtv
+pkgver=3.95
+pkgrel=7
+pkgdesc="A simple Xaw-based TV program which uses the bttv driver or video4linux"
+arch=('i686' 'x86_64')
+url="http://linux.bytesex.org/xawtv/"
+license=('GPL')
+depends=('libjpeg' 'alsa-lib' 'lesstif' 'libdv' 'zvbi' 'aalib' 'libv4l'
+ 'libxxf86dga' 'libfs' 'libxrandr' 'libxinerama' 'libxv' 'libxaw'
+ 'libxxf86vm' 'libgl' 'gpm' 'lirc-utils' 'libxft')
+makedepends=('mesa')
+options=('!makeflags')
+source=(http://dl.bytesex.org/releases/$pkgname/$pkgname-$pkgver.tar.gz
+ xawtv-395.diff
+ xawtv-3.95-pagemask-fix.patch
+ xawtv-3.95-fixes.patch
+ xawtv-3.95-libv4l2.patch
+ xawtv-3.95-no-dga.patch)
+md5sums=('ad25e03f7e128b318e392cb09f52207d'
+ '87a87b6c62b39348053704f052141843'
+ '97493dfaac8c80084d8b66891becd76c'
+ 'dc83378a5c76c029f4e49434214fc824'
+ '56932100c5060bf9dfc45b8af927e697'
+ 'c456147f15c8f836c678c6499f068085')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ patch -Np1 -i $srcdir/xawtv-395.diff || return 1
+ patch -Np1 -i $srcdir/xawtv-3.95-pagemask-fix.patch || return 1
+ # Add patches from https://bugzilla.redhat.com/show_bug.cgi?id=457796
+ patch -Np1 -i $srcdir/xawtv-3.95-fixes.patch || return 1
+ patch -Np1 -i $srcdir/xawtv-3.95-libv4l2.patch || return 1
+ patch -Np1 -i $srcdir/xawtv-3.95-no-dga.patch || return 1
+ ./configure --prefix=/usr --mandir=/usr/share/man
+ make || return 1
+ make DESTDIR=$pkgdir resdir=$pkgdir/usr/lib/X11 install
+}
diff --git a/extra/xawtv/xawtv-3.95-fixes.patch b/extra/xawtv/xawtv-3.95-fixes.patch
new file mode 100644
index 000000000..b6cdf8dec
--- /dev/null
+++ b/extra/xawtv/xawtv-3.95-fixes.patch
@@ -0,0 +1,72 @@
+diff -up xawtv-3.95.new/libng/plugins/drv0-v4l2.c.fixes xawtv-3.95.new/libng/plugins/drv0-v4l2.c
+--- xawtv-3.95.new/libng/plugins/drv0-v4l2.c.fixes 2005-02-11 18:56:24.000000000 +0100
++++ xawtv-3.95.new/libng/plugins/drv0-v4l2.c 2008-08-03 20:46:32.000000000 +0200
+@@ -91,6 +91,7 @@ struct v4l2_handle {
+ struct ng_video_fmt fmt_me;
+ struct v4l2_requestbuffers reqbufs;
+ struct v4l2_buffer buf_v4l2[WANTED_BUFFERS];
++ int buf_v4l2_size[WANTED_BUFFERS];
+ struct ng_video_buf buf_me[WANTED_BUFFERS];
+ unsigned int queue,waiton;
+
+@@ -166,7 +167,7 @@ xioctl(int fd, int cmd, void *arg, int m
+ int rc;
+
+ rc = ioctl(fd,cmd,arg);
+- if (0 == rc && ng_debug < 2)
++ if (rc >= 0 && ng_debug < 2)
+ return rc;
+ if (mayfail && errno == mayfail && ng_debug < 2)
+ return rc;
+@@ -768,6 +769,7 @@ v4l2_waiton(struct v4l2_handle *h)
+ /* get it */
+ memset(&buf,0,sizeof(buf));
+ buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
++ buf.memory = V4L2_MEMORY_MMAP;
+ if (-1 == xioctl(h->fd,VIDIOC_DQBUF,&buf, 0))
+ return -1;
+ h->waiton++;
+@@ -812,6 +814,7 @@ v4l2_start_streaming(struct v4l2_handle
+ h->buf_v4l2[i].memory = V4L2_MEMORY_MMAP;
+ if (-1 == xioctl(h->fd, VIDIOC_QUERYBUF, &h->buf_v4l2[i], 0))
+ return -1;
++ h->buf_v4l2_size[i] = h->buf_v4l2[i].length;
+ h->buf_me[i].fmt = h->fmt_me;
+ h->buf_me[i].size = h->buf_me[i].fmt.bytesperline *
+ h->buf_me[i].fmt.height;
+@@ -865,12 +868,16 @@ v4l2_stop_streaming(struct v4l2_handle *
+ ng_waiton_video_buf(&h->buf_me[i]);
+ if (ng_debug)
+ print_bufinfo(&h->buf_v4l2[i]);
+- if (-1 == munmap(h->buf_me[i].data,h->buf_me[i].size))
++ if (-1 == munmap(h->buf_me[i].data, h->buf_v4l2_size[i]))
+ perror("munmap");
+ }
+ h->queue = 0;
+ h->waiton = 0;
+
++ /* unrequest buffers (only needed for some drivers) */
++ h->reqbufs.count = 0;
++ xioctl(h->fd, VIDIOC_REQBUFS, &h->reqbufs, EINVAL);
++
+ /* turn on preview (if needed) */
+ if (h->ov_on != h->ov_enabled) {
+ h->ov_on = h->ov_enabled;
+@@ -907,6 +914,17 @@ v4l2_setformat(void *handle, struct ng_v
+ fmt->width = h->fmt_v4l2.fmt.pix.width;
+ fmt->height = h->fmt_v4l2.fmt.pix.height;
+ fmt->bytesperline = h->fmt_v4l2.fmt.pix.bytesperline;
++ /* struct v4l2_format.fmt.pix.bytesperline is bytesperline for the
++ main plane for planar formats, where as we want it to be the total
++ bytesperline for all planes */
++ switch (fmt->fmtid) {
++ case VIDEO_YUV422P:
++ fmt->bytesperline *= 2;
++ break;
++ case VIDEO_YUV420P:
++ fmt->bytesperline = fmt->bytesperline * 3 / 2;
++ break;
++ }
+ if (0 == fmt->bytesperline)
+ fmt->bytesperline = fmt->width * ng_vfmt_to_depth[fmt->fmtid] / 8;
+ h->fmt_me = *fmt;
diff --git a/extra/xawtv/xawtv-3.95-libv4l2.patch b/extra/xawtv/xawtv-3.95-libv4l2.patch
new file mode 100644
index 000000000..45a5e69cb
--- /dev/null
+++ b/extra/xawtv/xawtv-3.95-libv4l2.patch
@@ -0,0 +1,176 @@
+--- xawtv-3.95/libng/plugins/Subdir.mk~ 2008-07-30 09:51:01.000000000 +0200
++++ xawtv-3.95/libng/plugins/Subdir.mk 2008-07-30 09:51:01.000000000 +0200
+@@ -41,6 +41,7 @@ libng/plugins/read-qt.so : LDLIBS := $(
+ libng/plugins/write-qt.so : LDLIBS := $(QT_LIBS)
+ libng/plugins/read-dv.so : LDLIBS := $(DV_LIBS)
+ libng/plugins/write-dv.so : LDLIBS := $(DV_LIBS)
++libng/plugins/drv0-v4l2.so: LDLIBS := -lv4l2
+
+ # global targets
+ all:: $(TARGETS-plugins)
+diff -up xawtv-3.95/libng/plugins/drv0-v4l2.c.orig xawtv-3.95/libng/plugins/drv0-v4l2.c
+--- xawtv-3.95/libng/plugins/drv0-v4l2.c.orig 2008-08-03 21:26:13.000000000 +0200
++++ xawtv-3.95/libng/plugins/drv0-v4l2.c 2008-08-03 21:27:50.000000000 +0200
+@@ -29,11 +29,26 @@
+ #include "struct-dump.h"
+ #include "struct-v4l2.h"
+
++/* FIXME replace with autoconf detection */
++#define HAVE_LIBV4L
++
++#ifdef HAVE_LIBV4L
++#include <libv4l2.h>
++#else
++#define v4l2_fd_open(fd, flags) (fd)
++#define v4l2_close close
++#define v4l2_dup dup
++#define v4l2_ioctl ioctl
++#define v4l2_read read
++#define v4l2_mmap mmap
++#define v4l2_munmap munmap
++#endif
++
+ /* ---------------------------------------------------------------------- */
+
+ /* open+close */
+-static void* v4l2_open(char *device);
+-static int v4l2_close(void *handle);
++static void* v4l2_open_handle(char *device);
++static int v4l2_close_handle(void *handle);
+
+ /* attributes */
+ static char* v4l2_devname(void *handle);
+@@ -111,8 +126,8 @@ struct v4l2_handle {
+
+ struct ng_vid_driver v4l2_driver = {
+ name: "v4l2",
+- open: v4l2_open,
+- close: v4l2_close,
++ open: v4l2_open_handle,
++ close: v4l2_close_handle,
+
+ get_devname: v4l2_devname,
+ capabilities: v4l2_flags,
+@@ -166,7 +181,7 @@ xioctl(int fd, int cmd, void *arg, int m
+ {
+ int rc;
+
+- rc = ioctl(fd,cmd,arg);
++ rc = v4l2_ioctl(fd,cmd,arg);
+ if (rc >= 0 && ng_debug < 2)
+ return rc;
+ if (mayfail && errno == mayfail && ng_debug < 2)
+@@ -220,7 +235,7 @@ get_device_capabilities(struct v4l2_hand
+ }
+
+ h->streamparm.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+- ioctl(h->fd,VIDIOC_G_PARM,&h->streamparm);
++ v4l2_ioctl(h->fd,VIDIOC_G_PARM,&h->streamparm);
+
+ /* controls */
+ for (i = 0; i < MAX_CTRL; i++) {
+@@ -444,10 +459,10 @@ static void v4l2_write_attr(struct ng_at
+ /* ---------------------------------------------------------------------- */
+
+ static void*
+-v4l2_open(char *device)
++v4l2_open_handle(char *device)
+ {
+ struct v4l2_handle *h;
+- int i;
++ int i, libv4l2_fd;
+
+ h = malloc(sizeof(*h));
+ if (NULL == h)
+@@ -459,6 +474,16 @@ v4l2_open(char *device)
+ goto err;
+ }
+
++ /* Note the v4l2_xxx functions are designed so that if they get passed an
++ unknown fd, the will behave exactly as their regular xxx counterparts, so
++ if v4l2_fd_open fails, we continue as normal (missing the libv4l2 custom
++ cam format to normal formats conversion). Chances are big we will still
++ fail then though, as normally v4l2_fd_open only fails if the device is not
++ a v4l2 device. */
++ libv4l2_fd = v4l2_fd_open(h->fd, 0);
++ if (libv4l2_fd != -1)
++ h->fd = libv4l2_fd;
++
+ if (-1 == xioctl(h->fd,VIDIOC_QUERYCAP,&h->cap,EINVAL))
+ goto err;
+ if (ng_debug)
+@@ -495,21 +520,21 @@ v4l2_open(char *device)
+
+ err:
+ if (h->fd != -1)
+- close(h->fd);
++ v4l2_close(h->fd);
+ if (h)
+ free(h);
+ return NULL;
+ }
+
+ static int
+-v4l2_close(void *handle)
++v4l2_close_handle(void *handle)
+ {
+ struct v4l2_handle *h = handle;
+
+ if (ng_debug)
+ fprintf(stderr, "v4l2: close\n");
+
+- close(h->fd);
++ v4l2_close(h->fd);
+ free(h);
+ return 0;
+ }
+@@ -818,7 +843,7 @@ v4l2_start_streaming(struct v4l2_handle
+ h->buf_me[i].fmt = h->fmt_me;
+ h->buf_me[i].size = h->buf_me[i].fmt.bytesperline *
+ h->buf_me[i].fmt.height;
+- h->buf_me[i].data = mmap(NULL, h->buf_v4l2[i].length,
++ h->buf_me[i].data = v4l2_mmap(NULL, h->buf_v4l2[i].length,
+ PROT_READ | PROT_WRITE, MAP_SHARED,
+ h->fd, h->buf_v4l2[i].m.offset);
+ if (MAP_FAILED == h->buf_me[i].data) {
+@@ -859,7 +884,7 @@ v4l2_stop_streaming(struct v4l2_handle *
+ unsigned int i;
+
+ /* stop capture */
+- if (-1 == ioctl(h->fd,VIDIOC_STREAMOFF,&h->fmt_v4l2.type))
++ if (-1 == v4l2_ioctl(h->fd,VIDIOC_STREAMOFF,&h->fmt_v4l2.type))
+ perror("ioctl VIDIOC_STREAMOFF");
+
+ /* free buffers */
+@@ -868,7 +893,7 @@ v4l2_stop_streaming(struct v4l2_handle *
+ ng_waiton_video_buf(&h->buf_me[i]);
+ if (ng_debug)
+ print_bufinfo(&h->buf_v4l2[i]);
+- if (-1 == munmap(h->buf_me[i].data, h->buf_v4l2_size[i]))
++ if (-1 == v4l2_munmap(h->buf_me[i].data, h->buf_v4l2_size[i]))
+ perror("munmap");
+ }
+ h->queue = 0;
+@@ -989,7 +1014,7 @@ v4l2_nextframe(void *handle)
+ } else {
+ size = h->fmt_me.bytesperline * h->fmt_me.height;
+ buf = ng_malloc_video_buf(&h->fmt_me,size);
+- rc = read(h->fd,buf->data,size);
++ rc = v4l2_read(h->fd,buf->data,size);
+ if (rc != size) {
+ if (-1 == rc) {
+ perror("v4l2: read");
+@@ -1023,11 +1048,11 @@ v4l2_getimage(void *handle)
+ size = h->fmt_me.bytesperline * h->fmt_me.height;
+ buf = ng_malloc_video_buf(&h->fmt_me,size);
+ if (h->cap.capabilities & V4L2_CAP_READWRITE) {
+- rc = read(h->fd,buf->data,size);
++ rc = v4l2_read(h->fd,buf->data,size);
+ if (-1 == rc && EBUSY == errno && h->ov_on) {
+ h->ov_on = 0;
+ xioctl(h->fd, VIDIOC_OVERLAY, &h->ov_on, 0);
+- rc = read(h->fd,buf->data,size);
++ rc = v4l2_read(h->fd,buf->data,size);
+ h->ov_on = 1;
+ xioctl(h->fd, VIDIOC_OVERLAY, &h->ov_on, 0);
+ }
diff --git a/extra/xawtv/xawtv-3.95-no-dga.patch b/extra/xawtv/xawtv-3.95-no-dga.patch
new file mode 100644
index 000000000..4509d4ba0
--- /dev/null
+++ b/extra/xawtv/xawtv-3.95-no-dga.patch
@@ -0,0 +1,120 @@
+diff -up xawtv-3.95/console/v4l-conf.c~ xawtv-3.95/console/v4l-conf.c
+--- xawtv-3.95/console/v4l-conf.c~ 2008-08-03 22:22:01.000000000 +0200
++++ xawtv-3.95/console/v4l-conf.c 2008-08-03 22:34:33.000000000 +0200
+@@ -221,6 +221,21 @@ displayinfo_x11(Display *dpy, struct DIS
+ }
+ }
+
++#ifdef HAVE_LIBXXF86DGA
++static int dga_error = 0;
++static int dga_error_base;
++static int (*orig_xfree_error_handler)(Display *, XErrorEvent *);
++
++static int dga_error_handler(Display *d, XErrorEvent *e)
++{
++ if (e->error_code == (dga_error_base + XF86DGANoDirectVideoMode)) {
++ dga_error = 1;
++ return 0;
++ }
++ return orig_xfree_error_handler(d, e);
++}
++#endif
++
+ static void
+ displayinfo_dga(Display *dpy, struct DISPLAYINFO *d)
+ {
+@@ -228,7 +243,7 @@ displayinfo_dga(Display *dpy, struct DIS
+ int width,bar,foo,major,minor,flags=0;
+ void *base = NULL;
+
+- if (!XF86DGAQueryExtension(dpy,&foo,&bar)) {
++ if (!XF86DGAQueryExtension(dpy,&foo,&dga_error_base)) {
+ fprintf(stderr,"WARNING: Your X-Server has no DGA support.\n");
+ return;
+ }
+@@ -240,7 +255,14 @@ displayinfo_dga(Display *dpy, struct DIS
+ fprintf(stderr,"WARNING: No DGA support available for this display.\n");
+ return;
+ }
++ orig_xfree_error_handler = XSetErrorHandler(dga_error_handler);
+ XF86DGAGetVideoLL(dpy,XDefaultScreen(dpy),(void*)&base,&width,&foo,&bar);
++ XSync(dpy, 0);
++ XSetErrorHandler(orig_xfree_error_handler);
++ if (dga_error) {
++ fprintf(stderr,"WARNING: No DGA direct video mode for this display.\n");
++ return;
++ }
+ d->bpl = width * d->bpp/8;
+ d->base = base;
+ #else
+diff -up xawtv-3.95/libng/plugins/drv0-v4l2.c~ xawtv-3.95/libng/plugins/drv0-v4l2.c
+--- xawtv-3.95/libng/plugins/drv0-v4l2.c~ 2008-08-03 21:52:41.000000000 +0200
++++ xawtv-3.95/libng/plugins/drv0-v4l2.c 2008-08-03 22:23:01.000000000 +0200
+@@ -618,7 +618,7 @@ v4l2_setupfb(void *handle, struct ng_vid
+ return -1;
+
+ /* double-check settings */
+- if (NULL != base && h->ov_fb.base != base) {
++ if ((NULL != base && h->ov_fb.base != base) || h->ov_fb.base == NULL) {
+ fprintf(stderr,"v4l2: WARNING: framebuffer base address mismatch\n");
+ fprintf(stderr,"v4l2: me=%p v4l=%p\n",base,h->ov_fb.base);
+ h->ov_error = 1;
+diff -up xawtv-3.95/x11/xt.c~ xawtv-3.95/x11/xt.c
+--- xawtv-3.95/x11/xt.c~ 2008-08-03 22:22:11.000000000 +0200
++++ xawtv-3.95/x11/xt.c 2008-08-03 22:35:14.000000000 +0200
+@@ -1247,18 +1247,21 @@ FilterAction(Widget widget, XEvent *even
+ }
+
+ /*----------------------------------------------------------------------*/
++#ifdef HAVE_LIBXXF86DGA
++static int xfree_dga_error_base;
++#endif
+
+ void
+ xfree_dga_init(Display *dpy)
+ {
+ #ifdef HAVE_LIBXXF86DGA
+- int flags,foo,bar,ma,mi;
++ int flags,foo,ma,mi;
+
+ if (!do_overlay)
+ return;
+
+ if (args.dga) {
+- if (XF86DGAQueryExtension(dpy,&foo,&bar)) {
++ if (XF86DGAQueryExtension(dpy,&foo,&xfree_dga_error_base)) {
+ XF86DGAQueryDirectVideo(dpy,XDefaultScreen(dpy),&flags);
+ if (flags & XF86DGADirectPresent) {
+ XF86DGAQueryVersion(dpy,&ma,&mi);
+@@ -1348,6 +1351,19 @@ xfree_xinerama_init(Display *dpy)
+ #endif
+ }
+
++#ifdef HAVE_LIBXXF86DGA
++static int (*orig_xfree_error_handler)(Display *, XErrorEvent *);
++
++static int xfree_dga_error_handler(Display *d, XErrorEvent *e)
++{
++ if (e->error_code == (xfree_dga_error_base + XF86DGANoDirectVideoMode)) {
++ have_dga = 0;
++ return 0;
++ }
++ return orig_xfree_error_handler(d, e);
++}
++#endif
++
+ void
+ grabber_init()
+ {
+@@ -1358,8 +1374,11 @@ grabber_init()
+ #ifdef HAVE_LIBXXF86DGA
+ if (have_dga) {
+ int bar,fred;
++ orig_xfree_error_handler = XSetErrorHandler(xfree_dga_error_handler);
+ XF86DGAGetVideoLL(dpy,XDefaultScreen(dpy),(void*)&base,
+ &screen.bytesperline,&bar,&fred);
++ XSync(dpy, 0);
++ XSetErrorHandler(orig_xfree_error_handler);
+ }
+ #endif
+ if (!do_overlay) {
diff --git a/extra/xawtv/xawtv-3.95-pagemask-fix.patch b/extra/xawtv/xawtv-3.95-pagemask-fix.patch
new file mode 100644
index 000000000..ab635f73a
--- /dev/null
+++ b/extra/xawtv/xawtv-3.95-pagemask-fix.patch
@@ -0,0 +1,44 @@
+Patch from Andreas Jochens
+http://lists.debian.org/debian-qa-packages/2006/08/msg00519.html
+
+diff -urN ../tmp-orig/xawtv-3.95/console/fbtools.c ./console/fbtools.c
+--- ../tmp-orig/xawtv-3.95/console/fbtools.c 2003-02-14 14:14:04.000000000 +0000
++++ ./console/fbtools.c 2006-08-23 10:57:40.000000000 +0000
+@@ -21,8 +21,6 @@
+ #include <linux/vt.h>
+ #include <linux/fb.h>
+
+-#include <asm/page.h>
+-
+ #include "fbtools.h"
+
+ /* -------------------------------------------------------------------- */
+@@ -424,7 +422,7 @@
+ goto err;
+ }
+ #endif
+- fb_mem_offset = (unsigned long)(fb_fix.smem_start) & (~PAGE_MASK);
++ fb_mem_offset = (unsigned long)(fb_fix.smem_start) & ~(sysconf(_SC_PAGE_SIZE)-1);
+ fb_mem = mmap(NULL,fb_fix.smem_len+fb_mem_offset,
+ PROT_READ|PROT_WRITE,MAP_SHARED,fb,0);
+ if (-1L == (long)fb_mem) {
+diff -urN ../tmp-orig/xawtv-3.95/console/matrox.c ./console/matrox.c
+--- ../tmp-orig/xawtv-3.95/console/matrox.c 2005-02-03 10:40:41.000000000 +0000
++++ ./console/matrox.c 2006-08-23 11:09:51.000000000 +0000
+@@ -9,7 +9,6 @@
+ #include <sys/ioctl.h>
+ #include <sys/mman.h>
+
+-#include <asm/page.h> /* PAGE_SIZE */
+ #include <linux/fb.h>
+
+ #include "byteswap.h"
+@@ -226,7 +225,7 @@
+ return -1;
+ }
+ off = (unsigned long)fb_fix.mmio_start -
+- ((unsigned long)fb_fix.mmio_start & ~(PAGE_SIZE-1));
++ ((unsigned long)fb_fix.mmio_start & ~(sysconf(_SC_PAGE_SIZE)-1));
+ bmmio += off;
+ mmio = (uint32_t*)bmmio;
+ return 0;
diff --git a/extra/xawtv/xawtv-395.diff b/extra/xawtv/xawtv-395.diff
new file mode 100644
index 000000000..970b2b00f
--- /dev/null
+++ b/extra/xawtv/xawtv-395.diff
@@ -0,0 +1,60 @@
+diff -Nru xawtv-3.95/Makefile.in xawtv-3.95.my/Makefile.in
+--- xawtv-3.95/Makefile.in 2004-04-22 09:52:29.000000000 -0500
++++ xawtv-3.95.my/Makefile.in 2006-06-04 19:05:24.000000000 -0500
+@@ -49,7 +49,7 @@
+ VBI_LIBS := @LIBZVBI@
+ GL_LIBS := @LIBGL@
+ DV_LIBS := @LIBDV@
+-FS_LIBS := -L@x_libraries@ @FSLIB@
++FS_LIBS := @FSLIB@
+ DLFLAGS := @DLFLAGS@
+
+ # stuff configure has found
+diff -Nru xawtv-3.95/common/channel.c xawtv-3.95.my/common/channel.c
+--- xawtv-3.95/common/channel.c 2003-03-28 06:22:06.000000000 -0600
++++ xawtv-3.95.my/common/channel.c 2006-06-04 19:10:07.000000000 -0500
+@@ -181,6 +181,9 @@
+ { -1, NULL, },
+ };
+
++extern struct STRTAB booltab[];
++extern struct STRTAB captab[];
++
+ /* just malloc memory for a new channel ... */
+ struct CHANNEL*
+ add_channel(char *name)
+diff -Nru xawtv-3.95/common/channel.h xawtv-3.95.my/common/channel.h
+--- xawtv-3.95/common/channel.h 2003-02-14 08:14:04.000000000 -0600
++++ xawtv-3.95.my/common/channel.h 2006-06-04 19:08:13.000000000 -0500
+@@ -90,8 +90,6 @@
+
+ /* ----------------------------------------------------------------------- */
+
+-extern struct STRTAB booltab[];
+-extern struct STRTAB captab[];
+
+ int str_to_int(char *str, struct STRTAB *tab);
+ const char* int_to_str(int n, struct STRTAB *tab);
+diff -Nru xawtv-3.95/common/commands.c xawtv-3.95.my/common/commands.c
+--- xawtv-3.95/common/commands.c 2004-04-19 11:24:05.000000000 -0500
++++ xawtv-3.95.my/common/commands.c 2006-06-04 19:11:48.000000000 -0500
+@@ -162,6 +162,9 @@
+
+ static int keypad_state = -1;
+
++extern struct STRTAB booltab[];
++extern struct STRTAB captab[];
++
+ /* ----------------------------------------------------------------------- */
+
+ void add_attrs(struct ng_attribute *new)
+diff -Nru xawtv-3.95/console/fs.h xawtv-3.95.my/console/fs.h
+--- xawtv-3.95/console/fs.h 2003-02-14 08:14:04.000000000 -0600
++++ xawtv-3.95.my/console/fs.h 2006-06-04 19:00:20.000000000 -0500
+@@ -1,5 +1,5 @@
+ #ifndef X_DISPLAY_MISSING
+-# include <FSlib.h>
++# include <X11/fonts/FSlib.h>
+
+ struct fs_font {
+ Font font;
diff --git a/extra/xbill/PKGBUILD b/extra/xbill/PKGBUILD
new file mode 100644
index 000000000..1791d4507
--- /dev/null
+++ b/extra/xbill/PKGBUILD
@@ -0,0 +1,35 @@
+# $Id: PKGBUILD 22212 2008-12-23 06:11:22Z eric $
+# Maintainer: Arjan Timmerman <arjan@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=xbill
+pkgver=2.1
+pkgrel=6
+pkgdesc="Xbill is a game that tests you reflexes as you seek and destroy all forms of Bill"
+arch=('i686' 'x86_64')
+url="http://www.xbill.org/"
+license=('GPL')
+depends=('xaw3d>=1.5E' 'libxaw')
+install=xbill.install
+source=(http://www.xbill.org/download/$pkgname-$pkgver.tar.gz)
+md5sums=('585e4866b15255a24203db9959407b2f')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ ./configure --prefix=/usr --mandir=/usr/share/man --localstatedir=/var/games \
+ --disable-motif --enable-athena --disable-gtk || return 1
+ make || return 1
+ make DESTDIR=$pkgdir install || return 1
+
+# set appropriate permissions and destinations
+ chown root:games $pkgdir/usr/bin/xbill
+ chmod 2755 $pkgdir/usr/bin/xbill
+
+ chown root:games $pkgdir/var/games
+ chmod 775 $pkgdir/var/games
+ chown root:games $pkgdir/var/games/xbill
+ chmod 775 $pkgdir/var/games/xbill
+
+# Handle the scores file creation in the install script
+ rm $pkgdir/var/games/xbill/scores
+}
diff --git a/extra/xbill/xbill.install b/extra/xbill/xbill.install
new file mode 100644
index 000000000..014c0d54b
--- /dev/null
+++ b/extra/xbill/xbill.install
@@ -0,0 +1,25 @@
+pre_install() {
+ if [ ! -e var/games/xbill/scores ]; then
+ [ -e usr/var/xbill/scores ] && mv usr/var/xbill/scores var/games/xbill/scores
+ fi
+}
+
+post_install() {
+ touch var/games/xbill/scores
+ chown root:games var/games/xbill/scores
+ chmod 664 var/games/xbill/scores
+}
+
+pre_upgrade() {
+ pre_install $1
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ if [ -e var/games/xbill/scores ]; then
+ mv var/games/xbill/scores var/games/xbill/scores.pacsave
+ fi
+}
diff --git a/extra/xbindkeys/PKGBUILD b/extra/xbindkeys/PKGBUILD
new file mode 100644
index 000000000..9d2e6f0e8
--- /dev/null
+++ b/extra/xbindkeys/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 114461 2011-03-14 01:44:22Z eric $
+# Contributor: Thayer Williams <thayer@archlinux.org>
+# Contributor: damir <damir@archlinux.org>
+# Maintainer: Daniel J Griffiths <ghost1227@archlinux.us>
+
+pkgname=xbindkeys
+pkgver=1.8.5
+pkgrel=1
+pkgdesc="Launch shell commands with your keyboard or your mouse under X"
+arch=('i686' 'x86_64')
+url="http://www.nongnu.org/xbindkeys/xbindkeys.html"
+license=('GPL')
+depends=('libx11' 'guile>=1.8.1' 'tk')
+source=(http://www.nongnu.org/xbindkeys/${pkgname}-${pkgver}.tar.gz)
+md5sums=('4b66a05594dbc6888c0a6439351aa66d')
+sha1sums=('a597cfecce65dd47595510edb8f7eaa094c4b34b')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/xcb-util/LICENSE b/extra/xcb-util/LICENSE
new file mode 100644
index 000000000..5e3822ccd
--- /dev/null
+++ b/extra/xcb-util/LICENSE
@@ -0,0 +1,267 @@
+/* Copyright (C) 2007 Bart Massey
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * Except as contained in this notice, the names of the authors or their
+ * institutions shall not be used in advertising or otherwise to promote the
+ * sale, use or other dealings in this Software without prior written
+ * authorization from the authors.
+ */
+
+/*
+ * Copyright (C) 2008-2009 Julien Danjou <julien@danjou.info>
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documentation
+ * files (the "Software"), to deal in the Software without
+ * restriction, including without limitation the rights to use, copy,
+ * modify, merge, publish, distribute, sublicense, and/or sell copies
+ * of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
+ * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * Except as contained in this notice, the names of the authors or
+ * their institutions shall not be used in advertising or otherwise to
+ * promote the sale, use or other dealings in this Software without
+ * prior written authorization from the authors.
+ */
+
+/*
+ * Copyright (C) 2008 Arnaud Fontaine <arnau@debian.org>
+ * Copyright (C) 2007-2008 Vincent Torri <vtorri@univ-evry.fr>
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documentation
+ * files (the "Software"), to deal in the Software without
+ * restriction, including without limitation the rights to use, copy,
+ * modify, merge, publish, distribute, sublicense, and/or sell copies
+ * of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
+ * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * Except as contained in this notice, the names of the authors or
+ * their institutions shall not be used in advertising or otherwise to
+ * promote the sale, use or other dealings in this Software without
+ * prior written authorization from the authors.
+
+/*
+ * Copyright © 2008 Bart Massey <bart@cs.pdx.edu>
+ * Copyright © 2008 Julien Danjou <julien@danjou.info>
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documentation
+ * files (the "Software"), to deal in the Software without
+ * restriction, including without limitation the rights to use, copy,
+ * modify, merge, publish, distribute, sublicense, and/or sell copies
+ * of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
+ * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * Except as contained in this notice, the names of the authors or
+ * their institutions shall not be used in advertising or otherwise to
+ * promote the sale, use or other dealings in this Software without
+ * prior written authorization from the authors.
+ */
+
+/*
+ * Copyright © 2008 Keith Packard <keithp@keithp.com>
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documentation
+ * files (the "Software"), to deal in the Software without
+ * restriction, including without limitation the rights to use, copy,
+ * modify, merge, publish, distribute, sublicense, and/or sell copies
+ * of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
+ * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * Except as contained in this notice, the names of the authors or
+ * their institutions shall not be used in advertising or otherwise to
+ * promote the sale, use or other dealings in this Software without
+ * prior written authorization from the authors.
+ */
+
+/*
+ * Copyright © 2008 Bart Massey <bart@cs.pdx.edu>
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documentation
+ * files (the "Software"), to deal in the Software without
+ * restriction, including without limitation the rights to use, copy,
+ * modify, merge, publish, distribute, sublicense, and/or sell copies
+ * of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
+ * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * Except as contained in this notice, the names of the authors or
+ * their institutions shall not be used in advertising or otherwise to
+ * promote the sale, use or other dealings in this Software without
+ * prior written authorization from the authors.
+ */
+
+/*
+ * Copyright © 2008 Ian Osgood <iano@quirkster.com>
+ * Copyright © 2008 Jamey Sharp <jamey@minilop.net>
+ * Copyright © 2008 Josh Triplett <josh@freedesktop.org>
+ * Copyright © 2008 Ulrich Eckhardt <doomster@knuut.de>
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documentation
+ * files (the "Software"), to deal in the Software without
+ * restriction, including without limitation the rights to use, copy,
+ * modify, merge, publish, distribute, sublicense, and/or sell copies
+ * of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
+ * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * Except as contained in this notice, the names of the authors or
+ * their institutions shall not be used in advertising or otherwise to
+ * promote the sale, use or other dealings in this Software without
+ * prior written authorization from the authors.
+ */
+
+/* Copyright © 2006 Jamey Sharp.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * Except as contained in this notice, the names of the authors or their
+ * institutions shall not be used in advertising or otherwise to promote the
+ * sale, use or other dealings in this Software without prior written
+ * authorization from the authors.
+ */
+
+/* Copyright © 2006 Ian Osgood
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * Except as contained in this notice, the names of the authors or their
+ * institutions shall not be used in advertising or otherwise to promote the
+ * sale, use or other dealings in this Software without prior written
+ * authorization from the authors.
+ */
+
+/* Copyright © 2000 Keith Packard
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of Keith Packard not be used in
+ * advertising or publicity pertaining to distribution of the software without
+ * specific, written prior permission. Keith Packard makes no
+ * representations about the suitability of this software for any purpose. It
+ * is provided "as is" without express or implied warranty.
+ *
+ * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
diff --git a/extra/xcb-util/PKGBUILD b/extra/xcb-util/PKGBUILD
new file mode 100644
index 000000000..0045d6837
--- /dev/null
+++ b/extra/xcb-util/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 50472 2009-08-27 18:32:48Z ronald $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Andrea Scarpino <bash.lnx@gmail.com>
+
+pkgname=xcb-util
+pkgver=0.3.6
+pkgrel=1
+pkgdesc="Utility libraries for XC Binding"
+arch=('i686' 'x86_64')
+url="http://xcb.freedesktop.org"
+license=('custom')
+depends=('libxcb>=1.4')
+makedepends=('gperf')
+options=('!libtool')
+source=(http://xcb.freedesktop.org/dist/${pkgname}-${pkgver}.tar.bz2
+ LICENSE)
+md5sums=('dd8968b8ee613cb027a8ef1fcbdc8fc9'
+ '2672c2e72dedb40f773e989dd622f298')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --disable-static || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+ install -D -m644 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" || return 1
+}
diff --git a/extra/xchat-gnome/PKGBUILD b/extra/xchat-gnome/PKGBUILD
new file mode 100644
index 000000000..271b96631
--- /dev/null
+++ b/extra/xchat-gnome/PKGBUILD
@@ -0,0 +1,50 @@
+# $Id: PKGBUILD 112861 2011-03-07 10:29:01Z eric $
+# Maintainer: Allan McRae <allan@archlinux.org>
+# Contributor: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xchat-gnome
+pkgver=0.26.1
+pkgrel=5
+pkgdesc="GNOME frontend to the popular X-Chat IRC client."
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://xchat-gnome.navi.cx/"
+depends=('libgnomeui>=2.18.1-2' 'libsexy>=0.1.11' 'gconf>=2.18.0.1-4'
+ 'hicolor-icon-theme' 'desktop-file-utils' 'libcanberra' 'libsm')
+makedepends=('gettext' 'perlxml' 'python2' 'tcl' 'libnotify' 'gnome-doc-utils>=0.10.3'
+ 'intltool' 'pkg-config')
+optdepends=('libnotify: notifications'
+ 'python2: plugin'
+ 'tcl: plugin')
+options=('!libtool')
+install=xchat-gnome.install
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/0.26/${pkgname}-${pkgver}.tar.gz
+ gtk2-2.20.patch xchat-gnome-0.26.1-deprecated-symbol.patch)
+md5sums=('e355d71d76cd97a0764e37bfacf09101' 'dafc2536a0c5ee3f8015af81fce69656'\
+ 'f82417277f0b5e83334147c4bf63d531')
+sha1sums=('303bfbf2f1bda83fbc4edab148df4764cb4b8998' 'f1bfc5af50be7c10a9db96be20185325636d8da9'\
+ '9aa0abc4b7999e09cafdeb8da1ad4641552a421b')
+
+build() {
+ cd "$srcdir/${pkgname}-${pkgver}"
+ patch -Np1 -i "$srcdir/gtk2-2.20.patch"
+ patch -Np1 -i "$srcdir/xchat-gnome-0.26.1-deprecated-symbol.patch"
+ sed -i 's/notify_notification_new (summary, escaped, NULL, NULL);/notify_notification_new (summary, escaped, NULL);/' plugins/notify-osd/notify-osd.c
+ sed -i -e "s/ /\t/" src/common/dbus/Makefile.in
+
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-static \
+ --enable-ipv6 --enable-shm \
+ --disable-gtkfe --disable-scrollkeeper
+ make
+}
+
+package() {
+ cd "$srcdir/${pkgname}-${pkgver}"
+ make GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 DESTDIR="${pkgdir}" install
+
+ install -d "$pkgdir/usr/share/gconf/schemas"
+ gconf-merge-schema "$pkgdir/usr/share/gconf/schemas/${pkgname}.schemas" \
+ "$pkgdir"/etc/gconf/schemas/*.schemas
+ rm -f "$pkgdir"/etc/gconf/schemas/*.schemas
+}
diff --git a/extra/xchat-gnome/gtk2-2.20.patch b/extra/xchat-gnome/gtk2-2.20.patch
new file mode 100644
index 000000000..7a5dcedf2
--- /dev/null
+++ b/extra/xchat-gnome/gtk2-2.20.patch
@@ -0,0 +1,137 @@
+diff -urp xchat-gnome-0.26.1.OLD/src/fe-gnome/fe-gnome.c xchat-gnome-0.26.1/src/fe-gnome/fe-gnome.c
+--- xchat-gnome-0.26.1.OLD/src/fe-gnome/fe-gnome.c 2008-09-07 09:18:45.000000000 -0400
++++ xchat-gnome-0.26.1/src/fe-gnome/fe-gnome.c 2010-03-28 16:16:52.181405173 -0400
+@@ -753,7 +753,7 @@ fe_gui_info (session * sess, int info_ty
+ {
+ switch (info_type) {
+ case 0:
+- if (!GTK_WIDGET_VISIBLE (GTK_WINDOW (gui.main_window))) {
++ if (!gtk_widget_get_visible (GTK_WIDGET (gui.main_window))) {
+ return 2;
+ }
+ if (gtk_window_is_active (GTK_WINDOW (gui.main_window))) {
+diff -urp xchat-gnome-0.26.1.OLD/src/fe-gnome/find-bar.c xchat-gnome-0.26.1/src/fe-gnome/find-bar.c
+--- xchat-gnome-0.26.1.OLD/src/fe-gnome/find-bar.c 2007-03-09 10:42:57.000000000 -0500
++++ xchat-gnome-0.26.1/src/fe-gnome/find-bar.c 2010-03-28 16:26:24.300405158 -0400
+@@ -247,7 +247,7 @@ find_bar_close (FindBar *bar)
+ {
+ gint position;
+
+- if (!GTK_WIDGET_VISIBLE (bar)) {
++ if (!gtk_widget_get_visible (GTK_WIDGET (bar))) {
+ return;
+ }
+
+diff -urp xchat-gnome-0.26.1.OLD/src/fe-gnome/text-entry.c xchat-gnome-0.26.1/src/fe-gnome/text-entry.c
+--- xchat-gnome-0.26.1.OLD/src/fe-gnome/text-entry.c 2008-09-07 10:02:45.000000000 -0400
++++ xchat-gnome-0.26.1/src/fe-gnome/text-entry.c 2010-03-28 16:39:48.755153605 -0400
+@@ -667,7 +667,7 @@ text_entry_set_current (TextEntry *entry
+ char *selection = NULL, *text = NULL;
+ int start, end;
+
+- g_return_if_fail (GTK_WIDGET_REALIZED (widget));
++ g_return_if_fail (gtk_widget_get_realized (GTK_WIDGET (widget)));
+
+ if (sess == priv->current) {
+ return;
+diff -urp xchat-gnome-0.26.1.OLD/src/fe-gnome/userlist-gui.c xchat-gnome-0.26.1/src/fe-gnome/userlist-gui.c
+--- xchat-gnome-0.26.1.OLD/src/fe-gnome/userlist-gui.c 2008-10-13 17:02:16.000000000 -0400
++++ xchat-gnome-0.26.1/src/fe-gnome/userlist-gui.c 2010-03-28 16:47:55.703154452 -0400
+@@ -261,12 +261,12 @@ userlist_gui_show (void)
+
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gui.userlist_toggle), TRUE);
+
+- if (!GTK_WIDGET_REALIZED (gui.userlist_window)) {
++ if (!gtk_widget_get_realized (GTK_WIDGET (gui.userlist_window))) {
+ gtk_widget_realize (gui.userlist_window);
+ }
+ gtk_widget_size_request (gui.userlist, &request);
+
+- if (GTK_WIDGET_REALIZED (gui.userlist_toggle))
++ if (gtk_widget_get_realized (GTK_WIDGET (gui.userlist_toggle)))
+ anchor_widget = gui.userlist_toggle;
+ else
+ anchor_widget = gui.main_window;
+diff -urp xchat-gnome-0.26.1.OLD/src/fe-gnome/xtext.c xchat-gnome-0.26.1/src/fe-gnome/xtext.c
+--- xchat-gnome-0.26.1.OLD/src/fe-gnome/xtext.c 2009-01-16 08:17:31.000000000 -0500
++++ xchat-gnome-0.26.1/src/fe-gnome/xtext.c 2010-03-28 16:57:17.441402617 -0400
+@@ -1086,7 +1086,7 @@ gtk_xtext_size_allocate (GtkWidget * wid
+ xtext->avoid_trans = FALSE;
+
+ widget->allocation = *allocation;
+- if (GTK_WIDGET_REALIZED (widget))
++ if (gtk_widget_get_realized (GTK_WIDGET (widget)))
+ {
+ xtext->buffer->window_width = allocation->width;
+ xtext->buffer->window_height = allocation->height;
+@@ -4113,7 +4113,7 @@ gtk_xtext_set_palette (GtkXText * xtext,
+ xtext->palette[i] = palette[i].pixel;
+ }
+
+- if (GTK_WIDGET_REALIZED (xtext))
++ if (gtk_widget_get_realized (GTK_WIDGET (xtext)))
+ {
+ xtext_set_fg (xtext, xtext->fgc, XTEXT_FG);
+ xtext_set_bg (xtext, xtext->fgc, XTEXT_BG);
+@@ -4211,7 +4211,7 @@ gtk_xtext_set_font (GtkXText *xtext, cha
+
+ gtk_xtext_fix_indent (xtext->buffer);
+
+- if (GTK_WIDGET_REALIZED (xtext))
++ if (gtk_widget_get_realized (GTK_WIDGET (xtext)))
+ gtk_xtext_recalc_widths (xtext->buffer, TRUE);
+
+ return TRUE;
+@@ -4248,7 +4248,7 @@ gtk_xtext_set_background (GtkXText * xte
+ if (trans)
+ {
+ xtext->shaded = shaded;
+- if (GTK_WIDGET_REALIZED (xtext))
++ if (gtk_widget_get_realized (GTK_WIDGET (xtext)))
+ gtk_xtext_load_trans (xtext);
+ return;
+ }
+@@ -4260,14 +4260,14 @@ gtk_xtext_set_background (GtkXText * xte
+ if (pixmap != 0)
+ {
+ g_object_ref (pixmap);
+- if (GTK_WIDGET_REALIZED (xtext))
++ if (gtk_widget_get_realized (GTK_WIDGET (xtext)))
+ {
+ gdk_gc_set_tile (xtext->bgc, pixmap);
+ gdk_gc_set_ts_origin (xtext->bgc, 0, 0);
+ xtext->ts_x = xtext->ts_y = 0;
+ gdk_gc_set_fill (xtext->bgc, GDK_TILED);
+ }
+- } else if (GTK_WIDGET_REALIZED (xtext))
++ } else if (gtk_widget_get_realized (GTK_WIDGET (xtext)))
+ {
+ g_object_unref (xtext->bgc);
+ val.subwindow_mode = GDK_INCLUDE_INFERIORS;
+@@ -4516,7 +4516,7 @@ gtk_xtext_render_page (GtkXText * xtext)
+ int subline;
+ int startline = xtext->adj->value;
+
+- if(!GTK_WIDGET_REALIZED(xtext))
++ if(!gtk_widget_get_realized (GTK_WIDGET (xtext)))
+ return;
+
+ if (xtext->buffer->indent < MARGIN)
+@@ -4636,7 +4636,7 @@ gtk_xtext_render_page (GtkXText * xtext)
+ void
+ gtk_xtext_refresh (GtkXText * xtext, int do_trans)
+ {
+- if (GTK_WIDGET_REALIZED (GTK_WIDGET (xtext)))
++ if (gtk_widget_get_realized (GTK_WIDGET (xtext)))
+ {
+ #if defined(USE_XLIB) || defined(WIN32)
+ if (xtext->transparent && do_trans)
+@@ -5204,7 +5204,7 @@ gtk_xtext_buffer_show (GtkXText *xtext,
+ xtext->io_tag = 0;
+ }
+
+- if (!GTK_WIDGET_REALIZED (GTK_WIDGET (xtext)))
++ if (!gtk_widget_get_realized (GTK_WIDGET (xtext)))
+ gtk_widget_realize (GTK_WIDGET (xtext));
+
+ gdk_drawable_get_size (GTK_WIDGET (xtext)->window, &w, &h);
diff --git a/extra/xchat-gnome/xchat-gnome-0.26.1-deprecated-symbol.patch b/extra/xchat-gnome/xchat-gnome-0.26.1-deprecated-symbol.patch
new file mode 100644
index 000000000..5bf1e4ef5
--- /dev/null
+++ b/extra/xchat-gnome/xchat-gnome-0.26.1-deprecated-symbol.patch
@@ -0,0 +1,22 @@
+From 8d35b36baa8204b68c9520ec92327e34c1d7c580 Mon Sep 17 00:00:00 2001
+From: Ritesh Khadgaray <khadgaray@gmail.com>
+Date: Sun, 04 Jul 2010 09:52:07 +0000
+Subject: remove deprecated GTK+ symbols, GTK_WIDGET_SET_FLAGS.
+
+---
+diff --git a/src/fe-gnome/xtext.c b/src/fe-gnome/xtext.c
+index 92562a3..51503f8 100644
+--- a/src/fe-gnome/xtext.c
++++ b/src/fe-gnome/xtext.c
+@@ -963,7 +963,7 @@ gtk_xtext_realize (GtkWidget * widget)
+ GdkColor col;
+ GdkColormap *cmap;
+
+- GTK_WIDGET_SET_FLAGS (widget, GTK_REALIZED);
++ gtk_widget_set_realized (widget, TRUE);
+ xtext = GTK_XTEXT (widget);
+
+ attributes.x = widget->allocation.x;
+--
+cgit v0.8.3.1
+
diff --git a/extra/xchat-gnome/xchat-gnome.install b/extra/xchat-gnome/xchat-gnome.install
new file mode 100644
index 000000000..b0816ece3
--- /dev/null
+++ b/extra/xchat-gnome/xchat-gnome.install
@@ -0,0 +1,24 @@
+pkgname=xchat-gnome
+
+post_install() {
+ usr/sbin/gconfpkg --install ${pkgname}
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+ update-desktop-database -q
+}
+
+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
+ update-desktop-database -q
+}
diff --git a/extra/xchm/PKGBUILD b/extra/xchm/PKGBUILD
new file mode 100644
index 000000000..809e0ed05
--- /dev/null
+++ b/extra/xchm/PKGBUILD
@@ -0,0 +1,32 @@
+# $Id: PKGBUILD 108735 2011-02-02 18:31:26Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+
+pkgname=xchm
+pkgver=1.18
+pkgrel=1
+pkgdesc="A cross-platform GUI front-end to chmlib"
+arch=('i686' 'x86_64')
+url="http://xchm.sourceforge.net"
+license=('GPL')
+depends=('chmlib' 'wxgtk' 'desktop-file-utils')
+install=xchm.install
+source=(http://downloads.sourceforge.net/sourceforge/xchm/${pkgname}-${pkgver}.tar.gz
+ xchm.desktop
+ xchm.xml)
+md5sums=('07d7a910b3216301a002be5630c71866'
+ '31fb9692b9ee9f2a205f58b9ff4bc4fe'
+ '4102b0a393f5c60236143cc034664dd0')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ export CXXFLAGS="${CXXFLAGS} -fno-strict-aliasing"
+ ./configure --prefix=/usr
+ make || return 1
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR=${pkgdir} install || return 1
+ install -D -m644 ${srcdir}/xchm.desktop "${pkgdir}/usr/share/applications/xchm.desktop" || return 1
+ install -D -m644 ${srcdir}/xchm.xml "${pkgdir}/usr/share/mime/packages/xchm.xml" || return 1
+}
diff --git a/extra/xchm/xchm.desktop b/extra/xchm/xchm.desktop
new file mode 100644
index 000000000..ca20876b2
--- /dev/null
+++ b/extra/xchm/xchm.desktop
@@ -0,0 +1,10 @@
+[Desktop Entry]
+Name=Xchm
+Comment=Views CHM files
+Exec=xchm %f
+Terminal=false
+Type=Application
+Icon=xchm-48
+Categories=Viewer;Utility;
+MimeType=application/x-chm;
+StartupNotify=true
diff --git a/extra/xchm/xchm.install b/extra/xchm/xchm.install
new file mode 100644
index 000000000..1ad77f9aa
--- /dev/null
+++ b/extra/xchm/xchm.install
@@ -0,0 +1,15 @@
+post_install() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+ update-desktop-database -q
+ update-mime-database usr/share/mime > /dev/null
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+ update-desktop-database -q
+ update-mime-database usr/share/mime > /dev/null
+}
diff --git a/extra/xchm/xchm.xml b/extra/xchm/xchm.xml
new file mode 100644
index 000000000..08cb9ca3f
--- /dev/null
+++ b/extra/xchm/xchm.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
+ <mime-type type="application/x-chm">
+ <comment>Compiled HTML Help Format</comment>
+ <glob pattern="*.chm"/>
+ </mime-type>
+</mime-info>
diff --git a/extra/xclip/PKGBUILD b/extra/xclip/PKGBUILD
new file mode 100644
index 000000000..57834cdc0
--- /dev/null
+++ b/extra/xclip/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 110900 2011-02-22 20:16:09Z bisson $
+# Contributor: damir <damir@archlinux.org>
+# Committer: Manolis Tzanidakis <manolis@archlinux.org>
+# Maintainer: Gaetan Bisson <bisson@archlinux.org>
+
+pkgname=xclip
+pkgver=0.12
+pkgrel=2
+pkgdesc='Command line interface to the X11 clipboard'
+arch=('i686' 'x86_64')
+url='http://sourceforge.net/projects/xclip'
+license=('GPL')
+depends=('libxmu')
+source=("http://downloads.sourceforge.net/sourceforge/xclip/${pkgname}-${pkgver}.tar.gz")
+sha1sums=('aed2cff18b9aecfe3377ad064c6a67518bbec211')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/xcompmgr/PKGBUILD b/extra/xcompmgr/PKGBUILD
new file mode 100644
index 000000000..817b015b1
--- /dev/null
+++ b/extra/xcompmgr/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 59263 2009-11-21 18:19:33Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Leslie P. Polzer <leslie.polzer@gmx.net>
+pkgname=xcompmgr
+pkgver=1.1.5
+pkgrel=1
+pkgdesc="Composite Window-effects manager for X.org"
+arch=('i686' 'x86_64')
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libxcomposite' 'libxdamage' 'libxrender')
+conflicts=('xapps')
+replaces=('xapps')
+source=(http://xorg.freedesktop.org/releases/individual/app/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('9b4d7c3c64b3d980ea317b5206fee17adefd1d65')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1
+}
diff --git a/extra/xdelta/PKGBUILD b/extra/xdelta/PKGBUILD
new file mode 100644
index 000000000..dabc0db1c
--- /dev/null
+++ b/extra/xdelta/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 91165 2010-09-23 14:13:09Z allan $
+# Maintainer: Allan McRae <allan@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=xdelta
+pkgver=1.1.4
+pkgrel=3
+pkgdesc="binary file delta generator"
+arch=('i686' 'x86_64')
+url="http://sourceforge.net/projects/xdelta/"
+license=('GPL')
+depends=('glib' 'zlib')
+options=('!libtool')
+source=(http://xdelta.googlecode.com/files/$pkgname-$pkgver.tar.gz
+ xdelta-1.1.4-aclocal.patch)
+md5sums=('1b896c01ebf0e353b7e3c3071b05f496'
+ '1d8ab5909bdf977a2783c164b66906fd')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ patch -Np1 -i $srcdir/xdelta-1.1.4-aclocal.patch
+ ./configure --prefix=/usr --mandir=/usr/share/man
+ make
+}
+
+package() {
+ cd $srcdir/$pkgname-$pkgver
+ make DESTDIR=$pkgdir install
+}
diff --git a/extra/xdelta/xdelta-1.1.4-aclocal.patch b/extra/xdelta/xdelta-1.1.4-aclocal.patch
new file mode 100644
index 000000000..ad8c99de5
--- /dev/null
+++ b/extra/xdelta/xdelta-1.1.4-aclocal.patch
@@ -0,0 +1,11 @@
+--- xdelta-1.1.3/xdelta.m4.aclocal 2004-10-20 00:20:47.875648144 +0200
++++ xdelta-1.1.3/xdelta.m4 2004-10-20 00:21:47.205628616 +0200
+@@ -4,7 +4,7 @@
+ dnl AM_PATH_XDELTA([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
+ dnl Test for XDELTA, and define XDELTA_CFLAGS and XDELTA_LIBS, if "gmodule" or
+ dnl
+-AC_DEFUN(AM_PATH_XDELTA,
++AC_DEFUN([AM_PATH_XDELTA],
+ [dnl
+ dnl Get the cflags and libraries from the xdelta-config script
+ dnl
diff --git a/extra/xdelta3/PKGBUILD b/extra/xdelta3/PKGBUILD
new file mode 100644
index 000000000..a8149d55c
--- /dev/null
+++ b/extra/xdelta3/PKGBUILD
@@ -0,0 +1,36 @@
+# $Id: $
+# Maintainer: Allan McRae <allan@archlinux.org>
+# Contributor: Eduard "bekks" Warkentin <eduard.warkentin@gmail.com>
+# Contributor: Henning Garus <henning.garus@gmail.com>
+
+pkgname=xdelta3
+pkgver=3.0.0
+pkgrel=1
+pkgdesc="A diff utility which works with binary files"
+arch=('i686' 'x86_64')
+url="http://xdelta.org/"
+license=('GPL')
+makedepends=('python2')
+optdepends=('python2: for python modules')
+source=(http://xdelta.googlecode.com/files/xdelta$pkgver.tar.gz
+ xdelta3-makefile.patch)
+md5sums=('5fe038be3a266d2a7913e10d1cec6d88'
+ '378e9a735d92fb2fc695ed9ce2fad2d5')
+
+build() {
+ cd $srcdir/xdelta$pkgver
+ patch -Np1 -i $srcdir/xdelta3-makefile.patch
+ sed -i "/PYVER = /s/2.6/2.7/" Makefile
+
+ make xdelta3
+ make xdelta3module.so
+}
+
+package() {
+ cd $srcdir/xdelta$pkgver
+
+ install -D xdelta3 $pkgdir/usr/bin/xdelta3
+ python2 ./setup.py install --root ${pkgdir}
+ install -m644 {xdelta3.py,xdelta3module.so} ${pkgdir}/usr/lib/python2.7/site-packages
+}
+
diff --git a/extra/xdelta3/xdelta3-makefile.patch b/extra/xdelta3/xdelta3-makefile.patch
new file mode 100644
index 000000000..3085d3c29
--- /dev/null
+++ b/extra/xdelta3/xdelta3-makefile.patch
@@ -0,0 +1,24 @@
+diff -Naur xdelta3.0v-old/Makefile xdelta3.0v/Makefile
+--- xdelta3.0v-old/Makefile 2009-03-12 01:44:51.000000000 +0000
++++ xdelta3.0v/Makefile 2009-03-14 17:02:33.000000000 +0000
+@@ -200,6 +200,9 @@
+ xdelta3.o: $(SOURCES)
+ $(CC) -O3 $(CFLAGS) -c xdelta3.c $(SWIG_FLAGS) -o xdelta3.o
+
++xdelta3_PIC.o: $(SOURCES)
++ $(CC) -O3 $(CFLAGS) -fPIC -c xdelta3.c $(SWIG_FLAGS) -o xdelta3_PIC.o
++
+ xdelta3_wrap.o: xdelta3_wrap.c
+ $(CC) -O3 $(CFLAGS) $(SWIG_FLAGS) \
+ -DHAVE_CONFIG_H \
+@@ -218,8 +221,8 @@
+ cp $(SWIGTGT) /usr/lib/python$(PYVER)/site-packages
+
+ ifeq ("$(DARWIN)", "")
+-xdelta3module.so: xdelta3_wrap.o xdelta3.o
+- ld -shared xdelta3.o xdelta3_wrap.o \
++xdelta3module.so: xdelta3_wrap.o xdelta3_PIC.o
++ cc -shared xdelta3_PIC.o xdelta3_wrap.o \
+ -o xdelta3module.so \
+ /usr/lib/libpython$(PYVER).so \
+ -lc
diff --git a/extra/xf86-input-acecad/PKGBUILD b/extra/xf86-input-acecad/PKGBUILD
new file mode 100644
index 000000000..f0203a202
--- /dev/null
+++ b/extra/xf86-input-acecad/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 114580 2011-03-14 10:09:44Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xf86-input-acecad
+pkgver=1.4.0
+pkgrel=4
+pkgdesc="X.Org acecad tablet input driver"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('sysfsutils')
+makedepends=('xorg-server-devel')
+conflicts=('xorg-server<1.9.0')
+options=('!libtool')
+groups=('xorg-drivers' 'xorg')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('4182aa30d4209ec60fd423a3e24e4951e16c0a4b')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xf86-input-aiptek/PKGBUILD b/extra/xf86-input-aiptek/PKGBUILD
new file mode 100644
index 000000000..d0f6b5468
--- /dev/null
+++ b/extra/xf86-input-aiptek/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 113901 2011-03-10 19:22:12Z jgc $
+#Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xf86-input-aiptek
+pkgver=1.3.1
+pkgrel=2
+pkgdesc="X.Org Aiptek USB Digital Tablet input driver"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('glibc')
+makedepends=('pkgconfig' 'xorg-server-devel')
+conflicts=('xorg-server<1.9.0')
+options=('!libtool')
+groups=('xorg-drivers' 'xorg')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('8466910dd3877502eb97468db4deab98d49125bb')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xf86-input-evdev/PKGBUILD b/extra/xf86-input-evdev/PKGBUILD
new file mode 100644
index 000000000..c16a37091
--- /dev/null
+++ b/extra/xf86-input-evdev/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id: PKGBUILD 113906 2011-03-10 19:27:16Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Alexander Baldeck <Alexander@archlinux.org
+
+pkgname=xf86-input-evdev
+pkgver=2.6.0
+pkgrel=2
+pkgdesc="X.org evdev input driver"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('glibc')
+makedepends=('xorg-server-devel')
+conflicts=('xorg-server<1.9.0')
+options=('!libtool' '!makeflags')
+groups=('xorg-drivers' 'xorg')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('fb6f7a6f5168ae07efe890e4ace9fb8af1d4e1e0')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xf86-input-joystick/50-joystick.conf b/extra/xf86-input-joystick/50-joystick.conf
new file mode 100644
index 000000000..95a295ab0
--- /dev/null
+++ b/extra/xf86-input-joystick/50-joystick.conf
@@ -0,0 +1,6 @@
+Section "InputClass"
+ Identifier "joystick catchall"
+ MatchIsJoystick "on"
+ MatchDevicePath "/dev/input/event*"
+ Driver "joystick"
+EndSection
diff --git a/extra/xf86-input-joystick/LICENSE b/extra/xf86-input-joystick/LICENSE
new file mode 100644
index 000000000..434899a50
--- /dev/null
+++ b/extra/xf86-input-joystick/LICENSE
@@ -0,0 +1,22 @@
+This package was downloaded from
+http://xorg.freedesktop.org/releases/individual/driver/
+
+Copyright 1995-1999 by Frederic Lepied, France. <Lepied@XFree86.org>
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation, and that the name of Frederic Lepied not be used in
+advertising or publicity pertaining to distribution of the software without
+specific, written prior permission. Frederic Lepied makes no
+representations about the suitability of this software for any purpose. It
+is provided "as is" without express or implied warranty.
+
+FREDERIC LEPIED DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL FREDERIC LEPIED BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
diff --git a/extra/xf86-input-joystick/PKGBUILD b/extra/xf86-input-joystick/PKGBUILD
new file mode 100644
index 000000000..984a83e42
--- /dev/null
+++ b/extra/xf86-input-joystick/PKGBUILD
@@ -0,0 +1,34 @@
+# $Id: PKGBUILD 114875 2011-03-16 08:27:14Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xf86-input-joystick
+pkgver=1.5.0
+pkgrel=5
+pkgdesc="X.Org Joystick input driver"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('glibc')
+makedepends=('xorg-server-devel')
+conflicts=('xorg-server<1.9.0')
+groups=('xorg-drivers' 'xorg')
+options=('!libtool')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2
+ 50-joystick.conf
+ LICENSE)
+sha1sums=('a9fed6827d55f59b7166185247952049b4e6d152'
+ 'e1ff3699a0470c6bb78a53f718df9d8521621e11'
+ 'ee4c79491b36a680ed9d86f5fc41ae447f26353e')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+
+ install -m755 -d "${pkgdir}/etc/X11/xorg.conf.d"
+ install -m644 "${srcdir}/50-joystick.conf" "${pkgdir}/etc/X11/xorg.conf.d/"
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xf86-input-keyboard/PKGBUILD b/extra/xf86-input-keyboard/PKGBUILD
new file mode 100644
index 000000000..e91bf4ad1
--- /dev/null
+++ b/extra/xf86-input-keyboard/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 113916 2011-03-10 20:06:54Z jgc $
+# Maintainer; Jan de Groot <jgc@archlinux.org>
+
+pkgname=xf86-input-keyboard
+pkgver=1.6.0
+pkgrel=1
+pkgdesc="X.Org keyboard input driver"
+arch=(i686 x86_64)
+license=('custom')
+url="http://xorg.freedesktop.org/"
+depends=('glibc')
+makedepends=('xorg-server-devel')
+conflicts=('xorg-server<1.9.0')
+options=('!libtool')
+groups=('xorg-drivers' 'xorg')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('8e845086749f8c4b64fdfa852b4b26cf7bb62dc9')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xf86-input-mouse/PKGBUILD b/extra/xf86-input-mouse/PKGBUILD
new file mode 100644
index 000000000..bc95e7278
--- /dev/null
+++ b/extra/xf86-input-mouse/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 113921 2011-03-10 20:09:06Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xf86-input-mouse
+pkgver=1.7.0
+pkgrel=1
+pkgdesc="X.org mouse input driver"
+arch=(i686 x86_64)
+license=('custom')
+url="http://xorg.freedesktop.org/"
+depends=('glibc')
+makedepends=('xorg-server-devel')
+conflicts=('xorg-server<1.9.0')
+options=('!libtool')
+groups=('xorg-drivers' 'xorg')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('8b99054e5e4feafd7e08c87b936e64386b74ae8f')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -d -m755 "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xf86-input-synaptics/10-synaptics.conf b/extra/xf86-input-synaptics/10-synaptics.conf
new file mode 100644
index 000000000..81a90fb81
--- /dev/null
+++ b/extra/xf86-input-synaptics/10-synaptics.conf
@@ -0,0 +1,9 @@
+Section "InputClass"
+ Identifier "touchpad catchall"
+ Driver "synaptics"
+ MatchIsTouchpad "on"
+ MatchDevicePath "/dev/input/event*"
+ Option "TapButton1" "1"
+ Option "TapButton2" "2"
+ Option "TapButton3" "3"
+EndSection
diff --git a/extra/xf86-input-synaptics/PKGBUILD b/extra/xf86-input-synaptics/PKGBUILD
new file mode 100644
index 000000000..504ba0514
--- /dev/null
+++ b/extra/xf86-input-synaptics/PKGBUILD
@@ -0,0 +1,39 @@
+# $Id: PKGBUILD 113926 2011-03-10 20:15:53Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Tobias Powalowski <tpowa@archlinux.org>
+# Contributor: Thomas Bächler <thomas@archlinux.org>
+# Contributor: Alexander Baldeck <alexander@archlinux.org>
+
+pkgname=xf86-input-synaptics
+pkgver=1.4.0
+pkgrel=1
+pkgdesc="Synaptics driver for notebook touchpads"
+arch=(i686 x86_64)
+license=('custom')
+url="http://xorg.freedesktop.org/"
+depends=('libxtst')
+makedepends=('xorg-server-devel' 'libxi' 'libx11')
+conflicts=('xorg-server<1.9.0')
+replaces=('synaptics')
+provides=('synaptics')
+conflicts=('synaptics')
+groups=('xorg-drivers' 'xorg')
+options=(!libtool)
+backup=('etc/X11/xorg.conf.d/10-synaptics.conf')
+source=(http://xorg.freedesktop.org/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2
+ 10-synaptics.conf)
+sha1sums=('96541b063482568e177f883a9fcfbe9a22c25569'
+ '68e1f4ef5e1038231d210eb422fa4d18c5922f0f')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/etc/X11/xorg.conf.d"
+ install -m644 "${srcdir}/10-synaptics.conf" "${pkgdir}/etc/X11/xorg.conf.d/"
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+
+ rm -rf "${pkgdir}/usr/share/X11"
+}
diff --git a/extra/xf86-input-void/PKGBUILD b/extra/xf86-input-void/PKGBUILD
new file mode 100644
index 000000000..1c086ce2b
--- /dev/null
+++ b/extra/xf86-input-void/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 113936 2011-03-10 20:29:20Z jgc $
+#Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xf86-input-void
+pkgver=1.3.1
+pkgrel=1
+pkgdesc="X.org void input driver"
+arch=(i686 x86_64)
+license=('custom')
+url="http://xorg.freedesktop.org/"
+depends=('glibc')
+makedepends=('xorg-server-devel')
+conflicts=('xorg-server<1.9.0')
+groups=('xorg-drivers' 'xorg')
+options=('!libtool')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('f0009bd77d205c5e5a9791d8f498780b44e931ae')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xf86-input-wacom/70-wacom.rules b/extra/xf86-input-wacom/70-wacom.rules
new file mode 100644
index 000000000..67e5580cc
--- /dev/null
+++ b/extra/xf86-input-wacom/70-wacom.rules
@@ -0,0 +1,8 @@
+ACTION!="add|change", GOTO="wacom_end"
+
+# Match all wacom tablets with a serial ID starting with WACf
+ATTRS{id}=="WACf*" ENV{NAME}="Serial Wacom Tablet", ENV{SUBSYSTEM}="input", ENV{ID_INPUT}="1", ENV{ID_INPUT_TABLET}="1"
+ATTRS{id}=="FUJ*" ENV{NAME}="Serial Wacom Tablet", ENV{SUBSYSTEM}="input", ENV{ID_INPUT}="1", ENV{ID_INPUT_TABLET}="1"
+
+LABEL="wacom_end"
+
diff --git a/extra/xf86-input-wacom/PKGBUILD b/extra/xf86-input-wacom/PKGBUILD
new file mode 100644
index 000000000..529615939
--- /dev/null
+++ b/extra/xf86-input-wacom/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 88601 2010-08-24 09:13:17Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: M Rawash <mrawash@gmail.com>
+
+pkgname=xf86-input-wacom
+pkgver=0.10.8
+pkgrel=2
+pkgdesc="X.Org Wacom tablet driver"
+arch=('i686' 'x86_64')
+url="http://linuxwacom.sourceforge.net/"
+license=('GPL')
+backup=('etc/X11/xorg.conf.d/50-wacom.conf')
+depends=('libxi')
+makedepends=('xorg-server-devel' 'libxext' 'libxi')
+conflicts=('xorg-server<1.9.0')
+options=(!libtool)
+source=(http://downloads.sourceforge.net/project/linuxwacom/${pkgname}/${pkgname}-${pkgver}.tar.bz2
+ 70-wacom.rules)
+md5sums=('e2bcc125070a16a7e3608d074d5d27dc'
+ '4d3665bb2ef8a8190734640dffa4c6f7')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --with-xorg-conf-dir=/etc/X11/xorg.conf.d
+ make
+ make DESTDIR="${pkgdir}" install
+
+ install -m755 -d "${pkgdir}/lib/udev/rules.d"
+ install -m644 "${srcdir}/70-wacom.rules" "${pkgdir}/lib/udev/rules.d/"
+}
diff --git a/extra/xf86-video-apm/PKGBUILD b/extra/xf86-video-apm/PKGBUILD
new file mode 100644
index 000000000..bc7e2e472
--- /dev/null
+++ b/extra/xf86-video-apm/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 113941 2011-03-10 20:38:18Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xf86-video-apm
+pkgver=1.2.3
+pkgrel=2
+pkgdesc="X.org Alliance ProMotion video driver"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('glibc')
+makedepends=('xorg-server-devel')
+conflicts=('xorg-server<1.9.0')
+groups=('xorg-drivers' 'xorg')
+options=('!libtool')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('1fa7180cf985a74132f8d5b39a0bf9df08713fac')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xf86-video-ark/PKGBUILD b/extra/xf86-video-ark/PKGBUILD
new file mode 100644
index 000000000..e93acec06
--- /dev/null
+++ b/extra/xf86-video-ark/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 113946 2011-03-10 20:41:41Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xf86-video-ark
+pkgver=0.7.3
+pkgrel=2
+pkgdesc="X.org ark video driver"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('glibc')
+makedepends=('xorg-server-devel')
+conflicts=('xorg-server<1.9.0')
+options=('!libtool')
+groups=('xorg-drivers' 'xorg')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('56901ec6097a83433689f208268281f9c98c238b')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xf86-video-ast/PKGBUILD b/extra/xf86-video-ast/PKGBUILD
new file mode 100644
index 000000000..6a14cdb4e
--- /dev/null
+++ b/extra/xf86-video-ast/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 114185 2011-03-11 09:22:15Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xf86-video-ast
+pkgver=0.91.10
+pkgrel=2
+pkgdesc="X.org ASPEED AST Graphics video driver"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('glibc')
+makedepends=('xorg-server-devel')
+options=('!libtool')
+groups=('xorg-drivers' 'xorg')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('a90624e63f33fdcb50ccefcdeebb34052f341ef3')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xf86-video-ati/PKGBUILD b/extra/xf86-video-ati/PKGBUILD
new file mode 100644
index 000000000..ed379833d
--- /dev/null
+++ b/extra/xf86-video-ati/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id: PKGBUILD 114190 2011-03-11 09:27:15Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Alexander Baldeck <alexander@archlinux.org>
+
+pkgname=xf86-video-ati
+pkgver=6.14.0
+pkgrel=2
+pkgdesc="X.org ati video driver"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=(libpciaccess libdrm udev pixman ati-dri)
+makedepends=('xorg-server-devel' 'libdrm' 'xf86driproto' 'mesa')
+conflicts=('xorg-server<1.9.0')
+groups=('xorg-drivers' 'xorg')
+options=('!libtool')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('132a6b1ed6e03f7365659cdcf520516746a8fc27')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --enable-dri
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make "DESTDIR=${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xf86-video-chips/PKGBUILD b/extra/xf86-video-chips/PKGBUILD
new file mode 100644
index 000000000..9712243dd
--- /dev/null
+++ b/extra/xf86-video-chips/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 114195 2011-03-11 09:33:53Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Alexander Baldeck <alexander@archlinux.org>
+
+pkgname=xf86-video-chips
+pkgver=1.2.4
+pkgrel=1
+pkgdesc="X.org Chips and Technologies video driver"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=(glibc)
+makedepends=('xorg-server-devel')
+conflicts=('xorg-server<1.9.0')
+groups=('xorg-drivers' 'xorg')
+options=('!libtool')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('71f474335d05f93b2451a7a0750c4409669641a4')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xf86-video-cirrus/LICENSE b/extra/xf86-video-cirrus/LICENSE
new file mode 100644
index 000000000..bb283cf4d
--- /dev/null
+++ b/extra/xf86-video-cirrus/LICENSE
@@ -0,0 +1,22 @@
+This package was downloaded from
+http://xorg.freedesktop.org/releases/individual/driver/
+
+Copyright 2000 by Egbert Eich
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation, and that the name of Alan Hourihane not be used in
+advertising or publicity pertaining to distribution of the software without
+specific, written prior permission. Alan Hourihane makes no representations
+about the suitability of this software for any purpose. It is provided
+"as is" without express or implied warranty.
+
+EGBERT EICH DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL ALAN HOURIHANE BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
diff --git a/extra/xf86-video-cirrus/PKGBUILD b/extra/xf86-video-cirrus/PKGBUILD
new file mode 100644
index 000000000..374de76cf
--- /dev/null
+++ b/extra/xf86-video-cirrus/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 114585 2011-03-14 10:16:30Z jgc $
+#Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xf86-video-cirrus
+pkgver=1.3.2
+pkgrel=5
+pkgdesc="X.org Cirrus Logic video driver"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('glibc')
+makedepends=('xorg-server-devel')
+conflicts=('xorg-server<1.9.0')
+groups=('xorg-drivers' 'xorg')
+options=('!libtool')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2
+ LICENSE)
+md5sums=('8195d03ed0be0975c03441e66a9f53b3'
+ 'b9b570ac5c03f1fbe3e0cee5fe884b82')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xf86-video-dummy/PKGBUILD b/extra/xf86-video-dummy/PKGBUILD
new file mode 100644
index 000000000..d629b26c0
--- /dev/null
+++ b/extra/xf86-video-dummy/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 114200 2011-03-11 09:44:32Z jgc $
+#Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xf86-video-dummy
+pkgver=0.3.4
+pkgrel=3
+pkgdesc="X.org dummy video driver"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('glibc')
+makedepends=('xorg-server-devel' 'xf86dgaproto')
+conflicts=('xorg-server<1.9.0')
+groups=('xorg-drivers' 'xorg')
+options=('!libtool')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('876ed7165ea2821bbddd73232a1ce0b79c1f14ff')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xf86-video-fbdev/PKGBUILD b/extra/xf86-video-fbdev/PKGBUILD
new file mode 100644
index 000000000..a53248894
--- /dev/null
+++ b/extra/xf86-video-fbdev/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 114205 2011-03-11 09:46:20Z jgc $
+#Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xf86-video-fbdev
+pkgver=0.4.2
+pkgrel=3
+pkgdesc="X.org framebuffer video driver"
+arch=(i686 x86_64)
+license=('custom')
+url="http://xorg.freedesktop.org/"
+depends=('glibc')
+makedepends=('xorg-server-devel')
+conflicts=('xorg-server<1.9.0')
+groups=('xorg-drivers' 'xorg')
+options=('!libtool')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('c8562f997d56c9fec50df6ca9892f39f43ff4c2c')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xf86-video-glint/PKGBUILD b/extra/xf86-video-glint/PKGBUILD
new file mode 100644
index 000000000..757ae9c99
--- /dev/null
+++ b/extra/xf86-video-glint/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 114213 2011-03-11 09:52:26Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xf86-video-glint
+pkgver=1.2.5
+pkgrel=1
+pkgdesc="X.org GLINT/Permedia video driver"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('glibc')
+makedepends=('xorg-server-devel' 'xf86dgaproto')
+conflicts=('xorg-server<1.9.0')
+options=('!libtool')
+groups=('xorg-drivers' 'xorg')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('28d54093c6485bf0055fa16be3d116f9107aaea7')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --disable-dri
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xf86-video-i128/PKGBUILD b/extra/xf86-video-i128/PKGBUILD
new file mode 100644
index 000000000..513c262c2
--- /dev/null
+++ b/extra/xf86-video-i128/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 114218 2011-03-11 10:11:52Z jgc $
+# Maintainer:Jan de Groot <jgc@archlinux.org>
+
+pkgname=xf86-video-i128
+pkgver=1.3.4
+pkgrel=2
+pkgdesc="X.org Number 9 I128 video driver"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('glibc')
+makedepends=('xorg-server-devel')
+conflicts=('xorg-server<1.9.0')
+groups=('xorg-drivers' 'xorg')
+options=('!libtool')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('d5f755dc964eaa067b4efcafafd00814a60df775')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xf86-video-i740/PKGBUILD b/extra/xf86-video-i740/PKGBUILD
new file mode 100644
index 000000000..d6ffc4287
--- /dev/null
+++ b/extra/xf86-video-i740/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 114223 2011-03-11 10:30:48Z jgc $
+#Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xf86-video-i740
+pkgver=1.3.2
+pkgrel=5
+pkgdesc="X.org Intel i740 video driver"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('glibc')
+makedepends=('xorg-server-devel')
+conflicts=('xorg-server<1.9.0')
+groups=('xorg-drivers' 'xorg')
+options=('!libtool')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('aadd2168153f780c487778e5fdda5473ed4b243d')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xf86-video-intel/PKGBUILD b/extra/xf86-video-intel/PKGBUILD
new file mode 100644
index 000000000..5b25ca4cd
--- /dev/null
+++ b/extra/xf86-video-intel/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id: PKGBUILD 114228 2011-03-11 10:58:30Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xf86-video-intel
+pkgver=2.14.0
+pkgrel=3
+pkgdesc="X.org Intel i810/i830/i915/945G/G965+ video drivers"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=(intel-dri libxvmc libpciaccess libdrm xcb-util libxfixes udev)
+makedepends=('xorg-server-devel' 'libx11' 'libdrm' 'xf86driproto' 'glproto' 'mesa' 'libxvmc' 'xcb-util')
+conflicts=('xorg-server<1.9.0' 'xf86-video-i810' 'xf86-video-intel-legacy')
+options=('!libtool')
+groups=('xorg-drivers' 'xorg')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2
+ git-fixes.patch)
+sha1sums=('103193a01b9c29d6f71a620ad99c6e1495276e68'
+ '62dc94bd6a45432bdaed85bb0187d7087b88fe29')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i "${srcdir}/git-fixes.patch"
+ libtoolize --force
+ autoreconf --force --install
+ ./configure --prefix=/usr --enable-dri
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xf86-video-intel/git-fixes.patch b/extra/xf86-video-intel/git-fixes.patch
new file mode 100644
index 000000000..cbdbf27b5
--- /dev/null
+++ b/extra/xf86-video-intel/git-fixes.patch
@@ -0,0 +1,1209 @@
+diff --git a/Makefile.am b/Makefile.am
+index f4239de..83948ab 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -18,6 +18,7 @@
+ # IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
++ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
+
+ SUBDIRS = uxa src man
+ MAINTAINERCLEANFILES = ChangeLog INSTALL
+diff --git a/configure.ac b/configure.ac
+index 529a294..5a1baac 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -21,18 +21,24 @@
+ # Process this file with autoconf to produce a configure script
+
+ # Initialize Autoconf
+-AC_PREREQ([2.60])
++AC_PREREQ([2.63])
+ AC_INIT([xf86-video-intel],
+ [2.14.0],
+ [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
+ [xf86-video-intel])
+ AC_CONFIG_SRCDIR([Makefile.am])
+ AC_CONFIG_HEADERS([config.h])
+-AC_CONFIG_AUX_DIR(.)
++AC_CONFIG_AUX_DIR([build-aux])
++AC_CONFIG_MACRO_DIR([m4])
+
+ # Initialize Automake
+-AM_INIT_AUTOMAKE([foreign dist-bzip2])
+-AM_MAINTAINER_MODE
++AM_INIT_AUTOMAKE([1.10 foreign dist-bzip2])
++AM_MAINTAINER_MODE([enable])
++
++# Support silent build rules, requires at least automake-1.11. Disable
++# by either passing --disable-silent-rules to configure or passing V=1
++# to make
++m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
+
+ # Require X.Org macros 1.8 or later for MAN_SUBSTS set by XORG_MANPAGE_SECTIONS
+ m4_ifndef([XORG_MACROS_VERSION],
+@@ -50,8 +56,8 @@ m4_ifndef([XORG_DRIVER_CHECK_EXT],
+ depending on your distribution, try package 'xserver-xorg-dev' or 'xorg-x11-server-devel'])])
+
+ # Initialize libtool
+-AC_DISABLE_STATIC
+-AC_PROG_LIBTOOL
++LT_PREREQ([2.2])
++LT_INIT([disable-static])
+
+ PKG_CHECK_MODULES(GEN4ASM, [intel-gen4asm >= 1.1], [gen4asm=yes], [gen4asm=no])
+ AM_CONDITIONAL(HAVE_GEN4ASM, test x$gen4asm = xyes)
+@@ -85,6 +91,12 @@ AC_ARG_ENABLE(kms-only, AS_HELP_STRING([--enable-kms-only],
+ [KMS_ONLY="$enableval"],
+ [KMS_ONLY=no])
+
++AC_ARG_ENABLE(debug,
++ AS_HELP_STRING([--enable-debug],
++ [Enables internal debugging [[default=yes]]]),
++ [DEBUG="$enableval"],
++ [DEBUG=yes])
++
+ # Store the list of server defined optional extensions in REQUIRED_MODULES
+ XORG_DRIVER_CHECK_EXT(RANDR, randrproto)
+ XORG_DRIVER_CHECK_EXT(RENDER, renderproto)
+@@ -138,15 +150,19 @@ fi
+ AC_MSG_CHECKING([whether to include XvMC support])
+ AC_MSG_RESULT([$XVMC])
+ AM_CONDITIONAL(XVMC, test x$XVMC = xyes)
+-if test "$XVMC" = yes; then
++if test "x$XVMC" = xyes; then
+ AC_DEFINE(ENABLE_XVMC,1,[Enable XvMC support])
+ fi
+
+ AM_CONDITIONAL(KMS_ONLY, test x$KMS_ONLY = xyes)
+-if test "$KMS_ONLY" = yes; then
++if test "x$KMS_ONLY" = xyes; then
+ AC_DEFINE(KMS_ONLY,1,[Assume KMS support])
+ fi
+
++if test "x$DEBUG" = xno; then
++ AC_DEFINE(NDEBUG,1,[Disable internal debugging])
++fi
++
+ DRIVER_NAME=intel
+ AC_SUBST([DRIVER_NAME])
+ AC_SUBST([moduledir])
+diff --git a/src/i915_render.c b/src/i915_render.c
+index 6d844e5..d04e8e1 100644
+--- a/src/i915_render.c
++++ b/src/i915_render.c
+@@ -302,12 +302,10 @@ static Bool i915_texture_setup(PicturePtr picture, PixmapPtr pixmap, int unit)
+ ScrnInfoPtr scrn = xf86Screens[picture->pDrawable->pScreen->myNum];
+ intel_screen_private *intel = intel_get_screen_private(scrn);
+ uint32_t format, pitch, filter;
+- int w, h, i;
+ uint32_t wrap_mode, tiling_bits;
++ int i;
+
+ pitch = intel_pixmap_pitch(pixmap);
+- w = picture->pDrawable->width;
+- h = picture->pDrawable->height;
+ intel->scale_units[unit][0] = 1. / pixmap->drawable.width;
+ intel->scale_units[unit][1] = 1. / pixmap->drawable.height;
+
+@@ -546,8 +544,8 @@ i915_emit_composite_primitive(PixmapPtr dest,
+ {
+ ScrnInfoPtr scrn = xf86Screens[dest->drawable.pScreen->myNum];
+ intel_screen_private *intel = intel_get_screen_private(scrn);
+- Bool is_affine_src, is_affine_mask = TRUE;
+- int per_vertex, num_floats;
++ Bool is_affine_src = TRUE, is_affine_mask = TRUE;
++ int per_vertex;
+ int tex_unit = 0;
+ int src_unit = -1, mask_unit = -1;
+ float src_x[3], src_y[3], src_w[3], mask_x[3], mask_y[3], mask_w[3];
+@@ -666,8 +664,6 @@ i915_emit_composite_primitive(PixmapPtr dest,
+ }
+ }
+
+- num_floats = 3 * per_vertex;
+-
+ OUT_VERTEX(dstX + w);
+ OUT_VERTEX(dstY + h);
+ if (! intel->render_source_is_solid) {
+diff --git a/src/i965_video.c b/src/i965_video.c
+index 235dfb9..e16a575 100644
+--- a/src/i965_video.c
++++ b/src/i965_video.c
+@@ -414,8 +414,8 @@ static void i965_create_dst_surface_state(ScrnInfoPtr scrn,
+ intel_emit_reloc(surf_bo, offset + offsetof(struct brw_surface_state, ss1),
+ pixmap_bo, 0, I915_GEM_DOMAIN_SAMPLER, 0);
+
+- dest_surf_state->ss2.height = scrn->virtualY - 1;
+- dest_surf_state->ss2.width = scrn->virtualX - 1;
++ dest_surf_state->ss2.height = pixmap->drawable.height - 1;
++ dest_surf_state->ss2.width = pixmap->drawable.width - 1;
+ dest_surf_state->ss2.mip_count = 0;
+ dest_surf_state->ss2.render_target_rotation = 0;
+ dest_surf_state->ss3.pitch = intel_pixmap_pitch(pixmap) - 1;
+@@ -770,7 +770,7 @@ static drm_intel_bo *i965_create_cc_state(ScrnInfoPtr scrn)
+ }
+
+ static void
+-i965_emit_video_setup(ScrnInfoPtr scrn, drm_intel_bo * surface_state_binding_table_bo, int n_src_surf)
++i965_emit_video_setup(ScrnInfoPtr scrn, drm_intel_bo * surface_state_binding_table_bo, int n_src_surf, PixmapPtr pixmap)
+ {
+ intel_screen_private *intel = intel_get_screen_private(scrn);
+ int urb_vs_start, urb_vs_size;
+@@ -821,20 +821,20 @@ i965_emit_video_setup(ScrnInfoPtr scrn, drm_intel_bo * surface_state_binding_tab
+ OUT_BATCH(0 | BASE_ADDRESS_MODIFY); /* media base addr, don't care */
+ OUT_BATCH(0 | BASE_ADDRESS_MODIFY); /* Instruction base address */
+ /* general state max addr, disabled */
+- OUT_BATCH(0x10000000 | BASE_ADDRESS_MODIFY);
++ OUT_BATCH(0 | BASE_ADDRESS_MODIFY);
+ /* media object state max addr, disabled */
+- OUT_BATCH(0x10000000 | BASE_ADDRESS_MODIFY);
++ OUT_BATCH(0 | BASE_ADDRESS_MODIFY);
+ /* Instruction max addr, disabled */
+- OUT_BATCH(0x10000000 | BASE_ADDRESS_MODIFY);
++ OUT_BATCH(0 | BASE_ADDRESS_MODIFY);
+ } else {
+ OUT_BATCH(BRW_STATE_BASE_ADDRESS | 4);
+ OUT_BATCH(0 | BASE_ADDRESS_MODIFY); /* Generate state base address */
+ OUT_RELOC(surface_state_binding_table_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, BASE_ADDRESS_MODIFY); /* Surface state base address */
+ OUT_BATCH(0 | BASE_ADDRESS_MODIFY); /* media base addr, don't care */
+ /* general state max addr, disabled */
+- OUT_BATCH(0x10000000 | BASE_ADDRESS_MODIFY);
++ OUT_BATCH(0 | BASE_ADDRESS_MODIFY);
+ /* media object state max addr, disabled */
+- OUT_BATCH(0x10000000 | BASE_ADDRESS_MODIFY);
++ OUT_BATCH(0 | BASE_ADDRESS_MODIFY);
+ }
+
+ /* Set system instruction pointer */
+@@ -877,7 +877,7 @@ i965_emit_video_setup(ScrnInfoPtr scrn, drm_intel_bo * surface_state_binding_tab
+ */
+ OUT_BATCH(BRW_3DSTATE_DRAWING_RECTANGLE | 2); /* XXX 3 for BLC or CTG */
+ OUT_BATCH(0x00000000); /* ymin, xmin */
+- OUT_BATCH((scrn->virtualX - 1) | (scrn->virtualY - 1) << 16); /* ymax, xmax */
++ OUT_BATCH((pixmap->drawable.width - 1) | (pixmap->drawable.height - 1) << 16); /* ymax, xmax */
+ OUT_BATCH(0x00000000); /* yorigin, xorigin */
+
+ /* skip the depth buffer */
+@@ -1212,7 +1212,7 @@ I965DisplayVideoTextured(ScrnInfoPtr scrn,
+
+ intel_batch_start_atomic(scrn, 100);
+
+- i965_emit_video_setup(scrn, surface_state_binding_table_bo, n_src_surf);
++ i965_emit_video_setup(scrn, surface_state_binding_table_bo, n_src_surf, pixmap);
+
+ /* Set up the pointer to our vertex buffer */
+ OUT_BATCH(BRW_3DSTATE_VERTEX_BUFFERS | 3);
+@@ -1517,13 +1517,13 @@ gen6_upload_depth_buffer_state(ScrnInfoPtr scrn)
+ }
+
+ static void
+-gen6_upload_drawing_rectangle(ScrnInfoPtr scrn)
++gen6_upload_drawing_rectangle(ScrnInfoPtr scrn, PixmapPtr pixmap)
+ {
+ intel_screen_private *intel = intel_get_screen_private(scrn);
+
+ OUT_BATCH(BRW_3DSTATE_DRAWING_RECTANGLE | 2);
+ OUT_BATCH(0x00000000); /* ymin, xmin */
+- OUT_BATCH((scrn->virtualX - 1) | (scrn->virtualY - 1) << 16); /* ymax, xmax */
++ OUT_BATCH((pixmap->drawable.width - 1) | (pixmap->drawable.height - 1) << 16); /* ymax, xmax */
+ OUT_BATCH(0x00000000); /* yorigin, xorigin */
+ }
+
+@@ -1673,7 +1673,7 @@ gen6_upload_vertex_element_state(ScrnInfoPtr scrn)
+ }
+
+ static void
+-gen6_emit_video_setup(ScrnInfoPtr scrn, drm_intel_bo *surface_state_binding_table_bo, int n_src_surf)
++gen6_emit_video_setup(ScrnInfoPtr scrn, drm_intel_bo *surface_state_binding_table_bo, int n_src_surf, PixmapPtr pixmap)
+ {
+ intel_screen_private *intel = intel_get_screen_private(scrn);
+
+@@ -1694,7 +1694,7 @@ gen6_emit_video_setup(ScrnInfoPtr scrn, drm_intel_bo *surface_state_binding_tabl
+ gen6_upload_wm_state(scrn, n_src_surf == 1 ? TRUE : FALSE);
+ gen6_upload_binding_table(scrn, (n_src_surf + 1) * ALIGN(sizeof(struct brw_surface_state), 32));;
+ gen6_upload_depth_buffer_state(scrn);
+- gen6_upload_drawing_rectangle(scrn);
++ gen6_upload_drawing_rectangle(scrn, pixmap);
+ gen6_upload_vertex_element_state(scrn);
+ }
+
+@@ -1853,7 +1853,7 @@ void Gen6DisplayVideoTextured(ScrnInfoPtr scrn,
+ intel_batch_submit(scrn, FALSE);
+
+ intel_batch_start_atomic(scrn, 200);
+- gen6_emit_video_setup(scrn, surface_state_binding_table_bo, n_src_surf);
++ gen6_emit_video_setup(scrn, surface_state_binding_table_bo, n_src_surf, pixmap);
+
+ /* Set up the pointer to our vertex buffer */
+ OUT_BATCH(BRW_3DSTATE_VERTEX_BUFFERS | (5 - 2));
+diff --git a/src/intel.h b/src/intel.h
+index 9063328..4c755fc 100644
+--- a/src/intel.h
++++ b/src/intel.h
+@@ -227,8 +227,6 @@ static inline Bool intel_pixmap_tiled(PixmapPtr pixmap)
+ dri_bo *intel_get_pixmap_bo(PixmapPtr pixmap);
+ void intel_set_pixmap_bo(PixmapPtr pixmap, dri_bo * bo);
+
+-typedef struct _I830OutputRec I830OutputRec, *I830OutputPtr;
+-
+ #include "common.h"
+
+ #ifdef XvMCExtension
+@@ -239,39 +237,6 @@ typedef struct _I830OutputRec I830OutputRec, *I830OutputPtr;
+
+ #define PITCH_NONE 0
+
+-/** Record of a linear allocation in the aperture. */
+-typedef struct _intel_memory intel_memory;
+-struct _intel_memory {
+- /** Description of the allocation, for logging */
+- char *name;
+-
+- /** @{
+- * Memory allocator linked list pointers
+- */
+- intel_memory *next;
+- intel_memory *prev;
+- /** @} */
+-
+- drm_intel_bo *bo;
+- uint32_t gem_name;
+-};
+-
+-typedef struct _I830CrtcPrivateRec {
+- int pipe;
+- int plane;
+-
+- Bool enabled;
+-
+- int dpms_mode;
+-
+- int x, y;
+-
+- /* Lookup table values to be set when the CRTC is enabled */
+- uint8_t lut_r[256], lut_g[256], lut_b[256];
+-} I830CrtcPrivateRec, *I830CrtcPrivatePtr;
+-
+-#define I830CrtcPrivate(c) ((I830CrtcPrivatePtr) (c)->driver_private)
+-
+ /** enumeration of 3d consumers so some can maintain invariant state. */
+ enum last_3d {
+ LAST_3D_OTHER,
+@@ -288,19 +253,12 @@ enum dri_type {
+
+ typedef struct intel_screen_private {
+ ScrnInfoPtr scrn;
+- unsigned char *MMIOBase;
+ int cpp;
+
+ #define RENDER_BATCH I915_EXEC_RENDER
+ #define BLT_BATCH I915_EXEC_BLT
+ unsigned int current_batch;
+
+- unsigned int bufferOffset; /* for I830SelectBuffer */
+-
+- /* These are set in PreInit and never changed. */
+- long FbMapSize;
+- long GTTMapSize;
+-
+ void *modes;
+ drm_intel_bo *front_buffer;
+ long front_pitch, front_tiling;
+@@ -344,7 +302,6 @@ typedef struct intel_screen_private {
+ Bool has_relaxed_fencing;
+
+ int Chipset;
+- unsigned long LinearAddr;
+ EntityInfoPtr pEnt;
+ struct pci_device *PciInfo;
+ struct intel_chipset chipset;
+@@ -535,8 +492,6 @@ extern void I830InitVideo(ScreenPtr pScreen);
+ extern xf86CrtcPtr intel_covering_crtc(ScrnInfoPtr scrn, BoxPtr box,
+ xf86CrtcPtr desired, BoxPtr crtc_box_ret);
+
+-extern xf86CrtcPtr intel_pipe_to_crtc(ScrnInfoPtr scrn, int pipe);
+-
+ Bool I830DRI2ScreenInit(ScreenPtr pScreen);
+ void I830DRI2CloseScreen(ScreenPtr pScreen);
+ void I830DRI2FrameEventHandler(unsigned int frame, unsigned int tv_sec,
+@@ -545,11 +500,7 @@ void I830DRI2FlipEventHandler(unsigned int frame, unsigned int tv_sec,
+ unsigned int tv_usec, void *user_data);
+
+ extern Bool intel_crtc_on(xf86CrtcPtr crtc);
+-static inline int intel_crtc_to_pipe(xf86CrtcPtr crtc)
+-{
+- intel_screen_private *intel = intel_get_screen_private(crtc->scrn);
+- return intel_get_pipe_from_crtc_id(intel->bufmgr, crtc);
+-}
++int intel_crtc_to_pipe(xf86CrtcPtr crtc);
+
+ /* intel_memory.c */
+ unsigned long intel_get_fence_size(intel_screen_private *intel, unsigned long size);
+@@ -688,11 +639,6 @@ static inline drm_intel_bo *intel_bo_alloc_for_data(ScrnInfoPtr scrn,
+ return bo;
+ }
+
+-/* Flags for memory allocation function */
+-#define NEED_PHYSICAL_ADDR 0x00000001
+-#define ALLOW_SHARING 0x00000010
+-#define DISABLE_REUSE 0x00000020
+-
+ void intel_debug_flush(ScrnInfoPtr scrn);
+
+ static inline PixmapPtr get_drawable_pixmap(DrawablePtr drawable)
+@@ -715,7 +661,7 @@ static inline Bool pixmap_is_scanout(PixmapPtr pixmap)
+ const OptionInfoRec *intel_uxa_available_options(int chipid, int busid);
+
+ Bool intel_uxa_init(ScreenPtr pScreen);
+-void intel_uxa_create_screen_resources(ScreenPtr pScreen);
++Bool intel_uxa_create_screen_resources(ScreenPtr pScreen);
+ void intel_uxa_block_handler(intel_screen_private *intel);
+ Bool intel_get_aperture_space(ScrnInfoPtr scrn, drm_intel_bo ** bo_table,
+ int num_bos);
+diff --git a/src/intel_display.c b/src/intel_display.c
+index 1198013..f487a6e 100644
+--- a/src/intel_display.c
++++ b/src/intel_display.c
+@@ -70,6 +70,7 @@ struct intel_crtc {
+ struct intel_mode *mode;
+ drmModeModeInfo kmode;
+ drmModeCrtcPtr mode_crtc;
++ int pipe;
+ dri_bo *cursor;
+ dri_bo *rotate_bo;
+ uint32_t rotate_pitch;
+@@ -118,7 +119,6 @@ intel_output_dpms_backlight(xf86OutputPtr output, int oldmode, int mode);
+ * List of available kernel interfaces in priority order
+ */
+ static const char *backlight_interfaces[] = {
+- "intel", /* prefer our own native backlight driver */
+ "asus-laptop",
+ "eeepc",
+ "thinkpad_screen",
+@@ -128,6 +128,7 @@ static const char *backlight_interfaces[] = {
+ "samsung",
+ "acpi_video1", /* finally fallback to the generic acpi drivers */
+ "acpi_video0",
++ "intel_backlight",
+ NULL,
+ };
+ /*
+@@ -678,6 +679,9 @@ intel_crtc_init(ScrnInfoPtr scrn, struct intel_mode *mode, int num)
+ intel_crtc->mode = mode;
+ crtc->driver_private = intel_crtc;
+
++ intel_crtc->pipe = drm_intel_get_pipe_from_crtc_id(intel->bufmgr,
++ crtc_id(intel_crtc));
++
+ intel_crtc->cursor = drm_intel_bo_alloc(intel->bufmgr, "ARGB cursor",
+ HWCURSOR_SIZE_ARGB,
+ GTT_PAGE_SIZE);
+@@ -1671,16 +1675,15 @@ intel_mode_fini(intel_screen_private *intel)
+ intel->modes = NULL;
+ }
+
+-int
+-intel_get_pipe_from_crtc_id(drm_intel_bufmgr *bufmgr, xf86CrtcPtr crtc)
+-{
+- return drm_intel_get_pipe_from_crtc_id(bufmgr,
+- crtc_id(crtc->driver_private));
+-}
+-
+ /* for the mode overlay */
+ int
+ intel_crtc_id(xf86CrtcPtr crtc)
+ {
+ return crtc_id(crtc->driver_private);
+ }
++
++int intel_crtc_to_pipe(xf86CrtcPtr crtc)
++{
++ struct intel_crtc *intel_crtc = crtc->driver_private;
++ return intel_crtc->pipe;
++}
+diff --git a/src/intel_driver.c b/src/intel_driver.c
+index 1275e4b..ebed258 100644
+--- a/src/intel_driver.c
++++ b/src/intel_driver.c
+@@ -37,10 +37,6 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
+ #include "config.h"
+ #endif
+
+-#ifndef PRINT_MODE_INFO
+-#define PRINT_MODE_INFO 0
+-#endif
+-
+ #include <assert.h>
+ #include <string.h>
+ #include <stdio.h>
+@@ -80,10 +76,6 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
+ #include "i915_drm.h"
+ #include <xf86drmMode.h>
+
+-#define BIT(x) (1 << (x))
+-#define MAX(a,b) ((a) > (b) ? (a) : (b))
+-#define NB_OF(x) (sizeof (x) / sizeof (*x))
+-
+ /* *INDENT-OFF* */
+ /*
+ * Note: "ColorKey" is provided for compatibility with the i810 driver.
+@@ -174,14 +166,6 @@ I830LoadPalette(ScrnInfoPtr scrn, int numColors, int *indices,
+
+ for (p = 0; p < xf86_config->num_crtc; p++) {
+ xf86CrtcPtr crtc = xf86_config->crtc[p];
+- I830CrtcPrivatePtr intel_crtc = crtc->driver_private;
+-
+- /* Initialize to the old lookup table values. */
+- for (i = 0; i < 256; i++) {
+- lut_r[i] = intel_crtc->lut_r[i] << 8;
+- lut_g[i] = intel_crtc->lut_g[i] << 8;
+- lut_b[i] = intel_crtc->lut_b[i] << 8;
+- }
+
+ switch (scrn->depth) {
+ case 15:
+@@ -250,9 +234,7 @@ static Bool i830CreateScreenResources(ScreenPtr screen)
+ if (!(*screen->CreateScreenResources) (screen))
+ return FALSE;
+
+- intel_uxa_create_screen_resources(screen);
+-
+- return TRUE;
++ return intel_uxa_create_screen_resources(screen);
+ }
+
+ static void PreInitCleanup(ScrnInfoPtr scrn)
+@@ -607,12 +589,9 @@ static Bool I830PreInit(ScrnInfoPtr scrn, int flags)
+ intel->tiling = TRUE;
+
+ /* Allow user override if they set a value */
+- if (!ALWAYS_TILING(intel) && xf86IsOptionSet(intel->Options, OPTION_TILING)) {
+- if (xf86ReturnOptValBool(intel->Options, OPTION_TILING, FALSE))
+- intel->tiling = TRUE;
+- else
+- intel->tiling = FALSE;
+- }
++ if (!ALWAYS_TILING(intel))
++ intel->tiling = xf86ReturnOptValBool(intel->Options,
++ OPTION_TILING, TRUE);
+
+ intel->can_blt = can_accelerate_blt(intel);
+ intel->use_shadow = !intel->can_blt;
+@@ -631,19 +610,11 @@ static Bool I830PreInit(ScrnInfoPtr scrn, int flags)
+ }
+
+ /* SwapBuffers delays to avoid tearing */
+- intel->swapbuffers_wait = TRUE;
+-
+- /* Allow user override if they set a value */
+- if (xf86IsOptionSet(intel->Options, OPTION_SWAPBUFFERS_WAIT)) {
+- if (xf86ReturnOptValBool
+- (intel->Options, OPTION_SWAPBUFFERS_WAIT, FALSE))
+- intel->swapbuffers_wait = TRUE;
+- else
+- intel->swapbuffers_wait = FALSE;
+- }
+-
++ intel->swapbuffers_wait = xf86ReturnOptValBool(intel->Options,
++ OPTION_SWAPBUFFERS_WAIT,
++ TRUE);
+ if (IS_GEN6(intel))
+- intel->swapbuffers_wait = FALSE;
++ intel->swapbuffers_wait = FALSE;
+
+ xf86DrvMsg(scrn->scrnIndex, X_CONFIG, "Tiling %sabled\n",
+ intel->tiling ? "en" : "dis");
+@@ -679,19 +650,12 @@ static Bool I830PreInit(ScrnInfoPtr scrn, int flags)
+ }
+
+ /* Load the dri2 module if requested. */
+- if (xf86ReturnOptValBool(intel->Options, OPTION_DRI, FALSE) &&
+- intel->directRenderingType != DRI_DISABLED) {
++ if (intel->directRenderingType != DRI_DISABLED)
+ xf86LoadSubModule(scrn, "dri2");
+- }
+
+ return TRUE;
+ }
+
+-enum pipe {
+- PIPE_A = 0,
+- PIPE_B,
+-};
+-
+ /**
+ * Intialiazes the hardware for the 3D pipeline use in the 2D driver.
+ *
+@@ -733,50 +697,6 @@ I830BlockHandler(int i, pointer blockData, pointer pTimeout, pointer pReadmask)
+ intel_video_block_handler(intel);
+ }
+
+-static void intel_fixup_mtrrs(ScrnInfoPtr scrn)
+-{
+-#ifdef HAS_MTRR_SUPPORT
+- intel_screen_private *intel = intel_get_screen_private(scrn);
+- int fd;
+- struct mtrr_gentry gentry;
+- struct mtrr_sentry sentry;
+-
+- if ((fd = open("/proc/mtrr", O_RDONLY, 0)) != -1) {
+- for (gentry.regnum = 0;
+- ioctl(fd, MTRRIOC_GET_ENTRY, &gentry) == 0;
+- ++gentry.regnum) {
+-
+- if (gentry.size < 1) {
+- /* DISABLED */
+- continue;
+- }
+-
+- /* Check the MTRR range is one we like and if not - remove it.
+- * The Xserver common layer will then setup the right range
+- * for us.
+- */
+- if (gentry.base == intel->LinearAddr &&
+- gentry.size < intel->FbMapSize) {
+-
+- xf86DrvMsg(scrn->scrnIndex, X_INFO,
+- "Removing bad MTRR range (base 0x%lx, size 0x%x)\n",
+- gentry.base, gentry.size);
+-
+- sentry.base = gentry.base;
+- sentry.size = gentry.size;
+- sentry.type = gentry.type;
+-
+- if (ioctl(fd, MTRRIOC_DEL_ENTRY, &sentry) == -1) {
+- xf86DrvMsg(scrn->scrnIndex, X_ERROR,
+- "Failed to remove bad MTRR range\n");
+- }
+- }
+- }
+- close(fd);
+- }
+-#endif
+-}
+-
+ static Bool
+ intel_init_initial_framebuffer(ScrnInfoPtr scrn)
+ {
+@@ -809,7 +729,7 @@ Bool intel_crtc_on(xf86CrtcPtr crtc)
+ {
+ ScrnInfoPtr scrn = crtc->scrn;
+ xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(scrn);
+- int i, active_outputs = 0;
++ int i;
+
+ if (!crtc->enabled)
+ return FALSE;
+@@ -819,11 +739,9 @@ Bool intel_crtc_on(xf86CrtcPtr crtc)
+ xf86OutputPtr output = xf86_config->output[i];
+ if (output->crtc == crtc &&
+ intel_output_dpms_status(output) == DPMSModeOn)
+- active_outputs++;
++ return TRUE;
+ }
+
+- if (active_outputs)
+- return TRUE;
+ return FALSE;
+ }
+
+@@ -849,103 +767,102 @@ intel_flush_callback(CallbackListPtr *list,
+ static void
+ I830HandleUEvents(int fd, void *closure)
+ {
+- ScrnInfoPtr scrn = closure;
++ ScrnInfoPtr scrn = closure;
+ intel_screen_private *intel = intel_get_screen_private(scrn);
+- struct udev_device *dev;
+- const char *hotplug;
+- struct stat s;
+- dev_t udev_devnum;
+-
+- dev = udev_monitor_receive_device(intel->uevent_monitor);
+- if (!dev)
+- return;
+-
+- udev_devnum = udev_device_get_devnum(dev);
+- fstat(intel->drmSubFD, &s);
+- /*
+- * Check to make sure this event is directed at our
+- * device (by comparing dev_t values), then make
+- * sure it's a hotplug event (HOTPLUG=1)
+- */
+-
+- hotplug = udev_device_get_property_value(dev, "HOTPLUG");
+-
+- if (memcmp(&s.st_rdev, &udev_devnum, sizeof (dev_t)) == 0 &&
+- hotplug && atoi(hotplug) == 1)
+- RRGetInfo(screenInfo.screens[scrn->scrnIndex], TRUE);
+-
+- udev_device_unref(dev);
++ struct udev_device *dev;
++ const char *hotplug;
++ struct stat s;
++ dev_t udev_devnum;
++
++ dev = udev_monitor_receive_device(intel->uevent_monitor);
++ if (!dev)
++ return;
++
++ udev_devnum = udev_device_get_devnum(dev);
++ fstat(intel->drmSubFD, &s);
++ /*
++ * Check to make sure this event is directed at our
++ * device (by comparing dev_t values), then make
++ * sure it's a hotplug event (HOTPLUG=1)
++ */
++
++ hotplug = udev_device_get_property_value(dev, "HOTPLUG");
++
++ if (memcmp(&s.st_rdev, &udev_devnum, sizeof (dev_t)) == 0 &&
++ hotplug && atoi(hotplug) == 1)
++ RRGetInfo(screenInfo.screens[scrn->scrnIndex], TRUE);
++
++ udev_device_unref(dev);
+ }
+
+ static void
+ I830UeventInit(ScrnInfoPtr scrn)
+ {
+- intel_screen_private *intel = intel_get_screen_private(scrn);
+- struct udev *u;
+- struct udev_monitor *mon;
+- Bool hotplug;
+- MessageType from = X_CONFIG;
+-
+- if (!xf86GetOptValBool(intel->Options, OPTION_HOTPLUG, &hotplug)) {
+- from = X_DEFAULT;
+- hotplug = TRUE;
+- }
+-
+- xf86DrvMsg(scrn->scrnIndex, from, "hotplug detection: \"%s\"\n",
+- hotplug ? "enabled" : "disabled");
+- if (!hotplug)
+- return;
+-
+- u = udev_new();
+- if (!u)
+- return;
+-
+- mon = udev_monitor_new_from_netlink(u, "udev");
+-
+- if (!mon) {
+- udev_unref(u);
+- return;
+- }
+-
+- if (udev_monitor_filter_add_match_subsystem_devtype(mon,
+- "drm",
+- "drm_minor") < 0 ||
+- udev_monitor_enable_receiving(mon) < 0)
+- {
+- udev_monitor_unref(mon);
+- udev_unref(u);
+- return;
+- }
+-
+- intel->uevent_handler =
+- xf86AddGeneralHandler(udev_monitor_get_fd(mon),
+- I830HandleUEvents,
+- scrn);
+- if (!intel->uevent_handler) {
+- udev_monitor_unref(mon);
+- udev_unref(u);
+- return;
+- }
+-
+- intel->uevent_monitor = mon;
++ intel_screen_private *intel = intel_get_screen_private(scrn);
++ struct udev *u;
++ struct udev_monitor *mon;
++ Bool hotplug;
++ MessageType from = X_CONFIG;
++
++ if (!xf86GetOptValBool(intel->Options, OPTION_HOTPLUG, &hotplug)) {
++ from = X_DEFAULT;
++ hotplug = TRUE;
++ }
++
++ xf86DrvMsg(scrn->scrnIndex, from, "hotplug detection: \"%s\"\n",
++ hotplug ? "enabled" : "disabled");
++ if (!hotplug)
++ return;
++
++ u = udev_new();
++ if (!u)
++ return;
++
++ mon = udev_monitor_new_from_netlink(u, "udev");
++
++ if (!mon) {
++ udev_unref(u);
++ return;
++ }
++
++ if (udev_monitor_filter_add_match_subsystem_devtype(mon,
++ "drm",
++ "drm_minor") < 0 ||
++ udev_monitor_enable_receiving(mon) < 0)
++ {
++ udev_monitor_unref(mon);
++ udev_unref(u);
++ return;
++ }
++
++ intel->uevent_handler =
++ xf86AddGeneralHandler(udev_monitor_get_fd(mon),
++ I830HandleUEvents,
++ scrn);
++ if (!intel->uevent_handler) {
++ udev_monitor_unref(mon);
++ udev_unref(u);
++ return;
++ }
++
++ intel->uevent_monitor = mon;
+ }
+
+ static void
+ I830UeventFini(ScrnInfoPtr scrn)
+ {
+- intel_screen_private *intel = intel_get_screen_private(scrn);
++ intel_screen_private *intel = intel_get_screen_private(scrn);
+
+- if (intel->uevent_handler)
+- {
+- struct udev *u = udev_monitor_get_udev(intel->uevent_monitor);
++ if (intel->uevent_handler) {
++ struct udev *u = udev_monitor_get_udev(intel->uevent_monitor);
+
+- xf86RemoveGeneralHandler(intel->uevent_handler);
++ xf86RemoveGeneralHandler(intel->uevent_handler);
+
+- udev_monitor_unref(intel->uevent_monitor);
+- udev_unref(u);
+- intel->uevent_handler = NULL;
+- intel->uevent_monitor = NULL;
+- }
++ udev_monitor_unref(intel->uevent_monitor);
++ udev_unref(u);
++ intel->uevent_handler = NULL;
++ intel->uevent_monitor = NULL;
++ }
+ }
+ #endif /* HAVE_UDEV */
+
+@@ -961,32 +878,6 @@ I830ScreenInit(int scrnIndex, ScreenPtr screen, int argc, char **argv)
+ struct pci_device *const device = intel->PciInfo;
+ int fb_bar = IS_GEN2(intel) ? 0 : 2;
+
+- /*
+- * The "VideoRam" config file parameter specifies the maximum amount of
+- * memory that will be used/allocated. When not present, we allow the
+- * driver to allocate as much memory as it wishes to satisfy its
+- * allocations, but if agpgart support isn't available, it gets limited
+- * to the amount of pre-allocated ("stolen") memory.
+- *
+- * Note that in using this value for allocator initialization, we're
+- * limiting aperture allocation to the VideoRam option, rather than limiting
+- * actual memory allocation, so alignment and things will cause less than
+- * VideoRam to be actually used.
+- */
+- scrn->videoRam = intel->FbMapSize / KB(1);
+- if (intel->pEnt->device->videoRam != 0) {
+- if (scrn->videoRam != intel->pEnt->device->videoRam) {
+- xf86DrvMsg(scrn->scrnIndex, X_WARNING,
+- "VideoRam configuration found, which is no "
+- "longer used.\n");
+- xf86DrvMsg(scrn->scrnIndex, X_INFO,
+- "Continuing with (ignored) %dkB VideoRam "
+- "instead of %d kB.\n",
+- scrn->videoRam,
+- intel->pEnt->device->videoRam);
+- }
+- }
+-
+ scrn->videoRam = device->regions[fb_bar].size / 1024;
+
+ intel->last_3d = LAST_3D_OTHER;
+@@ -998,10 +889,6 @@ I830ScreenInit(int scrnIndex, ScreenPtr screen, int argc, char **argv)
+ */
+ intel->XvEnabled = TRUE;
+
+- xf86DrvMsg(scrn->scrnIndex,
+- intel->pEnt->device->videoRam ? X_CONFIG : X_DEFAULT,
+- "VideoRam: %d KB\n", scrn->videoRam);
+-
+ #ifdef DRI2
+ if (intel->directRenderingType == DRI_NONE
+ && I830DRI2ScreenInit(screen))
+@@ -1011,8 +898,6 @@ I830ScreenInit(int scrnIndex, ScreenPtr screen, int argc, char **argv)
+ if (!intel_init_initial_framebuffer(scrn))
+ return FALSE;
+
+- intel_fixup_mtrrs(scrn);
+-
+ intel_batch_init(scrn);
+
+ if (INTEL_INFO(intel)->gen >= 40)
+@@ -1159,7 +1044,7 @@ I830ScreenInit(int scrnIndex, ScreenPtr screen, int argc, char **argv)
+ I830UeventInit(scrn);
+ #endif
+
+- return uxa_resources_init(screen);
++ return TRUE;
+ }
+
+ static void i830AdjustFrame(int scrnIndex, int x, int y, int flags)
+@@ -1382,22 +1267,6 @@ static Bool I830PMEvent(int scrnIndex, pmEvent event, Bool undo)
+ return TRUE;
+ }
+
+-xf86CrtcPtr intel_pipe_to_crtc(ScrnInfoPtr scrn, int pipe)
+-{
+- xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
+- int c;
+-
+- for (c = 0; c < config->num_crtc; c++) {
+- xf86CrtcPtr crtc = config->crtc[c];
+- I830CrtcPrivatePtr intel_crtc = crtc->driver_private;
+-
+- if (intel_crtc->pipe == pipe)
+- return crtc;
+- }
+-
+- return NULL;
+-}
+-
+ void intel_init_scrn(ScrnInfoPtr scrn)
+ {
+ scrn->PreInit = I830PreInit;
+diff --git a/src/intel_uxa.c b/src/intel_uxa.c
+index 1a591f1..9341b91 100644
+--- a/src/intel_uxa.c
++++ b/src/intel_uxa.c
+@@ -1089,12 +1089,15 @@ static Bool intel_uxa_destroy_pixmap(PixmapPtr pixmap)
+ return TRUE;
+ }
+
+-void intel_uxa_create_screen_resources(ScreenPtr screen)
++Bool intel_uxa_create_screen_resources(ScreenPtr screen)
+ {
+ ScrnInfoPtr scrn = xf86Screens[screen->myNum];
+ intel_screen_private *intel = intel_get_screen_private(scrn);
+ dri_bo *bo = intel->front_buffer;
+
++ if (!uxa_resources_init(screen))
++ return FALSE;
++
+ drm_intel_gem_bo_map_gtt(bo);
+
+ if (intel->use_shadow) {
+@@ -1111,6 +1114,8 @@ void intel_uxa_create_screen_resources(ScreenPtr screen)
+ NULL);
+ scrn->displayWidth = intel->front_pitch / intel->cpp;
+ }
++
++ return TRUE;
+ }
+
+ static void
+@@ -1185,7 +1190,6 @@ Bool intel_uxa_init(ScreenPtr screen)
+
+ memset(intel->uxa_driver, 0, sizeof(*intel->uxa_driver));
+
+- intel->bufferOffset = 0;
+ intel->uxa_driver->uxa_major = 1;
+ intel->uxa_driver->uxa_minor = 0;
+
+diff --git a/src/intel_video.c b/src/intel_video.c
+index 2786201..5294f73 100644
+--- a/src/intel_video.c
++++ b/src/intel_video.c
+@@ -996,7 +996,7 @@ I830CopyPlanarData(intel_adaptor_private *adaptor_priv,
+ /* Copy V data for YV12, or U data for I420 */
+ src2 = buf + /* start of YUV data */
+ (srcH * srcPitch) + /* move over Luma plane */
+- ((top * srcPitch) >> 2) + /* move down from by top lines */
++ ((top >> 1) * srcPitch2) + /* move down from by top lines */
+ (left >> 1); /* move left by left pixels */
+
+ #if 0
+@@ -1015,7 +1015,7 @@ I830CopyPlanarData(intel_adaptor_private *adaptor_priv,
+ src3 = buf + /* start of YUV data */
+ (srcH * srcPitch) + /* move over Luma plane */
+ ((srcH >> 1) * srcPitch2) + /* move over Chroma plane */
+- ((top * srcPitch) >> 2) + /* move down from by top lines */
++ ((top >> 1) * srcPitch2) + /* move down from by top lines */
+ (left >> 1); /* move left by left pixels */
+ #if 0
+ ErrorF("src3 is %p, offset is %ld\n", src3,
+diff --git a/src/xvmc/i915_xvmc.c b/src/xvmc/i915_xvmc.c
+index 21a1149..fbd4555 100644
+--- a/src/xvmc/i915_xvmc.c
++++ b/src/xvmc/i915_xvmc.c
+@@ -391,7 +391,6 @@ static void i915_mc_static_indirect_state_set(XvMCContext * context,
+ i915XvMCContext *pI915XvMC = (i915XvMCContext *) context->privData;
+ struct intel_xvmc_surface *intel_surf = dest->privData;
+ struct i915_mc_static_indirect_state_buffer *buffer_info;
+- unsigned int w = dest->width;
+
+ drm_intel_gem_bo_map_gtt(pI915XvMC->sis_bo);
+ buffer_info = pI915XvMC->sis_bo->virtual;
+@@ -688,7 +687,7 @@ static void i915_mc_load_indirect_render_emit(XvMCContext * context)
+ {
+ i915XvMCContext *pI915XvMC = (i915XvMCContext *) context->privData;
+ int mem_select;
+- uint32_t load_indirect, buffer_address;
++ uint32_t load_indirect;
+ BATCH_LOCALS;
+
+ BEGIN_BATCH(5);
+diff --git a/src/xvmc/intel_batchbuffer.c b/src/xvmc/intel_batchbuffer.c
+index 337b2ce..2b5526c 100644
+--- a/src/xvmc/intel_batchbuffer.c
++++ b/src/xvmc/intel_batchbuffer.c
+@@ -64,8 +64,6 @@ static void i965_end_batch(void)
+
+ Bool intelInitBatchBuffer(void)
+ {
+- int i;
+-
+ if ((xvmc_driver->batch.buf =
+ drm_intel_bo_alloc(xvmc_driver->bufmgr,
+ "batch buffer", BATCH_SIZE, 0x1000)) == NULL) {
+diff --git a/src/xvmc/intel_batchbuffer.h b/src/xvmc/intel_batchbuffer.h
+index 6fa1c05..888abeb 100644
+--- a/src/xvmc/intel_batchbuffer.h
++++ b/src/xvmc/intel_batchbuffer.h
+@@ -24,7 +24,7 @@ extern int VERBOSE;
+
+ #define OUT_RELOC(bo,read_domains,write_domains,delta) \
+ do { \
+- *(unsigned int *)batch_ptr = delta + bo->offset; \
++ *(unsigned int *)batch_ptr = (delta) + bo->offset; \
+ intel_batch_emit_reloc(bo, read_domains, write_domains, delta, batch_ptr); \
+ batch_ptr += 4; \
+ } while (0)
+diff --git a/src/xvmc/intel_xvmc.c b/src/xvmc/intel_xvmc.c
+index 6cbec80..1b96945 100644
+--- a/src/xvmc/intel_xvmc.c
++++ b/src/xvmc/intel_xvmc.c
+@@ -105,8 +105,6 @@ unsigned int mb_bytes_420[] = {
+
+ void LOCK_HARDWARE(drm_context_t ctx)
+ {
+- char __ret = 0;
+-
+ PPTHREAD_MUTEX_LOCK();
+ assert(!xvmc_driver->locked);
+
+@@ -218,11 +216,6 @@ _X_EXPORT Status XvMCCreateContext(Display * display, XvPortID port,
+ int error_base;
+ int event_base;
+ int priv_count;
+- int isCapable;
+- int screen = DefaultScreen(display);
+- intel_xvmc_context_ptr intel_ctx;
+- int fd;
+- char *driverName = NULL, *deviceName = NULL;
+
+ /* Verify Obvious things first */
+ if (!display || !context)
+@@ -482,7 +475,6 @@ _X_EXPORT Status XvMCCreateBlocks(Display * display, XvMCContext * context,
+ unsigned int num_blocks,
+ XvMCBlockArray * block)
+ {
+- Status ret;
+ if (!display || !context || !num_blocks || !block)
+ return BadValue;
+
+@@ -505,7 +497,6 @@ _X_EXPORT Status XvMCCreateBlocks(Display * display, XvMCContext * context,
+ */
+ _X_EXPORT Status XvMCDestroyBlocks(Display * display, XvMCBlockArray * block)
+ {
+- Status ret;
+ if (!display || !block)
+ return BadValue;
+
+@@ -678,13 +669,10 @@ _X_EXPORT Status XvMCPutSurface(Display * display, XvMCSurface * surface,
+ */
+ _X_EXPORT Status XvMCSyncSurface(Display * display, XvMCSurface * surface)
+ {
+- Status ret;
+- int stat = 0;
+-
+ if (!display || !surface)
+ return XvMCBadSurface;
+
+- return ret;
++ return Success;
+ }
+
+ /*
+@@ -739,9 +727,6 @@ _X_EXPORT Status XvMCGetSurfaceStatus(Display * display, XvMCSurface * surface,
+ */
+ _X_EXPORT Status XvMCHideSurface(Display * display, XvMCSurface * surface)
+ {
+- int stat = 0;
+- Status ret;
+-
+ if (!display || !surface)
+ return XvMCBadSurface;
+
+@@ -1071,7 +1056,7 @@ _X_EXPORT Status XvMCLoadQMatrix(Display * display, XvMCContext * context,
+ _X_EXPORT Status XvMCPutSlice(Display * display, XvMCContext * context,
+ char *slice, int nbytes)
+ {
+- if (xvmc_driver->put_slice(display, context, slice, nbytes)) {
++ if (xvmc_driver->put_slice(display, context, (unsigned char *) slice, nbytes)) {
+ XVMC_ERR("PutSlice fail\n");
+ return BadValue;
+ }
+@@ -1082,7 +1067,7 @@ _X_EXPORT Status XvMCPutSlice2(Display * display, XvMCContext * context,
+ char *slice, int nbytes, int slice_code)
+ {
+ if (xvmc_driver->put_slice2
+- (display, context, slice, nbytes, slice_code)) {
++ (display, context, (unsigned char *) slice, nbytes, slice_code)) {
+ XVMC_ERR("PutSlice2 fail\n");
+ return BadValue;
+ }
+diff --git a/src/xvmc/intel_xvmc_dump.c b/src/xvmc/intel_xvmc_dump.c
+index 974bcbb..d22d311 100644
+--- a/src/xvmc/intel_xvmc_dump.c
++++ b/src/xvmc/intel_xvmc_dump.c
+@@ -38,7 +38,7 @@ void intel_xvmc_dump_open(void)
+ if (xvmc_dump)
+ return;
+
+- if (d = getenv("INTEL_XVMC_DUMP"))
++ if ((d = getenv("INTEL_XVMC_DUMP")))
+ xvmc_dump = 1;
+
+ if (xvmc_dump) {
+diff --git a/src/xvmc/xvmc_vld.c b/src/xvmc/xvmc_vld.c
+index addc7c9..d72e105 100644
+--- a/src/xvmc/xvmc_vld.c
++++ b/src/xvmc/xvmc_vld.c
+@@ -785,7 +785,6 @@ static Status begin_surface(Display * display, XvMCContext * context,
+ XvMCSurface * future,
+ const XvMCMpegControl * control)
+ {
+- struct i965_xvmc_contex *i965_ctx;
+ struct intel_xvmc_surface *priv_target, *priv_past, *priv_future;
+ intel_xvmc_context_ptr intel_ctx = context->privData;
+ Status ret;
+diff --git a/uxa/uxa-accel.c b/uxa/uxa-accel.c
+index a5066c8..0650ac2 100644
+--- a/uxa/uxa-accel.c
++++ b/uxa/uxa-accel.c
+@@ -120,6 +120,10 @@ uxa_fill_spans(DrawablePtr pDrawable, GCPtr pGC, int n,
+
+ solid = uxa_acquire_solid(screen, src->pSourcePict);
+ FreePicture(src, 0);
++ if (!solid) {
++ FreePicture(dst, 0);
++ goto solid;
++ }
+
+ src = solid;
+ src_pixmap = uxa_get_offscreen_pixmap(src->pDrawable,
+@@ -1110,6 +1114,10 @@ try_solid:
+
+ solid = uxa_acquire_solid(screen, src->pSourcePict);
+ FreePicture(src, 0);
++ if (!solid) {
++ FreePicture(dst, 0);
++ goto err;
++ }
+
+ src = solid;
+ src_pixmap = uxa_get_offscreen_pixmap(src->pDrawable,
+diff --git a/uxa/uxa-glyphs.c b/uxa/uxa-glyphs.c
+index 420e891..0f5ddda 100644
+--- a/uxa/uxa-glyphs.c
++++ b/uxa/uxa-glyphs.c
+@@ -111,6 +111,9 @@ static void uxa_unrealize_glyph_caches(ScreenPtr pScreen)
+ uxa_screen_t *uxa_screen = uxa_get_screen(pScreen);
+ int i;
+
++ if (!uxa_screen->glyph_cache_initialized)
++ return;
++
+ for (i = 0; i < UXA_NUM_GLYPH_CACHE_FORMATS; i++) {
+ uxa_glyph_cache_t *cache = &uxa_screen->glyphCaches[i];
+
+@@ -120,6 +123,7 @@ static void uxa_unrealize_glyph_caches(ScreenPtr pScreen)
+ if (cache->glyphs)
+ free(cache->glyphs);
+ }
++ uxa_screen->glyph_cache_initialized = FALSE;
+ }
+
+ void uxa_glyphs_fini(ScreenPtr pScreen)
+@@ -145,6 +149,10 @@ static Bool uxa_realize_glyph_caches(ScreenPtr pScreen)
+ };
+ int i;
+
++ if (uxa_screen->glyph_cache_initialized)
++ return TRUE;
++
++ uxa_screen->glyph_cache_initialized = TRUE;
+ memset(uxa_screen->glyphCaches, 0, sizeof(uxa_screen->glyphCaches));
+
+ for (i = 0; i < sizeof(formats)/sizeof(formats[0]); i++) {
+@@ -214,17 +222,7 @@ Bool uxa_glyphs_init(ScreenPtr pScreen)
+ if (uxa_get_screen(pScreen)->force_fallback)
+ return TRUE;
+
+- /* We are trying to initialise per screen resources prior to the
+- * complete initialisation of the screen. So ensure the components
+- * that we depend upon are initialsed prior to our use.
+- */
+- if (!CreateScratchPixmapsForScreen(pScreen->myNum))
+- return FALSE;
+-
+- if (!uxa_realize_glyph_caches(pScreen))
+- return FALSE;
+-
+- return TRUE;
++ return uxa_realize_glyph_caches(pScreen);
+ }
+
+ /* The most efficient thing to way to upload the glyph to the screen
+diff --git a/uxa/uxa-priv.h b/uxa/uxa-priv.h
+index 92536cc..ac206af 100644
+--- a/uxa/uxa-priv.h
++++ b/uxa/uxa-priv.h
+@@ -139,6 +139,7 @@ typedef struct {
+ unsigned offScreenCounter;
+
+ uxa_glyph_cache_t glyphCaches[UXA_NUM_GLYPH_CACHE_FORMATS];
++ Bool glyph_cache_initialized;
+
+ PicturePtr solid_clear, solid_black, solid_white;
+ uxa_solid_cache_t solid_cache[UXA_NUM_SOLID_CACHE];
+diff --git a/uxa/uxa-render.c b/uxa/uxa-render.c
+index cf8b8ea..0f06e82 100644
+--- a/uxa/uxa-render.c
++++ b/uxa/uxa-render.c
+@@ -1061,6 +1061,8 @@ try_solid:
+ int src_off_x, src_off_y;
+
+ solid = uxa_acquire_solid(screen, src->pSourcePict);
++ if (!solid)
++ goto err_src;
+ FreePicture(src, 0);
+
+ src = solid;
+@@ -1090,6 +1092,7 @@ try_solid:
+ /* XXX xserver-1.8: CompositeRects is not tracked by Damage, so we must
+ * manually append the damaged regions ourselves.
+ */
++ pixman_region_translate(&region, -dst_x, -dst_y);
+ DamageRegionAppend(dst->pDrawable, &region);
+
+ pixman_region_fini(&region);
diff --git a/extra/xf86-video-mach64/PKGBUILD b/extra/xf86-video-mach64/PKGBUILD
new file mode 100644
index 000000000..dd080c051
--- /dev/null
+++ b/extra/xf86-video-mach64/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 114315 2011-03-12 11:46:25Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xf86-video-mach64
+pkgver=6.8.2
+pkgrel=5
+pkgdesc="X.org mach64 video driver"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('glibc' 'mach64-dri')
+makedepends=('xorg-server-devel' 'libdrm' 'xf86driproto' 'mesa')
+conflicts=('xorg-server<1.9.0')
+groups=('xorg-drivers' 'xorg')
+options=('!libtool')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('b7303689a6a971b956061fd81399dc81adb865af')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --enable-dri
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xf86-video-mga/PKGBUILD b/extra/xf86-video-mga/PKGBUILD
new file mode 100644
index 000000000..b1071580d
--- /dev/null
+++ b/extra/xf86-video-mga/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 114478 2011-03-14 08:08:36Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xf86-video-mga
+pkgver=1.4.13
+pkgrel=2
+pkgdesc="X.org mga video driver"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('glibc' 'mga-dri')
+makedepends=('xorg-server-devel' 'libdrm' 'xf86driproto' 'mesa')
+conflicts=('xorg-server<1.9.0')
+options=('!libtool' 'force')
+groups=('xorg-drivers' 'xorg')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('55aa185cf381def4b5905c8b93694b8dfbd5c378')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --enable-dri
+ make
+ make DESTDIR="${pkgdir}" install
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xf86-video-neomagic/PKGBUILD b/extra/xf86-video-neomagic/PKGBUILD
new file mode 100644
index 000000000..7fd08c4f6
--- /dev/null
+++ b/extra/xf86-video-neomagic/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 114484 2011-03-14 08:31:26Z jgc $
+#Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xf86-video-neomagic
+pkgver=1.2.5
+pkgrel=3
+pkgdesc="X.org neomagic video driver"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('glibc')
+makedepends=('xorg-server-devel' 'xf86dgaproto')
+conflicts=('xorg-server<1.9.0')
+groups=('xorg-drivers' 'xorg')
+options=('!libtool')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('02c994e2eae191b50a8cd556e5b52d82725073b3')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -d -m755 "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xf86-video-nouveau/PKGBUILD b/extra/xf86-video-nouveau/PKGBUILD
new file mode 100644
index 000000000..b95ed544e
--- /dev/null
+++ b/extra/xf86-video-nouveau/PKGBUILD
@@ -0,0 +1,41 @@
+# $Id: PKGBUILD 103309 2010-12-17 19:20:15Z andyrtr $
+# Maintainer: Andreas Radke <andyrtr@archlinux.org>
+# Contributor: buddabrod <buddabrod@gmail.com>
+
+pkgname=xf86-video-nouveau
+_gitdate=20101217
+pkgver=0.0.16_git${_gitdate} # see configure.ac
+pkgrel=1
+pkgdesc="Open Source 3D acceleration driver for nVidia cards (experimental)"
+arch=('i686' 'x86_64')
+url="http://nouveau.freedesktop.org/wiki/"
+license=('GPL') #and MIT, not yet a license file, see http://nouveau.freedesktop.org/wiki/FAQ#head-09f75d03eb30011c754038a3893119a70745de4e
+depends=('libdrm' 'udev')
+optdepends=('nouveau-dri: experimental gallium3d features')
+makedepends=('xorg-server-devel' 'libdrm>=2.4.23' 'xf86driproto')
+conflicts=('xorg-server<1.9.0')
+options=('!libtool' 'force')
+install=${pkgname}.install
+source=(ftp://ftp.archlinux.org/other/$pkgname/xf86-video-nouveau-${_gitdate}.tar.bz2)
+md5sums=('34b0238a941fe85ca45898dfcc47df0e')
+
+# source PKGBUILD && mksource
+mksource() {
+ mkdir /tmp/${pkgname}-${_gitdate}
+ pushd /tmp/${pkgname}-${_gitdate}
+ git clone -v --depth 1 git://anongit.freedesktop.org/nouveau/xf86-video-nouveau
+ cd xf86-video-nouveau
+ git archive --prefix=xf86-video-nouveau-${_gitdate}/ --format=tar HEAD | bzip2 > /tmp/${pkgname}-${_gitdate}/${pkgname}-${_gitdate}.tar.bz2
+ popd
+}
+
+build() {
+ cd ${srcdir}/xf86-video-nouveau-${_gitdate}
+ ./autogen.sh --prefix=/usr
+ make
+}
+
+package() {
+ cd ${srcdir}/xf86-video-nouveau-${_gitdate}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/xf86-video-nouveau/xf86-video-nouveau.install b/extra/xf86-video-nouveau/xf86-video-nouveau.install
new file mode 100644
index 000000000..027154ff3
--- /dev/null
+++ b/extra/xf86-video-nouveau/xf86-video-nouveau.install
@@ -0,0 +1,16 @@
+post_install () {
+ cat << _EOF
+ ==> make sure you use KernelModeSetting (KMS)
+ ==> see http://wiki.archlinux.org/index.php/Nouveau#KMS for more
+_EOF
+}
+
+post_upgrade() {
+ if [ "`vercmp $2 0.0.15_git20100117-1`" -lt 0 ]; then
+ cat << _EOF
+ ==> ATTENTION: Usermode support has been dropped
+ ==> make sure you use KernelModeSetting (KMS)
+ ==> see http://wiki.archlinux.org/index.php/Nouveau#KMS for more
+_EOF
+ fi
+}
diff --git a/extra/xf86-video-nv/PKGBUILD b/extra/xf86-video-nv/PKGBUILD
new file mode 100644
index 000000000..ad084362c
--- /dev/null
+++ b/extra/xf86-video-nv/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 114489 2011-03-14 08:33:45Z jgc $
+# Maintainer:Jan de Groot <jgc@archlinux.org>
+
+pkgname=xf86-video-nv
+pkgver=2.1.18
+pkgrel=2
+pkgdesc="X.org nv video driver"
+arch=(i686 x86_64)
+license=('custom')
+url="http://xorg.freedesktop.org/"
+depends=('glibc')
+makedepends=('xorg-server-devel')
+conflicts=('xorg-server<1.9.0')
+options=('!libtool')
+groups=('xorg-drivers' 'xorg')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('d35b2fa5a26a507a9cc95b69243d9fd0c0f32aa2')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xf86-video-openchrome/LICENSE.txt b/extra/xf86-video-openchrome/LICENSE.txt
new file mode 100644
index 000000000..dff1dc37b
--- /dev/null
+++ b/extra/xf86-video-openchrome/LICENSE.txt
@@ -0,0 +1,26 @@
+/*
+ * Copyright 2005-2007 The Openchrome Project [openchrome.org]
+ * Copyright 2004-2006 Luc Verhaegen.
+ * Copyright 2004-2005 The Unichrome Project [unichrome.sf.net]
+ * Copyright 1998-2003 VIA Technologies, Inc. All Rights Reserved.
+ * Copyright 2001-2003 S3 Graphics, Inc. All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sub license,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial portions
+ * of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
diff --git a/extra/xf86-video-openchrome/PKGBUILD b/extra/xf86-video-openchrome/PKGBUILD
new file mode 100644
index 000000000..7d009a9b4
--- /dev/null
+++ b/extra/xf86-video-openchrome/PKGBUILD
@@ -0,0 +1,35 @@
+# $Id: PKGBUILD 88694 2010-08-24 13:35:43Z jgc $
+# Contributor: Paul Mattal <paul@mattal.com>
+# Maintainer: Juergen Hoetzel <juergen@hoetzel.info>
+
+pkgname=xf86-video-openchrome
+pkgver=0.2.904
+pkgrel=4
+pkgdesc="X.Org Openchrome drivers"
+arch=(i686 x86_64)
+license=('custom')
+url="http://www.openchrome.org"
+depends=('libdrm' 'libxvmc' 'unichrome-dri')
+makedepends=('xorg-server-devel' 'libdrm' 'xf86driproto' 'mesa' 'libxvmc')
+replaces=('openchrome' 'xf86-video-via')
+options=('!libtool' 'force' '!makeflags')
+conflicts=('xf86-video-via' 'xf86-video-unichrome' 'openchrome' 'xorg-server<1.9.0')
+source=(http://xorg.freedesktop.org/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2
+ drm_stdint.patch
+ svn-r839.patch
+ LICENSE.txt)
+md5sums=('f2481d98ef54febf5bffbb88a2a2426d'
+ 'bc516400ffc3df5d0dfe604f6245dd32'
+ '5aed4aa44dd5a6d3e2da9baad73ac0ab'
+ 'addb3cf2671f4cf7e91156952de1627f')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i "${srcdir}/svn-r839.patch"
+ patch -Np0 -i "${srcdir}/drm_stdint.patch"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 "${srcdir}/LICENSE.txt" "${pkgdir}/usr/share/licenses/${pkgname}/COPYING"
+}
diff --git a/extra/xf86-video-openchrome/drm_stdint.patch b/extra/xf86-video-openchrome/drm_stdint.patch
new file mode 100644
index 000000000..226a015e2
--- /dev/null
+++ b/extra/xf86-video-openchrome/drm_stdint.patch
@@ -0,0 +1,10 @@
+--- src/via_xvmc.h.orig 2010-03-07 01:46:34.000000000 +0100
++++ src/via_xvmc.h 2010-03-07 01:46:45.000000000 +0100
+@@ -26,6 +26,7 @@
+ #ifndef _VIA_XVMC_H
+ #define _VIA_XVMC_H 1
+
++#include <stdint.h>
+ #include "via_drm.h"
+
+ /*
diff --git a/extra/xf86-video-openchrome/svn-r839.patch b/extra/xf86-video-openchrome/svn-r839.patch
new file mode 100644
index 000000000..8e5f05669
--- /dev/null
+++ b/extra/xf86-video-openchrome/svn-r839.patch
@@ -0,0 +1,1447 @@
+diff -ruN xf86-video-openchrome-0.2.904/ChangeLog ../openchrome/xf86-video-openchrome-0.2.904/ChangeLog
+--- xf86-video-openchrome-0.2.904/ChangeLog 2009-10-03 22:48:55.000000000 +0200
++++ ../openchrome/xf86-video-openchrome-0.2.904/ChangeLog 2010-03-07 01:09:00.000000000 +0100
+@@ -1,3 +1,52 @@
++2010-02-10 Bartosz Kosiorek <gang65@poczta.onet.pl>
++
++ Fix bug with suspend and VT switch on VX800 and 64bit systems
++
++ * src/via_driver.h:
++ * src/via_video.c: (viaResetVideo), (viaSaveVideo),
++ (viaRestoreVideo), (viaExitVideo):
++ * src/via_video.h:
++
++2010-01-24 Bartosz Kosiorek <gang65@poczta.onet.pl>
++
++ Fix starting address restore and save (initial 64-bit support)
++
++ * src/via_crtc.c: (ViaFirstCRTCSetMode),
++ (ViaFirstCRTCSetStartingAddress):
++ * src/via_dri.c: (VIADRIAgpInit):
++ * src/via_driver.c: (VIASave), (VIARestore):
++ * src/via_driver.h:
++
++2009-12-04 Bartosz Kosiorek <gang65@poczta.onet.pl>
++
++ Enable new mode switch for VM800 chipsets
++
++ * src/via_driver.c: (VIASetupDefaultOptions):
++
++2009-11-21 Bartosz Kosiorek <gang65@poczta.onet.pl>
++
++ Add option to enable unaccelerated RandR rotation ("SWRandR").
++ The accelerated option "HWRandR" is currently not implemented.
++
++ * src/openchrome.man:
++ * src/via_driver.c: (VIAPreInit):
++
++2009-11-20 Bartosz Kosiorek <gang65@poczta.onet.pl>
++
++ Enabled new mode switch for PM800 chipset,
++ to resolve many bugs with resolution detecting and changing
++ (eg. switching to console)
++
++ * src/via_driver.c: (VIASetupDefaultOptions), (VIAPreInit):
++
++2009-11-07 Bartosz Kosiorek <gang65@poczta.onet.pl>
++
++ Add more comments to ViaSetSecondaryFIFO, add panel scale support for
++ CLE266 and KM400, fix bug with malloc.
++
++ * src/via_bandwidth.c: (ViaSetSecondaryFIFO):
++ * src/via_panel.c: (ViaPanelScale), (ViaPanelGetNativeDisplayMode):
++
+ 2009-09-26 Bartosz Kosiorek <gang65@poczta.onet.pl>
+
+ Save/restore ECK Clock Synthesizer
+diff -ruN xf86-video-openchrome-0.2.904/man/openchrome.man ../openchrome/xf86-video-openchrome-0.2.904/man/openchrome.man
+--- xf86-video-openchrome-0.2.904/man/openchrome.man 2009-10-09 01:12:41.000000000 +0200
++++ ../openchrome/xf86-video-openchrome-0.2.904/man/openchrome.man 2010-03-07 01:09:00.000000000 +0100
+@@ -59,7 +59,7 @@
+ .BI "Option \*qAccelMethod\*q \*q" string \*q
+ The driver supports "XAA" and "EXA" acceleration methods. The default
+ method is XAA, since EXA is still experimental. Contrary to XAA, EXA
+-implements acceleration for screen uploads and downlads (if DRI is
++implements acceleration for screen uploads and downloads (if DRI is
+ enabled) and for the Render/Composite extension.
+ .TP
+ .BI "Option \*qActiveDevice\*q \*q" string \*q
+@@ -81,7 +81,7 @@
+ no room for DRI textures, they will be allocated from the DRI part of
+ VRAM (see the option "MaxDRIMem"). The default amount of AGP is
+ 32768 kB. Note that the AGP aperture set in the BIOS must be able
+-to accomodate the amount of AGP memory specified here. Otherwise no
++to accommodate the amount of AGP memory specified here. Otherwise no
+ AGP memory will be available. It is safe to set a very large AGP
+ aperture in the BIOS.
+ .TP
+@@ -159,9 +159,16 @@
+ system. The sizes 640x480, 800x600, 1024x768, 1280x1024, and 1400x1050
+ are supported.
+ .TP
++.BI "Option \*qRotationType\*q \*q" string \*q
++Enabled rotation by using RandR. The driver only support unaccelerated
++RandR rotations "SWRandR". Hardware rotations "HWRandR" is currently
++unimplemented.
++.TP
+ .BI "Option \*qRotate\*q \*q" string \*q
+ Rotates the display either clockwise ("CW"), counterclockwise ("CCW") and
+-upside-down ("UD"). Rotation is only supported unaccelerated.
++upside-down ("UD"). Rotation is only supported unaccelerated. Adding
++option "Rotate", enables RandR rotation feature. The RandR allows
++clients to dynamically change X screens.
+ .TP
+ .BI "Option \*qShadowFB\*q \*q" boolean \*q
+ Enables the use of a shadow frame buffer. This is required when
+diff -ruN xf86-video-openchrome-0.2.904/src/svnversion.h ../openchrome/xf86-video-openchrome-0.2.904/src/svnversion.h
+--- xf86-video-openchrome-0.2.904/src/svnversion.h 2009-10-09 01:19:04.000000000 +0200
++++ ../openchrome/xf86-video-openchrome-0.2.904/src/svnversion.h 2010-03-07 01:09:15.000000000 +0100
+@@ -1 +1 @@
+-#define BUILDCOMMENT "(openchrome 0.2.904 release)"
++#define BUILDCOMMENT "(development build, at svn revision 839)"
+diff -ruN xf86-video-openchrome-0.2.904/src/via_accel.c ../openchrome/xf86-video-openchrome-0.2.904/src/via_accel.c
+--- xf86-video-openchrome-0.2.904/src/via_accel.c 2009-10-03 22:48:55.000000000 +0200
++++ ../openchrome/xf86-video-openchrome-0.2.904/src/via_accel.c 2010-03-07 01:09:00.000000000 +0100
+@@ -1210,7 +1210,8 @@
+
+ /* General acceleration flags. */
+ xaaptr->Flags = (PIXMAP_CACHE |
+- OFFSCREEN_PIXMAPS | LINEAR_FRAMEBUFFER |
++ OFFSCREEN_PIXMAPS |
++ LINEAR_FRAMEBUFFER |
+ MICROSOFT_ZERO_LINE_BIAS | 0);
+
+ if (pScrn->bitsPerPixel == 8)
+@@ -1228,14 +1229,17 @@
+
+ xaaptr->Sync = viaAccelSync;
+
++ /* ScreenToScreen copies */
+ xaaptr->SetupForScreenToScreenCopy = viaSetupForScreenToScreenCopy;
+ xaaptr->SubsequentScreenToScreenCopy = viaSubsequentScreenToScreenCopy;
+ xaaptr->ScreenToScreenCopyFlags = NO_PLANEMASK | ROP_NEEDS_SOURCE;
+
++ /* Solid filled rectangles */
+ xaaptr->SetupForSolidFill = viaSetupForSolidFill;
+ xaaptr->SubsequentSolidFillRect = viaSubsequentSolidFillRect;
+ xaaptr->SolidFillFlags = NO_PLANEMASK | ROP_NEEDS_SOURCE;
+
++ /* Mono 8x8 pattern fills */
+ xaaptr->SetupForMono8x8PatternFill = viaSetupForMono8x8PatternFill;
+ xaaptr->SubsequentMono8x8PatternFillRect =
+ viaSubsequentMono8x8PatternFillRect;
+@@ -1244,6 +1248,7 @@
+ HARDWARE_PATTERN_PROGRAMMED_ORIGIN |
+ BIT_ORDER_IN_BYTE_MSBFIRST | 0);
+
++ /* Color 8x8 pattern fills */
+ xaaptr->SetupForColor8x8PatternFill = viaSetupForColor8x8PatternFill;
+ xaaptr->SubsequentColor8x8PatternFillRect =
+ viaSubsequentColor8x8PatternFillRect;
+@@ -1252,12 +1257,14 @@
+ HARDWARE_PATTERN_PROGRAMMED_BITS |
+ HARDWARE_PATTERN_PROGRAMMED_ORIGIN | 0);
+
++ /* Solid lines */
+ xaaptr->SetupForSolidLine = viaSetupForSolidLine;
+ xaaptr->SubsequentSolidTwoPointLine = viaSubsequentSolidTwoPointLine;
+ xaaptr->SubsequentSolidHorVertLine = viaSubsequentSolidHorVertLine;
+ xaaptr->SolidBresenhamLineErrorTermBits = 14;
+ xaaptr->SolidLineFlags = NO_PLANEMASK | ROP_NEEDS_SOURCE;
+
++ /* Dashed line */
+ xaaptr->SetupForDashedLine = viaSetupForDashedLine;
+ xaaptr->SubsequentDashedTwoPointLine = viaSubsequentDashedTwoPointLine;
+ xaaptr->DashPatternMaxLength = 8;
+@@ -1266,35 +1273,42 @@
+ LINE_PATTERN_POWER_OF_2_ONLY |
+ LINE_PATTERN_MSBFIRST_LSBJUSTIFIED | 0);
+
++ /* CPU to Screen color expansion */
+ xaaptr->ScanlineCPUToScreenColorExpandFillFlags = NO_PLANEMASK |
+- CPU_TRANSFER_PAD_DWORD |
+- SCANLINE_PAD_DWORD |
+- BIT_ORDER_IN_BYTE_MSBFIRST |
+- LEFT_EDGE_CLIPPING | ROP_NEEDS_SOURCE | 0;
++ CPU_TRANSFER_PAD_DWORD |
++ SCANLINE_PAD_DWORD |
++ BIT_ORDER_IN_BYTE_MSBFIRST |
++ LEFT_EDGE_CLIPPING |
++ ROP_NEEDS_SOURCE | 0;
+
+ xaaptr->SetupForScanlineCPUToScreenColorExpandFill =
+ viaSetupForCPUToScreenColorExpandFill;
+ xaaptr->SubsequentScanlineCPUToScreenColorExpandFill =
+ viaSubsequentScanlineCPUToScreenColorExpandFill;
+ xaaptr->ColorExpandBase = pVia->BltBase;
+- xaaptr->ColorExpandRange = VIA_MMIO_BLTSIZE;
++ if (pVia->Chipset == VIA_VX800 || pVia->Chipset == VIA_VX855)
++ xaaptr->ColorExpandRange = VIA_MMIO_BLTSIZE;
++ else
++ xaaptr->ColorExpandRange = (64 * 1024);
+
++ /* ImageWrite */
+ xaaptr->ImageWriteFlags = (NO_PLANEMASK |
+ CPU_TRANSFER_PAD_DWORD |
+ SCANLINE_PAD_DWORD |
+ BIT_ORDER_IN_BYTE_MSBFIRST |
+- LEFT_EDGE_CLIPPING | ROP_NEEDS_SOURCE | 0);
++ LEFT_EDGE_CLIPPING |
++ ROP_NEEDS_SOURCE | 0);
+ // SYNC_AFTER_IMAGE_WRITE | 0);
+
+ /*
+ * Most Unichromes are much faster using processor-to-framebuffer writes
+ * than when using the 2D engine for this.
+- * test with x11perf -shmput500!
++ * test with "x11perf -shmput500"
++ * Example: K8M890 chipset; with GPU=86.3/sec; without GPU=132.0/sec
++ * TODO Check speed for other chipsets
+ */
+
+ switch (pVia->Chipset) {
+- case VIA_K8M800:
+- case VIA_K8M890:
+ case VIA_P4M900:
+ case VIA_VX800:
+ case VIA_VX855:
+diff -ruN xf86-video-openchrome-0.2.904/src/via_bandwidth.c ../openchrome/xf86-video-openchrome-0.2.904/src/via_bandwidth.c
+--- xf86-video-openchrome-0.2.904/src/via_bandwidth.c 2009-10-03 22:48:55.000000000 +0200
++++ ../openchrome/xf86-video-openchrome-0.2.904/src/via_bandwidth.c 2010-03-07 01:09:00.000000000 +0100
+@@ -194,6 +194,7 @@
+ else
+ ViaSeqMask(hwp, 0x22, 0x00, 0x1F); /* 128/4 = overflow = 0 */
+ break;
++ /* PM800/PM880/CN400 */
+ case VIA_PM800:
+ hwp->writeSeq(hwp, 0x17, 0x5F); /* 95 */
+ ViaSeqMask(hwp, 0x16, 0x20, 0xBF); /* 32 */
+@@ -204,9 +205,10 @@
+ else
+ ViaSeqMask(hwp, 0x22, 0x1F, 0x1F); /* 31 */
+ break;
++ /* P4M800Pro/VN800/CN700 */
+ case VIA_VM800:
+ hwp->writeSeq(hwp, 0x17, 0x2F);
+- ViaSeqMask(hwp, 0x16, 0x14, 0xBF);
++ ViaSeqMask(hwp, 0x16, 0x14, 0xBF); /* 80/4 = 20 = 0x14 */
+ ViaSeqMask(hwp, 0x18, 0x08, 0xBF);
+
+ if ((mode->HDisplay >= 1400) && (pScrn->bitsPerPixel == 32))
+@@ -215,40 +217,51 @@
+ ViaSeqMask(hwp, 0x22, 0x00, 0x1F);
+ break;
+ case VIA_K8M890:
+- hwp->writeSeq(hwp, 0x16, 0x92);
+- hwp->writeSeq(hwp, 0x17, 0xB3);
+- hwp->writeSeq(hwp, 0x18, 0x8A);
++ /* depth location: {SR17,0,7} */
++ hwp->writeSeq(hwp, 0x17, 0xB3); /* 360/2-1 = 179 = 0xB3 */
++ /* Formula (x & 0x3F) | ((x & 0x40) << 1) */
++ /* threshold location: {SR16,0,5},{SR16,7,7} */
++ ViaSeqMask(hwp, 0x16, 0x92, 0xBF); /* 328/4 = 82 = 0x52 */
++ /* high threshold location: {SR18,0,5},{SR18,7,7} */
++ ViaSeqMask(hwp, 0x18, 0x8A, 0xBF); /* 296/4 = 74 = 0x4A */
++ /* display queue expire num location: {SR22,0,4}. */
++ ViaSeqMask(hwp, 0x22, 0x1F, 0x1F); /* 124/4 = 31 = 0x1F */
+ break;
+ case VIA_P4M900:
+- ViaSeqMask(hwp, 0x17, 0x2F, 0xFF);
+- ViaSeqMask(hwp, 0x16, 0x13, 0x3F);
+- ViaSeqMask(hwp, 0x16, 0x00, 0x80);
+- ViaSeqMask(hwp, 0x18, 0x13, 0x3F);
+- ViaSeqMask(hwp, 0x18, 0x00, 0x80);
++ /* location: {SR17,0,7} */
++ hwp->writeSeq(hwp, 0x17, 0x2F); /* 96/2-1 = 47 = 0x2F */
++ /* location: {SR16,0,5},{SR16,7,7} */
++ ViaSeqMask(hwp, 0x16, 0x13, 0xBF); /* 76/4 = 19 = 0x13 */
++ /* location: {SR18,0,5},{SR18,7,7} */
++ ViaSeqMask(hwp, 0x18, 0x13, 0xBF); /* 76/4 = 19 = 0x13 */
++ /* location: {SR22,0,4}. */
++ ViaSeqMask(hwp, 0x22, 0x08, 0x1F); /* 32/4 = 8 = 0x08 */
+ break;
+ case VIA_P4M890:
+- hwp->writeSeq(hwp, 0x16, 0x13);
+- hwp->writeSeq(hwp, 0x17, 0x2F);
+- hwp->writeSeq(hwp, 0x18, 0x53);
+- hwp->writeSeq(hwp, 0x22, 0x10);
++ hwp->writeSeq(hwp, 0x17, 0x2F); /* 96/2-1 = 47 = 0x2F */
++ ViaSeqMask(hwp, 0x16, 0x13, 0xBF); /* 76/4 = 19 = 0x13 */
++ ViaSeqMask(hwp, 0x18, 0x10, 0xBF); /* 64/4 = 16 = 0x10 */
++ ViaSeqMask(hwp, 0x22, 0x08, 0x1F); /* 32/4 = 8 = 0x08 */
+ break;
+ case VIA_CX700:
+- hwp->writeSeq(hwp, 0x16, 0x26);
+ hwp->writeSeq(hwp, 0x17, 0x5F);
+- hwp->writeSeq(hwp, 0x18, 0x66);
+- hwp->writeSeq(hwp, 0x22, 0x1F);
++ ViaSeqMask(hwp, 0x16, 0x20, 0xBF); /* 128/4 = 32 = 0x20 */
++ ViaSeqMask(hwp, 0x18, 0x20, 0xBF); /* 128/4 = 32 = 0x20 */
++ ViaSeqMask(hwp, 0x22, 0x1F, 0x1F); /* 124/4 = 31 = 0x1F */
+ break;
+ case VIA_VX800:
+- hwp->writeSeq(hwp, 0x16, 0x26); /* 152/4 = 38 */
+- hwp->writeSeq(hwp, 0x17, 0x5F); /* 192/2-1 = 95 */
++ hwp->writeSeq(hwp, 0x17, 0x5F); /* 192/2-1 = 95 = 0x5F */
++ hwp->writeSeq(hwp, 0x16, 0x26); /* 152/4 = 38 = 0x26 */
+ hwp->writeSeq(hwp, 0x18, 0x26); /* 152/4 = 38 */
+ hwp->writeSeq(hwp, 0x22, 0x10); /* 64/4 = 16 */
+ break;
+ case VIA_VX855:
+- hwp->writeSeq(hwp, 0x16, 0x50); /* 320/4 = 80 */
+- hwp->writeSeq(hwp, 0x17, 0xC7); /* 400/2-1 = 199 */
+- hwp->writeSeq(hwp, 0x18, 0x50); /* 320/4 = 80 */
+- hwp->writeSeq(hwp, 0x22, 0x28); /* 160/4 = 40 */
++ hwp->writeSeq(hwp, 0x17, 0xC7); /* 400/2-1 = 199 = 0xC7 */
++ /* TODO Formula for SR16 is: (0x50 & 0x3F) | ((0x50 & 0x40) << 1) = 0x90 */
++ hwp->writeSeq(hwp, 0x16, 0x50); /* 320/4 = 80 = 0x50 */
++ hwp->writeSeq(hwp, 0x18, 0x50); /* 320/4 = 80 = 0x50 */
++ hwp->writeSeq(hwp, 0x22, 0x28); /* 160/4 = 40 = 0x28 */
++ break;
+ default:
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "ViaSetPrimaryFIFO: "
+ "Chipset %d not implemented\n", pVia->Chipset);
+@@ -371,7 +384,38 @@
+ ViaCrtcMask(hwp, 0x94, 0x20, 0x7F);
+ break;
+ case VIA_P4M890:
++ /* depth location: {CR68,4,7},{CR94,7,7},{CR95,7,7} */
++ ViaCrtcMask(hwp, 0x68, 0xB0, 0xF0); /* 96/8-1 = 11 = 0x0B */
++ ViaCrtcMask(hwp, 0x94, 0x00, 0x80);
++ ViaCrtcMask(hwp, 0x95, 0x00, 0x80);
++
++ /* location: {CR68,0,3},{CR95,4,6} */
++ ViaCrtcMask(hwp, 0x68, 0x03, 0x0F); /* 76/4 = 19 = 0x13 */
++ ViaCrtcMask(hwp, 0x95, 0x10, 0x70);
++
++ /* location: {CR92,0,3},{CR95,0,2} */
++ ViaCrtcMask(hwp, 0x92, 0x00, 0x0F); /* 64/4 = 16 = 0x10 */
++ ViaCrtcMask(hwp, 0x95, 0x01, 0x07);
++
++ /* location: {CR94,0,6} */
++ ViaCrtcMask(hwp, 0x94, 0x08, 0x7F); /* 32/4 = 8 = 0x08 */
++ break;
+ case VIA_K8M890:
++ /* Display Queue Depth, location: {CR68,4,7},{CR94,7,7},{CR95,7,7} */
++ ViaCrtcMask(hwp, 0x68, 0xC0, 0xF0); /* 360/8-1 = 44 = 0x2C; 0x2C << 4 = 0xC0 */
++ ViaCrtcMask(hwp, 0x94, 0x00, 0x80); /* 0x2C << 3 = 0x00 */
++ ViaCrtcMask(hwp, 0x95, 0x80, 0x80); /* 0x2C << 2 = 0x80 */
++
++ /* Display Queue Read Threshold 1, location: {CR68,0,3},{CR95,4,6} */
++ ViaCrtcMask(hwp, 0x68, 0x02, 0x0F); /* 328/4 = 82 = 0x52 */
++ ViaCrtcMask(hwp, 0x95, 0x50, 0x70);
++
++ /* location: {CR92,0,3},{CR95,0,2} */
++ ViaCrtcMask(hwp, 0x92, 0x0A, 0x0F); /* 296/4 = 74 = 0x4A */
++ ViaCrtcMask(hwp, 0x95, 0x04, 0x07); /* 0x4A >> 4 = 0x04 */
++
++ /* Display Expire Number Bits, location: {CR94,0,6} */
++ ViaCrtcMask(hwp, 0x94, 0x1F, 0x7F); /* 124/4 = 31 = 0x1F */
+ break;
+ case VIA_P4M900:
+ ViaCrtcMask(hwp, 0x68, 0xB0, 0xF0);
+diff -ruN xf86-video-openchrome-0.2.904/src/via_crtc.c ../openchrome/xf86-video-openchrome-0.2.904/src/via_crtc.c
+--- xf86-video-openchrome-0.2.904/src/via_crtc.c 2009-10-03 22:48:55.000000000 +0200
++++ ../openchrome/xf86-video-openchrome-0.2.904/src/via_crtc.c 2010-03-07 01:09:00.000000000 +0100
+@@ -234,8 +234,8 @@
+ /* Primary starting address -> 0x00, adjustframe does the rest */
+ hwp->writeCrtc(hwp, 0x0C, 0x00);
+ hwp->writeCrtc(hwp, 0x0D, 0x00);
+- hwp->writeCrtc(hwp, 0x34, 0x00);
+ ViaCrtcMask(hwp, 0x48, 0x00, 0x03); /* is this even possible on CLE266A ? */
++ hwp->writeCrtc(hwp, 0x34, 0x00);
+
+ /* vertical sync start : 2047 */
+ temp = mode->CrtcVSyncStart;
+@@ -331,15 +331,20 @@
+ CARD32 Base;
+ CARD32 tmp;
+
++ DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "ViaFirstCRTCSetStartingAddress\n"));
++
+ Base = (y * pScrn->displayWidth + x) * (pScrn->bitsPerPixel / 8);
+ Base = Base >> 1;
+
+ hwp->writeCrtc(hwp, 0x0C, (Base & 0xFF00) >> 8);
+ hwp->writeCrtc(hwp, 0x0D, Base & 0xFF);
+- hwp->writeCrtc(hwp, 0x34, (Base & 0xFF0000) >> 16);
+-
++ /* FIXME The proper starting address for CR48 is 0x1F - Bits[28:24] */
+ if (!(pVia->Chipset == VIA_CLE266 && CLE266_REV_IS_AX(pVia->ChipRev)))
+ ViaCrtcMask(hwp, 0x48, Base >> 24, 0x0F);
++ /* CR34 are fire bits. Must be writed after CR0C CR0D CR48. */
++ hwp->writeCrtc(hwp, 0x34, (Base & 0xFF0000) >> 16);
++
++
+ }
+
+ void
+diff -ruN xf86-video-openchrome-0.2.904/src/via_cursor.c ../openchrome/xf86-video-openchrome-0.2.904/src/via_cursor.c
+--- xf86-video-openchrome-0.2.904/src/via_cursor.c 2009-10-03 22:48:55.000000000 +0200
++++ ../openchrome/xf86-video-openchrome-0.2.904/src/via_cursor.c 2010-03-07 01:09:00.000000000 +0100
+@@ -145,9 +145,12 @@
+ infoPtr->ShowCursor = viaShowCursor;
+ infoPtr->UseHWCursor = viaUseHWCursor;
+
++ /* ARGB Cursor init */
+ infoPtr->UseHWCursorARGB = viaUseHWCursorARGB;
+- if (pVia->CursorARGBSupported)
++ if (pVia->CursorARGBSupported) {
++ DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "HWCursor ARGB enabled\n"));
+ infoPtr->LoadCursorARGB = viaLoadCursorARGB;
++ }
+
+ /* Set cursor location in frame buffer. */
+ VIASETREG(VIA_REG_CURSOR_MODE, pVia->cursorOffset);
+@@ -284,7 +287,7 @@
+ }
+
+ /*
+- * ARGB Cursor
++ * display the current cursor
+ */
+
+ void
+@@ -319,13 +322,19 @@
+ */
+
+ /* Duoview */
+- if (pVia->CursorPipe)
++ if (pVia->CursorPipe) {
++ /* Mono Cursor Display Path [bit31]: Secondary */
++ /* FIXME For CLE266 nad KM400 try to enable 32x32 cursor size [bit1] */
+ VIASETREG(VIA_REG_ALPHA_CONTROL, 0xF6000005);
+- else
++ } else {
++ /* Mono Cursor Display Path [bit31]: Primary */
+ VIASETREG(VIA_REG_ALPHA_CONTROL, 0x76000005);
++ }
+ }
+ }
+
++
++/* hide the current cursor */
+ void
+ viaHideCursor(ScrnInfoPtr pScrn)
+ {
+@@ -350,10 +359,16 @@
+
+ default:
+ temp = VIAGETREG(VIA_REG_ALPHA_CONTROL);
++ /* Hardware cursor disable [bit0] */
+ VIASETREG(VIA_REG_ALPHA_CONTROL, temp & 0xFFFFFFFA);
+ }
+ }
+
++/*
++ Set the cursor position to (x,y). X and/or y may be negative
++ indicating that the cursor image is partially offscreen on
++ the left and/or top edges of the screen.
++*/
+ static void
+ viaSetCursorPosition(ScrnInfoPtr pScrn, int x, int y)
+ {
+@@ -409,6 +424,15 @@
+ && pCurs->bits->height <= pVia->CursorMaxHeight);
+ }
+
++/*
++ If the driver is unable to use a hardware cursor for reasons
++ other than the cursor being larger than the maximum specified
++ in the MaxWidth or MaxHeight field below, it can supply the
++ UseHWCursor function. If UseHWCursor is provided by the driver,
++ it will be called whenever the cursor shape changes or the video
++ mode changes. This is useful for when the hardware cursor cannot
++ be used in interlaced or doublescan modes.
++*/
+ static Bool
+ viaUseHWCursor(ScreenPtr pScreen, CursorPtr pCurs)
+ {
+@@ -423,8 +447,11 @@
+ && pCurs->bits->height <= pVia->CursorMaxHeight);
+ }
+
++/*
++ Load Mono Cursor Image
++*/
+ static void
+-viaLoadCursorImage(ScrnInfoPtr pScrn, unsigned char *s)
++viaLoadCursorImage(ScrnInfoPtr pScrn, unsigned char *src)
+ {
+ VIAPtr pVia = VIAPTR(pScrn);
+ CARD32 temp;
+@@ -439,7 +466,7 @@
+ if (pVia->CursorARGBSupported) {
+ #define ARGB_PER_CHUNK (8 * sizeof (chunk) / 2)
+ for (i = 0; i < (pVia->CursorMaxWidth * pVia->CursorMaxHeight / ARGB_PER_CHUNK); i++) {
+- chunk = *s++;
++ chunk = *src++;
+ for (j = 0; j < ARGB_PER_CHUNK; j++, chunk >>= 2)
+ *dst++ = mono_cursor_color[chunk & 3];
+ }
+@@ -447,7 +474,7 @@
+ pVia->CursorFG = mono_cursor_color[3];
+ pVia->CursorBG = mono_cursor_color[2];
+ } else {
+- memcpy(dst, (CARD8*)s, pVia->CursorSize);
++ memcpy(dst, (CARD8*)src, pVia->CursorSize);
+ }
+ switch(pVia->Chipset) {
+ case VIA_CX700:
+@@ -471,11 +498,17 @@
+ }
+ }
+
++/*
++ Set the cursor foreground and background colors. In 8bpp, fg and
++ bg are indicies into the current colormap unless the
++ HARDWARE_CURSOR_TRUECOLOR_AT_8BPP flag is set. In that case
++ and in all other bpps the fg and bg are in 8-8-8 RGB format.
++*/
++
+ static void
+ viaSetCursorColors(ScrnInfoPtr pScrn, int bg, int fg)
+ {
+ VIAPtr pVia = VIAPTR(pScrn);
+- CARD32 control = pVia->CursorRegControl;
+ CARD32 pixel;
+ CARD32 temp;
+ CARD32 *dst;
+@@ -487,12 +520,10 @@
+ fg |= 0xff000000;
+ bg |= 0xff000000;
+
++ /* Don't recolour the image if we don't have to. */
+ if (fg == pVia->CursorFG && bg == pVia->CursorBG)
+ return;
+
+- temp = VIAGETREG(control);
+- VIASETREG(control, temp & 0xFFFFFFFE);
+-
+ dst = (CARD32*)pVia->cursorMap;
+ for (i = 0; i < pVia->CursorMaxWidth * pVia->CursorMaxHeight; i++, dst++)
+ if ((pixel = *dst))
+@@ -517,7 +548,8 @@
+ }
+ break;
+ default:
+- VIASETREG(control, temp);
++ temp = VIAGETREG(VIA_REG_ALPHA_CONTROL);
++ VIASETREG(VIA_REG_ALPHA_CONTROL, temp & 0xFFFFFFFE);
+ }
+ }
+
+diff -ruN xf86-video-openchrome-0.2.904/src/via_dri.c ../openchrome/xf86-video-openchrome-0.2.904/src/via_dri.c
+--- xf86-video-openchrome-0.2.904/src/via_dri.c 2009-10-03 22:48:55.000000000 +0200
++++ ../openchrome/xf86-video-openchrome-0.2.904/src/via_dri.c 2010-03-07 01:09:00.000000000 +0100
+@@ -267,6 +267,11 @@
+ pVIADRI = pDRIInfo->devPrivate;
+ pVia->agpSize = 0;
+
++/* For AMD64 */
++#ifdef __x86_64__
++ return FALSE;
++#endif
++
+ if (drmAgpAcquire(pVia->drmFD) < 0) {
+ xf86DrvMsg(pScreen->myNum, X_ERROR, "[drm] drmAgpAcquire failed %d\n",
+ errno);
+diff -ruN xf86-video-openchrome-0.2.904/src/via_driver.c ../openchrome/xf86-video-openchrome-0.2.904/src/via_driver.c
+--- xf86-video-openchrome-0.2.904/src/via_driver.c 2009-10-09 00:46:15.000000000 +0200
++++ ../openchrome/xf86-video-openchrome-0.2.904/src/via_driver.c 2010-03-07 01:09:00.000000000 +0100
+@@ -178,8 +178,8 @@
+ {VIA_P4M900, "P4M900/VN896/CN896"},
+ {VIA_CX700, "CX700/VX700"},
+ {VIA_P4M890, "P4M890"},
+- {VIA_VX800, "VX800"},
+- {VIA_VX855, "VX855"},
++ {VIA_VX800, "VX800/VX820"},
++ {VIA_VX855, "VX855/VX875"},
+ {-1, NULL }
+ };
+
+@@ -215,6 +215,7 @@
+ OPTION_EXA_SCRATCH_SIZE,
+ OPTION_SWCURSOR,
+ OPTION_SHADOW_FB,
++ OPTION_ROTATION_TYPE,
+ OPTION_ROTATE,
+ OPTION_VIDEORAM,
+ OPTION_ACTIVEDEVICE,
+@@ -253,6 +254,7 @@
+ {OPTION_EXA_SCRATCH_SIZE, "ExaScratchSize", OPTV_INTEGER, {0}, FALSE},
+ {OPTION_SWCURSOR, "SWCursor", OPTV_BOOLEAN, {0}, FALSE},
+ {OPTION_SHADOW_FB, "ShadowFB", OPTV_BOOLEAN, {0}, FALSE},
++ {OPTION_ROTATION_TYPE, "RotationType", OPTV_ANYSTR, {0}, FALSE},
+ {OPTION_ROTATE, "Rotate", OPTV_ANYSTR, {0}, FALSE},
+ {OPTION_VIDEORAM, "VideoRAM", OPTV_INTEGER, {0}, FALSE},
+ {OPTION_ACTIVEDEVICE, "ActiveDevice", OPTV_ANYSTR, {0}, FALSE},
+@@ -307,6 +309,7 @@
+ {
+ static Bool setupDone = FALSE;
+
++ /* Only be loaded once */
+ if (!setupDone) {
+ setupDone = TRUE;
+ xf86AddDriver(&VIA, module,
+@@ -339,6 +342,7 @@
+ if (pScrn->driverPrivate)
+ return TRUE;
+
++ /* allocate VIARec */
+ pScrn->driverPrivate = xnfcalloc(sizeof(VIARec), 1);
+ VIAPtr pVia = ((VIARec *) (pScrn->driverPrivate));
+
+@@ -455,7 +459,6 @@
+ {
+ ScrnInfoPtr scrn = NULL;
+ EntityInfoPtr entity;
+- DevUnion *private;
+
+ scrn = xf86ConfigPciEntity(scrn, 0, entity_num, VIAPciChipsets,
+ NULL, NULL, NULL, NULL, NULL);
+@@ -652,6 +655,12 @@
+ vbeInfoPtr pVbe;
+
+ if (xf86LoadSubModule(pScrn, "vbe")) {
++ /* FIXME This line should be replaced to:
++
++ pVbe = VBEExtendedInit(NULL, index, 0);
++
++ for XF86 version > 4.2.99
++ */
+ pVbe = VBEInit(NULL, index);
+ ConfiguredMonitor = vbeDoEDID(pVbe, NULL);
+ vbeFree(pVbe);
+@@ -664,7 +673,7 @@
+ VIAPtr pVia = VIAPTR(pScrn);
+ VIABIOSInfoPtr pBIOSInfo = pVia->pBIOSInfo;
+
+- DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "VIASetupDefaultOptions\n"));
++ DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "VIASetupDefaultOptions - Setting up default chipset options.\n"));
+
+ pVia->shadowFB = FALSE;
+ pVia->NoAccel = FALSE;
+@@ -688,6 +697,9 @@
+ #ifdef HAVE_DEBUG
+ pVia->PrintVGARegs = FALSE;
+ #endif
++
++ /* Disable vertical interpolation because the size of */
++ /* line buffer (limited to 800) is too small to do interpolation. */
+ pVia->swov.maxWInterp = 800;
+ pVia->swov.maxHInterp = 600;
+ pVia->useLegacyVBE = TRUE;
+@@ -713,11 +725,14 @@
+ pVia->UseLegacyModeSwitch = TRUE;
+ break;
+ case VIA_PM800:
++ /* Use new mode switch to resolve many resolution and display bugs (switch to console) */
++ /* FIXME The video playing (XV) is not working correctly after turn on new mode switch */
+ pVia->VideoEngine = VIDEO_ENGINE_CME;
+- pVia->UseLegacyModeSwitch = TRUE;
+ break;
+ case VIA_VM800:
+- pVia->UseLegacyModeSwitch = TRUE;
++ /* New mode switch resolve bug with gamma set #282 */
++ /* and with Xv after hibernate #240 */
++ /* FIXME Add panel support for this chipset */
+ break;
+ case VIA_K8M890:
+ pVia->VideoEngine = VIDEO_ENGINE_CME;
+@@ -1050,19 +1065,13 @@
+ xf86DrvMsg(pScrn->scrnIndex, from,
+ "Probed amount of VideoRAM = %d kB\n", pScrn->videoRam);
+
+- xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+- "Setting up default chipset options.\n");
+ if (!VIASetupDefaultOptions(pScrn)) {
+ VIAFreeRec(pScrn);
+ return FALSE;
+ }
+
+- xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Reading config file...\n");
+ xf86ProcessOptions(pScrn->scrnIndex, pScrn->options, VIAOptions);
+
+- xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+- "Starting to parse config file options...\n");
+-
+ if (xf86GetOptValInteger(VIAOptions, OPTION_VIDEORAM, &pScrn->videoRam))
+ xf86DrvMsg(pScrn->scrnIndex, X_CONFIG,
+ "Setting amount of VideoRAM to %d kB\n", pScrn->videoRam);
+@@ -1100,6 +1109,31 @@
+ }
+
+ /* When rotating, switch shadow framebuffer on and acceleration off. */
++ if ((s = xf86GetOptValString(VIAOptions, OPTION_ROTATION_TYPE))) {
++ if (!xf86NameCmp(s, "SWRandR")) {
++ pVia->shadowFB = TRUE;
++ pVia->NoAccel = TRUE;
++ pVia->RandRRotation = TRUE;
++ pVia->rotate = RR_Rotate_0;
++ xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "Rotating screen "
++ "RandR enabled, acceleration disabled\n");
++ } else if (!xf86NameCmp(s, "HWRandR")) {
++ pVia->shadowFB = TRUE;
++ pVia->NoAccel = TRUE;
++ pVia->RandRRotation = TRUE;
++ pVia->rotate = RR_Rotate_0;
++ xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "Hardware accelerated "
++ "rotating screen is not implemented. Using SW RandR.\n");
++ } else {
++ xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "\"%s\" is not a valid"
++ "value for Option \"RotationType\".\n", s);
++ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
++ "Valid options are \"SWRandR\" and \"HWRandR\".\n");
++ }
++ }
++
++
++ /* When rotating, switch shadow framebuffer on and acceleration off. */
+ if ((s = xf86GetOptValString(VIAOptions, OPTION_ROTATE))) {
+ if (!xf86NameCmp(s, "CW")) {
+ pVia->shadowFB = TRUE;
+@@ -1498,6 +1532,7 @@
+ }
+ }
+
++ /* Initialize the colormap */
+ Gamma zeros = { 0.0, 0.0, 0.0 };
+ if (!xf86SetGamma(pScrn, zeros)) {
+ VIAFreeRec(pScrn);
+@@ -1561,9 +1596,8 @@
+
+ if (pBIOSInfo->Panel->IsActive &&
+ ((pVia->Chipset == VIA_K8M800) ||
+- (pVia->Chipset == VIA_PM800) ||
+ (pVia->Chipset == VIA_VM800))) {
+- xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "Panel on K8M800, PM800 and "
++ xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "Panel on K8M800 and "
+ "VM800 is currently not supported.\n");
+ xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
+ "Using VBE to set modes to work around this.\n");
+@@ -1621,7 +1655,7 @@
+ *
+ * CLE266A: primary AdjustFrame can use only 24 bits, so we are limited
+ * to 12x11 bits; 4080x2048 (~2:1), 3344x2508 (4:3), or 2896x2896 (1:1).
+- * Test CLE266Cx, KM400, KM400A, K8M800, PM800, CN400 please.
++ * TODO Test CLE266Cx, KM400, KM400A, K8M800, CN400 please.
+ *
+ * We should be able to limit the memory available for a mode to 32 MB,
+ * but xf86ValidateModes (or miScanLineWidth) fails to catch this
+@@ -1629,13 +1663,14 @@
+ */
+
+ /* Select valid modes from those available. */
+- i = xf86ValidateModes(pScrn, pScrn->monitor->Modes, /* availModes */
+- pScrn->display->modes, /* modeNames */
+- clockRanges, /* list of clock ranges */
++ i = xf86ValidateModes(pScrn,
++ pScrn->monitor->Modes, /* List of modes available for the monitor */
++ pScrn->display->modes, /* List of mode names that the screen is requesting */
++ clockRanges, /* list of clock ranges */
+ NULL, /* list of line pitches */
+ 256, /* minimum line pitch */
+ 3344, /* maximum line pitch */
+- 32 * 8, /* pitch inc (bits) */
++ 16 * 8, /* pitch increment (in bits), we just want 16 bytes alignment */
+ 128, /* min height */
+ 2508, /* max height */
+ pScrn->display->virtualX, /* virtual width */
+@@ -1650,6 +1685,7 @@
+ return FALSE;
+ }
+
++ /* This function deletes modes in the modes field of the ScrnInfoRec that have been marked as invalid. */
+ xf86PruneDriverModes(pScrn);
+
+ if (i == 0 || pScrn->modes == NULL) {
+@@ -1662,9 +1698,17 @@
+ /* Set up screen parameters. */
+ pVia->Bpp = pScrn->bitsPerPixel >> 3;
+ pVia->Bpl = pScrn->displayWidth * pVia->Bpp;
++
++ /* This function fills in the Crtc fields for all the modes in the modes field of the ScrnInfoRec. */
+ xf86SetCrtcForModes(pScrn, INTERLACE_HALVE_V);
++
++ /* Set the current mode to the first in the list */
+ pScrn->currentMode = pScrn->modes;
++
++ /* Print the list of modes being used */
+ xf86PrintModes(pScrn);
++
++ /* Set display resolution */
+ xf86SetDpi(pScrn, 0, 0);
+
+ #ifdef USE_FB
+@@ -1935,7 +1979,9 @@
+ Regs->SR17 = hwp->readSeq(hwp, 0x17);
+ Regs->SR18 = hwp->readSeq(hwp, 0x18);
+ Regs->SR19 = hwp->readSeq(hwp, 0x19);
++ /* PCI Bus Control */
+ Regs->SR1A = hwp->readSeq(hwp, 0x1A);
++
+ Regs->SR1B = hwp->readSeq(hwp, 0x1B);
+ Regs->SR1C = hwp->readSeq(hwp, 0x1C);
+ Regs->SR1D = hwp->readSeq(hwp, 0x1D);
+@@ -1977,40 +2023,56 @@
+ Regs->SR4C = hwp->readSeq(hwp, 0x4C);
+ break;
+ }
+- DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+- "Non-Primary Adapter! saving VGA_SR_MODE only !!\n"));
+ DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Crtc...\n"));
+
+ Regs->CR13 = hwp->readCrtc(hwp, 0x13);
+
+ Regs->CR32 = hwp->readCrtc(hwp, 0x32);
+ Regs->CR33 = hwp->readCrtc(hwp, 0x33);
+- Regs->CR34 = hwp->readCrtc(hwp, 0x34);
++
+ Regs->CR35 = hwp->readCrtc(hwp, 0x35);
+ Regs->CR36 = hwp->readCrtc(hwp, 0x36);
+
++
++
++ /* Starting Address */
++ /* Start Address High */
++ Regs->CR0C = hwp->readCrtc(hwp, 0x0C);
++ /* Start Address Low */
++ Regs->CR0D = hwp->readCrtc(hwp, 0x0D);
++ /* Starting Address Overflow Bits[28:24] */
+ Regs->CR48 = hwp->readCrtc(hwp, 0x48);
++ /* CR34 are fire bits. Must be writed after CR0C CR0D CR48. */
++ /* Starting Address Overflow Bits[23:16] */
++ Regs->CR34 = hwp->readCrtc(hwp, 0x34);
++
++
+ Regs->CR49 = hwp->readCrtc(hwp, 0x49);
+
+ DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "TVSave...\n"));
+ if (pBIOSInfo->TVI2CDev)
+ ViaTVSave(pScrn);
+
+- /* Save LCD control registers. */
++ /* Save LCD control registers (from CR 0x50 to 0x93). */
+ for (i = 0; i < 68; i++)
+ Regs->CRTCRegs[i] = hwp->readCrtc(hwp, i + 0x50);
+
+ if (pVia->Chipset != VIA_CLE266 && pVia->Chipset != VIA_KM400) {
+-
+- Regs->CRA0 = hwp->readCrtc(hwp, 0xA0);
+- Regs->CRA1 = hwp->readCrtc(hwp, 0xA1);
+- Regs->CRA2 = hwp->readCrtc(hwp, 0xA2);
+-
++ /* LVDS Channel 2 Function Select 0 / DVI Function Select */
+ Regs->CR97 = hwp->readCrtc(hwp, 0x97);
++ /* LVDS Channel 1 Function Select 0 */
+ Regs->CR99 = hwp->readCrtc(hwp, 0x99);
++ /* Digital Video Port 1 Function Select 0 */
+ Regs->CR9B = hwp->readCrtc(hwp, 0x9B);
++ /* Power Now Control 4 */
+ Regs->CR9F = hwp->readCrtc(hwp, 0x9F);
+
++ /* Horizontal Scaling Initial Value */
++ Regs->CRA0 = hwp->readCrtc(hwp, 0xA0);
++ /* Vertical Scaling Initial Value */
++ Regs->CRA1 = hwp->readCrtc(hwp, 0xA1);
++ /* Scaling Enable Bit */
++ Regs->CRA2 = hwp->readCrtc(hwp, 0xA2);
+ }
+
+ /* Save TMDS status */
+@@ -2098,11 +2160,19 @@
+ hwp->writeSeq(hwp, 0x45, Regs->SR45);
+ hwp->writeSeq(hwp, 0x46, Regs->SR46);
+
++ /* Reset VCK PLL */
++ hwp->writeSeq(hwp, 0x40, hwp->readSeq(hwp, 0x40) | 0x02); /* Set SR40[1] to 1 */
++ hwp->writeSeq(hwp, 0x40, hwp->readSeq(hwp, 0x40) & 0xFD); /* Set SR40[1] to 0 */
++
+ /* ECK Clock Synthesizer: */
+ hwp->writeSeq(hwp, 0x47, Regs->SR47);
+ hwp->writeSeq(hwp, 0x48, Regs->SR48);
+ hwp->writeSeq(hwp, 0x49, Regs->SR49);
+
++ /* Reset ECK PLL */
++ hwp->writeSeq(hwp, 0x40, hwp->readSeq(hwp, 0x40) | 0x01); /* Set SR40[0] to 1 */
++ hwp->writeSeq(hwp, 0x40, hwp->readSeq(hwp, 0x40) & 0xFE); /* Set SR40[0] to 0 */
++
+ switch (pVia->Chipset) {
+ case VIA_CLE266:
+ case VIA_KM400:
+@@ -2112,6 +2182,10 @@
+ hwp->writeSeq(hwp, 0x4A, Regs->SR4A);
+ hwp->writeSeq(hwp, 0x4B, Regs->SR4B);
+ hwp->writeSeq(hwp, 0x4C, Regs->SR4C);
++
++ /* Reset LCK PLL */
++ hwp->writeSeq(hwp, 0x40, hwp->readSeq(hwp, 0x40) | 0x04); /* Set SR40[2] to 1 */
++ hwp->writeSeq(hwp, 0x40, hwp->readSeq(hwp, 0x40) & 0xFB); /* Set SR40[2] to 0 */
+ break;
+ }
+
+@@ -2127,14 +2201,23 @@
+ hwp->writeCrtc(hwp, 0x32, Regs->CR32);
+ /* HSYNCH Adjuster */
+ hwp->writeCrtc(hwp, 0x33, Regs->CR33);
+- /* Starting Address Overflow */
+- hwp->writeCrtc(hwp, 0x34, Regs->CR34);
+ /* Extended Overflow */
+ hwp->writeCrtc(hwp, 0x35, Regs->CR35);
+ /*Power Management 3 (Monitor Control) */
+ hwp->writeCrtc(hwp, 0x36, Regs->CR36);
+
++ /* Starting Address */
++ /* Start Address High */
++ hwp->writeCrtc(hwp, 0x0C, Regs->CR0C);
++ /* Start Address Low */
++ hwp->writeCrtc(hwp, 0x0D, Regs->CR0D);
++ /* Starting Address Overflow Bits[28:24] */
+ hwp->writeCrtc(hwp, 0x48, Regs->CR48);
++ /* CR34 are fire bits. Must be writed after CR0C CR0D CR48. */
++ /* Starting Address Overflow Bits[23:16] */
++ hwp->writeCrtc(hwp, 0x34, Regs->CR34);
++
++
+ hwp->writeCrtc(hwp, 0x49, Regs->CR49);
+
+ /* Restore LCD control registers. */
+@@ -2453,7 +2536,6 @@
+ VIALoadRgbLut(ScrnInfoPtr pScrn, int numColors, int *indices, LOCO *colors,
+ VisualPtr pVisual)
+ {
+- VIAPtr pVia = VIAPTR(pScrn);
+ vgaHWPtr hwp = VGAHWPTR(pScrn);
+
+ int i, j, index;
+@@ -2880,7 +2962,6 @@
+ VIAWriteMode(ScrnInfoPtr pScrn, DisplayModePtr mode)
+ {
+ VIAPtr pVia = VIAPTR(pScrn);
+- VIABIOSInfoPtr pBIOSInfo = pVia->pBIOSInfo;
+
+ DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "VIAWriteMode\n"));
+
+@@ -3033,9 +3114,7 @@
+ VIAAdjustFrame(int scrnIndex, int x, int y, int flags)
+ {
+ ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+- vgaHWPtr hwp = VGAHWPTR(pScrn);
+ VIAPtr pVia = VIAPTR(pScrn);
+- CARD32 Base;
+
+ DEBUG(xf86DrvMsg(scrnIndex, X_INFO, "VIAAdjustFrame %dx%d\n", x, y));
+
+@@ -3173,7 +3252,6 @@
+ static void
+ VIADPMS(ScrnInfoPtr pScrn, int mode, int flags)
+ {
+- vgaHWPtr hwp = VGAHWPTR(pScrn);
+ VIAPtr pVia = VIAPTR(pScrn);
+ VIABIOSInfoPtr pBIOSInfo = pVia->pBIOSInfo;
+
+diff -ruN xf86-video-openchrome-0.2.904/src/via_driver.h ../openchrome/xf86-video-openchrome-0.2.904/src/via_driver.h
+--- xf86-video-openchrome-0.2.904/src/via_driver.h 2009-10-09 01:09:22.000000000 +0200
++++ ../openchrome/xf86-video-openchrome-0.2.904/src/via_driver.h 2010-03-07 01:09:00.000000000 +0100
+@@ -130,6 +130,7 @@
+ CARD8 SR4A, SR4B, SR4C;
+
+ /* extended CRTC registers */
++ CARD8 CR0C, CR0D;
+ CARD8 CR13, CR30, CR31, CR32, CR33, CR34, CR35, CR36;
+ CARD8 CR37, CR38, CR39, CR3A, CR40, CR41, CR42, CR43;
+ CARD8 CR44, CR45, CR46, CR47, CR48, CR49, CR4A;
+@@ -418,10 +419,10 @@
+ Bool PrintVGARegs;
+ Bool PrintTVRegs;
+ Bool I2CScan;
++#endif /* HAVE_DEBUG */
+
+ Bool UseLegacyModeSwitch ;
+ video_via_regs* VideoRegs ;
+-#endif /* HAVE_DEBUG */
+ } VIARec, *VIAPtr;
+
+ #define VIAPTR(p) ((VIAPtr)((p)->driverPrivate))
+diff -ruN xf86-video-openchrome-0.2.904/src/via_id.c ../openchrome/xf86-video-openchrome-0.2.904/src/via_id.c
+--- xf86-video-openchrome-0.2.904/src/via_id.c 2009-10-07 23:30:39.000000000 +0200
++++ ../openchrome/xf86-video-openchrome-0.2.904/src/via_id.c 2010-03-07 01:09:00.000000000 +0100
+@@ -152,6 +152,7 @@
+ {"MSI PM8PM", VIA_VM800, 0x1462, 0x7222, VIA_DEVICE_CRT},
+ {"Twinhead M6", VIA_VM800, 0x14FF, 0xA007, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
+ {"RoverBook Partner W500", VIA_VM800, 0x1509, 0x4330, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
++ {"FIC PTM800Pro LF", VIA_VM800, 0x1509, 0x601A, VIA_DEVICE_CRT},
+ {"Clevo/RoverBook Voyager V511L", VIA_VM800, 0x1558, 0x0662, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
+ {"Clevo M5xxS", VIA_VM800, 0x1558, 0x5406, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
+ {"Biostar P4M80-M4 / P4VMA-M", VIA_VM800, 0x1565, 0x1202, VIA_DEVICE_CRT},
+@@ -170,6 +171,7 @@
+ {"Asustek M2V-MX SE", VIA_K8M890, 0x1043, 0x8297, VIA_DEVICE_CRT},
+ {"Foxconn K8M890M2MA-RS2H", VIA_K8M890, 0x105B, 0x0C84, VIA_DEVICE_CRT},
+ {"Shuttle FX22V1", VIA_K8M890, 0x1297, 0x3080, VIA_DEVICE_CRT},
++ {"MSI K8M890M2-V", VIA_K8M890, 0x1462, 0x7139, VIA_DEVICE_CRT},
+ {"MSI K9VGM-V", VIA_K8M890, 0x1462, 0x7253, VIA_DEVICE_CRT},
+ {"Averatec 226x", VIA_K8M890, 0x14FF, 0xA002, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
+ {"Fujitsu/Siemens Amilo La 1703", VIA_K8M890, 0x1734, 0x10D9, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
+@@ -189,6 +191,7 @@
+ {"MSI P4M900M / P4M900M2-F/L", VIA_P4M900, 0x1462, 0x7255, VIA_DEVICE_CRT},
+ {"MSI P4M900M3-L", VIA_P4M900, 0x1462, 0x7387, VIA_DEVICE_CRT},
+ {"Twinhead H12V", VIA_P4M900, 0x14FF, 0xA00F, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
++ {"Twinhead K15V", VIA_P4M900, 0x14FF, 0xA012, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
+ {"Everex NC1501/NC1503", VIA_P4M900, 0x1509, 0x1E30, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
+ {"Clevo M660SE", VIA_P4M900, 0x1558, 0x0664, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
+ {"Clevo M660SR", VIA_P4M900, 0x1558, 0x0669, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
+@@ -224,6 +227,7 @@
+
+ /*** VX800 ***/
+ {"VIA Epia M700", VIA_VX800, 0x1106, 0x1122, VIA_DEVICE_CRT},
++ {"Guillemot-Hercules ECafe EC900B", VIA_VX800, 0x1106, 0x3349, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
+ {"VIA OpenBook", VIA_VX800, 0x1170, 0x0311, VIA_DEVICE_CRT | VIA_DEVICE_LCD}, /* VIA OpenBook eNote VBE8910 */
+ {"Samsung NC20", VIA_VX800, 0x144d, 0xc04e, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
+ {"Quanta DreamBook Light IL1", VIA_VX800, 0x152d, 0x0771, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
+@@ -231,6 +235,7 @@
+
+ /*** VX855 ***/
+ {"VIA VT8562C", VIA_VX855, 0x1106, 0x5122, VIA_DEVICE_CRT},
++ {"OLPC XO 1.5", VIA_VX855, 0x152D, 0x0833, VIA_DEVICE_LCD},
+
+ /* keep this */
+ {NULL, VIA_UNKNOWN, 0x0000, 0x0000, VIA_DEVICE_NONE}
+diff -ruN xf86-video-openchrome-0.2.904/src/via_mode.h ../openchrome/xf86-video-openchrome-0.2.904/src/via_mode.h
+--- xf86-video-openchrome-0.2.904/src/via_mode.h 2009-10-07 23:31:47.000000000 +0200
++++ ../openchrome/xf86-video-openchrome-0.2.904/src/via_mode.h 2010-03-07 01:09:00.000000000 +0100
+@@ -54,50 +54,50 @@
+ CARD16 UniChrome;
+ union pllparams UniChromePro;
+ } ViaDotClocks[] = {
+- { 25200, 0x513C, /* 0xa79004 */ { 1, 4, 6, 169 } },
+- { 25312, 0xC763, /* 0xc49005 */ { 1, 4, 7, 198 } },
+- { 26591, 0x471A, /* 0xce9005 */ { 1, 4, 7, 208 } },
+- { 31500, 0xC558, /* 0xae9003 */ { 1, 4, 5, 176 } },
+- { 31704, 0x471F, /* 0xaf9002 */ { 1, 4, 4, 177 } },
+- { 32663, 0xC449, /* 0x479000 */ { 1, 4, 2, 73 } },
+- { 33750, 0x4721, /* 0x959002 */ { 1, 4, 4, 151 } },
+- { 35500, 0x5877, /* 0x759001 */ { 1, 4, 3, 119 } },
+- { 36000, 0x5879, /* 0x9f9002 */ { 1, 4, 4, 161 } },
+- { 39822, 0xC459, /* 0x578c02 */ { 1, 3, 4, 89 } },
+- { 40000, 0x515F, /* 0x848c04 */ { 1, 3, 6, 134 } },
+- { 41164, 0x4417, /* 0x2c8c00 */ { 1, 3, 2, 46 } },
+- { 46981, 0x5069, /* 0x678c02 */ { 1, 3, 4, 105 } },
+- { 49500, 0xC353, /* 0xa48c04 */ { 3, 3, 5, 138 } },
+- { 50000, 0xC354, /* 0x368c00 */ { 1, 3, 2, 56 } },
+- { 56300, 0x4F76, /* 0x3d8c00 */ { 1, 3, 2, 63 } },
+- { 57275, 0, /* 0x3e8c00 */ { 1, 3, 5, 157 } }, /* For XO 1.5 no need for a unichrome clock */
+- { 57284, 0x4E70, /* 0x3e8c00 */ { 1, 3, 2, 64 } },
+- { 64995, 0x0D3B, /* 0x6b8c01 */ { 1, 3, 3, 109 } },
+- { 65000, 0x0D3B, /* 0x6b8c01 */ { 1, 3, 3, 109 } }, /* Slightly unstable on PM800 */
+- { 65028, 0x866D, /* 0x6b8c01 */ { 1, 3, 3, 109 } },
+- { 74480, 0x156E, /* 0x288800 */ { 1, 2, 2, 42 } },
+- { 75000, 0x156E, /* 0x288800 */ { 1, 2, 2, 42 } },
+- { 78800, 0x442C, /* 0x2a8800 */ { 1, 2, 2, 44 } },
+- { 81135, 0x0622, /* 0x428801 */ { 1, 2, 3, 68 } },
+- { 81613, 0x4539, /* 0x708803 */ { 1, 2, 5, 114 } },
+- { 94500, 0x4542, /* 0x4d8801 */ { 1, 2, 3, 79 } },
+- { 108000, 0x0B53, /* 0x778802 */ { 1, 2, 4, 121 } },
+- { 108280, 0x4879, /* 0x778802 */ { 1, 2, 4, 121 } },
+- { 122000, 0x0D6F, /* 0x428800 */ { 1, 2, 2, 68 } },
+- { 122726, 0x073C, /* 0x878802 */ { 1, 2, 4, 137 } },
+- { 135000, 0x0742, /* 0x6f8801 */ { 1, 2, 3, 113 } },
+- { 148500, 0x0853, /* 0x518800 */ { 1, 2, 2, 83 } },
+- { 155800, 0x0857, /* 0x558402 */ { 1, 1, 4, 87 } },
+- { 157500, 0x422C, /* 0x2a8400 */ { 1, 1, 2, 44 } },
+- { 161793, 0x4571, /* 0x6f8403 */ { 1, 1, 5, 113 } },
+- { 162000, 0x0A71, /* 0x6f8403 */ { 1, 1, 5, 113 } },
+- { 175500, 0x4231, /* 0x2f8400 */ { 1, 1, 2, 49 } },
+- { 189000, 0x0542, /* 0x4d8401 */ { 1, 1, 3, 79 } },
+- { 202500, 0x0763, /* 0x6F8402 */ { 1, 1, 4, 113 } },
+- { 204800, 0x0764, /* 0x548401 */ { 1, 1, 3, 86 } },
+- { 218300, 0x043D, /* 0x3b8400 */ { 1, 1, 2, 61 } },
+- { 229500, 0x0660, /* 0x3e8400 */ { 1, 1, 2, 64 } }, /* Not tested on Pro } */
+- { 0, 0, { 0, 0, 0, 0 } }
++ { 25200, 0x513C, /* 0xa79004 */ { { 1, 4, 6, 169 } } },
++ { 25312, 0xC763, /* 0xc49005 */ { { 1, 4, 7, 198 } } },
++ { 26591, 0x471A, /* 0xce9005 */ { { 1, 4, 7, 208 } } },
++ { 31500, 0xC558, /* 0xae9003 */ { { 1, 4, 5, 176 } } },
++ { 31704, 0x471F, /* 0xaf9002 */ { { 1, 4, 4, 177 } } },
++ { 32663, 0xC449, /* 0x479000 */ { { 1, 4, 2, 73 } } },
++ { 33750, 0x4721, /* 0x959002 */ { { 1, 4, 4, 151 } } },
++ { 35500, 0x5877, /* 0x759001 */ { { 1, 4, 3, 119 } } },
++ { 36000, 0x5879, /* 0x9f9002 */ { { 1, 4, 4, 161 } } },
++ { 39822, 0xC459, /* 0x578c02 */ { { 1, 3, 4, 89 } } },
++ { 40000, 0x515F, /* 0x848c04 */ { { 1, 3, 6, 134 } } },
++ { 41164, 0x4417, /* 0x2c8c00 */ { { 1, 3, 2, 46 } } },
++ { 46981, 0x5069, /* 0x678c02 */ { { 1, 3, 4, 105 } } },
++ { 49500, 0xC353, /* 0xa48c04 */ { { 3, 3, 5, 138 } } },
++ { 50000, 0xC354, /* 0x368c00 */ { { 1, 3, 2, 56 } } },
++ { 56300, 0x4F76, /* 0x3d8c00 */ { { 1, 3, 2, 63 } } },
++ { 57275, 0, /* 0x3e8c00 */ { { 1, 3, 5, 157 } } }, /* For XO 1.5 no need for a unichrome clock */
++ { 57284, 0x4E70, /* 0x3e8c00 */ { { 1, 3, 2, 64 } } },
++ { 64995, 0x0D3B, /* 0x6b8c01 */ { { 1, 3, 3, 109 } } },
++ { 65000, 0x0D3B, /* 0x6b8c01 */ { { 1, 3, 3, 109 } } }, /* Slightly unstable on PM800 */
++ { 65028, 0x866D, /* 0x6b8c01 */ { { 1, 3, 3, 109 } } },
++ { 74480, 0x156E, /* 0x288800 */ { { 1, 2, 2, 42 } } },
++ { 75000, 0x156E, /* 0x288800 */ { { 1, 2, 2, 42 } } },
++ { 78800, 0x442C, /* 0x2a8800 */ { { 1, 2, 2, 44 } } },
++ { 81135, 0x0622, /* 0x428801 */ { { 1, 2, 3, 68 } } },
++ { 81613, 0x4539, /* 0x708803 */ { { 1, 2, 5, 114 } } },
++ { 94500, 0x4542, /* 0x4d8801 */ { { 1, 2, 3, 79 } } },
++ { 108000, 0x0B53, /* 0x778802 */ { { 1, 2, 4, 121 } } },
++ { 108280, 0x4879, /* 0x778802 */ { { 1, 2, 4, 121 } } },
++ { 122000, 0x0D6F, /* 0x428800 */ { { 1, 2, 2, 68 } } },
++ { 122726, 0x073C, /* 0x878802 */ { { 1, 2, 4, 137 } } },
++ { 135000, 0x0742, /* 0x6f8801 */ { { 1, 2, 3, 113 } } },
++ { 148500, 0x0853, /* 0x518800 */ { { 1, 2, 2, 83 } } },
++ { 155800, 0x0857, /* 0x558402 */ { { 1, 1, 4, 87 } } },
++ { 157500, 0x422C, /* 0x2a8400 */ { { 1, 1, 2, 44 } } },
++ { 161793, 0x4571, /* 0x6f8403 */ { { 1, 1, 5, 113 } } },
++ { 162000, 0x0A71, /* 0x6f8403 */ { { 1, 1, 5, 113 } } },
++ { 175500, 0x4231, /* 0x2f8400 */ { { 1, 1, 2, 49 } } },
++ { 189000, 0x0542, /* 0x4d8401 */ { { 1, 1, 3, 79 } } },
++ { 202500, 0x0763, /* 0x6F8402 */ { { 1, 1, 4, 113 } } },
++ { 204800, 0x0764, /* 0x548401 */ { { 1, 1, 3, 86 } } },
++ { 218300, 0x043D, /* 0x3b8400 */ { { 1, 1, 2, 61 } } },
++ { 229500, 0x0660, /* 0x3e8400 */ { { 1, 1, 2, 64 } } }, /* Not tested on Pro } */
++ { 0, 0, { { 0, 0, 0, 0 } } }
+ };
+
+ /*
+diff -ruN xf86-video-openchrome-0.2.904/src/via_panel.c ../openchrome/xf86-video-openchrome-0.2.904/src/via_panel.c
+--- xf86-video-openchrome-0.2.904/src/via_panel.c 2009-10-03 22:48:55.000000000 +0200
++++ ../openchrome/xf86-video-openchrome-0.2.904/src/via_panel.c 2010-03-07 01:09:00.000000000 +0100
+@@ -171,12 +171,18 @@
+ resWidth, resHeight, panelWidth, panelHeight));
+
+ if (resWidth < panelWidth) {
+- /* FIXME: It is different for chipset < K8M800 */
+- horScalingFactor = ((resWidth - 1) * 4096) / (panelWidth - 1);
++ /* Load Horizontal Scaling Factor */
++ if (pVia->Chipset != VIA_CLE266 && pVia->Chipset != VIA_KM400) {
++ horScalingFactor = ((resWidth - 1) * 4096) / (panelWidth - 1);
++
++ /* Horizontal scaling enabled */
++ cra2 = 0xC0;
++ cr9f = horScalingFactor & 0x0003; /* HSCaleFactor[1:0] at CR9F[1:0] */
++ } else {
++ /* TODO: Need testing */
++ horScalingFactor = ((resWidth - 1) * 1024) / (panelWidth - 1);
++ }
+
+- /* Horizontal scaling enabled */
+- cra2 = 0xC0;
+- cr9f = horScalingFactor & 0x0003; /* HSCaleFactor[1:0] at CR9F[1:0] */
+ cr77 = (horScalingFactor & 0x03FC) >> 2; /* HSCaleFactor[9:2] at CR77[7:0] */
+ cr79 = (horScalingFactor & 0x0C00) >> 10; /* HSCaleFactor[11:10] at CR79[5:4] */
+ cr79 <<= 4;
+@@ -184,11 +190,18 @@
+ }
+
+ if (resHeight < panelHeight) {
+- verScalingFactor = ((resHeight - 1) * 2048) / (panelHeight - 1);
++ /* Load Vertical Scaling Factor */
++ if (pVia->Chipset != VIA_CLE266 && pVia->Chipset != VIA_KM400) {
++ verScalingFactor = ((resHeight - 1) * 2048) / (panelHeight - 1);
++
++ /* Vertical scaling enabled */
++ cra2 |= 0x08;
++ cr79 |= ((verScalingFactor & 0x0001) << 3); /* VSCaleFactor[0] at CR79[3] */
++ } else {
++ /* TODO: Need testing */
++ verScalingFactor = ((resHeight - 1) * 1024) / (panelHeight - 1);
++ }
+
+- /* Vertical scaling enabled */
+- cra2 |= 0x08;
+- cr79 |= ((verScalingFactor & 0x0001) << 3); /* VSCaleFactor[0] at CR79[3] */
+ cr78 |= (verScalingFactor & 0x01FE) >> 1; /* VSCaleFactor[8:1] at CR78[7:0] */
+ cr79 |= ((verScalingFactor & 0x0600) >> 9) << 6; /* VSCaleFactor[10:9] at CR79[7:6] */
+ scaling = TRUE;
+@@ -203,12 +216,18 @@
+ ViaCrtcMask(hwp, 0x77, cr77, 0xFF);
+ ViaCrtcMask(hwp, 0x78, cr78, 0xFF);
+ ViaCrtcMask(hwp, 0x79, cr79, 0xF8);
+- ViaCrtcMask(hwp, 0x9F, cr9f, 0x03);
++ if (pVia->Chipset != VIA_CLE266 && pVia->Chipset != VIA_KM400) {
++ ViaCrtcMask(hwp, 0x9F, cr9f, 0x03);
++ }
+ ViaCrtcMask(hwp, 0x79, 0x03, 0x03);
+- } else
++ } else {
++ /* Disable panel scale */
+ ViaCrtcMask(hwp, 0x79, 0x00, 0x01);
+-
+- ViaCrtcMask(hwp, 0xA2, cra2, 0xC8);
++ }
++
++ if (pVia->Chipset != VIA_CLE266 && pVia->Chipset != VIA_KM400) {
++ ViaCrtcMask(hwp, 0xA2, cra2, 0xC8);
++ }
+
+ /* Horizontal scaling selection: interpolation */
+ // ViaCrtcMask(hwp, 0x79, 0x02, 0x02);
+@@ -233,14 +252,14 @@
+
+ if (panelMode->Width && panelMode->Height) {
+
+- /* TODO: fix refresh rate and check malloc */
++ /* TODO: fix refresh rate */
+ DisplayModePtr p = malloc( sizeof(DisplayModeRec) ) ;
+- memset(p, 0, sizeof(DisplayModeRec));
++ if (p) {
++ memset(p, 0, sizeof(DisplayModeRec));
+
+- float refresh = 60.0f ;
++ float refresh = 60.0f ;
+
+- /* The following code is borrowed from xf86SetModeCrtc. */
+- if (p) {
++ /* The following code is borrowed from xf86SetModeCrtc. */
+ viaTimingCvt(p, panelMode->Width, panelMode->Height, refresh, FALSE, TRUE);
+ p->CrtcHDisplay = p->HDisplay;
+ p->CrtcHSyncStart = p->HSyncStart;
+@@ -256,9 +275,13 @@
+ p->CrtcVBlankEnd = max(p->CrtcVSyncEnd, p->CrtcVTotal);
+ p->CrtcHBlankStart = min(p->CrtcHSyncStart, p->CrtcHDisplay);
+ p->CrtcHBlankEnd = max(p->CrtcHSyncEnd, p->CrtcHTotal);
+-
++
++ pVia->pBIOSInfo->Panel->NativeDisplayMode = p;
++ } else {
++ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
++ "Out of memory. Size: %d bytes\n", sizeof(DisplayModeRec));
+ }
+- pVia->pBIOSInfo->Panel->NativeDisplayMode = p;
++
+ } else {
+ xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
+ "Invalid panel dimension (%dx%d)\n", panelMode->Width,
+@@ -339,22 +362,22 @@
+ ViaPanelGetSizeFromEDID(ScrnInfoPtr pScrn, xf86MonPtr pMon,
+ int *width, int *height)
+ {
+- int i, max = 0, vsize;
++ int i, max_hsize = 0, vsize = 0;
+
+ DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "VIAGetPanelSizeFromEDID\n"));
+
+ /* !!! Why are we not checking VESA modes? */
+
+ /* checking standard timings */
+- for (i = 0; i < 8; i++)
++ for (i = 0; i < STD_TIMINGS; i++)
+ if ((pMon->timings2[i].hsize > 256)
+- && (pMon->timings2[i].hsize > max)) {
+- max = pMon->timings2[i].hsize;
++ && (pMon->timings2[i].hsize > max_hsize)) {
++ max_hsize = pMon->timings2[i].hsize;
+ vsize = pMon->timings2[i].vsize;
+ }
+
+- if (max != 0) {
+- *width = max;
++ if (max_hsize != 0) {
++ *width = max_hsize;
+ *height = vsize;
+ return TRUE;
+ }
+@@ -369,14 +392,14 @@
+ struct detailed_timings timing = pMon->det_mon[i].section.d_timings;
+
+ /* ignore v_active for now */
+- if ((timing.clock > 15000000) && (timing.h_active > max)) {
+- max = timing.h_active;
++ if ((timing.clock > 15000000) && (timing.h_active > max_hsize)) {
++ max_hsize = timing.h_active;
+ vsize = timing.v_active;
+ }
+ }
+
+- if (max != 0) {
+- *width = max;
++ if (max_hsize != 0) {
++ *width = max_hsize;
+ *height = vsize;
+ return TRUE;
+ }
+diff -ruN xf86-video-openchrome-0.2.904/src/via_video.c ../openchrome/xf86-video-openchrome-0.2.904/src/via_video.c
+--- xf86-video-openchrome-0.2.904/src/via_video.c 2009-10-08 01:39:13.000000000 +0200
++++ ../openchrome/xf86-video-openchrome-0.2.904/src/via_video.c 2010-03-07 01:09:00.000000000 +0100
+@@ -466,8 +466,8 @@
+
+ viaVidEng->video1_ctl = 0;
+ viaVidEng->video3_ctl = 0;
+- viaVidEng->compose = 0x80000000;
+- viaVidEng->compose = 0x40000000;
++ viaVidEng->compose = V1_COMMAND_FIRE;
++ viaVidEng->compose = V3_COMMAND_FIRE;
+ viaVidEng->color_key = 0x821;
+ viaVidEng->snd_color_key = 0x821;
+
+@@ -479,16 +479,16 @@
+ VIAPtr pVia = VIAPTR(pScrn);
+ vmmtr viaVidEng = (vmmtr) pVia->VidMapBase;
+
++ DBG_DD(ErrorF(" via_video.c : viaSaveVideo : \n"));
+ /* Save video registers */
+- /* TODO: Identify which registers should be saved and restored */
+ memcpy(pVia->VideoRegs, (void*)viaVidEng, sizeof(video_via_regs));
+
+ pVia->dwV1 = ((vmmtr) viaVidEng)->video1_ctl;
+ pVia->dwV3 = ((vmmtr) viaVidEng)->video3_ctl;
+ viaVidEng->video1_ctl = 0;
+ viaVidEng->video3_ctl = 0;
+- viaVidEng->compose = 0x80000000;
+- viaVidEng->compose = 0x40000000;
++ viaVidEng->compose = V1_COMMAND_FIRE;
++ viaVidEng->compose = V3_COMMAND_FIRE;
+ }
+
+ void
+@@ -496,16 +496,65 @@
+ {
+ VIAPtr pVia = VIAPTR(pScrn);
+ vmmtr viaVidEng = (vmmtr) pVia->VidMapBase;
++ video_via_regs *localVidEng = pVia->VideoRegs;
++
+
++ DBG_DD(ErrorF(" via_video.c : viaRestoreVideo : \n"));
+ /* Restore video registers */
+- /* TODO: Identify which registers should be saved and restored */
+- memcpy((void*)viaVidEng, pVia->VideoRegs, sizeof(video_via_regs));
+-
++ /* flush restored video engines' setting to VidMapBase */
++
++ viaVidEng->alphawin_hvstart = localVidEng->alphawin_hvstart;
++ viaVidEng->alphawin_size = localVidEng->alphawin_size;
++ viaVidEng->alphawin_ctl = localVidEng->alphawin_ctl;
++ viaVidEng->alphafb_stride = localVidEng->alphafb_stride;
++ viaVidEng->color_key = localVidEng->color_key;
++ viaVidEng->alphafb_addr = localVidEng->alphafb_addr;
++ viaVidEng->chroma_low = localVidEng->chroma_low;
++ viaVidEng->chroma_up = localVidEng->chroma_up;
++
++ if (pVia->ChipId != PCI_CHIP_VT3314)
++ {
++ /*VT3314 only has V3*/
++ viaVidEng->video1_ctl = localVidEng->video1_ctl;
++ viaVidEng->video1_fetch = localVidEng->video1_fetch;
++ viaVidEng->video1y_addr1 = localVidEng->video1y_addr1;
++ viaVidEng->video1_stride = localVidEng->video1_stride;
++ viaVidEng->video1_hvstart = localVidEng->video1_hvstart;
++ viaVidEng->video1_size = localVidEng->video1_size;
++ viaVidEng->video1y_addr2 = localVidEng->video1y_addr2;
++ viaVidEng->video1_zoom = localVidEng->video1_zoom;
++ viaVidEng->video1_mictl = localVidEng->video1_mictl;
++ viaVidEng->video1y_addr0 = localVidEng->video1y_addr0;
++ viaVidEng->video1_fifo = localVidEng->video1_fifo;
++ viaVidEng->video1y_addr3 = localVidEng->video1y_addr3;
++ viaVidEng->v1_source_w_h = localVidEng->v1_source_w_h ;
++ viaVidEng->video1_CSC1 = localVidEng->video1_CSC1;
++ viaVidEng->video1_CSC2 = localVidEng->video1_CSC2;
++ }
++ viaVidEng->snd_color_key = localVidEng->snd_color_key;
++ viaVidEng->v3alpha_prefifo = localVidEng->v3alpha_prefifo;
++ viaVidEng->v3alpha_fifo = localVidEng->v3alpha_fifo;
++ viaVidEng->video3_CSC2 = localVidEng->video3_CSC2;
++ viaVidEng->video3_CSC2 = localVidEng->video3_CSC2;
++ viaVidEng->v3_source_width = localVidEng->v3_source_width;
++ viaVidEng->video3_ctl = localVidEng->video3_ctl;
++ viaVidEng->video3_addr0 = localVidEng->video3_addr0;
++ viaVidEng->video3_addr1 = localVidEng->video3_addr1;
++ viaVidEng->video3_stride = localVidEng->video3_stride;
++ viaVidEng->video3_hvstart = localVidEng->video3_hvstart;
++ viaVidEng->video3_size = localVidEng->video3_size;
++ viaVidEng->v3alpha_fetch = localVidEng->v3alpha_fetch;
++ viaVidEng->video3_zoom = localVidEng->video3_zoom;
++ viaVidEng->video3_mictl = localVidEng->video3_mictl;
++ viaVidEng->video3_CSC1 = localVidEng->video3_CSC1;
++ viaVidEng->video3_CSC2 = localVidEng->video3_CSC2;
++ viaVidEng->compose = localVidEng->compose;
++
+ viaVidEng->video1_ctl = pVia->dwV1;
+ viaVidEng->video3_ctl = pVia->dwV3;
+- viaVidEng->compose = 0x80000000;
+- viaVidEng->compose = 0x40000000;
+-
++ if (pVia->ChipId != PCI_CHIP_VT3314)
++ viaVidEng->compose = V1_COMMAND_FIRE;
++ viaVidEng->compose = V3_COMMAND_FIRE;
+ }
+
+ void
+@@ -524,8 +573,8 @@
+
+ viaVidEng->video1_ctl = 0;
+ viaVidEng->video3_ctl = 0;
+- viaVidEng->compose = 0x80000000;
+- viaVidEng->compose = 0x40000000;
++ viaVidEng->compose = V1_COMMAND_FIRE;
++ viaVidEng->compose = V3_COMMAND_FIRE;
+
+ /*
+ * Free all adaptor info allocated in viaInitVideo.
+@@ -561,7 +610,7 @@
+ XF86VideoAdaptorPtr *adaptors, *newAdaptors;
+ int num_adaptors, num_new;
+
+- DBG_DD(ErrorF(" via_video.c : viaInitVideo : \n"));
++ DBG_DD(ErrorF(" via_video.c : viaInitVideo, Screen[%d]\n", pScrn->scrnIndex));
+
+ allAdaptors = NULL;
+ newAdaptors = NULL;
+@@ -832,7 +881,7 @@
+ DevUnion *pdevUnion;
+ int i, j, usedPorts, numPorts;
+
+- DBG_DD(ErrorF(" via_video.c : viaSetupImageVideo: \n"));
++ DBG_DD(ErrorF(" via_video.c : viaSetupAdaptors (viaSetupImageVideo): \n"));
+
+ xvBrightness = MAKE_ATOM("XV_BRIGHTNESS");
+ xvContrast = MAKE_ATOM("XV_CONTRAST");
+@@ -1042,6 +1091,8 @@
+ }
+
+ } else {
++ DBG_DD(ErrorF(" via_video.c : viaGetPortAttribute : is not supported the attribute\n"));
++
+ /*return BadMatch */;
+ }
+ return Success;
+@@ -1498,6 +1549,7 @@
+
+ DBG_DD(ErrorF(" via_video.c : viaQueryImageAttributes : FourCC=0x%x, ",
+ id));
++ DBG_DD(ErrorF(" via_video.c : Screen[%d], w=%d, h=%d\n", pScrn->scrnIndex, *w, *h));
+
+ if ((!w) || (!h))
+ return 0;
+@@ -1513,6 +1565,7 @@
+
+ switch (id) {
+ case FOURCC_YV12: /*Planar format : YV12 -4:2:0 */
++ case FOURCC_I420:
+ *h = (*h + 1) & ~1;
+ size = *w;
+ if (pVia->useDmaBlit)
+diff -ruN xf86-video-openchrome-0.2.904/src/via_video.h ../openchrome/xf86-video-openchrome-0.2.904/src/via_video.h
+--- xf86-video-openchrome-0.2.904/src/via_video.h 2009-10-03 22:48:55.000000000 +0200
++++ ../openchrome/xf86-video-openchrome-0.2.904/src/via_video.h 2010-03-07 01:09:00.000000000 +0100
+@@ -44,6 +44,10 @@
+
+ #define VIDEO_BPP 2
+
++
++#define V1_COMMAND_FIRE 0x80000000 /* V1 commands fire */
++#define V3_COMMAND_FIRE 0x40000000 /* V3 commands fire */
++
+ typedef struct
+ {
+ CARD32 interruptflag; /* 200 */
+@@ -89,7 +93,7 @@
+ CARD32 video3_ctl; /* 2a0 */
+ CARD32 video3_addr0; /* 2a4 */
+ CARD32 video3_addr1; /* 2a8 */
+- CARD32 video3_stribe; /* 2ac */
++ CARD32 video3_stride; /* 2ac */
+ CARD32 video3_hvstart; /* 2b0 */
+ CARD32 video3_size; /* 2b4 */
+ CARD32 v3alpha_fetch; /* 2b8 */
diff --git a/extra/xf86-video-r128/LICENSE b/extra/xf86-video-r128/LICENSE
new file mode 100644
index 000000000..229a26157
--- /dev/null
+++ b/extra/xf86-video-r128/LICENSE
@@ -0,0 +1,219 @@
+
+Copyright 1997 through 2004 by Marc Aurele La France (TSI @ UQV), tsi@xfree86.org
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that copyright
+notice and this permission notice appear in supporting documentation, and
+that the name of Marc Aurele La France not be used in advertising or
+publicity pertaining to distribution of the software without specific,
+written prior permission. Marc Aurele La France makes no representations
+about the suitability of this software for any purpose. It is provided
+"as-is" without express or implied warranty.
+
+MARC AURELE LA FRANCE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
+EVENT SHALL MARC AURELE LA FRANCE BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+
+Copyright 2000 Gareth Hughes
+All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the "Software"),
+to deal in the Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, sublicense,
+and/or sell copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice (including the next
+paragraph) shall be included in all copies or substantial portions of the
+Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+GARETH HUGHES BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+(c) 2004 Adam Jackson. Standard MIT license applies.
+
+Copyright 1999-2000 Precision Insight, Inc., Cedar Park, Texas.
+All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to
+deal in the Software without restriction, including without limitation the
+rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice (including the next
+paragraph) shall be included in all copies or substantial portions of the
+Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
+PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+Copyright 1999, 2000 ATI Technologies Inc., Markham, Ontario,
+Precision Insight, Inc., Cedar Park, Texas, and
+VA Linux Systems Inc., Fremont, California.
+
+All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation on the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of the Software,
+and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice (including the
+next paragraph) shall be included in all copies or substantial
+portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NON-INFRINGEMENT. IN NO EVENT SHALL ATI, PRECISION INSIGHT, VA LINUX
+SYSTEMS AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Copyright 2003 Alex Deucher.
+
+All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation on the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of the Software,
+and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice (including the
+next paragraph) shall be included in all copies or substantial
+portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NON-INFRINGEMENT. IN NO EVENT SHALL ALEX DEUCHER, OR ANY OTHER
+CONTRIBUTORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+
+/**************************************************************************
+
+Copyright 1999, 2000 ATI Technologies Inc. and Precision Insight, Inc.,
+ Cedar Park, Texas.
+All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the "Software"),
+to deal in the Software without restriction, including without limitation
+on the rights to use, copy, modify, merge, publish, distribute, sub
+license, and/or sell copies of the Software, and to permit persons to whom
+the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice (including the next
+paragraph) shall be included in all copies or substantial portions of the
+Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
+ATI, PRECISION INSIGHT AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+**************************************************************************/
+
+/*
+ * Authors:
+ * Kevin E. Martin <martin@valinux.com>
+ * Gareth Hughes <gareth@valinux.com>
+ *
+ */
+
+/**************************************************************************
+
+Copyright 2000, 2001 ATI Technologies Inc., Ontario, Canada, and
+ VA Linux Systems Inc., Fremont, California.
+
+All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the "Software"),
+to deal in the Software without restriction, including without limitation
+on the rights to use, copy, modify, merge, publish, distribute, sub
+license, and/or sell copies of the Software, and to permit persons to whom
+the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice (including the next
+paragraph) shall be included in all copies or substantial portions of the
+Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
+ATI, VA LINUX SYSTEMS AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+**************************************************************************/
+
+/*
+ * Copyright 1999, 2000 ATI Technologies Inc., Markham, Ontario,
+ * Precision Insight, Inc., Cedar Park, Texas, and
+ * VA Linux Systems Inc., Fremont, California.
+ *
+ * All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation on the rights to use, copy, modify, merge,
+ * publish, distribute, sublicense, and/or sell copies of the Software,
+ * and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial
+ * portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NON-INFRINGEMENT. IN NO EVENT SHALL ATI, PRECISION INSIGHT, VA LINUX
+ * SYSTEMS AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+ * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ * OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/*
+ * Authors:
+ * Kevin E. Martin <martin@valinux.com>
+ * Rickard E. Faith <faith@valinux.com>
+ * Daryll Strauss <daryll@valinux.com>
+ * Gareth Hughes <gareth@valinux.com>
+ *
+ */
+
diff --git a/extra/xf86-video-r128/PKGBUILD b/extra/xf86-video-r128/PKGBUILD
new file mode 100644
index 000000000..a5f3e09ea
--- /dev/null
+++ b/extra/xf86-video-r128/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 114494 2011-03-14 09:01:03Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xf86-video-r128
+pkgver=6.8.1
+pkgrel=5
+pkgdesc="X.org ati Rage128 video driver"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('glibc' 'r128-dri')
+makedepends=('xorg-server-devel' 'xf86driproto' 'libdrm' 'mesa')
+conflicts=('xorg-server<1.9.0')
+groups=('xorg-drivers' 'xorg')
+options=('!libtool')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2
+ LICENSE)
+md5sums=('2b90854a62a4d45d652062f582dc8d13'
+ '97ad034bea2a153f4418a6bb0c77acf4')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --enable-dri
+ make
+ make DESTDIR="${pkgdir}" install
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -D -m644 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xf86-video-rendition/PKGBUILD b/extra/xf86-video-rendition/PKGBUILD
new file mode 100644
index 000000000..d5b2ed3f4
--- /dev/null
+++ b/extra/xf86-video-rendition/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 114499 2011-03-14 09:14:01Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xf86-video-rendition
+pkgver=4.2.4
+pkgrel=3
+pkgdesc="X.org Rendition video driver"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('glibc')
+makedepends=('xorg-server-devel')
+conflicts=('xorg-server<1.9.0')
+options=('!libtool' '!strip')
+groups=('xorg-drivers' 'xorg')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('16148c25183f7829c22bc9dfdb588c1a16bf4565')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+
+ strip --strip-unneeded "${pkgdir}/usr/lib/xorg/modules/drivers/rendition_drv.so"
+}
diff --git a/extra/xf86-video-s3/LICENSE b/extra/xf86-video-s3/LICENSE
new file mode 100644
index 000000000..a4c8d5dd4
--- /dev/null
+++ b/extra/xf86-video-s3/LICENSE
@@ -0,0 +1,25 @@
+This package was downloaded from
+http://xorg.freedesktop.org/releases/individual/driver/
+
+ Copyright 2001 Ani Joshi <ajoshi@unixbox.com>
+
+ XFree86 4.x driver for S3 chipsets
+
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that copyright
+notice and this permission notice appear in supporting documentation and
+that the name of Ani Joshi not be used in advertising or
+publicity pertaining to distribution of the software without specific,
+written prior permission. Ani Joshi makes no representations
+about the suitability of this software for any purpose. It is provided
+"as-is" without express or implied warranty.
+
+ANI JOSHI DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL ANI JOSHI BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
diff --git a/extra/xf86-video-s3/PKGBUILD b/extra/xf86-video-s3/PKGBUILD
new file mode 100644
index 000000000..75922daa7
--- /dev/null
+++ b/extra/xf86-video-s3/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 114504 2011-03-14 09:17:06Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xf86-video-s3
+pkgver=0.6.3
+pkgrel=4
+pkgdesc="X.org S3 video driver"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('glibc')
+makedepends=('xorg-server-devel')
+conflicts=('xorg-server<1.9.0')
+options=('!libtool')
+groups=('xorg-drivers' 'xorg')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2
+ LICENSE)
+md5sums=('5eb06d88533fb327d067928faeb20860'
+ '6b2bea29522da7cbb81cadde3235024d')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+}
diff --git a/extra/xf86-video-s3virge/LICENSE b/extra/xf86-video-s3virge/LICENSE
new file mode 100644
index 000000000..23c2aea22
--- /dev/null
+++ b/extra/xf86-video-s3virge/LICENSE
@@ -0,0 +1,25 @@
+This package was downloaded from
+http://xorg.freedesktop.org/releases/individual/driver/
+
+Copyright (C) 1994-2000 The XFree86 Project, Inc. All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT-
+NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+XFREE86 PROJECT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of the XFree86 Project shall not
+be used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from the XFree86 Project.
diff --git a/extra/xf86-video-s3virge/PKGBUILD b/extra/xf86-video-s3virge/PKGBUILD
new file mode 100644
index 000000000..4e8197f25
--- /dev/null
+++ b/extra/xf86-video-s3virge/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 114509 2011-03-14 09:19:18Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Alexander Baldeck <alexander@archlinux.org>
+
+pkgname=xf86-video-s3virge
+pkgver=1.10.4
+pkgrel=4
+pkgdesc="X.org S3 Virge video driver"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('glibc')
+makedepends=('pkgconfig' 'xorg-server-devel')
+conflicts=('xorg-server<1.9.0')
+options=(!libtool)
+groups=('xorg-drivers' 'xorg')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2
+ LICENSE)
+md5sums=('6517bbbf808c700502d51acdc44662f8' 'c0a38dfcd6288eff39322f7c584b8d1e')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xf86-video-savage/PKGBUILD b/extra/xf86-video-savage/PKGBUILD
new file mode 100644
index 000000000..1b45ea10b
--- /dev/null
+++ b/extra/xf86-video-savage/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 114514 2011-03-14 09:27:55Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xf86-video-savage
+pkgver=2.3.2
+pkgrel=1
+pkgdesc="X.org savage video driver"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('glibc' 'savage-dri')
+makedepends=('xorg-server-devel' 'libdrm' 'xf86driproto' 'mesa')
+conflicts=('xorg-server<1.9.0')
+options=(!libtool !makeflags)
+groups=('xorg-drivers' 'xorg')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('d675693d0b29cb24f624ef57c1fe2f271f6bf6c3')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --enable-dri
+ make
+ make DESTDIR="${pkgdir}" install
+
+ install -d -m755 "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xf86-video-siliconmotion/PKGBUILD b/extra/xf86-video-siliconmotion/PKGBUILD
new file mode 100644
index 000000000..a96a09d77
--- /dev/null
+++ b/extra/xf86-video-siliconmotion/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 114519 2011-03-14 09:30:23Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Alexander Baldeck <alexander@archlinux.org>
+
+pkgname=xf86-video-siliconmotion
+pkgver=1.7.5
+pkgrel=1
+pkgdesc="X.org siliconmotion video driver"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('glibc')
+makedepends=('xorg-server-devel')
+conflicts=('xorg-server<1.9.0')
+options=('!libtool')
+groups=('xorg-drivers' 'xorg')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('946acae0822d51da57abe8b7ed049691bd731589')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xf86-video-sis/PKGBUILD b/extra/xf86-video-sis/PKGBUILD
new file mode 100644
index 000000000..e595debd0
--- /dev/null
+++ b/extra/xf86-video-sis/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 114524 2011-03-14 09:33:33Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xf86-video-sis
+pkgver=0.10.3
+pkgrel=3
+pkgdesc="X.org SiS video driver"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('glibc' 'sis-dri')
+makedepends=('xorg-server-devel' 'xf86dgaproto' 'libdrm' 'xf86driproto' 'mesa')
+conflicts=('xorg-server<1.9.0')
+options=('!libtool')
+groups=('xorg-drivers' 'xorg')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('158673747e240b0c33499685a32d46bdaead7cd5')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --enable-dri
+ make
+ make DESTDIR="${pkgdir}" install
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xf86-video-sisusb/PKGBUILD b/extra/xf86-video-sisusb/PKGBUILD
new file mode 100644
index 000000000..24320dc52
--- /dev/null
+++ b/extra/xf86-video-sisusb/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 114529 2011-03-14 09:35:17Z jgc $
+#Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xf86-video-sisusb
+pkgver=0.9.4
+pkgrel=3
+pkgdesc="X.org SiS USB video driver"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('glibc')
+makedepends=('xorg-server-devel')
+conflicts=('xorg-server<1.9.0')
+groups=('xorg-drivers' 'xorg')
+options=('!libtool')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('600fd49dffe00121f9042555fea55948653d1a7e')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xf86-video-tdfx/LICENSE b/extra/xf86-video-tdfx/LICENSE
new file mode 100644
index 000000000..08b1adde5
--- /dev/null
+++ b/extra/xf86-video-tdfx/LICENSE
@@ -0,0 +1,160 @@
+Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
+All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sub license, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice (including the
+next paragraph) shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
+ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+/*
+ * Copyright 2000 VA Linux Systems Inc., Fremont, California.
+ *
+ * All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * VA LINUX SYSTEMS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
+ * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+
+/*
+ * GLX Hardware Device Driver for Intel i810
+ * Copyright (C) 1999 Keith Whitwell
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * KEITH WHITWELL, OR ANY OTHER CONTRIBUTORS BE LIABLE FOR ANY CLAIM,
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
+ * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ *
+ */
+
+
+/*
+ * GLX Hardware Device Driver for Intel tdfx
+ * Copyright (C) 1999 Keith Whitwell
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * KEITH WHITWELL, OR ANY OTHER CONTRIBUTORS BE LIABLE FOR ANY CLAIM,
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
+ * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ *
+ */
+
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 4.1
+ *
+ * Copyright (C) 1999-2002 Brian Paul All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/* Authors:
+ * Keith Whitwell <keith@tungstengraphics.com>
+ * Daniel Borca <dborca@users.sourceforge.net>
+ */
+
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 5.1
+ *
+ * Copyright (C) 1999-2003 Brian Paul All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/* Authors:
+ * Keith Whitwell
+ * Daniel Borca
+ */
diff --git a/extra/xf86-video-tdfx/PKGBUILD b/extra/xf86-video-tdfx/PKGBUILD
new file mode 100644
index 000000000..3fa0e88cd
--- /dev/null
+++ b/extra/xf86-video-tdfx/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 114534 2011-03-14 09:41:17Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xf86-video-tdfx
+pkgver=1.4.3
+pkgrel=5
+pkgdesc="X.org tdfx video driver"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('glibc' 'tdfx-dri')
+makedepends=('xorg-server-devel' 'libdrm' 'xf86driproto' 'mesa')
+conflicts=('xorg-server<1.9.0')
+options=(!libtool)
+groups=('xorg-drivers' 'xorg')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2
+ LICENSE)
+md5sums=('8161bbf2b100c21b609163f0010766b3'
+ '978e9486ffd4e4164c12dc68c84186e1')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --enable-dri
+ make
+ make DESTDIR="${pkgdir}" install
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xf86-video-trident/PKGBUILD b/extra/xf86-video-trident/PKGBUILD
new file mode 100644
index 000000000..3d43fed51
--- /dev/null
+++ b/extra/xf86-video-trident/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 114539 2011-03-14 09:43:00Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xf86-video-trident
+pkgver=1.3.4
+pkgrel=3
+pkgdesc="X.org Trident video driver"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('glibc')
+makedepends=('xorg-server-devel' 'xf86dgaproto')
+conflicts=('xorg-server<1.9.0')
+groups=('xorg-drivers' 'xorg')
+options=(!libtool)
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('7c40f5c02bddf399862782b708941e79302318af')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1
+}
diff --git a/extra/xf86-video-tseng/PKGBUILD b/extra/xf86-video-tseng/PKGBUILD
new file mode 100644
index 000000000..80115fcbe
--- /dev/null
+++ b/extra/xf86-video-tseng/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 114544 2011-03-14 09:47:29Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xf86-video-tseng
+pkgver=1.2.4
+pkgrel=3
+pkgdesc="X.org tseng video driver"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('glibc')
+makedepends=('xorg-server-devel')
+conflicts=('xorg-server<1.9.0')
+groups=('xorg-drivers' 'xorg')
+options=('!libtool')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('1b45f55657b2c92f30abb0769cae57fca98d93b7')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xf86-video-unichrome/LICENSE b/extra/xf86-video-unichrome/LICENSE
new file mode 100644
index 000000000..f4007667b
--- /dev/null
+++ b/extra/xf86-video-unichrome/LICENSE
@@ -0,0 +1,23 @@
+Copyright (c) 2004-2007 Luc Verhaegen. All Rights Reserved.
+Copyright (c) 2004-2005 The Unichrome Project. All Rights Reserved.
+Copyright (c) 1998-2003 VIA Technologies, Inc. All Rights Reserved.
+Copyright (c) 2001-2003 S3 Graphics, Inc. All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the "Software"),
+to deal in the Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, sub license,
+and/or sell copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice (including the
+next paragraph) shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
+THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
diff --git a/extra/xf86-video-unichrome/PKGBUILD b/extra/xf86-video-unichrome/PKGBUILD
new file mode 100644
index 000000000..b2aa60e45
--- /dev/null
+++ b/extra/xf86-video-unichrome/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 88691 2010-08-24 13:31:22Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+pkgname=xf86-video-unichrome
+pkgver=0.2.7
+pkgrel=4
+_gitversion=cd12cce88ff886031c23c743569fba97eccace4e
+pkgdesc="Unichrome video drivers for X.Org"
+arch=(i686 x86_64)
+url="http://unichrome.sf.net/"
+license=('custom')
+depends=('glibc' 'unichrome-dri')
+makedepends=('xorg-server-devel' 'libx11' 'libdrm' 'xf86driproto' 'mesa' 'libxvmc')
+options=('!libtool')
+conflicts=('xf86-video-via' 'openchrome' 'xf86-video-openchrome' 'xorg-server<1.9.0')
+source=(http://cgit.freedesktop.org/~libv/${pkgname}/snapshot/${pkgname}-${_gitversion}.tar.bz2
+ drm-include.patch
+ LICENSE)
+md5sums=('c64332e6c386ed9a580116e131f288f4'
+ '4a9bf2e3ef338c170a2f58988ebb97dc'
+ '6ea7d64c87c5c32201a1e38e3336e44a')
+
+build() {
+ cd "${srcdir}/${pkgname}-${_gitversion}"
+ patch -Np0 -i "${srcdir}/drm-include.patch"
+ ./autogen.sh --prefix=/usr --enable-dri
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xf86-video-unichrome/drm-include.patch b/extra/xf86-video-unichrome/drm-include.patch
new file mode 100644
index 000000000..edfe9a8af
--- /dev/null
+++ b/extra/xf86-video-unichrome/drm-include.patch
@@ -0,0 +1,11 @@
+--- src/via_memory.h.orig 2010-05-09 16:17:00.143352805 +0200
++++ src/via_memory.h 2010-05-09 16:17:14.433351301 +0200
+@@ -30,7 +30,7 @@
+
+ /* don't include local via_drm.h when using modular */
+ #ifdef HAVE_CONFIG_H
+-#include "drm/via_drm.h"
++#include <via_drm.h>
+ #else
+ #include "via_drm.h"
+ #endif
diff --git a/extra/xf86-video-v4l/LICENSE b/extra/xf86-video-v4l/LICENSE
new file mode 100644
index 000000000..535595b88
--- /dev/null
+++ b/extra/xf86-video-v4l/LICENSE
@@ -0,0 +1,826 @@
+This package was downloaded from
+http://xorg.freedesktop.org/releases/individual/driver/
+
+ Licenses
+
+ The X.Org Foundation
+
+ March 2004
+
+1. Introduction
+
+The X.org Foundation X Window System distribution is a compilation of code
+and documentation from many sources. This document is intended primarily as
+a guide to the licenses used in the distribution: you must check each file
+and/or package for precise redistribution terms. None-the-less, this summary
+may be useful to many users. No software incorporating the XFree86 1.1
+license has been incorporated.
+
+This document is based on the compilation from XFree86.
+
+2. XFree86 License
+
+XFree86 code without an explicit copyright is covered by the following copy-
+right/license:
+
+Copyright (C) 1994-2003 The XFree86 Project, Inc. All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is fur-
+nished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT-
+NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+XFREE86 PROJECT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CON-
+NECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of the XFree86 Project shall not
+be used in advertising or otherwise to promote the sale, use or other deal-
+ings in this Software without prior written authorization from the XFree86
+Project.
+
+3. Other Licenses
+
+Portions of code are covered by the following licenses/copyrights. See indi-
+vidual files for the copyright dates.
+
+3.1 X/MIT Copyrights
+
+3.1.1 X Consortium
+
+Copyright (C) <date> X Consortium
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is fur-
+nished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT-
+NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE X
+CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of the X Consortium shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from the X Consortium.
+
+X Window System is a trademark of X Consortium, Inc.
+
+3.1.2 The Open Group
+
+Copyright <date> The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that copyright
+notice and this permission notice appear in supporting documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT-
+NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+3.2 Berkeley-based copyrights:
+
+o
+
+3.2.1 General
+
+Redistribution and use in source and binary forms, with or without modifica-
+tion, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ 3. The name of the author may not be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MER-
+CHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPE-
+CIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTH-
+ERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+OF THE POSSIBILITY OF SUCH DAMAGE.
+
+3.2.2 UCB/LBL
+
+Copyright (c) 1993 The Regents of the University of California. All rights
+reserved.
+
+This software was developed by the Computer Systems Engineering group at
+Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and contributed to
+Berkeley.
+
+All advertising materials mentioning features or use of this software must
+display the following acknowledgement: This product includes software devel-
+oped by the University of California, Lawrence Berkeley Laboratory.
+
+Redistribution and use in source and binary forms, with or without modifica-
+tion, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ 3. All advertising materials mentioning features or use of this software
+ must display the following acknowledgement: This product includes soft-
+ ware developed by the University of California, Berkeley and its con-
+ tributors.
+
+ 4. Neither the name of the University nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DIS-
+CLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+3.2.3 The NetBSD Foundation, Inc.
+
+Copyright (c) 2003 The NetBSD Foundation, Inc. All rights reserved.
+
+This code is derived from software contributed to The NetBSD Foundation by
+Ben Collver <collver1@attbi.com>
+
+Redistribution and use in source and binary forms, with or without modifica-
+tion, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ 3. All advertising materials mentioning features or use of this software
+ must display the following acknowledgement: This product includes soft-
+ ware developed by the NetBSD Foundation, Inc. and its contributors.
+
+ 4. Neither the name of The NetBSD Foundation nor the names of its con-
+ tributors may be used to endorse or promote products derived from this
+ software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSE-
+QUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAM-
+AGE.
+
+3.2.4 Theodore Ts'o.
+
+Copyright Theodore Ts'o, 1994, 1995, 1996, 1997, 1998, 1999. All rights
+reserved.
+
+Redistribution and use in source and binary forms, with or without modifica-
+tion, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ and the entire permission notice in its entirety, including the dis-
+ claimer of warranties.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ 3. he name of the author may not be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE, ALL OF WHICH ARE HEREBY DISCLAIMED. IN NO
+EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPE-
+CIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTH-
+ERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF NOT
+ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+3.2.5 Theo de Raadt and Damien Miller
+
+Copyright (c) 1995,1999 Theo de Raadt. All rights reserved. Copyright (c)
+2001-2002 Damien Miller. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modifica-
+tion, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MER-
+CHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPE-
+CIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTH-
+ERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+OF THE POSSIBILITY OF SUCH DAMAGE.
+
+3.2.6 Todd C. Miller
+
+Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com>
+
+Permission to use, copy, modify, and distribute this software for any purpose
+with or without fee is hereby granted, provided that the above copyright
+notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND TODD C. MILLER DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MER-
+CHANTABILITY AND FITNESS. IN NO EVENT SHALL TODD C. MILLER BE LIABLE FOR ANY
+SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CON-
+TRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+3.2.7 Thomas Winischhofer
+
+Copyright (C) 2001-2004 Thomas Winischhofer
+
+Redistribution and use in source and binary forms, with or without modifica-
+tion, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ 3. The name of the author may not be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESSED OR
+IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPE-
+CIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTH-
+ERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+OF THE POSSIBILITY OF SUCH DAMAGE.
+
+3.3 NVIDIA Corp
+
+Copyright (c) 1996 NVIDIA, Corp. All rights reserved.
+
+NOTICE TO USER: The source code is copyrighted under U.S. and international
+laws. NVIDIA, Corp. of Sunnyvale, California owns the copyright and as
+design patents pending on the design and interface of the NV chips. Users
+and possessors of this source code are hereby granted a nonexclusive, roy-
+alty-free copyright and design patent license to use this code in individual
+and commercial software.
+
+Any use of this source code must include, in the user documentation and
+internal comments to the code, notices to the end user as follows:
+
+Copyright (c) 1996 NVIDIA, Corp. NVIDIA design patents pending in the U.S.
+and foreign countries.
+
+NVIDIA, CORP. MAKES NO REPRESENTATION ABOUT THE SUITABILITY OF THIS SOURCE
+CODE FOR ANY PURPOSE. IT IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WAR-
+RANTY OF ANY KIND. NVIDIA, CORP. DISCLAIMS ALL WARRANTIES WITH REGARD TO
+THIS SOURCE CODE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL NVIDIA, CORP. BE LIABLE
+FOR ANY SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, OR ANY DAM-
+AGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOURCE CODE.
+
+3.4 GLX Public License
+
+GLX PUBLIC LICENSE (Version 1.0 (2/11/99)) ("License")
+
+Subject to any third party claims, Silicon Graphics, Inc. ("SGI") hereby
+grants permission to Recipient (defined below), under Recipient's copyrights
+in the Original Software (defined below), to use, copy, modify, merge, pub-
+lish, distribute, sublicense and/or sell copies of Subject Software (defined
+below), and to permit persons to whom the Subject Software is furnished in
+accordance with this License to do the same, subject to all of the following
+terms and conditions, which Recipient accepts by engaging in any such use,
+copying, modifying, merging, publishing, distributing, sublicensing or sell-
+ing:
+
+1. Definitions.
+
+ (a) "Original Software" means source code of computer software code
+ which is described in Exhibit A as Original Software.
+
+ (b) "Modifications" means any addition to or deletion from the sub-
+ stance or structure of either the Original Software or any previous
+ Modifications. When Subject Software is released as a series of
+ files, a Modification means (i) any addition to or deletion from
+ the contents of a file containing Original Software or previous
+ Modifications and (ii) any new file that contains any part of the
+ Original Code or previous Modifications.
+
+ (c) "Subject Software" means the Original Software or Modifications
+ or the combination of the Original Software and Modifications, or
+ portions of any of the foregoing.
+
+ (d) "Recipient" means an individual or a legal entity exercising
+ rights under, and complying with all of the terms of, this License.
+ For legal entities, "Recipient" includes any entity which controls,
+ is controlled by, or is under common control with Recipient. For
+ purposes of this definition, "control" of an entity means (a) the
+ power, direct or indirect, to direct or manage such entity, or (b)
+ ownership of fifty percent (50%) or more of the outstanding shares
+ or beneficial ownership of such entity.
+
+2. Redistribution of Source Code Subject to These Terms. Redistributions of
+Subject Software in source code form must retain the notice set forth in
+Exhibit A, below, in every file. A copy of this License must be included in
+any documentation for such Subject Software where the recipients' rights
+relating to Subject Software are described. Recipient may distribute the
+source code version of Subject Software under a license of Recipient's
+choice, which may contain terms different from this License, provided that
+(i) Recipient is in compliance with the terms of this License, and (ii) the
+license terms include this Section 2 and Sections 3, 4, 7, 8, 10, 12 and 13
+of this License, which terms may not be modified or superseded by any other
+terms of such license. If Recipient distributes the source code version under
+a different license Recipient must make it absolutely clear that any terms
+which differ from this License are offered by Recipient alone, not by SGI.
+Recipient hereby agrees to indemnify SGI for any liability incurred by SGI as
+a result of any such terms Recipient offers.
+
+3. Redistribution in Executable Form. The notice set forth in Exhibit A must
+be conspicuously included in any notice in an executable version of Subject
+Software, related documentation or collateral in which Recipient describes
+the user's rights relating to the Subject Software. Recipient may distribute
+the executable version of Subject Software under a license of Recipient's
+choice, which may contain terms different from this License, provided that
+(i) Recipient is in compliance with the terms of this License, and (ii) the
+license terms include this Section 3 and Sections 4, 7, 8, 10, 12 and 13 of
+this License, which terms may not be modified or superseded by any other
+terms of such license. If Recipient distributes the executable version under
+a different license Recipient must make it absolutely clear that any terms
+which differ from this License are offered by Recipient alone, not by SGI.
+Recipient hereby agrees to indemnify SGI for any liability incurred by SGI as
+a result of any such terms Recipient offers.
+
+4. Termination. This License and the rights granted hereunder will terminate
+automatically if Recipient fails to comply with terms herein and fails to
+cure such breach within 30 days of the breach. Any sublicense to the Subject
+Software which is properly granted shall survive any termination of this
+License absent termination by the terms of such sublicense. Provisions which,
+by their nature, must remain in effect beyond the termination of this License
+shall survive.
+
+5. No Trademark Rights. This License does not grant any rights to use any
+trade name, trademark or service mark whatsoever. No trade name, trademark or
+service mark of SGI may be used to endorse or promote products derived from
+the Subject Software without prior written permission of SGI.
+
+6. No Other Rights. This License does not grant any rights with respect to
+the OpenGL API or to any software or hardware implementation thereof or to
+any other software whatsoever, nor shall any other rights or licenses not
+expressly granted hereunder arise by implication, estoppel or otherwise with
+respect to the Subject Software. Title to and ownership of the Original Soft-
+ware at all times remains with SGI. All rights in the Original Software not
+expressly granted under this License are reserved.
+
+7. Compliance with Laws; Non-Infringement. Recipient shall comply with all
+applicable laws and regulations in connection with use and distribution of
+the Subject Software, including but not limited to, all export and import
+control laws and regulations of the U.S. government and other countries.
+Recipient may not distribute Subject Software that (i) in any way infringes
+(directly or contributorily) the rights (including patent, copyright, trade
+secret, trademark or other intellectual property rights of any kind) of any
+other person or entity or (ii) breaches any representation or warranty,
+express, implied or statutory, which under any applicable law it might be
+deemed to have been distributed.
+
+8. Claims of Infringement. If Recipient at any time has knowledge of any one
+or more third party claims that reproduction, modification, use, distribu-
+tion, import or sale of Subject Software (including particular functionality
+or code incorporated in Subject Software) infringes the third party's intel-
+lectual property rights, Recipient must place in a well-identified web page
+bearing the title "LEGAL" a description of each such claim and a description
+of the party making each such claim in sufficient detail that a user of the
+Subject Software will know whom to contact regarding the claim. Also, upon
+gaining such knowledge of any such claim, Recipient must conspicuously
+include the URL for such web page in the Exhibit A notice required under Sec-
+tions 2 and 3, above, and in the text of any related documentation, license
+agreement or collateral in which Recipient describes end user's rights relat-
+ing to the Subject Software. If Recipient obtains such knowledge after it
+makes Subject Software available to any other person or entity, Recipient
+shall take other steps (such as notifying appropriate mailing lists or news-
+groups) reasonably calculated to inform those who received the Subject Soft-
+ware that new knowledge has been obtained.
+
+9. DISCLAIMER OF WARRANTY. SUBJECT SOFTWARE IS PROVIDED ON AN "AS IS" BASIS,
+WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT
+LIMITATION, WARRANTIES THAT THE SUBJECT SOFTWARE IS FREE OF DEFECTS, MER-
+CHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON- INFRINGING. SGI ASSUMES NO
+RISK AS TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE. SHOULD ANY SOFTWARE
+PROVE DEFECTIVE IN ANY RESPECT, SGI ASSUMES NO COST OR LIABILITY FOR ANY SER-
+VICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN
+ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY SUBJECT SOFTWARE IS AUTHORIZED
+HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
+
+10. LIMITATION OF LIABILITY. UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THE-
+ORY, WHETHER TORT (INCLUDING, WITHOUT LIMITATION, NEGLIGENCE OR STRICT LIA-
+BILITY), CONTRACT, OR OTHERWISE, SHALL SGI OR ANY SGI LICENSOR BE LIABLE FOR
+ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY
+CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK
+STOPPAGE, LOSS OF DATA, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
+COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF
+THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY
+TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SGI's NEGLIGENCE TO
+THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO
+NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES,
+SO THAT EXCLUSION AND LIMITATION MAY NOT APPLY TO RECIPIENT.
+
+11. Indemnity. Recipient shall be solely responsible for damages arising,
+directly or indirectly, out of its utilization of rights under this License.
+Recipient will defend, indemnify and hold harmless Silicon Graphics, Inc.
+from and against any loss, liability, damages, costs or expenses (including
+the payment of reasonable attorneys fees) arising out of Recipient's use,
+modification, reproduction and distribution of the Subject Software or out of
+any representation or warranty made by Recipient.
+
+12. U.S. Government End Users. The Subject Software is a "commercial item"
+consisting of "commercial computer software" as such terms are defined in
+title 48 of the Code of Federal Regulations and all U.S. Government End
+Users acquire only the rights set forth in this License and are subject to
+the terms of this License.
+
+13. Miscellaneous. This License represents the complete agreement concerning
+subject matter hereof. If any provision of this License is held to be unen-
+forceable, such provision shall be reformed so as to achieve as nearly as
+possible the same economic effect as the original provision and the remainder
+of this License will remain in effect. This License shall be governed by and
+construed in accordance with the laws of the United States and the State of
+California as applied to agreements entered into and to be performed entirely
+within California between California residents. Any litigation relating to
+this License shall be subject to the exclusive jurisdiction of the Federal
+Courts of the Northern District of California (or, absent subject matter
+jurisdiction in such courts, the courts of the State of California), with
+venue lying exclusively in Santa Clara County, California, with the losing
+party responsible for costs, including without limitation, court costs and
+reasonable attorneys fees and expenses. The application of the United Nations
+Convention on Contracts for the International Sale of Goods is expressly
+excluded. Any law or regulation which provides that the language of a con-
+tract shall be construed against the drafter shall not apply to this License.
+
+Exhibit A
+
+The contents of this file are subject to Sections 2, 3, 4, 7, 8, 10, 12 and
+13 of the GLX Public License Version 1.0 (the "License"). You may not use
+this file except in compliance with those sections of the License. You may
+obtain a copy of the License at Silicon Graphics, Inc., attn: Legal Services,
+2011 N. Shoreline Blvd., Mountain View, CA 94043 or at
+http://www.sgi.com/software/opensource/glx/license.html.
+
+Software distributed under the License is distributed on an "AS IS" basis.
+ALL WARRANTIES ARE DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED
+WARRANTIES OF MERCHANTABILITY, OF FITNESS FOR A PARTICULAR PURPOSE OR OF NON-
+INFRINGEMENT. See the License for the specific language governing rights and
+limitations under the License.
+
+The Original Software is GLX version 1.2 source code, released February,
+1999. The developer of the Original Software is Silicon Graphics, Inc. Those
+portions of the Subject Software created by Silicon Graphics, Inc. are Copy-
+right (c) 1991-9 Silicon Graphics, Inc. All Rights Reserved.
+
+3.5 CID Font Code Public License
+
+CID FONT CODE PUBLIC LICENSE (Version 1.0 (3/31/99))("License")
+
+Subject to any applicable third party claims, Silicon Graphics, Inc. ("SGI")
+hereby grants permission to Recipient (defined below), under SGI's copyrights
+in the Original Software (defined below), to use, copy, modify, merge, pub-
+lish, distribute, sublicense and/or sell copies of Subject Software (defined
+below) in both source code and executable form, and to permit persons to whom
+the Subject Software is furnished in accordance with this License to do the
+same, subject to all of the following terms and conditions, which Recipient
+accepts by engaging in any such use, copying, modifying, merging, publica-
+tion, distributing, sublicensing or selling:
+
+1. Definitions.
+
+ a. "Original Software" means source code of computer software code
+ that is described in Exhibit A as Original Software.
+
+ b. "Modifications" means any addition to or deletion from the sub-
+ stance or structure of either the Original Software or any previous
+ Modifications. When Subject Software is released as a series of
+ files, a Modification means (i) any addition to or deletion from
+ the contents of a file containing Original Software or previous
+ Modifications and (ii) any new file that contains any part of the
+ Original Code or previous Modifications.
+
+ c. "Subject Software" means the Original Software or Modifications
+ or the combination of the Original Software and Modifications, or
+ portions of any of the foregoing.
+
+ d. "Recipient" means an individual or a legal entity exercising
+ rights under the terms of this License. For legal entities, "Recip-
+ ient" includes any entity that controls, is controlled by, or is
+ under common control with Recipient. For purposes of this defini-
+ tion, "control" of an entity means (i) the power, direct or indi-
+ rect, to direct or manage such entity, or (ii) ownership of fifty
+ percent (50%) or more of the outstanding shares or beneficial own-
+ ership of such entity.
+
+ e. "Required Notice" means the notice set forth in Exhibit A to
+ this License.
+
+ f. "Accompanying Technology" means any software or other technology
+ that is not a Modification and that is distributed or made publicly
+ available by Recipient with the Subject Software. Separate soft-
+ ware files that do not contain any Original Software or any previ-
+ ous Modification shall not be deemed a Modification, even if such
+ software files are aggregated as part of a product, or in any
+ medium of storage, with any file that does contain Original Soft-
+ ware or any previous Modification.
+
+2. License Terms. All distribution of the Subject Software must be made sub-
+ject to the terms of this License. A copy of this License and the Required
+Notice must be included in any documentation for Subject Software where
+Recipient's rights relating to Subject Software and/or any Accompanying Tech-
+nology are described. Distributions of Subject Software in source code form
+must also include the Required Notice in every file distributed. In addition,
+a ReadMe file entitled "Important Legal Notice" must be distributed with each
+distribution of one or more files that incorporate Subject Software. That
+file must be included with distributions made in both source code and exe-
+cutable form. A copy of the License and the Required Notice must be included
+in that file. Recipient may distribute Accompanying Technology under a
+license of Recipient's choice, which may contain terms different from this
+License, provided that (i) Recipient is in compliance with the terms of this
+License, (ii) such other license terms do not modify or supersede the terms
+of this License as applicable to the Subject Software, (iii) Recipient hereby
+indemnifies SGI for any liability incurred by SGI as a result of the distri-
+bution of Accompanying Technology or the use of other license terms.
+
+3. Termination. This License and the rights granted hereunder will terminate
+automatically if Recipient fails to comply with terms herein and fails to
+cure such breach within 30 days of the breach. Any sublicense to the Subject
+Software that is properly granted shall survive any termination of this
+License absent termination by the terms of such sublicense. Provisions which,
+by their nature, must remain in effect beyond the termination of this License
+shall survive.
+
+4. Trademark Rights. This License does not grant any rights to use any trade
+name, trademark or service mark whatsoever. No trade name, trademark or ser-
+vice mark of SGI may be used to endorse or promote products derived from or
+incorporating any Subject Software without prior written permission of SGI.
+
+5. No Other Rights. No rights or licenses not expressly granted hereunder
+shall arise by implication, estoppel or otherwise. Title to and ownership of
+the Original Software at all times remains with SGI. All rights in the Origi-
+nal Software not expressly granted under this License are reserved.
+
+6. Compliance with Laws; Non-Infringement. Recipient shall comply with all
+applicable laws and regulations in connection with use and distribution of
+the Subject Software, including but not limited to, all export and import
+control laws and regulations of the U.S. government and other countries.
+Recipient may not distribute Subject Software that (i) in any way infringes
+(directly or contributorily) the rights (including patent, copyright, trade
+secret, trademark or other intellectual property rights of any kind) of any
+other person or entity, or (ii) breaches any representation or warranty,
+express, implied or statutory, which under any applicable law it might be
+deemed to have been distributed.
+
+7. Claims of Infringement. If Recipient at any time has knowledge of any one
+or more third party claims that reproduction, modification, use, distribu-
+tion, import or sale of Subject Software (including particular functionality
+or code incorporated in Subject Software) infringes the third party's intel-
+lectual property rights, Recipient must place in a well-identified web page
+bearing the title "LEGAL" a description of each such claim and a description
+of the party making each such claim in sufficient detail that a user of the
+Subject Software will know whom to contact regarding the claim. Also, upon
+gaining such knowledge of any such claim, Recipient must conspicuously
+include the URL for such web page in the Required Notice, and in the text of
+any related documentation, license agreement or collateral in which Recipient
+describes end user's rights relating to the Subject Software. If Recipient
+obtains such knowledge after it makes Subject Software available to any other
+person or entity, Recipient shall take other steps (such as notifying appro-
+priate mailing lists or newsgroups) reasonably calculated to provide such
+knowledge to those who received the Subject Software.
+
+8. DISCLAIMER OF WARRANTY. SUBJECT SOFTWARE IS PROVIDED ON AN "AS IS" BASIS,
+WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT
+LIMITATION, WARRANTIES THAT THE SUBJECT SOFTWARE IS FREE OF DEFECTS, MER-
+CHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. SGI ASSUMES NO
+RISK AS TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE. SHOULD ANY SOFTWARE
+PROVE DEFECTIVE IN ANY RESPECT, SGI ASSUMES NO COST OR LIABILITY FOR ANY SER-
+VICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN
+ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY SUBJECT SOFTWARE IS AUTHORIZED
+HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
+
+9. LIMITATION OF LIABILITY. UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY,
+WHETHER TORT (INCLUDING, WITHOUT LIMITATION, NEGLIGENCE OR STRICT LIABILITY),
+CONTRACT, OR OTHERWISE, SHALL SGI OR ANY SGI LICENSOR BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SUBJECT SOFTWARE OR
+THE USE OR OTHER DEALINGS IN THE SUBJECT SOFTWARE. SOME JURISDICTIONS DO NOT
+ALLOW THE EXCLUSION OR LIMITATION OF CERTAIN DAMAGES, SO THIS EXCLUSION AND
+LIMITATION MAY NOT APPLY TO RECIPIENT TO THE EXTENT SO DISALLOWED.
+
+10. Indemnity. Recipient shall be solely responsible for damages arising,
+directly or indirectly, out of its utilization of rights under this License.
+Recipient will defend, indemnify and hold SGI and its successors and assigns
+harmless from and against any loss, liability, damages, costs or expenses
+(including the payment of reasonable attorneys fees) arising out of (Recipi-
+ent's use, modification, reproduction and distribution of the Subject Soft-
+ware or out of any representation or warranty made by Recipient.
+
+11. U.S. Government End Users. The Subject Software is a "commercial item"
+consisting of "commercial computer software" as such terms are defined in
+title 48 of the Code of Federal Regulations and all U.S. Government End Users
+acquire only the rights set forth in this License and are subject to the
+terms of this License.
+
+12. Miscellaneous. This License represents the complete agreement concerning
+subject matter hereof. If any provision of this License is held to be unen-
+forceable by any judicial or administrative authority having proper jurisdic-
+tion with respect thereto, such provision shall be reformed so as to achieve
+as nearly as possible the same economic effect as the original provision and
+the remainder of this License will remain in effect. This License shall be
+governed by and construed in accordance with the laws of the United States
+and the State of California as applied to agreements entered into and to be
+performed entirely within California between California residents. Any liti-
+gation relating to this License shall be subject to the exclusive jurisdic-
+tion of the Federal Courts of the Northern District of California (or, absent
+subject matter jurisdiction in such courts, the courts of the State of Cali-
+fornia), with venue lying exclusively in Santa Clara County, California, with
+the losing party responsible for costs, including without limitation, court
+costs and reasonable attorneys fees and expenses. The application of the
+United Nations Convention on Contracts for the International Sale of Goods is
+expressly excluded. Any law or regulation that provides that the language of
+a contract shall be construed against the drafter shall not apply to this
+License.
+
+Exhibit A
+
+Copyright (c) 1994-1999 Silicon Graphics, Inc.
+
+The contents of this file are subject to the CID Font Code Public License
+Version 1.0 (the "License"). You may not use this file except in compliance
+with the License. You may obtain a copy of the License at Silicon Graphics,
+Inc., attn: Legal Services, 2011 N. Shoreline Blvd., Mountain View, CA 94043
+or at http://www.sgi.com/software/opensource/cid/license.html
+
+Software distributed under the License is distributed on an "AS IS" basis.
+ALL WARRANTIES ARE DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED
+WARRANTIES OF MERCHANTABILITY, OF FITNESS FOR A PARTICULAR PURPOSE OR OF NON-
+INFRINGEMENT. See the License for the specific language governing rights and
+limitations under the License.
+
+The Original Software (as defined in the License) is CID font code that was
+developed by Silicon Graphics, Inc. Those portions of the Subject Software
+(as defined in the License) that were created by Silicon Graphics, Inc. are
+Copyright (c) 1994-1999 Silicon Graphics, Inc. All Rights Reserved.
+
+[NOTE: When using this text in connection with Subject Software delivered
+solely in object code form, Recipient may replace the words "this file" with
+"this software" in both the first and second sentences.]
+
+3.6 Bitstream Vera Fonts Copyright
+
+The fonts have a generous copyright, allowing derivative works (as long as
+"Bitstream" or "Vera" are not in the names), and full redistribution (so long
+as they are not *sold* by themselves). They can be be bundled, redistributed
+and sold with any software.
+
+The fonts are distributed under the following copyright:
+
+Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is
+a trademark of Bitstream, Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of the fonts accompanying this license ("Fonts") and associated documentation
+files (the "Font Software"), to reproduce and distribute the Font Software,
+including without limitation the rights to use, copy, merge, publish, dis-
+tribute, and/or sell copies of the Font Software, and to permit persons to
+whom the Font Software is furnished to do so, subject to the following condi-
+tions:
+
+The above copyright and trademark notices and this permission notice shall be
+included in all copies of one or more of the Font Software typefaces.
+
+The Font Software may be modified, altered, or added to, and in particular
+the designs of glyphs or characters in the Fonts may be modified and addi-
+tional glyphs or characters may be added to the Fonts, only if the fonts are
+renamed to names not containing either the words "Bitstream" or the word
+"Vera".
+
+This License becomes null and void to the extent applicable to Fonts or Font
+Software that has been modified and is distributed under the "Bitstream Vera"
+names.
+
+The Font Software may be sold as part of a larger software package but no
+copy of one or more of the Font Software typefaces may be sold by itself.
+
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT,
+TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME FOUNDA-
+TION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GEN-
+ERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN
+ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR
+INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFT-
+WARE.
+
+Except as contained in this notice, the names of Gnome, the Gnome Foundation,
+and Bitstream Inc., shall not be used in advertising or otherwise to promote
+the sale, use or other dealings in this Font Software without prior written
+authorization from the Gnome Foundation or Bitstream Inc., respectively. For
+further information, contact: fonts at gnome dot org.
+
+3.7 Bigelow & Holmes Inc and URW++ GmbH Luxi font license
+
+Luxi fonts copyright (c) 2001 by Bigelow & Holmes Inc. Luxi font instruction
+code copyright (c) 2001 by URW++ GmbH. All Rights Reserved. Luxi is a regis-
+tered trademark of Bigelow & Holmes Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of these Fonts and associated documentation files (the "Font Software"), to
+deal in the Font Software, including without limitation the rights to use,
+copy, merge, publish, distribute, sublicense, and/or sell copies of the Font
+Software, and to permit persons to whom the Font Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright and trademark notices and this permission notice shall be
+included in all copies of one or more of the Font Software.
+
+The Font Software may not be modified, altered, or added to, and in particu-
+lar the designs of glyphs or characters in the Fonts may not be modified nor
+may additional glyphs or characters be added to the Fonts. This License
+becomes null and void when the Fonts or Font Software have been modified.
+
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT,
+TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BIGELOW & HOLMES INC. OR URW++
+GMBH. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GEN-
+ERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN
+ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR
+INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFT-
+WARE.
+
+Except as contained in this notice, the names of Bigelow & Holmes Inc. and
+URW++ GmbH. shall not be used in advertising or otherwise to promote the
+sale, use or other dealings in this Font Software without prior written
+authorization from Bigelow & Holmes Inc. and URW++ GmbH.
+
+For further information, contact:
+
+info@urwpp.de or design@bigelowandholmes.com
+
+ $Id: LICENSE,v 1.3 2004/09/03 23:41:21 kem Exp $
diff --git a/extra/xf86-video-v4l/PKGBUILD b/extra/xf86-video-v4l/PKGBUILD
new file mode 100644
index 000000000..138cfe1d0
--- /dev/null
+++ b/extra/xf86-video-v4l/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 114549 2011-03-14 09:51:09Z jgc $
+#Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xf86-video-v4l
+pkgver=0.2.0
+pkgrel=7
+pkgdesc="X.org v4l video driver"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('glibc')
+makedepends=('xorg-server-devel')
+conflicts=('xorg-server<1.9.0')
+groups=('xorg-drivers' 'xorg')
+options=('!libtool')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2 LICENSE)
+md5sums=('2251ae2a0a905764941cd7b098e85ad1'
+ '7d4d018f6bbff7e42672d1aabc75c5cf')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xf86-video-vesa/PKGBUILD b/extra/xf86-video-vesa/PKGBUILD
new file mode 100644
index 000000000..3e4513bb7
--- /dev/null
+++ b/extra/xf86-video-vesa/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 114554 2011-03-14 09:54:08Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xf86-video-vesa
+pkgver=2.3.0
+pkgrel=4
+pkgdesc="X.org vesa video driver"
+arch=(i686 x86_64)
+license=('custom')
+url="http://xorg.freedesktop.org/"
+depends=('glibc')
+makedepends=('pkgconfig' 'xorg-server-devel')
+conflicts=('xorg-server<1.9.0')
+groups=('xorg-drivers' 'xorg')
+options=('!libtool')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('4689b7c295d7a8d7326302dafecb812739617134')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -d -m755 "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xf86-video-voodoo/PKGBUILD b/extra/xf86-video-voodoo/PKGBUILD
new file mode 100644
index 000000000..de6d6f637
--- /dev/null
+++ b/extra/xf86-video-voodoo/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 114565 2011-03-14 10:01:16Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xf86-video-voodoo
+pkgver=1.2.4
+pkgrel=3
+pkgdesc="X.org 3dfx Voodoo1/Voodoo2 2D video driver"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('glibc')
+makedepends=('xorg-server-devel' 'xf86dgaproto')
+conflicts=('xorg-server<1.9.0')
+groups=('xorg-drivers' 'xorg')
+options=('!libtool')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('7ecd232cc0b7fe507e18e08799791eefa9fdaf48')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+}
diff --git a/extra/xf86-video-xgi/PKGBUILD b/extra/xf86-video-xgi/PKGBUILD
new file mode 100644
index 000000000..65c419200
--- /dev/null
+++ b/extra/xf86-video-xgi/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 114570 2011-03-14 10:04:18Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xf86-video-xgi
+pkgver=1.6.0
+pkgrel=2
+pkgdesc="X.org XGI video driver"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('glibc')
+makedepends=('xorg-server-devel' 'libdrm' 'xf86driproto' 'glproto' 'mesa' 'xf86dgaproto')
+options=('!libtool')
+groups=('xorg-drivers' 'xorg')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('826f14d6ba799cd2aae9f0c818f84cf8b75f1ddb')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xf86-video-xgixp/PKGBUILD b/extra/xf86-video-xgixp/PKGBUILD
new file mode 100644
index 000000000..f4f89ef1e
--- /dev/null
+++ b/extra/xf86-video-xgixp/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 114575 2011-03-14 10:06:12Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xf86-video-xgixp
+pkgver=1.8.0
+pkgrel=2
+pkgdesc="X.org XGIXP video driver"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('glibc')
+makedepends=('xorg-server-devel' 'libdrm' 'xf86driproto' 'mesa')
+options=('!libtool')
+groups=('xorg-drivers' 'xorg')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('67caeaa4c746572160208fe23c7257f62cb442a3')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xfburn/PKGBUILD b/extra/xfburn/PKGBUILD
new file mode 100755
index 000000000..d1af4c7c5
--- /dev/null
+++ b/extra/xfburn/PKGBUILD
@@ -0,0 +1,33 @@
+# $Id: PKGBUILD 104800 2011-01-04 23:36:33Z andyrtr $
+# Maintainer: Tobias Kieslich <tobias funnychar archlinux.org>
+# Contributor: Alois Nespor alois.nespor@gmail.com
+
+pkgname=xfburn
+pkgver=0.4.3
+pkgrel=3
+arch=('i686' 'x86_64')
+pkgdesc="a simple CD/DVD burning tool based on libburnia libraries"
+url="http://goodies.xfce.org/projects/applications/xfburn"
+license=('GPL2')
+groups=('xfce4-goodies')
+install=${pkgname}.install
+depends=('libburn>=0.7.6.pl00' 'libisofs>=0.6.28' 'libxfcegui4>=4.7.0' 'thunar-vfs>=1.1.0' 'hicolor-icon-theme'
+ 'librsvg' 'gstreamer0.10-base>=0.10.26' 'desktop-file-utils')
+makedepends=('intltool')
+source=(http://www.xfce.org/archive/src/apps/xfburn/0.4/$pkgname-$pkgver.tar.bz2)
+md5sums=('147cdc2d909e751125be16103b8dc81f')
+
+build() {
+ cd ${srcdir}/$pkgname-$pkgver
+ ./configure --prefix=/usr \
+ --enable-gstreamer \
+ --enable-thunar-vfs \
+ --enable-dbus \
+ --enable-hal
+ make
+}
+
+package() {
+ cd ${srcdir}/$pkgname-$pkgver
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/xfburn/xfburn.install b/extra/xfburn/xfburn.install
new file mode 100644
index 000000000..28fdb48fb
--- /dev/null
+++ b/extra/xfburn/xfburn.install
@@ -0,0 +1,14 @@
+post_install() {
+ update-desktop-database -q
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ update-desktop-database -q
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
diff --git a/extra/xfce-utils/PKGBUILD b/extra/xfce-utils/PKGBUILD
new file mode 100644
index 000000000..621755ab8
--- /dev/null
+++ b/extra/xfce-utils/PKGBUILD
@@ -0,0 +1,40 @@
+# $Id: PKGBUILD 108283 2011-01-30 17:27:33Z andyrtr $
+# Maintainer: AndyRTR <andyrtr@archlinux.org>
+# Contributor: tobias <tobias funnychar archlinux.org>
+
+pkgname=xfce-utils
+pkgver=4.8.1
+pkgrel=1
+pkgdesc="Utilities for Xfce"
+arch=(i686 x86_64)
+license=('GPL2')
+url="http://www.xfce.org/"
+groups=('xfce4')
+depends=('libxfce4ui' 'xorg-xinit' 'hicolor-icon-theme')
+makedepends=('intltool')
+optdepends=('perl: for migration scripts'
+ 'xscreensaver: for locking screen with xflock4'
+ 'gnome-screensaver: for locking screen with xflock4'
+ 'xlockmore: for locking screen with xflock4')
+options=('!libtool')
+install=${pkgname}.install
+source=(http://archive.xfce.org/src/xfce/${pkgname}/4.8/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('e39866365a45f7a1e7284b93eb4f92f0')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --libexecdir=/usr/lib \
+ --localstatedir=/var \
+ --disable-static \
+ --enable-dbus \
+ --disable-debug \
+ --with-vendor-info=ArchLinux # --enable-gen-doc \
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/xfce-utils/xfce-utils.install b/extra/xfce-utils/xfce-utils.install
new file mode 100644
index 000000000..c58a305e0
--- /dev/null
+++ b/extra/xfce-utils/xfce-utils.install
@@ -0,0 +1,21 @@
+post_install() {
+ cat << EOF
+NOTE
+----
+ ==> xfce can run on top of a framebuffer. However, for most users it is
+ ==> best to install xorg as an x-server. Please install either xorg-xinit
+ ==> as minimal environment or the xorg meta package.
+ pacman -S xorg-xinit
+ -- or --
+ pacman -S xorg
+EOF
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+post_upgrade() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+post_remove() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
diff --git a/extra/xfce4-appfinder/PKGBUILD b/extra/xfce4-appfinder/PKGBUILD
new file mode 100644
index 000000000..9eac46486
--- /dev/null
+++ b/extra/xfce4-appfinder/PKGBUILD
@@ -0,0 +1,34 @@
+# $Id: PKGBUILD 106402 2011-01-16 17:26:11Z andyrtr $
+# Maintainer: AndyRTR <andyrtr@archlinux.org>
+# Contributor: tobias <tobias funnychar archlinux.org>
+
+pkgname=xfce4-appfinder
+pkgver=4.8.0
+pkgrel=1
+pkgdesc="Xfce application finder"
+arch=('i686' 'x86_64')
+license=('GPL2')
+url="http://www.xfce.org/"
+groups=('xfce4')
+depends=('libxfce4ui' 'garcon' 'hicolor-icon-theme')
+makedepends=('pkgconfig' 'intltool')
+options=('!libtool')
+install=${pkgname}.install
+source=(http://archive.xfce.org/src/xfce/${pkgname}/4.8/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('fb4797ef91b90d111b989e98c3e000e0')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --libexecdir=/usr/lib \
+ --localstatedir=/var \
+ --disable-static \
+ --disable-debug
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/xfce4-appfinder/xfce4-appfinder.install b/extra/xfce4-appfinder/xfce4-appfinder.install
new file mode 100644
index 000000000..b7e9ea08e
--- /dev/null
+++ b/extra/xfce4-appfinder/xfce4-appfinder.install
@@ -0,0 +1,12 @@
+post_install() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
diff --git a/extra/xfce4-battery-plugin/PKGBUILD b/extra/xfce4-battery-plugin/PKGBUILD
new file mode 100644
index 000000000..62e2ae5bd
--- /dev/null
+++ b/extra/xfce4-battery-plugin/PKGBUILD
@@ -0,0 +1,34 @@
+# $Id: PKGBUILD 104733 2011-01-04 20:09:27Z andyrtr $
+# Maintainer: aurelien <aurelien@archlinux.org>
+# Contributor: Aurelien Foret <orelien@chez.com>
+
+pkgname=xfce4-battery-plugin
+pkgver=1.0.0
+pkgrel=1
+pkgdesc="A battery monitor plugin for the Xfce panel"
+arch=(i686 x86_64)
+license=('GPL2')
+url="http://xfce-goodies.berlios.de/"
+groups=('xfce4-goodies')
+depends=('xfce4-panel' 'libxfcegui4' 'hicolor-icon-theme')
+makedepends=('intltool')
+options=('!libtool')
+install=${pkgname}.install
+source=(http://archive.xfce.org/src/panel-plugins/${pkgname}/1.0/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('2696307f34f6b9630fcaaea102004e78')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --libexecdir=/usr/lib \
+ --localstatedir=/var \
+ --disable-static \
+ --disable-debug
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/xfce4-battery-plugin/xfce4-battery-plugin.install b/extra/xfce4-battery-plugin/xfce4-battery-plugin.install
new file mode 100644
index 000000000..21b79d2d4
--- /dev/null
+++ b/extra/xfce4-battery-plugin/xfce4-battery-plugin.install
@@ -0,0 +1,11 @@
+post_install() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
diff --git a/extra/xfce4-clipman-plugin/PKGBUILD b/extra/xfce4-clipman-plugin/PKGBUILD
new file mode 100644
index 000000000..3629b0725
--- /dev/null
+++ b/extra/xfce4-clipman-plugin/PKGBUILD
@@ -0,0 +1,38 @@
+# $Id: PKGBUILD 105771 2011-01-11 17:17:59Z andyrtr $
+# Maintainer: tobias <tobias at archlinux.org>
+# Contributor: Aurelien Foret <orelien@chez.com>
+
+pkgname=xfce4-clipman-plugin
+pkgver=1.1.3
+pkgrel=2
+pkgdesc="A clipboard plugin for the Xfce4 panel"
+arch=(i686 x86_64)
+license=('custom')
+url="http://goodies.xfce.org/projects/panel-plugins/xfce4-clipman-plugin"
+groups=('xfce4-goodies')
+depends=('libxfcegui4' 'xfce4-panel' 'libunique' 'hicolor-icon-theme')
+makedepends=('pkgconfig' 'intltool')
+options=('!libtool')
+install=${pkgname}.install
+source=(http://archive.xfce.org/src/panel-plugins/${pkgname}/1.1/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('2ba70c6bd710e2a18cba5add66d297dc')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ # fix for exo 0.5.6
+ sed -i -e "s/exo-0.3/exo-1/g" configure
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --libexecdir=/usr/lib \
+ --localstatedir=/var \
+ --disable-static \
+ --enable-unique \
+ --disable-debug
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+ install -Dm644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/COPYING
+}
diff --git a/extra/xfce4-clipman-plugin/xfce4-clipman-plugin.install b/extra/xfce4-clipman-plugin/xfce4-clipman-plugin.install
new file mode 100644
index 000000000..fee9e5d11
--- /dev/null
+++ b/extra/xfce4-clipman-plugin/xfce4-clipman-plugin.install
@@ -0,0 +1,12 @@
+post_install() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
diff --git a/extra/xfce4-cpufreq-plugin/PKGBUILD b/extra/xfce4-cpufreq-plugin/PKGBUILD
new file mode 100644
index 000000000..bea6bf602
--- /dev/null
+++ b/extra/xfce4-cpufreq-plugin/PKGBUILD
@@ -0,0 +1,34 @@
+# $Id: PKGBUILD 107296 2011-01-23 10:18:21Z andyrtr $
+# Maintainer: AndyRTR <andyrtr@archlinux.org>
+# Contributor: tobias <tobias funnychar archlinux.org>
+
+pkgname=xfce4-cpufreq-plugin
+pkgver=1.0.0
+pkgrel=1
+pkgdesc="CPU frequency plugin for the Xfce4 panel"
+arch=('i686' 'x86_64')
+license=('GPL2')
+url="http://goodies.xfce.org/projects/panel-plugins/xfce4-cpufreq-plugin"
+groups=('xfce4-goodies')
+depends=('xfce4-panel>=4.7.4' 'libxfcegui4' 'hicolor-icon-theme')
+makedepends=('intltool')
+options=('!libtool')
+install=${pkgname}.install
+source=(http://archive.xfce.org/src/panel-plugins/${pkgname}/1.0/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('24cae9b8583cae82b715b4f72aa8e341')
+
+build() {
+ cd ${srcdir}/xfce4-cpufreq-plugin-${pkgver}
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --libexecdir=/usr/lib \
+ --localstatedir=/var \
+ --disable-static \
+ --disable-debug
+ make
+}
+
+package() {
+ cd ${srcdir}/xfce4-cpufreq-plugin-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/xfce4-cpufreq-plugin/xfce4-cpufreq-plugin.install b/extra/xfce4-cpufreq-plugin/xfce4-cpufreq-plugin.install
new file mode 100644
index 000000000..21b79d2d4
--- /dev/null
+++ b/extra/xfce4-cpufreq-plugin/xfce4-cpufreq-plugin.install
@@ -0,0 +1,11 @@
+post_install() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
diff --git a/extra/xfce4-cpugraph-plugin/PKGBUILD b/extra/xfce4-cpugraph-plugin/PKGBUILD
new file mode 100644
index 000000000..f775fcce7
--- /dev/null
+++ b/extra/xfce4-cpugraph-plugin/PKGBUILD
@@ -0,0 +1,34 @@
+# $Id: PKGBUILD 106953 2011-01-19 20:30:45Z andyrtr $
+# Maintainer: AndyRTR <andyrtr@archlinux.org>
+# Contributor: Aurelien Foret <orelien@chez.com>
+
+pkgname=xfce4-cpugraph-plugin
+pkgver=1.0.1
+pkgrel=2
+pkgdesc="CPU graph plugin for the Xfce4 panel"
+arch=('i686' 'x86_64')
+license=('GPL' 'custom')
+url="http://goodies.xfce.org/projects/panel-plugins/xfce4-cpugraph-plugin"
+groups=('xfce4-goodies')
+depends=('xfce4-panel' 'libxfcegui4' 'hicolor-icon-theme')
+makedepends=('intltool')
+install=${pkgname}.install
+source=(http://archive.xfce.org/src/panel-plugins/${pkgname}/1.0/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('ff551087b1f61c47b8746e8687c572aa')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --libexecdir=/usr/lib \
+ --localstatedir=/var \
+ --disable-static \
+ --disable-debug
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+ install -Dm644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/COPYING
+}
diff --git a/extra/xfce4-cpugraph-plugin/xfce4-cpugraph-plugin.install b/extra/xfce4-cpugraph-plugin/xfce4-cpugraph-plugin.install
new file mode 100644
index 000000000..b7e9ea08e
--- /dev/null
+++ b/extra/xfce4-cpugraph-plugin/xfce4-cpugraph-plugin.install
@@ -0,0 +1,12 @@
+post_install() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
diff --git a/extra/xfce4-datetime-plugin/PKGBUILD b/extra/xfce4-datetime-plugin/PKGBUILD
new file mode 100644
index 000000000..3d9e2a532
--- /dev/null
+++ b/extra/xfce4-datetime-plugin/PKGBUILD
@@ -0,0 +1,33 @@
+# $Id: PKGBUILD 104742 2011-01-04 20:29:21Z andyrtr $
+# Maintainer: Andreas Radke <andyrtr@archlinux.org>
+# Contributor: Aurelien Foret <orelien@chez.com>
+
+pkgname=xfce4-datetime-plugin
+pkgver=0.6.1
+pkgrel=1
+pkgdesc="A date and time display plugin for the Xfce panel"
+arch=('i686' 'x86_64')
+license=('GPL2')
+url="http://xfce-goodies.berlios.de/"
+groups=('xfce4-goodies')
+depends=('xfce4-panel>=4.7.4' 'libxfcegui4')
+makedepends=('intltool')
+options=('!libtool')
+source=(http://archive.xfce.org/src/panel-plugins/${pkgname}/0.6/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('e82f51ff0e75a63e5cbd139e43e094f9')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --libexecdir=/usr/lib \
+ --localstatedir=/var \
+ --disable-static \
+ --disable-static
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/xfce4-dict/PKGBUILD b/extra/xfce4-dict/PKGBUILD
new file mode 100644
index 000000000..344d7f37d
--- /dev/null
+++ b/extra/xfce4-dict/PKGBUILD
@@ -0,0 +1,37 @@
+# $Id: PKGBUILD 108109 2011-01-29 13:43:49Z andyrtr $
+# Maintainer: AndyRTR <andyrtr@archlinux.org>
+# Contributor: Aurelien Foret <orelien@chez.com>
+
+pkgname=xfce4-dict
+pkgver=0.6.0
+pkgrel=1
+pkgdesc="A dictionary plugin for the Xfce panel"
+arch=('i686' 'x86_64')
+license=('GPL2')
+url="http://goodies.xfce.org/projects/applications/xfce4-dict"
+groups=('xfce4-goodies')
+depends=('xfce4-panel' 'libxfcegui4' 'hicolor-icon-theme' 'librsvg')
+makedepends=('intltool')
+options=('!libtool')
+install=${pkgname}.install
+source=(http://archive.xfce.org/src/apps/xfce4-dict/0.6/xfce4-dict-${pkgver}.tar.bz2)
+md5sums=('c371c5c0bbe45a2bfac336cfe01dfe01')
+provides=('xfce4-dict-plugin')
+conflicts=('xfce4-dict-plugin')
+replaces=('xfce4-dict-plugin')
+
+build() {
+ cd ${srcdir}/xfce4-dict-${pkgver}
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --libexecdir=/usr/lib \
+ --localstatedir=/var \
+ --disable-static \
+ --disable-debug
+ make
+}
+
+package() {
+ cd ${srcdir}/xfce4-dict-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/xfce4-dict/xfce4-dict.install b/extra/xfce4-dict/xfce4-dict.install
new file mode 100644
index 000000000..21b79d2d4
--- /dev/null
+++ b/extra/xfce4-dict/xfce4-dict.install
@@ -0,0 +1,11 @@
+post_install() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
diff --git a/extra/xfce4-diskperf-plugin/PKGBUILD b/extra/xfce4-diskperf-plugin/PKGBUILD
new file mode 100644
index 000000000..11af81a49
--- /dev/null
+++ b/extra/xfce4-diskperf-plugin/PKGBUILD
@@ -0,0 +1,33 @@
+# $Id: PKGBUILD 107127 2011-01-21 14:53:20Z andyrtr $
+# Maintainer: AndyRTR <andyrtr@archlinux.org>
+# Contributor: Aurelien Foret <orelien@chez.com>
+
+pkgname=xfce4-diskperf-plugin
+pkgver=2.3.0
+pkgrel=1
+pkgdesc="Plugin for the Xfce4 panel displaying instant disk/partition performance"
+arch=('i686' 'x86_64')
+license=('custom')
+url="http://goodies.xfce.org/projects/panel-plugins/xfce4-diskperf-plugin"
+groups=('xfce4-goodies')
+depends=('xfce4-panel' 'libxfcegui4') # 'libxfce4ui')
+makedepends=('intltool')
+source=(http://archive.xfce.org/src/panel-plugins/${pkgname}/2.3/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('c6ece8123c762ee203cbc6fd5450b503')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --libexecdir=/usr/lib \
+ --localstatedir=/var \
+ --disable-static \
+ --disable-debug
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+ install -Dm644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/COPYING
+}
diff --git a/extra/xfce4-eyes-plugin/PKGBUILD b/extra/xfce4-eyes-plugin/PKGBUILD
new file mode 100644
index 000000000..454c329c4
--- /dev/null
+++ b/extra/xfce4-eyes-plugin/PKGBUILD
@@ -0,0 +1,32 @@
+# $Id: PKGBUILD 104745 2011-01-04 20:33:13Z andyrtr $
+# Maintainer: AndyRTR <andyrtr@archlinux.org>
+# Contributor: Aurelien Foret <orelien@chez.com>
+
+pkgname=xfce4-eyes-plugin
+pkgver=4.4.1
+pkgrel=1
+pkgdesc="A rolling eyes (following mouse pointer) plugin for the Xfce panel"
+arch=(i686 x86_64)
+license=('GPL2')
+url="http://xfce-goodies.berlios.de/"
+groups=('xfce4-goodies')
+depends=('xfce4-panel' 'libxfcegui4' 'hicolor-icon-theme')
+makedepends=('intltool' 'perlxml')
+install=${pkgname}.install
+source=(http://archive.xfce.org/src/panel-plugins/${pkgname}/4.4/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('dcbf6ea9035d379d168b479be0d09f14')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --libexecdir=/usr/lib \
+ --localstatedir=/var \
+ --disable-static
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/xfce4-eyes-plugin/xfce4-eyes-plugin.install b/extra/xfce4-eyes-plugin/xfce4-eyes-plugin.install
new file mode 100644
index 000000000..21b79d2d4
--- /dev/null
+++ b/extra/xfce4-eyes-plugin/xfce4-eyes-plugin.install
@@ -0,0 +1,11 @@
+post_install() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
diff --git a/extra/xfce4-fsguard-plugin/PKGBUILD b/extra/xfce4-fsguard-plugin/PKGBUILD
new file mode 100644
index 000000000..11202e348
--- /dev/null
+++ b/extra/xfce4-fsguard-plugin/PKGBUILD
@@ -0,0 +1,34 @@
+# $Id: PKGBUILD 104748 2011-01-04 20:38:08Z andyrtr $
+# Maintainer: AndyRTR <andyrtr@archlinux.org>
+# Contributor: Ben <ben@benmazer.net>
+
+pkgname=xfce4-fsguard-plugin
+pkgver=1.0.0
+pkgrel=1
+pkgdesc="File system usage monitor plugin for the Xfce4 panel"
+arch=(i686 x86_64)
+license=('GPL2')
+url="http://xfce-goodies.berlios.de/"
+groups=('xfce4-goodies')
+depends=('xfce4-panel>=4.7.4' 'hicolor-icon-theme' 'libxfcegui4')
+makedepends=('intltool')
+options=(!libtool)
+install=${pkgname}.install
+source=(http://archive.xfce.org/src/panel-plugins/${pkgname}/1.0/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('8378f922b59a0d5a378af5e45a18c4a3')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --libexecdir=/usr/lib \
+ --localstatedir=/var \
+ --disable-static \
+ --disable-debug
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/xfce4-fsguard-plugin/xfce4-fsguard-plugin.install b/extra/xfce4-fsguard-plugin/xfce4-fsguard-plugin.install
new file mode 100644
index 000000000..21b79d2d4
--- /dev/null
+++ b/extra/xfce4-fsguard-plugin/xfce4-fsguard-plugin.install
@@ -0,0 +1,11 @@
+post_install() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
diff --git a/extra/xfce4-genmon-plugin/PKGBUILD b/extra/xfce4-genmon-plugin/PKGBUILD
new file mode 100644
index 000000000..8e631a255
--- /dev/null
+++ b/extra/xfce4-genmon-plugin/PKGBUILD
@@ -0,0 +1,33 @@
+# $Id: PKGBUILD 116662 2011-03-24 17:55:38Z andyrtr $
+# Maintainer: AndyRTR <andyrtr@archlinux.org>
+# Contributor: Tobias Kieslich <tobias (at) archlinux.org>
+
+pkgname=xfce4-genmon-plugin
+pkgver=3.3.0
+pkgrel=1
+pkgdesc="plugin that monitors customizable programs stdout for the Xfce4 panel"
+arch=(i686 x86_64)
+license=('LGPL2.1')
+url="http://goodies.xfce.org/projects/panel-plugins/xfce4-genmon-plugin"
+groups=('xfce4-goodies')
+depends=('xfce4-panel' 'libxfcegui4')
+makedepends=('intltool')
+options=('!libtool')
+source=(http://archive.xfce.org/src/panel-plugins/${pkgname}/3.3/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('7c95234dc99efc21bbf9d2b056dd21f9')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --libexecdir=/usr/lib \
+ --localstatedir=/var \
+ --disable-static \
+ --disable-debug
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/xfce4-mailwatch-plugin/PKGBUILD b/extra/xfce4-mailwatch-plugin/PKGBUILD
new file mode 100644
index 000000000..234f034ad
--- /dev/null
+++ b/extra/xfce4-mailwatch-plugin/PKGBUILD
@@ -0,0 +1,39 @@
+# $Id: PKGBUILD 108113 2011-01-29 14:05:40Z andyrtr $
+# Maintainer: AndyRTR <andyrtr@archlinux.org>
+# Contributor: Suzy Williams <suzanne.williams3@verizon.net>
+
+pkgname=xfce4-mailwatch-plugin
+pkgver=1.1.0
+pkgrel=3
+pkgdesc="A mailbox watch/check plugin for the Xfce4 panel"
+arch=(i686 x86_64)
+license=('GPL2')
+url="http://spurint.org/projects/xfce4-mailwatch-plugin/"
+groups=('xfce4-goodies')
+depends=('xfce4-panel' 'libxfcegui4' 'gnutls>=2.4.1' 'hicolor-icon-theme')
+makedepends=('intltool' 'xfce4-dev-tools')
+options=('!libtool')
+install=${pkgname}.install
+source=(http://spuriousinterrupt.org/files/mailwatch/${pkgname}-${pkgver}.tar.bz2
+ xfce4-mailwatch-plugin-1.1.0-underlink.patch)
+md5sums=('f84dce86be1d7f25f169f262aaacee4e'
+ '47fe8588e3bb642e1b507a854927e6db')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ # fix for panel4.8 from Fedora
+ patch -Np1 -i ${srcdir}/xfce4-mailwatch-plugin-1.1.0-underlink.patch
+ xdt-autogen
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --libexecdir=/usr/lib \
+ --localstatedir=/var \
+ --disable-static \
+ --disable-debug
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/xfce4-mailwatch-plugin/xfce4-mailwatch-plugin-1.1.0-underlink.patch b/extra/xfce4-mailwatch-plugin/xfce4-mailwatch-plugin-1.1.0-underlink.patch
new file mode 100644
index 000000000..ada0df041
--- /dev/null
+++ b/extra/xfce4-mailwatch-plugin/xfce4-mailwatch-plugin-1.1.0-underlink.patch
@@ -0,0 +1,21 @@
+--- xfce4-mailwatch-plugin-1.1.0/panel-plugin/Makefile.am 2008-08-26 03:42:36.000000000 +0100
++++ xfce4-mailwatch-plugin-1.1.0/panel-plugin/Makefile.am.new 2011-01-14 17:27:44.116199383 +0000
+@@ -50,6 +50,7 @@
+ -I$(top_srcdir)/libmailwatch-core \
+ @GTHREAD_CFLAGS@ \
+ @LIBXFCE4PANEL_CFLAGS@ \
++ @LIBXFCEGUI4_CFLAGS@ \
+ -DDATADIR=\"$(datadir)\" \
+ -DLOCALEDIR=\"$(localedir)\"
+
+@@ -60,7 +61,9 @@
+ $(top_builddir)/libmailwatch-core/libmailwatch-core.la \
+ @GTHREAD_LIBS@ \
+ @LIBXFCE4PANEL_LIBS@ \
+- @GNUTLS_LIBS@
++ @LIBXFCEGUI4_LIBS@ \
++ @GNUTLS_LIBS@ \
++ -lgcrypt
+
+ if HAVE_CYGWIN
+ xfce4_mailwatch_plugin_LDFLAGS += \
diff --git a/extra/xfce4-mailwatch-plugin/xfce4-mailwatch-plugin.install b/extra/xfce4-mailwatch-plugin/xfce4-mailwatch-plugin.install
new file mode 100644
index 000000000..21b79d2d4
--- /dev/null
+++ b/extra/xfce4-mailwatch-plugin/xfce4-mailwatch-plugin.install
@@ -0,0 +1,11 @@
+post_install() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
diff --git a/extra/xfce4-mixer/PKGBUILD b/extra/xfce4-mixer/PKGBUILD
new file mode 100644
index 000000000..dd0e3337f
--- /dev/null
+++ b/extra/xfce4-mixer/PKGBUILD
@@ -0,0 +1,38 @@
+# $Id: PKGBUILD 111572 2011-02-27 18:15:06Z andyrtr $
+# Maintainer: Tobias Kieslich <tobias funnychar archlinux.org>
+
+pkgname=xfce4-mixer
+pkgver=4.8.0
+pkgrel=1
+pkgdesc="The volume control plugin for the Xfce panel"
+arch=(i686 x86_64)
+license=('GPL2')
+url="http://www.xfce.org/"
+groups=('xfce4')
+depends=("xfce4-panel>=4.8.0" 'gstreamer0.10-base>=0.10.22' 'hicolor-icon-theme')
+makedepends=('intltool')
+optdepends=('gstreamer0.10-base-plugins: to support basic audio hardware' \
+ 'gstreamer0.10-good-plugins: well supported hardware'\
+ 'gstreamer0.10-bad-plugins: not so well supported hardware'\
+ 'gstreamer0.10-ugly-plugins: might contain questionable license hardware')
+options=('!libtool')
+install=${pkgname}.install
+source=(http://archive.xfce.org/src/apps/${pkgname}/4.8/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('3fa3a9973e18c04da26709a654e242ff')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --libexecdir=/usr/lib \
+ --localstatedir=/var \
+ --disable-static \
+ --with-sound=alsa \
+ --disable-debug
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/xfce4-mixer/xfce4-mixer.install b/extra/xfce4-mixer/xfce4-mixer.install
new file mode 100644
index 000000000..21b79d2d4
--- /dev/null
+++ b/extra/xfce4-mixer/xfce4-mixer.install
@@ -0,0 +1,11 @@
+post_install() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
diff --git a/extra/xfce4-mount-plugin/PKGBUILD b/extra/xfce4-mount-plugin/PKGBUILD
new file mode 100644
index 000000000..72cd37aca
--- /dev/null
+++ b/extra/xfce4-mount-plugin/PKGBUILD
@@ -0,0 +1,33 @@
+# $Id: PKGBUILD 105777 2011-01-11 18:27:59Z andyrtr $
+# Maintainer: AndyRTR <andyrtr@archlinux.org>
+# Contributor: Tobias Kieslich <tobias (at) archlinux.org>
+
+pkgname=xfce4-mount-plugin
+pkgver=0.5.5
+pkgrel=1
+pkgdesc="plugin for the Xfce4 panel to mount and unmount volumes"
+arch=('i686' 'x86_64')
+license=('GPL2')
+url="http://xfce-goodies.berlios.de/"
+groups=('xfce4-goodies')
+depends=('xfce4-panel' 'libxfcegui4' 'hicolor-icon-theme')
+makedepends=('intltool')
+install=${pkgname}.install
+source=(http://archive.xfce.org/src/panel-plugins/${pkgname}/0.5/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('1d237468fe23e4e8c29195d9b99c4c5d')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --libexecdir=/usr/lib \
+ --localstatedir=/var \
+ --disable-static \
+ --disable-debug
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/xfce4-mount-plugin/xfce4-mount-plugin.install b/extra/xfce4-mount-plugin/xfce4-mount-plugin.install
new file mode 100644
index 000000000..21b79d2d4
--- /dev/null
+++ b/extra/xfce4-mount-plugin/xfce4-mount-plugin.install
@@ -0,0 +1,11 @@
+post_install() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
diff --git a/extra/xfce4-mpc-plugin/PKGBUILD b/extra/xfce4-mpc-plugin/PKGBUILD
new file mode 100644
index 000000000..13a03f4e2
--- /dev/null
+++ b/extra/xfce4-mpc-plugin/PKGBUILD
@@ -0,0 +1,34 @@
+# $Id: PKGBUILD 105780 2011-01-11 18:35:22Z andyrtr $
+# Maintainer: Andreas Radke <andyrtr@archlinux.org>
+# Contributor: aurelien <aurelien@archlinux.org>
+# Contributor: Tobias Kieslich <tobias (at) archlinux.org>
+
+pkgname=xfce4-mpc-plugin
+pkgver=0.3.6
+pkgrel=1
+pkgdesc="plugin to control the music player daemon from the xfce4-panel"
+arch=(i686 x86_64)
+license=('GPL2')
+url="http://goodies.xfce.org/projects/panel-plugins/xfce4-mpc-plugin"
+groups=('xfce4-goodies')
+depends=('xfce4-panel' 'libxfcegui4' 'libmpd>=0.16.1')
+makedepends=('intltool')
+options=(!libtool)
+source=(http://archive.xfce.org/src/panel-plugins/${pkgname}/0.3/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('a6366662885d803dcebd82bbb91ed3c7')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --libexecdir=/usr/lib \
+ --localstatedir=/var \
+ --disable-static \
+ --disable-debug
+ make
+}
+
+package(){
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/xfce4-netload-plugin/PKGBUILD b/extra/xfce4-netload-plugin/PKGBUILD
new file mode 100644
index 000000000..363df6eb7
--- /dev/null
+++ b/extra/xfce4-netload-plugin/PKGBUILD
@@ -0,0 +1,34 @@
+# $Id: PKGBUILD 104754 2011-01-04 20:48:54Z andyrtr $
+# Maintainer: aurelien <aurelien@archlinux.org>
+# Contributor: Aurelien Foret <orelien@chez.com>
+
+pkgname=xfce4-netload-plugin
+pkgver=1.0.0
+pkgrel=1
+pkgdesc="A netload plugin for the Xfce panel"
+arch=(i686 x86_64)
+license=('GPL2')
+url="http://xfce-goodies.berlios.de/"
+groups=('xfce4-goodies')
+depends=('xfce4-panel>=4.7.4' 'libxfcegui4' 'hicolor-icon-theme')
+makedepends=('intltool')
+options=('!libtool')
+install=${pkgname}.install
+source=(http://archive.xfce.org/src/panel-plugins/${pkgname}/1.0/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('cab53e8cc2b9bfdf7ffd2230916ca3df')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --libexecdir=/usr/lib \
+ --localstatedir=/var \
+ --disable-static \
+ --disable-debug
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/xfce4-netload-plugin/xfce4-netload-plugin.install b/extra/xfce4-netload-plugin/xfce4-netload-plugin.install
new file mode 100644
index 000000000..b7e9ea08e
--- /dev/null
+++ b/extra/xfce4-netload-plugin/xfce4-netload-plugin.install
@@ -0,0 +1,12 @@
+post_install() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
diff --git a/extra/xfce4-notes-plugin/PKGBUILD b/extra/xfce4-notes-plugin/PKGBUILD
new file mode 100644
index 000000000..889e1ac02
--- /dev/null
+++ b/extra/xfce4-notes-plugin/PKGBUILD
@@ -0,0 +1,34 @@
+# $Id: PKGBUILD 104757 2011-01-04 20:53:16Z andyrtr $
+# Maintainer: Andreas Radke <andyrtr at archlinux.org>
+# Contributor: Ben Mazer <contrasutra@myrealbox.com>
+
+pkgname=xfce4-notes-plugin
+pkgver=1.7.7
+pkgrel=2
+pkgdesc="A notes plugin for the Xfce4 panel"
+arch=('i686' 'x86_64')
+license=('GPL2')
+url="http://xfce-goodies.berlios.de/"
+groups=('xfce4-goodies')
+depends=('xfce4-panel>=4.7.0' 'libxfcegui4' 'libunique' 'hicolor-icon-theme')
+makedepends=('intltool')
+options=('!libtool')
+install=${pkgname}.install
+source=(http://archive.xfce.org/src/panel-plugins/${pkgname}/1.7/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('42b924b23f2fec6a1099e9b7a87db4a3')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --libexecdir=/usr/lib \
+ --localstatedir=/var \
+ --disable-static \
+ --disable-debug
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/xfce4-notes-plugin/xfce4-notes-plugin.install b/extra/xfce4-notes-plugin/xfce4-notes-plugin.install
new file mode 100644
index 000000000..fee9e5d11
--- /dev/null
+++ b/extra/xfce4-notes-plugin/xfce4-notes-plugin.install
@@ -0,0 +1,12 @@
+post_install() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
diff --git a/extra/xfce4-notifyd/PKGBUILD b/extra/xfce4-notifyd/PKGBUILD
new file mode 100644
index 000000000..c08a9d259
--- /dev/null
+++ b/extra/xfce4-notifyd/PKGBUILD
@@ -0,0 +1,37 @@
+# $Id: PKGBUILD 108801 2011-02-03 16:49:52Z andyrtr $
+# Maintainer: AndyRTR <andyrtr@archlinux.org>
+# Contributor: tobias <tobias funnychar archlinux.org>
+
+pkgname=xfce4-notifyd
+pkgver=0.2.1
+pkgrel=1
+pkgdesc="notification daemon for the xfce desktop"
+arch=('i686' 'x86_64')
+license=('GPL2')
+url="http://goodies.xfce.org/projects/applications/xfce4-notifyd"
+groups=('xfce4-goodies')
+depends=('libxfce4ui' 'hicolor-icon-theme')
+makedepends=('intltool')
+provides=('notification-daemon')
+conflicts=('notification-daemon' 'notification-daemon-xfce')
+replaces=('notification-daemon-xfce')
+options=('!libtool')
+install=${pkgname}.install
+source=(http://archive.xfce.org/src/apps/${pkgname}/0.2/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('0a63857901809887b587c73024d1089b')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --libexecdir=/usr/lib \
+ --localstatedir=/var \
+ --disable-static \
+ --disable-debug
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/xfce4-notifyd/xfce4-notifyd.install b/extra/xfce4-notifyd/xfce4-notifyd.install
new file mode 100644
index 000000000..fee9e5d11
--- /dev/null
+++ b/extra/xfce4-notifyd/xfce4-notifyd.install
@@ -0,0 +1,12 @@
+post_install() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
diff --git a/extra/xfce4-panel/PKGBUILD b/extra/xfce4-panel/PKGBUILD
new file mode 100644
index 000000000..366719419
--- /dev/null
+++ b/extra/xfce4-panel/PKGBUILD
@@ -0,0 +1,36 @@
+# $Id: PKGBUILD 111567 2011-02-27 18:09:04Z andyrtr $
+# Maintainer: AndyRTR <andyrtr@archlinux.org>
+# Contributor: tobias <tobias funnychar archlinux.org>
+
+pkgname=xfce4-panel
+pkgver=4.8.2
+pkgrel=1
+pkgdesc="Panel for the Xfce desktop environment"
+arch=('i686' 'x86_64')
+license=('GPL2')
+url="http://www.xfce.org/"
+groups=('xfce4')
+depends=('exo>=0.6.0' 'garcon>=0.1.5' 'libxfce4ui>=4.8.0' 'libwnck' 'hicolor-icon-theme')
+makedepends=('intltool' 'gtk-doc')
+options=('!libtool')
+install=${pkgname}.install
+source=(http://archive.xfce.org/src/xfce/${pkgname}/4.8/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('7c5be8f7cd7966b37a71d695946e4d2b')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --libexecdir=/usr/lib \
+ --localstatedir=/var \
+ --disable-static \
+ --enable-gio-unix \
+ --enable-gtk-doc \
+ --disable-debug
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/xfce4-panel/xfce4-panel.install b/extra/xfce4-panel/xfce4-panel.install
new file mode 100644
index 000000000..21b79d2d4
--- /dev/null
+++ b/extra/xfce4-panel/xfce4-panel.install
@@ -0,0 +1,11 @@
+post_install() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
diff --git a/extra/xfce4-power-manager/PKGBUILD b/extra/xfce4-power-manager/PKGBUILD
new file mode 100644
index 000000000..9992fc0a4
--- /dev/null
+++ b/extra/xfce4-power-manager/PKGBUILD
@@ -0,0 +1,41 @@
+# $Id: PKGBUILD 112918 2011-03-07 18:39:50Z andyrtr $
+# Maintainer: Andreas Radke <andyrtr@archlinux.org>
+# Contributor: Tobias Kieslich <tobias funnychar archlinux.org>
+
+pkgname=xfce4-power-manager
+pkgver=1.0.10
+pkgrel=2
+pkgdesc="power manager for xfce4 desktop"
+arch=(i686 x86_64)
+license=('GPL2')
+url="http://xfce-goodies.berlios.de/"
+groups=('xfce4-goodies')
+depends=('xfce4-panel>=4.7.4' 'upower' 'udisks' 'libnotify>=0.7.1' 'hicolor-icon-theme' 'librsvg')
+makedepends=('pkgconfig' 'intltool')
+options=('!libtool')
+install=${pkgname}.install
+source=(http://archive.xfce.org/src/apps/${pkgname}/1.0/${pkgname}-${pkgver}.tar.bz2
+ xfce4-power-manager-1.0.10-libnotify-0.7.patch)
+md5sums=('38cbd272eb30e36ae538d9f38858bd38'
+ 'c790f973c29654701bb0748f842be4f7')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ patch -Np1 -i ${srcdir}/xfce4-power-manager-1.0.10-libnotify-0.7.patch
+
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --libexecdir=/usr/lib \
+ --localstatedir=/var \
+ --disable-network-manager \
+ --enable-polkit \
+ --enable-dpms \
+ --disable-debug
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/xfce4-power-manager/xfce4-power-manager-1.0.10-libnotify-0.7.patch b/extra/xfce4-power-manager/xfce4-power-manager-1.0.10-libnotify-0.7.patch
new file mode 100644
index 000000000..60cdf27c5
--- /dev/null
+++ b/extra/xfce4-power-manager/xfce4-power-manager-1.0.10-libnotify-0.7.patch
@@ -0,0 +1,14 @@
+diff --git a/src/xfpm-notify.c b/src/xfpm-notify.c
+index c93a843..311b0fd 100644
+--- a/src/xfpm-notify.c
++++ b/src/xfpm-notify.c
+@@ -233,9 +233,6 @@ xfpm_notify_new_notification_internal (const gchar *title, const gchar *message,
+ #if !NOTIFY_CHECK_VERSION (0, 7, 0)
+ if ( icon )
+ notify_notification_attach_to_status_icon (n, icon);
+-#else
+- if ( icon )
+- notify_notification_attach_to_status_icon (n, icon);
+ #endif
+ #endif
+
diff --git a/extra/xfce4-power-manager/xfce4-power-manager.install b/extra/xfce4-power-manager/xfce4-power-manager.install
new file mode 100644
index 000000000..21b79d2d4
--- /dev/null
+++ b/extra/xfce4-power-manager/xfce4-power-manager.install
@@ -0,0 +1,11 @@
+post_install() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
diff --git a/extra/xfce4-quicklauncher-plugin/PKGBUILD b/extra/xfce4-quicklauncher-plugin/PKGBUILD
new file mode 100644
index 000000000..d783ecf24
--- /dev/null
+++ b/extra/xfce4-quicklauncher-plugin/PKGBUILD
@@ -0,0 +1,50 @@
+# $Id: PKGBUILD 104771 2011-01-04 21:40:42Z andyrtr $
+# Maintainer:
+# Contributor: Tobias Kieslich <tobias (at) archlinux.org>
+
+pkgname=xfce4-quicklauncher-plugin
+pkgver=1.9.4
+pkgrel=5
+pkgdesc="plugin that creates 4 little application launcher in the Xfce4 panel"
+arch=('i686' 'x86_64')
+license=('GPL2')
+url="http://xfce-goodies.berlios.de/"
+groups=('xfce4-goodies')
+depends=('xfce4-panel>=4.7.4' 'libxfcegui4')
+makedepends=('intltool')
+options=('!libtool')
+source=(http://archive.xfce.org/src/panel-plugins/${pkgname}/1.9/${pkgname}-${pkgver}.tar.bz2
+ xfce4-quicklauncher-plugin-1.9.4-desktop-file.patch
+ xfce4-quicklauncher-plugin-1.9.4-fix-missing-english-translation.patch
+ xfce4-quicklauncher-plugin-1.9.4-fix-multiscreen.patch
+ xfce4-quicklauncher-plugin-1.9.4-save-settings.patch
+ xfce4-quicklauncher-plugin-1.9.4-xfce4-settings-manager.patch)
+md5sums=('299e17f196ecfa5fb018cf65abb19b56'
+ 'a7826c9f8199a2f1e914fd39b7f9e2bf'
+ '4ea4d06ab7284e78ddc4d60304f02cdf'
+ '5e8126c05def1211fb4a2a65f2812a1b'
+ '474237b205035214df1c723407251ade'
+ '9e7f789129b08c787978c7a72a55fae7')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ # Fedora patches
+ patch -Np0 -i ${srcdir}/xfce4-quicklauncher-plugin-1.9.4-desktop-file.patch
+ patch -Np0 -i ${srcdir}/xfce4-quicklauncher-plugin-1.9.4-fix-multiscreen.patch
+ patch -Np1 -i ${srcdir}/xfce4-quicklauncher-plugin-1.9.4-save-settings.patch
+ patch -Np1 -i ${srcdir}/xfce4-quicklauncher-plugin-1.9.4-fix-missing-english-translation.patch
+ patch -Np0 -i ${srcdir}/xfce4-quicklauncher-plugin-1.9.4-xfce4-settings-manager.patch
+
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --libexecdir=/usr/lib \
+ --localstatedir=/var \
+ --disable-static \
+ --disable-debug
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/xfce4-quicklauncher-plugin/xfce4-quicklauncher-plugin-1.9.4-desktop-file.patch b/extra/xfce4-quicklauncher-plugin/xfce4-quicklauncher-plugin-1.9.4-desktop-file.patch
new file mode 100644
index 000000000..907c1f23e
--- /dev/null
+++ b/extra/xfce4-quicklauncher-plugin/xfce4-quicklauncher-plugin-1.9.4-desktop-file.patch
@@ -0,0 +1,10 @@
+--- panel-plugin/quicklauncher.desktop.in.in.orig 2009-07-04 00:46:34.000000000 +0200
++++ panel-plugin/quicklauncher.desktop.in.in 2009-07-04 00:46:51.000000000 +0200
+@@ -4,4 +4,6 @@
+ _Name=Quicklauncher
+ _Comment=Program with several launchers
+ Icon=gnome-fs-executable
+-X-XFCE-Module=@INTERNAL_PLUGIN_PATH@/libquicklauncher.so
++X-XFCE-Module=quicklauncher
++X-XFCE-Module-Path=@INTERNAL_PLUGIN_PATH@
++X-XFCE-Unique=false
diff --git a/extra/xfce4-quicklauncher-plugin/xfce4-quicklauncher-plugin-1.9.4-fix-missing-english-translation.patch b/extra/xfce4-quicklauncher-plugin/xfce4-quicklauncher-plugin-1.9.4-fix-missing-english-translation.patch
new file mode 100644
index 000000000..96f256770
--- /dev/null
+++ b/extra/xfce4-quicklauncher-plugin/xfce4-quicklauncher-plugin-1.9.4-fix-missing-english-translation.patch
@@ -0,0 +1,103 @@
+diff -Nur -x '*.orig' -x '*~' xfce4-quicklauncher-plugin-1.9.4/configure xfce4-quicklauncher-plugin-1.9.4.new/configure
+--- xfce4-quicklauncher-plugin-1.9.4/configure 2007-06-27 21:07:14.000000000 +0200
++++ xfce4-quicklauncher-plugin-1.9.4.new/configure 2008-03-04 22:11:23.000000000 +0100
+@@ -21181,7 +21181,7 @@
+
+
+
+- ALL_LINGUAS="cs el eu fr gl hu ja pl ru vi"
++ ALL_LINGUAS="cs el en eu fr gl hu ja pl ru vi"
+
+
+ for ac_header in locale.h
+diff -Nur -x '*.orig' -x '*~' xfce4-quicklauncher-plugin-1.9.4/po/en.po xfce4-quicklauncher-plugin-1.9.4.new/po/en.po
+--- xfce4-quicklauncher-plugin-1.9.4/po/en.po 1970-01-01 01:00:00.000000000 +0100
++++ xfce4-quicklauncher-plugin-1.9.4.new/po/en.po 2008-03-04 22:10:58.000000000 +0100
+@@ -0,0 +1,87 @@
++# English translation of xfce4-quicklauncher-plugin.
++# Copyright (C) 2007 THE xfce4-quicklauncher-plugin'S COPYRIGHT HOLDER
++# This file is distributed under the same license as the xfce4-quicklauncher-plugin package.
++# Jeff Bailes <thepizzaking@gmail.com>, 2007.
++# , fuzzy
++#
++#
++msgid ""
++msgstr ""
++"Project-Id-Version: xfce4-quicklauncher-plugin\n"
++"Report-Msgid-Bugs-To: \n"
++"POT-Creation-Date: 2007-05-17 21:37+0200\n"
++"PO-Revision-Date: 2007-03-31 10:17+1000\n"
++"Last-Translator: Jeff Bailes <thepizzaking@gmail.com>\n"
++"Language-Team: English\n"
++"MIME-Version: 1.0\n"
++"Content-Type: text/plain; charset=UTF-8\n"
++"Content-Transfer-Encoding: 8bit"
++
++#: ../panel-plugin/callbacks.c:79
++msgid "Configure Quicklauncher"
++msgstr "Configure Quicklauncher"
++
++#: ../panel-plugin/callbacks.c:93
++msgid "Lines: "
++msgstr "Lines: "
++
++#: ../panel-plugin/callbacks.c:123
++msgid "Espace entre les lanceurs :"
++msgstr "Space between launchers"
++
++#: ../panel-plugin/callbacks.c:131
++msgid "afficher les tooltips"
++msgstr "Show tooltips"
++
++#: ../panel-plugin/callbacks.c:135
++msgid "afficher les labels"
++msgstr "Show labels"
++
++#: ../panel-plugin/callbacks.c:216
++msgid "icone"
++msgstr "icon"
++
++#: ../panel-plugin/callbacks.c:222
++msgid "commande"
++msgstr "command"
++
++#: ../panel-plugin/callbacks.c:228
++msgid "nom"
++msgstr "name"
++
++#: ../panel-plugin/callbacks.c:327
++msgid "Open icon"
++msgstr "Open icon"
++
++#: ../panel-plugin/main.c:163 ../panel-plugin/quicklauncher.desktop.in.in.h:2
++msgid "Quicklauncher"
++msgstr "Quicklauncher"
++
++#: ../panel-plugin/main.c:166
++msgid "Allows you to add launchers easily and display them on many lines."
++msgstr "Allows you to add launchers easily and display them on many lines."
++
++#: ../panel-plugin/main.c:168
++msgid "Other plugins available here"
++msgstr "Other plugins available here"
++
++#: ../panel-plugin/main.c:320
++msgid "Lock"
++msgstr "Lock"
++
++#: ../panel-plugin/main.c:323
++msgid "Parameters"
++msgstr "Parameters"
++
++#: ../panel-plugin/main.c:326
++msgid "Applications"
++msgstr "Applications"
++
++#: ../panel-plugin/main.c:329
++msgid "Help"
++msgstr "Help"
++
++#: ../panel-plugin/quicklauncher.desktop.in.in.h:1
++msgid "Program with several launchers"
++msgstr "Program with several launchers"
++
diff --git a/extra/xfce4-quicklauncher-plugin/xfce4-quicklauncher-plugin-1.9.4-fix-multiscreen.patch b/extra/xfce4-quicklauncher-plugin/xfce4-quicklauncher-plugin-1.9.4-fix-multiscreen.patch
new file mode 100644
index 000000000..9845ce122
--- /dev/null
+++ b/extra/xfce4-quicklauncher-plugin/xfce4-quicklauncher-plugin-1.9.4-fix-multiscreen.patch
@@ -0,0 +1,27 @@
+--- panel-plugin/main.c.org 2008-05-13 09:29:29.000000000 -0600
++++ panel-plugin/main.c 2008-05-13 09:29:33.000000000 -0600
+@@ -148,6 +148,7 @@
+ t_qck_launcher_opt_dlg* dlg;
+ xfce_panel_plugin_block_menu(plugin);
+ dlg = create_qck_launcher_dlg();
++ gtk_window_set_screen (GTK_WINDOW (dlg->dialog), gtk_widget_get_screen (plugin));
+ qck_launcher_opt_dlg_set_quicklauncher(quicklauncher);
+ gtk_dialog_run(GTK_DIALOG(dlg->dialog));
+ xfce_panel_plugin_unblock_menu(plugin);
+@@ -160,6 +161,7 @@
+ GtkWidget *about;
+ const gchar* authors[2] = {"Bountykiller <masse_nicolas@yahoo.fr>", NULL};
+ about = gtk_about_dialog_new();
++ gtk_window_set_screen (GTK_WINDOW (about), gtk_widget_get_screen (plugin));
+ gtk_about_dialog_set_name(GTK_ABOUT_DIALOG(about), _("Quicklauncher"));
+ gtk_about_dialog_set_logo(GTK_ABOUT_DIALOG(about), NULL);
+ gtk_about_dialog_set_authors(GTK_ABOUT_DIALOG(about), (const gchar**) authors);
+@@ -461,7 +463,7 @@
+ if(launcher->quicklauncher->_last_zoomed_launcher == launcher)
+ {
+ g_return_val_if_fail(launcher->clicked_img, FALSE);
+- xfce_exec(launcher->command, FALSE, FALSE, NULL);
++ xfce_exec_on_screen(gtk_widget_get_screen (box), launcher->command, FALSE, FALSE, NULL);
+ gtk_image_set_from_pixbuf (GTK_IMAGE(launcher->image), launcher->def_img);
+ }
+ else
diff --git a/extra/xfce4-quicklauncher-plugin/xfce4-quicklauncher-plugin-1.9.4-save-settings.patch b/extra/xfce4-quicklauncher-plugin/xfce4-quicklauncher-plugin-1.9.4-save-settings.patch
new file mode 100644
index 000000000..85dd21729
--- /dev/null
+++ b/extra/xfce4-quicklauncher-plugin/xfce4-quicklauncher-plugin-1.9.4-save-settings.patch
@@ -0,0 +1,12 @@
+Index: xfce4-quicklauncher-plugin-1.9.4/panel-plugin/main.c
+===================================================================
+--- xfce4-quicklauncher-plugin-1.9.4/panel-plugin/main.c (révision 3779)
++++ xfce4-quicklauncher-plugin-1.9.4/panel-plugin/main.c (révision 3780)
+@@ -151,6 +151,7 @@
+ gtk_window_set_screen (GTK_WINDOW (dlg->dialog), gtk_widget_get_screen (plugin));
+ qck_launcher_opt_dlg_set_quicklauncher(quicklauncher);
+ gtk_dialog_run(GTK_DIALOG(dlg->dialog));
++ quicklauncher_save(plugin, quicklauncher);
+ xfce_panel_plugin_unblock_menu(plugin);
+ }
+
diff --git a/extra/xfce4-quicklauncher-plugin/xfce4-quicklauncher-plugin-1.9.4-xfce4-settings-manager.patch b/extra/xfce4-quicklauncher-plugin/xfce4-quicklauncher-plugin-1.9.4-xfce4-settings-manager.patch
new file mode 100644
index 000000000..8314d7a3c
--- /dev/null
+++ b/extra/xfce4-quicklauncher-plugin/xfce4-quicklauncher-plugin-1.9.4-xfce4-settings-manager.patch
@@ -0,0 +1,11 @@
+--- panel-plugin/main.c.orig 2009-09-09 21:15:01.000000000 +0200
++++ panel-plugin/main.c 2009-09-09 21:23:12.000000000 +0200
+@@ -320,7 +320,7 @@
+ launcher = launcher_new(_("Lock"), "xflock4", XFCE_ICON_CATEGORY_SYSTEM,
+ NULL, quicklauncher);
+ quicklauncher_add_element(quicklauncher, launcher);
+- launcher = launcher_new(_("Parameters"),"xfce-setting-show", XFCE_ICON_CATEGORY_SETTINGS,
++ launcher = launcher_new(_("Parameters"),"xfce4-settings-manager", XFCE_ICON_CATEGORY_SETTINGS,
+ NULL, quicklauncher);
+ quicklauncher_add_element(quicklauncher, launcher);
+ launcher = launcher_new(_("Applications"), "xfce4-appfinder", XFCE_ICON_CATEGORY_UTILITY,
diff --git a/extra/xfce4-screenshooter/PKGBUILD b/extra/xfce4-screenshooter/PKGBUILD
new file mode 100644
index 000000000..4db623812
--- /dev/null
+++ b/extra/xfce4-screenshooter/PKGBUILD
@@ -0,0 +1,43 @@
+# $Id: PKGBUILD 104774 2011-01-04 21:47:46Z andyrtr $
+# Maintainer: tobias <tobias funnychar archlinux.org>
+# Contributor: Tobias Kieslich <tobias (at) archlinux.org>
+
+pkgname=xfce4-screenshooter
+pkgver=1.7.9
+pkgrel=2
+pkgdesc="plugin that makes screenshots for the Xfce4 panel"
+arch=(i686 x86_64)
+license=('GPL2')
+url="http://goodies.xfce.org/projects/applications/xfce4-screenshooter"
+groups=('xfce4-goodies')
+#depends=('xfce4-panel' 'libxfcegui4' 'libxfce4ui' 'exo' 'libsoup' 'hicolor-icon-theme')
+depends=('xfce4-panel' 'libxfcegui4' 'libsoup' 'hicolor-icon-theme')
+makedepends=('intltool')
+install=${pkgname}.install
+options=('!libtool')
+source=(http://archive.xfce.org/src/apps/${pkgname}/1.7/${pkgname}-${pkgver}.tar.bz2
+ xfce4-screenshooter-1.7.9-dsofix.patch
+ fix_segfault.diff)
+conflicts=('xfce4-screenshooter-plugin')
+replaces=('xfce4-screenshooter-plugin')
+md5sums=('c01d1cf3830bf8d60e09c0cdd223034c'
+ '355a7d005bf9200f5a5577f0bc901945'
+ '794d7e0ff18cad369bd50a78e883f986')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ patch -Np1 -i ${srcdir}/xfce4-screenshooter-1.7.9-dsofix.patch
+ patch -Np1 -i ${srcdir}/fix_segfault.diff
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --libexecdir=/usr/lib \
+ --localstatedir=/var \
+ --disable-static \
+ --disable-debug
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/xfce4-screenshooter/fix_segfault.diff b/extra/xfce4-screenshooter/fix_segfault.diff
new file mode 100644
index 000000000..e2a2f3d95
--- /dev/null
+++ b/extra/xfce4-screenshooter/fix_segfault.diff
@@ -0,0 +1,17 @@
+--- xfce4-screenshooter-1.7.9/lib/screenshooter-utils.c.orig 2010-01-02 12:42:24.000000000 +0100
++++ xfce4-screenshooter-1.7.9/lib/screenshooter-utils.c 2010-05-20 22:40:38.347861374 +0200
+@@ -94,11 +94,11 @@
+ g_free (title);
+ title =
+ g_strdup (xfce_rc_read_entry (rc, "title", _("Screenshot")));
+- }
+
+- TRACE ("Close the rc file");
++ TRACE ("Close the rc file");
+
+- xfce_rc_close (rc);
++ xfce_rc_close (rc);
++ }
+ }
+
+ /* And set the sd values */
diff --git a/extra/xfce4-screenshooter/xfce4-screenshooter-1.7.9-dsofix.patch b/extra/xfce4-screenshooter/xfce4-screenshooter-1.7.9-dsofix.patch
new file mode 100644
index 000000000..a142df822
--- /dev/null
+++ b/extra/xfce4-screenshooter/xfce4-screenshooter-1.7.9-dsofix.patch
@@ -0,0 +1,11 @@
+--- xfce4-screenshooter-1.7.9.orig/Makefile.in 2010-02-07 14:45:15.000000000 +0100
++++ xfce4-screenshooter-1.7.9/Makefile.in 2010-02-16 23:57:31.000000000 +0100
+@@ -282,7 +282,7 @@
+ INTLTOOL_PERL = @INTLTOOL_PERL@
+ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+ LD = @LD@
+-LDFLAGS = @LDFLAGS@
++LDFLAGS = @LDFLAGS@ -lm -lX11
+ LIBOBJS = @LIBOBJS@
+ LIBS = @LIBS@
+ LIBTOOL = @LIBTOOL@
diff --git a/extra/xfce4-screenshooter/xfce4-screenshooter.install b/extra/xfce4-screenshooter/xfce4-screenshooter.install
new file mode 100644
index 000000000..21b79d2d4
--- /dev/null
+++ b/extra/xfce4-screenshooter/xfce4-screenshooter.install
@@ -0,0 +1,11 @@
+post_install() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
diff --git a/extra/xfce4-sensors-plugin/PKGBUILD b/extra/xfce4-sensors-plugin/PKGBUILD
new file mode 100644
index 000000000..3971a7d66
--- /dev/null
+++ b/extra/xfce4-sensors-plugin/PKGBUILD
@@ -0,0 +1,46 @@
+# $Id: PKGBUILD 112922 2011-03-07 18:49:40Z andyrtr $
+# Maintainer: Andreas Radke <andyrtr@archlinux.org>
+# Contributor: Merk Matthias <macem@chello.at>
+
+pkgname=xfce4-sensors-plugin
+pkgver=1.0.0
+pkgrel=4
+pkgdesc="A lm_sensors plugin for the Xfce panel"
+arch=('i686' 'x86_64')
+license=('GPL2')
+url="http://goodies.xfce.org/projects/panel-plugins/xfce4-sensors-plugin"
+groups=('xfce4-goodies')
+depends=('xfce4-panel' 'libxfcegui4' 'lm_sensors' 'libnotify>=0.7.1' 'hicolor-icon-theme')
+makedepends=('pkgconfig' 'intltool' 'hddtemp>=0.3.beta15.45-2' 'gnu-netcat' 'xfce4-dev-tools')
+optdepends=('gnu-netcat: for hddtemp access')
+options=(!libtool)
+install=${pkgname}.install
+source=(http://archive.xfce.org/src/panel-plugins/${pkgname}/1.0/${pkgname}-${pkgver}.tar.bz2
+ xfce4-sensors-plugin-1.0.0-underlink.patch
+ xfce4-sensors-plugin-1.0.0-libnotify-0.7.patch)
+md5sums=('74d83628246536d575f954c76724982b'
+ 'f0295e3a7c6beb267355f64fc0ed44d5'
+ 'b5e9013de01cd8f2b4a72c8f052d2c37')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ # panel 4.8 patch from http://bugzilla.xfce.org/show_bug.cgi?id=7095
+ patch -Np1 -i ${srcdir}/xfce4-sensors-plugin-1.0.0-underlink.patch
+
+ patch -Np1 -i ${srcdir}/xfce4-sensors-plugin-1.0.0-libnotify-0.7.patch
+
+ xdt-autogen
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --libexecdir=/usr/lib \
+ --localstatedir=/var \
+ --disable-static \
+ --with-pathhddtemp=/usr/sbin/hddtemp \
+ --disable-debug
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/xfce4-sensors-plugin/xfce4-sensors-plugin-1.0.0-libnotify-0.7.patch b/extra/xfce4-sensors-plugin/xfce4-sensors-plugin-1.0.0-libnotify-0.7.patch
new file mode 100644
index 000000000..d2b5a2926
--- /dev/null
+++ b/extra/xfce4-sensors-plugin/xfce4-sensors-plugin-1.0.0-libnotify-0.7.patch
@@ -0,0 +1,25 @@
+diff -dur xfce4-sensors-plugin-1.0.0.orig/lib/hddtemp.c xfce4-sensors-plugin-1.0.0/lib/hddtemp.c
+--- xfce4-sensors-plugin-1.0.0.orig/lib/hddtemp.c 2010-03-27 16:11:48.000000000 +0100
++++ xfce4-sensors-plugin-1.0.0/lib/hddtemp.c 2010-11-06 20:50:11.717022222 +0100
+@@ -102,7 +102,7 @@
+ if (!notify_is_initted())
+ notify_init(PACKAGE); /* NOTIFY_APPNAME */
+
+- nn = notify_notification_new (summary, body, icon, NULL);
++ nn = notify_notification_new (summary, body, icon);
+ /* FIXME: Use channels or propagate private object or use static global variable */
+ //notify_notification_add_action (nn,
+ //"confirmed",
+diff -dur xfce4-sensors-plugin-1.0.0.orig/lib/sensors-interface.c xfce4-sensors-plugin-1.0.0/lib/sensors-interface.c
+--- xfce4-sensors-plugin-1.0.0.orig/lib/sensors-interface.c 2010-03-27 16:11:48.000000000 +0100
++++ xfce4-sensors-plugin-1.0.0/lib/sensors-interface.c 2010-11-06 20:50:24.360007993 +0100
+@@ -105,7 +105,7 @@
+ if (!notify_is_initted())
+ notify_init(PACKAGE); /* NOTIFY_APPNAME */
+
+- nn = notify_notification_new(summary, body, icon, NULL);
++ nn = notify_notification_new(summary, body, icon);
+ notify_notification_show(nn, &error);
+ #else
+ DBG("%s\n%s", summary, body);
+
diff --git a/extra/xfce4-sensors-plugin/xfce4-sensors-plugin-1.0.0-underlink.patch b/extra/xfce4-sensors-plugin/xfce4-sensors-plugin-1.0.0-underlink.patch
new file mode 100644
index 000000000..2a19d1d8b
--- /dev/null
+++ b/extra/xfce4-sensors-plugin/xfce4-sensors-plugin-1.0.0-underlink.patch
@@ -0,0 +1,36 @@
+--- xfce4-sensors-plugin-1.0.0/panel-plugin/Makefile.am 2011-01-14 15:40:24.065537723 +0000
++++ xfce4-sensors-plugin-1.0.0/panel-plugin/Makefile.am.new 2011-01-14 15:41:48.248960397 +0000
+@@ -20,6 +20,7 @@
+
+ xfce4_sensors_plugin_CFLAGS = \
+ @LIBXFCE4PANEL_CFLAGS@ \
++ @LIBXFCEGUI4_CFLAGS@ \
+ @PLATFORM_CFLAGS@ \
+ -DPACKAGE_LOCALE_DIR=\"$(localedir)\" \
+ @LIBSENSORS_CFLAGS@
+@@ -30,6 +31,7 @@
+ xfce4_sensors_plugin_LDFLAGS = \
+ $(top_builddir)/lib/libxfce4sensors.la \
+ @LIBXFCE4PANEL_LIBS@ \
++ @LIBXFCEGUI4_LIBS@ \
+ @SOLLIBS@ \
+ @LIBSENSORS_LDFLAGS@ \
+ @LIBM@
+--- xfce4-sensors-plugin-1.0.0/src/Makefile.am 2009-11-06 11:02:11.000000000 +0000
++++ xfce4-sensors-plugin-1.0.0/src/Makefile.am.new 2011-01-14 16:19:09.777636193 +0000
+@@ -27,6 +27,7 @@
+ -DPACKAGE_LOCALE_DIR=\"$(localedir)\" \
+ @LIBSENSORS_CFLAGS@ \
+ @LIBXFCE4UTIL_CFLAGS@ \
++ @LIBXFCE4PANEL_CFLAGS@ \
+ @LIBXFCEGUI4_CFLAGS@
+
+ # @GTK_CFLAGS@ \
+@@ -41,6 +42,7 @@
+ $(top_builddir)/lib/libxfce4sensors.la \
+ @LIBSENSORS_LDFLAGS@ \
+ @LIBXFCE4UTIL_LIBS@ \
++ @LIBXFCE4PANEL_LIBS@ \
+ @LIBXFCEGUI4_LIBS@
+
+ # @GTK_LIBS@ \
diff --git a/extra/xfce4-sensors-plugin/xfce4-sensors-plugin.install b/extra/xfce4-sensors-plugin/xfce4-sensors-plugin.install
new file mode 100644
index 000000000..17ca8f78a
--- /dev/null
+++ b/extra/xfce4-sensors-plugin/xfce4-sensors-plugin.install
@@ -0,0 +1,11 @@
+post_install() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ post_install $1
+}
diff --git a/extra/xfce4-session/PKGBUILD b/extra/xfce4-session/PKGBUILD
new file mode 100644
index 000000000..048eace64
--- /dev/null
+++ b/extra/xfce4-session/PKGBUILD
@@ -0,0 +1,62 @@
+# $Id: PKGBUILD 109973 2011-02-14 17:56:04Z andyrtr $
+# Maintainer: AndyRTR <andyrtr@archlinux.org>
+# Contributor: tobias <tobias funnychar archlinux.org>
+
+pkgname=xfce4-session
+pkgver=4.8.1
+pkgrel=1
+pkgdesc="A session manager for Xfce"
+arch=('i686' 'x86_64')
+license=('GPL2')
+url="http://www.xfce.org/"
+groups=('xfce4')
+ # keep xorg-server-utils for https://bugs.archlinux.org/task/21096 'xorg-server-utils'
+ # upower and consolekit for reboot/shutdown/hibernate/suspend
+depends=('xfce4-panel' 'libwnck' 'xorg-iceauth' 'upower' 'consolekit' 'hicolor-icon-theme' )
+makedepends=('pkgconfig' 'intltool')
+optdepends=('fortune-mod: for xfce4-tips')
+replaces=('xfce4-toys')
+backup=(etc/polkit-1/localauthority/50-local.d/org.freedesktop.consolekit.pkla
+ etc/polkit-1/localauthority/50-local.d/org.freedesktop.upower.pkla)
+options=('!libtool')
+install=${pkgname}.install
+source=(http://archive.xfce.org/src/xfce/${pkgname}/4.8/${pkgname}-${pkgver}.tar.bz2
+ org.freedesktop.consolekit.pkla
+ org.freedesktop.upower.pkla)
+md5sums=('478080ff666fdd36786a243829663efd'
+ '2e2519950d8c591dc9440ed8957a49ed'
+ '5fa270637b5e685f033863d8664795a2')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ # git fixes
+
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --libexecdir=/usr/lib/xfce4 \
+ --localstatedir=/var \
+ --disable-static \
+ --disable-hal \
+ --disable-gnome \
+ --disable-libgnome-keyring \
+ --disable-legacy-sm \
+ --enable-session-screenshots \
+ --enable-upower \
+ --enable-consolekit \
+ --enable-polkit \
+ --enable-panel-plugin \
+ --disable-debug
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+
+ # install polkit/consolekit permission file needed for usage without a display manager
+ install -dm700 ${pkgdir}/etc/polkit-1/localauthority
+ install -dm755 ${pkgdir}/etc/polkit-1/localauthority/50-local.d
+ install -m644 ${srcdir}/org.freedesktop.consolekit.pkla ${pkgdir}/etc/polkit-1/localauthority/50-local.d/
+ install -m644 ${srcdir}/org.freedesktop.upower.pkla ${pkgdir}/etc/polkit-1/localauthority/50-local.d/
+}
+
diff --git a/extra/xfce4-session/org.freedesktop.consolekit.pkla b/extra/xfce4-session/org.freedesktop.consolekit.pkla
new file mode 100644
index 000000000..7f1d74ff6
--- /dev/null
+++ b/extra/xfce4-session/org.freedesktop.consolekit.pkla
@@ -0,0 +1,31 @@
+[Local restart]
+#Identity=unix-user: your_username
+Identity=unix-group:power
+Action=org.freedesktop.consolekit.system.restart
+ResultAny=yes
+ResultInactive=no
+ResultActive=yes
+
+[Local shutdown]
+#Identity=unix-user: your_username
+Identity=unix-group:power
+Action=org.freedesktop.consolekit.system.stop
+ResultAny=yes
+ResultInactive=no
+ResultActive=yes
+
+[Local restart - multiple]
+#Identity=unix-user: your_username
+Identity=unix-group:power
+Action=org.freedesktop.consolekit.system.restart-multiple-users
+ResultAny=yes
+ResultInactive=no
+ResultActive=yes
+
+[Local shutdown - multiple]
+#Identity=unix-user: your_username
+Identity=unix-group:power
+Action=org.freedesktop.consolekit.system.stop-multiple-users
+ResultAny=yes
+ResultInactive=no
+ResultActive=yes
diff --git a/extra/xfce4-session/org.freedesktop.upower.pkla b/extra/xfce4-session/org.freedesktop.upower.pkla
new file mode 100644
index 000000000..52c74f892
--- /dev/null
+++ b/extra/xfce4-session/org.freedesktop.upower.pkla
@@ -0,0 +1,15 @@
+[Local hibernate]
+#Identity=unix-user: your_username
+Identity=unix-group:power
+Action=org.freedesktop.upower.hibernate
+ResultAny=yes
+ResultInactive=no
+ResultActive=yes
+
+[Local suspend]
+#Identity=unix-user: your_username
+Identity=unix-group:power
+Action=org.freedesktop.upower.suspend
+ResultAny=yes
+ResultInactive=no
+ResultActive=yes
diff --git a/extra/xfce4-session/xfce4-session.install b/extra/xfce4-session/xfce4-session.install
new file mode 100644
index 000000000..21b79d2d4
--- /dev/null
+++ b/extra/xfce4-session/xfce4-session.install
@@ -0,0 +1,11 @@
+post_install() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
diff --git a/extra/xfce4-settings/PKGBUILD b/extra/xfce4-settings/PKGBUILD
new file mode 100644
index 000000000..9758849a8
--- /dev/null
+++ b/extra/xfce4-settings/PKGBUILD
@@ -0,0 +1,44 @@
+# $Id: PKGBUILD 112925 2011-03-07 18:53:16Z andyrtr $
+# Maintainer: AndyRTR <andyrtr@archlinux.org>
+# Contributor: tobias <tobias funnychar archlinux.org>
+# Contributor: Corrado Primier <bardo@aur.archlinux.org>
+
+pkgname=xfce4-settings
+pkgver=4.8.1
+pkgrel=2
+pkgdesc="Settings manager for xfce"
+arch=('i686' 'x86_64')
+license=('GPL2')
+url="http://www.xfce.org/"
+groups=('xfce4')
+depends=('exo>=0.6.0' 'libxfce4ui' 'libnotify>=0.7.1' 'libxklavier' 'tango-icon-theme' 'gnome-icon-theme' 'gtk-engines' 'gtk-xfce-engine')
+makedepends=('intltool')
+optdepends=('libcanberra: for sound control')
+source=(http://archive.xfce.org/src/xfce/${pkgname}/4.8/${pkgname}-${pkgver}.tar.bz2
+ xfce4-settings-4.6.0.patch)
+md5sums=('0097476baadcc9bc9841d6b8e687b8eb'
+ '3046732e5d73c9939e7674602eadb1e2')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ # enable Tango icon theme, clearlooks theme and font hinting by default(taken from Fedora)
+ patch -Np1 -i ${srcdir}/xfce4-settings-4.6.0.patch || return 1
+
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --disable-static \
+ --enable-xrandr \
+ --enable-xcursor \
+ --enable-libnotify \
+ --enable-libxklavier \
+ --enable-pluggable-dialogs \
+ --enable-sound-settings \
+ --disable-debug
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/xfce4-settings/xfce4-settings-4.6.0.patch b/extra/xfce4-settings/xfce4-settings-4.6.0.patch
new file mode 100644
index 000000000..08cd80421
--- /dev/null
+++ b/extra/xfce4-settings/xfce4-settings-4.6.0.patch
@@ -0,0 +1,18 @@
+diff -Nur xfce4-settings-4.6.0.orig/xfsettingsd/xsettings.xml xfce4-settings-4.6.0/xfsettingsd/xsettings.xml
+--- xfce4-settings-4.6.0.orig/xfsettingsd/xsettings.xml 2009-02-20 10:12:35.000000000 -0700
++++ xfce4-settings-4.6.0/xfsettingsd/xsettings.xml 2009-04-16 15:25:44.000000000 -0600
+@@ -2,10 +2,12 @@
+
+ <channel name="xsettings" version="1.0">
+ <property name="Net" type="empty">
+- <property name="ThemeName" type="string" value="Xfce"/>
+- <property name="IconThemeName" type="string" value="Rodent"/>
++ <property name="ThemeName" type="string" value="Clearlooks"/>
++ <property name="IconThemeName" type="string" value="Tango"/>
+ </property>
+ <property name="Xft" type="empty">
+ <property name="DPI" type="int" value="-1"/>
++ <property name="Antialias" type="int" value="1"/>
++ <property name="HintStyle" type="string" value="hintfull"/>
+ </property>
+ </channel>
diff --git a/extra/xfce4-smartbookmark-plugin/0001-Fix-problems-with-plugin-and-4.8-panel.patch b/extra/xfce4-smartbookmark-plugin/0001-Fix-problems-with-plugin-and-4.8-panel.patch
new file mode 100644
index 000000000..c23e8ec78
--- /dev/null
+++ b/extra/xfce4-smartbookmark-plugin/0001-Fix-problems-with-plugin-and-4.8-panel.patch
@@ -0,0 +1,37 @@
+From b1922538b26f9929bcd43df8728bf33afe06fbef Mon Sep 17 00:00:00 2001
+From: Nick Schermer <nick@xfce.org>
+Date: Thu, 27 Jan 2011 22:29:16 +0100
+Subject: [PATCH] Fix problems with plugin and 4.8 panel.
+
+---
+ configure.ac | 2 +-
+ src/smartbookmark.desktop.in.in | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 1ba88d4..cb344f5 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -25,7 +25,7 @@ XDT_I18N([ca cs en_GB eu fr hu it pl pt_PT sq zh_TW])
+ dnl Check for required packages
+ XDT_CHECK_LIBX11_REQUIRE()
+ XDT_CHECK_PACKAGE([GDK], [gdk-2.0], [2.0])
+-XDT_CHECK_PACKAGE([LIBXFCEGUI4], [libxfce4panel-1.0], [4.2])
++XDT_CHECK_PACKAGE([LIBXFCEGUI4], [libxfcegui4-1.0], [4.2])
+ XDT_CHECK_PACKAGE([LIBXFCE4PANEL], [libxfce4panel-1.0], [4.3.20])
+
+ XDT_FEATURE_DEBUG()
+diff --git a/src/smartbookmark.desktop.in.in b/src/smartbookmark.desktop.in.in
+index 83464ff..7bafece 100644
+--- a/src/smartbookmark.desktop.in.in
++++ b/src/smartbookmark.desktop.in.in
+@@ -4,5 +4,5 @@ Encoding=UTF-8
+ _Name=SmartBookmark
+ _Comment=Query websites from the Xfce panel
+ Icon=gtk-preferences
+-X-XFCE-Module=@INTERNAL_PLUGIN_PATH@/libsmartbookmark.so
++X-XFCE-Module=smartbookmark
+ X-XFCE-Unique=false
+--
+1.7.3.5
+
diff --git a/extra/xfce4-smartbookmark-plugin/PKGBUILD b/extra/xfce4-smartbookmark-plugin/PKGBUILD
new file mode 100644
index 000000000..8493b93ea
--- /dev/null
+++ b/extra/xfce4-smartbookmark-plugin/PKGBUILD
@@ -0,0 +1,41 @@
+# $Id: PKGBUILD 108103 2011-01-29 13:18:03Z andyrtr $
+# Maintainer: AndyRTR <andyrtr@archlinux.org>
+# Contributor: Tobias Kieslich <tobias (at) archlinux.org>
+
+pkgname=xfce4-smartbookmark-plugin
+pkgver=0.4.2
+pkgrel=9
+pkgdesc="plugin for the Xfce4 panel that let you quicksearch from selected websites"
+arch=('i686' 'x86_64')
+license=('GPL2')
+url="http://goodies.xfce.org/projects/panel-plugins/xfce4-smartbookmark-plugin"
+groups=('xfce4-goodies')
+depends=('xfce4-panel' 'libxfcegui4')
+makedepends=('intltool' 'libxt' 'xfce4-dev-tools')
+options=('!libtool')
+source=(http://archive.xfce.org/src/panel-plugins/${pkgname}/0.4/${pkgname}-${pkgver}.tar.gz
+ xfce4-smartbookmark-plugin-archlinux.patch
+ 0001-Fix-problems-with-plugin-and-4.8-panel.patch)
+md5sums=('284e26595637dd2e900b75534372496b'
+ '323ac898cfcfdb078f67f9ecd1905aec'
+ '6dc220fc41cd21678aad62c80a4c622f')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ # fix panel4.8 http://bugzilla.xfce.org/show_bug.cgi
+ patch -Np1 -i ${srcdir}/0001-Fix-problems-with-plugin-and-4.8-panel.patch
+ patch -Np0 -i ${srcdir}/xfce4-smartbookmark-plugin-archlinux.patch
+ xdt-autogen
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --libexecdir=/usr/lib \
+ --localstatedir=/var \
+ --disable-static \
+ --disable-debug
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/xfce4-smartbookmark-plugin/xfce4-smartbookmark-plugin-archlinux.patch b/extra/xfce4-smartbookmark-plugin/xfce4-smartbookmark-plugin-archlinux.patch
new file mode 100644
index 000000000..45c9ad42e
--- /dev/null
+++ b/extra/xfce4-smartbookmark-plugin/xfce4-smartbookmark-plugin-archlinux.patch
@@ -0,0 +1,24 @@
+--- src/smartbookmark.c.redhat 2006-12-18 02:06:21.000000000 +0100
++++ src/smartbookmark.c 2006-12-18 02:11:33.000000000 +0100
+@@ -197,8 +197,8 @@
+ box = gtk_vbox_new(FALSE, 0);
+
+ /* default options */
+- search->url = "http://bugs.debian.org/";
+- search->label_text = "BTS";
++ search->url = "http://bugs.archlinux.org/";
++ search->label_text = "ArchBug #";
+ search->size = 5;
+ search->hide_label = FALSE;
+ /* read config file options */
+@@ -269,8 +269,8 @@
+ if( (rcfile = xfce_rc_simple_open(filename, TRUE) ))
+ {
+ xfce_rc_set_group(rcfile, NULL);
+- search->url = g_strdup(xfce_rc_read_entry(rcfile,"url","http://bugs.debian.org/"));
+- search->label_text = g_strdup(xfce_rc_read_entry(rcfile,"value","DBS"));
++ search->url = g_strdup(xfce_rc_read_entry(rcfile,"url","http://bugs.archlinux.org/"));
++ search->label_text = g_strdup(xfce_rc_read_entry(rcfile,"value","ArchBug #"));
+ search->size = xfce_rc_read_int_entry(rcfile, "size", 5);
+ search->hide_label = xfce_rc_read_bool_entry(rcfile, "hidelabel", FALSE);
+ }
diff --git a/extra/xfce4-systemload-plugin/PKGBUILD b/extra/xfce4-systemload-plugin/PKGBUILD
new file mode 100644
index 000000000..a499ab317
--- /dev/null
+++ b/extra/xfce4-systemload-plugin/PKGBUILD
@@ -0,0 +1,33 @@
+# $Id: PKGBUILD 104779 2011-01-04 21:58:54Z andyrtr $
+# Maintainer: AndyRTR <andyrtr@archlinux.org>
+# Contributor: Aurelien Foret <orelien@chez.com>
+
+pkgname=xfce4-systemload-plugin
+pkgver=1.0.0
+pkgrel=1
+pkgdesc="A system load plugin for the Xfce4 panel"
+arch=('i686' 'x86_64')
+license=('custom')
+url="http://goodies.xfce.org/projects/panel-plugins/xfce4-systemload-plugin"
+groups=('xfce4-goodies')
+depends=('xfce4-panel>=4.7.4' 'libxfcegui4')
+makedepends=('pkgconfig' 'intltool')
+options=('!libtool')
+source=(http://archive.xfce.org/src/panel-plugins/${pkgname}/1.0/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('da4f0e8bfb57e18fe3e3e56507a681f7')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --libexecdir=/usr/lib \
+ --localstatedir=/var \
+ --disable-static
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+ install -Dm644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/COPYING
+}
diff --git a/extra/xfce4-systemload-plugin/missing_tooltip.diff b/extra/xfce4-systemload-plugin/missing_tooltip.diff
new file mode 100644
index 000000000..96f5c1714
--- /dev/null
+++ b/extra/xfce4-systemload-plugin/missing_tooltip.diff
@@ -0,0 +1,21 @@
+--- panel-plugin/systemload.c 2007-01-17 18:01:09.000000000 +0000
++++ panel-plugin/systemload.c.new 2009-05-14 17:17:24.001076632 +0000
+@@ -315,11 +315,18 @@
+ {
+ int count;
+ t_global_monitor *global;
++ GtkSettings *settings;
+
+ tooltips = gtk_tooltips_new ();
+ g_object_ref (tooltips);
+ gtk_object_sink (GTK_OBJECT (tooltips));
+
++ /* reduce the default tooltip timeout to be smaller than the update interval otherwise
++ * we won't see tooltips on GTK 2.16 or newer */
++ settings = gtk_settings_get_default();
++ if (g_object_class_find_property(G_OBJECT_GET_CLASS(settings), "gtk-tooltip-timeout"))
++ g_object_set(settings, "gtk-tooltip-timeout", UPDATE_TIMEOUT - 10, NULL);
++
+ global = g_new(t_global_monitor, 1);
+ global->plugin = plugin;
+ global->timeout_id = 0;
diff --git a/extra/xfce4-taskmanager/PKGBUILD b/extra/xfce4-taskmanager/PKGBUILD
new file mode 100644
index 000000000..477abe743
--- /dev/null
+++ b/extra/xfce4-taskmanager/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 85565 2010-07-15 21:51:22Z andyrtr $
+# Maintainer:
+
+pkgname=xfce4-taskmanager
+pkgver=1.0.0
+pkgrel=2
+pkgdesc="Easy to use task manager"
+arch=(i686 x86_64)
+license=('GPL2')
+url="http://goodies.xfce.org/projects/applications/xfce4-taskmanager"
+groups=('xfce4-goodies')
+depends=('libwnck')
+makedepends=('pkgconfig' 'intltool')
+options=('!libtool')
+source=(http://archive.xfce.org/src/apps/${pkgname}/1.0/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('cd205366ae771d2cbe72b5ca7b1257b0')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib/xfce4 \
+ --localstatedir=/var --disable-static
+ make
+}
+
+package() {
+ cd ${startdir}/src/${pkgname}-${pkgver}
+ make DESTDIR=${startdir}/pkg install
+}
diff --git a/extra/xfce4-time-out-plugin/PKGBUILD b/extra/xfce4-time-out-plugin/PKGBUILD
new file mode 100755
index 000000000..119084172
--- /dev/null
+++ b/extra/xfce4-time-out-plugin/PKGBUILD
@@ -0,0 +1,35 @@
+# $Id: PKGBUILD 104784 2011-01-04 22:25:16Z andyrtr $
+# Maintainer: AndyRTR <andyrtr@archlinux.org>
+# Contributor: Abhishek Dasgupta <abhidg@gmail.com>
+
+pkgname=xfce4-time-out-plugin
+pkgver=1.0.0
+pkgrel=1
+pkgdesc="Take a break from your computer with this plugin for XFCE4."
+arch=(i686 x86_64)
+url="http://xfce-goodies.berlios.de/"
+groups=('xfce4-goodies')
+license=('GPL')
+depends=('xfce4-panel>=4.7.0' 'libxfcegui4' 'hicolor-icon-theme')
+makedepends=('intltool')
+options=('!libtool')
+install=${pkgname}.install
+source=(http://archive.xfce.org/src/panel-plugins/$pkgname/1.0/$pkgname-$pkgver.tar.bz2)
+md5sums=('ef50a3fd45c169943acc8af93604d9fd')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --libexecdir=/usr/lib \
+ --localstatedir=/var \
+ --disable-static \
+ --disable-debug
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
+
diff --git a/extra/xfce4-time-out-plugin/xfce4-time-out-plugin.install b/extra/xfce4-time-out-plugin/xfce4-time-out-plugin.install
new file mode 100755
index 000000000..21b79d2d4
--- /dev/null
+++ b/extra/xfce4-time-out-plugin/xfce4-time-out-plugin.install
@@ -0,0 +1,11 @@
+post_install() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
diff --git a/extra/xfce4-timer-plugin/PKGBUILD b/extra/xfce4-timer-plugin/PKGBUILD
new file mode 100644
index 000000000..97abd1269
--- /dev/null
+++ b/extra/xfce4-timer-plugin/PKGBUILD
@@ -0,0 +1,37 @@
+# $Id: PKGBUILD 108093 2011-01-29 12:51:59Z andyrtr $
+# Maintainer: AndyRTR <andyrtr@archlinux.org>
+# Contributor: Tobias Kieslich <tobias (at) archlinux.org>
+
+pkgname=xfce4-timer-plugin
+pkgver=0.6.1
+pkgrel=1
+pkgdesc="plugin to track time for the Xfce4 panel"
+arch=(i686 x86_64)
+license=('GPL2')
+url="http://goodies.xfce.org/projects/panel-plugins/xfce4-timer-plugin"
+groups=('xfce4-goodies')
+depends=('xfce4-panel' 'libxfcegui4')
+makedepends=('intltool')
+options=('!libtool')
+source=(http://archive.xfce.org/src/panel-plugins/${pkgname}/0.6/${pkgname}-${pkgver}.tar.bz2
+ panel48.patch)
+md5sums=('ba5ae0e25f69517338f74a27fbaf4ca2'
+ 'fc9444aa98d7ef9c61d97dbd9f47e082')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ # patch from git master
+ patch -Np1 -i ${srcdir}/panel48.patch
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --libexecdir=/usr/lib/ \
+ --localstatedir=/var \
+ --disable-static \
+ --disable-debug
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/xfce4-timer-plugin/panel48.patch b/extra/xfce4-timer-plugin/panel48.patch
new file mode 100644
index 000000000..056023712
--- /dev/null
+++ b/extra/xfce4-timer-plugin/panel48.patch
@@ -0,0 +1,39 @@
+From 03ff202f818fe3f075a6c864ab688b57b1bb1cb4 Mon Sep 17 00:00:00 2001
+From: Nick Schermer <nick@xfce.org>
+Date: Thu, 27 Jan 2011 21:18:45 +0000
+Subject: Fix segfault when creating plugin in 4.8 panel.
+
+Used invalid function type to construct the plugin.
+---
+diff --git a/src/xfcetimer.c b/src/xfcetimer.c
+index c27d37a..de7bd2b 100644
+--- a/src/xfcetimer.c
++++ b/src/xfcetimer.c
+@@ -42,7 +42,7 @@
+
+ #include "xfcetimer.h"
+
+-static gboolean create_plugin_control (XfcePanelPlugin *plugin);
++static void create_plugin_control (XfcePanelPlugin *plugin);
+ XFCE_PANEL_PLUGIN_REGISTER_EXTERNAL(create_plugin_control);
+
+ void make_menu(plugin_data *pd);
+@@ -1366,7 +1366,7 @@ static void plugin_create_options (XfcePanelPlugin *plugin,plugin_data *pd) {
+ *
+ * Returns %TRUE on success, %FALSE on failure.
+ **/
+-static gboolean
++static void
+ create_plugin_control (XfcePanelPlugin *plugin)
+ {
+
+@@ -1461,7 +1461,6 @@ create_plugin_control (XfcePanelPlugin *plugin)
+ xfce_panel_plugin_menu_show_configure (plugin);
+ g_signal_connect (plugin, "configure-plugin",
+ G_CALLBACK (plugin_create_options), pd);
+- return(TRUE);
+ }
+
+
+--
+cgit v0.8.3.4
diff --git a/extra/xfce4-verve-plugin/PKGBUILD b/extra/xfce4-verve-plugin/PKGBUILD
new file mode 100644
index 000000000..1c1586a0e
--- /dev/null
+++ b/extra/xfce4-verve-plugin/PKGBUILD
@@ -0,0 +1,33 @@
+# $Id: PKGBUILD 104787 2011-01-04 22:36:49Z andyrtr $
+# Maintainer: AndyRTR <andyrtr@archlinux.org>
+# Contributor: Tobias Kieslich <tobias (at) archlinux.org>
+
+pkgname=xfce4-verve-plugin
+pkgver=1.0.0
+pkgrel=1
+pkgdesc="command line plugin Xfce4 panel"
+arch=('i686' 'x86_64')
+license=('GPL2')
+url="http://xfce-goodies.berlios.de/"
+groups=('xfce4-goodies')
+depends=('xfce4-panel' 'libxfcegui4')
+makedepends=('intltool')
+replaces=('verve-plugin')
+source=(http://archive.xfce.org/src/panel-plugins/$pkgname/1.0/$pkgname-$pkgver.tar.bz2)
+md5sums=('ed7039c40d6e560ed8bcf9a324d2ae86')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --libexecdir=/usr/lib \
+ --localstatedir=/var \
+ --disable-static \
+ --disable-debug
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/xfce4-wavelan-plugin/PKGBUILD b/extra/xfce4-wavelan-plugin/PKGBUILD
new file mode 100644
index 000000000..69976a7b2
--- /dev/null
+++ b/extra/xfce4-wavelan-plugin/PKGBUILD
@@ -0,0 +1,34 @@
+# $Id: PKGBUILD 105584 2011-01-10 18:02:21Z andyrtr $
+# Maintainer: AndyRTR <andyrtr@archlinux.org>
+# Contributor: Tobias Kieslich <tobias (at) archlinux.org>
+
+pkgname=xfce4-wavelan-plugin
+pkgver=0.5.6
+pkgrel=1
+pkgdesc="plugin to monitor wifi connectivity for the Xfce4 panel"
+arch=('i686' 'x86_64')
+license=('custom')
+url="http://goodies.xfce.org/projects/panel-plugins/xfce4-wavelan-plugin/"
+groups=('xfce4-goodies')
+depends=('xfce4-panel' 'libxfcegui4')
+makedepends=('intltool')
+options=('!libtool')
+source=(http://archive.xfce.org/src/panel-plugins/${pkgname}/0.5/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('b23a4c9c2a206242ee4db8186dd01801')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --libexecdir=/usr/lib \
+ --localstatedir=/var \
+ --disable-static \
+ --disable-debug
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+ install -Dm644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/COPYING
+}
diff --git a/extra/xfce4-weather-plugin/PKGBUILD b/extra/xfce4-weather-plugin/PKGBUILD
new file mode 100644
index 000000000..fb57ce0f3
--- /dev/null
+++ b/extra/xfce4-weather-plugin/PKGBUILD
@@ -0,0 +1,34 @@
+# $Id: PKGBUILD 108785 2011-02-03 12:45:05Z andyrtr $
+# Maintainer: Andreas Radke <andyrtr@archlinux.org>
+# Contributor: Suzy Williams <suzanne.williams3@verizon.net>
+
+pkgname=xfce4-weather-plugin
+pkgver=0.7.4
+pkgrel=1
+pkgdesc="A weather plugin for the Xfce4 panel"
+arch=(i686 x86_64)
+license=('GPL2')
+url="http://goodies.xfce.org/projects/panel-plugins/xfce4-weather-plugin"
+groups=('xfce4-goodies')
+depends=('xfce4-panel>=4.8.0' 'libxfcegui4' 'libxml2' 'hicolor-icon-theme')
+makedepends=('intltool')
+options=('!libtool')
+install=${pkgname}.install
+source=(http://archive.xfce.org/src/panel-plugins/${pkgname}/0.7/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('03c972d13eba5cd226432ff66e3ff282')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --libexecdir=/usr/lib \
+ --localstatedir=/var \
+ --disable-static \
+ --disable-debug
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/xfce4-weather-plugin/xfce4-weather-plugin.install b/extra/xfce4-weather-plugin/xfce4-weather-plugin.install
new file mode 100644
index 000000000..b0b7f29d1
--- /dev/null
+++ b/extra/xfce4-weather-plugin/xfce4-weather-plugin.install
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+post_install() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
diff --git a/extra/xfce4-xfapplet-plugin/PKGBUILD b/extra/xfce4-xfapplet-plugin/PKGBUILD
new file mode 100644
index 000000000..8ff2ccebd
--- /dev/null
+++ b/extra/xfce4-xfapplet-plugin/PKGBUILD
@@ -0,0 +1,32 @@
+# $Id: PKGBUILD 105796 2011-01-11 20:47:13Z andyrtr $
+# Maintainer:
+# Contributor: Tobias Kieslich <tobias (at) archlinux.org>
+
+pkgname=xfce4-xfapplet-plugin
+pkgver=0.1.0
+pkgrel=7
+pkgdesc="plugin that allows to use gnome applets in the Xfce4 panel"
+arch=('i686' 'x86_64')
+license=('GPL2')
+url="http://xfce-goodies.berlios.de/"
+groups=('xfce4-goodies')
+depends=('xfce4-panel' 'libxfcegui4' 'gnome-panel' 'gnome-panel-bonobo')
+makedepends=('')
+source=(http://archive.xfce.org/src/panel-plugins/${pkgname}/0.1/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('6a06c44b18a97626f44a240ad3bc3244')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --libexecdir=/usr/lib/ \
+ --localstatedir=/var \
+ --disable-static \
+ --disable-debug
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/xfce4-xkb-plugin/PKGBUILD b/extra/xfce4-xkb-plugin/PKGBUILD
new file mode 100644
index 000000000..2cabd66df
--- /dev/null
+++ b/extra/xfce4-xkb-plugin/PKGBUILD
@@ -0,0 +1,43 @@
+# $Id: PKGBUILD 107269 2011-01-22 22:04:45Z andyrtr $
+# Maintainer: AndyRTR <andyrtr@archlinux.org>
+# Contributor: Tobias Kieslich <tobias (at) archlinux.org>
+
+pkgname=xfce4-xkb-plugin
+pkgver=0.5.3.3
+pkgrel=4
+pkgdesc="plugin to switch keyboard layouts for the Xfce4 panel"
+arch=(i686 x86_64)
+license=('custom')
+url="http://goodies.xfce.org/projects/panel-plugins/xfce4-xkb-plugin"
+groups=('xfce4-goodies')
+depends=('xfce4-panel' 'libxfcegui4' 'libxklavier>=5.0' 'librsvg')
+makedepends=('intltool')
+options=('!libtool')
+source=(http://archive.xfce.org/src/panel-plugins/${pkgname}/0.5/${pkgname}-${pkgver}.tar.gz
+ xfce4-xkb-plugin-0.5.3.3-libxklavier.patch
+ crashfix.diff)
+md5sums=('b233cc9de1cbace075eaf6e2c9a8e685'
+ '781165ce1bc08059ae8e846c45c0bab2'
+ '4faeaaea7d294cbad2972af964508086')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ patch -Np1 -i "${srcdir}/xfce4-xkb-plugin-0.5.3.3-libxklavier.patch"
+
+ # https://bugs.archlinux.org/task/21067 - http://bugzilla.xfce.org/show_bug.cgi?id=6477
+ patch -Np1 -i ${srcdir}/crashfix.diff
+
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --libexecdir=/usr/lib \
+ --localstatedir=/var \
+ --disable-static \
+ --disable-debug
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+ install -Dm644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/COPYING
+}
diff --git a/extra/xfce4-xkb-plugin/crashfix.diff b/extra/xfce4-xkb-plugin/crashfix.diff
new file mode 100644
index 000000000..5ccfbaa3c
--- /dev/null
+++ b/extra/xfce4-xkb-plugin/crashfix.diff
@@ -0,0 +1,34 @@
+From 52dc725bf5e44a0ab0064daebffe7ff139da0f78 Mon Sep 17 00:00:00 2001
+From: Lionel Le Folgoc <mrpouit@gmail.com>
+Date: Fri, 24 Sep 2010 21:28:49 +0200
+Subject: Handle cases when the keyboard model is empty
+
+gtk_combo_box_get_active_iter () does not set the iter, and a call to
+gtk_tree_model_get () using this iter will crash. Thus, check the return value
+of gtk_combo_box_get_active_iter () before using the iter.
+---
+ panel-plugin/xkb-settings-dialog.c | 8 +++++---
+ 1 files changed, 5 insertions(+), 3 deletions(-)
+
+diff --git a/panel-plugin/xkb-settings-dialog.c b/panel-plugin/xkb-settings-dialog.c
+index 178ec5f..37a0a9a 100644
+--- a/panel-plugin/xkb-settings-dialog.c
++++ b/panel-plugin/xkb-settings-dialog.c
+@@ -831,9 +831,11 @@ xkb_settings_update_from_ui (t_xkb *xkb)
+ gint i = 0;
+
+ model = GTK_TREE_MODEL (xkb->combo_store);
+- gtk_combo_box_get_active_iter (GTK_COMBO_BOX (xkb->kbd_model_combo), &iter);
+- gtk_tree_model_get (model, &iter, NOM, &kbdmodel, -1);
+- kbd_config->model = kbdmodel;
++ if (gtk_combo_box_get_active_iter (GTK_COMBO_BOX (xkb->kbd_model_combo), &iter))
++ {
++ gtk_tree_model_get (model, &iter, NOM, &kbdmodel, -1);
++ kbd_config->model = kbdmodel;
++ }
+
+ model = GTK_TREE_MODEL (xkb->toggle_options_store);
+ if (gtk_combo_box_get_active_iter (GTK_COMBO_BOX (xkb->toggle_options_combo), &iter))
+--
+1.7.1
+
diff --git a/extra/xfce4-xkb-plugin/xfce4-xkb-plugin-0.5.3.3-libxklavier.patch b/extra/xfce4-xkb-plugin/xfce4-xkb-plugin-0.5.3.3-libxklavier.patch
new file mode 100644
index 000000000..5b9dc5401
--- /dev/null
+++ b/extra/xfce4-xkb-plugin/xfce4-xkb-plugin-0.5.3.3-libxklavier.patch
@@ -0,0 +1,30 @@
+diff -ur xfce4-xkb-plugin-0.5.3.3.orig/panel-plugin/xkb-config.c xfce4-xkb-plugin-0.5.3.3/panel-plugin/xkb-config.c
+--- xfce4-xkb-plugin-0.5.3.3.orig/panel-plugin/xkb-config.c 2009-03-06 15:16:03.000000000 +0200
++++ xfce4-xkb-plugin-0.5.3.3/panel-plugin/xkb-config.c 2009-07-20 18:40:34.000000000 +0300
+@@ -150,7 +150,7 @@
+ config->application_map = g_hash_table_new (g_direct_hash, NULL);
+
+ registry = xkl_config_registry_get_instance (config->engine);
+- xkl_config_registry_load (registry);
++ xkl_config_registry_load (registry, FALSE);
+
+ config_item = xkl_config_item_new ();
+
+@@ -214,7 +214,7 @@
+
+ gdk_window_remove_filter (NULL, (GdkFilterFunc) handle_xevent, NULL);
+
+- xkl_engine_stop_listen (config->engine);
++ xkl_engine_stop_listen (config->engine, XKLL_TRACK_KEYBOARD_STATE);
+ }
+
+ gint
+@@ -547,7 +547,7 @@
+ if (!config) return NULL;
+
+ registry = xkl_config_registry_get_instance (config->engine);
+- xkl_config_registry_load (registry);
++ xkl_config_registry_load (registry, FALSE);
+
+ return registry;
+ }
diff --git a/extra/xfconf/PKGBUILD b/extra/xfconf/PKGBUILD
new file mode 100644
index 000000000..7616febf3
--- /dev/null
+++ b/extra/xfconf/PKGBUILD
@@ -0,0 +1,42 @@
+# $Id: PKGBUILD 106342 2011-01-16 16:22:15Z andyrtr $
+# Maintainer: AndyRTR <andyrtr@archlinux.org>
+# Contributor: tobias <tobias funnychar archlinux.org>
+
+pkgname=xfconf
+pkgver=4.8.0
+pkgrel=1
+pkgdesc="a simple client-server configuration storage and query system"
+arch=('i686' 'x86_64')
+license=('GPL2')
+url="http://www.xfce.org/"
+groups=('xfce4')
+# http://www.xfce.org/documentation/requirements
+# keep dbus and gtk2, see also http://bugs.archlinux.org/task/14536
+depends=( "libxfce4util>=4.8.0" "dbus-glib" 'dbus' 'gtk2')
+makedepends=('pkgconfig' 'perl-extutils-depends' 'perl-extutils-pkgconfig' 'glib-perl' 'intltool' 'gtk-doc' 'chrpath')
+options=('!libtool' '!emptydirs')
+source=(http://archive.xfce.org/src/xfce/${pkgname}/4.8/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('0f11ed1ec7789c5c4c3fcc7cdb3c2940')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --libexecdir=/usr/lib/xfce4 \
+ --localstatedir=/var \
+ --disable-static \
+ --enable-gtk-doc \
+ --with-perl-options=INSTALLDIRS="vendor" \
+ --disable-debug
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+ # remove unneeded dynloader bootstrap file
+ rm ${pkgdir}/usr/lib/perl5/vendor_perl/auto/Xfce4/Xfconf/Xfconf.bs
+
+ # fix insecure rpath, http://bugs.archlinux.org/task/19980
+ chrpath -d ${pkgdir}/usr/lib/perl5/vendor_perl/auto/Xfce4/Xfconf/Xfconf.so
+}
diff --git a/extra/xfdesktop/PKGBUILD b/extra/xfdesktop/PKGBUILD
new file mode 100644
index 000000000..452135ebf
--- /dev/null
+++ b/extra/xfdesktop/PKGBUILD
@@ -0,0 +1,43 @@
+# $Id: PKGBUILD 112928 2011-03-07 18:58:22Z andyrtr $
+# Maintainer: AndyRTR <andyrtr@archlinux.org>
+# Contributor: tobias <tobias funnychar archlinux.org>
+
+pkgname=xfdesktop
+pkgver=4.8.1
+pkgrel=2
+pkgdesc="A desktop manager for Xfce"
+arch=('i686' 'x86_64')
+license=('GPL2')
+url="http://www.xfce.org/"
+groups=('xfce4')
+depends=('libxfce4ui' 'thunar>=1.2.0' 'hicolor-icon-theme' 'libwnck>=2.30.0')
+makedepends=("xfce4-panel>=4.8.0" 'intltool')
+optdepends=('xfce4-panel: panel menu plugin')
+conflicts=('xfce4-menueditor')
+replaces=('xfce4-menueditor')
+options=('!libtool')
+install=xfdesktop.install
+source=(http://archive.xfce.org/src/xfce/${pkgname}/4.8/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('a3a255cc7756ddc2a0a6fdee9fb8b2c9')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ # git fixes
+
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --libexecdir=/usr/lib \
+ --localstatedir=/var \
+ --disable-static \
+ --enable-gio-unix \
+ --enable-thunarx \
+ --enable-exo \
+ --enable-notifications \
+ --disable-debug
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/xfdesktop/xfdesktop.install b/extra/xfdesktop/xfdesktop.install
new file mode 100644
index 000000000..21b79d2d4
--- /dev/null
+++ b/extra/xfdesktop/xfdesktop.install
@@ -0,0 +1,11 @@
+post_install() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
diff --git a/extra/xfig/LICENSE b/extra/xfig/LICENSE
new file mode 100644
index 000000000..5b38ccff8
--- /dev/null
+++ b/extra/xfig/LICENSE
@@ -0,0 +1,33 @@
+Excerpt of the README from xfig/transfig - legal notice:
+---------------------------------------------------------------------------
+
+THE LAWRENCE BERKELEY NATIONAL LABORATORY DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS, IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY SPECIAL,
+INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+
+***************************************************************************
+NEW COPYRIGHT/PERMISSION NOTICE:
+
+The xfig copyright and permission notice has changed (again) slightly in
+version 3.2.5. It now states that:
+
+ FIG : Facility for Interactive Generation of figures
+ Copyright (c) 1985-1988 by Supoj Sutanthavibul
+ Parts Copyright (c) 1989-2002 by Brian V. Smith
+ Parts Copyright (c) 1991 by Paul King
+
+ Any party obtaining a copy of these files is granted, free of charge, a
+ full and unrestricted irrevocable, world-wide, paid up, royalty-free,
+ nonexclusive right and license to deal in this software and documentation
+ files (the "Software"), including without limitation the rights to use,
+ copy, modify, merge, publish distribute, sublicense and/or sell copies of
+ the Software, and to permit persons who receive copies from any such
+ party to do so, with the only requirement being that the above copyright
+ and this permission notice remain intact.
+
+The license for 3.2.4 didn't allow selling xfig unless it was simply included in a
+collection of programs (e.g. a CD) that one was selling.
diff --git a/extra/xfig/PKGBUILD b/extra/xfig/PKGBUILD
new file mode 100644
index 000000000..45c07d0dc
--- /dev/null
+++ b/extra/xfig/PKGBUILD
@@ -0,0 +1,63 @@
+# $Id: PKGBUILD 101110 2010-11-28 02:40:08Z eric $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+
+pkgname=xfig
+pkgver=3.2.5b
+pkgrel=5
+pkgdesc="An interactive drawing tool"
+arch=('i686' 'x86_64')
+url="http://www.xfig.org/userman/"
+license=('custom')
+depends=('libpng' 'libjpeg' 'xaw3d' 'libxi' 'desktop-file-utils' 'gsfonts')
+makedepends=('imake')
+optdepends=('transfig: to use the frontend to convert fig files')
+options=('!makeflags' '!emptydirs')
+install=xfig.install
+source=(http://downloads.sourceforge.net/mcj/${pkgname}.${pkgver}.full.tar.gz \
+ xfig-3.2.4-redhat.patch xfig-3.2.5-color-resources.patch \
+ xfig-3.2.5-enable-Xaw3d.patch xfig-3.2.5-urwfonts.patch \
+ xfig-3.2.5-fhs.patch xfig-3.2.5-missing-protos.patch \
+ xfig.3.2.5-modularX.patch xfig-3.2.5b-fix-eps-reading.patch LICENSE xfig.desktop)
+md5sums=('499b0ce103a6b353453bf7e327f9a3b9' '5c2bc208c8ee852bc9ffa00dcbfd8241'\
+ 'a4b91e4aaf48ed07f4a579a1f692ef82' '46c6fb15d26c9fe03e558bdacc0b0a53'\
+ 'c5b7dc054063f02c6bfcd132dae82b6f' 'b532871c792716465e3b05967bcfba10'\
+ 'de059a6b8ce287942c7da35d19ee46f3' '7347389f7fdecd582579845df0c0b664'\
+ 'fa14e85b5365d07ca8deca9ea47d4e6a' 'f405b7a96f3401c12153fe6170a7d8f1'\
+ '8ac2de637c9148aa4a32978910822230')
+sha1sums=('0730d7e6bc217c0de02682efb0078821512bb542' '926ad99c7221baa4aa9e9737722958860b2700fc'\
+ 'b7c03fb70066ff476a4039a8c0f8930c15edef68' '33bff26b42ce164e79de11808b5b34b363f0d59f'\
+ 'e595ccdbe293ea0fdecbf59a2192ae57ced2c8eb' '39bec6bac9746b643b05fd1286826113ede07ff6'\
+ 'bd76cd50be6a5789cfd6f182309cfd7056be04f3' 'a1285f4e61ad2eec040460ab03e8022098e7f78e'\
+ '12a64ddaf65a73e23ef74f31483515a0e262768c' '31edf4cfab708820ea3f114d095dfef5aa88e5aa'\
+ '9011b8fa6143e37525b28cc9800a3bf2d6b008d2')
+
+build() {
+ cd "${srcdir}/${pkgname}.${pkgver}"
+ patch -p1 < ../xfig-3.2.4-redhat.patch
+ patch -p1 < ../xfig-3.2.5-fhs.patch
+ patch -p1 < ../xfig.3.2.5-modularX.patch
+ patch -p1 < ../xfig-3.2.5-enable-Xaw3d.patch
+ patch -p1 < ../xfig-3.2.5-color-resources.patch
+ patch -p1 < ../xfig-3.2.5-urwfonts.patch
+ patch -p1 < ../xfig-3.2.5-missing-protos.patch
+ patch -p1 < ../xfig-3.2.5b-fix-eps-reading.patch
+ chmod 755 Libraries
+
+ xmkmf
+ make DOCDIR=/usr/share/doc
+}
+
+package() {
+ cd "${srcdir}/${pkgname}.${pkgver}"
+ make DESTDIR="${pkgdir}" DOCDIR=/usr/share/doc install.all
+ rm "${pkgdir}/usr/lib/X11/app-defaults"
+
+ find "${pkgdir}/usr/share/xfig/Libraries" -type f -exec chmod 0644 {} \;
+ find "${pkgdir}/usr/share/xfig/Libraries" -type d -exec chmod 0755 {} \;
+ find "${pkgdir}/usr/share/doc/xfig" -type f -exec chmod 0644 {} \;
+ find "${pkgdir}/usr/share/doc/xfig" -type d -exec chmod 0755 {} \;
+
+ install -D -m644 ../xfig.desktop "${pkgdir}/usr/share/applications/xfig.desktop"
+ install -D -m644 xfig.png "${pkgdir}/usr/share/pixmaps/xfig.png"
+ install -D -m644 ../LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+}
diff --git a/extra/xfig/xfig-3.2.4-redhat.patch b/extra/xfig/xfig-3.2.4-redhat.patch
new file mode 100644
index 000000000..da6f150b3
--- /dev/null
+++ b/extra/xfig/xfig-3.2.4-redhat.patch
@@ -0,0 +1,31 @@
+--- xfig.3.2.4/Fig.ad.redhat 2002-12-19 01:05:41.000000000 +0100
++++ xfig.3.2.4/Fig.ad 2003-05-06 11:45:15.000000000 +0200
+@@ -11,7 +11,7 @@
+ Fig*AllowShellResize: false
+
+ ! Image editor - can edit imported image
+-Fig.image_editor: xv
++Fig.image_editor: xdg-open
+
+ ! name of ghostscript (not ghostview)
+ Fig.ghostscript: gs
+@@ -20,16 +20,16 @@
+ ! This is for viewing the xfig html reference.
+ ! For netscape, this command will open the help pages in a running netscape,
+ ! or start a new netscape if one isn't already running
+-Fig.browser: firefox -remote 'openFile(%f)' || firefox %f
++Fig.browser: xdg-open %f
+
+ ! pdfviewer - put your favorite pdf viewer here.
+ ! This is for viewing the xfig how-to guide and man pages
+-Fig.pdfviewer: xpdf %f
++Fig.pdfviewer: xdg-open %f
+
+ ! Spell check program - put your favorite spelling check program here.
+ ! It must write the misspelled words to standard output.
+
+-Fig.spellcheckcommand: spell %f
++Fig.spellcheckcommand: aspell %f
+
+ ! delay before spinner automatically counts when pressed (milliseconds)
+ Fig.spinner_delay: 1000
diff --git a/extra/xfig/xfig-3.2.5-color-resources.patch b/extra/xfig/xfig-3.2.5-color-resources.patch
new file mode 100644
index 000000000..6cf1af906
--- /dev/null
+++ b/extra/xfig/xfig-3.2.5-color-resources.patch
@@ -0,0 +1,39 @@
+diff -up xfig.3.2.5/Fig-color.bisque.ad~ xfig.3.2.5/Fig-color.bisque.ad
+--- xfig.3.2.5/Fig-color.bisque.ad~ 2007-11-16 13:47:45.000000000 +0100
++++ xfig.3.2.5/Fig-color.bisque.ad 2007-11-16 13:47:52.000000000 +0100
+@@ -93,7 +93,7 @@ Fig*sideruler.background: gray95
+ Fig*topruler.background: gray95
+ Fig*sideruler.background: gray95
+ Fig*List*background: gray95
+-Fig*Scrollbar.background: gray95
++! Fig*Scrollbar.background: gray95
+
+ Fig*cancel.background: navajowhite1
+ Fig*dismiss.background: navajowhite1
+@@ -104,8 +104,8 @@ Fig*menu_divider.foreground: red
+ Fig*menu_divider.foreground: red
+
+ !##### Shadows
+-Fig*shadowWidth: 2
+-Fig*Label.shadowWidth: 1
++! Fig*shadowWidth: 2
++! Fig*Label.shadowWidth: 1
+ Fig*horizontal.shadowWidth: 2
+ Fig*Scrollbar.shadowWidth: 2
+ ! no shadows for update indicators
+@@ -136,3 +136,15 @@ Fig*color_box*topShadowPixel: gray80
+
+ Fig*toggle*bottomShadowPixel: gray80
+ Fig*toggle*topShadowPixel: gray50
++
++! repare damage done to scrollbar shadows non color resources file
++
++Fig*horizontal.topShadowPixel: gray95
++Fig*horizontal.bottomShadowPixel: gray50
++Fig*horizontal.topShadow: gray95
++Fig*horizontal.bottomShadow: gray50
++
++Fig*Scrollbar.topShadow: gray95
++Fig*Scrollbar.bottomShadow: gray50
++Fig*Scrollbar.topShadowPixel: gray95
++Fig*Scrollbar.bottomShadowPixel: gray50
diff --git a/extra/xfig/xfig-3.2.5-enable-Xaw3d.patch b/extra/xfig/xfig-3.2.5-enable-Xaw3d.patch
new file mode 100644
index 000000000..f4d113808
--- /dev/null
+++ b/extra/xfig/xfig-3.2.5-enable-Xaw3d.patch
@@ -0,0 +1,18 @@
+diff -up xfig.3.2.5/Imakefile.no-Xaw3d xfig.3.2.5/Imakefile
+--- xfig.3.2.5/Imakefile.no-Xaw3d 2007-11-16 10:38:18.000000000 +0100
++++ xfig.3.2.5/Imakefile 2007-11-16 10:38:49.000000000 +0100
+@@ -50,8 +50,8 @@ XAPPLOADDIR = /usr/share/X11/app-default
+ XCOMM Uncomment the following if you have David Hawkey's Xaw3D version 1.5E which has
+ XCOMM some new features, including "Tips", which replace xfig's "help balloons"
+ XCOMM NOTE: This is the default for many X systems now.
+
+-XCOMM #define XAW3D1_5E
++#define XAW3D1_5E
+
+ #ifdef XAW3D1_5E
+ DUSEXAW3D = -DXAW3D -DXAW3D1_5E
+- XAWLIB = -lXaw3d15e
++ XAWLIB = -lXaw3d
+ #else
+ XAW_SRC = w_menuentry.c SmeCascade.c SmeBSB.c SimpleMenu.c
+ XAW_OBJ = w_menuentry.o SmeCascade.o SmeBSB.o SimpleMenu.o
diff --git a/extra/xfig/xfig-3.2.5-fhs.patch b/extra/xfig/xfig-3.2.5-fhs.patch
new file mode 100644
index 000000000..a17d908a7
--- /dev/null
+++ b/extra/xfig/xfig-3.2.5-fhs.patch
@@ -0,0 +1,12 @@
+--- xfig.3.2.5/Imakefile.fhs 2006-10-11 01:19:22.000000000 +0200
++++ xfig.3.2.5/Imakefile 2007-04-16 14:04:45.000000000 +0200
+@@ -169,8 +169,7 @@
+ XFIGLIBDIR = $(LIBDIR)/xfig
+
+ XCOMM XFIGDOCDIR tells where the html and pdf documentation should go
+-XCOMM XFIGDOCDIR = $(DOCDIR)/xfig
+-XFIGDOCDIR = /usr/local/xfig/doc
++XFIGDOCDIR = $(DOCDIR)/xfig
+
+ XCOMM MANDIR tells where the standard man pages should go (no need to change it
+ XCOMM if you want the man pages installed in the standard place on your system
diff --git a/extra/xfig/xfig-3.2.5-missing-protos.patch b/extra/xfig/xfig-3.2.5-missing-protos.patch
new file mode 100644
index 000000000..181c52a69
--- /dev/null
+++ b/extra/xfig/xfig-3.2.5-missing-protos.patch
@@ -0,0 +1,11 @@
+diff -up xfig.3.2.5/u_draw.c~ xfig.3.2.5/u_draw.c
+--- xfig.3.2.5/u_draw.c~ 2008-04-03 15:58:23.000000000 +0200
++++ xfig.3.2.5/u_draw.c 2008-04-03 15:58:23.000000000 +0200
+@@ -43,6 +43,7 @@
+ #include "w_zoom.h"
+ #include "u_redraw.h"
+ #include "w_cursor.h"
++#include <X11/ImUtil.h>
+
+ static Boolean add_point(int x, int y);
+ static void init_point_array(void);
diff --git a/extra/xfig/xfig-3.2.5-urwfonts.patch b/extra/xfig/xfig-3.2.5-urwfonts.patch
new file mode 100644
index 000000000..7bc766bd9
--- /dev/null
+++ b/extra/xfig/xfig-3.2.5-urwfonts.patch
@@ -0,0 +1,79 @@
+--- xfig.3.2.4/u_fonts.c 2002-09-09 13:36:58.000000000 -0400
++++ new-xfig-3.2.4/u_fonts.c 2006-10-11 00:29:07.000000000 -0400
+@@ -22,41 +22,41 @@
+ /* X11 font names */
+
+ struct _xfstruct x_fontinfo[NUM_FONTS] = {
+- {"-*-times-medium-r-normal--", (struct xfont*) NULL},
+- {"-*-times-medium-i-normal--", (struct xfont*) NULL},
+- {"-*-times-bold-r-normal--", (struct xfont*) NULL},
+- {"-*-times-bold-i-normal--", (struct xfont*) NULL},
+- {"-*-avantgarde-book-r-normal--", (struct xfont*) NULL},
+- {"-*-avantgarde-book-o-normal--", (struct xfont*) NULL},
+- {"-*-avantgarde-demi-r-normal--", (struct xfont*) NULL},
+- {"-*-avantgarde-demi-o-normal--", (struct xfont*) NULL},
+- {"-*-bookman-light-r-normal--", (struct xfont*) NULL},
+- {"-*-bookman-light-i-normal--", (struct xfont*) NULL},
+- {"-*-bookman-demi-r-normal--", (struct xfont*) NULL},
+- {"-*-bookman-demi-i-normal--", (struct xfont*) NULL},
+- {"-*-courier-medium-r-normal--", (struct xfont*) NULL},
+- {"-*-courier-medium-o-normal--", (struct xfont*) NULL},
+- {"-*-courier-bold-r-normal--", (struct xfont*) NULL},
+- {"-*-courier-bold-o-normal--", (struct xfont*) NULL},
+- {"-*-helvetica-medium-r-normal--", (struct xfont*) NULL},
+- {"-*-helvetica-medium-o-normal--", (struct xfont*) NULL},
+- {"-*-helvetica-bold-r-normal--", (struct xfont*) NULL},
+- {"-*-helvetica-bold-o-normal--", (struct xfont*) NULL},
+- {"-*-helvetica-medium-r-narrow--", (struct xfont*) NULL},
+- {"-*-helvetica-medium-o-narrow--", (struct xfont*) NULL},
+- {"-*-helvetica-bold-r-narrow--", (struct xfont*) NULL},
+- {"-*-helvetica-bold-o-narrow--", (struct xfont*) NULL},
+- {"-*-new century schoolbook-medium-r-normal--", (struct xfont*) NULL},
+- {"-*-new century schoolbook-medium-i-normal--", (struct xfont*) NULL},
+- {"-*-new century schoolbook-bold-r-normal--", (struct xfont*) NULL},
+- {"-*-new century schoolbook-bold-i-normal--", (struct xfont*) NULL},
+- {"-*-palatino-medium-r-normal--", (struct xfont*) NULL},
+- {"-*-palatino-medium-i-normal--", (struct xfont*) NULL},
+- {"-*-palatino-bold-r-normal--", (struct xfont*) NULL},
+- {"-*-palatino-bold-i-normal--", (struct xfont*) NULL},
+- {"-*-symbol-medium-r-normal--", (struct xfont*) NULL},
+- {"-*-itc zapf chancery-medium-i-normal--", (struct xfont*) NULL},
+- {"-*-itc zapf dingbats-*-*-*--", (struct xfont*) NULL},
++ {"-urw-nimbus roman no9 l-medium-r-normal--", (struct xfont*) NULL},
++ {"-urw-nimbus roman no9 l-medium-i-normal--", (struct xfont*) NULL},
++ {"-urw-nimbus roman no9 l-bold-r-normal--", (struct xfont*) NULL},
++ {"-urw-nimbus roman no9 l-bold-i-normal--", (struct xfont*) NULL},
++ {"-urw-urw gothic l-medium-r-normal--", (struct xfont*) NULL},
++ {"-urw-urw gothic l-medium-o-normal--", (struct xfont*) NULL},
++ {"-urw-urw gothic l-semibold-r-normal--", (struct xfont*) NULL},
++ {"-urw-urw gothic l-semibold-o-normal--", (struct xfont*) NULL},
++ {"-urw-urw bookman l-medium-r-normal--", (struct xfont*) NULL},
++ {"-urw-urw bookman l-medium-i-normal--", (struct xfont*) NULL},
++ {"-urw-urw bookman l-bold-r-normal--", (struct xfont*) NULL},
++ {"-urw-urw bookman l-bold-i-normal--", (struct xfont*) NULL},
++ {"-urw-nimbus mono l-medium-r-normal--", (struct xfont*) NULL},
++ {"-urw-nimbus mono l-medium-o-normal--", (struct xfont*) NULL},
++ {"-urw-nimbus mono l-bold-r-normal--", (struct xfont*) NULL},
++ {"-urw-nimbus mono l-bold-o-normal--", (struct xfont*) NULL},
++ {"-urw-nimbus sans l-medium-r-normal--", (struct xfont*) NULL},
++ {"-urw-nimbus sans l-medium-i-normal--", (struct xfont*) NULL},
++ {"-urw-nimbus sans l-bold-r-normal--", (struct xfont*) NULL},
++ {"-urw-nimbus sans l-bold-i-normal--", (struct xfont*) NULL},
++ {"-urw-nimbus sans l condensed-medium-r-condensed--", (struct xfont*) NULL},
++ {"-urw-nimbus sans l condensed-medium-i-condensed--", (struct xfont*) NULL},
++ {"-urw-nimbus sans l condensed-bold-r-condensed--", (struct xfont*) NULL},
++ {"-urw-nimbus sans l condensed-bold-i-condensed--", (struct xfont*) NULL},
++ {"-urw-century schoolbook l-medium-r-normal--", (struct xfont*) NULL},
++ {"-urw-century schoolbook l-medium-i-normal--", (struct xfont*) NULL},
++ {"-urw-century schoolbook l-bold-r-normal--", (struct xfont*) NULL},
++ {"-urw-century schoolbook l-bold-i-normal--", (struct xfont*) NULL},
++ {"-urw-urw palladio l-medium-r-normal--", (struct xfont*) NULL},
++ {"-urw-urw palladio l-medium-i-normal--", (struct xfont*) NULL},
++ {"-urw-urw palladio l-bold-r-normal--", (struct xfont*) NULL},
++ {"-urw-urw palladio l-bold-i-normal--", (struct xfont*) NULL},
++ {"-urw-standard symbols l-medium-r-normal--", (struct xfont*) NULL},
++ {"-urw-urw chancery l-medium-i-normal--", (struct xfont*) NULL},
++ {"-urw-dingbats-medium-r-normal--", (struct xfont*) NULL},
+ };
+
+ /* Use the following font names for any font that doesn't exist in the table above.
diff --git a/extra/xfig/xfig-3.2.5b-fix-eps-reading.patch b/extra/xfig/xfig-3.2.5b-fix-eps-reading.patch
new file mode 100644
index 000000000..7601d20ea
--- /dev/null
+++ b/extra/xfig/xfig-3.2.5b-fix-eps-reading.patch
@@ -0,0 +1,46 @@
+diff -ur xfig.3.2.5b/f_readeps.c xfig.3.2.5b.new/f_readeps.c
+--- xfig.3.2.5b/f_readeps.c 2009-03-30 17:52:18.000000000 +0200
++++ xfig.3.2.5b.new/f_readeps.c 2010-11-25 16:53:54.328247928 +0100
+@@ -252,12 +252,13 @@
+ {
+ char buf[300];
+ FILE *tmpfp, *pixfile, *gsfile;
+- char *psnam, *driver;
++ char *driver;
+ int status, wid, ht, nbitmap, fd;
+ char tmpfile[PATH_MAX],
+ pixnam[PATH_MAX],
+ errnam[PATH_MAX],
+- gscom[2 * PATH_MAX];
++ gscom[2 * PATH_MAX],
++ psnam[PATH_MAX];
+
+ wid = urx - llx;
+ ht = ury - lly;
+@@ -307,19 +308,14 @@
+ /* for color, use pcx */
+ driver = "pcx256";
+ }
+- /* avoid absolute paths (for Cygwin with gswin32) by changing directory */
+- if (tmpfile[0] == '/') {
+- psnam = strrchr(tmpfile, '/');
+- *psnam = 0;
+- sprintf(gscom, "cd \"%s/\";", tmpfile);
+- *psnam++ = '/'; /* Restore name for unlink() below */
+- } else {
+- psnam = tmpfile;
+- gscom[0] = '\0';
++ /* Canonicalize the eps file filename, needed to "defeat" -dSAFER */
++ if (!realpath(tmpfile, psnam)) {
++ file_msg("Cannot canonicalize %s: %s\n", tmpfile, strerror(errno));
++ return False;
+ }
+- sprintf(&gscom[strlen(gscom)],
+- "%s -r72x72 -dSAFER -sDEVICE=%s -g%dx%d -sOutputFile=%s -q - > %s 2>&1",
+- appres.ghostscript, driver, wid, ht, pixnam, errnam);
++ sprintf(gscom,
++ "%s -r72x72 -sDEVICE=%s -g%dx%d -sOutputFile=%s -dDELAYSAFER -c '<< /PermitFileReading [ (%s)] >> setuserparams .locksafe' -dSAFER -q - > %s 2>&1",
++ appres.ghostscript, driver, wid, ht, pixnam, psnam, errnam);
+ if (appres.DEBUG)
+ fprintf(stderr,"calling: %s\n",gscom);
+ if ((gsfile = popen(gscom, "w")) == 0) {
diff --git a/extra/xfig/xfig.3.2.5-modularX.patch b/extra/xfig/xfig.3.2.5-modularX.patch
new file mode 100644
index 000000000..3b5ac5937
--- /dev/null
+++ b/extra/xfig/xfig.3.2.5-modularX.patch
@@ -0,0 +1,28 @@
+--- xfig.3.2.5/Imakefile.modularX 2007-04-16 14:27:49.000000000 +0200
++++ xfig.3.2.5/Imakefile 2007-04-16 14:29:18.000000000 +0200
+@@ -45,7 +45,7 @@
+ XCOMM different tree than the "correct" tree that your X system expects. The usual
+ XCOMM purpose of DESTDIR is to test an install process by installing in a benign area.
+
+-XCOMM XAPPLOADDIR = /home/user/xfig
++XAPPLOADDIR = /usr/share/X11/app-defaults
+
+ XCOMM Uncomment the following definition for XAW3D if you want to use
+ XCOMM the 3d Athena Widget Set (highly recommended!)
+@@ -166,12 +166,12 @@
+ XCOMM XFIGLIBDIR = $(LIBDIR)
+
+ XCOMM use this if you want the multi-key data base file in the standard X11 tree
+-XFIGLIBDIR = $(LIBDIR)/xfig
++XFIGLIBDIR = /usr/share/xfig
+
+ XCOMM XFIGDOCDIR tells where the html and pdf documentation should go
+ XFIGDOCDIR = $(DOCDIR)/xfig
+
+ XCOMM MANDIR tells where the standard man pages should go (no need to change it
+ XCOMM if you want the man pages installed in the standard place on your system
+-MANDIR = $(MANSOURCEPATH)$(MANSUFFIX)
++MANDIR = /usr/share/man/man1
+ XCOMM MANDIR = /usr/local/xfig/man
+
+ XCOMM If your system doesn't have strstr undefine the following definition
diff --git a/extra/xfig/xfig.desktop b/extra/xfig/xfig.desktop
new file mode 100644
index 000000000..c634a28e9
--- /dev/null
+++ b/extra/xfig/xfig.desktop
@@ -0,0 +1,47 @@
+[Desktop Entry]
+Encoding=UTF-8
+Categories=Application;Graphics;
+MimeType=image/fig;image/x-xfig;
+Exec=xfig
+Icon=xfig
+Type=Application
+Name=Xfig
+Name[eo]=XDesegno
+Name[et]=Ffig
+Name[ja]=xfig
+Name[no]=X-figur
+Comment=Xfig drawing application
+Comment[bg]=Xfig ïðîãðàìà çà ðèñóâàíå
+Comment[ca]=Aplicació de dibuix Xfig
+Comment[cs]=Aplikace pro kreslení vektorových obrázků
+Comment[da]=Xfig tegneprogram
+Comment[de]=Xfig-Zeichenprogramm
+Comment[el]=Xfig
+Comment[eo]=Desegnilo "Xfig"
+Comment[es]=Aplicación de diseño vectorial (objetos)
+Comment[et]=XFig joonistusprogramm
+Comment[fi]=Xfig vektoripiirto-ohjelma
+Comment[fr]=Programme de dessin objet Xfig
+Comment[gl]=Aplicación de debuxo (obxectos)
+Comment[he]=Xfig רויצה ×ושיי
+Comment[hr]=Program za crtanje
+Comment[hu]=Rajzolóprogram
+Comment[is]=Hlutbundið teikniforrit
+Comment[it]=Applicazione di disegno Xfig
+Comment[lt]=Xfig braižymo programa
+Comment[mk]=ЕдноÑтавна апликација за векторÑко цртање
+Comment[nl]=Xfig-tekenprogramma
+Comment[no]=Xfig-tegneprogram
+Comment[no_NY]=Teikneprogrammet Xfig
+Comment[pl]=Aplikacja do kreślenia
+Comment[pt]=Aplicação de desenho
+Comment[ro]=Program de desenare vectorială
+Comment[ru]=ÐŸÑ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ñ€Ð¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð²ÐµÐºÑ‚Ð¾Ñ€Ð½Ð¾Ð¹ графики
+Comment[sk]=Xfig aplikácia pre kreslenie vektorových obrázkov
+Comment[sl]=Program za risanje Xfig
+Comment[sr]=Xfig prgram za vektorsko crtanje
+Comment[sv]=Xfig ritprogram
+Comment[ta]=Xfig Ũþø ÀÂýÀ¡Î
+Comment[tr]=Xfig çizim uygulaması
+Comment[uk]=Xfig
+Comment[zh_CN.GB2312]=Xfig 绘图应用程åº
diff --git a/extra/xfig/xfig.install b/extra/xfig/xfig.install
new file mode 100644
index 000000000..f01585f79
--- /dev/null
+++ b/extra/xfig/xfig.install
@@ -0,0 +1,11 @@
+post_install() {
+ update-desktop-database -q
+ }
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ post_install $1
+}
diff --git a/extra/xfprint/PKGBUILD b/extra/xfprint/PKGBUILD
new file mode 100644
index 000000000..71e48bd8d
--- /dev/null
+++ b/extra/xfprint/PKGBUILD
@@ -0,0 +1,35 @@
+# $Id: PKGBUILD 85560 2010-07-15 21:39:23Z andyrtr $
+# Maintainer: Tobias Kieslich <tobias funnychar archlinux.org>
+
+pkgname=xfprint
+pkgver=4.6.1
+pkgrel=4
+pkgdesc="A print dialog and a printer manager for Xfce"
+arch=(i686 x86_64)
+license=('GPL2')
+url="http://www.xfce.org/"
+groups=('xfce4')
+depends=("libxfcegui4>=$pkgver" "xfconf>=$pkgver" 'libcups>=1.3.10' 'a2ps' 'heimdal>=1.3.1'
+ 'gnutls>=2.6.5' 'hicolor-icon-theme')
+makedepends=('pkgconfig' 'intltool')
+options=('!libtool')
+install=${pkgname}.install
+source=(http://www.xfce.org/archive/xfce-${pkgver}/src/${pkgname}-${pkgver}.tar.bz2
+ xfprint-manager-fix.diff)
+md5sums=('d92fca97a42816085080baf07a99a62e'
+ '69b3619a285e94d602a1d0ac08f4ca06')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ # fix xfprint-manager not showing cups printers
+ # see http://bugs.archlinux.org/task/19965, http://bugs.gentoo.org/278047, http://bugzilla.xfce.org/show_bug.cgi?id=6089
+ patch -Np0 -i ${srcdir}/xfprint-manager-fix.diff
+ ./configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib \
+ --localstatedir=/var --disable-static
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/xfprint/xfprint-manager-fix.diff b/extra/xfprint/xfprint-manager-fix.diff
new file mode 100644
index 000000000..1bf0725f8
--- /dev/null
+++ b/extra/xfprint/xfprint-manager-fix.diff
@@ -0,0 +1,29 @@
+--- xfprint-manager/main.c 2009-02-24 21:34:16.000000000 +0000
++++ xfprint-manager/main.c.new 2010-07-15 21:30:51.098745852 +0000
+@@ -41,6 +41,7 @@
+ #include <libxfprint/printer-list-window.h>
+
+ #define CHANNEL "xfprint"
++#define PROP_PRINTING_SYSTEM "/printing-system"
+
+ extern void mainwin_setup (void);
+
+@@ -66,15 +67,15 @@
+ channel = xfconf_channel_new (CHANNEL);
+ if (channel) {
+
+- if (xfconf_channel_has_property (channel, "/XfPrint/system")) {
+- const gchar *system_name = xfconf_channel_get_string (channel, "/XfPrint/system", "none");
++ if (xfconf_channel_has_property (channel, PROP_PRINTING_SYSTEM)) {
++ const gchar *system_name = xfconf_channel_get_string (channel, PROP_PRINTING_SYSTEM, "none");
+ if (g_ascii_strcasecmp (system_name, "none") != 0) {
+ ps = printing_system_new (system_name);
+ if (ps == NULL);
+ g_warning ("Unable to load printing system module %s", system_name);
+ }
+ } else {
+- g_warning ("%s: XfPrint/system is not set", PACKAGE);
++ g_warning ("%s: XfPrint/printing-system is not set", PACKAGE);
+ }
+ }
+
diff --git a/extra/xfprint/xfprint.install b/extra/xfprint/xfprint.install
new file mode 100644
index 000000000..21b79d2d4
--- /dev/null
+++ b/extra/xfprint/xfprint.install
@@ -0,0 +1,11 @@
+post_install() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
diff --git a/extra/xfwm4-themes/PKGBUILD b/extra/xfwm4-themes/PKGBUILD
new file mode 100644
index 000000000..2e6f414e6
--- /dev/null
+++ b/extra/xfwm4-themes/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 28064 2009-02-27 20:44:58Z andyrtr $
+# Maintainer: Tobias Kieslich <tobias funnychar archlinux.org>
+
+pkgname=xfwm4-themes
+pkgver=4.6.0
+pkgrel=1
+pkgdesc="A set of additionnal themes for the Xfce window manager"
+arch=(i686 x86_64)
+license=('GPL2')
+url="http://www.xfce.org/"
+groups=('xfce4')
+depends=("xfwm4>=${pkgver}")
+makedepends=('pkgconfig')
+options=('!libtool')
+source=(http://www.xfce.org/archive/xfce-${pkgver}/src/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('4dc5cb29cbd40e3b9dece12a85e20854')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib \
+ --localstatedir=/var --disable-static
+ make || return 1
+ make DESTDIR=${pkgdir} install || return 1
+}
diff --git a/extra/xfwm4/PKGBUILD b/extra/xfwm4/PKGBUILD
new file mode 100644
index 000000000..a7d92fb73
--- /dev/null
+++ b/extra/xfwm4/PKGBUILD
@@ -0,0 +1,38 @@
+# $Id: PKGBUILD 108288 2011-01-30 17:29:07Z andyrtr $
+# Maintainer: AndyRTR <andyrtr@archlinux.org>
+# Contributor: tobias <tobias funnychar archlinux.org>
+
+pkgname=xfwm4
+pkgver=4.8.1
+pkgrel=1
+pkgdesc="Xfce window manager"
+arch=('i686' 'x86_64')
+license=('GPL2')
+url="http://www.xfce.org/"
+groups=('xfce4')
+depends=("libxfce4ui" 'libwnck' 'hicolor-icon-theme')
+makedepends=('pkgconfig' 'intltool')
+options=('!libtool')
+install=${pkgname}.install
+source=(http://archive.xfce.org/src/xfce/${pkgname}/4.8/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('447433dca613180ebd6cfed4beb1c1c9')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --libexecdir=/usr/lib \
+ --localstatedir=/var \
+ --disable-static \
+ --enable-startup-notification \
+ --enable-randr \
+ --enable-compositor \
+ --enable-xsync \
+ --disable-debug
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/xfwm4/xfwm4.install b/extra/xfwm4/xfwm4.install
new file mode 100644
index 000000000..21b79d2d4
--- /dev/null
+++ b/extra/xfwm4/xfwm4.install
@@ -0,0 +1,11 @@
+post_install() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
diff --git a/extra/xine-lib/PKGBUILD b/extra/xine-lib/PKGBUILD
new file mode 100644
index 000000000..d2f9dbe51
--- /dev/null
+++ b/extra/xine-lib/PKGBUILD
@@ -0,0 +1,49 @@
+# $Id: PKGBUILD 101416 2010-11-29 05:43:59Z eric $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+
+pkgname=xine-lib
+pkgver=1.1.19
+pkgrel=2
+pkgdesc="A multimedia playback engine"
+arch=('i686' 'x86_64')
+url="http://www.xine-project.org"
+license=('LGPL' 'GPL')
+depends=('libgl' 'libxvmc' 'esound' 'flac' 'libvorbis' 'sdl' 'libmng' 'libtheora'
+ 'libxcb' 'wavpack' 'ffmpeg' 'faad2')
+makedepends=('pkg-config' 'libtool' 'imagemagick' 'smbclient' 'mesa' 'alsa-lib'
+ 'vcdimager' 'jack' 'gtk2' 'libpulse' 'speex' 'aalib')
+optdepends=('imagemagick: for using the imagemagick plugin' 'smbclient: for using the smb plugin' \
+ 'jack: for using the jack plugin' 'vcdimager: for using the vcd plugin' \
+ 'gtk2: for using the gdk-pixbuf plugin' 'mesa: for using the opengl plugin' \
+ 'libpulse: for using the pulseaudio plugin' 'speex: for using the speex plugin' \
+ 'aalib: for using the aalib plugin')
+options=('!libtool')
+source=(http://downloads.sourceforge.net/sourceforge/xine/${pkgname}-${pkgver}.tar.bz2
+ xine-lib-1.1.1-configure-no-mcpu-march.patch xine-lib-1.1.19-xvmc.patch)
+md5sums=('a410a0f0617e1d6309f0cbe907f73f8a' '9776df4eb54d2f1f68d8268adbc3b5c2'\
+ '8662fb124870b1dd7effe4ff5e2a2e3d')
+sha1sums=('5afcc28c5cf2bdaab99d951960f6587797e1e5a0' '121a8358d7919b2e51067412373f52848290338a'\
+ '920bf27e6e3523dfe4cc9c802ff713e9688a3f34')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -p0 < ../xine-lib-1.1.1-configure-no-mcpu-march.patch
+ patch -p0 < ../xine-lib-1.1.19-xvmc.patch
+
+ libtoolize --force --copy
+ aclocal -I m4
+ autoconf
+ automake --add-missing
+
+ ./configure --prefix=/usr --with-w32-path=/usr/lib/codecs \
+ --with-xv-path=/usr/lib --with-xxmc-path=/usr/lib --with-xvmc-path=/usr/lib \
+ --with-libflac --with-wavpack --with-xcb --with-jack --with-speex \
+ --disable-gnomevfs --with-pulseaudio --enable-aalib --disable-modplug \
+ --with-external-ffmpeg
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/xine-lib/xine-lib-1.1.1-configure-no-mcpu-march.patch b/extra/xine-lib/xine-lib-1.1.1-configure-no-mcpu-march.patch
new file mode 100644
index 000000000..4b6ba9e35
--- /dev/null
+++ b/extra/xine-lib/xine-lib-1.1.1-configure-no-mcpu-march.patch
@@ -0,0 +1,13 @@
+--- m4/optimizations.m4.orig 2005-11-27 01:20:08.000000000 +0100
++++ m4/optimizations.m4 2005-11-27 01:22:56.000000000 +0100
+@@ -161,10 +161,6 @@
+ ;;
+
+ esac
+- if test x"$archopt_val" != x; then
+- CFLAGS="$sarchopt=$archopt_val $CFLAGS"
+- DEBUG_CFLAGS="$sarchopt=$archopt_val $DEBUG_CFLAGS"
+- fi
+ fi
+ else
+ dnl we have the Intel compiler
diff --git a/extra/xine-lib/xine-lib-1.1.19-xvmc.patch b/extra/xine-lib/xine-lib-1.1.19-xvmc.patch
new file mode 100644
index 000000000..bef8b0bac
--- /dev/null
+++ b/extra/xine-lib/xine-lib-1.1.19-xvmc.patch
@@ -0,0 +1,17 @@
+Quoting ChangeLog of X11's videoproto package:
+vldXvMC.h: stop uselessly including XvMClib.h
+
+--- src/video_out/xxmc.h
++++ src/video_out/xxmc.h
+@@ -77,10 +77,10 @@
+ #include <X11/extensions/XShm.h>
+ #include <X11/extensions/Xv.h>
+ #include <X11/extensions/Xvlib.h>
++#include <X11/extensions/XvMClib.h>
+ #ifdef HAVE_VLDXVMC
+ #include <X11/extensions/vldXvMC.h>
+ #else
+- #include <X11/extensions/XvMClib.h>
+ #include <X11/extensions/XvMC.h>
+ #endif
+
diff --git a/extra/xine-ui/ChangeLog b/extra/xine-ui/ChangeLog
new file mode 100644
index 000000000..bfb45aa33
--- /dev/null
+++ b/extra/xine-ui/ChangeLog
@@ -0,0 +1,27 @@
+2010-03-23 Eric Belanger <eric@archlinux.org>
+
+ * xine-ui 0.99.6-1
+ * Upstream update
+ * Cleaned up depends
+ * Removed optdepends
+ * Replaced lirc makedepends by lirc-utils
+ * Added shared-mime-info depends
+
+2010-01-19 Eric Belanger <eric@archlinux.org>
+
+ * xine-ui 0.99.5-6
+ * Rebuilt for libpng 1.4 and libjpeg 8
+ * Added install scriptlet to update icon cache
+
+2009-06-18 Eric Belanger <eric@archlinux.org>
+
+ * xine-ui 0.99.5-5
+ * Rebuilt against readline 6.0.00
+
+2008-08-19 Eric Belanger <eric@archlinux.org>
+
+ * xine-ui 0.99.5-4
+ * Added xine and xine-remote binaries (missing in 0.99.5-3)
+ * Added missing libxt makedepends
+ * Replaced .install file by an optdepends
+ * Added ChangeLog
diff --git a/extra/xine-ui/PKGBUILD b/extra/xine-ui/PKGBUILD
new file mode 100644
index 000000000..4c5471ffa
--- /dev/null
+++ b/extra/xine-ui/PKGBUILD
@@ -0,0 +1,41 @@
+# $Id: PKGBUILD 77076 2010-04-10 16:09:26Z andrea $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+
+pkgname=xine-ui
+pkgver=0.99.6
+pkgrel=1
+pkgdesc="A free video player for Unix"
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://www.xine-project.org"
+depends=('xine-lib' 'curl' 'libxtst' 'libxinerama' 'libxv' 'libpng' 'libxft'
+ 'libxxf86vm' 'readline' 'xdg-utils' 'shared-mime-info' 'hicolor-icon-theme'
+ 'lirc-utils')
+makedepends=('libxt')
+options=('!emptydirs' '!strip')
+install=${pkgname}.install
+source=(http://downloads.sourceforge.net/xine/${pkgname}-${pkgver}.tar.xz
+ lirc-check-a89347673097.patch lirc-makefile-a68dd15ff7ae.patch fix_lirc.diff)
+md5sums=('d468b4e7fe39ff19888261e1da9be914'
+ '4f06f63f5fd55b08a648e5d63f881898'
+ '9f5acaf14f3945aa2ce428631d09cd47'
+ '0174bd096756b9c6f47e9b8b5ff6e145')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -p1 < "${srcdir}/lirc-check-a89347673097.patch" || return 1
+ patch -p1 < "${srcdir}/lirc-makefile-a68dd15ff7ae.patch" || return 1
+ patch -p1 < "${srcdir}/fix_lirc.diff" || return 1
+ autoconf || return 1
+
+ ./configure --prefix=/usr --mandir=/usr/share/man \
+ --with-x --enable-lirc --without-aalib --enable-debug || return 1
+ make || return 1
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install || return 1
+ install -d "${pkgdir}/usr/share/applications"
+ mv "${pkgdir}/usr/share/xine/desktop/xine.desktop" "${pkgdir}/usr/share/applications"
+}
diff --git a/extra/xine-ui/fix_lirc.diff b/extra/xine-ui/fix_lirc.diff
new file mode 100644
index 000000000..93890cb5c
--- /dev/null
+++ b/extra/xine-ui/fix_lirc.diff
@@ -0,0 +1,13 @@
+diff --git a/m4/_xine.m4 b/m4/_xine.m4
+--- a/m4/_xine.m4
++++ b/m4/_xine.m4
+@@ -46,7 +46,8 @@ AC_DEFUN([AC_CHECK_LIRC],
+ fi
+ for llirc in $lirc_libprefix /lib /usr/lib /usr/local/lib; do
+ AC_CHECK_FILE(["$llirc/liblirc_client.so"],
+- [LIRC_LIBS="$llirc/liblirc_client.so"]
++ [LIRC_LIBS="$llirc/liblirc_client.so"
++ found_lirc=yes]
+ AC_DEFINE([HAVE_LIRC],,[Define this if you have LIRC (liblirc_client) installed]),
+ AC_CHECK_FILE(["$llirc/liblirc_client.a"],
+ [LIRC_LIBS="$llirc/liblirc_client.a"
diff --git a/extra/xine-ui/lirc-check-a89347673097.patch b/extra/xine-ui/lirc-check-a89347673097.patch
new file mode 100644
index 000000000..c1c8d2614
--- /dev/null
+++ b/extra/xine-ui/lirc-check-a89347673097.patch
@@ -0,0 +1,64 @@
+
+# HG changeset patch
+# User Darren Salt <linux@youmustbejoking.demon.co.uk>
+# Date 1268754560 0
+# Node ID a89347673097053d89675e991ab403cda04d94cd
+# Parent ed3079d668ed5291d1daf7096d6b42c90ee06e11
+Resync LIRC check with gxine; no longer fails if liblircclient0.pc is missing.
+
+--- a/m4/_xine.m4 Sun Mar 14 18:04:46 2010 +0000
++++ b/m4/_xine.m4 Tue Mar 16 15:49:20 2010 +0000
+@@ -25,14 +25,14 @@
+ dnl
+ AC_DEFUN([AC_CHECK_LIRC],
+ [AC_ARG_ENABLE(lirc,
+- [ --disable-lirc Turn off LIRC support.],
+- [], enable_lirc=yes)
++ [AS_HELP_STRING([--disable-lirc], [turn off LIRC support])],
++ [given=Y], [given=N; enable_lirc=yes])
+
+ found_lirc=no
+ if test x"$enable_lirc" = xyes; then
+ have_lirc=yes
+- PKG_CHECK_MODULES(LIRC, liblircclient0, [found_lirc=yes], [])
+- if test "$LIRC_CFLAGS" != ''; then
++ PKG_CHECK_MODULES(LIRC, liblircclient0, [found_lirc=yes], [:])
++ if test "$found_lirc" = yes; then
+ LIRC_INCLUDE="$LIRC_CFLAGS"
+ else
+ AC_REQUIRE_CPP
+@@ -42,15 +42,20 @@
+
+ if test x"$LIRC_PREFIX" != "x"; then
+ lirc_libprefix="$LIRC_PREFIX/lib"
+- LIRC_INCLUDE="-I$LIRC_PREFIX/include"
++ LIRC_INCLUDE="-I$LIRC_PREFIX/include"
+ fi
+ for llirc in $lirc_libprefix /lib /usr/lib /usr/local/lib; do
+- AC_CHECK_FILE(["$llirc/liblirc_client.a"],
+- [LIRC_LIBS="$llirc/liblirc_client.a"
+- found_lirc=yes],,)
++ AC_CHECK_FILE(["$llirc/liblirc_client.so"],
++ [LIRC_LIBS="$llirc/liblirc_client.so"]
++ AC_DEFINE([HAVE_LIRC],,[Define this if you have LIRC (liblirc_client) installed]),
++ AC_CHECK_FILE(["$llirc/liblirc_client.a"],
++ [LIRC_LIBS="$llirc/liblirc_client.a"
++ found_lirc=yes],,)
++ )
+ done
+ else
+- AC_MSG_RESULT([*** LIRC client support not available, LIRC support will be disabled ***]);
++ test $given = Y && AC_MSG_ERROR([LIRC client support requested but not available])
++ AC_MSG_RESULT([*** LIRC client support not available, LIRC support will be disabled ***])
+ fi
+ fi
+ fi
+@@ -59,7 +64,6 @@
+ fi
+ AC_SUBST(LIRC_LIBS)
+ AC_SUBST(LIRC_INCLUDE)
+- AM_CONDITIONAL([HAVE_LIRC], [test "x$have_lirc" = "xyes"])
+ ])
+
+ dnl AC_C_ATTRIBUTE_ALIGNED
+
diff --git a/extra/xine-ui/lirc-makefile-a68dd15ff7ae.patch b/extra/xine-ui/lirc-makefile-a68dd15ff7ae.patch
new file mode 100644
index 000000000..daad4f03a
--- /dev/null
+++ b/extra/xine-ui/lirc-makefile-a68dd15ff7ae.patch
@@ -0,0 +1,19 @@
+
+# HG changeset patch
+# User Darren Salt <linux@youmustbejoking.demon.co.uk>
+# Date 1268758696 0
+# Node ID a68dd15ff7ae4be65c2ace25ef66966d7c272514
+# Parent 882c464d4a650d09da37ade366face74452c1897
+Restore definition of HAVE_LIRC for use in makefiles.
+
+--- a/m4/_xine.m4 Mon Mar 15 12:03:01 2010 -0700
++++ b/m4/_xine.m4 Tue Mar 16 16:58:16 2010 +0000
+@@ -62,6 +62,7 @@
+ if test "$found_lirc" = yes; then
+ AC_DEFINE([HAVE_LIRC],,[Define this if you have LIRC (liblirc_client) installed])
+ fi
++ AM_CONDITIONAL([HAVE_LIRC], [test "$found_lirc" = yes])
+ AC_SUBST(LIRC_LIBS)
+ AC_SUBST(LIRC_INCLUDE)
+ ])
+
diff --git a/extra/xine-ui/xine-ui.install b/extra/xine-ui/xine-ui.install
new file mode 100644
index 000000000..8afc56658
--- /dev/null
+++ b/extra/xine-ui/xine-ui.install
@@ -0,0 +1,12 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+ update-mime-database usr/share/mime &> /dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/extra/xmahjongg/PKGBUILD b/extra/xmahjongg/PKGBUILD
new file mode 100644
index 000000000..a7f489e82
--- /dev/null
+++ b/extra/xmahjongg/PKGBUILD
@@ -0,0 +1,21 @@
+# $Id: PKGBUILD 36409 2009-04-22 04:45:25Z eric $
+# Maintainer: Kevin Piche <kevin@archlinux.org>
+# Contributor: Roberto Carvajal <rcarvajal@users.sf.net>
+
+pkgname=xmahjongg
+pkgver=3.7
+pkgrel=3
+pkgdesc="Mahjongg game for X-Window"
+arch=('i686' 'x86_64')
+url="http://www.lcdf.org/xmahjongg/"
+license=('GPL')
+depends=('gcc-libs' 'libsm' 'libx11')
+source=(http://www.lcdf.org/$pkgname/$pkgname-$pkgver.tar.gz)
+md5sums=('9db5bf1b329b410220b7976cd9b3d374')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ ./configure --prefix=/usr --mandir=/usr/share/man || return 1
+ make || return 1
+ make DESTDIR=$pkgdir install || return 1
+}
diff --git a/extra/xmlsec/PKGBUILD b/extra/xmlsec/PKGBUILD
new file mode 100644
index 000000000..675a154d2
--- /dev/null
+++ b/extra/xmlsec/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id: PKGBUILD 99799 2010-11-17 20:07:03Z andyrtr $
+# Maintainer: AndyRTR <andyrtr@archlinux.org>
+# Contributor: Jan de Groot <jgc@archlinux.org>
+# Contributor: Hussam Al-Tayeb <ht990332@gmail.com>
+
+pkgname=xmlsec
+pkgver=1.2.16
+pkgrel=1
+pkgdesc="XML Security Library is a C library based on LibXML2"
+license=('custom')
+arch=(i686 x86_64)
+url="http://www.aleksey.com/xmlsec/index.html"
+depends=('libxslt>=1.1.26' 'openssl>=1.0.0' 'gnutls>=2.8.6' 'nss>=3.12.6' 'libtool')
+makedepends=('pkgconfig')
+options=('!libtool')
+source=(http://www.aleksey.com/xmlsec/download/${pkgname}1-${pkgver}.tar.gz)
+md5sums=('17e8eb9a4ec4139b7689d139be4da133')
+
+build() {
+ cd ${srcdir}/${pkgname}1-${pkgver}
+ ./configure --prefix=/usr --disable-static
+ make
+ make check
+}
+
+package() {
+ cd ${srcdir}/${pkgname}1-${pkgver}
+ make DESTDIR=${pkgdir} install
+ install -m755 -d ${pkgdir}/usr/share/licenses/${pkgname}
+ install -m644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/
+}
diff --git a/extra/xmlto/PKGBUILD b/extra/xmlto/PKGBUILD
new file mode 100644
index 000000000..3df59ce7d
--- /dev/null
+++ b/extra/xmlto/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 67403 2010-02-06 18:09:00Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Jan de Groot <jgc@archlinux.org>
+# Contributor: Sergej Pupykin <sergej@aur.archlinux.org>
+# Contributor: Robert Stoffers <rob1@ubuntu.com>
+
+pkgname=xmlto
+pkgver=0.0.23
+pkgrel=1
+pkgdesc="Convert xml to many other formats"
+arch=('i686' 'x86_64')
+url="http://cyberelk.net/tim/software/xmlto/"
+license=('GPL')
+depends=('libxslt>=1.1.24' 'perl-yaml-syck' 'perl-test-pod')
+makedepends=('docbook-xsl')
+source=(https://fedorahosted.org/releases/x/m/${pkgname}/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('3001d6bb2bbc2c8f6c2301f05120f074')
+
+build() {
+ cd "$srcdir/${pkgname}-${pkgver}"
+
+ ./configure --prefix=/usr \
+ --mandir=/usr/share/man || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/extra/xmms/PKGBUILD b/extra/xmms/PKGBUILD
new file mode 100644
index 000000000..6b8eedd1f
--- /dev/null
+++ b/extra/xmms/PKGBUILD
@@ -0,0 +1,76 @@
+# $Id: PKGBUILD 95269 2010-10-18 00:20:50Z eric $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+
+pkgname=xmms
+pkgver=1.2.11
+pkgrel=3
+pkgdesc="The X MultiMedia System - a multimedia player"
+arch=('i686' 'x86_64')
+url="http://legacy.xmms2.org/"
+license=('GPL')
+depends=('gtk' 'libxxf86vm' 'libsm')
+makedepends=('mesa' 'libmikmod' 'libvorbis' 'esound' 'alsa-lib' 'libgl')
+optdepends=('libmikmod: for the MikMod input plugin' \
+ 'libvorbis: for the Ogg Vorbis input plugin' \
+ 'esound: for the esound output plugin' \
+ 'alsa-lib: for the alsa output plugin' \
+ 'libgl: for the OpenGL Spectrum analyser visualization plugin')
+options=('!libtool')
+source=(http://legacy.xmms2.org/${pkgname}-${pkgver}.tar.bz2 \
+ xmms-menu.patch xmms-1.2.10-crossfade-0.3.9.patch xmms-fix.diff \
+ xmms-1.2.11-CVE-2007-0653.0654.patch xmms-1.2.11-fix-http-title-mpg123.patch \
+ xmms-1.2.11-3dse.patch xmms-1.2.10-recode-id3.patch \
+ xmms-1.2.10-fonts.patch xmms.16.png xmms.32.png xmms.48.png)
+md5sums=('f3e6dbaf0b3f571a532ab575656be506' 'b7b6f1811bad8d14e4c4534240e45980'\
+ '4eb222111a82a2e1ebe63b5f6109133d' 'd7f9dc3712c486658149c4504f7478a7'\
+ 'e59e8c66f4e4077a8096ad98c77f0eb6' '25609a6b5b7632e4c8e6de927f8d70db'\
+ '2b534832b0dbb0d06dbcc829e2b702e6' 'd1715c291d35ee8854e5d926912e8b0d'\
+ '408ea5e28c4c4c221cf3c8ded76fd1f0' '3c328565c99c85d92ac0b9918805da46'\
+ '128406a02c07cd477dc901f2a658add5' 'd022280df4379383732a8a26abea1d08')
+sha1sums=('9d1eae4baab25fd35c9ddfb49321ca60222f672d' '27fb6e21bd6db923a425a8df8bd07a2a93867ddb'\
+ 'ff5c172752c8bee708d9a9ecd53864cc95a4bcc5' 'c227284955f2cc16f027dade670155c0f0fbc4ff'\
+ '4ef47c34b27b6c868d4301b7a078b257c8604471' '0c060385561ea2a4b1c7ad3bd35d3646ae9554f5'\
+ '6f6db13c780ba4cbddb8613f0abd2db2823f3021' '2a3b1bf17054b6bd8b1e5937de5c0ad49af8dc92'\
+ '31abd37c9c57bd13b2088eb11a1e54e5aa312bf3' '0089d11aa3bce67f3496592d68ee65837406e220'\
+ 'f24071ae484d9b55e61dba076801fa8e7976ff2f' '485c67cb8c8d4678bb3b0b280d2e233b14153b22')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+# Fix xmms.desktop
+ patch -p0 < ../xmms-menu.patch
+# Patch for hang with xmms-crossfade
+ patch -p1 < ../xmms-1.2.10-crossfade-0.3.9.patch
+# fix xmms not able to be shown double size,at least needed for x86_64
+ patch -p1 < ../xmms-fix.diff
+# Several patches from Mandriva
+ patch -p1 < ../xmms-1.2.11-fix-http-title-mpg123.patch
+ patch -p0 < ../xmms-1.2.10-recode-id3.patch
+ patch -p1 < ../xmms-1.2.11-3dse.patch
+ patch -p1 < ../xmms-1.2.10-fonts.patch
+ patch -p1 < ../xmms-1.2.11-CVE-2007-0653.0654.patch
+
+ if [ "$CARCH" == "x86_64" ]; then
+ SIMDOPT="--disable-simd"
+ else
+ SIMDOPT="--enable-simd"
+ fi
+ ./configure --prefix=/usr --mandir=/usr/share/man $SIMDOPT
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+
+ install -D -m644 xmms/xmms.desktop "${pkgdir}/usr/share/applications/xmms.desktop"
+ install -D -m644 xmms/xmms_mini.xpm "${pkgdir}/usr/share/pixmaps/xmms_mini.xpm"
+ install -D -m644 ../xmms.16.png "${pkgdir}/usr/share/pixmaps/xmms16.png"
+ install -D -m644 ../xmms.32.png "${pkgdir}/usr/share/pixmaps/xmms32.png"
+ install -D -m644 ../xmms.48.png "${pkgdir}/usr/share/pixmaps/xmms48.png"
+ ln -s /usr/share/pixmaps/xmms48.png "${pkgdir}/usr/share/pixmaps/xmms.png"
+
+ # don't want wmxmms
+ rm -rf "${pkgdir}/usr/bin/wmxmms" "${pkgdir}/usr/share/xmms"
+ rm -f "${pkgdir}"/usr/share/man/man1/{gnomexmms.1,wmxmms.1}
+}
diff --git a/extra/xmms/xmms-1.2.10-crossfade-0.3.9.patch b/extra/xmms/xmms-1.2.10-crossfade-0.3.9.patch
new file mode 100644
index 000000000..51c51671c
--- /dev/null
+++ b/extra/xmms/xmms-1.2.10-crossfade-0.3.9.patch
@@ -0,0 +1,101 @@
+diff -ur xmms-1.2.10/xmms/input.c xmms-1.2.10.patched/xmms/input.c
+--- xmms-1.2.10/xmms/input.c 2003-08-08 19:10:44.000000000 +0200
++++ xmms-1.2.10.patched/xmms/input.c 2005-11-25 00:12:36.000000000 +0100
+@@ -285,6 +285,14 @@
+ }
+ }
+
++gboolean input_stopped_for_restart = FALSE; /* crossfade */
++void input_stop_for_restart() /* crossfade */
++{
++ input_stopped_for_restart = TRUE;
++ input_stop();
++ input_stopped_for_restart = FALSE;
++}
++
+ void input_stop(void)
+ {
+ if (ip_data->playing && get_current_input_plugin())
+diff -ur xmms-1.2.10/xmms/input.h xmms-1.2.10.patched/xmms/input.h
+--- xmms-1.2.10/xmms/input.h 2000-02-16 22:05:57.000000000 +0100
++++ xmms-1.2.10.patched/xmms/input.h 2005-11-25 00:12:36.000000000 +0100
+@@ -34,6 +34,7 @@
+ gboolean input_check_file(gchar * filename);
+ void input_play(char *filename);
+ void input_stop(void);
++void input_stop_for_restart(void);
+ void input_pause(void);
+ int input_get_time(void);
+ void input_set_eq(int on, float preamp, float *bands);
+diff -ur xmms-1.2.10/xmms/main.c xmms-1.2.10.patched/xmms/main.c
+--- xmms-1.2.10/xmms/main.c 2004-02-23 21:31:43.000000000 +0100
++++ xmms-1.2.10.patched/xmms/main.c 2005-11-25 00:12:36.000000000 +0100
+@@ -881,8 +881,10 @@
+ mainwin_set_shade(!cfg.player_shaded);
+ }
+
++gboolean is_quitting = FALSE; /* crossfade */
+ void mainwin_quit_cb(void)
+ {
++ is_quitting = TRUE; /* crossfade */
+ input_stop();
+ gtk_widget_hide(equalizerwin);
+ gtk_widget_hide(playlistwin);
+@@ -1523,7 +1525,8 @@
+ int *pos;
+
+ if (get_input_playing())
+- input_stop();
++ input_stop_for_restart();
++
+ pos = gtk_clist_get_row_data(clist, GPOINTER_TO_INT(clist->selection->data));
+ playlist_set_position(*pos);
+ playlist_play();
+diff -ur xmms-1.2.10/xmms/playlist.c xmms-1.2.10.patched/xmms/playlist.c
+--- xmms-1.2.10/xmms/playlist.c 2004-02-23 21:31:43.000000000 +0100
++++ xmms-1.2.10.patched/xmms/playlist.c 2005-11-25 00:12:36.000000000 +0100
+@@ -124,7 +124,7 @@
+ if (get_input_playing())
+ {
+ PL_UNLOCK();
+- input_stop();
++ input_stop_for_restart();
+ PL_LOCK();
+ *restart_playing = TRUE;
+ }
+@@ -570,7 +570,7 @@
+ }
+
+ if (get_input_playing())
+- input_stop();
++ input_stop_for_restart();
+
+ vis_clear_data(mainwin_vis);
+ vis_clear_data(playlistwin_vis);
+@@ -668,7 +668,7 @@
+ {
+ /* We need to stop before changing playlist_position */
+ PL_UNLOCK();
+- input_stop();
++ input_stop_for_restart();
+ PL_LOCK();
+ restart_playing = TRUE;
+ }
+@@ -723,7 +723,7 @@
+ {
+ /* We need to stop before changing playlist_position */
+ PL_UNLOCK();
+- input_stop();
++ input_stop_for_restart();
+ PL_LOCK();
+ restart_playing = TRUE;
+ }
+@@ -852,7 +852,7 @@
+ {
+ /* We need to stop before changing playlist_position */
+ PL_UNLOCK();
+- input_stop();
++ input_stop_for_restart();
+ PL_LOCK();
+ restart_playing = TRUE;
+ }
diff --git a/extra/xmms/xmms-1.2.10-fonts.patch b/extra/xmms/xmms-1.2.10-fonts.patch
new file mode 100644
index 000000000..87cd9a8ee
--- /dev/null
+++ b/extra/xmms/xmms-1.2.10-fonts.patch
@@ -0,0 +1,24 @@
+--- xmms-1.2.10/xmms/main.c.fonts 2004-08-10 22:16:06.000000000 +0200
++++ xmms-1.2.10/xmms/main.c 2004-08-12 11:49:17.905598843 +0200
+@@ -351,7 +351,8 @@
+ cfg.no_playlist_advance = FALSE;
+ cfg.smooth_title_scroll = TRUE;
+ cfg.random_skin_on_play = FALSE;
+- cfg.mainwin_use_xfont = FALSE;
++ cfg.mainwin_use_xfont = TRUE;
++ cfg.use_fontsets = TRUE;
+ cfg.use_pl_metadata = TRUE;
+
+ cfg.playlist_x = 295;
+@@ -499,9 +500,9 @@
+ cfg.mainwin_font = NULL;
+ }
+ if (cfg.playlist_font == NULL)
+- cfg.playlist_font = g_strdup("-adobe-helvetica-bold-r-*-*-10-*");
++ cfg.playlist_font = g_strdup("-*-helvetica-bold-r-*-*-10-*,*");
+ if (cfg.mainwin_font == NULL)
+- cfg.mainwin_font = g_strdup("-adobe-helvetica-medium-r-*-*-8-*");
++ cfg.mainwin_font = g_strdup("-*-helvetica-medium-r-*-*-8-*,*");
+ if (cfg.gentitle_format == NULL)
+ cfg.gentitle_format = g_strdup("%p - %t");
+ if (cfg.outputplugin == NULL)
diff --git a/extra/xmms/xmms-1.2.10-recode-id3.patch b/extra/xmms/xmms-1.2.10-recode-id3.patch
new file mode 100644
index 000000000..6bd4ecf1c
--- /dev/null
+++ b/extra/xmms/xmms-1.2.10-recode-id3.patch
@@ -0,0 +1,11 @@
+--- xmms/playlist.c.orig 2005-03-05 17:26:11.685992552 +0200
++++ xmms/playlist.c 2005-03-05 17:28:01.524294592 +0200
+@@ -1341,7 +1341,7 @@
+
+ filename = g_strdup(entry->filename);
+
+- if (entry->title == NULL && entry->length == -1)
++ if (entry->title == NULL)
+ {
+ if (playlist_get_info_entry(entry)&&(entry->title)) {
+ title = xmms_charset_recode_id3(entry->title,0,NULL);
diff --git a/extra/xmms/xmms-1.2.11-3dse.patch b/extra/xmms/xmms-1.2.11-3dse.patch
new file mode 100644
index 000000000..099bf23b1
--- /dev/null
+++ b/extra/xmms/xmms-1.2.11-3dse.patch
@@ -0,0 +1,503 @@
+--- xmms-1.2.11/Output/OSS/OSS.h.3dse 2003-06-11 20:44:17.000000000 +0200
++++ xmms-1.2.11/Output/OSS/OSS.h 2007-11-18 20:51:57.000000000 +0100
+@@ -48,6 +48,11 @@
+ # define IS_BIG_ENDIAN FALSE
+ #endif
+
++#define AWE_3DSE 0x90
++#define MIXER_BASE_DEFAULT 0x220
++#define MIXER_REG_OFFSET 4
++#define MIXER_DATA_OFFSET 5
++
+ extern OutputPlugin op;
+
+ typedef struct
+@@ -59,6 +64,8 @@ typedef struct
+ gboolean use_master;
+ gboolean use_alt_audio_device, use_alt_mixer_device;
+ gchar *alt_audio_device, *alt_mixer_device;
++ gint stereo;
++ gboolean hardware_access;
+ }
+ OSSConfig;
+
+@@ -82,6 +89,12 @@ int oss_get_output_time(void);
+ int oss_get_written_time(void);
+ void oss_set_audio_params(void);
+
++int oss_set_3dse(int stat);
++int oss_get_3dse(void);
++void oss_hw_set_3dse(int stat);
++int oss_hw_get_3dse(void);
++int initHardwareAccess ();
++
+ void oss_free_convert_buffer(void);
+ int (*oss_get_convert_func(int output, int input))(void **, int);
+ int (*oss_get_stereo_convert_func(int output, int input))(void **, int, int);
+--- xmms-1.2.11/Output/OSS/configure.c.3dse 2005-05-15 02:01:20.000000000 +0200
++++ xmms-1.2.11/Output/OSS/configure.c 2007-11-18 20:51:57.000000000 +0100
+@@ -24,6 +24,10 @@ static GtkWidget *mixer_usemaster_check,
+ static GtkWidget *adevice_use_alt_check, *audio_alt_device_entry;
+ static GtkWidget *mdevice_use_alt_check, *mixer_alt_device_entry;
+ static gint audio_device, mixer_device;
++static GtkWidget *stereo_check_button, *stereo_frame, *stereo_box;
++static GtkWidget *stereo_label, *stereo_align_button, *stereo_align_label;
++static GtkWidget *save3dse_check_button, *stereo_table, *hw_check_button;
++
+
+ static void configure_win_ok_cb(GtkWidget * w, gpointer data)
+ {
+@@ -69,6 +73,8 @@ static void configure_win_ok_cb(GtkWidge
+ xmms_cfg_write_string(cfgfile, "OSS", "alt_audio_device", oss_cfg.alt_audio_device);
+ xmms_cfg_write_boolean(cfgfile, "OSS", "use_alt_mixer_device", oss_cfg.use_alt_mixer_device);
+ xmms_cfg_write_string(cfgfile, "OSS", "alt_mixer_device", oss_cfg.alt_mixer_device);
++ xmms_cfg_write_int(cfgfile, "OSS", "stereo", oss_cfg.stereo);
++ xmms_cfg_write_boolean(cfgfile, "OSS", "hardware", oss_cfg.hardware_access);
+ xmms_cfg_write_default_file(cfgfile);
+ xmms_cfg_free(cfgfile);
+
+@@ -85,6 +91,98 @@ static void configure_win_mixer_dev_cb(G
+ mixer_device = device;
+ }
+
++static void stereo_check_button_cb(GtkWidget * widget, gpointer data)
++{
++ if (GTK_TOGGLE_BUTTON(widget)->active)
++ {
++ if (oss_cfg.stereo != -1)
++ oss_cfg.stereo = 1;
++ if (oss_cfg.hardware_access)
++ oss_hw_set_3dse(1);
++ else
++ oss_set_3dse(1);
++ }
++ else
++ {
++ if (oss_cfg.stereo != -1)
++ oss_cfg.stereo = 0;
++ if (oss_cfg.hardware_access)
++ oss_hw_set_3dse(0);
++ else
++ oss_set_3dse(0);
++ }
++}
++
++static void save3dse_check_button_cb(GtkWidget * widget, gpointer data)
++{
++ if (GTK_TOGGLE_BUTTON(widget)->active)
++ {
++ if (GTK_TOGGLE_BUTTON(data)->active)
++ oss_cfg.stereo = 1;
++ else
++ oss_cfg.stereo = 0;
++ }
++ else
++ {
++ oss_cfg.stereo = -1;
++ }
++}
++
++void warning_dialog(void)
++{
++ GtkWidget *dialog_window, *button, *label;
++ dialog_window = gtk_dialog_new();
++ gtk_window_set_title(GTK_WINDOW(dialog_window),
++ "WARNING: DIRECT ACCESS");
++ gtk_window_set_policy(GTK_WINDOW(dialog_window), FALSE, FALSE, TRUE);
++ gtk_window_set_position(GTK_WINDOW(dialog_window), GTK_WIN_POS_MOUSE);
++ button = gtk_button_new_with_label("Dismiss");
++ gtk_signal_connect_object(GTK_OBJECT(button), "clicked",
++ GTK_SIGNAL_FUNC(gtk_widget_destroy), (gpointer)dialog_window);
++ gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog_window)->action_area),
++ button, TRUE, FALSE, 0);
++ gtk_widget_show(button);
++ label = gtk_label_new(
++ "Direct hardware access can cause damage to your sound card.\n"
++ "Only use this option when you are using OSS drivers that\n"
++ "doesn't support the SND_MIXER_3DSE ioctl.\n"
++ "USE THIS OPTION AT YOUR OWN RISK !!!\n"
++ "You can use the environment variable \"BLASTER\" to manual\n"
++ "set the port of the mixer of your sound card. Only use this\n"
++ "option when you really know the mixer address. The default\n"
++ "value is 0x220. Example:\n"
++ " BLASTER=M230 ; export BLASTER\n"
++ "SETTING THE WRONG BLASTER ENVIRONMENT CAN\n"
++ "CAUSE YOUR SYSTEM TO CRASH AND CAN CAUSE\n"
++ "PERMANENT DAMAGE !!!");
++ gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_LEFT);
++ gtk_misc_set_padding(GTK_MISC(label), 10, 10);
++ gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog_window)->vbox),
++ label, TRUE, TRUE, 0);
++ gtk_widget_show(label);
++ gtk_grab_add(dialog_window);
++ GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT);
++ gtk_widget_grab_default(button);
++ gtk_widget_show(dialog_window);
++}
++
++static void hw_check_button_cb(GtkWidget * widget, gpointer data)
++{
++ if (GTK_TOGGLE_BUTTON(widget)->active)
++ {
++ if (oss_cfg.hardware_access == 0)
++ warning_dialog();
++ oss_cfg.hardware_access = 1;
++ initHardwareAccess ();
++ gtk_widget_set_sensitive(stereo_check_button, TRUE);
++ gtk_widget_set_sensitive(save3dse_check_button, TRUE);
++ }
++ else
++ {
++ oss_cfg.hardware_access = 0;
++ }
++}
++
+ static void audio_device_toggled(GtkToggleButton * widget, gpointer data)
+ {
+ gboolean use_alt_audio_device = gtk_toggle_button_get_active(widget);
+@@ -148,10 +246,38 @@ static void scan_devices(gchar * type, G
+ }
+ else
+ {
+- item = gtk_menu_item_new_with_label(_("Default"));
+- gtk_signal_connect(GTK_OBJECT(item), "activate", sigfunc, (gpointer) 0);
+- gtk_widget_show(item);
+- gtk_menu_append(GTK_MENU(menu), item);
++#ifdef SOUND_MIXER_INFO
++ int i, fd;
++ gchar *dev_name;
++ mixer_info info;
++ for (i = 0; i < 10; i++) {
++ if (i)
++ dev_name = g_strdup_printf ("/dev/mixer%d", i);
++ else
++ dev_name = g_strdup_printf ("/dev/mixer");
++ if ((fd = open (dev_name, O_RDONLY)) != -1) {
++ if (ioctl (fd, SOUND_MIXER_INFO, &info) != -1) {
++ if (!index)
++ temp = g_strdup_printf ("Default (%s)", info.name);
++ else
++ temp = g_strdup_printf ("%s", info.name);
++ item = gtk_menu_item_new_with_label (temp);
++ g_free (temp);
++ gtk_signal_connect(GTK_OBJECT(item), "activate", sigfunc, (gpointer) index++);
++ gtk_widget_show(item);
++ gtk_menu_append(GTK_MENU(menu), item);
++ }
++ close(fd);
++ }
++ g_free(dev_name);
++ }
++#endif
++ if (!index) {
++ item = gtk_menu_item_new_with_label(_("Default"));
++ gtk_signal_connect(GTK_OBJECT(item), "activate", sigfunc, (gpointer) 0);
++ gtk_widget_show(item);
++ gtk_menu_append(GTK_MENU(menu), item);
++ }
+ }
+ gtk_option_menu_set_menu(GTK_OPTION_MENU(option_menu), menu);
+ }
+@@ -300,6 +426,69 @@ void oss_configure(void)
+ gtk_table_attach_defaults(GTK_TABLE(mixer_table), mixer_usemaster_check, 0, 1, 0, 1);
+ gtk_notebook_append_page(GTK_NOTEBOOK(notebook), mixer_frame, gtk_label_new(_("Mixer")));
+
++ stereo_frame = gtk_frame_new("3D Stereo Enhancement:");
++ gtk_container_set_border_width(GTK_CONTAINER(stereo_frame), 5);
++ gtk_widget_show(stereo_frame);
++ stereo_box = gtk_vbox_new(FALSE, 0);
++ gtk_widget_show(stereo_box);
++ stereo_table = gtk_table_new(3, 1, FALSE);
++ gtk_widget_show(stereo_table);
++ stereo_check_button = gtk_check_button_new_with_label("3D Stereo Enhancement");
++ gtk_signal_connect(GTK_OBJECT(stereo_check_button), "toggled",
++ GTK_SIGNAL_FUNC(stereo_check_button_cb), NULL);
++ save3dse_check_button = gtk_check_button_new_with_label("Save 3DSE setting");
++ gtk_signal_connect(GTK_OBJECT(save3dse_check_button), "toggled",
++ GTK_SIGNAL_FUNC(save3dse_check_button_cb), stereo_check_button);
++ hw_check_button = gtk_check_button_new_with_label("Direct hardware access");
++ gtk_signal_connect(GTK_OBJECT(hw_check_button), "toggled",
++ GTK_SIGNAL_FUNC(hw_check_button_cb), hw_check_button);
++ if (oss_cfg.stereo != -1)
++ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(save3dse_check_button), TRUE);
++ if (oss_cfg.hardware_access)
++ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(hw_check_button), TRUE);
++ if (getuid () != 0 || geteuid () != 0)
++ gtk_widget_set_sensitive(hw_check_button, FALSE);
++ switch(oss_get_3dse())
++ {
++ case 1:
++ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(stereo_check_button), TRUE);
++ case 0:
++ gtk_widget_set_sensitive(hw_check_button, FALSE);
++ oss_cfg.hardware_access = FALSE;
++ break;
++ case -1:
++ if (!oss_cfg.hardware_access)
++ {
++ gtk_widget_set_sensitive(stereo_check_button, FALSE);
++ gtk_widget_set_sensitive(save3dse_check_button, FALSE);
++ }
++ else
++ if(oss_hw_get_3dse())
++ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(stereo_check_button), TRUE);
++ break;
++ }
++ gtk_table_attach_defaults(GTK_TABLE(stereo_table), stereo_check_button, 0, 1, 0, 1);
++ gtk_widget_show(stereo_check_button);
++ gtk_table_attach_defaults(GTK_TABLE(stereo_table), save3dse_check_button, 0, 1, 1, 2);
++ gtk_widget_show(save3dse_check_button);
++ gtk_table_attach_defaults(GTK_TABLE(stereo_table), hw_check_button, 0, 1, 2, 3);
++ gtk_widget_show(hw_check_button);
++ stereo_align_button = gtk_alignment_new(0.2, 0.5, 0, 0);
++ gtk_container_add(GTK_CONTAINER(stereo_align_button), stereo_table);
++ gtk_widget_show(stereo_align_button);
++ stereo_label = gtk_label_new("Please note that not all sound cards support this feature.\n"
++ "Supported: SoundBlaster 16, ViBRA, AWE32/64.");
++ gtk_label_set_justify(GTK_LABEL(stereo_label), GTK_JUSTIFY_LEFT);
++ gtk_misc_set_padding(GTK_MISC(stereo_label), 5, 5);
++ gtk_widget_show(stereo_label);
++ stereo_align_label = gtk_alignment_new(0, 0, 0, 0);
++ gtk_container_add(GTK_CONTAINER(stereo_align_label), stereo_label);
++ gtk_widget_show(stereo_align_label);
++ gtk_box_pack_end(GTK_BOX(stereo_box), stereo_align_label, FALSE, FALSE, 0);
++ gtk_box_pack_end(GTK_BOX(stereo_box), stereo_align_button, TRUE, FALSE, 0);
++ gtk_container_add(GTK_CONTAINER(stereo_frame), stereo_box);
++ gtk_notebook_append_page(GTK_NOTEBOOK(notebook), stereo_frame, gtk_label_new("3DSE"));
++
+ bbox = gtk_hbutton_box_new();
+ gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END);
+ gtk_button_box_set_spacing(GTK_BUTTON_BOX(bbox), 5);
+@@ -317,4 +506,5 @@ void oss_configure(void)
+ gtk_box_pack_start(GTK_BOX(bbox), cancel, TRUE, TRUE, 0);
+
+ gtk_widget_show_all(configure_win);
++ gtk_notebook_set_page(GTK_NOTEBOOK(notebook), 0);
+ }
+--- xmms-1.2.11/Output/OSS/init.c.3dse 2001-03-08 06:49:47.000000000 +0100
++++ xmms-1.2.11/Output/OSS/init.c 2007-11-18 20:51:57.000000000 +0100
+@@ -33,6 +33,8 @@ void oss_init(void)
+ oss_cfg.use_alt_audio_device = FALSE;
+ oss_cfg.alt_audio_device = NULL;
+ oss_cfg.use_master=0;
++ oss_cfg.stereo = -1; /* = 3dse setting not saved */
++ oss_cfg.hardware_access = FALSE;
+
+ if ((cfgfile = xmms_cfg_open_default_file()))
+ {
+@@ -45,6 +47,32 @@ void oss_init(void)
+ xmms_cfg_read_string(cfgfile, "OSS", "alt_audio_device", &oss_cfg.alt_audio_device);
+ xmms_cfg_read_boolean(cfgfile, "OSS", "use_alt_mixer_device", &oss_cfg.use_alt_mixer_device);
+ xmms_cfg_read_string(cfgfile, "OSS", "alt_mixer_device", &oss_cfg.alt_mixer_device);
++ xmms_cfg_read_int(cfgfile, "OSS", "stereo", &oss_cfg.stereo);
++ xmms_cfg_read_boolean(cfgfile, "OSS", "hardware", &oss_cfg.hardware_access);
+ xmms_cfg_free(cfgfile);
+ }
++ if (oss_cfg.hardware_access)
++ if (initHardwareAccess() == -1)
++ oss_cfg.hardware_access = FALSE;
++
++ if (oss_cfg.hardware_access)
++ switch(oss_cfg.stereo)
++ {
++ case 0:
++ oss_hw_set_3dse(0);
++ break;
++ case 1:
++ oss_hw_set_3dse(1);
++ break;
++ }
++ else
++ switch(oss_cfg.stereo)
++ {
++ case 0:
++ oss_set_3dse(0);
++ break;
++ case 1:
++ oss_set_3dse(1);
++ break;
++ }
+ }
+--- xmms-1.2.11/Output/OSS/mixer.c.3dse 2001-06-16 15:30:35.000000000 +0200
++++ xmms-1.2.11/Output/OSS/mixer.c 2007-11-18 20:51:57.000000000 +0100
+@@ -32,6 +32,10 @@ static char* get_mixer_device(void)
+ return name;
+ }
+
++#include <sys/io.h>
++
++static int mixer_reg = 0, mixer_data = 0;
++
+ void oss_get_volume(int *l, int *r)
+ {
+ int fd, v, cmd, devs;
+@@ -64,6 +68,156 @@ void oss_get_volume(int *l, int *r)
+ }
+ }
+
++int oss_set_3dse(int stat)
++{
++ int fd;
++ gchar *devname;
++
++ if ((stat != 0) && (stat != 1))
++ return -1;
++
++ if (oss_cfg.mixer_device > 0)
++ devname = g_strdup_printf("/dev/mixer%d", oss_cfg.mixer_device);
++ else
++ devname = g_strdup("/dev/mixer");
++ fd = open(devname, O_RDONLY);
++ g_free(devname);
++
++ if (fd != -1)
++ {
++ if (ioctl(fd, SOUND_MIXER_3DSE, &stat) < 0)
++ {
++ close(fd);
++ return -1;
++ }
++ else
++ {
++ close(fd);
++ return stat;
++ }
++ }
++ return -1;
++}
++
++int oss_get_3dse(void)
++{
++ int fd, test_stat;
++ gchar *devname;
++
++ if (oss_cfg.mixer_device > 0)
++ devname = g_strdup_printf("/dev/mixer%d", oss_cfg.mixer_device);
++ else
++ devname = g_strdup("/dev/mixer");
++ fd = open(devname, O_RDONLY);
++ g_free(devname);
++
++ if (fd != -1)
++ {
++ test_stat = 2; /* code 2 will request status */
++ if (ioctl(fd, SOUND_MIXER_3DSE, &test_stat) < 0)
++ {
++ close(fd);
++ return -1;
++ }
++ else
++ {
++ close(fd);
++ return test_stat;
++ }
++ }
++ return -1;
++}
++
++static void check_legal_mixer ()
++{
++ if (!mixer_reg || !mixer_data)
++ {
++ fprintf(stderr, "Illegal mixer settings...\n");
++ exit(1);
++ }
++}
++
++void oss_hw_set_3dse(int stat)
++{
++ unsigned char b;
++ check_legal_mixer ();
++ switch(stat)
++ {
++ case 1:
++ outb(AWE_3DSE, mixer_reg);
++ b = inb(mixer_data);
++ b |= 1;
++ outb(b, mixer_data);
++ break;
++ case 0:
++ outb(AWE_3DSE, mixer_reg);
++ b = inb(mixer_data);
++ b &= 0xff - 1;
++ outb(b, mixer_data);
++ break;
++ }
++}
++
++int oss_hw_get_3dse(void)
++{
++ unsigned char b;
++ check_legal_mixer ();
++ outb(AWE_3DSE, mixer_reg);
++ b = inb(mixer_data);
++ return (b & 1);
++}
++
++int initHardwareAccess ()
++{
++ char *blasterEnv, *Aptr, *Mptr;
++ int tmp, mixer_base = 0;
++
++ if ((blasterEnv = getenv ("BLASTER")))
++ {
++ Aptr = blasterEnv;
++ while ((Aptr = strchr(Aptr, 'A')))
++ if ((tmp = strtol(++Aptr, &Aptr, 16)))
++ mixer_base = tmp;
++ Mptr = blasterEnv;
++ while ((Mptr = strchr(Mptr, 'M')))
++ if ((tmp = strtol(++Mptr, &Mptr, 16)))
++ mixer_base = tmp;
++ }
++ if (!mixer_base)
++ {
++ mixer_base = MIXER_BASE_DEFAULT;
++ }
++ else
++ {
++ switch (mixer_base)
++ {
++ case 0x210:
++ case 0x220:
++ case 0x230:
++ case 0x240:
++ case 0x250:
++ case 0x260:
++ case 0x280:
++ break;
++ default:
++ fprintf (stderr, "Illegal mixer base.\n");
++ exit (1);
++ }
++ }
++ mixer_reg = mixer_base + MIXER_REG_OFFSET;
++ mixer_data = mixer_base + MIXER_DATA_OFFSET;
++ if (getuid () == 0 && geteuid () == 0)
++ {
++ ioperm (mixer_reg, 1, 1);
++ ioperm (mixer_data, 1, 1);
++ return 0;
++ }
++ else
++ {
++ return -1;
++ }
++}
++
+ void oss_set_volume(int l, int r)
+ {
+ int fd, v, cmd, devs;
+--- xmms-1.2.11/Output/OSS/soundcard.h.3dse 2003-06-11 23:01:12.000000000 +0200
++++ xmms-1.2.11/Output/OSS/soundcard.h 2007-11-18 20:51:57.000000000 +0100
+@@ -1151,8 +1151,8 @@ typedef unsigned char mixer_record[128];
+ /*
+ * Two ioctls for special souncard function (OSS/Free only)
+ */
+-#define SOUND_MIXER_AGC _SIOWR('M', 103, int)
+-#define SOUND_MIXER_3DSE _SIOWR('M', 104, int)
++#define SOUND_MIXER_AGC __SIOWR('M', 103, int)
++#define SOUND_MIXER_3DSE __SIOWR('M', 104, int)
+ /*
+ * The SOUND_MIXER_PRIVATE# commands can be redefined by low level drivers.
+ * These features can be used when accessing device specific features.
diff --git a/extra/xmms/xmms-1.2.11-CVE-2007-0653.0654.patch b/extra/xmms/xmms-1.2.11-CVE-2007-0653.0654.patch
new file mode 100644
index 000000000..5fa977254
--- /dev/null
+++ b/extra/xmms/xmms-1.2.11-CVE-2007-0653.0654.patch
@@ -0,0 +1,43 @@
+--- xmms-1.2.11/xmms/bmp.c.CVE-2007-0653.0654 2006-07-16 15:40:04.000000000 +0200
++++ xmms-1.2.11/xmms/bmp.c 2007-11-18 21:23:11.000000000 +0100
+@@ -19,6 +19,12 @@
+ */
+ #include "xmms.h"
+
++#if HAVE_STDINT_H
++#include <stdint.h>
++#elif !defined(UINT32_MAX)
++#define UINT32_MAX 0xffffffffU
++#endif
++
+ struct rgb_quad
+ {
+ guchar rgbBlue;
+@@ -183,7 +189,7 @@ GdkPixmap *read_bmp(gchar * filename)
+ }
+ else if (bitcount != 24 && bitcount != 16 && bitcount != 32)
+ {
+- gint ncols, i;
++ guint32 ncols, i;
+
+ ncols = offset - headSize - 14;
+ if (headSize == 12)
+@@ -201,9 +207,17 @@ GdkPixmap *read_bmp(gchar * filename)
+ }
+ }
+ fseek(file, offset, SEEK_SET);
++ /* verify buffer size */
++ if (!h || !w ||
++ w > (((UINT32_MAX - 3) / 3) / h) ||
++ h > (((UINT32_MAX - 3) / 3) / w)) {
++ g_warning("read_bmp(): width(%u)*height(%u) too large", w, h);
++ fclose(file);
++ return NULL;
++ }
++ data = g_malloc0((w * 3 * h) + 3); /* +3 is just for safety */
+ buffer = g_malloc(imgsize);
+ fread(buffer, imgsize, 1, file);
+- data = g_malloc0((w * 3 * h) + 3); /* +3 is just for safety */
+
+ if (bitcount == 1)
+ read_1b_rgb(buffer, imgsize, data, w, h, rgb_quads);
diff --git a/extra/xmms/xmms-1.2.11-fix-http-title-mpg123.patch b/extra/xmms/xmms-1.2.11-fix-http-title-mpg123.patch
new file mode 100644
index 000000000..55c06a756
--- /dev/null
+++ b/extra/xmms/xmms-1.2.11-fix-http-title-mpg123.patch
@@ -0,0 +1,10 @@
+--- xmms-1.2.11/Input/mpg123/common.c~ 2007-11-18 20:37:41.000000000 +0100
++++ xmms-1.2.11/Input/mpg123/common.c 2007-11-18 20:40:10.000000000 +0100
+@@ -274,6 +274,7 @@ static gboolean read_id3v2_tag(unsigned
+ char *songname = mpg123_title;
+ mpg123_title =
+ mpg123_format_song_title(tag, mpg123_filename);
++ if (filept)
+ mpg123_ip.set_info(mpg123_title, mpg123_length,
+ mpg123_bitrate * 1000,
+ mpg123_frequency, mpg123_stereo);
diff --git a/extra/xmms/xmms-fix.diff b/extra/xmms/xmms-fix.diff
new file mode 100644
index 000000000..a810aa20c
--- /dev/null
+++ b/extra/xmms/xmms-fix.diff
@@ -0,0 +1,11 @@
+--- xmms-1.2.10+cvs20060429/xmms/util.c.orig 2006-11-05 12:29:59.000000000 +0800
++++ xmms-1.2.10+cvs20060429/xmms/util.c 2006-11-05 12:30:01.000000000 +0800
+@@ -175,7 +175,7 @@ GdkImage *create_dblsize_image(GdkImage
+ * This needs to be optimized
+ */
+
+- dblimg = gdk_image_new(GDK_IMAGE_NORMAL, gdk_visual_get_best(), img->width << 1, img->height << 1);
++ dblimg = gdk_image_new(GDK_IMAGE_NORMAL, gdk_visual_get_best_with_depth(img->depth), img->width << 1, img->height << 1);
+ if (dblimg->bpp == 1)
+ {
+ register guint8 *srcptr, *ptr, *ptr2, pix;
diff --git a/extra/xmms/xmms-menu.patch b/extra/xmms/xmms-menu.patch
new file mode 100644
index 000000000..39304f9fc
--- /dev/null
+++ b/extra/xmms/xmms-menu.patch
@@ -0,0 +1,35 @@
+--- xmms/xmms.desktop 2002-02-11 23:15:56.000000000 +0000
++++ xmms.desktop 2006-02-25 14:21:03.000000000 +0000
+@@ -1,21 +1,16 @@
+ [Desktop Entry]
+ Name=XMMS
+ Comment=X Multimedia System
+-comment[az]=X Multimedya Sistemi
+-comment[ca]=Sistema Multimèdia per a X
+-comment[cs]=Multimediální pøehrávaè
+-comment[es]=Sistema Multimedia para X
+-comment[gl]=Sistema Multimedia para X
+-comment[hr]=X Multimedijski Sustav
+-comment[nn]=X Multimedia-system
+-comment[pt_BR]=X Multimedia System
+-comment[ro]=X MultiMedia Sistem
+-comment[th]=ÃкºÁÑŵÔÁÕà´Õº¹ X
+-comment[tr]=X Multimedya Sistem
+-comment[zh_TW]=X ¦h´CÅé¨t²Î
+-Encoding=Legacy-Mixed
++Comment[es]=Sistema Multimedia para X
++Comment[gl]=Sistema Multimedia para X
++Comment[hr]=X Multimedijski Sustav
++Comment[pt_BR]=X Multimedia System
++Comment[ro]=X MultiMedia Sistem
++Comment[tr]=X Multimedya Sistem
++Encoding=UTF-8
+ Exec=xmms
+-Icon=xmms_mini.xpm
+-MimeType=audio/x-scpls;audio/x-mpegurl;audio/mpegurl;audio/mp3;audio/x-mp3;audio/mpeg;audio/x-mpeg;audio/x-wav;application/x-ogg
+-Terminal=0
++Icon=xmms
+ Type=Application
++Categories=Application;AudioVideo;
++MimeType=audio/x-scpls;audio/x-mpegurl;audio/mpegurl;audio/mp3;audio/x-mp3;audio/mpeg;audio/x-mpeg;audio/x-wav;application/x-ogg
++Terminal=false
diff --git a/extra/xmms/xmms.16.png b/extra/xmms/xmms.16.png
new file mode 100644
index 000000000..c7f1a768b
--- /dev/null
+++ b/extra/xmms/xmms.16.png
Binary files differ
diff --git a/extra/xmms/xmms.32.png b/extra/xmms/xmms.32.png
new file mode 100644
index 000000000..1800ea571
--- /dev/null
+++ b/extra/xmms/xmms.32.png
Binary files differ
diff --git a/extra/xmms/xmms.48.png b/extra/xmms/xmms.48.png
new file mode 100644
index 000000000..999cb831a
--- /dev/null
+++ b/extra/xmms/xmms.48.png
Binary files differ
diff --git a/extra/xorg-appres/PKGBUILD b/extra/xorg-appres/PKGBUILD
new file mode 100644
index 000000000..cc1583a0b
--- /dev/null
+++ b/extra/xorg-appres/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 113951 2011-03-10 22:00:42Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xorg-appres
+pkgver=1.0.3
+pkgrel=2
+pkgdesc="List X application resource database"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libxt')
+makedepends=('xorg-util-macros')
+conflicts=('xorg-res-utils')
+source=(http://xorg.freedesktop.org/archive/individual/app/appres-${pkgver}.tar.bz2)
+sha1sums=('7303f12fae8cce92da2dbd88c9d31d816dc5da06')
+
+build() {
+ cd "${srcdir}/appres-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xorg-bdftopcf/PKGBUILD b/extra/xorg-bdftopcf/PKGBUILD
new file mode 100644
index 000000000..0a6a35221
--- /dev/null
+++ b/extra/xorg-bdftopcf/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 113655 2011-03-10 14:27:34Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xorg-bdftopcf
+pkgver=1.0.3
+pkgrel=1
+pkgdesc="Convert X font from Bitmap Distribution Format to Portable Compiled Format"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libxfont')
+makedepends=('xorg-util-macros' 'xproto')
+groups=('xorg' 'xorg-apps')
+source=(http://xorg.freedesktop.org/archive/individual/app/bdftopcf-${pkgver}.tar.bz2)
+sha1sums=('146b4ece2867479045c3b4593b22c9f1d21da14a')
+
+build() {
+ cd "${srcdir}/bdftopcf-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xorg-font-util/PKGBUILD b/extra/xorg-font-util/PKGBUILD
new file mode 100644
index 000000000..d23ec52bc
--- /dev/null
+++ b/extra/xorg-font-util/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xorg-font-util
+pkgver=1.2.0
+pkgrel=1
+pkgdesc="X.Org font utilities"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+makedepends=('xorg-util-macros')
+replaces=('font-util')
+provides=('font-util')
+conflicts=('font-util')
+groups=('xorg-fonts' 'xorg')
+source=(${url}/releases/individual/font/font-util-${pkgver}.tar.bz2)
+sha1sums=('011fa9c8fe08d9f6f848df570374ed1cb7488146')
+
+build() {
+ cd "${srcdir}/font-util-${pkgver}"
+ ./configure --prefix=/usr --mandir=/usr/share/man \
+ --with-mapdir=/usr/share/fonts/util --with-fontrootdir=/usr/share/fonts
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xorg-iceauth/PKGBUILD b/extra/xorg-iceauth/PKGBUILD
new file mode 100644
index 000000000..47d56dc44
--- /dev/null
+++ b/extra/xorg-iceauth/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 113660 2011-03-10 14:29:50Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xorg-iceauth
+pkgver=1.0.4
+pkgrel=2
+pkgdesc="ICE authority file utility"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libice')
+makedepends=('xorg-util-macros' 'xproto')
+groups=('xorg-apps' 'xorg')
+source=(http://xorg.freedesktop.org/archive/individual/app/iceauth-${pkgver}.tar.bz2)
+sha1sums=('9b446c0d1815dce48bdea32db7dea7e429f6a310')
+
+build() {
+ cd "${srcdir}/iceauth-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xorg-luit/PKGBUILD b/extra/xorg-luit/PKGBUILD
new file mode 100644
index 000000000..48b3446d8
--- /dev/null
+++ b/extra/xorg-luit/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 113665 2011-03-10 14:31:25Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xorg-luit
+pkgver=1.1.0
+pkgrel=2
+pkgdesc="Filter that can be run between an arbitrary application and
+a UTF-8 terminal emulator"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libfontenc')
+groups=('xorg' 'xorg-apps')
+makedepends=('xorg-util-macros')
+source=(http://xorg.freedesktop.org/archive/individual/app/luit-${pkgver}.tar.bz2)
+sha1sums=('fa974b417f6b65c241398d8d011207c6facb0766')
+
+build() {
+ cd "${srcdir}/luit-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xorg-mkfontscale/PKGBUILD b/extra/xorg-mkfontscale/PKGBUILD
new file mode 100644
index 000000000..b7eee43a6
--- /dev/null
+++ b/extra/xorg-mkfontscale/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 113678 2011-03-10 14:41:30Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xorg-mkfontscale
+pkgver=1.0.8
+pkgrel=1
+pkgdesc="Create an index of scalable font files for X"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('freetype2' 'libfontenc')
+makedepends=('xorg-util-macros' 'xproto')
+groups=('xorg-apps' 'xorg')
+source=(http://xorg.freedesktop.org/archive/individual/app/mkfontscale-${pkgver}.tar.bz2)
+sha1sums=('accfb12751bf3b7ae7b28c1b0b863d5be871398f')
+
+build() {
+ cd "${srcdir}/mkfontscale-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xorg-oclock/PKGBUILD b/extra/xorg-oclock/PKGBUILD
new file mode 100644
index 000000000..5016247f2
--- /dev/null
+++ b/extra/xorg-oclock/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xorg-oclock
+pkgver=1.0.2
+pkgrel=1
+pkgdesc="Round X clock"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libx11' 'libxmu' 'libxext')
+makedepends=('xorg-util-macros')
+source=(http://xorg.freedesktop.org/archive/individual/app/oclock-${pkgver}.tar.bz2)
+sha1sums=('ba606d39fba6021c4db76d79751779f7b5c862e9')
+
+build() {
+ cd "${srcdir}/oclock-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xorg-server/10-quirks.conf b/extra/xorg-server/10-quirks.conf
new file mode 100644
index 000000000..7afad22dc
--- /dev/null
+++ b/extra/xorg-server/10-quirks.conf
@@ -0,0 +1,10 @@
+# Collection of quirks and blacklist/whitelists for specific devices.
+
+
+# Accelerometer device, posts data through ABS_X/ABS_Y, making X unusable
+# http://bugs.freedesktop.org/show_bug.cgi?id=22442
+Section "InputClass"
+ Identifier "ThinkPad HDAPS accelerometer blacklist"
+ MatchProduct "ThinkPad HDAPS accelerometer data"
+ Option "Ignore" "on"
+EndSection
diff --git a/extra/xorg-server/PKGBUILD b/extra/xorg-server/PKGBUILD
new file mode 100644
index 000000000..20913828a
--- /dev/null
+++ b/extra/xorg-server/PKGBUILD
@@ -0,0 +1,181 @@
+# $Id: PKGBUILD 114590 2011-03-14 10:49:00Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgbase=xorg-server
+pkgname=('xorg-server' 'xorg-server-xephyr' 'xorg-server-xdmx' 'xorg-server-xvfb' 'xorg-server-xnest' 'xorg-server-common' 'xorg-server-devel')
+pkgver=1.9.4.901
+pkgrel=1
+arch=('i686' 'x86_64')
+license=('custom')
+url="http://xorg.freedesktop.org"
+makedepends=('pixman' 'libx11' 'mesa' 'libgl' 'xf86driproto' 'xcmiscproto' 'xtrans' 'bigreqsproto' 'randrproto' 'inputproto' 'fontsproto' 'videoproto' 'compositeproto' 'recordproto' 'scrnsaverproto' 'resourceproto' 'xineramaproto' 'libxkbfile' 'libxfont' 'renderproto' 'libpciaccess' 'libxv' 'xf86dgaproto' 'libxmu' 'libxrender' 'libxi' 'dmxproto' 'libxaw' 'libdmx' 'libxtst' 'libxres' 'xorg-xkbcomp')
+options=('!libtool')
+source=(${url}/releases/individual/xserver/${pkgbase}-${pkgver}.tar.bz2
+ vbe-fix-malloc-size-bug.patch
+ xorg-redhat-die-ugly-pattern-die-die-die.patch
+ xvfb-run
+ xvfb-run.1
+ 10-quirks.conf)
+md5sums=('0fde9023db0581e9b145b4cd0784a3c5'
+ 'c22e6ec412769b1c30c44b1f45b50e02'
+ '1a336eb22e27cbf443ec5a2ecddfa93c'
+ '52fd3effd80d7bc6c1660d4ecf23d31c'
+ '376c70308715cd2643f7bff936d9934b'
+ 'd4f7dfc6be4ef4e2c6dd7632a9d88abe')
+
+build() {
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+
+ patch -Np1 -i "${srcdir}/vbe-fix-malloc-size-bug.patch"
+
+ # Get rid of the ugly pattern
+ patch -Np3 -i "${srcdir}/xorg-redhat-die-ugly-pattern-die-die-die.patch"
+
+ ./configure --prefix=/usr \
+ --enable-ipv6 \
+ --enable-dri \
+ --enable-dmx \
+ --enable-xvfb \
+ --enable-xnest \
+ --enable-composite \
+ --enable-xcsecurity \
+ --enable-xorg \
+ --enable-xephyr \
+ --enable-glx-tls \
+ --enable-kdrive \
+ --enable-install-setuid \
+ --enable-config-udev \
+ --disable-config-dbus \
+ --enable-record \
+ --disable-xfbdev \
+ --disable-xfake \
+ --disable-static \
+ --sysconfdir=/etc/X11 \
+ --localstatedir=/var \
+ --with-xkb-path=/usr/share/X11/xkb \
+ --with-xkb-output=/var/lib/xkb \
+ --with-dri-driver-path=/usr/lib/xorg/modules/dri \
+ --with-fontrootdir=/usr/share/fonts
+ make
+
+ sed -e 's/^DMX_SUBDIRS =.*/DMX_SUBDIRS =/' \
+ -e 's/^XVFB_SUBDIRS =.*/XVFB_SUBDIRS =/' \
+ -e 's/^XNEST_SUBDIRS =.*/XNEST_SUBDIRS = /' \
+ -e 's/^KDRIVE_SUBDIRS =.*/KDRIVE_SUBDIRS =/' \
+ -i hw/Makefile
+}
+
+package_xorg-server-common() {
+ pkgdesc="Xorg server common files"
+ depends=('xkeyboard-config' 'xorg-xkbcomp' 'xorg-setxkbmap' 'xorg-fonts-misc')
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ install -m755 -d "${pkgdir}/usr/share/licenses/xorg-server-common"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/xorg-server-common"
+
+ make -C xkb DESTDIR="${pkgdir}" install-data
+
+ install -m755 -d "${pkgdir}/usr/share/man/man1"
+ install -m644 doc/Xserver.1 "${pkgdir}/usr/share/man/man1/"
+
+ install -m755 -d "${pkgdir}/usr/lib/xorg"
+ install -m644 dix/protocol.txt "${pkgdir}/usr/lib/xorg/"
+}
+
+package_xorg-server() {
+ pkgdesc="Xorg X server"
+ depends=(libxdmcp libxfont udev libpciaccess libdrm pixman libgcrypt libxau xorg-server-common xf86-input-evdev)
+ backup=('etc/X11/xorg.conf.d/10-evdev.conf' 'etc/X11/xorg.conf.d/10-quirks.conf')
+ provides=('x-server')
+ groups=('xorg')
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+
+ install -m755 -d "${pkgdir}/etc/X11"
+ mv "${pkgdir}/usr/share/X11/xorg.conf.d" "${pkgdir}/etc/X11/"
+ install -m644 "${srcdir}/10-quirks.conf" "${pkgdir}/etc/X11/xorg.conf.d/"
+
+ rmdir "${pkgdir}/usr/share/X11"
+
+ # Needed for non-mesa drivers, libgl will restore it
+ mv "${pkgdir}/usr/lib/xorg/modules/extensions/libglx.so" \
+ "${pkgdir}/usr/lib/xorg/modules/extensions/libglx.xorg"
+
+ rm -rf "${pkgdir}/var"
+
+ rm -f "${pkgdir}/usr/share/man/man1/Xserver.1"
+ rm -f "${pkgdir}/usr/lib/xorg/protocol.txt"
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/xorg-server"
+ ln -sf ../xorg-server-common/COPYING "${pkgdir}/usr/share/licenses/xorg-server/COPYING"
+
+ rm -rf "${pkgdir}/usr/lib/pkgconfig"
+ rm -rf "${pkgdir}/usr/include"
+ rm -rf "${pkgdir}/usr/share/aclocal"
+}
+
+package_xorg-server-xephyr() {
+ pkgdesc="A nested X server that runs as an X application"
+ depends=(libxfont libgl libgcrypt libxv pixman xorg-server-common)
+
+ cd "${srcdir}/${pkgbase}-${pkgver}/hw/kdrive"
+ make DESTDIR="${pkgdir}" install
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/xorg-server-xephyr"
+ ln -sf ../xorg-server-common/COPYING "${pkgdir}/usr/share/licenses/xorg-server-xephyr/COPYING"
+}
+
+package_xorg-server-xvfb() {
+ pkgdesc="Virtual framebuffer X server"
+ depends=(libxfont libxdmcp libxau libgcrypt pixman xorg-server-common)
+
+ cd "${srcdir}/${pkgbase}-${pkgver}/hw/vfb"
+ make DESTDIR="${pkgdir}" install
+
+ install -m755 "${srcdir}/xvfb-run" "${pkgdir}/usr/bin/"
+ install -m644 "${srcdir}/xvfb-run.1" "${pkgdir}/usr/share/man/man1/"
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/xorg-server-xvfb"
+ ln -sf ../xorg-server-common/COPYING "${pkgdir}/usr/share/licenses/xorg-server-xvfb/COPYING"
+}
+
+package_xorg-server-xnest() {
+ pkgdesc="A nested X server that runs as an X application"
+ depends=(libxfont libxext libgcrypt pixman xorg-server-common)
+
+ cd "${srcdir}/${pkgbase}-${pkgver}/hw/xnest"
+ make DESTDIR="${pkgdir}" install
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/xorg-server-xnest"
+ ln -sf ../xorg-server-common/COPYING "${pkgdir}/usr/share/licenses/xorg-server-xnest/COPYING"
+}
+
+package_xorg-server-xdmx() {
+ pkgdesc="Distributed Multihead X Server and utilities"
+ depends=(libxfont libxi libgcrypt libxaw libxrender libdmx libxfixes pixman xorg-server-common)
+
+ cd "${srcdir}/${pkgbase}-${pkgver}/hw/dmx"
+ make DESTDIR="${pkgdir}" install
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/xorg-server-xdmx"
+ ln -sf ../xorg-server-common/COPYING "${pkgdir}/usr/share/licenses/xorg-server-xdmx/COPYING"
+}
+
+package_xorg-server-devel() {
+ pkgdesc="Development files for the X.Org X server"
+ depends=(xproto randrproto renderproto xextproto inputproto kbproto fontsproto videoproto dri2proto xineramaproto xorg-util-macros pixman libpciaccess)
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+
+ rm -rf "${pkgdir}/usr/bin"
+ rm -rf "${pkgdir}/usr/share/man"
+ rm -rf "${pkgdir}/usr/share/doc"
+ rm -rf "${pkgdir}/usr/share/X11"
+ rm -rf "${pkgdir}/usr/lib/xorg"
+ rm -rf "${pkgdir}/var"
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/xorg-server-devel"
+ ln -sf ../xorg-server-common/COPYING "${pkgdir}/usr/share/licenses/xorg-server-devel/COPYING"
+}
diff --git a/extra/xorg-server/vbe-fix-malloc-size-bug.patch b/extra/xorg-server/vbe-fix-malloc-size-bug.patch
new file mode 100644
index 000000000..01ed040d4
--- /dev/null
+++ b/extra/xorg-server/vbe-fix-malloc-size-bug.patch
@@ -0,0 +1,39 @@
+From 8ffaef2ebd2611e2eed4ef97350c3a34508f5252 Mon Sep 17 00:00:00 2001
+From: Adam Jackson <ajax@redhat.com>
+Date: Thu, 24 Feb 2011 21:06:34 +0000
+Subject: vbe: Fix malloc size bug
+
+v2: Slightly more obvious sizing math.
+
+==14882== Invalid write of size 2
+==14882== at 0x6750267: VBEGetVBEInfo (vbe.c:400)
+==14882== by 0x6142064: ??? (in /usr/lib64/xorg/modules/drivers/vesa_drv.so)
+==14882== by 0x471895: InitOutput (xf86Init.c:519)
+==14882== by 0x422778: main (main.c:205)
+==14882== Address 0x4f32fa8 is 72 bytes inside a block of size 73 alloc'd
+==14882== at 0x4A0640D: malloc (vg_replace_malloc.c:236)
+==14882== by 0x675024B: VBEGetVBEInfo (vbe.c:398)
+==14882== by 0x6142064: ??? (in /usr/lib64/xorg/modules/drivers/vesa_drv.so)
+==14882== by 0x471895: InitOutput (xf86Init.c:519)
+==14882== by 0x422778: main (main.c:205)
+
+Reviewed-by: Mark Kettenis <kettenis@openbsd.org>
+Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+Signed-off-by: Adam Jackson <ajax@redhat.com>
+(cherry picked from commit d8caa782009abf4dc17b945e325e83fda299a534)
+---
+diff --git a/hw/xfree86/vbe/vbe.c b/hw/xfree86/vbe/vbe.c
+index 7a64a4a..1d3775b 100644
+--- a/hw/xfree86/vbe/vbe.c
++++ b/hw/xfree86/vbe/vbe.c
+@@ -395,7 +395,7 @@ VBEGetVBEInfo(vbeInfoPtr pVbe)
+ i = 0;
+ while (modes[i] != 0xffff)
+ i++;
+- block->VideoModePtr = malloc(sizeof(CARD16) * i + 1);
++ block->VideoModePtr = malloc(sizeof(CARD16) * (i + 1));
+ memcpy(block->VideoModePtr, modes, sizeof(CARD16) * i);
+ block->VideoModePtr[i] = 0xffff;
+
+--
+cgit v0.8.3-6-g21f6
diff --git a/extra/xorg-server/xorg-redhat-die-ugly-pattern-die-die-die.patch b/extra/xorg-server/xorg-redhat-die-ugly-pattern-die-die-die.patch
new file mode 100644
index 000000000..4e782f1c6
--- /dev/null
+++ b/extra/xorg-server/xorg-redhat-die-ugly-pattern-die-die-die.patch
@@ -0,0 +1,16 @@
+Remove the default root window grey stipple pattern, replacing it with
+blackness.
+
+--- xc/programs/Xserver/dix/window.c.die-ugly-pattern-die-die-die Tue Feb 12 16:33:04 2002
++++ xc/programs/Xserver/dix/window.c Tue Feb 12 16:45:32 2002
+@@ -119,8 +119,8 @@
+ *
+ ******/
+
+-static unsigned char _back_lsb[4] = {0x88, 0x22, 0x44, 0x11};
+-static unsigned char _back_msb[4] = {0x11, 0x44, 0x22, 0x88};
++static unsigned char _back_lsb[4] = {0x00, 0x00, 0x00, 0x00};
++static unsigned char _back_msb[4] = {0x00, 0x00, 0x00, 0x00};
+
+ int screenIsSaved = SCREEN_SAVER_OFF;
+
diff --git a/extra/xorg-server/xvfb-run b/extra/xorg-server/xvfb-run
new file mode 100644
index 000000000..4c2f4e0d3
--- /dev/null
+++ b/extra/xorg-server/xvfb-run
@@ -0,0 +1,180 @@
+#!/bin/sh
+
+# $Id: xvfb-run 2027 2004-11-16 14:54:16Z branden $
+
+# This script starts an instance of Xvfb, the "fake" X server, runs a command
+# with that server available, and kills the X server when done. The return
+# value of the command becomes the return value of this script.
+#
+# If anyone is using this to build a Debian package, make sure the package
+# Build-Depends on xvfb, xbase-clients, and xfonts-base.
+
+set -e
+
+PROGNAME=xvfb-run
+SERVERNUM=99
+AUTHFILE=
+ERRORFILE=/dev/null
+STARTWAIT=3
+XVFBARGS="-screen 0 640x480x8"
+LISTENTCP="-nolisten tcp"
+XAUTHPROTO=.
+
+# Query the terminal to establish a default number of columns to use for
+# displaying messages to the user. This is used only as a fallback in the event
+# the COLUMNS variable is not set. ($COLUMNS can react to SIGWINCH while the
+# script is running, and this cannot, only being calculated once.)
+DEFCOLUMNS=$(stty size 2>/dev/null | awk '{print $2}') || true
+if ! expr "$DEFCOLUMNS" : "[[:digit:]]\+$" >/dev/null 2>&1; then
+ DEFCOLUMNS=80
+fi
+
+# Display a message, wrapping lines at the terminal width.
+message () {
+ echo "$PROGNAME: $*" | fmt -t -w ${COLUMNS:-$DEFCOLUMNS}
+}
+
+# Display an error message.
+error () {
+ message "error: $*" >&2
+}
+
+# Display a usage message.
+usage () {
+ if [ -n "$*" ]; then
+ message "usage error: $*"
+ fi
+ cat <<EOF
+Usage: $PROGNAME [OPTION ...] COMMAND
+Run COMMAND (usually an X client) in a virtual X server environment.
+Options:
+-a --auto-servernum try to get a free server number, starting at
+ --server-num
+-e FILE --error-file=FILE file used to store xauth errors and Xvfb
+ output (default: $ERRORFILE)
+-f FILE --auth-file=FILE file used to store auth cookie
+ (default: ./.Xauthority)
+-h --help display this usage message and exit
+-n NUM --server-num=NUM server number to use (default: $SERVERNUM)
+-l --listen-tcp enable TCP port listening in the X server
+-p PROTO --xauth-protocol=PROTO X authority protocol name to use
+ (default: xauth command's default)
+-s ARGS --server-args=ARGS arguments (other than server number and
+ "-nolisten tcp") to pass to the Xvfb server
+ (default: "$XVFBARGS")
+-w DELAY --wait=DELAY delay in seconds to wait for Xvfb to start
+ before running COMMAND (default: $STARTWAIT)
+EOF
+}
+
+# Find a free server number by looking at .X*-lock files in /tmp.
+find_free_servernum() {
+ # Sadly, the "local" keyword is not POSIX. Leave the next line commented in
+ # the hope Debian Policy eventually changes to allow it in /bin/sh scripts
+ # anyway.
+ #local i
+
+ i=$SERVERNUM
+ while [ -f /tmp/.X$i-lock ]; do
+ i=$(($i + 1))
+ done
+ echo $i
+}
+
+# Clean up files
+clean_up() {
+ if [ -e "$AUTHFILE" ]; then
+ XAUTHORITY=$AUTHFILE xauth remove ":$SERVERNUM" >>"$ERRORFILE" 2>&1
+ fi
+ if [ -n "$XVFB_RUN_TMPDIR" ]; then
+ if ! rm -r "$XVFB_RUN_TMPDIR"; then
+ error "problem while cleaning up temporary directory"
+ exit 5
+ fi
+ fi
+}
+
+# Parse the command line.
+ARGS=$(getopt --options +ae:f:hn:lp:s:w: \
+ --long auto-servernum,error-file:,auth-file:,help,server-num:,listen-tcp,xauth-protocol:,server-args:,wait: \
+ --name "$PROGNAME" -- "$@")
+GETOPT_STATUS=$?
+
+if [ $GETOPT_STATUS -ne 0 ]; then
+ error "internal error; getopt exited with status $GETOPT_STATUS"
+ exit 6
+fi
+
+eval set -- "$ARGS"
+
+while :; do
+ case "$1" in
+ -a|--auto-servernum) SERVERNUM=$(find_free_servernum) ;;
+ -e|--error-file) ERRORFILE="$2"; shift ;;
+ -f|--auth-file) AUTHFILE="$2"; shift ;;
+ -h|--help) SHOWHELP="yes" ;;
+ -n|--server-num) SERVERNUM="$2"; shift ;;
+ -l|--listen-tcp) LISTENTCP="" ;;
+ -p|--xauth-protocol) XAUTHPROTO="$2"; shift ;;
+ -s|--server-args) XVFBARGS="$2"; shift ;;
+ -w|--wait) STARTWAIT="$2"; shift ;;
+ --) shift; break ;;
+ *) error "internal error; getopt permitted \"$1\" unexpectedly"
+ exit 6
+ ;;
+ esac
+ shift
+done
+
+if [ "$SHOWHELP" ]; then
+ usage
+ exit 0
+fi
+
+if [ -z "$*" ]; then
+ usage "need a command to run" >&2
+ exit 2
+fi
+
+if ! which xauth >/dev/null; then
+ error "xauth command not found"
+ exit 3
+fi
+
+# tidy up after ourselves
+trap clean_up EXIT
+
+# If the user did not specify an X authorization file to use, set up a temporary
+# directory to house one.
+if [ -z "$AUTHFILE" ]; then
+ XVFB_RUN_TMPDIR="$(mktemp -d -t $PROGNAME.XXXXXX)"
+ AUTHFILE="$XVFB_RUN_TMPDIR/Xauthority"
+fi
+
+# Start Xvfb.
+MCOOKIE=$(mcookie)
+XAUTHORITY=$AUTHFILE xauth source - << EOF >>"$ERRORFILE" 2>&1
+add :$SERVERNUM $XAUTHPROTO $MCOOKIE
+EOF
+XAUTHORITY=$AUTHFILE Xvfb ":$SERVERNUM" $XVFBARGS $LISTENTCP >>"$ERRORFILE" \
+ 2>&1 &
+XVFBPID=$!
+sleep "$STARTWAIT"
+if ! kill -0 $XVFBPID 2>/dev/null; then
+ echo "Xvfb failed to start" >&2
+ exit 1
+fi
+
+# Start the command and save its exit status.
+set +e
+DISPLAY=:$SERVERNUM XAUTHORITY=$AUTHFILE "$@" 2>&1
+RETVAL=$?
+set -e
+
+# Kill Xvfb now that the command has exited.
+kill $XVFBPID
+
+# Return the executed command's exit status.
+exit $RETVAL
+
+# vim:set ai et sts=4 sw=4 tw=80:
diff --git a/extra/xorg-server/xvfb-run.1 b/extra/xorg-server/xvfb-run.1
new file mode 100644
index 000000000..137d3a196
--- /dev/null
+++ b/extra/xorg-server/xvfb-run.1
@@ -0,0 +1,282 @@
+.\" $Id: xvfb-run.1 2138 2005-01-17 23:40:27Z branden $
+.\"
+.\" Copyright 1998-2004 Branden Robinson <branden@debian.org>.
+.\"
+.\" This is free software; you may redistribute it and/or modify
+.\" it under the terms of the GNU General Public License as
+.\" published by the Free Software Foundation; either version 2,
+.\" or (at your option) any later version.
+.\"
+.\" This is distributed in the hope that it will be useful, but
+.\" WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public License with
+.\" the Debian operating system, in /usr/share/common-licenses/GPL; if
+.\" not, write to the Free Software Foundation, Inc., 59 Temple Place,
+.\" Suite 330, Boston, MA 02111-1307 USA
+.\"
+.\" We need the URL macro from groff's www macro package, but also want
+.\" things to work all right for people who don't have it. So we define
+.\" our own URL macro and let the www macro package override it if it's
+.\" available.
+.de URL
+\\$2 \(laURL: \\$1 \(ra\\$3
+..
+.if \n[.g] .mso www.tmac
+.TH xvfb\-run 1 "2004\-11\-12" "Debian Project"
+.SH NAME
+xvfb\-run \- run specified X client or command in a virtual X server environment
+.SH SYNOPSIS
+.B xvfb\-run
+[
+.I options
+]
+.I command
+.SH DESCRIPTION
+.B xvfb\-run
+is a wrapper for the
+.BR Xvfb (1x)
+command which simplifies the task of running commands (typically an X
+client, or a script containing a list of clients to be run) within a virtual
+X server environment.
+.PP
+.B xvfb\-run
+sets up an X authority file (or uses an existing user\-specified one),
+writes a cookie to it (see
+.BR xauth (1x))
+and then starts the
+.B Xvfb
+X server as a background process.
+The process ID of
+.B Xvfb
+is stored for later use.
+The specified
+.I command
+is then run using the X display corresponding to the
+.B Xvfb
+server
+just started and the X authority file created earlier.
+.PP
+When the
+.I command
+exits, its status is saved, the
+.B Xvfb
+server is killed (using the process ID stored earlier), the X authority
+cookie removed, and the authority file deleted (if the user did not specify
+one to use).
+.B xvfb\-run
+then exits with the exit status of
+.IR command .
+.PP
+.B xvfb\-run
+requires the
+.B xauth
+command to function.
+.SH OPTIONS
+.TP
+.B \-a\fR,\fB \-\-auto\-servernum
+Try to get a free server number, starting at 99, or the argument to
+.BR \-\-server\-num .
+.TP
+.BI \-e\ file \fR,\fB\ \-\-error\-file= file
+Store output from
+.B xauth
+and
+.B Xvfb
+in
+.IR file .
+The default is
+.IR /dev/null .
+.TP
+.BI \-f\ file \fR,\fB\ \-\-auth\-file= file
+Store X authentication data in
+.IR file .
+By default, a temporary directory called
+.IR xvfb\-run. PID
+(where PID is the process ID of
+.B xvfb\-run
+itself) is created in the directory specified by the environment variable
+.B TMPDIR
+(or
+.I /tmp
+if that variable is null or unset), and the
+.BR tempfile (1)
+command is used to create a file in that temporary directory called
+.IR Xauthority .
+.TP
+.B \-h\fR,\fB \-\-help
+Display a usage message and exit.
+.TP
+.BI \-n\ servernumber \fR,\fB\ \-\-server\-num= servernumber
+Use
+.I servernumber
+as the server number (but see the
+.B \-a\fR,\fB \-\-auto\-servernum
+option above).
+The default is 99.
+.TP
+.B \-l\fR,\fB \-\-listen\-tcp
+Enable TCP port listening in the X server.
+For security reasons (to avoid denial\-of\-service attacks or exploits),
+TCP port listening is disabled by default.
+.TP
+.BI \-p\ protocolname \fR,\fB\ \-\-xauth\-protocol= protocolname
+Use
+.I protocolname
+as the X authority protocol to use.
+The default is \(oq.\(cq, which
+.B xauth
+interprets as its own default protocol, which is MIT\-MAGIC\-COOKIE\-1.
+.TP
+.BI \-s\ arguments \fR,\fB\ \-\-server\-args= arguments
+Pass
+.I arguments
+to the
+.B Xvfb
+server.
+Be careful to quote any whitespace characters that may occur within
+.I arguments
+to prevent them from regarded as separators for
+.BR xvfb\-run 's
+own arguments.
+Also, note that specification of \(oq\-nolisten tcp\(cq in
+.I arguments
+may override the function of
+.BR xvfb\-run 's
+own
+.B \-l\fR,\fB \-\-listen\-tcp
+option, and that specification of the server number (e.g., \(oq:1\(cq) may
+be ignored because of the way the X server parses its argument list.
+Use the
+.B xvfb\-run
+option
+.BI \-n\ servernumber \fR,\fB\ \-\-server\-num= servernumber
+to achieve the latter function.
+The default is \(oq\-screen 0 640x480x8\(cq.
+.TP
+.BI \-w\ delay \fR,\fB\ \-\-wait= delay
+Wait
+.I delay
+seconds after launching
+.B Xvfb
+before attempting to start the specified command.
+The default is 3.
+.SH ENVIRONMENT
+.TP
+.B COLUMNS
+indicates the width of the terminal device in character cells.
+This value is used for formatting diagnostic messages.
+If not set, the terminal is queried using
+.BR stty (1)
+to determine its width.
+If that fails, a value of \(oq80\(cq is assumed.
+.TP
+.B TMPDIR
+specifies the directory in which to place
+.BR xvfb\-run 's
+temporary directory for storage of the X authority file; only used if the
+.B \-f
+or
+.B \-\-auth\-file
+options are not specified.
+.SH "OUTPUT FILES"
+.PP
+Unless the
+.B \-f
+or
+.B \-\-auth\-file
+options are specified, a temporary
+directory and file within it are created (and deleted) to store the X
+authority cookies used by the
+.B Xvfb
+server and client(s) run under it.
+See
+.BR tempfile (1).
+If \-f or \-\-auth\-file are used, then the specified X authority file is
+only written to, not created or deleted (though
+.B xauth
+creates an authority file itself if told to use use that does not already
+exist).
+.PP
+An error file with a user\-specified name is also created if the
+.B \-e
+or
+.B \-\-error\-file
+options are specifed; see above.
+.SH "EXIT STATUS"
+.B xvfb\-run
+uses its exit status as well as output to standard error to communicate
+diagnostics.
+The exit status of \(oq1\(cq is not used, and should be interpreted as failure
+of the specified command.
+.TP
+0
+.B xvfb\-run
+only uses this exit status if the
+.B \-h\fR,\fB \-\-help
+option is given.
+In all other situations, this may be interpreted as success of the specified
+command.
+.TP
+2
+No command to run was specified.
+.TP
+3
+The
+.B xauth
+command is not available.
+.TP
+4
+The temporary directory that was going to be used already exists; since
+.B xvfb\-run
+produces a uniquely named directory, this may indicate an attempt by another
+process on the system to exploit a temporary file race condition.
+.TP
+5
+A problem was encountered while cleaning up the temporary directory.
+.TP
+6
+A problem was encountered while using
+.BR getopt (1)
+to parse the command\-line arguments.
+.SH EXAMPLES
+.TP
+.B xvfb\-run \-\-auto\-servernum \-\-server\-num=1 xlogo
+runs the
+.BR xlogo (1x)
+demonstration client inside the
+.B Xvfb
+X server on the first available server number greater than or equal to 1.
+.TP
+.B xvfb\-run \-\-server\-args="\-screen 0 1024x768x24" ico \-faces
+runs the
+.BR ico (1x)
+demonstration client (and passes it the
+.B \-faces
+argument) inside the
+.B Xvfb
+X server, configured with a root window of 1024 by 768 pixels and a color
+depth of 24 bits.
+.PP
+Note that the demo X clients used in the above examples will not exit on
+their own, so they will have to be killed before
+.B xvfb\-run
+will exit.
+.SH BUGS
+See
+.URL "http://bugs.debian.org/xvfb" "the Debian Bug Tracking System" .
+If you wish to report a bug in
+.BR xvfb\-run ,
+please use the
+.BR reportbug (1)
+command.
+.SH AUTHOR
+.B xfvb\-run
+was written by Branden Robinson and Jeff Licquia with sponsorship from
+Progeny Linux Systems.
+.SH "SEE ALSO"
+.BR Xvfb (1x),
+.BR xauth (1x)
+.\" vim:set et tw=80:
diff --git a/extra/xorg-sessreg/PKGBUILD b/extra/xorg-sessreg/PKGBUILD
new file mode 100644
index 000000000..4cd6d1e86
--- /dev/null
+++ b/extra/xorg-sessreg/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 113683 2011-03-10 14:43:23Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xorg-sessreg
+pkgver=1.0.6
+pkgrel=2
+pkgdesc="Register X sessions in system utmp/utmpx databases"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('glibc')
+makedepends=('xorg-util-macros' 'xproto')
+groups=('xorg-apps' 'xorg')
+source=(http://xorg.freedesktop.org/archive/individual/app/sessreg-${pkgver}.tar.bz2)
+sha1sums=('6f260f1ddc366da070a6d60301b9fb64a99c119a')
+
+build() {
+ cd "${srcdir}/sessreg-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xorg-setxkbmap/PKGBUILD b/extra/xorg-setxkbmap/PKGBUILD
new file mode 100644
index 000000000..b25f37dc1
--- /dev/null
+++ b/extra/xorg-setxkbmap/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 113688 2011-03-10 14:45:16Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xorg-setxkbmap
+pkgver=1.2.0
+pkgrel=2
+pkgdesc="Set the keyboard using the X Keyboard Extension"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libxkbfile')
+makedepends=('xorg-util-macros')
+groups=('xorg-apps' 'xorg')
+source=(${url}/releases/individual/app/setxkbmap-${pkgver}.tar.bz2)
+sha1sums=('860785e16313d30792fe62604f65d84281812322')
+
+build() {
+ cd "${srcdir}/setxkbmap-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xorg-smproxy/PKGBUILD b/extra/xorg-smproxy/PKGBUILD
new file mode 100644
index 000000000..50964a380
--- /dev/null
+++ b/extra/xorg-smproxy/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 113698 2011-03-10 14:47:17Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xorg-smproxy
+pkgver=1.0.4
+pkgrel=2
+pkgdesc="Allows X applications that do not support X11R6 session management to participate in an X11R6 session"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libsm' 'libxt' 'libxmu')
+makedepends=('xorg-util-macros')
+groups=('xorg-apps' 'xorg')
+source=(http://xorg.freedesktop.org/archive/individual/app/smproxy-${pkgver}.tar.bz2)
+sha1sums=('ea9639b6d0669f157ac62b807cdba64f509b25ed')
+
+build() {
+ cd "${srcdir}/smproxy-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xorg-twm/PKGBUILD b/extra/xorg-twm/PKGBUILD
new file mode 100644
index 000000000..b5b62d210
--- /dev/null
+++ b/extra/xorg-twm/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 113881 2011-03-10 17:47:05Z jgc $
+# Maintainer: Alexander Baldeck <alexander@archlinux.org>
+# Contributor: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xorg-twm
+pkgver=1.0.6
+pkgrel=2
+pkgdesc="Tab Window Manager for the X Window System"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+backup=(etc/X11/twm/system.twmrc)
+license=('custom')
+depends=('libxmu')
+makedepends=('xorg-util-macros')
+source=(${url}/releases/individual/app/twm-${pkgver}.tar.bz2)
+sha1sums=('5c28194c9c620b34df56fdee140d662425ba8a86')
+
+build() {
+ cd "${srcdir}/twm-${pkgver}"
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}/twm-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/etc/X11/twm"
+ install -m644 src/system.twmrc "${pkgdir}/etc/X11/twm/"
+ install -D -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/COPYING"
+}
diff --git a/extra/xorg-x11perf/PKGBUILD b/extra/xorg-x11perf/PKGBUILD
new file mode 100644
index 000000000..c350c59bb
--- /dev/null
+++ b/extra/xorg-x11perf/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 113703 2011-03-10 14:49:36Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xorg-x11perf
+pkgver=1.5.3
+pkgrel=2
+pkgdesc="Simple X server performance benchmarker"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libx11' 'libxmu' 'libxrender' 'libxft' 'libxext')
+makedepends=('xorg-util-macros')
+groups=('xorg-apps' 'xorg')
+source=(http://xorg.freedesktop.org/archive/individual/app/x11perf-${pkgver}.tar.bz2)
+sha1sums=('2fd00ba38c36c569751bbe3d60917df2a39e10ba')
+
+build() {
+ cd "${srcdir}/x11perf-${pkgver}"
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}/x11perf-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xorg-xauth/PKGBUILD b/extra/xorg-xauth/PKGBUILD
new file mode 100644
index 000000000..85a358954
--- /dev/null
+++ b/extra/xorg-xauth/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 113711 2011-03-10 14:51:46Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xorg-xauth
+pkgver=1.0.5
+pkgrel=2
+pkgdesc="X.Org authorization settings program"
+arch=(i686 x86_64)
+license=('custom')
+url="http://xorg.freedesktop.org/"
+depends=('libxmu')
+makedepends=('xorg-util-macros')
+groups=('xorg-apps' 'xorg')
+source=(${url}/releases/individual/app/xauth-${pkgver}.tar.bz2)
+sha1sums=('6d94b5822e8ce08630a8ff510230246d5ed45290')
+
+build() {
+ cd "${srcdir}/xauth-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -d -m755 "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xorg-xbacklight/PKGBUILD b/extra/xorg-xbacklight/PKGBUILD
new file mode 100644
index 000000000..5ed14c78c
--- /dev/null
+++ b/extra/xorg-xbacklight/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 113718 2011-03-10 14:54:32Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xorg-xbacklight
+pkgver=1.1.2
+pkgrel=2
+pkgdesc="RandR-based backlight control application"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libxrandr' 'libx11')
+makedepends=('xorg-util-macros')
+groups=('xorg-apps' 'xorg')
+source=(http://xorg.freedesktop.org/archive/individual/app/xbacklight-${pkgver}.tar.bz2)
+sha1sums=('e297b359ab83f3844ca5ea1c23280b2f8bb71cfd')
+
+build() {
+ cd "${srcdir}/xbacklight-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xorg-xbiff/PKGBUILD b/extra/xorg-xbiff/PKGBUILD
new file mode 100644
index 000000000..60c750ed2
--- /dev/null
+++ b/extra/xorg-xbiff/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 108983 2011-02-05 10:35:36Z andyrtr $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xorg-xbiff
+pkgver=1.0.3
+pkgrel=1
+pkgdesc="Watch mailboxes for new message delivery"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libxaw' 'libxext')
+makedepends=('xorg-util-macros' 'xbitmaps')
+source=(http://xorg.freedesktop.org/archive/individual/app/xbiff-${pkgver}.tar.bz2)
+sha1sums=('17337a951264f0f96f6d03893f9dfd9cf8f12a5a')
+
+build() {
+ cd "${srcdir}/xbiff-${pkgver}"
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}/xbiff-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xorg-xcalc/PKGBUILD b/extra/xorg-xcalc/PKGBUILD
new file mode 100644
index 000000000..8272a7965
--- /dev/null
+++ b/extra/xorg-xcalc/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xorg-xcalc
+pkgver=1.0.4.1
+pkgrel=1
+pkgdesc="Scientific calculator for X"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libxaw')
+makedepends=('xorg-util-macros')
+source=(http://xorg.freedesktop.org/archive/individual/app/xcalc-${pkgver}.tar.bz2)
+sha1sums=('2206fc4bf3719c43fa13a6c64a37b40607d8e5e2')
+
+build() {
+ cd "${srcdir}/xcalc-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xorg-xclipboard/PKGBUILD b/extra/xorg-xclipboard/PKGBUILD
new file mode 100644
index 000000000..08f506c42
--- /dev/null
+++ b/extra/xorg-xclipboard/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xorg-xclipboard
+pkgver=1.1.1
+pkgrel=1
+pkgdesc="X clipboard manager"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libxaw' 'libxmu' 'libxt' 'libx11')
+makedepends=('xorg-util-macros')
+source=(http://xorg.freedesktop.org/archive/individual/app/xclipboard-${pkgver}.tar.bz2)
+sha1sums=('922ddf89acd0781156e9ccdf191a3e0c6376415a')
+
+build() {
+ cd "${srcdir}/xclipboard-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xorg-xclock/PKGBUILD b/extra/xorg-xclock/PKGBUILD
new file mode 100644
index 000000000..db6506846
--- /dev/null
+++ b/extra/xorg-xclock/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xorg-xclock
+pkgver=1.0.5
+pkgrel=1
+pkgdesc="X clock"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libx11' 'libxmu' 'libxaw' 'libxrender' 'libxft' 'libxkbfile')
+makedepends=('xorg-util-macros')
+source=(http://xorg.freedesktop.org/archive/individual/app/xclock-${pkgver}.tar.bz2)
+sha1sums=('1651ac8961c0aa287a6a7412ee5e6d3bfc3bb3e2')
+
+build() {
+ cd "${srcdir}/xclock-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xorg-xcmsdb/PKGBUILD b/extra/xorg-xcmsdb/PKGBUILD
new file mode 100644
index 000000000..58fdd734f
--- /dev/null
+++ b/extra/xorg-xcmsdb/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 113723 2011-03-10 14:58:44Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xorg-xcmsdb
+pkgver=1.0.3
+pkgrel=2
+pkgdesc="Device Color Characterization utility for X Color Management System"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libx11')
+makedepends=('xorg-util-macros')
+groups=('xorg-apps' 'xorg')
+source=(http://xorg.freedesktop.org/archive/individual/app/xcmsdb-${pkgver}.tar.bz2)
+sha1sums=('14df39b4d5518f551302c210131dcc5bac03f3ff')
+
+build() {
+ cd "${srcdir}/xcmsdb-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xorg-xconsole/PKGBUILD b/extra/xorg-xconsole/PKGBUILD
new file mode 100644
index 000000000..204892339
--- /dev/null
+++ b/extra/xorg-xconsole/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xorg-xconsole
+pkgver=1.0.4
+pkgrel=1
+pkgdesc="Monitor system console messages with X"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libxaw' 'libxmu' 'libxt' 'libx11')
+makedepends=('xorg-util-macros')
+source=(http://xorg.freedesktop.org/archive/individual/app/xconsole-${pkgver}.tar.bz2)
+sha1sums=('195299d4948ba4c62e961ddd0bd4572283244715')
+
+build() {
+ cd "${srcdir}/xconsole-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xorg-xcursorgen/PKGBUILD b/extra/xorg-xcursorgen/PKGBUILD
new file mode 100644
index 000000000..f798e9591
--- /dev/null
+++ b/extra/xorg-xcursorgen/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 113731 2011-03-10 15:00:48Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xorg-xcursorgen
+pkgver=1.0.4
+pkgrel=2
+pkgdesc="Create an X cursor file from PNG images"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libx11' 'libxcursor' 'libpng')
+makedepends=('xorg-util-macros')
+groups=('xorg-apps' 'xorg')
+source=(http://xorg.freedesktop.org/archive/individual/app/xcursorgen-${pkgver}.tar.bz2)
+sha1sums=('244c180aae8cc07175b93f314d5bbbf24171658a')
+
+build() {
+ cd "${srcdir}/xcursorgen-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xorg-xdm/LICENSE b/extra/xorg-xdm/LICENSE
new file mode 100644
index 000000000..5f8d6fcc0
--- /dev/null
+++ b/extra/xorg-xdm/LICENSE
@@ -0,0 +1,132 @@
+This package was downloaded from
+http://xorg.freedesktop.org/releases/individual/app/
+
+Copyright 1988, 1989, 1990, 1991, 1994, 1998
+The Open Group
+Copyright 2002 Sun Microsystems, Inc. All rights reserved.
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+
+prngc.c:
+Copyright (c) 1995,1999 Theo de Raadt. All rights reserved.
+Copyright (c) 2001-2002 Damien Miller. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+dm_socket.h, dm_error.h, dm_auth.h
+Copyright 1998 by Thomas E. Dickey <dickey@clark.net>
+
+ All Rights Reserved
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name(s) of the above copyright
+holders shall not be used in advertising or otherwise to promote the
+sale, use or other dealings in this Software without prior written
+authorization.
+
+genauth.c:
+Copyright Theodore Ts'o, 1994, 1995, 1996, 1997, 1998, 1999. All
+rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+ notice, and the entire permission notice in its entirety,
+ including the disclaimer of warranties.
+2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+3. The name of the author may not be used to endorse or promote
+ products derived from this software without specific prior
+ written permission.
+
+THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF
+WHICH ARE HEREBY DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
+OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+USE OF THIS SOFTWARE, EVEN IF NOT ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGE.
+
+Makefile.am
+Copyright 2005 Red Hat, Inc.
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation, and that the name of Red Hat not be used in
+advertising or publicity pertaining to distribution of the software without
+specific, written prior permission. Red Hat makes no
+representations about the suitability of this software for any purpose. It
+is provided "as is" without express or implied warranty.
+
+RED HAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL RED HAT BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
diff --git a/extra/xorg-xdm/PKGBUILD b/extra/xorg-xdm/PKGBUILD
new file mode 100644
index 000000000..66f376ed2
--- /dev/null
+++ b/extra/xorg-xdm/PKGBUILD
@@ -0,0 +1,43 @@
+# $Id: PKGBUILD 105533 2011-01-10 11:03:46Z jgc $
+# Maintainer: Alexander Baldeck <alexander@archlinux.org>
+# Contributor: Jan de Groot <jgc@archlinux.org>
+pkgname=xorg-xdm
+pkgver=1.1.10
+pkgrel=2
+pkgdesc="X Display Manager"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('pam' 'libxaw' 'libxinerama' 'xorg-xrdb' 'xorg-sessreg' 'libxft')
+makedepends=('pkgconfig')
+backup=(etc/X11/xdm/Xaccess etc/X11/xdm/Xresources etc/X11/xdm/Xservers etc/X11/xdm/xdm-config etc/pam.d/xdm etc/X11/xdm/Xsetup_0 etc/X11/xdm/Xsession)
+options=('!libtool')
+source=(${url}/releases/individual/app/xdm-${pkgver}.tar.bz2
+ Xsession-loginshell.patch
+ Xsession-xsm.patch
+ xdm.pam)
+md5sums=('329383040cdbda5b5c8ce6c7e1120c97'
+ '234ae568e7b22cbc09433bb396ff3d80'
+ '2c30078c50bc653d72eb5114506eb313'
+ '419d6289ba6f851135f5c70c0e3cbec4')
+
+build() {
+ cd "${srcdir}/xdm-${pkgver}"
+ patch -Np0 -i "${srcdir}/Xsession-loginshell.patch"
+ patch -Np1 -i "${srcdir}/Xsession-xsm.patch"
+ ./configure --prefix=/usr \
+ --disable-xdm-auth \
+ --disable-static \
+ --with-xdmconfigdir=/etc/X11/xdm \
+ --with-xdmscriptdir=/etc/X11/xdm \
+ --with-pixmapdir=/usr/share/xdm/pixmaps
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/var/lib/xdm"
+ install -m755 -d "${pkgdir}/etc/pam.d"
+ install -m644 "${srcdir}/xdm.pam" "${pkgdir}/etc/pam.d/xdm"
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+
+ sed -i -e 's/\/X11R6//g' "${pkgdir}"/etc/X11/xdm/*
+}
diff --git a/extra/xorg-xdm/Xsession-loginshell.patch b/extra/xorg-xdm/Xsession-loginshell.patch
new file mode 100644
index 000000000..3710752ef
--- /dev/null
+++ b/extra/xorg-xdm/Xsession-loginshell.patch
@@ -0,0 +1,15 @@
+--- config/Xsession.cpp.orig 2008-06-21 13:57:36.000000000 +0000
++++ config/Xsession.cpp 2008-06-21 14:01:25.000000000 +0000
+@@ -56,11 +56,7 @@
+ resources=$HOME/.Xresources
+
+ if [ -s "$startup" ]; then
+- if [ -x "$startup" ]; then
+- exec "$startup"
+- else
+- exec /bin/sh "$startup"
+- fi
++ exec /bin/sh -ls -c "$startup"
+ else
+ if [ -r "$resources" ]; then
+ BINDIR/xrdb -load "$resources"
diff --git a/extra/xorg-xdm/Xsession-xsm.patch b/extra/xorg-xdm/Xsession-xsm.patch
new file mode 100644
index 000000000..a2d4d6cc6
--- /dev/null
+++ b/extra/xorg-xdm/Xsession-xsm.patch
@@ -0,0 +1,22 @@
+diff -Naur xdm-1.1.8-orig/config/Xsession.cpp xdm-1.1.8/config/Xsession.cpp
+--- xdm-1.1.8-orig/config/Xsession.cpp 2008-05-21 14:08:45.000000000 -0400
++++ xdm-1.1.8/config/Xsession.cpp 2009-04-28 02:56:11.000000000 -0400
+@@ -54,6 +54,7 @@
+
+ startup=$HOME/.xsession
+ resources=$HOME/.Xresources
++xinitrc=$HOME/.xinitrc
+
+ if [ -s "$startup" ]; then
+ if [ -x "$startup" ]; then
+@@ -83,5 +84,9 @@
+ exec `eval $XDESKTOP`
+ }
+ #endif
+- exec BINDIR/xsm
++ if [ -r "$xinitrc" ]; then
++ exec /bin/sh -ls -c "$xinitrc"
++ else
++ exec /bin/sh -l /etc/X11/xinit/xinitrc
++ fi
+ fi
diff --git a/extra/xorg-xdm/xdm.pam b/extra/xorg-xdm/xdm.pam
new file mode 100644
index 000000000..862b83fa2
--- /dev/null
+++ b/extra/xorg-xdm/xdm.pam
@@ -0,0 +1,8 @@
+#%PAM-1.0
+auth required pam_unix.so
+auth required pam_nologin.so
+auth required pam_env.so
+account required pam_unix.so
+password required pam_unix.so
+session required pam_unix.so
+session required pam_limits.so
diff --git a/extra/xorg-xdpyinfo/PKGBUILD b/extra/xorg-xdpyinfo/PKGBUILD
new file mode 100644
index 000000000..4ec899376
--- /dev/null
+++ b/extra/xorg-xdpyinfo/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 113736 2011-03-10 15:06:24Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xorg-xdpyinfo
+pkgver=1.2.0
+pkgrel=2
+pkgdesc="Display information utility for X"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libx11' 'libxext' 'libxtst' 'libxxf86vm' 'libxxf86dga' 'libxrender' 'libxcomposite' 'libxinerama' 'libdmx')
+makedepends=('xorg-util-macros')
+groups=('xorg-apps' 'xorg')
+source=(http://xorg.freedesktop.org/archive/individual/app/xdpyinfo-${pkgver}.tar.bz2)
+sha1sums=('5d53cd31afd40bdc4575b5347f2cda67f135f5f2')
+
+build() {
+ cd "${srcdir}/xdpyinfo-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xorg-xdriinfo/PKGBUILD b/extra/xorg-xdriinfo/PKGBUILD
new file mode 100644
index 000000000..643fe2e93
--- /dev/null
+++ b/extra/xorg-xdriinfo/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 113746 2011-03-10 15:15:21Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xorg-xdriinfo
+pkgver=1.0.4
+pkgrel=2
+pkgdesc="Query configuration information of DRI drivers"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libx11' 'libgl')
+makedepends=('xorg-util-macros' 'glproto' 'mesa')
+groups=('xorg-apps' 'xorg')
+source=(http://xorg.freedesktop.org/archive/individual/app/xdriinfo-${pkgver}.tar.bz2)
+sha1sums=('723482b3fc627d7cc6124fec43dd1c21d102daaa')
+
+build() {
+ cd "${srcdir}/xdriinfo-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xorg-xedit/PKGBUILD b/extra/xorg-xedit/PKGBUILD
new file mode 100644
index 000000000..b6a7dbf41
--- /dev/null
+++ b/extra/xorg-xedit/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xorg-xedit
+pkgver=1.2.0
+pkgrel=1
+pkgdesc="Simple text editor for X"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libxaw' 'libxmu' 'libxt' 'libx11')
+makedepends=('xorg-util-macros')
+source=(http://xorg.freedesktop.org/archive/individual/app/xedit-${pkgver}.tar.bz2)
+sha1sums=('e6f8735d09c9da67bba3cd3c39f34f5d1fc79a70')
+
+build() {
+ cd "${srcdir}/xedit-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xorg-xev/PKGBUILD b/extra/xorg-xev/PKGBUILD
new file mode 100644
index 000000000..70f75e86b
--- /dev/null
+++ b/extra/xorg-xev/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 113751 2011-03-10 15:22:05Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xorg-xev
+pkgver=1.1.0
+pkgrel=2
+pkgdesc="Print contents of X events"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libx11')
+makedepends=('xorg-util-macros')
+groups=('xorg-apps' 'xorg')
+source=(http://xorg.freedesktop.org/archive/individual/app/xev-${pkgver}.tar.bz2)
+sha1sums=('77dcbdaa2046db56f31936f921843bd05df2255f')
+
+build() {
+ cd "${srcdir}/xev-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xorg-xeyes/PKGBUILD b/extra/xorg-xeyes/PKGBUILD
new file mode 100644
index 000000000..aea051d3a
--- /dev/null
+++ b/extra/xorg-xeyes/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xorg-xeyes
+pkgver=1.1.1
+pkgrel=1
+pkgdesc="Follow the mouse/SHAPE extension X demo"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libx11' 'libxt' 'libxext' 'libxmu' 'libxrender')
+makedepends=('xorg-util-macros')
+source=(http://xorg.freedesktop.org/archive/individual/app/xeyes-${pkgver}.tar.bz2)
+sha1sums=('efe6116d31a7f69e4fb6038613e52b0960b9b61c')
+
+build() {
+ cd "${srcdir}/xeyes-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xorg-xfd/PKGBUILD b/extra/xorg-xfd/PKGBUILD
new file mode 100644
index 000000000..8d7aec33c
--- /dev/null
+++ b/extra/xorg-xfd/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xorg-xfd
+pkgver=1.1.0
+pkgrel=1
+pkgdesc="Displays all the characters in a font using either the X11 core protocol or libXft2"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libxaw' 'fontconfig' 'libxft' 'libxrender' 'libxmu')
+makedepends=('xorg-util-macros')
+source=(http://xorg.freedesktop.org/archive/individual/app/xfd-${pkgver}.tar.bz2)
+sha1sums=('9cf24f00b428bc02d8635634cdb3b7422e7d74a5')
+
+build() {
+ cd "${srcdir}/xfd-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xorg-xfontsel/PKGBUILD b/extra/xorg-xfontsel/PKGBUILD
new file mode 100644
index 000000000..cca0d453e
--- /dev/null
+++ b/extra/xorg-xfontsel/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xorg-xfontsel
+pkgver=1.0.3
+pkgrel=1
+pkgdesc="Point and click selection of X11 font names"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libxaw' 'libxmu' 'libxt' 'libx11')
+makedepends=('xorg-util-macros')
+source=(http://xorg.freedesktop.org/archive/individual/app/xfontsel-${pkgver}.tar.bz2)
+sha1sums=('df2eb12b90339b7091bd362b095344015ec8b6fa')
+
+build() {
+ cd "${srcdir}/xfontsel-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xorg-xfs/PKGBUILD b/extra/xorg-xfs/PKGBUILD
new file mode 100644
index 000000000..606076b8f
--- /dev/null
+++ b/extra/xorg-xfs/PKGBUILD
@@ -0,0 +1,64 @@
+# $Id: PKGBUILD 108976 2011-02-05 10:30:46Z andyrtr $
+# Maintainer: Alexander Baldeck <alexander@archlinux.org>
+# Contributor: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xorg-xfs
+pkgver=1.1.1
+pkgrel=1
+pkgdesc="X.Org X11 xfs font server"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+backup=('etc/X11/fs/config')
+depends=('xorg-font-utils' 'libxfont>=1.4.0' 'libfs>=1.0.2' 'libx11>=1.2.2')
+makedepends=('pkgconfig' 'xtrans')
+source=(${url}/releases/individual/app/xfs-${pkgver}.tar.bz2
+ ${url}/releases/individual/app/xfsinfo-1.0.3.tar.bz2
+ ${url}/releases/individual/app/fslsfonts-1.0.3.tar.bz2
+ ${url}/releases/individual/app/fstobdf-1.0.4.tar.bz2
+ ${url}/releases/individual/app/showfont-1.0.3.tar.bz2
+ xfs.rc)
+md5sums=('e02c6cae689c082b8c98a421df8f8670'
+ 'aae6fa48b5c2ce9186a5ff4ccc14a1d4'
+ '9b50d967ac6d4bae9bffb62a5e527a50'
+ 'fc1f42aac16d6b76c79a1a3a0fb6a53b'
+ '50b466ab6ed4a5b8df5abf1ef844309a'
+ '251f5447f64151e9bb096ebc9f999c3f')
+
+build() {
+ cd "${srcdir}"
+ pushd xfs-${pkgver}
+ ./configure --prefix=/usr --sysconfdir=/etc
+ make configdir=/etc/X11/fs
+ popd
+
+ for i in xfsinfo-* fslsfonts-* fstobdf-* showfont-*; do
+ if [ -d "${i}" ]; then
+ pushd "${i}"
+ ./configure --prefix=/usr
+ make
+ popd
+ fi
+ done
+}
+
+package() {
+ cd "${srcdir}"
+ pushd xfs-${pkgver}
+ make configdir=/etc/X11/fs DESTDIR="${pkgdir}" install
+ sed -i -e 's|/lib/X11/|/share/|g' "${pkgdir}/etc/X11/fs/config"
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE.xfs"
+ popd
+
+ for i in xfsinfo-* fslsfonts-* fstobdf-* showfont-*; do
+ if [ -d "${i}" ]; then
+ pushd "${i}"
+ make DESTDIR="${pkgdir}" install
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE.${i%-*}"
+ popd
+ fi
+ done
+ install -m755 -d "${pkgdir}/etc/rc.d"
+ install -m755 "${srcdir}/xfs.rc" "${pkgdir}/etc/rc.d/xfs"
+}
diff --git a/extra/xorg-xfs/xfs.rc b/extra/xorg-xfs/xfs.rc
new file mode 100644
index 000000000..caac86106
--- /dev/null
+++ b/extra/xorg-xfs/xfs.rc
@@ -0,0 +1,46 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+PID=`pidof -o %PPID /usr/bin/xfs`
+case "$1" in
+ start)
+ stat_busy "Starting X.Org fontserver"
+ if [ -z "$PID" ]; then
+ /usr/bin/xfs -daemon &> /dev/null
+ fi
+ if [ ! -z "$PID" -o $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon xfs
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping X.Org fontserver"
+ [ ! -z "$PID" ] && kill $PID &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon xfs
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ reload)
+ stat_busy "Reloading X.Org fontserver configuration"
+ [ ! -z "$PID" ] && kill -HUP $PID &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ stat_done
+ fi
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart|reload}"
+esac
diff --git a/extra/xorg-xgamma/PKGBUILD b/extra/xorg-xgamma/PKGBUILD
new file mode 100644
index 000000000..a1cfff2aa
--- /dev/null
+++ b/extra/xorg-xgamma/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 113756 2011-03-10 15:23:53Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xorg-xgamma
+pkgver=1.0.4
+pkgrel=2
+pkgdesc="Alter a monitor's gamma correction"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libx11' 'libxxf86vm')
+makedepends=('xorg-util-macros')
+groups=('xorg-apps' 'xorg')
+source=(http://xorg.freedesktop.org/archive/individual/app/xgamma-${pkgver}.tar.bz2)
+sha1sums=('c4124b42618c6d4bc9eb9690348b5d60e4c9daed')
+
+build() {
+ cd "${srcdir}/xgamma-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xorg-xhost/PKGBUILD b/extra/xorg-xhost/PKGBUILD
new file mode 100644
index 000000000..99f1f3399
--- /dev/null
+++ b/extra/xorg-xhost/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 113761 2011-03-10 15:26:14Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xorg-xhost
+pkgver=1.0.4
+pkgrel=2
+pkgdesc="Server access control program for X"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libx11' 'libxmu')
+makedepends=('xorg-util-macros')
+groups=('xorg-apps' 'xorg')
+source=(http://xorg.freedesktop.org/archive/individual/app/xhost-${pkgver}.tar.bz2)
+sha1sums=('b4fde9899861f1a97395f8c7197db00cc44242a7')
+
+build() {
+ cd "${srcdir}/xhost-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xorg-xinit/06_move_serverauthfile_into_tmp.diff b/extra/xorg-xinit/06_move_serverauthfile_into_tmp.diff
new file mode 100644
index 000000000..99e8a6754
--- /dev/null
+++ b/extra/xorg-xinit/06_move_serverauthfile_into_tmp.diff
@@ -0,0 +1,20 @@
+Move startx auth files in /tmp so they are removed on reboot.
+http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=357736
+The trap patch didn't seem to work on reboot.
+---
+ startx.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+Index: xinit/startx.cpp
+===================================================================
+--- xinit.orig/startx.cpp
++++ xinit/startx.cpp
+@@ -273,7 +273,7 @@
+ dummy=0
+
+ XCOMM create a file with auth information for the server. ':0' is a dummy.
+- xserverauthfile=$HOME/.serverauth.$$
++ xserverauthfile=`mktemp -p /tmp serverauth.XXXXXXXXXX`
+ trap "rm -f '$xserverauthfile'" HUP INT QUIT ILL TRAP KILL BUS TERM
+ xauth -q -f "$xserverauthfile" << EOF
+ add :$dummy . $mcookie
diff --git a/extra/xorg-xinit/PKGBUILD b/extra/xorg-xinit/PKGBUILD
new file mode 100644
index 000000000..e7df3f67e
--- /dev/null
+++ b/extra/xorg-xinit/PKGBUILD
@@ -0,0 +1,49 @@
+# $Id: PKGBUILD 113891 2011-03-10 19:11:37Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Alexander Baldeck <alexander@archlinux.org>
+
+pkgname=xorg-xinit
+pkgver=1.3.0
+pkgrel=3
+pkgdesc="X.Org initialisation program "
+arch=(i686 x86_64)
+license=('custom')
+url="http://xorg.freedesktop.org/"
+depends=('libx11' 'xorg-xauth')
+makedepends=('xorg-util-macros')
+optdepends=('xorg-twm' 'xterm')
+backup=('etc/skel/.xinitrc'
+ 'etc/skel/.xsession'
+ 'etc/X11/xinit/xserverrc'
+ 'etc/X11/xinit/xinitrc')
+source=(${url}/releases/individual/app/xinit-${pkgver}.tar.bz2
+ 06_move_serverauthfile_into_tmp.diff
+ xinitrc
+ xsession
+ xserverrc)
+options=(!emptydirs)
+md5sums=('bc4e8b7d1919597cc37a0d24aa149dda'
+ 'abd072ec435ce084cf4e89c58f83d45c'
+ 'c7b406c3c5c1e8011b3ac7d6b29c1a2c'
+ '7873d97db30d6c279ed37e3559e7c59d'
+ 'c5baef10fdb7239594daee72a94ddab3')
+
+build() {
+ cd "${srcdir}/xinit-${pkgver}"
+ patch -Np1 -i "${srcdir}/06_move_serverauthfile_into_tmp.diff"
+ sed -i -e 's/XSLASHGLOB.sh/XSLASHGLOB/' xinitrc.cpp
+ ./configure --prefix=/usr --with-xinitdir=/etc/X11/xinit
+ make
+}
+
+package() {
+ cd "${srcdir}/xinit-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+
+ install -m755 -d "${pkgdir}/etc/skel"
+ install -m644 "${srcdir}/xinitrc" "${pkgdir}/etc/skel/.xinitrc"
+ install -m644 "${srcdir}/xsession" "${pkgdir}/etc/skel/.xsession"
+ install -m644 "${srcdir}/xserverrc" "${pkgdir}/etc/X11/xinit/xserverrc"
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xorg-xinit/xinitrc b/extra/xorg-xinit/xinitrc
new file mode 100644
index 000000000..dbd080d00
--- /dev/null
+++ b/extra/xorg-xinit/xinitrc
@@ -0,0 +1,17 @@
+#!/bin/sh
+#
+# ~/.xinitrc
+#
+# Executed by startx (run your window manager from here)
+
+if [ -d /etc/X11/xinit/xinitrc.d ]; then
+ for f in /etc/X11/xinit/xinitrc.d/*; do
+ [ -x "$f" ] && . "$f"
+ done
+ unset f
+fi
+
+# exec gnome-session
+# exec startkde
+# exec startxfce4
+# ...or the Window Manager of your choice
diff --git a/extra/xorg-xinit/xserverrc b/extra/xorg-xinit/xserverrc
new file mode 100644
index 000000000..6f746cdce
--- /dev/null
+++ b/extra/xorg-xinit/xserverrc
@@ -0,0 +1 @@
+exec /usr/bin/X -nolisten tcp "$@"
diff --git a/extra/xorg-xinit/xsession b/extra/xorg-xinit/xsession
new file mode 100644
index 000000000..a16dc0b84
--- /dev/null
+++ b/extra/xorg-xinit/xsession
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+#
+# ~/.xsession
+#
+# Executed by xdm/gdm/kdm at login
+#
+
+/bin/bash --login -i ~/.xinitrc
+
diff --git a/extra/xorg-xinput/PKGBUILD b/extra/xorg-xinput/PKGBUILD
new file mode 100644
index 000000000..e0c49d36e
--- /dev/null
+++ b/extra/xorg-xinput/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 113766 2011-03-10 15:27:48Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xorg-xinput
+pkgver=1.5.3
+pkgrel=2
+pkgdesc="Small commandline tool to configure devices"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libx11' 'libxi')
+makedepends=('xorg-util-macros' 'inputproto')
+groups=('xorg-apps' 'xorg')
+source=(http://xorg.freedesktop.org/archive/individual/app/xinput-${pkgver}.tar.bz2)
+sha1sums=('70f258279acaa45fb77820ae3f8c2bee9f2d2235')
+
+build() {
+ cd "${srcdir}/xinput-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xorg-xkbcomp/PKGBUILD b/extra/xorg-xkbcomp/PKGBUILD
new file mode 100644
index 000000000..50c2b77f6
--- /dev/null
+++ b/extra/xorg-xkbcomp/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 113771 2011-03-10 15:39:50Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xorg-xkbcomp
+pkgver=1.2.1
+pkgrel=2
+pkgdesc="X Keyboard description compiler"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libxkbfile')
+makedepends=('xorg-util-macros')
+groups=('xorg-apps' 'xorg')
+source=(${url}/releases/individual/app/xkbcomp-${pkgver}.tar.bz2)
+sha1sums=('02d7e7b67a6ef3035f92f9e541252bf85e3f0385')
+
+build() {
+ cd "${srcdir}/xkbcomp-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xorg-xkbevd/PKGBUILD b/extra/xorg-xkbevd/PKGBUILD
new file mode 100644
index 000000000..35ac08075
--- /dev/null
+++ b/extra/xorg-xkbevd/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 113776 2011-03-10 15:41:46Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xorg-xkbevd
+pkgver=1.1.2
+pkgrel=2
+pkgdesc="XKB event daemon"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libxkbfile')
+makedepends=('xorg-util-macros')
+groups=('xorg-apps' 'xorg')
+source=(${url}/releases/individual/app/xkbevd-${pkgver}.tar.bz2)
+sha1sums=('f7d4eb5485c2b450266e4e467106f4d8560f4edd')
+
+build() {
+ cd "${srcdir}/xkbevd-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xorg-xkbutils/PKGBUILD b/extra/xorg-xkbutils/PKGBUILD
new file mode 100644
index 000000000..5b3d3be12
--- /dev/null
+++ b/extra/xorg-xkbutils/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 113779 2011-03-10 15:42:12Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xorg-xkbutils
+pkgver=1.0.3
+pkgrel=2
+pkgdesc="XKB utility demos"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libxaw' 'libxt' 'libx11')
+makedepends=('xorg-util-macros' 'xproto' 'inputproto')
+groups=('xorg-apps' 'xorg')
+source=(http://xorg.freedesktop.org/archive/individual/app/xkbutils-${pkgver}.tar.bz2)
+sha1sums=('e5a2619b9449f95e02b520b492de0575bc4551d6')
+
+build() {
+ cd "${srcdir}/xkbutils-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xorg-xkill/PKGBUILD b/extra/xorg-xkill/PKGBUILD
new file mode 100644
index 000000000..b1dbbe639
--- /dev/null
+++ b/extra/xorg-xkill/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 113786 2011-03-10 15:44:09Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xorg-xkill
+pkgver=1.0.3
+pkgrel=2
+pkgdesc="Kill a client by its X resource"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libx11' 'libxmu')
+makedepends=('xorg-util-macros')
+groups=('xorg-apps' 'xorg')
+source=(http://xorg.freedesktop.org/archive/individual/app/xkill-${pkgver}.tar.bz2)
+sha1sums=('bab7b9c7f3bc053d743eb339cf5fa496bace57e5')
+
+build() {
+ cd "${srcdir}/xkill-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xorg-xload/PKGBUILD b/extra/xorg-xload/PKGBUILD
new file mode 100644
index 000000000..f61b7d877
--- /dev/null
+++ b/extra/xorg-xload/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xorg-xload
+pkgver=1.1.0
+pkgrel=1
+pkgdesc="System load average display for X"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libxaw' 'libxmu' 'libxt' 'libx11')
+makedepends=('xorg-util-macros')
+source=(http://xorg.freedesktop.org/archive/individual/app/xload-${pkgver}.tar.bz2)
+sha1sums=('dcad93d769b0614466f1e48fed5dd956349cfcfb')
+
+build() {
+ cd "${srcdir}/xload-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xorg-xlogo/PKGBUILD b/extra/xorg-xlogo/PKGBUILD
new file mode 100644
index 000000000..114933c16
--- /dev/null
+++ b/extra/xorg-xlogo/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xorg-xlogo
+pkgver=1.0.3
+pkgrel=1
+pkgdesc="Draw [old] X logo"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libsm' 'libxaw' 'libxmu' 'libxt' 'libxext' 'libx11' 'libxrender' 'libxft')
+makedepends=('xorg-util-macros')
+source=(http://xorg.freedesktop.org/archive/individual/app/xlogo-${pkgver}.tar.bz2)
+sha1sums=('5016e74ba16ac80f3eac1c97738a6afbfc8b3bdd')
+
+build() {
+ cd "${srcdir}/xlogo-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xorg-xlsatoms/PKGBUILD b/extra/xorg-xlsatoms/PKGBUILD
new file mode 100644
index 000000000..dd88c8c9a
--- /dev/null
+++ b/extra/xorg-xlsatoms/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 113790 2011-03-10 15:44:47Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xorg-xlsatoms
+pkgver=1.1.0
+pkgrel=2
+pkgdesc="List interned atoms defined on server"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libxcb')
+makedepends=('xorg-util-macros')
+groups=('xorg-apps' 'xorg')
+source=(http://xorg.freedesktop.org/archive/individual/app/xlsatoms-${pkgver}.tar.bz2)
+sha1sums=('2982df6844d60cd12a09208808ab6baa767fe35f')
+
+build() {
+ cd "${srcdir}/xlsatoms-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xorg-xlsclients/PKGBUILD b/extra/xorg-xlsclients/PKGBUILD
new file mode 100644
index 000000000..8d3ce59f4
--- /dev/null
+++ b/extra/xorg-xlsclients/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 113796 2011-03-10 15:46:24Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xorg-xlsclients
+pkgver=1.1.1
+pkgrel=2
+pkgdesc="List client applications running on a display"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libxcb' 'xcb-util')
+makedepends=('xorg-util-macros')
+groups=('xorg-apps' 'xorg')
+source=(http://xorg.freedesktop.org/archive/individual/app/xlsclients-${pkgver}.tar.bz2)
+sha1sums=('67bfdcb089e8669df7ec5bc7a137e037047f2535')
+
+build() {
+ cd "${srcdir}/xlsclients-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xorg-xmag/PKGBUILD b/extra/xorg-xmag/PKGBUILD
new file mode 100644
index 000000000..66dafe737
--- /dev/null
+++ b/extra/xorg-xmag/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xorg-xmag
+pkgver=1.0.4
+pkgrel=1
+pkgdesc="Magnify parts of the screen"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libxaw' 'libxmu' 'libxt' 'libx11')
+makedepends=('xorg-util-macros')
+source=(http://xorg.freedesktop.org/archive/individual/app/xmag-${pkgver}.tar.bz2)
+sha1sums=('95695d4d4a731e5deb4196a0cc6d04ecaba023fe')
+
+build() {
+ cd "${srcdir}/xmag-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xorg-xman/PKGBUILD b/extra/xorg-xman/PKGBUILD
new file mode 100644
index 000000000..b35686959
--- /dev/null
+++ b/extra/xorg-xman/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xorg-xman
+pkgver=1.1.1
+pkgrel=1
+pkgdesc="Unix manual page viewer"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libxaw' 'libxt')
+makedepends=('xorg-util-macros' 'xproto' 'libxmu')
+source=(http://xorg.freedesktop.org/archive/individual/app/xman-${pkgver}.tar.bz2)
+sha1sums=('c8e1170e837da4bc280ee907030b3f9245608ef2')
+
+build() {
+ cd "${srcdir}/xman-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xorg-xmessage/PKGBUILD b/extra/xorg-xmessage/PKGBUILD
new file mode 100644
index 000000000..ca10a8d57
--- /dev/null
+++ b/extra/xorg-xmessage/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xorg-xmessage
+pkgver=1.0.3
+pkgrel=1
+pkgdesc="Display a message or query in a window"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libxaw')
+makedepends=('xorg-util-macros')
+source=(http://xorg.freedesktop.org/archive/individual/app/xmessage-${pkgver}.tar.bz2)
+sha1sums=('a8bfefbbe7785fa0e58ed4f596f4d79ba0b4d9b2')
+
+build() {
+ cd "${srcdir}/xmessage-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xorg-xmodmap/PKGBUILD b/extra/xorg-xmodmap/PKGBUILD
new file mode 100644
index 000000000..6f8f31e4f
--- /dev/null
+++ b/extra/xorg-xmodmap/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 113801 2011-03-10 15:47:06Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xorg-xmodmap
+pkgver=1.0.5
+pkgrel=2
+pkgdesc="Utility for modifying keymaps and button mappings"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libx11')
+makedepends=('xorg-util-macros')
+groups=('xorg-apps' 'xorg')
+source=(http://xorg.freedesktop.org/archive/individual/app/xmodmap-${pkgver}.tar.bz2)
+sha1sums=('c97fb42f40b094868f6ef445f25c600f326b1942')
+
+build() {
+ cd "${srcdir}/xmodmap-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xorg-xpr/PKGBUILD b/extra/xorg-xpr/PKGBUILD
new file mode 100644
index 000000000..47ed9440b
--- /dev/null
+++ b/extra/xorg-xpr/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 113806 2011-03-10 15:48:32Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xorg-xpr
+pkgver=1.0.3
+pkgrel=2
+pkgdesc="Print an X window dump from xwd"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libx11' 'libxmu')
+makedepends=('xorg-util-macros')
+groups=('xorg-apps' 'xorg')
+source=(http://xorg.freedesktop.org/archive/individual/app/xpr-${pkgver}.tar.bz2
+ copyright.patch)
+sha1sums=('9dbd0ff136b612285e00d92d0c7675a4207b1c4a'
+ 'd2649781330400b83cf3553d9cfd6e02dd93a2bd')
+
+build() {
+ cd "${srcdir}/xpr-${pkgver}"
+ patch -Np1 -i "${srcdir}/copyright.patch"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xorg-xpr/copyright.patch b/extra/xorg-xpr/copyright.patch
new file mode 100644
index 000000000..18e718246
--- /dev/null
+++ b/extra/xorg-xpr/copyright.patch
@@ -0,0 +1,75 @@
+From 11569289123fb178e23fd1aa284e9fa10e6c1e8c Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Fri, 06 Aug 2010 22:09:48 +0000
+Subject: Fill in COPYING file with copyright notices from source code
+
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+---
+diff --git a/COPYING b/COPYING
+index 7f33cbf..0f9d8e0 100644
+--- a/COPYING
++++ b/COPYING
+@@ -1,12 +1,53 @@
+-This is a stub file. This package has not yet had its complete licensing
+-information compiled. Please see the individual source files for details on
+-your rights to use and modify this software.
+
+-Please submit updated COPYING files to the Xorg bugzilla:
++Copyright (c) 1985, 1988 X Consortium
+
+-https://bugs.freedesktop.org/enter_bug.cgi?product=xorg
++Permission is hereby granted, free of charge, to any person obtaining
++a copy of this software and associated documentation files (the
++"Software"), to deal in the Software without restriction, including
++without limitation the rights to use, copy, modify, merge, publish,
++distribute, sublicense, and/or sell copies of the Software, and to
++permit persons to whom the Software is furnished to do so, subject to
++the following conditions:
+
+-All licensing questions regarding this software should be directed at the
+-Xorg mailing list:
++The above copyright notice and this permission notice shall be included
++in all copies or substantial portions of the Software.
+
+-http://lists.freedesktop.org/mailman/listinfo/xorg
++THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
++OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
++MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
++IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
++OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
++ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
++OTHER DEALINGS IN THE SOFTWARE.
++
++Except as contained in this notice, the name of the X Consortium shall
++not be used in advertising or otherwise to promote the sale, use or
++other dealings in this Software without prior written authorization
++from the X Consortium.
++
++Copyright 1986 by Marvin Solomon and the University of Wisconsin
++
++Permission to use, copy, modify, and distribute this
++software and its documentation for any purpose and without
++fee is hereby granted, provided that the above copyright
++notice appear in all copies and that both that copyright
++notice and this permission notice appear in supporting
++documentation, and that the names of Marvin Solomon and
++the University of Wisconsin not be used in
++advertising or publicity pertaining to distribution of the
++software without specific, written prior permission.
++Neither Marvin Solomon nor the University of Wisconsin
++makes any representations about the suitability of
++this software for any purpose. It is provided "as is"
++without express or implied warranty.
++
++Copyright (c) 1988 by Hewlett-Packard Company
++
++Permission to use, copy, modify, and distribute this software
++and its documentation for any purpose and without fee is hereby
++granted, provided that the above copyright notice appear in all
++copies and that both that copyright notice and this permission
++notice appear in supporting documentation, and that
++Hewlett-Packard not be used in advertising or publicity
++pertaining to distribution of the software without specific, written
++prior permission.
+--
+cgit v0.8.3-6-g21f6
diff --git a/extra/xorg-xprop/PKGBUILD b/extra/xorg-xprop/PKGBUILD
new file mode 100644
index 000000000..9fd9e0cb5
--- /dev/null
+++ b/extra/xorg-xprop/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 113811 2011-03-10 15:49:11Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xorg-xprop
+pkgver=1.2.0
+pkgrel=2
+pkgdesc="Property displayer for X"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libx11')
+makedepends=('xorg-util-macros')
+groups=('xorg-apps' 'xorg')
+source=(http://xorg.freedesktop.org/archive/individual/app/xprop-${pkgver}.tar.bz2)
+sha1sums=('278f83c5077eed1d96c180bdc0a6f22ba5279a66')
+
+build() {
+ cd "${srcdir}/xprop-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xorg-xrandr/PKGBUILD b/extra/xorg-xrandr/PKGBUILD
new file mode 100644
index 000000000..483f2748c
--- /dev/null
+++ b/extra/xorg-xrandr/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 113816 2011-03-10 15:50:41Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xorg-xrandr
+pkgver=1.3.4
+pkgrel=2
+pkgdesc="Primitive command line interface to RandR extension"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libxrandr' 'libx11')
+makedepends=('xorg-util-macros')
+groups=('xorg-apps' 'xorg')
+source=(http://xorg.freedesktop.org/archive/individual/app/xrandr-${pkgver}.tar.bz2)
+sha1sums=('637949501b8a45d32d9cab809e8822ee45b69414')
+
+build() {
+ cd "${srcdir}/xrandr-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+ rm -f "${pkgdir}/usr/bin/xkeystone"
+}
diff --git a/extra/xorg-xrdb/PKGBUILD b/extra/xorg-xrdb/PKGBUILD
new file mode 100644
index 000000000..cb84e2d49
--- /dev/null
+++ b/extra/xorg-xrdb/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 113821 2011-03-10 15:52:04Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xorg-xrdb
+pkgver=1.0.8
+pkgrel=2
+pkgdesc="X server resource database utility"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libx11' 'libxmu' 'mcpp')
+makedepends=('xorg-util-macros')
+groups=('xorg-apps' 'xorg')
+source=(http://xorg.freedesktop.org/archive/individual/app/xrdb-${pkgver}.tar.bz2)
+sha1sums=('9bfdd09a2b303b962439910f7bccaddd69b6ca8a')
+
+build() {
+ cd "${srcdir}/xrdb-${pkgver}"
+ ./configure --prefix=/usr --with-cpp=/usr/bin/mcpp
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xorg-xrefresh/PKGBUILD b/extra/xorg-xrefresh/PKGBUILD
new file mode 100644
index 000000000..74d49b040
--- /dev/null
+++ b/extra/xorg-xrefresh/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 113826 2011-03-10 15:53:23Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xorg-xrefresh
+pkgver=1.0.4
+pkgrel=2
+pkgdesc="Refresh all or part of an X screen"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libx11')
+makedepends=('xorg-util-macros')
+groups=('xorg-apps' 'xorg')
+source=(http://xorg.freedesktop.org/archive/individual/app/xrefresh-${pkgver}.tar.bz2)
+sha1sums=('5e85ee14ea9a357c1d4372bbc068a8d452a134aa')
+
+build() {
+ cd "${srcdir}/xrefresh-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xorg-xset/PKGBUILD b/extra/xorg-xset/PKGBUILD
new file mode 100644
index 000000000..d812a5a11
--- /dev/null
+++ b/extra/xorg-xset/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 113831 2011-03-10 15:57:21Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xorg-xset
+pkgver=1.2.1
+pkgrel=2
+pkgdesc="User preference utility for X"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libxmu')
+makedepends=('xorg-util-macros')
+groups=('xorg-apps' 'xorg')
+source=(http://xorg.freedesktop.org/archive/individual/app/xset-${pkgver}.tar.bz2)
+sha1sums=('9b1eb8835637dd70eea1a1365df5d909a306cc2c')
+
+build() {
+ cd "${srcdir}/xset-${pkgver}"
+ ./configure --prefix=/usr --without-fontcache --without-xf86misc
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xorg-xsetroot/PKGBUILD b/extra/xorg-xsetroot/PKGBUILD
new file mode 100644
index 000000000..35b800dca
--- /dev/null
+++ b/extra/xorg-xsetroot/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 113846 2011-03-10 16:01:58Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xorg-xsetroot
+pkgver=1.1.0
+pkgrel=2
+pkgdesc="Classic X utility to set your root window background to a given pattern or color"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libxmu' 'libx11' 'libxcursor')
+makedepends=('xorg-util-macros' 'xbitmaps')
+groups=('xorg-apps' 'xorg')
+source=(http://xorg.freedesktop.org/archive/individual/app/xsetroot-${pkgver}.tar.bz2)
+sha1sums=('1ef9ddd80c7013dc6d33e5c421537eb8b0427da4')
+
+build() {
+ cd "${srcdir}/xsetroot-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xorg-xvidtune/PKGBUILD b/extra/xorg-xvidtune/PKGBUILD
new file mode 100644
index 000000000..308b8088d
--- /dev/null
+++ b/extra/xorg-xvidtune/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xorg-xvidtune
+pkgver=1.0.2
+pkgrel=1
+pkgdesc="Video mode tuner for Xorg"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libxxf86vm' 'libxt' 'libxaw' 'libxmu' 'libx11')
+makedepends=('xorg-util-macros')
+source=(http://xorg.freedesktop.org/archive/individual/app/xvidtune-${pkgver}.tar.bz2)
+sha1sums=('2f3f821943018c07efd4547afa4313ac92718b1e')
+
+build() {
+ cd "${srcdir}/xvidtune-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xorg-xvinfo/PKGBUILD b/extra/xorg-xvinfo/PKGBUILD
new file mode 100644
index 000000000..f125fa32d
--- /dev/null
+++ b/extra/xorg-xvinfo/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 113836 2011-03-10 15:58:02Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xorg-xvinfo
+pkgver=1.1.1
+pkgrel=2
+pkgdesc="Prints out the capabilities of any video adaptors associated with the display that are accessible through the X-Video extension"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libx11' 'libxv')
+makedepends=('xorg-util-macros')
+groups=('xorg-apps' 'xorg')
+source=(http://xorg.freedesktop.org/archive/individual/app/xvinfo-${pkgver}.tar.bz2)
+sha1sums=('dc326464748fa608da50386112a89024804c1910')
+
+build() {
+ cd "${srcdir}/xvinfo-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xorg-xwd/PKGBUILD b/extra/xorg-xwd/PKGBUILD
new file mode 100644
index 000000000..1634c5d93
--- /dev/null
+++ b/extra/xorg-xwd/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 113841 2011-03-10 16:01:03Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xorg-xwd
+pkgver=1.0.4
+pkgrel=2
+pkgdesc="X Window System image dumping utility"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libx11')
+makedepends=('xorg-util-macros')
+groups=('xorg-apps' 'xorg')
+source=(http://xorg.freedesktop.org/archive/individual/app/xwd-${pkgver}.tar.bz2)
+sha1sums=('4ef4fd9072a507e9a1ee88ba1d28b314006cc109')
+
+build() {
+ cd "${srcdir}/xwd-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xorg-xwininfo/PKGBUILD b/extra/xorg-xwininfo/PKGBUILD
new file mode 100644
index 000000000..785353a88
--- /dev/null
+++ b/extra/xorg-xwininfo/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 113851 2011-03-10 16:03:22Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xorg-xwininfo
+pkgver=1.1.1
+pkgrel=2
+pkgdesc="Command-line utility to print information about windows on an X server"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libxcb')
+makedepends=('xorg-util-macros' 'libx11')
+groups=('xorg-apps' 'xorg')
+source=(http://xorg.freedesktop.org/archive/individual/app/xwininfo-${pkgver}.tar.bz2)
+sha1sums=('945e5d51632876e304e001003c8068f34ffe299e')
+
+build() {
+ cd "${srcdir}/xwininfo-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xorg-xwud/PKGBUILD b/extra/xorg-xwud/PKGBUILD
new file mode 100644
index 000000000..c7c593386
--- /dev/null
+++ b/extra/xorg-xwud/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 113855 2011-03-10 16:04:19Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xorg-xwud
+pkgver=1.0.3
+pkgrel=2
+pkgdesc="X Window System image undumping utility"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libx11')
+makedepends=('xorg-util-macros')
+groups=('xorg-apps' 'xorg')
+source=(http://xorg.freedesktop.org/archive/individual/app/xwud-${pkgver}.tar.bz2)
+sha1sums=('2e706d50c7039e3daa4963d36ab703e48aa652ed')
+
+build() {
+ cd "${srcdir}/xwud-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xournal/PKGBUILD b/extra/xournal/PKGBUILD
new file mode 100644
index 000000000..e9c825e26
--- /dev/null
+++ b/extra/xournal/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id: PKGBUILD 108182 2011-01-30 14:22:10Z ibiru $
+# Contributor:
+# Maintainer:
+
+pkgname=xournal
+pkgver=0.4.5
+pkgrel=4
+pkgdesc='Notetaking and sketching application'
+arch=('i686' 'x86_64')
+url='http://xournal.sourceforge.net/'
+license=('GPL')
+depends=('libgnomecanvas' 'poppler-glib' 'shared-mime-info' 'desktop-file-utils' 'hicolor-icon-theme')
+optdepends=('ghostscript: import PS/PDF files as bitmap backgrounds')
+install=xournal.install
+source=("http://downloads.sourceforge.net/xournal/xournal-${pkgver}.tar.gz"
+ 'pdf-export-64.patch')
+sha1sums=('390cb275774469ed1b04b7268dd625bd456c895e'
+ 'f23f53b9f69ba8a5773c53d7bca99abf9d8504f8')
+
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -p1 < ../pdf-export-64.patch # from xournal CVS, see FS#21693
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install desktop-install
+}
diff --git a/extra/xournal/pdf-export-64.patch b/extra/xournal/pdf-export-64.patch
new file mode 100644
index 000000000..9f7075c54
--- /dev/null
+++ b/extra/xournal/pdf-export-64.patch
@@ -0,0 +1,89 @@
+diff -aur old/src/xo-print.c new/src/xo-print.c
+--- old/src/xo-print.c 2009-09-28 23:36:54.000000000 +0200
++++ new/src/xo-print.c 2009-11-15 06:06:00.000000000 +0100
+@@ -761,7 +761,7 @@
+
+ make_xref(xref, xref->last+1, pdfbuf->len);
+ g_string_append_printf(pdfbuf,
+- "%d 0 obj\n<< /Length %d /Filter /FlateDecode /Type /Xobject "
++ "%d 0 obj\n<< /Length %zu /Filter /FlateDecode /Type /Xobject "
+ "/Subtype /Image /Width %d /Height %d /ColorSpace /DeviceRGB "
+ "/BitsPerComponent 8 >> stream\n",
+ xref->last, zpix->len, width, height);
+@@ -840,8 +840,10 @@
+ gboolean fallback, is_binary;
+ guchar encoding[256];
+ gushort glyphs[256];
+- int i, j, num, len1, len2;
+- gsize len;
++ int i, j, num;
++ guint32 len1, len2;
++ guint32 tt_len;
++ gsize t1_len;
+ TrueTypeFont *ttfnt;
+ char *seg1, *seg2;
+ char *fontdata, *p;
+@@ -862,14 +864,14 @@
+ }
+ font->num_glyphs_used = num-1;
+ if (OpenTTFont(font->filename, 0, &ttfnt) == SF_OK) {
+- if (CreateTTFromTTGlyphs_tomemory(ttfnt, (guint8**)&fontdata, &len, glyphs, encoding, num,
++ if (CreateTTFromTTGlyphs_tomemory(ttfnt, (guint8**)&fontdata, &tt_len, glyphs, encoding, num,
+ 0, NULL, TTCF_AutoName | TTCF_IncludeOS2) == SF_OK) {
+ make_xref(xref, xref->last+1, pdfbuf->len);
+ nobj_fontprog = xref->last;
+ g_string_append_printf(pdfbuf,
+- "%d 0 obj\n<< /Length %d /Length1 %d >> stream\n",
+- nobj_fontprog, (int)len, (int)len);
+- g_string_append_len(pdfbuf, fontdata, len);
++ "%d 0 obj\n<< /Length %u /Length1 %u >> stream\n",
++ nobj_fontprog, tt_len, tt_len);
++ g_string_append_len(pdfbuf, fontdata, tt_len);
+ g_string_append(pdfbuf, "endstream\nendobj\n");
+ g_free(fontdata);
+ }
+@@ -879,7 +881,7 @@
+ else fallback = TRUE;
+ } else {
+ // embed the font file: Type1 case
+- if (g_file_get_contents(font->filename, &fontdata, &len, NULL) && len>=8) {
++ if (g_file_get_contents(font->filename, &fontdata, &t1_len, NULL) && t1_len>=8) {
+ if (fontdata[0]==(char)0x80 && fontdata[1]==(char)0x01) {
+ is_binary = TRUE;
+ len1 = pfb_get_length((unsigned char *)fontdata+2);
+@@ -898,7 +900,7 @@
+ if (*p=='\n' || *p=='\r') p++;
+ if (*p=='\n' || *p=='\r') p++;
+ len1 = p-fontdata;
+- p = g_strrstr_len(fontdata, len, T1_SEGMENT_3_END);
++ p = g_strrstr_len(fontdata, t1_len, T1_SEGMENT_3_END);
+ if (p==NULL) fallback = TRUE;
+ else {
+ // rewind 512 zeros
+@@ -936,7 +938,7 @@
+ make_xref(xref, xref->last+1, pdfbuf->len);
+ nobj_fontprog = xref->last;
+ g_string_append_printf(pdfbuf,
+- "%d 0 obj\n<< /Length %d /Length1 %d /Length2 %d /Length3 0 >> stream\n",
++ "%d 0 obj\n<< /Length %u /Length1 %u /Length2 %u /Length3 0 >> stream\n",
+ nobj_fontprog, len1+len2, len1, len2);
+ g_string_append_len(pdfbuf, seg1, len1);
+ g_string_append_len(pdfbuf, seg2, len2);
+@@ -1258,7 +1260,7 @@
+ tmpstr = make_pdfprefix(pdfinfo.pages+(pg->bg->file_page_seq-1),
+ pg->width, pg->height);
+ g_string_append_printf(pdfbuf,
+- "%d 0 obj\n<< /Length %d >> stream\n%s\nendstream\nendobj\n",
++ "%d 0 obj\n<< /Length %zu >> stream\n%s\nendstream\nendobj\n",
+ n_obj_prefix, tmpstr->len, tmpstr->str);
+ g_string_free(tmpstr, TRUE);
+ g_string_prepend(pgstrm, "Q Q Q ");
+@@ -1276,7 +1278,7 @@
+
+ make_xref(&xref, xref.last+1, pdfbuf->len);
+ g_string_append_printf(pdfbuf,
+- "%d 0 obj\n<< /Length %d /Filter /FlateDecode>> stream\n",
++ "%d 0 obj\n<< /Length %zu /Filter /FlateDecode>> stream\n",
+ xref.last, zpgstrm->len);
+ g_string_append_len(pdfbuf, zpgstrm->str, zpgstrm->len);
+ g_string_free(zpgstrm, TRUE);
diff --git a/extra/xournal/xournal.install b/extra/xournal/xournal.install
new file mode 100644
index 000000000..dfcb68374
--- /dev/null
+++ b/extra/xournal/xournal.install
@@ -0,0 +1,13 @@
+post_install() {
+ update-desktop-database -q
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+ update-mime-database usr/share/mime &>/dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/extra/xpdf/PKGBUILD b/extra/xpdf/PKGBUILD
new file mode 100644
index 000000000..3fda983cf
--- /dev/null
+++ b/extra/xpdf/PKGBUILD
@@ -0,0 +1,74 @@
+# $Id: PKGBUILD 117882 2011-04-04 21:05:28Z bisson $
+# Maintainer: Gaetan Bisson <bisson@archlinux.org>
+# Contributor: tobias <tobias@archlinux.org>
+# Contributor: Sarah Hay <sarahhay@mb.sympatico.ca>
+
+pkgname=xpdf
+_srcver=3.02
+_patchlevel=pl6
+pkgver=${_srcver}_${_patchlevel}
+pkgrel=1
+pkgdesc="A viewer for Portable Document Format (PDF) files"
+arch=('i686' 'x86_64')
+license=('GPL')
+depends=('lesstif' 'gsfonts' 'libxt' 'desktop-file-utils')
+optdepends=('poppler: pdf tools that used to be included in xpdf')
+backup=('etc/xpdfrc')
+url="http://www.foolabs.com/xpdf/"
+install=${pkgname}.install
+source=(ftp://ftp.foolabs.com/pub/${pkgname}/${pkgname}-${_srcver}.tar.gz
+ ftp://ftp.foolabs.com/pub/${pkgname}/${pkgname}-${_srcver}pl1.patch
+ ftp://ftp.foolabs.com/pub/${pkgname}/${pkgname}-${_srcver}pl2.patch
+ ftp://ftp.foolabs.com/pub/${pkgname}/${pkgname}-${_srcver}pl3.patch
+ ftp://ftp.foolabs.com/pub/${pkgname}/${pkgname}-${_srcver}pl4.patch
+ ftp://ftp.foolabs.com/pub/${pkgname}/${pkgname}-${_srcver}pl5.patch
+ xpdf-3.00-xfont.patch
+ xpdf.desktop)
+md5sums=('599dc4cc65a07ee868cf92a667a913d2'
+ '877118786dfe27d1b7aa5a6759cc6e45'
+ '3a5cb165ae66781e0b21e6219ae06795'
+ '581963ede0fb5715e1a69f01b5b8ce63'
+ '70b752716798dd341a4bf890df5f6fdc'
+ '504902ca5e9d66c67eed03636ec6b163'
+ '6490de55687e0d2389212c1b5bbcf916'
+ '93b9df5ebef3bc56133236ef3f176bb7')
+
+build() {
+ cd "${srcdir}/${pkgname}-${_srcver}"
+
+ patch -Np1 -i "${srcdir}/${pkgname}-${_srcver}pl1.patch"
+ patch -Np1 -i "${srcdir}/${pkgname}-${_srcver}pl2.patch"
+ patch -Np1 -i "${srcdir}/${pkgname}-${_srcver}pl3.patch"
+ patch -Np1 -i "${srcdir}/${pkgname}-${_srcver}pl4.patch"
+ patch -Np1 -i "${srcdir}/${pkgname}-${_srcver}pl5.patch"
+ patch -Np1 -i "${srcdir}/xpdf-3.00-xfont.patch"
+ sed -i 's:/usr/share/fonts/type1/gsfonts:/usr/share/fonts/Type1:' xpdf/GlobalParams.cc
+
+ ./configure \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --enable-multithreaded \
+ --enable-wordlist \
+ --with-freetype2-library=/usr/lib \
+ --with-freetype2-includes=/usr/include/freetype2 \
+ --x-includes=/usr/include \
+ --with-Xm-library=/usr/lib \
+ --with-Xm-includes=/usr/include
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${_srcver}"
+ make DESTDIR="${pkgdir}" install
+
+ # remove some libs and manpages provided by poppler now
+ for tool in pdffonts pdfimages pdfinfo pdftoppm pdftops pdftotext ; do
+ rm -f "${pkgdir}/usr/bin/${tool}"
+ rm -f "${pkgdir}/usr/share/man/man1/${tool}.1"
+ done
+ install -m755 -d ${pkgdir}/usr/share/applications
+ install -m644 "${srcdir}/xpdf.desktop" "${pkgdir}/usr/share/applications/"
+ install -m755 -d ${pkgdir}/usr/share/pixmaps
+ install -m644 xpdf/xpdfIcon.xpm ${pkgdir}/usr/share/pixmaps/xpdf.xpm
+}
diff --git a/extra/xpdf/xpdf-3.00-xfont.patch b/extra/xpdf/xpdf-3.00-xfont.patch
new file mode 100644
index 000000000..50dcec2bb
--- /dev/null
+++ b/extra/xpdf/xpdf-3.00-xfont.patch
@@ -0,0 +1,11 @@
+--- xpdf-3.00/xpdf/XPDFViewer.cc.orig 2004-10-12 12:24:57.055068037 +0200
++++ xpdf-3.00/xpdf/XPDFViewer.cc 2004-10-12 12:24:47.707449614 +0200
+@@ -1742,7 +1742,7 @@
+ aboutBigFont =
+ createFontList("-*-times-bold-i-normal--20-*-*-*-*-*-iso8859-1");
+ aboutVersionFont =
+- createFontList("-*-times-medium-r-normal--16-*-*-*-*-*-iso8859-1");
++ createFontList("-*-times-medium-r-normal--14-*-*-*-*-*-iso8859-1");
+ aboutFixedFont =
+ createFontList("-*-courier-medium-r-normal--12-*-*-*-*-*-iso8859-1");
+
diff --git a/extra/xpdf/xpdf.desktop b/extra/xpdf/xpdf.desktop
new file mode 100644
index 000000000..06830ecda
--- /dev/null
+++ b/extra/xpdf/xpdf.desktop
@@ -0,0 +1,9 @@
+[Desktop Entry]
+Name=Xpdf
+Comment=Views Adobe PDF (acrobat) files
+Exec=xpdf
+Terminal=false
+Type=Application
+Icon=xpdf
+Categories=Office;
+MimeType=application/pdf;
diff --git a/extra/xpdf/xpdf.install b/extra/xpdf/xpdf.install
new file mode 100644
index 000000000..e111ef946
--- /dev/null
+++ b/extra/xpdf/xpdf.install
@@ -0,0 +1,11 @@
+post_install() {
+ update-desktop-database -q
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/extra/xplc/PKGBUILD b/extra/xplc/PKGBUILD
new file mode 100644
index 000000000..402abc2ca
--- /dev/null
+++ b/extra/xplc/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 97257 2010-10-28 04:11:13Z allan $
+# Maintainer: dorphell <dorphell@archlinux.org>
+pkgname=xplc
+pkgver=0.3.13
+pkgrel=3
+pkgdesc="Cross-Platform Lightweight Components"
+arch=(i686 x86_64)
+url="http://xplc.sourceforge.net"
+license=('LGPL')
+depends=('gcc-libs')
+source=(http://downloads.sourceforge.net/sourceforge/xplc/$pkgname-$pkgver.tar.gz)
+md5sums=('39da3270527c8712b8e8fcf03768d29f')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+
+ export LDFLAGS="${LDFLAGS//-Wl,--as-needed}"
+
+ ./configure --prefix=/usr --mandir=/usr/share/man --without-libuuid
+ make
+}
+
+package() {
+ cd $srcdir/$pkgname-$pkgver
+ make DESTDIR=$pkgdir install
+ mv $pkgdir/usr/share/man/man1/{uuidgen.1,uuidcdef.1}
+ rm -f $pkgdir/usr/bin/uuidgen
+}
diff --git a/extra/xsane/PKGBUILD b/extra/xsane/PKGBUILD
new file mode 100644
index 000000000..531985301
--- /dev/null
+++ b/extra/xsane/PKGBUILD
@@ -0,0 +1,66 @@
+# $Id: PKGBUILD 100458 2010-11-23 17:10:57Z tpowa $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+# Contributor: Sarah Hay <sarahhay@mb.sympatico.ca>
+
+pkgbase=xsane
+pkgname=('xsane' 'xsane-gimp')
+pkgver=0.998
+pkgrel=1
+arch=(i686 x86_64)
+url="http://www.xsane.org"
+license=('GPL2')
+makedepends=('gtk2' 'lcms' 'sane' 'zlib' 'libjpeg' 'gimp')
+source=(http://www.xsane.org/download/$pkgname-$pkgver.tar.gz
+ xsane-0.995-xdg-open.patch)
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ # fix use "xdg-open" instead of "netscape" to launch help browser - taken from Fedora
+ patch -Np1 -i ${srcdir}/xsane-0.995-xdg-open.patch || return 1
+
+ ./configure --prefix=/usr --mandir=/usr/share/man --enable-gimp
+ /usr/bin/make || return 1
+ mv src/xsane src/xsane-gimp
+
+ # build again with gimp enabled
+ make clean
+ ./configure --prefix=/usr --mandir=/usr/share/man --disable-gimp
+}
+
+package_xsane() {
+ pkgdesc="A GTK-based X11 frontend for SANE and plugin for Gimp."
+ install=$pkgname.install
+ depends=('gtk2' 'lcms' 'sane' 'zlib' 'libjpeg')
+ optdepends=('xsane-gimp; for gimp plugin support')
+ cd "$srcdir/$pkgname-$pkgver"
+ make DESTDIR="$pkgdir" install || return 1
+}
+
+package_xsane-gimp() {
+ pkgdesc="XSane Gimp plugin"
+ depends=('xsane' 'gimp')
+ cd "$srcdir/$pkgname-$pkgver"
+ install -D -m755 src/xsane-gimp ${pkgdir}/usr/bin/xsane-gimp || return 1
+
+ ## For making Gimp Plugin available
+ /bin/mkdir -p "$pkgdir/usr/lib/gimp/2.0/plug-ins"
+ cd "$pkgdir/usr/lib/gimp/2.0/plug-ins/"
+ /bin/ln -s ../../../../bin/xsane-gimp xsane
+
+# http://cvs.fedoraproject.org/viewvc/rpms/xsane/devel/xsane.spec?revision=1.80&view=markup
+# when makepkg will allow splitted pkg install file support we might change add a xsane-gimp.install file with the commands that are used by fedora,
+# gentoo has something similar
+#%post gimp
+#107 if [ -x "%{_sbindir}/gimp-plugin-mgr" ]; then
+#108 %{_sbindir}/gimp-plugin-mgr --install xsane
+#109 fi
+#110
+#111 %preun gimp
+#112 if [ $1 = 0 ]; then
+#113 if [ -x "%{_sbindir}/gimp-plugin-mgr" ]; then
+#114 %{_sbindir}/gimp-plugin-mgr --uninstall xsane
+#115 fi
+#116 fi
+}
+md5sums=('936f1cc76b37caa8f285e1e15ac7e0aa'
+ '15541ff0ddc10acfa2059cf99d5478eb')
diff --git a/extra/xsane/xsane-0.995-xdg-open.patch b/extra/xsane/xsane-0.995-xdg-open.patch
new file mode 100644
index 000000000..db1f9bd68
--- /dev/null
+++ b/extra/xsane/xsane-0.995-xdg-open.patch
@@ -0,0 +1,12 @@
+diff -up xsane-0.995/src/xsane.h.xdg-open xsane-0.995/src/xsane.h
+--- xsane-0.995/src/xsane.h.xdg-open 2007-08-13 09:20:32.000000000 +0200
++++ xsane-0.995/src/xsane.h 2007-11-23 11:50:49.000000000 +0100
+@@ -251,7 +251,7 @@
+ # elif defined(HAVE_OS2_H)
+ # define DEFAULT_BROWSER "netscape"
+ # else
+-# define DEFAULT_BROWSER "netscape"
++# define DEFAULT_BROWSER "xdg-open"
+ # endif
+ #endif
+
diff --git a/extra/xsane/xsane.install b/extra/xsane/xsane.install
new file mode 100644
index 000000000..aa3e3b8f8
--- /dev/null
+++ b/extra/xsane/xsane.install
@@ -0,0 +1,16 @@
+# arg 1: the new package version
+# arg 2: the old package version
+
+post_install() {
+ echo "NOTE:"
+ echo " If you experience any problems after installing xsane "
+ echo " it may help to remove the setup and preferences files"
+ echo " of xsane:"
+ echo ""
+ echo " \$ rm -rf ~/.sane/xsane"
+ echo ""
+}
+
+post_upgrade() {
+ post_install $1
+}
diff --git a/extra/xscreensaver/ChangeLog b/extra/xscreensaver/ChangeLog
new file mode 100644
index 000000000..ea08818fc
--- /dev/null
+++ b/extra/xscreensaver/ChangeLog
@@ -0,0 +1,46 @@
+2010-09-26 Eric Belanger <eric@archlinux.org>
+
+ * xscreensaver 5.12-1
+ * Upstream update
+ * Added libxxf86vm depends
+
+2010-05-17 Eric Belanger <eric@archlinux.org>
+
+ * xscreensaver 5.11-1
+ * Upstream update
+
+2009-10-17 Eric Belanger <eric@archlinux.org>
+
+ * xscreensaver 5.10-2
+ * Added support for electricsheep (close FS#16400)
+
+2009-09-09 Eric Belanger <eric@archlinux.org>
+
+ * xscreensaver 5.10-1
+ * Upstream update
+
+2009-09-03 Eric Belanger <eric@archlinux.org>
+
+ * xscreensaver 5.09-1
+ * Upstream update
+
+2009-01-02 Eric Belanger <eric@archlinux.org>
+
+ * xscreensaver 5.08-1
+ * Upstream update
+
+2008-08-11 Eric Belanger <eric@archlinux.org>
+
+ * xscreensaver 5.07-1
+ * Upstream update
+
+2008-07-18 Eric Belanger <eric@archlinux.org>
+
+ * xscreensaver 5.06-1
+ * Upstream update
+
+2008-03-02 Eric Belanger <eric@archlinux.org>
+
+ * xscreensaver 5.05-1
+ * Upstream update
+ * FHS man pages
diff --git a/extra/xscreensaver/LICENSE b/extra/xscreensaver/LICENSE
new file mode 100644
index 000000000..4f587b5a3
--- /dev/null
+++ b/extra/xscreensaver/LICENSE
@@ -0,0 +1,9 @@
+/* xscreensaver, Copyright (c) 1993-2006 Jamie Zawinski <jwz@jwz.org>
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation. No representations are made about the suitability of this
+ * software for any purpose. It is provided "as is" without express or
+ * implied warranty.
+ */
diff --git a/extra/xscreensaver/PKGBUILD b/extra/xscreensaver/PKGBUILD
new file mode 100644
index 000000000..4e324f05f
--- /dev/null
+++ b/extra/xscreensaver/PKGBUILD
@@ -0,0 +1,38 @@
+# $Id: PKGBUILD 113959 2011-03-10 22:37:48Z jgc $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+
+pkgname=xscreensaver
+pkgver=5.12
+pkgrel=2
+pkgdesc="Screen saver and locker for the X Window System"
+arch=('i686' 'x86_64')
+url="http://www.jwz.org/xscreensaver/"
+license=('BSD')
+depends=('libxxf86vm' 'libglade' 'mesa' 'pam' 'xorg-appres' 'libxmu')
+makedepends=('bc')
+backup=('etc/pam.d/xscreensaver')
+source=(http://www.jwz.org/xscreensaver/${pkgname}-${pkgver}.tar.gz \
+ add-electricsheep.diff xscreensaver.pam LICENSE)
+md5sums=('0345c1acb9280729de05c5ca44b401e3' 'f82524626ed8a6832cd279e0548a9b46'\
+ '367a3538f54db71f108b34cfa31088ac' '5e7f3f2a63d20a484742f5b4cb5d572c')
+sha1sums=('7252540b1b1853459a56453714c0974de26fa4c5' '65c2933380267475f2c4560bc22f4350393b00ce'\
+ '106635aa1aae51d6f0668b1853f6c49a4fe9d3d8' '4209ea586b204fd1d81c382a0522c654f9fd9134')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np0 -i "${srcdir}/add-electricsheep.diff"
+ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \
+ --libexecdir=/usr/lib --with-x-app-defaults=/usr/share/X11/app-defaults \
+ --with-pam --without-motif --with-gtk --with-gl \
+ --without-gle --with-xpm --with-pixbuf --with-jpeg
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make install_prefix="${pkgdir}" install
+ install -D -m644 ../LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+ install -D -m644 ../xscreensaver.pam "${pkgdir}/etc/pam.d/xscreensaver"
+ chmod 755 "${pkgdir}/usr/bin/xscreensaver"
+ echo "NotShowIn=KDE;GNOME;" >> "${pkgdir}/usr/share/applications/xscreensaver-properties.desktop"
+}
diff --git a/extra/xscreensaver/add-electricsheep.diff b/extra/xscreensaver/add-electricsheep.diff
new file mode 100644
index 000000000..964de649f
--- /dev/null
+++ b/extra/xscreensaver/add-electricsheep.diff
@@ -0,0 +1,12 @@
+--- driver/XScreenSaver.ad.in-orig 2009-10-17 02:19:06.000000000 -0400
++++ driver/XScreenSaver.ad.in 2009-10-17 02:21:16.000000000 -0400
+@@ -347,7 +347,8 @@
+ - lcdscrub -root \n\
+ @GL_KLUDGE@ GL: photopile -root \n\
+ @GL_KLUDGE@ GL: skytentacles -root \n\
+-@GL_KLUDGE@ GL: rubikblocks -root \n
++@GL_KLUDGE@ GL: rubikblocks -root \n\
++ electricsheep --root 1 \n
+
+
+
diff --git a/extra/xscreensaver/xscreensaver.pam b/extra/xscreensaver/xscreensaver.pam
new file mode 100644
index 000000000..b4d80c21f
--- /dev/null
+++ b/extra/xscreensaver/xscreensaver.pam
@@ -0,0 +1 @@
+auth required pam_unix_auth.so
diff --git a/extra/xsp/PKGBUILD b/extra/xsp/PKGBUILD
new file mode 100644
index 000000000..e78ba6aa7
--- /dev/null
+++ b/extra/xsp/PKGBUILD
@@ -0,0 +1,61 @@
+# $Id: PKGBUILD 111514 2011-02-27 11:35:42Z daniel $
+# Maintainer: Daniel Isenmann <daniel@archlinux.org>
+# Contributor: Tobias Kieslich <tobias@justdreams.de>
+
+pkgname=xsp
+pkgver=2.10
+pkgrel=1
+pkgdesc="A simple webserver based on mono - provides ASP.NET support"
+arch=(i686 x86_64)
+license=('custom')
+url="http://www.go-mono.com"
+depends=('mono>=2.10.1' 'sqlite3')
+options=(!makeflags)
+install=${pkgname}.install
+source=(http://ftp.novell.com/pub/mono/sources/${pkgname}/${pkgname}-${pkgver}.tar.bz2 \
+ ${pkgname}.rc.d ${pkgname}.conf.d ${pkgname}.webapp)
+md5sums=('aec9369a00a9728801ea2587a1a8fd9c'
+ '9575bd7d6f64d51ba05bdd6370665858'
+ '35d921df0fefc30f47a438c95d420efc'
+ 'c917c07f68b945691506c29750db482f')
+
+build() {
+ # get rid of that .wapi errors; thanks to brice
+ export MONO_SHARED_DIR=${srcdir}/src/weird
+ mkdir -p "${MONO_SHARED_DIR}"
+ # import pathes
+ # build
+ cd ${srcdir}/${pkgname}-${pkgver}
+ #sed -i 's|/bin/sh|\0\nexport MONO_PATH=${MONO_PATH}:/opt/mono/lib/mono/1.0|' scripts/script.in
+ ./configure --prefix=/usr --sysconfdir=/etc
+ make || return 1
+ # tweak the xsp shellscript to grab system dll's
+ for script in scripts/*2; do
+ sed -i 's|/usr/lib/mono/1.0|/usr/lib/mono/2.0|' $script
+ done
+ #destdir related bugfixes
+ sed -i 's|mkdir \$(datadir)|mkdir $(DESTDIR)$(datadir)|' test/2.0/treeview/Makefile
+ sed -i 's|gif \$(datadir)|gif $(DESTDIR)$(datadir)|' test/2.0/treeview/Makefile
+}
+
+package(){
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir}/ install
+ # move test files from share to arch' default html home
+ mkdir -p ${pkgdir}/srv/http/html
+ mv ${pkgdir}/usr/lib/xsp/test ${pkgdir}/srv/http/html/xsp
+ rm -rf ${pkgdir}/usr/share
+ chown -R http:http ${pkgdir}/srv/http/html/${pkgname}
+
+ # install a deamon
+ install -D -m755 ${srcdir}/${pkgname}.rc.d \
+ ${pkgdir}/etc/rc.d/${pkgname}
+ # install a deamon configurationfile
+ install -D -m644 ${srcdir}/$pkgname.conf.d \
+ ${pkgdir}/etc/conf.d/${pkgname}
+ # install a xsp configuration home
+ install -D -m644 ${srcdir}/${pkgname}.webapp \
+ ${pkgdir}/etc/${pkgname}/${pkgname}.webapp
+ install -D -m644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/COPYING
+
+}
diff --git a/extra/xsp/xsp.conf.d b/extra/xsp/xsp.conf.d
new file mode 100644
index 000000000..99d634929
--- /dev/null
+++ b/extra/xsp/xsp.conf.d
@@ -0,0 +1,10 @@
+# xsp options
+
+
+# note that is just the helping app for mod_mono if you like production like
+# quality
+# xsp is for ASP testing mainly -- read the manpage for xsp to know what
+# options are available. Archlinux will provide xsp configured by a .webapp
+# configuration file which rests in /etc/xsp
+
+XSP_PARAMS="--appconfigdir /etc/xsp"
diff --git a/extra/xsp/xsp.install b/extra/xsp/xsp.install
new file mode 100644
index 000000000..b8a8f3136
--- /dev/null
+++ b/extra/xsp/xsp.install
@@ -0,0 +1,37 @@
+# arg 1: the new package version
+post_install() {
+ cat << EOM
+
+--> xsp is just the helping app for mod_mono if you like a production like
+--> server. xsp itself is for ASP testing mainly -- read the manpage for xsp
+--> to know which options are available.
+--> Archlinux will provide xsp configured by a .webapp configuration file
+--> which rests in /etc/xsp. Just put your other webapp files there to let
+--> xsp pick them up.
+--> xsp is commandline based configuration is done in /etc/conf.d/xsp. Set all
+--> your arguments there. Don't forget that you can run xsp from the console
+--> as oridinary user, which is safer and for testing absolutely sufficient!!
+
+--> You can run the testpages simply by starting the server and calling
+ http://localhost:8080
+--> from your browser's location bar
+
+
+EOM
+}
+
+# arg 1: the new package version
+# arg 2: the old package version
+post_upgrade() {
+ post_install $1
+}
+
+# arg 1: the old package version
+pre_remove() {
+ /bin/true
+}
+
+# arg 1: the old package version
+post_remove() {
+ /bin/true
+}
diff --git a/extra/xsp/xsp.rc.d b/extra/xsp/xsp.rc.d
new file mode 100644
index 000000000..b4fcda15c
--- /dev/null
+++ b/extra/xsp/xsp.rc.d
@@ -0,0 +1,40 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+# source application-specific settings
+[ -f /etc/conf.d/xsp ] && . /etc/conf.d/xsp
+
+PID=`pidof -o %PPID /usr/bin/mono`
+case "$1" in
+ start)
+ stat_busy "Starting Xsp Daemon"
+ if [ -z "$PID" ]; then
+ /usr/bin/xsp $XSP_PARAMS --nonstop &> /dev/null &
+ fi
+ if [ ! -z "$PID" -o $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon xsp
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping Xsp Daemon"
+ [ ! -z "$PID" ] && kill $PID &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon xsp
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
diff --git a/extra/xsp/xsp.webapp b/extra/xsp/xsp.webapp
new file mode 100644
index 000000000..a685dd171
--- /dev/null
+++ b/extra/xsp/xsp.webapp
@@ -0,0 +1,8 @@
+<apps>
+ <web-application>
+ <name>Root</name>
+ <vpath>/</vpath>
+ <path>/srv/http/html/xsp</path>
+ <vhost>localhost</vhost>
+ </web-application>
+</apps>
diff --git a/extra/xterm/LICENSE b/extra/xterm/LICENSE
new file mode 100644
index 000000000..518a2cc06
--- /dev/null
+++ b/extra/xterm/LICENSE
@@ -0,0 +1,73 @@
+/***********************************************************
+
+Copyright 2002-2008,2009 by Thomas E. Dickey
+
+ All Rights Reserved
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name(s) of the above copyright
+holders shall not be used in advertising or otherwise to promote the
+sale, use or other dealings in this Software without prior written
+authorization.
+
+Copyright 1987, 1988 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard.
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name of Digital not be used in
+advertising or publicity pertaining to distribution of the software
+without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+******************************************************************/
diff --git a/extra/xterm/PKGBUILD b/extra/xterm/PKGBUILD
new file mode 100644
index 000000000..a64650781
--- /dev/null
+++ b/extra/xterm/PKGBUILD
@@ -0,0 +1,57 @@
+# $Id: PKGBUILD 113886 2011-03-10 17:49:42Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Alexander Baldeck <alexander@archlinux.org>
+
+pkgname=xterm
+pkgver=269
+pkgrel=1
+pkgdesc="X Terminal Emulator"
+arch=('i686' 'x86_64')
+url="http://invisible-island.net/xterm/"
+license=('custom')
+depends=('libxft' 'libxaw' 'ncurses' 'xorg-luit' 'xbitmaps')
+source=(ftp://invisible-island.net/${pkgname}/${pkgname}-${pkgver}.tgz
+ LICENSE)
+md5sums=('d32150a7c1b2a8b6e2cbc95d180b9fec'
+ '10ecc3f8ee91e3189863a172f68282d2')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr \
+ --libdir=/etc \
+ --mandir=/usr/share/man \
+ --with-app-defaults=/usr/share/X11/app-defaults/ \
+ --with-x \
+ --disable-full-tgetent \
+ --disable-imake \
+ --enable-ansi-color \
+ --enable-88-color \
+ --enable-256-color \
+ --enable-broken-osc \
+ --enable-broken-st \
+ --enable-load-vt-fonts \
+ --enable-i18n \
+ --enable-wide-chars \
+ --enable-doublechars \
+ --enable-warnings \
+ --enable-tcap-query \
+ --enable-logging \
+ --enable-dabbrev \
+ --enable-freetype \
+ --enable-luit \
+ --enable-mini-luit \
+ --enable-narrowproto \
+ --enable-exec-xterm \
+ --with-tty-group=tty
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+ chmod 0755 "${pkgdir}/usr/bin/xterm"
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 "${srcdir}/LICENSE" \
+ "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/extra/xulrunner/PKGBUILD b/extra/xulrunner/PKGBUILD
new file mode 100644
index 000000000..8397152ca
--- /dev/null
+++ b/extra/xulrunner/PKGBUILD
@@ -0,0 +1,61 @@
+# $Id: PKGBUILD 115811 2011-03-21 17:44:12Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Alexander Baldeck <alexander@archlinux.org>
+pkgname=xulrunner
+pkgver=2.0
+_ffoxver=4.0
+pkgrel=1
+pkgdesc="Mozilla Runtime Environment"
+arch=('i686' 'x86_64')
+license=('MPL' 'GPL' 'LGPL')
+depends=('gtk2' 'gcc-libs' 'libidl2' 'mozilla-common' 'nss' 'libxt' 'libxrender' 'hunspell' 'startup-notification' 'mime-types' 'dbus-glib' 'alsa-lib' 'libevent' 'sqlite3>=3.7.4' 'libnotify')
+makedepends=('zip' 'pkg-config' 'diffutils' 'python2' 'wireless_tools' 'yasm' 'mesa')
+url="http://wiki.mozilla.org/XUL:Xul_Runner"
+source=(http://releases.mozilla.org/pub/mozilla.org/firefox/releases/${_ffoxver}/source/firefox-${_ffoxver}.source.tar.bz2
+ mozconfig
+ mozilla-pkgconfig.patch
+ xulrunner-version.patch
+ xulrunner-omnijar.patch
+ port_gnomevfs_to_gio.patch)
+options=('!emptydirs')
+md5sums=('3468a2c463b4fc2788ba621e4b511c30'
+ '2358a2ddd35bcdd62ff42442dfe548d9'
+ '639ea80e823543dd415b90c0ee804186'
+ 'a0236f6c3e55f60b7888d8cf137ff209'
+ 'dea8c2a57a588bf5f6198ce7b4155655'
+ '42f83468b296452fb754a81a4317ca64')
+build() {
+ cd "${srcdir}/mozilla-2.0"
+ cp "${srcdir}/mozconfig" .mozconfig
+
+ #fix libdir/sdkdir - fedora
+ patch -Np1 -i "${srcdir}/mozilla-pkgconfig.patch"
+
+ #Force installation to the same path for every version
+ patch -Np1 -i "${srcdir}/xulrunner-version.patch"
+
+ #https://bugzilla.mozilla.org/show_bug.cgi?id=620931
+ patch -Np1 -i "${srcdir}/xulrunner-omnijar.patch"
+
+ #https://bugzilla.mozilla.org/show_bug.cgi?id=494163
+ patch -Np1 -i "${srcdir}/port_gnomevfs_to_gio.patch"
+
+ unset CFLAGS
+ unset CXXFLAGS
+
+ make -j1 -f client.mk build MOZ_MAKE_FLAGS="$MAKEFLAGS"
+}
+
+package() {
+ cd "${srcdir}/mozilla-2.0"
+ make -j1 -f client.mk DESTDIR="${pkgdir}" install
+
+ #Remove included dictionaries, add symlink to system myspell path.
+ #Note: this will cause file conflicts when users have installed dictionaries in the old location
+ rm -rf "${pkgdir}/usr/lib/xulrunner-2.0/dictionaries"
+ ln -sf /usr/share/myspell/dicts "${pkgdir}/usr/lib/xulrunner-2.0/dictionaries"
+
+ # add xulrunner library path to ld.so.conf
+ install -d ${pkgdir}/etc/ld.so.conf.d
+ echo "/usr/lib/xulrunner-2.0" > ${pkgdir}/etc/ld.so.conf.d/xulrunner.conf
+}
diff --git a/extra/xulrunner/mozconfig b/extra/xulrunner/mozconfig
new file mode 100644
index 000000000..03a352920
--- /dev/null
+++ b/extra/xulrunner/mozconfig
@@ -0,0 +1,56 @@
+. $topsrcdir/xulrunner/config/mozconfig
+
+ac_add_options --prefix=/usr
+ac_add_options --libdir=/usr/lib
+ac_add_options --with-system-nspr
+ac_add_options --with-system-nss
+ac_add_options --with-system-jpeg
+ac_add_options --with-system-zlib
+ac_add_options --with-system-bz2
+ac_add_options --with-system-png
+ac_add_options --with-system-libevent
+ac_add_options --enable-system-hunspell
+ac_add_options --enable-system-sqlite
+ac_add_options --enable-system-cairo
+ac_add_options --with-pthreads
+
+ac_add_options --enable-default-toolkit=cairo-gtk2
+ac_add_options --enable-safe-browsing
+ac_add_options --enable-extensions=default
+ac_add_options --enable-startup-notification
+ac_add_options --enable-pango
+ac_add_options --enable-svg
+ac_add_options --enable-canvas
+ac_add_options --enable-smil
+ac_add_options --enable-canvas3d
+ac_add_options --enable-places
+ac_add_options --enable-shared-js
+ac_add_options --enable-url-classifier
+
+ac_add_options --enable-optimize
+ac_add_options --enable-strip
+ac_add_options --enable-install-strip
+ac_add_options --enable-jemalloc
+ac_add_options --enable-xterm-updates
+ac_add_options --enable-printing
+ac_add_options --enable-xinerama
+
+ac_add_options --disable-javaxpcom
+ac_add_options --disable-crashreporter
+ac_add_options --disable-updater
+ac_add_options --disable-tests
+ac_add_options --disable-xprint
+ac_add_options --disable-mochitest
+ac_add_options --disable-debug
+ac_add_options --disable-installer
+ac_add_options --disable-pedantic
+
+ac_add_options --enable-gio
+ac_add_options --disable-gnomevfs
+ac_add_options --enable-gconf
+ac_add_options --enable-libnotify
+
+export BUILD_OFFICIAL=1
+export MOZILLA_OFFICIAL=1
+mk_add_options BUILD_OFFICIAL=1
+mk_add_options MOZILLA_OFFICIAL=1
diff --git a/extra/xulrunner/mozilla-pkgconfig.patch b/extra/xulrunner/mozilla-pkgconfig.patch
new file mode 100644
index 000000000..2203efcde
--- /dev/null
+++ b/extra/xulrunner/mozilla-pkgconfig.patch
@@ -0,0 +1,60 @@
+diff -Nur mozilla-2.0.orig/xulrunner/installer/libxul-embedding.pc.in mozilla-2.0/xulrunner/installer/libxul-embedding.pc.in
+--- mozilla-2.0.orig/xulrunner/installer/libxul-embedding.pc.in 2011-03-03 14:12:04.000000000 -0800
++++ mozilla-2.0/xulrunner/installer/libxul-embedding.pc.in 2011-03-13 03:25:12.350027359 -0700
+@@ -6,5 +6,6 @@
+ Name: libxul-embedding
+ Description: Static library for version-independent embedding of the Mozilla runtime
+ Version: %MOZILLA_VERSION%
++Requires: %NSPR_NAME% >= %NSPR_VERSION%
+ Libs: -L${sdkdir}/lib -lxpcomglue -ldl
+ Cflags: -DXPCOM_GLUE -I${includedir} %WCHAR_CFLAGS%
+diff -Nur mozilla-2.0.orig/xulrunner/installer/libxul.pc.in mozilla-2.0/xulrunner/installer/libxul.pc.in
+--- mozilla-2.0.orig/xulrunner/installer/libxul.pc.in 2011-03-03 14:12:04.000000000 -0800
++++ mozilla-2.0/xulrunner/installer/libxul.pc.in 2011-03-13 03:25:28.010027359 -0700
+@@ -1,5 +1,6 @@
+ prefix=%prefix%
+ sdkdir=%sdkdir%
++libdir=%libdir%
+ includedir=%includedir%
+ idldir=%idldir%
+
+diff -Nur mozilla-2.0.orig/xulrunner/installer/Makefile.in mozilla-2.0/xulrunner/installer/Makefile.in
+--- mozilla-2.0.orig/xulrunner/installer/Makefile.in 2011-03-03 14:12:04.000000000 -0800
++++ mozilla-2.0/xulrunner/installer/Makefile.in 2011-03-13 03:25:55.570027359 -0700
+@@ -121,6 +121,7 @@
+ -e "s|%includedir%|$(includedir)|" \
+ -e "s|%idldir%|$(idldir)|" \
+ -e "s|%sdkdir%|$(sdkdir)|" \
++ -e "s|%libdir%|$(installdir)|" \
+ -e "s|%MOZ_APP_NAME%|$(MOZ_APP_NAME)|" \
+ -e "s|%MOZILLA_VERSION%|$(MOZ_APP_VERSION)|" \
+ -e "s|%WCHAR_CFLAGS%|$(WCHAR_CFLAGS)|" \
+diff -Nur mozilla-2.0.orig/xulrunner/installer/mozilla-gtkmozembed-embedding.pc.in mozilla-2.0/xulrunner/installer/mozilla-gtkmozembed-embedding.pc.in
+--- mozilla-2.0.orig/xulrunner/installer/mozilla-gtkmozembed-embedding.pc.in 2011-03-03 14:12:04.000000000 -0800
++++ mozilla-2.0/xulrunner/installer/mozilla-gtkmozembed-embedding.pc.in 2011-03-13 03:26:18.676694023 -0700
+@@ -1,5 +1,6 @@
+ prefix=%prefix%
+ sdkdir=%sdkdir%
++libdir=%libdir%
+ includedir=%includedir%
+
+ Name: mozilla-gtkembedmoz
+diff -Nur mozilla-2.0.orig/xulrunner/installer/mozilla-gtkmozembed.pc.in mozilla-2.0/xulrunner/installer/mozilla-gtkmozembed.pc.in
+--- mozilla-2.0.orig/xulrunner/installer/mozilla-gtkmozembed.pc.in 2011-03-03 14:12:04.000000000 -0800
++++ mozilla-2.0/xulrunner/installer/mozilla-gtkmozembed.pc.in 2011-03-13 03:26:41.566694025 -0700
+@@ -1,5 +1,6 @@
+ prefix=%prefix%
+ sdkdir=%sdkdir%
++libdir=%libdir%
+ includedir=%includedir%
+
+ Name: mozilla-gtkembedmoz
+diff -Nur mozilla-2.0.orig/xulrunner/installer/mozilla-js.pc.in mozilla-2.0/xulrunner/installer/mozilla-js.pc.in
+--- mozilla-2.0.orig/xulrunner/installer/mozilla-js.pc.in 2011-03-03 14:12:04.000000000 -0800
++++ mozilla-2.0/xulrunner/installer/mozilla-js.pc.in 2011-03-13 03:27:19.680027357 -0700
+@@ -7,4 +7,4 @@
+ Version: %MOZILLA_VERSION%
+ Requires: %NSPR_NAME% >= %NSPR_VERSION%
+ Libs: -L${sdkdir}/lib %MOZ_JS_LINK%
+-Cflags: -I${includedir} -DXP_UNIX -DJS_THREADSAFE
++Cflags: -I${includedir} -I${includedir}/js -DXP_UNIX -DJS_THREADSAFE
diff --git a/extra/xulrunner/port_gnomevfs_to_gio.patch b/extra/xulrunner/port_gnomevfs_to_gio.patch
new file mode 100644
index 000000000..797baff42
--- /dev/null
+++ b/extra/xulrunner/port_gnomevfs_to_gio.patch
@@ -0,0 +1,1316 @@
+diff -r 49a1b2aa43c5 extensions/gio/Makefile.in
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/extensions/gio/Makefile.in Tue Jan 11 11:17:52 2011 +0100
+@@ -0,0 +1,69 @@
++# vim:set ts=8 sw=8 sts=8 noet:
++# ***** BEGIN LICENSE BLOCK *****
++# Version: MPL 1.1/GPL 2.0/LGPL 2.1
++#
++# The contents of this file are subject to the Mozilla Public License Version
++# 1.1 (the "License"); you may not use this file except in compliance with
++# the License. You may obtain a copy of the License at
++# http://www.mozilla.org/MPL/
++#
++# Software distributed under the License is distributed on an "AS IS" basis,
++# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
++# for the specific language governing rights and limitations under the
++# License.
++#
++# The Original Code is the Mozilla gnome-vfs extension.
++#
++# The Initial Developer of the Original Code is IBM Corporation.
++#
++# Portions created by IBM Corporation are Copyright (C) 2004
++# IBM Corporation. All Rights Reserved.
++#
++# Contributor(s):
++# Darin Fisher <darin@meer.net>
++# Jan Horak <jhorak@redhat.com>
++#
++# Alternatively, the contents of this file may be used under the terms of
++# either the GNU General Public License Version 2 or later (the "GPL"), or
++# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
++# in which case the provisions of the GPL or the LGPL are applicable instead
++# of those above. If you wish to allow use of your version of this file only
++# under the terms of either the GPL or the LGPL, and not to allow others to
++# use your version of this file under the terms of the MPL, indicate your
++# decision by deleting the provisions above and replace them with the notice
++# and other provisions required by the GPL or the LGPL. If you do not delete
++# the provisions above, a recipient may use your version of this file under
++# the terms of any one of the MPL, the GPL or the LGPL.
++#
++# ***** END LICENSE BLOCK *****
++
++DEPTH = ../..
++topsrcdir = @top_srcdir@
++srcdir = @srcdir@
++VPATH = @srcdir@
++
++include $(DEPTH)/config/autoconf.mk
++
++MODULE = nkgio
++LIBRARY_NAME = nkgio
++SHORT_LIBNAME = nkgio
++IS_COMPONENT = 1
++
++CPPSRCS = \
++ nsGIOProtocolHandler.cpp \
++ $(NULL)
++
++LOCAL_INCLUDES = $(MOZ_GIO_CFLAGS)
++
++EXTRA_DSO_LDOPTS = \
++ $(XPCOM_GLUE_LDOPTS) \
++ $(NSPR_LIBS) \
++ $(MOZ_GIO_LIBS) \
++ $(NULL)
++
++# make sure this component is never statically linked into the main
++# application. this is necessary since we don't want to force users
++# to install gio in order to use the rest of mozilla ;-)
++FORCE_SHARED_LIB= 1
++
++include $(topsrcdir)/config/rules.mk
+diff -r 49a1b2aa43c5 extensions/gio/makefiles.sh
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/extensions/gio/makefiles.sh Tue Jan 11 11:17:52 2011 +0100
+@@ -0,0 +1,41 @@
++#! /bin/sh
++# ***** BEGIN LICENSE BLOCK *****
++# Version: MPL 1.1/GPL 2.0/LGPL 2.1
++#
++# The contents of this file are subject to the Mozilla Public License Version
++# 1.1 (the "License"); you may not use this file except in compliance with
++# the License. You may obtain a copy of the License at
++# http://www.mozilla.org/MPL/
++#
++# Software distributed under the License is distributed on an "AS IS" basis,
++# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
++# for the specific language governing rights and limitations under the
++# License.
++#
++# The Original Code is Mozilla Build System
++#
++# The Initial Developer of the Original Code is
++# Ben Turner <mozilla@songbirdnest.com>
++#
++# Portions created by the Initial Developer are Copyright (C) 2007
++# the Initial Developer. All Rights Reserved.
++#
++# Contributor(s):
++#
++# Alternatively, the contents of this file may be used under the terms of
++# either the GNU General Public License Version 2 or later (the "GPL"), or
++# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
++# in which case the provisions of the GPL or the LGPL are applicable instead
++# of those above. If you wish to allow use of your version of this file only
++# under the terms of either the GPL or the LGPL, and not to allow others to
++# use your version of this file under the terms of the MPL, indicate your
++# decision by deleting the provisions above and replace them with the notice
++# and other provisions required by the GPL or the LGPL. If you do not delete
++# the provisions above, a recipient may use your version of this file under
++# the terms of any one of the MPL, the GPL or the LGPL.
++#
++# ***** END LICENSE BLOCK *****
++
++add_makefiles "
++ extensions/gio/Makefile
++"
+diff -r 49a1b2aa43c5 extensions/gio/nsGIOProtocolHandler.cpp
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/extensions/gio/nsGIOProtocolHandler.cpp Tue Jan 11 11:17:52 2011 +0100
+@@ -0,0 +1,1163 @@
++/* vim:set ts=2 sw=2 et cindent: */
++/* ***** BEGIN LICENSE BLOCK *****
++ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
++ *
++ * The contents of this file are subject to the Mozilla Public License Version
++ * 1.1 (the "License"); you may not use this file except in compliance with
++ * the License. You may obtain a copy of the License at
++ * http://www.mozilla.org/MPL/
++ *
++ * Software distributed under the License is distributed on an "AS IS" basis,
++ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
++ * for the specific language governing rights and limitations under the
++ * License.
++ *
++ * The Original Code is the Mozilla gnome-vfs extension.
++ *
++ * The Initial Developer of the Original Code is IBM Corporation.
++ *
++ * Portions created by IBM Corporation are Copyright (C) 2004
++ * IBM Corporation. All Rights Reserved.
++ *
++ * Contributor(s):
++ * Darin Fisher <darin@meer.net>
++ * Jan Horak <jhorak@redhat.com>
++ *
++ * Alternatively, the contents of this file may be used under the terms of
++ * either the GNU General Public License Version 2 or later (the "GPL"), or
++ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
++ * in which case the provisions of the GPL or the LGPL are applicable instead
++ * of those above. If you wish to allow use of your version of this file only
++ * under the terms of either the GPL or the LGPL, and not to allow others to
++ * use your version of this file under the terms of the MPL, indicate your
++ * decision by deleting the provisions above and replace them with the notice
++ * and other provisions required by the GPL or the LGPL. If you do not delete
++ * the provisions above, a recipient may use your version of this file under
++ * the terms of any one of the MPL, the GPL or the LGPL.
++ *
++ * ***** END LICENSE BLOCK ***** */
++
++/*
++ * This code is based on original Mozilla gnome-vfs extension. It implements
++ * input stream provided by GVFS/GIO.
++*/
++#include "mozilla/ModuleUtils.h"
++#include "nsIPrefService.h"
++#include "nsIPrefBranch2.h"
++#include "nsIObserver.h"
++#include "nsThreadUtils.h"
++#include "nsProxyRelease.h"
++#include "nsIStringBundle.h"
++#include "nsIStandardURL.h"
++#include "nsMimeTypes.h"
++#include "nsNetUtil.h"
++#include "mozilla/Monitor.h"
++#include <gio/gio.h>
++
++#define MOZ_GIO_SCHEME "moz-gio"
++#define MOZ_GIO_SUPPORTED_PROTOCOLS "network.gio.supported-protocols"
++
++//-----------------------------------------------------------------------------
++
++// NSPR_LOG_MODULES=gio:5
++#ifdef PR_LOGGING
++static PRLogModuleInfo *sGIOLog;
++#define LOG(args) PR_LOG(sGIOLog, PR_LOG_DEBUG, args)
++#else
++#define LOG(args)
++#endif
++
++
++//-----------------------------------------------------------------------------
++static nsresult
++MapGIOResult(gint code)
++{
++ switch (code)
++ {
++ case G_IO_ERROR_NOT_FOUND: return NS_ERROR_FILE_NOT_FOUND; // shows error
++ case G_IO_ERROR_INVALID_ARGUMENT: return NS_ERROR_INVALID_ARG;
++ case G_IO_ERROR_NOT_SUPPORTED: return NS_ERROR_NOT_AVAILABLE;
++ case G_IO_ERROR_NO_SPACE: return NS_ERROR_FILE_NO_DEVICE_SPACE;
++ case G_IO_ERROR_READ_ONLY: return NS_ERROR_FILE_READ_ONLY;
++ case G_IO_ERROR_PERMISSION_DENIED: return NS_ERROR_FILE_ACCESS_DENIED; // wrong password/login
++ case G_IO_ERROR_CLOSED: return NS_BASE_STREAM_CLOSED; // was EOF
++ case G_IO_ERROR_NOT_DIRECTORY: return NS_ERROR_FILE_NOT_DIRECTORY;
++ case G_IO_ERROR_PENDING: return NS_ERROR_IN_PROGRESS;
++ case G_IO_ERROR_EXISTS: return NS_ERROR_FILE_ALREADY_EXISTS;
++ case G_IO_ERROR_IS_DIRECTORY: return NS_ERROR_FILE_IS_DIRECTORY;
++ case G_IO_ERROR_NOT_MOUNTED: return NS_ERROR_NOT_CONNECTED; // shows error
++ case G_IO_ERROR_HOST_NOT_FOUND: return NS_ERROR_UNKNOWN_HOST; // shows error
++ case G_IO_ERROR_CANCELLED: return NS_ERROR_ABORT;
++ case G_IO_ERROR_NOT_EMPTY: return NS_ERROR_FILE_DIR_NOT_EMPTY;
++ case G_IO_ERROR_FILENAME_TOO_LONG: return NS_ERROR_FILE_NAME_TOO_LONG;
++ case G_IO_ERROR_INVALID_FILENAME: return NS_ERROR_FILE_INVALID_PATH;
++ case G_IO_ERROR_TIMED_OUT: return NS_ERROR_NET_TIMEOUT; // shows error
++ case G_IO_ERROR_WOULD_BLOCK: return NS_BASE_STREAM_WOULD_BLOCK;
++ case G_IO_ERROR_FAILED_HANDLED: return NS_ERROR_ABORT; // Cancel on login dialog
++
++/* unhandled:
++ G_IO_ERROR_NOT_REGULAR_FILE,
++ G_IO_ERROR_NOT_SYMBOLIC_LINK,
++ G_IO_ERROR_NOT_MOUNTABLE_FILE,
++ G_IO_ERROR_TOO_MANY_LINKS,
++ G_IO_ERROR_ALREADY_MOUNTED,
++ G_IO_ERROR_CANT_CREATE_BACKUP,
++ G_IO_ERROR_WRONG_ETAG,
++ G_IO_ERROR_WOULD_RECURSE,
++ G_IO_ERROR_BUSY,
++ G_IO_ERROR_WOULD_MERGE,
++ G_IO_ERROR_TOO_MANY_OPEN_FILES
++*/
++ // Make GCC happy
++ default:
++ return NS_ERROR_FAILURE;
++ }
++
++ return NS_ERROR_FAILURE;
++}
++
++static nsresult
++MapGIOResult(GError *result)
++{
++ if (!result)
++ return NS_OK;
++ else
++ return MapGIOResult(result->code);
++}
++/** Return values for mount operation.
++ * These enums are used as mount operation return values.
++ */
++typedef enum {
++ MOUNT_OPERATION_IN_PROGRESS, /** \enum operation in progress */
++ MOUNT_OPERATION_SUCCESS, /** \enum operation successful */
++ MOUNT_OPERATION_FAILED /** \enum operation not successful */
++} MountOperationResult;
++//-----------------------------------------------------------------------------
++/**
++ * Sort function compares according to file type (directory/file)
++ * and alphabethical order
++ * @param a pointer to GFileInfo object to compare
++ * @param b pointer to GFileInfo object to compare
++ * @return -1 when first object should be before the second, 0 when equal,
++ * +1 when second object should be before the first
++ */
++static gint
++FileInfoComparator(gconstpointer a, gconstpointer b)
++{
++ GFileInfo *ia = ( GFileInfo *) a;
++ GFileInfo *ib = ( GFileInfo *) b;
++ if (g_file_info_get_file_type(ia) == G_FILE_TYPE_DIRECTORY
++ && g_file_info_get_file_type(ib) != G_FILE_TYPE_DIRECTORY)
++ return -1;
++ if (g_file_info_get_file_type(ib) == G_FILE_TYPE_DIRECTORY
++ && g_file_info_get_file_type(ia) != G_FILE_TYPE_DIRECTORY)
++ return 1;
++
++ return strcasecmp(g_file_info_get_name(ia), g_file_info_get_name(ib));
++}
++
++/* Declaration of mount callback functions */
++static void mount_enclosing_volume_finished (GObject *source_object,
++ GAsyncResult *res,
++ gpointer user_data);
++static void mount_operation_ask_password (GMountOperation *mount_op,
++ const char *message,
++ const char *default_user,
++ const char *default_domain,
++ GAskPasswordFlags flags,
++ gpointer user_data);
++//-----------------------------------------------------------------------------
++
++class nsGIOInputStream : public nsIInputStream
++{
++ public:
++ NS_DECL_ISUPPORTS
++ NS_DECL_NSIINPUTSTREAM
++
++ nsGIOInputStream(const nsCString &uriSpec)
++ : mSpec(uriSpec)
++ , mChannel(nsnull)
++ , mHandle(nsnull)
++ , mStream(nsnull)
++ , mBytesRemaining(PR_UINT32_MAX)
++ , mStatus(NS_OK)
++ , mDirList(nsnull)
++ , mDirListPtr(nsnull)
++ , mDirBufCursor(0)
++ , mDirOpen(PR_FALSE)
++ , mMonitorMountInProgress("GIOInputStream::MountFinished") { }
++
++ ~nsGIOInputStream() { Close(); }
++
++ void SetChannel(nsIChannel *channel)
++ {
++ // We need to hold an owning reference to our channel. This is done
++ // so we can access the channel's notification callbacks to acquire
++ // a reference to a nsIAuthPrompt if we need to handle an interactive
++ // mount operation.
++ //
++ // However, the channel can only be accessed on the main thread, so
++ // we have to be very careful with ownership. Moreover, it doesn't
++ // support threadsafe addref/release, so proxying is the answer.
++ //
++ // Also, it's important to note that this likely creates a reference
++ // cycle since the channel likely owns this stream. This reference
++ // cycle is broken in our Close method.
++
++ NS_ADDREF(mChannel = channel);
++ }
++ void SetMountResult(MountOperationResult result, gint error_code);
++ private:
++ nsresult DoOpen();
++ nsresult DoRead(char *aBuf, PRUint32 aCount, PRUint32 *aCountRead);
++ nsresult SetContentTypeOfChannel(const char *contentType);
++ nsresult MountVolume();
++ nsresult DoOpenDirectory();
++ nsresult DoOpenFile(GFileInfo *info);
++ nsCString mSpec;
++ nsIChannel *mChannel; // manually refcounted
++ GFile *mHandle;
++ GFileInputStream *mStream;
++ PRUint64 mBytesRemaining;
++ nsresult mStatus;
++ GList *mDirList;
++ GList *mDirListPtr;
++ nsCString mDirBuf;
++ PRUint32 mDirBufCursor;
++ PRPackedBool mDirOpen;
++ MountOperationResult mMountRes;
++ mozilla::Monitor mMonitorMountInProgress;
++ gint mMountErrorCode;
++};
++/**
++ * Set result of mount operation and notify monitor waiting for results.
++ * This method is called in main thread as long as it is used only
++ * in mount_enclosing_volume_finished function.
++ * @param result Result of mount operation
++ */
++void
++nsGIOInputStream::SetMountResult(MountOperationResult result, gint error_code)
++{
++ mozilla::MonitorAutoEnter mon(mMonitorMountInProgress);
++ mMountRes = result;
++ mMountErrorCode = error_code;
++ mon.Notify();
++}
++
++/**
++ * Start mount operation and wait in loop until it is finished. This method is
++ * called from thread which is trying to read from location.
++ */
++nsresult
++nsGIOInputStream::MountVolume() {
++ GMountOperation* mount_op = g_mount_operation_new();
++ g_signal_connect (mount_op, "ask-password",
++ G_CALLBACK (mount_operation_ask_password), mChannel);
++ mMountRes = MOUNT_OPERATION_IN_PROGRESS;
++ /* g_file_mount_enclosing_volume uses a dbus request to mount the volume.
++ Callback mount_enclosing_volume_finished is called in main thread
++ (not this thread on which this method is called). */
++ g_file_mount_enclosing_volume(mHandle,
++ G_MOUNT_MOUNT_NONE,
++ mount_op,
++ NULL,
++ mount_enclosing_volume_finished,
++ this);
++ mozilla::MonitorAutoEnter mon(mMonitorMountInProgress);
++ /* Waiting for finish of mount operation thread */
++ while (mMountRes == MOUNT_OPERATION_IN_PROGRESS)
++ mon.Wait();
++
++ g_object_unref(mount_op);
++
++ if (mMountRes == MOUNT_OPERATION_FAILED) {
++ return MapGIOResult(mMountErrorCode);
++ } else {
++ return NS_OK;
++ }
++}
++
++/**
++ * Create list of infos about objects in opened directory
++ * Return: NS_OK when list obtained, otherwise error code according
++ * to failed operation.
++ */
++nsresult
++nsGIOInputStream::DoOpenDirectory()
++{
++ GError *error = NULL;
++
++ GFileEnumerator *f_enum = g_file_enumerate_children(mHandle,
++ "standard::*,time::*",
++ G_FILE_QUERY_INFO_NONE,
++ NULL,
++ &error);
++ if (!f_enum) {
++ nsresult rv = MapGIOResult(error);
++ g_warning("Cannot read from directory: %s", error->message);
++ g_error_free(error);
++ return rv;
++ }
++ // fill list of file infos
++ GFileInfo *info = g_file_enumerator_next_file(f_enum, NULL, &error);
++ while (info) {
++ mDirList = g_list_append(mDirList, info);
++ info = g_file_enumerator_next_file(f_enum, NULL, &error);
++ }
++ g_object_unref(f_enum);
++ if (error) {
++ g_warning("Error reading directory content: %s", error->message);
++ nsresult rv = MapGIOResult(error);
++ g_error_free(error);
++ return rv;
++ }
++ mDirOpen = PR_TRUE;
++
++ // Sort list of file infos by using FileInfoComparator function
++ mDirList = g_list_sort(mDirList, FileInfoComparator);
++ mDirListPtr = mDirList;
++
++ // Write base URL (make sure it ends with a '/')
++ mDirBuf.Append("300: ");
++ mDirBuf.Append(mSpec);
++ if (mSpec.get()[mSpec.Length() - 1] != '/')
++ mDirBuf.Append('/');
++ mDirBuf.Append('\n');
++
++ // Write column names
++ mDirBuf.Append("200: filename content-length last-modified file-type\n");
++
++ // Write charset (assume UTF-8)
++ // XXX is this correct?
++ mDirBuf.Append("301: UTF-8\n");
++ SetContentTypeOfChannel(APPLICATION_HTTP_INDEX_FORMAT);
++ return NS_OK;
++}
++
++/**
++ * Create file stream and set mime type for channel
++ * @param info file info used to determine mime type
++ * @return NS_OK when file stream created successfuly, error code otherwise
++ */
++nsresult
++nsGIOInputStream::DoOpenFile(GFileInfo *info)
++{
++ GError *error = NULL;
++
++ mStream = g_file_read(mHandle, NULL, &error);
++ if (!mStream) {
++ nsresult rv = MapGIOResult(error);
++ g_warning("Cannot read from file: %s", error->message);
++ g_error_free(error);
++ return rv;
++ }
++
++ const char * content_type = g_file_info_get_content_type(info);
++ if (content_type) {
++ char *mime_type = g_content_type_get_mime_type(content_type);
++ if (mime_type) {
++ if (strcmp(mime_type, APPLICATION_OCTET_STREAM) != 0) {
++ SetContentTypeOfChannel(mime_type);
++ }
++ g_free(mime_type);
++ }
++ } else {
++ g_warning("Missing content type.");
++ }
++
++ mBytesRemaining = g_file_info_get_size(info);
++ // Update the content length attribute on the channel. We do this
++ // synchronously without proxying. This hack is not as bad as it looks!
++ mChannel->SetContentLength(mBytesRemaining);
++
++ return NS_OK;
++}
++
++/**
++ * Start file open operation, mount volume when needed and according to file type
++ * create file output stream or read directory content.
++ * @return NS_OK when file or directory opened successfully, error code otherwise
++ */
++nsresult
++nsGIOInputStream::DoOpen()
++{
++ nsresult rv;
++ GError *error = NULL;
++
++ NS_ASSERTION(mHandle == nsnull, "already open");
++
++ mHandle = g_file_new_for_uri( mSpec.get() );
++
++ GFileInfo *info = g_file_query_info(mHandle,
++ "standard::*",
++ G_FILE_QUERY_INFO_NONE,
++ NULL,
++ &error);
++
++ if (error) {
++ if (error->domain == G_IO_ERROR && error->code == G_IO_ERROR_NOT_MOUNTED) {
++ // location is not yet mounted, try to mount
++ g_error_free(error);
++ if (NS_IsMainThread())
++ return NS_ERROR_NOT_CONNECTED;
++ error = NULL;
++ rv = MountVolume();
++ if (rv != NS_OK) {
++ return rv;
++ }
++ // get info again
++ info = g_file_query_info(mHandle,
++ "standard::*",
++ G_FILE_QUERY_INFO_NONE,
++ NULL,
++ &error);
++ // second try to get file info from remote files after media mount
++ if (!info) {
++ g_warning("Unable to get file info: %s", error->message);
++ rv = MapGIOResult(error);
++ g_error_free(error);
++ return rv;
++ }
++ } else {
++ g_warning("Unable to get file info: %s", error->message);
++ rv = MapGIOResult(error);
++ g_error_free(error);
++ return rv;
++ }
++ }
++ // Get file type to handle directories and file differently
++ GFileType f_type = g_file_info_get_file_type(info);
++ if (f_type == G_FILE_TYPE_DIRECTORY) {
++ // directory
++ rv = DoOpenDirectory();
++ } else if (f_type != G_FILE_TYPE_UNKNOWN) {
++ // file
++ rv = DoOpenFile(info);
++ } else {
++ g_warning("Unable to get file type.");
++ rv = NS_ERROR_FILE_NOT_FOUND;
++ }
++ if (info)
++ g_object_unref(info);
++ return rv;
++}
++
++/**
++ * Read content of file or create file list from directory
++ * @param aBuf read destination buffer
++ * @param aCount length of destination buffer
++ * @param aCountRead number of read characters
++ * @return NS_OK when read successfully, NS_BASE_STREAM_CLOSED when end of file,
++ * error code otherwise
++ */
++nsresult
++nsGIOInputStream::DoRead(char *aBuf, PRUint32 aCount, PRUint32 *aCountRead)
++{
++ nsresult rv = NS_ERROR_NOT_AVAILABLE;
++ if (mStream) {
++ // file read
++ GError *error = NULL;
++ PRUint32 bytes_read = g_input_stream_read(G_INPUT_STREAM(mStream),
++ aBuf,
++ aCount,
++ NULL,
++ &error);
++ if (error) {
++ rv = MapGIOResult(error);
++ *aCountRead = 0;
++ g_warning("Cannot read from file: %s", error->message);
++ g_error_free(error);
++ return rv;
++ }
++ *aCountRead = bytes_read;
++ mBytesRemaining -= *aCountRead;
++ return NS_OK;
++ }
++ else if (mDirOpen) {
++ // directory read
++ while (aCount && rv != NS_BASE_STREAM_CLOSED)
++ {
++ // Copy data out of our buffer
++ PRUint32 bufLen = mDirBuf.Length() - mDirBufCursor;
++ if (bufLen)
++ {
++ PRUint32 n = PR_MIN(bufLen, aCount);
++ memcpy(aBuf, mDirBuf.get() + mDirBufCursor, n);
++ *aCountRead += n;
++ aBuf += n;
++ aCount -= n;
++ mDirBufCursor += n;
++ }
++
++ if (!mDirListPtr) // Are we at the end of the directory list?
++ {
++ rv = NS_BASE_STREAM_CLOSED;
++ }
++ else if (aCount) // Do we need more data?
++ {
++ GFileInfo *info = (GFileInfo *) mDirListPtr->data;
++
++ // Prune '.' and '..' from directory listing.
++ const char * fname = g_file_info_get_name(info);
++ if (fname && fname[0] == '.' &&
++ (fname[1] == '\0' || (fname[1] == '.' && fname[2] == '\0')))
++ {
++ mDirListPtr = mDirListPtr->next;
++ continue;
++ }
++
++ mDirBuf.Assign("201: ");
++
++ // The "filename" field
++ nsCString escName;
++ nsCOMPtr<nsINetUtil> nu = do_GetService(NS_NETUTIL_CONTRACTID);
++ if (nu && fname) {
++ nu->EscapeString(nsDependentCString(fname),
++ nsINetUtil::ESCAPE_URL_PATH, escName);
++
++ mDirBuf.Append(escName);
++ mDirBuf.Append(' ');
++ }
++
++ // The "content-length" field
++ // XXX truncates size from 64-bit to 32-bit
++ mDirBuf.AppendInt(PRInt32(g_file_info_get_size(info)));
++ mDirBuf.Append(' ');
++
++ // The "last-modified" field
++ //
++ // NSPR promises: PRTime is compatible with time_t
++ // we just need to convert from seconds to microseconds
++ GTimeVal gtime;
++ g_file_info_get_modification_time(info, &gtime);
++
++ PRExplodedTime tm;
++ PRTime pt = ((PRTime) gtime.tv_sec) * 1000000;
++ PR_ExplodeTime(pt, PR_GMTParameters, &tm);
++ {
++ char buf[64];
++ PR_FormatTimeUSEnglish(buf, sizeof(buf),
++ "%a,%%20%d%%20%b%%20%Y%%20%H:%M:%S%%20GMT ", &tm);
++ mDirBuf.Append(buf);
++ }
++
++ // The "file-type" field
++ switch (g_file_info_get_file_type(info))
++ {
++ case G_FILE_TYPE_REGULAR:
++ mDirBuf.Append("FILE ");
++ break;
++ case G_FILE_TYPE_DIRECTORY:
++ mDirBuf.Append("DIRECTORY ");
++ break;
++ case G_FILE_TYPE_SYMBOLIC_LINK:
++ mDirBuf.Append("SYMBOLIC-LINK ");
++ break;
++ default:
++ break;
++ }
++ mDirBuf.Append('\n');
++
++ mDirBufCursor = 0;
++ mDirListPtr = mDirListPtr->next;
++ }
++ }
++ }
++ return rv;
++}
++
++/**
++ * This class is used to implement SetContentTypeOfChannel.
++ */
++class nsGIOSetContentTypeEvent : public nsRunnable
++{
++ public:
++ nsGIOSetContentTypeEvent(nsIChannel *channel, const char *contentType)
++ : mChannel(channel), mContentType(contentType)
++ {
++ // stash channel reference in mChannel. no AddRef here! see note
++ // in SetContentTypeOfchannel.
++ }
++
++ NS_IMETHOD Run()
++ {
++ mChannel->SetContentType(mContentType);
++ return NS_OK;
++ }
++
++ private:
++ nsIChannel *mChannel;
++ nsCString mContentType;
++};
++
++nsresult
++nsGIOInputStream::SetContentTypeOfChannel(const char *contentType)
++{
++ // We need to proxy this call over to the main thread. We post an
++ // asynchronous event in this case so that we don't delay reading data, and
++ // we know that this is safe to do since the channel's reference will be
++ // released asynchronously as well. We trust the ordering of the main
++ // thread's event queue to protect us against memory corruption.
++
++ nsresult rv;
++ nsCOMPtr<nsIRunnable> ev =
++ new nsGIOSetContentTypeEvent(mChannel, contentType);
++ if (!ev)
++ {
++ rv = NS_ERROR_OUT_OF_MEMORY;
++ }
++ else
++ {
++ rv = NS_DispatchToMainThread(ev);
++ }
++ return rv;
++}
++
++NS_IMPL_THREADSAFE_ISUPPORTS1(nsGIOInputStream, nsIInputStream)
++
++/**
++ * Free all used memory and close stream.
++ */
++NS_IMETHODIMP
++nsGIOInputStream::Close()
++{
++ if (mStream)
++ {
++ g_object_unref(mStream);
++ mStream = nsnull;
++ }
++
++ if (mHandle)
++ {
++ g_object_unref(mHandle);
++ mHandle = nsnull;
++ }
++
++ if (mDirList)
++ {
++ // Destroy the list of GIOFileInfo objects...
++ g_list_foreach(mDirList, (GFunc) g_object_unref, nsnull);
++ g_list_free(mDirList);
++ mDirList = nsnull;
++ mDirListPtr = nsnull;
++ }
++
++ if (mChannel)
++ {
++ nsresult rv = NS_OK;
++
++ nsCOMPtr<nsIThread> thread = do_GetMainThread();
++ if (thread)
++ rv = NS_ProxyRelease(thread, mChannel);
++
++ NS_ASSERTION(thread && NS_SUCCEEDED(rv), "leaking channel reference");
++ mChannel = nsnull;
++ }
++
++ mSpec.Truncate(); // free memory
++
++ // Prevent future reads from re-opening the handle.
++ if (NS_SUCCEEDED(mStatus))
++ mStatus = NS_BASE_STREAM_CLOSED;
++
++ return NS_OK;
++}
++
++/**
++ * Return number of remaining bytes available on input
++ * @param aResult remaining bytes
++ */
++NS_IMETHODIMP
++nsGIOInputStream::Available(PRUint32 *aResult)
++{
++ if (NS_FAILED(mStatus))
++ return mStatus;
++
++ /* When remaining bytes are bigger than max PRUint32 value an aResult must
++ be set to PRUint32 maximum */
++ if (mBytesRemaining > PR_UINT32_MAX)
++ *aResult = PR_UINT32_MAX;
++ else
++ *aResult = mBytesRemaining;
++
++ return NS_OK;
++}
++
++/**
++ * Trying to read from stream. When location is not available it tries to mount it.
++ * @param aBuf buffer to put read data
++ * @param aCount length of aBuf
++ * @param aCountRead number of bytes actually read
++ */
++NS_IMETHODIMP
++nsGIOInputStream::Read(char *aBuf,
++ PRUint32 aCount,
++ PRUint32 *aCountRead)
++{
++ *aCountRead = 0;
++ // Check if file is already opened, otherwise open it
++ if (!mStream && !mDirOpen && mStatus == NS_OK) {
++ mStatus = DoOpen();
++ if (NS_FAILED(mStatus)) {
++ return mStatus;
++ }
++ }
++
++ mStatus = DoRead(aBuf, aCount, aCountRead);
++ // Check if all data has been read
++ if (mStatus == NS_BASE_STREAM_CLOSED)
++ return NS_OK;
++
++ // Check whenever any error appears while reading
++ return mStatus;
++}
++
++NS_IMETHODIMP
++nsGIOInputStream::ReadSegments(nsWriteSegmentFun aWriter,
++ void *aClosure,
++ PRUint32 aCount,
++ PRUint32 *aResult)
++{
++ // There is no way to implement this using GnomeVFS, but fortunately
++ // that doesn't matter. Because we are a blocking input stream, Necko
++ // isn't going to call our ReadSegments method.
++ NS_NOTREACHED("nsGIOInputStream::ReadSegments");
++ return NS_ERROR_NOT_IMPLEMENTED;
++}
++
++NS_IMETHODIMP
++nsGIOInputStream::IsNonBlocking(PRBool *aResult)
++{
++ *aResult = PR_FALSE;
++ return NS_OK;
++}
++
++//-----------------------------------------------------------------------------
++
++/**
++ * Called when finishing mount operation. Result of operation is set in
++ * nsGIOInputStream. This function is called in main thread as an async request
++ * typically from dbus.
++ * @param source_object GFile object which requested the mount
++ * @param res result object
++ * @param user_data pointer to nsGIOInputStream
++ */
++static void
++mount_enclosing_volume_finished (GObject *source_object,
++ GAsyncResult *res,
++ gpointer user_data)
++{
++ GError *error = NULL;
++
++ nsGIOInputStream* istream = static_cast<nsGIOInputStream*>(user_data);
++
++ g_file_mount_enclosing_volume_finish(G_FILE (source_object), res, &error);
++
++ if (error) {
++ g_warning("Mount failed: %s %d", error->message, error->code);
++ istream->SetMountResult(MOUNT_OPERATION_FAILED, error->code);
++ g_error_free(error);
++ } else {
++ istream->SetMountResult(MOUNT_OPERATION_SUCCESS, 0);
++ }
++}
++
++/**
++ * This function is called when username or password are requested from user.
++ * This function is called in main thread as async request from dbus.
++ * @param mount_op mount operation
++ * @param message message to show to user
++ * @param default_user preffered user
++ * @param default_domain domain name
++ * @param flags what type of information is required
++ * @param user_data nsIChannel
++ */
++static void
++mount_operation_ask_password (GMountOperation *mount_op,
++ const char *message,
++ const char *default_user,
++ const char *default_domain,
++ GAskPasswordFlags flags,
++ gpointer user_data)
++{
++ nsIChannel *channel = (nsIChannel *) user_data;
++ if (!channel) {
++ g_mount_operation_reply(mount_op, G_MOUNT_OPERATION_ABORTED);
++ return;
++ }
++ // We can't handle request for domain
++ if (flags & G_ASK_PASSWORD_NEED_DOMAIN) {
++ g_mount_operation_reply(mount_op, G_MOUNT_OPERATION_ABORTED);
++ return;
++ }
++
++ nsCOMPtr<nsIAuthPrompt> prompt;
++ NS_QueryNotificationCallbacks(channel, prompt);
++
++ // If no auth prompt, then give up. We could failover to using the
++ // WindowWatcher service, but that might defeat a consumer's purposeful
++ // attempt to disable authentication (for whatever reason).
++ if (!prompt) {
++ g_mount_operation_reply(mount_op, G_MOUNT_OPERATION_ABORTED);
++ return;
++ }
++ // Parse out the host and port...
++ nsCOMPtr<nsIURI> uri;
++ channel->GetURI(getter_AddRefs(uri));
++ if (!uri) {
++ g_mount_operation_reply(mount_op, G_MOUNT_OPERATION_ABORTED);
++ return;
++ }
++
++ nsCAutoString scheme, hostPort;
++ uri->GetScheme(scheme);
++ uri->GetHostPort(hostPort);
++
++ // It doesn't make sense for either of these strings to be empty. What kind
++ // of funky URI is this?
++ if (scheme.IsEmpty() || hostPort.IsEmpty()) {
++ g_mount_operation_reply(mount_op, G_MOUNT_OPERATION_ABORTED);
++ return;
++ }
++ // Construct the single signon key. Altering the value of this key will
++ // cause people's remembered passwords to be forgotten. Think carefully
++ // before changing the way this key is constructed.
++ nsAutoString key, realm;
++
++ NS_ConvertUTF8toUTF16 dispHost(scheme);
++ dispHost.Append(NS_LITERAL_STRING("://"));
++ dispHost.Append(NS_ConvertUTF8toUTF16(hostPort));
++
++ key = dispHost;
++ if (*default_domain != '\0')
++ {
++ // We assume the realm string is ASCII. That might be a bogus assumption,
++ // but we have no idea what encoding GnomeVFS is using, so for now we'll
++ // limit ourselves to ISO-Latin-1. XXX What is a better solution?
++ realm.Append('"');
++ realm.Append(NS_ConvertASCIItoUTF16(default_domain));
++ realm.Append('"');
++ key.Append(' ');
++ key.Append(realm);
++ }
++ // Construct the message string...
++ //
++ // We use Necko's string bundle here. This code really should be encapsulated
++ // behind some Necko API, after all this code is based closely on the code in
++ // nsHttpChannel.cpp.
++ nsCOMPtr<nsIStringBundleService> bundleSvc =
++ do_GetService(NS_STRINGBUNDLE_CONTRACTID);
++ if (!bundleSvc) {
++ g_mount_operation_reply(mount_op, G_MOUNT_OPERATION_ABORTED);
++ return;
++ }
++ nsCOMPtr<nsIStringBundle> bundle;
++ bundleSvc->CreateBundle("chrome://global/locale/commonDialogs.properties",
++ getter_AddRefs(bundle));
++ if (!bundle) {
++ g_mount_operation_reply(mount_op, G_MOUNT_OPERATION_ABORTED);
++ return;
++ }
++ nsAutoString nsmessage;
++
++ if (flags & G_ASK_PASSWORD_NEED_PASSWORD) {
++ if (flags & G_ASK_PASSWORD_NEED_USERNAME) {
++ if (!realm.IsEmpty()) {
++ const PRUnichar *strings[] = { realm.get(), dispHost.get() };
++ bundle->FormatStringFromName(NS_LITERAL_STRING("EnterLoginForRealm").get(),
++ strings, 2, getter_Copies(nsmessage));
++ } else {
++ const PRUnichar *strings[] = { dispHost.get() };
++ bundle->FormatStringFromName(NS_LITERAL_STRING("EnterUserPasswordFor").get(),
++ strings, 1, getter_Copies(nsmessage));
++ }
++ } else {
++ NS_ConvertUTF8toUTF16 userName(default_user);
++ const PRUnichar *strings[] = { userName.get(), dispHost.get() };
++ bundle->FormatStringFromName(NS_LITERAL_STRING("EnterPasswordFor").get(),
++ strings, 2, getter_Copies(nsmessage));
++ }
++ } else {
++ g_warning("Unknown mount operation request (flags: %x)", flags);
++ }
++
++ if (nsmessage.IsEmpty()) {
++ g_mount_operation_reply(mount_op, G_MOUNT_OPERATION_ABORTED);
++ return;
++ }
++ // Prompt the user...
++ nsresult rv;
++ PRBool retval = PR_FALSE;
++ PRUnichar *user = nsnull, *pass = nsnull;
++ if (default_user) {
++ // user will be freed by PromptUsernameAndPassword
++ user = ToNewUnicode(NS_ConvertUTF8toUTF16(default_user));
++ }
++ if (flags & G_ASK_PASSWORD_NEED_USERNAME) {
++ rv = prompt->PromptUsernameAndPassword(nsnull, nsmessage.get(),
++ key.get(),
++ nsIAuthPrompt::SAVE_PASSWORD_PERMANENTLY,
++ &user, &pass, &retval);
++ } else {
++ rv = prompt->PromptPassword(nsnull, nsmessage.get(),
++ key.get(),
++ nsIAuthPrompt::SAVE_PASSWORD_PERMANENTLY,
++ &pass, &retval);
++ }
++ if (NS_FAILED(rv) || !retval) { // was || user == '\0' || pass == '\0'
++ g_mount_operation_reply(mount_op, G_MOUNT_OPERATION_ABORTED);
++ return;
++ }
++ /* GIO should accept UTF8 */
++ g_mount_operation_set_username(mount_op, NS_ConvertUTF16toUTF8(user).get());
++ g_mount_operation_set_password(mount_op, NS_ConvertUTF16toUTF8(pass).get());
++ nsMemory::Free(user);
++ nsMemory::Free(pass);
++ g_mount_operation_reply(mount_op, G_MOUNT_OPERATION_HANDLED);
++}
++
++//-----------------------------------------------------------------------------
++
++class nsGIOProtocolHandler : public nsIProtocolHandler
++ , public nsIObserver
++{
++ public:
++ NS_DECL_ISUPPORTS
++ NS_DECL_NSIPROTOCOLHANDLER
++ NS_DECL_NSIOBSERVER
++
++ nsresult Init();
++
++ private:
++ void InitSupportedProtocolsPref(nsIPrefBranch *prefs);
++ PRBool IsSupportedProtocol(const nsCString &spec);
++
++ nsCString mSupportedProtocols;
++};
++
++NS_IMPL_ISUPPORTS2(nsGIOProtocolHandler, nsIProtocolHandler, nsIObserver)
++
++nsresult
++nsGIOProtocolHandler::Init()
++{
++#ifdef PR_LOGGING
++ sGIOLog = PR_NewLogModule("gio");
++#endif
++
++ nsCOMPtr<nsIPrefBranch2> prefs = do_GetService(NS_PREFSERVICE_CONTRACTID);
++ if (prefs)
++ {
++ InitSupportedProtocolsPref(prefs);
++ prefs->AddObserver(MOZ_GIO_SUPPORTED_PROTOCOLS, this, PR_FALSE);
++ }
++
++ return NS_OK;
++}
++
++void
++nsGIOProtocolHandler::InitSupportedProtocolsPref(nsIPrefBranch *prefs)
++{
++ // Get user preferences to determine which protocol is supported.
++ // Gvfs/GIO has a set of supported protocols like obex, network, archive,
++ // computer, dav, cdda, gphoto2, trash, etc. Some of these seems to be
++ // irrelevant to process by browser. By default accept only smb and sftp
++ // protocols so far.
++ nsresult rv = prefs->GetCharPref(MOZ_GIO_SUPPORTED_PROTOCOLS,
++ getter_Copies(mSupportedProtocols));
++ if (NS_SUCCEEDED(rv)) {
++ mSupportedProtocols.StripWhitespace();
++ ToLowerCase(mSupportedProtocols);
++ }
++ else
++ mSupportedProtocols.Assign("smb:,sftp:"); // use defaults
++
++ LOG(("gio: supported protocols \"%s\"\n", mSupportedProtocols.get()));
++}
++
++PRBool
++nsGIOProtocolHandler::IsSupportedProtocol(const nsCString &aSpec)
++{
++ const char *specString = aSpec.get();
++ const char *colon = strchr(specString, ':');
++ if (!colon)
++ return PR_FALSE;
++
++ PRUint32 length = colon - specString + 1;
++
++ // <scheme> + ':'
++ nsCString scheme(specString, length);
++
++ char *found = PL_strcasestr(mSupportedProtocols.get(), scheme.get());
++ if (!found)
++ return PR_FALSE;
++
++ if (found[length] != ',' && found[length] != '\0')
++ return PR_FALSE;
++
++ return PR_TRUE;
++}
++
++NS_IMETHODIMP
++nsGIOProtocolHandler::GetScheme(nsACString &aScheme)
++{
++ aScheme.Assign(MOZ_GIO_SCHEME);
++ return NS_OK;
++}
++
++NS_IMETHODIMP
++nsGIOProtocolHandler::GetDefaultPort(PRInt32 *aDefaultPort)
++{
++ *aDefaultPort = -1;
++ return NS_OK;
++}
++
++NS_IMETHODIMP
++nsGIOProtocolHandler::GetProtocolFlags(PRUint32 *aProtocolFlags)
++{
++ // Is URI_STD true of all GnomeVFS URI types?
++ *aProtocolFlags = URI_STD | URI_DANGEROUS_TO_LOAD;
++ return NS_OK;
++}
++
++NS_IMETHODIMP
++nsGIOProtocolHandler::NewURI(const nsACString &aSpec,
++ const char *aOriginCharset,
++ nsIURI *aBaseURI,
++ nsIURI **aResult)
++{
++ const nsCString flatSpec(aSpec);
++ LOG(("gio: NewURI [spec=%s]\n", flatSpec.get()));
++
++ if (!aBaseURI)
++ {
++ // XXX Is it good to support all GIO protocols?
++ if (!IsSupportedProtocol(flatSpec))
++ return NS_ERROR_UNKNOWN_PROTOCOL;
++
++ PRInt32 colon_location = flatSpec.FindChar(':');
++ if (colon_location <= 0)
++ return NS_ERROR_UNKNOWN_PROTOCOL;
++
++ // Verify that GIO supports this URI scheme.
++ PRBool uri_scheme_supported = PR_FALSE;
++
++ GVfs *gvfs = g_vfs_get_default();
++
++ if (!gvfs) {
++ g_warning("Cannot get GVfs object.");
++ return NS_ERROR_UNKNOWN_PROTOCOL;
++ }
++
++ const gchar* const * uri_schemes = g_vfs_get_supported_uri_schemes(gvfs);
++
++ while (*uri_schemes != NULL) {
++ // While flatSpec ends with ':' the uri_scheme does not. Therefore do not
++ // compare last character.
++ if (StringHead(flatSpec, colon_location).Equals(*uri_schemes)) {
++ uri_scheme_supported = PR_TRUE;
++ break;
++ }
++ uri_schemes++;
++ }
++
++ if (!uri_scheme_supported) {
++ return NS_ERROR_UNKNOWN_PROTOCOL;
++ }
++ }
++
++ nsresult rv;
++ nsCOMPtr<nsIStandardURL> url =
++ do_CreateInstance(NS_STANDARDURL_CONTRACTID, &rv);
++ if (NS_FAILED(rv))
++ return rv;
++
++ rv = url->Init(nsIStandardURL::URLTYPE_STANDARD, -1, flatSpec,
++ aOriginCharset, aBaseURI);
++ if (NS_SUCCEEDED(rv))
++ rv = CallQueryInterface(url, aResult);
++ return rv;
++
++}
++
++NS_IMETHODIMP
++nsGIOProtocolHandler::NewChannel(nsIURI *aURI, nsIChannel **aResult)
++{
++ NS_ENSURE_ARG_POINTER(aURI);
++ nsresult rv;
++
++ nsCAutoString spec;
++ rv = aURI->GetSpec(spec);
++ if (NS_FAILED(rv))
++ return rv;
++
++ nsRefPtr<nsGIOInputStream> stream = new nsGIOInputStream(spec);
++ if (!stream)
++ {
++ rv = NS_ERROR_OUT_OF_MEMORY;
++ }
++ else
++ {
++ // start out assuming an unknown content-type. we'll set the content-type
++ // to something better once we open the URI.
++ rv = NS_NewInputStreamChannel(aResult,
++ aURI,
++ stream,
++ NS_LITERAL_CSTRING(UNKNOWN_CONTENT_TYPE));
++ if (NS_SUCCEEDED(rv))
++ stream->SetChannel(*aResult);
++ }
++ return rv;
++}
++
++NS_IMETHODIMP
++nsGIOProtocolHandler::AllowPort(PRInt32 aPort,
++ const char *aScheme,
++ PRBool *aResult)
++{
++ // Don't override anything.
++ *aResult = PR_FALSE;
++ return NS_OK;
++}
++
++NS_IMETHODIMP
++nsGIOProtocolHandler::Observe(nsISupports *aSubject,
++ const char *aTopic,
++ const PRUnichar *aData)
++{
++ if (strcmp(aTopic, NS_PREFBRANCH_PREFCHANGE_TOPIC_ID) == 0) {
++ nsCOMPtr<nsIPrefBranch> prefs = do_QueryInterface(aSubject);
++ InitSupportedProtocolsPref(prefs);
++ }
++ return NS_OK;
++}
++
++//-----------------------------------------------------------------------------
++
++#define NS_GIOPROTOCOLHANDLER_CID \
++{ /* ee706783-3af8-4d19-9e84-e2ebfe213480 */ \
++ 0xee706783, \
++ 0x3af8, \
++ 0x4d19, \
++ {0x9e, 0x84, 0xe2, 0xeb, 0xfe, 0x21, 0x34, 0x80} \
++}
++
++NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsGIOProtocolHandler, Init)
++NS_DEFINE_NAMED_CID(NS_GIOPROTOCOLHANDLER_CID);
++
++static const mozilla::Module::CIDEntry kVFSCIDs[] = {
++ { &kNS_GIOPROTOCOLHANDLER_CID, false, NULL, nsGIOProtocolHandlerConstructor },
++ { NULL }
++};
++
++static const mozilla::Module::ContractIDEntry kVFSContracts[] = {
++ { NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX MOZ_GIO_SCHEME, &kNS_GIOPROTOCOLHANDLER_CID },
++ { NULL }
++};
++
++static const mozilla::Module kVFSModule = {
++ mozilla::Module::kVersion,
++ kVFSCIDs,
++ kVFSContracts
++};
++
++NSMODULE_DEFN(nsGIOModule) = &kVFSModule;
+diff -r 49a1b2aa43c5 netwerk/base/src/nsIOService.cpp
+--- a/netwerk/base/src/nsIOService.cpp Tue Dec 21 12:42:59 2010 +0100
++++ b/netwerk/base/src/nsIOService.cpp Tue Jan 11 11:17:52 2011 +0100
+@@ -454,6 +454,27 @@
+ }
+
+ #ifdef MOZ_X11
++ // check to see whether GVFS can handle this URI scheme. if it can
++ // create a nsIURI for the "scheme:", then we assume it has support for
++ // the requested protocol. otherwise, we failover to using the default
++ // protocol handler.
++
++ rv = CallGetService(NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX"moz-gio",
++ result);
++ if (NS_SUCCEEDED(rv)) {
++ nsCAutoString spec(scheme);
++ spec.Append(':');
++
++ nsIURI *uri;
++ rv = (*result)->NewURI(spec, nsnull, nsnull, &uri);
++ if (NS_SUCCEEDED(rv)) {
++ NS_RELEASE(uri);
++ return rv;
++ }
++
++ NS_RELEASE(*result);
++ }
++
+ // check to see whether GnomeVFS can handle this URI scheme. if it can
+ // create a nsIURI for the "scheme:", then we assume it has support for
+ // the requested protocol. otherwise, we failover to using the default
diff --git a/extra/xulrunner/xulrunner-omnijar.patch b/extra/xulrunner/xulrunner-omnijar.patch
new file mode 100644
index 000000000..05b665afd
--- /dev/null
+++ b/extra/xulrunner/xulrunner-omnijar.patch
@@ -0,0 +1,1737 @@
+# HG changeset patch
+# Parent a7dea879b4b445a23186f438900562155bb39e99
+Bug 620931 part 1 - Use chrome manifest to register resource://gre-resources/
+
+diff --git a/layout/style/jar.mn b/layout/style/jar.mn
+--- a/layout/style/jar.mn
++++ b/layout/style/jar.mn
+@@ -1,8 +1,10 @@
+ toolkit.jar:
+ * res/ua.css (ua.css)
+ res/html.css (html.css)
+ res/quirk.css (quirk.css)
+ res/viewsource.css (viewsource.css)
+ * res/forms.css (forms.css)
+ res/arrow.gif (arrow.gif)
+ res/arrowd.gif (arrowd.gif)
++
++% resource gre-resources %res/
+diff --git a/netwerk/protocol/res/nsResProtocolHandler.cpp b/netwerk/protocol/res/nsResProtocolHandler.cpp
+--- a/netwerk/protocol/res/nsResProtocolHandler.cpp
++++ b/netwerk/protocol/res/nsResProtocolHandler.cpp
+@@ -75,17 +75,16 @@ static nsResProtocolHandler *gResHandler
+ //
+ // this enables PR_LOG_ALWAYS level information and places all output in
+ // the file log.txt
+ //
+ static PRLogModuleInfo *gResLog;
+ #endif
+
+ #define kGRE NS_LITERAL_CSTRING("gre")
+-#define kGRE_RESOURCES NS_LITERAL_CSTRING("gre-resources")
+
+ //----------------------------------------------------------------------------
+ // nsResURL : overrides nsStandardURL::GetFile to provide nsIFile resolution
+ //----------------------------------------------------------------------------
+
+ nsresult
+ nsResURL::EnsureFile()
+ {
+@@ -197,28 +196,16 @@ nsResProtocolHandler::Init()
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ //
+ // make resource://gre/ point to the GRE directory
+ //
+ rv = AddSpecialDir(NS_GRE_DIR, kGRE);
+ NS_ENSURE_SUCCESS(rv, rv);
+
+- // make resource://gre-resources/ point to gre toolkit[.jar]/res
+- nsCOMPtr<nsIURI> greURI;
+- nsCOMPtr<nsIURI> greResURI;
+- GetSubstitution(kGRE, getter_AddRefs(greURI));
+-#ifdef MOZ_CHROME_FILE_FORMAT_JAR
+- NS_NAMED_LITERAL_CSTRING(strGRE_RES_URL, "jar:chrome/toolkit.jar!/res/");
+-#else
+- NS_NAMED_LITERAL_CSTRING(strGRE_RES_URL, "chrome/toolkit/res/");
+-#endif
+- rv = mIOService->NewURI(strGRE_RES_URL, nsnull, greURI,
+- getter_AddRefs(greResURI));
+- SetSubstitution(kGRE_RESOURCES, greResURI);
+ //XXXbsmedberg Neil wants a resource://pchrome/ for the profile chrome dir...
+ // but once I finish multiple chrome registration I'm not sure that it is needed
+
+ // XXX dveditz: resource://pchrome/ defeats profile directory salting
+ // if web content can load it. Tread carefully.
+
+ return rv;
+ }
+@@ -242,22 +229,16 @@ nsResProtocolHandler::Init(nsIFile *aOmn
+ // these entries should be kept in sync with the normal Init function
+
+ // resource:/// points to jar:omni.jar!/
+ SetSubstitution(EmptyCString(), uri);
+
+ // resource://gre/ points to jar:omni.jar!/
+ SetSubstitution(kGRE, uri);
+
+- urlStr += "chrome/toolkit/res/";
+- rv = mIOService->NewURI(urlStr, nsnull, nsnull, getter_AddRefs(uri));
+- NS_ENSURE_SUCCESS(rv, rv);
+-
+- // resource://gre-resources/ points to jar:omni.jar!/chrome/toolkit/res/
+- SetSubstitution(kGRE_RESOURCES, uri);
+ return NS_OK;
+ }
+ #endif
+
+ #ifdef MOZ_IPC
+ static PLDHashOperator
+ EnumerateSubstitution(const nsACString& aKey,
+ nsIURI* aURI,
+# HG changeset patch
+# Parent 3038cccba1a071d6b418e15442d0f2d9f3dcb11d
+Bug 620931 part 2 - When building --with-libxul-sdk, use the right preferences directory
+
+diff --git a/browser/locales/Makefile.in b/browser/locales/Makefile.in
+--- a/browser/locales/Makefile.in
++++ b/browser/locales/Makefile.in
+@@ -183,17 +183,17 @@ install:: $(addsuffix .xml,$(SEARCH_PLUG
+ $(SYSINSTALL) $(IFLAGS1) $^ $(DESTDIR)$(mozappdir)/searchplugins
+
+
+ libs-%:
+ $(NSINSTALL) -D $(DIST)/install
+ @$(MAKE) -C ../../toolkit/locales libs-$* BOTH_MANIFESTS=1
+ @$(MAKE) -C ../../services/sync/locales AB_CD=$* XPI_NAME=locale-$* BOTH_MANIFESTS=1
+ @$(MAKE) -C ../../extensions/spellcheck/locales AB_CD=$* XPI_NAME=locale-$* BOTH_MANIFESTS=1
+- @$(MAKE) libs AB_CD=$* XPI_NAME=locale-$* PREF_DIR=defaults/pref BOTH_MANIFESTS=1
++ @$(MAKE) libs AB_CD=$* XPI_NAME=locale-$* PREF_DIR=$(PREF_DIR) BOTH_MANIFESTS=1
+ @$(MAKE) -C $(DEPTH)/$(MOZ_BRANDING_DIRECTORY)/locales AB_CD=$* XPI_NAME=locale-$* BOTH_MANIFESTS=1
+
+
+ repackage-win32-installer: WIN32_INSTALLER_OUT="$(_ABS_DIST)/$(PKG_INST_PATH)$(PKG_INST_BASENAME).exe"
+ repackage-win32-installer: $(WIN32_INSTALLER_IN) $(SUBMAKEFILES)
+ @echo "Repackaging $(WIN32_INSTALLER_IN) into $(WIN32_INSTALLER_OUT)."
+ $(MAKE) -C $(DEPTH)/$(MOZ_BRANDING_DIRECTORY) export
+ $(MAKE) -C ../installer/windows CONFIG_DIR=l10ngen l10ngen/setup.exe l10ngen/7zSD.sfx
+diff --git a/toolkit/mozapps/installer/packager.mk b/toolkit/mozapps/installer/packager.mk
+--- a/toolkit/mozapps/installer/packager.mk
++++ b/toolkit/mozapps/installer/packager.mk
+@@ -307,17 +307,17 @@ OMNIJAR_FILES = \
+ res \
+ defaults \
+ greprefs.js \
+ jsloader \
+ $(NULL)
+
+ NON_OMNIJAR_FILES += \
+ chrome/icons/\* \
+- defaults/pref/channel-prefs.js \
++ $(PREF_DIR)/channel-prefs.js \
+ res/cursors/\* \
+ res/MainMenu.nib/\* \
+ $(NULL)
+
+ PACK_OMNIJAR = \
+ rm -f omni.jar components/binary.manifest && \
+ grep -h '^binary-component' components/*.manifest > binary.manifest ; \
+ sed -e 's/^binary-component/\#binary-component/' components/components.manifest > components.manifest && \
+# HG changeset patch
+# Parent cd8df8030f7ad7530692bd7c4391a8009df56a02
+Bug 620931 part 3 - Allow GRE and XUL application to use omni.jar independently
+
+We now store two independent locations for an omni.jar, allowing GRE/XRE and
+XUL application to each have their own omni.jar. And since xulrunner setups
+are very independent from the XUL applications, we implement support for both
+omni.jar and non omni.jar cases in the same runtime, with the side effect of
+allowing to switch from one to the other manually without rebuilding the
+binaries.
+
+We let the mozilla::Omnijar API handle both cases, so that callers don't need
+too much work to support them.
+
+We also make the preferences service load the same set of preferences in all
+the various cases (unified vs. separate, omni.jar vs. no omni.jar).
+
+The child process launcher for IPC is modified to pass the base directories
+needed for the mozilla::Omnijar API initialization in the child process.
+
+Finally, the startupcache file name canonicalization is modified to separate
+APP and GRE resources.
+
+diff --git a/ipc/glue/GeckoChildProcessHost.cpp b/ipc/glue/GeckoChildProcessHost.cpp
+--- a/ipc/glue/GeckoChildProcessHost.cpp
++++ b/ipc/glue/GeckoChildProcessHost.cpp
+@@ -440,26 +440,29 @@ GeckoChildProcessHost::PerformAsyncLaunc
+ // other end of the socketpair() from us
+
+ std::vector<std::string> childArgv;
+
+ childArgv.push_back(exePath.value());
+
+ childArgv.insert(childArgv.end(), aExtraOpts.begin(), aExtraOpts.end());
+
+-#ifdef MOZ_OMNIJAR
+ // Make sure the child process can find the omnijar
+ // See XRE_InitCommandLine in nsAppRunner.cpp
+- nsCAutoString omnijarPath;
+- if (mozilla::OmnijarPath()) {
+- mozilla::OmnijarPath()->GetNativePath(omnijarPath);
+- childArgv.push_back("-omnijar");
+- childArgv.push_back(omnijarPath.get());
++ nsCAutoString path;
++ nsCOMPtr<nsIFile> file = mozilla::Omnijar::GetBase(mozilla::Omnijar::GRE);
++ if (file && NS_SUCCEEDED(file->GetNativePath(path))) {
++ childArgv.push_back("-grebase");
++ childArgv.push_back(path.get());
+ }
+-#endif
++ file = mozilla::Omnijar::GetBase(mozilla::Omnijar::APP);
++ if (file && NS_SUCCEEDED(file->GetNativePath(path))) {
++ childArgv.push_back("-appbase");
++ childArgv.push_back(path.get());
++ }
+
+ childArgv.push_back(pidstring);
+
+ #if defined(MOZ_CRASHREPORTER)
+ # if defined(OS_LINUX)
+ int childCrashFd, childCrashRemapFd;
+ if (!CrashReporter::CreateNotificationPipeForChild(
+ &childCrashFd, &childCrashRemapFd))
+@@ -552,26 +555,29 @@ GeckoChildProcessHost::PerformAsyncLaunc
+ for (std::vector<std::string>::iterator it = aExtraOpts.begin();
+ it != aExtraOpts.end();
+ ++it) {
+ cmdLine.AppendLooseValue(UTF8ToWide(*it));
+ }
+
+ cmdLine.AppendLooseValue(std::wstring(mGroupId.get()));
+
+-#ifdef MOZ_OMNIJAR
+ // Make sure the child process can find the omnijar
+ // See XRE_InitCommandLine in nsAppRunner.cpp
+- nsAutoString omnijarPath;
+- if (mozilla::OmnijarPath()) {
+- mozilla::OmnijarPath()->GetPath(omnijarPath);
+- cmdLine.AppendLooseValue(UTF8ToWide("-omnijar"));
+- cmdLine.AppendLooseValue(omnijarPath.get());
++ nsAutoString path;
++ nsCOMPtr<nsIFile> file = mozilla::Omnijar::GetBase(mozilla::Omnijar::GRE);
++ if (file && NS_SUCCEEDED(file->GetPath(path))) {
++ cmdLine.AppendLooseValue(UTF8ToWide("-grebase"));
++ cmdLine.AppendLooseValue(path.get());
+ }
+-#endif
++ file = mozilla::Omnijar::GetBase(mozilla::Omnijar::APP);
++ if (file && NS_SUCCEEDED(file->GetPath(path))) {
++ cmdLine.AppendLooseValue(UTF8ToWide("-appbase"));
++ cmdLine.AppendLooseValue(path.get());
++ }
+
+ cmdLine.AppendLooseValue(UTF8ToWide(pidstring));
+
+ #if defined(MOZ_CRASHREPORTER)
+ cmdLine.AppendLooseValue(
+ UTF8ToWide(CrashReporter::GetChildNotificationPipe()));
+ #endif
+
+diff --git a/js/src/xpconnect/loader/mozJSComponentLoader.cpp b/js/src/xpconnect/loader/mozJSComponentLoader.cpp
+--- a/js/src/xpconnect/loader/mozJSComponentLoader.cpp
++++ b/js/src/xpconnect/loader/mozJSComponentLoader.cpp
+@@ -81,16 +81,17 @@
+ #include "nsIConsoleService.h"
+ #include "nsIStorageStream.h"
+ #include "nsIStringStream.h"
+ #include "prmem.h"
+ #if defined(XP_WIN)
+ #include "nsILocalFileWin.h"
+ #endif
+ #include "xpcprivate.h"
++#include "nsIResProtocolHandler.h"
+
+ #ifdef MOZ_ENABLE_LIBXUL
+ #include "mozilla/scache/StartupCache.h"
+ #include "mozilla/scache/StartupCacheUtils.h"
+ #endif
+ #include "mozilla/Omnijar.h"
+
+ #include "jsdbgapi.h"
+@@ -621,34 +622,21 @@ mozJSComponentLoader::LoadModule(nsILoca
+
+ const mozilla::Module*
+ mozJSComponentLoader::LoadModuleFromJAR(nsILocalFile *aJarFile,
+ const nsACString &aComponentPath)
+ {
+ #if !defined(XPCONNECT_STANDALONE)
+ nsresult rv;
+
+- nsCAutoString fullSpec;
+-
+-#ifdef MOZ_OMNIJAR
+- PRBool equal;
+- rv = aJarFile->Equals(mozilla::OmnijarPath(), &equal);
+- if (NS_SUCCEEDED(rv) && equal) {
+- fullSpec = "resource://gre/";
+- } else {
+-#endif
+- nsCAutoString fileSpec;
+- NS_GetURLSpecFromActualFile(aJarFile, fileSpec);
+- fullSpec = "jar:";
+- fullSpec += fileSpec;
+- fullSpec += "!/";
+-#ifdef MOZ_OMNIJAR
+- }
+-#endif
+-
++ nsCAutoString fullSpec, fileSpec;
++ NS_GetURLSpecFromActualFile(aJarFile, fileSpec);
++ fullSpec = "jar:";
++ fullSpec += fileSpec;
++ fullSpec += "!/";
+ fullSpec += aComponentPath;
+
+ nsCOMPtr<nsIURI> uri;
+ rv = NS_NewURI(getter_AddRefs(uri), fullSpec);
+ if (NS_FAILED(rv))
+ return NULL;
+
+ nsAutoString hashstring;
+@@ -833,57 +821,138 @@ class JSScriptHolder
+ JSScriptHolder(JSContext *cx, JSScript *script)
+ : mCx(cx), mScript(script) {}
+ ~JSScriptHolder() { ::JS_DestroyScript(mCx, mScript); }
+ private:
+ JSContext *mCx;
+ JSScript *mScript;
+ };
+
++static const char baseName[2][5] = { "gre/", "app/" };
++
++static inline PRBool
++canonicalizeBase(nsCAutoString &spec, nsACString &out, mozilla::Omnijar::Type aType)
++{
++ nsCAutoString base;
++ nsresult rv = mozilla::Omnijar::GetURIString(aType, base);
++
++ if (NS_FAILED(rv) || !base.Length())
++ return PR_FALSE;
++
++ if (base.Compare(spec.get(), PR_FALSE, base.Length()))
++ return PR_FALSE;
++
++ out.Append("/resource/");
++ out.Append(baseName[aType]);
++ out.Append(Substring(spec, base.Length()));
++ return PR_TRUE;
++}
+ /**
+ * PathifyURI transforms mozilla .js uris into useful zip paths
+ * to make it makes it easier to manipulate startup cache entries
+ * using standard zip tools.
+ * Transformations applied:
+- * * jsloader/<scheme> prefix is used to group mozJSComponentLoader cache entries in
++ * * jsloader/ prefix is used to group mozJSComponentLoader cache entries in
+ * a top-level zip directory.
+- * * In MOZ_OMNIJAR case resource:/// and resource://gre/ URIs refer to the same path
+- * so treat both of them as resource://gre/
++ * * resource:// URIs are resolved to their corresponding file/jar URI to
++ * canonicalize resources URIs other than gre and app.
++ * * Paths under GRE or APP directory have their base path replaced with
++ * resource/gre or resource/app to avoid depending on install location.
++ * * jar:file:///path/to/file.jar!/sub/path urls are replaced with
++ * /path/to/file.jar/sub/path
+ * * .bin suffix is added to the end of the path to indicate that jsloader/ entries
+ * are binary representations of JS source.
+ * For example:
+- * resource://gre/modules/XPCOMUtils.jsm becomes
+- * jsloader/resource/gre/modules/XPCOMUtils.jsm.bin
++ * resource://gre/modules/XPCOMUtils.jsm or
++ * file://$GRE_DIR/modules/XPCOMUtils.jsm or
++ * jar:file://$GRE_DIR/omni.jar!/modules/XPCOMUtils.jsm become
++ * jsloader/resource/gre/modules/XPCOMUtils.jsm.bin
++ * file://$PROFILE_DIR/extensions/{uuid}/components/component.js becomes
++ * jsloader/$PROFILE_DIR/extensions/%7Buuid%7D/components/component.js.bin
++ * jar:file://$PROFILE_DIR/extensions/some.xpi!/components/component.js becomes
++ * jsloader/$PROFILE_DIR/extensions/some.xpi/components/component.js.bin
+ */
+ static nsresult
+ PathifyURI(nsIURI *in, nsACString &out)
+ {
+- out = "jsloader/";
+- nsCAutoString scheme;
+- nsresult rv = in->GetScheme(scheme);
+- NS_ENSURE_SUCCESS(rv, rv);
+- out.Append(scheme);
+- nsCAutoString host;
+- // OK for GetHost to fail since it's not implemented sometimes
+- in->GetHost(host);
+-#ifdef MOZ_OMNIJAR
+- if (scheme.Equals("resource") && host.Length() == 0){
+- host = "gre";
+- }
+-#endif
+- if (host.Length()) {
+- out.Append("/");
+- out.Append(host);
+- }
+- nsCAutoString path;
+- rv = in->GetPath(path);
+- NS_ENSURE_SUCCESS(rv, rv);
+- out.Append(path);
+- out.Append(".bin");
+- return NS_OK;
++ PRBool equals;
++ nsresult rv;
++ nsCOMPtr<nsIURI> uri = in;
++ nsCAutoString spec;
++
++ out = "jsloader";
++
++ // Resolve resource:// URIs. At the end of this if/else block, we
++ // have both spec and uri variables identifying the same URI.
++ if (NS_SUCCEEDED(in->SchemeIs("resource", &equals)) && equals) {
++ nsCOMPtr<nsIIOService> ioService = do_GetIOService(&rv);
++ NS_ENSURE_SUCCESS(rv, rv);
++
++ nsCOMPtr<nsIProtocolHandler> ph;
++ rv = ioService->GetProtocolHandler("resource", getter_AddRefs(ph));
++ NS_ENSURE_SUCCESS(rv, rv);
++
++ nsCOMPtr<nsIResProtocolHandler> irph(do_QueryInterface(ph, &rv));
++ NS_ENSURE_SUCCESS(rv, rv);
++
++ rv = irph->ResolveURI(in, spec);
++ NS_ENSURE_SUCCESS(rv, rv);
++
++ rv = ioService->NewURI(spec, nsnull, nsnull, getter_AddRefs(uri));
++ NS_ENSURE_SUCCESS(rv, rv);
++ } else {
++ rv = in->GetSpec(spec);
++ NS_ENSURE_SUCCESS(rv, rv);
++ }
++
++ if (!canonicalizeBase(spec, out, mozilla::Omnijar::GRE) &&
++ !canonicalizeBase(spec, out, mozilla::Omnijar::APP)) {
++ if (NS_SUCCEEDED(uri->SchemeIs("file", &equals)) && equals) {
++ nsCOMPtr<nsIFileURL> baseFileURL;
++ baseFileURL = do_QueryInterface(uri, &rv);
++ NS_ENSURE_SUCCESS(rv, rv);
++
++ nsCAutoString path;
++ rv = baseFileURL->GetPath(path);
++ NS_ENSURE_SUCCESS(rv, rv);
++
++ out.Append(path);
++ } else if (NS_SUCCEEDED(uri->SchemeIs("jar", &equals)) && equals) {
++ nsCOMPtr<nsIJARURI> jarURI = do_QueryInterface(uri, &rv);
++ NS_ENSURE_SUCCESS(rv, rv);
++
++ nsCOMPtr<nsIURI> jarFileURI;
++ rv = jarURI->GetJARFile(getter_AddRefs(jarFileURI));
++ NS_ENSURE_SUCCESS(rv, rv);
++
++ nsCOMPtr<nsIFileURL> jarFileURL;
++ jarFileURL = do_QueryInterface(jarFileURI, &rv);
++ NS_ENSURE_SUCCESS(rv, rv);
++
++ nsCAutoString path;
++ rv = jarFileURL->GetPath(path);
++ NS_ENSURE_SUCCESS(rv, rv);
++ out.Append(path);
++
++ rv = jarURI->GetJAREntry(path);
++ NS_ENSURE_SUCCESS(rv, rv);
++ out.Append("/");
++ out.Append(path);
++ } else { // Very unlikely
++ nsCAutoString spec;
++ rv = uri->GetSpec(spec);
++ NS_ENSURE_SUCCESS(rv, rv);
++
++ out.Append("/");
++ out.Append(spec);
++ }
++ }
++
++ out.Append(".bin");
++ return NS_OK;
+ }
+
+ /* static */
+ #ifdef MOZ_ENABLE_LIBXUL
+ nsresult
+ mozJSComponentLoader::ReadScript(StartupCache* cache, nsIURI *uri,
+ JSContext *cx, JSScript **script)
+ {
+diff --git a/modules/libjar/nsJAR.cpp b/modules/libjar/nsJAR.cpp
+--- a/modules/libjar/nsJAR.cpp
++++ b/modules/libjar/nsJAR.cpp
+@@ -170,26 +170,23 @@ nsJAR::Open(nsIFile* zipFile)
+ NS_ENSURE_ARG_POINTER(zipFile);
+ if (mLock) return NS_ERROR_FAILURE; // Already open!
+
+ mZipFile = zipFile;
+
+ mLock = PR_NewLock();
+ NS_ENSURE_TRUE(mLock, NS_ERROR_OUT_OF_MEMORY);
+
+-#ifdef MOZ_OMNIJAR
+ // The omnijar is special, it is opened early on and closed late
+ // this avoids reopening it
+- PRBool equals;
+- nsresult rv = zipFile->Equals(mozilla::OmnijarPath(), &equals);
+- if (NS_SUCCEEDED(rv) && equals) {
+- mZip = mozilla::OmnijarReader();
++ nsZipArchive *zip = mozilla::Omnijar::GetReader(zipFile);
++ if (zip) {
++ mZip = zip;
+ return NS_OK;
+ }
+-#endif
+ return mZip->OpenArchive(zipFile);
+ }
+
+ NS_IMETHODIMP
+ nsJAR::OpenInner(nsIZipReader *aZipReader, const char *aZipEntry)
+ {
+ NS_ENSURE_ARG_POINTER(aZipReader);
+ NS_ENSURE_ARG_POINTER(aZipEntry);
+@@ -234,23 +231,22 @@ nsJAR::Close()
+ }
+
+ mParsedManifest = PR_FALSE;
+ mManifestData.Reset();
+ mGlobalStatus = JAR_MANIFEST_NOT_PARSED;
+ mTotalItemsInManifest = 0;
+ mOuterZipEntry.Truncate(0);
+
+-#ifdef MOZ_OMNIJAR
+- if (mZip == mozilla::OmnijarReader()) {
++ if ((mZip == mozilla::Omnijar::GetReader(mozilla::Omnijar::GRE)) ||
++ (mZip == mozilla::Omnijar::GetReader(mozilla::Omnijar::APP))) {
+ mZip.forget();
+ mZip = new nsZipArchive();
+ return NS_OK;
+ }
+-#endif
+ return mZip->CloseArchive();
+ }
+
+ NS_IMETHODIMP
+ nsJAR::Test(const char *aEntryName)
+ {
+ return mZip->Test(aEntryName);
+ }
+@@ -391,22 +387,21 @@ nsJAR::GetInputStreamWithSpec(const nsAC
+ NS_IMETHODIMP
+ nsJAR::GetCertificatePrincipal(const char* aFilename, nsIPrincipal** aPrincipal)
+ {
+ //-- Parameter check
+ if (!aPrincipal)
+ return NS_ERROR_NULL_POINTER;
+ *aPrincipal = nsnull;
+
+-#ifdef MOZ_OMNIJAR
+ // Don't check signatures in the omnijar - this is only
+ // interesting for extensions/XPIs.
+- if (mZip == mozilla::OmnijarReader())
++ if ((mZip == mozilla::Omnijar::GetReader(mozilla::Omnijar::GRE)) ||
++ (mZip == mozilla::Omnijar::GetReader(mozilla::Omnijar::APP)))
+ return NS_OK;
+-#endif
+
+ //-- Parse the manifest
+ nsresult rv = ParseManifest();
+ if (NS_FAILED(rv)) return rv;
+ if (mGlobalStatus == JAR_NO_MANIFEST)
+ return NS_OK;
+
+ PRInt16 requestedStatus;
+diff --git a/modules/libpref/src/nsPrefService.cpp b/modules/libpref/src/nsPrefService.cpp
+--- a/modules/libpref/src/nsPrefService.cpp
++++ b/modules/libpref/src/nsPrefService.cpp
+@@ -67,20 +67,18 @@
+
+ #include "prefapi.h"
+ #include "prefread.h"
+ #include "prefapi_private_data.h"
+ #include "PrefTuple.h"
+
+ #include "nsITimelineService.h"
+
+-#ifdef MOZ_OMNIJAR
+ #include "mozilla/Omnijar.h"
+ #include "nsZipArchive.h"
+-#endif
+
+ // Definitions
+ #define INITIAL_PREF_FILES 10
+ static NS_DEFINE_CID(kZipReaderCID, NS_ZIPREADER_CID);
+
+ // Prototypes
+ static nsresult openPrefFile(nsIFile* aFile);
+ static nsresult pref_InitInitialObjects(void);
+@@ -793,124 +791,144 @@ static nsresult pref_LoadPrefsInDirList(
+ pref_LoadPrefsInDir(dir, nsnull, 0);
+ }
+ }
+ }
+ }
+ return NS_OK;
+ }
+
+-//----------------------------------------------------------------------------------------
+-// Initialize default preference JavaScript buffers from
+-// appropriate TEXT resources
+-//----------------------------------------------------------------------------------------
+-static nsresult pref_InitDefaults()
+-{
+- nsCOMPtr<nsIFile> greprefsFile;
+- nsresult rv;
+-
+- rv = NS_GetSpecialDirectory(NS_GRE_DIR, getter_AddRefs(greprefsFile));
+- NS_ENSURE_SUCCESS(rv, rv);
+-
+- rv = greprefsFile->AppendNative(NS_LITERAL_CSTRING("greprefs.js"));
+- NS_ENSURE_SUCCESS(rv, rv);
+-
+- rv = openPrefFile(greprefsFile);
+- if (NS_FAILED(rv)) {
+- NS_WARNING("Error parsing GRE default preferences. Is this an old-style embedding app?");
+- }
+-
+- return NS_OK;
+-}
+-
+-#ifdef MOZ_OMNIJAR
+ static nsresult pref_ReadPrefFromJar(nsZipArchive* jarReader, const char *name)
+ {
+ nsZipItemPtr<char> manifest(jarReader, name, true);
+ NS_ENSURE_TRUE(manifest.Buffer(), NS_ERROR_NOT_AVAILABLE);
+
+ PrefParseState ps;
+ PREF_InitParseState(&ps, PREF_ReaderCallback, NULL);
+ nsresult rv = PREF_ParseBuf(&ps, manifest, manifest.Length());
+ PREF_FinalizeParseState(&ps);
+
+ return rv;
+ }
+
+-static nsresult pref_InitAppDefaultsFromOmnijar()
+-{
+- nsresult rv;
+-
+- nsZipArchive* jarReader = mozilla::OmnijarReader();
+- if (!jarReader)
+- return pref_InitDefaults();
+-
+- rv = pref_ReadPrefFromJar(jarReader, "greprefs.js");
+- NS_ENSURE_SUCCESS(rv, rv);
+-
+- nsZipFind *findPtr;
+- rv = jarReader->FindInit("defaults/pref/*.js$", &findPtr);
+- NS_ENSURE_SUCCESS(rv, rv);
+-
+- nsAutoPtr<nsZipFind> find(findPtr);
+-
+- nsTArray<nsCString> prefEntries;
+- const char *entryName;
+- PRUint16 entryNameLen;
+- while (NS_SUCCEEDED(find->FindNext(&entryName, &entryNameLen))) {
+- prefEntries.AppendElement(Substring(entryName, entryName + entryNameLen));
+- }
+-
+- prefEntries.Sort();
+- for (PRUint32 i = prefEntries.Length(); i--; ) {
+- rv = pref_ReadPrefFromJar(jarReader, prefEntries[i].get());
+- if (NS_FAILED(rv))
+- NS_WARNING("Error parsing preferences.");
+- }
+-
+- return NS_OK;
+-}
+-#endif
+-
++//----------------------------------------------------------------------------------------
++// Initialize default preference JavaScript buffers from
++// appropriate TEXT resources
++//----------------------------------------------------------------------------------------
+ static nsresult pref_InitInitialObjects()
+ {
+ nsresult rv;
+
+- // first we parse the GRE default prefs. This also works if we're not using a GRE,
+-#ifdef MOZ_OMNIJAR
+- rv = pref_InitAppDefaultsFromOmnijar();
+-#else
+- rv = pref_InitDefaults();
+-#endif
+- NS_ENSURE_SUCCESS(rv, rv);
++ // In omni.jar case, we load the following prefs:
++ // - jar:$gre/omni.jar!/greprefs.js
++ // - jar:$gre/omni.jar!/defaults/pref/*.js
++ // In non omni.jar case, we load:
++ // - $gre/greprefs.js
++ //
++ // When $app == $gre, we additionally load, in all cases:
++ // - $gre/defaults/pref/*.js
++ // This is kept for bug 591866 (channel-prefs.js should not be in omni.jar).
++ // We load all files instead of channel-prefs.js only to have the same
++ // behaviour as $app != $gre.
++ //
++ // When $app != $gre, we additionally load, in omni.jar case:
++ // - jar:$app/omni.jar!/defaults/preferences/*.js
++ // - $app/defaults/preferences/*.js
++ // and in non omni.jar case:
++ // - $app/defaults/preferences/*.js
+
+- nsCOMPtr<nsIFile> defaultPrefDir;
+- // now parse the "application" default preferences
+- rv = NS_GetSpecialDirectory(NS_APP_PREF_DEFAULTS_50_DIR, getter_AddRefs(defaultPrefDir));
+- NS_ENSURE_SUCCESS(rv, rv);
++ nsZipFind *findPtr;
++ nsAutoPtr<nsZipFind> find;
++ nsTArray<nsCString> prefEntries;
++ const char *entryName;
++ PRUint16 entryNameLen;
+
+- /* these pref file names should not be used: we process them after all other application pref files for backwards compatibility */
+- static const char* specialFiles[] = {
++ nsZipArchive* jarReader = mozilla::Omnijar::GetReader(mozilla::Omnijar::GRE);
++ if (jarReader) {
++ // Load jar:$gre/omni.jar!/greprefs.js
++ rv = pref_ReadPrefFromJar(jarReader, "greprefs.js");
++ NS_ENSURE_SUCCESS(rv, rv);
++
++ // Load jar:$gre/omni.jar!/defaults/pref/*.js
++ rv = jarReader->FindInit("defaults/pref/*.js$", &findPtr);
++ NS_ENSURE_SUCCESS(rv, rv);
++
++ find = findPtr;
++ while (NS_SUCCEEDED(find->FindNext(&entryName, &entryNameLen))) {
++ prefEntries.AppendElement(Substring(entryName, entryName + entryNameLen));
++ }
++
++ prefEntries.Sort();
++ for (PRUint32 i = prefEntries.Length(); i--; ) {
++ rv = pref_ReadPrefFromJar(jarReader, prefEntries[i].get());
++ if (NS_FAILED(rv))
++ NS_WARNING("Error parsing preferences.");
++ }
++ } else {
++ // Load $gre/greprefs.js
++ nsCOMPtr<nsIFile> greprefsFile;
++ rv = NS_GetSpecialDirectory(NS_GRE_DIR, getter_AddRefs(greprefsFile));
++ NS_ENSURE_SUCCESS(rv, rv);
++
++ rv = greprefsFile->AppendNative(NS_LITERAL_CSTRING("greprefs.js"));
++ NS_ENSURE_SUCCESS(rv, rv);
++
++ rv = openPrefFile(greprefsFile);
++ if (NS_FAILED(rv))
++ NS_WARNING("Error parsing GRE default preferences. Is this an old-style embedding app?");
++ }
++
++ if (!mozilla::Omnijar::HasOmnijar(mozilla::Omnijar::APP)) {
++ // Load $gre/defaults/pref/*.js
++ nsCOMPtr<nsIFile> defaultPrefDir;
++
++ rv = NS_GetSpecialDirectory(NS_APP_PREF_DEFAULTS_50_DIR, getter_AddRefs(defaultPrefDir));
++ NS_ENSURE_SUCCESS(rv, rv);
++
++ /* these pref file names should not be used: we process them after all other application pref files for backwards compatibility */
++ static const char* specialFiles[] = {
+ #if defined(XP_MAC) || defined(XP_MACOSX)
+ "macprefs.js"
+ #elif defined(XP_WIN)
+ "winpref.js"
+ #elif defined(XP_UNIX)
+ "unix.js"
+-#if defined(_AIX)
++#if defined(VMS)
++ , "openvms.js"
++#elif defined(_AIX)
+ , "aix.js"
+ #endif
+ #elif defined(XP_OS2)
+ "os2pref.js"
++#elif defined(XP_BEOS)
++ "beos.js"
+ #endif
+- };
++ };
+
+- rv = pref_LoadPrefsInDir(defaultPrefDir, specialFiles, NS_ARRAY_LENGTH(specialFiles));
+- if (NS_FAILED(rv)) {
+- NS_WARNING("Error parsing application default preferences.");
++ rv = pref_LoadPrefsInDir(defaultPrefDir, specialFiles, NS_ARRAY_LENGTH(specialFiles));
++ if (NS_FAILED(rv))
++ NS_WARNING("Error parsing application default preferences.");
++ }
++
++ // Load jar:$app/omni.jar!/defaults/preferences/*.js
++ nsZipArchive *appJarReader = mozilla::Omnijar::GetReader(mozilla::Omnijar::APP);
++ if (appJarReader) {
++ rv = appJarReader->FindInit("defaults/preferences/*.js$", &findPtr);
++ NS_ENSURE_SUCCESS(rv, rv);
++ find = findPtr;
++ prefEntries.Clear();
++ while (NS_SUCCEEDED(find->FindNext(&entryName, &entryNameLen))) {
++ prefEntries.AppendElement(Substring(entryName, entryName + entryNameLen));
++ }
++ prefEntries.Sort();
++ for (PRUint32 i = prefEntries.Length(); i--; ) {
++ rv = pref_ReadPrefFromJar(appJarReader, prefEntries[i].get());
++ if (NS_FAILED(rv))
++ NS_WARNING("Error parsing preferences.");
++ }
+ }
+
+ rv = pref_LoadPrefsInDirList(NS_APP_PREFS_DEFAULTS_DIR_LIST);
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ NS_CreateServicesFromCategory(NS_PREFSERVICE_APPDEFAULTS_TOPIC_ID,
+ nsnull, NS_PREFSERVICE_APPDEFAULTS_TOPIC_ID);
+
+diff --git a/netwerk/protocol/res/nsResProtocolHandler.cpp b/netwerk/protocol/res/nsResProtocolHandler.cpp
+--- a/netwerk/protocol/res/nsResProtocolHandler.cpp
++++ b/netwerk/protocol/res/nsResProtocolHandler.cpp
+@@ -152,97 +152,62 @@ nsResProtocolHandler::nsResProtocolHandl
+ }
+
+ nsResProtocolHandler::~nsResProtocolHandler()
+ {
+ gResHandler = nsnull;
+ }
+
+ nsresult
+-nsResProtocolHandler::AddSpecialDir(const char* aSpecialDir, const nsACString& aSubstitution)
+-{
+- nsCOMPtr<nsIFile> file;
+- nsresult rv = NS_GetSpecialDirectory(aSpecialDir, getter_AddRefs(file));
+- NS_ENSURE_SUCCESS(rv, rv);
+-
+- nsCOMPtr<nsIURI> uri;
+- rv = mIOService->NewFileURI(file, getter_AddRefs(uri));
+- NS_ENSURE_SUCCESS(rv, rv);
+-
+- return SetSubstitution(aSubstitution, uri);
+-}
+-
+-nsresult
+ nsResProtocolHandler::Init()
+ {
+ if (!mSubstitutions.Init(32))
+ return NS_ERROR_UNEXPECTED;
+
+ nsresult rv;
+
+ mIOService = do_GetIOService(&rv);
+ NS_ENSURE_SUCCESS(rv, rv);
+
+-#ifdef MOZ_OMNIJAR
+- nsCOMPtr<nsIFile> omniJar(mozilla::OmnijarPath());
+- if (omniJar)
+- return Init(omniJar);
+-#endif
+-
+- // these entries should be kept in sync with the omnijar Init function
++ nsCAutoString appURI, greURI;
++ rv = mozilla::Omnijar::GetURIString(mozilla::Omnijar::APP, appURI);
++ NS_ENSURE_SUCCESS(rv, rv);
++ rv = mozilla::Omnijar::GetURIString(mozilla::Omnijar::GRE, greURI);
++ NS_ENSURE_SUCCESS(rv, rv);
+
+ //
+- // make resource:/// point to the application directory
++ // make resource:/// point to the application directory or omnijar
+ //
+- rv = AddSpecialDir(NS_OS_CURRENT_PROCESS_DIR, EmptyCString());
++ nsCOMPtr<nsIURI> uri;
++ rv = NS_NewURI(getter_AddRefs(uri), appURI.Length() ? appURI : greURI);
++ NS_ENSURE_SUCCESS(rv, rv);
++
++ rv = SetSubstitution(EmptyCString(), uri);
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ //
+ // make resource://gre/ point to the GRE directory
+ //
+- rv = AddSpecialDir(NS_GRE_DIR, kGRE);
++ if (appURI.Length()) { // We already have greURI in uri if appURI.Length() is 0.
++ rv = NS_NewURI(getter_AddRefs(uri), greURI);
++ NS_ENSURE_SUCCESS(rv, rv);
++ }
++
++ rv = SetSubstitution(kGRE, uri);
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ //XXXbsmedberg Neil wants a resource://pchrome/ for the profile chrome dir...
+ // but once I finish multiple chrome registration I'm not sure that it is needed
+
+ // XXX dveditz: resource://pchrome/ defeats profile directory salting
+ // if web content can load it. Tread carefully.
+
+ return rv;
+ }
+
+-#ifdef MOZ_OMNIJAR
+-nsresult
+-nsResProtocolHandler::Init(nsIFile *aOmniJar)
+-{
+- nsresult rv;
+- nsCOMPtr<nsIURI> uri;
+- nsCAutoString omniJarSpec;
+- NS_GetURLSpecFromActualFile(aOmniJar, omniJarSpec, mIOService);
+-
+- nsCAutoString urlStr("jar:");
+- urlStr += omniJarSpec;
+- urlStr += "!/";
+-
+- rv = mIOService->NewURI(urlStr, nsnull, nsnull, getter_AddRefs(uri));
+- NS_ENSURE_SUCCESS(rv, rv);
+-
+- // these entries should be kept in sync with the normal Init function
+-
+- // resource:/// points to jar:omni.jar!/
+- SetSubstitution(EmptyCString(), uri);
+-
+- // resource://gre/ points to jar:omni.jar!/
+- SetSubstitution(kGRE, uri);
+-
+- return NS_OK;
+-}
+-#endif
+-
+ #ifdef MOZ_IPC
+ static PLDHashOperator
+ EnumerateSubstitution(const nsACString& aKey,
+ nsIURI* aURI,
+ void* aArg)
+ {
+ nsTArray<ResourceMapping>* resources =
+ static_cast<nsTArray<ResourceMapping>*>(aArg);
+diff --git a/startupcache/StartupCache.cpp b/startupcache/StartupCache.cpp
+--- a/startupcache/StartupCache.cpp
++++ b/startupcache/StartupCache.cpp
+@@ -237,27 +237,36 @@ StartupCache::GetBuffer(const char* id,
+ nsZipItemPtr<char> zipItem(mArchive, id, true);
+ if (zipItem) {
+ *outbuf = zipItem.Forget();
+ *length = zipItem.Length();
+ return NS_OK;
+ }
+ }
+
+-#ifdef MOZ_OMNIJAR
+- if (mozilla::OmnijarReader()) {
++ if (mozilla::Omnijar::GetReader(mozilla::Omnijar::APP)) {
+ // no need to checksum omnijarred entries
+- nsZipItemPtr<char> zipItem(mozilla::OmnijarReader(), id);
++ nsZipItemPtr<char> zipItem(mozilla::Omnijar::GetReader(mozilla::Omnijar::APP), id);
+ if (zipItem) {
+ *outbuf = zipItem.Forget();
+ *length = zipItem.Length();
+ return NS_OK;
+ }
+ }
+-#endif
++
++ if (mozilla::Omnijar::GetReader(mozilla::Omnijar::GRE)) {
++ // no need to checksum omnijarred entries
++ nsZipItemPtr<char> zipItem(mozilla::Omnijar::GetReader(mozilla::Omnijar::GRE), id);
++ if (zipItem) {
++ *outbuf = zipItem.Forget();
++ *length = zipItem.Length();
++ return NS_OK;
++ }
++ }
++
+ return NS_ERROR_NOT_AVAILABLE;
+ }
+
+ // Makes a copy of the buffer, client retains ownership of inbuf.
+ nsresult
+ StartupCache::PutBuffer(const char* id, const char* inbuf, PRUint32 len)
+ {
+ WaitOnWriteThread();
+diff --git a/toolkit/xre/nsAppRunner.cpp b/toolkit/xre/nsAppRunner.cpp
+--- a/toolkit/xre/nsAppRunner.cpp
++++ b/toolkit/xre/nsAppRunner.cpp
+@@ -3897,35 +3897,45 @@ XRE_InitCommandLine(int aArgc, char* aAr
+ CommandLine::Init(aArgc, canonArgs);
+
+ for (int i = 0; i < aArgc; ++i)
+ free(canonArgs[i]);
+ delete[] canonArgs;
+ #endif
+ #endif
+
+-#ifdef MOZ_OMNIJAR
+- const char *omnijarPath = nsnull;
+- ArgResult ar = CheckArg("omnijar", PR_FALSE, &omnijarPath);
++ const char *path = nsnull;
++ ArgResult ar = CheckArg("grebase", PR_FALSE, &path);
+ if (ar == ARG_BAD) {
+- PR_fprintf(PR_STDERR, "Error: argument -omnijar requires an omnijar path\n");
++ PR_fprintf(PR_STDERR, "Error: argument -grebase requires a path argument\n");
+ return NS_ERROR_FAILURE;
+ }
+
+- if (!omnijarPath)
++ if (!path)
+ return rv;
+
+- nsCOMPtr<nsILocalFile> omnijar;
+- rv = NS_NewNativeLocalFile(nsDependentCString(omnijarPath), PR_TRUE,
+- getter_AddRefs(omnijar));
+- if (NS_SUCCEEDED(rv))
+- mozilla::SetOmnijar(omnijar);
+-#endif
+-
+- return rv;
++ nsCOMPtr<nsILocalFile> greBase;
++ rv = XRE_GetFileFromPath(path, getter_AddRefs(greBase));
++ if (NS_FAILED(rv))
++ return rv;
++
++ ar = CheckArg("appbase", PR_FALSE, &path);
++ if (ar == ARG_BAD) {
++ PR_fprintf(PR_STDERR, "Error: argument -appbase requires a path argument\n");
++ return NS_ERROR_FAILURE;
++ }
++
++ nsCOMPtr<nsILocalFile> appBase;
++ if (path) {
++ rv = XRE_GetFileFromPath(path, getter_AddRefs(appBase));
++ if (NS_FAILED(rv))
++ return rv;
++ }
++
++ return mozilla::Omnijar::SetBase(greBase, appBase);
+ }
+
+ nsresult
+ XRE_DeinitCommandLine()
+ {
+ nsresult rv = NS_OK;
+
+ #if defined(MOZ_IPC)
+diff --git a/toolkit/xre/nsEmbedFunctions.cpp b/toolkit/xre/nsEmbedFunctions.cpp
+--- a/toolkit/xre/nsEmbedFunctions.cpp
++++ b/toolkit/xre/nsEmbedFunctions.cpp
+@@ -512,19 +512,17 @@ XRE_InitChildProcess(int aArgc,
+ }
+
+ // Run the UI event loop on the main thread.
+ uiMessageLoop.MessageLoop::Run();
+
+ // Allow ProcessChild to clean up after itself before going out of
+ // scope and being deleted
+ process->CleanUp();
+-#ifdef MOZ_OMNIJAR
+- mozilla::SetOmnijar(nsnull);
+-#endif
++ mozilla::Omnijar::SetBase(nsnull, nsnull);
+ }
+ }
+
+ NS_LogTerm();
+ return XRE_DeinitCommandLine();
+ }
+
+ MessageLoop*
+diff --git a/xpcom/build/Makefile.in b/xpcom/build/Makefile.in
+--- a/xpcom/build/Makefile.in
++++ b/xpcom/build/Makefile.in
+@@ -64,28 +64,25 @@ CSRCS = \
+ $(NULL)
+
+ CPPSRCS = \
+ $(XPCOM_GLUE_SRC_LCPPSRCS) \
+ $(XPCOM_GLUENS_SRC_LCPPSRCS) \
+ nsXPComInit.cpp \
+ nsXPCOMStrings.cpp \
+ Services.cpp \
++ Omnijar.cpp \
+ $(NULL)
+
+ ifndef MOZ_ENABLE_LIBXUL
+ ifeq (,$(filter-out WINNT WINCE OS2,$(OS_ARCH)))
+ CPPSRCS += dlldeps.cpp
+ endif
+ endif
+
+-ifdef MOZ_OMNIJAR
+-CPPSRCS += Omnijar.cpp
+-endif
+-
+ SHARED_LIBRARY_LIBS = \
+ $(DEPTH)/chrome/src/$(LIB_PREFIX)chrome_s.$(LIB_SUFFIX) \
+ ../ds/$(LIB_PREFIX)xpcomds_s.$(LIB_SUFFIX) \
+ ../io/$(LIB_PREFIX)xpcomio_s.$(LIB_SUFFIX) \
+ ../components/$(LIB_PREFIX)xpcomcomponents_s.$(LIB_SUFFIX) \
+ ../threads/$(LIB_PREFIX)xpcomthreads_s.$(LIB_SUFFIX) \
+ ../proxy/src/$(LIB_PREFIX)xpcomproxy_s.$(LIB_SUFFIX) \
+ ../base/$(LIB_PREFIX)xpcombase_s.$(LIB_SUFFIX) \
+diff --git a/xpcom/build/Omnijar.cpp b/xpcom/build/Omnijar.cpp
+--- a/xpcom/build/Omnijar.cpp
++++ b/xpcom/build/Omnijar.cpp
+@@ -16,16 +16,17 @@
+ *
+ * The Initial Developer of the Original Code is
+ * Mozilla Foundation.
+ * Portions created by the Initial Developer are Copyright (C) 2010
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ * Michael Wu <mwu@mozilla.com>
++ * Mike Hommey <mh@glandium.org>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+@@ -33,69 +34,175 @@
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+ #include "Omnijar.h"
+
+-#include "nsILocalFile.h"
+-#include "nsXULAppAPI.h"
++#include "nsIFile.h"
+ #include "nsZipArchive.h"
++#include "nsNetUtil.h"
+
+-static nsILocalFile* sOmnijarPath = nsnull;
+-static nsZipArchive* sOmnijarReader = nsnull;
++namespace mozilla {
+
+-static void
+-SetupReader()
++nsIFile *Omnijar::sPath[2] = { nsnull, nsnull };
++PRBool Omnijar::sIsOmnijar[2] = { PR_FALSE, PR_FALSE };
++
++#ifdef MOZ_ENABLE_LIBXUL
++nsZipArchive *Omnijar::sReader[2] = { nsnull, nsnull };
++#endif
++
++static already_AddRefed<nsIFile>
++ComputePath(nsIFile *aPath, PRBool &aIsOmnijar)
+ {
+- if (!sOmnijarPath) {
+- return;
++ PRBool isDir;
++ aIsOmnijar = PR_FALSE;
++ if (!aPath || NS_FAILED(aPath->IsDirectory(&isDir)) || !isDir)
++ return nsnull;
++
++ nsCOMPtr<nsIFile> path;
++#ifdef MOZ_ENABLE_LIBXUL
++ // Search for omni.jar in the given directory
++ if (!isDir || NS_FAILED(aPath->Clone(getter_AddRefs(path))))
++ return nsnull;
++
++ if (NS_FAILED(path->AppendNative(NS_LITERAL_CSTRING("omni.jar"))))
++ return nsnull;
++
++ if (NS_FAILED(path->Exists(&aIsOmnijar)))
++ return nsnull;
++#endif
++
++ if (!aIsOmnijar && NS_FAILED(aPath->Clone(getter_AddRefs(path))))
++ return nsnull;
++
++ return path.forget();
++}
++
++nsresult
++Omnijar::SetBase(nsIFile *aGrePath, nsIFile *aAppPath)
++{
++ NS_ABORT_IF_FALSE(aGrePath || !aAppPath, "Omnijar::SetBase(NULL, something) call forbidden");
++
++#ifdef MOZ_ENABLE_LIBXUL
++ if (sReader[GRE]) {
++ sReader[GRE]->CloseArchive();
++ delete sReader[GRE];
++ }
++ if (sReader[APP]) {
++ sReader[APP]->CloseArchive();
++ delete sReader[APP];
++ }
++ sReader[APP] = sReader[GRE] = nsnull;
++#endif
++
++ nsresult rv;
++ PRBool equals;
++ if (aAppPath) {
++ rv = aAppPath->Equals(aGrePath, &equals);
++ NS_ENSURE_SUCCESS(rv, rv);
++ } else {
++ equals = PR_TRUE;
+ }
+
+- nsZipArchive* zipReader = new nsZipArchive();
+- if (!zipReader) {
+- NS_IF_RELEASE(sOmnijarPath);
+- return;
++ nsCOMPtr<nsIFile> grePath = ComputePath(aGrePath, sIsOmnijar[GRE]);
++ nsCOMPtr<nsIFile> appPath = ComputePath(equals ? nsnull : aAppPath, sIsOmnijar[APP]);
++
++ NS_IF_RELEASE(sPath[GRE]);
++ sPath[GRE] = grePath;
++ NS_IF_ADDREF(sPath[GRE]);
++
++ NS_IF_RELEASE(sPath[APP]);
++ sPath[APP] = appPath;
++ NS_IF_ADDREF(sPath[APP]);
++
++ return NS_OK;
++}
++
++already_AddRefed<nsIFile>
++Omnijar::GetBase(Type aType)
++{
++ NS_ABORT_IF_FALSE(sPath[0], "Omnijar not initialized");
++
++ if (!sIsOmnijar[aType]) {
++ NS_IF_ADDREF(sPath[aType]);
++ return sPath[aType];
+ }
+
+- if (NS_FAILED(zipReader->OpenArchive(sOmnijarPath))) {
++ nsCOMPtr<nsIFile> file, path;
++ if (NS_FAILED(sPath[aType]->Clone(getter_AddRefs(file))))
++ return nsnull;
++
++ if (NS_FAILED(file->GetParent(getter_AddRefs(path))))
++ return nsnull;
++ return path.forget();
++}
++
++#ifdef MOZ_ENABLE_LIBXUL
++nsZipArchive *
++Omnijar::GetReader(Type aType)
++{
++ if (!sIsOmnijar[aType])
++ return nsnull;
++
++ if (sReader[aType])
++ return sReader[aType];
++
++ nsZipArchive* zipReader = new nsZipArchive();
++ if (!zipReader)
++ return nsnull;
++
++ if (NS_FAILED(zipReader->OpenArchive(sPath[aType]))) {
+ delete zipReader;
+- NS_IF_RELEASE(sOmnijarPath);
+- return;
++ return nsnull;
+ }
+
+- sOmnijarReader = zipReader;
++ return (sReader[aType] = zipReader);
+ }
+
+-nsILocalFile*
+-mozilla::OmnijarPath()
++nsZipArchive *
++Omnijar::GetReader(nsIFile *aPath)
+ {
+- if (!sOmnijarReader)
+- SetupReader();
++ PRBool equals;
++ nsresult rv;
+
+- return sOmnijarPath;
++ if (sIsOmnijar[GRE]) {
++ rv = sPath[GRE]->Equals(aPath, &equals);
++ if (NS_SUCCEEDED(rv) && equals)
++ return GetReader(GRE);
++ }
++ if (sIsOmnijar[APP]) {
++ rv = sPath[APP]->Equals(aPath, &equals);
++ if (NS_SUCCEEDED(rv) && equals)
++ return GetReader(APP);
++ }
++ return nsnull;
++}
++#endif
++
++nsresult
++Omnijar::GetURIString(Type aType, nsCString &result)
++{
++ NS_ABORT_IF_FALSE(sPath[0], "Omnijar not initialized");
++
++ result = "";
++
++ if ((aType == APP) && (!sPath[APP]))
++ return NS_OK;
++
++ nsCAutoString omniJarSpec;
++ nsresult rv = NS_GetURLSpecFromActualFile(sPath[aType], omniJarSpec);
++ NS_ENSURE_SUCCESS(rv, rv);
++
++ if (sIsOmnijar[aType]) {
++ result = "jar:";
++ result += omniJarSpec;
++ result += "!";
++ } else {
++ result = omniJarSpec;
++ }
++ result += "/";
++ return NS_OK;
+ }
+
+-nsZipArchive*
+-mozilla::OmnijarReader()
+-{
+- if (!sOmnijarReader)
+- SetupReader();
+-
+- return sOmnijarReader;
+-}
+-
+-void
+-mozilla::SetOmnijar(nsILocalFile* aPath)
+-{
+- NS_IF_RELEASE(sOmnijarPath);
+- if (sOmnijarReader) {
+- sOmnijarReader->CloseArchive();
+- delete sOmnijarReader;
+- sOmnijarReader = nsnull;
+- }
+-
+- sOmnijarPath = aPath;
+- NS_IF_ADDREF(sOmnijarPath);
+-}
+-
++} /* namespace mozilla */
+diff --git a/xpcom/build/Omnijar.h b/xpcom/build/Omnijar.h
+--- a/xpcom/build/Omnijar.h
++++ b/xpcom/build/Omnijar.h
+@@ -16,16 +16,17 @@
+ *
+ * The Initial Developer of the Original Code is
+ * Mozilla Foundation.
+ * Portions created by the Initial Developer are Copyright (C) 2010
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ * Michael Wu <mwu@mozilla.com>
++ * Mike Hommey <mh@glandium.org>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+@@ -34,29 +35,137 @@
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+ #ifndef mozilla_Omnijar_h
+ #define mozilla_Omnijar_h
+
+-class nsILocalFile;
++#include "nscore.h"
++#include "nsTArray.h"
++#include "nsCOMPtr.h"
++#include "nsString.h"
++
++class nsIFile;
+ class nsZipArchive;
+-
+-#ifdef MOZ_OMNIJAR
++class nsIURI;
+
+ namespace mozilla {
+
++#ifdef MOZ_ENABLE_LIBXUL
++#define OMNIJAR_EXPORT
++#else
++#define OMNIJAR_EXPORT NS_EXPORT
++#endif
++
++class OMNIJAR_EXPORT Omnijar {
++private:
+ /**
+- * This returns the path to the omnijar.
+- * If the omnijar isn't available, this function will return null.
+- * Callers should fallback to flat packaging if null.
++ * Store an nsIFile for either a base directory when there is no omni.jar,
++ * or omni.jar itself. We can store two paths here, one for GRE
++ * (corresponding to resource://gre/) and one for APP
++ * (corresponding to resource:/// and resource://app/), but only
++ * store one when both point to the same location (unified).
+ */
+-nsILocalFile *OmnijarPath();
+-nsZipArchive *OmnijarReader();
+-void SetOmnijar(nsILocalFile* aPath);
++static nsIFile *sPath[2];
++/**
++ * Store whether the corresponding sPath is an omni.jar or a directory
++ */
++static PRBool sIsOmnijar[2];
++
++#ifdef MOZ_ENABLE_LIBXUL
++/**
++ * Cached nsZipArchives for the corresponding sPath
++ */
++static nsZipArchive *sReader[2];
++#endif
++
++public:
++enum Type {
++ GRE = 0,
++ APP = 1
++};
++
++/**
++ * Returns whether SetBase has been called at least once with
++ * a valid nsIFile
++ */
++static PRBool
++IsInitialized()
++{
++ // GRE path is always set after initialization.
++ return sPath[0] != nsnull;
++}
++
++/**
++ * Sets the base directories for GRE and APP. APP base directory
++ * may be nsnull, in case the APP and GRE directories are the same.
++ */
++static nsresult SetBase(nsIFile *aGrePath, nsIFile *aAppPath);
++
++/**
++ * Returns an nsIFile pointing to the omni.jar file for GRE or APP.
++ * Returns nsnull when there is no corresponding omni.jar.
++ * Also returns nsnull for APP in the unified case.
++ */
++static already_AddRefed<nsIFile>
++GetPath(Type aType)
++{
++ NS_ABORT_IF_FALSE(sPath[0], "Omnijar not initialized");
++
++ if (sIsOmnijar[aType]) {
++ NS_IF_ADDREF(sPath[aType]);
++ return sPath[aType];
++ }
++ return nsnull;
++}
++
++/**
++ * Returns whether GRE or APP use an omni.jar. Returns PR_False when
++ * using an omni.jar in the unified case.
++ */
++static PRBool
++HasOmnijar(Type aType)
++{
++ return sIsOmnijar[aType];
++}
++
++/**
++ * Returns the base directory for GRE or APP. In the unified case,
++ * returns nsnull for APP.
++ */
++static already_AddRefed<nsIFile> GetBase(Type aType);
++
++/**
++ * Returns a nsZipArchive pointer for the omni.jar file for GRE or
++ * APP. Returns nsnull in the same cases GetPath() would.
++ */
++#ifdef MOZ_ENABLE_LIBXUL
++static nsZipArchive *GetReader(Type aType);
++#else
++static nsZipArchive *GetReader(Type aType) { return nsnull; }
++#endif
++
++/**
++ * Returns a nsZipArchive pointer for the given path IAOI the given
++ * path is the omni.jar for either GRE or APP.
++ */
++#ifdef MOZ_ENABLE_LIBXUL
++static nsZipArchive *GetReader(nsIFile *aPath);
++#else
++static nsZipArchive *GetReader(nsIFile *aPath) { return nsnull; }
++#endif
++
++/**
++ * Returns the URI string corresponding to the omni.jar or directory
++ * for GRE or APP. i.e. jar:/path/to/omni.jar!/ for omni.jar and
++ * /path/to/base/dir/ otherwise. Returns an empty string for APP in
++ * the unified case.
++ * The returned URI is guaranteed to end with a slash.
++ */
++static nsresult GetURIString(Type aType, nsCString &result);
++
++}; /* class Omnijar */
+
+ } /* namespace mozilla */
+
+-#endif /* MOZ_OMNIJAR */
+-
+ #endif /* mozilla_Omnijar_h */
+diff --git a/xpcom/build/nsXPComInit.cpp b/xpcom/build/nsXPComInit.cpp
+--- a/xpcom/build/nsXPComInit.cpp
++++ b/xpcom/build/nsXPComInit.cpp
+@@ -462,35 +462,35 @@ NS_InitXPCOM2(nsIServiceManager* *result
+ nsDirectoryService::gService->Set(NS_XPCOM_LIBRARY_FILE, xpcomLib);
+ }
+
+ if (appFileLocationProvider) {
+ rv = nsDirectoryService::gService->RegisterProvider(appFileLocationProvider);
+ if (NS_FAILED(rv)) return rv;
+ }
+
+-#ifdef MOZ_OMNIJAR
+ NS_TIME_FUNCTION_MARK("Next: Omnijar init");
+
+- if (!mozilla::OmnijarPath()) {
+- nsCOMPtr<nsILocalFile> omnijar;
++ if (!mozilla::Omnijar::IsInitialized()) {
++ nsCOMPtr<nsILocalFile> greDir, appDir;
+ nsCOMPtr<nsIFile> file;
+
+- rv = NS_ERROR_FAILURE;
+ nsDirectoryService::gService->Get(NS_GRE_DIR,
+ NS_GET_IID(nsIFile),
+ getter_AddRefs(file));
+- if (file)
+- rv = file->Append(NS_LITERAL_STRING("omni.jar"));
+- if (NS_SUCCEEDED(rv))
+- omnijar = do_QueryInterface(file);
+- if (NS_SUCCEEDED(rv))
+- mozilla::SetOmnijar(omnijar);
++ greDir = do_QueryInterface(file);
++
++ nsDirectoryService::gService->Get(NS_XPCOM_CURRENT_PROCESS_DIR,
++ NS_GET_IID(nsIFile),
++ getter_AddRefs(file));
++ appDir = do_QueryInterface(file);
++
++ rv = mozilla::Omnijar::SetBase(greDir, appDir);
++ NS_ENSURE_SUCCESS(rv, rv);
+ }
+-#endif
+
+ #ifdef MOZ_IPC
+ if ((sCommandLineWasInitialized = !CommandLine::IsInitialized())) {
+ NS_TIME_FUNCTION_MARK("Next: IPC command line init");
+
+ #ifdef OS_WIN
+ CommandLine::Init(0, nsnull);
+ #else
+@@ -769,18 +769,16 @@ ShutdownXPCOM(nsIServiceManager* servMgr
+ sCommandLineWasInitialized = false;
+ }
+ if (sExitManager) {
+ delete sExitManager;
+ sExitManager = nsnull;
+ }
+ #endif
+
+-#ifdef MOZ_OMNIJAR
+- mozilla::SetOmnijar(nsnull);
+-#endif
++ mozilla::Omnijar::SetBase(nsnull, nsnull);
+
+ NS_LogTerm();
+
+ return NS_OK;
+ }
+
+ } // namespace mozilla
+diff --git a/xpcom/components/nsComponentManager.cpp b/xpcom/components/nsComponentManager.cpp
+--- a/xpcom/components/nsComponentManager.cpp
++++ b/xpcom/components/nsComponentManager.cpp
+@@ -175,18 +175,16 @@ NS_DEFINE_CID(kCategoryManagerCID, NS_CA
+ #define COMPMGR_TIME_FUNCTION_CONTRACTID(cid) \
+ NS_TIME_FUNCTION_MIN_FMT(5, "%s (line %d) (contractid: %s)", MOZ_FUNCTION_NAME, \
+ __LINE__, (cid))
+ #else
+ #define COMPMGR_TIME_FUNCTION_CID(cid) do {} while (0)
+ #define COMPMGR_TIME_FUNCTION_CONTRACTID(cid) do {} while (0)
+ #endif
+
+-#define kOMNIJAR_PREFIX NS_LITERAL_CSTRING("resource:///")
+-
+ nsresult
+ nsGetServiceFromCategory::operator()(const nsIID& aIID, void** aInstancePtr) const
+ {
+ nsresult rv;
+ nsXPIDLCString value;
+ nsCOMPtr<nsICategoryManager> catman;
+ nsComponentManagerImpl *compMgr = nsComponentManagerImpl::gComponentManager;
+ if (!compMgr) {
+@@ -390,47 +388,44 @@ nsresult nsComponentManagerImpl::Init()
+
+ nsCategoryManager::GetSingleton()->SuppressNotifications(true);
+
+ RegisterModule(&kXPCOMModule, NULL);
+
+ for (PRUint32 i = 0; i < sStaticModules->Length(); ++i)
+ RegisterModule((*sStaticModules)[i], NULL);
+
+-#ifdef MOZ_OMNIJAR
+- if (mozilla::OmnijarPath()) {
+- nsCOMPtr<nsIZipReader> omnijarReader = new nsJAR();
+- rv = omnijarReader->Open(mozilla::OmnijarPath());
+- if (NS_SUCCEEDED(rv))
+- RegisterJarManifest(omnijarReader, "chrome.manifest", false);
++ nsCOMPtr<nsIFile> appOmnijar = mozilla::Omnijar::GetPath(mozilla::Omnijar::APP);
++ if (appOmnijar) {
++ cl = sModuleLocations->InsertElementAt(1); // Insert after greDir
++ cl->type = NS_COMPONENT_LOCATION;
++ cl->location = do_QueryInterface(appOmnijar);
++ cl->jar = true;
+ }
+-#endif
++ nsCOMPtr<nsIFile> greOmnijar = mozilla::Omnijar::GetPath(mozilla::Omnijar::GRE);
++ if (greOmnijar) {
++ cl = sModuleLocations->InsertElementAt(0);
++ cl->type = NS_COMPONENT_LOCATION;
++ cl->location = do_QueryInterface(greOmnijar);
++ cl->jar = true;
++ }
+
+ for (PRUint32 i = 0; i < sModuleLocations->Length(); ++i) {
+ ComponentLocation& l = sModuleLocations->ElementAt(i);
+ if (!l.jar) {
+ RegisterManifestFile(l.type, l.location, false);
+ continue;
+ }
+
+ nsCOMPtr<nsIZipReader> reader = do_CreateInstance(kZipReaderCID, &rv);
+ rv = reader->Open(l.location);
+ if (NS_SUCCEEDED(rv))
+ RegisterJarManifest(reader, "chrome.manifest", false);
+ }
+
+-#ifdef MOZ_OMNIJAR
+- if (mozilla::OmnijarPath()) {
+- cl = sModuleLocations->InsertElementAt(0);
+- cl->type = NS_COMPONENT_LOCATION;
+- cl->location = mozilla::OmnijarPath();
+- cl->jar = true;
+- }
+-#endif
+-
+ nsCategoryManager::GetSingleton()->SuppressNotifications(false);
+
+ mStatus = NORMAL;
+
+ return NS_OK;
+ }
+
+ void
+# HG changeset patch
+# Parent ff1b810f78226d7f4010909d3cde05a57fdcf20c
+Bug 620931 part 4 - Fix resource://app/ to always point to the same as resource:///
+
+diff --git a/netwerk/protocol/res/nsResProtocolHandler.cpp b/netwerk/protocol/res/nsResProtocolHandler.cpp
+--- a/netwerk/protocol/res/nsResProtocolHandler.cpp
++++ b/netwerk/protocol/res/nsResProtocolHandler.cpp
+@@ -74,16 +74,17 @@ static nsResProtocolHandler *gResHandler
+ // set NSPR_LOG_FILE=log.txt
+ //
+ // this enables PR_LOG_ALWAYS level information and places all output in
+ // the file log.txt
+ //
+ static PRLogModuleInfo *gResLog;
+ #endif
+
++#define kAPP NS_LITERAL_CSTRING("app")
+ #define kGRE NS_LITERAL_CSTRING("gre")
+
+ //----------------------------------------------------------------------------
+ // nsResURL : overrides nsStandardURL::GetFile to provide nsIFile resolution
+ //----------------------------------------------------------------------------
+
+ nsresult
+ nsResURL::EnsureFile()
+@@ -179,16 +180,22 @@ nsResProtocolHandler::Init()
+ nsCOMPtr<nsIURI> uri;
+ rv = NS_NewURI(getter_AddRefs(uri), appURI.Length() ? appURI : greURI);
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ rv = SetSubstitution(EmptyCString(), uri);
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ //
++ // make resource://app/ point to the application directory or omnijar
++ //
++ rv = SetSubstitution(kAPP, uri);
++ NS_ENSURE_SUCCESS(rv, rv);
++
++ //
+ // make resource://gre/ point to the GRE directory
+ //
+ if (appURI.Length()) { // We already have greURI in uri if appURI.Length() is 0.
+ rv = NS_NewURI(getter_AddRefs(uri), greURI);
+ NS_ENSURE_SUCCESS(rv, rv);
+ }
+
+ rv = SetSubstitution(kGRE, uri);
+diff --git a/toolkit/xre/nsXREDirProvider.cpp b/toolkit/xre/nsXREDirProvider.cpp
+--- a/toolkit/xre/nsXREDirProvider.cpp
++++ b/toolkit/xre/nsXREDirProvider.cpp
+@@ -300,19 +300,16 @@ nsXREDirProvider::GetFile(const char* aP
+ }
+ }
+ else if (!strcmp(aProperty, XRE_EXECUTABLE_FILE) && gArgv[0]) {
+ nsCOMPtr<nsILocalFile> lf;
+ rv = XRE_GetBinaryPath(gArgv[0], getter_AddRefs(lf));
+ if (NS_SUCCEEDED(rv))
+ file = lf;
+ }
+- else if (!strcmp(aProperty, "resource:app")) {
+- rv = GetAppDir()->Clone(getter_AddRefs(file));
+- }
+
+ else if (!strcmp(aProperty, NS_APP_PROFILE_DIR_STARTUP) && mProfileDir) {
+ return mProfileDir->Clone(aFile);
+ }
+ else if (!strcmp(aProperty, NS_APP_PROFILE_LOCAL_DIR_STARTUP)) {
+ if (mProfileLocalDir)
+ return mProfileLocalDir->Clone(aFile);
+
+# HG changeset patch
+# Parent 7d2228db71a299afca60babff632a967d2d6c456
+Bug 620931 part 5 - Enable omni.jar by default on xulrunner
+
+diff --git a/xulrunner/confvars.sh b/xulrunner/confvars.sh
+--- a/xulrunner/confvars.sh
++++ b/xulrunner/confvars.sh
+@@ -36,15 +36,16 @@
+ #
+ # ***** END LICENSE BLOCK *****
+
+ MOZ_APP_NAME=xulrunner
+ MOZ_APP_DISPLAYNAME=XULRunner
+ MOZ_UPDATER=1
+ MOZ_XULRUNNER=1
+ MOZ_ENABLE_LIBXUL=1
++MOZ_CHROME_FILE_FORMAT=omni
+ MOZ_STATIC_BUILD_UNSUPPORTED=1
+ MOZ_APP_VERSION=$MOZILLA_VERSION
+ if test "$MOZ_STORAGE"; then
+ MOZ_PLACES=1
+ fi
+ MOZ_EXTENSIONS_DEFAULT=" gnomevfs"
+ MOZ_URL_CLASSIFIER=1
diff --git a/extra/xulrunner/xulrunner-version.patch b/extra/xulrunner/xulrunner-version.patch
new file mode 100644
index 000000000..8e81b23ea
--- /dev/null
+++ b/extra/xulrunner/xulrunner-version.patch
@@ -0,0 +1,12 @@
+diff -Nur mozilla-2.0.orig/xulrunner/installer/Makefile.in mozilla-2.0/xulrunner/installer/Makefile.in
+--- mozilla-2.0.orig/xulrunner/installer/Makefile.in 2011-03-03 14:12:04.000000000 -0800
++++ mozilla-2.0/xulrunner/installer/Makefile.in 2011-03-13 01:58:19.663360705 -0800
+@@ -44,6 +44,8 @@
+
+ include $(DEPTH)/config/autoconf.mk
+
++MOZ_APP_VERSION="2.0"
++
+ NO_PKG_FILES = \
+ xulrunner-config \
+ regchrome* \
diff --git a/extra/xvidcore/PKGBUILD b/extra/xvidcore/PKGBUILD
new file mode 100644
index 000000000..8b8438536
--- /dev/null
+++ b/extra/xvidcore/PKGBUILD
@@ -0,0 +1,33 @@
+# $Id: PKGBUILD 111793 2011-03-01 00:12:59Z eric $
+# Maintainer: tobias <tobias@archlinux.org>
+# Contributor: Sarah Hay <sarah@archlinux.org>
+
+pkgname=xvidcore
+pkgver=1.3.0
+pkgrel=1
+pkgdesc="XviD is an open source MPEG-4 video codec"
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://www.xvid.org/"
+depends=('glibc')
+makedepends=('nasm')
+source=(http://downloads.xvid.org/downloads/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('22621243c4a588dcee599e77736309c2')
+sha1sums=('3220e3feee2c92ae73169009a23c9ef929867bc7')
+
+build() {
+ cd "${srcdir}/${pkgname}/build/generic"
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}/build/generic"
+ make DESTDIR="${pkgdir}" install
+
+ #Fix dynamic libraries
+ cd "${pkgdir}/usr/lib"
+ _mylib=$(basename libxvidcore.so.*)
+ ln -sf ${_mylib} libxvidcore.so.4
+ ln -sf ${_mylib} libxvidcore.so
+}
diff --git a/extra/yakuake/PKGBUILD b/extra/yakuake/PKGBUILD
new file mode 100644
index 000000000..6fe44c6cb
--- /dev/null
+++ b/extra/yakuake/PKGBUILD
@@ -0,0 +1,33 @@
+# $Id: PKGBUILD 107962 2011-01-28 08:00:39Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: James Rayner <iphitus@gmail.com>
+# Contributor: leeghoofd <abcdefg@solcon.nl>
+
+pkgname=yakuake
+pkgver=2.9.8
+pkgrel=1
+pkgdesc="A KDE konsole application with the look and feel of that in the Quake engine"
+arch=('i686' 'x86_64')
+url="http://yakuake.kde.org"
+license=('GPL')
+depends=('kdebase-konsole')
+makedepends=('cmake' 'automoc4')
+install="${pkgname}.install"
+source=("http://download.kde.org/stable/${pkgname}/${pkgver}/src/${pkgname}-${pkgver}.tar.bz2")
+md5sums=('a53ae52fc530912b74155a586d92a1fe')
+
+build() {
+ cd ${srcdir}
+ mkdir build
+ cd build
+ cmake ../${pkgname}-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_SKIP_RPATH=ON \
+ -DCMAKE_INSTALL_PREFIX=/usr
+ make
+}
+
+package() {
+ cd ${srcdir}/build
+ make DESTDIR=${pkgdir} install
+}
diff --git a/extra/yakuake/yakuake.install b/extra/yakuake/yakuake.install
new file mode 100644
index 000000000..c0797237a
--- /dev/null
+++ b/extra/yakuake/yakuake.install
@@ -0,0 +1,11 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/extra/yasm/PKGBUILD b/extra/yasm/PKGBUILD
new file mode 100644
index 000000000..950d609ca
--- /dev/null
+++ b/extra/yasm/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 98381 2010-11-08 19:21:18Z andrea $
+# Maintainer:
+# Contributor: Aaron Griffin <aaron@archlinux.org>
+# Contributor: Vinay S Shastry <vinayshastry@gmail.com>
+
+pkgname=yasm
+pkgver=1.1.0
+pkgrel=1
+pkgdesc="A rewrite of NASM to allow for multiple syntax supported (NASM, TASM, GAS, etc.)"
+arch=('i686' 'x86_64')
+license=('custom')
+url="http://www.tortall.net/projects/yasm/"
+depends=('glibc')
+source=(http://www.tortall.net/projects/yasm/releases/${pkgname}-${pkgver}.tar.gz)
+options=('!libtool')
+md5sums=('8392e5f2235c2c2a981e1a633f2698cb')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+ install -Dm644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+}
diff --git a/extra/yelp/PKGBUILD b/extra/yelp/PKGBUILD
new file mode 100644
index 000000000..19379e7a8
--- /dev/null
+++ b/extra/yelp/PKGBUILD
@@ -0,0 +1,32 @@
+# $Id: PKGBUILD 115826 2011-03-21 19:45:05Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=yelp
+pkgver=2.30.1
+pkgrel=2
+pkgdesc="A help browser for GNOME"
+arch=('i686' 'x86_64')
+depends=('libwebkit' 'gnome-doc-utils>=0.20.2' 'startup-notification>=0.10' 'libxslt' 'hicolor-icon-theme' 'rarian>=0.8.1' 'gconf>=2.28.1')
+makedepends=('intltool' 'pkgconfig')
+groups=('gnome')
+license=('GPL')
+options=('!emptydirs')
+url="http://www.gnome.org"
+install=yelp.install
+options=(force)
+#source=(http://ftp.gnome.org/pub/gnome/sources/yelp/2.30/yelp-${pkgver}.tar.bz2)
+source=(http://ftp.de.debian.org/debian/pool/main/y/yelp/yelp_${pkgver}+webkit.orig.tar.gz)
+sha256sums=('2f450ca32f3057de4a7be0f9a8408314b47ba6f157bcdb416a333fe4e5f7a44b')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var \
+ --with-search=basic
+ make
+ make -j1 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 yelp ${pkgdir}/etc/gconf/schemas/*.schemas
+ rm -f ${pkgdir}/etc/gconf/schemas/*.schemas
+}
diff --git a/extra/yelp/yelp.install b/extra/yelp/yelp.install
new file mode 100644
index 000000000..3a893b043
--- /dev/null
+++ b/extra/yelp/yelp.install
@@ -0,0 +1,22 @@
+pkgname=yelp
+
+post_install() {
+ 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() {
+ gconfpkg --uninstall ${pkgname}
+}
+
+post_remove() {
+ gtk-update-icon-cache -q -t -f /usr/share/icons/hicolor
+}
diff --git a/extra/yp-tools/PKGBUILD b/extra/yp-tools/PKGBUILD
new file mode 100644
index 000000000..9d09fd38a
--- /dev/null
+++ b/extra/yp-tools/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 91704 2010-09-27 17:42:28Z bisson $
+# Maintainer: dorphell <dorphell@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=yp-tools
+pkgver=2.12
+pkgrel=1
+pkgdesc='Linux NIS Tools'
+arch=('i686' 'x86_64')
+url='http://www.linux-nis.org/nis/yp-tools/'
+license=('GPL2')
+depends=('ypbind-mt' 'glibc')
+source=("ftp://ftp.kernel.org/pub/linux/utils/net/NIS/$pkgname-$pkgver.tar.gz")
+sha1sums=('10b0ef5d4c5723e0716d7a1431a900c0ba6ef703')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ ./configure --prefix=/usr --disable-domainname
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make DESTDIR="$pkgdir" install
+}
diff --git a/extra/ypbind-mt/PKGBUILD b/extra/ypbind-mt/PKGBUILD
new file mode 100644
index 000000000..7aba3d55e
--- /dev/null
+++ b/extra/ypbind-mt/PKGBUILD
@@ -0,0 +1,34 @@
+# $Id: PKGBUILD 91694 2010-09-27 17:40:26Z bisson $
+# Maintainer: judd <jvinet@zeroflux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=ypbind-mt
+pkgver=1.32
+pkgrel=1
+pkgdesc='Linux NIS daemon'
+arch=('i686' 'x86_64')
+url='http://www.linux-nis.org/nis/ypbind-mt/'
+license=('GPL2')
+depends=('rpcbind' 'openslp')
+backup=('etc/yp.conf' 'etc/conf.d/ypbind')
+source=("ftp://ftp.kernel.org/pub/linux/utils/net/NIS/$pkgname-$pkgver.tar.gz"
+ 'ypbind.conf'
+ 'ypbind')
+sha1sums=('136d1cb1499d32d01f7efa216352911980a7dda8'
+ '07dee386d001fb9e9e6b76dda8af5b2092e5a4a2'
+ '66f6ea2f622e0724e6017bf835d4f7f4a5bf9534')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ ./configure --prefix=/usr --disable-dbus-nm
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make DESTDIR="$pkgdir" install
+ install -D -m644 etc/yp.conf "$pkgdir"/etc/yp.conf
+ install -D -m755 ../ypbind "$pkgdir"/etc/rc.d/ypbind
+ install -D -m644 ../ypbind.conf "$pkgdir"/etc/conf.d/ypbind
+ install -d -m755 "$pkgdir"/var/yp/binding
+}
diff --git a/extra/ypbind-mt/ypbind b/extra/ypbind-mt/ypbind
new file mode 100755
index 000000000..5ef5cf5b3
--- /dev/null
+++ b/extra/ypbind-mt/ypbind
@@ -0,0 +1,36 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+. /etc/conf.d/ypbind
+
+case "$1" in
+ start)
+ stat_busy "Starting NIS Bind Daemon"
+ [ -f /etc/defaultdomain ] && /bin/domainname -F /etc/defaultdomain
+ /usr/sbin/ypbind $YPBIND_ARGS
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon ypbind
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping NIS Bind Daemon"
+ killall -q /usr/sbin/ypbind
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon ypbind
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
diff --git a/extra/ypbind-mt/ypbind.conf b/extra/ypbind-mt/ypbind.conf
new file mode 100644
index 000000000..fd0ebd491
--- /dev/null
+++ b/extra/ypbind-mt/ypbind.conf
@@ -0,0 +1,4 @@
+#
+# Parameters to be passed to ypbind
+#
+YPBIND_ARGS=""
diff --git a/extra/ypserv/PKGBUILD b/extra/ypserv/PKGBUILD
new file mode 100644
index 000000000..87d04a212
--- /dev/null
+++ b/extra/ypserv/PKGBUILD
@@ -0,0 +1,36 @@
+# $Id: PKGBUILD 91699 2010-09-27 17:41:23Z bisson $
+# Maintainer: judd <jvinet@zeroflux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=ypserv
+pkgver=2.24
+pkgrel=1
+pkgdesc='Linux NIS Server'
+arch=('i686' 'x86_64')
+url='http://www.linux-nis.org/nis/ypserv/'
+license=('GPL2')
+depends=('gdbm' 'openslp')
+backup=('etc/ypserv.conf' 'etc/netgroup' 'var/yp/securenets')
+source=("ftp://ftp.kernel.org/pub/linux/utils/net/NIS/$pkgname-$pkgver.tar.gz" \
+ 'yppasswd'
+ 'ypserv')
+sha1sums=('3ae53fe5e047b3bf6a1e407424311ec6e806a95d'
+ '96192b628afe36709496e4801d016c4bff343f0e'
+ 'b625381bfa6cf62345377a7df30b8f45935206c5')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make DESTDIR="$pkgdir" install
+
+ install -D -m644 etc/netgroup "$pkgdir"/etc/netgroup
+ install -D -m644 etc/ypserv.conf "$pkgdir"/etc/ypserv.conf
+ install -D -m644 etc/securenets "$pkgdir"/var/yp/securenets
+ install -D -m755 ../ypserv "$pkgdir"/etc/rc.d/ypserv
+ install -D -m755 ../yppasswd "$pkgdir"/etc/rc.d/yppasswd
+}
diff --git a/extra/ypserv/yppasswd b/extra/ypserv/yppasswd
new file mode 100755
index 000000000..c2b00b2ca
--- /dev/null
+++ b/extra/ypserv/yppasswd
@@ -0,0 +1,34 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+case "$1" in
+ start)
+ stat_busy "Starting NIS Password Daemon"
+ /usr/sbin/rpc.yppasswdd
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon yppasswd
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping NIS Password Daemon"
+ killall -q /usr/sbin/rpc.yppasswdd
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon yppasswd
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
diff --git a/extra/ypserv/ypserv b/extra/ypserv/ypserv
new file mode 100755
index 000000000..c36e6901b
--- /dev/null
+++ b/extra/ypserv/ypserv
@@ -0,0 +1,34 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+case "$1" in
+ start)
+ stat_busy "Starting NIS Server"
+ /usr/sbin/ypserv
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon ypserv
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping NIS Server"
+ killall -q /usr/sbin/ypserv
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon ypserv
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
diff --git a/extra/zenity/PKGBUILD b/extra/zenity/PKGBUILD
new file mode 100644
index 000000000..bf8e48d87
--- /dev/null
+++ b/extra/zenity/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 112936 2011-03-07 19:37:34Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=zenity
+pkgver=2.32.1
+pkgrel=2
+pkgdesc="Display graphical dialog boxes from shell scripts"
+arch=(i686 x86_64)
+license=('LGPL')
+depends=('libnotify>=0.7.1' 'gtk2')
+makedepends=('intltool' 'gnome-doc-utils>=0.20.2')
+groups=('gnome-extra')
+url="http://www.gnome.org"
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.32/${pkgname}-${pkgver}.tar.bz2
+ zenity-2.32.1-libnotify-0.7.patch)
+sha256sums=('8838be041a07364b62a4281c971392e4a09bb01bb3237a836ec0457ec0ea18ac'
+ '98bf6ca77f0fef14a5f0b8788595710b7eb88db121103a72c4a38bb912038431')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np0 -i "${srcdir}/zenity-2.32.1-libnotify-0.7.patch"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-scrollkeeper
+ make
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/zenity/zenity-2.32.1-libnotify-0.7.patch b/extra/zenity/zenity-2.32.1-libnotify-0.7.patch
new file mode 100644
index 000000000..4d5bf7447
--- /dev/null
+++ b/extra/zenity/zenity-2.32.1-libnotify-0.7.patch
@@ -0,0 +1,27 @@
+--- src/notification.c
++++ src/notification.c
+@@ -30,6 +30,9 @@
+
+ #ifdef HAVE_LIBNOTIFY
+ #include <libnotify/notify.h>
++#ifndef NOTIFY_CHECK_VERSION
++#define NOTIFY_CHECK_VERSION(x,y,z) 0
++#endif
+ #endif
+
+ #include "zenity.h"
+@@ -184,10 +187,14 @@
+ icon = freeme = g_filename_to_uri (icon_file, NULL, NULL);
+ }
+
++#if NOTIFY_CHECK_VERSION (0, 7, 0)
++ /* notify_notification_new_with_status_icon was removed */
++#else
+ notif = notify_notification_new_with_status_icon (
+ message[0] /* title */,
+ message[1] /* summary */,
+ icon, status_icon);
++#endif
+
+ g_strfreev (message);
+ g_free (freeme);
diff --git a/extra/zile/PKGBUILD b/extra/zile/PKGBUILD
new file mode 100644
index 000000000..842e1261c
--- /dev/null
+++ b/extra/zile/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 104088 2010-12-28 17:55:43Z kevin $
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+# Maintainer: Kevin Piche <kevin@archlinux.org>
+
+pkgname=zile
+pkgver=2.3.21
+pkgrel=1
+pkgdesc="A small, fast, and powerful Emacs clone"
+arch=(i686 x86_64)
+url="http://www.gnu.org/software/zile/"
+# Lua is not required, the author uses it to generate some source files.
+makedepends=('help2man')
+depends=('ncurses')
+license=('GPL')
+source=(http://ftp.gnu.org/gnu/${pkgname}/${pkgname}-${pkgver}.tar.gz)
+md5sums=('4bac1dc5d7e6fb5c13bd6677bca34b11')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr
+ make || return 1
+ make DESTDIR=${pkgdir} install
+}
+md5sums=('ec2834a42789477c55e7d44bc9438de1')
diff --git a/extra/zip/ChangeLog b/extra/zip/ChangeLog
new file mode 100644
index 000000000..bc7e1fb02
--- /dev/null
+++ b/extra/zip/ChangeLog
@@ -0,0 +1,13 @@
+2008-08-10 Eric Belanger <eric@archlinux.org>
+
+ * zip 3.0-1
+ * Removed zcrypt reference as it's now included in zip 3.0
+ * Added bzip2 depends
+ * Added license
+ * FHS man pages
+ * Disabled SMP build
+
+2008-07-27 Douglas Soares de Andrade <douglas@archlinux.org>
+
+ * Updating for i686: 3.0
+
diff --git a/extra/zip/PKGBUILD b/extra/zip/PKGBUILD
new file mode 100644
index 000000000..7b507748d
--- /dev/null
+++ b/extra/zip/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id: PKGBUILD 8433 2008-08-11 03:21:13Z eric $
+# Maintainer: dorphell <dorphell@archlinux.org>
+
+pkgname=zip
+pkgver=3.0
+pkgrel=1
+pkgdesc="Creates PKZIP-compatible .zip files"
+arch=(i686 x86_64)
+url="http://www.info-zip.org/pub/infozip/Zip.html"
+license=('BSD')
+depends=('glibc' 'bzip2')
+makedepends=('unzip')
+options=('!makeflags')
+source=(ftp://ftp.info-zip.org/pub/infozip/src/zip30.zip)
+md5sums=('e88492c8abd68fa9cfba72bc08757dba')
+
+build() {
+ cd $startdir/src/${pkgname}30
+ make -f unix/Makefile LOCAL_ZIP="$CFLAGS" prefix=/usr generic_gcc || return 1
+ make -f unix/Makefile INSTALL=`which install` prefix=$startdir/pkg/usr MANDIR=$startdir/pkg/usr/share/man/man1 install
+ install -D -m644 LICENSE $startdir/pkg/usr/share/licenses/$pkgname/LICENSE.txt
+}
diff --git a/extra/zope-interface/PKGBUILD b/extra/zope-interface/PKGBUILD
new file mode 100644
index 000000000..e584a84c1
--- /dev/null
+++ b/extra/zope-interface/PKGBUILD
@@ -0,0 +1,21 @@
+# $Id: PKGBUILD 113445 2011-03-08 17:33:50Z ibiru $
+# Maintainer : Ionut Biru <ibiru@archlinux.org>
+# Contributor: Douglas Soares de Andrade <douglas@archlinux.org>
+
+pkgname=zope-interface
+pkgver=3.6.1
+pkgrel=1
+pkgdesc="Separate distribution of the zope.interface package used in Zope 3."
+license=('ZPL')
+arch=('i686' 'x86_64')
+url="http://pypi.python.org/pypi/zope.interface"
+depends=('python2')
+source=(http://pypi.python.org/packages/source/z/zope.interface/zope.interface-${pkgver}.tar.gz)
+md5sums=('7a895181b8d10be4a7e9a3afa13cd3be')
+
+build() {
+ cd ${srcdir}/zope.interface-${pkgver}
+ python2 setup.py install --prefix=/usr --root=${pkgdir} --optimize=1
+ # Blabla.
+ rm $pkgdir/usr/lib/python2.7/site-packages/zope/interface/README*.txt
+}
diff --git a/extra/zsh/PKGBUILD b/extra/zsh/PKGBUILD
new file mode 100644
index 000000000..64a547515
--- /dev/null
+++ b/extra/zsh/PKGBUILD
@@ -0,0 +1,46 @@
+# $Id: PKGBUILD 114633 2011-03-14 21:00:40Z pierre $
+# Maintainer: Pierre Schmitz <pierre@archlinux.de>
+
+pkgname=zsh
+pkgver=4.3.11
+pkgrel=2
+pkgdesc='A very advanced and programmable command interpreter (shell) for UNIX'
+arch=('i686' 'x86_64')
+url='http://www.zsh.org/'
+license=('custom')
+depends=('pcre' 'libcap' 'gdbm')
+install=zsh.install
+source=("ftp://ftp.zsh.org/pub/${pkgname}-${pkgver}.tar.bz2")
+md5sums=('3225c7f53b69f395e95723585d6785ed')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ # FS#16360
+ sed -i 's/init.d/rc.d/g' Doc/Zsh/compsys.yo \
+ Doc/zsh.texi \
+ Completion/Unix/Type/_services \
+ Completion/Unix/Command/_init_d
+ ./configure --prefix=/usr \
+ --bindir=/bin \
+ --enable-etcdir=/etc/zsh \
+ --enable-zshenv=/etc/zsh/zshenv \
+ --enable-zlogin=/etc/zsh/zlogin \
+ --enable-zlogout=/etc/zsh/zlogout \
+ --enable-zprofile=/etc/profile \
+ --enable-zshrc=/etc/zsh/zshrc \
+ --enable-maildir-support \
+ --with-term-lib='ncursesw' \
+ --enable-multibyte \
+ --enable-function-subdirs \
+ --with-tcsetpgrp \
+ --enable-pcre \
+ --enable-cap \
+ --enable-zsh-secure-free
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}/" install
+ install -D -m644 LICENCE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+}
diff --git a/extra/zsh/zsh.install b/extra/zsh/zsh.install
new file mode 100644
index 000000000..e2a53bea8
--- /dev/null
+++ b/extra/zsh/zsh.install
@@ -0,0 +1,11 @@
+post_install() {
+ grep -q '/bin/zsh' etc/shells || echo '/bin/zsh' >> etc/shells
+}
+
+post_upgrade() {
+ post_install
+}
+
+pre_remove() {
+ sed -i '/^\/bin\/zsh/d' etc/shells
+}
diff --git a/extra/zvbi/PKGBUILD b/extra/zvbi/PKGBUILD
new file mode 100644
index 000000000..8ad534a47
--- /dev/null
+++ b/extra/zvbi/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 101442 2010-11-29 09:37:06Z jgc $
+# Maintainer:
+# Contributor: Alexander Baldeck <alexander@archlinux.org>
+# Contributor: dorphell <dorphell@archlinux.org>
+pkgname=zvbi
+pkgver=0.2.33
+pkgrel=3
+pkgdesc="VBI capture and decoding library"
+url="http://zapping.sourceforge.net/cgi-bin/view/ZVBI/WebHome"
+arch=(i686 x86_64)
+depends=('libpng' 'libx11')
+license=('GPL')
+options=('!libtool')
+source=(http://downloads.sourceforge.net/sourceforge/zapping/${pkgname}-${pkgver}.tar.bz2
+ fix-includes.patch)
+md5sums=('1741a6045c3eedfb611d645f2da69ac8'
+ '38766bc59e1571133d0399f0102da653')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i "${srcdir}/fix-includes.patch"
+ ./configure --prefix=/usr --disable-static --mandir=/usr/share/man
+ make
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/extra/zvbi/fix-includes.patch b/extra/zvbi/fix-includes.patch
new file mode 100644
index 000000000..28252649e
--- /dev/null
+++ b/extra/zvbi/fix-includes.patch
@@ -0,0 +1,36 @@
+Add proper #includes so that we do not get undef errors to S_ISCHR
+during linking.
+
+Signed-off-by: Alex Chiang <achiang@canonical.com>
+---
+--- zvbi-0.2.33.orig/src/io-dvb.c
++++ zvbi-0.2.33/src/io-dvb.c
+@@ -29,6 +29,8 @@
+ #include <errno.h>
+ #include <sys/select.h>
+ #include <sys/ioctl.h>
++#include <sys/types.h>
++#include <sys/stat.h>
+
+ #ifndef HAVE_S64_U64
+ /* Linux 2.6.x asm/types.h defines __s64 and __u64 only
+--- zvbi-0.2.33.orig/src/io-v4l.c
++++ zvbi-0.2.33/src/io-v4l.c
+@@ -42,6 +42,7 @@ static const char rcsid [] =
+ #include <assert.h>
+ #include <sys/time.h> /* timeval */
+ #include <sys/types.h> /* fd_set, uid_t */
++#include <sys/stat.h> /* S_ISCHR */
+ #include <sys/ioctl.h> /* for (_)videodev.h */
+ #include <pthread.h>
+
+--- zvbi-0.2.33.orig/contrib/ntsc-cc.c
++++ zvbi-0.2.33/contrib/ntsc-cc.c
+@@ -34,6 +34,7 @@
+ #include <locale.h>
+ #include <sys/ioctl.h>
+ #include <sys/types.h>
++#include <sys/stat.h>
+ #include <sys/time.h>
+ #ifdef HAVE_GETOPT_LONG
+ # include <getopt.h>