summaryrefslogtreecommitdiff
path: root/testing
diff options
context:
space:
mode:
Diffstat (limited to 'testing')
-rw-r--r--testing/abiword/PKGBUILD80
-rw-r--r--testing/abiword/abiword-2.8.6-libpng15.patch100
-rw-r--r--testing/abiword/abiword-2.8.6-no-undefined.patch21
-rw-r--r--testing/abiword/abiword.install11
-rw-r--r--testing/abiword/compat_libwpg_0_9.patch371
-rw-r--r--testing/allegro/PKGBUILD36
-rw-r--r--testing/alsaplayer/PKGBUILD37
-rw-r--r--testing/alsaplayer/alsaplayer.install11
-rw-r--r--testing/amule/PKGBUILD44
-rw-r--r--testing/at-spi/PKGBUILD37
-rw-r--r--testing/at-spi/at-spi.install17
-rw-r--r--testing/autopano-sift-c/PKGBUILD31
-rw-r--r--testing/avahi/PKGBUILD75
-rw-r--r--testing/avahi/gnome-nettool.pngbin0 -> 4509 bytes
-rw-r--r--testing/avahi/install21
-rw-r--r--testing/avahi/rc.d.patch11
-rw-r--r--testing/bmp/0.9.7.1-visualization.patch12
-rw-r--r--testing/bmp/PKGBUILD34
-rw-r--r--testing/bmp/bmp-0.9.7.1-crossfade-0.3.9.patch108
-rw-r--r--testing/bmp/bmp.install11
-rw-r--r--testing/cairo/PKGBUILD38
-rw-r--r--testing/cairo/cairo-1.10.0-buggy_gradients.patch13
-rw-r--r--testing/cairomm/PKGBUILD27
-rw-r--r--testing/capi4hylafax/PKGBUILD55
-rw-r--r--testing/capi4hylafax/capi4hylafax.install16
-rwxr-xr-xtesting/capi4hylafax/capi4hylafax.rc49
-rw-r--r--testing/capi4hylafax/config.faxCAPI397
-rw-r--r--testing/celestia/PKGBUILD50
-rw-r--r--testing/celestia/celestia-1.5.1-gcc44.patch20
-rw-r--r--testing/celestia/celestia-1.6.1-gcc46.patch13
-rw-r--r--testing/celestia/celestia-1.6.1-gentoo.patch23
-rw-r--r--testing/celestia/celestia-1.6.1-libpng15.patch14
-rw-r--r--testing/celestia/celestia-1.6.1-linking.patch54
-rw-r--r--testing/cinepaint/LICENSE25
-rw-r--r--testing/cinepaint/PKGBUILD47
-rw-r--r--testing/cinepaint/cinepaint-libpng15.patch452
-rw-r--r--testing/cinepaint/cinepaint.install11
-rw-r--r--testing/digikam/PKGBUILD104
-rw-r--r--testing/digikam/boost148.patch65
-rw-r--r--testing/digikam/digikam.install12
-rw-r--r--testing/digikam/kipi-plugins.install12
-rw-r--r--testing/digikam/libkipi140.patch63
-rw-r--r--testing/djvulibre/PKGBUILD41
-rw-r--r--testing/djvulibre/djvulibre.install13
-rw-r--r--testing/djvulibre/git-fixes.patch1607
-rw-r--r--testing/dvdauthor/PKGBUILD35
-rw-r--r--testing/dvdauthor/dvdauthor-0.7.0-libpng15.patch19
-rw-r--r--testing/emacs/PKGBUILD48
-rw-r--r--testing/emacs/emacs-subversion17.patch83
-rw-r--r--testing/emacs/emacs.install32
-rw-r--r--testing/enblend-enfuse/PKGBUILD39
-rw-r--r--testing/enblend-enfuse/enblend-4.0-libpng15.patch220
-rw-r--r--testing/enblend-enfuse/enblend-enfuse.install22
-rw-r--r--testing/enblend-enfuse/libpng-1.4.patch14
-rw-r--r--testing/evince/PKGBUILD36
-rw-r--r--testing/evince/evince.install19
-rw-r--r--testing/fbida/PKGBUILD27
-rw-r--r--testing/feh/PKGBUILD29
-rw-r--r--testing/ffmpegthumbnailer/PKGBUILD34
-rw-r--r--testing/ffmpegthumbnailer/ffmpegthumbnailer.desktop4
-rw-r--r--testing/fltk/PKGBUILD62
-rw-r--r--testing/fltk/fltk-games.install11
-rw-r--r--testing/fltk/fltk.install12
-rw-r--r--testing/fontforge/PKGBUILD8
-rw-r--r--testing/fvwm/PKGBUILD33
-rw-r--r--testing/fvwm/fvwm.desktop7
-rw-r--r--testing/gd/PKGBUILD31
-rw-r--r--testing/gd/libpng14.patch12
-rw-r--r--testing/gdk-pixbuf2/PKGBUILD33
-rw-r--r--testing/gdk-pixbuf2/gdk-pixbuf2.install11
-rw-r--r--testing/gegl/PKGBUILD36
-rw-r--r--testing/gif2png/PKGBUILD36
-rw-r--r--testing/gif2png/gif2png-2.5.4-libpng15.patch43
-rw-r--r--testing/gimp-dbp/PKGBUILD25
-rw-r--r--testing/gimp-devel/PKGBUILD54
-rw-r--r--testing/gimp-devel/gimp-devel.install12
-rw-r--r--testing/gimp-devel/linux.gpl19
-rw-r--r--testing/gimp-ufraw/PKGBUILD34
-rw-r--r--testing/gimp-ufraw/gimp-ufraw.install11
-rw-r--r--testing/gimp/PKGBUILD53
-rw-r--r--testing/gimp/gimp-poppler-0.18.patch476
-rw-r--r--testing/gimp/gimp.install12
-rw-r--r--testing/gimp/libpng_compile.patch984
-rw-r--r--testing/gimp/linux.gpl19
-rw-r--r--testing/gimp/uri-backend-libcurl.patch77
-rw-r--r--testing/glade-perl/PKGBUILD27
-rw-r--r--testing/glhack/PKGBUILD54
-rw-r--r--testing/glhack/glhack-libpng15.patch11
-rw-r--r--testing/glhack/glhack.install24
-rw-r--r--testing/gnome-color-manager/PKGBUILD36
-rw-r--r--testing/gnome-color-manager/gnome-color-manager.install19
-rw-r--r--testing/gnome-desktop2/PKGBUILD35
-rw-r--r--testing/gnome-perl/PKGBUILD27
-rw-r--r--testing/gnome-python/PKGBUILD69
-rw-r--r--testing/gnome-sharp/PKGBUILD70
-rw-r--r--testing/gnomecanvas-perl/PKGBUILD27
-rw-r--r--testing/graphicsmagick/PKGBUILD55
-rw-r--r--testing/graphviz/LICENSE87
-rw-r--r--testing/graphviz/PKGBUILD51
-rw-r--r--testing/graphviz/install12
-rw-r--r--testing/gstreamer0.10-good/PKGBUILD54
-rw-r--r--testing/gstreamer0.10-good/gstreamer0.10-good-plugins.install19
-rw-r--r--testing/gthumb/PKGBUILD34
-rw-r--r--testing/gthumb/gthumb.install24
-rw-r--r--testing/gtk-engines/PKGBUILD28
-rw-r--r--testing/gtk2/PKGBUILD59
-rw-r--r--testing/gtk2/cups-custom-print.patch104
-rw-r--r--testing/gtk2/gtk2.install16
-rw-r--r--testing/gtk2/xid-collision-debug.patch15
-rw-r--r--testing/gtkglext/PKGBUILD35
-rw-r--r--testing/gtkglext/gtk2.20.patch77
-rw-r--r--testing/gtkhtml/PKGBUILD31
-rw-r--r--testing/gtkmm/PKGBUILD38
-rw-r--r--testing/gtksourceview2/PKGBUILD28
-rw-r--r--testing/hugin/PKGBUILD34
-rw-r--r--testing/hugin/hugin.install15
-rw-r--r--testing/hylafax/PKGBUILD53
-rw-r--r--testing/hylafax/config.local273
-rw-r--r--testing/hylafax/configure-6.0.5.patch11
-rwxr-xr-xtesting/hylafax/hylafax71
-rw-r--r--testing/hylafax/hylafax-libtiff4.patch229
-rw-r--r--testing/hylafax/hylafax.cron.daily4
-rw-r--r--testing/hylafax/hylafax.install46
-rw-r--r--testing/imagemagick/PKGBUILD84
-rw-r--r--testing/imagemagick/perlmagick.rpath.patch10
-rw-r--r--testing/imlib/CAN-2004-1026.patch510
-rw-r--r--testing/imlib/PKGBUILD40
-rw-r--r--testing/imlib/aclocal-fixes.patch20
-rw-r--r--testing/imlib/debian-bug448360.patch92
-rw-r--r--testing/imlib/imlib-1.9.15-libpng15.patch142
-rw-r--r--testing/imlib2/PKGBUILD38
-rw-r--r--testing/inkscape/PKGBUILD57
-rw-r--r--testing/inkscape/install13
-rw-r--r--testing/inkscape/libpng15.patch40
-rw-r--r--testing/java7-openjdk/PKGBUILD60
-rw-r--r--testing/kdebase-workspace/PKGBUILD4
-rw-r--r--testing/kdegraphics-okular/PKGBUILD4
-rw-r--r--testing/kdegraphics-strigi-analyzer/PKGBUILD4
-rw-r--r--testing/kdelibs3/PKGBUILD94
-rw-r--r--testing/kdelibs3/acinclude.patch66
-rw-r--r--testing/kdelibs3/kconf_updaterc2
-rwxr-xr-xtesting/kdelibs3/kde3.profile6
-rw-r--r--testing/kdelibs3/kde4-compatibility.patch1012
-rw-r--r--testing/kdelibs3/kdelibs3-missing-include.patch10
-rw-r--r--testing/kdelibs3/kdelibs3.install12
-rw-r--r--testing/kdelibs3/openssl.patch180
-rw-r--r--testing/koffice/PKGBUILD306
-rw-r--r--testing/koffice/filters.install11
-rw-r--r--testing/koffice/gcc46.patch23
-rw-r--r--testing/koffice/kde4-koffice-libwpg02.patch1323
-rw-r--r--testing/koffice/koffice.install12
-rw-r--r--testing/koffice/krita.install13
-rw-r--r--testing/koffice/qt48fix.patch10
-rw-r--r--testing/lablgtk2/PKGBUILD30
-rw-r--r--testing/lbreakout2/PKGBUILD44
-rw-r--r--testing/lbreakout2/lbreakout2.desktop10
-rw-r--r--testing/lbreakout2/lbreakout2.pngbin0 -> 1930 bytes
-rw-r--r--testing/lcms/PKGBUILD28
-rw-r--r--testing/lcms2/PKGBUILD27
-rw-r--r--testing/libbonoboui/PKGBUILD28
-rw-r--r--testing/libdmapsharing/PKGBUILD25
-rw-r--r--testing/libgdiplus/PKGBUILD29
-rw-r--r--testing/libgdiplus/gdiplus-png14.patch20
-rw-r--r--testing/libgdiplus/libpng15.patch164
-rw-r--r--testing/libgnome-media-profiles/PKGBUILD39
-rw-r--r--testing/libgnome-media-profiles/libgnome-media-profiles.install17
-rw-r--r--testing/libgnomecanvas/PKGBUILD27
-rw-r--r--testing/libgnomeui/PKGBUILD28
-rw-r--r--testing/libgpod/PKGBUILD30
-rw-r--r--testing/libgtkhtml/PKGBUILD27
-rw-r--r--testing/libpano13/PKGBUILD27
-rw-r--r--testing/libpng/PKGBUILD41
-rw-r--r--testing/libreoffice/PKGBUILD68
-rw-r--r--testing/libreoffice/PKGBUILD.next_stable35
-rw-r--r--testing/librsvg/PKGBUILD31
-rw-r--r--testing/librsvg/librsvg.install11
-rw-r--r--testing/libtiff/PKGBUILD33
-rw-r--r--testing/libunique3/PKGBUILD27
-rw-r--r--testing/libvisual-plugins/02_64-bit_JESS_fix.patch58
-rw-r--r--testing/libvisual-plugins/03_build_against_gl_fixes.patch372
-rw-r--r--testing/libvisual-plugins/04_lv_analyzer_build_fix.patch12
-rw-r--r--testing/libvisual-plugins/050_all_automagic.patch50
-rw-r--r--testing/libvisual-plugins/05_fix_po.patch127
-rw-r--r--testing/libvisual-plugins/PKGBUILD48
-rw-r--r--testing/libwebkit/PKGBUILD52
-rw-r--r--testing/libwebkit/libwebkit.install11
-rw-r--r--testing/libwmf/PKGBUILD40
-rw-r--r--testing/libwmf/libwmf-0.2.8.4-libpng-1.5.patch12
-rw-r--r--testing/libwmf/libwmf-0.2.8.4-useafterfree.patch10
-rw-r--r--testing/libwmf/libwmf.install13
-rw-r--r--testing/libxfcegui4/PKGBUILD38
-rw-r--r--testing/libxfcegui4/libxfcegui4.install14
-rw-r--r--testing/links/PKGBUILD47
-rw-r--r--testing/links/links.desktop7
-rw-r--r--testing/metacity/PKGBUILD34
-rw-r--r--testing/metacity/metacity.install17
-rw-r--r--testing/mjpegtools/PKGBUILD34
-rw-r--r--testing/mjpegtools/mjpegtools-v4l-2.6.38.patch100
-rw-r--r--testing/mjpegtools/mjpegtools.install16
-rw-r--r--testing/netpbm/PKGBUILD72
-rw-r--r--testing/netpbm/netpbm-CAN-2005-2471.patch16
-rw-r--r--testing/netpbm/netpbm-security-code.patch1668
-rw-r--r--testing/netpbm/netpbm-security-scripts.patch393
-rw-r--r--testing/neverball/PKGBUILD47
-rw-r--r--testing/neverball/neverball-1.5.4-underlink.patch22
-rw-r--r--testing/nx-common/NXproto.h.64bit.diff66
-rw-r--r--testing/nx-common/PKGBUILD59
-rw-r--r--testing/nx-common/nx-3.5.0-libpng15.patch30
-rw-r--r--testing/nx-common/nxcompsh-gcc43.patch19
-rw-r--r--testing/nxserver/NXproto.h.64bit.diff66
-rw-r--r--testing/nxserver/PKGBUILD95
-rw-r--r--testing/nxserver/nx-3.5.0-libpng15.patch30
-rw-r--r--testing/nxserver/nxcompsh-gcc43.patch19
-rw-r--r--testing/opencv/PKGBUILD4
-rw-r--r--testing/opengtl/PKGBUILD32
-rw-r--r--testing/openjdk6/PKGBUILD183
-rw-r--r--testing/openjdk6/fix_corba_cmds_path.diff33
-rw-r--r--testing/openjdk6/fix_jdk_cmds_path.diff33
-rw-r--r--testing/openjdk6/fontconfig-paths.diff134
-rw-r--r--testing/openjdk6/glibc2_15.diff236
-rw-r--r--testing/openjdk6/nonreparenting-wm.diff60
-rw-r--r--testing/openjdk6/openjdk6.install24
-rw-r--r--testing/openjdk6/openjdk6.profile6
-rw-r--r--testing/openjdk6/openjdk6.profile.csh6
-rw-r--r--testing/pekwm/PKGBUILD45
-rw-r--r--testing/pekwm/libpng-1.4.patch21
-rw-r--r--testing/pekwm/pekwm.desktop8
-rw-r--r--testing/perl-tk/PKGBUILD41
-rw-r--r--testing/php/PKGBUILD18
-rw-r--r--testing/php/php-fpm.conf.in.patch44
-rw-r--r--testing/php/php.ini.patch12
-rw-r--r--testing/pilot-link/PKGBUILD32
-rw-r--r--testing/pilot-link/pilot-link-png14.patch100
-rw-r--r--testing/plotutils/PKGBUILD32
-rw-r--r--testing/plotutils/plotutils-2.6-libpng-1.5.patch31
-rw-r--r--testing/plotutils/plotutils.install15
-rw-r--r--testing/poppler/PKGBUILD83
-rw-r--r--testing/poppler/git-fixes.patch110
-rw-r--r--testing/pygtk/PKGBUILD37
-rw-r--r--testing/pygtk/python27.patch50
-rw-r--r--testing/pygtksourceview2/PKGBUILD27
-rw-r--r--testing/python-notify/PKGBUILD43
-rw-r--r--testing/python-notify/libnotify07.patch36
-rw-r--r--testing/python-notify/notify-python-0.1.1-fix-GTK-symbols.patch25
-rw-r--r--testing/python-pygame/ChangeLog34
-rw-r--r--testing/python-pygame/PKGBUILD40
-rw-r--r--testing/python-pygame/config.patch26
-rw-r--r--testing/python-pygame/pygame-v4l.patch88
-rw-r--r--testing/pywebkitgtk/PKGBUILD27
-rw-r--r--testing/qemu-kvm/65-kvm.rules1
-rw-r--r--testing/qemu-kvm/PKGBUILD73
-rw-r--r--testing/qemu-kvm/qemu-kvm.install16
-rw-r--r--testing/qemu/65-kvm.rules1
-rw-r--r--testing/qemu/PKGBUILD56
-rw-r--r--testing/qemu/qemu.install24
-rw-r--r--testing/qiv/PKGBUILD25
-rw-r--r--testing/qrencode/PKGBUILD30
-rw-r--r--testing/qt/PKGBUILD131
-rw-r--r--testing/qt/assistant.desktop9
-rw-r--r--testing/qt/designer.desktop11
-rw-r--r--testing/qt/fix-qurl.patch13
-rw-r--r--testing/qt/linguist.desktop10
-rw-r--r--testing/qt/qt.install12
-rw-r--r--testing/qt/qtconfig.desktop10
-rw-r--r--testing/qt3/PKGBUILD133
-rw-r--r--testing/qt3/eastern_asian_languagues.diff39
-rw-r--r--testing/qt3/gcc-4.6.patch33
-rw-r--r--testing/qt3/mysql.patch47
-rw-r--r--testing/qt3/qt-copy-kde-patches.tar.bz2bin0 -> 31498 bytes
-rw-r--r--testing/qt3/qt-font-default-subst.diff77
-rw-r--r--testing/qt3/qt-odbc.patch19
-rw-r--r--testing/qt3/qt-patches.tar.bz2bin0 -> 3708 bytes
-rw-r--r--testing/qt3/qt.install12
-rw-r--r--testing/qt3/qt.profile4
-rw-r--r--testing/qt3/qt3-png15.patch212
-rw-r--r--testing/qt3/utf8-bug-qt3.diff101
-rw-r--r--testing/qtiplot/PKGBUILD96
-rw-r--r--testing/qtiplot/build.conf.archlinux32
-rw-r--r--testing/qtiplot/qtiplot-0.9.8.6-gold.patch15
-rw-r--r--testing/qtiplot/qtiplot-0.9.8.6-kde.patch15
-rw-r--r--testing/qtiplot/qtiplot-0.9.8.6-tamuanova.patch26
-rw-r--r--testing/qtiplot/qtiplot.desktop13
-rw-r--r--testing/qtiplot/qtiplot.install12
-rw-r--r--testing/qtiplot/qtiplot.pngbin0 -> 936 bytes
-rw-r--r--testing/qtiplot/qtiplot.xml17
-rw-r--r--testing/qtiplot/qwtplot3d-libpng15.patch10
-rw-r--r--testing/qtiplot/qwtplot3d-qt-4.8.0.patch34
-rw-r--r--testing/qtiplot/qwtplot3d_gcc.patch9
-rw-r--r--testing/qtiplot/sip.patch13
-rw-r--r--testing/r/PKGBUILD68
-rw-r--r--testing/r/r.desktop11
-rw-r--r--testing/r/r.install12
-rw-r--r--testing/r/r.pngbin0 -> 4771 bytes
-rw-r--r--testing/rrdtool/PKGBUILD35
-rw-r--r--testing/run-parts/PKGBUILD28
-rw-r--r--testing/sane/PKGBUILD57
-rw-r--r--testing/sane/libv4l-0.8.3.patch64
-rw-r--r--testing/sane/sane.install7
-rw-r--r--testing/sane/sane.xinetd11
-rw-r--r--testing/sane/xerox_mfp_fix_usb_devices.patch67
-rw-r--r--testing/scim-anthy/PKGBUILD27
-rw-r--r--testing/scim-chewing/PKGBUILD28
-rw-r--r--testing/scim-tables/PKGBUILD27
-rw-r--r--testing/scribus/PKGBUILD50
-rw-r--r--testing/scribus/scribus.install13
-rw-r--r--testing/sdl_image/PKGBUILD29
-rw-r--r--testing/skanlite/PKGBUILD30
-rw-r--r--testing/slim/PKGBUILD68
-rw-r--r--testing/slim/install7
-rw-r--r--testing/slim/logrotate9
-rw-r--r--testing/slim/no-host.patch29
-rw-r--r--testing/slim/pam.d10
-rw-r--r--testing/slim/ptr_pam.patch52
-rwxr-xr-xtesting/slim/rc.d36
-rw-r--r--testing/slim/restart.patch144
-rw-r--r--testing/slim/session-name.patch21
-rw-r--r--testing/slim/sigterm.patch45
-rw-r--r--testing/slim/slim-1.3.2-libpng15.patch11
-rw-r--r--testing/slim/tty-slowness.patch30
-rw-r--r--testing/sox/PKGBUILD37
-rw-r--r--testing/sox/sox-14.3.2-ffmpeg.patch40
-rw-r--r--testing/streamtuner/PKGBUILD49
-rw-r--r--testing/streamtuner/shoutcast-redesign-patch.diff12
-rw-r--r--testing/streamtuner/streamtuner-0.99.99-shoutcast.diff41
-rw-r--r--testing/sudo/PKGBUILD40
-rw-r--r--testing/sudo/sudo.pam3
-rw-r--r--testing/tracker/PKGBUILD84
-rw-r--r--testing/tracker/tracker.install13
-rw-r--r--testing/transcode/PKGBUILD61
-rw-r--r--testing/transcode/ffmpeg-0.10.patch14
-rw-r--r--testing/transcode/subtitleripper-0.3.4-linkingorder.patch28
-rw-r--r--testing/transcode/subtitleripper-0.3.4-respect-ldflags.patch28
-rw-r--r--testing/transfig/LICENSE23
-rw-r--r--testing/transfig/PKGBUILD37
-rw-r--r--testing/transfig/transfig-3.2.5d-libpng-1.5.patch39
-rw-r--r--testing/tumbler/PKGBUILD44
-rw-r--r--testing/tuxpuck/PKGBUILD41
-rw-r--r--testing/tuxpuck/tuxpuck-0.8.2-ldflags.patch11
-rw-r--r--testing/tuxpuck/tuxpuck-0.8.2-libpng15.patch63
-rw-r--r--testing/unison/PKGBUILD51
-rw-r--r--testing/unison/unison-ssh-ocaml.patch25
-rw-r--r--testing/unison/unison.desktop13
-rw-r--r--testing/unison/unison.install28
-rw-r--r--testing/vice/PKGBUILD35
-rw-r--r--testing/vice/vice-2.3-x11video.patch11
-rw-r--r--testing/vigra/PKGBUILD69
-rw-r--r--testing/vigra/vigra-1.7.1.gcc460.patch33
-rw-r--r--testing/vlc/PKGBUILD74
-rw-r--r--testing/vlc/vlc.install18
-rw-r--r--testing/wesnoth/PKGBUILD47
-rw-r--r--testing/wesnoth/wesnoth-1.8.6-boost-foreach.patch70
-rw-r--r--testing/wesnoth/wesnoth-libpng-1.4.0.patch24
-rw-r--r--testing/wesnoth/wesnoth.install9
-rw-r--r--testing/wesnoth/wesnoth.tmpfiles.conf1
-rw-r--r--testing/windowmaker-crm-git/PKGBUILD36
-rw-r--r--testing/windowmaker-crm-git/libpng-1.4.patch12
-rw-r--r--testing/windowmaker-crm-git/wmaker.desktop5
-rw-r--r--testing/windowmaker/PKGBUILD34
-rw-r--r--testing/windowmaker/libpng-1.4.patch12
-rw-r--r--testing/windowmaker/windowmaker-gcc4.patch.tar.bz2bin0 -> 39677 bytes
-rw-r--r--testing/windowmaker/wmaker.desktop5
-rw-r--r--testing/wv/PKGBUILD29
-rw-r--r--testing/wv/fix-soname.patch14
-rw-r--r--testing/wxgtk/PKGBUILD37
-rw-r--r--testing/xaos/PKGBUILD28
-rw-r--r--testing/xaos/xaos-3.5-libpng15.patch131
-rw-r--r--testing/xaos/xaos.install20
-rw-r--r--testing/xawtv/PKGBUILD29
-rw-r--r--testing/xfce4-datetime-plugin/PKGBUILD33
-rw-r--r--testing/xfce4-notes-plugin/PKGBUILD34
-rw-r--r--testing/xfce4-notes-plugin/xfce4-notes-plugin.install12
-rw-r--r--testing/xfce4-quicklauncher-plugin/PKGBUILD50
-rw-r--r--testing/xfce4-quicklauncher-plugin/xfce4-quicklauncher-plugin-1.9.4-desktop-file.patch10
-rw-r--r--testing/xfce4-quicklauncher-plugin/xfce4-quicklauncher-plugin-1.9.4-fix-missing-english-translation.patch103
-rw-r--r--testing/xfce4-quicklauncher-plugin/xfce4-quicklauncher-plugin-1.9.4-fix-multiscreen.patch27
-rw-r--r--testing/xfce4-quicklauncher-plugin/xfce4-quicklauncher-plugin-1.9.4-save-settings.patch12
-rw-r--r--testing/xfce4-quicklauncher-plugin/xfce4-quicklauncher-plugin-1.9.4-xfce4-settings-manager.patch11
-rw-r--r--testing/xfce4-sensors-plugin/PKGBUILD38
-rw-r--r--testing/xfce4-sensors-plugin/xfce4-sensors-plugin.install11
-rw-r--r--testing/xfig/LICENSE33
-rw-r--r--testing/xfig/PKGBUILD65
-rw-r--r--testing/xfig/xfig-3.2.4-redhat.patch31
-rw-r--r--testing/xfig/xfig-3.2.5-color-resources.patch39
-rw-r--r--testing/xfig/xfig-3.2.5-enable-Xaw3d.patch18
-rw-r--r--testing/xfig/xfig-3.2.5-fhs.patch12
-rw-r--r--testing/xfig/xfig-3.2.5-missing-protos.patch11
-rw-r--r--testing/xfig/xfig-3.2.5-urwfonts.patch79
-rw-r--r--testing/xfig/xfig-3.2.5b-fix-eps-reading.patch46
-rw-r--r--testing/xfig/xfig-3.2.5b-libpng-1.5.patch70
-rw-r--r--testing/xfig/xfig.3.2.5-modularX.patch28
-rw-r--r--testing/xfig/xfig.desktop47
-rw-r--r--testing/xfig/xfig.install11
-rw-r--r--testing/xine-ui/PKGBUILD10
-rw-r--r--testing/xine-ui/xine-ui-0.99.6-libpng15.patch13
-rw-r--r--testing/xorg-xcursorgen/PKGBUILD28
-rw-r--r--testing/xsane/PKGBUILD68
-rw-r--r--testing/xsane/xsane-0.995-xdg-open.patch12
-rw-r--r--testing/xsane/xsane.install16
-rw-r--r--testing/xulrunner/5007_fix_libpr0n_nsPNGDecoder.patch81
-rw-r--r--testing/xulrunner/PKGBUILD56
-rw-r--r--testing/xulrunner/mozconfig38
-rw-r--r--testing/xulrunner/mozilla-pkgconfig.patch40
-rw-r--r--testing/zlib/PKGBUILD32
-rw-r--r--testing/zvbi/PKGBUILD38
-rw-r--r--testing/zvbi/fix-includes.patch36
-rw-r--r--testing/zvbi/zvbi-0.2.33-libpng15.patch21
406 files changed, 24691 insertions, 151 deletions
diff --git a/testing/abiword/PKGBUILD b/testing/abiword/PKGBUILD
new file mode 100644
index 000000000..f624f75a3
--- /dev/null
+++ b/testing/abiword/PKGBUILD
@@ -0,0 +1,80 @@
+# $Id: PKGBUILD 148049 2012-01-30 18:44:21Z 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=7
+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'
+ 'abiword-2.8.6-no-undefined.patch'
+ 'abiword-2.8.6-libpng15.patch')
+md5sums=('f883b0a7f26229a9c66fd6a1a94381aa'
+ '09446a2ebba8288fc611e88f7cf17298'
+ '42e2614b6e0aad457d91f6ce20b6f225'
+ '40e370e7e88c5437140ef18037abfbd3')
+
+build() {
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+
+ patch -Np1 -i "${srcdir}/compat_libwpg_0_9.patch"
+ # fix a gcc 4.6.x build issue, patch from Fedora
+ patch -Np1 -i "${srcdir}/abiword-2.8.6-no-undefined.patch"
+ patch -Np0 -i "${srcdir}/abiword-2.8.6-libpng15.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' 'desktop-file-utils')
+ install=$pkgname.install
+ 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' 'libgsf')
+
+ 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/testing/abiword/abiword-2.8.6-libpng15.patch b/testing/abiword/abiword-2.8.6-libpng15.patch
new file mode 100644
index 000000000..7eded4c83
--- /dev/null
+++ b/testing/abiword/abiword-2.8.6-libpng15.patch
@@ -0,0 +1,100 @@
+$NetBSD: patch-plugins_bmp_xp_ie__impGraphic__BMP.cpp,v 1.1 2011/02/01 10:48:15 wiz Exp $
+
+Fix build with png-1.5.
+
+--- plugins/bmp/xp/ie_impGraphic_BMP.cpp.orig 2009-06-25 04:02:06.000000000 +0000
++++ plugins/bmp/xp/ie_impGraphic_BMP.cpp
+@@ -191,7 +191,10 @@ UT_Error IE_ImpGraphic_BMP::_convertGrap
+
+ /* Clean Up Memory Used */
+
+- FREEP(m_pPNGInfo->palette);
++ png_colorp palette;
++ int num_palette;
++ png_get_PLTE( m_pPNG, m_pPNGInfo, &palette, &num_palette );
++ FREEP(palette);
+ DELETEP(pBB);
+ png_destroy_write_struct(&m_pPNG, &m_pPNGInfo);
+
+@@ -313,7 +316,7 @@ UT_Error IE_ImpGraphic_BMP::Initialize_P
+ * the normal method of doing things with libpng). REQUIRED unless you
+ * set up your own error handlers in the png_create_read_struct() earlier.
+ */
+- if (setjmp(m_pPNG->jmpbuf))
++ if (setjmp(png_jmpbuf(m_pPNG)))
+ {
+ /* Free all of the memory associated with the png_ptr and info_ptr */
+ png_destroy_write_struct(&m_pPNG, &m_pPNGInfo);
+@@ -332,7 +335,7 @@ UT_Error IE_ImpGraphic_BMP::Initialize_P
+ UT_Error IE_ImpGraphic_BMP::Convert_BMP_Pallet(UT_ByteBuf* pBB)
+ {
+ /* Reset error handling for libpng */
+- if (setjmp(m_pPNG->jmpbuf))
++ if (setjmp(png_jmpbuf(m_pPNG)))
+ {
+ png_destroy_write_struct(&m_pPNG, &m_pPNGInfo);
+ return UT_ERROR;
+@@ -372,7 +375,7 @@ UT_Error IE_ImpGraphic_BMP::Initialize_P
+ UT_Error IE_ImpGraphic_BMP::Convert_BMP(UT_ByteBuf* pBB)
+ {
+ /* Reset error handling for libpng */
+- if (setjmp(m_pPNG->jmpbuf))
++ if (setjmp(png_jmpbuf(m_pPNG)))
+ {
+ png_destroy_write_struct(&m_pPNG, &m_pPNGInfo);
+ return UT_ERROR;
+
+$NetBSD: patch-plugins_garble_xp_abiword-garble-png.cpp,v 1.1 2011/02/01 10:48:15 wiz Exp $
+
+Fix build with png-1.5.
+
+--- plugins/garble/xp/abiword-garble-png.cpp.orig 2009-09-05 15:34:44.000000000 +0000
++++ plugins/garble/xp/abiword-garble-png.cpp
+@@ -79,7 +79,7 @@ bool abiword_document::garble_png( void*
+ png_set_strip_alpha( png_ptr );
+ png_set_interlace_handling( png_ptr );
+ png_set_bgr( png_ptr );
+- rowbytes = info_ptr->rowbytes;
++ rowbytes = png_get_rowbytes( png_ptr, info_ptr );
+ png_destroy_read_struct( &png_ptr, &info_ptr, NULL );
+ }
+
+$NetBSD: patch-af,v 1.12 2011/01/15 15:07:11 wiz Exp $
+
+Fix build with png-1.5.
+
+--- src/wp/impexp/gtk/ie_impGraphic_GdkPixbuf.cpp.orig 2009-07-01 04:02:04.000000000 +0000
++++ src/wp/impexp/gtk/ie_impGraphic_GdkPixbuf.cpp
+@@ -185,7 +185,7 @@ UT_Error IE_ImpGraphic_GdkPixbuf::import
+ /** needed for the stejmp context */
+ UT_Error IE_ImpGraphic_GdkPixbuf::_png_write(GdkPixbuf * pixbuf)
+ {
+- if (setjmp(m_pPNG->jmpbuf))
++ if (setjmp(png_jmpbuf(m_pPNG)))
+ {
+ DELETEP(m_pPngBB);
+ png_destroy_write_struct(&m_pPNG, &m_pPNGInfo);
+@@ -446,7 +446,7 @@ UT_Error IE_ImpGraphic_GdkPixbuf::Initia
+ * the normal method of doing things with libpng). REQUIRED unless you
+ * set up your own error handlers in the png_create_read_struct() earlier.
+ */
+- if (setjmp(m_pPNG->jmpbuf))
++ if (setjmp(png_jmpbuf(m_pPNG)))
+ {
+ /* Free all of the memory associated with the png_ptr and info_ptr */
+ png_destroy_write_struct(&m_pPNG, &m_pPNGInfo);
+$NetBSD: patch-ae,v 1.21 2011/01/15 15:07:11 wiz Exp $
+
+Fix build with png-1.5.
+
+--- src/af/util/xp/ut_png.cpp.orig 2008-02-24 03:33:07.000000000 +0000
++++ src/af/util/xp/ut_png.cpp
+@@ -71,7 +71,7 @@ bool UT_PNG_getDimensions(const UT_ByteB
+ * the normal method of doing things with libpng). REQUIRED unless you
+ * set up your own error handlers in the png_create_read_struct() earlier.
+ */
+- if (setjmp(png_ptr->jmpbuf))
++ if (setjmp(png_jmpbuf(png_ptr)))
+ {
+ /* Free all of the memory associated with the png_ptr and info_ptr */
+ png_destroy_read_struct(&png_ptr, &info_ptr, static_cast<png_infopp>(NULL));
diff --git a/testing/abiword/abiword-2.8.6-no-undefined.patch b/testing/abiword/abiword-2.8.6-no-undefined.patch
new file mode 100644
index 000000000..c07000edb
--- /dev/null
+++ b/testing/abiword/abiword-2.8.6-no-undefined.patch
@@ -0,0 +1,21 @@
+diff -u -r abiword-2.8.6.orig/src/Makefile.am abiword-2.8.6/src/Makefile.am
+--- abiword-2.8.6.orig/src/Makefile.am 2009-09-09 15:11:01.000000000 +0200
++++ abiword-2.8.6/src/Makefile.am 2011-08-02 23:35:51.904761961 +0200
+@@ -107,7 +107,7 @@
+
+ AbiWord_LDFLAGS = \
+ $(DEPS_LIBS) \
+- --no-undefined \
++ -Wl,--no-undefined \
+ -avoid-version \
+ -export-dynamic \
+ -headerpad_max_install_names
+@@ -129,7 +129,7 @@
+
+ abiword_LDFLAGS = \
+ $(platform_ldflags) \
+- --no-undefined \
++ -Wl,--no-undefined \
+ -avoid-version \
+ -export-dynamic
+
diff --git a/testing/abiword/abiword.install b/testing/abiword/abiword.install
new file mode 100644
index 000000000..2eaa60550
--- /dev/null
+++ b/testing/abiword/abiword.install
@@ -0,0 +1,11 @@
+post_install() {
+ update-desktop-database -q
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ post_install $1
+}
diff --git a/testing/abiword/compat_libwpg_0_9.patch b/testing/abiword/compat_libwpg_0_9.patch
new file mode 100644
index 000000000..cf36e188e
--- /dev/null
+++ b/testing/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/testing/allegro/PKGBUILD b/testing/allegro/PKGBUILD
new file mode 100644
index 000000000..729921ae8
--- /dev/null
+++ b/testing/allegro/PKGBUILD
@@ -0,0 +1,36 @@
+# $Id: PKGBUILD 148051 2012-01-30 18:44:24Z ibiru $
+# Maintainer: Ionut Biru <ibiru@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+# Contributor: arjan <arjan@archlinux.org>
+
+pkgname=allegro
+pkgver=5.0.5
+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' 'libgl' 'libjpeg')
+makedepends=('cmake' 'mesa' 'freetype2')
+source=(http://downloads.sourceforge.net/alleg/${pkgname}-${pkgver}.tar.gz)
+md5sums=('4d879afe7062f7dc9b8913cba2e44bdf')
+
+build() {
+ cd "${srcdir}"
+ mkdir build && cd build
+
+ cmake "../${pkgname}-${pkgver}" \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DWANT_DOCS=OFF
+
+ make
+}
+
+package() {
+ cd "${srcdir}"/build
+
+ make DESTDIR="${pkgdir}" install
+
+ install -D -m644 ../${pkgname}-${pkgver}/LICENSE.txt "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+}
diff --git a/testing/alsaplayer/PKGBUILD b/testing/alsaplayer/PKGBUILD
new file mode 100644
index 000000000..dac3e7262
--- /dev/null
+++ b/testing/alsaplayer/PKGBUILD
@@ -0,0 +1,37 @@
+# $Id: PKGBUILD 148053 2012-01-30 18:44:26Z ibiru $
+# Maintainer: Eric Bélanger <eric@archlinux.org>
+
+pkgname=alsaplayer
+pkgver=0.99.81
+pkgrel=3
+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' 'desktop-file-utils')
+makedepends=('gtk2' 'libid3tag' 'libvorbis' 'libmad' 'libmikmod' 'jack' 'mesa' 'audiofile' 'doxygen')
+optdepends=('gtk2: for the gtk2 GUI interface' \
+ 'libgl: for the OpenGL visual plugins' \
+ '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')
+install=alsaplayer.install
+source=(http://www.alsaplayer.org/${pkgname}-${pkgver}.tar.bz2)
+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/testing/alsaplayer/alsaplayer.install b/testing/alsaplayer/alsaplayer.install
new file mode 100644
index 000000000..e111ef946
--- /dev/null
+++ b/testing/alsaplayer/alsaplayer.install
@@ -0,0 +1,11 @@
+post_install() {
+ update-desktop-database -q
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/testing/amule/PKGBUILD b/testing/amule/PKGBUILD
new file mode 100644
index 000000000..8cafe2c45
--- /dev/null
+++ b/testing/amule/PKGBUILD
@@ -0,0 +1,44 @@
+# $Id: PKGBUILD 148055 2012-01-30 18:44:28Z ibiru $
+# 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=10708
+pkgrel=2
+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=('3c1c2a03b24c9ec7ba6fd675382f26a3')
+
+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/testing/at-spi/PKGBUILD b/testing/at-spi/PKGBUILD
new file mode 100644
index 000000000..3e0d18301
--- /dev/null
+++ b/testing/at-spi/PKGBUILD
@@ -0,0 +1,37 @@
+# $Id: PKGBUILD 148057 2012-01-30 18:44:31Z ibiru $
+# Maintainer: Jan de Groot <jan@archlinux.org>
+
+pkgname=at-spi
+pkgver=1.32.0
+pkgrel=5
+pkgdesc="Assistive Technology Service Provider Interface"
+arch=('i686' 'x86_64')
+license=('GPL')
+depends=('libbonobo' 'libxtst' 'gtk2' 'gconf')
+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')
+
+# !! make sure you 'pacman -Rsc python' from your chroot before building the package or it would use python3 instead of the wanted python2 !!
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-static \
+ --libexecdir=/usr/lib/at-spi \
+ --enable-relocate
+ 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 at-spi "${pkgdir}"/etc/gconf/schemas/*.schemas
+ rm -f "${pkgdir}"/etc/gconf/schemas/*.schemas
+}
diff --git a/testing/at-spi/at-spi.install b/testing/at-spi/at-spi.install
new file mode 100644
index 000000000..b4c75b51c
--- /dev/null
+++ b/testing/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/testing/autopano-sift-c/PKGBUILD b/testing/autopano-sift-c/PKGBUILD
new file mode 100644
index 000000000..3b5d70f33
--- /dev/null
+++ b/testing/autopano-sift-c/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id: PKGBUILD 148059 2012-01-30 18:44:37Z 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=3
+pkgdesc="Identify key feature points within arbitrary images"
+arch=('i686' 'x86_64')
+url="http://hugin.sourceforge.net/"
+license=('GPL2')
+depends=('libxml2' 'libpano13' '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 .
+ sed -i 's/-lz/-lz -lm/' CMakeFiles/{autopano,generatekeys}.dir/link.txt
+ make
+}
+
+package() {
+ cd "${srcdir}/autopano-sift-C-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/testing/avahi/PKGBUILD b/testing/avahi/PKGBUILD
new file mode 100644
index 000000000..aa8e043b7
--- /dev/null
+++ b/testing/avahi/PKGBUILD
@@ -0,0 +1,75 @@
+# $Id: PKGBUILD 148061 2012-01-30 18:44:42Z ibiru $
+# Contributor: Douglas Soares de Andrade <douglas@archlinux.org>
+# Maintainer: Gaetan Bisson <bisson@archlinux.org>
+
+pkgname=avahi
+pkgver=0.6.30
+pkgrel=7
+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=('gtk3: avahi-discover-standalone, bshell, bssh, bvnc'
+ 'gtk2: gtk2 bindings'
+ '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' 'gtk3')
+backup=(etc/avahi/avahi-daemon.conf etc/avahi/services/{sftp-,}ssh.service)
+install=install
+conflicts=('howl' 'mdnsresponder')
+provides=('howl' 'mdnsresponder')
+replaces=('howl' 'mdnsresponder')
+options=('!libtool')
+source=("http://www.avahi.org/download/avahi-${pkgver}.tar.gz"
+ 'gnome-nettool.png'
+ 'rc.d.patch')
+sha1sums=('5b77443537600a00770e4c77e3c443eeb5861d06'
+ 'cf56387c88aed246b9f435efc182ef44de4d52f3'
+ '625ad7c131c0c1c383caeddef18fc7a32d8f3ab9')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ sed -i 's/netdev/network/g' avahi-daemon/avahi-dbus.conf
+ patch -p1 -i "../rc.d.patch"
+
+ # pygtk requires python2; make it explicit in case other python are installed: FS#21865
+ PYTHON=python2 \
+ PKG_CONFIG_PATH=/opt/qt/lib/pkgconfig \
+ ./configure \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --disable-static \
+ --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
+ install -D -m 644 ../gnome-nettool.png "${pkgdir}"/usr/share/pixmaps/gnome-nettool.png
+
+ cd "${pkgdir}"
+ sed -i '1c #!/usr/bin/python2' usr/bin/avahi-{bookmarks,discover}
+ # howl and mdnsresponder compatability
+ (cd usr/include; ln -s avahi-compat-libdns_sd/dns_sd.h dns_sd.h; ln -s avahi-compat-howl howl)
+ (cd usr/lib/pkgconfig; ln -s avahi-compat-howl.pc howl.pc)
+}
diff --git a/testing/avahi/gnome-nettool.png b/testing/avahi/gnome-nettool.png
new file mode 100644
index 000000000..227d0678a
--- /dev/null
+++ b/testing/avahi/gnome-nettool.png
Binary files differ
diff --git a/testing/avahi/install b/testing/avahi/install
new file mode 100644
index 000000000..7c75c3dd4
--- /dev/null
+++ b/testing/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/testing/avahi/rc.d.patch b/testing/avahi/rc.d.patch
new file mode 100644
index 000000000..fd735734b
--- /dev/null
+++ b/testing/avahi/rc.d.patch
@@ -0,0 +1,11 @@
+diff -aur old/initscript/archlinux/avahi-daemon.in new/initscript/archlinux/avahi-daemon.in
+--- old/initscript/archlinux/avahi-daemon.in 2011-06-24 03:07:00.916170590 +0200
++++ new/initscript/archlinux/avahi-daemon.in 2011-06-24 03:16:32.220596377 +0200
+@@ -33,6 +33,7 @@
+
+ case "$1" in
+ start)
++ ck_daemon dbus && { echo -n "Start dbus first." >&2; stat_die; }
+ stat_busy "Starting $DESC"
+ $DAEMON -D > /dev/null 2>&1
+ if [ $? -gt 0 ]; then
diff --git a/testing/bmp/0.9.7.1-visualization.patch b/testing/bmp/0.9.7.1-visualization.patch
new file mode 100644
index 000000000..ac03323f6
--- /dev/null
+++ b/testing/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/testing/bmp/PKGBUILD b/testing/bmp/PKGBUILD
new file mode 100644
index 000000000..e45a88182
--- /dev/null
+++ b/testing/bmp/PKGBUILD
@@ -0,0 +1,34 @@
+# $Id: PKGBUILD 148063 2012-01-30 18:44:44Z ibiru $
+# Maintainer: Kevin Piche <kevin@archlinux.org>
+# Contributor: Ben <contrasutra@myrealbox.com>
+
+pkgname=bmp
+pkgver=0.9.7.1
+pkgrel=9
+pkgdesc="gtk2 port of xmms"
+arch=('i686' 'x86_64')
+url="http://sourceforge.net/projects/beepmp/"
+license=('GPL')
+depends=('id3lib' 'libglade' 'libsm' 'libvorbis' 'alsa-lib' 'unzip' 'desktop-file-utils')
+makedepends=('libxt')
+options=('!libtool')
+install=bmp.install
+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
+ patch -p1 -i ../${pkgname}-${pkgver}-crossfade-0.3.9.patch
+ LIBS+="-lm" ./configure --prefix=/usr --mandir=/usr/share/man
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
+# vim: ts=2 sw=2 et ft=sh
diff --git a/testing/bmp/bmp-0.9.7.1-crossfade-0.3.9.patch b/testing/bmp/bmp-0.9.7.1-crossfade-0.3.9.patch
new file mode 100644
index 000000000..4c1e46da9
--- /dev/null
+++ b/testing/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/testing/bmp/bmp.install b/testing/bmp/bmp.install
new file mode 100644
index 000000000..2eaa60550
--- /dev/null
+++ b/testing/bmp/bmp.install
@@ -0,0 +1,11 @@
+post_install() {
+ update-desktop-database -q
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ post_install $1
+}
diff --git a/testing/cairo/PKGBUILD b/testing/cairo/PKGBUILD
new file mode 100644
index 000000000..6287d8fba
--- /dev/null
+++ b/testing/cairo/PKGBUILD
@@ -0,0 +1,38 @@
+# $Id: PKGBUILD 148065 2012-01-30 18:44:47Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Brice Carpentier <brice@daknet.org>
+
+pkgname=cairo
+pkgver=1.10.2
+pkgrel=3
+pkgdesc="Cairo vector graphics library"
+arch=(i686 x86_64)
+license=('LGPL' 'MPL')
+url="http://cairographics.org/"
+depends=('libpng' 'libxrender' 'fontconfig' 'pixman' 'glib2' 'sh')
+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
+}
+
+check() {
+ cd "$srcdir/$pkgname-$pkgver"
+ 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/testing/cairo/cairo-1.10.0-buggy_gradients.patch b/testing/cairo/cairo-1.10.0-buggy_gradients.patch
new file mode 100644
index 000000000..368e356d3
--- /dev/null
+++ b/testing/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/testing/cairomm/PKGBUILD b/testing/cairomm/PKGBUILD
new file mode 100644
index 000000000..75be50375
--- /dev/null
+++ b/testing/cairomm/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 148067 2012-01-30 18:44:49Z ibiru $
+# Maintainer: Kevin <kevin@archlinux.org>
+# Contributor: criminy <criminy@gmail.com>
+
+pkgname=cairomm
+pkgver=1.10.0
+pkgrel=2
+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')
+sha1sums=('f08bf8a331067f0d1e876523f07238fba6b26b99')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/testing/capi4hylafax/PKGBUILD b/testing/capi4hylafax/PKGBUILD
new file mode 100644
index 000000000..e5c085d64
--- /dev/null
+++ b/testing/capi4hylafax/PKGBUILD
@@ -0,0 +1,55 @@
+# $Id: PKGBUILD 148069 2012-01-30 18:44:52Z ibiru $
+#Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=capi4hylafax
+pkgver=010300
+pkgrel=5
+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' 'dialog')
+source=(ftp://ftp.avm.de/tools/capi4hylafax.linux/capi4hylafax-01.03.00.tar.gz
+ config.faxCAPI capi4hylafax.rc)
+md5sums=('d37dc652ac80d1525ef8693be55ee67f'
+ '653b60695d21c128f020a86274ca9192'
+ '1fe40c58289fa3ba625ce6fe2fdb3d07')
+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
+ autoreconf --force --install
+ ./configure
+ make
+}
+
+package() {
+ cd "$srcdir"/$pkgname-01.03.00
+ 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
+ echo "main_config_dialog" >> "$pkgdir"/usr/bin/c2faxaddmodem
+}
diff --git a/testing/capi4hylafax/capi4hylafax.install b/testing/capi4hylafax/capi4hylafax.install
new file mode 100644
index 000000000..20c2d8f63
--- /dev/null
+++ b/testing/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/testing/capi4hylafax/capi4hylafax.rc b/testing/capi4hylafax/capi4hylafax.rc
new file mode 100755
index 000000000..51025b020
--- /dev/null
+++ b/testing/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/testing/capi4hylafax/config.faxCAPI b/testing/capi4hylafax/config.faxCAPI
new file mode 100644
index 000000000..b2137757a
--- /dev/null
+++ b/testing/capi4hylafax/config.faxCAPI
@@ -0,0 +1,397 @@
+#
+# EDIT THIS CONFIGURATION TO REFLECT YOUR SETUP
+#
+
+# Grundstzliches:
+# - Es gibt fr jeden Wert einen Standardzustand (default), sodass jede Zeile
+# der Datei oder auch das komplette Configfile ausgelassen werden kann.
+# - Es gibt ausschlielich ein Configfile, in dem alle ntigen Angaben fr
+# "c2faxsend/-receive" eingetragen werden knnen.
+# - Werden fr HylaFAX mehrere virtuelle Gerte (devices) angelegt, muss es
+# fr jedes Device ein Configfile im Format config.[DeviceName] geben.
+# Dessen Existenz wird von HylaFAX berprft. 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 ausgefhrt wird, sobald ein Fax
+# empfangen wurde. Im Stand-Alone-Betrieb werden andere Parameter
+# bergeben als fr 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 ausgefhrt wird, sobald ein
+# Fax per Faxabruf empfangen wurde. Im Stand-Alone-Betrieb werden
+# andereParameter bergeben als fr 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 ausgefhrt 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 gendert 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
+# erwhnte LogFile als auch die LogFiles fr 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 enthlt die Section Angaben zu einem virtuellen Device;
+# die Subsection die Angaben fr die Rufannahme jedes Controllers.
+# Es knnen beliebig viele Sections und, darin enthalten, jeweils beliebig
+# viele Subsections erzeugt werden.
+# Jede Section muss aber einen anderen HylafaxDeviceName erhalten;
+# zustzlich muss in jeder Subsection innerhalb einer Section ein anderer
+# Controller aufgefhrt 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 fr 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 fhrt dazu, dass keine Fax-Kopfzeile
+ # eingefgt 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" angepat werden. Diese Anzahl wird
+ # durch die Anzahl der durch die Hardware zur Verfgung
+ # gestellten B-Kanle 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 fr ausgehenden Faxe benutzt wird.
+ #
+ # The "OutgoingMSN" is the MSN used for outgoing faxes.
+ #
+ # default ""
+ #
+ OutgoingMSN:
+
+
+ # CLIR (Rufnummernunterdrckung) 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 fr den Aufbau einer externen
+ # Verbindung eine Ziffer vorgewhlt 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, fr 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 fhrt zu keinem korrekten Ergebnis und
+ # sollte, sofern "UseDDI" auf 1 gestellt wurde, immer
+ # verndert 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 Empfngernummer 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" knnen in einer durch Komma getrennten Liste alle
+ # Durchwahlziffern (DDIs) angegeben werden, fr die Rufe angenommen
+ # werden sollen. Eine Bereichsangabe ist auch mglich (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" knnen in einer durch Komma getrennten Liste alle
+ # MSNs angegeben werden, fr 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/testing/celestia/PKGBUILD b/testing/celestia/PKGBUILD
new file mode 100644
index 000000000..c56a9de4b
--- /dev/null
+++ b/testing/celestia/PKGBUILD
@@ -0,0 +1,50 @@
+# $Id: PKGBUILD 148071 2012-01-30 18:44:55Z ibiru $
+# Maintainer: Ronald van Haren <ronald.archlinux.org>
+# Contributor : Damir Perisa <damir.perisa@bluewin.ch>
+
+pkgname=celestia
+pkgver=1.6.1
+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')
+options=('!makeflags')
+source=("http://downloads.sourceforge.net/sourceforge/celestia/${pkgname}-${pkgver}.tar.gz"
+ 'celestia-1.6.1-gcc46.patch'
+ 'celestia-1.6.1-libpng15.patch'
+ 'celestia-1.6.1-linking.patch')
+sha1sums=('1f0fdf4525a8b9d6c708e1f6383babed670d18e7'
+ '7c08ca391603806d788cb8f3342acedafc924eef'
+ '46ecc4e10b24191384bc848c206652498843adf0'
+ '534c8eee18d13a868c91f0b870ebecc05f3e7ae1')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ # build patch
+ patch -Np0 -i "${srcdir}/celestia-1.6.1-gcc46.patch"
+ patch -Np0 -i "${srcdir}/celestia-1.6.1-libpng15.patch"
+ patch -Np1 -i "${srcdir}/celestia-1.6.1-linking.patch"
+
+ # This version of Celestia has a bug in the font rendering and requires -fsigned-char
+ export CFLAGS="$CFLAGS -fsigned-char"
+ export CXXFLAGS="$CXXFLAGS -fsigned-char"
+
+ autoreconf
+ ./configure --prefix=/usr \
+ --with-lua=/usr \
+ --datadir=/usr/share \
+ --with-gtk \
+ --disable-rpath \
+ --with-lua
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ make DESTDIR=${pkgdir} install
+}
+
diff --git a/testing/celestia/celestia-1.5.1-gcc44.patch b/testing/celestia/celestia-1.5.1-gcc44.patch
new file mode 100644
index 000000000..b1ee896f0
--- /dev/null
+++ b/testing/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/testing/celestia/celestia-1.6.1-gcc46.patch b/testing/celestia/celestia-1.6.1-gcc46.patch
new file mode 100644
index 000000000..ddf4036f2
--- /dev/null
+++ b/testing/celestia/celestia-1.6.1-gcc46.patch
@@ -0,0 +1,13 @@
+http://bugs.gentoo.org/show_bug.cgi?id=366073
+
+Patch written by Nils Larsson <ni1s@nerdshack.com>
+--- src/celengine/frametree.h
++++ src/celengine/frametree.h
+@@ -14,6 +14,7 @@
+ #define _CELENGINE_FRAMETREE_H_
+
+ #include <vector>
++#include <cstddef>
+
+ class Star;
+ class Body;
diff --git a/testing/celestia/celestia-1.6.1-gentoo.patch b/testing/celestia/celestia-1.6.1-gentoo.patch
new file mode 100644
index 000000000..57fffe159
--- /dev/null
+++ b/testing/celestia/celestia-1.6.1-gentoo.patch
@@ -0,0 +1,23 @@
+--- src/celestia/Makefile.am 2011-06-07 19:15:51.502000147 +0200
++++ src/celestia/Makefile.am.new 2011-06-07 19:15:47.208000302 +0200
+@@ -15,6 +15,7 @@
+ if ENABLE_GTK
+ SUBDIRS += gtk
+ celestiaGTKLIBS = $(GTK_LIBS) gtk/libgtkgui.a
++LIBS += $(GTK_LIBS)
+ endif
+
+ COMMONSOURCES = \
+
+Index: src/celengine/frametree.h
+===================================================================
+--- src/celengine/frametree.h (revision 5163)
++++ src/celengine/frametree.h (arbetskopia)
+@@ -14,6 +14,7 @@
+ #define _CELENGINE_FRAMETREE_H_
+
+ #include <vector>
++#include <cstddef>
+
+ class Star;
+ class Body;
diff --git a/testing/celestia/celestia-1.6.1-libpng15.patch b/testing/celestia/celestia-1.6.1-libpng15.patch
new file mode 100644
index 000000000..5dffbab24
--- /dev/null
+++ b/testing/celestia/celestia-1.6.1-libpng15.patch
@@ -0,0 +1,14 @@
+imagecapture.cpp:184:40: error: ‘Z_BEST_COMPRESSION’ was not declared in this scope
+
+--- src/celestia/imagecapture.cpp
++++ src/celestia/imagecapture.cpp
+@@ -31,6 +31,9 @@
+ #include "png.h"
+ #endif
+
++// Z_BEST_COMPRESSION
++#include <zlib.h>
++
+ // Define png_jmpbuf() in case we are using a pre-1.0.6 version of libpng
+ #ifndef png_jmpbuf
+ #define png_jmpbuf(png_ptr) png_ptr->jmpbuf
diff --git a/testing/celestia/celestia-1.6.1-linking.patch b/testing/celestia/celestia-1.6.1-linking.patch
new file mode 100644
index 000000000..d610d5243
--- /dev/null
+++ b/testing/celestia/celestia-1.6.1-linking.patch
@@ -0,0 +1,54 @@
+Fix linking issues:
+ * underlinking GLUT (bug #372123, #387609)
+ * as-needed (bug #281258)
+
+--- a/src/celestia/Makefile.am
++++ b/src/celestia/Makefile.am
+@@ -7,14 +7,15 @@
+
+ if ENABLE_KDE
+ SUBDIRS += kde
+-celestiaKDELIBS = $(LIB_QT) $(LIB_KDECORE) $(LIB_KDEUI) $(LIB_KFILE) \
+- $(LIBSOCKET) -lDCOP kde/libkdegui.a
++celestiaKDELIBS = kde/libkdegui.a
+ celestia_LDFLAGS = $(all_libraries) $(KDE_RPATH)
++LIBS += $(LIB_QT) $(LIB_KDECORE) $(LIB_KDEUI) $(LIB_KFILE) $(LIBSOCKET) -lDCOP
+ endif
+
+ if ENABLE_GTK
+ SUBDIRS += gtk
+-celestiaGTKLIBS = $(GTK_LIBS) gtk/libgtkgui.a
++celestiaGTKLIBS = gtk/libgtkgui.a
++LIBS += $(GTK_LIBS)
+ endif
+
+ COMMONSOURCES = \
+@@ -62,6 +63,7 @@
+
+ if ENABLE_GLUT
+ GLUTSOURCES = glutmain.cpp
++GLUTLIBS = -lGL
+ endif
+
+ if ENABLE_THEORA
+@@ -80,15 +82,16 @@
+ celestia_LDADD = \
+ $(celestiaKDELIBS) \
+ $(celestiaGTKLIBS) \
+- $(DL_LIBS) \
+- $(LUA_LIBS) \
+- $(THEORA_LIBS) \
+ ../celengine/libcelengine.a \
+ ../celtxf/libceltxf.a \
+ ../cel3ds/libcel3ds.a \
+ ../celmath/libcelmath.a \
+ ../celutil/libcelutil.a \
+- $(SPICE_LIBS)
++ $(LUA_LIBS) \
++ $(THEORA_LIBS) \
++ $(GLUTLIBS) \
++ $(SPICE_LIBS) \
++ $(DL_LIBS)
+
+ noinst_HEADERS = $(wildcard *.h)
+ noinst_DATA = ../../celestia
diff --git a/testing/cinepaint/LICENSE b/testing/cinepaint/LICENSE
new file mode 100644
index 000000000..746207229
--- /dev/null
+++ b/testing/cinepaint/LICENSE
@@ -0,0 +1,25 @@
+Copyright (c) 2005, Kai-Uwe Behrmann
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * 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.ntributors 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 COPYRIGHT
+OWNER 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/testing/cinepaint/PKGBUILD b/testing/cinepaint/PKGBUILD
new file mode 100644
index 000000000..a4dbe6100
--- /dev/null
+++ b/testing/cinepaint/PKGBUILD
@@ -0,0 +1,47 @@
+# $Id: PKGBUILD 148075 2012-01-30 18:45:01Z ibiru $
+# Maintainer: tobias [tobias.archlinux.org]
+# Contributor: tobias [tobias.justdreams.de]
+
+pkgname=cinepaint
+pkgver=1.0
+pkgrel=2
+pkgdesc="Sophisticated graphics manipulation programm supporting > 8bit pictures"
+arch=('i686' 'x86_64')
+license=('LGPL' 'GPL' 'MIT')
+url="http://www.cinepaint.org"
+depends=('gtk2' 'openexr' 'lcms' 'libxpm' 'fltk' 'ftgl' 'libxxf86vm')
+makedepends=('python2' 'gutenprint')
+optdepends=('python2: for python plug-ins'
+ 'gutenprint: for print plug-ins'
+ 'ghostscript: for pdf plug-ins')
+options=('!libtool')
+install=cinepaint.install
+source=(http://sourceforge.net/projects/cinepaint/files/CinePaint/${pkgname}-${pkgver}.tgz
+ LICENSE cinepaint-libpng15.patch)
+md5sums=('7dfdb005d246578392ac9bd500534804'
+ '169085743f667c250ea2e4022efecf5f'
+ '682de65ad358512d00a8b76730453664')
+
+build() {
+ cd "${srcdir}/${pkgname}"
+ patch -p1 -i ../cinepaint-libpng15.patch
+ find plug-ins/pygimp -type f -exec sed -i 's#env python#env python2#' {} +
+ sed -i 's|$(LDFLAGS) -o|$(LDFLAGS) $(GTK_LIBS) -o|' lib/Makefile.in
+
+ aclocal -I aclocal
+ autoconf
+ LIBS+="-lstdc++ -lm -lX11" ./configure --prefix=/usr --libdir=/usr/lib --mandir=/usr/share/man \
+ --enable-gtk2 --enable-pygimp --with-python=/usr/bin/python2
+ sed -i 's/-Wl,,/-Wl,/' lib/fl_i18n/Makefile plug-ins/bracketing_to_hdr/Makefile \
+ plug-ins/collect/Makefile plug-ins/icc_examin/icc_examin/Makefile plug-ins/pdf/Makefile
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}"
+ make DESTDIR="${pkgdir}" install
+ sed -i -e "s|-I$srcdir/cinepaint||" -e "s|-I$srcdir/cinepaint/lib||" -e "/libcinepaint.la/d" \
+ -e "s|$srcdir/cinepaint/lib/.libs/\$dlname||" "${pkgdir}/usr/bin/cinepainttool"
+ sed -i "s/cinepaint.png/cinepaint/" "${pkgdir}/usr/share/applications/cinepaint.desktop"
+ install -D -m644 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+}
diff --git a/testing/cinepaint/cinepaint-libpng15.patch b/testing/cinepaint/cinepaint-libpng15.patch
new file mode 100644
index 000000000..e22edafae
--- /dev/null
+++ b/testing/cinepaint/cinepaint-libpng15.patch
@@ -0,0 +1,452 @@
+diff -Naur cinepaint.old/plug-ins/png/png.c cinepaint/plug-ins/png/png.c
+--- cinepaint.old/plug-ins/png/png.c 2012-01-23 12:39:42.000000000 -0500
++++ cinepaint/plug-ins/png/png.c 2012-01-23 12:39:50.000000000 -0500
+@@ -390,6 +390,16 @@
+ gchar *progress; /* Title for progress display... */
+ guchar alpha[256], /* Index -> Alpha */
+ *alpha_ptr; /* Temporary pointer */
++ png_byte color_type;
++ png_byte bit_depth;
++ png_colorp palette;
++ int num_palette;
++ png_charpp iccp_name;
++ int compression_type;
++ png_bytepp iccp_profile;
++ png_uint_32 iccp_proflen;
++ png_uint_32 width, height;
++ png_byte channels;
+
+ /*
+ * PNG 0.89 and newer have a sane, forwards compatible constructor.
+@@ -405,7 +415,7 @@
+ info = (png_infop)calloc(sizeof(png_info), 1);
+ #endif /* PNG_LIBPNG_VER > 88 */
+
+- if (setjmp (pp->jmpbuf))
++ if (setjmp (png_jmpbuf(pp)))
+ {
+ g_message ("%s\nPNG error. File corrupted?", filename);
+ return image;
+@@ -442,21 +452,26 @@
+ */
+
+ png_read_info(pp, info);
++ color_type = png_get_color_type(pp, info);
++ width=png_get_image_width(pp, info);
++ height=png_get_image_height(pp, info);
+
+ /*
+ * Latest attempt, this should be my best yet :)
+ */
+
++ bit_depth = png_get_bit_depth(pp, info);
++
+ #ifndef WORDS_BIGENDIAN
+- if(info->bit_depth == 16)
++ if(bit_depth == 16)
+ png_set_swap(pp);
+ #endif
+
+- if (info->color_type == PNG_COLOR_TYPE_GRAY && info->bit_depth < 8) {
++ if (color_type == PNG_COLOR_TYPE_GRAY && bit_depth < 8) {
+ png_set_expand(pp);
+ }
+
+- if (info->color_type == PNG_COLOR_TYPE_PALETTE && info->bit_depth < 8) {
++ if (color_type == PNG_COLOR_TYPE_PALETTE && bit_depth < 8) {
+ png_set_packing(pp);
+ }
+
+@@ -464,8 +479,8 @@
+ * Expand G+tRNS to GA, RGB+tRNS to RGBA
+ */
+
+- if (info->color_type != PNG_COLOR_TYPE_PALETTE &&
+- (info->valid & PNG_INFO_tRNS)) {
++ if (color_type != PNG_COLOR_TYPE_PALETTE &&
++ (png_get_valid(pp, info, PNG_INFO_tRNS))) {
+ png_set_expand(pp);
+ }
+
+@@ -482,7 +497,7 @@
+
+ #if PNG_LIBPNG_VER > 99
+ if (png_get_valid(pp, info, PNG_INFO_tRNS) &&
+- info->color_type == PNG_COLOR_TYPE_PALETTE)
++ color_type == PNG_COLOR_TYPE_PALETTE)
+ {
+ png_get_tRNS(pp, info, &alpha_ptr, &num, NULL);
+ /* Copy the existing alpha values from the tRNS chunk */
+@@ -505,9 +520,9 @@
+
+ png_read_update_info(pp, info);
+
+- if(info->bit_depth==16)
++ if(bit_depth==16)
+ {
+- switch (info->color_type)
++ switch (color_type)
+ {
+ case PNG_COLOR_TYPE_RGB : /* RGB */
+ bpp = 6;
+@@ -545,7 +560,7 @@
+ }
+ else
+ {
+- switch (info->color_type)
++ switch (color_type)
+ {
+ case PNG_COLOR_TYPE_RGB : /* RGB */
+ bpp = 3;
+@@ -582,7 +597,7 @@
+ };
+ }
+
+- image = gimp_image_new(info->width, info->height, image_type);
++ image = gimp_image_new(width, height, image_type);
+ if (image == -1)
+ {
+ g_message("Can't allocate new image\n%s", filename);
+@@ -595,7 +610,7 @@
+ * Create the "background" layer to hold the image...
+ */
+
+- layer = gimp_layer_new(image, _("Background"), info->width, info->height,
++ layer = gimp_layer_new(image, _("Background"), width, height,
+ layer_type, 100, NORMAL_MODE);
+ gimp_image_add_layer(image, layer, 0);
+
+@@ -627,20 +642,21 @@
+
+ empty= 0; /* by default assume no full transparent palette entries */
+
+- if (info->color_type & PNG_COLOR_MASK_PALETTE) {
++ if (color_type & PNG_COLOR_MASK_PALETTE) {
+
+ #if PNG_LIBPNG_VER > 99
++ png_get_PLTE(pp, info, &palette, &num_palette);
+ if (png_get_valid(pp, info, PNG_INFO_tRNS)) {
+ for (empty= 0; empty < 256 && alpha[empty] == 0; ++empty);
+ /* Calculates number of fully transparent "empty" entries */
+
+- gimp_image_set_cmap(image, (guchar *) (info->palette + empty),
+- info->num_palette - empty);
++ gimp_image_set_cmap(image, (guchar *) (palette + empty),
++ num_palette - empty);
+ } else {
+- gimp_image_set_cmap(image, (guchar *)info->palette, info->num_palette);
++ gimp_image_set_cmap(image, (guchar *)palette, num_palette);
+ }
+ #else
+- gimp_image_set_cmap(image, (guchar *)info->palette, info->num_palette);
++ gimp_image_set_cmap(image, (guchar *)palette, num_palette);
+ #endif /* PNG_LIBPNG_VER > 99 */
+
+ }
+@@ -659,18 +675,19 @@
+ */
+
+ tile_height = gimp_tile_height ();
+- pixel = g_new(guchar, tile_height * info->width * bpp);
++ pixel = g_new(guchar, tile_height * width * bpp);
+ pixels = g_new(guchar *, tile_height);
++ channels=png_get_channels(pp, info);
+
+- if(info->bit_depth==16)
++ if(bit_depth==16)
+ {
+ for (i = 0; i < tile_height; i ++)
+- pixels[i] = pixel + info->width * info->channels * i * 2;
++ pixels[i] = pixel + width * channels * i * 2;
+ }
+ else
+ {
+ for (i = 0; i < tile_height; i ++)
+- pixels[i] = pixel + info->width * info->channels * i;
++ pixels[i] = pixel + width * channels * i;
+ }
+
+ for (pass = 0; pass < num_passes; pass ++)
+@@ -680,11 +697,11 @@
+ */
+
+ for (begin = 0, end = tile_height;
+- begin < info->height;
++ begin < height;
+ begin += tile_height, end += tile_height)
+ {
+- if (end > info->height)
+- end = info->height;
++ if (end > height)
++ end = height;
+
+ num = end - begin;
+
+@@ -697,20 +714,21 @@
+ gimp_pixel_rgn_set_rect(&pixel_rgn, pixel, 0, begin,
+ drawable->width, num);
+
+- gimp_progress_update(((double)pass + (double)end / (double)info->height) /
++ gimp_progress_update(((double)pass + (double)end / (double)height) /
+ (double)num_passes);
+ };
+ };
+
+ #if defined(PNG_iCCP_SUPPORTED)
+ /* set icc profile */
+- if (info->iccp_proflen > 0) {
+- gimp_image_set_icc_profile_by_mem (image, info->iccp_proflen,
+- info->iccp_profile,
+- ICC_IMAGE_PROFILE);
++ png_get_iCCP(pp, info, (png_charpp)iccp_name, &compression_type, iccp_profile, &iccp_proflen);
++ if (iccp_proflen > 0) {
++ gimp_image_set_icc_profile_by_mem (image, iccp_proflen,
++ (gchar *)iccp_profile,
++ ICC_IMAGE_PROFILE);
+ printf ("%s:%d %s() set embedded profile \"%s\"\n",
+ __FILE__,__LINE__,__func__,
+- info->iccp_name);
++ (char *)iccp_name);
+ }
+ #endif
+
+@@ -808,6 +826,14 @@
+ blue; /* Used for palette background */
+ time_t cutime; /* Time since epoch */
+ struct tm *gmt; /* GMT broken down */
++ png_byte color_type;
++ png_byte bit_depth;
++ int filter_method=0;
++ png_colorp palette;
++ int num_palette;
++ png_charpp iccp_name;
++ png_uint_32 height;
++ int compression_type;
+
+ /*
+ * PNG 0.89 and newer have a sane, forwards compatible constructor.
+@@ -824,7 +849,7 @@
+ info = (png_infop)calloc(sizeof(png_info), 1);
+ #endif /* PNG_LIBPNG_VER > 88 */
+
+- if (setjmp (pp->jmpbuf))
++ if (setjmp (png_jmpbuf(pp)))
+ {
+ g_message ("%s\nPNG error. Couldn't save image", filename);
+ return 0;
+@@ -857,15 +882,6 @@
+ drawable = gimp_drawable_get (drawable_ID);
+ type = gimp_drawable_type (drawable_ID);
+
+- /*
+- * Set the image dimensions, bit depth, interlacing and compression
+- */
+-
+- png_set_compression_level (pp, pngvals.compression_level);
+-
+- info->width = drawable->width;
+- info->height = drawable->height;
+- info->interlace_type = pngvals.interlaced;
+
+ /*
+ * Set color type and remember bytes per pixel count
+@@ -874,71 +890,69 @@
+ switch (type)
+ {
+ case RGB_IMAGE :
+- info->color_type = PNG_COLOR_TYPE_RGB;
+- info->bit_depth = 8;
++ color_type = PNG_COLOR_TYPE_RGB;
++ bit_depth = 8;
+ bpp = 3;
+ break;
+ case RGBA_IMAGE :
+- info->color_type = PNG_COLOR_TYPE_RGB_ALPHA;
+- info->bit_depth = 8;
++ color_type = PNG_COLOR_TYPE_RGB_ALPHA;
++ bit_depth = 8;
+ bpp = 4;
+ break;
+ case GRAY_IMAGE :
+- info->color_type = PNG_COLOR_TYPE_GRAY;
+- info->bit_depth = 8;
++ color_type = PNG_COLOR_TYPE_GRAY;
++ bit_depth = 8;
+ bpp = 1;
+ break;
+ case GRAYA_IMAGE :
+- info->color_type = PNG_COLOR_TYPE_GRAY_ALPHA;
+- info->bit_depth = 8;
++ color_type = PNG_COLOR_TYPE_GRAY_ALPHA;
++ bit_depth = 8;
+ bpp = 2;
+ break;
+ case INDEXED_IMAGE :
+ bpp = 1;
+- info->bit_depth = 8;
+- info->color_type = PNG_COLOR_TYPE_PALETTE;
+- info->valid |= PNG_INFO_PLTE;
+- info->palette= (png_colorp) gimp_image_get_cmap(image_ID, &num_colors);
+- info->num_palette= num_colors;
++ bit_depth = 8;
++ color_type = PNG_COLOR_TYPE_PALETTE;
++ png_get_valid(pp, info, PNG_INFO_PLTE);
++ png_set_PLTE(pp, info, (png_colorp) gimp_image_get_cmap(image_ID, &num_colors), num_colors);
+ break;
+ case INDEXEDA_IMAGE :
+ bpp = 2;
+- info->bit_depth = 8;
+- info->color_type = PNG_COLOR_TYPE_PALETTE;
++ bit_depth = 8;
++ color_type = PNG_COLOR_TYPE_PALETTE;
+ respin_cmap (pp, info, image_ID); /* fix up transparency */
+ break;
+ case U16_RGB_IMAGE :
+- info->color_type = PNG_COLOR_TYPE_RGB;
+- info->bit_depth = 16;
++ color_type = PNG_COLOR_TYPE_RGB;
++ bit_depth = 16;
+ bpp = 6;
+ break;
+ case U16_RGBA_IMAGE :
+- info->color_type = PNG_COLOR_TYPE_RGB_ALPHA;
+- info->bit_depth = 16;
++ color_type = PNG_COLOR_TYPE_RGB_ALPHA;
++ bit_depth = 16;
+ bpp = 8;
+ break;
+ case U16_GRAY_IMAGE :
+- info->color_type = PNG_COLOR_TYPE_GRAY;
+- info->bit_depth = 16;
++ color_type = PNG_COLOR_TYPE_GRAY;
++ bit_depth = 16;
+ bpp = 2;
+ break;
+ case U16_GRAYA_IMAGE :
+- info->color_type = PNG_COLOR_TYPE_GRAY_ALPHA;
+- info->bit_depth = 16;
++ color_type = PNG_COLOR_TYPE_GRAY_ALPHA;
++ bit_depth = 16;
+ bpp = 4;
+ break;
+ case U16_INDEXED_IMAGE :
+ bpp = 2;
+- info->bit_depth = 16;
+- info->color_type = PNG_COLOR_TYPE_PALETTE;
+- info->valid |= PNG_INFO_PLTE;
+- info->palette= (png_colorp) gimp_image_get_cmap(image_ID, &num_colors);
+- info->num_palette= num_colors;
++ bit_depth = 16;
++ color_type = PNG_COLOR_TYPE_PALETTE;
++ png_get_valid(pp, info, PNG_INFO_PLTE);
++ png_set_PLTE(pp, info, (png_colorp) gimp_image_get_cmap(image_ID, &num_colors), num_colors);
+ break;
+ case U16_INDEXEDA_IMAGE :
+ bpp = 4;
+- info->bit_depth = 16;
+- info->color_type = PNG_COLOR_TYPE_PALETTE;
++ bit_depth = 16;
++ color_type = PNG_COLOR_TYPE_PALETTE;
+ respin_cmap (pp, info, image_ID); /* fix up transparency */
+ break;
+ default:
+@@ -950,30 +964,36 @@
+ * Fix bit depths for (possibly) smaller colormap images
+ */
+
+- if (info->valid & PNG_INFO_PLTE) {
+- if (info->num_palette <= 2)
+- info->bit_depth= 1;
+- else if (info->num_palette <= 4)
+- info->bit_depth= 2;
+- else if (info->num_palette <= 16)
+- info->bit_depth= 4;
++ if (png_get_valid(pp, info, PNG_INFO_PLTE)) {
++ png_get_PLTE(pp, info, &palette, &num_palette);
++ if (num_palette <= 2)
++ bit_depth= 1;
++ else if (num_palette <= 4)
++ bit_depth= 2;
++ else if (num_palette <= 16)
++ bit_depth= 4;
+ /* otherwise the default is fine */
+ }
+
++ png_set_compression_level (pp, pngvals.compression_level);
++ png_set_IHDR(pp, info, drawable->width, drawable->height,
++ bit_depth, color_type, pngvals.interlaced, compression_type, filter_method);
++
++
+ // write icc profile
+ #if defined(PNG_iCCP_SUPPORTED)
+ if (gimp_image_has_icc_profile (image_ID, ICC_IMAGE_PROFILE)) {
+- int size;
++ int size;
+ char *buffer;
+
+ buffer = gimp_image_get_icc_profile_by_mem (image_ID, &size,
+ ICC_IMAGE_PROFILE);
+ png_set_iCCP (pp, info,
+ gimp_image_get_icc_profile_description (image_ID, ICC_IMAGE_PROFILE),
+- 0, buffer, size);
++ 0, (png_const_bytep)buffer, size);
+ printf ("%s:%d %s() embedd icc profile \"%s\"\n",
+ __FILE__,__LINE__,__func__,
+- info->iccp_name);
++ (char *)iccp_name);
+ }
+ #endif
+
+@@ -1039,13 +1059,13 @@
+ * Convert unpacked pixels to packed if necessary
+ */
+
+- if (info->color_type == PNG_COLOR_TYPE_PALETTE && info->bit_depth < 8)
++ if (color_type == PNG_COLOR_TYPE_PALETTE && bit_depth < 8)
+ png_set_packing(pp);
+
+ /* Set swapping for 16 bit per sample images */
+
+ #ifndef WORDS_BIGENDIAN
+- if (info->bit_depth == 16)
++ if (bit_depth == 16)
+ png_set_swap(pp);
+ #endif
+
+@@ -1063,6 +1083,7 @@
+
+ gimp_pixel_rgn_init(&pixel_rgn, drawable, 0, 0, drawable->width,
+ drawable->height, FALSE, FALSE);
++ height=png_get_image_height(pp, info);
+
+ for (pass = 0; pass < num_passes; pass ++)
+ {
+@@ -1077,7 +1098,7 @@
+ num = end - begin;
+
+ gimp_pixel_rgn_get_rect (&pixel_rgn, pixel, 0, begin, drawable->width, num);
+- if (info->valid & PNG_INFO_tRNS) {
++ if (png_get_valid(pp, info, PNG_INFO_tRNS)) {
+ for (i = 0; i < num; ++i) {
+ fixed= pixels[i];
+ for (k = 0; k < drawable->width; ++k) {
+@@ -1085,7 +1106,7 @@
+ }
+ }
+ /* Forgot this case before, what if there are too many colors? */
+- } else if (info->valid & PNG_INFO_PLTE && bpp == 2) {
++ } else if (png_get_valid(pp, info, PNG_INFO_PLTE) && bpp == 2) {
+ for (i = 0; i < num; ++i) {
+ fixed= pixels[i];
+ for (k = 0; k < drawable->width; ++k) {
+@@ -1095,9 +1116,8 @@
+ }
+
+ png_write_rows (pp, pixels, num);
+-
+ gimp_progress_update (((double)pass + (double)end /
+- (double)info->height) / (double)num_passes);
++ (double)height) / (double)num_passes);
+ };
+ };
+
diff --git a/testing/cinepaint/cinepaint.install b/testing/cinepaint/cinepaint.install
new file mode 100644
index 000000000..5e5cfef4d
--- /dev/null
+++ b/testing/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/testing/digikam/PKGBUILD b/testing/digikam/PKGBUILD
new file mode 100644
index 000000000..8f9780a19
--- /dev/null
+++ b/testing/digikam/PKGBUILD
@@ -0,0 +1,104 @@
+# $Id: PKGBUILD 147976 2012-01-29 10:54:04Z ronald $
+# Maintainer: Ronald van Haren <ronald@archlinux.org>
+# Contributor: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgbase=digikam
+pkgname=('digikam' 'kipi-plugins' 'libkface' 'libkgeomap' 'libkvkontakte' 'libmediawiki')
+pkgver=2.5.0
+pkgrel=5
+pkgdesc="Digital photo management application for KDE"
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://www.digikam.org/"
+makedepends=('kdepimlibs' 'libkexiv2' 'libkdcraw' 'libkipi' 'libksane' 'liblqr'
+ 'kdeedu-marble' 'opencv' 'boost' 'libgpod' 'qjson' 'hugin'
+ 'cmake' 'automoc4' 'doxygen')
+source=("http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.bz2"
+ "boost148.patch" "libkipi140.patch")
+sha1sums=('6cadb838669d1bdcbd6abb677889f7d68d696383'
+ '93853084905b21309c46ce7d585021e76283d429'
+ '8a8f624fd0ca768a9dcd706405eb6e4944892d87')
+build() {
+ cd "${srcdir}"
+
+ pushd ${pkgname}-${pkgver}/core
+ patch -Np0 -i ${srcdir}/boost148.patch
+ patch -Np1 -i ${srcdir}/libkipi140.patch
+ popd
+
+ mkdir build
+ cd build
+ # Use internal lensfun (FS#21816)
+ cmake ../${pkgname}-${pkgver} \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_SKIP_RPATH=ON \
+ -DLENSFUN_LIBRARY="" \
+ -DLENSFUN_INCLUDE_DIR=""
+ make
+}
+
+package_digikam() {
+ pkgdesc="Digital photo management application for KDE"
+ depends=('kdebase-runtime' 'kdepimlibs' 'libgphoto2' 'opencv' 'liblqr'
+ 'libkipi' 'libkexiv2' 'libkdcraw' 'libkface' 'libkgeomap')
+ optdepends=('kipi-plugins: for more extras and plugins')
+ install=digikam.install
+
+ cd "${srcdir}"/build/core
+ make DESTDIR="${pkgdir}" install
+ cd "${srcdir}"/build/doc
+ make DESTDIR="${pkgdir}" install
+ cd "${srcdir}"/build/po
+ make DESTDIR="${pkgdir}" install
+
+ # these are in oxygen-icons
+ rm -rf ${pkgdir}/usr/share/icons
+}
+
+package_libkface() {
+ pkgdesc="A Qt/C++ wrapper around LibFace library to perform face recognition and detection over pictures"
+ depends=('kdelibs' 'opencv')
+
+ cd "${srcdir}"/build/extra/libkface
+ make DESTDIR="${pkgdir}" install
+}
+
+package_libkgeomap() {
+ pkgdesc="A wrapper around world map components for browsing and arranging photos on a map"
+ depends=('kdelibs' 'kdeedu-marble' 'libkexiv2')
+
+ cd "${srcdir}"/build/extra/libkgeomap
+ make DESTDIR="${pkgdir}" install
+}
+
+package_libkvkontakte() {
+ pkgdesc="KDE C++ library for asynchronous interaction with vkontakte.rusocial network"
+ depends=('kdelibs' 'qjson')
+
+ cd "${srcdir}"/build/extra/libkvkontakte
+ make DESTDIR="${pkgdir}" install
+}
+
+package_libmediawiki() {
+ pkgdesc="A KDE C++ interface for MediaWiki based web service as wikipedia.org"
+ depends=('kdelibs')
+
+ cd "${srcdir}"/build/extra/libmediawiki
+ make DESTDIR="${pkgdir}" install
+}
+
+package_kipi-plugins() {
+ pkgdesc="A collection of plugins extending the KDE graphics and image applications as digiKam"
+ depends=('kdebase-runtime' 'kdepimlibs' 'libkdcraw' 'libkipi' 'libksane'
+ 'opencv' 'qjson' 'libkvkontakte' 'libkexiv2')
+ optdepends=('libkgeomap'
+ 'libmediawiki'
+ 'libgpod'
+ 'hugin')
+ install=kipi-plugins.install
+
+ cd "${srcdir}"/build/extra/kipi-plugins
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/testing/digikam/boost148.patch b/testing/digikam/boost148.patch
new file mode 100644
index 000000000..6d3ff585b
--- /dev/null
+++ b/testing/digikam/boost148.patch
@@ -0,0 +1,65 @@
+diff -u libs/database/imagehistory/imagehistorygraph_boost.h ../../digikam-2.5.0/core/libs/database/imagehistory/imagehistorygraph_boost.h
+--- libs/database/imagehistory/imagehistorygraph_boost.h 2012-01-05 08:32:19.837388059 -0500
++++ ../../digikam-2.5.0/core/libs/database/imagehistory/imagehistorygraph_boost.h 2012-01-05 09:17:27.798341897 -0500
+@@ -1198,7 +1198,7 @@
+ {
+ boost::dag_shortest_paths(graph, v,
+ // we provide a constant weight of 1
+- weight_map(boost::ref_property_map<edge_t,int>(weight)).
++ weight_map(boost::ref_property_map<typename boost::graph_traits<GraphType>::edge_descriptor,int>(weight)).
+ // Store distance and predecessors in QMaps, wrapped to serve as property maps
+ distance_map(VertexIntMapAdaptor(distances)).
+ predecessor_map(VertexVertexMapAdaptor(predecessors))
+@@ -1218,7 +1218,7 @@
+ {
+ boost::dag_shortest_paths(graph, v,
+ // we provide a constant weight of 1
+- weight_map(boost::ref_property_map<edge_t,int>(weight)).
++ weight_map(boost::ref_property_map<typename boost::graph_traits<GraphType>::edge_descriptor,int>(weight)).
+ // Invert the default compare method: With greater, we get the longest path
+ distance_compare(std::greater<int>()).
+ // will be returned if a node is unreachable
+@@ -1384,14 +1384,15 @@
+ template <class GraphType, typename VertexLessThan>
+ class lessThanMapEdgeToTarget
+ {
++ typedef typename boost::graph_traits<GraphType>::edge_descriptor edge_descriptor;
+ public:
+ lessThanMapEdgeToTarget(const GraphType& g, VertexLessThan vertexLessThan)
+ : g(g), vertexLessThan(vertexLessThan) {}
+ const GraphType& g;
+ VertexLessThan vertexLessThan;
+- bool operator()(const Edge& a, const Edge& b)
++ bool operator()(const edge_descriptor& a, const edge_descriptor& b)
+ {
+- return vertexLessThan(boost::target(a.toEdge(), g), boost::target(b.toEdge(), g));
++ return vertexLessThan(boost::target(a, g), boost::target(b, g));
+ }
+ };
+
+@@ -1402,20 +1403,21 @@
+ {
+ typedef std::pair<Vertex, QList<Edge> > VertexInfo;
+
+- QList<Edge> outEdges;
++ typedef typename boost::graph_traits<IncidenceGraph>::edge_descriptor edge_descriptor;
++ QList<edge_descriptor> outEdges;
+ std::vector<VertexInfo> stack;
+
+ boost::put(color, u, boost::gray_color);
+ vis.discover_vertex(u, g);
+
+- outEdges = toEdgeList(boost::out_edges(u, g));
++ outEdges = toList<edge_descriptor>(boost::out_edges(u, g));
+ // Sort edges. The lessThan we have takes vertices, so we use a lessThan which
+ // maps the given edges to their targets, and calls our vertex lessThan.
+ qSort(outEdges.begin(), outEdges.end(), lessThanMapEdgeToTarget<IncidenceGraph, LessThan>(g, lessThan));
+
+- foreach(const Edge& e, outEdges)
++ foreach(const edge_descriptor& e, outEdges)
+ {
+- Vertex v = boost::target(e.toEdge(), g);
++ Vertex v = boost::target(e, g);
+ vis.examine_edge(e, g);
+ boost::default_color_type v_color = boost::get(color, v);
+ if (v_color == boost::white_color)
diff --git a/testing/digikam/digikam.install b/testing/digikam/digikam.install
new file mode 100644
index 000000000..81ce5c4b0
--- /dev/null
+++ b/testing/digikam/digikam.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/testing/digikam/kipi-plugins.install b/testing/digikam/kipi-plugins.install
new file mode 100644
index 000000000..81ce5c4b0
--- /dev/null
+++ b/testing/digikam/kipi-plugins.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/testing/digikam/libkipi140.patch b/testing/digikam/libkipi140.patch
new file mode 100644
index 000000000..a221b5847
--- /dev/null
+++ b/testing/digikam/libkipi140.patch
@@ -0,0 +1,63 @@
+diff --git a/utilities/setup/setupplugins.cpp b/utilities/setup/setupplugins.cpp
+index 0f4030a..b8efb35 100644
+--- a/utilities/setup/setupplugins.cpp
++++ b/utilities/setup/setupplugins.cpp
+@@ -6,8 +6,8 @@
+ * Date : 2004-01-02
+ * Description : setup Kipi plugins tab.
+ *
+- * Copyright (C) 2004-2011 by Gilles Caulier <caulier dot gilles at gmail dot com>
+- * Copyright (C) 2011 by Andi Clemens <andi dot clemens at googlemail dot com>
++ * Copyright (C) 2004-2012 by Gilles Caulier <caulier dot gilles at gmail dot com>
++ * Copyright (C) 2011-2012 by Andi Clemens <andi dot clemens at googlemail dot com>
+ *
+ * This program is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU General
+@@ -100,6 +100,11 @@ SetupPlugins::SetupPlugins(QWidget* parent)
+
+ panel->setLayout(mainLayout);
+
++#if KIPI_VERSION < 0x010400
++ d->checkAllBtn->setVisible(false);
++ d->clearBtn->setVisible(false);
++#endif
++
+ initPlugins();
+
+ // --------------------------------------------------------
+@@ -158,14 +163,18 @@ void SetupPlugins::applyPlugins()
+ void SetupPlugins::slotCheckAll()
+ {
+ QApplication::setOverrideCursor(Qt::WaitCursor);
++#if KIPI_VERSION >= 0x010400
+ d->kipiConfig->slotCheckAll();
++#endif
+ QApplication::restoreOverrideCursor();
+ }
+
+ void SetupPlugins::slotClear()
+ {
+ QApplication::setOverrideCursor(Qt::WaitCursor);
++#if KIPI_VERSION >= 0x010400
+ d->kipiConfig->slotClear();
++#endif
+ QApplication::restoreOverrideCursor();
+ }
+
+diff --git a/utilities/setup/setupplugins.h b/utilities/setup/setupplugins.h
+index 271a569..114e0fa 100644
+--- a/utilities/setup/setupplugins.h
++++ b/utilities/setup/setupplugins.h
+@@ -6,8 +6,8 @@
+ * Date : 2004-01-02
+ * Description : setup Kipi plugins tab.
+ *
+- * Copyright (C) 2004-2011 by Gilles Caulier <caulier dot gilles at gmail dot com>
+- * Copyright (C) 2011 by Andi Clemens <andi dot clemens at googlemail dot com>
++ * Copyright (C) 2004-2012 by Gilles Caulier <caulier dot gilles at gmail dot com>
++ * Copyright (C) 2011-2012 by Andi Clemens <andi dot clemens at googlemail dot com>
+ *
+ * This program is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU General
+
+
diff --git a/testing/djvulibre/PKGBUILD b/testing/djvulibre/PKGBUILD
new file mode 100644
index 000000000..6faf641c4
--- /dev/null
+++ b/testing/djvulibre/PKGBUILD
@@ -0,0 +1,41 @@
+# $Id: PKGBUILD 148081 2012-01-30 18:45:15Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: mgushee
+
+pkgname=djvulibre
+pkgver=3.5.24
+pkgrel=3
+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>=4.0.0' '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
+ git-fixes.patch)
+md5sums=('af83d27af5083198432a178d22b259c5'
+ 'ff3798e383e9c3fae407455d8a51deec')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i "${srcdir}/git-fixes.patch"
+ ./configure --prefix=/usr --disable-desktopfiles
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ 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/testing/djvulibre/djvulibre.install b/testing/djvulibre/djvulibre.install
new file mode 100644
index 000000000..3e9bb5c49
--- /dev/null
+++ b/testing/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/testing/djvulibre/git-fixes.patch b/testing/djvulibre/git-fixes.patch
new file mode 100644
index 000000000..3077cf0b4
--- /dev/null
+++ b/testing/djvulibre/git-fixes.patch
@@ -0,0 +1,1607 @@
+From 3341545edba359b292a8ef6db1b7d342caf3dcf1 Mon Sep 17 00:00:00 2001
+From: Leon Bottou <leon@bottou.org>
+Date: Wed, 4 May 2011 21:25:35 -0700
+Subject: [PATCH] Added include <stddef.h> for gcc-4.6
+
+---
+ libdjvu/BSByteStream.cpp | 1 +
+ libdjvu/BSEncodeByteStream.cpp | 1 +
+ libdjvu/ByteStream.cpp | 1 +
+ libdjvu/DjVuFileCache.cpp | 1 +
+ libdjvu/DjVuGlobal.cpp | 2 ++
+ libdjvu/DjVuGlobalMemory.cpp | 2 ++
+ libdjvu/DjVuMessage.cpp | 1 +
+ libdjvu/DjVuMessageLite.cpp | 2 +-
+ libdjvu/DjVuPalette.cpp | 2 ++
+ libdjvu/DjVuPort.h | 1 +
+ libdjvu/DjVuToPS.cpp | 1 +
+ libdjvu/GBitmap.cpp | 2 ++
+ libdjvu/GException.cpp | 1 +
+ libdjvu/GOS.cpp | 1 +
+ libdjvu/GPixmap.cpp | 2 ++
+ libdjvu/GSmartPointer.cpp | 1 +
+ libdjvu/GSmartPointer.h | 2 ++
+ libdjvu/GString.cpp | 1 +
+ libdjvu/GString.h | 1 +
+ libdjvu/GThreads.cpp | 2 ++
+ libdjvu/GURL.cpp | 1 +
+ libdjvu/GUnicode.cpp | 2 ++
+ libdjvu/IFFByteStream.h | 1 +
+ libdjvu/IW44EncodeCodec.cpp | 1 +
+ libdjvu/IW44Image.cpp | 1 +
+ libdjvu/JPEGDecoder.h | 1 +
+ libdjvu/MMX.cpp | 1 +
+ libdjvu/UnicodeByteStream.h | 1 +
+ libdjvu/XMLParser.cpp | 1 +
+ libdjvu/ZPCodec.cpp | 2 ++
+ libdjvu/atomic.cpp | 1 +
+ libdjvu/ddjvuapi.cpp | 1 +
+ libdjvu/ddjvuapi.h | 1 +
+ libdjvu/miniexp.cpp | 1 +
+ libdjvu/miniexp.h | 3 ++-
+ tools/bzz.cpp | 1 +
+ tools/c44.cpp | 1 +
+ tools/cjb2.cpp | 1 +
+ tools/cpaldjvu.cpp | 1 +
+ tools/csepdjvu.cpp | 1 +
+ tools/ddjvu.cpp | 1 +
+ tools/djvm.cpp | 2 +-
+ tools/djvmcvt.cpp | 1 +
+ tools/djvudump.cpp | 1 +
+ tools/djvuextract.cpp | 1 +
+ tools/djvumake.cpp | 1 +
+ tools/djvups.cpp | 1 +
+ tools/djvused.cpp | 1 +
+ tools/djvuserve.cpp | 1 +
+ tools/djvutxt.cpp | 1 +
+ tools/tiff2pdf.h | 1 +
+ xmltools/djvutoxml.cpp | 1 +
+ xmltools/djvuxmlparser.cpp | 1 +
+ 53 files changed, 63 insertions(+), 3 deletions(-)
+
+diff --git a/libdjvu/BSByteStream.cpp b/libdjvu/BSByteStream.cpp
+index b762ccf..d662ab0 100644
+--- a/libdjvu/BSByteStream.cpp
++++ b/libdjvu/BSByteStream.cpp
+@@ -62,6 +62,7 @@
+
+ // - Author: Leon Bottou, 07/1998
+
++#include <stddef.h>
+ #include <stdlib.h>
+ #include <stdio.h>
+ #include <string.h>
+diff --git a/libdjvu/BSEncodeByteStream.cpp b/libdjvu/BSEncodeByteStream.cpp
+index 5d80e51..68bc3e3 100644
+--- a/libdjvu/BSEncodeByteStream.cpp
++++ b/libdjvu/BSEncodeByteStream.cpp
+@@ -71,6 +71,7 @@
+ #include "GOS.h"
+ #endif
+
++#include <stddef.h>
+ #include <stdlib.h>
+ #include <stdio.h>
+ #include <string.h>
+diff --git a/libdjvu/ByteStream.cpp b/libdjvu/ByteStream.cpp
+index 158c33c..be01847 100644
+--- a/libdjvu/ByteStream.cpp
++++ b/libdjvu/ByteStream.cpp
+@@ -73,6 +73,7 @@
+ #include "GOS.h"
+ #include "GURL.h"
+ #include "DjVuMessage.h"
++#include <stddef.h>
+ #include <fcntl.h>
+ #if defined(WIN32) || defined(__CYGWIN32__)
+ # include <io.h>
+diff --git a/libdjvu/DjVuFileCache.cpp b/libdjvu/DjVuFileCache.cpp
+index 6b1e85d..7d7a192 100644
+--- a/libdjvu/DjVuFileCache.cpp
++++ b/libdjvu/DjVuFileCache.cpp
+@@ -63,6 +63,7 @@
+ #include "DjVuFileCache.h"
+ #include "debug.h"
+
++#include <stddef.h>
+ #include <stdlib.h>
+
+
+diff --git a/libdjvu/DjVuGlobal.cpp b/libdjvu/DjVuGlobal.cpp
+index e6d3cec..df9278e 100644
+--- a/libdjvu/DjVuGlobal.cpp
++++ b/libdjvu/DjVuGlobal.cpp
+@@ -76,6 +76,8 @@
+ #include "GThreads.h"
+ #include "GException.h"
+ #include "GContainer.h"
++
++#include <stddef.h>
+ #include <stdlib.h>
+ #include <stdio.h>
+ #include <string.h>
+diff --git a/libdjvu/DjVuGlobalMemory.cpp b/libdjvu/DjVuGlobalMemory.cpp
+index 3c6012c..c8ba309 100644
+--- a/libdjvu/DjVuGlobalMemory.cpp
++++ b/libdjvu/DjVuGlobalMemory.cpp
+@@ -67,6 +67,8 @@
+
+ #include "DjVuGlobal.h"
+ #include "GException.h"
++
++#include <stddef.h>
+ #include <stdlib.h>
+ #include <string.h>
+ #include "debug.h"
+diff --git a/libdjvu/DjVuMessage.cpp b/libdjvu/DjVuMessage.cpp
+index 6f5a735..1726025 100644
+--- a/libdjvu/DjVuMessage.cpp
++++ b/libdjvu/DjVuMessage.cpp
+@@ -71,6 +71,7 @@
+ #include "debug.h"
+ #include <ctype.h>
+ #include <string.h>
++#include <stddef.h>
+ #include <stdlib.h>
+ #ifdef WIN32
+ # include <tchar.h>
+diff --git a/libdjvu/DjVuMessageLite.cpp b/libdjvu/DjVuMessageLite.cpp
+index b8c1010..5daa9d9 100644
+--- a/libdjvu/DjVuMessageLite.cpp
++++ b/libdjvu/DjVuMessageLite.cpp
+@@ -73,8 +73,8 @@
+ #include "debug.h"
+ #include <ctype.h>
+ #include <string.h>
++#include <stddef.h>
+ #include <stdlib.h>
+-// #include <stdio.h>
+ #ifdef WIN32
+ #include <tchar.h>
+ #include <windows.h>
+diff --git a/libdjvu/DjVuPalette.cpp b/libdjvu/DjVuPalette.cpp
+index c489f7b..76b0bf4 100644
+--- a/libdjvu/DjVuPalette.cpp
++++ b/libdjvu/DjVuPalette.cpp
+@@ -64,6 +64,8 @@
+ #include "ByteStream.h"
+ #include "BSByteStream.h"
+ #include "DjVuPalette.h"
++
++#include <stddef.h>
+ #include <stdlib.h>
+ #include <math.h>
+
+diff --git a/libdjvu/DjVuPort.h b/libdjvu/DjVuPort.h
+index f6a92f6..e2b3125 100644
+--- a/libdjvu/DjVuPort.h
++++ b/libdjvu/DjVuPort.h
+@@ -65,6 +65,7 @@
+
+ #include "GThreads.h"
+ #include "GURL.h"
++#include "stddef.h"
+
+ #ifdef HAVE_NAMESPACES
+ namespace DJVU {
+diff --git a/libdjvu/DjVuToPS.cpp b/libdjvu/DjVuToPS.cpp
+index 5517bf3..6914ff9 100644
+--- a/libdjvu/DjVuToPS.cpp
++++ b/libdjvu/DjVuToPS.cpp
+@@ -72,6 +72,7 @@
+ #include "GPixmap.h"
+ #include "debug.h"
+ #include <stdarg.h>
++#include <stddef.h>
+ #include <stdlib.h>
+ #include <stdio.h>
+ #include <time.h>
+diff --git a/libdjvu/GBitmap.cpp b/libdjvu/GBitmap.cpp
+index ab5c0de..797edcc 100644
+--- a/libdjvu/GBitmap.cpp
++++ b/libdjvu/GBitmap.cpp
+@@ -66,6 +66,8 @@
+ #include "GString.h"
+ #include "GThreads.h"
+ #include "GException.h"
++#include <stddef.h>
++#include <stdlib.h>
+ #include <string.h>
+
+ // - Author: Leon Bottou, 05/1997
+diff --git a/libdjvu/GException.cpp b/libdjvu/GException.cpp
+index 2ea179a..89da70f 100644
+--- a/libdjvu/GException.cpp
++++ b/libdjvu/GException.cpp
+@@ -60,6 +60,7 @@
+ # pragma implementation
+ #endif
+
++#include <stddef.h>
+ #include <stdlib.h>
+ #include <stdio.h>
+ #include <string.h>
+diff --git a/libdjvu/GOS.cpp b/libdjvu/GOS.cpp
+index e784932..d2088e2 100644
+--- a/libdjvu/GOS.cpp
++++ b/libdjvu/GOS.cpp
+@@ -65,6 +65,7 @@
+ #include "GOS.h"
+ #include "GURL.h"
+
++#include <stddef.h>
+ #include <stdlib.h>
+ #include <stdio.h>
+ #include <ctype.h>
+diff --git a/libdjvu/GPixmap.cpp b/libdjvu/GPixmap.cpp
+index 392df54..4bf6f57 100644
+--- a/libdjvu/GPixmap.cpp
++++ b/libdjvu/GPixmap.cpp
+@@ -75,6 +75,8 @@
+ #include "GThreads.h"
+ #include "Arrays.h"
+ #include "JPEGDecoder.h"
++
++#include <stddef.h>
+ #include <stdlib.h>
+ #include <math.h>
+ #include <assert.h>
+diff --git a/libdjvu/GSmartPointer.cpp b/libdjvu/GSmartPointer.cpp
+index 6e523e7..58aef5b 100644
+--- a/libdjvu/GSmartPointer.cpp
++++ b/libdjvu/GSmartPointer.cpp
+@@ -67,6 +67,7 @@
+ // Our original implementation consisted of multiple classes.
+ // <http://prdownloads.sourceforge.net/djvu/DjVu2_2b-src.tgz>.
+
++#include <stddef.h>
+ #include <string.h>
+ #if PARANOID_DEBUG
+ # include <assert.h>
+diff --git a/libdjvu/GSmartPointer.h b/libdjvu/GSmartPointer.h
+index 82781bd..8a8bb8a 100644
+--- a/libdjvu/GSmartPointer.h
++++ b/libdjvu/GSmartPointer.h
+@@ -97,6 +97,8 @@
+ #include "DjVuGlobal.h"
+ #include "atomic.h"
+
++#include <stddef.h>
++
+ #ifdef HAVE_NAMESPACES
+ namespace DJVU {
+ # ifdef NOT_DEFINED // Just to fool emacs c++ mode
+diff --git a/libdjvu/GString.cpp b/libdjvu/GString.cpp
+index 03f6226..350b11b 100644
+--- a/libdjvu/GString.cpp
++++ b/libdjvu/GString.cpp
+@@ -73,6 +73,7 @@
+ #include "GThreads.h"
+ #include "debug.h"
+
++#include <stddef.h>
+ #include <stdlib.h>
+ #include <stdio.h>
+ #include <string.h>
+diff --git a/libdjvu/GString.h b/libdjvu/GString.h
+index b63b753..3aa1f76 100644
+--- a/libdjvu/GString.h
++++ b/libdjvu/GString.h
+@@ -108,6 +108,7 @@
+ #include "DjVuGlobal.h"
+ #include "GContainer.h"
+
++#include <stddef.h>
+ #include <stdlib.h>
+ #include <stdarg.h>
+ #ifdef WIN32
+diff --git a/libdjvu/GThreads.cpp b/libdjvu/GThreads.cpp
+index d81f3c3..253fed8 100644
+--- a/libdjvu/GThreads.cpp
++++ b/libdjvu/GThreads.cpp
+@@ -71,6 +71,8 @@
+ #include "GThreads.h"
+ #include "GException.h"
+ #include "DjVuMessageLite.h"
++
++#include <stddef.h>
+ #include <stdlib.h>
+ #include <stdio.h>
+
+diff --git a/libdjvu/GURL.cpp b/libdjvu/GURL.cpp
+index c37bf52..a80078c 100644
+--- a/libdjvu/GURL.cpp
++++ b/libdjvu/GURL.cpp
+@@ -72,6 +72,7 @@
+ #include "GURL.h"
+ #include "debug.h"
+
++#include <stddef.h>
+ #include <stdlib.h>
+ #include <stdio.h>
+ #include <ctype.h>
+diff --git a/libdjvu/GUnicode.cpp b/libdjvu/GUnicode.cpp
+index 415c081..a8b25b8 100644
+--- a/libdjvu/GUnicode.cpp
++++ b/libdjvu/GUnicode.cpp
+@@ -62,6 +62,8 @@
+
+ #include "GString.h"
+
++#include <stddef.h>
++
+ #if HAS_ICONV
+ #include <iconv.h>
+ #endif
+diff --git a/libdjvu/IFFByteStream.h b/libdjvu/IFFByteStream.h
+index a653f8c..e31b216 100644
+--- a/libdjvu/IFFByteStream.h
++++ b/libdjvu/IFFByteStream.h
+@@ -124,6 +124,7 @@
+
+
+ #include "DjVuGlobal.h"
++#include <stddef.h>
+ #include <stdlib.h>
+ #include <stdio.h>
+ #include <string.h>
+diff --git a/libdjvu/IW44EncodeCodec.cpp b/libdjvu/IW44EncodeCodec.cpp
+index 8d7b12c..49081b7 100644
+--- a/libdjvu/IW44EncodeCodec.cpp
++++ b/libdjvu/IW44EncodeCodec.cpp
+@@ -76,6 +76,7 @@
+ #include "IFFByteStream.h"
+ #include "GRect.h"
+
++#include <stddef.h>
+ #include <stdlib.h>
+ #include <string.h>
+ #include <math.h>
+diff --git a/libdjvu/IW44Image.cpp b/libdjvu/IW44Image.cpp
+index 9476726..4a19fb5 100644
+--- a/libdjvu/IW44Image.cpp
++++ b/libdjvu/IW44Image.cpp
+@@ -76,6 +76,7 @@
+ #include "IFFByteStream.h"
+ #include "GRect.h"
+
++#include <stddef.h>
+ #include <stdlib.h>
+ #include <string.h>
+ #include <math.h>
+diff --git a/libdjvu/JPEGDecoder.h b/libdjvu/JPEGDecoder.h
+index bd430a0..fad1d4c 100644
+--- a/libdjvu/JPEGDecoder.h
++++ b/libdjvu/JPEGDecoder.h
+@@ -64,6 +64,7 @@
+
+ #ifdef NEED_JPEG_DECODER
+
++#include <stddef.h>
+ #include <string.h>
+ #include <setjmp.h>
+
+diff --git a/libdjvu/MMX.cpp b/libdjvu/MMX.cpp
+index 5ab60bb..528dab6 100644
+--- a/libdjvu/MMX.cpp
++++ b/libdjvu/MMX.cpp
+@@ -62,6 +62,7 @@
+
+ #include "MMX.h"
+ #include <stdio.h>
++#include <stddef.h>
+ #include <stdlib.h>
+
+
+diff --git a/libdjvu/UnicodeByteStream.h b/libdjvu/UnicodeByteStream.h
+index 0ae112b..9b49a17 100644
+--- a/libdjvu/UnicodeByteStream.h
++++ b/libdjvu/UnicodeByteStream.h
+@@ -88,6 +88,7 @@
+ #include "GString.h"
+ #include "ByteStream.h"
+
++#include <stddef.h>
+
+ #ifdef HAVE_NAMESPACES
+ namespace DJVU {
+diff --git a/libdjvu/XMLParser.cpp b/libdjvu/XMLParser.cpp
+index 84386c5..7da923a 100644
+--- a/libdjvu/XMLParser.cpp
++++ b/libdjvu/XMLParser.cpp
+@@ -75,6 +75,7 @@
+ #include "debug.h"
+ #include <stdio.h>
+ #include <ctype.h>
++#include <stddef.h>
+ #include <stdlib.h>
+
+
+diff --git a/libdjvu/ZPCodec.cpp b/libdjvu/ZPCodec.cpp
+index f6e971d..ff5b9bf 100644
+--- a/libdjvu/ZPCodec.cpp
++++ b/libdjvu/ZPCodec.cpp
+@@ -66,6 +66,8 @@
+ #include "ZPCodec.h"
+ #include "ByteStream.h"
+ #include "GException.h"
++
++#include <stddef.h>
+ #include <stdlib.h>
+ #include <assert.h>
+ #include <math.h>
+diff --git a/libdjvu/atomic.cpp b/libdjvu/atomic.cpp
+index bdc193e..63fd483 100644
+--- a/libdjvu/atomic.cpp
++++ b/libdjvu/atomic.cpp
+@@ -28,6 +28,7 @@
+ # include "config.h"
+ #endif
+
++#include <stddef.h>
+ #include <stdlib.h>
+ #include <assert.h>
+ #include "atomic.h"
+diff --git a/libdjvu/ddjvuapi.cpp b/libdjvu/ddjvuapi.cpp
+index b18b84b..f40f5aa 100644
+--- a/libdjvu/ddjvuapi.cpp
++++ b/libdjvu/ddjvuapi.cpp
+@@ -60,6 +60,7 @@
+ # pragma implementation "ddjvuapi.h"
+ #endif
+
++#include <stddef.h>
+ #include <stdlib.h>
+ #include <stdio.h>
+ #include <string.h>
+diff --git a/libdjvu/ddjvuapi.h b/libdjvu/ddjvuapi.h
+index d0ed48f..841f223 100644
+--- a/libdjvu/ddjvuapi.h
++++ b/libdjvu/ddjvuapi.h
+@@ -64,6 +64,7 @@ extern "C" {
+ }
+ #endif
+
++#include <stddef.h>
+ #include <stdlib.h>
+ #include <stdio.h>
+
+diff --git a/libdjvu/miniexp.cpp b/libdjvu/miniexp.cpp
+index e0fb087..fc51297 100644
+--- a/libdjvu/miniexp.cpp
++++ b/libdjvu/miniexp.cpp
+@@ -23,6 +23,7 @@
+ # pragma implementation "miniexp.h"
+ #endif
+
++#include <stddef.h>
+ #include <stdlib.h>
+ #include <stdio.h>
+ #include <ctype.h>
+diff --git a/libdjvu/miniexp.h b/libdjvu/miniexp.h
+index 91e345d..993005b 100644
+--- a/libdjvu/miniexp.h
++++ b/libdjvu/miniexp.h
+@@ -38,7 +38,8 @@ extern "C" {
+ #ifndef MINILISPAPI
+ # define MINILISPAPI /**/
+ #endif
+-
++
++#include <stddef.h>
+
+ /* -------------------------------------------------- */
+ /* LISP EXPRESSIONS */
+diff --git a/tools/bzz.cpp b/tools/bzz.cpp
+index ca092e1..2ebc7b9 100644
+--- a/tools/bzz.cpp
++++ b/tools/bzz.cpp
+@@ -94,6 +94,7 @@
+ #include "GURL.h"
+ #include "DjVuMessage.h"
+ #include <locale.h>
++#include <stddef.h>
+ #include <stdlib.h>
+
+ static const char *program = "(unknown)";
+diff --git a/tools/c44.cpp b/tools/c44.cpp
+index 6f23b53..855504b 100644
+--- a/tools/c44.cpp
++++ b/tools/c44.cpp
+@@ -226,6 +226,7 @@
+ #include <locale.h>
+ #include <stdio.h>
+ #include <string.h>
++#include <stddef.h>
+ #include <stdlib.h>
+
+ // command line data
+diff --git a/tools/cjb2.cpp b/tools/cjb2.cpp
+index 8cf89b9..11eb662 100644
+--- a/tools/cjb2.cpp
++++ b/tools/cjb2.cpp
+@@ -120,6 +120,7 @@
+ #include "jb2tune.h"
+
+ #include <locale.h>
++#include <stddef.h>
+ #include <stdlib.h>
+ #if HAVE_TIFF
+ #include <tiffio.h>
+diff --git a/tools/cpaldjvu.cpp b/tools/cpaldjvu.cpp
+index 111cbd3..b640a7a 100644
+--- a/tools/cpaldjvu.cpp
++++ b/tools/cpaldjvu.cpp
+@@ -118,6 +118,7 @@
+ #include "jb2tune.h"
+
+ #include <locale.h>
++#include <stddef.h>
+ #include <stdlib.h>
+ #include <math.h>
+
+diff --git a/tools/csepdjvu.cpp b/tools/csepdjvu.cpp
+index cd721f8..d5203d5 100644
+--- a/tools/csepdjvu.cpp
++++ b/tools/csepdjvu.cpp
+@@ -162,6 +162,7 @@
+ #include "jb2tune.h"
+
+ #include <locale.h>
++#include <stddef.h>
+ #include <stdlib.h>
+
+ #undef MIN
+diff --git a/tools/ddjvu.cpp b/tools/ddjvu.cpp
+index 817e045..981a270 100644
+--- a/tools/ddjvu.cpp
++++ b/tools/ddjvu.cpp
+@@ -62,6 +62,7 @@
+ # include "config.h"
+ #endif
+
++#include <stddef.h>
+ #include <stdlib.h>
+ #include <stdio.h>
+ #include <stdarg.h>
+diff --git a/tools/djvm.cpp b/tools/djvm.cpp
+index 951bd66..6ea88c2 100644
+--- a/tools/djvm.cpp
++++ b/tools/djvm.cpp
+@@ -135,9 +135,9 @@
+ #include "DjVuMessage.h"
+
+ #include <locale.h>
++#include <stddef.h>
+ #include <stdlib.h>
+ #include <stdio.h>
+-#include <stdlib.h>
+
+ static const char * progname;
+
+diff --git a/tools/djvmcvt.cpp b/tools/djvmcvt.cpp
+index 9ca1c54..20b468a 100644
+--- a/tools/djvmcvt.cpp
++++ b/tools/djvmcvt.cpp
+@@ -144,6 +144,7 @@
+
+ #include <locale.h>
+ #include <stdio.h>
++#include <stddef.h>
+ #include <stdlib.h>
+
+ static const char * progname;
+diff --git a/tools/djvudump.cpp b/tools/djvudump.cpp
+index 6a0215a..2dddbdf 100644
+--- a/tools/djvudump.cpp
++++ b/tools/djvudump.cpp
+@@ -119,6 +119,7 @@ xxx
+ #include <locale.h>
+ #include <stdio.h>
+ #include <ctype.h>
++#include <stddef.h>
+ #include <stdlib.h>
+
+ void
+diff --git a/tools/djvuextract.cpp b/tools/djvuextract.cpp
+index 4a9f381..907b99c 100644
+--- a/tools/djvuextract.cpp
++++ b/tools/djvuextract.cpp
+@@ -105,6 +105,7 @@
+ #include "GOS.h"
+ #include "DjVuMessage.h"
+ #include <locale.h>
++#include <stddef.h>
+ #include <stdlib.h>
+
+
+diff --git a/tools/djvumake.cpp b/tools/djvumake.cpp
+index 7020484..4c5fc0f 100644
+--- a/tools/djvumake.cpp
++++ b/tools/djvumake.cpp
+@@ -153,6 +153,7 @@
+
+ #include <locale.h>
+ #include <stdio.h>
++#include <stddef.h>
+ #include <stdlib.h>
+ #include <ctype.h>
+
+diff --git a/tools/djvups.cpp b/tools/djvups.cpp
+index 51aa999..632b832 100644
+--- a/tools/djvups.cpp
++++ b/tools/djvups.cpp
+@@ -57,6 +57,7 @@
+ # include "config.h"
+ #endif
+
++#include <stddef.h>
+ #include <stdlib.h>
+ #include <stdio.h>
+ #include <stdarg.h>
+diff --git a/tools/djvused.cpp b/tools/djvused.cpp
+index de84dcd..687fdca 100644
+--- a/tools/djvused.cpp
++++ b/tools/djvused.cpp
+@@ -61,6 +61,7 @@
+ #endif
+
+ #include <stdio.h>
++#include <stddef.h>
+ #include <stdlib.h>
+ #include <stdarg.h>
+ #include <errno.h>
+diff --git a/tools/djvuserve.cpp b/tools/djvuserve.cpp
+index 19a17da..818fe78 100644
+--- a/tools/djvuserve.cpp
++++ b/tools/djvuserve.cpp
+@@ -73,6 +73,7 @@
+
+ #include <locale.h>
+ #include <stdio.h>
++#include <stddef.h>
+ #include <stdlib.h>
+ #include <sys/stat.h>
+ #include <time.h>
+diff --git a/tools/djvutxt.cpp b/tools/djvutxt.cpp
+index ba2c745..9e9124c 100644
+--- a/tools/djvutxt.cpp
++++ b/tools/djvutxt.cpp
+@@ -61,6 +61,7 @@
+ # include "config.h"
+ #endif
+
++#include <stddef.h>
+ #include <stdlib.h>
+ #include <stdio.h>
+ #include <stdarg.h>
+diff --git a/tools/tiff2pdf.h b/tools/tiff2pdf.h
+index 082f5fb..656dc43 100644
+--- a/tools/tiff2pdf.h
++++ b/tools/tiff2pdf.h
+@@ -22,6 +22,7 @@
+ # endif
+ # if HAVE_TIFF
+ # include <stdio.h>
++# include <stddef.h>
+ # include <stdlib.h>
+ # include <tiff.h>
+ # include <tiffio.h>
+diff --git a/xmltools/djvutoxml.cpp b/xmltools/djvutoxml.cpp
+index 17c769b..b40535e 100644
+--- a/xmltools/djvutoxml.cpp
++++ b/xmltools/djvutoxml.cpp
+@@ -71,6 +71,7 @@
+
+ #include <locale.h>
+ #include <stdio.h>
++#include <stddef.h>
+ #include <stdlib.h>
+ #include <sys/stat.h>
+ #include <assert.h>
+diff --git a/xmltools/djvuxmlparser.cpp b/xmltools/djvuxmlparser.cpp
+index bdc5768..6679a9d 100644
+--- a/xmltools/djvuxmlparser.cpp
++++ b/xmltools/djvuxmlparser.cpp
+@@ -70,6 +70,7 @@
+ #include <stdio.h>
+ #include <ctype.h>
+ #include <locale.h>
++#include <stddef.h>
+ #include <stdlib.h>
+
+ static void
+--
+1.7.4.1
+
+From 3cc41e2a72bbd6d34e81a9a214abbebf41cc00c7 Mon Sep 17 00:00:00 2001
+From: Leon Bottou <leon@bottou.org>
+Date: Sat, 21 May 2011 09:27:17 -0700
+Subject: [PATCH] Added ddjvu option to skip corrupted pages.
+
+---
+ tools/ddjvu.1 | 7 +++++++
+ tools/ddjvu.cpp | 49 +++++++++++++++++++++++++++++++++----------------
+ 2 files changed, 40 insertions(+), 16 deletions(-)
+
+diff --git a/tools/ddjvu.1 b/tools/ddjvu.1
+index 29285c3..7d3d105 100644
+--- a/tools/ddjvu.1
++++ b/tools/ddjvu.1
+@@ -178,6 +178,13 @@ select specific layers of a DjVu image.
+ These modes can fail if the DjVu image does
+ not contain the selected layer.
+ .RE
++.TP
++.BI "-skip"
++Instead of aborting when encountering a corrupted page,
++this option causes
++.BR ddjvu
++to simply skip the corrupted page and continue with the next.
++This is useful for processing certain damaged files.
+
+ .SH RESOLUTION OPTIONS
+ The following options control the resolution of the output image.
+diff --git a/tools/ddjvu.cpp b/tools/ddjvu.cpp
+index 981a270..b9cb038 100644
+--- a/tools/ddjvu.cpp
++++ b/tools/ddjvu.cpp
+@@ -132,6 +132,7 @@ ddjvu_rect_t info_size;
+ ddjvu_rect_t info_segment;
+ const char *inputfilename = 0;
+ const char *outputfilename = 0;
++int flag_skip_corrupted = 0;
+
+ #if HAVE_TIFF2PDF
+ char *tempfilename = 0;
+@@ -164,7 +165,6 @@ handle(int wait)
+ if (msg->m_error.filename)
+ fprintf(stderr,"ddjvu: '%s:%d'\n",
+ msg->m_error.filename, msg->m_error.lineno);
+- exit(10);
+ default:
+ break;
+ }
+@@ -554,8 +554,16 @@ dopage(int pageno)
+ while (! ddjvu_page_decoding_done(page))
+ handle(TRUE);
+ if (ddjvu_page_decoding_error(page))
+- die(i18n("Cannot decode page %d."), pageno);
+-
++ {
++ handle(FALSE);
++ fprintf(stderr,"ddjvu: ");
++ fprintf(stderr,i18n("Cannot decode page %d."), pageno);
++ fprintf(stderr,"\n");
++ if (flag_skip_corrupted)
++ return;
++ else
++ exit(10);
++ }
+ timingdata[1] = ticks();
+ /* Open files */
+ if (flag_format == 't')
+@@ -753,19 +761,20 @@ usage()
+ i18n("DjVu decompression utility\n\n"
+ "Usage: ddjvu [options] [<djvufile> [<outputfile>]]\n\n"
+ "Options:\n"
+- " -verbose Prints various informational messages.\n"
+- " -format=FMT Selects output format: pbm,pgm,ppm,pnm,rle,tiff.\n"
+- " -scale=N Selects display scale.\n"
+- " -size=WxH Selects size of rendered image.\n"
+- " -subsample=N Selects direct subsampling factor.\n"
+- " -aspect=no Authorizes aspect ratio changes\n"
+- " -segment=WxH+X+Y Selects which segment of the rendered image\n"
+- " -mode=black Renders a meaningful bitonal image.\n"
+- " -mode=mask Only renders the mask layer.\n"
+- " -mode=foreground Only renders the foreground layer.\n"
+- " -mode=background Only renders the background layer.\n"
+- " -page=PAGESPEC Selects page(s) to be decoded.\n"
+- " -quality=QUALITY Specifies jpeg quality for lossy tiff output.\n"
++ " -verbose Print various informational messages.\n"
++ " -format=FMT Select output format: pbm,pgm,ppm,pnm,rle,tiff.\n"
++ " -scale=N Select display scale.\n"
++ " -size=WxH Select size of rendered image.\n"
++ " -subsample=N Select direct subsampling factor.\n"
++ " -aspect=no Authorize aspect ratio changes\n"
++ " -segment=WxH+X+Y Select which segment of the rendered image\n"
++ " -mode=black Render a meaningful bitonal image.\n"
++ " -mode=mask Only render the mask layer.\n"
++ " -mode=foreground Only render the foreground layer.\n"
++ " -mode=background Only render the background layer.\n"
++ " -page=PAGESPEC Select page(s) to be decoded.\n"
++ " -skip Skip corrupted pages instead of aborting.\n"
++ " -quality=QUALITY Specify jpeg quality for lossy tiff output.\n"
+ "\n"
+ "If <outputfile> is a single dash or omitted, the decompressed image\n"
+ "is sent to the standard output. If <djvufile> is a single dash or\n"
+@@ -846,6 +855,12 @@ parse_option(int argc, char **argv, int i)
+ die(i18n(errarg), opt);
+ flag_verbose = 1;
+ }
++ if (!strcmp(opt,"skip"))
++ {
++ if (arg)
++ die(i18n(errarg), opt);
++ flag_skip_corrupted = 1;
++ }
+ else if (!strcmp(opt,"scale"))
+ {
+ if (!arg)
+@@ -1012,6 +1027,8 @@ main(int argc, char **argv)
+ die(i18n("Cannot open djvu document '%s'."), inputfilename);
+ while (! ddjvu_document_decoding_done(doc))
+ handle(TRUE);
++ if (ddjvu_document_decoding_error(doc))
++ die(i18n("Cannot decode document."));
+
+ /* Process all pages */
+ i = ddjvu_document_get_pagenum(doc);
+--
+1.7.4.1
+
+From 6a6e6a047b41a431cfc091bd71fcad554fd79437 Mon Sep 17 00:00:00 2001
+From: Leon Bottou <leon@bottou.org>
+Date: Mon, 30 May 2011 18:52:33 -0700
+Subject: [PATCH] Added option -o outputfile to djvudump.
+
+---
+ tools/djvudump.1 | 2 +-
+ tools/djvudump.cpp | 34 +++++++++++++++++++++++++---------
+ 2 files changed, 26 insertions(+), 10 deletions(-)
+
+diff --git a/tools/djvudump.1 b/tools/djvudump.1
+index c86b7d5..e39a318 100644
+--- a/tools/djvudump.1
++++ b/tools/djvudump.1
+@@ -27,7 +27,7 @@
+ djvudump \- Display internal structure of DjVu files.
+
+ .SH SYNOPSIS
+-.BI "djvudump " "djvufiles" "..."
++.BI "djvudump [-o " "outputfile" "] " "djvufiles" "..."
+
+ .SH DESCRIPTION
+ Program
+diff --git a/tools/djvudump.cpp b/tools/djvudump.cpp
+index 2dddbdf..6daaf2c 100644
+--- a/tools/djvudump.cpp
++++ b/tools/djvudump.cpp
+@@ -122,6 +122,9 @@ xxx
+ #include <stddef.h>
+ #include <stdlib.h>
+
++const char *outputfile = 0;
++FILE *outputf = stdout;
++
+ void
+ display(const GURL &url)
+ {
+@@ -134,7 +137,7 @@ display(const GURL &url)
+ obs->seek(0);
+ obs->readall(buf, size);
+ GNativeString ns = str;
+- fputs((const char*)ns, stdout);
++ fputs((const char*)ns, outputf);
+ }
+
+
+@@ -146,7 +149,7 @@ usage()
+ "DJVUDUMP --- DjVuLibre-" DJVULIBRE_VERSION "\n"
+ #endif
+ "Describes DjVu and IFF85 files\n\n"
+- "Usage: djvudump <iff_filenames>\n" );
++ "Usage: djvudump [-o outputfile] <iff_filenames>\n" );
+ exit(1);
+ }
+
+@@ -156,24 +159,37 @@ main(int argc, char **argv)
+ setlocale(LC_ALL,"");
+ setlocale(LC_NUMERIC,"C");
+ djvu_programname(argv[0]);
+- GArray<GUTF8String> dargv(0,argc-1);
++ // get output file name
++ if (argc>2 && !strcmp(argv[1],"-o"))
++ {
++ outputfile = argv[2];
++ argv += 2;
++ argc -= 2;
++ }
++ // convert iff file name
++ GArray<GUTF8String> dargv(0, argc-1);
+ for(int i=0;i<argc;++i)
+ dargv[i]=GNativeString(argv[i]);
++ if (argc <= 1)
++ usage();
++ if (outputfile && !(outputf = fopen(outputfile,"w")))
++ {
++ DjVuPrintErrorUTF8("djvudump: Cannot open output file.\n");
++ exit(1);
++ }
+ G_TRY
+ {
+- if (argc<=1)
+- usage();
+ for (int i=1; i<argc; i++)
+- {
++ {
+ const GURL::Filename::UTF8 url(dargv[i]);
+ display(url);
+- }
++ }
+ }
+ G_CATCH(ex)
+- {
++ {
+ ex.perror();
+ exit(1);
+- }
++ }
+ G_ENDCATCH;
+ return 0;
+ }
+--
+1.7.4.1
+
+From 6db359d1ad5e7e863fac53301e7ff884cfe44423 Mon Sep 17 00:00:00 2001
+From: Bill C Riemers <briemers@redhat.com>
+Date: Thu, 2 Jun 2011 13:17:27 -0400
+Subject: [PATCH] Correct error copying an error in the annotation class of assigning a tempory
+ GUTF8String directly to a const char *.
+
+---
+ libdjvu/DjVuAnno.cpp | 3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+diff --git a/libdjvu/DjVuAnno.cpp b/libdjvu/DjVuAnno.cpp
+index 6ca5b4e..e2a9108 100644
+--- a/libdjvu/DjVuAnno.cpp
++++ b/libdjvu/DjVuAnno.cpp
+@@ -261,7 +261,8 @@ GLObject::print(ByteStream & str, int compact, int indent, int * cur_pos) const
+ to_print=buffer.format("%d",number);
+ break;
+ case STRING:
+- to_print=make_c_string(string);
++ buffer=make_c_string(string);
++ to_print=(const char *)buffer;
+ break;
+ case SYMBOL:
+ to_print=buffer.format("%s",(const char *)symbol);
+--
+1.7.4.1
+
+From 2b26415c3c46ffb7532ca250990668564be62d39 Mon Sep 17 00:00:00 2001
+From: Leon Bottou <leon@bottou.org>
+Date: Thu, 2 Jun 2011 09:48:49 -0700
+Subject: [PATCH] Corrected polarity of xmp annotation saving
+
+---
+ libdjvu/DjVuAnno.cpp | 19 ++++++++++---------
+ 1 files changed, 10 insertions(+), 9 deletions(-)
+
+diff --git a/libdjvu/DjVuAnno.cpp b/libdjvu/DjVuAnno.cpp
+index e2a9108..8e16dd8 100644
+--- a/libdjvu/DjVuAnno.cpp
++++ b/libdjvu/DjVuAnno.cpp
+@@ -254,25 +254,24 @@ GLObject::print(ByteStream & str, int compact, int indent, int * cur_pos) const
+ if (!cur_pos) { cur_pos = &local_cur_pos; }
+
+ GUTF8String buffer;
+- const char * to_print=0;
+ switch(type)
+ {
+ case NUMBER:
+- to_print=buffer.format("%d",number);
++ buffer.format("%d",number);
+ break;
+ case STRING:
+- buffer=make_c_string(string);
+- to_print=(const char *)buffer;
++ buffer = make_c_string(string);
+ break;
+ case SYMBOL:
+- to_print=buffer.format("%s",(const char *)symbol);
++ buffer.format("%s",(const char *)symbol);
+ break;
+ case LIST:
+- to_print=buffer.format("(%s",(const char *)name);
++ buffer.format("(%s",(const char *)name);
+ break;
+ case INVALID:
+ break;
+ }
++ const char * to_print = (const char*)buffer;
+ if (!compact && *cur_pos+strlen(to_print)>70)
+ {
+ char ch='\n';
+@@ -1375,7 +1374,7 @@ DjVuANT::encode_raw(void) const
+ }
+ //*** XMP Metadata
+ del_all_items(XMP_TAG, parser);
+- if (!xmpmetadata)
++ if (!!xmpmetadata)
+ {
+ GUTF8String mdatabuffer("(");
+ mdatabuffer += XMP_TAG;
+@@ -1385,8 +1384,10 @@ DjVuANT::encode_raw(void) const
+ //*** Mapareas
+ del_all_items(GMapArea::MAPAREA_TAG, parser);
+ for(GPosition pos=map_areas;pos;++pos)
+- parser.parse(map_areas[pos]->print());
+-
++ {
++ GUTF8String mapareabuffer = map_areas[pos]->print();
++ parser.parse(mapareabuffer);
++ }
+ GP<ByteStream> gstr=ByteStream::create();
+ ByteStream &str=*gstr;
+ parser.print(str, 1);
+--
+1.7.4.1
+
+From 65600b5801d11ff8ca8db3a25bf004fc06f4515b Mon Sep 17 00:00:00 2001
+From: Leon Bottou <leon@bottou.org>
+Date: Sat, 4 Jun 2011 15:29:18 -0700
+Subject: [PATCH] Eliminate warnings with gcc-4.6.0
+
+---
+ libdjvu/Arrays.cpp | 2 -
+ libdjvu/DjVuDocEditor.cpp | 37 +++++++++----------
+ libdjvu/GString.cpp | 44 ++++++++--------------
+ libdjvu/JPEGDecoder.cpp | 2 -
+ libdjvu/XMLParser.cpp | 7 +---
+ tools/ddjvu.cpp | 2 +-
+ tools/jb2cmp/patterns.cpp | 87 +-------------------------------------------
+ tools/tiff2pdf.c | 9 ++---
+ 8 files changed, 40 insertions(+), 150 deletions(-)
+
+diff --git a/libdjvu/Arrays.cpp b/libdjvu/Arrays.cpp
+index c4f74ca..6c7f23a 100644
+--- a/libdjvu/Arrays.cpp
++++ b/libdjvu/Arrays.cpp
+@@ -239,9 +239,7 @@ ArrayRep::ins(int n, const void * what, unsigned int howmany)
+ copy(ndata, lobound-minlo, hibound-minlo,
+ data, lobound-minlo, hibound-minlo);
+ destroy(data, lobound-minlo, hibound-minlo);
+- void *tmp=data;
+ data=ndata;
+- tmp=data;
+ maxhi = nmaxhi;
+ }
+
+diff --git a/libdjvu/DjVuDocEditor.cpp b/libdjvu/DjVuDocEditor.cpp
+index 2247e40..f1d8b0d 100644
+--- a/libdjvu/DjVuDocEditor.cpp
++++ b/libdjvu/DjVuDocEditor.cpp
+@@ -555,27 +555,24 @@ DjVuDocEditor::insert_file(const GURL &file_url, bool is_page,
+ can_compress_flag);
+ }
+
+- // Oh. It does exist... Check that it has IFF structure
++ // Oh. It does exist... Check that it has IFF structure
+ {
+- const GP<IFFByteStream> giff(
+- IFFByteStream::create(file_pool->get_stream()));
+- IFFByteStream &iff=*giff;
+- GUTF8String chkid;
+-
+- int length;
+- length=iff.get_chunk(chkid);
+- if (chkid!="FORM:DJVI" && chkid!="FORM:DJVU" &&
+- chkid!="FORM:BM44" && chkid!="FORM:PM44")
+- G_THROW( ERR_MSG("DjVuDocEditor.not_1_page") "\t"+file_url.get_string());
+-
+- // Wonderful. It's even a DjVu file. Scan for NDIR chunks.
+- // If NDIR chunk is found, ignore the file
+- while(iff.get_chunk(chkid))
+- {
+- if (chkid=="NDIR")
+- return false;
+- iff.close_chunk();
+- }
++ const GP<IFFByteStream> giff(
++ IFFByteStream::create(file_pool->get_stream()));
++ IFFByteStream &iff=*giff;
++ GUTF8String chkid;
++ if (chkid!="FORM:DJVI" && chkid!="FORM:DJVU" &&
++ chkid!="FORM:BM44" && chkid!="FORM:PM44")
++ G_THROW( ERR_MSG("DjVuDocEditor.not_1_page") "\t"
++ + file_url.get_string());
++ // Wonderful. It's even a DjVu file. Scan for NDIR chunks.
++ // If NDIR chunk is found, ignore the file
++ while(iff.get_chunk(chkid))
++ {
++ if (chkid=="NDIR")
++ return false;
++ iff.close_chunk();
++ }
+ }
+ return insert_file(file_pool,file_url,is_page,file_pos,name2id,source);
+ }
+diff --git a/libdjvu/GString.cpp b/libdjvu/GString.cpp
+index 350b11b..ed92a7f 100644
+--- a/libdjvu/GString.cpp
++++ b/libdjvu/GString.cpp
+@@ -643,26 +643,22 @@ GBaseString::UTF8ToNative(
+ const char *source=(*this);
+ GP<GStringRep> retval;
+ if(source && source[0])
+- {
+-#if DO_CHANGELOCALE
+- GUTF8String lc_ctype(setlocale(LC_CTYPE,0));
+-#endif
+- bool repeat;
+- for(repeat=!currentlocale;;repeat=false)
+ {
+- retval=(*this)->toNative((GStringRep::EscapeMode)escape);
+ #if DO_CHANGELOCALE
+- if (!repeat || retval || (lc_ctype == setlocale(LC_CTYPE,"")))
++ GUTF8String lc_ctype(setlocale(LC_CTYPE,0));
++ bool repeat;
++ for(repeat=!currentlocale;;repeat=false)
++ {
+ #endif
+- break;
+- }
++ retval=(*this)->toNative((GStringRep::EscapeMode)escape);
+ #if DO_CHANGELOCALE
+- if(!repeat)
+- {
++ if (!repeat || retval || (lc_ctype == setlocale(LC_CTYPE,"")))
++ break;
++ }
++ if(!repeat)
+ setlocale(LC_CTYPE,(const char *)lc_ctype);
+- }
+ #endif
+- }
++ }
+ return GNativeString(retval);
+ }
+
+@@ -697,27 +693,19 @@ GBaseString::NativeToUTF8(void) const
+ const char *source=(*this);
+ #if DO_CHANGELOCALE
+ GUTF8String lc_ctype=setlocale(LC_CTYPE,0);
+-#endif
+ bool repeat;
+ for(repeat=true;;repeat=false)
+- {
+- if( (retval=GStringRep::NativeToUTF8(source)) )
+ {
+- if(GStringRep::cmp(retval->toNative(),source))
+- {
+- retval=GStringRep::UTF8::create((unsigned int)0);
+- }
+- }
+-#if DO_CHANGELOCALE
+- if(!repeat || retval || (lc_ctype == setlocale(LC_CTYPE,"")))
+ #endif
+- break;
+- }
++ if( (retval=GStringRep::NativeToUTF8(source)) )
++ if(GStringRep::cmp(retval->toNative(),source))
++ retval=GStringRep::UTF8::create((unsigned int)0);
+ #if DO_CHANGELOCALE
++ if(!repeat || retval || (lc_ctype == setlocale(LC_CTYPE,"")))
++ break;
++ }
+ if(!repeat)
+- {
+ setlocale(LC_CTYPE,(const char *)lc_ctype);
+- }
+ #endif
+ }
+ return GUTF8String(retval);
+diff --git a/libdjvu/JPEGDecoder.cpp b/libdjvu/JPEGDecoder.cpp
+index cb7aa97..f22f77a 100644
+--- a/libdjvu/JPEGDecoder.cpp
++++ b/libdjvu/JPEGDecoder.cpp
+@@ -153,7 +153,6 @@ JPEGDecoder::decode(ByteStream & bs,GPixmap &pix)
+
+ JSAMPARRAY buffer; /* Output row buffer */
+ int row_stride; /* physical row width in output buffer */
+- int full_buf_size;
+ int isGrey,i;
+
+ cinfo.err = jpeg_std_error(&jerr.pub);
+@@ -184,7 +183,6 @@ JPEGDecoder::decode(ByteStream & bs,GPixmap &pix)
+
+ /* JSAMPLEs per row in output buffer */
+ row_stride = cinfo.output_width * cinfo.output_components;
+- full_buf_size = row_stride * cinfo.output_height;
+
+ /* Make a one-row-high sample array that will go away when done with image */
+ buffer = (*cinfo.mem->alloc_sarray)
+diff --git a/libdjvu/XMLParser.cpp b/libdjvu/XMLParser.cpp
+index 7da923a..026b27d 100644
+--- a/libdjvu/XMLParser.cpp
++++ b/libdjvu/XMLParser.cpp
+@@ -646,17 +646,12 @@ lt_XMLParser::Impl::parse(const lt_XMLTags &tags, GURL *pdjvufile)
+ GPosition datapos=args.contains("data");
+ if(datapos)
+ {
+- bool isDjVuType=false;
+ GPosition typePos(args.contains("type"));
+ if(typePos)
+- {
+- if(args[typePos] != mimetype)
+ {
+- // DjVuPrintErrorUTF8("Ignoring %s Object tag\n",mimetype);
++ if(args[typePos] != mimetype)
+ continue;
+ }
+- isDjVuType=true;
+- }
+ const GURL url = (pdjvufile) ? *pdjvufile
+ : GURL::UTF8(args[datapos],
+ (args[datapos][0] == '/') ? codebase.base() : codebase);
+diff --git a/tools/ddjvu.cpp b/tools/ddjvu.cpp
+index b9cb038..3b4ce16 100644
+--- a/tools/ddjvu.cpp
++++ b/tools/ddjvu.cpp
+@@ -855,7 +855,7 @@ parse_option(int argc, char **argv, int i)
+ die(i18n(errarg), opt);
+ flag_verbose = 1;
+ }
+- if (!strcmp(opt,"skip"))
++ else if (!strcmp(opt,"skip"))
+ {
+ if (arg)
+ die(i18n(errarg), opt);
+diff --git a/tools/jb2cmp/patterns.cpp b/tools/jb2cmp/patterns.cpp
+index e456902..b31cf4e 100644
+--- a/tools/jb2cmp/patterns.cpp
++++ b/tools/jb2cmp/patterns.cpp
+@@ -303,11 +303,8 @@ static int32 distance_by_pixeldiff_functions(Image *i1, Image *i2,
+ int32 (*compare_row)(byte *, byte *, int32),
+ int32 (*compare_with_white)(byte *, int32), int32 ceiling)
+ {
+- byte **p1, **p2;
+ int32 w1, w2, h1, h2;
+ int32 shift_x, shift_y; /* of i1's coordinate system with respect to i2 */
+- /*int32 s = 0, i, i_start, i_cap;
+- int32 right_margin_start, right_margin_width;*/
+
+ /* make i1 to be narrower than i2 */
+ if (i1->width > i2->width)
+@@ -317,8 +314,8 @@ static int32 distance_by_pixeldiff_functions(Image *i1, Image *i2,
+ i2 = img;
+ }
+
+- w1 = i1->width; h1 = i1->height; p1 = i1->pixels;
+- w2 = i2->width; h2 = i2->height; p2 = i2->pixels;
++ w1 = i1->width; h1 = i1->height;
++ w2 = i2->width; h2 = i2->height;
+
+ /* (shift_x, shift_y) */
+ /* is what should be added to i1's coordinates to get i2's coordinates. */
+@@ -339,86 +336,6 @@ static int32 distance_by_pixeldiff_functions(Image *i1, Image *i2,
+
+ return distance_by_pixeldiff_functions_by_shift(
+ i1, i2, compare_row, compare_with_white, ceiling, shift_x, shift_y);
+-
+-/* FIXME */
+-#if 0
+- /* Compute difference in the non-overlapping top margin */
+-
+- if (shift_y < 0)
+- {
+- /* i1 has top rows not covered by i2 */
+- i_cap = -shift_y;
+- for (i = 0; i < i_cap; i++)
+- {
+- assert(i >= 0 && i < h1);
+- s += compare_with_white(p1[i], w1);
+- if (s > ceiling) return maxint;
+- }
+- i_start = i_cap; /* topmost overlapping row in i1's coords */
+- }
+- else
+- {
+- /* i2 has top rows not covered by i1 */
+- for (i = 0; i < shift_y; i++)
+- {
+- assert(i >= 0 && i < h2);
+- s += compare_with_white(p2[i], w2);
+- if (s > ceiling) return maxint;
+- }
+- i_start = 0;
+- }
+-
+- /* Compute difference in the overlapping area */
+-
+- i_cap = h2 - shift_y;
+- if (h1 < i_cap) i_cap = h1;
+-
+- right_margin_start = shift_x + w1;
+- right_margin_width = w2 - right_margin_start;
+-
+- for (i = i_start; i < i_cap; i++) /* i is a coordinate in i1 system */
+- {
+- int32 y = i + shift_y; /* same row coordinate in i2 system */
+- assert(y >= 0 && y < h2);
+- s += compare_with_white(p2[y], shift_x);
+- if (s > ceiling) return maxint;
+- assert(i >= 0 && i < h1);
+- assert(shift_x + w1 <= w2);
+- assert(i < h1);
+- s += compare_row(p2[y] + shift_x, p1[i], w1);
+- if (s > ceiling) return maxint;
+- s += compare_with_white(p2[y] + right_margin_start, right_margin_width);
+- if (s > ceiling) return maxint;
+- }
+-
+-
+- /* Compute difference in the non-overlapping bottom margin */
+-
+- if (i_cap == h1)
+- {
+- /* i2 has bottom rows not covered by i1 */
+- i_start = i_cap + shift_y;
+- for (i = i_start; i < h2; i++)
+- {
+- assert(i >= 0 && i < h2);
+- s += compare_with_white(p2[i], w2);
+- if (s > ceiling) return maxint;
+- }
+- }
+- else
+- {
+- /* i1 has bottom rows not covered by i2 */
+- i_start = i_cap;
+- for (i = i_cap; i < h1; i++)
+- {
+- assert(i >= 0 && i < h1);
+- s += compare_with_white(p1[i], w1);
+- if (s > ceiling) return maxint;
+- }
+- }
+-
+- return s;
+-#endif
+ }
+
+ #endif
+diff --git a/tools/tiff2pdf.c b/tools/tiff2pdf.c
+index 36949f1..2db8703 100644
+--- a/tools/tiff2pdf.c
++++ b/tools/tiff2pdf.c
+@@ -721,7 +721,6 @@ tiff2pdf(TIFF *input, FILE *outputfile, int argc, const char **argv)
+ const char *outfilename = "<null>";
+ T2P *t2p = NULL;
+ TIFF *output = NULL;
+- tsize_t written=0;
+ int c;
+
+ /* T2P */
+@@ -874,7 +873,7 @@ tiff2pdf(TIFF *input, FILE *outputfile, int argc, const char **argv)
+ TIFFSeekFile(output, (toff_t) 0, SEEK_SET);
+
+ /* Write */
+- written = t2p_write_pdf(t2p, input, output);
++ t2p_write_pdf(t2p, input, output);
+ if(t2p->t2p_error != 0){
+ TIFFError(TIFF2PDF_MODULE, "An error occurred creating output PDF file");
+ goto fail;
+@@ -2633,7 +2632,6 @@ static tsize_t t2p_readwrite_pdf_image_tile(T2P* t2p, TIFF* input, TIFF* output,
+ tsize_t read=0;
+ uint16 i=0;
+ ttile_t tilecount=0;
+- tsize_t tilesize=0;
+ ttile_t septilecount=0;
+ tsize_t septilesize=0;
+ #ifdef JPEG_SUPPORT
+@@ -2819,7 +2817,6 @@ static tsize_t t2p_readwrite_pdf_image_tile(T2P* t2p, TIFF* input, TIFF* output,
+ if(t2p->pdf_sample == T2P_SAMPLE_PLANAR_SEPARATE_TO_CONTIG){
+ septilesize=TIFFTileSize(input);
+ septilecount=TIFFNumberOfTiles(input);
+- tilesize=septilesize*t2p->tiff_samplesperpixel;
+ tilecount=septilecount/t2p->tiff_samplesperpixel;
+ buffer = (unsigned char*) _TIFFmalloc(t2p->tiff_datasize);
+ if(buffer==NULL){
+@@ -3802,7 +3799,6 @@ static tsize_t t2p_write_pdf_info(T2P* t2p, TIFF* input, TIFF* output){
+ tsize_t written=0;
+ char* info;
+ char buffer[512];
+- int buflen=0;
+
+ if(t2p->pdf_datetime==NULL){
+ t2p_pdf_tifftime(t2p, input);
+@@ -3815,7 +3811,8 @@ static tsize_t t2p_write_pdf_info(T2P* t2p, TIFF* input, TIFF* output){
+ }
+ written += TIFFWriteFile(output, (tdata_t) "\r/Producer ", 11);
+ _TIFFmemset((tdata_t)buffer, 0x00, 512);
+- buflen=sprintf(buffer, "libtiff / tiff2pdf - %d / %s", TIFFLIB_VERSION, T2P_VERSION);
++ sprintf(buffer, "libtiff / tiff2pdf - %d / %s",
++ TIFFLIB_VERSION, T2P_VERSION);
+ written += t2p_write_pdf_string(buffer, output);
+ written += TIFFWriteFile(output, (tdata_t) "\r", 1);
+ if(t2p->pdf_creator != NULL){
+--
+1.7.4.1
+
+From 5b3d074c2b315e7339ce279c559c3a99f26bef6a Mon Sep 17 00:00:00 2001
+From: Leon Bottou <leon@bottou.org>
+Date: Sat, 4 Jun 2011 17:37:00 -0700
+Subject: [PATCH] Fix MMX code when using gcc-4.6
+
+Fix MMX macros
+Enable MMX on x86_64
+---
+ libdjvu/MMX.cpp | 17 ++++++++++++++++-
+ libdjvu/MMX.h | 11 ++++++-----
+ tools/ddjvu.cpp | 1 -
+ 3 files changed, 22 insertions(+), 7 deletions(-)
+
+diff --git a/libdjvu/MMX.cpp b/libdjvu/MMX.cpp
+index 528dab6..e70fdd8 100644
+--- a/libdjvu/MMX.cpp
++++ b/libdjvu/MMX.cpp
+@@ -167,8 +167,23 @@ MMXControl::enable_mmx()
+ : "=m" (cpuflags) :
+ : "eax","ecx","edx");
+ #endif
++#if defined(MMX) && defined(__GNUC__) && defined(__x86_64__)
++ // Detection of MMX for GCC
++ __asm__ volatile (// Check that CR0:EM is clear
++ "xorl %%edx,%%edx\n\t"
++ "smsw %%ax\n\t"
++ "andl $4,%%eax\n\t"
++ "jnz 1f\n\t"
++ // Execute CPUID
++ "movl $1,%%eax\n\t"
++ "cpuid\n"
++ // Finish
++ "1:\tmovl %%edx, %0"
++ : "=m" (cpuflags) :
++ : "eax","ebx","ecx","edx");
++#endif
+ #if defined(MMX) && defined(_MSC_VER) && defined(_M_IX86)
+- // Detection of MMX for MSVC
++ // Detection of MMX for MSVC 32 bits
+ __asm { pushfd
+ pop ecx
+ xor edx,edx
+diff --git a/libdjvu/MMX.h b/libdjvu/MMX.h
+index b0af5e5..f8780af 100644
+--- a/libdjvu/MMX.h
++++ b/libdjvu/MMX.h
+@@ -143,17 +143,18 @@ class MMXControl
+
+ #ifndef NO_MMX
+
+-#if defined(__GNUC__) && defined(__i386__)
++#if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
++typedef struct{ char c[8]; } MMX_t;
+ #define MMXemms \
+ __asm__ volatile("emms" : : : "memory" )
+ #define MMXrr(op,src,dst) \
+- __asm__ volatile( #op " %%" #src ",%%" #dst : : : "memory")
++ __asm__ volatile( #op " %%" #src ",%%" #dst : : : "memory" )
+ #define MMXir(op,imm,dst) \
+- __asm__ volatile( #op " %0,%%" #dst : : "i" (imm) : "memory")
++ __asm__ volatile( #op " %0,%%" #dst : : "i" (imm) : "memory" )
+ #define MMXar(op,addr,dst) \
+- __asm__ volatile( #op " %0,%%" #dst : : "m" (*(addr)) : "memory")
++ __asm__ volatile( #op " %0,%%" #dst : : "m" (*(MMX_t*)(addr)) : "memory" )
+ #define MMXra(op,src,addr) \
+- __asm__ volatile( #op " %%" #src ",%0" : : "m" (*(addr)) : "memory")
++ __asm__ volatile( #op " %%" #src ",%0" : "=m" (*(MMX_t*)(addr)) : : "memory")
+ #define MMX 1
+ #endif
+
+diff --git a/tools/ddjvu.cpp b/tools/ddjvu.cpp
+index 3b4ce16..216c6cb 100644
+--- a/tools/ddjvu.cpp
++++ b/tools/ddjvu.cpp
+@@ -846,7 +846,6 @@ parse_option(int argc, char **argv, int i)
+ arg = opt;
+ opt = "subsample";
+ }
+-
+ /* Parse options */
+ if (!strcmp(opt,"v") ||
+ !strcmp(opt,"verbose"))
+--
+1.7.4.1
+
+From fbed8e51e5970b12ce36afb0dec8c4e02992c0f8 Mon Sep 17 00:00:00 2001
+From: Leon Bottou <leon@bottou.org>
+Date: Thu, 9 Jun 2011 14:37:52 -0700
+Subject: [PATCH] Fixed regression in djvm.
+
+---
+ libdjvu/DjVuDocEditor.cpp | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+diff --git a/libdjvu/DjVuDocEditor.cpp b/libdjvu/DjVuDocEditor.cpp
+index f1d8b0d..baeb7dd 100644
+--- a/libdjvu/DjVuDocEditor.cpp
++++ b/libdjvu/DjVuDocEditor.cpp
+@@ -561,6 +561,7 @@ DjVuDocEditor::insert_file(const GURL &file_url, bool is_page,
+ IFFByteStream::create(file_pool->get_stream()));
+ IFFByteStream &iff=*giff;
+ GUTF8String chkid;
++ iff.get_chunk(chkid);
+ if (chkid!="FORM:DJVI" && chkid!="FORM:DJVU" &&
+ chkid!="FORM:BM44" && chkid!="FORM:PM44")
+ G_THROW( ERR_MSG("DjVuDocEditor.not_1_page") "\t"
+--
+1.7.4.1
+
+From f63327438954b8831a1a9f43afc8b6d16e1d3baf Mon Sep 17 00:00:00 2001
+From: Leon Bottou <leon@bottou.org>
+Date: Wed, 15 Jun 2011 00:05:50 -0700
+Subject: [PATCH] Encode oblique text as separate lines.
+
+---
+ tools/csepdjvu.cpp | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/tools/csepdjvu.cpp b/tools/csepdjvu.cpp
+index d5203d5..08f7a27 100644
+--- a/tools/csepdjvu.cpp
++++ b/tools/csepdjvu.cpp
+@@ -1288,7 +1288,7 @@ Comments::textmark(GP<TxtMark> mark)
+ int shx = (mark->x - lastx) * 100 / fontsize;
+ int shy = (mark->y - lasty) * 100 / fontsize;
+ int inter = dirx * shx + diry * shy;
+- if ( (dirx == lastdirx) && (diry == lastdiry) &&
++ if ( (dirx || diry) && (dirx == lastdirx) && (diry == lastdiry) &&
+ (inter > -150) && (inter < 300) &&
+ abs(diry * shx + dirx * shy) < 80 )
+ mark->inter = inter;
+--
+1.7.4.1
+
+From ea9fd2acab2e298ba721eb79f5026d34e6ef141f Mon Sep 17 00:00:00 2001
+From: Barak A. Pearlmutter <barak+git@cs.nuim.ie>
+Date: Wed, 22 Jun 2011 11:21:41 +0100
+Subject: [PATCH] consistent prototype for ddjvu_anno_get_xmp
+
+---
+ libdjvu/ddjvuapi.h | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/libdjvu/ddjvuapi.h b/libdjvu/ddjvuapi.h
+index 841f223..14b63eb 100644
+--- a/libdjvu/ddjvuapi.h
++++ b/libdjvu/ddjvuapi.h
+@@ -1619,7 +1619,7 @@ ddjvu_anno_get_metadata(miniexp_t annotations, miniexp_t key);
+ Returns zero if no such key is present. */
+
+ DDJVUAPI const char *
+-ddjvu_anno_get_xmp(miniexp_t annotations, miniexp_t xmp);
++ddjvu_anno_get_xmp(miniexp_t annotations);
+
+
+ /* -------------------------------------------------- */
+--
+1.7.4.1
+
+From 701d1261493e175955aac97921949f4e4241750d Mon Sep 17 00:00:00 2001
+From: Leon Bottou <leon@bottou.org>
+Date: Sun, 11 Sep 2011 09:59:26 -0700
+Subject: [PATCH] Fixed typo in man page.
+
+---
+ tools/ddjvu.1 | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/tools/ddjvu.1 b/tools/ddjvu.1
+index 7d3d105..cbb8307 100644
+--- a/tools/ddjvu.1
++++ b/tools/ddjvu.1
+@@ -66,7 +66,7 @@ and
+ .BR "ppm"
+ respectively produce a Portable Bitmap (PBM),
+ Portable Graymap (PGM),
+-or Portable Pixmap (PGM) file.
++or Portable Pixmap (PPM) file.
+ Format
+ .B "pnm"
+ produces a PBM, PGM, or PPM
+--
+1.7.4.1
+
diff --git a/testing/dvdauthor/PKGBUILD b/testing/dvdauthor/PKGBUILD
new file mode 100644
index 000000000..cafc5ca9d
--- /dev/null
+++ b/testing/dvdauthor/PKGBUILD
@@ -0,0 +1,35 @@
+# $Id: PKGBUILD 148083 2012-01-30 18:45:17Z ibiru $
+# 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=4
+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"
+ 'dvdauthor-0.7.0-libpng15.patch')
+md5sums=('33a447fb98ab3293ac40f869eedc17ff'
+ '9ea90bbea6adb0469c8c1b2f7d033f11')
+
+build() {
+ cd "${srcdir}/${pkgname}"
+
+ patch -Np0 -i "${srcdir}/dvdauthor-0.7.0-libpng15.patch"
+
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}"
+
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/testing/dvdauthor/dvdauthor-0.7.0-libpng15.patch b/testing/dvdauthor/dvdauthor-0.7.0-libpng15.patch
new file mode 100644
index 000000000..2bb636380
--- /dev/null
+++ b/testing/dvdauthor/dvdauthor-0.7.0-libpng15.patch
@@ -0,0 +1,19 @@
+--- src/spuunmux.c
++++ src/spuunmux.c
+@@ -39,6 +39,7 @@
+ #include <netinet/in.h>
+
+ #include <png.h>
++#include <zlib.h>
+
+ #include "rgb.h"
+ #include "common.h"
+@@ -610,7 +611,7 @@
+ png_destroy_write_struct(&png_ptr, (png_infopp)NULL);
+ return -1;
+ } /*if*/
+- if (setjmp(png_ptr->jmpbuf))
++ if (setjmp(png_jmpbuf(png_ptr)))
+ {
+ png_destroy_write_struct(&png_ptr, &info_ptr);
+ fclose(fp);
diff --git a/testing/emacs/PKGBUILD b/testing/emacs/PKGBUILD
new file mode 100644
index 000000000..a8f2f3654
--- /dev/null
+++ b/testing/emacs/PKGBUILD
@@ -0,0 +1,48 @@
+# $Id: PKGBUILD 148085 2012-01-30 18:45:21Z ibiru $
+# Maintainer: Juergen Hoetzel <juergen@archlinux.org>
+# Contributor: Renchi Raju <renchi@green.tam.uiuc.edu>
+
+pkgname=emacs
+_majorver=23.3
+_minorver=b
+# We want something like "23.3.a" so pacman version comparison works, but
+# upstream uses "23.3a", which is a bit silly and interpreted as alpha.
+pkgver=$_majorver.$_minorver
+_realver=$_majorver$_minorver
+pkgrel=2
+pkgdesc="The extensible, customizable, self-documenting real-time display editor"
+arch=('i686' 'x86_64')
+url="http://www.gnu.org/software/emacs/emacs.html"
+license=('GPL3')
+depends=('librsvg' 'gpm' 'giflib' 'libxpm' 'gtk2' 'hicolor-icon-theme' 'gconf' 'desktop-file-utils' 'alsa-lib')
+install=emacs.install
+source=(ftp://ftp.gnu.org/gnu/emacs/$pkgname-$_realver.tar.bz2{,.sig} emacs-subversion17.patch)
+md5sums=('917ce0054ef63773078a6e99b55df1ee'
+ '4f987fbb906c0ee73e05904b0f7ce5ec'
+ '12e2e7a66df5cc5ded54e1d30083a1fb')
+
+build() {
+ cd "$srcdir"/$pkgname-$_majorver
+ patch -p1 -i ../emacs-subversion17.patch
+ ./configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib \
+ --localstatedir=/var --with-x-toolkit=gtk --with-xft
+ make
+}
+
+package() {
+ cd "$srcdir"/$pkgname-$_majorver
+ make DESTDIR="$pkgdir" install
+
+ # remove conflict with ctags package
+ mv "$pkgdir"/usr/bin/{ctags,ctags.emacs}
+ mv "$pkgdir"/usr/share/man/man1/{ctags.1,ctags.emacs.1}
+ # fix all the 777 perms on directories
+ find "$pkgdir"/usr/share/emacs/$_majorver -type d -exec chmod 755 {} \;
+ # fix user/root permissions on usr/share files
+ find "$pkgdir"/usr/share/emacs/$_majorver -exec chown root:root {} \;
+ # fix perms on /var/games
+ chmod 775 "$pkgdir"/var/games
+ chmod 775 "$pkgdir"/var/games/emacs
+ chmod 664 "$pkgdir"/var/games/emacs/*
+ chown -R root:games "$pkgdir"/var/games
+}
diff --git a/testing/emacs/emacs-subversion17.patch b/testing/emacs/emacs-subversion17.patch
new file mode 100644
index 000000000..e7969de81
--- /dev/null
+++ b/testing/emacs/emacs-subversion17.patch
@@ -0,0 +1,83 @@
+From d7afd9288e22c466b63c27e7e11783589b07aeff Mon Sep 17 00:00:00 2001
+From: Karl Pflästerer <k@rl.pflaesterer.de>
+Date: Sat, 12 Feb 2011 01:12:53 +0000
+Subject: Adapt to Subversion change, with no .svn directory in each sub directory.
+
+http://lists.gnu.org/archive/html/emacs-devel/2011-02/msg00357.html
+
+* vc/vc-svn.el (vc-svn-registered): Use vc-svn-root.
+(vc-svn-root): New function. Make vc-svn-responsible-p an alias.
+(vc-svn-repository-hostname): Use "svn info".
+---
+(limited to 'lisp/vc/vc-svn.el')
+
+diff --git a/lisp/vc/vc-svn.el b/lisp/vc/vc-svn.el
+index aefef50..20c7689 100644
+--- a/lisp/vc-svn.el
++++ b/lisp/vc-svn.el
+@@ -117,17 +117,13 @@ If you want to force an empty list of arguments, use t."
+ ;;;###autoload (getenv "SVN_ASP_DOT_NET_HACK"))
+ ;;;###autoload "_svn")
+ ;;;###autoload (t ".svn"))))
+-;;;###autoload (when (file-readable-p (expand-file-name
+-;;;###autoload (concat admin-dir "/entries")
+-;;;###autoload (file-name-directory f)))
++;;;###autoload (when (vc-find-root f admin-dir)
+ ;;;###autoload (load "vc-svn")
+ ;;;###autoload (vc-svn-registered f))))
+
+ (defun vc-svn-registered (file)
+ "Check if FILE is SVN registered."
+- (when (file-readable-p (expand-file-name (concat vc-svn-admin-directory
+- "/entries")
+- (file-name-directory file)))
++ (when (vc-svn-root file)
+ (with-temp-buffer
+ (cd (file-name-directory file))
+ (let* (process-file-side-effects
+@@ -275,14 +271,12 @@ Passes either `vc-svn-register-switches' or `vc-register-switches'
+ to the SVN command."
+ (apply 'vc-svn-command nil 0 files "add" (vc-switches 'SVN 'register)))
+
+-(defun vc-svn-responsible-p (file)
+- "Return non-nil if SVN thinks it is responsible for FILE."
+- (file-directory-p (expand-file-name vc-svn-admin-directory
+- (if (file-directory-p file)
+- file
+- (file-name-directory file)))))
++(defun vc-svn-root (file)
++ (vc-find-root file vc-svn-admin-directory))
+
+-(defalias 'vc-svn-could-register 'vc-svn-responsible-p
++(defalias 'vc-svn-responsible-p 'vc-svn-root)
++
++(defalias 'vc-svn-could-register 'vc-svn-root
+ "Return non-nil if FILE could be registered in SVN.
+ This is only possible if SVN is responsible for FILE's directory.")
+
+@@ -594,20 +588,10 @@ and that it passes `vc-svn-global-switches' to it before FLAGS."
+
+ (defun vc-svn-repository-hostname (dirname)
+ (with-temp-buffer
+- (let ((coding-system-for-read
+- (or file-name-coding-system
+- default-file-name-coding-system)))
+- (vc-insert-file (expand-file-name (concat vc-svn-admin-directory
+- "/entries")
+- dirname)))
++ (let (process-file-side-effects)
++ (vc-svn-command t t dirname "info" "--xml"))
+ (goto-char (point-min))
+- (when (re-search-forward
+- ;; Old `svn' used name="svn:this_dir", newer use just name="".
+- (concat "name=\"\\(?:svn:this_dir\\)?\"[\n\t ]*"
+- "\\(?:[-a-z]+=\"[^\"]*\"[\n\t ]*\\)*?"
+- "url=\"\\(?1:[^\"]+\\)\""
+- ;; Yet newer ones don't use XML any more.
+- "\\|^\ndir\n[0-9]+\n\\(?1:.*\\)") nil t)
++ (when (re-search-forward "<url>\\(.*\\)</url>" nil t)
+ ;; This is not a hostname but a URL. This may actually be considered
+ ;; as a feature since it allows vc-svn-stay-local to specify different
+ ;; behavior for different modules on the same server.
+--
+cgit v0.9.0.2
diff --git a/testing/emacs/emacs.install b/testing/emacs/emacs.install
new file mode 100644
index 000000000..d84f1de14
--- /dev/null
+++ b/testing/emacs/emacs.install
@@ -0,0 +1,32 @@
+ICON_PATH=usr/share/icons/hicolor
+INFO_DIR=usr/share/info
+
+INFO_FILES=(ada-mode auth autotype calc ccmode cl dbus dired-x ebrowse
+ede ediff edt efaq eieio 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 semantic ses sieve smtpmail
+speedbar tramp url vip viper widget woman)
+
+post_install() {
+ gtk-update-icon-cache -q -t -f ${ICON_PATH}
+ update-desktop-database -q
+
+ [[ -x usr/bin/install-info ]] || return 0
+ 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}
+ update-desktop-database -q
+
+ [[ -x usr/bin/install-info ]] || return 0
+ for f in ${INFO_FILES[@]}; do
+ install-info --delete ${INFO_DIR}/$f.gz ${INFO_DIR}/dir 2> /dev/null
+ done
+}
diff --git a/testing/enblend-enfuse/PKGBUILD b/testing/enblend-enfuse/PKGBUILD
new file mode 100644
index 000000000..03e2b1e2c
--- /dev/null
+++ b/testing/enblend-enfuse/PKGBUILD
@@ -0,0 +1,39 @@
+# $Id: PKGBUILD 148087 2012-01-30 18:45:24Z ibiru $
+# Maintainer: tobias <tobias@archlinux.org>
+# Contributor: Dominik Ryba <domryba@post.pl>
+
+pkgname=enblend-enfuse
+pkgver=4.0
+pkgrel=5
+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' 'lcms' 'libpng')
+makedepends=('boost')
+replaces=('enblend')
+conflicts=('enblend')
+provides=('enblend')
+install=${pkgname}.install
+source=(http://downloads.sourceforge.net/sourceforge/enblend/${pkgname}-${pkgver}.tar.gz{,.asc} \
+ libpng-1.4.patch enblend-4.0-libpng15.patch)
+sha1sums=('34c3a5ce11c6ef0ef520d8a15a3cb6a94a567033'
+ 'aac6364b29b0a9d6c61c3db0982f52ce1579e934'
+ 'eae6cf48ea082865130302d0b4d1ca0b884a563b'
+ '71e961d90be842eafe9d473d8d70b04b29077036')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}-753b534c819d"
+ sed -i 's/info.arith_code = TRUE/info.arith_code = FALSE/' src/vigra_impex/jpeg.cxx
+ patch -p1 -i ../libpng-1.4.patch
+ patch -p0 -i ../enblend-4.0-libpng15.patch
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}-753b534c819d"
+ make DESTDIR="${pkgdir}" install
+ install -D -m644 doc/enblend.info "${pkgdir}/usr/share/info/enblend.info"
+ install -D -m644 doc/enfuse.info "${pkgdir}/usr/share/info/enfuse.info"
+}
diff --git a/testing/enblend-enfuse/enblend-4.0-libpng15.patch b/testing/enblend-enfuse/enblend-4.0-libpng15.patch
new file mode 100644
index 000000000..d4465ccad
--- /dev/null
+++ b/testing/enblend-enfuse/enblend-4.0-libpng15.patch
@@ -0,0 +1,220 @@
+--- src/vigra_impex/png.cxx
++++ src/vigra_impex/png.cxx
+@@ -81,7 +81,7 @@
+ static void PngError( png_structp png_ptr, png_const_charp error_msg )
+ {
+ png_error_message = std::string(error_msg);
+- longjmp( png_ptr->jmpbuf, 1 );
++ longjmp( png_jmpbuf( png_ptr ), 1 );
+ }
+
+ // called on non-fatal errors
+@@ -213,7 +213,7 @@
+ vigra_postcondition( png != 0, "could not create the read struct." );
+
+ // create info struct
+- if (setjmp(png->jmpbuf)) {
++ if (setjmp(png_jmpbuf( png ))) {
+ png_destroy_read_struct( &png, &info, NULL );
+ vigra_postcondition( false, png_error_message.insert(0, "error in png_create_info_struct(): ").c_str() );
+ }
+@@ -221,14 +221,14 @@
+ vigra_postcondition( info != 0, "could not create the info struct." );
+
+ // init png i/o
+- if (setjmp(png->jmpbuf)) {
++ if (setjmp(png_jmpbuf( png ))) {
+ png_destroy_read_struct( &png, &info, NULL );
+ vigra_postcondition( false, png_error_message.insert(0, "error in png_init_io(): ").c_str() );
+ }
+ png_init_io( png, file.get() );
+
+ // specify that the signature was already read
+- if (setjmp(png->jmpbuf)) {
++ if (setjmp(png_jmpbuf( png ))) {
+ png_destroy_read_struct( &png, &info, NULL );
+ vigra_postcondition( false, png_error_message.insert(0, "error in png_set_sig_bytes(): ").c_str() );
+ }
+@@ -244,13 +244,13 @@
+ void PngDecoderImpl::init()
+ {
+ // read all chunks up to the image data
+- if (setjmp(png->jmpbuf))
++ if (setjmp(png_jmpbuf( png )))
+ vigra_postcondition( false, png_error_message.insert(0, "error in png_read_info(): ").c_str() );
+ png_read_info( png, info );
+
+ // pull over the header fields
+ int interlace_method, compression_method, filter_method;
+- if (setjmp(png->jmpbuf))
++ if (setjmp(png_jmpbuf( png )))
+ vigra_postcondition( false, png_error_message.insert(0, "error in png_get_IHDR(): ").c_str() );
+ png_get_IHDR( png, info, &width, &height, &bit_depth, &color_type,
+ &interlace_method, &compression_method, &filter_method );
+@@ -264,7 +264,7 @@
+
+ // transform palette to rgb
+ if ( color_type == PNG_COLOR_TYPE_PALETTE) {
+- if (setjmp(png->jmpbuf))
++ if (setjmp(png_jmpbuf( png )))
+ vigra_postcondition( false, png_error_message.insert(0, "error in png_palette_to_rgb(): ").c_str() );
+ png_set_palette_to_rgb(png);
+ color_type = PNG_COLOR_TYPE_RGB;
+@@ -273,7 +273,7 @@
+
+ // expand gray values to at least one byte size
+ if ( color_type == PNG_COLOR_TYPE_GRAY && bit_depth < 8 ) {
+- if (setjmp(png->jmpbuf))
++ if (setjmp(png_jmpbuf( 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;
+@@ -283,7 +283,7 @@
+ #if 0
+ // strip alpha channel
+ if ( color_type & PNG_COLOR_MASK_ALPHA ) {
+- if (setjmp(png->jmpbuf))
++ if (setjmp(png_jmpbuf( png )))
+ vigra_postcondition( false, png_error_message.insert(0, "error in png_set_strip_alpha(): ").c_str() );
+ png_set_strip_alpha(png);
+ color_type ^= PNG_COLOR_MASK_ALPHA;
+@@ -323,12 +323,12 @@
+
+ // read icc profile
+ #if (PNG_LIBPNG_VER > 10008) && defined(PNG_READ_iCCP_SUPPORTED)
+- char * dummyName;
++ png_charpp dummyName;
+ int dummyCompType;
+- char * profilePtr;
++ png_bytepp profilePtr;
+ png_uint_32 profileLen;
+- if (info->valid & PNG_INFO_iCCP) {
+- png_get_iCCP(png, info, &dummyName, &dummyCompType, &profilePtr, &profileLen) ;
++ if (png_get_valid(png, info, PNG_INFO_iCCP)) {
++ png_get_iCCP(png, info, dummyName, &dummyCompType, profilePtr, &profileLen) ;
+ iccProfilePtr = (unsigned char *) profilePtr;
+ iccProfileLength = profileLen;
+ }
+@@ -340,7 +340,7 @@
+ // image gamma
+ double image_gamma = 0.45455;
+ if ( png_get_valid( png, info, PNG_INFO_gAMA ) ) {
+- if (setjmp(png->jmpbuf))
++ if (setjmp(png_jmpbuf( png )))
+ vigra_postcondition( false, png_error_message.insert(0, "error in png_get_gAMA(): ").c_str() );
+ png_get_gAMA( png, info, &image_gamma );
+ }
+@@ -349,26 +349,26 @@
+ double screen_gamma = 2.2;
+
+ // set gamma correction
+- if (setjmp(png->jmpbuf))
++ if (setjmp(png_jmpbuf( png )))
+ vigra_postcondition( false, png_error_message.insert(0, "error in png_set_gamma(): ").c_str() );
+ png_set_gamma( png, screen_gamma, image_gamma );
+ #endif
+
+ // interlace handling, get number of read passes needed
+- if (setjmp(png->jmpbuf))
++ if (setjmp(png_jmpbuf( png )))
+ vigra_postcondition( false,png_error_message.insert(0, "error in png_set_interlace_handling(): ").c_str());
+ n_interlace_passes = png_set_interlace_handling(png);
+
+ // update png library state to reflect any changes that were made
+- if (setjmp(png->jmpbuf))
++ if (setjmp(png_jmpbuf( png )))
+ vigra_postcondition( false, png_error_message.insert(0, "error in png_read_update_info(): ").c_str() );
+ png_read_update_info( png, info );
+
+- if (setjmp(png->jmpbuf))
++ if (setjmp(png_jmpbuf( png )))
+ vigra_postcondition( false,png_error_message.insert(0, "error in png_get_channels(): ").c_str());
+ n_channels = png_get_channels(png, info);
+
+- if (setjmp(png->jmpbuf))
++ if (setjmp(png_jmpbuf( png )))
+ vigra_postcondition( false,png_error_message.insert(0, "error in png_get_rowbytes(): ").c_str());
+ rowsize = png_get_rowbytes(png, info);
+
+@@ -379,7 +379,7 @@
+ void PngDecoderImpl::nextScanline()
+ {
+ for (int i=0; i < n_interlace_passes; i++) {
+- if (setjmp(png->jmpbuf))
++ if (setjmp(png_jmpbuf( png )))
+ vigra_postcondition( false,png_error_message.insert(0, "error in png_read_row(): ").c_str());
+ png_read_row(png, row_data.begin(), NULL);
+ }
+@@ -545,7 +545,7 @@
+ vigra_postcondition( png != 0, "could not create the write struct." );
+
+ // create info struct
+- if (setjmp(png->jmpbuf)) {
++ if (setjmp(png_jmpbuf( png ))) {
+ png_destroy_write_struct( &png, &info );
+ vigra_postcondition( false, png_error_message.insert(0, "error in png_info_struct(): ").c_str() );
+ }
+@@ -556,7 +556,7 @@
+ }
+
+ // init png i/o
+- if (setjmp(png->jmpbuf)) {
++ if (setjmp(png_jmpbuf( png ))) {
+ png_destroy_write_struct( &png, &info );
+ vigra_postcondition( false, png_error_message.insert(0, "error in png_init_io(): ").c_str() );
+ }
+@@ -571,7 +571,7 @@
+ void PngEncoderImpl::finalize()
+ {
+ // write the IHDR
+- if (setjmp(png->jmpbuf))
++ if (setjmp(png_jmpbuf( png )))
+ vigra_postcondition( false, png_error_message.insert(0, "error in png_set_IHDR(): ").c_str() );
+ png_set_IHDR( png, info, width, height, bit_depth, color_type,
+ PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_DEFAULT,
+@@ -579,7 +579,7 @@
+
+ // set resolution
+ if (x_resolution > 0 && y_resolution > 0) {
+- if (setjmp(png->jmpbuf))
++ if (setjmp(png_jmpbuf( png )))
+ vigra_postcondition( false, png_error_message.insert(0, "error in png_set_pHYs(): ").c_str() );
+ png_set_pHYs(png, info, (png_uint_32) (x_resolution / 0.0254 + 0.5),
+ (png_uint_32) (y_resolution / 0.0254 + 0.5),
+@@ -588,7 +588,7 @@
+
+ // set offset
+ if (position.x > 0 && position.y > 0) {
+- if (setjmp(png->jmpbuf))
++ if (setjmp(png_jmpbuf( png )))
+ vigra_postcondition( false, png_error_message.insert(0, "error in png_set_oFFs(): ").c_str() );
+ png_set_oFFs(png, info, position.x, position.y, PNG_OFFSET_PIXEL);
+ }
+@@ -597,12 +597,12 @@
+ // set icc profile
+ if (iccProfile.size() > 0) {
+ png_set_iCCP(png, info, "icc", 0,
+- (char *)iccProfile.begin(), iccProfile.size());
++ iccProfile.begin(), iccProfile.size());
+ }
+ #endif
+
+ // write the info struct
+- if (setjmp(png->jmpbuf))
++ if (setjmp(png_jmpbuf( png )))
+ vigra_postcondition( false, png_error_message.insert(0, "error in png_write_info(): ").c_str() );
+ png_write_info( png, info );
+
+@@ -634,10 +634,10 @@
+ }
+
+ // write the whole image
+- if (setjmp(png->jmpbuf))
++ if (setjmp(png_jmpbuf( png )))
+ vigra_postcondition( false, png_error_message.insert(0, "error in png_write_image(): ").c_str() );
+ png_write_image( png, row_pointers.begin() );
+- if (setjmp(png->jmpbuf))
++ if (setjmp(png_jmpbuf( png )))
+ vigra_postcondition( false, png_error_message.insert(0, "error in png_write_end(): ").c_str() );
+ png_write_end(png, info);
+ }
diff --git a/testing/enblend-enfuse/enblend-enfuse.install b/testing/enblend-enfuse/enblend-enfuse.install
new file mode 100644
index 000000000..24ea28a4e
--- /dev/null
+++ b/testing/enblend-enfuse/enblend-enfuse.install
@@ -0,0 +1,22 @@
+infodir=usr/share/info
+filelist=(enblend.info enfuse.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
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/testing/enblend-enfuse/libpng-1.4.patch b/testing/enblend-enfuse/libpng-1.4.patch
new file mode 100644
index 000000000..3bf852b58
--- /dev/null
+++ b/testing/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/testing/evince/PKGBUILD b/testing/evince/PKGBUILD
new file mode 100644
index 000000000..22d1dc83f
--- /dev/null
+++ b/testing/evince/PKGBUILD
@@ -0,0 +1,36 @@
+# $Id: PKGBUILD 148089 2012-01-30 18:45:27Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=evince
+pkgver=3.2.1
+pkgrel=3
+pkgdesc="Simply a document viewer"
+url="http://projects.gnome.org/evince/"
+arch=('i686' 'x86_64')
+license=('GPL')
+depends=('gtk3' 'libspectre' 'gsfonts' 'poppler-glib' 'djvulibre' 'gnome-icon-theme' 't1lib' 'libgnome-keyring' 'desktop-file-utils' 'dconf' 'gsettings-desktop-schemas')
+makedepends=('gnome-doc-utils' 'nautilus' 'texlive-bin' 'intltool' 'gobject-introspection')
+optdepends=('texlive-bin: DVI support')
+groups=('gnome-extra')
+install=evince.install
+options=('!libtool' '!emptydirs')
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/${pkgver%.*}/${pkgname}-${pkgver}.tar.xz)
+sha256sums=('9db61a39c977eb939deaee3ed1e66937f15532f46de988cacd5b638f3960ed35')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --libexecdir=/usr/lib/evince \
+ --disable-static --enable-nautilus \
+ --enable-pdf --enable-tiff \
+ --enable-djvu --enable-dvi \
+ --enable-t1lib --enable-comics \
+ --disable-scrollkeeper --disable-schemas-compile \
+ --enable-introspection
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/testing/evince/evince.install b/testing/evince/evince.install
new file mode 100644
index 000000000..9643a9ba0
--- /dev/null
+++ b/testing/evince/evince.install
@@ -0,0 +1,19 @@
+post_install() {
+ usr/bin/glib-compile-schemas usr/share/glib-2.0/schemas
+ update-desktop-database -q
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+pre_upgrade() {
+ if (( $(vercmp $2 2.90.0) < 0 )); then
+ usr/sbin/gconfpkg --uninstall evince
+ fi
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/testing/fbida/PKGBUILD b/testing/fbida/PKGBUILD
new file mode 100644
index 000000000..d3365e7cb
--- /dev/null
+++ b/testing/fbida/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 148091 2012-01-30 18:45:29Z ibiru $
+# Maintainer: Eric Bélanger <eric@archlinux.org>
+
+pkgname=fbida
+pkgver=2.08
+pkgrel=2
+pkgdesc="Few applications to display and elementary edit images: fbi, fbgs, ida, exiftran"
+arch=('i686' 'x86_64')
+url="http://www.kraxel.org/blog/linux/fbida/"
+license=('GPL2')
+depends=('giflib' 'libtiff' 'libexif' 'lesstif' 'libpng' 'fontconfig' 'curl')
+makedepends=('libxpm')
+optdepends=('ghostscript: to use fbgs')
+source=(http://www.kraxel.org/releases/${pkgname}/${pkgname}-${pkgver}.tar.gz)
+md5sums=('9b3693ab26a58194e36b479bffb61ed0')
+sha1sums=('597e0953c68112bf7c363b1ccaa94e72100b116a')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ sed -i 's/ungif/gif/' GNUmakefile
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" prefix=/usr install
+}
diff --git a/testing/feh/PKGBUILD b/testing/feh/PKGBUILD
new file mode 100644
index 000000000..5227a7524
--- /dev/null
+++ b/testing/feh/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 148093 2012-01-30 18:45:32Z ibiru $
+# 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=2.2
+pkgrel=2
+pkgdesc='Fast and light imlib2-based image viewer'
+url='http://feh.finalrewind.org/'
+license=('MIT')
+arch=('i686' 'x86_64')
+depends=('giblib' 'curl' 'libxinerama')
+optdepends=('perl: feh-cam, webcam wrapper for feh')
+makedepends=('libxt')
+source=("${url}${pkgname}-${pkgver}.tar.bz2")
+sha1sums=('655db5f558cdb268ff55cb088994d78331bd39aa')
+
+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/testing/ffmpegthumbnailer/PKGBUILD b/testing/ffmpegthumbnailer/PKGBUILD
new file mode 100644
index 000000000..7cc1baea4
--- /dev/null
+++ b/testing/ffmpegthumbnailer/PKGBUILD
@@ -0,0 +1,34 @@
+# $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.7
+pkgrel=3
+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"
+ 'ffmpegthumbnailer.desktop')
+options=('!libtool')
+sha1sums=('b8f5371aa995fefd1fb75e306e8cd76e8c9f3a73'
+ 'bdd3ae35a5c6f0e1f4b0c7926f72b3429b2eaa53')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ ./configure --prefix=/usr --enable-gio
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+
+ # FS#24105: Generate thumbnails in nautilus
+ install -Dm644 "${srcdir}/ffmpegthumbnailer.desktop" \
+ "${pkgdir}/usr/share/thumbnailers/ffmpegthumbnailer.desktop"
+}
diff --git a/testing/ffmpegthumbnailer/ffmpegthumbnailer.desktop b/testing/ffmpegthumbnailer/ffmpegthumbnailer.desktop
new file mode 100644
index 000000000..79203e5bc
--- /dev/null
+++ b/testing/ffmpegthumbnailer/ffmpegthumbnailer.desktop
@@ -0,0 +1,4 @@
+[Thumbnailer Entry]
+TryExec=ffmpegthumbnailer
+Exec=ffmpegthumbnailer -s %s -i %u -o %o -c png -f -t 10
+MimeType=video/flv;video/webm;video/mkv;video/mp4;video/mpeg;video/avi;video/ogg;video/quicktime;video/x-avi;video/x-flv;video/x-mp4;video/x-mpeg;video/x-webm;video/x-mkv;application/x-extension-webm;video/x-matroska;video/x-ms-wmv;video/x-msvideo;video/x-msvideo/avi;video/x-theora/ogg;video/x-theora/ogv;video/x-ms-asf;video/x-m4v;
diff --git a/testing/fltk/PKGBUILD b/testing/fltk/PKGBUILD
new file mode 100644
index 000000000..5a9ddabe0
--- /dev/null
+++ b/testing/fltk/PKGBUILD
@@ -0,0 +1,62 @@
+# $Id: PKGBUILD 148099 2012-01-30 18:45:45Z ibiru $
+# Maintainer:
+
+pkgbase=fltk
+pkgname=('fltk' 'fltk-docs' 'fltk-games')
+pkgver=1.3.0
+pkgrel=3
+arch=('i686' 'x86_64')
+license=('custom:LGPL')
+url="http://www.fltk.org/"
+makedepends=('mesa' 'doxygen' 'libjpeg' 'libpng' 'libxft' 'libxinerama' \
+ 'alsa-lib' 'desktop-file-utils')
+source=(http://ftp.easysw.com/pub/$pkgbase/$pkgver/$pkgbase-$pkgver-source.tar.gz)
+md5sums=('44d5d7ba06afdd36ea17da6b4b703ca3')
+
+build() {
+ cd "$srcdir/$pkgbase-$pkgver"
+ sed -i -e 's/$(LINKFLTK)/$(LINKSHARED)/' \
+ -e 's/$(LINKFLTKIMG)/$(LINKSHARED)/' test/Makefile
+ ./configure --prefix=/usr --enable-threads --enable-xft --enable-shared
+ make
+ cd documentation
+ make html
+}
+
+package_fltk() {
+ pkgdesc="Graphical user interface toolkit for X"
+ depends=('libjpeg' 'libpng' 'libxft' 'libxinerama' 'hicolor-icon-theme' \
+ 'desktop-file-utils' 'xdg-utils')
+ options=('!docs')
+ install=fltk.install
+
+ cd "$srcdir/$pkgbase-$pkgver"
+ make DESTDIR="$pkgdir" install
+ (cd fluid; make DESTDIR="$pkgdir" install install-linux)
+ chmod 644 "$pkgdir"/usr/lib/*.a
+ install -D -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+}
+
+package_fltk-docs() {
+ pkgdesc="Graphical user interface toolkit for X (documentation)"
+
+ cd "$srcdir/$pkgbase-$pkgver/documentation"
+ install -d "$pkgdir"/usr/share/doc/fltk/
+ for _file in html/* ; do
+ install -m644 $_file "$pkgdir"/usr/share/doc/fltk/
+ done
+ cd ../test
+ make DESTDIR="$pkgdir" install
+ install -D -m644 ../COPYING "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+}
+
+package_fltk-games() {
+ pkgdesc="Example games that accompany FLTK: blocks, checkers and sudoku"
+ depends=('alsa-lib' 'fltk')
+ install=fltk-games.install
+
+ cd "$srcdir/$pkgbase-$pkgver/test"
+ make DESTDIR="$pkgdir" install-linux
+ (cd ../documentation; make DESTDIR="$pkgdir" install-linux)
+ install -D -m644 ../COPYING "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+}
diff --git a/testing/fltk/fltk-games.install b/testing/fltk/fltk-games.install
new file mode 100644
index 000000000..f3fe2b08b
--- /dev/null
+++ b/testing/fltk/fltk-games.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/testing/fltk/fltk.install b/testing/fltk/fltk.install
new file mode 100644
index 000000000..f89ec8213
--- /dev/null
+++ b/testing/fltk/fltk.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/testing/fontforge/PKGBUILD b/testing/fontforge/PKGBUILD
index aa91464c1..4a1596e53 100644
--- a/testing/fontforge/PKGBUILD
+++ b/testing/fontforge/PKGBUILD
@@ -1,11 +1,11 @@
-# $Id: PKGBUILD 146646 2012-01-15 10:19:07Z bisson $
+# $Id: PKGBUILD 148101 2012-01-30 18:45:51Z ibiru $
# Maintainer: Gaetan Bisson <bisson@archlinux.org>
# Contributor: Eric Belanger <eric@archlinux.org>
# Contributor: William Rea <sillywilly@gmail.com>
pkgname=fontforge
-pkgver=20111214
-pkgrel=3
+pkgver=20120119
+pkgrel=1
pkgdesc='Outline and bitmap font editor'
arch=('i686' 'x86_64')
url='http://fontforge.sourceforge.net/'
@@ -13,7 +13,7 @@ license=('BSD')
depends=('libxkbui' 'libxi' 'libxml2' 'pango' 'giflib' 'libtiff' 'python2' 'libspiro')
options=('!libtool' '!makeflags')
source=("ftp://ftp.archlinux.org/other/${pkgname}/${pkgname}-${pkgver}.tar.xz")
-sha1sums=('55c3f00c0b486492ba071fc479e1feb426562e2b')
+sha1sums=('2c363af075e77bf35d21ee1939e3d6ab39a9f80c')
# git clone git://fontforge.git.sourceforge.net/gitroot/fontforge/fontforge; cd fontforge; git archive --prefix=${pkgname}-${pkgver}/ master | xz > ../${pkgname}-${pkgver}.tar.xz
diff --git a/testing/fvwm/PKGBUILD b/testing/fvwm/PKGBUILD
new file mode 100644
index 000000000..a7c4300ba
--- /dev/null
+++ b/testing/fvwm/PKGBUILD
@@ -0,0 +1,33 @@
+# $Id: PKGBUILD 148103 2012-01-30 18:45:55Z ibiru $
+# Maintainer: Eric Bélanger <eric@archlinux.org>
+
+pkgname=fvwm
+pkgver=2.6.3
+pkgrel=2
+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' 'librsvg' 'libxinerama' 'libxcursor')
+makedepends=('libxslt')
+provides=('fvwm-devel')
+conflicts=('fvwm-devel')
+replaces=('fvwm-devel')
+options=('!emptydirs' '!makeflags')
+source=(ftp://ftp.fvwm.org/pub/fvwm/version-${pkgver%%.*}/${pkgname}-${pkgver}.tar.bz2 fvwm.desktop)
+sha1sums=('7a04dae0e4a17f4d908589e704b48246b7c05e39'
+ '6fd8fd767f32f88cc8b4743a2ba49bcfcdb32bcb')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib --with-stroke-library
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+ install -D -m644 sample.fvwmrc/{decor_examples,DecorMwm,DecorWin95,new-features,system.*} "${pkgdir}/usr/share/doc/fvwm"
+ install -D -m644 ../fvwm.desktop "${pkgdir}/usr/share/xsessions/fvwm.desktop"
+ install -D -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/COPYING"
+}
diff --git a/testing/fvwm/fvwm.desktop b/testing/fvwm/fvwm.desktop
new file mode 100644
index 000000000..e297a6109
--- /dev/null
+++ b/testing/fvwm/fvwm.desktop
@@ -0,0 +1,7 @@
+[Desktop Entry]
+Encoding=UTF-8
+Name=FVWM
+Comment=The fvwm window manager
+Type=XSession
+Exec=/usr/bin/fvwm
+TryExec=/usr/bin/fvwm
diff --git a/testing/gd/PKGBUILD b/testing/gd/PKGBUILD
new file mode 100644
index 000000000..c86beabc0
--- /dev/null
+++ b/testing/gd/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id: PKGBUILD 148105 2012-01-30 18:46:00Z ibiru $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+
+pkgname=gd
+pkgver=2.0.36RC1
+pkgrel=5
+pkgdesc="Library for the dynamic creation of images by programmers"
+arch=('i686' 'x86_64')
+url="http://www.libgd.org/"
+license=('custom')
+depends=('libpng' 'fontconfig' 'libjpeg')
+optdepends=('perl: bdftogd script')
+options=('!libtool')
+source=("ftp://ftp.archlinux.org/other/${pkgname}/${pkgname}-${pkgver}.tar.bz2"
+ 'libpng14.patch')
+md5sums=('e876979ca3130623a4e7866d9579171a'
+ '7921556f4960e8d66cf4fb67ea7101b5')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ patch -Np1 -i ${srcdir}/libpng14.patch
+ ./configure --prefix=/usr --without-xpm
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+ install -D -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+}
diff --git a/testing/gd/libpng14.patch b/testing/gd/libpng14.patch
new file mode 100644
index 000000000..19a3fda91
--- /dev/null
+++ b/testing/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/testing/gdk-pixbuf2/PKGBUILD b/testing/gdk-pixbuf2/PKGBUILD
new file mode 100644
index 000000000..24ce8daf3
--- /dev/null
+++ b/testing/gdk-pixbuf2/PKGBUILD
@@ -0,0 +1,33 @@
+# $Id: PKGBUILD 148380 2012-01-30 21:47:59Z ibiru $
+# Maintainer: Ionut Biru <ibiru@archlinux.org>
+pkgname=gdk-pixbuf2
+pkgver=2.24.1
+pkgrel=3
+pkgdesc="An image loading library"
+arch=('i686' 'x86_64')
+url="http://www.gtk.org/"
+license=('GPL2')
+depends=('glib2' 'libpng>=1.5.7' 'libtiff' 'libjpeg' 'libx11')
+makedepends=('gtk-doc' 'gobject-introspection')
+options=('!libtool')
+install=gdk-pixbuf2.install
+source=(http://download.gnome.org/sources/gdk-pixbuf/2.24/gdk-pixbuf-$pkgver.tar.xz)
+sha256sums=('da7a3f00db360913716368e19e336402755cafa93769f3cfa28a969303e4bee1')
+
+build() {
+ cd "$srcdir/gdk-pixbuf-$pkgver"
+
+ ./configure --prefix=/usr \
+ --without-libjasper \
+ --with-x11 \
+ --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/testing/gdk-pixbuf2/gdk-pixbuf2.install b/testing/gdk-pixbuf2/gdk-pixbuf2.install
new file mode 100644
index 000000000..1b35942cb
--- /dev/null
+++ b/testing/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/testing/gegl/PKGBUILD b/testing/gegl/PKGBUILD
new file mode 100644
index 000000000..9b8f1ba8c
--- /dev/null
+++ b/testing/gegl/PKGBUILD
@@ -0,0 +1,36 @@
+# $Id: PKGBUILD 148109 2012-01-30 18:46:09Z ibiru $
+# Maintainer: Eric Bélanger <eric@archlinux.org>
+
+pkgname=gegl
+pkgver=0.1.8
+pkgrel=2
+pkgdesc="Graph based image processing framework"
+arch=('i686' 'x86_64')
+url="http://www.gegl.org/"
+license=('GPL3' 'LGPL3')
+depends=('babl' '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)
+sha1sums=('3d4d902580f5c5122b01b5188b6b5da03089ecac')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --with-sdl --with-openexr --with-librsvg \
+ --with-libavformat --with-jasper --disable-docs
+ make
+}
+
+#check() {
+# cd "${srcdir}/${pkgname}-${pkgver}"
+# make check
+#}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/testing/gif2png/PKGBUILD b/testing/gif2png/PKGBUILD
new file mode 100644
index 000000000..2cde21e6a
--- /dev/null
+++ b/testing/gif2png/PKGBUILD
@@ -0,0 +1,36 @@
+# $Id: PKGBUILD 148113 2012-01-30 18:46:19Z ibiru $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: eric <eric@archlinux.org>
+# Contributor: Andrew Rose <ody@netrux.com>
+
+pkgname=gif2png
+pkgver=2.5.4
+pkgrel=3
+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"
+ 'gif2png-2.5.4-libpng15.patch')
+md5sums=('d63ea3fc6b6119589e8d4d6fead30df9'
+ 'd4d6d31e04e7448315eae56bb12d4df6')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ sed -i 's#env python#env python2#' web2png
+ patch -Np0 -i ${srcdir}/gif2png-2.5.4-libpng15.patch
+
+ ./configure --prefix=/usr \
+ --mandir=/usr/share/man
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ make DESTDIR="${pkgdir}" install
+ install -D -m644 COPYING "${pkgdir}/usr/share/licenses/$pkgname/LICENSE"
+}
diff --git a/testing/gif2png/gif2png-2.5.4-libpng15.patch b/testing/gif2png/gif2png-2.5.4-libpng15.patch
new file mode 100644
index 000000000..9e5c333bb
--- /dev/null
+++ b/testing/gif2png/gif2png-2.5.4-libpng15.patch
@@ -0,0 +1,43 @@
+ftp://ftp.netbsd.org/pub/pkgsrc/current/pkgsrc/graphics/gif2png/patches/patch-aa
+
+--- gif2png.c
++++ gif2png.c
+@@ -10,6 +10,7 @@
+ #include <string.h>
+ #include <stdlib.h>
+ #include <unistd.h> /* for isatty() */
++#include <zlib.h>
+
+ #if !defined(TRUE)
+ #define FALSE 0
+@@ -120,8 +121,8 @@ int writefile(struct GIFelement *s,struc
+ int colors_used = 0;
+ byte remap[MAXCMSIZE];
+ int low_prec;
+- png_struct *png_ptr = xalloc(sizeof (png_struct));
+- png_info *info_ptr = xalloc(sizeof (png_info));
++ png_struct *png_ptr;
++ png_info *info_ptr;
+ int p;
+ int gray_bitdepth;
+ png_color pal_rgb[MAXCMSIZE], *pltep;
+@@ -136,6 +137,19 @@ int writefile(struct GIFelement *s,struc
+ png_text software;
+ png_text comment;
+
++ png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
++ if (png_ptr == NULL) {
++ fprintf(stderr, "gif2png: fatal error, out of memory\n");
++ fprintf(stderr, "gif2png: exiting ungracefully\n");
++ exit(1);
++ }
++ info_ptr = png_create_info_struct(png_ptr);
++ if (info_ptr == NULL) {
++ fprintf(stderr, "gif2png: fatal error, out of memory\n");
++ fprintf(stderr, "gif2png: exiting ungracefully\n");
++ exit(1);
++ }
++
+ /* these volatile declarations prevent gcc warnings ("variable might be
+ * clobbered by `longjmp' or `vfork'") */
+ volatile int gray = TRUE;
diff --git a/testing/gimp-dbp/PKGBUILD b/testing/gimp-dbp/PKGBUILD
new file mode 100644
index 000000000..18bdd2403
--- /dev/null
+++ b/testing/gimp-dbp/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 148117 2012-01-30 18:46:24Z ibiru $
+# Maintainer: tobias <tobias@archlinux.org>
+# Contributor: Tobias Kieslich <tobias@justdreams.de>
+
+pkgname=gimp-dbp
+pkgver=1.1.9
+pkgrel=3
+pkgdesc="David's batch processor for the GIMP"
+arch=('i686' 'x86_64')
+url="http://members.ozemail.com.au/~hodsond/dbp.html"
+license=('GPL')
+depends=('gimp')
+source=(http://www.ozemail.com.au/~hodsond/dbpSrc-${pkgver//./-}.tgz)
+md5sums=('1106625707798ab8ea1317ac6bece1c5')
+
+build() {
+ cd "${srcdir}/dbp-${pkgver}"
+ sed -i "s|<string>|<cstring>|" op.h
+ make
+}
+
+package() {
+ cd "${srcdir}/dbp-${pkgver}"
+ install -D -m755 dbp "${pkgdir}/usr/lib/gimp/2.0/plug-ins/dbp"
+}
diff --git a/testing/gimp-devel/PKGBUILD b/testing/gimp-devel/PKGBUILD
new file mode 100644
index 000000000..b1eba7d03
--- /dev/null
+++ b/testing/gimp-devel/PKGBUILD
@@ -0,0 +1,54 @@
+# $Id: PKGBUILD 148119 2012-01-30 18:46:27Z ibiru $
+# Maintainer: Eric Bélanger <eric@archlinux.org>
+
+pkgname=gimp-devel
+pkgver=2.7.4
+pkgrel=2
+pkgdesc="GNU Image Manipulation Program (Development Version)"
+arch=('i686' 'x86_64')
+url="http://www.gimp.org/"
+license=('GPL3' 'LGPL3')
+depends=('pygtk' 'lcms' 'libxpm' 'libwmf' 'librsvg' 'libmng' 'dbus-glib' \
+ 'jasper' 'libexif' 'gegl' 'desktop-file-utils' 'hicolor-icon-theme')
+makedepends=('intltool' 'libwebkit' 'poppler-glib' 'alsa-lib' 'iso-codes' 'curl')
+optdepends=('gutenprint: for sophisticated printing only as gimp has built-in cups print support'
+ 'libwebkit: for the help browser or web-page plug-ins'
+ 'poppler-glib: for pdf support'
+ 'alsa-lib: for MIDI event controller module'
+ 'curl: for URI support')
+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=('bda95a29c3483b8ff458b06b1543f867'
+ 'bb27bc214261d36484093e857f015f38')
+
+build() {
+ cd "${srcdir}/gimp-${pkgver}"
+ PYTHON=/usr/bin/python2 ./configure --prefix=/usr --sysconfdir=/etc \
+ --enable-mp --enable-gimp-console --enable-python --with-libcurl \
+ --with-gif-compression=lzw --without-aa --without-gvfs
+ make
+}
+
+#check() {
+# cd "${srcdir}/gimp-${pkgver}"
+# make check
+#}
+
+package() {
+ cd "${srcdir}/gimp-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+ 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 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 gimptool-2.0 "${pkgdir}/usr/bin/gimptool"
+}
diff --git a/testing/gimp-devel/gimp-devel.install b/testing/gimp-devel/gimp-devel.install
new file mode 100644
index 000000000..c317fbaca
--- /dev/null
+++ b/testing/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/testing/gimp-devel/linux.gpl b/testing/gimp-devel/linux.gpl
new file mode 100644
index 000000000..0a73d8979
--- /dev/null
+++ b/testing/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/testing/gimp-ufraw/PKGBUILD b/testing/gimp-ufraw/PKGBUILD
new file mode 100644
index 000000000..4dd7f4c88
--- /dev/null
+++ b/testing/gimp-ufraw/PKGBUILD
@@ -0,0 +1,34 @@
+# $Id: PKGBUILD 148121 2012-01-30 18:46:29Z ibiru $
+# Maintainer: Tobias Kieslich <tobias@archlinux.org>
+
+pkgname=gimp-ufraw
+pkgver=0.18
+pkgrel=4
+pkgdesc="Standalone or gimp plugin converter for raw files"
+url="http://ufraw.sourceforge.net/"
+arch=('i686' 'x86_64')
+license=('GPL')
+depends=('gtkimageview' 'exiv2' 'lcms' 'bzip2' 'desktop-file-utils')
+makedepends=('gimp' 'cinepaint')
+optdepends=('gimp: to use the gimp import plugin for raw images'
+ 'cinepaint: to use the cinepaint import plugin for raw images')
+install=gimp-ufraw.install
+source=(http://downloads.sourceforge.net/ufraw/ufraw-${pkgver}.tar.gz)
+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/testing/gimp-ufraw/gimp-ufraw.install b/testing/gimp-ufraw/gimp-ufraw.install
new file mode 100644
index 000000000..80312d4a6
--- /dev/null
+++ b/testing/gimp-ufraw/gimp-ufraw.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/testing/gimp/PKGBUILD b/testing/gimp/PKGBUILD
new file mode 100644
index 000000000..ee911ffd7
--- /dev/null
+++ b/testing/gimp/PKGBUILD
@@ -0,0 +1,53 @@
+# $Id: PKGBUILD 148115 2012-01-30 18:46:22Z ibiru $
+# Maintainer: tobias <tobias@archlinux.org>
+
+pkgname=gimp
+pkgver=2.6.11
+pkgrel=8
+pkgdesc="GNU Image Manipulation Program"
+arch=('i686' 'x86_64')
+url="http://www.gimp.org/"
+license=('GPL' 'LGPL')
+depends=('pygtk' 'lcms' 'libxpm' 'libwmf' 'libxmu' 'librsvg' 'libmng' 'dbus-glib' \
+ 'libexif' 'gegl' 'desktop-file-utils' 'hicolor-icon-theme')
+makedepends=('intltool' 'libwebkit' 'poppler-glib' 'alsa-lib' 'iso-codes' 'curl')
+optdepends=('gutenprint: for sophisticated printing only as gimp has built-in cups print support'
+ 'libwebkit: for the help browser'
+ 'poppler-glib: for pdf support'
+ 'alsa-lib: for MIDI event controller module'
+ 'curl: for URI support')
+options=('!libtool' '!makeflags')
+conflicts=('gimp-devel')
+install=gimp.install
+source=(ftp://ftp.gimp.org/pub/gimp/v${pkgver%.*}/${pkgname}-${pkgver}.tar.bz2 linux.gpl
+ uri-backend-libcurl.patch gimp-poppler-0.18.patch libpng_compile.patch)
+sha1sums=('2f9d596e727bdbf304fa78257c1731d9faf3934c'
+ '110ce9798173b19a662d086ed7b882b4729f06cf'
+ 'a65b0ee6cd1b4345065b7b98c07f2fed15f844f4'
+ '1479a6d80be7adf74f66a3b88057a5029fe892e8'
+ '5ce329d2e2cb136e93f16117fa79ab6e31866f68')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -p1 < ../uri-backend-libcurl.patch
+ patch -p1 < ../gimp-poppler-0.18.patch
+ patch -p1 < ../libpng_compile.patch
+ PYTHON=/usr/bin/python2 LIBS+="-lgobject-2.0 -lglib-2.0 -lm" \
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --enable-mp --enable-gimp-console --enable-gimp-remote \
+ --enable-python --with-gif-compression=lzw --with-libcurl \
+ --without-aa --without-hal --without-gvfs --without-gnomevfs
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+ 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/testing/gimp/gimp-poppler-0.18.patch b/testing/gimp/gimp-poppler-0.18.patch
new file mode 100644
index 000000000..0715460bc
--- /dev/null
+++ b/testing/gimp/gimp-poppler-0.18.patch
@@ -0,0 +1,476 @@
+From 69f69eed816b89be9a01a48a1f0643d1fd496118 Mon Sep 17 00:00:00 2001
+From: Nils Philippsen <nils@redhat.com>
+Date: Fri, 6 May 2011 11:58:44 +0200
+Subject: [PATCH] patch: poppler-0.17
+
+Squashed commit of the following:
+
+commit 529d940222dfc352d41fbf72de29134421aa4002
+Author: Nils Philippsen <nils@redhat.com>
+Date: Fri May 6 11:50:30 2011 +0200
+
+ use code based on pixbufs instead of cairo surfaces
+
+ this is done to avoid adding to libgimp, thanks to Mukund Sivaraman for
+ hints how to do this
+
+commit f8671d8767d4cdab830dc06310e96c63a88ec0fd
+Author: Mukund Sivaraman <muks@banu.com>
+Date: Thu Apr 21 13:57:13 2011 +0530
+
+ file-pdf-load: Update attribution, removing bogus copyright
+ (cherry picked from commit e999122e0b20b6ccd6bde3ce039bb64068fc0019)
+
+commit 89a78f2590d298dac2f42e6d9a3016fc5d672c70
+Author: Nils Philippsen <nils@redhat.com>
+Date: Thu Apr 21 13:52:18 2011 +0200
+
+ file-pdf-load: Use better API + cleanups
+
+ * fixes issues with poppler 0.17 completely
+ * uses new libgimp API to pass surfaces instead of pixbufs
+ * uses GTK+ 3 API to convert surfaces to pixbufs where available
+ (backported from commit 7bdadd80ba479d6ff904e276d805e16f6b940ee2)
+
+commit 4e92302c4a14a961f112587a0ad86696c88da2f8
+Author: Nils Philippsen <nils@redhat.com>
+Date: Thu Apr 21 13:38:08 2011 +0200
+
+ file-pdf-load: Don't use deprecated API (bug #646947)
+
+ (cherry picked from commit 9b3e1c91fd2eac69da6947ec9c7fbf10096ba237)
+
+ Conflicts:
+
+ plug-ins/common/file-pdf.c
+---
+ plug-ins/common/file-pdf.c | 323 ++++++++++++++++++++++++++++++++++++++------
+ 1 files changed, 283 insertions(+), 40 deletions(-)
+
+diff --git a/plug-ins/common/file-pdf.c b/plug-ins/common/file-pdf.c
+index a43b459..43c2b7d 100644
+--- a/plug-ins/common/file-pdf.c
++++ b/plug-ins/common/file-pdf.c
+@@ -4,6 +4,9 @@
+ *
+ * Copyright (C) 2005 Nathan Summers
+ *
++ * Some code in render_page_to_surface() borrowed from
++ * poppler.git/glib/poppler-page.cc.
++ *
+ * 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
+@@ -80,16 +83,20 @@ static gboolean load_dialog (PopplerDocument *doc,
+ static PopplerDocument * open_document (const gchar *filename,
+ GError **error);
+
+-static GdkPixbuf * get_thumbnail (PopplerDocument *doc,
++static cairo_surface_t * get_thumb_surface (PopplerDocument *doc,
++ gint page,
++ gint preferred_size);
++
++static GdkPixbuf * get_thumb_pixbuf (PopplerDocument *doc,
+ gint page,
+ gint preferred_size);
+
+ static gint32 layer_from_pixbuf (gint32 image,
+- const gchar *layer_name,
+- gint position,
+- GdkPixbuf *buf,
+- gdouble progress_start,
+- gdouble progress_scale);
++ const gchar *layer_name,
++ gint position,
++ GdkPixbuf *pixbuf,
++ gdouble progress_start,
++ gdouble progress_scale);
+
+ /**
+ ** the following was formerly part of
+@@ -433,11 +440,12 @@ run (const gchar *name,
+ }
+ else
+ {
+- gdouble width = 0;
+- gdouble height = 0;
+- gdouble scale;
+- gint32 image = -1;
+- GdkPixbuf *pixbuf = NULL;
++ gdouble width = 0;
++ gdouble height = 0;
++ gdouble scale;
++ gint32 image = -1;
++ gint num_pages = 0;
++ GdkPixbuf *pixbuf = NULL;
+
+ /* Possibly retrieve last settings */
+ gimp_get_data (LOAD_PROC, &loadvals);
+@@ -455,7 +463,10 @@ run (const gchar *name,
+ g_object_unref (page);
+ }
+
+- pixbuf = get_thumbnail (doc, 0, param[1].data.d_int32);
++ num_pages = poppler_document_get_n_pages (doc);
++
++ pixbuf = get_thumb_pixbuf (doc, 0, param[1].data.d_int32);
++
+ g_object_unref (doc);
+ }
+
+@@ -548,6 +559,187 @@ open_document (const gchar *filename,
+ return doc;
+ }
+
++/* FIXME: Remove this someday when we depend fully on GTK+ >= 3 */
++
++#if (!GTK_CHECK_VERSION (3, 0, 0))
++
++static cairo_format_t
++gdk_cairo_format_for_content (cairo_content_t content)
++{
++ switch (content)
++ {
++ case CAIRO_CONTENT_COLOR:
++ return CAIRO_FORMAT_RGB24;
++ case CAIRO_CONTENT_ALPHA:
++ return CAIRO_FORMAT_A8;
++ case CAIRO_CONTENT_COLOR_ALPHA:
++ default:
++ return CAIRO_FORMAT_ARGB32;
++ }
++}
++
++static cairo_surface_t *
++gdk_cairo_surface_coerce_to_image (cairo_surface_t *surface,
++ cairo_content_t content,
++ int src_x,
++ int src_y,
++ int width,
++ int height)
++{
++ cairo_surface_t *copy;
++ cairo_t *cr;
++
++ copy = cairo_image_surface_create (gdk_cairo_format_for_content (content),
++ width,
++ height);
++
++ cr = cairo_create (copy);
++ cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE);
++ cairo_set_source_surface (cr, surface, -src_x, -src_y);
++ cairo_paint (cr);
++ cairo_destroy (cr);
++
++ return copy;
++}
++
++static void
++convert_alpha (guchar *dest_data,
++ int dest_stride,
++ guchar *src_data,
++ int src_stride,
++ int src_x,
++ int src_y,
++ int width,
++ int height)
++{
++ int x, y;
++
++ src_data += src_stride * src_y + src_x * 4;
++
++ for (y = 0; y < height; y++) {
++ guint32 *src = (guint32 *) src_data;
++
++ for (x = 0; x < width; x++) {
++ guint alpha = src[x] >> 24;
++
++ if (alpha == 0)
++ {
++ dest_data[x * 4 + 0] = 0;
++ dest_data[x * 4 + 1] = 0;
++ dest_data[x * 4 + 2] = 0;
++ }
++ else
++ {
++ dest_data[x * 4 + 0] = (((src[x] & 0xff0000) >> 16) * 255 + alpha / 2) / alpha;
++ dest_data[x * 4 + 1] = (((src[x] & 0x00ff00) >> 8) * 255 + alpha / 2) / alpha;
++ dest_data[x * 4 + 2] = (((src[x] & 0x0000ff) >> 0) * 255 + alpha / 2) / alpha;
++ }
++ dest_data[x * 4 + 3] = alpha;
++ }
++
++ src_data += src_stride;
++ dest_data += dest_stride;
++ }
++}
++
++static void
++convert_no_alpha (guchar *dest_data,
++ int dest_stride,
++ guchar *src_data,
++ int src_stride,
++ int src_x,
++ int src_y,
++ int width,
++ int height)
++{
++ int x, y;
++
++ src_data += src_stride * src_y + src_x * 4;
++
++ for (y = 0; y < height; y++) {
++ guint32 *src = (guint32 *) src_data;
++
++ for (x = 0; x < width; x++) {
++ dest_data[x * 3 + 0] = src[x] >> 16;
++ dest_data[x * 3 + 1] = src[x] >> 8;
++ dest_data[x * 3 + 2] = src[x];
++ }
++
++ src_data += src_stride;
++ dest_data += dest_stride;
++ }
++}
++
++/**
++ * gdk_pixbuf_get_from_surface:
++ * @surface: surface to copy from
++ * @src_x: Source X coordinate within @surface
++ * @src_y: Source Y coordinate within @surface
++ * @width: Width in pixels of region to get
++ * @height: Height in pixels of region to get
++ *
++ * Transfers image data from a #cairo_surface_t and converts it to an RGB(A)
++ * representation inside a #GdkPixbuf. This allows you to efficiently read
++ * individual pixels from cairo surfaces. For #GdkWindows, use
++ * gdk_pixbuf_get_from_window() instead.
++ *
++ * This function will create an RGB pixbuf with 8 bits per channel.
++ * The pixbuf will contain an alpha channel if the @surface contains one.
++ *
++ * Return value: (transfer full): A newly-created pixbuf with a reference
++ * count of 1, or %NULL on error
++ */
++static GdkPixbuf *
++gdk_pixbuf_get_from_surface (cairo_surface_t *surface,
++ gint src_x,
++ gint src_y,
++ gint width,
++ gint height)
++{
++ cairo_content_t content;
++ GdkPixbuf *dest;
++
++ /* General sanity checks */
++ g_return_val_if_fail (surface != NULL, NULL);
++ g_return_val_if_fail (width > 0 && height > 0, NULL);
++
++ content = cairo_surface_get_content (surface) | CAIRO_CONTENT_COLOR;
++ dest = gdk_pixbuf_new (GDK_COLORSPACE_RGB,
++ !!(content & CAIRO_CONTENT_ALPHA),
++ 8,
++ width, height);
++
++ surface = gdk_cairo_surface_coerce_to_image (surface, content,
++ src_x, src_y,
++ width, height);
++ cairo_surface_flush (surface);
++ if (cairo_surface_status (surface) || dest == NULL)
++ {
++ cairo_surface_destroy (surface);
++ return NULL;
++ }
++
++ if (gdk_pixbuf_get_has_alpha (dest))
++ convert_alpha (gdk_pixbuf_get_pixels (dest),
++ gdk_pixbuf_get_rowstride (dest),
++ cairo_image_surface_get_data (surface),
++ cairo_image_surface_get_stride (surface),
++ 0, 0,
++ width, height);
++ else
++ convert_no_alpha (gdk_pixbuf_get_pixels (dest),
++ gdk_pixbuf_get_rowstride (dest),
++ cairo_image_surface_get_data (surface),
++ cairo_image_surface_get_stride (surface),
++ 0, 0,
++ width, height);
++
++ cairo_surface_destroy (surface);
++ return dest;
++}
++
++#endif
++
+ static gint32
+ layer_from_pixbuf (gint32 image,
+ const gchar *layer_name,
+@@ -566,6 +758,54 @@ layer_from_pixbuf (gint32 image,
+ return layer;
+ }
+
++static cairo_surface_t *
++render_page_to_surface (PopplerPage *page,
++ int width,
++ int height,
++ double scale)
++{
++ cairo_surface_t *surface;
++ cairo_t *cr;
++
++ surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, width, height);
++ cr = cairo_create (surface);
++
++ cairo_save (cr);
++ cairo_translate (cr, 0.0, 0.0);
++
++ if (scale != 1.0)
++ cairo_scale (cr, scale, scale);
++
++ poppler_page_render (page, cr);
++ cairo_restore (cr);
++
++ cairo_set_operator (cr, CAIRO_OPERATOR_DEST_OVER);
++ cairo_set_source_rgb (cr, 1.0, 1.0, 1.0);
++ cairo_paint (cr);
++
++ cairo_destroy (cr);
++
++ return surface;
++}
++
++static GdkPixbuf *
++render_page_to_pixbuf (PopplerPage *page,
++ int width,
++ int height,
++ double scale)
++{
++ GdkPixbuf *pixbuf;
++ cairo_surface_t *surface;
++
++ surface = render_page_to_surface (page, width, height, scale);
++ pixbuf = gdk_pixbuf_get_from_surface (surface, 0, 0,
++ cairo_image_surface_get_width (surface),
++ cairo_image_surface_get_height (surface));
++ cairo_surface_destroy (surface);
++
++ return pixbuf;
++}
++
+ static gint32
+ load_image (PopplerDocument *doc,
+ const gchar *filename,
+@@ -597,7 +837,7 @@ load_image (PopplerDocument *doc,
+ gdouble page_width;
+ gdouble page_height;
+
+- GdkPixbuf *buf;
++ GdkPixbuf *pixbuf;
+ gint width;
+ gint height;
+
+@@ -627,15 +867,13 @@ load_image (PopplerDocument *doc,
+ gimp_image_set_resolution (image_ID, resolution, resolution);
+ }
+
+- buf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, FALSE, 8, width, height);
+-
+- poppler_page_render_to_pixbuf (page, 0, 0, width, height, scale, 0, buf);
++ pixbuf = render_page_to_pixbuf (page, width, height, scale);
+
+- layer_from_pixbuf (image_ID, page_label, i, buf,
++ layer_from_pixbuf (image_ID, page_label, i, pixbuf,
+ doc_progress, 1.0 / pages->n_pages);
+
+ g_free (page_label);
+- g_object_unref (buf);
++ g_object_unref(pixbuf);
+
+ doc_progress = (double) (i + 1) / pages->n_pages;
+ gimp_progress_update (doc_progress);
+@@ -676,30 +914,22 @@ load_image (PopplerDocument *doc,
+ return image_ID;
+ }
+
+-static GdkPixbuf *
+-get_thumbnail (PopplerDocument *doc,
+- gint page_num,
+- gint preferred_size)
++static cairo_surface_t *
++get_thumb_surface (PopplerDocument *doc,
++ gint page_num,
++ gint preferred_size)
+ {
+ PopplerPage *page;
+- GdkPixbuf *pixbuf;
++ cairo_surface_t *surface;
+
+ page = poppler_document_get_page (doc, page_num);
+
+ if (! page)
+ return NULL;
+
+- /* XXX: Remove conditional when we depend on poppler 0.8.0, but also
+- * add configure check to make sure POPPLER_WITH_GDK is enabled!
+- */
+-#ifdef POPPLER_WITH_GDK
+- pixbuf = poppler_page_get_thumbnail_pixbuf (page);
+-#else
+- pixbuf = poppler_page_get_thumbnail (page);
+-#endif
+-
++ surface = poppler_page_get_thumbnail (page);
+
+- if (! pixbuf)
++ if (! surface)
+ {
+ gdouble width;
+ gdouble height;
+@@ -712,15 +942,28 @@ get_thumbnail (PopplerDocument *doc,
+ width *= scale;
+ height *= scale;
+
+- pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, FALSE, 8,
+- width, height);
+-
+- poppler_page_render_to_pixbuf (page,
+- 0, 0, width, height, scale, 0, pixbuf);
++ surface = render_page_to_surface (page, width, height, scale);
+ }
+
+ g_object_unref (page);
+
++ return surface;
++}
++
++static GdkPixbuf *
++get_thumb_pixbuf (PopplerDocument *doc,
++ gint page_num,
++ gint preferred_size)
++{
++ cairo_surface_t *surface;
++ GdkPixbuf *pixbuf;
++
++ surface = get_thumb_surface (doc, page_num, preferred_size);
++ pixbuf = gdk_pixbuf_get_from_surface (surface, 0, 0,
++ cairo_image_surface_get_width (surface),
++ cairo_image_surface_get_height (surface));
++ cairo_surface_destroy (surface);
++
+ return pixbuf;
+ }
+
+@@ -769,8 +1012,8 @@ thumbnail_thread (gpointer data)
+ idle_data->page_no = i;
+
+ /* FIXME get preferred size from somewhere? */
+- idle_data->pixbuf = get_thumbnail (thread_data->document, i,
+- THUMBNAIL_SIZE);
++ idle_data->pixbuf = get_thumb_pixbuf (thread_data->document, i,
++ THUMBNAIL_SIZE);
+
+ g_idle_add (idle_set_thumbnail, idle_data);
+
+--
+1.7.5
diff --git a/testing/gimp/gimp.install b/testing/gimp/gimp.install
new file mode 100644
index 000000000..c317fbaca
--- /dev/null
+++ b/testing/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/testing/gimp/libpng_compile.patch b/testing/gimp/libpng_compile.patch
new file mode 100644
index 000000000..26d3f9427
--- /dev/null
+++ b/testing/gimp/libpng_compile.patch
@@ -0,0 +1,984 @@
+Description: fix compilation against libpng 1.5
+Origin: upstream, 2.6 branch, diff of 2917a0e..e7469007
+Bug-Debian: http://bugs.debian.org/649972
+
+diff --git a/plug-ins/common/file-mng.c b/plug-ins/common/file-mng.c
+index 29dd155..8054504 100644
+--- a/plug-ins/common/file-mng.c
++++ b/plug-ins/common/file-mng.c
+@@ -136,7 +136,6 @@ struct mng_data_t
+ gint32 default_dispose;
+ };
+
+-
+ /* Values of the instance of the above struct when the plug-in is
+ * first invoked. */
+
+@@ -160,6 +159,21 @@ static struct mng_data_t mng_data =
+ };
+
+
++/* These are not saved or restored. */
++
++struct mng_globals_t
++{
++ gboolean has_trns;
++ png_bytep trans;
++ int num_trans;
++ gboolean has_plte;
++ png_colorp palette;
++ int num_palette;
++};
++
++static struct mng_globals_t mngg;
++
++
+ /* The output FILE pointer which is used by libmng;
+ * passed around as user data. */
+ struct mnglib_userdata_t
+@@ -196,7 +210,8 @@ static gboolean respin_cmap (png_structp png_ptr,
+ png_infop png_info_ptr,
+ guchar *remap,
+ gint32 image_id,
+- GimpDrawable *drawable);
++ GimpDrawable *drawable,
++ int *bit_depth);
+
+ static gboolean mng_save_image (const gchar *filename,
+ gint32 image_id,
+@@ -414,6 +429,18 @@ ia_has_transparent_pixels (guchar *pixels,
+ return FALSE;
+ }
+
++static int
++get_bit_depth_for_palette (int num_palette)
++{
++ if (num_palette <= 2)
++ return 1;
++ else if (num_palette <= 4)
++ return 2;
++ else if (num_palette <= 16)
++ return 4;
++ else
++ return 8;
++}
+
+ /* Spins the color map (palette) putting the transparent color at
+ * index 0 if there is space. If there isn't any space, warn the user
+@@ -422,11 +449,12 @@ ia_has_transparent_pixels (guchar *pixels,
+ */
+
+ static gboolean
+-respin_cmap (png_structp png_ptr,
+- png_infop png_info_ptr,
++respin_cmap (png_structp pp,
++ png_infop info,
+ guchar *remap,
+ gint32 image_id,
+- GimpDrawable *drawable)
++ GimpDrawable *drawable,
++ int *bit_depth)
+ {
+ static guchar trans[] = { 0 };
+ guchar *before;
+@@ -464,10 +492,13 @@ respin_cmap (png_structp png_ptr,
+
+ if (transparent != -1)
+ {
+- png_color palette[256] = { {0, 0, 0} };
++ static png_color palette[256] = { {0, 0, 0} };
+ gint i;
+
+- png_set_tRNS (png_ptr, png_info_ptr, (png_bytep) trans, 1, NULL);
++ /* Set tRNS chunk values for writing later. */
++ mngg.has_trns = TRUE;
++ mngg.trans = trans;
++ mngg.num_trans = 1;
+
+ /* Transform all pixels with a value = transparent to
+ * 0 and vice versa to compensate for re-ordering in palette
+@@ -489,7 +520,12 @@ respin_cmap (png_structp png_ptr,
+ palette[i].blue = before[3 * remap[i] + 2];
+ }
+
+- png_set_PLTE (png_ptr, png_info_ptr, (png_colorp) palette, colors);
++ /* Set PLTE chunk values for writing later. */
++ mngg.has_plte = TRUE;
++ mngg.palette = palette;
++ mngg.num_palette = colors;
++
++ *bit_depth = get_bit_depth_for_palette (colors);
+
+ return TRUE;
+ }
+@@ -500,7 +536,10 @@ respin_cmap (png_structp png_ptr,
+ }
+ }
+
+- png_set_PLTE (png_ptr, png_info_ptr, (png_colorp) before, colors);
++ mngg.has_plte = TRUE;
++ mngg.palette = (png_colorp) before;
++ mngg.num_palette = colors;
++ *bit_depth = get_bit_depth_for_palette (colors);
+
+ return FALSE;
+ }
+@@ -777,7 +816,6 @@ mng_save_image (const gchar *filename,
+
+ for (i = (num_layers - 1); i >= 0; i--)
+ {
+- gint num_colors;
+ GimpImageType layer_drawable_type;
+ GimpDrawable *layer_drawable;
+ gint layer_offset_x, layer_offset_y;
+@@ -795,8 +833,8 @@ mng_save_image (const gchar *filename,
+ gchar frame_mode;
+ int frame_delay;
+ gchar *temp_file_name;
+- png_structp png_ptr;
+- png_infop png_info_ptr;
++ png_structp pp;
++ png_infop info;
+ FILE *infile, *outfile;
+ int num_passes;
+ int tile_height;
+@@ -804,6 +842,8 @@ mng_save_image (const gchar *filename,
+ int pass, j, k, begin, end, num;
+ guchar *fixed;
+ guchar layer_remap[256];
++ int color_type;
++ int bit_depth;
+
+ layer_name = gimp_drawable_get_name (layers[i]);
+ layer_chunks_type = parse_chunks_type_from_layer_name (layer_name);
+@@ -948,9 +988,9 @@ mng_save_image (const gchar *filename,
+ goto err3;
+ }
+
+- png_ptr = png_create_write_struct (PNG_LIBPNG_VER_STRING,
++ pp = png_create_write_struct (PNG_LIBPNG_VER_STRING,
+ NULL, NULL, NULL);
+- if (NULL == png_ptr)
++ if (NULL == pp)
+ {
+ g_warning ("Unable to png_create_write_struct() in mng_save_image()");
+ fclose (outfile);
+@@ -958,89 +998,97 @@ mng_save_image (const gchar *filename,
+ goto err3;
+ }
+
+- png_info_ptr = png_create_info_struct (png_ptr);
+- if (NULL == png_info_ptr)
++ info = png_create_info_struct (pp);
++ if (NULL == info)
+ {
+ g_warning
+ ("Unable to png_create_info_struct() in mng_save_image()");
+- png_destroy_write_struct (&png_ptr, NULL);
++ png_destroy_write_struct (&pp, NULL);
+ fclose (outfile);
+ g_unlink (temp_file_name);
+ goto err3;
+ }
+
+- if (setjmp (png_ptr->jmpbuf) != 0)
++ if (setjmp (png_jmpbuf (pp)) != 0)
+ {
+ g_warning ("HRM saving PNG in mng_save_image()");
+- png_destroy_write_struct (&png_ptr, &png_info_ptr);
++ png_destroy_write_struct (&pp, &info);
+ fclose (outfile);
+ g_unlink (temp_file_name);
+ goto err3;
+ }
+
+- png_init_io (png_ptr, outfile);
+- png_set_compression_level (png_ptr, mng_data.compression_level);
++ png_init_io (pp, outfile);
+
+- png_info_ptr->width = layer_cols;
+- png_info_ptr->height = layer_rows;
+- png_info_ptr->interlace_type = (mng_data.interlaced == 0 ? 0 : 1);
+- png_info_ptr->bit_depth = 8;
++ bit_depth = 8;
+
+ switch (layer_drawable_type)
+ {
+ case GIMP_RGB_IMAGE:
+- png_info_ptr->color_type = PNG_COLOR_TYPE_RGB;
++ color_type = PNG_COLOR_TYPE_RGB;
+ break;
+ case GIMP_RGBA_IMAGE:
+- png_info_ptr->color_type = PNG_COLOR_TYPE_RGB_ALPHA;
++ color_type = PNG_COLOR_TYPE_RGB_ALPHA;
+ break;
+ case GIMP_GRAY_IMAGE:
+- png_info_ptr->color_type = PNG_COLOR_TYPE_GRAY;
++ color_type = PNG_COLOR_TYPE_GRAY;
+ break;
+ case GIMP_GRAYA_IMAGE:
+- png_info_ptr->color_type = PNG_COLOR_TYPE_GRAY_ALPHA;
++ color_type = PNG_COLOR_TYPE_GRAY_ALPHA;
+ break;
+ case GIMP_INDEXED_IMAGE:
+- png_info_ptr->color_type = PNG_COLOR_TYPE_PALETTE;
+- png_info_ptr->valid |= PNG_INFO_PLTE;
+- png_info_ptr->palette =
+- (png_colorp) gimp_image_get_colormap (image_id, &num_colors);
+- png_info_ptr->num_palette = num_colors;
++ color_type = PNG_COLOR_TYPE_PALETTE;
++ mngg.has_plte = TRUE;
++ mngg.palette = (png_colorp)
++ gimp_image_get_colormap (image_id, &mngg.num_palette);
++ bit_depth = get_bit_depth_for_palette (mngg.num_palette);
+ break;
+ case GIMP_INDEXEDA_IMAGE:
+- png_info_ptr->color_type = PNG_COLOR_TYPE_PALETTE;
++ color_type = PNG_COLOR_TYPE_PALETTE;
+ layer_has_unique_palette =
+- respin_cmap (png_ptr, png_info_ptr, layer_remap,
+- image_id, layer_drawable);
++ respin_cmap (pp, info, layer_remap,
++ image_id, layer_drawable,
++ &bit_depth);
+ break;
+ default:
+ g_warning ("This can't be!\n");
+- png_destroy_write_struct (&png_ptr, &png_info_ptr);
++ png_destroy_write_struct (&pp, &info);
+ fclose (outfile);
+ g_unlink (temp_file_name);
+ goto err3;
+ }
+
+- if ((png_info_ptr->valid & PNG_INFO_PLTE) == PNG_INFO_PLTE)
++ /* Note: png_set_IHDR() must be called before any other
++ png_set_*() functions. */
++ png_set_IHDR (pp, info, layer_cols, layer_rows,
++ bit_depth,
++ color_type,
++ mng_data.interlaced ? PNG_INTERLACE_ADAM7 : PNG_INTERLACE_NONE,
++ PNG_COMPRESSION_TYPE_BASE,
++ PNG_FILTER_TYPE_BASE);
++
++ if (mngg.has_trns)
++ {
++ png_set_tRNS (pp, info, mngg.trans, mngg.num_trans, NULL);
++ }
++
++ if (mngg.has_plte)
+ {
+- if (png_info_ptr->num_palette <= 2)
+- png_info_ptr->bit_depth = 1;
+- else if (png_info_ptr->num_palette <= 4)
+- png_info_ptr->bit_depth = 2;
+- else if (png_info_ptr->num_palette <= 16)
+- png_info_ptr->bit_depth = 4;
++ png_set_PLTE (pp, info, mngg.palette, mngg.num_palette);
+ }
+
+- png_write_info (png_ptr, png_info_ptr);
++ png_set_compression_level (pp, mng_data.compression_level);
++
++ png_write_info (pp, info);
+
+ if (mng_data.interlaced != 0)
+- num_passes = png_set_interlace_handling (png_ptr);
++ num_passes = png_set_interlace_handling (pp);
+ else
+ num_passes = 1;
+
+- if ((png_info_ptr->color_type == PNG_COLOR_TYPE_PALETTE) &&
+- (png_info_ptr->bit_depth < 8))
+- png_set_packing (png_ptr);
++ if ((color_type == PNG_COLOR_TYPE_PALETTE) &&
++ (bit_depth < 8))
++ png_set_packing (pp);
+
+ tile_height = gimp_tile_height ();
+ layer_pixel = g_new (guchar, tile_height * layer_cols * layer_bpp);
+@@ -1065,7 +1113,7 @@ mng_save_image (const gchar *filename,
+ gimp_pixel_rgn_get_rect (&layer_pixel_rgn, layer_pixel, 0,
+ begin, layer_cols, num);
+
+- if ((png_info_ptr->valid & PNG_INFO_tRNS) == PNG_INFO_tRNS)
++ if (png_get_valid (pp, info, PNG_INFO_tRNS))
+ {
+ for (j = 0; j < num; j++)
+ {
+@@ -1077,7 +1125,7 @@ mng_save_image (const gchar *filename,
+ }
+ }
+ else
+- if (((png_info_ptr->valid & PNG_INFO_PLTE) == PNG_INFO_PLTE)
++ if (png_get_valid (pp, info, PNG_INFO_PLTE)
+ && (layer_bpp == 2))
+ {
+ for (j = 0; j < num; j++)
+@@ -1089,12 +1137,12 @@ mng_save_image (const gchar *filename,
+ }
+ }
+
+- png_write_rows (png_ptr, layer_pixels, num);
++ png_write_rows (pp, layer_pixels, num);
+ }
+ }
+
+- png_write_end (png_ptr, png_info_ptr);
+- png_destroy_write_struct (&png_ptr, &png_info_ptr);
++ png_write_end (pp, info);
++ png_destroy_write_struct (&pp, &info);
+
+ g_free (layer_pixels);
+ g_free (layer_pixel);
+diff --git a/plug-ins/common/file-png.c b/plug-ins/common/file-png.c
+index d42afff..8fa8983 100644
+--- a/plug-ins/common/file-png.c
++++ b/plug-ins/common/file-png.c
+@@ -106,6 +106,17 @@ typedef struct
+ }
+ PngSaveGui;
+
++/* These are not saved or restored. */
++typedef struct
++{
++ gboolean has_trns;
++ png_bytep trans;
++ int num_trans;
++ gboolean has_plte;
++ png_colorp palette;
++ int num_palette;
++}
++PngGlobals;
+
+ /*
+ * Local functions...
+@@ -127,7 +138,7 @@ static gboolean save_image (const gchar *filename,
+ gint32 orig_image_ID,
+ GError **error);
+
+-static void respin_cmap (png_structp pp,
++static int respin_cmap (png_structp pp,
+ png_infop info,
+ guchar *remap,
+ gint32 image_ID,
+@@ -175,6 +186,7 @@ static const PngSaveVals defaults =
+ };
+
+ static PngSaveVals pngvals;
++static PngGlobals pngg;
+
+
+ /*
+@@ -653,13 +665,25 @@ on_read_error (png_structp png_ptr, png_const_charp error_msg)
+ error_data->drawable->width, num);
+ }
+
+- longjmp (png_ptr->jmpbuf, 1);
++ longjmp (png_jmpbuf (png_ptr), 1);
++}
++
++static int
++get_bit_depth_for_palette (int num_palette)
++{
++ if (num_palette <= 2)
++ return 1;
++ else if (num_palette <= 4)
++ return 2;
++ else if (num_palette <= 16)
++ return 4;
++ else
++ return 8;
+ }
+
+ /*
+ * 'load_image()' - Load a PNG image into a new image window.
+ */
+-
+ static gint32
+ load_image (const gchar *filename,
+ gboolean interactive,
+@@ -695,9 +719,20 @@ load_image (const gchar *filename,
+ gint num_texts;
+
+ pp = png_create_read_struct (PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
++ if (!pp)
++ {
++ /* this could happen if the compile time and run-time libpng
++ versions do not match. */
++
++ g_set_error (error, 0, 0,
++ _("Error creating PNG read struct while saving '%s'."),
++ gimp_filename_to_utf8 (filename));
++ return -1;
++ }
++
+ info = png_create_info_struct (pp);
+
+- if (setjmp (pp->jmpbuf))
++ if (setjmp (png_jmpbuf (pp)))
+ {
+ g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED,
+ _("Error while reading '%s'. File corrupted?"),
+@@ -705,10 +740,6 @@ load_image (const gchar *filename,
+ return image;
+ }
+
+- /* initialise image here, thus avoiding compiler warnings */
+-
+- image = -1;
+-
+ /*
+ * Open the file and initialize the PNG read "engine"...
+ */
+@@ -738,17 +769,19 @@ load_image (const gchar *filename,
+ * Latest attempt, this should be my best yet :)
+ */
+
+- if (info->bit_depth == 16)
++ if (png_get_bit_depth (pp, info) == 16)
+ {
+ png_set_strip_16 (pp);
+ }
+
+- if (info->color_type == PNG_COLOR_TYPE_GRAY && info->bit_depth < 8)
++ if (png_get_color_type (pp, info) == PNG_COLOR_TYPE_GRAY &&
++ png_get_bit_depth (pp, info) < 8)
+ {
+ png_set_expand (pp);
+ }
+
+- if (info->color_type == PNG_COLOR_TYPE_PALETTE && info->bit_depth < 8)
++ if (png_get_color_type (pp, info) == PNG_COLOR_TYPE_PALETTE &&
++ png_get_bit_depth (pp, info) < 8)
+ {
+ png_set_packing (pp);
+ }
+@@ -757,8 +790,8 @@ load_image (const gchar *filename,
+ * Expand G+tRNS to GA, RGB+tRNS to RGBA
+ */
+
+- if (info->color_type != PNG_COLOR_TYPE_PALETTE &&
+- (info->valid & PNG_INFO_tRNS))
++ if (png_get_color_type (pp, info) != PNG_COLOR_TYPE_PALETTE &&
++ png_get_valid (pp, info, PNG_INFO_tRNS))
+ {
+ png_set_expand (pp);
+ }
+@@ -775,7 +808,7 @@ load_image (const gchar *filename,
+ */
+
+ if (png_get_valid (pp, info, PNG_INFO_tRNS) &&
+- info->color_type == PNG_COLOR_TYPE_PALETTE)
++ png_get_color_type (pp, info) == PNG_COLOR_TYPE_PALETTE)
+ {
+ png_get_tRNS (pp, info, &alpha_ptr, &num, NULL);
+ /* Copy the existing alpha values from the tRNS chunk */
+@@ -797,7 +830,7 @@ load_image (const gchar *filename,
+
+ png_read_update_info (pp, info);
+
+- switch (info->color_type)
++ switch (png_get_color_type (pp, info))
+ {
+ case PNG_COLOR_TYPE_RGB: /* RGB */
+ bpp = 3;
+@@ -836,7 +869,9 @@ load_image (const gchar *filename,
+ return -1;
+ }
+
+- image = gimp_image_new (info->width, info->height, image_type);
++ image = gimp_image_new (png_get_image_width (pp, info),
++ png_get_image_height (pp, info),
++ image_type);
+ if (image == -1)
+ {
+ g_set_error (error, 0, 0,
+@@ -849,7 +884,9 @@ load_image (const gchar *filename,
+ * Create the "background" layer to hold the image...
+ */
+
+- layer = gimp_layer_new (image, _("Background"), info->width, info->height,
++ layer = gimp_layer_new (image, _("Background"),
++ png_get_image_width (pp, info),
++ png_get_image_height (pp, info),
+ layer_type, 100, GIMP_NORMAL_MODE);
+ gimp_image_add_layer (image, layer, 0);
+
+@@ -883,7 +920,8 @@ load_image (const gchar *filename,
+
+ gimp_layer_set_offsets (layer, offset_x, offset_y);
+
+- if ((abs (offset_x) > info->width) || (abs (offset_y) > info->height))
++ if ((abs (offset_x) > png_get_image_width (pp, info)) ||
++ (abs (offset_y) > png_get_image_height (pp, info)))
+ {
+ if (interactive)
+ g_message (_("The PNG file specifies an offset that caused "
+@@ -938,23 +976,27 @@ load_image (const gchar *filename,
+
+ empty = 0; /* by default assume no full transparent palette entries */
+
+- if (info->color_type & PNG_COLOR_MASK_PALETTE)
++ if (png_get_color_type (pp, info) & PNG_COLOR_MASK_PALETTE)
+ {
++ png_colorp palette;
++ int num_palette;
++
++ png_get_PLTE (pp, info, &palette, &num_palette);
+ if (png_get_valid (pp, info, PNG_INFO_tRNS))
+ {
+ for (empty = 0; empty < 256 && alpha[empty] == 0; ++empty)
+ /* Calculates number of fully transparent "empty" entries */;
+
+ /* keep at least one entry */
+- empty = MIN (empty, info->num_palette - 1);
++ empty = MIN (empty, num_palette - 1);
+
+- gimp_image_set_colormap (image, (guchar *) (info->palette + empty),
+- info->num_palette - empty);
++ gimp_image_set_colormap (image, (guchar *) (palette + empty),
++ num_palette - empty);
+ }
+ else
+ {
+- gimp_image_set_colormap (image, (guchar *) info->palette,
+- info->num_palette);
++ gimp_image_set_colormap (image, (guchar *) palette,
++ num_palette);
+ }
+ }
+
+@@ -972,18 +1014,19 @@ load_image (const gchar *filename,
+ */
+
+ tile_height = gimp_tile_height ();
+- pixel = g_new0 (guchar, tile_height * info->width * bpp);
++ pixel = g_new0 (guchar, tile_height * png_get_image_width (pp, info) * bpp);
+ pixels = g_new (guchar *, tile_height);
+
+ for (i = 0; i < tile_height; i++)
+- pixels[i] = pixel + info->width * info->channels * i;
++ pixels[i] = pixel + png_get_image_width (pp, info) *
++ png_get_channels (pp, info) * i;
+
+ /* Install our own error handler to handle incomplete PNG files better */
+ error_data.drawable = drawable;
+ error_data.pixel = pixel;
+ error_data.tile_height = tile_height;
+- error_data.width = info->width;
+- error_data.height = info->height;
++ error_data.width = png_get_image_width (pp, info);
++ error_data.height = png_get_image_height (pp, info);
+ error_data.bpp = bpp;
+ error_data.pixel_rgn = &pixel_rgn;
+
+@@ -996,10 +1039,11 @@ load_image (const gchar *filename,
+ */
+
+ for (begin = 0, end = tile_height;
+- begin < info->height; begin += tile_height, end += tile_height)
++ begin < png_get_image_height (pp, info);
++ begin += tile_height, end += tile_height)
+ {
+- if (end > info->height)
+- end = info->height;
++ if (end > png_get_image_height (pp, info))
++ end = png_get_image_height (pp, info);
+
+ num = end - begin;
+
+@@ -1016,11 +1060,13 @@ load_image (const gchar *filename,
+ gimp_pixel_rgn_set_rect (&pixel_rgn, pixel, 0, begin,
+ drawable->width, num);
+
+- memset (pixel, 0, tile_height * info->width * bpp);
++ memset (pixel, 0,
++ tile_height * png_get_image_width (pp, info) * bpp);
+
+- gimp_progress_update (((gdouble) pass +
+- (gdouble) end / (gdouble) info->height) /
+- (gdouble) num_passes);
++ gimp_progress_update
++ (((gdouble) pass +
++ (gdouble) end / (gdouble) png_get_image_height (pp, info)) /
++ (gdouble) num_passes);
+ }
+ }
+
+@@ -1189,7 +1235,6 @@ save_image (const gchar *filename,
+ GimpPixelRgn pixel_rgn; /* Pixel region for layer */
+ png_structp pp; /* PNG read pointer */
+ png_infop info; /* PNG info pointer */
+- gint num_colors; /* Number of colors in colormap */
+ gint offx, offy; /* Drawable offsets from origin */
+ guchar **pixels, /* Pixel rows */
+ *fixed, /* Fixed-up pixel data */
+@@ -1200,56 +1245,28 @@ save_image (const gchar *filename,
+ guchar red, green, blue; /* Used for palette background */
+ time_t cutime; /* Time since epoch */
+ struct tm *gmt; /* GMT broken down */
++ int color_type;
++ int bit_depth;
+
+ guchar remap[256]; /* Re-mapping for the palette */
+
+ png_textp text = NULL;
+
+- if (pngvals.comment)
++ pp = png_create_write_struct (PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
++ if (!pp)
+ {
+- GimpParasite *parasite;
+- gsize text_length = 0;
+-
+- parasite = gimp_image_parasite_find (orig_image_ID, "gimp-comment");
+- if (parasite)
+- {
+- gchar *comment = g_strndup (gimp_parasite_data (parasite),
+- gimp_parasite_data_size (parasite));
++ /* this could happen if the compile time and run-time libpng
++ versions do not match. */
+
+- gimp_parasite_free (parasite);
+-
+- text = g_new0 (png_text, 1);
+- text->key = "Comment";
+-
+-#ifdef PNG_iTXt_SUPPORTED
+-
+- text->compression = PNG_ITXT_COMPRESSION_NONE;
+- text->text = comment;
+- text->itxt_length = strlen (comment);
+-
+-#else
+-
+- text->compression = PNG_TEXT_COMPRESSION_NONE;
+- text->text = g_convert (comment, -1,
+- "ISO-8859-1", "UTF-8",
+- NULL, &text_length,
+- NULL);
+- text->text_length = text_length;
+-
+-#endif
+-
+- if (!text->text)
+- {
+- g_free (text);
+- text = NULL;
+- }
+- }
++ g_set_error (error, 0, 0,
++ _("Error creating PNG write struct while saving '%s'."),
++ gimp_filename_to_utf8 (filename));
++ return FALSE;
+ }
+
+- pp = png_create_write_struct (PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
+ info = png_create_info_struct (pp);
+
+- if (setjmp (pp->jmpbuf))
++ if (setjmp (png_jmpbuf (pp)))
+ {
+ g_set_error (error, 0, 0,
+ _("Error while saving '%s'. Could not save image."),
+@@ -1257,9 +1274,6 @@ save_image (const gchar *filename,
+ return FALSE;
+ }
+
+- if (text)
+- png_set_text (pp, info, text, 1);
+-
+ /*
+ * Open the file and initialize the PNG write "engine"...
+ */
+@@ -1286,17 +1300,6 @@ save_image (const gchar *filename,
+ type = gimp_drawable_type (drawable_ID);
+
+ /*
+- * Set the image dimensions, bit depth, interlacing and compression
+- */
+-
+- png_set_compression_level (pp, pngvals.compression_level);
+-
+- info->width = drawable->width;
+- info->height = drawable->height;
+- info->bit_depth = 8;
+- info->interlace_type = pngvals.interlaced;
+-
+- /*
+ * Initialise remap[]
+ */
+ for (i = 0; i < 256; i++)
+@@ -1306,42 +1309,44 @@ save_image (const gchar *filename,
+ * Set color type and remember bytes per pixel count
+ */
+
++ bit_depth = 8;
++
+ switch (type)
+ {
+ case GIMP_RGB_IMAGE:
+- info->color_type = PNG_COLOR_TYPE_RGB;
++ color_type = PNG_COLOR_TYPE_RGB;
+ bpp = 3;
+ break;
+
+ case GIMP_RGBA_IMAGE:
+- info->color_type = PNG_COLOR_TYPE_RGB_ALPHA;
++ color_type = PNG_COLOR_TYPE_RGB_ALPHA;
+ bpp = 4;
+ break;
+
+ case GIMP_GRAY_IMAGE:
+- info->color_type = PNG_COLOR_TYPE_GRAY;
++ color_type = PNG_COLOR_TYPE_GRAY;
+ bpp = 1;
+ break;
+
+ case GIMP_GRAYA_IMAGE:
+- info->color_type = PNG_COLOR_TYPE_GRAY_ALPHA;
++ color_type = PNG_COLOR_TYPE_GRAY_ALPHA;
+ bpp = 2;
+ break;
+
+ case GIMP_INDEXED_IMAGE:
+ bpp = 1;
+- info->color_type = PNG_COLOR_TYPE_PALETTE;
+- info->valid |= PNG_INFO_PLTE;
+- info->palette =
+- (png_colorp) gimp_image_get_colormap (image_ID, &num_colors);
+- info->num_palette = num_colors;
++ color_type = PNG_COLOR_TYPE_PALETTE;
++ pngg.has_plte = TRUE;
++ pngg.palette = (png_colorp) gimp_image_get_colormap (image_ID,
++ &pngg.num_palette);
++ bit_depth = get_bit_depth_for_palette (pngg.num_palette);
+ break;
+
+ case GIMP_INDEXEDA_IMAGE:
+ bpp = 2;
+- info->color_type = PNG_COLOR_TYPE_PALETTE;
++ color_type = PNG_COLOR_TYPE_PALETTE;
+ /* fix up transparency */
+- respin_cmap (pp, info, remap, image_ID, drawable);
++ bit_depth = respin_cmap (pp, info, remap, image_ID, drawable);
+ break;
+
+ default:
+@@ -1349,21 +1354,29 @@ save_image (const gchar *filename,
+ return FALSE;
+ }
+
+- /*
+- * Fix bit depths for (possibly) smaller colormap images
+- */
++ /* Note: png_set_IHDR() must be called before any other png_set_*()
++ functions. */
++ png_set_IHDR (pp, info, drawable->width, drawable->height,
++ bit_depth,
++ color_type,
++ pngvals.interlaced ? PNG_INTERLACE_ADAM7 : PNG_INTERLACE_NONE,
++ PNG_COMPRESSION_TYPE_BASE,
++ PNG_FILTER_TYPE_BASE);
++
++ if (pngg.has_trns)
++ {
++ png_set_tRNS (pp, info, pngg.trans, pngg.num_trans, NULL);
++ }
+
+- if (info->valid & PNG_INFO_PLTE)
++ if (pngg.has_plte)
+ {
+- if (info->num_palette <= 2)
+- info->bit_depth = 1;
+- else if (info->num_palette <= 4)
+- info->bit_depth = 2;
+- else if (info->num_palette <= 16)
+- info->bit_depth = 4;
+- /* otherwise the default is fine */
++ png_set_PLTE (pp, info, pngg.palette, pngg.num_palette);
+ }
+
++ /* Set the compression level */
++
++ png_set_compression_level (pp, pngvals.compression_level);
++
+ /* All this stuff is optional extras, if the user is aiming for smallest
+ possible file size she can turn them all off */
+
+@@ -1462,6 +1475,52 @@ save_image (const gchar *filename,
+ }
+ #endif
+
++ if (pngvals.comment)
++ {
++ GimpParasite *parasite;
++#ifndef PNG_iTXt_SUPPORTED
++ gsize text_length = 0;
++#endif /* PNG_iTXt_SUPPORTED */
++
++ parasite = gimp_image_parasite_find (orig_image_ID, "gimp-comment");
++ if (parasite)
++ {
++ gchar *comment = g_strndup (gimp_parasite_data (parasite),
++ gimp_parasite_data_size (parasite));
++
++ gimp_parasite_free (parasite);
++
++ text = g_new0 (png_text, 1);
++ text->key = "Comment";
++
++#ifdef PNG_iTXt_SUPPORTED
++
++ text->compression = PNG_ITXT_COMPRESSION_NONE;
++ text->text = comment;
++ text->itxt_length = strlen (comment);
++
++#else
++
++ text->compression = PNG_TEXT_COMPRESSION_NONE;
++ text->text = g_convert (comment, -1,
++ "ISO-8859-1", "UTF-8",
++ NULL, &text_length,
++ NULL);
++ text->text_length = text_length;
++
++#endif
++
++ if (!text->text)
++ {
++ g_free (text);
++ text = NULL;
++ }
++ }
++ }
++
++ if (text)
++ png_set_text (pp, info, text, 1);
++
+ png_write_info (pp, info);
+
+ /*
+@@ -1477,7 +1536,8 @@ save_image (const gchar *filename,
+ * Convert unpacked pixels to packed if necessary
+ */
+
+- if (info->color_type == PNG_COLOR_TYPE_PALETTE && info->bit_depth < 8)
++ if (color_type == PNG_COLOR_TYPE_PALETTE &&
++ bit_depth < 8)
+ png_set_packing (pp);
+
+ /*
+@@ -1507,7 +1567,9 @@ save_image (const gchar *filename,
+
+ gimp_pixel_rgn_get_rect (&pixel_rgn, pixel, 0, begin,
+ drawable->width, num);
+- /*if we are with a RGBA image and have to pre-multiply the alpha channel */
++
++ /* If we are with a RGBA image and have to pre-multiply the
++ alpha channel */
+ if (bpp == 4 && ! pngvals.save_transp_pixels)
+ {
+ for (i = 0; i < num; ++i)
+@@ -1529,7 +1591,7 @@ save_image (const gchar *filename,
+
+ /* If we're dealing with a paletted image with
+ * transparency set, write out the remapped palette */
+- if (info->valid & PNG_INFO_tRNS)
++ if (png_get_valid (pp, info, PNG_INFO_tRNS))
+ {
+ guchar inverse_remap[256];
+
+@@ -1547,9 +1609,11 @@ save_image (const gchar *filename,
+ }
+ }
+ }
++
+ /* Otherwise if we have a paletted image and transparency
+ * couldn't be set, we ignore the alpha channel */
+- else if (info->valid & PNG_INFO_PLTE && bpp == 2)
++ else if (png_get_valid (pp, info, PNG_INFO_PLTE) &&
++ bpp == 2)
+ {
+ for (i = 0; i < num; ++i)
+ {
+@@ -1564,7 +1628,7 @@ save_image (const gchar *filename,
+ png_write_rows (pp, pixels, num);
+
+ gimp_progress_update (((double) pass + (double) end /
+- (double) info->height) /
++ (double) drawable->height) /
+ (double) num_passes);
+ }
+ }
+@@ -1694,14 +1758,14 @@ find_unused_ia_color (GimpDrawable *drawable,
+ }
+
+
+-static void
++static int
+ respin_cmap (png_structp pp,
+ png_infop info,
+ guchar *remap,
+ gint32 image_ID,
+ GimpDrawable *drawable)
+ {
+- static const guchar trans[] = { 0 };
++ static guchar trans[] = { 0 };
+
+ gint colors;
+ guchar *before;
+@@ -1728,10 +1792,13 @@ respin_cmap (png_structp pp,
+ * index - do like gif2png and swap
+ * index 0 and index transparent */
+ {
+- png_color palette[256];
++ static png_color palette[256];
+ gint i;
+
+- png_set_tRNS (pp, info, (png_bytep) trans, 1, NULL);
++ /* Set tRNS chunk values for writing later. */
++ pngg.has_trns = TRUE;
++ pngg.trans = trans;
++ pngg.num_trans = 1;
+
+ /* Transform all pixels with a value = transparent to
+ * 0 and vice versa to compensate for re-ordering in palette
+@@ -1752,7 +1819,10 @@ respin_cmap (png_structp pp,
+ palette[i].blue = before[3 * remap[i] + 2];
+ }
+
+- png_set_PLTE (pp, info, palette, colors);
++ /* Set PLTE chunk values for writing later. */
++ pngg.has_plte = TRUE;
++ pngg.palette = palette;
++ pngg.num_palette = colors;
+ }
+ else
+ {
+@@ -1760,14 +1830,22 @@ respin_cmap (png_structp pp,
+ * transparency & just use the full palette */
+ g_message (_("Couldn't losslessly save transparency, "
+ "saving opacity instead."));
+- png_set_PLTE (pp, info, (png_colorp) before, colors);
++
++ /* Set PLTE chunk values for writing later. */
++ pngg.has_plte = TRUE;
++ pngg.palette = (png_colorp) before;
++ pngg.num_palette = colors;
+ }
+ }
+ else
+ {
+- png_set_PLTE (pp, info, (png_colorp) before, colors);
++ /* Set PLTE chunk values for writing later. */
++ pngg.has_plte = TRUE;
++ pngg.palette = (png_colorp) before;
++ pngg.num_palette = colors;
+ }
+
++ return get_bit_depth_for_palette (colors);
+ }
+
+ static gboolean
diff --git a/testing/gimp/linux.gpl b/testing/gimp/linux.gpl
new file mode 100644
index 000000000..0a73d8979
--- /dev/null
+++ b/testing/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/testing/gimp/uri-backend-libcurl.patch b/testing/gimp/uri-backend-libcurl.patch
new file mode 100644
index 000000000..85da2fc7f
--- /dev/null
+++ b/testing/gimp/uri-backend-libcurl.patch
@@ -0,0 +1,77 @@
+diff -aur gimp-2.6.11/plug-ins/file-uri/uri-backend-libcurl.c gimp-2.6.11.patched/plug-ins/file-uri/uri-backend-libcurl.c
+--- gimp-2.6.11/plug-ins/file-uri/uri-backend-libcurl.c 2010-07-03 00:51:59.000000000 +0200
++++ gimp-2.6.11.patched/plug-ins/file-uri/uri-backend-libcurl.c 2011-06-23 19:15:30.000000000 +0200
+@@ -4,9 +4,9 @@
+ * libcurl backend for the URI plug-in
+ * Copyright (C) 2006 Mukund Sivaraman <muks@mukund.org>
+ *
+- * This program is free software; you can redistribute it and/or modify
++ * 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
++ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+@@ -15,8 +15,7 @@
+ * 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.
++ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+ #include "config.h"
+@@ -24,7 +23,6 @@
+ #include <errno.h>
+
+ #include <curl/curl.h>
+-#include <curl/types.h>
+ #include <curl/easy.h>
+
+ #include <glib/gstdio.h>
+@@ -63,7 +61,7 @@
+
+ vinfo = curl_version_info (CURLVERSION_NOW);
+
+- protocols = g_string_new ("http:,ftp:");
++ protocols = g_string_new ("http:,ftp:,gopher:");
+
+ if (vinfo->features & CURL_VERSION_SSL)
+ {
+@@ -153,7 +151,7 @@
+ FILE *out_file;
+ CURL *curl_handle;
+ CURLcode result;
+- gint response_code;
++ glong response_code;
+
+ gimp_progress_init (_("Connecting to server"));
+
+@@ -195,12 +193,12 @@
+
+ curl_easy_getinfo (curl_handle, CURLINFO_RESPONSE_CODE, &response_code);
+
+- if (response_code != 200)
++ if (response_code != 200 && response_code != 226 && response_code != 0)
+ {
+ fclose (out_file);
+ g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED,
+ _("Opening '%s' for reading resulted in HTTP "
+- "response code: %d"),
++ "response code: %ld"),
+ uri, response_code);
+ curl_easy_cleanup (curl_handle);
+ return FALSE;
+@@ -224,3 +222,10 @@
+
+ return FALSE;
+ }
++
++gchar *
++uri_backend_map_image (const gchar *uri,
++ GimpRunMode run_mode)
++{
++ return NULL;
++}
diff --git a/testing/glade-perl/PKGBUILD b/testing/glade-perl/PKGBUILD
new file mode 100644
index 000000000..9e92a55f5
--- /dev/null
+++ b/testing/glade-perl/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 148123 2012-01-30 18:46:31Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=glade-perl
+_realname=Gtk2-GladeXML
+pkgver=1.007
+pkgrel=5
+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
+}
+
+package() {
+ cd "${srcdir}/${_realname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/testing/glhack/PKGBUILD b/testing/glhack/PKGBUILD
new file mode 100644
index 000000000..d4c39bee2
--- /dev/null
+++ b/testing/glhack/PKGBUILD
@@ -0,0 +1,54 @@
+# $Id: PKGBUILD 148125 2012-01-30 18:46:34Z ibiru $
+# Maintainer: Eric Bélanger <eric@archlinux.org>
+
+pkgname=glhack
+pkgver=1.2
+pkgrel=6
+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' 'libgl')
+makedepends=('mesa')
+options=('!makeflags')
+install=glhack.install
+source=(http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.gz glhack-libpng15.patch)
+sha1sums=('7dc46e6bd4a3c2ec10ab4d314acfbb30cefc6eae'
+ '4cf1a13e76cc1f1eb3708d42c74b85b7f321092d')
+
+build(){
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -p0 -i ../glhack-libpng15.patch
+ sed -i 's|/usr/lib/games|/usr/share|' include/config.h
+ sed -i 's|/var/lib/games/glhack|/var/games/glhack|' include/unixconf.h
+ sed -i -e 's|PREFIX = /usr|PREFIX = $(DESTDIR)/usr|' Makefile
+ sed -i -e 's|VARDIR = /var/lib/games/glhack|VARDIR = $(DESTDIR)/var/games/glhack|' Makefile
+ sed -i -e 's|/usr/man/man6|$(DESTDIR)/usr/share/man/man6|' doc/Makefile
+ sed -i -e 's|GAMEDIR = $(PREFIX)/lib/games/$(GAME)|GAMEDIR = $(PREFIX)/share/$(GAME)|' Makefile
+
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ install -d "${pkgdir}"/usr/share/man/man{5,6}
+ make DESTDIR="$pkgdir" install
+ 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/testing/glhack/glhack-libpng15.patch b/testing/glhack/glhack-libpng15.patch
new file mode 100644
index 000000000..d8e644d1c
--- /dev/null
+++ b/testing/glhack/glhack-libpng15.patch
@@ -0,0 +1,11 @@
+--- win/gl/gl_image.c.old 2012-01-19 04:01:26.000000000 -0500
++++ win/gl/gl_image.c 2012-01-19 04:03:04.000000000 -0500
+@@ -486,7 +486,7 @@
+ /* set error handling since we are using the setjmp/longjmp method
+ * (this is the normal method of doing things with libpng).
+ */
+- if (setjmp(png_ptr->jmpbuf))
++ if (setjmp(png_jmpbuf(png_ptr)))
+ {
+ sdlgl_warning("Problem within LibPNG (unknown)\n");
+ goto failed;
diff --git a/testing/glhack/glhack.install b/testing/glhack/glhack.install
new file mode 100644
index 000000000..78e1655bc
--- /dev/null
+++ b/testing/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/testing/gnome-color-manager/PKGBUILD b/testing/gnome-color-manager/PKGBUILD
new file mode 100644
index 000000000..0371b3d55
--- /dev/null
+++ b/testing/gnome-color-manager/PKGBUILD
@@ -0,0 +1,36 @@
+# $Id: PKGBUILD 148129 2012-01-30 18:46:38Z ibiru $
+# Maintainer: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
+
+pkgname=gnome-color-manager
+pkgver=3.2.2
+pkgrel=2
+pkgdesc="Color profile manager for the GNOME desktop"
+arch=(i686 x86_64)
+url="http://projects.gnome.org/gnome-color-manager/"
+license=(GPL2)
+depends=('libcanberra' 'vte3' 'exiv2' 'hicolor-icon-theme' 'desktop-file-utils' 'clutter-gtk' 'mash' 'shared-color-profiles' 'shared-color-targets')
+makedepends=('intltool' 'gtk-doc')
+install=gnome-color-manager.install
+options=('!libtool' '!emptydirs')
+groups=('gnome-extra')
+source=(http://ftp.gnome.org/pub/GNOME/sources/$pkgname/${pkgver%.*}/$pkgname-$pkgver.tar.xz)
+sha256sums=('4898fe8c29761d8dc0859c4a3a1bf725d3b80d552caab1225202f6030a118d9a')
+
+build(){
+ cd "$srcdir/$pkgname-$pkgver"
+
+ # man pages need docbook-sgml, which we don't have
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var \
+ --libexecdir=/usr/lib/gnome-color-manager \
+ --disable-static --disable-man-pages
+
+ sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0 /g' -e 's/ if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then/ func_append compile_command " -Wl,-O1,--as-needed"\n func_append finalize_command " -Wl,-O1,--as-needed"\n\0/' libtool
+
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make DESTDIR="$pkgdir" install
+}
diff --git a/testing/gnome-color-manager/gnome-color-manager.install b/testing/gnome-color-manager/gnome-color-manager.install
new file mode 100644
index 000000000..04fda0ddc
--- /dev/null
+++ b/testing/gnome-color-manager/gnome-color-manager.install
@@ -0,0 +1,19 @@
+post_install() {
+ usr/bin/glib-compile-schemas usr/share/glib-2.0/schemas
+ update-desktop-database -q
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+pre_upgrade() {
+ if (( $(vercmp $2 2.90.0) < 0 )); then
+ usr/sbin/gconfpkg --uninstall gnome-color-manager
+ fi
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/testing/gnome-desktop2/PKGBUILD b/testing/gnome-desktop2/PKGBUILD
new file mode 100644
index 000000000..eb9162bd9
--- /dev/null
+++ b/testing/gnome-desktop2/PKGBUILD
@@ -0,0 +1,35 @@
+# $Id: PKGBUILD 148131 2012-01-30 18:46:41Z ibiru $
+# Maintainer: Jan "heftig" Steffens <jan.steffens@gmail.com>
+# Contributor: Jan de Groot <jan@archlinux.org>
+
+_pkgname=gnome-desktop
+pkgname=${_pkgname}2
+pkgver=2.32.1
+pkgrel=2
+pkgdesc="Library with common API for various GNOME modules (legacy version)"
+arch=(i686 x86_64)
+license=(GPL LGPL)
+depends=(gconf gtk2 startup-notification)
+makedepends=(gnome-doc-utils intltool)
+url="http://www.gnome.org"
+options=(!libtool !emptydirs)
+source=(http://ftp.gnome.org/pub/gnome/sources/$_pkgname/${pkgver%.*}/$_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 \
+ --disable-gnome-about --disable-desktop-docs
+
+ sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0 /g' -e 's/ if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then/ func_append compile_command " -Wl,-O1,--as-needed"\n func_append finalize_command " -Wl,-O1,--as-needed"\n\0/' libtool
+
+ make
+}
+
+package() {
+ cd "$srcdir/$_pkgname-$pkgver"
+ make DESTDIR="$pkgdir" install
+}
diff --git a/testing/gnome-perl/PKGBUILD b/testing/gnome-perl/PKGBUILD
new file mode 100644
index 000000000..dcff4c575
--- /dev/null
+++ b/testing/gnome-perl/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 148133 2012-01-30 18:46:43Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=gnome-perl
+_realname=Gnome2
+pkgver=1.042
+pkgrel=7
+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
+}
+
+package() {
+ cd "${srcdir}/${_realname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/testing/gnome-python/PKGBUILD b/testing/gnome-python/PKGBUILD
new file mode 100644
index 000000000..1452ef84c
--- /dev/null
+++ b/testing/gnome-python/PKGBUILD
@@ -0,0 +1,69 @@
+# $Id: PKGBUILD 148135 2012-01-30 18:46:45Z ibiru $
+# 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=8
+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/testing/gnome-sharp/PKGBUILD b/testing/gnome-sharp/PKGBUILD
new file mode 100644
index 000000000..10596a11b
--- /dev/null
+++ b/testing/gnome-sharp/PKGBUILD
@@ -0,0 +1,70 @@
+# $Id: PKGBUILD 148137 2012-01-30 18:46:48Z ibiru $
+# Maintainer: tobias <tobias@archlinux.org>
+
+pkgbase=gnome-sharp
+pkgname=('gnome-sharp' 'art-sharp' 'gconf-sharp' 'gconf-sharp-peditors' 'libgnome-sharp' 'gnome-vfs-sharp')
+pkgver=2.24.2
+pkgrel=2
+arch=(i686 x86_64)
+license=(LGPL)
+url="http://gtk-sharp.sourceforge.net"
+makedepends=('gtk-sharp-2' 'libgnomeui' 'monodoc')
+options=('!libtool')
+source=(http://ftp.gnome.org/pub/gnome/sources/gnome-sharp/2.24/${pkgbase}-${pkgver}.tar.bz2)
+md5sums=('3b38f53960c736d4afb8f04204efe98b')
+
+build() {
+ # get rid of that .wapi errors; thanks to brice
+ export MONO_SHARED_DIR="${srcdir}/weird"
+ mkdir -p "${MONO_SHARED_DIR}"
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc
+ make
+}
+
+package_gnome-sharp() {
+ pkgdesc="GNOME bindings for C#"
+ depends=('art-sharp' 'gconf-sharp' 'gconf-sharp-peditors' 'libgnome-sharp' 'gnome-vfs-sharp')
+}
+
+package_art-sharp() {
+ pkgdesc="Mono bindings for libart"
+ depends=('gtk-sharp-2' 'libart-lgpl')
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ make -C art install DESTDIR="${pkgdir}"
+}
+
+package_gconf-sharp() {
+ pkgdesc="Mono bindings for GConf"
+ depends=('gtk-sharp-2' 'gconf')
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ make -C gconf/GConf install DESTDIR="${pkgdir}"
+ make -C gconf/tools install DESTDIR="${pkgdir}"
+}
+
+package_gconf-sharp-peditors() {
+ pkgdesc="Mono bindings for GConf - Property Editing classes"
+ depends=('gconf-sharp' 'libgnome-sharp')
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ make -C gconf/GConf.PropertyEditors install DESTDIR="${pkgdir}"
+}
+
+package_libgnome-sharp() {
+ pkgdesc="Mono bindings for libgnome"
+ depends=('art-sharp' 'gnome-vfs-sharp' 'libgnomeui')
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ make -C gnome install DESTDIR="${pkgdir}"
+}
+
+package_gnome-vfs-sharp() {
+ pkgdesc="Mono bindings for GNOME-VFS"
+ depends=('gtk-sharp-2' 'gnome-vfs')
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ make -C gnomevfs install DESTDIR="${pkgdir}"
+}
diff --git a/testing/gnomecanvas-perl/PKGBUILD b/testing/gnomecanvas-perl/PKGBUILD
new file mode 100644
index 000000000..889047140
--- /dev/null
+++ b/testing/gnomecanvas-perl/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 148127 2012-01-30 18:46:36Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=gnomecanvas-perl
+_realname=Gnome2-Canvas
+pkgver=1.002
+pkgrel=9
+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
+}
+
+package() {
+ cd "${srcdir}/${_realname}-${pkgver}"
+ make install DESTDIR="${pkgdir}"
+}
diff --git a/testing/graphicsmagick/PKGBUILD b/testing/graphicsmagick/PKGBUILD
new file mode 100644
index 000000000..f147fe464
--- /dev/null
+++ b/testing/graphicsmagick/PKGBUILD
@@ -0,0 +1,55 @@
+# $Id: PKGBUILD 148139 2012-01-30 18:46:50Z ibiru $
+# Maintainer: Ronald van Haren <ronald.archlinux.org>
+# Maintainer: Gaetan Bisson <bisson@archlinux.org>
+# Contributor: Jaroslav Lichtblau <dragonlord@aur.archlinux.org>
+# Contributor: Anton Leontiev <bunder@t-25.ru>
+
+pkgname=graphicsmagick
+pkgver=1.3.13
+pkgrel=2
+pkgdesc='Image processing system'
+url='http://www.graphicsmagick.org/'
+arch=('i686' 'x86_64')
+license=('MIT')
+makedepends=('perl')
+depends=('bzip2' 'freetype2' 'ghostscript' 'jasper' 'lcms2' 'xz'
+ 'libtiff' 'libwmf' 'libsm' 'libxml2' 'libltdl')
+options=('!libtool')
+source=("http://downloads.sourceforge.net/project/${pkgname}/${pkgname}/${pkgver}/GraphicsMagick-${pkgver}.tar.xz")
+sha1sums=('b85b21785bb072fd795f7fc6ac902cffae4e96e6')
+
+build() {
+ cd "${srcdir}/GraphicsMagick-${pkgver}"
+
+ ./configure \
+ --prefix=/usr \
+ --with-perl \
+ --enable-shared \
+ --disable-static \
+ --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/testing/graphviz/LICENSE b/testing/graphviz/LICENSE
new file mode 100644
index 000000000..16cc69a52
--- /dev/null
+++ b/testing/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/testing/graphviz/PKGBUILD b/testing/graphviz/PKGBUILD
new file mode 100644
index 000000000..d875e696a
--- /dev/null
+++ b/testing/graphviz/PKGBUILD
@@ -0,0 +1,51 @@
+# $Id: PKGBUILD 148141 2012-01-30 18:46:52Z ibiru $
+# Maintainer: Gaetan Bisson <bisson@archlinux.org>
+# Contributor: kevin <kevin@archlinux.org>
+# Contributor: John Proctor <jproctor@prium.net>
+
+pkgname=graphviz
+pkgver=2.28.0
+pkgrel=7
+pkgdesc='Graph visualization software'
+url='http://www.graphviz.org/'
+license=('custom:EPL')
+arch=('i686' 'x86_64')
+depends=('libltdl' 'gd' 'librsvg' 'libxaw' 'ghostscript' 'pango' 'gts')
+makedepends=('swig' 'mono' 'guile' 'lua' 'ocaml' 'perl' 'php' 'python2' 'r' 'ruby' 'tk' 'qt')
+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'
+ 'qt: gvedit')
+source=("${url}/pub/${pkgname}/stable/SOURCES/${pkgname}-${pkgver}.tar.gz"
+ 'LICENSE')
+sha1sums=('4725d88a13e071ee22e632de551d4a55ca08ee7d'
+ '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/testing/graphviz/install b/testing/graphviz/install
new file mode 100644
index 000000000..65fba522b
--- /dev/null
+++ b/testing/graphviz/install
@@ -0,0 +1,12 @@
+post_install() {
+ rm -f usr/lib/graphviz/config{,6}
+ usr/bin/dot -c
+}
+
+post_upgrade() {
+ post_install
+}
+
+pre_remove() {
+ rm -f usr/lib/graphviz/config{,6}
+}
diff --git a/testing/gstreamer0.10-good/PKGBUILD b/testing/gstreamer0.10-good/PKGBUILD
new file mode 100644
index 000000000..aebf9005e
--- /dev/null
+++ b/testing/gstreamer0.10-good/PKGBUILD
@@ -0,0 +1,54 @@
+# $Id: PKGBUILD 148145 2012-01-30 18:46:57Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgbase=gstreamer0.10-good
+pkgname=('gstreamer0.10-good' 'gstreamer0.10-good-plugins')
+pkgver=0.10.30
+pkgrel=2
+arch=('i686' 'x86_64')
+license=('LGPL')
+makedepends=('intltool' 'pkgconfig' 'gstreamer0.10-base>=0.10.34' 'libavc1394' 'libiec61883' 'aalib' 'libshout' 'libdv' 'flac' 'gconf' 'wavpack' 'taglib' 'libsoup-gnome' 'v4l-utils' 'libcaca' 'bzip2' 'gdk-pixbuf2' 'libpulse' 'jack' 'udev')
+url="http://gstreamer.freedesktop.org/"
+options=(!libtool !emptydirs)
+source=(${url}/src/gst-plugins-good/gst-plugins-good-${pkgver}.tar.bz2)
+sha256sums=('b12cba90b27d8423cd0a808939098d19db3996cfb9bf528507c6321782e095f6')
+
+build() {
+ cd "${srcdir}/gst-plugins-good-${pkgver}"
+ sed -i '/AC_PATH_XTRA/d' configure.ac
+ autoreconf
+ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \
+ --disable-static --enable-experimental \
+ --disable-schemas-install \
+ --disable-hal \
+ --disable-esd \
+ --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.34' 'bzip2')
+ pkgdesc="GStreamer Multimedia Framework Good plugin libraries"
+
+ 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' 'flac' 'gconf' 'wavpack' 'taglib' 'libsoup-gnome' 'v4l-utils' 'libcaca' 'libpng' 'libjpeg' 'jack' 'libpulse' 'udev')
+ 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
+ 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"
+}
diff --git a/testing/gstreamer0.10-good/gstreamer0.10-good-plugins.install b/testing/gstreamer0.10-good/gstreamer0.10-good-plugins.install
new file mode 100644
index 000000000..e343beea5
--- /dev/null
+++ b/testing/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/testing/gthumb/PKGBUILD b/testing/gthumb/PKGBUILD
new file mode 100644
index 000000000..3d4ec0746
--- /dev/null
+++ b/testing/gthumb/PKGBUILD
@@ -0,0 +1,34 @@
+# $Id: PKGBUILD 148147 2012-01-30 18:46:59Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Tobias Kieslich <tobias@justdreams.de>
+
+pkgname=gthumb
+pkgver=2.14.1
+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' 'gconf' 'exiv2' 'libsoup-gnome' 'clutter-gtk2' 'hicolor-icon-theme')
+makedepends=('intltool' 'gnome-doc-utils' 'libsm' 'gstreamer0.10-base')
+optdepends=('gstreamer0.10-base: video support')
+options=('!libtool' '!emptydirs')
+install=gthumb.install
+source=(http://ftp.gnome.org/pub/GNOME/sources/${pkgname}/${pkgver%.*}/${pkgname}-${pkgver}.tar.xz)
+sha256sums=('002a6611112273189348871ff7c717fb3c776f5570656389e3d6c5b26bffa11f')
+
+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/testing/gthumb/gthumb.install b/testing/gthumb/gthumb.install
new file mode 100644
index 000000000..6046ebb6f
--- /dev/null
+++ b/testing/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/testing/gtk-engines/PKGBUILD b/testing/gtk-engines/PKGBUILD
new file mode 100644
index 000000000..bdbaed8d6
--- /dev/null
+++ b/testing/gtk-engines/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 148149 2012-01-30 18:47:01Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=gtk-engines
+pkgver=2.20.2
+pkgrel=2
+pkgdesc="Theme engines for GTK+ 2"
+arch=(i686 x86_64)
+license=('GPL' 'LGPL')
+depends=('gtk2>=2.22.0')
+makedepends=('pkg-config' '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
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/testing/gtk2/PKGBUILD b/testing/gtk2/PKGBUILD
new file mode 100644
index 000000000..113ba9c8d
--- /dev/null
+++ b/testing/gtk2/PKGBUILD
@@ -0,0 +1,59 @@
+# $Id: PKGBUILD 148382 2012-01-30 22:03:41Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgbase=gtk2
+pkgname=('gtk2' 'gtk-update-icon-cache')
+pkgver=2.24.9
+pkgrel=3
+arch=('i686' 'x86_64')
+url="http://www.gtk.org/"
+makedepends=('atk' 'pango' 'libxcursor' 'libxinerama' 'libxrandr' 'libxi' 'libxcomposite' 'libxdamage'
+ 'shared-mime-info' 'cairo' 'libcups' 'gdk-pixbuf2' 'gobject-introspection')
+options=('!libtool' '!docs')
+license=('LGPL')
+source=(http://ftp.gnome.org/pub/gnome/sources/gtk+/2.24/gtk+-$pkgver.tar.xz
+ xid-collision-debug.patch cups-custom-print.patch)
+sha256sums=('84204bf24cac739fd979943127e7b29cb46b1017684aa24dce630faa01bcb61d'
+ 'd758bb93e59df15a4ea7732cf984d1c3c19dff67c94b957575efea132b8fe558'
+ '9535c9df19338cbea98ec4b2b5c8e4cef718455938f05c9cf8a08a3805d6b85d')
+
+build() {
+ cd "$srcdir/gtk+-$pkgver"
+ patch -Np1 -i "$srcdir/xid-collision-debug.patch"
+
+ # https://bugzilla.gnome.org/show_bug.cgi?id=543520
+ patch -Rp1 -i "$srcdir/cups-custom-print.patch"
+
+ CXX=/bin/false ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --with-xinput=yes
+
+ # https://bugzilla.gnome.org/show_bug.cgi?id=655517
+ sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0/g' libtool
+
+ make
+}
+
+package_gtk2() {
+ pkgdesc="GTK+ is a multi-platform toolkit (v2)"
+ install=gtk2.install
+ depends=('atk' 'pango' 'libxcursor' 'libxinerama' 'libxrandr' 'libxi' 'libxcomposite' 'libxdamage' 'shared-mime-info' 'cairo' 'libcups' 'gtk-update-icon-cache')
+ backup=(etc/gtk-2.0/gtkrc)
+
+ cd "$srcdir/gtk+-$pkgver"
+
+ 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"
+ #split this out to use with gtk3 too
+ rm $pkgdir/usr/bin/gtk-update-icon-cache
+}
+package_gtk-update-icon-cache() {
+ pkgdesc="The GTK+ update icon cache tool"
+ depends=('gdk-pixbuf2>=2.24.1-3')
+
+ cd "$srcdir/gtk+-$pkgver/gtk"
+
+ install -D -m755 gtk-update-icon-cache $pkgdir/usr/bin/gtk-update-icon-cache
+}
diff --git a/testing/gtk2/cups-custom-print.patch b/testing/gtk2/cups-custom-print.patch
new file mode 100644
index 000000000..ffc89aa32
--- /dev/null
+++ b/testing/gtk2/cups-custom-print.patch
@@ -0,0 +1,104 @@
+From 8170436e61ea68c713d75ad374d22c3261be9203 Mon Sep 17 00:00:00 2001
+From: Benjamin Berg <benjamin@sipsolutions.net>
+Date: Sat, 24 Dec 2011 16:26:32 +0000
+Subject: Set cups Custom print options correctly (bug #543520, patch by Marek Kašík)
+
+This patch fixes the cups print backend to pass Custom options with
+the "Custom." prefix to cups if neccessary.
+---
+diff --git a/modules/printbackends/cups/gtkprintbackendcups.c b/modules/printbackends/cups/gtkprintbackendcups.c
+index 14a1b5d..2751ee4 100644
+--- a/modules/printbackends/cups/gtkprintbackendcups.c
++++ b/modules/printbackends/cups/gtkprintbackendcups.c
+@@ -483,22 +483,44 @@ cups_print_cb (GtkPrintBackendCups *print_backend,
+ GDK_THREADS_LEAVE ();
+ }
+
++typedef struct {
++ GtkCupsRequest *request;
++ GtkPrinterOptionSet *options;
++} CupsOptionsData;
++
+ static void
+ add_cups_options (const gchar *key,
+ const gchar *value,
+ gpointer user_data)
+ {
+- GtkCupsRequest *request = user_data;
++ CupsOptionsData *data = (CupsOptionsData *) user_data;
++ GtkCupsRequest *request = data->request;
++ GtkPrinterOptionSet *options = data->options;
++ GtkPrinterOption *option = NULL;
++ gchar *new_value = NULL;
+
+ if (!g_str_has_prefix (key, "cups-"))
+ return;
+
+ if (strcmp (value, "gtk-ignore-value") == 0)
+ return;
++
++ option = gtk_printer_option_set_lookup (options, key);
+
+ key = key + strlen ("cups-");
+
+- gtk_cups_request_encode_option (request, key, value);
++ /* Add "Custom." prefix to custom values */
++ if (value && option &&
++ !gtk_printer_option_has_choice (option, value))
++ new_value = g_strdup_printf ("Custom.%s", value);
++
++ if (new_value)
++ {
++ gtk_cups_request_encode_option (request, key, new_value);
++ g_free (new_value);
++ }
++ else
++ gtk_cups_request_encode_option (request, key, value);
+ }
+
+ static void
+@@ -511,8 +533,12 @@ gtk_print_backend_cups_print_stream (GtkPrintBackend *print_backend,
+ {
+ GtkPrinterCups *cups_printer;
+ CupsPrintStreamData *ps;
++ CupsOptionsData *options_data;
+ GtkCupsRequest *request;
+ GtkPrintSettings *settings;
++ GtkPrinterOptionSet *options;
++ GtkPrintCapabilities capabilities;
++ GtkPageSetup *page_setup;
+ const gchar *title;
+ char printer_absolute_uri[HTTP_MAX_URI];
+
+@@ -521,6 +547,8 @@ gtk_print_backend_cups_print_stream (GtkPrintBackend *print_backend,
+
+ cups_printer = GTK_PRINTER_CUPS (gtk_print_job_get_printer (job));
+ settings = gtk_print_job_get_settings (job);
++ capabilities = cups_printer_get_capabilities (GTK_PRINTER (cups_printer));
++ page_setup = gtk_printer_get_default_page_size (GTK_PRINTER (cups_printer));
+
+ request = gtk_cups_request_new_with_username (NULL,
+ GTK_CUPS_POST,
+@@ -558,8 +586,18 @@ gtk_print_backend_cups_print_stream (GtkPrintBackend *print_backend,
+ IPP_TAG_NAME, "job-name",
+ NULL, title);
+
+- gtk_print_settings_foreach (settings, add_cups_options, request);
+-
++ options = cups_printer_get_options (GTK_PRINTER (cups_printer), settings, page_setup, capabilities);
++
++ options_data = g_new0 (CupsOptionsData, 1);
++ options_data->request = request;
++ options_data->options = options;
++
++ gtk_print_settings_foreach (settings, add_cups_options, options_data);
++
++ g_object_unref (page_setup);
++ g_object_unref (options);
++ g_free (options_data);
++
+ ps = g_new0 (CupsPrintStreamData, 1);
+ ps->callback = callback;
+ ps->user_data = user_data;
+--
+cgit v0.9.0.2
diff --git a/testing/gtk2/gtk2.install b/testing/gtk2/gtk2.install
new file mode 100644
index 000000000..4e2b72f1b
--- /dev/null
+++ b/testing/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/testing/gtk2/xid-collision-debug.patch b/testing/gtk2/xid-collision-debug.patch
new file mode 100644
index 000000000..d61238c3b
--- /dev/null
+++ b/testing/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/testing/gtkglext/PKGBUILD b/testing/gtkglext/PKGBUILD
new file mode 100644
index 000000000..c64d0834c
--- /dev/null
+++ b/testing/gtkglext/PKGBUILD
@@ -0,0 +1,35 @@
+# $Id: PKGBUILD 148151 2012-01-30 18:47:04Z ibiru $
+# Maintainer:
+# Contributor: Ben <ben@benmazer.net>
+
+pkgname=gtkglext
+pkgver=1.2.0
+pkgrel=7
+pkgdesc="opengl extensions for gtk2"
+arch=('i686' 'x86_64')
+url="http://gtkglext.sourceforge.net/"
+license=('LGPL')
+depends=('gtk2' 'mesa' 'libxmu')
+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"
+ sed '/AC_PATH_XTRA/d' -i configure.in
+
+ autoreconf --force --install
+ ./configure --prefix=/usr \
+ --disable-static
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/testing/gtkglext/gtk2.20.patch b/testing/gtkglext/gtk2.20.patch
new file mode 100644
index 000000000..54b34c11e
--- /dev/null
+++ b/testing/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/testing/gtkhtml/PKGBUILD b/testing/gtkhtml/PKGBUILD
new file mode 100644
index 000000000..6ca49739e
--- /dev/null
+++ b/testing/gtkhtml/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id: PKGBUILD 148153 2012-01-30 18:47:06Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=gtkhtml
+pkgver=3.32.2
+pkgrel=3
+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
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+
+ rm -f "${pkgdir}/usr/bin/gtkhtml-editor-test"
+}
diff --git a/testing/gtkmm/PKGBUILD b/testing/gtkmm/PKGBUILD
new file mode 100644
index 000000000..4a712e92a
--- /dev/null
+++ b/testing/gtkmm/PKGBUILD
@@ -0,0 +1,38 @@
+# $Id: PKGBUILD 148155 2012-01-30 18:47:09Z ibiru $
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgbase=gtkmm
+pkgname=('gtkmm' 'gtkmm-docs')
+pkgver=2.24.2
+pkgrel=2
+arch=('i686' 'x86_64')
+makedepends=('gtk2' 'pangomm' 'atkmm' 'glibmm-docs')
+license=('LGPL')
+options=('!libtool' '!emptydirs')
+url="http://gtkmm.sourceforge.net/"
+source=(http://ftp.gnome.org/pub/GNOME/sources/${pkgbase}/2.24/${pkgbase}-${pkgver}.tar.xz)
+sha256sums=('c90c7a29c20dd6d795925bd66ad1ff40be07cea0e4c03f4d6105a8c07448953d')
+
+build() {
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+}
+
+package_gtkmm() {
+ pkgdesc="C++ bindings for gtk2"
+ depends=('gtk2' 'pangomm' 'atkmm')
+ 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 v2"
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ make -C docs DESTDIR="${pkgdir}" install
+}
diff --git a/testing/gtksourceview2/PKGBUILD b/testing/gtksourceview2/PKGBUILD
new file mode 100644
index 000000000..19bd77b43
--- /dev/null
+++ b/testing/gtksourceview2/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 148157 2012-01-30 18:47:11Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=gtksourceview2
+pkgver=2.10.5
+pkgrel=2
+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' 'pkg-config')
+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
+}
+
+package() {
+ cd "${srcdir}/gtksourceview-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/testing/hugin/PKGBUILD b/testing/hugin/PKGBUILD
new file mode 100644
index 000000000..79824ffdd
--- /dev/null
+++ b/testing/hugin/PKGBUILD
@@ -0,0 +1,34 @@
+# $Id: PKGBUILD 148159 2012-01-30 18:47:14Z ibiru $
+# Maintainer: Tobias Kieslich <tobias@archlinux.org>
+# Contributor: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Dominik Ryba <domryba@post.pl>
+
+pkgname=hugin
+pkgver=2011.4.0
+pkgrel=1
+pkgdesc="A frontend to the panorama-tools"
+arch=('i686' 'x86_64')
+url="http://hugin.sourceforge.net/"
+license=('GPL')
+depends=('wxgtk' 'boost-libs' 'enblend-enfuse' 'exiv2' 'autopano-sift-c'
+ 'lapack' 'desktop-file-utils' 'make' 'perl-image-exiftool')
+makedepends=('zip' 'cmake' 'boost' 'tclap')
+install=hugin.install
+source=(http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('21ec7331d5e196aca2a8771d3c9101dd181ad93b')
+
+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/testing/hugin/hugin.install b/testing/hugin/hugin.install
new file mode 100644
index 000000000..362749233
--- /dev/null
+++ b/testing/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/testing/hylafax/PKGBUILD b/testing/hylafax/PKGBUILD
new file mode 100644
index 000000000..74ece5343
--- /dev/null
+++ b/testing/hylafax/PKGBUILD
@@ -0,0 +1,53 @@
+# $Id: PKGBUILD 148161 2012-01-30 18:47:17Z ibiru $
+# Maintainer: Paul Mattal <paul@archlinux.org>
+pkgname=hylafax
+pkgver=6.0.5
+pkgrel=3
+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
+ configure-6.0.5.patch
+ hylafax-libtiff4.patch)
+md5sums=('eb9ac942354ad708e20e4583cec6615f'
+ '6602288a405324d8c8e3c5eac2bf19fd'
+ '52beffe7dc296b4f9ce9fd0387f7804e'
+ '0d2ce24d918226a852539aebf57d3f4a'
+ '51d9f639bb76e5e39cdc8e2ac07e208d'
+ '3d239c186f24720e945508d349b069b1')
+
+build() {
+ cd "$srcdir/${pkgname}-${pkgver}"
+ cp ../config.local .
+ # fix compiling
+ patch -Np0 -i ../configure-6.0.5.patch
+ patch -Np1 -i ../hylafax-libtiff4.patch
+ ./configure --nointeractive --with-OPTIMIZER="${CFLAGS}"
+ make
+}
+
+package () {
+ cd "$srcdir/${pkgname}-${pkgver}"
+ mkdir -p "$pkgdir"/usr/{bin,lib/fax,sbin,share/ghostscript/fonts}
+ mkdir -p "$pkgdir"/var/{spool/hylafax,lock}
+ make ROOT="$pkgdir" install
+ install -D -m 755 "$srcdir"/hylafax "$pkgdir"/etc/rc.d/hylafax
+ install -D -m 744 "$srcdir"/hylafax.cron.daily "$pkgdir"/etc/cron.daily/hylafax
+ # add missing awk file for notify-4.1 script
+ install -D -m 755 "$srcdir"/${pkgname}-${pkgver}/util/notify.awk \
+ "$pkgdir"/var/spool/hylafax/bin/notify.awk
+ # fix permission on /var/lock
+ chmod 1777 "$pkgdir"/var/lock
+
+ install -D -m644 COPYRIGHT "$pkgdir"/usr/share/licenses/$pkgname/COPYRIGHT
+}
diff --git a/testing/hylafax/config.local b/testing/hylafax/config.local
new file mode 100644
index 000000000..0d8e2bcd8
--- /dev/null
+++ b/testing/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/testing/hylafax/configure-6.0.5.patch b/testing/hylafax/configure-6.0.5.patch
new file mode 100644
index 000000000..e1f1126a5
--- /dev/null
+++ b/testing/hylafax/configure-6.0.5.patch
@@ -0,0 +1,11 @@
+--- configure.old 2011-08-08 10:19:37.619657223 +0200
++++ configure 2011-08-08 10:20:26.422189170 +0200
+@@ -2882,7 +2882,7 @@
+ echo '#define HAS_FCHMOD 1'
+ Note "... configure use of fchmod"
+ CheckFuncDecl fchmod 'extern int fchmod(int, mode_t);' \
+- unistd.h libc.h $OSFCNH sys/stat.h
++ unistd.h $OSFCNH sys/stat.h libc.h
+ }
+ CheckFuncDecl mknod 'extern int mknod(const char*, mode_t, dev_t);' \
+ unistd.h sys/stat.h
diff --git a/testing/hylafax/hylafax b/testing/hylafax/hylafax
new file mode 100755
index 000000000..9f949c2ac
--- /dev/null
+++ b/testing/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/testing/hylafax/hylafax-libtiff4.patch b/testing/hylafax/hylafax-libtiff4.patch
new file mode 100644
index 000000000..4a49511f8
--- /dev/null
+++ b/testing/hylafax/hylafax-libtiff4.patch
@@ -0,0 +1,229 @@
+--- hylafax-6.0.5/configure 2010-09-15 10:42:36.000000000 -0400
++++ hylafax-5.5.1/configure 2012-01-02 17:44:20.000000000 -0500
+@@ -2531,6 +2566,7 @@
+ Note "... checking TIFF library version"
+ tiff_runlen_t=""
+ cat>t.c<<EOF
++#include <stdlib.h>
+ #include <stdio.h>
+ #include "tiffio.h"
+ main()
+@@ -2550,8 +2586,18 @@
+ Note " Found libtiff version ${lib_ver}"
+ if [ ${header_ver} -ge 19960307 ]; then
+ case ${lib_ver} in
+- 3.4) tiff_runlen_t="uint16" ;;
+- 3.[56789]) tiff_runlen_t="uint32" ;;
++ 3.4) tiff_runlen_t="uint16"
++ echo '#define TIFFSTRIPBYTECOUNTS uint32'
++ echo '#define TIFFVERSION TIFF_VERSION'
++ echo '#define TIFFHEADER TIFFHeader';;
++ 3.[56789]) tiff_runlen_t="uint32"
++ echo '#define TIFFSTRIPBYTECOUNTS uint32'
++ echo '#define TIFFVERSION TIFF_VERSION'
++ echo '#define TIFFHEADER TIFFHeader';;
++ 4.0) tiff_runlen_t="uint32"
++ echo '#define TIFFSTRIPBYTECOUNTS uint64'
++ echo '#define TIFFVERSION TIFF_VERSION_CLASSIC'
++ echo '#define TIFFHEADER TIFFHeaderClassic';;
+ esac
+ fi
+ else
+@@ -2588,7 +2634,7 @@
+ Incompatible TIFF Library.
+
+ HylaFAX ${VERSION} requires TIFF software distribution versions 3.4 through
+-3.9. If you do not have up to date TIFF software on your system
++4.0. If you do not have up to date TIFF software on your system
+ then you can retrieve it from the location where you obtained this software.
+ The Home Page for version 3.5 and later is http://www.remotesensing.org/libtiff/
+ EOF
+--- hylafax-6.0.5/hfaxd/FileTransfer.c++ 2010-09-15 10:42:36.000000000 -0400
++++ hylafax-5.5.1/hfaxd/FileTransfer.c++ 2012-01-02 17:44:19.000000000 -0500
+@@ -164,26 +142,26 @@
+ * a single IFD/image from a TIFF file.
+ */
+ typedef struct {
+- TIFFDirEntry SubFileType;
+- TIFFDirEntry ImageWidth;
+- TIFFDirEntry ImageLength;
+- TIFFDirEntry BitsPerSample;
+- TIFFDirEntry Compression;
+- TIFFDirEntry Photometric;
+- TIFFDirEntry FillOrder;
+- TIFFDirEntry StripOffsets;
+- TIFFDirEntry Orientation;
+- TIFFDirEntry SamplesPerPixel;
+- TIFFDirEntry RowsPerStrip;
+- TIFFDirEntry StripByteCounts;
+- TIFFDirEntry XResolution;
+- TIFFDirEntry YResolution;
+- TIFFDirEntry Options; // T4 or T6
+- TIFFDirEntry ResolutionUnit;
+- TIFFDirEntry PageNumber;
+- TIFFDirEntry BadFaxLines;
+- TIFFDirEntry CleanFaxData;
+- TIFFDirEntry ConsecutiveBadFaxLines;
++ HFClassicTIFFDirEntry SubFileType;
++ HFClassicTIFFDirEntry ImageWidth;
++ HFClassicTIFFDirEntry ImageLength;
++ HFClassicTIFFDirEntry BitsPerSample;
++ HFClassicTIFFDirEntry Compression;
++ HFClassicTIFFDirEntry Photometric;
++ HFClassicTIFFDirEntry FillOrder;
++ HFClassicTIFFDirEntry StripOffsets;
++ HFClassicTIFFDirEntry Orientation;
++ HFClassicTIFFDirEntry SamplesPerPixel;
++ HFClassicTIFFDirEntry RowsPerStrip;
++ HFClassicTIFFDirEntry StripByteCounts;
++ HFClassicTIFFDirEntry XResolution;
++ HFClassicTIFFDirEntry YResolution;
++ HFClassicTIFFDirEntry Options; // T4 or T6
++ HFClassicTIFFDirEntry ResolutionUnit;
++ HFClassicTIFFDirEntry PageNumber;
++ HFClassicTIFFDirEntry BadFaxLines;
++ HFClassicTIFFDirEntry CleanFaxData;
++ HFClassicTIFFDirEntry ConsecutiveBadFaxLines;
+ uint32 link; // offset to next directory
+ uint32 xres[2]; // X resolution indirect value
+ uint32 yres[2]; // Y resolution indirect value
+@@ -226,10 +204,10 @@
+ * amount of image data and then adding in
+ * the expected data for the TIFF headers.
+ */
+- uint32* sb;
++ TIFFSTRIPBYTECOUNTS* sb;
+ TIFFGetField(tif, TIFFTAG_STRIPBYTECOUNTS, &sb);
+ file_size = sizeof (DirTemplate) +
+- sizeof (TIFFHeader) + sizeof (uint16);
++ sizeof (TIFFHEADER) + sizeof (uint16);
+ for (tstrip_t s = 0, ns = TIFFNumberOfStrips(tif); s < ns; s++)
+ file_size += sb[s];
+ reply(code, "%s for %s (%lu bytes).",
+@@ -261,10 +239,10 @@
+ if (fd >= 0) {
+ union {
+ char buf[512];
+- TIFFHeader h;
++ TIFFHEADER h;
+ } b;
+ ssize_t cc = Sys::read(fd, (char*) &b, sizeof (b));
+- if (cc > (ssize_t)sizeof (b.h) && b.h.tiff_version == TIFF_VERSION &&
++ if (cc > (ssize_t)sizeof (b.h) && b.h.tiff_version == TIFFVERSION &&
+ (b.h.tiff_magic == TIFF_BIGENDIAN ||
+ b.h.tiff_magic == TIFF_LITTLEENDIAN)) {
+ (void) lseek(fd, 0L, SEEK_SET); // rewind
+@@ -318,12 +296,12 @@
+ }
+
+ static void
+-getLong(TIFF* tif, TIFFDirEntry& de)
++getLong(TIFF* tif, HFClassicTIFFDirEntry& de)
+ {
+ TIFFGetField(tif, de.tdir_tag, &de.tdir_offset);
+ }
+ static void
+-getShort(TIFF* tif, TIFFDirEntry& de)
++getShort(TIFF* tif, HFClassicTIFFDirEntry& de)
+ {
+ uint16 v;
+ TIFFGetField(tif, de.tdir_tag, &v);
+@@ -343,7 +321,7 @@
+ {
+ static DirTemplate templ = {
+ #define TIFFdiroff(v) \
+- (uint32) (sizeof (TIFFHeader) + sizeof (uint16) + \
++ (uint32) (sizeof (TIFFHEADER) + sizeof (uint16) + \
+ (intptr_t) &(((DirTemplate*) 0)->v))
+ { TIFFTAG_SUBFILETYPE, TIFF_LONG, 1 },
+ { TIFFTAG_IMAGEWIDTH, TIFF_LONG, 1 },
+@@ -368,7 +346,7 @@
+ 0, // next directory
+ { 0, 1 }, { 0, 1 }, // x+y resolutions
+ };
+-#define NTAGS ((TIFFdiroff(link)-TIFFdiroff(SubFileType)) / sizeof (TIFFDirEntry))
++#define NTAGS ((TIFFdiroff(link)-TIFFdiroff(SubFileType)) / sizeof (HFClassicTIFFDirEntry))
+ /*
+ * Construct the TIFF header for this IFD using
+ * the preconstructed template above. We extract
+@@ -377,14 +355,14 @@
+ * of things about the contents of the TIFF file.
+ */
+ struct {
+- TIFFHeader h;
++ TIFFHEADER h;
+ uint16 dircount;
+ u_char dirstuff[sizeof (templ)];
+ } buf;
+ union { int32 i; char c[4]; } u; u.i = 1;
+ buf.h.tiff_magic = (u.c[0] == 0 ? TIFF_BIGENDIAN : TIFF_LITTLEENDIAN);
+- buf.h.tiff_version = TIFF_VERSION;
+- buf.h.tiff_diroff = sizeof (TIFFHeader);
++ buf.h.tiff_version = TIFFVERSION;
++ buf.h.tiff_diroff = sizeof (TIFFHEADER);
+ buf.dircount = (uint16) NTAGS;
+ getLong(tif, templ.SubFileType);
+ getLong(tif, templ.ImageWidth);
+@@ -412,7 +390,7 @@
+ getShort(tif, templ.CleanFaxData);
+ getLong(tif, templ.ConsecutiveBadFaxLines);
+ if (buf.h.tiff_magic == TIFF_BIGENDIAN) {
+- TIFFDirEntry* dp = &templ.SubFileType;
++ HFClassicTIFFDirEntry* dp = &templ.SubFileType;
+ for (u_int i = 0; i < NTAGS; i++) {
+ if (dp->tdir_type == TIFF_SHORT)
+ dp->tdir_offset <<= 16;
+@@ -441,7 +419,7 @@
+ bool
+ HylaFAXServer::sendITIFFData(TIFF* tif, int fdout)
+ {
+- uint32* sb;
++ TIFFSTRIPBYTECOUNTS* sb;
+ (void) TIFFGetField(tif, TIFFTAG_STRIPBYTECOUNTS, &sb);
+ tdata_t buf = _TIFFmalloc(sb[0]);
+ tsize_t bsize = sb[0];
+--- hylafax-6.0.5/hfaxd/FileTransfer.c++ 2012-01-28 15:27:47.000000000 -0500
++++ hylafax-5.5.1/hfaxd/FileTransfer.c++ 2012-01-28 15:30:12.000000000 -0500
+@@ -69,7 +69,7 @@
+
+
+ static bool
+-isTIFF(const TIFFHeader& h)
++isTIFF(const TIFFHEADER& h)
+ {
+ if (h.tiff_magic != TIFF_BIGENDIAN && h.tiff_magic != TIFF_LITTLEENDIAN)
+ return (false);
+@@ -82,11 +82,23 @@
+ // byte swap version stamp if opposite byte order
+ if ((u.c[0] == 0) ^ (h.tiff_magic == TIFF_BIGENDIAN))
+ TIFFSwabShort(&version);
+- return (version == TIFF_VERSION);
++ return (version == TIFFVERSION);
+ }
+
+
+ /*
++ * This is copied right from tiff.h in version 3.8.2. This was necessary
++ * to localize here because it was removed from tiff.h in version 4.0.
++ * In tiff.h 3.8.2 it was known as "TIFFDirEntry".
++ */
++typedef struct {
++ uint16 tdir_tag;
++ uint16 tdir_type; /* data type */
++ uint32 tdir_count; /* number of items; length in spec */
++ uint32 tdir_offset; /* byte offset to field data */
++} HFClassicTIFFDirEntry;
++
++/*
+ * Record a file transfer in the log file.
+ */
+ void
+@@ -957,7 +957,7 @@
+ if (FileCache::lookup(docname, sb) && S_ISREG(sb.st_mode)) {
+ union {
+ char buf[512];
+- TIFFHeader h;
++ TIFFHEADER h;
+ } b;
+ ssize_t cc = Sys::read(fd, (char*) &b, sizeof (b));
+ if (cc > 2 && b.buf[0] == '%' && b.buf[1] == '!')
diff --git a/testing/hylafax/hylafax.cron.daily b/testing/hylafax/hylafax.cron.daily
new file mode 100644
index 000000000..2d1a77e5c
--- /dev/null
+++ b/testing/hylafax/hylafax.cron.daily
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+/usr/sbin/faxqclean
+/usr/sbin/faxcron -rcv 30
diff --git a/testing/hylafax/hylafax.install b/testing/hylafax/hylafax.install
new file mode 100644
index 000000000..5dacf4045
--- /dev/null
+++ b/testing/hylafax/hylafax.install
@@ -0,0 +1,46 @@
+
+print_install() {
+ 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() {
+ post_upgrade
+ print_install
+}
+
+post_upgrade() {
+ 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
+ chown uucp /var/spool/hylafax/{,archive,bin,client,config,dev,docq,doneq,etc}
+ chown uucp /var/spool/hylafax/{FIFO,info,log,pollq,recvq,sendq,status,tmp}
+ chown uucp /var/spool/hylafax/etc/{hosts.hfaxd,lutRS18.pcf,xferfaxlog}
+ chown -R uucp /var/spool/hylafax/etc/templates
+ usermod -d '/' uucp &>/dev/null
+ usermod -d '/' fax &>/dev/null
+}
+
+pre_remove() {
+ userdel uucp &>/dev/null
+ groupdel uucp &>/dev/null
+ userdel fax &>/dev/null
+ print_remove
+}
diff --git a/testing/imagemagick/PKGBUILD b/testing/imagemagick/PKGBUILD
new file mode 100644
index 000000000..6a68531b7
--- /dev/null
+++ b/testing/imagemagick/PKGBUILD
@@ -0,0 +1,84 @@
+# $Id: PKGBUILD 148163 2012-01-30 18:47:19Z ibiru $
+# Maintainer: Eric Bélanger <eric@archlinux.org>
+
+pkgbase=imagemagick
+pkgname=('imagemagick' 'imagemagick-doc')
+pkgver=6.7.4.7
+pkgrel=1
+arch=('i686' 'x86_64')
+url="http://www.imagemagick.org/"
+license=('custom')
+depends=('perl' 'libltdl' 'lcms2' 'libxt' 'fontconfig' 'libxext' 'libjpeg-turbo')
+makedepends=('ghostscript' 'openexr' 'libwmf' 'librsvg' 'libxml2' 'jasper' 'libpng')
+source=(ftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick-${pkgver%.*}-${pkgver##*.}.tar.xz \
+ perlmagick.rpath.patch)
+sha1sums=('87cde464a569d8b34ef8edae817fbe4f51f8c2d0'
+ '23405f80904b1de94ebd7bd6fe2a332471b8c283')
+
+build() {
+ cd "${srcdir}"/ImageMagick-${pkgver%.*}-${pkgver##*.}
+
+ sed '/AC_PATH_XTRA/d' -i configure.ac
+ autoreconf
+ patch -p0 -i ../perlmagick.rpath.patch
+
+ LIBS="$LIBS -L/usr/lib/perl5/core_perl/CORE -lperl" \
+ ./configure --prefix=/usr --sysconfdir=/etc --with-modules --disable-static \
+ --enable-openmp --with-wmf --with-openexr --with-xml --with-lcms2 --with-jp2 \
+ --with-gslib --with-gs-font-dir=/usr/share/fonts/Type1 \
+ --with-perl --with-perl-options="INSTALLDIRS=vendor" \
+ --without-gvc --without-djvu --without-autotrace --without-webp \
+ --without-jbig --without-fpx --without-dps --without-fftw --without-lqr
+ make
+}
+
+check() {
+ cd "${srcdir}"/ImageMagick-${pkgver%.*}-${pkgver##*.}
+ make check
+}
+
+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/coder.xml'
+ 'etc/ImageMagick/colors.xml'
+ 'etc/ImageMagick/delegates.xml'
+ 'etc/ImageMagick/log.xml'
+ 'etc/ImageMagick/magic.xml'
+ 'etc/ImageMagick/mime.xml'
+ 'etc/ImageMagick/policy.xml'
+ 'etc/ImageMagick/sRGB.icc'
+ 'etc/ImageMagick/thresholds.xml'
+ 'etc/ImageMagick/type.xml'
+ 'etc/ImageMagick/type-dejavu.xml'
+ 'etc/ImageMagick/type-ghostscript.xml'
+ 'etc/ImageMagick/type-windows.xml')
+ options=('!makeflags' '!docs' 'libtool')
+
+ cd "${srcdir}"/ImageMagick-${pkgver%.*}-${pkgver##*.}
+ make DESTDIR="${pkgdir}" install
+ chmod 755 "${pkgdir}/usr/lib/perl5/vendor_perl/auto/Image/Magick/Magick.so"
+ install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/imagemagick/LICENSE"
+ install -Dm644 NOTICE "${pkgdir}/usr/share/licenses/imagemagick/NOTICE"
+
+#Cleaning
+ find "${pkgdir}" -name '*.bs' -delete
+ 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/testing/imagemagick/perlmagick.rpath.patch b/testing/imagemagick/perlmagick.rpath.patch
new file mode 100644
index 000000000..958c0f2ee
--- /dev/null
+++ b/testing/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/testing/imlib/CAN-2004-1026.patch b/testing/imlib/CAN-2004-1026.patch
new file mode 100644
index 000000000..c820270d4
--- /dev/null
+++ b/testing/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/testing/imlib/PKGBUILD b/testing/imlib/PKGBUILD
new file mode 100644
index 000000000..c705dbb45
--- /dev/null
+++ b/testing/imlib/PKGBUILD
@@ -0,0 +1,40 @@
+# $Id: PKGBUILD 148165 2012-01-30 18:47:22Z ibiru $
+# Maintainer: Eric Bélanger <eric@archlinux.org>
+
+pkgname=imlib
+pkgver=1.9.15
+pkgrel=11
+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' 'libtiff')
+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 imlib-1.9.15-libpng15.patch)
+sha1sums=('c9a732a354fbb3c7e1a426e5d19fc92d73f8f720'
+ 'fe2fd9ce4d7bc62271e724153de39012de8ec5ee'
+ 'ec1b47281c1a7fb21abe841f948ecc56ed13f310'
+ 'af54cb1ee0c8c6122b277284ebdd1022e31df3b5'
+ '33c3aaa43eb624f2a6ab0406285a8515903333e3')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -p1 -i "${srcdir}/debian-bug448360.patch"
+ patch -p1 -i "${srcdir}/CAN-2004-1026.patch"
+ patch -p0 -i "${srcdir}/aclocal-fixes.patch"
+ patch -p0 -i "${srcdir}/imlib-1.9.15-libpng15.patch"
+ sed '/AC_PATH_XTRA/d' -i configure.in
+ libtoolize --force
+ cp /usr/bin/libtool .
+ autoreconf --force --install
+ ./configure --prefix=/usr --sysconfdir=/etc --mandir=/usr/share/man --enable-shm --disable-static
+ sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0/g' libtool
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/testing/imlib/aclocal-fixes.patch b/testing/imlib/aclocal-fixes.patch
new file mode 100644
index 000000000..04ef737e7
--- /dev/null
+++ b/testing/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/testing/imlib/debian-bug448360.patch b/testing/imlib/debian-bug448360.patch
new file mode 100644
index 000000000..f1c0ef111
--- /dev/null
+++ b/testing/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/testing/imlib/imlib-1.9.15-libpng15.patch b/testing/imlib/imlib-1.9.15-libpng15.patch
new file mode 100644
index 000000000..7837cd488
--- /dev/null
+++ b/testing/imlib/imlib-1.9.15-libpng15.patch
@@ -0,0 +1,142 @@
+--- gdk_imlib/io-png.c
++++ gdk_imlib/io-png.c
+@@ -40,13 +40,13 @@
+ return NULL;
+ }
+
+- if (setjmp(png_ptr->jmpbuf))
++ if (setjmp(png_jmpbuf(png_ptr)))
+ {
+ png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
+ return NULL;
+ }
+
+- if (info_ptr->color_type == PNG_COLOR_TYPE_RGB_ALPHA)
++ if (png_get_color_type(png_ptr, info_ptr) == PNG_COLOR_TYPE_RGB_ALPHA)
+ {
+ png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
+ return NULL;
+@@ -275,13 +275,13 @@
+ return NULL;
+ }
+
+- if (setjmp(png_ptr->jmpbuf))
++ if (setjmp(png_jmpbuf(png_ptr)))
+ {
+ png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
+ return NULL;
+ }
+
+- if (info_ptr->color_type == PNG_COLOR_TYPE_RGB_ALPHA)
++ if (png_get_color_type(png_ptr, info_ptr) == PNG_COLOR_TYPE_RGB_ALPHA)
+ {
+ png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
+ return NULL;
+@@ -301,6 +301,9 @@
+ /* Setup Translators */
+ if (color_type == PNG_COLOR_TYPE_PALETTE)
+ png_set_expand(png_ptr);
++ if (color_type == PNG_COLOR_TYPE_GRAY && bit_depth < 8)
++ png_set_expand(png_ptr);
++
+ png_set_strip_16(png_ptr);
+ png_set_packing(png_ptr);
+ if (png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS))
+@@ -440,13 +443,13 @@
+ return NULL;
+ }
+
+- if (setjmp(png_ptr->jmpbuf))
++ if (setjmp(png_jmpbuf(png_ptr)))
+ {
+ png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
+ return NULL;
+ }
+
+- if (info_ptr->color_type == PNG_COLOR_TYPE_RGB_ALPHA)
++ if (png_get_color_type(png_ptr, info_ptr) == PNG_COLOR_TYPE_RGB_ALPHA)
+ {
+ png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
+ return NULL;
+@@ -635,7 +638,7 @@
+ png_destroy_write_struct(&png_ptr, (png_infopp) NULL);
+ return 0;
+ }
+- if (setjmp(png_ptr->jmpbuf))
++ if (setjmp(png_jmpbuf(png_ptr)))
+ {
+ fclose(f);
+ png_destroy_write_struct(&png_ptr, (png_infopp) NULL);
+--- Imlib/load.c
++++ Imlib/load.c
+@@ -197,12 +197,12 @@
+ png_destroy_read_struct(&png_ptr, NULL, NULL);
+ return NULL;
+ }
+- if (setjmp(png_ptr->jmpbuf))
++ if (setjmp(png_jmpbuf(png_ptr)))
+ {
+ png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
+ return NULL;
+ }
+- if (info_ptr->color_type == PNG_COLOR_TYPE_RGB_ALPHA)
++ if (png_get_color_type(png_ptr, info_ptr) == PNG_COLOR_TYPE_RGB_ALPHA)
+ {
+ png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
+ return NULL;
+@@ -260,7 +260,8 @@
+ png_read_image(png_ptr, lines);
+ png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
+ ptr = data;
+- if (color_type == PNG_COLOR_TYPE_GRAY_ALPHA)
++ if (color_type == PNG_COLOR_TYPE_GRAY
++ || color_type == PNG_COLOR_TYPE_GRAY_ALPHA)
+ {
+ for (y = 0; y < *h; y++)
+ {
+@@ -285,6 +286,7 @@
+ }
+ }
+ }
++#if 0
+ else if (color_type == PNG_COLOR_TYPE_GRAY)
+ {
+ for (y = 0; y < *h; y++)
+@@ -300,6 +302,7 @@
+ }
+ }
+ }
++#endif
+ else
+ {
+ for (y = 0; y < *h; y++)
+--- Imlib/save.c
++++ Imlib/save.c
+@@ -342,7 +342,7 @@
+ png_destroy_write_struct(&png_ptr, (png_infopp) NULL);
+ return 0;
+ }
+- if (setjmp(png_ptr->jmpbuf))
++ if (setjmp(png_jmpbuf(png_ptr)))
+ {
+ fclose(f);
+ png_destroy_write_struct(&png_ptr, (png_infopp) NULL);
+--- Imlib/utils.c
++++ Imlib/utils.c
+@@ -1981,14 +1981,13 @@
+ png_destroy_read_struct(&png_ptr, NULL, NULL);
+ return NULL;
+ }
+-
+- if (setjmp(png_ptr->jmpbuf))
++ if (setjmp(png_jmpbuf(png_ptr)))
+ {
+ png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
+ return NULL;
+ }
+
+- if (info_ptr->color_type == PNG_COLOR_TYPE_RGB_ALPHA)
++ if (png_get_color_type(png_ptr, info_ptr) == PNG_COLOR_TYPE_RGB_ALPHA)
+ {
+ png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
+ return NULL;
diff --git a/testing/imlib2/PKGBUILD b/testing/imlib2/PKGBUILD
new file mode 100644
index 000000000..b9f697c09
--- /dev/null
+++ b/testing/imlib2/PKGBUILD
@@ -0,0 +1,38 @@
+# $Id: PKGBUILD 148167 2012-01-30 18:47:24Z ibiru $
+# 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.5
+pkgrel=2
+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' 'giflib' 'bzip2' 'freetype2' 'libxext' 'libpng' 'libid3tag' 'libjpeg-turbo')
+options=('!libtool')
+source=("http://downloads.sourceforge.net/enlightenment/$pkgname-$pkgver.tar.bz2")
+sha1sums=('af86a2c38f4bc3806db57e64e74dc9814ad474a0')
+
+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
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make DESTDIR="$pkgdir" install
+
+ # Install License
+ install -Dm644 COPYING "$pkgdir/usr/share/licenses/$pkgname/COPYING"
+}
diff --git a/testing/inkscape/PKGBUILD b/testing/inkscape/PKGBUILD
new file mode 100644
index 000000000..68a352f95
--- /dev/null
+++ b/testing/inkscape/PKGBUILD
@@ -0,0 +1,57 @@
+# $Id: PKGBUILD 148169 2012-01-30 18:47:27Z ibiru $
+# Contributor: tobias <tobias@archlinux.org>
+# Contributor: Tobias Kieslich <tobias@justdreams.de>
+# Maintainer: Gaetan Bisson <bisson@archlinux.org>
+
+pkgname=inkscape
+pkgver=0.48.2
+pkgrel=6
+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' 'libxslt' 'gsl' 'popt' 'python2'
+ 'gtkspell' 'imagemagick' 'desktop-file-utils' 'hicolor-icon-theme')
+optdepends=('pstoedit: latex formulas'
+ 'texlive-core: latex formulas'
+ 'python2-numpy: some extensions'
+ 'python-lxml: some extensions and filters'
+ 'pyxml: some extensions'
+ 'uniconvertor: reading/writing to some proprietary formats')
+options=('!libtool')
+source=("http://downloads.sourceforge.net/project/${pkgname}/${pkgname}/${pkgver}/${pkgname}-${pkgver}.tar.gz"
+ 'libpng15.patch')
+sha1sums=('422a4bacd4dc42adafa203244bc9816783cba4d3'
+ 'd6512f3cb38ca8e2436dc485aa652490d17b3a52')
+
+install=install
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ sed -i 's|/usr/bin/python\>|/usr/bin/python2|g' cxxtest/*.py
+ sed -i 's|/usr/bin/env python\>|/usr/bin/env python2|g' share/*/{test/,}*.py
+ sed -i 's|"python" },|"python2" },|g' src/extension/implementation/script.cpp
+ sed -i 's|python -c|python2 -c|g' configure share/extensions/uniconv*.py
+ sed -i 's|"python"|"python2"|g' src/main.cpp
+
+ patch -p1 -i ../libpng15.patch
+
+ ./configure --prefix=/usr \
+ --with-python \
+ --with-perl \
+ --without-gnome-vfs \
+ --with-xft \
+ --enable-lcms \
+ --enable-poppler-cairo \
+ --disable-dependency-tracking \
+
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/testing/inkscape/install b/testing/inkscape/install
new file mode 100644
index 000000000..6e803bf1d
--- /dev/null
+++ b/testing/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/testing/inkscape/libpng15.patch b/testing/inkscape/libpng15.patch
new file mode 100644
index 000000000..e24913ed6
--- /dev/null
+++ b/testing/inkscape/libpng15.patch
@@ -0,0 +1,40 @@
+--- inkscape-0.48.1/src/extension/internal/pdfinput/svg-builder.cpp
++++ inkscape-0.48.1-mod//src/extension/internal/pdfinput/svg-builder.cpp
+@@ -1443,7 +1443,7 @@
+ return NULL;
+ }
+ // Set error handler
+- if (setjmp(png_ptr->jmpbuf)) {
++ if (setjmp(png_jmpbuf(png_ptr))) {
+ png_destroy_write_struct(&png_ptr, &info_ptr);
+ return NULL;
+ }
+--- inkscape-0.48.1/src/helper/png-write.cpp
++++ inkscape-0.48.1-mod//src/helper/png-write.cpp
+@@ -165,7 +165,7 @@
+ /* Set error handling. REQUIRED if you aren't supplying your own
+ * error hadnling functions in the png_create_write_struct() call.
+ */
+- if (setjmp(png_ptr->jmpbuf)) {
++ if (setjmp(png_jmpbuf(png_ptr))) {
+ /* If we get here, we had a problem reading the file */
+ fclose(fp);
+ png_destroy_write_struct(&png_ptr, &info_ptr);
+--- inkscape-0.48.1/src/sp-image.cpp
++++ inkscape-0.48.1-mod//src/sp-image.cpp
+@@ -386,9 +386,13 @@
+
+ #if defined(PNG_iCCP_SUPPORTED)
+ {
+- char* name = 0;
++ png_charp name = 0;
+ int compression_type = 0;
+- char* profile = 0;
++#if (PNG_LIBPNG_VER < 10500)
++ png_charp profile = 0;
++#else
++ png_bytep profile = 0;
++#endif
+ png_uint_32 proflen = 0;
+ if ( png_get_iCCP(pngPtr, infoPtr, &name, &compression_type, &profile, &proflen) ) {
+ // g_message("Found an iCCP chunk named [%s] with %d bytes and comp %d", name, proflen, compression_type);
diff --git a/testing/java7-openjdk/PKGBUILD b/testing/java7-openjdk/PKGBUILD
index 5d51ffaf5..e2e70cd57 100644
--- a/testing/java7-openjdk/PKGBUILD
+++ b/testing/java7-openjdk/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 146368 2012-01-09 20:15:28Z andyrtr $
+# $Id: PKGBUILD 148171 2012-01-30 18:47:32Z ibiru $
# Maintainer: Andreas Radke <andyrtr@archlinux.org>
# Contributor: Jan de Groot <jgc@archlinux.org>
# Contributor: Guillaume ALAUX <guillaume@archlinux.org>
@@ -24,26 +24,25 @@ _OPENJDK_CHANGESET=0a76e5390e68
_bootstrap=0 # 0/1 for quick build or full bootstrap
pkgver=${_java_ver}.${_openjdk_build}_${_icedtea_ver}
-pkgrel=5
+pkgrel=6
arch=('i686' 'x86_64')
url="http://icedtea.classpath.org"
license=('custom')
options=('!emptydirs')
-makedepends=('jdk7-openjdk' 'libxp' 'libxslt'
- 'alsa-lib' 'apache-ant>=1.8.1' 'giflib'
+makedepends=('jdk7-openjdk' 'libxp' 'libxslt'
+ 'alsa-lib' 'apache-ant>=1.8.1' 'giflib' 'libpng>=1.5.7' 'gtk2'
'rhino' 'libpulse>=0.9.11' 'zip' 'unzip' 'cpio' 'fastjar') # fastjar`?
[ "$_bootstrap" = "1" ] && makedepends=(${makedepends[@]} 'eclipse-ecj')
-_url=http://icedtea.classpath.org/hg/release/icedtea7-forest-2.0/archive
-#_url=http://icedtea.classpath.org/hg/icedtea7-forest/archive
+_url=http://icedtea.classpath.org/hg/release/icedtea7-forest-2.0
source=(http://icedtea.classpath.org/download/source/icedtea-${_icedtea_ver}.tar.gz
- ${_url}/${_OPENJDK_CHANGESET}.tar.gz # openjdk.tar.gz
- ${_url}/${_CORBA_CHANGESET}.tar.gz # corba.tar.gz
- ${_url}/${_JAXP_CHANGESET}.tar.gz # jaxp.tar.gz
- ${_url}/${_JAXWS_CHANGESET}.tar.gz # jaxws.tar.gz
- ${_url}/${_JDK_CHANGESET}.tar.gz # jdk.tar.gz
- ${_url}/${_LANGTOOLS_CHANGESET}.tar.gz # langtools.tar.gz
- ${_url}/${_HOTSPOT_CHANGESET}.tar.gz # hotspot.tar.gz
+ ${_url}/archive/${_OPENJDK_CHANGESET}.tar.gz # openjdk.tar.gz
+ ${_url}/corba/archive/${_CORBA_CHANGESET}.tar.gz # corba.tar.gz
+ ${_url}/jaxp/archive/${_JAXP_CHANGESET}.tar.gz # jaxp.tar.gz
+ ${_url}/jaxws/archive/${_JAXWS_CHANGESET}.tar.gz # jaxws.tar.gz
+ ${_url}/jdk/archive/${_JDK_CHANGESET}.tar.gz # jdk.tar.gz
+ ${_url}/langtools/archive/${_LANGTOOLS_CHANGESET}.tar.gz # langtools.tar.gz
+ ${_url}/hotspot/archive/${_HOTSPOT_CHANGESET}.tar.gz # hotspot.tar.gz
fontconfig-paths.diff
fix_corba_cmds_path.diff
openjdk7_fix_jdk_cmds_path.diff
@@ -52,19 +51,9 @@ source=(http://icedtea.classpath.org/download/source/icedtea-${_icedtea_ver}.tar
jdk7-openjdk.profile.csh
jre7-openjdk.profile
jre7-openjdk.profile.csh
- glibc2_15.diff)
-
-#http://www.java.net/download/openjdk/jdk${_java_ver}/promoted/${_openjdk_build}/openjdk-${_java_ver}-fcs-src-${_openjdk_build}-${_openjdk_date}.zip
-
-noextract=("${_OPENJDK_CHANGESET}.tar.gz"
- "${_CORBA_CHANGESET}.tar.gz"
- "${_JAXP_CHANGESET}.tar.gz"
- "${_JAXWS_CHANGESET}.tar.gz"
- "${_JDK_CHANGESET}.tar.gz"
- "${_LANGTOOLS_CHANGESET}.tar.gz"
- "${_HOTSPOT_CHANGESET}.tar.gz")
+ glibc2_15.diff)
md5sums=('752721a037a625001fad7a5fc2013f60'
- 'ffb12013564794e9abbffbbbd0c58502'
+ '4c34ddf70124ea90c79201c1afede3e3'
'8f8d222d0a6d363d06b40576da5f1ea2'
'4abf34372e34cccd74ad337e487ed790'
'f2f40590a83889b8aa1d4631b705092d'
@@ -81,6 +70,16 @@ md5sums=('752721a037a625001fad7a5fc2013f60'
'62443459da0cb28181feb260dc0e5ce7'
'a4293acadff03bdccbc9b412ad288549')
+#http://www.java.net/download/openjdk/jdk${_java_ver}/promoted/${_openjdk_build}/openjdk-${_java_ver}-fcs-src-${_openjdk_build}-${_openjdk_date}.zip
+
+noextract=("${_OPENJDK_CHANGESET}.tar.gz"
+ "${_CORBA_CHANGESET}.tar.gz"
+ "${_JAXP_CHANGESET}.tar.gz"
+ "${_JAXWS_CHANGESET}.tar.gz"
+ "${_JDK_CHANGESET}.tar.gz"
+ "${_LANGTOOLS_CHANGESET}.tar.gz"
+ "${_HOTSPOT_CHANGESET}.tar.gz")
+
_jvmdir=/usr/lib/jvm/java-7-openjdk
[ "$CARCH" = "x86_64" ] && _JARCH=amd64
@@ -144,16 +143,16 @@ package_jre7-openjdk-headless() {
optdepends=('libcups: needed for Java Mauve support - libmawt.so'
'fontconfig: needed for Java Mauve support - libmawt.so')
provides=('java-runtime=7')
- conflicts=('java-runtime')
+ conflicts=('java-runtime' 'openjdk6')
# replaces=('openjdk6') # once we remove openjdk6 pkg from the repos
backup=(etc/profile.d/jre.sh
etc/profile.d/jre.csh
etc/java-7-openjdk/calendars.properties
- etc/java-7-openjdk/content-types.properties
+ etc/java-7-openjdk/content-types.properties
etc/java-7-openjdk/cursors/cursors.properties
etc/java-7-openjdk/flavormap.properties
etc/java-7-openjdk/fontconfig.bfc
- etc/java-7-openjdk/fontconfig.properties
+ etc/java-7-openjdk/fontconfig.properties
etc/java-7-openjdk/jvm.cfg
etc/java-7-openjdk/logging.properties
etc/java-7-openjdk/management/jmxremote.access
@@ -265,9 +264,10 @@ package_jre7-openjdk() {
'alsa-lib: for basic sound support'
'giflib: for gif format support'
'libpulse: for advanced sound support'
- 'gtk2: for the Gtk+ look and feel - desktop usage')
+ 'gtk2: for the Gtk+ look and feel - desktop usage')
install=jre7-openjdk.install
-
+ conflicts=('openjdk6')
+
mv ${srcdir}/tmp-desktop-jre/* ${pkgdir}
# Link binaries into /usr/bin
pushd ${pkgdir}/${_jvmdir}/jre/bin
diff --git a/testing/kdebase-workspace/PKGBUILD b/testing/kdebase-workspace/PKGBUILD
index b4f171fad..bbd13b4fd 100644
--- a/testing/kdebase-workspace/PKGBUILD
+++ b/testing/kdebase-workspace/PKGBUILD
@@ -1,11 +1,11 @@
-# $Id: PKGBUILD 147576 2012-01-25 23:16:04Z andrea $
+# $Id: PKGBUILD 148173 2012-01-30 18:47:35Z ibiru $
# Maintainer: Andrea Scarpino <andrea@archlinux.org>
# Contributor: Pierre Schmitz <pierre@archlinux.de>
pkgname=kdebase-workspace
_pkgname=kde-workspace
pkgver=4.8.0
-pkgrel=1
+pkgrel=2
pkgdesc="KDE Base Workspace"
arch=('i686' 'x86_64')
url='http://www.kde.org'
diff --git a/testing/kdegraphics-okular/PKGBUILD b/testing/kdegraphics-okular/PKGBUILD
index 28bef76ae..8c266dff8 100644
--- a/testing/kdegraphics-okular/PKGBUILD
+++ b/testing/kdegraphics-okular/PKGBUILD
@@ -1,9 +1,9 @@
-# $Id: PKGBUILD 147568 2012-01-25 23:11:25Z andrea $
+# $Id: PKGBUILD 148175 2012-01-30 18:47:38Z ibiru $
# Maintainer: Andrea Scarpino <andrea@archlinux.org>
pkgname=kdegraphics-okular
pkgver=4.8.0
-pkgrel=1
+pkgrel=2
pkgdesc='Document Viewer'
arch=('i686' 'x86_64')
url="http://kde.org/applications/graphics/okular/"
diff --git a/testing/kdegraphics-strigi-analyzer/PKGBUILD b/testing/kdegraphics-strigi-analyzer/PKGBUILD
index 57ff195c6..f0b286c1a 100644
--- a/testing/kdegraphics-strigi-analyzer/PKGBUILD
+++ b/testing/kdegraphics-strigi-analyzer/PKGBUILD
@@ -1,9 +1,9 @@
-# $Id: PKGBUILD 147626 2012-01-25 23:48:49Z andrea $
+# $Id: PKGBUILD 148177 2012-01-30 18:47:40Z ibiru $
# Maintainer: Andrea Scarpino <andrea@archlinux.org>
pkgname=kdegraphics-strigi-analyzer
pkgver=4.8.0
-pkgrel=1
+pkgrel=2
pkgdesc="Strigi analyzers for various graphics file formats"
url="http://kde.org/"
arch=('i686' 'x86_64')
diff --git a/testing/kdelibs3/PKGBUILD b/testing/kdelibs3/PKGBUILD
new file mode 100644
index 000000000..4bead528f
--- /dev/null
+++ b/testing/kdelibs3/PKGBUILD
@@ -0,0 +1,94 @@
+# $Id: PKGBUILD 148181 2012-01-30 18:47:46Z ibiru $
+# Maintainer: Eric Bélanger <eric@archlinux.org>
+# Contributor: Pierre Schmitz <pierre@archlinux.de>
+# Contributor: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=kdelibs3
+pkgver=3.5.10
+pkgrel=12
+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'
+ 'libidn' 'openexr' 'aspell' 'qt3' 'ca-certificates')
+makedepends=('cups' 'hspell')
+optdepends=('hspell: for Hebrew spell-checking support')
+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'
+ 'openssl.patch'
+ 'kdelibs3-missing-include.patch')
+sha1sums=('c930a25f4419134def55b8466c3a6f737227fb82'
+ 'c8ca21e4848a627760746d0a8a64bf4f90684c3e'
+ '50c9de71b102507fb78b192ecc22a5fc3e031bc3'
+ 'fbd6e773edf3e8bb8e1272629984025e041da2ca'
+ '5fbbf7a5e2032878815fa055bfb5020f478d2b25'
+ '35e56fe4c5f71685e64b13f448dcacc620166e06'
+ '50e92950498463defb9149ffcf8cbc2e8cd1063b'
+ 'e5f5b8c060a2db9cedb82bf18caadfa869921779')
+
+build() {
+ cd "$srcdir"/kdelibs-${pkgver}
+
+ . /etc/profile.d/qt3.sh
+ . "$srcdir"/kde3.profile
+
+ patch -p0 -i "$srcdir"/kde-3.5-1074156.patch
+ patch -p1 -i "$srcdir"/acinclude.patch
+ patch -p1 -i "$srcdir"/kde4-compatibility.patch
+ patch -p1 -i "${srcdir}"/openssl.patch
+ patch -p0 -i "$srcdir"/kdelibs3-missing-include.patch
+
+ 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
+ make
+}
+
+package() {
+ cd "$srcdir"/kdelibs-${pkgver}
+
+ make DESTDIR="$pkgdir" install
+
+ # 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/testing/kdelibs3/acinclude.patch b/testing/kdelibs3/acinclude.patch
new file mode 100644
index 000000000..0610d6df5
--- /dev/null
+++ b/testing/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/testing/kdelibs3/kconf_updaterc b/testing/kdelibs3/kconf_updaterc
new file mode 100644
index 000000000..24c2623fb
--- /dev/null
+++ b/testing/kdelibs3/kconf_updaterc
@@ -0,0 +1,2 @@
+updateInfoAdded=false
+autoUpdateDisabled=true
diff --git a/testing/kdelibs3/kde3.profile b/testing/kdelibs3/kde3.profile
new file mode 100755
index 000000000..ef09631ff
--- /dev/null
+++ b/testing/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/testing/kdelibs3/kde4-compatibility.patch b/testing/kdelibs3/kde4-compatibility.patch
new file mode 100644
index 000000000..129c314ae
--- /dev/null
+++ b/testing/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/testing/kdelibs3/kdelibs3-missing-include.patch b/testing/kdelibs3/kdelibs3-missing-include.patch
new file mode 100644
index 000000000..5b84ef746
--- /dev/null
+++ b/testing/kdelibs3/kdelibs3-missing-include.patch
@@ -0,0 +1,10 @@
+--- kdeprint/cups/cupsdconf2/cups-util.c.old 2012-01-19 01:30:26.000000000 -0500
++++ kdeprint/cups/cupsdconf2/cups-util.c 2012-01-19 01:31:33.000000000 -0500
+@@ -2,6 +2,7 @@
+ #include <cups/http.h>
+ #include <cups/cups.h>
+ #include <stdlib.h>
++#include <stdio.h>
+ #include <fcntl.h>
+ #include <sys/stat.h>
+ #include <unistd.h>
diff --git a/testing/kdelibs3/kdelibs3.install b/testing/kdelibs3/kdelibs3.install
new file mode 100644
index 000000000..7291ac0a2
--- /dev/null
+++ b/testing/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/testing/kdelibs3/openssl.patch b/testing/kdelibs3/openssl.patch
new file mode 100644
index 000000000..a948b884a
--- /dev/null
+++ b/testing/kdelibs3/openssl.patch
@@ -0,0 +1,180 @@
+diff -up kdelibs-3.5.10/kio/kssl/kopenssl.cc.ossl-1.x kdelibs-3.5.10/kio/kssl/kopenssl.cc
+--- kdelibs-3.5.10/kio/kssl/kopenssl.cc.ossl-1.x 2009-09-04 23:10:53.000000000 +0200
++++ kdelibs-3.5.10/kio/kssl/kopenssl.cc 2009-09-04 23:10:53.000000000 +0200
+@@ -96,9 +96,14 @@ static int (*K_BIO_write) (BIO *b, cons
+ static int (*K_PEM_ASN1_write_bio) (int (*)(),const char *,BIO *,char *,
+ const EVP_CIPHER *,unsigned char *,int ,
+ pem_password_cb *, void *) = 0L;
++#if OPENSSL_VERSION_NUMBER >= 0x10000000L
++static int (*K_ASN1_item_i2d_fp)(ASN1_ITEM *,FILE *,unsigned char *) = 0L;
++static ASN1_ITEM *K_NETSCAPE_X509_it = 0L;
++#else
+ static ASN1_METHOD* (*K_X509_asn1_meth) (void) = 0L;
+ static int (*K_ASN1_i2d_fp)(int (*)(),FILE *,unsigned char *) = 0L;
+ static int (*K_i2d_ASN1_HEADER)(ASN1_HEADER *, unsigned char **) = 0L;
++#endif
+ static int (*K_X509_print_fp) (FILE *, X509*) = 0L;
+ static int (*K_i2d_PKCS12) (PKCS12*, unsigned char**) = 0L;
+ static int (*K_i2d_PKCS12_fp) (FILE *, PKCS12*) = 0L;
+@@ -430,9 +435,14 @@ KConfig *cfg;
+ K_BIO_ctrl = (long (*) (BIO *,int,long,void *)) _cryptoLib->symbol("BIO_ctrl");
+ K_BIO_write = (int (*) (BIO *b, const void *data, int len)) _cryptoLib->symbol("BIO_write");
+ K_PEM_ASN1_write_bio = (int (*)(int (*)(), const char *,BIO*, char*, const EVP_CIPHER *, unsigned char *, int, pem_password_cb *, void *)) _cryptoLib->symbol("PEM_ASN1_write_bio");
++#if OPENSSL_VERSION_NUMBER >= 0x10000000L
++ K_ASN1_item_i2d_fp = (int (*)(ASN1_ITEM *, FILE*, unsigned char *)) _cryptoLib->symbol("ASN1_item_i2d_fp");
++ K_NETSCAPE_X509_it = (ASN1_ITEM *) _cryptoLib->symbol("NETSCAPE_X509_it");
++#else
+ K_X509_asn1_meth = (ASN1_METHOD* (*)(void)) _cryptoLib->symbol("X509_asn1_meth");
+ K_ASN1_i2d_fp = (int (*)(int (*)(), FILE*, unsigned char *)) _cryptoLib->symbol("ASN1_i2d_fp");
+ K_i2d_ASN1_HEADER = (int (*)(ASN1_HEADER *, unsigned char **)) _cryptoLib->symbol("i2d_ASN1_HEADER");
++#endif
+ K_X509_print_fp = (int (*)(FILE*, X509*)) _cryptoLib->symbol("X509_print_fp");
+ K_i2d_PKCS12 = (int (*)(PKCS12*, unsigned char**)) _cryptoLib->symbol("i2d_PKCS12");
+ K_i2d_PKCS12_fp = (int (*)(FILE *, PKCS12*)) _cryptoLib->symbol("i2d_PKCS12_fp");
+@@ -594,7 +604,7 @@ KConfig *cfg;
+ K_SSL_set_session = (int (*)(SSL*,SSL_SESSION*)) _sslLib->symbol("SSL_set_session");
+ K_d2i_SSL_SESSION = (SSL_SESSION* (*)(SSL_SESSION**,unsigned char**, long)) _sslLib->symbol("d2i_SSL_SESSION");
+ K_i2d_SSL_SESSION = (int (*)(SSL_SESSION*,unsigned char**)) _sslLib->symbol("i2d_SSL_SESSION");
+- K_SSL_get_ciphers = (STACK *(*)(const SSL*)) _sslLib->symbol("SSL_get_ciphers");
++ K_SSL_get_ciphers = (STACK_OF(SSL_CIPHER) *(*)(const SSL*)) _sslLib->symbol("SSL_get_ciphers");
+ #endif
+
+
+@@ -982,7 +992,13 @@ int KOpenSSLProxy::PEM_write_bio_X509(BI
+ else return -1;
+ }
+
+-
++#if OPENSSL_VERSION_NUMBER >= 0x10000000L
++int KOpenSSLProxy::ASN1_i2d_fp(FILE *out,unsigned char *x) {
++ if (K_ASN1_item_i2d_fp && K_NETSCAPE_X509_it)
++ return (K_ASN1_item_i2d_fp)(K_NETSCAPE_X509_it, out, x);
++ else return -1;
++}
++#else
+ ASN1_METHOD *KOpenSSLProxy::X509_asn1_meth(void) {
+ if (K_X509_asn1_meth) return (K_X509_asn1_meth)();
+ else return 0L;
+@@ -994,7 +1010,7 @@ int KOpenSSLProxy::ASN1_i2d_fp(FILE *out
+ return (K_ASN1_i2d_fp)((int (*)())K_i2d_ASN1_HEADER, out, x);
+ else return -1;
+ }
+-
++#endif
+
+ int KOpenSSLProxy::X509_print(FILE *fp, X509 *x) {
+ if (K_X509_print_fp) return (K_X509_print_fp)(fp, x);
+diff -up kdelibs-3.5.10/kio/kssl/kopenssl.h.ossl-1.x kdelibs-3.5.10/kio/kssl/kopenssl.h
+--- kdelibs-3.5.10/kio/kssl/kopenssl.h.ossl-1.x 2006-07-22 10:16:39.000000000 +0200
++++ kdelibs-3.5.10/kio/kssl/kopenssl.h 2009-09-04 23:10:53.000000000 +0200
+@@ -48,6 +48,9 @@ class KOpenSSLProxyPrivate;
+ #include <openssl/stack.h>
+ #include <openssl/bn.h>
+ #undef crypt
++#if OPENSSL_VERSION_NUMBER >= 0x10000000L
++#define STACK _STACK
++#endif
+ #endif
+
+ #include <kstaticdeleter.h>
+@@ -446,12 +449,12 @@ public:
+ */
+ int PEM_write_bio_X509(BIO *bp, X509 *x);
+
+-
++#if OPENSSL_VERSION_NUMBER < 0x10000000L
+ /*
+ * X509_asn1_meth - used for netscape output
+ */
+ ASN1_METHOD *X509_asn1_meth();
+-
++#endif
+
+ /*
+ * ASN1_i2d_fp - used for netscape output
+@@ -531,6 +534,9 @@ public:
+ */
+ void sk_free(STACK *s);
+
++#if OPENSSL_VERSION_NUMBER >= 0x10000000L
++ void sk_free(void *s) { return sk_free(reinterpret_cast<STACK*>(s)); }
++#endif
+
+ /*
+ * Number of elements in the stack
+@@ -543,6 +549,9 @@ public:
+ */
+ char *sk_value(STACK *s, int n);
+
++#if OPENSSL_VERSION_NUMBER >= 0x10000000L
++ char *sk_value(void *s, int n) { return sk_value(reinterpret_cast<STACK*>(s), n); }
++#endif
+
+ /*
+ * Create a new stack
+@@ -555,6 +564,9 @@ public:
+ */
+ int sk_push(STACK *s, char *d);
+
++#if OPENSSL_VERSION_NUMBER >= 0x10000000L
++ int sk_push(void *s, void *d) { return sk_push(reinterpret_cast<STACK*>(s), reinterpret_cast<char*>(d)); }
++#endif
+
+ /*
+ * Duplicate the stack
+diff -up kdelibs-3.5.10/kio/kssl/ksmimecrypto.cc.ossl-1.x kdelibs-3.5.10/kio/kssl/ksmimecrypto.cc
+--- kdelibs-3.5.10/kio/kssl/ksmimecrypto.cc.ossl-1.x 2005-10-10 17:05:44.000000000 +0200
++++ kdelibs-3.5.10/kio/kssl/ksmimecrypto.cc 2009-09-04 23:10:53.000000000 +0200
+@@ -87,7 +87,7 @@ KSMIMECryptoPrivate::KSMIMECryptoPrivate
+
+
+ STACK_OF(X509) *KSMIMECryptoPrivate::certsToX509(QPtrList<KSSLCertificate> &certs) {
+- STACK_OF(X509) *x509 = sk_new(NULL);
++ STACK_OF(X509) *x509 = reinterpret_cast<STACK_OF(X509)*>(sk_new(NULL));
+ KSSLCertificate *cert = certs.first();
+ while(cert) {
+ sk_X509_push(x509, cert->getCert());
+diff -up kdelibs-3.5.10/kio/kssl/ksslcertificate.cc.ossl-1.x kdelibs-3.5.10/kio/kssl/ksslcertificate.cc
+--- kdelibs-3.5.10/kio/kssl/ksslcertificate.cc.ossl-1.x 2006-01-19 18:06:12.000000000 +0100
++++ kdelibs-3.5.10/kio/kssl/ksslcertificate.cc 2009-09-04 23:10:53.000000000 +0200
+@@ -1003,17 +1003,31 @@ return qba;
+ QByteArray KSSLCertificate::toNetscape() {
+ QByteArray qba;
+ #ifdef KSSL_HAVE_SSL
+-ASN1_HEADER ah;
+-ASN1_OCTET_STRING os;
+-KTempFile ktf;
++#if OPENSSL_VERSION_NUMBER >= 0x10000000L
++ NETSCAPE_X509 nx;
++ ASN1_OCTET_STRING hdr;
++#else
++ ASN1_HEADER ah;
++ ASN1_OCTET_STRING os;
++#endif
++ KTempFile ktf;
+
+- os.data = (unsigned char *)NETSCAPE_CERT_HDR;
+- os.length = strlen(NETSCAPE_CERT_HDR);
+- ah.header = &os;
+- ah.data = (char *)getCert();
+- ah.meth = d->kossl->X509_asn1_meth();
++#if OPENSSL_VERSION_NUMBER >= 0x10000000L
++ hdr.data = (unsigned char *)NETSCAPE_CERT_HDR;
++ hdr.length = strlen(NETSCAPE_CERT_HDR);
++ nx.header = &hdr;
++ nx.cert = getCert();
++
++ d->kossl->ASN1_i2d_fp(ktf.fstream(),(unsigned char *)&nx);
++#else
++ os.data = (unsigned char *)NETSCAPE_CERT_HDR;
++ os.length = strlen(NETSCAPE_CERT_HDR);
++ ah.header = &os;
++ ah.data = (char *)getCert();
++ ah.meth = d->kossl->X509_asn1_meth();
+
+- d->kossl->ASN1_i2d_fp(ktf.fstream(),(unsigned char *)&ah);
++ d->kossl->ASN1_i2d_fp(ktf.fstream(),(unsigned char *)&ah);
++#endif
+
+ ktf.close();
+
diff --git a/testing/koffice/PKGBUILD b/testing/koffice/PKGBUILD
new file mode 100644
index 000000000..6ced44d5f
--- /dev/null
+++ b/testing/koffice/PKGBUILD
@@ -0,0 +1,306 @@
+# $Id: PKGBUILD 148183 2012-01-30 18:47:50Z ibiru $
+# Maintainer: Ronald van Haren <ronald.archlinux.org>
+# Contributor: Andrea Scarpino <andrea@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=12
+arch=('i686' 'x86_64')
+url='http://koffice.kde.org'
+license=('GPL' 'LGPL' 'FDL')
+makedepends=('pkg-config' 'cmake' 'automoc4' 'boost' 'eigen' 'gsl' 'lcms'
+ 'glew' 'qimageblitz' 'kdepimlibs' 'pstoedit' 'poppler-qt' 'libwpd'
+ 'libwpg' 'opengtl' 'libkdcraw' 'oxygen-icons' 'libgsf')
+groups=('koffice')
+source=("http://download.kde.org/stable/${pkgbase}-${pkgver}/${pkgbase}-${pkgver}.tar.bz2"
+ 'kde4-koffice-libwpg02.patch' 'gcc46.patch' 'qt48fix.patch')
+sha256sums=('31ba0d98c0d29c7b8ab97efdeb6c618b82177b2b0ec85da088178254da43c099'
+ '69106deb4081d71b5bd8f2e4f5af67ca689e4ce9f2bb49c11dbce5fb3409d612'
+ 'e095c0b2bbedf41da6535a68b2275464dafd3f194566028d0135322f596e4739'
+ 'a20d7412ceeefdf7987b1c5179a740c7ee188e314ffb94cc226967ee194bc2aa')
+build() {
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+
+ patch -p1 -i "${srcdir}/kde4-koffice-libwpg02.patch"
+ patch -p1 -i "${srcdir}"/gcc46.patch
+ patch -p1 -i "${srcdir}"/qt48fix.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"
+ depends=('shared-mime-info' 'libgsf')
+ optdepends=('libwpd: WordPerfect document importer'
+ 'libwpg: Corel WordPerfect Graphics image importer' 'pstoedit: Karbon EPS import filter'
+ 'libkdcraw: support for raw images' 'poppler: support for pdf'
+ 'koffice-kspread: Kspread filters' 'koffice-karbon: Karbon filters'
+ 'koffice-kplato: Kplato filters')
+ install=filters.install
+ cd "${srcdir}/build/filters"
+ make DESTDIR="${pkgdir}" install
+}
+
+package_koffice-interfaces(){
+ pkgdesc="Interfaces for the KDE office suite"
+ depends=('koffice-libs')
+ cd "${srcdir}/build/interfaces"
+ make DESTDIR="${pkgdir}" install
+}
+
+package_koffice-libs(){
+ pkgdesc="Libs for the KDE office suite"
+ depends=('kdepimlibs' '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"
+ depends=('desktop-file-utils' 'xdg-utils')
+ 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' 'oxygen-icons')
+ 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=('koffice-libs' 'koffice-templates' 'oxygen-icons')
+ 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=('koffice-kspread' 'oxygen-icons')
+ install=koffice.install
+ 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=('koffice-libs')
+ install=koffice.install
+ 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=('koffice-libs')
+ cd "${srcdir}/build/kounavail"
+ make DESTDIR="${pkgdir}" install
+}
+
+package_koffice-kplato(){
+ pkgdesc="Project management application for KDE"
+ depends=('koffice-kword' 'oxygen-icons')
+ 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=('koffice-libs' 'koffice-templates' 'oxygen-icons')
+ 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=('glew' 'qimageblitz' 'oxygen-icons' 'koffice-templates' \
+ 'koffice-plugins' 'poppler-qt' 'opengtl')
+ optdepends=('koffice-filters: import/export filters' 'libkdcraw: support for raw images')
+ 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=('gsl' 'koffice-templates' 'koffice-plugins' 'oxygen-icons')
+ 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=('koffice-templates' 'koffice-pics' 'oxygen-icons' \
+ '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/testing/koffice/filters.install b/testing/koffice/filters.install
new file mode 100644
index 000000000..7c8a8bd2b
--- /dev/null
+++ b/testing/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/testing/koffice/gcc46.patch b/testing/koffice/gcc46.patch
new file mode 100644
index 000000000..dcf8a4f85
--- /dev/null
+++ b/testing/koffice/gcc46.patch
@@ -0,0 +1,23 @@
+diff -up koffice-2.3.2/krita/plugins/formats/exr/exr_converter.cc.gcc46 koffice-2.3.2/krita/plugins/formats/exr/exr_converter.cc
+--- koffice-2.3.2/krita/plugins/formats/exr/exr_converter.cc.gcc46 2011-02-17 06:13:40.000000000 -0600
++++ koffice-2.3.2/krita/plugins/formats/exr/exr_converter.cc 2011-02-19 21:15:56.597142885 -0600
+@@ -80,6 +80,9 @@ ImageType imfTypeToKisType(Imf::PixelTyp
+ return IT_FLOAT16;
+ case Imf::FLOAT:
+ return IT_FLOAT32;
++ default:
++ // shouldn't reach here
++ return IT_UNSUPPORTED;
+ }
+ }
+
+@@ -93,6 +96,9 @@ const KoColorSpace* kisTypeToColorSpace(
+ case IT_UNKNOWN:
+ case IT_UNSUPPORTED:
+ return 0;
++ default:
++ // shouldn't reach here
++ return 0;
+ }
+ }
+
diff --git a/testing/koffice/kde4-koffice-libwpg02.patch b/testing/koffice/kde4-koffice-libwpg02.patch
new file mode 100644
index 000000000..e2a55a216
--- /dev/null
+++ b/testing/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/testing/koffice/koffice.install b/testing/koffice/koffice.install
new file mode 100644
index 000000000..6c87527e2
--- /dev/null
+++ b/testing/koffice/koffice.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/testing/koffice/krita.install b/testing/koffice/krita.install
new file mode 100644
index 000000000..5d458de55
--- /dev/null
+++ b/testing/koffice/krita.install
@@ -0,0 +1,13 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+ update-mime-database usr/share/mime &> /dev/null
+ update-desktop-database -q
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/testing/koffice/qt48fix.patch b/testing/koffice/qt48fix.patch
new file mode 100644
index 000000000..de72926d5
--- /dev/null
+++ b/testing/koffice/qt48fix.patch
@@ -0,0 +1,10 @@
+--- koffice-2.3.3/plugins/chartshape/kdchart/src/KDChartBackgroundAttributes.cpp 2011-02-17 13:10:38.000000000 +0100
++++ koffice-2.3.3/plugins/chartshape/kdchart/src/KDChartBackgroundAttributes.cpp 2011-09-08 15:03:31.932039128 +0200
+@@ -150,7 +150,6 @@ QDebug operator<<(QDebug dbg, const KDCh
+ << "visible="<<ba.isVisible()
+ << "brush="<<ba.brush()
+ << "pixmapmode="<<ba.pixmapMode()
+- << "pixmap="<<ba.pixmap()
+ << ")";
+ return dbg;
+ }
diff --git a/testing/lablgtk2/PKGBUILD b/testing/lablgtk2/PKGBUILD
new file mode 100644
index 000000000..d259a5a19
--- /dev/null
+++ b/testing/lablgtk2/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 148185 2012-01-30 18:47:52Z ibiru $
+#Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=lablgtk2
+pkgver=2.14.2
+pkgrel=5
+pkgdesc=" An Objective Caml interface to gtk2"
+arch=(i686 x86_64)
+license=('LGPL')
+url="http://lablgtk.forge.ocamlcore.org/"
+depends=('gtk2' 'gtkspell' 'libgnomecanvas' 'librsvg' 'libgnomeui' 'gtksourceview2')
+makedepends=('ocaml')
+optdepends=('ocaml: for using the tools')
+DLAGENTS=('https::/usr/bin/curl -fLC - --insecure --retry 3 --retry-delay 3 -o %o %u')
+source=(https://forge.ocamlcore.org/frs/download.php/561/lablgtk-${pkgver}.tar.gz)
+options=(!makeflags)
+md5sums=('bad77680a72dab8b915cae99d1ec9b1f')
+
+build() {
+ cd "${srcdir}/lablgtk-${pkgver}"
+ ./configure --prefix=/usr
+ make world
+ make opt
+}
+
+package() {
+ cd "${srcdir}/lablgtk-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+ install -m644 META "${pkgdir}/usr/lib/ocaml/lablgtk2/"
+}
diff --git a/testing/lbreakout2/PKGBUILD b/testing/lbreakout2/PKGBUILD
new file mode 100644
index 000000000..cf0b7b616
--- /dev/null
+++ b/testing/lbreakout2/PKGBUILD
@@ -0,0 +1,44 @@
+# $Id: PKGBUILD 148187 2012-01-30 18:47:55Z ibiru $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=lbreakout2
+pkgver=2.6.3
+pkgrel=3
+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/testing/lbreakout2/lbreakout2.desktop b/testing/lbreakout2/lbreakout2.desktop
new file mode 100644
index 000000000..c8ef945da
--- /dev/null
+++ b/testing/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/testing/lbreakout2/lbreakout2.png b/testing/lbreakout2/lbreakout2.png
new file mode 100644
index 000000000..f9541e184
--- /dev/null
+++ b/testing/lbreakout2/lbreakout2.png
Binary files differ
diff --git a/testing/lcms/PKGBUILD b/testing/lcms/PKGBUILD
new file mode 100644
index 000000000..e3c3e255a
--- /dev/null
+++ b/testing/lcms/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 148189 2012-01-30 18:47:57Z ibiru $
+# Maintainer: Tobias Kieslich <neri@archlinux.org>
+# Contributor: Ben <contrasutra@myrealbox.com>
+
+pkgname=lcms
+pkgver=1.19
+pkgrel=2
+pkgdesc="Lightweight color management development library/engine"
+arch=('i686' 'x86_64')
+license=('custom')
+depends=('libtiff')
+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
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+ install -Dm 644 COPYING \
+ "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+}
diff --git a/testing/lcms2/PKGBUILD b/testing/lcms2/PKGBUILD
new file mode 100644
index 000000000..3ea0520ab
--- /dev/null
+++ b/testing/lcms2/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 148191 2012-01-30 18:47:59Z ibiru $
+# Maintainer: Eric Bélanger <eric@archlinux.org>
+# Contributor: Lukas Jirkovsky <l.jirkovsky@gmail.com>
+
+pkgname=lcms2
+pkgver=2.3
+pkgrel=2
+pkgdesc="Small-footprint color management engine, version 2"
+arch=('i686' 'x86_64')
+license=('MIT')
+depends=('libtiff')
+url="http://www.littlecms.com"
+options=('!libtool')
+source=(http://downloads.sourceforge.net/sourceforge/lcms/${pkgname}-${pkgver}.tar.gz)
+sha1sums=('67d5fabda2f5777ca8387766539b9c871d993133')
+
+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/testing/libbonoboui/PKGBUILD b/testing/libbonoboui/PKGBUILD
new file mode 100644
index 000000000..cc206725e
--- /dev/null
+++ b/testing/libbonoboui/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 148193 2012-01-30 18:48:01Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libbonoboui
+pkgver=2.24.5
+pkgrel=2
+pkgdesc="User Interface library for Bonobo"
+arch=('i686' 'x86_64')
+license=('GPL' 'LGPL')
+depends=('libgnomecanvas' 'libgnome')
+makedepends=('intltool' 'pkg-config')
+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
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+ rm -f "${pkgdir}/usr/share/applications/bonobo-browser.desktop"
+}
diff --git a/testing/libdmapsharing/PKGBUILD b/testing/libdmapsharing/PKGBUILD
new file mode 100644
index 000000000..a879dd0c5
--- /dev/null
+++ b/testing/libdmapsharing/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 148195 2012-01-30 18:48:03Z ibiru $
+#Maintainer: Ionut Biru <ibiru@archlinux.org>
+pkgname=libdmapsharing
+pkgver=2.9.12
+pkgrel=2
+pkgdesc="A library that implements the DMAP family of protocols"
+arch=('i686' 'x86_64')
+url="http://www.flyn.org/projects/libdmapsharing/index.html"
+license=('LGPL2.1')
+depends=('libsoup' 'avahi' 'gstreamer0.10-base' 'gdk-pixbuf2')
+options=('!libtool')
+source=(http://www.flyn.org/projects/libdmapsharing/${pkgname}-${pkgver}.tar.gz)
+md5sums=('ec34948df21e9ba0656c917b10fed1c3')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ ./configure --prefix=/usr --with-mdns=avahi
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/testing/libgdiplus/PKGBUILD b/testing/libgdiplus/PKGBUILD
new file mode 100644
index 000000000..7ebba2deb
--- /dev/null
+++ b/testing/libgdiplus/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 148197 2012-01-30 18:48:05Z ibiru $
+# Maintainer: Daniel Isenmann <daniel@archlinux.org>
+
+pkgname=libgdiplus
+pkgver=2.10
+pkgrel=2
+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://download.mono-project.com/sources/${pkgname}/${pkgname}-${pkgver}.tar.bz2 libpng15.patch)
+md5sums=('451966e8f637e3a1f02d1d30f900255d'
+ 'a2d143676bbaceeb88b4c34069e93986')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -p0 <../libpng15.patch
+ ./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/testing/libgdiplus/gdiplus-png14.patch b/testing/libgdiplus/gdiplus-png14.patch
new file mode 100644
index 000000000..d13260812
--- /dev/null
+++ b/testing/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/testing/libgdiplus/libpng15.patch b/testing/libgdiplus/libpng15.patch
new file mode 100644
index 000000000..31a1c0162
--- /dev/null
+++ b/testing/libgdiplus/libpng15.patch
@@ -0,0 +1,164 @@
+$NetBSD: patch-aa,v 1.8 2011/01/21 10:21:51 wiz Exp $
+
+Fix build with png-1.5.
+
+--- src/pngcodec.c.orig 2010-11-03 16:52:54.000000000 +0000
++++ src/pngcodec.c
+@@ -116,10 +116,15 @@ gdip_load_png_properties (png_structp pn
+ bitmap_data->dpi_horz = png_get_x_pixels_per_inch(png_ptr, info_ptr);
+ bitmap_data->dpi_vert = png_get_y_pixels_per_inch(png_ptr, info_ptr);
+ #elif defined(PNG_pHYs_SUPPORTED)
+- if ((info_ptr->valid & PNG_INFO_pHYs) && (info_ptr->phys_unit_type == PNG_RESOLUTION_METER)) {
+- bitmap_data->image_flags |= ImageFlagsHasRealDPI;
+- bitmap_data->dpi_horz = info_ptr->x_pixels_per_unit * 0.0254;
+- bitmap_data->dpi_vert = info_ptr->y_pixels_per_unit * 0.0254;
++ if (png_get_valid (png_ptr, info_ptr, PNG_INFO_pHYs)) {
++ png_uint_32 res_x, res_y;
++ int unit_type;
++ png_get_pHYs (png_ptr, info_ptr, &res_x, &res_y, &unit_type);
++ if (unit_type == PNG_RESOLUTION_METER) {
++ bitmap_data->image_flags |= ImageFlagsHasRealDPI;
++ bitmap_data->dpi_horz = res_x * 0.0254;
++ bitmap_data->dpi_vert = res_y * 0.0254;
++ }
+ }
+ #endif
+ /* default to screen resolution (if nothing was provided or available) */
+@@ -130,7 +135,7 @@ gdip_load_png_properties (png_structp pn
+ #if defined(PNG_iCCP_SUPPORTED)
+ {
+ png_charp name;
+- png_charp profile;
++ png_bytep profile;
+ png_uint_32 proflen;
+ int compression_type;
+
+@@ -292,6 +297,11 @@ gdip_load_png_image_from_file_or_stream
+ ImageFlags colourspace_flag;
+ int i;
+ int j;
++ png_colorp png_palette;
++ int png_num_palette;
++ png_bytep trans_alpha;
++ int num_trans;
++ png_color_16p trans_color;
+
+ width = png_get_image_width (png_ptr, info_ptr);
+ height = png_get_image_height (png_ptr, info_ptr);
+@@ -309,6 +319,8 @@ gdip_load_png_image_from_file_or_stream
+ }
+
+ /* Copy palette. */
++ png_get_PLTE (png_ptr, info_ptr, &png_palette, &png_num_palette);
++
+ num_colours = 1 << bit_depth;
+
+ if (png_get_color_type (png_ptr, info_ptr) == PNG_COLOR_TYPE_GRAY) {
+@@ -321,8 +333,8 @@ gdip_load_png_image_from_file_or_stream
+ colourspace_flag = ImageFlagsColorSpaceRGB;
+
+ palette_entries = num_colours;
+- if (palette_entries > info_ptr->num_palette) {
+- palette_entries = info_ptr->num_palette;
++ if (palette_entries > png_num_palette) {
++ palette_entries = png_num_palette;
+ }
+
+ palette = GdipAlloc (sizeof(ColorPalette) + (num_colours - 1) * sizeof(ARGB));
+@@ -331,29 +343,30 @@ gdip_load_png_image_from_file_or_stream
+
+ for (i=0; i < palette_entries; i++) {
+ set_pixel_bgra (&palette->Entries[i], 0,
+- info_ptr->palette[i].blue,
+- info_ptr->palette[i].green,
+- info_ptr->palette[i].red,
++ png_palette[i].blue,
++ png_palette[i].green,
++ png_palette[i].red,
+ 0xFF); /* alpha */
+ }
+ }
+
++ png_get_tRNS (png_ptr, info_ptr, &trans_alpha, &num_trans, &trans_color);
+ /* Make sure transparency is respected. */
+- if (info_ptr->num_trans > 0) {
++ if (num_trans > 0) {
+ palette->Flags |= PaletteFlagsHasAlpha;
+ colourspace_flag |= ImageFlagsHasAlpha;
+
+- if (info_ptr->num_trans > info_ptr->num_palette) {
+- info_ptr->num_trans = info_ptr->num_palette;
++ if (num_trans > png_num_palette) {
++ num_trans = png_num_palette;
+ }
+
+- for (i=0; i < info_ptr->num_trans; i++) {
++ for (i=0; i < num_trans; i++) {
+ set_pixel_bgra(&palette->Entries[i], 0,
+- info_ptr->palette[i].blue,
+- info_ptr->palette[i].green,
+- info_ptr->palette[i].red,
++ png_palette[i].blue,
++ png_palette[i].green,
++ png_palette[i].red,
+ #if PNG_LIBPNG_VER > 10399
+- info_ptr->trans_alpha [i]); /* alpha */
++ trans_alpha [i]); /* alpha */
+ #else
+ info_ptr->trans[i]); /* alpha */
+ #endif
+@@ -398,6 +411,8 @@ gdip_load_png_image_from_file_or_stream
+ BYTE bit_depth;
+ int stride;
+ int interlace;
++ png_colorp png_palette;
++ int png_num_palette;
+ png_bytep *row_pointers;
+ BYTE *rawptr;
+ int i, j;
+@@ -490,32 +505,33 @@ gdip_load_png_image_from_file_or_stream
+ png_byte palette = 0;
+ png_byte pix = *rowp++;
+
++ png_get_PLTE (png_ptr, info_ptr, &png_palette, &png_num_palette);
+ palette = (pix >> 6) & 0x03;
+ set_pixel_bgra (rawptr, 0,
+- info_ptr->palette[palette].blue,
+- info_ptr->palette[palette].green,
+- info_ptr->palette[palette].red,
++ png_palette[palette].blue,
++ png_palette[palette].green,
++ png_palette[palette].red,
+ 0xFF); /* alpha */
+
+ palette = (pix >> 4) & 0x03;
+ set_pixel_bgra (rawptr, 4,
+- info_ptr->palette[palette].blue,
+- info_ptr->palette[palette].green,
+- info_ptr->palette[palette].red,
++ png_palette[palette].blue,
++ png_palette[palette].green,
++ png_palette[palette].red,
+ 0xFF); /* alpha */
+
+ palette = (pix >> 2) & 0x03;
+ set_pixel_bgra (rawptr, 8,
+- info_ptr->palette[palette].blue,
+- info_ptr->palette[palette].green,
+- info_ptr->palette[palette].red,
++ png_palette[palette].blue,
++ png_palette[palette].green,
++ png_palette[palette].red,
+ 0xFF); /* alpha */
+
+ palette = pix & 0x03;
+ set_pixel_bgra (rawptr, 12,
+- info_ptr->palette[palette].blue,
+- info_ptr->palette[palette].green,
+- info_ptr->palette[palette].red,
++ png_palette[palette].blue,
++ png_palette[palette].green,
++ png_palette[palette].red,
+ 0xFF); /* alpha */
+ rawptr += 16;
+ }
diff --git a/testing/libgnome-media-profiles/PKGBUILD b/testing/libgnome-media-profiles/PKGBUILD
new file mode 100644
index 000000000..a175b4073
--- /dev/null
+++ b/testing/libgnome-media-profiles/PKGBUILD
@@ -0,0 +1,39 @@
+# $Id: PKGBUILD 148201 2012-01-30 18:48:10Z ibiru $
+# Maintainer: Ionut Biru <ibiru@archlinux.org>
+pkgname=libgnome-media-profiles
+pkgver=3.0.0
+pkgrel=3
+pkgdesc="Library for management of audio recording profiles"
+arch=(i686 x86_64)
+url="http://www.gnome.org"
+license=('GPL2')
+depends=('gconf' 'gtk3' 'gstreamer0.10-base-plugins')
+makedepends=('intltool' 'gnome-doc-utils')
+options=('!emptydirs' '!libtool')
+install=libgnome-media-profiles.install
+source=(http://download.gnome.org/sources/${pkgname}/3.0/${pkgname}-${pkgver}.tar.bz2)
+sha256sums=('ab1288e53a8fccca3e8fa59757ef586901e236e09a737a1178eeb8d74428c061')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --disable-static -disable-scrollkeeper \
+ --disable-schemas-install
+
+ sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0 /g' -e 's/ if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then/ func_append compile_command " -Wl,-O1,--as-needed"\n func_append finalize_command " -Wl,-O1,--as-needed"\n\0/' libtool
+
+ 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 gnome-audio-profiles "${pkgdir}"/etc/gconf/schemas/*.schemas
+ rm -f "${pkgdir}"/etc/gconf/schemas/*.schemas
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/testing/libgnome-media-profiles/libgnome-media-profiles.install b/testing/libgnome-media-profiles/libgnome-media-profiles.install
new file mode 100644
index 000000000..22b4c8f12
--- /dev/null
+++ b/testing/libgnome-media-profiles/libgnome-media-profiles.install
@@ -0,0 +1,17 @@
+pkgname=libgnome-media-profiles
+
+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/testing/libgnomecanvas/PKGBUILD b/testing/libgnomecanvas/PKGBUILD
new file mode 100644
index 000000000..a928bf3f8
--- /dev/null
+++ b/testing/libgnomecanvas/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 148199 2012-01-30 18:48:07Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libgnomecanvas
+pkgver=2.30.3
+pkgrel=2
+pkgdesc="The GNOME Canvas library"
+arch=(i686 x86_64)
+license=('LGPL')
+depends=('libglade>=2.6.4' 'libart-lgpl>=2.3.21')
+makedepends=('pkg-config' '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
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/testing/libgnomeui/PKGBUILD b/testing/libgnomeui/PKGBUILD
new file mode 100644
index 000000000..b72095186
--- /dev/null
+++ b/testing/libgnomeui/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 148203 2012-01-30 18:48:13Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libgnomeui
+pkgver=2.24.4
+pkgrel=2
+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' 'pkg-config')
+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
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/testing/libgpod/PKGBUILD b/testing/libgpod/PKGBUILD
new file mode 100644
index 000000000..b995ad986
--- /dev/null
+++ b/testing/libgpod/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 148205 2012-01-30 18:48:15Z ibiru $
+# Maintainer: Daniel Isenmann <daniel@archlinux.org>
+# Contributor: William Rea <sillywilly@gmail.com>
+
+pkgname=libgpod
+pkgver=0.8.2
+pkgrel=3
+pkgdesc="A shared library to access the contents of an iPod"
+arch=(i686 x86_64)
+license=('LGPL')
+depends=('gdk-pixbuf2' 'mutagen' 'sg3_utils' 'libimobiledevice')
+makedepends=('intltool' 'swig' 'docbook-xsl' 'pygobject2-devel' '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.bz2)
+options=('!libtool' '!emptydirs')
+md5sums=('ff0fd875fa08f2a6a49dec57ce3367ab')
+
+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/testing/libgtkhtml/PKGBUILD b/testing/libgtkhtml/PKGBUILD
new file mode 100644
index 000000000..bd58d8f4a
--- /dev/null
+++ b/testing/libgtkhtml/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 148207 2012-01-30 18:48:17Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libgtkhtml
+pkgver=2.11.1
+pkgrel=4
+pkgdesc="An HTML library for GTK"
+arch=(i686 x86_64)
+license=('LGPL')
+depends=('gtk2>=2.22.1' 'libxml2>=2.7.8')
+makedepends=('perlxml')
+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
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/testing/libpano13/PKGBUILD b/testing/libpano13/PKGBUILD
new file mode 100644
index 000000000..bfb14a2be
--- /dev/null
+++ b/testing/libpano13/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 148209 2012-01-30 18:48:19Z ibiru $
+# Maintainer: tobias <tobias@archlinux.org>
+# Contributor: Tobias Kieslich <tobias@justdreams.de>
+
+pkgname=libpano13
+pkgver=2.9.18
+pkgrel=2
+pkgdesc="Basic library to calculate panoramical pictures - core functions of the panotools"
+arch=('i686' 'x86_64')
+url="http://panotools.sourceforge.net/"
+license=('GPL2')
+depends=('libpng' 'libtiff')
+makedepends=('openjdk6')
+options=('!libtool')
+source=(http://downloads.sourceforge.net/sourceforge/panotools/${pkgname}-${pkgver}.tar.gz)
+md5sums=('9c3a4fce8b6f1d79e395896ce5d8776e')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --mandir=/usr/share/man --with-java=${JAVA_HOME}
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/testing/libpng/PKGBUILD b/testing/libpng/PKGBUILD
new file mode 100644
index 000000000..d0d182d8c
--- /dev/null
+++ b/testing/libpng/PKGBUILD
@@ -0,0 +1,41 @@
+# $Id: PKGBUILD 148211 2012-01-30 18:48:21Z ibiru $
+# 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.5.7
+_apngver=1.5.7
+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' 'sh')
+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=('c3ae9ce4e81ec0aafdd4ac961586ee0d'
+ '6c6a674048cec94db1bc35decf0d142c')
+
+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
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ 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/testing/libreoffice/PKGBUILD b/testing/libreoffice/PKGBUILD
index ab256b844..5e912ef26 100644
--- a/testing/libreoffice/PKGBUILD
+++ b/testing/libreoffice/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 146343 2012-01-09 18:52:36Z stephane $
+# $Id: PKGBUILD 148213 2012-01-30 18:48:25Z ibiru $
# Maintainer: AndyRTR <andyrtr@archlinux.org>
pkgbase="libreoffice"
@@ -35,9 +35,9 @@ pkgname=('libreoffice-common'
'libreoffice-extension-validator'
'libreoffice-extension-watch-window'
'libreoffice-extension-wiki-publisher')
-_LOver=3.4.4.2
-pkgver=3.4.4
-pkgrel=5
+_LOver=3.4.5.2
+pkgver=3.4.5
+pkgrel=2
arch=('i686' 'x86_64')
#_LO_tree="3.4"
_OFFICEUPD="340"
@@ -61,8 +61,11 @@ makedepends=( # makedepends
_mirror="http://download.documentfoundation.org/libreoffice/src/${pkgver}"
#_mirror="http://dev-builds.libreoffice.org/pre-releases/src"
+#_mirror="http://dev-builds.libreoffice.org/pre-releases-3-4/src"
_additional_source_url="http://hg.services.openoffice.org/binaries"
+_additional_source_url="http://dev-www.libreoffice.org/src"
source=(${_mirror}/${pkgbase}-{artwork,base,bootstrap,calc,components,extensions,extras,filters,help,impress,libs-core,libs-extern,libs-extern-sys,libs-gui,postprocess,sdk,testing,ure,writer}-${_LOver}.tar.bz2 #,translations
+ ${_additional_source_url}/f02578f5218f217a9f20e9c30e119c6a-boost_1_44_0.tar.bz2
${_additional_source_url}/1f24ab1d39f4a51faf22244c94a6203f-xmlsec1-1.2.14.tar.gz
${_additional_source_url}/35c94d2df8893241173de1d16b6034c0-swingExSrc.zip
${_additional_source_url}/798b2ffdc8bcfe7bca2cf92b62caf685-rhino1_5R5.zip
@@ -102,11 +105,9 @@ source=(${_mirror}/${pkgbase}-{artwork,base,bootstrap,calc,components,extensions
buildfix_boost.diff
buildfix_ct2n.diff
vbahelper.visibility.patch
- scp2-more-reasonable-file-access-rights.diff
- oracle-recognition.diff::http://cgit.freedesktop.org/libreoffice/core/patch/?id=549e54fb2f8113502743c443d6deadfe648dede1
- RemovetheoslSecuritygetHomeDircheck.diff::http://cgit.freedesktop.org/libreoffice/ure/patch/?id=bc9b86940a707e9e2e1076f2954f38075398b5d7
- gcc462_buildfix.diff)
+ scp2-more-reasonable-file-access-rights.diff)
noextract=(185d60944ea767075d27247c3162b3bc-unowinreg.dll
+ f02578f5218f217a9f20e9c30e119c6a-boost_1_44_0.tar.bz2
0ff7d225d087793c8c2c680d77aac3e7-mdds_0.5.3.tar.bz2
ada24d37d8d638b3d8a9985e80bc2978-source-9.0.0.7-bj.zip
798b2ffdc8bcfe7bca2cf92b62caf685-rhino1_5R5.zip
@@ -142,25 +143,26 @@ noextract=(185d60944ea767075d27247c3162b3bc-unowinreg.dll
dbaafd21de055e582d92d7d32fe9da13-gdocs_2.3.1.oxt
b7b2d0e04e142f26dd96119c80757d1f-oooblogger_0.1.oxt
90401bca927835b6fbae4a707ed187c8-nlpsolver-0.9.tar.bz2)
-md5sums=('be8b13f83045f0a53b69fe76d6d72e9c'
- 'db423cbb1cee416b718138044a5de930'
- '31944d2139d6d81ef1131bd513530621'
- 'f447fd4ffe54aab9561c6caa262754b3'
- '97fe698737a35c8803712d4e08007620'
- 'acff44d97a5106d9b53c747dabeb0800'
- '620d43a0b9f36388f423e030513864ef'
- '4c5b1ed870363eca2602f0cb42a8415a'
- '702c6ca31525d7d2c2ded86c77b0bd2e'
- 'ac9b3acf78f43c1395d0e2dedc860f30'
- 'd8d2c41cb86bc8ba2a07e001a5317abb'
- '4d4af2fc06dbe33ec2307df812f7abe1'
- '1398a566eb76598bf3005e187fc2386c'
- 'dd962d2d57f88b9e07e665adad3cabbc'
- 'fff0fc9cd16ef1eb2b2ed5d0a6e77f95'
- 'e54d41d39e63d04ac4a88ce79e37af98'
- 'dbc71403040f447683bf55d1f0be3cad'
- '69ce5b72f44b008d0e78767c5b1dbf39'
- '34a2e8ae6b81a042966740263c53e135'
+md5sums=('a75d7d4ebefb4c9a4bb256acf866fa81'
+ 'c1e2dabdf4cfcd5957779014a7f9787e'
+ '79c9c7fc208e7f56af09f284f261a7da'
+ 'c83a8a374d3d5cc83c6ac3b5ff613e46'
+ 'fa64799ebad8cbd2c160ac2f87bd5599'
+ 'b24fba57aa4185934e86a0a8db4a3433'
+ '4f98020088ab9b597fc21b617121bd47'
+ '3c3be7c5f923339c90b0d1d6ecad0243'
+ '3a0bb4bb096b7488533ed2ee466a2bc9'
+ 'f2b180aa1eff3884b4ca81c048f1e327'
+ 'a9af488ef92ad4442eafba874249c529'
+ 'db6a67c96a9090bc5e21b64e202a984e'
+ 'e00187ae0840e1f6a00fa3290cacf0d1'
+ '20fbf6cffd2b06e90a52105b75a57828'
+ '4af055f590732ec19a2534b2278ac49c'
+ 'c84693796d2b1d9c8269425b1fa53aef'
+ 'd4926dc27b6884656feec6753f4fdf22'
+ '770678ca19cca0f7985c1c82b2dccf48'
+ '97a1e3de430b124faf35bf334248ad53'
+ 'f02578f5218f217a9f20e9c30e119c6a'
'1f24ab1d39f4a51faf22244c94a6203f'
'35c94d2df8893241173de1d16b6034c0'
'798b2ffdc8bcfe7bca2cf92b62caf685'
@@ -200,10 +202,7 @@ md5sums=('be8b13f83045f0a53b69fe76d6d72e9c'
'bc228237108cab7745897a9f466b6d39'
'eee273f501ff45dc5f1365e78c6d57c0'
'43b145db28e6c0d73578ae6fd35e510d'
- '37638431e7e40baf2e47966ebb9bc0e9'
- '3c6c62e77c30649a3dfe73512947cc9a'
- 'eb35d4c715e0dfc23bbc706996033829'
- '10600d04ee81014bc9b5cc04e615d799')
+ '37638431e7e40baf2e47966ebb9bc0e9')
build() {
@@ -233,10 +232,6 @@ build() {
patch -Np1 -i ${srcdir}/buildfix_ct2n.diff
patch -Np0 -i ${srcdir}/vbahelper.visibility.patch
patch -Np0 -i ${srcdir}/scp2-more-reasonable-file-access-rights.diff
- patch -Np1 -i ${srcdir}/oracle-recognition.diff
- patch -Np1 -i ${srcdir}/RemovetheoslSecuritygetHomeDircheck.diff
- # https://www.libreoffice.org/bugzilla/show_bug.cgi?id=43139
- patch -Np1 -i ${srcdir}/gcc462_buildfix.diff
# unset C(XX)FLAGS
# http://www.openoffice.org/issues/show_bug.cgi?id=103205
@@ -290,7 +285,6 @@ build() {
--enable-lockdown\
--enable-opengl \
--enable-odk\
- --enable-opengl\
--enable-ext-barcode \
--enable-ext-diagram \
--enable-ext-google-docs \
@@ -333,7 +327,7 @@ build() {
--with-external-libtextcat-data \
--with-openldap\
--with-ant-home="/usr/share/java/apache-ant"\
- --with-system-boost\
+ --without-system-boost\
--with-system-cairo\
--with-system-libs\
--with-system-mozilla\
diff --git a/testing/libreoffice/PKGBUILD.next_stable b/testing/libreoffice/PKGBUILD.next_stable
index a25819863..a8cb4c5ad 100644
--- a/testing/libreoffice/PKGBUILD.next_stable
+++ b/testing/libreoffice/PKGBUILD.next_stable
@@ -18,9 +18,9 @@ pkgname=('libreoffice-common'
'libreoffice-extension-presenter-screen'
'libreoffice-extension-presentation-minimizer'
'libreoffice-extension-report-builder')
-_LOver=3.4.99.2
-pkgver=3.5.0beta2
-pkgrel=2
+_LOver=3.4.99.3
+pkgver=3.5.0beta3
+pkgrel=1
arch=('i686' 'x86_64')
license=('LGPL3')
url="http://www.libreoffice.org/"
@@ -44,7 +44,8 @@ makedepends=( # makedepends
_mirror="http://dev-builds.libreoffice.org/pre-releases/src"
_additional_source_url="http://dev-www.libreoffice.org/src"
source=(${_mirror}/${pkgbase}-{core,help,translations}-${_LOver}.tar.xz
- ${_additional_source_url}/a8b25a0bf696fd126a08319d88998492-libvisio-0.0.11.tar.bz2
+ ${_additional_source_url}/f02578f5218f217a9f20e9c30e119c6a-boost_1_44_0.tar.bz2
+ ${_additional_source_url}/053a35c244bf132f806e198ac4d960aa-libvisio-0.0.12.tar.bz2
${_additional_source_url}/1f24ab1d39f4a51faf22244c94a6203f-xmlsec1-1.2.14.tar.gz
${_additional_source_url}/35c94d2df8893241173de1d16b6034c0-swingExSrc.zip
${_additional_source_url}/798b2ffdc8bcfe7bca2cf92b62caf685-rhino1_5R5.zip
@@ -73,8 +74,9 @@ source=(${_mirror}/${pkgbase}-{core,help,translations}-${_LOver}.tar.xz
#${_additional_source_url}/cc8eb870d6a324d36575420efd856319-libcdr-0.0.0.tar.bz2
http://download.go-oo.org/extern/185d60944ea767075d27247c3162b3bc-unowinreg.dll
gmake_install.diff::http://cgit.freedesktop.org/libreoffice/core/patch/?id=1048d8fa4abd3e55a45dfb6884db808da1d72c9e
- fix_menuicons.diff::http://cgit.freedesktop.org/libreoffice/core/patch/?id=c3569696294bb264a0c645db12f027d44b4e033f)
-noextract=(a8b25a0bf696fd126a08319d88998492-libvisio-0.0.11.tar.bz2
+ smp_buildfix.diff::http://cgit.freedesktop.org/libreoffice/core/patch/?id=cf23f57ae6bb7af689a45e0a850c3c2f67a8f810)
+noextract=(053a35c244bf132f806e198ac4d960aa-libvisio-0.0.12.tar.bz2
+ f02578f5218f217a9f20e9c30e119c6a-boost_1_44_0.tar.bz2
185d60944ea767075d27247c3162b3bc-unowinreg.dll
0ff7d225d087793c8c2c680d77aac3e7-mdds_0.5.3.tar.bz2
ada24d37d8d638b3d8a9985e80bc2978-source-9.0.0.7-bj.zip
@@ -103,10 +105,11 @@ noextract=(a8b25a0bf696fd126a08319d88998492-libvisio-0.0.11.tar.bz2
ba2930200c9f019c2d93a8c88c651a0f-flow-engine-0.9.4.zip
# cc8eb870d6a324d36575420efd856319-libcdr-0.0.0.tar.bz2
)
-md5sums=('e80d9d4b6c6b2a8be882a46bc8757e69'
- '31471ad86996629a8c20f3a4d24ee03e'
- '3146b8522605d24ce4a259fe73ec3519'
- 'a8b25a0bf696fd126a08319d88998492'
+md5sums=('3f223ec797a100e557f7138c8ab4a91b'
+ 'bb08c856e5c9a7a8bcf22fefdb7cf13f'
+ '83bd4be3370840de3e535b2c974e8af5'
+ 'f02578f5218f217a9f20e9c30e119c6a'
+ '053a35c244bf132f806e198ac4d960aa'
'1f24ab1d39f4a51faf22244c94a6203f'
'35c94d2df8893241173de1d16b6034c0'
'798b2ffdc8bcfe7bca2cf92b62caf685'
@@ -134,7 +137,7 @@ md5sums=('e80d9d4b6c6b2a8be882a46bc8757e69'
'7c2549f6b0a8bb604e6c4c729ffdcfe6'
'185d60944ea767075d27247c3162b3bc'
'60ce5dc9bd098f95c2e621a930c98dd9'
- 'f9bd737527dafd3eeb451cf0dd95d7d6')
+ '661a52a02a31b3afbe4b3b3146061afd')
build() {
@@ -157,8 +160,8 @@ build() {
# buildfixes & bugfixes
# one late fix to solve make distro-pack-install issue
patch -Np1 -i ${srcdir}/gmake_install.diff
- patch -Np1 -i ${srcdir}/fix_menuicons.diff
-
+ patch -Np1 -i ${srcdir}/smp_buildfix.diff
+
# unset C(XX)FLAGS
# http://www.openoffice.org/issues/show_bug.cgi?id=103205
# unset CFLAGS
@@ -180,7 +183,7 @@ build() {
# non-SMP test build
# export MAKEFLAGS="-j1"
#./configure --with-build-version="${_LOver} ArchLinux build-${pkgrel}" --with-vendor="ArchLinux" \
- touch autogen.lastrun
+# touch autogen.lastrun
./autogen.sh --with-build-version="${_LOver} ArchLinux build-${pkgrel}" --with-vendor="ArchLinux" \
--with-unix-wrapper="libreoffice" \
--enable-split-app-modules \
@@ -232,7 +235,7 @@ build() {
--without-system-mozilla \
--without-system-mozilla-headers \
--with-ant-home="/usr/share/java/apache-ant"\
- --with-system-boost\
+ --without-system-boost\
--with-system-cairo\
--with-system-libs\
--with-system-mythes\
@@ -258,8 +261,6 @@ build() {
touch src.downloaded
#./download
-# unset MAKEFLAGS
-# ./bootstrap
make
# fake installation to create split file lists
mkdir $srcdir/fakeinstall
diff --git a/testing/librsvg/PKGBUILD b/testing/librsvg/PKGBUILD
new file mode 100644
index 000000000..dd830cee2
--- /dev/null
+++ b/testing/librsvg/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id: PKGBUILD 148386 2012-01-30 22:52:09Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=librsvg
+pkgver=2.34.2
+pkgrel=3
+pkgdesc="A SVG viewing library"
+arch=(i686 x86_64)
+license=('LGPL')
+depends=('gdk-pixbuf2>=2.24.1-3' 'pango' 'libcroco')
+makedepends=('intltool' 'gtk2')
+optdepends=('gtk2: for rsvg-view support')
+options=('!libtool' '!emptydirs')
+url="http://librsvg.sourceforge.net/"
+install=librsvg.install
+source=(http://ftp.gnome.org/pub/gnome/sources/$pkgname/2.34/$pkgname-$pkgver.tar.xz)
+sha256sums=('5de701325b84c0a15ab6892f49ffd6471722044bfe0b350725bf420642ee4464')
+
+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
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make DESTDIR="$pkgdir" install
+}
diff --git a/testing/librsvg/librsvg.install b/testing/librsvg/librsvg.install
new file mode 100644
index 000000000..4d48b071f
--- /dev/null
+++ b/testing/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/testing/libtiff/PKGBUILD b/testing/libtiff/PKGBUILD
new file mode 100644
index 000000000..fd35c4a19
--- /dev/null
+++ b/testing/libtiff/PKGBUILD
@@ -0,0 +1,33 @@
+# $Id: PKGBUILD 148217 2012-01-30 18:48:31Z ibiru $
+# Maintainer: Eric Bélanger <eric@archlinux.org>
+
+pkgname=libtiff
+pkgver=4.0.0
+pkgrel=1
+pkgdesc="Library for manipulation of TIFF images"
+arch=('i686' 'x86_64')
+url="http://www.remotesensing.org/libtiff/"
+license=('custom')
+depends=('libjpeg' 'zlib' 'xz')
+makedepends=('freeglut')
+optdepends=('freeglut: for using tiffgt')
+options=('!libtool')
+source=(ftp://ftp.remotesensing.org/pub/libtiff/tiff-${pkgver}.tar.gz)
+sha1sums=('85d85520fea40fc9291995a60e3d40cf980b5522')
+
+build() {
+ cd "${srcdir}/tiff-${pkgver}"
+ ./configure --prefix=/usr
+ make
+}
+
+check() {
+ cd "${srcdir}/tiff-${pkgver}"
+ make check
+}
+
+package() {
+ cd "${srcdir}/tiff-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+ install -D -m644 COPYRIGHT "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+}
diff --git a/testing/libunique3/PKGBUILD b/testing/libunique3/PKGBUILD
new file mode 100644
index 000000000..0f0046ae3
--- /dev/null
+++ b/testing/libunique3/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 148219 2012-01-30 18:48:33Z ibiru $
+# Maintainer: Jan "heftig" Steffens <jan.steffens@gmail.com>
+pkgname=libunique3
+pkgver=3.0.2
+pkgrel=2
+pkgdesc="Library for writing single instance applications for GTK3"
+arch=('i686' 'x86_64')
+license=('LGPL')
+depends=('gtk3')
+makedepends=('gtk-doc' 'gobject-introspection')
+options=('!libtool')
+url="http://live.gnome.org/LibUnique"
+source=(http://ftp.gnome.org/pub/gnome/sources/libunique/${pkgver%.*}/libunique-$pkgver.tar.xz)
+sha256sums=('a8f02ce073e2b920cca8ac45d418e7cb64438ad0814780c5912c6d63f8a4e038')
+
+build() {
+ cd "$srcdir/libunique-$pkgver"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-static \
+ --disable-dbus
+ make
+}
+
+package() {
+ cd "$srcdir/libunique-$pkgver"
+ make DESTDIR="$pkgdir" install
+}
diff --git a/testing/libvisual-plugins/02_64-bit_JESS_fix.patch b/testing/libvisual-plugins/02_64-bit_JESS_fix.patch
new file mode 100644
index 000000000..1d7f99e56
--- /dev/null
+++ b/testing/libvisual-plugins/02_64-bit_JESS_fix.patch
@@ -0,0 +1,58 @@
+diff -Nur libvisual-plugins-0.4.0/plugins/actor/JESS/renderer.c libvisual-plugins-0.4.0.new/plugins/actor/JESS/renderer.c
+--- libvisual-plugins-0.4.0/plugins/actor/JESS/renderer.c 2006-02-06 05:47:26.000000000 +1100
++++ libvisual-plugins-0.4.0.new/plugins/actor/JESS/renderer.c 2007-07-04 18:12:58.000000000 +1000
+@@ -282,7 +282,7 @@
+
+ void render_deformation(JessPrivate *priv, int defmode)
+ {
+- uint32_t bmax;
++ intptr_t bmax;
+ uint32_t *tab1 = NULL, *tab2, *tab3, *tab4, i;
+ uint8_t *pix = priv->pixel, *buf = priv->buffer, *aux;
+
+@@ -294,7 +294,7 @@
+ tab2 = priv->table2;
+ tab3 = priv->table3;
+ tab4 = priv->table4;
+- bmax = priv->resx * priv->resy + (uint32_t) priv->pixel;
++ bmax = priv->resx * priv->resy + (intptr_t) priv->pixel;
+
+ switch(defmode)
+ {
+@@ -352,7 +352,7 @@
+ }
+ for (i = 0; i < priv->resy * priv->resx; i++)
+ {
+- aux = (uint8_t *) ((*(tab1) << 2 ) + (uint32_t) priv->buffer);
++ aux = (uint8_t *) ((*(tab1) << 2 ) + (intptr_t) priv->buffer);
+ *(pix++) = *(aux++) ;
+ *(pix++) = *(aux++);
+ *(pix++) = *(aux);
+@@ -373,7 +373,8 @@
+ /* j'ai mis pixel par defaut... */
+
+ uint8_t *pix = priv->pixel;
+- uint32_t bmax,pitch_4;
++ intptr_t bmax;
++ uint32_t pitch_4;
+
+ pix = priv->pixel;
+ if (priv->pixel == NULL)
+@@ -387,7 +388,7 @@
+ if (priv->video == 8)
+ {
+ if (visual_cpu_get_mmx ()) {
+- bmax = priv->resx * (priv->resy-1) + (uint32_t) priv->pixel;
++ bmax = priv->resx * (priv->resy-1) + (intptr_t) priv->pixel;
+ #if defined(VISUAL_ARCH_X86) || defined(VISUAL_ARCH_X86_64)
+ __asm __volatile
+ ("\n\t pxor %%mm6, %%mm6"
+@@ -423,7 +424,7 @@
+ else
+ {
+ pitch_4 = priv->pitch+4;
+- bmax = priv->pitch*(priv->resy-1) + (uint32_t) priv->pixel;
++ bmax = priv->pitch*(priv->resy-1) + (intptr_t) priv->pixel;
+
+ if (visual_cpu_get_mmx ()) {
+ #if defined(VISUAL_ARCH_X86) || defined(VISUAL_ARCH_X86_64)
diff --git a/testing/libvisual-plugins/03_build_against_gl_fixes.patch b/testing/libvisual-plugins/03_build_against_gl_fixes.patch
new file mode 100644
index 000000000..b21558232
--- /dev/null
+++ b/testing/libvisual-plugins/03_build_against_gl_fixes.patch
@@ -0,0 +1,372 @@
+diff -Nur libvisual-plugins-0.4.0/plugins/actor/bumpscope/Makefile.am libvisual-plugins-0.4.0.new/plugins/actor/bumpscope/Makefile.am
+--- libvisual-plugins-0.4.0/plugins/actor/bumpscope/Makefile.am 2006-02-23 20:03:24.000000000 +1100
++++ libvisual-plugins-0.4.0.new/plugins/actor/bumpscope/Makefile.am 2007-07-04 18:19:43.000000000 +1000
+@@ -2,13 +2,12 @@
+
+ actor_plugin_LTLIBRARIES = actor_bumpscope.la
+
+-LIBS += $(LIBVISUAL_LIBS)
+-
+ AM_CFLAGS = $(LIBVISUAL_CFLAGS)
+
+ INCLUDES = $(all_includes) -I$(top_srcdir)
+
+ actor_bumpscope_la_LDFLAGS = -module -avoid-version
++actor_bumpscope_la_LIBADD = $(LIBVISUAL_LIBS)
+
+ actor_bumpscope_la_SOURCES = actor_bumpscope.c \
+ actor_bumpscope.h \
+diff -Nur libvisual-plugins-0.4.0/plugins/actor/corona/Makefile.am libvisual-plugins-0.4.0.new/plugins/actor/corona/Makefile.am
+--- libvisual-plugins-0.4.0/plugins/actor/corona/Makefile.am 2006-02-23 20:03:24.000000000 +1100
++++ libvisual-plugins-0.4.0.new/plugins/actor/corona/Makefile.am 2007-07-04 18:19:43.000000000 +1000
+@@ -2,13 +2,12 @@
+
+ actor_plugin_LTLIBRARIES = actor_corona.la
+
+-LIBS += $(LIBVISUAL_LIBS)
+-
+ AM_CXXFLAGS = $(LIBVISUAL_CFLAGS)
+
+ INCLUDES = $(all_includes) -I$(top_srcdir)
+
+ actor_corona_la_LDFLAGS = -module -avoid-version
++actor_corona_la_LIBADD = $(LIBVISUAL_LIBS)
+
+ actor_corona_la_SOURCES = actor_corona.cpp \
+ autopal.h \
+diff -Nur libvisual-plugins-0.4.0/plugins/actor/gdkpixbuf/Makefile.am libvisual-plugins-0.4.0.new/plugins/actor/gdkpixbuf/Makefile.am
+--- libvisual-plugins-0.4.0/plugins/actor/gdkpixbuf/Makefile.am 2006-02-24 00:34:48.000000000 +1100
++++ libvisual-plugins-0.4.0.new/plugins/actor/gdkpixbuf/Makefile.am 2007-07-04 18:19:43.000000000 +1000
+@@ -2,13 +2,12 @@
+
+ actor_plugin_LTLIBRARIES = actor_gdkpixbuf.la
+
+-LIBS += $(LIBVISUAL_LIBS) $(GTK_LIBS)
+-
+ AM_CFLAGS = $(LIBVISUAL_CFLAGS) $(GTK_CFLAGS)
+
+ INCLUDES = $(all_includes) -I$(top_srcdir)
+
+ actor_gdkpixbuf_la_LDFLAGS = -module -avoid-version
++actor_gdkpixbuf_la_LIBADD = $(LIBVISUAL_LIBS) $(GTK_LIBS)
+
+ actor_gdkpixbuf_la_SOURCES = actor_gdkpixbuf.c
+
+diff -Nur libvisual-plugins-0.4.0/plugins/actor/gstreamer/Makefile.am libvisual-plugins-0.4.0.new/plugins/actor/gstreamer/Makefile.am
+--- libvisual-plugins-0.4.0/plugins/actor/gstreamer/Makefile.am 2006-02-23 20:03:27.000000000 +1100
++++ libvisual-plugins-0.4.0.new/plugins/actor/gstreamer/Makefile.am 2007-07-04 18:19:43.000000000 +1000
+@@ -2,14 +2,13 @@
+
+ actor_plugin_LTLIBRARIES = actor_gstreamer.la
+
+-LIBS += $(LIBVISUAL_LIBS) $(GSTREAMER_LIBS)
+-
+ AM_CFLAGS = $(LIBVISUAL_CFLAGS) $(GSTREAMER_CFLAGS)
+
+ INCLUDES = $(all_includes) \
+ -I$(top_srcdir)
+
+ actor_gstreamer_la_LDFLAGS = -module -avoid-version
++actor_gstreamer_la_LIBADD = $(LIBVISUAL_LIBS) $(GSTREAMER_LIBS)
+
+ actor_gstreamer_la_SOURCES = actor_gstreamer.c
+
+diff -Nur libvisual-plugins-0.4.0/plugins/actor/infinite/Makefile.am libvisual-plugins-0.4.0.new/plugins/actor/infinite/Makefile.am
+--- libvisual-plugins-0.4.0/plugins/actor/infinite/Makefile.am 2006-02-23 20:03:27.000000000 +1100
++++ libvisual-plugins-0.4.0.new/plugins/actor/infinite/Makefile.am 2007-07-04 18:19:43.000000000 +1000
+@@ -2,13 +2,12 @@
+
+ actor_plugin_LTLIBRARIES = actor_infinite.la
+
+-LIBS += $(LIBVISUAL_LIBS)
+-
+ AM_CFLAGS = $(LIBVISUAL_CFLAGS)
+
+ INCLUDES = $(all_includes) -I$(top_srcdir)
+
+ actor_infinite_la_LDFLAGS = -module -avoid-version
++actor_infinite_la_LIBADD = $(LIBVISUAL_LIBS)
+
+ actor_infinite_la_SOURCES = compute.c compute.h \
+ display.c display.h \
+diff -Nur libvisual-plugins-0.4.0/plugins/actor/jakdaw/Makefile.am libvisual-plugins-0.4.0.new/plugins/actor/jakdaw/Makefile.am
+--- libvisual-plugins-0.4.0/plugins/actor/jakdaw/Makefile.am 2006-02-23 20:03:28.000000000 +1100
++++ libvisual-plugins-0.4.0.new/plugins/actor/jakdaw/Makefile.am 2007-07-04 18:19:43.000000000 +1000
+@@ -2,13 +2,12 @@
+
+ actor_plugin_LTLIBRARIES = actor_jakdaw.la
+
+-LIBS += $(LIBVISUAL_LIBS)
+-
+ AM_CFLAGS = $(LIBVISUAL_CFLAGS)
+
+ INCLUDES = $(all_includes) -I$(top_srcdir)
+
+ actor_jakdaw_la_LDFLAGS = -module -avoid-version
++actor_jakdaw_la_LIBADD = $(LIBVISUAL_LIBS)
+
+ actor_jakdaw_la_SOURCES = actor_jakdaw.c \
+ actor_jakdaw.h \
+diff -Nur libvisual-plugins-0.4.0/plugins/actor/JESS/Makefile.am libvisual-plugins-0.4.0.new/plugins/actor/JESS/Makefile.am
+--- libvisual-plugins-0.4.0/plugins/actor/JESS/Makefile.am 2006-02-23 20:03:24.000000000 +1100
++++ libvisual-plugins-0.4.0.new/plugins/actor/JESS/Makefile.am 2007-07-04 18:19:43.000000000 +1000
+@@ -2,13 +2,12 @@
+
+ actor_plugin_LTLIBRARIES = actor_JESS.la
+
+-LIBS += $(LIBVISUAL_LIBS)
+-
+ AM_CFLAGS = $(LIBVISUAL_CFLAGS)
+
+ INCLUDES = $(all_includes) -I$(top_srcdir)
+
+ actor_JESS_la_LDFLAGS = -module -avoid-version
++actor_JESS_la_LIBADD = $(LIBVISUAL_LIBS)
+
+ actor_JESS_la_SOURCES = analyser.c analyser.h analyser_struct.h\
+ distorsion.c distorsion.h\
+diff -Nur libvisual-plugins-0.4.0/plugins/actor/lv_analyzer/Makefile.am libvisual-plugins-0.4.0.new/plugins/actor/lv_analyzer/Makefile.am
+--- libvisual-plugins-0.4.0/plugins/actor/lv_analyzer/Makefile.am 2006-02-23 20:03:28.000000000 +1100
++++ libvisual-plugins-0.4.0.new/plugins/actor/lv_analyzer/Makefile.am 2007-07-04 18:19:43.000000000 +1000
+@@ -2,14 +2,13 @@
+
+ actor_plugin_LTLIBRARIES = actor_lv_analyzer.la
+
+-LIBS += $(LIBVISUAL_LIBS)
+-
+ AM_CFLAGS = $(LIBVISUAL_CFLAGS)
+
+ INCLUDES = $(all_includes) \
+ -I$(top_srcdir)
+
+ actor_lv_analyzer_la_LDFLAGS = -module -avoid-version
++actor_lv_analyzer_la_LIBADD = $(LIBVISUAL_LIBS)
+
+ actor_lv_analyzer_la_SOURCES = actor_lv_analyzer.c
+
+diff -Nur libvisual-plugins-0.4.0/plugins/actor/lv_gltest/Makefile.am libvisual-plugins-0.4.0.new/plugins/actor/lv_gltest/Makefile.am
+--- libvisual-plugins-0.4.0/plugins/actor/lv_gltest/Makefile.am 2006-02-24 22:24:49.000000000 +1100
++++ libvisual-plugins-0.4.0.new/plugins/actor/lv_gltest/Makefile.am 2007-07-04 18:19:43.000000000 +1000
+@@ -4,5 +4,5 @@
+
+ actor_lv_gltest_la_CFLAGS = -I$(top_srcdir) $(LIBVISUAL_CFLAGS) $(X_CFLAGS)
+ actor_lv_gltest_la_LDFLAGS = -module -avoid-version
+-actor_lv_gltest_la_LIBS = $(LIBVISUAL_LIBS) $(X_LIBS) -lGL -lGLU
++actor_lv_gltest_la_LIBADD = $(LIBVISUAL_LIBS) $(X_LIBS) -lGL -lGLU
+ actor_lv_gltest_la_SOURCES = actor_lv_gltest.c
+diff -Nur libvisual-plugins-0.4.0/plugins/actor/lv_scope/Makefile.am libvisual-plugins-0.4.0.new/plugins/actor/lv_scope/Makefile.am
+--- libvisual-plugins-0.4.0/plugins/actor/lv_scope/Makefile.am 2006-02-23 20:03:29.000000000 +1100
++++ libvisual-plugins-0.4.0.new/plugins/actor/lv_scope/Makefile.am 2007-07-04 18:19:43.000000000 +1000
+@@ -2,13 +2,12 @@
+
+ actor_plugin_LTLIBRARIES = actor_lv_scope.la
+
+-LIBS += $(LIBVISUAL_LIBS)
+-
+ AM_CFLAGS = $(LIBVISUAL_CFLAGS)
+
+ INCLUDES = $(all_includes) -I$(top_srcdir)
+
+ actor_lv_scope_la_LDFLAGS = -module -avoid-version
++actor_lv_scope_la_LIBADD = $(LIBVISUAL_LIBS)
+
+ actor_lv_scope_la_SOURCES = actor_lv_scope.c
+
+diff -Nur libvisual-plugins-0.4.0/plugins/actor/madspin/Makefile.am libvisual-plugins-0.4.0.new/plugins/actor/madspin/Makefile.am
+--- libvisual-plugins-0.4.0/plugins/actor/madspin/Makefile.am 2006-02-24 22:24:49.000000000 +1100
++++ libvisual-plugins-0.4.0.new/plugins/actor/madspin/Makefile.am 2007-07-04 18:19:43.000000000 +1000
+@@ -10,5 +10,5 @@
+
+ actor_madspin_la_CFLAGS = -I$(top_srcdir) $(LIBVISUAL_CFLAGS) -DSTAR_DIR=\""$(imagesdir)/"\"
+ actor_madspin_la_LDFLAGS = -module -avoid-version
+-actor_madspin_la_LIBS = $(LIBVISUAL_LIBS) $(X_LIBS) -lGL
++actor_madspin_la_LIBADD = $(LIBVISUAL_LIBS) $(X_LIBS) -lGL
+ actor_madspin_la_SOURCES = madspin.c
+diff -Nur libvisual-plugins-0.4.0/plugins/actor/nastyfft/Makefile.am libvisual-plugins-0.4.0.new/plugins/actor/nastyfft/Makefile.am
+--- libvisual-plugins-0.4.0/plugins/actor/nastyfft/Makefile.am 2006-02-24 22:24:50.000000000 +1100
++++ libvisual-plugins-0.4.0.new/plugins/actor/nastyfft/Makefile.am 2007-07-04 18:19:43.000000000 +1000
+@@ -4,5 +4,5 @@
+
+ actor_nastyfft_la_CFLAGS = -I$(top_srcdir) $(LIBVISUAL_CFLAGS) $(X_CFLAGS)
+ actor_nastyfft_la_LDFLAGS = -module -avoid-version
+-actor_nastyfft_la_LIBS = $(LIBVISUAL_LIBS) $(X_LIBS) -lGL -lGLU
++actor_nastyfft_la_LIBADD = $(LIBVISUAL_LIBS) $(X_LIBS) -lGL -lGLU
+ actor_nastyfft_la_SOURCES = actor_nastyfft.c
+diff -Nur libvisual-plugins-0.4.0/plugins/actor/oinksie/Makefile.am libvisual-plugins-0.4.0.new/plugins/actor/oinksie/Makefile.am
+--- libvisual-plugins-0.4.0/plugins/actor/oinksie/Makefile.am 2006-02-23 20:03:31.000000000 +1100
++++ libvisual-plugins-0.4.0.new/plugins/actor/oinksie/Makefile.am 2007-07-04 18:19:43.000000000 +1000
+@@ -2,13 +2,12 @@
+
+ actor_plugin_LTLIBRARIES = actor_oinksie.la
+
+-LIBS += $(LIBVISUAL_LIBS)
+-
+ AM_CFLAGS = $(LIBVISUAL_CFLAGS)
+
+ INCLUDES = $(all_includes) -I$(top_srcdir)
+
+ actor_oinksie_la_LDFLAGS = -module -avoid-version
++actor_oinksie_la_LIBADD = $(LIBVISUAL_LIBS)
+
+ actor_oinksie_la_SOURCES = actor_oinksie.c\
+ oinksie.c oinksie.h\
+diff -Nur libvisual-plugins-0.4.0/plugins/actor/pseudotoad_flower/Makefile.am libvisual-plugins-0.4.0.new/plugins/actor/pseudotoad_flower/Makefile.am
+--- libvisual-plugins-0.4.0/plugins/actor/pseudotoad_flower/Makefile.am 2006-03-09 00:06:58.000000000 +1100
++++ libvisual-plugins-0.4.0.new/plugins/actor/pseudotoad_flower/Makefile.am 2007-07-04 18:19:43.000000000 +1000
+@@ -4,7 +4,7 @@
+
+ actor_flower_la_LDFLAGS = -module -avoid-version
+ actor_flower_la_CFLAGS = -I$(top_srcdir) $(LIBVISUAL_CFLAGS) $(X_CFLAGS)
+-actor_flower_la_LIBS = $(LIBVISUAL_LIBS) $(X_LIBS) -lGL -lGLU
++actor_flower_la_LIBADD = $(LIBVISUAL_LIBS) $(X_LIBS) -lGL -lGLU
+
+ actor_flower_la_SOURCES = \
+ actor_flower.c \
+diff -Nur libvisual-plugins-0.4.0/plugins/input/alsa/Makefile.am libvisual-plugins-0.4.0.new/plugins/input/alsa/Makefile.am
+--- libvisual-plugins-0.4.0/plugins/input/alsa/Makefile.am 2006-02-23 20:03:35.000000000 +1100
++++ libvisual-plugins-0.4.0.new/plugins/input/alsa/Makefile.am 2007-07-04 18:19:43.000000000 +1000
+@@ -2,12 +2,11 @@
+
+ input_plugin_LTLIBRARIES = input_alsa.la
+
+-LIBS += $(ALSA_LIBS) $(LIBVISUAL_LIBS)
+-
+ AM_CFLAGS = $(ALSA_CFLAGS) $(LIBVISUAL_CFLAGS)
+
+ INCLUDES = $(all_includes) -I$(top_srcdir) -I$(top_builddir)
+
+ input_alsa_la_LDFLAGS = -module -avoid-version
++input_alsa_la_LIBADD = $(ALSA_LIBS) $(LIBVISUAL_LIBS)
+
+ input_alsa_la_SOURCES = input_alsa.c
+diff -Nur libvisual-plugins-0.4.0/plugins/input/debug/Makefile.am libvisual-plugins-0.4.0.new/plugins/input/debug/Makefile.am
+--- libvisual-plugins-0.4.0/plugins/input/debug/Makefile.am 2006-02-23 20:03:36.000000000 +1100
++++ libvisual-plugins-0.4.0.new/plugins/input/debug/Makefile.am 2007-07-04 18:19:43.000000000 +1000
+@@ -2,11 +2,10 @@
+
+ input_plugin_LTLIBRARIES = input_debug.la
+
+-LIBS += $(LIBVISUAL_LIBS)
+-
+ AM_CFLAGS = $(LIBVISUAL_CFLAGS)
+
+ INCLUDES = $(all_includes) -I$(top_srcdir) -I$(top_builddir)
+
+ input_debug_la_LDFLAGS = -module -avoid-version
++input_debug_la_LIBADD = $(LIBVISUAL_LIBS)
+ input_debug_la_SOURCES = input_debug.c
+diff -Nur libvisual-plugins-0.4.0/plugins/input/esd/Makefile.am libvisual-plugins-0.4.0.new/plugins/input/esd/Makefile.am
+--- libvisual-plugins-0.4.0/plugins/input/esd/Makefile.am 2006-02-23 20:03:37.000000000 +1100
++++ libvisual-plugins-0.4.0.new/plugins/input/esd/Makefile.am 2007-07-04 18:19:43.000000000 +1000
+@@ -2,11 +2,10 @@
+
+ input_plugin_LTLIBRARIES = input_esd.la
+
+-LIBS += $(LIBESD_LIBS) $(LIBVISUAL_LIBS)
+-
+ AM_CFLAGS = $(LIBESD_CFLAGS) $(LIBVISUAL_CFLAGS)
+
+ INCLUDES = $(all_includes) -I$(top_srcdir)
+
+ input_esd_la_LDFLAGS = -module -avoid-version
++input_esd_la_LIBADD = $(LIBESD_LIBS) $(LIBVISUAL_LIBS)
+ input_esd_la_SOURCES = input_esd.c
+diff -Nur libvisual-plugins-0.4.0/plugins/input/jack/Makefile.am libvisual-plugins-0.4.0.new/plugins/input/jack/Makefile.am
+--- libvisual-plugins-0.4.0/plugins/input/jack/Makefile.am 2006-02-23 20:03:37.000000000 +1100
++++ libvisual-plugins-0.4.0.new/plugins/input/jack/Makefile.am 2007-07-04 18:19:43.000000000 +1000
+@@ -2,13 +2,12 @@
+
+ input_plugin_LTLIBRARIES = input_jack.la
+
+-LIBS += $(LIBJACK_LIBS) $(LIBVISUAL_LIBS)
+-
+ AM_CFLAGS = $(LIBJACK_CFLAGS) $(LIBVISUAL_CFLAGS)
+
+ INCLUDES = $(all_includes) -I$(top_srcdir)
+
+ input_jack_la_LDFLAGS = -module -avoid-version
++input_jack_la_LIBADD = $(LIBJACK_LIBS) $(LIBVISUAL_LIBS)
+
+ input_jack_la_SOURCES = input_jack.c
+
+diff -Nur libvisual-plugins-0.4.0/plugins/input/mplayer/Makefile.am libvisual-plugins-0.4.0.new/plugins/input/mplayer/Makefile.am
+--- libvisual-plugins-0.4.0/plugins/input/mplayer/Makefile.am 2006-02-23 20:03:38.000000000 +1100
++++ libvisual-plugins-0.4.0.new/plugins/input/mplayer/Makefile.am 2007-07-04 18:19:43.000000000 +1000
+@@ -2,12 +2,11 @@
+
+ input_plugin_LTLIBRARIES = input_mplayer.la
+
+-LIBS += $(LIBVISUAL_LIBS)
+-
+ AM_CFLAGS = $(LIBVISUAL_CFLAGS)
+
+ INCLUDES = $(all_includes) -I$(top_srcdir)
+
+ input_mplayer_la_LDFLAGS = -module -avoid-version
++input_mplayer_la_LIBADD = $(LIBVISUAL_LIBS)
+ input_mplayer_la_SOURCES = input_mplayer.c
+
+diff -Nur libvisual-plugins-0.4.0/plugins/morph/alphablend/Makefile.am libvisual-plugins-0.4.0.new/plugins/morph/alphablend/Makefile.am
+--- libvisual-plugins-0.4.0/plugins/morph/alphablend/Makefile.am 2006-02-23 20:03:38.000000000 +1100
++++ libvisual-plugins-0.4.0.new/plugins/morph/alphablend/Makefile.am 2007-07-04 18:19:43.000000000 +1000
+@@ -2,11 +2,10 @@
+
+ morph_plugin_LTLIBRARIES = morph_alphablend.la
+
+-LIBS += $(LIBVISUAL_LIBS)
+-
+ AM_CFLAGS = $(LIBVISUAL_CFLAGS)
+
+ INCLUDES = $(all_includes) -I$(top_srcdir)
+
+ morph_alphablend_la_LDFLAGS = -module -avoid-version
++morph_alphablend_la_LIBADD = $(LIBVISUAL_LIBS)
+ morph_alphablend_la_SOURCES = morph_alphablend.c
+diff -Nur libvisual-plugins-0.4.0/plugins/morph/flash/Makefile.am libvisual-plugins-0.4.0.new/plugins/morph/flash/Makefile.am
+--- libvisual-plugins-0.4.0/plugins/morph/flash/Makefile.am 2006-02-23 20:03:39.000000000 +1100
++++ libvisual-plugins-0.4.0.new/plugins/morph/flash/Makefile.am 2007-07-04 18:19:43.000000000 +1000
+@@ -2,11 +2,10 @@
+
+ morph_plugin_LTLIBRARIES = morph_flash.la
+
+-LIBS += $(LIBVISUAL_LIBS)
+-
+ AM_CFLAGS = $(LIBVISUAL_CFLAGS)
+
+ INCLUDES = $(all_includes) -I$(top_srcdir)
+
+ morph_flash_la_LDFLAGS = -module -avoid-version
++morph_flash_la_LIBADD = $(LIBVISUAL_LIBS)
+ morph_flash_la_SOURCES = morph_flash.c
+diff -Nur libvisual-plugins-0.4.0/plugins/morph/slide/Makefile.am libvisual-plugins-0.4.0.new/plugins/morph/slide/Makefile.am
+--- libvisual-plugins-0.4.0/plugins/morph/slide/Makefile.am 2006-02-23 20:03:39.000000000 +1100
++++ libvisual-plugins-0.4.0.new/plugins/morph/slide/Makefile.am 2007-07-04 18:19:43.000000000 +1000
+@@ -2,11 +2,10 @@
+
+ morph_plugin_LTLIBRARIES = morph_slide.la
+
+-LIBS += $(LIBVISUAL_LIBS)
+-
+ AM_CFLAGS = $(LIBVISUAL_CFLAGS)
+
+ INCLUDES = $(all_includes) -I$(top_srcdir)
+
+ morph_slide_la_LDFLAGS = -module -avoid-version
++morph_slide_la_LIBADD = $(LIBVISUAL_LIBS)
+ morph_slide_la_SOURCES = morph_slide.c
+diff -Nur libvisual-plugins-0.4.0/plugins/morph/tentacle/Makefile.am libvisual-plugins-0.4.0.new/plugins/morph/tentacle/Makefile.am
+--- libvisual-plugins-0.4.0/plugins/morph/tentacle/Makefile.am 2006-02-23 20:03:39.000000000 +1100
++++ libvisual-plugins-0.4.0.new/plugins/morph/tentacle/Makefile.am 2007-07-04 18:19:43.000000000 +1000
+@@ -2,11 +2,10 @@
+
+ morph_plugin_LTLIBRARIES = morph_tentacle.la
+
+-LIBS += $(LIBVISUAL_LIBS)
+-
+ AM_CFLAGS = $(LIBVISUAL_CFLAGS)
+
+ INCLUDES = $(all_includes) -I$(top_srcdir)
+
+ morph_tentacle_la_LDFLAGS = -module -avoid-version
++morph_tentacle_la_LIBADD = $(LIBVISUAL_LIBS)
+ morph_tentacle_la_SOURCES = morph_tentacle.c
diff --git a/testing/libvisual-plugins/04_lv_analyzer_build_fix.patch b/testing/libvisual-plugins/04_lv_analyzer_build_fix.patch
new file mode 100644
index 000000000..1fc5f7fc7
--- /dev/null
+++ b/testing/libvisual-plugins/04_lv_analyzer_build_fix.patch
@@ -0,0 +1,12 @@
+diff -Nur libvisual-plugins-0.4.0/configure.ac libvisual-plugins-0.4.0.new/configure.ac
+--- libvisual-plugins-0.4.0/configure.ac 2006-03-17 03:50:41.000000000 +1100
++++ libvisual-plugins-0.4.0.new/configure.ac 2007-07-04 18:22:38.000000000 +1000
+@@ -361,7 +361,7 @@
+ [ENABLE_ANALYZER=$enableval],
+ [ENABLE_ANALYZER=yes])
+
+-if test "$ENABLE_ANALYZER" = xyes; then
++if test "$ENABLE_ANALYZER" = "yes"; then
+ build_actor_plugins="$build_actor_plugins lv_analyzer"
+ fi
+
diff --git a/testing/libvisual-plugins/050_all_automagic.patch b/testing/libvisual-plugins/050_all_automagic.patch
new file mode 100644
index 000000000..9c25fac72
--- /dev/null
+++ b/testing/libvisual-plugins/050_all_automagic.patch
@@ -0,0 +1,50 @@
+--- configure.ac.old 2007-02-24 23:09:08.000000000 +0100
++++ configure.ac 2007-02-24 23:13:15.000000000 +0100
+@@ -89,7 +89,18 @@
+
+ dnl Libraries
+
++dnl List of plugins to build
++build_input_plugins=""
++build_actor_plugins=""
++build_morph_plugins=""
++
+ dnl EsounD
++AC_ARG_ENABLE([esd], AS_HELP_STRING([--disable-esd],
++ [Do not build esound input plugin @<:@default=enabled@:>@]),
++ [ENABLE_INPUT_ESD=$enableval],
++ [ENABLE_INPUT_ESD=yes])
++
++if test "$ENABLE_INPUT_ESD" = "yes"; then
+ PKG_CHECK_MODULES([LIBESD], [esound >= esound_required_version],
+ [HAVE_ESD="yes"], [HAVE_ESD="no"])
+
+@@ -98,8 +109,15 @@
+ else
+ AC_MSG_WARN([*** EsounD not found or too old. The EsounD input plugin won't be built])
+ fi
++fi
+
+ dnl JACK
++AC_ARG_ENABLE([jack], AS_HELP_STRING([--disable-jack],
++ [Do not build jack input plugin @<:@default=enabled@:>@]),
++ [ENABLE_INPUT_JACK=$enableval],
++ [ENABLE_INPUT_JACK=yes])
++
++if test "$ENABLE_INPUT_JACK" = "yes"; then
+ PKG_CHECK_MODULES([LIBJACK], [jack >= jack_required_version], [HAVE_JACK="yes"], [HAVE_JACK="no"])
+ if test "$HAVE_JACK" = "yes"; then
+ build_input_plugins="$build_input_plugins jack"
+@@ -107,11 +125,7 @@
+ AC_MSG_WARN([*** libjack is too old. You can download a newer version at
+ http://jackit.sf.net/. The jackit input plugin won't be built])
+ fi
+-
+-dnl List of plugins to build
+-build_input_plugins=""
+-build_actor_plugins=""
+-build_morph_plugins=""
++fi
+
+ dnl GdkPixbuf
+ AC_ARG_ENABLE([gdkpixbuf-plugin],
diff --git a/testing/libvisual-plugins/05_fix_po.patch b/testing/libvisual-plugins/05_fix_po.patch
new file mode 100644
index 000000000..a5413ef1b
--- /dev/null
+++ b/testing/libvisual-plugins/05_fix_po.patch
@@ -0,0 +1,127 @@
+diff -Nur libvisual-plugins-0.4.0/po/Makefile.in.in libvisual-plugins-0.4.0.new/po/Makefile.in.in
+--- libvisual-plugins-0.4.0/po/Makefile.in.in 2006-03-21 05:48:28.000000000 +1100
++++ libvisual-plugins-0.4.0.new/po/Makefile.in.in 2007-07-09 21:50:13.000000000 +1000
+@@ -28,7 +28,7 @@
+
+ INSTALL = @INSTALL@
+ INSTALL_DATA = @INSTALL_DATA@
+-MKINSTALLDIRS = @MKINSTALLDIRS@
++MKINSTALLDIRS = mkinstalldirs
+ mkinstalldirs = $(SHELL) $(MKINSTALLDIRS)
+
+ GMSGFMT = @GMSGFMT@
+diff -Nur libvisual-plugins-0.4.0/po/mkinstalldirs libvisual-plugins-0.4.0.new/po/mkinstalldirs
+--- libvisual-plugins-0.4.0/po/mkinstalldirs 1970-01-01 10:00:00.000000000 +1000
++++ libvisual-plugins-0.4.0.new/po/mkinstalldirs 2006-03-21 05:48:42.000000000 +1100
+@@ -0,0 +1,111 @@
++#! /bin/sh
++# mkinstalldirs --- make directory hierarchy
++# Author: Noah Friedman <friedman@prep.ai.mit.edu>
++# Created: 1993-05-16
++# Public domain
++
++errstatus=0
++dirmode=""
++
++usage="\
++Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..."
++
++# process command line arguments
++while test $# -gt 0 ; do
++ case $1 in
++ -h | --help | --h*) # -h for help
++ echo "$usage" 1>&2
++ exit 0
++ ;;
++ -m) # -m PERM arg
++ shift
++ test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
++ dirmode=$1
++ shift
++ ;;
++ --) # stop option processing
++ shift
++ break
++ ;;
++ -*) # unknown option
++ echo "$usage" 1>&2
++ exit 1
++ ;;
++ *) # first non-opt arg
++ break
++ ;;
++ esac
++done
++
++for file
++do
++ if test -d "$file"; then
++ shift
++ else
++ break
++ fi
++done
++
++case $# in
++ 0) exit 0 ;;
++esac
++
++case $dirmode in
++ '')
++ if mkdir -p -- . 2>/dev/null; then
++ echo "mkdir -p -- $*"
++ exec mkdir -p -- "$@"
++ fi
++ ;;
++ *)
++ if mkdir -m "$dirmode" -p -- . 2>/dev/null; then
++ echo "mkdir -m $dirmode -p -- $*"
++ exec mkdir -m "$dirmode" -p -- "$@"
++ fi
++ ;;
++esac
++
++for file
++do
++ set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
++ shift
++
++ pathcomp=
++ for d
++ do
++ pathcomp="$pathcomp$d"
++ case $pathcomp in
++ -*) pathcomp=./$pathcomp ;;
++ esac
++
++ if test ! -d "$pathcomp"; then
++ echo "mkdir $pathcomp"
++
++ mkdir "$pathcomp" || lasterr=$?
++
++ if test ! -d "$pathcomp"; then
++ errstatus=$lasterr
++ else
++ if test ! -z "$dirmode"; then
++ echo "chmod $dirmode $pathcomp"
++ lasterr=""
++ chmod "$dirmode" "$pathcomp" || lasterr=$?
++
++ if test ! -z "$lasterr"; then
++ errstatus=$lasterr
++ fi
++ fi
++ fi
++ fi
++
++ pathcomp="$pathcomp/"
++ done
++done
++
++exit $errstatus
++
++# Local Variables:
++# mode: shell-script
++# sh-indentation: 2
++# End:
++# mkinstalldirs ends here
diff --git a/testing/libvisual-plugins/PKGBUILD b/testing/libvisual-plugins/PKGBUILD
new file mode 100644
index 000000000..7a2d49087
--- /dev/null
+++ b/testing/libvisual-plugins/PKGBUILD
@@ -0,0 +1,48 @@
+# $Id: PKGBUILD 148221 2012-01-30 18:48:36Z ibiru $
+# Maintainer: damir <damir@archlinux.org>
+
+pkgname=libvisual-plugins
+pkgver=0.4.0
+pkgrel=5
+pkgdesc="plugins for libvisual"
+arch=("i686" "x86_64")
+license=('GPL')
+url="http://www.localhost.nl/~synap/libvisual/"
+depends=('libvisual' 'gtk2' 'mesa' 'alsa-lib' 'jack')
+makedepends=('pkgconfig' 'namcap')
+options=(!libtool)
+source=(http://downloads.sourceforge.net/sourceforge/libvisual/libvisual-plugins-${pkgver}.tar.gz
+ 02_64-bit_JESS_fix.patch
+ 03_build_against_gl_fixes.patch
+ 04_lv_analyzer_build_fix.patch
+ 05_fix_po.patch
+ 050_all_automagic.patch)
+md5sums=('4330e9287f9d6fae02f482f428a1e77b'
+ 'f9cfb607bfcbfef60830fae4e7dc6963'
+ '116701408747dbb87dc134434478ebe2'
+ '01678a8f1584c76a44e59d81003a1109'
+ '6189b7427c4e11c8b8d6c6266d6a1629'
+ 'b50ae94c424a5f0af235deffa8451eb6')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i "${srcdir}/02_64-bit_JESS_fix.patch"
+ patch -Np1 -i "${srcdir}/03_build_against_gl_fixes.patch"
+ patch -Np1 -i "${srcdir}/04_lv_analyzer_build_fix.patch"
+ patch -Np0 -i "${srcdir}/050_all_automagic.patch"
+
+ autoreconf -fi
+ # Apply later as autoreconf overwrites po/Makefile.in.in
+ patch -Np1 -i "${srcdir}/05_fix_po.patch"
+
+ ./configure --prefix=/usr \
+ --disable-gstreamer-plugin \
+ --disable-gforce \
+ --disable-esd
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/testing/libwebkit/PKGBUILD b/testing/libwebkit/PKGBUILD
new file mode 100644
index 000000000..f363e2428
--- /dev/null
+++ b/testing/libwebkit/PKGBUILD
@@ -0,0 +1,52 @@
+# $Id: PKGBUILD 148223 2012-01-30 18:48:38Z ibiru $
+# Maintainer: Andreas Radke <andyrtr@archlinux.org>
+
+pkgbase=libwebkit
+pkgname=(libwebkit libwebkit3)
+pkgver=1.6.1
+pkgrel=2
+pkgdesc="An opensource web content engine"
+arch=('i686' 'x86_64')
+url="http://webkitgtk.org/"
+license=('custom')
+depends=('libxt' 'libxslt' 'sqlite3' 'icu' 'gstreamer0.10-base' 'libsoup' 'enchant')
+makedepends=('gperf' 'gtk-doc' 'gobject-introspection' 'python2' 'gtk2' 'gtk3')
+options=('!libtool' '!emptydirs')
+install=libwebkit.install
+source=(http://webkitgtk.org/webkit-${pkgver}.tar.gz)
+md5sums=('c11743694b1b71dad287b2e7a9e73b05')
+
+build() {
+ cd "${srcdir}/webkit-${pkgver}"
+ mkdir build-gtk{2,3}
+
+ ( cd build-gtk2 && _build --with-gtk=2.0 )
+ ( cd build-gtk3 && _build --with-gtk=3.0 )
+}
+
+_build() {
+ PYTHON=/usr/bin/python2 ../configure --prefix=/usr \
+ --enable-introspection \
+ --with-font-backend=freetype --enable-gtk-doc \
+ --with-unicode-backend=icu \
+ --enable-spellcheck "$@"
+ make all stamp-po
+}
+
+package_libwebkit() {
+ pkgdesc+=" (for GTK2)"
+ depends+=(gtk2)
+
+ cd "$srcdir/webkit-$pkgver/build-gtk2"
+ make DESTDIR="${pkgdir}" install
+ install -Dm644 ../Source/WebKit/LICENSE "${pkgdir}/usr/share/licenses/libwebkit/LICENSE"
+}
+
+package_libwebkit3() {
+ pkgdesc+=" (for GTK3)"
+ depends+=(gtk3)
+
+ cd "${srcdir}/webkit-${pkgver}/build-gtk3"
+ make DESTDIR="${pkgdir}" install
+ install -Dm644 ../Source/WebKit/LICENSE "${pkgdir}/usr/share/licenses/libwebkit3/LICENSE"
+}
diff --git a/testing/libwebkit/libwebkit.install b/testing/libwebkit/libwebkit.install
new file mode 100644
index 000000000..24072f316
--- /dev/null
+++ b/testing/libwebkit/libwebkit.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/testing/libwmf/PKGBUILD b/testing/libwmf/PKGBUILD
new file mode 100644
index 000000000..aef0d08d4
--- /dev/null
+++ b/testing/libwmf/PKGBUILD
@@ -0,0 +1,40 @@
+# $Id: PKGBUILD 148225 2012-01-30 18:48:42Z ibiru $
+# Maintainer: Eric Bélanger <eric@archlinux.org>
+
+pkgname=libwmf
+pkgver=0.2.8.4
+pkgrel=9
+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' 'libjpeg' 'gsfonts')
+makedepends=('gtk2' 'libxt')
+optdepends=('gdk-pixbuf2: for pixbuf loader')
+options=('!libtool' '!docs' '!emptydirs')
+install=libwmf.install
+source=(http://downloads.sourceforge.net/sourceforge/wvware/${pkgname}-${pkgver}.tar.gz
+ libwmf-0.2.8.4-libpng-1.5.patch libwmf-0.2.8.4-useafterfree.patch)
+sha1sums=('822ab3bd0f5e8f39ad732f2774a8e9f18fc91e89'
+ '42aa4c2a82e4e14044c875a7f439baea732a355a'
+ 'ea6d28880840e86c96f9079bfd591da54dcffa5c')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -p1 -i "${srcdir}/libwmf-0.2.8.4-libpng-1.5.patch"
+ patch -p1 -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/testing/libwmf/libwmf-0.2.8.4-libpng-1.5.patch b/testing/libwmf/libwmf-0.2.8.4-libpng-1.5.patch
new file mode 100644
index 000000000..3528c74eb
--- /dev/null
+++ b/testing/libwmf/libwmf-0.2.8.4-libpng-1.5.patch
@@ -0,0 +1,12 @@
+diff -urN libwmf-0.2.8.4.old/src/ipa/ipa/bmp.h libwmf-0.2.8.4/src/ipa/ipa/bmp.h
+--- libwmf-0.2.8.4.old/src/ipa/ipa/bmp.h 2011-05-23 19:14:23.000000000 +0200
++++ libwmf-0.2.8.4/src/ipa/ipa/bmp.h 2011-05-23 19:15:11.000000000 +0200
+@@ -66,7 +66,7 @@
+ return;
+ }
+
+- if (setjmp (png_ptr->jmpbuf))
++ if (setjmp(png_jmpbuf(png_ptr)))
+ { WMF_DEBUG (API,"Failed to write bitmap as PNG! (setjmp failed)");
+ png_destroy_write_struct (&png_ptr,&info_ptr);
+ wmf_free (API,buffer);
diff --git a/testing/libwmf/libwmf-0.2.8.4-useafterfree.patch b/testing/libwmf/libwmf-0.2.8.4-useafterfree.patch
new file mode 100644
index 000000000..328c5411f
--- /dev/null
+++ b/testing/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/testing/libwmf/libwmf.install b/testing/libwmf/libwmf.install
new file mode 100644
index 000000000..9c99a901b
--- /dev/null
+++ b/testing/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/testing/libxfcegui4/PKGBUILD b/testing/libxfcegui4/PKGBUILD
new file mode 100644
index 000000000..17e03c01f
--- /dev/null
+++ b/testing/libxfcegui4/PKGBUILD
@@ -0,0 +1,38 @@
+# $Id: PKGBUILD 148227 2012-01-30 18:48:44Z ibiru $
+# Maintainer: Evangelos Foutras <evangelos@foutrelis.com>
+# Contributor: Tobias Kieslich <tobias funnychar archlinux.org>
+
+pkgname=libxfcegui4
+pkgver=4.8.1
+pkgrel=4
+pkgdesc="Various Gtk widgets for Xfce"
+arch=('i686' 'x86_64')
+url="http://www.xfce.org/"
+license=('GPL2')
+depends=('startup-notification' "xfconf>=4.8.0" "libglade" 'libsm'
+ 'hicolor-icon-theme')
+makedepends=('intltool')
+options=('!libtool')
+install=$pkgname.install
+source=(http://archive.xfce.org/src/xfce/$pkgname/4.8/$pkgname-$pkgver.tar.bz2)
+sha256sums=('309a81823cdfdb7301bc6a5199e14f0df29b58dae89a9302c7839b9b94812443')
+
+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
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/testing/libxfcegui4/libxfcegui4.install b/testing/libxfcegui4/libxfcegui4.install
new file mode 100644
index 000000000..abf924aa2
--- /dev/null
+++ b/testing/libxfcegui4/libxfcegui4.install
@@ -0,0 +1,14 @@
+post_install() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
+
+
+# vim:set ts=2 sw=2 et:
diff --git a/testing/links/PKGBUILD b/testing/links/PKGBUILD
new file mode 100644
index 000000000..51bd49e72
--- /dev/null
+++ b/testing/links/PKGBUILD
@@ -0,0 +1,47 @@
+# $Id: PKGBUILD 148229 2012-01-30 18:48:47Z ibiru $
+# Maintainer: Eric Bélanger <eric@archlinux.org>
+
+pkgname=links
+pkgver=2.5
+pkgrel=1
+pkgdesc="A text WWW browser, similar to Lynx"
+arch=('i686' 'x86_64')
+url="http://links.twibright.com/"
+license=('GPL')
+depends=('bzip2' 'xz' 'zlib' 'openssl' 'gpm')
+makedepends=('libtiff' 'libpng' 'libxt')
+optdepends=('libx11: for using xlinks' 'libtiff: for using xlinks' 'libpng: for using xlinks')
+provides=('links-g')
+conflicts=('links-g')
+replaces=('links-g')
+source=(http://links.twibright.com/download/${pkgname}-${pkgver}.tar.bz2 links.desktop)
+sha1sums=('fe4bc37be8aebd9196c35ffef724435cea94349c'
+ 'f600e27c2a71184444f7dd07a10230aa44463a02')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ (cd intl; ./gen-intl; ./synclang)
+ ./configure --prefix=/usr --mandir=/usr/share/man --enable-javascript \
+ --enable-graphics --with-x --with-fb
+ make
+ mv links xlinks
+
+ ./configure --prefix=/usr --mandir=/usr/share/man --enable-javascript \
+ --disable-graphics --without-x --without-fb
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+
+ install -m755 xlinks "${pkgdir}/usr/bin/xlinks"
+ ln -s links.1.gz "${pkgdir}/usr/share/man/man1/xlinks.1.gz"
+
+ install -D -m644 "${srcdir}/links.desktop" "${pkgdir}/usr/share/applications/links.desktop"
+ install -d "${pkgdir}/usr/share/pixmaps"
+ install -m644 links_16x16_1.xpm links_16x16_2.xpm links_32x32.xpm "${pkgdir}/usr/share/pixmaps/"
+
+ install -d "${pkgdir}/usr/share/doc/links/calibration"
+ install -m644 doc/links_cal/* "${pkgdir}/usr/share/doc/links/calibration/"
+}
diff --git a/testing/links/links.desktop b/testing/links/links.desktop
new file mode 100644
index 000000000..9d6338a5b
--- /dev/null
+++ b/testing/links/links.desktop
@@ -0,0 +1,7 @@
+[Desktop Entry]
+Name=Links
+Exec=xlinks -g
+Icon=links_32x32.xpm
+Type=Application
+Terminal=false
+Categories=Network;WebBrowser;
diff --git a/testing/metacity/PKGBUILD b/testing/metacity/PKGBUILD
new file mode 100644
index 000000000..95489550f
--- /dev/null
+++ b/testing/metacity/PKGBUILD
@@ -0,0 +1,34 @@
+# $Id: PKGBUILD 148231 2012-01-30 18:48:49Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=metacity
+pkgver=2.34.1
+pkgrel=2
+pkgdesc="A window manager for GNOME"
+arch=(i686 x86_64)
+license=('GPL')
+depends=('startup-notification' 'gconf' 'zenity' 'libcanberra' 'libgtop' 'libwnck' 'libsm')
+makedepends=('intltool' 'pkg-config' '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}/${pkgver%.*}/${pkgname}-${pkgver}.tar.xz)
+sha256sums=('f144cb43925ca00d8eaac129a14df3260c54a32324b5cd0a4d78b0fd7ff1028a')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./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/testing/metacity/metacity.install b/testing/metacity/metacity.install
new file mode 100644
index 000000000..2eb1e5094
--- /dev/null
+++ b/testing/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/testing/mjpegtools/PKGBUILD b/testing/mjpegtools/PKGBUILD
new file mode 100644
index 000000000..99447ca94
--- /dev/null
+++ b/testing/mjpegtools/PKGBUILD
@@ -0,0 +1,34 @@
+# $Id: PKGBUILD 148233 2012-01-30 18:48:52Z ibiru $
+# Contributor: Damir Perisa <damir.perisa@bluewin.ch>
+# Maintainer: Roberto Carvajal <roberto@archlinux.org>
+
+pkgname=mjpegtools
+pkgver=2.0.0
+pkgrel=2
+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' 'libpng' 'sdl' 'gcc-libs' 'libdv')
+makedepends=('gtk2' 'v4l-utils')
+optdepends=('gtk2: glav GUI')
+options=('!makeflags' '!libtool')
+install=mjpegtools.install
+source=(http://downloads.sourceforge.net/sourceforge/mjpeg/${pkgname}-${pkgver}.tar.gz
+ mjpegtools-v4l-2.6.38.patch)
+md5sums=('903e1e3b967eebcc5fe5626d7517dc46'
+ '44006d6f844017fe57aa123aa43f4508')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np0 -i "${srcdir}/mjpegtools-v4l-2.6.38.patch"
+ sed -i -e '/ARCHFLAGS=/s:=.*:=:' configure
+ ./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/testing/mjpegtools/mjpegtools-v4l-2.6.38.patch b/testing/mjpegtools/mjpegtools-v4l-2.6.38.patch
new file mode 100644
index 000000000..6adeb921c
--- /dev/null
+++ b/testing/mjpegtools/mjpegtools-v4l-2.6.38.patch
@@ -0,0 +1,100 @@
+Index: lavtools/lavvideo.c
+===================================================================
+--- lavtools/lavvideo.c.orig
++++ lavtools/lavvideo.c
+@@ -63,7 +63,7 @@ Copyright by Gernot Ziegler.
+ * errors here, check your linux/time.h && sys/time.h header setup.
+ */
+ #define _LINUX_TIME_H
+-#include <linux/videodev.h>
++#include <libv4l1-videodev.h>
+
+ #include <videodev_mjpeg.h>
+ #include <frequencies.h>
+Index: lavtools/liblavplay.c
+===================================================================
+--- lavtools/liblavplay.c.orig
++++ lavtools/liblavplay.c
+@@ -68,7 +68,8 @@
+ * errors here, check your linux/time.h && sys/time.h header setup.
+ */
+ #define _LINUX_TIME_H
+-#include <linux/videodev.h>
++#include <libv4l1-videodev.h>
++#define BASE_VIDIOCPRIVATE 192 /* 192-255 are private */
+ #else
+ #define VIDEO_MODE_PAL 0
+ #define VIDEO_MODE_NTSC 1
+Index: lavtools/liblavrec.c
+===================================================================
+--- lavtools/liblavrec.c.orig
++++ lavtools/liblavrec.c
+@@ -63,7 +63,8 @@
+ * errors here, check your linux/time.h && sys/time.h header setup.
+ */
+ #define _LINUX_TIME_H
+-#include <linux/videodev.h>
++#include <libv4l1-videodev.h>
++#define BASE_VIDIOCPRIVATE 192 /* 192-255 are private */
+ #ifdef HAVE_SYS_SOUNDCARD_H
+ #include <sys/soundcard.h>
+ #endif
+Index: lavtools/testrec.c
+===================================================================
+--- lavtools/testrec.c.orig
++++ lavtools/testrec.c
+@@ -89,7 +89,7 @@
+ * errors here, check your linux/time.h && sys/time.h header setup.
+ */
+ #define _LINUX_TIME_H
+-#include <linux/videodev.h>
++#include <libv4l1-videodev.h>
+ #include <linux/soundcard.h>
+
+ /* These are explicit prototypes for the compiler, to prepare separation of audiolib.c */
+Index: configure.ac
+===================================================================
+--- configure.ac.orig
++++ configure.ac
+@@ -164,7 +164,7 @@ AC_ARG_WITH([v4l], AC_HELP_STRING([--wit
+ AS_IF([test "x$with_v4l" != "xno"], [
+ case $host in
+ *-*-linux*)
+- AC_CHECK_HEADER(linux/videodev.h,
++ AC_CHECK_HEADER(libv4l1-videodev.h,
+ [have_video4linux=true
+ AC_DEFINE(HAVE_V4L, 1,
+ [Building for Linux - using the video4linux API])], [])
+@@ -173,7 +173,7 @@ esac])
+
+ AS_IF([test "x$have_video4linux" != "xtrue" && test "x$with_v4l" != "xno"],
+ [have_video4linux=false
+- AC_MSG_WARN([videodev.h not found - please install the linux kernel headers programms needing v4l disabled])])
++ AC_MSG_WARN([libv4l1-videodev.h not found - please install the linux kernel headers programms needing v4l disabled])])
+ AM_CONDITIONAL(HAVE_V4L, test x$have_video4linux = xtrue)
+
+ dnl *********************************************************************
+Index: configure
+===================================================================
+--- configure.orig
++++ configure
+@@ -16392,7 +16392,7 @@ if test "x$with_v4l" != "xno"; then :
+
+ case $host in
+ *-*-linux*)
+- ac_fn_c_check_header_mongrel "$LINENO" "linux/videodev.h" "ac_cv_header_linux_videodev_h" "$ac_includes_default"
++ ac_fn_c_check_header_mongrel "$LINENO" "libv4l1-videodev.h" "ac_cv_header_linux_videodev_h" "$ac_includes_default"
+ if test "x$ac_cv_header_linux_videodev_h" = xyes; then :
+ have_video4linux=true
+
+@@ -16407,8 +16407,8 @@ fi
+
+ if test "x$have_video4linux" != "xtrue" && test "x$with_v4l" != "xno"; then :
+ have_video4linux=false
+- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: videodev.h not found - please install the linux kernel headers programms needing v4l disabled" >&5
+-$as_echo "$as_me: WARNING: videodev.h not found - please install the linux kernel headers programms needing v4l disabled" >&2;}
++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: libv4l1-videodev.h not found - please install the linux kernel headers programms needing v4l disabled" >&5
++$as_echo "$as_me: WARNING: libv4l1-videodev.h not found - please install the linux kernel headers programms needing v4l disabled" >&2;}
+ fi
+ if test x$have_video4linux = xtrue; then
+ HAVE_V4L_TRUE=
diff --git a/testing/mjpegtools/mjpegtools.install b/testing/mjpegtools/mjpegtools.install
new file mode 100644
index 000000000..4d1231686
--- /dev/null
+++ b/testing/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/testing/netpbm/PKGBUILD b/testing/netpbm/PKGBUILD
new file mode 100644
index 000000000..51b6ee526
--- /dev/null
+++ b/testing/netpbm/PKGBUILD
@@ -0,0 +1,72 @@
+# $Id: PKGBUILD 148237 2012-01-30 18:48:57Z ibiru $
+# Maintainer: Kevin Piche <kevin@archlinux.org>
+
+pkgname=netpbm
+pkgver=10.57.1
+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' 'libpng' 'libtiff' 'libxml2')
+makedepends=('python2')
+options=('!makeflags')
+# Releases after 10.34 are available via SVN only.
+# Get Advanced tarball here: http://netpbm.sourceforge.net/release.html#tarball
+# Get version number from 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 \
+ netpbm-CAN-2005-2471.patch netpbm-security-code.patch netpbm-security-scripts.patch)
+sha1sums=('cd0b99333faf994a680d77c5d217034df35ebd4e'
+ 'dfeba9f9a5fe987d64db0aadb5ca8c1b20fcead2'
+ 'b79cf9d42488fea065ba16262ed97694c47af08d'
+ '4cd5b94a24886ecae3973c5ae104d8298fe5a1f5'
+ '2ac31f714121e08e47af9337c6bbaab3cbfc5c75')
+
+build() {
+ cd "${srcdir}/advanced"
+ patch -p1 < ../netpbm-CAN-2005-2471.patch
+ patch -p1 < ../netpbm-security-code.patch
+ patch -p1 < ../netpbm-security-scripts.patch
+ sed -i 's|#!/usr/bin/python|#!/usr/bin/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|misc|share/netpbm|' common.mk
+ sed -i 's|/link|/lib|' lib/Makefile
+ sed -i 's|install.manweb install.man|install.man|' GNUmakefile
+
+ make
+
+ # Generating useful man pages with html doc
+ cd "${srcdir}/doc"
+ make MAKEMAN="${srcdir}/advanced/buildtools/makeman" USERGUIDE=. \
+ -f "${srcdir}/advanced/buildtools/manpage.mk" manpages
+}
+
+package() {
+ cd "${srcdir}/advanced"
+ make pkgdir="${pkgdir}/usr" PKGMANDIR=share/man install-run install-dev
+
+# Removing dummy man pages
+ rm "${pkgdir}"/usr/share/man/man{1,3,5}/*
+
+ cd "${srcdir}/doc"
+ make MAKEMAN="${srcdir}/advanced/buildtools/makeman" MANDIR="${pkgdir}/usr/share/man" \
+ -f "${srcdir}/advanced/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}/advanced/doc/copyright_summary" \
+ "${pkgdir}/usr/share/licenses/${pkgname}/copyright_summary.txt"
+}
diff --git a/testing/netpbm/netpbm-CAN-2005-2471.patch b/testing/netpbm/netpbm-CAN-2005-2471.patch
new file mode 100644
index 000000000..3759d7ebe
--- /dev/null
+++ b/testing/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 @@
+ ghostscriptProg, arg0,
+ deviceopt, outfileopt, gopt, ropt, textalphabitsopt,
+ "-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/testing/netpbm/netpbm-security-code.patch b/testing/netpbm/netpbm-security-code.patch
new file mode 100644
index 000000000..da67a8f92
--- /dev/null
+++ b/testing/netpbm/netpbm-security-code.patch
@@ -0,0 +1,1668 @@
+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
+ assert (nch >= 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));
+ if (m[i] == NULL)
+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/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,10 +252,14 @@ read_channels(ifp, head, table, func, oc
+ MALLOCARRAY_NOFAIL(image, head->ysize);
+ } else {
+ maxchannel = MIN(3, head->zsize);
++ overflow2(head->ysize, maxchannel);
+ MALLOCARRAY_NOFAIL(image, head->ysize * maxchannel);
+ }
+- 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) {
+ unsigned int row;
+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/other/sunicontopnm.c.security netpbm-10.47.04/converter/other/sunicontopnm.c
+--- netpbm-10.47.04/converter/other/sunicontopnm.c.security 2009-10-21 13:39:10.000000000 +0200
++++ netpbm-10.47.04/converter/other/sunicontopnm.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);
++
+ }
+
+
+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/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/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,4 +88,5 @@ getinit( file, colsP, rowsP, depthP, pad
+ pm_error("EOF / read error");
+
+ *depthP = 1;
++ overflow_add(*colsP, 15);
+ *padrightP = ((*colsP + 15) / 16) * 16 - *colsP;
+}
+
+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 ppmtoapplevol ppmtoarbtxt ppmtoascii \
+ 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 = malloc((unsigned)(cols+cols/MAX_COUNT+1));
+ for (row = 0, oc = 0; row < rows; row++)
+ oc += putRow(stdout, row, cols, pixels[row], packed);
+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/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/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/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);
+ }
+ }
+--- 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/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_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')
+- pm_asprintf(&command, "compress > %s", file_name);
+- else if (*mode == 'a')
+- pm_asprintf(&command, "compress >> %s", file_name);
+- else
+- pm_asprintf(&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;
+- }
+- pm_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
+--- advanced/urt/rle_hdr.c.old 2012-01-21 05:57:25.000000000 -0500
++++ advanced/urt/rle_hdr.c 2012-01-21 05:57:50.000000000 -0500
+@@ -29,6 +29,18 @@
+
+ #include <string.h>
+
++/*
++ * 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);
++
+ /*****************************************************************
+ * TAG( rle_names )
+ *
diff --git a/testing/netpbm/netpbm-security-scripts.patch b/testing/netpbm/netpbm-security-scripts.patch
new file mode 100644
index 000000000..557914b66
--- /dev/null
+++ b/testing/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/testing/neverball/PKGBUILD b/testing/neverball/PKGBUILD
new file mode 100644
index 000000000..b26cf2586
--- /dev/null
+++ b/testing/neverball/PKGBUILD
@@ -0,0 +1,47 @@
+# $Id: PKGBUILD 148239 2012-01-30 18:49:01Z ibiru $
+# Maintainer: Eric Bélanger <eric@archlinux.org>
+
+pkgname=neverball
+pkgver=1.5.4
+pkgrel=4
+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' 'libvorbis' 'physfs')
+makedepends=('mesa')
+source=(http://neverball.org/${pkgname}-${pkgver}.tar.gz neverball-1.5.4-underlink.patch)
+sha1sums=('619c227e1958bd60738f12dbbde9b30c91dd79a7'
+ 'f71982b7187d569c57b30c4c40fedd6c0e72baca')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ sed -i 's|#define CONFIG_LOCALE "./locale"|#define CONFIG_LOCALE "/usr/share/locale"|' share/base_config.h
+ patch -p0 -i ../neverball-1.5.4-underlink.patch
+
+ if [ "${CARCH}" = "i686" ] ;then
+ make ENABLE_NLS=1 DATADIR=/usr/share/neverball SSE_CFLAGS=""
+ else
+ make ENABLE_NLS=1 DATADIR=/usr/share/neverball
+ fi
+}
+
+package(){
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ install -d "${pkgdir}/usr/bin"
+ install -d "${pkgdir}"/usr/share/{neverball,locale,applications,pixmaps,doc/neverball}
+ install -d "${pkgdir}"/usr/share/man/man{1,6}
+
+ install -m755 neverball neverputt mapc "${pkgdir}/usr/bin"
+ cp -r locale/* "${pkgdir}/usr/share/locale/"
+ cp -r data/* "${pkgdir}/usr/share/neverball/"
+ install -m644 doc/* "${pkgdir}/usr/share/doc/neverball/"
+ install -m644 dist/*.desktop "${pkgdir}/usr/share/applications/"
+ install -m644 dist/*.png "${pkgdir}/usr/share/pixmaps/"
+ install -m644 dist/mapc.1 "${pkgdir}/usr/share/man/man1"
+ install -m644 dist/{neverball.6,neverputt.6} "${pkgdir}/usr/share/man/man6"
+
+ ln -s neverball_48.png "${pkgdir}/usr/share/pixmaps/neverball.png"
+ ln -s neverputt_48.png "${pkgdir}/usr/share/pixmaps/neverputt.png"
+ find "${pkgdir}/usr/share/neverball" -type f -exec chmod 0644 {} \;
+}
diff --git a/testing/neverball/neverball-1.5.4-underlink.patch b/testing/neverball/neverball-1.5.4-underlink.patch
new file mode 100644
index 000000000..1a848cad3
--- /dev/null
+++ b/testing/neverball/neverball-1.5.4-underlink.patch
@@ -0,0 +1,22 @@
+--- Makefile.old 2011-06-22 06:30:52.441788160 +0200
++++ Makefile 2011-06-22 06:31:59.754087534 +0200
+@@ -138,7 +138,7 @@
+ endif
+
+ ALL_LIBS := $(SDL_LIBS) $(BASE_LIBS) $(TILT_LIBS) $(INTL_LIBS) -lSDL_ttf \
+- -lvorbisfile $(OGL_LIBS)
++ -lvorbisfile $(OGL_LIBS) -lX11
+
+ #------------------------------------------------------------------------------
+
+--- Makefile.old 2012-01-18 21:28:23.000000000 -0500
++++ Makefile 2012-01-18 21:28:55.000000000 -0500
+@@ -131,7 +131,7 @@
+ OGL_LIBS := -framework OpenGL
+ endif
+
+-BASE_LIBS := -ljpeg $(PNG_LIBS) $(FS_LIBS)
++BASE_LIBS := -ljpeg $(PNG_LIBS) $(FS_LIBS) -lm
+
+ ifdef DARWIN
+ BASE_LIBS += -L/opt/local/lib
diff --git a/testing/nx-common/NXproto.h.64bit.diff b/testing/nx-common/NXproto.h.64bit.diff
new file mode 100644
index 000000000..ac326ebcd
--- /dev/null
+++ b/testing/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/testing/nx-common/PKGBUILD b/testing/nx-common/PKGBUILD
new file mode 100644
index 000000000..71f34f2a8
--- /dev/null
+++ b/testing/nx-common/PKGBUILD
@@ -0,0 +1,59 @@
+# $Id: PKGBUILD 148241 2012-01-30 18:49:03Z ibiru $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+# Contributed: eliott <eliott@solarblue.net>, Andre Naumann <anaumann@SPARCed.org>
+
+pkgname=nx-common
+pkgver=3.5.0
+pkgrel=3
+pkgdesc="NoMachine NX common package for client and server"
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://nomachine.com/"
+depends=('libjpeg-turbo>=1.1.1' 'libpng>=1.5.7' 'openssl>=1.0.0' 'gcc-libs' 'bash')
+makedepends=('xorg-server-devel')
+source=( #Compression libs and proxy sources
+ http://64.34.161.181/download/$pkgver/sources/nxcomp-$pkgver-2.tar.gz
+ http://64.34.161.181/download/$pkgver/sources/nxcompsh-$pkgver-1.tar.gz
+ http://64.34.161.181/download/$pkgver/sources/nxssh-$pkgver-2.tar.gz
+ nxcompsh-gcc43.patch
+ nx-3.5.0-libpng15.patch)
+options=(!libtool)
+md5sums=('ad8c0f133122c6d07732ca69c8759410'
+ '84ade443b79ea079380b754aba9d392e'
+ 'f52fcdb38e09f8dcfb9ff0344dfbbbd6'
+ 'b6c279654dac421fc3dd1a27d66ff53c'
+ '2966353cabb96829eab291212ef078dc')
+
+build() {
+ # nxcomp
+ cd ${srcdir}/nxcomp
+ patch -Np1 -i ${srcdir}/nx-3.5.0-libpng15.patch
+
+ ./configure --prefix=/opt/NX
+ make
+ # nxcompsh
+ cd ${srcdir}/nxcompsh
+ patch -Np1 -i ${srcdir}/nxcompsh-gcc43.patch
+
+ ./configure --prefix=/opt/NX
+ make
+ # nxssh
+ cd ${srcdir}/nxssh
+ ./configure --prefix=/opt/NX
+ make
+}
+
+package() {
+ mkdir -p ${pkgdir}/opt/NX/bin
+ mkdir -p ${pkgdir}/opt/NX/lib
+
+ # nxcomp
+ cd ${srcdir}/nxcomp
+ cp -a libXcomp.so* ${pkgdir}/opt/NX/lib
+ # nxcompsh
+ cd ${srcdir}/nxcompsh
+ cp -a libXcompsh.so* ${pkgdir}/opt/NX/lib
+ # nxssh
+ cd ${srcdir}/nxssh
+ install -D -m755 nxssh ${pkgdir}/opt/NX/bin/nxssh
+}
diff --git a/testing/nx-common/nx-3.5.0-libpng15.patch b/testing/nx-common/nx-3.5.0-libpng15.patch
new file mode 100644
index 000000000..c8f2a9559
--- /dev/null
+++ b/testing/nx-common/nx-3.5.0-libpng15.patch
@@ -0,0 +1,30 @@
+diff -ur nxcomp.orig/Pgn.cpp nxcomp/Pgn.cpp
+--- nxcomp.orig/Pgn.cpp 2010-03-01 19:18:59.000000000 +0200
++++ nxcomp/Pgn.cpp 2011-09-13 16:35:12.000000000 +0300
+@@ -414,7 +414,7 @@
+
+ png_read_info(pngPtr, infoPtr);
+
+- if (infoPtr -> color_type == PNG_COLOR_TYPE_PALETTE)
++ if (png_get_color_type(pngPtr, infoPtr) == PNG_COLOR_TYPE_PALETTE)
+ {
+ png_set_expand(pngPtr);
+ }
+@@ -565,7 +565,7 @@
+
+ png_read_info( pngPtr, infoPtr ) ;
+
+- if (infoPtr -> color_type == PNG_COLOR_TYPE_PALETTE)
++ if (png_get_color_type(pngPtr, infoPtr) == PNG_COLOR_TYPE_PALETTE)
+ {
+ png_set_expand(pngPtr);
+ }
+@@ -709,7 +709,7 @@
+ png_read_info(pngPtr, infoPtr) ;
+
+
+- if (infoPtr -> color_type == PNG_COLOR_TYPE_PALETTE)
++ if (png_get_color_type(pngPtr, infoPtr) == PNG_COLOR_TYPE_PALETTE)
+ {
+ png_set_expand(pngPtr);
+ }
diff --git a/testing/nx-common/nxcompsh-gcc43.patch b/testing/nx-common/nxcompsh-gcc43.patch
new file mode 100644
index 000000000..681a0dab5
--- /dev/null
+++ b/testing/nx-common/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/testing/nxserver/NXproto.h.64bit.diff b/testing/nxserver/NXproto.h.64bit.diff
new file mode 100644
index 000000000..ac326ebcd
--- /dev/null
+++ b/testing/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/testing/nxserver/PKGBUILD b/testing/nxserver/PKGBUILD
new file mode 100644
index 000000000..d51e594f6
--- /dev/null
+++ b/testing/nxserver/PKGBUILD
@@ -0,0 +1,95 @@
+# $Id: PKGBUILD 148243 2012-01-30 18:49:06Z ibiru $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+# Contributed: eliott <eliott@solarblue.net>, Andre Naumann <anaumann@SPARCed.org>
+
+pkgname=nxserver
+pkgver=3.5.0
+pkgrel=5
+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" 'libxaw' 'libxrender' 'libxp' 'gcc-libs' 'libjpeg>=8' #>=$pkgver
+ 'libxpm' 'libpng>=1.5.7' '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-2.tar.gz
+http://64.34.161.181/download/$pkgver/sources/nxwin-$pkgver-2.tar.gz
+http://64.34.161.181/download/$pkgver/sources/nxauth-$pkgver-1.tar.gz
+http://64.34.161.181/download/$pkgver/sources/nxcomp-$pkgver-2.tar.gz # needed to provide NX.h and -LXcomp - part of nx-common
+#X11 Agent sources
+http://64.34.161.181/download/$pkgver/sources/nxagent-$pkgver-7.tar.gz
+http://64.34.161.181/download/$pkgver/sources/nxcompsh-$pkgver-1.tar.gz # needed to get X11 built - part of nx-common
+#Compression libs and proxy sources
+http://64.34.161.181/download/$pkgver/sources/nxproxy-$pkgver-1.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-2.tar.gz
+# gcc 43 fix
+nxcompsh-gcc43.patch
+nx-3.5.0-libpng15.patch)
+options=(!libtool)
+md5sums=('12060433a74ac61a1c776d1d6d136117'
+ '84c7f1575d9a1506370125ed050514ab'
+ 'cf38ec1e5a5f6453946cd387c14f2684'
+ 'ad8c0f133122c6d07732ca69c8759410'
+ '0a36c7e6a86c6c741179464b8f79c487'
+ '84ade443b79ea079380b754aba9d392e'
+ '488bb4d9b8e9f82dc272b4e6e9c57d30'
+ 'abde2ccc33e31fc695031c2cfb60f3dd'
+ '90a762dd9eb19c8c97876ad837923857'
+ 'b6c279654dac421fc3dd1a27d66ff53c'
+ '2966353cabb96829eab291212ef078dc')
+
+build() {
+ cd ${srcdir}
+
+ # nxcomp
+ cd ${srcdir}/nxcomp
+ patch -Np1 -i ${srcdir}/nx-3.5.0-libpng15.patch
+ ./configure --prefix=/opt/NX
+ make
+ # nxcompshad
+ cd ${srcdir}/nxcompshad
+ ./configure --prefix=/opt/NX
+ make
+ # nxcompsh
+ cd ${srcdir}/nxcompsh
+ patch -Np1 -i ${srcdir}/nxcompsh-gcc43.patch
+ ./configure --prefix=/opt/NX
+ make
+ # nxproxy
+ cd ${srcdir}/nxproxy
+ ./configure --prefix=/opt/NX
+ make
+ # nx-X11
+ cd ${srcdir}/nx-X11
+ make World
+ # nxcompext
+ cd ${srcdir}/nxcompext
+ ./configure --prefix=/opt/NX
+ make
+}
+
+package() {
+ mkdir -p ${pkgdir}/opt/NX/bin
+ mkdir -p ${pkgdir}/opt/NX/lib
+
+ # nxcompshad
+ cd ${srcdir}/nxcompshad
+ cp -a libXcompshad.so* ${pkgdir}/opt/NX/lib
+ # nxproxy
+ cd ${srcdir}/nxproxy
+ make prefix=${pkgdir}/opt/NX install
+ # nx-X11
+ cd ${srcdir}/nx-X11
+ 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
+ # nxcompext
+ cd ${srcdir}/nxcompext
+ cp -a libXcompext.so* ${pkgdir}/opt/NX/lib
+} \ No newline at end of file
diff --git a/testing/nxserver/nx-3.5.0-libpng15.patch b/testing/nxserver/nx-3.5.0-libpng15.patch
new file mode 100644
index 000000000..c8f2a9559
--- /dev/null
+++ b/testing/nxserver/nx-3.5.0-libpng15.patch
@@ -0,0 +1,30 @@
+diff -ur nxcomp.orig/Pgn.cpp nxcomp/Pgn.cpp
+--- nxcomp.orig/Pgn.cpp 2010-03-01 19:18:59.000000000 +0200
++++ nxcomp/Pgn.cpp 2011-09-13 16:35:12.000000000 +0300
+@@ -414,7 +414,7 @@
+
+ png_read_info(pngPtr, infoPtr);
+
+- if (infoPtr -> color_type == PNG_COLOR_TYPE_PALETTE)
++ if (png_get_color_type(pngPtr, infoPtr) == PNG_COLOR_TYPE_PALETTE)
+ {
+ png_set_expand(pngPtr);
+ }
+@@ -565,7 +565,7 @@
+
+ png_read_info( pngPtr, infoPtr ) ;
+
+- if (infoPtr -> color_type == PNG_COLOR_TYPE_PALETTE)
++ if (png_get_color_type(pngPtr, infoPtr) == PNG_COLOR_TYPE_PALETTE)
+ {
+ png_set_expand(pngPtr);
+ }
+@@ -709,7 +709,7 @@
+ png_read_info(pngPtr, infoPtr) ;
+
+
+- if (infoPtr -> color_type == PNG_COLOR_TYPE_PALETTE)
++ if (png_get_color_type(pngPtr, infoPtr) == PNG_COLOR_TYPE_PALETTE)
+ {
+ png_set_expand(pngPtr);
+ }
diff --git a/testing/nxserver/nxcompsh-gcc43.patch b/testing/nxserver/nxcompsh-gcc43.patch
new file mode 100644
index 000000000..681a0dab5
--- /dev/null
+++ b/testing/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/testing/opencv/PKGBUILD b/testing/opencv/PKGBUILD
index e0c769e07..291aa342f 100644
--- a/testing/opencv/PKGBUILD
+++ b/testing/opencv/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 146253 2012-01-07 05:13:32Z eric $
+# $Id: PKGBUILD 148245 2012-01-30 18:49:08Z ibiru $
# Maintainer: Ray Rashif <schiv@archlinux.org>
# Contributor: Tobias Powalowski <tpowa@archlinux.org>
@@ -7,7 +7,7 @@ pkgname=('opencv' 'opencv-docs' 'opencv-samples')
_realname=OpenCV
pkgver=2.3.1_a
_realver=2.3.1
-pkgrel=3
+pkgrel=4
pkgdesc="Open Source Computer Vision Library"
arch=('i686' 'x86_64')
license=('BSD')
diff --git a/testing/opengtl/PKGBUILD b/testing/opengtl/PKGBUILD
new file mode 100644
index 000000000..ba03186c2
--- /dev/null
+++ b/testing/opengtl/PKGBUILD
@@ -0,0 +1,32 @@
+# $Id: PKGBUILD 148247 2012-01-30 18:49:10Z ibiru $
+# Maintainer: Ronald van Haren <ronald.archlinux.org>
+# Contributor: Andries Radu <admiral0@live.it>
+
+pkgname=opengtl
+pkgver=0.9.16
+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' 'llvm')
+makedepends=('cmake' 'libpng')
+optdepends=('libpng: for using the png extension')
+source=(http://download.opengtl.org/OpenGTL-${pkgver}.tar.bz2)
+sha1sums=('3cfe4a08e5778c13f7e74dfc822adb68f97ad048')
+
+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/testing/openjdk6/PKGBUILD b/testing/openjdk6/PKGBUILD
new file mode 100644
index 000000000..0bb30bbbd
--- /dev/null
+++ b/testing/openjdk6/PKGBUILD
@@ -0,0 +1,183 @@
+# $Id: PKGBUILD 148249 2012-01-30 18:49:15Z ibiru $
+# Maintainer: Andreas Radke <andyrtr@archlinux.org>
+# Contributor: Jan de Groot <jgc@archlinux.org>
+
+pkgname=('openjdk6' 'openjdk6-src')
+pkgbase="openjdk6"
+_javaver=6
+_icedteaver=1.10.5
+_openjdk_version=b22
+_openjdk_date=28_feb_2011
+pkgver=${_javaver}.${_openjdk_version}_${_icedteaver}
+pkgrel=2
+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' 'openjdk6')
+options=('!emptydirs') # 'force') # force needed for hg shots
+source=(http://icedtea.classpath.org/download/source/icedtea6-${_icedteaver}.tar.gz
+ 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
+ http://icedtea.classpath.org/download/drops/jdk6-jaxws-b20.zip
+ http://icedtea.classpath.org/download/drops/jdk6-jaf-b20.zip
+ fix_jdk_cmds_path.diff
+ fix_corba_cmds_path.diff
+ fontconfig-paths.diff
+ nonreparenting-wm.diff
+ openjdk6.profile
+ openjdk6.profile.csh
+ glibc2_15.diff)
+noextract=(openjdk-6-src-${_openjdk_version}-${_openjdk_date}.tar.gz
+ jaxp144_01.zip
+ jdk6-jaxws-b20.zip
+ jdk6-jaf-b20.zip)
+md5sums=('e2316f463b5d9f53f8c5c9020f2a7e5a'
+ '2d2bbbb0f9b81f1fec41ec730da8a933'
+ 'ef7a8b3624ea904bf584bc46d79b5e75'
+ '91adfd41e6f001add4f92ae31216b1e3'
+ 'bc95c133620bd68c161cac9891592901'
+ '5da3e39fa60985576c4f37d1491efbe2'
+ 'f7e7a212e50abb56a6ef1a2b1bd27405'
+ 'ee1afda124d5927345014ab382ef581e'
+ '9b4d368f5ee08de248eaf029303a446c'
+ '74c4a7adc782edd087802bf92ae3d6d0'
+ 'fdf295e2f186dfa4d308691a3d7ac8c5'
+ '0c8f0a398c88f85e0db44b4417562cf3')
+
+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/fontconfig-paths.diff patches/fix_corba_cmds_path.diff patches/nonreparenting-wm.diff patches/glibc2_15.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>=1.5.7')
+ 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}//icedtea6-${_icedteaver}/openjdk/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/testing/openjdk6/fix_corba_cmds_path.diff b/testing/openjdk6/fix_corba_cmds_path.diff
new file mode 100644
index 000000000..842657880
--- /dev/null
+++ b/testing/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/testing/openjdk6/fix_jdk_cmds_path.diff b/testing/openjdk6/fix_jdk_cmds_path.diff
new file mode 100644
index 000000000..7e16e1744
--- /dev/null
+++ b/testing/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/testing/openjdk6/fontconfig-paths.diff b/testing/openjdk6/fontconfig-paths.diff
new file mode 100644
index 000000000..fa08db629
--- /dev/null
+++ b/testing/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/testing/openjdk6/glibc2_15.diff b/testing/openjdk6/glibc2_15.diff
new file mode 100644
index 000000000..8fe1b077a
--- /dev/null
+++ b/testing/openjdk6/glibc2_15.diff
@@ -0,0 +1,236 @@
+# HG changeset patch
+# User never
+# Date 1319555835 25200
+# Node ID a6eef545f1a2ceca6aeadf688a965df600ffef28
+# Parent 2ec638646e86e455978c31a9d47fc0ec271ed926
+7103224: collision between __LEAF define in interfaceSupport.hpp and /usr/include/sys/cdefs.h with gcc
+Reviewed-by: never
+Contributed-by: Omair Majid <omajid@redhat.com>
+
+diff -r 2ec638646e86 -r a6eef545f1a2 src/share/vm/opto/addnode.cpp
+--- openjdk/hotspot/src/share/vm/opto/addnode.cpp Tue Oct 25 04:07:20 2011 -0700
++++ openjdk/hotspot/src/share/vm/opto/addnode.cpp Tue Oct 25 08:17:15 2011 -0700
+@@ -34,8 +34,6 @@
+
+ // Portions of code courtesy of Clifford Click
+
+-#define MAXFLOAT ((float)3.40282346638528860e+38)
+-
+ // Classic Add functionality. This covers all the usual 'add' behaviors for
+ // an algebraic ring. Add-integer, add-float, add-double, and binary-or are
+ // all inherited from this class. The various identity values are supplied
+diff -r 2ec638646e86 -r a6eef545f1a2 src/share/vm/prims/jniCheck.cpp
+--- openjdk/hotspot/src/share/vm/prims/jniCheck.cpp Tue Oct 25 04:07:20 2011 -0700
++++ openjdk/hotspot/src/share/vm/prims/jniCheck.cpp Tue Oct 25 08:17:15 2011 -0700
+@@ -107,7 +107,7 @@
+ if (env != xenv) { \
+ NativeReportJNIFatalError(thr, warn_wrong_jnienv); \
+ } \
+- __ENTRY(result_type, header, thr)
++ VM_ENTRY_BASE(result_type, header, thr)
+
+
+ #define UNCHECKED() (unchecked_jni_NativeInterface)
+diff -r 2ec638646e86 -r a6eef545f1a2 src/share/vm/prims/jvmtiEnter.xsl
+--- openjdk/hotspot/src/share/vm/prims/jvmtiEnter.xsl Tue Oct 25 04:07:20 2011 -0700
++++ openjdk/hotspot/src/share/vm/prims/jvmtiEnter.xsl Tue Oct 25 08:17:15 2011 -0700
+@@ -426,7 +426,7 @@
+ <xsl:value-of select="$space"/>
+ <xsl:text>ThreadInVMfromNative __tiv(current_thread);</xsl:text>
+ <xsl:value-of select="$space"/>
+- <xsl:text>__ENTRY(jvmtiError, </xsl:text>
++ <xsl:text>VM_ENTRY_BASE(jvmtiError, </xsl:text>
+ <xsl:apply-templates select="." mode="functionid"/>
+ <xsl:text> , current_thread)</xsl:text>
+ <xsl:value-of select="$space"/>
+diff -r 2ec638646e86 -r a6eef545f1a2 src/share/vm/prims/jvmtiEnv.cpp
+--- openjdk/hotspot/src/share/vm/prims/jvmtiEnv.cpp Tue Oct 25 04:07:20 2011 -0700
++++ openjdk/hotspot/src/share/vm/prims/jvmtiEnv.cpp Tue Oct 25 08:17:15 2011 -0700
+@@ -173,7 +173,7 @@
+ // from native so as to resolve the jthread.
+
+ ThreadInVMfromNative __tiv(current_thread);
+- __ENTRY(jvmtiError, JvmtiEnv::GetThreadLocalStorage , current_thread)
++ VM_ENTRY_BASE(jvmtiError, JvmtiEnv::GetThreadLocalStorage , current_thread)
+ debug_only(VMNativeEntryWrapper __vew;)
+
+ oop thread_oop = JNIHandles::resolve_external_guard(thread);
+diff -r 2ec638646e86 -r a6eef545f1a2 src/share/vm/prims/jvmtiExport.cpp
+--- openjdk/hotspot/src/share/vm/prims/jvmtiExport.cpp Tue Oct 25 04:07:20 2011 -0700
++++ openjdk/hotspot/src/share/vm/prims/jvmtiExport.cpp Tue Oct 25 08:17:15 2011 -0700
+@@ -373,7 +373,7 @@
+ JavaThread* current_thread = (JavaThread*) ThreadLocalStorage::thread();
+ // transition code: native to VM
+ ThreadInVMfromNative __tiv(current_thread);
+- __ENTRY(jvmtiEnv*, JvmtiExport::get_jvmti_interface, current_thread)
++ VM_ENTRY_BASE(jvmtiEnv*, JvmtiExport::get_jvmti_interface, current_thread)
+ debug_only(VMNativeEntryWrapper __vew;)
+
+ JvmtiEnv *jvmti_env = JvmtiEnv::create_a_jvmti(version);
+diff -r 2ec638646e86 -r a6eef545f1a2 src/share/vm/runtime/interfaceSupport.hpp
+--- openjdk/hotspot/src/share/vm/runtime/interfaceSupport.hpp Tue Oct 25 04:07:20 2011 -0700
++++ openjdk/hotspot/src/share/vm/runtime/interfaceSupport.hpp Tue Oct 25 08:17:15 2011 -0700
+@@ -72,9 +72,9 @@
+ }
+ };
+
+-// InterfaceSupport provides functionality used by the __LEAF and __ENTRY
+-// macros. These macros are used to guard entry points into the VM and
+-// perform checks upon leave of the VM.
++// InterfaceSupport provides functionality used by the VM_LEAF_BASE and
++// VM_ENTRY_BASE macros. These macros are used to guard entry points into
++// the VM and perform checks upon leave of the VM.
+
+
+ class InterfaceSupport: AllStatic {
+@@ -433,7 +433,7 @@
+
+ // LEAF routines do not lock, GC or throw exceptions
+
+-#define __LEAF(result_type, header) \
++#define VM_LEAF_BASE(result_type, header) \
+ TRACE_CALL(result_type, header) \
+ debug_only(NoHandleMark __hm;) \
+ /* begin of body */
+@@ -441,7 +441,7 @@
+
+ // ENTRY routines may lock, GC and throw exceptions
+
+-#define __ENTRY(result_type, header, thread) \
++#define VM_ENTRY_BASE(result_type, header, thread) \
+ TRACE_CALL(result_type, header) \
+ HandleMarkCleaner __hm(thread); \
+ Thread* THREAD = thread; \
+@@ -450,7 +450,7 @@
+
+ // QUICK_ENTRY routines behave like ENTRY but without a handle mark
+
+-#define __QUICK_ENTRY(result_type, header, thread) \
++#define VM_QUICK_ENTRY_BASE(result_type, header, thread) \
+ TRACE_CALL(result_type, header) \
+ debug_only(NoHandleMark __hm;) \
+ Thread* THREAD = thread; \
+@@ -463,20 +463,20 @@
+ #define IRT_ENTRY(result_type, header) \
+ result_type header { \
+ ThreadInVMfromJava __tiv(thread); \
+- __ENTRY(result_type, header, thread) \
++ VM_ENTRY_BASE(result_type, header, thread) \
+ debug_only(VMEntryWrapper __vew;)
+
+
+ #define IRT_LEAF(result_type, header) \
+ result_type header { \
+- __LEAF(result_type, header) \
++ VM_LEAF_BASE(result_type, header) \
+ debug_only(No_Safepoint_Verifier __nspv(true);)
+
+
+ #define IRT_ENTRY_NO_ASYNC(result_type, header) \
+ result_type header { \
+ ThreadInVMfromJavaNoAsyncException __tiv(thread); \
+- __ENTRY(result_type, header, thread) \
++ VM_ENTRY_BASE(result_type, header, thread) \
+ debug_only(VMEntryWrapper __vew;)
+
+ // Another special case for nmethod_entry_point so the nmethod that the
+@@ -487,7 +487,7 @@
+ result_type header { \
+ nmethodLocker _nmlock(nm); \
+ ThreadInVMfromJavaNoAsyncException __tiv(thread); \
+- __ENTRY(result_type, header, thread)
++ VM_ENTRY_BASE(result_type, header, thread)
+
+ #define IRT_END }
+
+@@ -497,20 +497,20 @@
+ #define JRT_ENTRY(result_type, header) \
+ result_type header { \
+ ThreadInVMfromJava __tiv(thread); \
+- __ENTRY(result_type, header, thread) \
++ VM_ENTRY_BASE(result_type, header, thread) \
+ debug_only(VMEntryWrapper __vew;)
+
+
+ #define JRT_LEAF(result_type, header) \
+ result_type header { \
+- __LEAF(result_type, header) \
++ VM_LEAF_BASE(result_type, header) \
+ debug_only(JRT_Leaf_Verifier __jlv;)
+
+
+ #define JRT_ENTRY_NO_ASYNC(result_type, header) \
+ result_type header { \
+ ThreadInVMfromJavaNoAsyncException __tiv(thread); \
+- __ENTRY(result_type, header, thread) \
++ VM_ENTRY_BASE(result_type, header, thread) \
+ debug_only(VMEntryWrapper __vew;)
+
+ // Same as JRT Entry but allows for return value after the safepoint
+@@ -543,11 +543,11 @@
+ assert( !VerifyJNIEnvThread || (thread == Thread::current()), "JNIEnv is only valid in same thread"); \
+ ThreadInVMfromNative __tiv(thread); \
+ debug_only(VMNativeEntryWrapper __vew;) \
+- __ENTRY(result_type, header, thread)
++ VM_ENTRY_BASE(result_type, header, thread)
+
+
+ // Ensure that the VMNativeEntryWrapper constructor, which can cause
+-// a GC, is called outside the NoHandleMark (set via __QUICK_ENTRY).
++// a GC, is called outside the NoHandleMark (set via VM_QUICK_ENTRY_BASE).
+ #define JNI_QUICK_ENTRY(result_type, header) \
+ extern "C" { \
+ result_type JNICALL header { \
+@@ -555,7 +555,7 @@
+ assert( !VerifyJNIEnvThread || (thread == Thread::current()), "JNIEnv is only valid in same thread"); \
+ ThreadInVMfromNative __tiv(thread); \
+ debug_only(VMNativeEntryWrapper __vew;) \
+- __QUICK_ENTRY(result_type, header, thread)
++ VM_QUICK_ENTRY_BASE(result_type, header, thread)
+
+
+ #define JNI_LEAF(result_type, header) \
+@@ -563,7 +563,7 @@
+ result_type JNICALL header { \
+ JavaThread* thread=JavaThread::thread_from_jni_environment(env); \
+ assert( !VerifyJNIEnvThread || (thread == Thread::current()), "JNIEnv is only valid in same thread"); \
+- __LEAF(result_type, header)
++ VM_LEAF_BASE(result_type, header)
+
+
+ // Close the routine and the extern "C"
+@@ -579,7 +579,7 @@
+ JavaThread* thread=JavaThread::thread_from_jni_environment(env); \
+ ThreadInVMfromNative __tiv(thread); \
+ debug_only(VMNativeEntryWrapper __vew;) \
+- __ENTRY(result_type, header, thread)
++ VM_ENTRY_BASE(result_type, header, thread)
+
+
+ #define JVM_ENTRY_NO_ENV(result_type, header) \
+@@ -588,7 +588,7 @@
+ JavaThread* thread = (JavaThread*)ThreadLocalStorage::thread(); \
+ ThreadInVMfromNative __tiv(thread); \
+ debug_only(VMNativeEntryWrapper __vew;) \
+- __ENTRY(result_type, header, thread)
++ VM_ENTRY_BASE(result_type, header, thread)
+
+
+ #define JVM_QUICK_ENTRY(result_type, header) \
+@@ -597,14 +597,14 @@
+ JavaThread* thread=JavaThread::thread_from_jni_environment(env); \
+ ThreadInVMfromNative __tiv(thread); \
+ debug_only(VMNativeEntryWrapper __vew;) \
+- __QUICK_ENTRY(result_type, header, thread)
++ VM_QUICK_ENTRY_BASE(result_type, header, thread)
+
+
+ #define JVM_LEAF(result_type, header) \
+ extern "C" { \
+ result_type JNICALL header { \
+ VM_Exit::block_if_vm_exited(); \
+- __LEAF(result_type, header)
++ VM_LEAF_BASE(result_type, header)
+
+
+ #define JVM_END } } \ No newline at end of file
diff --git a/testing/openjdk6/nonreparenting-wm.diff b/testing/openjdk6/nonreparenting-wm.diff
new file mode 100644
index 000000000..65fa66e89
--- /dev/null
+++ b/testing/openjdk6/nonreparenting-wm.diff
@@ -0,0 +1,60 @@
+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
+@@ -99,7 +99,8 @@
+ METACITY_WM = 11,
+ COMPIZ_WM = 12,
+ LG3D_WM = 13,
+- MUTTER_WM = 14;
++ MUTTER_WM = 14,
++ OTHER_NONREPARENTING_WM = 15;
+ public String toString() {
+ switch (WMID) {
+ case NO_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/testing/openjdk6/openjdk6.install b/testing/openjdk6/openjdk6.install
new file mode 100644
index 000000000..653c8fe2f
--- /dev/null
+++ b/testing/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/testing/openjdk6/openjdk6.profile b/testing/openjdk6/openjdk6.profile
new file mode 100644
index 000000000..9da4421ef
--- /dev/null
+++ b/testing/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/testing/openjdk6/openjdk6.profile.csh b/testing/openjdk6/openjdk6.profile.csh
new file mode 100644
index 000000000..3cb15fd49
--- /dev/null
+++ b/testing/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/testing/pekwm/PKGBUILD b/testing/pekwm/PKGBUILD
new file mode 100644
index 000000000..a9e7ce8ca
--- /dev/null
+++ b/testing/pekwm/PKGBUILD
@@ -0,0 +1,45 @@
+# $Id: PKGBUILD 148251 2012-01-30 18:49:17Z ibiru $
+# Maintainer: Kevin Piche <kevin@archlinux.org>
+# Contributor: Eddie Lozon <almostlucky@attbi.com>
+
+pkgname=pekwm
+pkgver=0.1.13
+pkgrel=2
+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.bz2
+pekwm.desktop libpng-1.4.patch)
+md5sums=('51a3f9030817df0304cc1da5110e493a' '5a78fc6653fbb0b7282ecf7f1f81e2c5'
+ '075bf1b9d32bf94780329499e4fa40e3')
+
+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
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+ install -D -m644 "${srcdir}/${pkgname}.desktop" \
+ "${pkgdir}/usr/share/xsessions/${pkgname}.desktop"
+}
+# vim: ts=2 sw=2 et ft=sh
diff --git a/testing/pekwm/libpng-1.4.patch b/testing/pekwm/libpng-1.4.patch
new file mode 100644
index 000000000..bc4df2c4d
--- /dev/null
+++ b/testing/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/testing/pekwm/pekwm.desktop b/testing/pekwm/pekwm.desktop
new file mode 100644
index 000000000..2f59528bd
--- /dev/null
+++ b/testing/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/testing/perl-tk/PKGBUILD b/testing/perl-tk/PKGBUILD
new file mode 100644
index 000000000..656f645b1
--- /dev/null
+++ b/testing/perl-tk/PKGBUILD
@@ -0,0 +1,41 @@
+# $Id: PKGBUILD 148253 2012-01-30 18:49:20Z ibiru $
+# 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.030
+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=('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=('13275e85f99ee467a86d9598a437abff')
+
+build() {
+ cd "$srcdir/${_cpanname}-$pkgver"
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+#check() {
+# cd "$srcdir/${_cpanname}-$pkgver"
+# make test
+#}
+
+package() {
+ cd "$srcdir/${_cpanname}-$pkgver"
+ make install DESTDIR="$pkgdir"
+
+ # license
+ install -D -m644 pTk/license.terms \
+ "${pkgdir}/usr/share/licenses/${pkgname}/tk.license"
+ install -D -m644 pTk/Tix.license \
+ "${pkgdir}/usr/share/licenses/${pkgname}/tix.license"
+}
diff --git a/testing/php/PKGBUILD b/testing/php/PKGBUILD
index 48accc59c..3bace4127 100644
--- a/testing/php/PKGBUILD
+++ b/testing/php/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 146355 2012-01-09 18:53:02Z stephane $
+# $Id: PKGBUILD 148255 2012-01-30 18:49:23Z ibiru $
# Maintainer: Pierre Schmitz <pierre@archlinux.de>
pkgbase=php
@@ -21,9 +21,9 @@ pkgname=('php'
'php-sqlite'
'php-tidy'
'php-xsl')
-pkgver=5.3.8
-_suhosinver=5.3.7-0.9.10
-pkgrel=7
+pkgver=5.3.9
+_suhosinver=5.3.9-0.9.10
+pkgrel=2
arch=('i686' 'x86_64')
license=('PHP')
url='http://www.php.net'
@@ -36,13 +36,13 @@ source=("http://www.php.net/distributions/${pkgbase}-${pkgver}.tar.bz2"
"http://download.suhosin.org/suhosin-patch-${_suhosinver}.patch.gz.sig"
'php.ini.patch' 'apache.conf' 'rc.d.php-fpm' 'php-fpm.conf.in.patch'
'logrotate.d.php-fpm')
-md5sums=('704cd414a0565d905e1074ffdc1fadfb'
- '08582e502fed8221c6577042ca45ddb8'
- '5bf4473f658404aa9a97bf026ecef8e9'
- '65606c606df97a0760dfe5aaf9893afc'
+md5sums=('dd3288ed5c08cd61ac5bf619cb357521'
+ 'c099b3d7eac95018ababd41ded7f3066'
+ 'c15d18f846be1d69144a5d0056ee6506'
+ 'ffc338e8ce2a990f6f2a486355bbab65'
'dec2cbaad64e3abf4f0ec70e1de4e8e9'
'b01be5f816988fcee7e78225836e5e27'
- '09005dabd90c48ddd392b3dbf05f8a82'
+ '740ec5fe2ecfd9d7febd4081c90ec65b'
'07c4e412909ac65a44ec90e7a2c4bade')
build() {
diff --git a/testing/php/php-fpm.conf.in.patch b/testing/php/php-fpm.conf.in.patch
index b4dd32f96..b923edb38 100644
--- a/testing/php/php-fpm.conf.in.patch
+++ b/testing/php/php-fpm.conf.in.patch
@@ -1,5 +1,5 @@
---- sapi/fpm/php-fpm.conf.in 2011-07-04 23:22:56.000000000 +0200
-+++ sapi/fpm/php-fpm.conf.in 2011-08-12 16:56:23.686606725 +0200
+--- sapi/fpm/php-fpm.conf.in 2011-10-08 23:04:10.000000000 +0200
++++ sapi/fpm/php-fpm.conf.in 2012-01-11 10:50:14.905161442 +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)
@@ -17,8 +17,8 @@
+pid = run/php-fpm/php-fpm.pid
; Error log file
- ; Note: the default prefix is @EXPANDED_LOCALSTATEDIR@
-@@ -102,7 +102,8 @@
+ ; If it's set to "syslog", log is sent to syslogd instead of being written
+@@ -140,7 +140,8 @@
; specific port;
; '/path/to/unix/socket' - to listen on a unix socket.
; Note: This value is mandatory.
@@ -28,7 +28,7 @@
; Set listen(2) backlog. A value of '-1' means unlimited.
; Default Value: 128 (-1 on FreeBSD and OpenBSD)
-@@ -121,9 +122,9 @@
+@@ -151,9 +152,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
@@ -38,38 +38,10 @@
+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
-@@ -163,23 +164,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
-@@ -333,7 +334,7 @@
+ ; List of ipv4 addresses of FastCGI clients which are allowed to connect.
+ ; Equivalent to the FCGI_WEB_SERVER_ADDRS environment variable in the original
+@@ -442,7 +443,7 @@
; Chdir to this directory at the start.
; Note: relative path can be used.
; Default Value: current directory or / when chroot
diff --git a/testing/php/php.ini.patch b/testing/php/php.ini.patch
index 46c842921..3dc5b6560 100644
--- a/testing/php/php.ini.patch
+++ b/testing/php/php.ini.patch
@@ -1,5 +1,5 @@
---- php.ini-production 2011-02-09 01:25:44.000000000 +0100
-+++ php.ini-production 2011-03-19 11:11:44.496987763 +0100
+--- php.ini-production 2011-12-15 11:31:02.000000000 +0100
++++ php.ini-production 2012-01-11 10:43:02.069936043 +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.
@@ -9,7 +9,7 @@
; 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 @@
+@@ -793,7 +793,7 @@
;;;;;;;;;;;;;;;;;;;;;;;;;
; UNIX: "/path1:/path2"
@@ -18,7 +18,7 @@
;
; Windows: "\path1;\path2"
;include_path = ".;c:\php\includes"
-@@ -804,7 +804,7 @@
+@@ -816,7 +816,7 @@
; Directory in which the loadable extensions (modules) reside.
; http://php.net/extension-dir
@@ -27,7 +27,7 @@
; On windows:
; extension_dir = "ext"
-@@ -938,53 +938,49 @@
+@@ -950,53 +950,49 @@
; If you only provide the name of the extension, PHP will look for it in its
; default extension directory.
;
@@ -52,7 +52,7 @@
-;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_oci8_11g.dll ; Use with Oracle 11gR2 Instant Client
-;extension=php_openssl.dll
-;extension=php_pdo_firebird.dll
-;extension=php_pdo_mssql.dll
diff --git a/testing/pilot-link/PKGBUILD b/testing/pilot-link/PKGBUILD
new file mode 100644
index 000000000..83f0d984d
--- /dev/null
+++ b/testing/pilot-link/PKGBUILD
@@ -0,0 +1,32 @@
+# $Id: PKGBUILD 148257 2012-01-30 18:49:26Z ibiru $
+# 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=3
+pkgdesc="A suite of tools for connecting to PalmOS handheld devices"
+arch=(i686 x86_64)
+license=('GPL' 'LGPL')
+depends=('readline>=6.0' 'libpng>=1.5.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/testing/pilot-link/pilot-link-png14.patch b/testing/pilot-link/pilot-link-png14.patch
new file mode 100644
index 000000000..9d753332e
--- /dev/null
+++ b/testing/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/testing/plotutils/PKGBUILD b/testing/plotutils/PKGBUILD
new file mode 100644
index 000000000..310bedb36
--- /dev/null
+++ b/testing/plotutils/PKGBUILD
@@ -0,0 +1,32 @@
+# $Id: PKGBUILD 148259 2012-01-30 18:49:28Z ibiru $
+# Maintainer: damir <damir@archlinux.org>
+# Packager: Maksim Sipos (maxsipos at gmail dot com)
+
+pkgname=plotutils
+pkgver=2.6
+pkgrel=2
+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 plotutils-2.6-libpng-1.5.patch)
+sha1sums=('7921301d9dfe8991e3df2829bd733df6b2a70838'
+ '426f6ee04186af5059ab54322efaf0a6a976682b')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -p0 -i ../plotutils-2.6-libpng-1.5.patch
+ ./configure --prefix=/usr \
+ --with-gnu-ld \
+ --with-x \
+ --enable-libplotter
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/testing/plotutils/plotutils-2.6-libpng-1.5.patch b/testing/plotutils/plotutils-2.6-libpng-1.5.patch
new file mode 100644
index 000000000..b86d9f457
--- /dev/null
+++ b/testing/plotutils/plotutils-2.6-libpng-1.5.patch
@@ -0,0 +1,31 @@
+fix building with libpng-1.5
+
+--- libplot/z_write.c
++++ libplot/z_write.c
+@@ -164,7 +164,7 @@
+ }
+
+ /* cleanup after libpng errors (error handler does a longjmp) */
+- if (setjmp (png_ptr->jmpbuf))
++ if (png_jmpbuf (png_ptr))
+ {
+ png_destroy_write_struct (&png_ptr, (png_info **)NULL);
+ return -1;
+@@ -444,7 +444,7 @@
+ #endif
+ }
+
+- longjmp (png_ptr->jmpbuf, 1);
++ longjmp (png_jmpbuf (png_ptr), 1);
+ }
+
+ static void
+@@ -515,7 +515,7 @@
+ #endif
+ }
+
+- longjmp (png_ptr->jmpbuf, 1);
++ longjmp (png_jmpbuf (png_ptr), 1);
+ }
+
+ static void
diff --git a/testing/plotutils/plotutils.install b/testing/plotutils/plotutils.install
new file mode 100644
index 000000000..d3d033e0c
--- /dev/null
+++ b/testing/plotutils/plotutils.install
@@ -0,0 +1,15 @@
+infodir=usr/share/info
+
+post_install() {
+ [[ -x usr/bin/install-info ]] || return 0
+ install-info $infodir/plotutils.info.gz $infodir/dir 2> /dev/null
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ [[ -x usr/bin/install-info ]] || return 0
+ install-info --delete $infodir/plotutils.info.gz $infodir/dir 2> /dev/null
+}
diff --git a/testing/poppler/PKGBUILD b/testing/poppler/PKGBUILD
new file mode 100644
index 000000000..ed3c56fbe
--- /dev/null
+++ b/testing/poppler/PKGBUILD
@@ -0,0 +1,83 @@
+# $Id: PKGBUILD 148261 2012-01-30 18:49:31Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgbase=poppler
+pkgname=('poppler' 'poppler-glib' 'poppler-qt')
+pkgver=0.18.3
+pkgrel=2
+arch=(i686 x86_64)
+license=('GPL')
+makedepends=('libjpeg' 'gcc-libs' 'cairo' 'fontconfig' 'openjpeg' 'gtk2' 'qt' 'pkgconfig' 'lcms' 'gobject-introspection')
+options=('!libtool' '!emptydirs')
+url="http://poppler.freedesktop.org/"
+_testtag=0d2bfd4af4c76a3bac27ccaff793d9129df7b57a
+source=(http://poppler.freedesktop.org/${pkgbase}-${pkgver}.tar.gz
+ http://cgit.freedesktop.org/poppler/test/snapshot/test-${_testtag}.tar.bz2
+ git-fixes.patch)
+md5sums=('d70d2d63d8acd29c97185f7e5f09c9b4'
+ '9dc64c254a31e570507bdd4ad4ba629a'
+ 'af56b7b1b24a08f7498a0c7f5e862b93')
+
+build() {
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ sed -i -e '/AC_PATH_XTRA/d' configure.ac
+ #patch -Np1 -i "${srcdir}/git-fixes.patch"
+
+ autoreconf -fi
+
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-static \
+ --enable-cairo-output \
+ --enable-xpdf-headers \
+ --enable-libjpeg --enable-zlib \
+ --enable-poppler-qt4 \
+ --enable-poppler-glib
+ make
+}
+
+check() {
+ cd "${srcdir}"
+ ln -sf test-${_testtag} test
+ cd ${pkgbase}-${pkgver}
+ LANG=en_US.UTF8 make check
+}
+
+package_poppler() {
+ pkgdesc="PDF rendering library based on xpdf 3.0"
+ depends=('libjpeg' 'gcc-libs' 'cairo' 'fontconfig' 'openjpeg' 'lcms' 'poppler-data')
+ conflicts=("poppler-qt3<${pkgver}")
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ sed -e 's/^glib_subdir =.*/glib_subdir =/' \
+ -e 's/^qt4_subdir =.*/qt4_subdir =/' -i Makefile
+ make DESTDIR="${pkgdir}" install
+
+ rm -f "${pkgdir}"/usr/lib/pkgconfig/poppler-{glib,qt4}.pc
+}
+
+package_poppler-glib() {
+ pkgdesc="Poppler glib bindings"
+ depends=("poppler=${pkgver}" 'glib2')
+
+ cd "${srcdir}/${pkgbase}-${pkgver}/poppler"
+ make DESTDIR="${pkgdir}" install-libLTLIBRARIES
+ cd "${srcdir}/${pkgbase}-${pkgver}/glib"
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/lib/pkgconfig"
+ install -m644 ../poppler-glib.pc "${pkgdir}/usr/lib/pkgconfig/"
+ rm -f "${pkgdir}"/usr/lib/libpoppler.*
+ rm -f "${pkgdir}/usr/bin/poppler-glib-demo"
+}
+
+package_poppler-qt() {
+ pkgdesc="Poppler Qt bindings"
+ depends=("poppler=${pkgver}" 'qt')
+
+ cd "${srcdir}/${pkgbase}-${pkgver}/poppler"
+ make DESTDIR="${pkgdir}" install-libLTLIBRARIES
+ cd "${srcdir}/${pkgbase}-${pkgver}/qt4"
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/lib/pkgconfig"
+ install -m644 ../poppler-qt4.pc "${pkgdir}/usr/lib/pkgconfig/"
+ rm -f "${pkgdir}"/usr/lib/libpoppler.*
+}
diff --git a/testing/poppler/git-fixes.patch b/testing/poppler/git-fixes.patch
new file mode 100644
index 000000000..24a66b84f
--- /dev/null
+++ b/testing/poppler/git-fixes.patch
@@ -0,0 +1,110 @@
+From 74f4299e8f9e2d204979479f6579dd784db678a4 Mon Sep 17 00:00:00 2001
+From: Albert Astals Cid <aacid@kde.org>
+Date: Sun, 04 Dec 2011 16:29:45 +0000
+Subject: Do not fail if we are trying to save a file with Encrypt but that we have not modified at all
+
+Fixes KDE bug #288045
+(cherry picked from commit 63c942a45227ef28fb94ef4765171d9812fffafa)
+---
+diff --git a/poppler/PDFDoc.cc b/poppler/PDFDoc.cc
+index 01d2759..2758206 100644
+--- a/poppler/PDFDoc.cc
++++ b/poppler/PDFDoc.cc
+@@ -707,35 +707,44 @@ int PDFDoc::saveAs(GooString *name, PDFWriteMode mode) {
+
+ int PDFDoc::saveAs(OutStream *outStr, PDFWriteMode mode) {
+
+- // we don't support files with Encrypt at the moment
++ // find if we have updated objects
++ GBool updated = gFalse;
++ for(int i=0; i<xref->getNumObjects(); i++) {
++ if (xref->getEntry(i)->updated) {
++ updated = gTrue;
++ break;
++ }
++ }
++
++ // we don't support rewriting files with Encrypt at the moment
+ Object obj;
+ xref->getTrailerDict()->getDict()->lookupNF("Encrypt", &obj);
+ if (!obj.isNull())
+ {
+ obj.free();
+- return errEncrypted;
++ if (!updated && mode == writeStandard) {
++ // simply copy the original file
++ saveWithoutChangesAs (outStr);
++ } else {
++ return errEncrypted;
++ }
+ }
+- obj.free();
++ else
++ {
++ obj.free();
+
+- if (mode == writeForceRewrite) {
+- saveCompleteRewrite(outStr);
+- } else if (mode == writeForceIncremental) {
+- saveIncrementalUpdate(outStr);
+- } else { // let poppler decide
+- // find if we have updated objects
+- GBool updated = gFalse;
+- for(int i=0; i<xref->getNumObjects(); i++) {
+- if (xref->getEntry(i)->updated) {
+- updated = gTrue;
+- break;
++ if (mode == writeForceRewrite) {
++ saveCompleteRewrite(outStr);
++ } else if (mode == writeForceIncremental) {
++ saveIncrementalUpdate(outStr);
++ } else { // let poppler decide
++ if(updated) {
++ saveIncrementalUpdate(outStr);
++ } else {
++ // simply copy the original file
++ saveWithoutChangesAs (outStr);
+ }
+ }
+- if(updated) {
+- saveIncrementalUpdate(outStr);
+- } else {
+- // simply copy the original file
+- saveWithoutChangesAs (outStr);
+- }
+ }
+
+ return errNone;
+--
+cgit v0.9.0.2-2-gbebe
+From 03544e2f602319f0b381f5f357e14cc2cc77d2c1 Mon Sep 17 00:00:00 2001
+From: Albert Astals Cid <aacid@kde.org>
+Date: Tue, 06 Dec 2011 22:21:15 +0000
+Subject: include strings.h as we use memcpy
+
+Fixes bug 43558
+(cherry picked from commit 388d72ac27ae98fe3a1ebd21760f2b0fa0249a9b)
+---
+diff --git a/goo/PNGWriter.cc b/goo/PNGWriter.cc
+index f88c3a7..1fb8cab 100644
+--- a/goo/PNGWriter.cc
++++ b/goo/PNGWriter.cc
+@@ -6,7 +6,7 @@
+ //
+ // Copyright (C) 2009 Warren Toomey <wkt@tuhs.org>
+ // Copyright (C) 2009 Shen Liang <shenzhuxi@gmail.com>
+-// Copyright (C) 2009 Albert Astals Cid <aacid@kde.org>
++// Copyright (C) 2009, 2011 Albert Astals Cid <aacid@kde.org>
+ // Copyright (C) 2009 Stefan Thomas <thomas@eload24.com>
+ // Copyright (C) 2010, 2011 Adrian Johnson <ajohnson@redneon.com>
+ // Copyright (C) 2011 Thomas Klausner <wiz@danbala.tuwien.ac.at>
+@@ -19,6 +19,7 @@
+
+ #include <zlib.h>
+ #include <stdlib.h>
++#include <string.h>
+
+ #include "poppler/Error.h"
+ #include "goo/gmem.h"
+--
+cgit v0.9.0.2-2-gbebe
diff --git a/testing/pygtk/PKGBUILD b/testing/pygtk/PKGBUILD
new file mode 100644
index 000000000..aae368ff1
--- /dev/null
+++ b/testing/pygtk/PKGBUILD
@@ -0,0 +1,37 @@
+# $Id: PKGBUILD 148265 2012-01-30 18:49:37Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Sarah Hay <sarahhay@mb.sympatico.ca>
+
+pkgname=pygtk
+pkgver=2.24.0
+pkgrel=3
+pkgdesc="Python bindings for the GTK widget set"
+arch=('i686' 'x86_64')
+license=('LGPL')
+depends=('libglade' 'python2-cairo' 'pygobject')
+makedepends=('python2-numpy' 'pygobject2-devel')
+optdepends=('python2-numpy')
+options=('!libtool')
+url="http://www.pygtk.org/"
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/${pkgver%.*}/${pkgname}-${pkgver}.tar.bz2
+ python27.patch)
+sha256sums=('cd1c1ea265bd63ff669e92a2d3c2a88eb26bcd9e5363e0f82c896e649f206912'
+ '39a30456cba055a452bb55c74ef1ff2f5f7bfaad22855b4dd569ab009b56b682')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ #https://bugzilla.gnome.org/show_bug.cgi?id=623965
+ patch -Np1 -i "${srcdir}/python27.patch"
+
+ PYTHON=/usr/bin/python2 ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+ install -m644 gtk/gtk-extrafuncs.defs "${pkgdir}/usr/share/pygtk/2.0/defs/"
+
+ sed -i -e 's#env python$#env python2#' "${pkgdir}"/usr/lib/pygtk/2.0/{,demos/}*.py
+}
diff --git a/testing/pygtk/python27.patch b/testing/pygtk/python27.patch
new file mode 100644
index 000000000..9bbe2b5ae
--- /dev/null
+++ b/testing/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/testing/pygtksourceview2/PKGBUILD b/testing/pygtksourceview2/PKGBUILD
new file mode 100644
index 000000000..15feea29d
--- /dev/null
+++ b/testing/pygtksourceview2/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 148267 2012-01-30 18:49:39Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=pygtksourceview2
+pkgver=2.10.1
+pkgrel=4
+pkgdesc="Python bindings for gtksourceview2"
+arch=(i686 x86_64)
+license=('GPL')
+depends=('gtksourceview2>=2.10.0' 'pygtk>=2.17.0')
+makedepends=('intltool' 'pkg-config')
+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
+}
+
+package() {
+ cd "${srcdir}/pygtksourceview-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/testing/python-notify/PKGBUILD b/testing/python-notify/PKGBUILD
new file mode 100644
index 000000000..ea687e23a
--- /dev/null
+++ b/testing/python-notify/PKGBUILD
@@ -0,0 +1,43 @@
+# $Id: PKGBUILD 148269 2012-01-30 18:49:41Z 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=11
+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/testing/python-notify/libnotify07.patch b/testing/python-notify/libnotify07.patch
new file mode 100644
index 000000000..289573d50
--- /dev/null
+++ b/testing/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/testing/python-notify/notify-python-0.1.1-fix-GTK-symbols.patch b/testing/python-notify/notify-python-0.1.1-fix-GTK-symbols.patch
new file mode 100644
index 000000000..f985c0136
--- /dev/null
+++ b/testing/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/testing/python-pygame/ChangeLog b/testing/python-pygame/ChangeLog
new file mode 100644
index 000000000..566be3f65
--- /dev/null
+++ b/testing/python-pygame/ChangeLog
@@ -0,0 +1,34 @@
+2012-01-24 Angel Velasquez <angvp@archlinux.org>
+
+ * Rebuilt against libpng 1.5
+
+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/testing/python-pygame/PKGBUILD b/testing/python-pygame/PKGBUILD
new file mode 100644
index 000000000..f197e6655
--- /dev/null
+++ b/testing/python-pygame/PKGBUILD
@@ -0,0 +1,40 @@
+# $Id: PKGBUILD 148271 2012-01-30 18:49:44Z ibiru $
+# Maintainer: Angel Velasquez <angvp@archlinux.org>
+# Contributor: Douglas Soares de Andrade <douglas@archlinux.org>
+# Contributor: Eric Belanger <eric@archlinux.org>
+# Contributor: john(?)
+# Contributor: Daniel J Griffiths <ghost1227@archlinux.us>
+pkgname=python-pygame
+pkgver=1.9.1
+pkgrel=4
+pkgdesc="Python game library"
+arch=('i686' 'x86_64')
+url="http://www.pygame.org/"
+license=('LGPL')
+depends=('sdl_mixer' 'libvorbis' 'sdl_ttf' 'sdl_image' 'smpeg')
+makedepends=('python2' 'portmidi')
+replaces=('pygame')
+provides=('pygame')
+changelog=ChangeLog
+source=(http://pygame.org/ftp/pygame-${pkgver}release.tar.gz 'config.patch'
+'pygame-v4l.patch')
+md5sums=('1c4cdc708d17c8250a2d78ef997222fc'
+ 'aaa668f3cd710d8604114501ea6a6f48'
+ '9915b63865c16519e80007909beed876')
+
+build() {
+ cd "${srcdir}/pygame-${pkgver}release"
+ patch -Np0 -i "${srcdir}/config.patch"
+ patch -Np1 -i "${srcdir}/pygame-v4l.patch"
+}
+
+package() {
+ cd "${srcdir}/pygame-${pkgver}release"
+ python2 config.py -auto
+ 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/testing/python-pygame/config.patch b/testing/python-pygame/config.patch
new file mode 100644
index 000000000..b3dab162c
--- /dev/null
+++ b/testing/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/testing/python-pygame/pygame-v4l.patch b/testing/python-pygame/pygame-v4l.patch
new file mode 100644
index 000000000..3b5a2b9d2
--- /dev/null
+++ b/testing/python-pygame/pygame-v4l.patch
@@ -0,0 +1,88 @@
+diff -crB pygame-1.9.1release/Setup.in pygame-1.9.1release-v4lpatch//Setup.in
+*** pygame-1.9.1release/Setup.in Thu Jul 2 06:41:56 2009
+--- pygame-1.9.1release-v4lpatch//Setup.in Thu Mar 24 17:31:22 2011
+***************
+*** 34,40 ****
+ _numericsndarray src/_numericsndarray.c $(SDL) $(MIXER) $(DEBUG)
+ movie src/movie.c $(SDL) $(SMPEG) $(DEBUG)
+ scrap src/scrap.c $(SDL) $(SCRAP) $(DEBUG)
+! _camera src/_camera.c src/camera_v4l2.c src/camera_v4l.c $(SDL) $(DEBUG)
+ pypm src/pypm.c $(SDL) $(PORTMIDI) $(PORTTIME) $(DEBUG)
+
+ GFX = src/SDL_gfx/SDL_gfxPrimitives.c
+--- 34,40 ----
+ _numericsndarray src/_numericsndarray.c $(SDL) $(MIXER) $(DEBUG)
+ movie src/movie.c $(SDL) $(SMPEG) $(DEBUG)
+ scrap src/scrap.c $(SDL) $(SCRAP) $(DEBUG)
+! _camera src/_camera.c src/camera_v4l2.c $(SDL) $(DEBUG)
+ pypm src/pypm.c $(SDL) $(PORTMIDI) $(PORTTIME) $(DEBUG)
+
+ GFX = src/SDL_gfx/SDL_gfxPrimitives.c
+diff -crB pygame-1.9.1release/src/_camera.c pygame-1.9.1release-v4lpatch//src/_camera.c
+*** pygame-1.9.1release/src/_camera.c Sun Mar 15 20:30:41 2009
+--- pygame-1.9.1release-v4lpatch//src/_camera.c Thu Mar 24 16:58:18 2011
+***************
+*** 160,179 ****
+ {
+ #if defined(__unix__)
+ if (v4l2_open_device(self) == 0) {
+! if (v4l_open_device(self) == 0) {
+! v4l2_close_device(self);
+! return NULL;
+! } else {
+! self->camera_type = CAM_V4L;
+! if (v4l_init_device(self) == 0) {
+! v4l2_close_device(self);
+! return NULL;
+! }
+! if (v4l_start_capturing(self) == 0) {
+! v4l2_close_device(self);
+! return NULL;
+! }
+! }
+ } else {
+ self->camera_type = CAM_V4L2;
+ if (v4l2_init_device(self) == 0) {
+--- 160,167 ----
+ {
+ #if defined(__unix__)
+ if (v4l2_open_device(self) == 0) {
+! v4l2_close_device(self);
+! return NULL;
+ } else {
+ self->camera_type = CAM_V4L2;
+ if (v4l2_init_device(self) == 0) {
+diff -crB pygame-1.9.1release/src/camera.h pygame-1.9.1release-v4lpatch//src/camera.h
+*** pygame-1.9.1release/src/camera.h Fri Oct 10 04:37:10 2008
+--- pygame-1.9.1release-v4lpatch//src/camera.h Thu Mar 24 16:44:32 2011
+***************
+*** 39,45 ****
+
+ #include <asm/types.h> /* for videodev2.h */
+
+- #include <linux/videodev.h>
+ #include <linux/videodev2.h>
+ #endif
+
+--- 39,44 ----
+***************
+*** 51,57 ****
+ #define RGB_OUT 1
+ #define YUV_OUT 2
+ #define HSV_OUT 4
+- #define CAM_V4L 1
+ #define CAM_V4L2 2
+
+ struct buffer
+--- 50,55 ----
+***************
+*** 111,118 ****
+ int v4l2_close_device (PyCameraObject* self);
+ int v4l2_open_device (PyCameraObject* self);
+
+- /* internal functions specific to v4l */
+- int v4l_open_device (PyCameraObject* self);
+- int v4l_init_device(PyCameraObject* self);
+- int v4l_start_capturing(PyCameraObject* self);
+ #endif
+--- 109,112 ----
diff --git a/testing/pywebkitgtk/PKGBUILD b/testing/pywebkitgtk/PKGBUILD
new file mode 100644
index 000000000..6c2dd9d47
--- /dev/null
+++ b/testing/pywebkitgtk/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 148273 2012-01-30 18:49:46Z ibiru $
+# Maintainer: Angel Velasquez <angvp@archlinux.org>
+# Contributor: kasa <biuta.jr@gmail.com>
+# Contributor: Daniel J Griffiths <ghost1227@archlinux.us>
+
+pkgname=pywebkitgtk
+pkgver=1.1.8
+pkgrel=2
+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=('158335385354ba38090c9324b37bf225')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/testing/qemu-kvm/65-kvm.rules b/testing/qemu-kvm/65-kvm.rules
new file mode 100644
index 000000000..c2f7317aa
--- /dev/null
+++ b/testing/qemu-kvm/65-kvm.rules
@@ -0,0 +1 @@
+KERNEL=="kvm", GROUP="kvm", MODE="0660"
diff --git a/testing/qemu-kvm/PKGBUILD b/testing/qemu-kvm/PKGBUILD
new file mode 100644
index 000000000..905fec9a0
--- /dev/null
+++ b/testing/qemu-kvm/PKGBUILD
@@ -0,0 +1,73 @@
+# $Id: PKGBUILD 148277 2012-01-30 18:49:51Z ibiru $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+pkgname=qemu-kvm
+pkgver=1.0
+pkgrel=3
+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' 'nss' 'glib2' 'gnutls>=2.4.1' 'bluez' 'vde2' 'util-linux-ng' 'libpulse')
+makedepends=('git' 'iasl' 'texi2html' 'perl' 'python2')
+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)
+options=(!strip)
+
+build()
+{
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ # fix esound building
+ ./configure --prefix=/usr \
+ --python=/usr/bin/python2 \
+ --sysconfdir=/etc \
+ --audio-drv-list=alsa,sdl,oss,pa \
+ --audio-card-list=ac97,sb16,es1370,hda \
+ --enable-docs
+ make
+
+ # Use latest seabios version
+ # https://bugs.archlinux.org/task/27616
+ cd "${srcdir}/"
+ git clone git://git.seabios.org/seabios.git
+ cd seabios
+ find 'tools/' 'contrib' -type f | xargs sed -i 's@^#!.*python$@#!/usr/bin/python2@'
+ make clean
+ make
+}
+
+package()
+{
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+
+ # Use latest seabios version
+ # https://bugs.archlinux.org/task/27616
+ cp "${srcdir}/seabios/out/bios.bin" "${pkgdir}/usr/share/qemu/bios.bin"
+
+ # 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"
+ # strip scripts directory
+ find "${pkgdir}/usr/bin" -type f -perm -u+w 2>/dev/null | while read binary ; do
+ case "$(file -bi "$binary")" in
+ *application/x-executable*) # Binaries
+ /usr/bin/strip $STRIP_BINARIES "$binary";;
+ esac
+ done
+}
+md5sums=('00a825db46a70ba8ef9fc95da9cc7c1e'
+ 'b316a066d2f1bb57d8f5b7ea1d0d1caf')
diff --git a/testing/qemu-kvm/qemu-kvm.install b/testing/qemu-kvm/qemu-kvm.install
new file mode 100644
index 000000000..84aa773b9
--- /dev/null
+++ b/testing/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/testing/qemu/65-kvm.rules b/testing/qemu/65-kvm.rules
new file mode 100644
index 000000000..c2f7317aa
--- /dev/null
+++ b/testing/qemu/65-kvm.rules
@@ -0,0 +1 @@
+KERNEL=="kvm", GROUP="kvm", MODE="0660"
diff --git a/testing/qemu/PKGBUILD b/testing/qemu/PKGBUILD
new file mode 100644
index 000000000..9ca9a9fe6
--- /dev/null
+++ b/testing/qemu/PKGBUILD
@@ -0,0 +1,56 @@
+# $Id: PKGBUILD 148275 2012-01-30 18:49:48Z ibiru $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+pkgname=qemu
+pkgver=1.0
+pkgrel=3
+pkgdesc="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=('iasl' 'git' 'texi2html' 'perl' 'python2')
+depends=('libjpeg' 'libpng' 'sdl' 'alsa-lib' 'nss' 'glib2' 'gnutls>=2.4.1' 'bluez' 'vde2' 'util-linux-ng' 'curl' 'libsasl' 'libgl' 'libpulse')
+backup=('etc/qemu/target-x86_64.conf')
+install=qemu.install
+source=(http://wiki.qemu.org/download/${pkgname}-${pkgver}.tar.gz
+ 65-kvm.rules)
+options=(!strip)
+
+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,pa \
+ --python=/usr/bin/python2 \
+ --audio-card-list=ac97,sb16,es1370,hda \
+ --enable-docs
+ make
+ # Use latest seabios version
+ # https://bugs.archlinux.org/task/27616
+ cd "${srcdir}/"
+ git clone git://git.seabios.org/seabios.git
+ cd seabios
+ find 'tools/' 'contrib' -type f | xargs sed -i 's@^#!.*python$@#!/usr/bin/python2@'
+ make clean
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+ # Use latest seabios version
+ # https://bugs.archlinux.org/task/27616
+ cp "${srcdir}/seabios/out/bios.bin" "${pkgdir}/usr/share/qemu/bios.bin"
+
+ install -D -m644 "${srcdir}/65-kvm.rules" \
+ "${pkgdir}/lib/udev/rules.d/65-kvm.rules"
+ # strip scripts directory
+ find "${pkgdir}/usr/src/linux-${_kernver}/scripts" -type f -perm -u+w 2>/dev/null | while read binary ; do
+ case "$(file -bi "$binary")" in
+ *application/x-executable*) # Binaries
+ /usr/bin/strip $STRIP_BINARIES "$binary";;
+ esac
+ done
+
+}
+md5sums=('a64b36067a191451323b0d34ebb44954'
+ 'b316a066d2f1bb57d8f5b7ea1d0d1caf')
diff --git a/testing/qemu/qemu.install b/testing/qemu/qemu.install
new file mode 100644
index 000000000..e16ac027c
--- /dev/null
+++ b/testing/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/testing/qiv/PKGBUILD b/testing/qiv/PKGBUILD
new file mode 100644
index 000000000..73bd20bb9
--- /dev/null
+++ b/testing/qiv/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 148279 2012-01-30 18:49:54Z ibiru $
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+# Maintainer: Paul Mattal <paul@archlinux.org>
+
+pkgname=qiv
+pkgver=2.2.4
+pkgrel=2
+pkgdesc="Quick Image Viewer (qiv) is a very small and fast GDK/Imlib image viewer"
+arch=('i686' 'x86_64')
+url="http://spiegl.de/qiv/"
+license=('GPL2')
+depends=('file' 'gtk2' 'imlib2')
+source=(http://spiegl.de/qiv/download/$pkgname-$pkgver.tgz)
+md5sums=('1425f89c90f9c045858fccf24d894c97')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ install -D -m 0755 qiv "$pkgdir/usr/bin/qiv"
+ install -D -m 0644 qiv.1 "$pkgdir/usr/share/man/man1/qiv.1"
+}
diff --git a/testing/qrencode/PKGBUILD b/testing/qrencode/PKGBUILD
new file mode 100644
index 000000000..853ce83e3
--- /dev/null
+++ b/testing/qrencode/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 148281 2012-01-30 18:49:56Z ibiru $
+# Maintainer: Florian Pritz< flo@xinu.at>
+# Contributor: Dany Martineau <dany.luc.martineau@gmail.com>
+
+pkgname=qrencode
+pkgver=3.2.0
+pkgrel=2
+pkgdesc="C library for encoding data in a QR Code symbol."
+arch=(i686 x86_64)
+depends=('libpng>=1.5.0')
+makedepends=(sdl)
+url="http://megaui.net/fukuchi/works/qrencode/index.en.html"
+license=('GPL')
+options=(!libtool)
+source=(http://megaui.net/fukuchi/works/${pkgname}/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('7e90615eb314abcd2eb2eab5c8155b97')
+
+build() {
+ cd "${srcdir}/$pkgname-$pkgver"
+# autoreconf
+ ./autogen.sh
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}/$pkgname-$pkgver"
+
+ make prefix="$pkgdir/usr" install
+}
diff --git a/testing/qt/PKGBUILD b/testing/qt/PKGBUILD
new file mode 100644
index 000000000..f9633d4fb
--- /dev/null
+++ b/testing/qt/PKGBUILD
@@ -0,0 +1,131 @@
+# $Id: PKGBUILD 148390 2012-01-30 23:09:20Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Pierre Schmitz <pierre@archlinux.de>
+
+pkgbase=qt
+pkgname=('qt' 'qt-private-headers')
+pkgver=4.8.0
+pkgrel=4
+arch=('i686' 'x86_64')
+url='http://qt-project.org/'
+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="${pkgbase}-everywhere-opensource-src-${pkgver}"
+source=("http://get.qt.nokia.com/qt/source/${_pkgfqn}.tar.gz"
+ 'assistant.desktop' 'designer.desktop' 'linguist.desktop'
+ 'qtconfig.desktop'
+ 'fix-qurl.patch')
+md5sums=('e8a5fdbeba2927c948d9f477a6abe904'
+ 'fc211414130ab2764132e7370f8e5caa'
+ '85179f5e0437514f8639957e1d8baf62'
+ 'f11852b97583610f3dbb669ebc3e21bc'
+ '6b771c8a81dd90b45e8a79afa0e5bbfd'
+ '7bc255a36733d0fbc80c1902ade4beca')
+
+build() {
+ cd "${srcdir}"/${_pkgfqn}
+
+ # (FS#27757)
+ patch -p1 -i "${srcdir}"/fix-qurl.patch
+
+ export QT4DIR="${srcdir}"/${_pkgfqn}
+ export LD_LIBRARY_PATH=${QT4DIR}/lib:${LD_LIBRARY_PATH}
+
+ sed -i "s|-O2|${CXXFLAGS}|" mkspecs/common/{g++,gcc}-base.conf
+ sed -i "/^QMAKE_LFLAGS_RPATH/s| -Wl,-rpath,||g" mkspecs/common/gcc-base-unix.conf
+ sed -i "/^QMAKE_LFLAGS\s/s|+=|+= ${LDFLAGS}|g" mkspecs/common/gcc-base.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 \
+ -plugin-sql-{psql,mysql,sqlite,odbc} \
+ -system-sqlite \
+ -no-phonon \
+ -no-phonon-backend \
+ -no-webkit \
+ -graphicssystem raster \
+ -openssl-linked \
+ -nomake demos \
+ -nomake examples \
+ -nomake docs \
+ -silent \
+ -no-rpath \
+ -optimized-qmake \
+ -reduce-relocations \
+ -dbus-linked \
+ -no-openvg
+ 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/{QtCore,QtDeclarative,QtGui,QtScript}
+ install -d "${pkgdir}"/usr/src/{corelib,declarative,gui,script}
+
+ for i in QtCore QtDeclarative QtGui QtScript; do
+ cp -r "${srcdir}"/${_pkgfqn}/include/${i}/private/ \
+ "${pkgdir}"/usr/include/${i}/
+ done
+
+ for i in corelib declarative gui script; do
+ cp -r "${srcdir}"/${_pkgfqn}/src/${i} "${pkgdir}"/usr/src/
+ done
+}
diff --git a/testing/qt/assistant.desktop b/testing/qt/assistant.desktop
new file mode 100644
index 000000000..a9e98c44b
--- /dev/null
+++ b/testing/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/testing/qt/designer.desktop b/testing/qt/designer.desktop
new file mode 100644
index 000000000..9b7b6e9aa
--- /dev/null
+++ b/testing/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/testing/qt/fix-qurl.patch b/testing/qt/fix-qurl.patch
new file mode 100644
index 000000000..1c666dba4
--- /dev/null
+++ b/testing/qt/fix-qurl.patch
@@ -0,0 +1,13 @@
+diff -up qt-everywhere-opensource-src-4.8.0/src/corelib/io/qurl.cpp.toLocalFile qt-everywhere-opensource-src-4.8.0/src/corelib/io/qurl.cpp
+--- qt-everywhere-opensource-src-4.8.0/src/corelib/io/qurl.cpp.toLocalFile 2011-10-03 22:44:32.000000000 -0500
++++ qt-everywhere-opensource-src-4.8.0/src/corelib/io/qurl.cpp 2011-10-27 12:58:35.706815049 -0500
+@@ -6158,7 +6158,8 @@ QUrl QUrl::fromLocalFile(const QString &
+ QString QUrl::toLocalFile() const
+ {
+ // the call to isLocalFile() also ensures that we're parsed
+- if (!isLocalFile())
++ // Treat URLs with no scheme as local for backward compatibility
++ if (!isLocalFile() && (!d || !d->scheme.isEmpty()))
+ return QString();
+
+ QString tmp;
diff --git a/testing/qt/linguist.desktop b/testing/qt/linguist.desktop
new file mode 100644
index 000000000..8cbe86599
--- /dev/null
+++ b/testing/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/testing/qt/qt.install b/testing/qt/qt.install
new file mode 100644
index 000000000..5495fb1b5
--- /dev/null
+++ b/testing/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/testing/qt/qtconfig.desktop b/testing/qt/qtconfig.desktop
new file mode 100644
index 000000000..46dcf9e3d
--- /dev/null
+++ b/testing/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/testing/qt3/PKGBUILD b/testing/qt3/PKGBUILD
new file mode 100644
index 000000000..8a1ff9aba
--- /dev/null
+++ b/testing/qt3/PKGBUILD
@@ -0,0 +1,133 @@
+# $Id: PKGBUILD 148285 2012-01-30 18:50:04Z ibiru $
+# Maintainer: Eric Bélanger <eric@archlinux.org>
+
+pkgname=qt3
+pkgver=3.3.8
+pkgrel=22
+pkgdesc="The QT3 gui toolkit"
+arch=('i686' 'x86_64')
+url="http://www.trolltech.com/products/qt/index.html"
+license=('GPL')
+depends=('libpng' 'libxmu' 'libxcursor' 'libxinerama' 'mesa' 'libxft'
+ 'libxrandr' 'libmng')
+makedepends=('mysql' 'postgresql' 'unixodbc' 'sqlite3')
+optdepends=('libmysqlclient' 'postgresql-libs' 'unixodbc')
+options=('!libtool')
+install=qt.install
+source=(ftp://ftp.trolltech.com/qt/source/qt-x11-free-${pkgver}.tar.bz2
+ qt.profile qt3-png15.patch 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 gcc-4.6.patch)
+sha1sums=('91b192cb8e80679607d24ae35d6e20ed68d149d7'
+ 'd2e257a9011208b2cb81b9cf47915b9a2f9dab83'
+ '3d19510c46016a1a211d97bf8f82b01498b1b33c'
+ '9cb2e5bec782069692ee337cfa171539d9d73753'
+ '116afa0e737bdf27ea27f9b3653aeb56db9ec151'
+ 'ca5ecb29c7f1c826d48703339a3371038e306bb7'
+ 'd928ff55adb52c4bab2fb268df022651551cd70c'
+ 'bb6aad81cce143c23ff7840b1d79f6b2007a0c04'
+ '40c7b8f06a21f809ddeb8b5560e9da63ccac6a17'
+ '1346320614f6f86fbeb10b9fbad721dea29f5b61'
+ 'd9b83b8f6f9c8bd98d290dc1d0e9913a00b62c3f')
+
+# 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}"/qt-x11-free-${pkgver}
+ export PATH=${QTDIR}/bin:${PATH}
+ export LD_LIBRARY_PATH=${QTDIR}/lib:${LD_LIBRARY_PATH}
+ export QMAKESPEC=$QTDIR/mkspecs/linux-g++
+ cd "${srcdir}"/qt-x11-free-${pkgver}
+ # apply qt patches from kde.org
+ for i in ../qt-copy-kde-patches/*; do
+ patch -Np0 -i $i
+ done
+ # apply other qt patches and one security fix from debian/gentoo
+ for i in ../qt-patches/*; do
+ patch -Np1 -i $i
+ done
+ # fix utf8 bug
+ patch -p0 -i "${srcdir}"/utf8-bug-qt3.diff
+ # fix asia fonts
+ patch -p0 -i "${srcdir}"/qt-font-default-subst.diff
+ # fix segfaults on exit when using mysql DB driver
+ patch -p0 -i "${srcdir}"/mysql.patch
+ # fix CJK font/chars select error (FS#11245)
+ patch -p1 -i "${srcdir}"/eastern_asian_languagues.diff
+ # fix build problem against new unixODBC
+ patch -p1 -i "${srcdir}"/qt-odbc.patch
+ # fix build with gcc 4.6.0
+ patch -p1 -i "${srcdir}"/gcc-4.6.patch
+
+ patch -p0 -i "${srcdir}"/qt3-png15.patch
+ # 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}"/qt-x11-free-${pkgver}/src/Makefile
+ [ "$CARCH" = "x86_64" ] && sed -i "s|/opt/qt/lib64|/opt/qt/lib|g" "${srcdir}"/qt-x11-free-${pkgver}/tools/designer/designer/Makefile
+ [ "$CARCH" = "x86_64" ] && sed -i "s|/opt/qt/lib64|/opt/qt/lib|g" "${srcdir}"/qt-x11-free-${pkgver}/tools/designer/editor/Makefile
+ [ "$CARCH" = "x86_64" ] && sed -i "s|/opt/qt/lib64|/opt/qt/lib|g" "${srcdir}"/qt-x11-free-${pkgver}/tools/assistant/lib/Makefile
+ [ "$CARCH" = "x86_64" ] && sed -i "s|/opt/qt/lib64|/opt/qt/lib|g" "${srcdir}"/qt-x11-free-${pkgver}/tools/designer/uilib/Makefile
+
+ cd "${srcdir}"/qt-x11-free-${pkgver}
+ make -C qmake
+ cd "${srcdir}"/qt-x11-free-${pkgver}/plugins/src/sqldrivers/mysql
+ "${srcdir}"/qt-x11-free-${pkgver}/bin/qmake -o Makefile "INCPATH+=/usr/include/mysql" "LIBS+=-L/usr/lib/mysql -lmysqlclient" mysql.pro
+ cd "${srcdir}"/qt-x11-free-${pkgver}/plugins/src/sqldrivers/psql
+ "${srcdir}"/qt-x11-free-${pkgver}/bin/qmake -o Makefile "INCPATH+=/usr/src/include /usr/include/postgresql/server" "LIBS+=-L/usr/lib -lpq" psql.pro
+
+ cd "${srcdir}"/qt-x11-free-${pkgver}
+ # fix the broken makefiles
+ #sed -i 's|[[:space:]]*strip.*doc/html.*$|#|g' src/Makefile
+ make
+}
+
+package() {
+ cd "${srcdir}"/qt-x11-free-${pkgver}
+ make INSTALL_ROOT="${pkgdir}" install
+ rm -rf "${pkgdir}"/opt/qt/{phrasebooks,templates,translations}
+ sed -i "s|-L${srcdir}/qt-x11-free-${pkgver}/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
+ install -d -m755 "${pkgdir}"/opt/qt/man
+ cp -r "${srcdir}"/qt-x11-free-${pkgver}/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/testing/qt3/eastern_asian_languagues.diff b/testing/qt3/eastern_asian_languagues.diff
new file mode 100644
index 000000000..7c25eef7d
--- /dev/null
+++ b/testing/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/testing/qt3/gcc-4.6.patch b/testing/qt3/gcc-4.6.patch
new file mode 100644
index 000000000..bcbffcea6
--- /dev/null
+++ b/testing/qt3/gcc-4.6.patch
@@ -0,0 +1,33 @@
+diff -up qt-x11-free-3.3.8b/src/tools/qmap.h.cstddef qt-x11-free-3.3.8b/src/tools/qmap.h
+--- qt-x11-free-3.3.8b/src/tools/qmap.h.cstddef 2008-01-15 13:09:13.000000000 -0600
++++ qt-x11-free-3.3.8b/src/tools/qmap.h 2011-01-30 21:14:29.275088725 -0600
+@@ -49,6 +49,7 @@
+ #include "qvaluelist.h"
+ #endif // QT_H
+
++#include <cstddef>
+ #ifndef QT_NO_STL
+ #include <iterator>
+ #include <map>
+diff -up qt-x11-free-3.3.8b/src/tools/qvaluelist.h.cstddef qt-x11-free-3.3.8b/src/tools/qvaluelist.h
+--- qt-x11-free-3.3.8b/src/tools/qvaluelist.h.cstddef 2008-01-15 13:09:13.000000000 -0600
++++ qt-x11-free-3.3.8b/src/tools/qvaluelist.h 2011-01-30 21:14:01.765846592 -0600
+@@ -47,6 +47,7 @@
+ #include "qdatastream.h"
+ #endif // QT_H
+
++#include <cstddef>
+ #ifndef QT_NO_STL
+ #include <iterator>
+ #include <list>
+diff -up qt-x11-free-3.3.8b/src/tools/qvaluevector.h.cstddef qt-x11-free-3.3.8b/src/tools/qvaluevector.h
+--- qt-x11-free-3.3.8b/src/tools/qvaluevector.h.cstddef 2008-01-15 13:09:13.000000000 -0600
++++ qt-x11-free-3.3.8b/src/tools/qvaluevector.h 2011-01-30 21:14:01.765846592 -0600
+@@ -45,6 +45,7 @@
+ #include "qdatastream.h"
+ #endif // QT_H
+
++#include <cstddef>
+ #ifndef QT_NO_STL
+ #include <vector>
+ #endif
diff --git a/testing/qt3/mysql.patch b/testing/qt3/mysql.patch
new file mode 100644
index 000000000..5f61edc67
--- /dev/null
+++ b/testing/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/testing/qt3/qt-copy-kde-patches.tar.bz2 b/testing/qt3/qt-copy-kde-patches.tar.bz2
new file mode 100644
index 000000000..19d899963
--- /dev/null
+++ b/testing/qt3/qt-copy-kde-patches.tar.bz2
Binary files differ
diff --git a/testing/qt3/qt-font-default-subst.diff b/testing/qt3/qt-font-default-subst.diff
new file mode 100644
index 000000000..3e286f74e
--- /dev/null
+++ b/testing/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/testing/qt3/qt-odbc.patch b/testing/qt3/qt-odbc.patch
new file mode 100644
index 000000000..6f21e3cf1
--- /dev/null
+++ b/testing/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/testing/qt3/qt-patches.tar.bz2 b/testing/qt3/qt-patches.tar.bz2
new file mode 100644
index 000000000..3f4aee171
--- /dev/null
+++ b/testing/qt3/qt-patches.tar.bz2
Binary files differ
diff --git a/testing/qt3/qt.install b/testing/qt3/qt.install
new file mode 100644
index 000000000..6d042daae
--- /dev/null
+++ b/testing/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/testing/qt3/qt.profile b/testing/qt3/qt.profile
new file mode 100644
index 000000000..ed4d232ae
--- /dev/null
+++ b/testing/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/testing/qt3/qt3-png15.patch b/testing/qt3/qt3-png15.patch
new file mode 100644
index 000000000..e64fea36a
--- /dev/null
+++ b/testing/qt3/qt3-png15.patch
@@ -0,0 +1,212 @@
+$NetBSD: patch-as,v 1.5 2011/03/25 15:28:26 wiz Exp $
+
+--- src/kernel/qpngio.cpp.orig 2007-02-02 10:01:15.000000000 -0400
++++ src/kernel/qpngio.cpp
+@@ -43,6 +43,7 @@
+ #include "qiodevice.h"
+
+ #include <png.h>
++#include <zlib.h>
+
+
+ #ifdef Q_OS_TEMP
+@@ -123,9 +124,24 @@ void setup_qt( QImage& image, png_struct
+ png_get_IHDR(png_ptr, info_ptr, &width, &height, &bit_depth, &color_type,
+ 0, 0, 0);
+
++ png_colorp info_ptr_palette = NULL;
++ int info_ptr_num_palette = 0;
++ if (png_get_valid(png_ptr, info_ptr, PNG_INFO_PLTE)) {
++ png_get_PLTE(png_ptr, info_ptr, &info_ptr_palette, &info_ptr_num_palette);
++ }
++
++ png_bytep info_ptr_trans_alpha = NULL;
++ int info_ptr_num_trans = 0;
++ png_color_16p info_ptr_trans_color = NULL;
++
++ if (png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS)) {
++ png_get_tRNS(png_ptr, info_ptr, &info_ptr_trans_alpha, &info_ptr_num_trans, &info_ptr_trans_color);
++ }
++
++
+ if ( color_type == PNG_COLOR_TYPE_GRAY ) {
+ // Black & White or 8-bit grayscale
+- if ( bit_depth == 1 && info_ptr->channels == 1 ) {
++ if ( bit_depth == 1 && png_get_channels(png_ptr, info_ptr) == 1 ) {
+ png_set_invert_mono( png_ptr );
+ png_read_update_info( png_ptr, info_ptr );
+ if (!image.create( width, height, 1, 2, QImage::BigEndian ))
+@@ -159,7 +175,7 @@ void setup_qt( QImage& image, png_struct
+ 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);
+@@ -168,7 +184,7 @@ void setup_qt( QImage& image, png_struct
+ }
+ } else if ( color_type == PNG_COLOR_TYPE_PALETTE
+ && png_get_valid(png_ptr, info_ptr, PNG_INFO_PLTE)
+- && info_ptr->num_palette <= 256 )
++ && info_ptr_num_palette <= 256 )
+ {
+ // 1-bit and 8-bit color
+ if ( bit_depth != 1 )
+@@ -176,28 +192,28 @@ void setup_qt( QImage& image, png_struct
+ png_read_update_info( png_ptr, info_ptr );
+ png_get_IHDR(png_ptr, info_ptr,
+ &width, &height, &bit_depth, &color_type, 0, 0, 0);
+- if (!image.create(width, height, bit_depth, info_ptr->num_palette,
++ if (!image.create(width, height, bit_depth, info_ptr_num_palette,
+ QImage::BigEndian))
+ return;
+ int i = 0;
+ if ( png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS) ) {
+ image.setAlphaBuffer( TRUE );
+- while ( i < info_ptr->num_trans ) {
++ while ( i < info_ptr_num_trans ) {
+ image.setColor(i, qRgba(
+- info_ptr->palette[i].red,
+- info_ptr->palette[i].green,
+- info_ptr->palette[i].blue,
+- info_ptr->trans[i]
++ info_ptr_palette[i].red,
++ info_ptr_palette[i].green,
++ info_ptr_palette[i].blue,
++ info_ptr_trans_alpha[i]
+ )
+ );
+ i++;
+ }
+ }
+- while ( i < info_ptr->num_palette ) {
++ while ( i < info_ptr_num_palette ) {
+ image.setColor(i, qRgba(
+- info_ptr->palette[i].red,
+- info_ptr->palette[i].green,
+- info_ptr->palette[i].blue,
++ info_ptr_palette[i].red,
++ info_ptr_palette[i].green,
++ info_ptr_palette[i].blue,
+ 0xff
+ )
+ );
+@@ -284,7 +300,7 @@ void read_png_image(QImageIO* iio)
+ return;
+ }
+
+- if (setjmp(png_ptr->jmpbuf)) {
++ if (setjmp(png_jmpbuf(png_ptr))) {
+ png_destroy_read_struct(&png_ptr, &info_ptr, &end_info);
+ iio->setStatus(-4);
+ return;
+@@ -469,7 +485,7 @@ bool QPNGImageWriter::writeImage(const Q
+ return FALSE;
+ }
+
+- if (setjmp(png_ptr->jmpbuf)) {
++ if (setjmp(png_jmpbuf(png_ptr))) {
+ png_destroy_write_struct(&png_ptr, &info_ptr);
+ return FALSE;
+ }
+@@ -491,10 +507,16 @@ bool QPNGImageWriter::writeImage(const Q
+
+ png_set_write_fn(png_ptr, (void*)this, qpiw_write_fn, qpiw_flush_fn);
+
++#warning XXXtnn not too sure about this
++/*
++according to png.h, channels is only used on read, not writes, so we
++should be able to comment this out.
++
+ info_ptr->channels =
+ (image.depth() == 32)
+ ? (image.hasAlphaBuffer() ? 4 : 3)
+ : 1;
++*/
+
+ png_set_IHDR(png_ptr, info_ptr, image.width(), image.height(),
+ image.depth() == 1 ? 1 : 8 /* per channel */,
+@@ -504,11 +526,12 @@ bool QPNGImageWriter::writeImage(const Q
+ : PNG_COLOR_TYPE_RGB
+ : PNG_COLOR_TYPE_PALETTE, 0, 0, 0);
+
++ png_color_8 sig_bit;
++ sig_bit.red = 8;
++ sig_bit.green = 8;
++ sig_bit.blue = 8;
++ png_set_sBIT(png_ptr, info_ptr, &sig_bit);
+
+- //png_set_sBIT(png_ptr, info_ptr, 8);
+- info_ptr->sig_bit.red = 8;
+- info_ptr->sig_bit.green = 8;
+- info_ptr->sig_bit.blue = 8;
+
+ if (image.depth() == 1 && image.bitOrder() == QImage::LittleEndian)
+ png_set_packswap(png_ptr);
+@@ -522,11 +545,14 @@ bool QPNGImageWriter::writeImage(const Q
+ png_set_PLTE(png_ptr, info_ptr, palette, num_palette);
+ int* trans = new int[num_palette];
+ int num_trans = 0;
++ png_colorp info_ptr_palette = NULL;
++ int tmp;
++ png_get_PLTE(png_ptr, info_ptr, &info_ptr_palette, &tmp);
+ for (int i=0; i<num_palette; i++) {
+ QRgb rgb=image.color(i);
+- info_ptr->palette[i].red = qRed(rgb);
+- info_ptr->palette[i].green = qGreen(rgb);
+- info_ptr->palette[i].blue = qBlue(rgb);
++ info_ptr_palette[i].red = qRed(rgb);
++ info_ptr_palette[i].green = qGreen(rgb);
++ info_ptr_palette[i].blue = qBlue(rgb);
+ if (image.hasAlphaBuffer()) {
+ trans[i] = rgb >> 24;
+ if (trans[i] < 255) {
+@@ -534,6 +560,7 @@ bool QPNGImageWriter::writeImage(const Q
+ }
+ }
+ }
++ png_set_PLTE(png_ptr, info_ptr, info_ptr_palette, num_palette);
+ if (num_trans) {
+ copy_trans = new png_byte[num_trans];
+ for (int i=0; i<num_trans; i++)
+@@ -544,7 +571,10 @@ bool QPNGImageWriter::writeImage(const Q
+ }
+
+ if ( image.hasAlphaBuffer() ) {
+- info_ptr->sig_bit.alpha = 8;
++ png_color_8p sig_bit;
++ png_get_sBIT(png_ptr, info_ptr, &sig_bit);
++ sig_bit->alpha = 8;
++ png_set_sBIT(png_ptr, info_ptr, sig_bit);
+ }
+
+ // Swap ARGB to RGBA (normal PNG format) before saving on
+@@ -1030,7 +1060,7 @@ int QPNGFormat::decode(QImage& img, QIma
+ return -1;
+ }
+
+- if (setjmp((png_ptr)->jmpbuf)) {
++ if (setjmp(png_jmpbuf(png_ptr))) {
+ png_destroy_read_struct(&png_ptr, &info_ptr, 0);
+ image = 0;
+ return -1;
+@@ -1057,7 +1087,7 @@ int QPNGFormat::decode(QImage& img, QIma
+
+ if ( !png_ptr ) return 0;
+
+- if (setjmp(png_ptr->jmpbuf)) {
++ if (setjmp(png_jmpbuf(png_ptr))) {
+ png_destroy_read_struct(&png_ptr, &info_ptr, 0);
+ image = 0;
+ state = MovieStart;
+@@ -1117,7 +1147,7 @@ void QPNGFormat::end(png_structp png, pn
+ consumer->frameDone(QPoint(offx,offy),r);
+ consumer->end();
+ state = FrameStart;
+- unused_data = (int)png->buffer_size; // Since libpng doesn't tell us
++ unused_data = png_process_data_pause(png, 0);
+ }
+
+ #ifdef PNG_USER_CHUNKS_SUPPORTED
diff --git a/testing/qt3/utf8-bug-qt3.diff b/testing/qt3/utf8-bug-qt3.diff
new file mode 100644
index 000000000..43e84a99f
--- /dev/null
+++ b/testing/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/testing/qtiplot/PKGBUILD b/testing/qtiplot/PKGBUILD
new file mode 100644
index 000000000..4900ab288
--- /dev/null
+++ b/testing/qtiplot/PKGBUILD
@@ -0,0 +1,96 @@
+# $Id: PKGBUILD 148287 2012-01-30 18:50:13Z ibiru $
+# Maintainer: Ronald van Haren <ronald.archlinux.org>
+# Contributor: damir <damir.archlinux.org>
+# Contributor: Gergely Imreh <imrehg@gmail.com>
+
+pkgname=qtiplot
+pkgver=0.9.8.8
+pkgrel=2
+arch=('i686' 'x86_64')
+url="http://soft.proindependent.com/qtiplot.html"
+pkgdesc="Data analysis and scientific plotting - free clone of Origin"
+depends=('muparser' 'gsl' 'python2-qt' 'boost-libs' 'shared-mime-info' 'mesa' 'liborigin2' 'qt-assistant-compat' 'tamu-anova')
+# 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.8.6-gold.patch
+ qtiplot-0.9.8.6-kde.patch
+ qtiplot-0.9.8.6-tamuanova.patch
+ qwtplot3d-qt-4.8.0.patch
+ qwtplot3d-libpng15.patch)
+sha1sums=('02801cdf31b543c0f5d7ef1b1f358f0738d93d48'
+ '4d5d7cf3965a0a1b1aa9cafc34e70ee207700bc8'
+ '4301cb2a36024a10108b689990d28c4fe5c7416e'
+ '326ee6bc623a637d058ab7ee9f65fede40a23a09'
+ '301bf6f70e8c1bb9ffd55eb49eedde7b29a12909'
+ '285f57d865956d93250ec548288c5bface096b6b'
+ 'b534a609f317cf3117d6495909854cdacea20124'
+ 'a1d4bec744c9b8fe29bf177851e66c97cdd9d975'
+ '830b518e3ef63625df84363a8047417124f243b0'
+ '3d4c471dda29a04d432f8e0a4c5b977068cdae72'
+ '4a45ee21f028f34da75d83c0d3e1d08c5f928892')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ # gentoo fixes
+ patch -Np1 -i "${srcdir}/qtiplot-0.9.8.6-gold.patch"
+ patch -Np1 -i "${srcdir}/qtiplot-0.9.8.6-kde.patch"
+# patch -Np1 -i "${srcdir}/qtiplot-0.9.8.6-tamuanova.patch"
+
+ # build also static qwtplot3d lib
+ echo "unix:CONFIG += staticlib" >> 3rdparty/qwtplot3d/qwtplot3d.pro
+
+ # install build configuration file
+ 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
+ patch -Np3 -i "${srcdir}/qwtplot3d-qt-4.8.0.patch"
+ patch -Np0 -i "${srcdir}/qwtplot3d-libpng15.patch"
+ 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/testing/qtiplot/build.conf.archlinux b/testing/qtiplot/build.conf.archlinux
new file mode 100644
index 000000000..7ccded7fa
--- /dev/null
+++ b/testing/qtiplot/build.conf.archlinux
@@ -0,0 +1,32 @@
+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 -lGLU
+
+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
+TAMUANOVA_LIBS = -ltamuanova
+TAMUANOVA_INCLUDEPATH = /usr/include/tamu_anova
+LIBPNG_LIBS = -lpng
+
+PYTHON = python2
+LUPDATE = lupdate
+LRELEASE = lrelease
+
+SCRIPTING_LANGS += muParser
+SCRIPTING_LANGS += Python
+
+CONFIG += CustomInstall
+DEFINES += SCRIPTING_CONSOLE
+
diff --git a/testing/qtiplot/qtiplot-0.9.8.6-gold.patch b/testing/qtiplot/qtiplot-0.9.8.6-gold.patch
new file mode 100644
index 000000000..3b6757533
--- /dev/null
+++ b/testing/qtiplot/qtiplot-0.9.8.6-gold.patch
@@ -0,0 +1,15 @@
+ qtiplot/qtiplot.pro | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+diff --git a/qtiplot/qtiplot.pro b/qtiplot/qtiplot.pro
+index 99e0e36..b7cf373 100755
+--- a/qtiplot/qtiplot.pro
++++ b/qtiplot/qtiplot.pro
+@@ -20,6 +20,7 @@ LIBS += $$MUPARSER_LIBS
+ LIBS += $$QWT_LIBS
+ LIBS += $$QWT3D_LIBS
+ LIBS += $$GSL_LIBS
++LIBS += -lz
+
+ #############################################################################
+ ###################### BASIC PROJECT PROPERTIES #############################
diff --git a/testing/qtiplot/qtiplot-0.9.8.6-kde.patch b/testing/qtiplot/qtiplot-0.9.8.6-kde.patch
new file mode 100644
index 000000000..919ec6cc2
--- /dev/null
+++ b/testing/qtiplot/qtiplot-0.9.8.6-kde.patch
@@ -0,0 +1,15 @@
+ qtiplot/src/plot2D/Graph.cpp | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+diff --git a/qtiplot/src/plot2D/Graph.cpp b/qtiplot/src/plot2D/Graph.cpp
+index 626172a..d4eab1b 100755
+--- a/qtiplot/src/plot2D/Graph.cpp
++++ b/qtiplot/src/plot2D/Graph.cpp
+@@ -73,6 +73,7 @@
+ #include <PatternBox.h>
+ #include <SymbolBox.h>
+
++#include <QPaintEngine>
+ #include <QApplication>
+ #include <QBitmap>
+ #include <QClipboard>
diff --git a/testing/qtiplot/qtiplot-0.9.8.6-tamuanova.patch b/testing/qtiplot/qtiplot-0.9.8.6-tamuanova.patch
new file mode 100644
index 000000000..1644266d1
--- /dev/null
+++ b/testing/qtiplot/qtiplot-0.9.8.6-tamuanova.patch
@@ -0,0 +1,26 @@
+diff --git a/qtiplot/qtiplot.pro b/qtiplot/qtiplot.pro
+index 95a5f0c..72e99ab 100755
+--- a/qtiplot/qtiplot.pro
++++ b/qtiplot/qtiplot.pro
+@@ -205,18 +205,14 @@ contains(SCRIPTING_LANGS, Python) {
+ !isEmpty(TAMUANOVA_LIBS) {
+ DEFINES += HAVE_TAMUANOVA
+ INCLUDEPATH += $$TAMUANOVA_INCLUDEPATH
+- #LIBS += $$TAMUANOVA_LIBS
+-
+- HEADERS += $$TAMUANOVA_INCLUDEPATH/tamu_anova.h
+- SOURCES += $$TAMUANOVA_INCLUDEPATH/anova_1.c
+- SOURCES += $$TAMUANOVA_INCLUDEPATH/anova_2.c
++ LIBS += $$TAMUANOVA_LIBS
+ }
+
+ ###############################################################
+
+ # At the very end: add global include- and lib path
+-#unix:INCLUDEPATH += $$SYS_INCLUDEPATH
+-#unix:LIBS += $$SYS_LIBS
++unix:INCLUDEPATH += $$SYS_INCLUDEPATH
++unix:LIBS += $$SYS_LIBS
+
+ ###############################################################
+ ############### Building QtiPlot as a browser plugin ##########
diff --git a/testing/qtiplot/qtiplot.desktop b/testing/qtiplot/qtiplot.desktop
new file mode 100644
index 000000000..ab64b3852
--- /dev/null
+++ b/testing/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/testing/qtiplot/qtiplot.install b/testing/qtiplot/qtiplot.install
new file mode 100644
index 000000000..66631520d
--- /dev/null
+++ b/testing/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/testing/qtiplot/qtiplot.png b/testing/qtiplot/qtiplot.png
new file mode 100644
index 000000000..5b4b87b21
--- /dev/null
+++ b/testing/qtiplot/qtiplot.png
Binary files differ
diff --git a/testing/qtiplot/qtiplot.xml b/testing/qtiplot/qtiplot.xml
new file mode 100644
index 000000000..7ad4c4aa0
--- /dev/null
+++ b/testing/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/testing/qtiplot/qwtplot3d-libpng15.patch b/testing/qtiplot/qwtplot3d-libpng15.patch
new file mode 100644
index 000000000..828f0c6d8
--- /dev/null
+++ b/testing/qtiplot/qwtplot3d-libpng15.patch
@@ -0,0 +1,10 @@
+--- 3rdparty/gl2ps/gl2ps.c.orig 2012-01-29 18:15:34.000000000 -0500
++++ 3rdparty/gl2ps/gl2ps.c 2012-01-29 18:16:08.000000000 -0500
+@@ -47,6 +47,7 @@
+ #endif
+
+ #if defined(GL2PS_HAVE_LIBPNG)
++#include <zlib.h>
+ #include <png.h>
+ #endif
+
diff --git a/testing/qtiplot/qwtplot3d-qt-4.8.0.patch b/testing/qtiplot/qwtplot3d-qt-4.8.0.patch
new file mode 100644
index 000000000..9d30f6b7b
--- /dev/null
+++ b/testing/qtiplot/qwtplot3d-qt-4.8.0.patch
@@ -0,0 +1,34 @@
+diff -Naur qtiplot-0.9.8.8.orig/3rdparty/qwtplot3d/include/qwt3d_io_gl2ps.h qtiplot-0.9.8.8/3rdparty/qwtplot3d/include/qwt3d_io_gl2ps.h
+--- qtiplot-0.9.8.8.orig/3rdparty/qwtplot3d/include/qwt3d_io_gl2ps.h 2012-01-29 17:42:01.000000000 -0500
++++ qtiplot-0.9.8.8/3rdparty/qwtplot3d/include/qwt3d_io_gl2ps.h 2012-01-29 17:58:30.000000000 -0500
+@@ -2,12 +2,7 @@
+ #define qwt3d_io_gl2ps_h__2004_05_07_01_16_begin_guarded_code
+
+ #include <time.h>
+-
+-#if QT_VERSION < 0x040000
+-#include <qgl.h>
+-#else
+-#include <QtOpenGL/qgl.h>
+-#endif
++#include <QtOpenGL>
+
+ #include "qwt3d_types.h"
+ #include "qwt3d_io.h"
+diff -Naur qtiplot-0.9.8.8.orig/3rdparty/qwtplot3d/include/qwt3d_openglhelper.h qtiplot-0.9.8.8/3rdparty/qwtplot3d/include/qwt3d_openglhelper.h
+--- qtiplot-0.9.8.8.orig/3rdparty/qwtplot3d/include/qwt3d_openglhelper.h 2012-01-29 17:42:01.000000000 -0500
++++ qtiplot-0.9.8.8/3rdparty/qwtplot3d/include/qwt3d_openglhelper.h 2012-01-29 17:57:21.000000000 -0500
+@@ -2,11 +2,8 @@
+ #define __openglhelper_2003_06_06_15_49__
+
+ #include "qglobal.h"
+-#if QT_VERSION < 0x040000
+-#include <qgl.h>
+-#else
+-#include <QtOpenGL/qgl.h>
+-#endif
++#include <QtOpenGL>
++#include <GL/glu.h>
+
+ namespace Qwt3D
+ {
diff --git a/testing/qtiplot/qwtplot3d_gcc.patch b/testing/qtiplot/qwtplot3d_gcc.patch
new file mode 100644
index 000000000..06aeb50f5
--- /dev/null
+++ b/testing/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/testing/qtiplot/sip.patch b/testing/qtiplot/sip.patch
new file mode 100644
index 000000000..146f4c277
--- /dev/null
+++ b/testing/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/testing/r/PKGBUILD b/testing/r/PKGBUILD
new file mode 100644
index 000000000..6bf40c47a
--- /dev/null
+++ b/testing/r/PKGBUILD
@@ -0,0 +1,68 @@
+# $Id: PKGBUILD 148375 2012-01-30 20:32:31Z 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.14.1
+pkgrel=2
+pkgdesc="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' 'xz')
+makedepends=('openjdk6' 'gcc-fortran')
+backup=('etc/R/Makeconf' 'etc/R/Renviron' 'etc/R/ldpaths' 'etc/R/repositories')
+options=('!makeflags')
+source=("http://cran.r-project.org/src/base/R-2/R-${pkgver}.tar.gz"
+ 'r.desktop'
+ 'r.png')
+install=r.install
+sha1sums=('5803a213480a749e36bccc155aecb13070ade096'
+ '13aa29219bcaa102e575de8c1c8e0833d233e836'
+ '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 \
+ --sysconfdir=/etc/R \
+ --datarootdir=/usr/share \
+ rsharedir=/usr/share/R/ \
+ rincludedir=/usr/include/R/ \
+ rdocdir=/usr/share/doc/R/ \
+ --with-x \
+ --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"
+
+ # move the config directory to /etc and create symlinks
+ install -d "${pkgdir}/etc/R"
+ cd "${pkgdir}/usr/lib/R/etc"
+ for i in *; do
+ mv -f ${i} "${pkgdir}/etc/R"
+ ln -s /etc/R/${i} ${i}
+ done
+}
diff --git a/testing/r/r.desktop b/testing/r/r.desktop
new file mode 100644
index 000000000..68b49c447
--- /dev/null
+++ b/testing/r/r.desktop
@@ -0,0 +1,11 @@
+[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
+Type=Application
+Categories=Education;Science;Math;
diff --git a/testing/r/r.install b/testing/r/r.install
new file mode 100644
index 000000000..d3289ab64
--- /dev/null
+++ b/testing/r/r.install
@@ -0,0 +1,12 @@
+post_install() {
+ update-desktop-database -q
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
+
diff --git a/testing/r/r.png b/testing/r/r.png
new file mode 100644
index 000000000..1303ccdb9
--- /dev/null
+++ b/testing/r/r.png
Binary files differ
diff --git a/testing/rrdtool/PKGBUILD b/testing/rrdtool/PKGBUILD
new file mode 100644
index 000000000..6be86fc5d
--- /dev/null
+++ b/testing/rrdtool/PKGBUILD
@@ -0,0 +1,35 @@
+# $Id: PKGBUILD 148291 2012-01-30 18:50:21Z ibiru $
+# Maintainer: Eric Bélanger <eric@archlinux.org>
+
+pkgname=rrdtool
+pkgver=1.4.5
+pkgrel=5
+pkgdesc="Data logging and graphing application"
+arch=('i686' 'x86_64')
+url="http://www.rrdtool.org"
+license=('GPL' 'custom')
+depends=('libxml2' 'pango' 'ttf-dejavu')
+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)
+sha1sums=('56638e8aedd5d5522152e86746e382b75dc48c35')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ sed -i 's|-lrrd|-lrrd -L/usr/lib/perl5/core_perl/CORE/ -lperl |' bindings/perl-shared/Makefile.PL
+ PYTHON=python2 ./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 --disable-libwrap
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+ install -D -m644 COPYRIGHT "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+}
diff --git a/testing/run-parts/PKGBUILD b/testing/run-parts/PKGBUILD
new file mode 100644
index 000000000..ca0d40d38
--- /dev/null
+++ b/testing/run-parts/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 148045 2012-01-30 14:42:46Z pierre $
+# Maintainer: Pierre Schmitz <pierre@archlinux.de>
+
+pkgname=run-parts
+pkgver=4.2
+pkgrel=1
+pkgdesc='run scripts or programs in a directory'
+arch=('i686' 'x86_64')
+url='http://packages.qa.debian.org/d/debianutils.html'
+license=('GPL')
+depends=('glibc')
+source=("ftp://ftp.archlinux.org/other/run-parts/debianutils_${pkgver}.tar.gz")
+sha256sums=('14f76d82d413d3b5d302b3a06e132dea5bb834bf3d699c1f79cfb5c1af49a95d')
+
+build() {
+ cd $srcdir/debianutils-$pkgver
+ ./configure --prefix=/usr
+ make run-parts
+}
+
+package() {
+ cd $srcdir/debianutils-$pkgver
+ install -D -m755 run-parts $pkgdir/usr/bin/run-parts
+ install -D -m644 run-parts.8 $pkgdir/usr/share/man/man8/run-parts.8
+ for l in po4a/*/run-parts.8; do
+ install -D -m644 ${l} $pkgdir/usr/share/man/${l:5:2}/man8/run-parts.8
+ done
+}
diff --git a/testing/sane/PKGBUILD b/testing/sane/PKGBUILD
new file mode 100644
index 000000000..d351dacca
--- /dev/null
+++ b/testing/sane/PKGBUILD
@@ -0,0 +1,57 @@
+# $Id: PKGBUILD 148293 2012-01-30 18:50:24Z ibiru $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+# Contributor: Sarah Hay <sarahhay@mb.sympatico.ca>
+# Contributor: Simo L. <neotuli@yahoo.com>
+# Contributor: eric <eric@archlinux.org>
+
+pkgname=sane
+pkgver=1.0.22
+pkgrel=5
+pkgdesc="Scanner Access Now Easy"
+url="http://www.sane-project.org/"
+arch=('i686' 'x86_64')
+license=('GPL')
+depends=('libtiff>=4.0.0' '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'
+ 'libv4l-0.8.3.patch'
+ 'xerox_mfp_fix_usb_devices.patch')
+md5sums=('fadf56a60f4776bfb24491f66b617cf5'
+ 'da946cc36fb83612162cf9505986d4b2'
+ 'e645a8921cff9f18ffbdabb2ed885060'
+ 'cfef73e7db7c28308914d3db6767d852')
+options=(!libtool)
+
+build() {
+ cd "${srcdir}/${pkgname}-backends-${pkgver}"
+
+ patch -p1 -i "${srcdir}"/libv4l-0.8.3.patch
+ # fix https://bugs.archlinux.org/task/26114
+ patch -Np1 -i "${srcdir}"/xerox_mfp_fix_usb_devices.patch
+
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --with-docdir=/usr/share/doc/sane \
+ --enable-avahi \
+ --disable-locking
+ 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"
+
+ # install xinetd file
+ install -D -m644 "${srcdir}/sane.xinetd" "${pkgdir}/etc/xinetd.d/sane"
+}
diff --git a/testing/sane/libv4l-0.8.3.patch b/testing/sane/libv4l-0.8.3.patch
new file mode 100644
index 000000000..4e240e0cf
--- /dev/null
+++ b/testing/sane/libv4l-0.8.3.patch
@@ -0,0 +1,64 @@
+From 26c69b228b29f612faf4b0cc85db969ee7cc4ea6 Mon Sep 17 00:00:00 2001
+From: Nils Philippsen <nils@redhat.com>
+Date: Mon, 14 Mar 2011 13:35:05 +0100
+Subject: [PATCH] patch: v4l
+
+Squashed commit of the following:
+
+commit 23381932c76846191b42a48e505b37cd74711265
+Author: Julien BLACHE <jb@jblache.org>
+Date: Wed Feb 16 19:37:43 2011 +0100
+
+ Fix v4l build with libv4l 0.8.3+
+
+ (cherry picked from commit c5ca46c2d1be78c651afb843cc834cf2b5b24953)
+
+ Conflicts:
+
+ ChangeLog
+
+ Signed-off-by: Nils Philippsen <nils@redhat.com>
+---
+ backend/v4l.c | 3 +--
+ backend/v4l.h | 3 ++-
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/backend/v4l.c b/backend/v4l.c
+index 6510ef0..38595ed 100644
+--- a/backend/v4l.c
++++ b/backend/v4l.c
+@@ -84,9 +84,8 @@
+ #include "../include/sane/sanei_config.h"
+ #define V4L_CONFIG_FILE "v4l.conf"
+
+-#include "v4l.h"
+-
+ #include <libv4l1.h>
++#include "v4l.h"
+
+ static const SANE_Device **devlist = NULL;
+ static int num_devices;
+diff --git a/backend/v4l.h b/backend/v4l.h
+index 588b96e..6aee586 100644
+--- a/backend/v4l.h
++++ b/backend/v4l.h
+@@ -29,6 +29,7 @@
+ #ifndef v4l_h
+ #define v4l_h
+
++#ifndef __LINUX_VIDEODEV_H
+ /* Kernel interface */
+ /* Only the stuff we need. For more features, more defines are needed */
+
+@@ -165,7 +166,7 @@ struct video_channel
+
+
+ /* end of kernel interface */
+-
++#endif /* !__LINUX_VIDEODEV_H */
+
+ #include <../include/sane/sane.h>
+
+--
+1.7.4
+
diff --git a/testing/sane/sane.install b/testing/sane/sane.install
new file mode 100644
index 000000000..5ec361eea
--- /dev/null
+++ b/testing/sane/sane.install
@@ -0,0 +1,7 @@
+post_install() {
+ /bin/cat <<THEEND
+NOTE
+----
+Add your user to group 'scanner' to use scanner devices.
+THEEND
+}
diff --git a/testing/sane/sane.xinetd b/testing/sane/sane.xinetd
new file mode 100644
index 000000000..b035664b4
--- /dev/null
+++ b/testing/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/testing/sane/xerox_mfp_fix_usb_devices.patch b/testing/sane/xerox_mfp_fix_usb_devices.patch
new file mode 100644
index 000000000..5ed29b974
--- /dev/null
+++ b/testing/sane/xerox_mfp_fix_usb_devices.patch
@@ -0,0 +1,67 @@
+commit 5ea227caeacd504b64eef301e83fa63e0a25b3f7
+Author: Alex Belkin <abc@telekom.ru>
+Date: Tue Mar 8 17:57:19 2011 +0300
+
+ keep usb device by default (correct for bug introduced by tcp sub-backend
+
+diff --git a/backend/xerox_mfp.c b/backend/xerox_mfp.c
+index e08b50f..d4672a7 100644
+--- a/backend/xerox_mfp.c
++++ b/backend/xerox_mfp.c
+@@ -37,10 +37,10 @@
+ static const SANE_Device **devlist = NULL; /* sane_get_devices array */
+ static struct device *devices_head = NULL; /* sane_get_devices list */
+
+-transport available_transports[] = {
++enum { TRANSPORT_USB, TRANSPORT_TCP, TRANSPORTS_MAX };
++transport available_transports[TRANSPORTS_MAX] = {
+ { "usb", usb_dev_request, usb_dev_open, usb_dev_close, usb_configure_device },
+ { "tcp", tcp_dev_request, tcp_dev_open, tcp_dev_close, tcp_configure_device },
+- { 0 }
+ };
+
+ static int resolv_state(int state)
+@@ -824,7 +824,13 @@ free_devices (void)
+ devices_head = NULL;
+ }
+
+-/* SANE API ignores return code of this callback */
++static transport *tr_from_devname(SANE_String_Const devname)
++{
++ if (strncmp("tcp", devname, 3) == 0)
++ return &available_transports[TRANSPORT_TCP];
++ return &available_transports[TRANSPORT_USB];
++}
++
+ static SANE_Status
+ list_one_device (SANE_String_Const devname)
+ {
+@@ -839,12 +845,7 @@ list_one_device (SANE_String_Const devname)
+ return SANE_STATUS_GOOD;
+ }
+
+- for (tr = available_transports; tr->ttype; tr++) {
+- if (!strncmp (devname, tr->ttype, strlen(tr->ttype)))
+- break;
+- }
+- if (!tr->ttype)
+- return SANE_STATUS_INVAL;
++ tr = tr_from_devname(devname);
+
+ dev = calloc (1, sizeof (struct device));
+ if (dev == NULL)
+@@ -878,13 +879,7 @@ list_one_device (SANE_String_Const devname)
+ static SANE_Status
+ list_conf_devices (UNUSED (SANEI_Config * config), const char *devname)
+ {
+- transport *tr;
+-
+- for (tr = available_transports; tr->ttype; tr++) {
+- if (!strncmp (devname, tr->ttype, strlen(tr->ttype)))
+- return tr->configure_device(devname, list_one_device);
+- }
+- return SANE_STATUS_INVAL;
++ return tr_from_devname(devname)->configure_device(devname, list_one_device);
+ }
+
+ SANE_Status
diff --git a/testing/scim-anthy/PKGBUILD b/testing/scim-anthy/PKGBUILD
new file mode 100644
index 000000000..96d84487d
--- /dev/null
+++ b/testing/scim-anthy/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 148295 2012-01-30 18:50:26Z ibiru $
+# Contributor: damir <damir@archlinux.org>
+# Maintainer: Gaetan Bisson <bisson@archlinux.org>
+
+pkgname=scim-anthy
+pkgver=1.2.7
+pkgrel=3
+_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/testing/scim-chewing/PKGBUILD b/testing/scim-chewing/PKGBUILD
new file mode 100644
index 000000000..d4663373a
--- /dev/null
+++ b/testing/scim-chewing/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 148297 2012-01-30 18:50:28Z ibiru $
+# 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=2
+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/testing/scim-tables/PKGBUILD b/testing/scim-tables/PKGBUILD
new file mode 100644
index 000000000..939c9e907
--- /dev/null
+++ b/testing/scim-tables/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 148299 2012-01-30 18:50:30Z ibiru $
+# Contributor: damir <damir@archlinux.org>
+# Contributor: Gan Lu <rhythm.gan@gmail.com>
+# Maintainer: Gaetan Bisson <bisson@archlinux.org>
+
+pkgname=scim-tables
+pkgver=0.5.10
+pkgrel=2
+pkgdesc='Generic table input method module for SCIM'
+url='http://www.scim-im.org/'
+arch=('i686' 'x86_64')
+license=('GPL')
+depends=('scim')
+options=('!libtool')
+source=("http://downloads.sourceforge.net/sourceforge/scim/${pkgname}-${pkgver}.tar.gz")
+sha1sums=('c6e6fbd9999ceba5cb982349fee8391e16a9c2fe')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --enable-static=no
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/testing/scribus/PKGBUILD b/testing/scribus/PKGBUILD
new file mode 100644
index 000000000..a029b0cfa
--- /dev/null
+++ b/testing/scribus/PKGBUILD
@@ -0,0 +1,50 @@
+# $Id: PKGBUILD 148301 2012-01-30 18:50:32Z ibiru $
+# 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.4.0
+pkgrel=2
+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)
+source=(http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.xz)
+md5sums=('ae19e62399941fb8e868d8e762caf494')
+sha1sums=('0e3afb98a56084c2938a8402df2d89214c42b809')
+
+build() {
+ cd "${srcdir}"
+ sed -i -e 's|#!/usr/bin/python|#!/usr/bin/python2|' \
+ -e 's|#!/usr/bin/env python|#!/usr/bin/env python2|' \
+ ${pkgname}-${pkgver}/scribus/plugins/scriptplugin/{samples,scripts}/*
+ 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/testing/scribus/scribus.install b/testing/scribus/scribus.install
new file mode 100644
index 000000000..0598e46ed
--- /dev/null
+++ b/testing/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/testing/sdl_image/PKGBUILD b/testing/sdl_image/PKGBUILD
new file mode 100644
index 000000000..2900bcf56
--- /dev/null
+++ b/testing/sdl_image/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 148303 2012-01-30 18:50:35Z ibiru $
+# Maintainer: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
+# Contributor: Allan McRae <allan@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=sdl_image
+pkgver=1.2.12
+pkgrel=2
+pkgdesc="A simple library to load images of various formats as SDL surfaces"
+arch=('i686' 'x86_64')
+license=('custom')
+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=('a0f9098ebe5400f0bdc9b62e60797ecb')
+
+build() {
+ cd "$srcdir/SDL_image-$pkgver"
+ ./configure --prefix=/usr --disable-static
+ make
+}
+
+package() {
+ cd "$srcdir/SDL_image-$pkgver"
+ make DESTDIR="$pkgdir" install
+
+ install -Dm644 COPYING "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
+}
diff --git a/testing/skanlite/PKGBUILD b/testing/skanlite/PKGBUILD
new file mode 100644
index 000000000..581744b6f
--- /dev/null
+++ b/testing/skanlite/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 148307 2012-01-30 18:50:40Z ibiru $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Pierre Schmitz <pierre@archlinux.de>
+
+pkgname=skanlite
+pkgver=0.8
+pkgrel=2
+pkgdesc="Image Scanning Application for KDE"
+arch=('i686' 'x86_64')
+url='http://kde-apps.org/content/show.php?content=109803'
+license=('GPL')
+depends=('kdebase-runtime' 'libksane')
+makedepends=('pkgconfig' 'cmake' 'automoc4')
+source=("http://downloads.sourceforge.net/sanewidget/${pkgname}-${pkgver}.tar.bz2")
+md5sums=('baa43dbc78be696e121969b0a3d88929')
+
+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/testing/slim/PKGBUILD b/testing/slim/PKGBUILD
new file mode 100644
index 000000000..f8cbdec4a
--- /dev/null
+++ b/testing/slim/PKGBUILD
@@ -0,0 +1,68 @@
+# $Id: PKGBUILD 148309 2012-01-30 18:50:44Z ibiru $
+# Maintainer: Gaetan Bisson <bisson@archlinux.org>
+# Contributor: Thayer Williams <thayer@archlinux.org>
+# Contributor: Alexander Fehr <pizzapunk gmail com>
+# Contributor: Hugo Ideler <hugoideler@dse.nl>
+
+pkgname=slim
+pkgver=1.3.2
+pkgrel=7
+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')
+source=("http://download.berlios.de/${pkgname}/${pkgname}-${pkgver}.tar.gz"
+ 'rc.d'
+ 'pam.d'
+ 'logrotate'
+ 'ptr_pam.patch'
+ 'no-host.patch'
+ 'restart.patch'
+ 'sigterm.patch'
+ 'session-name.patch'
+ 'tty-slowness.patch'
+ 'slim-1.3.2-libpng15.patch')
+sha1sums=('e421d5487732c8317f8f591906661e014b036358'
+ '6fe0ba83509af634bce47be34e30995965bffc79'
+ 'a0e991ef0ac5120465a3be014a26e70ba073b6ae'
+ 'b969cc902c1d9915a5609141a652c77b2732407b'
+ '640668c984a13593a1bfba8d3b503c005d5f401e'
+ 'b86eddd083fb9f6259e46c735f55ebe76c655bd3'
+ '2d526bc0c498bf307ee50e2d22b4f53ffa0c4435'
+ '0b35048723c527fb824c5e0f9b9064f751871785'
+ 'fdd35562ce010babaeb793f92f9906fdcdaf3f9f'
+ '213fefe8533c845ea8c40585b6a8097820d5e5d2'
+ '3cd674e548f4e0aadbbd32a67b4efd1ed263afef')
+
+install=install
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ sed -i -e 's/png12/png15/g' Makefile
+ patch -p1 -i ../ptr_pam.patch # FS#23995: pointer mishandling confuses PAM
+ patch -p1 -i ../no-host.patch # cf patch: do not set PAM host
+ patch -p1 -i ../restart.patch # cf patch: restart X server if killed
+ patch -p1 -i ../sigterm.patch # FS#23984: do not wait for input when SIGTERM'd
+ patch -p1 -i ../session-name.patch # FS#26693: fix default session name
+ patch -p1 -i ../tty-slowness.patch # FS#18313: fix sluggish TTY after slim start
+ patch -p0 -i ../slim-1.3.2-libpng15.patch
+
+ make USE_PAM=1
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ make DESTDIR="${pkgdir}" MANDIR=/usr/share/man install
+
+ install -D -m755 ../rc.d "${pkgdir}"/etc/rc.d/slim
+ install -D -m644 ../pam.d "${pkgdir}"/etc/pam.d/slim
+ install -D -m644 ../logrotate "${pkgdir}"/etc/logrotate.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/testing/slim/install b/testing/slim/install
new file mode 100644
index 000000000..65aa77d72
--- /dev/null
+++ b/testing/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/testing/slim/logrotate b/testing/slim/logrotate
new file mode 100644
index 000000000..26ec3b0f4
--- /dev/null
+++ b/testing/slim/logrotate
@@ -0,0 +1,9 @@
+/var/log/slim.log {
+ compress
+ rotate 1
+ size 1024k
+ notifempty
+ missingok
+ copytruncate
+ noolddir
+}
diff --git a/testing/slim/no-host.patch b/testing/slim/no-host.patch
new file mode 100644
index 000000000..c40f25bca
--- /dev/null
+++ b/testing/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/testing/slim/pam.d b/testing/slim/pam.d
new file mode 100644
index 000000000..78a981f74
--- /dev/null
+++ b/testing/slim/pam.d
@@ -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/testing/slim/ptr_pam.patch b/testing/slim/ptr_pam.patch
new file mode 100644
index 000000000..3a3fbcdb7
--- /dev/null
+++ b/testing/slim/ptr_pam.patch
@@ -0,0 +1,52 @@
+diff -aur old/app.cpp new/app.cpp
+--- old/app.cpp 2010-07-08 07:04:10.000000000 +0200
++++ new/app.cpp 2011-05-01 18:30:52.933844872 +0200
+@@ -43,8 +43,8 @@
+ Panel* panel = *static_cast<Panel**>(appdata_ptr);
+ int result = PAM_SUCCESS;
+ for (int i=0; i<num_msg; i++){
+- resp[i]->resp=0;
+- resp[i]->resp_retcode=0;
++ (*resp)[i].resp=0;
++ (*resp)[i].resp_retcode=0;
+ switch(msg[i]->msg_style){
+ case PAM_PROMPT_ECHO_ON:
+ // We assume PAM is asking for the username
+@@ -53,13 +53,13 @@
+ case Panel::Suspend:
+ case Panel::Halt:
+ case Panel::Reboot:
+- resp[i]->resp=strdup("root");
++ (*resp)[i].resp=strdup("root");
+ break;
+
+ case Panel::Console:
+ case Panel::Exit:
+ case Panel::Login:
+- resp[i]->resp=strdup(panel->GetName().c_str());
++ (*resp)[i].resp=strdup(panel->GetName().c_str());
+ break;
+ }
+ break;
+@@ -75,7 +75,7 @@
+
+ default:
+ panel->EventHandler(Panel::Get_Passwd);
+- resp[i]->resp=strdup(panel->GetPasswd().c_str());
++ (*resp)[i].resp=strdup(panel->GetPasswd().c_str());
+ break;
+ }
+ break;
+@@ -91,9 +91,9 @@
+ }
+ if (result!=PAM_SUCCESS){
+ for (int i=0; i<num_msg; i++){
+- if (resp[i]->resp==0) continue;
+- free(resp[i]->resp);
+- resp[i]->resp=0;
++ if ((*resp)[i].resp==0) continue;
++ free((*resp)[i].resp);
++ (*resp)[i].resp=0;
+ };
+ free(*resp);
+ *resp=0;
diff --git a/testing/slim/rc.d b/testing/slim/rc.d
new file mode 100755
index 000000000..b0be7ffc5
--- /dev/null
+++ b/testing/slim/rc.d
@@ -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/testing/slim/restart.patch b/testing/slim/restart.patch
new file mode 100644
index 000000000..4e5049000
--- /dev/null
+++ b/testing/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/testing/slim/session-name.patch b/testing/slim/session-name.patch
new file mode 100644
index 000000000..8211c4f72
--- /dev/null
+++ b/testing/slim/session-name.patch
@@ -0,0 +1,21 @@
+diff -Naur slim-1.3.2.old/panel.cpp slim-1.3.2.new/panel.cpp
+--- slim-1.3.2.old/panel.cpp 2010-10-24 06:01:15.117000019 +0000
++++ slim-1.3.2.new/panel.cpp 2010-10-24 17:26:30.987999967 +0000
+@@ -23,7 +23,7 @@
+ Root = root;
+ cfg = config;
+
+- session = "";
++ session = cfg->nextSession(session);
+
+ // Init GC
+ XGCValues gcv;
+@@ -188,7 +188,7 @@
+ }
+
+ void Panel::ClearPanel() {
+- session = "";
++ session = cfg->nextSession(session);
+ Reset();
+ XClearWindow(Dpy, Root);
+ XClearWindow(Dpy, Win);
diff --git a/testing/slim/sigterm.patch b/testing/slim/sigterm.patch
new file mode 100644
index 000000000..fbaeb7116
--- /dev/null
+++ b/testing/slim/sigterm.patch
@@ -0,0 +1,45 @@
+diff -aur old/panel.cpp new/panel.cpp
+--- old/panel.cpp 2011-04-29 15:15:57.210134850 +0200
++++ new/panel.cpp 2011-04-29 15:16:17.260285407 +0200
+@@ -10,6 +10,7 @@
+ */
+
+ #include <sstream>
++#include <poll.h>
+ #include "panel.h"
+
+ using namespace std;
+@@ -288,16 +289,24 @@
+ field=curfield;
+ bool loop = true;
+ OnExpose();
++
++ struct pollfd x11_pfd = {0};
++ x11_pfd.fd = ConnectionNumber(Dpy);
++ x11_pfd.events = POLLIN;
+ while(loop) {
+- XNextEvent(Dpy, &event);
+- switch(event.type) {
+- case Expose:
+- OnExpose();
+- break;
+-
+- case KeyPress:
+- loop=OnKeyPress(event);
+- break;
++ if(XPending(Dpy) || poll(&x11_pfd, 1, -1) > 0) {
++ while(XPending(Dpy)) {
++ XNextEvent(Dpy, &event);
++ switch(event.type) {
++ case Expose:
++ OnExpose();
++ break;
++
++ case KeyPress:
++ loop=OnKeyPress(event);
++ break;
++ }
++ }
+ }
+ }
+
diff --git a/testing/slim/slim-1.3.2-libpng15.patch b/testing/slim/slim-1.3.2-libpng15.patch
new file mode 100644
index 000000000..720608567
--- /dev/null
+++ b/testing/slim/slim-1.3.2-libpng15.patch
@@ -0,0 +1,11 @@
+--- png.c
++++ png.c
+@@ -57,7 +57,7 @@
+ return(0);
+ }
+
+- if (setjmp(png_ptr->jmpbuf))
++ if (setjmp(png_jmpbuf(png_ptr)))
+ {
+ png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp) NULL);
+ fclose(infile);
diff --git a/testing/slim/tty-slowness.patch b/testing/slim/tty-slowness.patch
new file mode 100644
index 000000000..c590fbed8
--- /dev/null
+++ b/testing/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/testing/sox/PKGBUILD b/testing/sox/PKGBUILD
new file mode 100644
index 000000000..dc37308fe
--- /dev/null
+++ b/testing/sox/PKGBUILD
@@ -0,0 +1,37 @@
+# $Id: PKGBUILD 148311 2012-01-30 18:50:47Z ibiru $
+# Maintainer: Eric Bélanger <eric@archlinux.org>
+
+pkgname=sox
+pkgver=14.3.2
+pkgrel=5
+pkgdesc="The Swiss Army knife of sound processing tools"
+arch=('i686' 'x86_64')
+url="http://sox.sourceforge.net/"
+license=('GPL' 'LGPL')
+depends=('libltdl' 'file' 'libsndfile' 'libpng' 'lame' 'opencore-amr')
+makedepends=('ffmpeg' 'libao' 'libmad' 'libid3tag' 'wavpack' 'libpulse')
+optdepends=('libao: for ao plugin'
+ 'ffmpeg: for ffmpeg plugin'
+ 'libmad: for mp3 plugin'
+ 'libid3tag: for mp3 plugin'
+ 'wavpack: for wavpack plugin'
+ 'libpulse: for pulse plugin')
+options=('!libtool')
+source=(http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.bz2
+ sox-14.3.2-ffmpeg.patch)
+sha1sums=('026636c90d7accba76225a2821aaa2ffa6fe41a3'
+ '86caa6aa86a0bf7a048522114d4efd11acbbda70')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -p1 -i "${srcdir}/sox-14.3.2-ffmpeg.patch"
+ sed -i 's|man1/sox.1 soxeffect.7|man1/sox.1.gz soxeffect.7.gz|' Makefile.in
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --with-dyn-default --with-distro="Arch Linux"
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/testing/sox/sox-14.3.2-ffmpeg.patch b/testing/sox/sox-14.3.2-ffmpeg.patch
new file mode 100644
index 000000000..5289b9b47
--- /dev/null
+++ b/testing/sox/sox-14.3.2-ffmpeg.patch
@@ -0,0 +1,40 @@
+Index: sox-14.3.2/src/ffmpeg.c
+===================================================================
+--- sox-14.3.2.orig/src/ffmpeg.c
++++ sox-14.3.2/src/ffmpeg.c
+@@ -91,7 +91,7 @@ static int stream_component_open(priv_t
+
+ if (!codec || avcodec_open(enc, codec) < 0)
+ return -1;
+- if (enc->codec_type != CODEC_TYPE_AUDIO) {
++ if (enc->codec_type != AVMEDIA_TYPE_AUDIO) {
+ lsx_fail("ffmpeg CODEC %x is not an audio CODEC", enc->codec_type);
+ return -1;
+ }
+@@ -182,7 +182,7 @@ static int startread(sox_format_t * ft)
+ /* Find audio stream (FIXME: allow different stream to be selected) */
+ for (i = 0; (unsigned)i < ffmpeg->ctxt->nb_streams; i++) {
+ AVCodecContext *enc = ffmpeg->ctxt->streams[i]->codec;
+- if (enc->codec_type == CODEC_TYPE_AUDIO && ffmpeg->audio_index < 0) {
++ if (enc->codec_type == AVMEDIA_TYPE_AUDIO && ffmpeg->audio_index < 0) {
+ ffmpeg->audio_index = i;
+ break;
+ }
+@@ -273,7 +273,7 @@ static AVStream *add_audio_stream(sox_fo
+
+ c = st->codec;
+ c->codec_id = codec_id;
+- c->codec_type = CODEC_TYPE_AUDIO;
++ c->codec_type = AVMEDIA_TYPE_AUDIO;
+
+ /* put sample parameters */
+ c->bit_rate = 256000; /* FIXME: allow specification */
+@@ -423,7 +423,7 @@ static size_t write_samples(sox_format_t
+ av_init_packet(&pkt);
+ pkt.size = avcodec_encode_audio(c, ffmpeg->audio_buf_aligned, AVCODEC_MAX_AUDIO_FRAME_SIZE, ffmpeg->samples);
+ pkt.pts = av_rescale_q(c->coded_frame->pts, c->time_base, ffmpeg->audio_st->time_base);
+- pkt.flags |= PKT_FLAG_KEY;
++ pkt.flags |= AV_PKT_FLAG_KEY;
+ pkt.stream_index = ffmpeg->audio_st->index;
+ pkt.data = ffmpeg->audio_buf_aligned;
+
diff --git a/testing/streamtuner/PKGBUILD b/testing/streamtuner/PKGBUILD
new file mode 100644
index 000000000..ba6812d9c
--- /dev/null
+++ b/testing/streamtuner/PKGBUILD
@@ -0,0 +1,49 @@
+# $Id: PKGBUILD 148313 2012-01-30 18:50:49Z ibiru $
+# Contributor: Greg Grabinski <greg@grabinski.ch>
+# Maintainer: ndreas Radke <andyrtr@archlinux.org>
+
+pkgname=streamtuner
+pkgver=0.99.99
+pkgrel=12
+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
+ patch -p0 -i ${srcdir}/streamtuner-0.99.99-pygtk-2.6.diff
+ # fix http://bugs.archlinux.org/task/10308
+ patch -p0 -i ${srcdir}/streamtuner-0.99.99-shoutcast.diff
+ # fix http://bugs.archlinux.org/task/11463
+ patch -p1 -i ${srcdir}/shoutcast-redesign-patch.diff
+
+ # 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/testing/streamtuner/shoutcast-redesign-patch.diff b/testing/streamtuner/shoutcast-redesign-patch.diff
new file mode 100644
index 000000000..644e2273e
--- /dev/null
+++ b/testing/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/testing/streamtuner/streamtuner-0.99.99-shoutcast.diff b/testing/streamtuner/streamtuner-0.99.99-shoutcast.diff
new file mode 100644
index 000000000..e7fcbca94
--- /dev/null
+++ b/testing/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/testing/sudo/PKGBUILD b/testing/sudo/PKGBUILD
new file mode 100644
index 000000000..c3f098779
--- /dev/null
+++ b/testing/sudo/PKGBUILD
@@ -0,0 +1,40 @@
+# $Id: PKGBUILD 148394 2012-01-31 03:32:26Z allan $
+# Maintainer: Allan McRae <allan@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=sudo
+_ver=1.8.3p2
+pkgver=${_ver/[a-z]/.${_ver//[0-9.]/}}
+pkgrel=2
+pkgdesc="Give certain users the ability to run some commands as root"
+arch=('i686' 'x86_64')
+url="http://www.sudo.ws/sudo/"
+license=('custom')
+depends=('glibc' 'pam')
+backup=('etc/sudoers' 'etc/pam.d/sudo')
+options=('!libtool' '!makeflags')
+source=(ftp://ftp.sudo.ws/pub/sudo/$pkgname-$_ver.tar.gz{,.sig}
+ sudo.pam)
+md5sums=('6d4282a1530c541f7900fa8dfcf2a882'
+ '07e3c5c79d78db50674d5ad17963d631'
+ '4e7ad4ec8f2fe6a40e12bcb2c0b256e3')
+
+build() {
+ cd "$srcdir/$pkgname-$_ver"
+
+ ./configure --prefix=/usr --with-pam --libexecdir=/usr/lib \
+ --with-env-editor --with-all-insults --with-logfac=auth
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$_ver"
+ install -dm755 "$pkgdir/var/lib"
+
+ make DESTDIR="$pkgdir" install
+ chmod 755 $pkgdir/var/db
+
+ install -Dm644 "$srcdir/sudo.pam" "$pkgdir/etc/pam.d/sudo"
+
+ install -Dm644 doc/LICENSE "$pkgdir/usr/share/licenses/sudo/LICENSE"
+}
diff --git a/testing/sudo/sudo.pam b/testing/sudo/sudo.pam
new file mode 100644
index 000000000..4e586cd22
--- /dev/null
+++ b/testing/sudo/sudo.pam
@@ -0,0 +1,3 @@
+#%PAM-1.0
+auth required pam_unix.so
+auth required pam_nologin.so
diff --git a/testing/tracker/PKGBUILD b/testing/tracker/PKGBUILD
new file mode 100644
index 000000000..76bd7ed5f
--- /dev/null
+++ b/testing/tracker/PKGBUILD
@@ -0,0 +1,84 @@
+# $Id: PKGBUILD 148319 2012-01-30 18:50:58Z ibiru $
+# Maintainer: Jan "heftig" Steffens <jan.steffens@gmail.com>
+# Contributor: Sergej Pupykin <pupykin.s+arch@gmail.com>
+# Contributor: Alexander Fehr <pizzapunk gmail com>
+
+pkgbase=tracker
+pkgname=(tracker libtracker-sparql)
+pkgver=0.12.9
+_tver=${pkgver%.*}
+pkgrel=2
+pkgdesc="All-in-one indexer, search tool and metadata database"
+arch=('i686' 'x86_64')
+license=('GPL')
+makedepends=('libgee' 'libgnome-keyring' 'upower' 'libexif' 'exempi'
+ 'poppler-glib' 'libgsf' 'icu' 'enca' 'networkmanager' 'gtk3'
+ 'desktop-file-utils' 'hicolor-icon-theme' 'gobject-introspection'
+ 'intltool' 'giflib' 'gstreamer0.10-base' 'totem-plparser'
+ 'taglib' 'nautilus' 'gnome-panel' 'libvorbis' 'flac' 'vala')
+url="http://www.gnome.org"
+options=('!libtool' '!emptydirs')
+source=(http://ftp.gnome.org/pub/gnome/sources/$pkgbase/$_tver/$pkgbase-$pkgver.tar.xz)
+sha256sums=('ccd61c8f79905f7e09af3a4a863772256601dcd3213b0f9a3f76add04e553b5c')
+
+build() {
+ cd "$srcdir/$pkgbase-$pkgver"
+
+ ./configure \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --libexecdir=/usr/lib/tracker \
+ --disable-unit-tests \
+ --enable-libflac \
+ --enable-libvorbis
+
+ sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0 /g' -e 's/ if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then/ func_append compile_command " -Wl,-O1,--as-needed"\n func_append finalize_command " -Wl,-O1,--as-needed"\n\0/' libtool
+
+ make
+}
+
+package_tracker() {
+ depends=("libtracker-sparql=$pkgver-$pkgrel" 'libgee' 'libgnome-keyring'
+ 'upower' 'libexif' 'exempi' 'poppler-glib' 'libgsf' 'enca'
+ 'networkmanager' 'gtk3' 'desktop-file-utils' 'hicolor-icon-theme')
+ optdepends=('giflib: extractor for GIF data'
+ 'gstreamer0.10-base: video extractor'
+ 'totem-plparser: playlist support'
+ 'nautilus: nautilus-extension'
+ 'libvorbis: Vorbis metadata extractor'
+ 'flac: FLAC metadata extractor'
+ 'taglib: writeback for audio files'
+ 'gnome-panel: tracker-search-bar')
+ groups=('gnome-extra')
+ install=tracker.install
+
+ cd "$srcdir/$pkgbase-$pkgver"
+ make DESTDIR="$pkgdir" install
+
+### Split libtracker-sparql
+
+ mkdir -p "$srcdir"/sparql/usr/{include,lib}/tracker-$_tver
+ mkdir -p "$srcdir"/sparql/usr/lib/{girepository-1.0,pkgconfig}
+ mkdir -p "$srcdir"/sparql/usr/share/{gir-1.0,vala/vapi}
+
+ mv "$pkgdir"/usr/lib/libtracker-sparql-* "$srcdir/sparql/usr/lib"
+
+ mv "$pkgdir"/usr/lib/tracker-$_tver/*.so* \
+ "$srcdir/sparql/usr/lib/tracker-$_tver"
+
+ mv "$pkgdir"/usr/share/vala/vapi/tracker-sparql-* \
+ "$srcdir/sparql/usr/share/vala/vapi"
+
+ mv {"$pkgdir","$srcdir/sparql"}/usr/include/tracker-$_tver/libtracker-sparql
+ mv {"$pkgdir","$srcdir/sparql"}/usr/lib/girepository-1.0/Tracker-$_tver.typelib
+ mv {"$pkgdir","$srcdir/sparql"}/usr/lib/pkgconfig/tracker-sparql-$_tver.pc
+ mv {"$pkgdir","$srcdir/sparql"}/usr/share/gir-1.0/Tracker-$_tver.gir
+}
+
+package_libtracker-sparql() {
+ pkgdesc="$pkgdesc (SPARQL library)"
+ depends=('sqlite3' 'icu' 'glib2' 'libffi' 'pcre' 'util-linux')
+
+ mv "$srcdir"/sparql/* "$pkgdir"
+}
diff --git a/testing/tracker/tracker.install b/testing/tracker/tracker.install
new file mode 100644
index 000000000..95114273e
--- /dev/null
+++ b/testing/tracker/tracker.install
@@ -0,0 +1,13 @@
+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
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/testing/transcode/PKGBUILD b/testing/transcode/PKGBUILD
new file mode 100644
index 000000000..3de62545c
--- /dev/null
+++ b/testing/transcode/PKGBUILD
@@ -0,0 +1,61 @@
+# $Id: PKGBUILD 148321 2012-01-30 18:51:01Z ibiru $
+# Maintainer:
+# Contributor: Sarah Hay <sarahhay@mb.sympatico.ca>
+# Contributor: roberto <roberto@archlinux.org>
+
+pkgname=transcode
+_sripver=0.3-4
+pkgver=1.1.7
+pkgrel=4
+pkgdesc="A video/DVD ripper and encoder for the terminal/console"
+arch=('i686' 'x86_64')
+url="http://tcforge.berlios.de/"
+license=('GPL')
+depends=('gawk' 'imagemagick' 'lzo2' 'libdvdread' 'ffmpeg' 'mjpegtools'
+ 'libmpeg2' 'libxaw' 'libxml2' 'libxv' 'a52dec')
+makedepends=('nasm')
+options=('!libtool')
+source=(https://bitbucket.org/france/transcode-tcforge/downloads/${pkgname}-${pkgver}.tar.bz2
+ http://downloads.sourceforge.net/sourceforge/subtitleripper/subtitleripper-${_sripver}.tgz
+ subtitleripper-0.3.4-linkingorder.patch subtitleripper-0.3.4-respect-ldflags.patch
+ ffmpeg-0.10.patch)
+sha1sums=('e35df68b960eb56ef0a59a4cdbed1491be56aee6'
+ 'd93ff3578dd5f722c8f4ef16bc0903eec5781a0d'
+ 'fa05aa1770d9350d90b7cf315aa7c4a1fd921ac7'
+ '591943a33235342a66c3df0625a164a1479c09ae'
+ '3c03111cfae88db918afff3837cec7db32ace3cc')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ patch -Np1 -i "${srcdir}/ffmpeg-0.10.patch"
+ ./configure --prefix=/usr \
+ --disable-sse --disable-sse2 --disable-altivec --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
+ make
+
+ cd "${srcdir}/subtitleripper"
+ patch -p1 -i "${srcdir}/subtitleripper-0.3.4-linkingorder.patch"
+ patch -p1 -i "${srcdir}/subtitleripper-0.3.4-respect-ldflags.patch"
+ 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 "${srcdir}/subtitleripper"
+ 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/testing/transcode/ffmpeg-0.10.patch b/testing/transcode/ffmpeg-0.10.patch
new file mode 100644
index 000000000..5965c180c
--- /dev/null
+++ b/testing/transcode/ffmpeg-0.10.patch
@@ -0,0 +1,14 @@
+diff -Nur transcode-1.1.7.orig/filter/filter_pp.c transcode-1.1.7/filter/filter_pp.c
+--- transcode-1.1.7.orig/filter/filter_pp.c 2012-01-27 19:55:13.706613234 +0000
++++ transcode-1.1.7/filter/filter_pp.c 2012-01-27 19:56:04.719541629 +0000
+@@ -38,8 +38,8 @@
+
+ /* FIXME: these use the filter ID as an index--the ID can grow
+ * arbitrarily large, so this needs to be fixed */
+-static pp_mode_t *mode[100];
+-static pp_context_t *context[100];
++static pp_mode *mode[100];
++static pp_context *context[100];
+ static int width[100], height[100];
+ static int pre[100];
+
diff --git a/testing/transcode/subtitleripper-0.3.4-linkingorder.patch b/testing/transcode/subtitleripper-0.3.4-linkingorder.patch
new file mode 100644
index 000000000..7efe22346
--- /dev/null
+++ b/testing/transcode/subtitleripper-0.3.4-linkingorder.patch
@@ -0,0 +1,28 @@
+Index: subtitleripper/Makefile
+===================================================================
+--- subtitleripper.orig/Makefile
++++ subtitleripper/Makefile
+@@ -70,19 +70,19 @@ vobsub2pgm.o: vobsub2pgm.c vobsub.h spud
+ # Target
+ subtitle2pgm: subtitle2pgm.o spudec.o
+ @echo "Linking $@"
+- @$(CC) $(LIBS) $^ -o $@
++ @$(CC) $^ -o $@ $(LIBS)
+
+ subtitle2vobsub: subtitle2vobsub.o vobsub.o
+ @echo "Linking $@"
+- @$(CC) $(LIBS) $^ -o $@
++ @$(CC) $^ -o $@ $(LIBS)
+
+ srttool: srttool.o
+ @echo "Linking $@"
+- @$(CC) $(LIBS) -g $^ -o $@
++ @$(CC) -g $^ -o $@ $(LIBS)
+
+ vobsub2pgm: vobsub2pgm.o vobsub.o spudec.o
+ @echo "Linking $@"
+- @$(CC) $(LIBS) -g $^ -o $@
++ @$(CC) -g $^ -o $@ $(LIBS)
+
+ .PHONY: clean dist rpm
+ clean:
diff --git a/testing/transcode/subtitleripper-0.3.4-respect-ldflags.patch b/testing/transcode/subtitleripper-0.3.4-respect-ldflags.patch
new file mode 100644
index 000000000..2af11d257
--- /dev/null
+++ b/testing/transcode/subtitleripper-0.3.4-respect-ldflags.patch
@@ -0,0 +1,28 @@
+Index: subtitleripper/Makefile
+===================================================================
+--- subtitleripper.orig/Makefile
++++ subtitleripper/Makefile
+@@ -70,19 +70,19 @@ vobsub2pgm.o: vobsub2pgm.c vobsub.h spud
+ # Target
+ subtitle2pgm: subtitle2pgm.o spudec.o
+ @echo "Linking $@"
+- @$(CC) $^ -o $@ $(LIBS)
++ @$(CC) $(LDFLAGS) $^ -o $@ $(LIBS)
+
+ subtitle2vobsub: subtitle2vobsub.o vobsub.o
+ @echo "Linking $@"
+- @$(CC) $^ -o $@ $(LIBS)
++ @$(CC) $(LDFLAGS) $^ -o $@ $(LIBS)
+
+ srttool: srttool.o
+ @echo "Linking $@"
+- @$(CC) -g $^ -o $@ $(LIBS)
++ @$(CC) $(LDFLAGS) $^ -o $@ $(LIBS)
+
+ vobsub2pgm: vobsub2pgm.o vobsub.o spudec.o
+ @echo "Linking $@"
+- @$(CC) -g $^ -o $@ $(LIBS)
++ @$(CC) $(LDFLAGS) $^ -o $@ $(LIBS)
+
+ .PHONY: clean dist rpm
+ clean:
diff --git a/testing/transfig/LICENSE b/testing/transfig/LICENSE
new file mode 100644
index 000000000..b944bb992
--- /dev/null
+++ b/testing/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/testing/transfig/PKGBUILD b/testing/transfig/PKGBUILD
new file mode 100644
index 000000000..c0f82aeb1
--- /dev/null
+++ b/testing/transfig/PKGBUILD
@@ -0,0 +1,37 @@
+# $Id: PKGBUILD 148323 2012-01-30 18:51:04Z ibiru $
+# Maintainer: Eric Bélanger <eric@archlinux.org>
+
+pkgname=transfig
+pkgver=3.2.5d
+pkgrel=1
+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 \
+ transfig-3.2.5d-libpng-1.5.patch)
+sha1sums=('90ff277cc9b3fa0d0313052fcf5e3ffad8652abc'
+ 'b8b712871615308b8b6add92f86d218437d652f2'
+ '9f9f332b0b31e58e59542bc1568df9617b71710a')
+
+build() {
+ cd "${srcdir}/${pkgname}.${pkgver}"
+ sed -i 's/XCOMM USELATEX2E = -DLATEX2E/USELATEX2E = -DLATEX2E/' transfig/Imakefile
+ sed -i 's/XCOMM USEINLINE = -DUSE_INLINE/USEINLINE = -DUSE_INLINE/' fig2dev/Imakefile
+ patch -p1 -i ../transfig-3.2.5d-libpng-1.5.patch
+
+ xmkmf
+ make FIG2DEV_LIBDIR=/usr/share/fig2dev Makefiles
+ make FIG2DEV_LIBDIR=/usr/share/fig2dev XFIGLIBDIR=/usr/share/xfig
+}
+
+package() {
+ cd "${srcdir}/${pkgname}.${pkgver}"
+
+ make DESTDIR="${pkgdir}" XFIGLIBDIR=/usr/share/xfig \
+ FIG2DEV_LIBDIR=/usr/share/fig2dev MANPATH=/usr/share/man \
+ install install.man
+ install -Dm644 ../LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+}
diff --git a/testing/transfig/transfig-3.2.5d-libpng-1.5.patch b/testing/transfig/transfig-3.2.5d-libpng-1.5.patch
new file mode 100644
index 000000000..e6f15e43e
--- /dev/null
+++ b/testing/transfig/transfig-3.2.5d-libpng-1.5.patch
@@ -0,0 +1,39 @@
+http://bugs.gentoo.org/show_bug.cgi?id=356751
+
+Index: transfig.3.2.5d/fig2dev/dev/readpng.c
+===================================================================
+--- transfig.3.2.5d.orig/fig2dev/dev/readpng.c
++++ transfig.3.2.5d/fig2dev/dev/readpng.c
+@@ -62,7 +62,7 @@ read_png(file,filetype,pic,llx,lly)
+ }
+
+ /* set long jump here */
+- if (setjmp(png_ptr->jmpbuf)) {
++ if (setjmp(png_jmpbuf(png_ptr))) {
+ /* if we get here there was a problem reading the file */
+ png_destroy_read_struct(&png_ptr, &info_ptr, &end_info);
+ return 0;
+@@ -78,15 +78,17 @@ read_png(file,filetype,pic,llx,lly)
+ png_get_IHDR(png_ptr, info_ptr, &w, &h, &bit_depth, &color_type,
+ &interlace_type, &compression_type, &filter_type);
+
+- if (info_ptr->valid & PNG_INFO_gAMA)
+- png_set_gamma(png_ptr, 2.2, info_ptr->gamma);
+- else
+- png_set_gamma(png_ptr, 2.2, 0.45);
++ png_fixed_point gamma = 0.45;
++ png_get_gAMA_fixed(png_ptr,info_ptr,&gamma);
++ png_set_gamma(png_ptr, 2.2, gamma);
+
+- if (info_ptr->valid & PNG_INFO_bKGD)
++ if (png_get_valid(png_ptr,info_ptr,PNG_INFO_bKGD)) {
+ /* set the background to the one supplied */
+- png_set_background(png_ptr, &info_ptr->background,
++ png_color_16p background;
++ png_get_bKGD(png_ptr,info_ptr,&background);
++ png_set_background(png_ptr, background,
+ PNG_BACKGROUND_GAMMA_FILE, 1, 1.0);
++ }
+ else {
+ /* blend the canvas background using the alpha channel */
+ if (bgspec) {
diff --git a/testing/tumbler/PKGBUILD b/testing/tumbler/PKGBUILD
new file mode 100644
index 000000000..c9bced30c
--- /dev/null
+++ b/testing/tumbler/PKGBUILD
@@ -0,0 +1,44 @@
+# $Id: PKGBUILD 148325 2012-01-30 18:51:06Z ibiru $
+# Maintainer: Evangelos Foutras <evangelos@foutrelis.com>
+# Contributor: Andreas Radke <andyrtr@archlinux.org>
+# Contributor: Jan Jezek <honzin.jezek@gmail.com>
+
+pkgname=tumbler
+pkgver=0.1.23
+pkgrel=4
+pkgdesc="D-Bus service for applications to request thumbnails"
+arch=('i686' 'x86_64')
+url="http://git.xfce.org/xfce/tumbler/"
+license=('GPL2' 'LGPL')
+groups=('xfce4')
+depends=('dbus-glib' 'gdk-pixbuf2')
+makedepends=('intltool' 'ffmpegthumbnailer' 'gstreamer0.10' 'poppler-glib'
+ 'libgsf' 'libopenraw' 'freetype2')
+optdepends=('ffmpegthumbnailer: for video thumbnails'
+ 'gstreamer0.10: for video thumbnails'
+ 'poppler-glib: for PDF thumbnails'
+ 'libgsf: for ODF thumbnails'
+ 'libopenraw: for RAW thumbnails'
+ 'freetype2: for font thumbnails')
+options=('!libtool')
+source=(http://archive.xfce.org/src/apps/$pkgname/0.1/$pkgname-$pkgver.tar.bz2)
+sha256sums=('b3066d17b7e1fee5135eb876a7c2c50a1221bd0d447c3dd7c36efe6d7f3874cb')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ ./configure \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --libexecdir=/usr/lib/xfce4 \
+ --disable-static \
+ --disable-debug
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make DESTDIR="$pkgdir" install
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/testing/tuxpuck/PKGBUILD b/testing/tuxpuck/PKGBUILD
new file mode 100644
index 000000000..2d6b5ce5e
--- /dev/null
+++ b/testing/tuxpuck/PKGBUILD
@@ -0,0 +1,41 @@
+# $Id: PKGBUILD 148327 2012-01-30 18:51:09Z ibiru $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=tuxpuck
+pkgver=0.8.2
+pkgrel=5
+pkgdesc="Airhockey with tux"
+arch=('i686' 'x86_64')
+url="http://home.no.net/munsuun/tuxpuck/"
+license=('GPL2')
+depends=('libjpeg' 'sdl' 'libpng' 'libvorbis')
+makedepends=('freetype2')
+options=('!makeflags')
+source=("http://ftp.de.debian.org/debian/pool/main/t/${pkgname}/${pkgname}_$pkgver.orig.tar.gz"
+ 'tuxpuck-0.8.2-ldflags.patch'
+ 'tuxpuck-0.8.2-libpng15.patch')
+md5sums=('fc839abc2b1f3eafae397e1ed6487079'
+ 'cb914d211bf3f519b7700fda180612b0'
+ 'a4da530d670a0c30ac0840aab1db0dca')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+
+ sed -i 's|usr/man|usr/share/man|' Makefile
+ sed -i -e 's/-Werror//' \
+ -e '/^CC/d' \
+ Makefile \
+ utils/Makefile \
+ data/Makefile
+
+ patch -Np0 -i "${srcdir}/tuxpuck-0.8.2-ldflags.patch"
+ patch -Np0 -i "${srcdir}/tuxpuck-0.8.2-libpng15.patch"
+
+ make
+}
+
+package() {
+ cd $srcdir/$pkgname-$pkgver
+
+ make DESTDIR=$pkgdir install
+}
diff --git a/testing/tuxpuck/tuxpuck-0.8.2-ldflags.patch b/testing/tuxpuck/tuxpuck-0.8.2-ldflags.patch
new file mode 100644
index 000000000..28fcef48a
--- /dev/null
+++ b/testing/tuxpuck/tuxpuck-0.8.2-ldflags.patch
@@ -0,0 +1,11 @@
+--- Makefile.old 2010-10-05 10:34:57.000000000 +0200
++++ Makefile 2010-10-05 10:35:28.000000000 +0200
+@@ -20,7 +20,7 @@
+
+ $(NAME) : $(OBJS)
+ cd data; $(MAKE)
+- $(CC) $(CFLAGS) $(OBJS) data/libdata.a `sdl-config --libs` -lm -lpng \
++ $(CC) $(LDFLAGS) $(CFLAGS) $(OBJS) data/libdata.a `sdl-config --libs` -lm -lpng \
+ -ljpeg -lz -lvorbisfile -lvorbis -logg -o $(NAME)
+
+ w32icon.o : data/icons/tuxpuck.ico
diff --git a/testing/tuxpuck/tuxpuck-0.8.2-libpng15.patch b/testing/tuxpuck/tuxpuck-0.8.2-libpng15.patch
new file mode 100644
index 000000000..ca9539f39
--- /dev/null
+++ b/testing/tuxpuck/tuxpuck-0.8.2-libpng15.patch
@@ -0,0 +1,63 @@
+--- png.c.old 2011-09-14 16:25:54.415338149 +0200
++++ png.c 2011-09-14 17:41:02.190803110 +0200
+@@ -38,6 +38,8 @@
+ png_color_16 *transv;
+ SDL_RWops *src = NULL;
+ Uint32 size;
++ int num_palette;
++ png_colorp png_palette;
+
+ memcpy(&size, data, sizeof(Uint32));
+ if (memcounter)
+@@ -74,7 +76,7 @@
+ * the normal method of doing things with libpng). REQUIRED unless you
+ * set up your own error handlers in png_create_read_struct() earlier.
+ */
+- if (setjmp(png_ptr->jmpbuf)) {
++ if (setjmp(png_jmpbuf(png_ptr))) {
+ SDL_SetError("Error reading the PNG file.");
+ goto done;
+ }
+@@ -142,9 +144,9 @@
+ Rmask = 0x000000FF;
+ Gmask = 0x0000FF00;
+ Bmask = 0x00FF0000;
+- Amask = (info_ptr->channels == 4) ? 0xFF000000 : 0;
++ Amask = (png_get_channels(png_ptr, info_ptr) == 4) ? 0xFF000000 : 0;
+ } else {
+- int s = (info_ptr->channels == 4) ? 0 : 8;
++ int s = (png_get_channels(png_ptr, info_ptr) == 4) ? 0 : 8;
+ Rmask = 0xFF000000 >> s;
+ Gmask = 0x00FF0000 >> s;
+ Bmask = 0x0000FF00 >> s;
+@@ -152,7 +154,7 @@
+ }
+ }
+ surface = SDL_AllocSurface(SDL_SWSURFACE, width, height,
+- bit_depth * info_ptr->channels, Rmask, Gmask,
++ bit_depth * png_get_channels(png_ptr, info_ptr), Rmask, Gmask,
+ Bmask, Amask);
+ if (surface == NULL) {
+ SDL_SetError("Out of memory");
+@@ -197,12 +199,15 @@
+ palette->colors[i].g = i;
+ palette->colors[i].b = i;
+ }
+- } else if (info_ptr->num_palette > 0) {
+- palette->ncolors = info_ptr->num_palette;
+- for (i = 0; i < info_ptr->num_palette; ++i) {
+- palette->colors[i].b = info_ptr->palette[i].blue;
+- palette->colors[i].g = info_ptr->palette[i].green;
+- palette->colors[i].r = info_ptr->palette[i].red;
++ } else {
++ png_get_PLTE(png_ptr, info_ptr, &png_palette, &num_palette);
++ if (num_palette > 0) {
++ palette->ncolors = num_palette;
++ for (i = 0; i < num_palette; ++i) {
++ palette->colors[i].b = png_palette[i].blue;
++ palette->colors[i].g = png_palette[i].green;
++ palette->colors[i].r = png_palette[i].red;
++ }
+ }
+ }
+ }
diff --git a/testing/unison/PKGBUILD b/testing/unison/PKGBUILD
new file mode 100644
index 000000000..5777976f5
--- /dev/null
+++ b/testing/unison/PKGBUILD
@@ -0,0 +1,51 @@
+# $Id: PKGBUILD 148329 2012-01-30 18:51:12Z ibiru $
+#Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=unison
+pkgver=2.40.63
+pkgrel=3
+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')
+optdepends=('gtk2: for gtk2 support')
+source=(http://www.cis.upenn.edu/~bcpierce/unison/download/releases/stable/$pkgname-$pkgver.tar.gz
+ $pkgname.desktop)
+md5sums=('3281207850cf6f0a17fe73f371893bd3'
+ '2daecba7705455a8e4b769e48b059872')
+options=(!makeflags)
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ CFLAGS=""
+ make clean
+ make mkProjectInfo
+ make UISTYLE=text DEBUGGING=false THREADS=true
+ mv unison unison-text
+
+ # 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 "$pkgdir"/usr/bin/unison-gtk
+ # clean the builddir and rebuild with gtk2 support
+ make clean
+ make mkProjectInfo
+ make UISTYLE=gtk2 DEBUGGING=false THREADS=true
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ install -Dm755 unison-text "$pkgdir"/usr/bin/unison
+ install -Dm755 unison "$pkgdir"/usr/bin/unison-gtk2
+ # install a .desktop file; create a compliant icon from ico file and install the png
+ install -Dm644 ../$pkgname.desktop "$pkgdir"/usr/share/applications/$pkgname.desktop
+ convert win32rc/U.ico unison.png
+ install -Dm644 ${pkgname}-1.png "$pkgdir"/usr/share/pixmaps/$pkgname.png
+ # make symlink for .desktop file
+ cd "$pkgdir"/usr/bin
+ ln -s unison-gtk2 unison-x11
+}
diff --git a/testing/unison/unison-ssh-ocaml.patch b/testing/unison/unison-ssh-ocaml.patch
new file mode 100644
index 000000000..1b9c66c7f
--- /dev/null
+++ b/testing/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/testing/unison/unison.desktop b/testing/unison/unison.desktop
new file mode 100644
index 000000000..3a7e1d762
--- /dev/null
+++ b/testing/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/testing/unison/unison.install b/testing/unison/unison.install
new file mode 100644
index 000000000..a3790ab7d
--- /dev/null
+++ b/testing/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/testing/vice/PKGBUILD b/testing/vice/PKGBUILD
new file mode 100644
index 000000000..df9620dba
--- /dev/null
+++ b/testing/vice/PKGBUILD
@@ -0,0 +1,35 @@
+# $Id: PKGBUILD 148331 2012-01-30 18:51:15Z ibiru $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=vice
+pkgver=2.3
+pkgrel=5
+pkgdesc="A Versatile Commodore Emulator"
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://www.viceteam.org/"
+depends=('alsa-lib' 'gcc-libs' 'giflib' 'lame' 'libxrandr'
+ 'libxv' 'libjpeg' 'libpng' '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
+ ./configure --prefix=/usr \
+ --with-alsa \
+ --enable-fullscreen
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/testing/vice/vice-2.3-x11video.patch b/testing/vice/vice-2.3-x11video.patch
new file mode 100644
index 000000000..d698638c6
--- /dev/null
+++ b/testing/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/testing/vigra/PKGBUILD b/testing/vigra/PKGBUILD
new file mode 100644
index 000000000..e6dfaa465
--- /dev/null
+++ b/testing/vigra/PKGBUILD
@@ -0,0 +1,69 @@
+# $Id: PKGBUILD 148333 2012-01-30 18:51:18Z ibiru $
+# Maintainer: AndyRTR <andyrtr@archlinux.org>
+# Contributor: Lukas Jirkovsky <l.jirkovsky@gmail.com>
+
+pkgbase=vigra
+pkgname=('vigra' 'vigra-doc')
+pkgver=1.8.0
+pkgrel=3
+arch=('i686' 'x86_64')
+url="http://hci.iwr.uni-heidelberg.de/vigra/"
+license=('custom:MIT')
+makedepends=(# runtime deps
+ 'libpng>=1.5.7' 'libtiff>=4.0.0' 'gcc-libs' 'sh' 'hdf5>=1.8.7' 'fftw'
+ # additional makedeps
+ 'cmake' 'python-nose' 'doxygen' 'python-sphinx' 'boost' 'python-numpy')
+options=('!libtool')
+source=(http://kogs-www.informatik.uni-hamburg.de/~koethe/vigra/${pkgname}-${pkgver}-src.tar.gz
+ vigra-1.7.1.gcc460.patch)
+md5sums=('15c5544448e529ee60020758ab6be264'
+ '25ef8bc26bc38ee67e5b512d2acd0166')
+sha1sums=('09f1d506c2748ebeb7d9f1c77ce387f9e7b837d2'
+ '1de6381a74dd136ea25df5a27f249187b0dbd17e')
+
+build() {
+ cd "${srcdir}"/${pkgbase}-${pkgver}
+ patch -Np1 -i ${srcdir}/vigra-1.7.1.gcc460.patch
+ cmake -DCMAKE_INSTALL_PREFIX=/usr \
+ -DPYTHON_EXECUTABLE=/usr/bin/python2 \
+ -DWITH_VIGRANUMPY=1 \
+ -DDOCINSTALL=share/doc
+ make
+}
+
+check() {
+ cd "${srcdir}"/${pkgname}-${pkgver}
+ make -k check || /bin/true # i686 fails
+}
+
+package_vigra() {
+ pkgdesc="Computer vision library"
+ depends=('libpng>=1.5.7' 'libtiff>=4.0.0' 'gcc-libs' 'sh' 'hdf5>=1.8.7' 'fftw')
+ optdepends=('python2: for python bindings'
+ 'boost-libs: for python bindings')
+
+ cd "${srcdir}"/${pkgbase}-${pkgver}
+ make DESTDIR="${pkgdir}" install
+ # license
+ install -D -m644 LICENSE.txt "${pkgdir}"/usr/share/licenses/${pkgname}/LICENSE
+
+ # remove doc
+ rm -rf "${pkgdir}"/usr/share/doc
+
+ #fix shebang for python2
+ sed -i 's|python$|python2|' "$pkgdir"/usr/bin/vigra-config
+}
+
+package_vigra-doc() {
+ pkgdesc="Computer vision library - documentation and examples"
+ #depends=('vigra')
+ #arch=('any')
+
+ cd "${srcdir}"/${pkgbase}-${pkgver}
+ make DESTDIR="${pkgdir}" install
+ # cleanup
+ rm -rf "${pkgdir}"/usr/{bin,include,lib}
+
+ # license
+ install -D -m644 LICENSE.txt "${pkgdir}"/usr/share/licenses/${pkgname}/LICENSE
+}
diff --git a/testing/vigra/vigra-1.7.1.gcc460.patch b/testing/vigra/vigra-1.7.1.gcc460.patch
new file mode 100644
index 000000000..46f194dbc
--- /dev/null
+++ b/testing/vigra/vigra-1.7.1.gcc460.patch
@@ -0,0 +1,33 @@
+diff -baur vigra-1.7.1.old/include/vigra/random_forest.hxx vigra-1.7.1/include/vigra/random_forest.hxx
+--- vigra-1.7.1.old/include/vigra/random_forest.hxx 2010-12-03 17:40:34.000000000 +0000
++++ vigra-1.7.1/include/vigra/random_forest.hxx 2011-01-28 00:16:32.000000000 +0000
+@@ -43,6 +43,7 @@
+ #include <set>
+ #include <list>
+ #include <numeric>
++#include <stddef.h>
+ #include "mathutil.hxx"
+ #include "array_vector.hxx"
+ #include "sized_int.hxx"
+diff -baur vigra-1.7.1.old/include/vigra/sifImport.hxx vigra-1.7.1/include/vigra/sifImport.hxx
+--- vigra-1.7.1.old/include/vigra/sifImport.hxx 2010-12-03 17:40:34.000000000 +0000
++++ vigra-1.7.1/include/vigra/sifImport.hxx 2011-01-28 00:23:31.000000000 +0000
+@@ -57,6 +57,7 @@
+ #include <fstream>
+ #include <cstring>
+ #include <vector>
++#include <stddef.h>
+ #include "vigra/multi_array.hxx"
+
+ namespace vigra {
+diff -baur vigra-1.7.1.old/include/vigra/multi_iterator.hxx vigra-1.7.1/include/vigra/multi_iterator.hxx
+--- vigra-1.7.1.old/include/vigra/multi_iterator.hxx 2010-12-03 17:40:34.000000000 +0000
++++ vigra-1.7.1/include/vigra/multi_iterator.hxx 2011-01-28 00:23:31.000000000 +0000
+@@ -41,6 +41,7 @@
+ #define VIGRA_MULTI_ITERATOR_HXX
+
+ #include <sys/types.h>
++#include <stddef.h>
+ #include "tinyvector.hxx"
+ #include "iteratortags.hxx"
+
diff --git a/testing/vlc/PKGBUILD b/testing/vlc/PKGBUILD
new file mode 100644
index 000000000..4c358d6de
--- /dev/null
+++ b/testing/vlc/PKGBUILD
@@ -0,0 +1,74 @@
+# $Id: PKGBUILD 148335 2012-01-30 18:51:20Z ibiru $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Sarah Hay <sarahhay@mb.sympatico.ca>
+# Contributor: Martin Sandsmark <martin.sandsmark@kde.org>
+
+pkgname=vlc
+pkgver=1.1.13
+pkgrel=4
+pkgdesc="A multi-platform MPEG, VCD/DVD, and DivX player"
+arch=('i686' 'x86_64')
+url="http://www.videolan.org/vlc/"
+license=('GPL')
+depends=('a52dec' 'fluidsynth' 'libmtp' 'libdvbpsi' 'libxpm' 'libcdio'
+ 'libdca' 'qt' 'libproxy' 'sdl_image' 'libdvdnav' 'mesa'
+ 'lua' 'v4l-utils' 'libcddb' 'smbclient' 'libmatroska' 'zvbi'
+ 'taglib' 'sysfsutils' 'libmpcdec' 'ffmpeg' 'faad2' 'libupnp'
+ 'libshout' 'libmad' 'fribidi' 'libmpeg2' 'libmodplug' 'xcb-util-keysyms'
+ 'ttf-freefont' 'libxv' 'libass' 'xdg-utils' 'desktop-file-utils')
+makedepends=('avahi' 'pkgconfig' 'live-media' 'libnotify'
+ 'flac' 'libtheora' 'alsa-lib' 'jack' 'kdelibs' 'udev'
+ 'libraw1394' 'libdc1394' 'libavc1394' 'libva' 'libpulse'
+ 'lirc-utils' 'gnutls' 'libcaca')
+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'
+ 'libpulse: PulseAudio support'
+ 'vdpau-video: vdpau back-end for nvidia'
+ 'libva-driver-intel: back-end for intel cards')
+conflicts=('vlc-plugin')
+replaces=('vlc-plugin')
+backup=('usr/share/vlc/http/.hosts'
+ 'usr/share/vlc/http/dialogs/.hosts'
+ 'usr/share/vlc/lua/http/.hosts'
+ 'usr/share/vlc/lua/http/dialogs/.hosts')
+options=('!libtool')
+install=vlc.install
+source=("http://download.videolan.org/pub/videolan/${pkgname}/${pkgver}/${pkgname}-${pkgver}.tar.bz2")
+md5sums=('9678fb7a04808b6e0de63746d35e4bb1')
+
+build() {
+ cd "${srcdir}/${pkgname}-${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 \
+ --with-live555-tree=/usr/lib/live \
+ --enable-upnp \
+ --enable-realrtsp
+ make
+}
+package() {
+ cd "${srcdir}/${pkgname}-${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
+}
diff --git a/testing/vlc/vlc.install b/testing/vlc/vlc.install
new file mode 100644
index 000000000..dc4961cae
--- /dev/null
+++ b/testing/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/testing/wesnoth/PKGBUILD b/testing/wesnoth/PKGBUILD
new file mode 100644
index 000000000..74b2f789b
--- /dev/null
+++ b/testing/wesnoth/PKGBUILD
@@ -0,0 +1,47 @@
+# $Id: PKGBUILD 148337 2012-01-30 18:51:23Z ibiru $
+# 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.6
+pkgrel=4
+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' 'python2')
+makedepends=('boost')
+install=wesnoth.install
+options=(!emptydirs)
+source=(http://downloads.sourceforge.net/sourceforge/$pkgname/$pkgname-$pkgver.tar.bz2
+ wesnoth-libpng-1.4.0.patch
+ wesnoth-1.8.6-boost-foreach.patch
+ wesnoth.tmpfiles.conf)
+md5sums=('f1c3179869b01b61e253e74aeb241034'
+ '3b0d2edcb45e8ecc8c790f92bdcb0087'
+ 'dc414ab7e1334941548e9db6db9c2460'
+ 'b8122f5054e3895c9c054e87460869dc')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ patch -Np1 -i "$srcdir/wesnoth-libpng-1.4.0.patch"
+ patch -Np1 -i "$srcdir/wesnoth-1.8.6-boost-foreach.patch"
+ ./autogen.sh
+ ./configure --prefix=/usr --localstatedir=/var --enable-tools \
+ --enable-editor --enable-server --with-fifodir=/run/wesnothd
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make DESTDIR="$pkgdir" install-exec
+ install -dm755 "$pkgdir/usr/lib/tmpfiles.d/"
+ install -m644 "$srcdir/wesnoth.tmpfiles.conf" "$pkgdir/usr/lib/tmpfiles.d/wesnoth.conf"
+
+ sed -i "s|#!/usr/bin/env python|#!/usr/bin/env python2|" "$pkgdir/usr/bin/wesnoth_addon_manager"
+ sed -i "s|#!/usr/bin/env python|#!/usr/bin/env python2|" "$pkgdir/usr/bin/wmlindent"
+ sed -i "s|#!/usr/bin/env python|#!/usr/bin/env python2|" "$pkgdir/usr/bin/wmlscope"
+ sed -i "s|#!/usr/bin/env python|#!/usr/bin/env python2|" "$pkgdir/usr/bin/wmllint"
+}
diff --git a/testing/wesnoth/wesnoth-1.8.6-boost-foreach.patch b/testing/wesnoth/wesnoth-1.8.6-boost-foreach.patch
new file mode 100644
index 000000000..5aee3118c
--- /dev/null
+++ b/testing/wesnoth/wesnoth-1.8.6-boost-foreach.patch
@@ -0,0 +1,70 @@
+--- wesnoth-1.8.6/src/gui/widgets/tree_view_node.cpp~ 2011-07-21 23:05:56.594879049 +0200
++++ wesnoth-1.8.6/src/gui/widgets/tree_view_node.cpp 2011-07-21 23:28:07.540358742 +0200
+@@ -238,6 +238,17 @@ void ttree_view_node::clear()
+
+ struct ttree_view_node_implementation
+ {
++ template<class W, class It>
++ static W* find_at_aux(It begin, It end,
++ const tpoint& coordinate, const bool must_be_active) {
++ for (It it = begin; it != end; ++it) {
++ if(W* widget = it->find_at(coordinate, must_be_active)) {
++ return widget;
++ }
++ }
++ return NULL;
++ }
++
+ template<class W>
+ static W* find_at(
+ typename tconst_duplicator<W, ttree_view_node>::type&
+@@ -255,13 +266,9 @@ struct ttree_view_node_implementation
+ }
+
+ typedef typename tconst_duplicator<W, ttree_view_node>::type thack;
+- foreach(thack& node, tree_view_node.children_) {
+- if(W* widget = node.find_at(coordinate, must_be_active)) {
+- return widget;
+- }
+- }
+-
+- return NULL;
++ return find_at_aux<W>(tree_view_node.children_.begin(),
++ tree_view_node.children_.end(),
++ coordinate, must_be_active);
+ }
+ };
+
+@@ -313,7 +320,9 @@ tpoint ttree_view_node::get_current_size
+ return size;
+ }
+
+- foreach(const ttree_view_node& node, children_) {
++ for (boost::ptr_vector<ttree_view_node>::const_iterator it
++ = children_.begin (); it != children_.end (); ++it) {
++ const ttree_view_node& node = *it;
+
+ if(node.grid_.get_visible() == twidget::INVISIBLE) {
+ continue;
+@@ -344,7 +353,9 @@ tpoint ttree_view_node::get_unfolded_siz
+ size.x += (get_indention_level() - 1) * tree_view().indention_step_size_;
+ }
+
+- foreach(const ttree_view_node& node, children_) {
++ for (boost::ptr_vector<ttree_view_node>::const_iterator it
++ = children_.begin (); it != children_.end (); ++it) {
++ const ttree_view_node& node = *it;
+
+ if(node.grid_.get_visible() == twidget::INVISIBLE) {
+ continue;
+@@ -378,7 +389,9 @@ tpoint ttree_view_node::calculate_best_s
+
+ DBG_GUI_L << LOG_HEADER << " own grid best size " << best_size << ".\n";
+
+- foreach(const ttree_view_node& node, children_) {
++ for (boost::ptr_vector<ttree_view_node>::const_iterator it
++ = children_.begin (); it != children_.end (); ++it) {
++ const ttree_view_node& node = *it;
+
+ if(node.grid_.get_visible() == twidget::INVISIBLE) {
+ continue;
diff --git a/testing/wesnoth/wesnoth-libpng-1.4.0.patch b/testing/wesnoth/wesnoth-libpng-1.4.0.patch
new file mode 100644
index 000000000..338f467af
--- /dev/null
+++ b/testing/wesnoth/wesnoth-libpng-1.4.0.patch
@@ -0,0 +1,24 @@
+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");
+
+--- wesnoth-1.8.orig/src/tools/exploder_utils.cpp.libpng 2011-11-06 14:44:26.618711420 -0600
++++ wesnoth-1.8/src/tools/exploder_utils.cpp 2011-11-06 14:57:12.150006511 -0600
+@@ -15,6 +15,7 @@
+ #include "exploder_utils.hpp"
+ #include "game_config.hpp"
+ #include "serialization/string_utils.hpp"
++#include <zlib.h>
+ #include <png.h>
+
+ exploder_point::exploder_point(const std::string &s)
diff --git a/testing/wesnoth/wesnoth.install b/testing/wesnoth/wesnoth.install
new file mode 100644
index 000000000..4f1e419ae
--- /dev/null
+++ b/testing/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/testing/wesnoth/wesnoth.tmpfiles.conf b/testing/wesnoth/wesnoth.tmpfiles.conf
new file mode 100644
index 000000000..3ec0f6013
--- /dev/null
+++ b/testing/wesnoth/wesnoth.tmpfiles.conf
@@ -0,0 +1 @@
+D /run/wesnothd 0700 root root -
diff --git a/testing/windowmaker-crm-git/PKGBUILD b/testing/windowmaker-crm-git/PKGBUILD
new file mode 100644
index 000000000..31eb55aa3
--- /dev/null
+++ b/testing/windowmaker-crm-git/PKGBUILD
@@ -0,0 +1,36 @@
+# $Id: PKGBUILD 148341 2012-01-30 18:51:29Z ibiru $
+# Maintainer: Daniel Isenmann <daniel@archlinux.org>
+
+pkgname=windowmaker-crm-git
+pkgver=20120109
+pkgrel=2
+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=('abe70f9cc7606c73a9bbe498cacf925a'
+ '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 --enable-xrandr
+ make
+}
+
+package() {
+ cd $srcdir/windowmaker-$pkgver
+
+ make DESTDIR=$pkgdir install
+ 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/testing/windowmaker-crm-git/libpng-1.4.patch b/testing/windowmaker-crm-git/libpng-1.4.patch
new file mode 100644
index 000000000..5dbe5fd25
--- /dev/null
+++ b/testing/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/testing/windowmaker-crm-git/wmaker.desktop b/testing/windowmaker-crm-git/wmaker.desktop
new file mode 100644
index 000000000..f819c7577
--- /dev/null
+++ b/testing/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/testing/windowmaker/PKGBUILD b/testing/windowmaker/PKGBUILD
new file mode 100644
index 000000000..6dd5054e9
--- /dev/null
+++ b/testing/windowmaker/PKGBUILD
@@ -0,0 +1,34 @@
+# $Id: PKGBUILD 148339 2012-01-30 18:51:26Z ibiru $
+# Maintainer: Daniel Isenmann <daniel@archlinux.org>
+# Contributor: Judd Vinet <jvinet@zeroflux.org>
+pkgname=windowmaker
+pkgver=0.95.0
+pkgrel=2
+pkgdesc="An X11 window manager with a NEXTSTEP look and feel"
+arch=(i686 x86_64)
+url="http://www.windowmaker.org/"
+license=('GPL' 'custom')
+depends=('libxinerama' 'libxrandr' 'libxmu' 'libpng' 'libxpm' 'libxft' 'libtiff' 'giflib')
+options=('!libtool')
+source=(ftp://ftp.archlinux.org/other/windowmaker/windowmaker-$pkgver.tar.gz wmaker.desktop)
+md5sums=('2d89834b4019e0a08641709ea7235db2'
+ '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 --enable-xrandr
+ make
+}
+
+package() {
+ cd $srcdir/windowmaker-$pkgver
+
+ make DESTDIR=$pkgdir install
+ 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/testing/windowmaker/libpng-1.4.patch b/testing/windowmaker/libpng-1.4.patch
new file mode 100644
index 000000000..419e8faca
--- /dev/null
+++ b/testing/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/testing/windowmaker/windowmaker-gcc4.patch.tar.bz2 b/testing/windowmaker/windowmaker-gcc4.patch.tar.bz2
new file mode 100644
index 000000000..fae12a98d
--- /dev/null
+++ b/testing/windowmaker/windowmaker-gcc4.patch.tar.bz2
Binary files differ
diff --git a/testing/windowmaker/wmaker.desktop b/testing/windowmaker/wmaker.desktop
new file mode 100644
index 000000000..f819c7577
--- /dev/null
+++ b/testing/windowmaker/wmaker.desktop
@@ -0,0 +1,5 @@
+[Desktop Entry]
+Encoding=UTF-8
+Name=windowmaker
+Exec=/usr/bin/wmaker
+Type=Application
diff --git a/testing/wv/PKGBUILD b/testing/wv/PKGBUILD
new file mode 100644
index 000000000..6a8501425
--- /dev/null
+++ b/testing/wv/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 148343 2012-01-30 18:51:31Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: William Rea <sillywilly@gmail.com>
+pkgname=wv
+pkgver=1.2.9
+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' 'libpng' 'sh')
+makedepends=('pkg-config')
+options=('!libtool')
+source=("http://www.abisource.com/downloads/${pkgname}/${pkgver}/${pkgname}-${pkgver}.tar.gz")
+md5sums=('dbccf2e9f747e50c913b7e3d126b73f7')
+
+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/testing/wv/fix-soname.patch b/testing/wv/fix-soname.patch
new file mode 100644
index 000000000..81dff86e6
--- /dev/null
+++ b/testing/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/testing/wxgtk/PKGBUILD b/testing/wxgtk/PKGBUILD
new file mode 100644
index 000000000..406bc4251
--- /dev/null
+++ b/testing/wxgtk/PKGBUILD
@@ -0,0 +1,37 @@
+# $Id: PKGBUILD 148345 2012-01-30 18:51:33Z ibiru $
+# Maintainer: Eric Bélanger <eric@archlinux.org>
+
+pkgname=wxgtk
+pkgver=2.8.12.1
+pkgrel=3
+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' 'libsm')
+makedepends=('gstreamer0.10-base-plugins' 'gconf' 'mesa')
+#source=(http://downloads.sourceforge.net/wxwindows/wxGTK-${pkgver}.tar.bz2)
+source=(http://downloads.sourceforge.net/wxpython/wxPython-src-${pkgver}.tar.bz2)
+sha1sums=('05688dc03d61631750f5904273122bb40a2115f5')
+
+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 --disable-optimize --enable-mediactrl --with-regex=builtin \
+ --with-libpng=sys --with-libxpm=sys --with-libjpeg=sys --with-libtiff=sys \
+ --disable-precomp-headers
+ make
+ make -C locale allmo
+ cd contrib/src
+ make
+}
+
+package() {
+ cd "${srcdir}/wxPython-src-${pkgver}"
+# 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/testing/xaos/PKGBUILD b/testing/xaos/PKGBUILD
new file mode 100644
index 000000000..887f24325
--- /dev/null
+++ b/testing/xaos/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 148347 2012-01-30 18:51:36Z ibiru $
+# Maintainer: Eric Bélanger <eric@archlinux.org>
+
+pkgname=xaos
+pkgver=3.5
+pkgrel=5
+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 xaos-3.5-libpng15.patch)
+sha1sums=('6d16a58187fba7276e6bd0547cc2fd6bb073b801'
+ '6c51cb2ee1c5f28973680ffc3a040c2cea65fd33')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -p0 -i ../xaos-3.5-libpng15.patch
+ ./configure --prefix=/usr --with-gsl --with-aa-driver
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/testing/xaos/xaos-3.5-libpng15.patch b/testing/xaos/xaos-3.5-libpng15.patch
new file mode 100644
index 000000000..beece8339
--- /dev/null
+++ b/testing/xaos/xaos-3.5-libpng15.patch
@@ -0,0 +1,131 @@
+http://code.google.com/p/gnuxaos/issues/detail?id=55
+
+--- src/util/png.c
++++ src/util/png.c
+@@ -3,6 +3,7 @@
+ #include <aconfig.h>
+ #ifdef USE_PNG
+ #include <png.h>
++#include <zlib.h>
+ #endif
+ #include <stdlib.h>
+ #include <stdio.h>
+@@ -31,6 +32,9 @@
+ png_structp png_ptr;
+ png_infop info_ptr;
+ png_color palette[256];
++ png_color_8 sig_bit;
++ int color_type;
++ int bit_depth;
+ volatile unsigned short a = 255;
+ volatile unsigned char *b = (volatile unsigned char *) &a;
+ #ifdef _undefined_
+@@ -59,7 +63,7 @@
+ png_destroy_write_struct(&png_ptr, (png_infopp) NULL);
+ return "No memory to create png info structure";
+ }
+- if (setjmp(png_ptr->jmpbuf)) {
++ if (setjmp(png_jmpbuf(png_ptr))) {
+ png_destroy_write_struct(&png_ptr, &info_ptr);
+ fclose(file);
+ return strerror(errno);
+@@ -78,57 +82,70 @@
+ png_set_compression_window_bits(png_ptr, 15);
+ png_set_compression_method(png_ptr, 8);
+
+- info_ptr->width = image->width;
+- info_ptr->height = image->height;
+- /*info_ptr->gamma=1.0; */
+- info_ptr->gamma = 0.5;
+- info_ptr->valid |= PNG_INFO_gAMA | PNG_INFO_pHYs;
+- info_ptr->x_pixels_per_unit = (png_uint_32) (100 / image->pixelwidth);
+- info_ptr->y_pixels_per_unit = (png_uint_32) (100 / image->pixelheight);
++ switch (image->palette->type)
++ {
++ case C256:
++ color_type = PNG_COLOR_TYPE_PALETTE;
++ bit_depth = image->bytesperpixel * 8;
++ break;
++ case SMALLITER:
++ case LARGEITER:
++ case GRAYSCALE:
++ color_type = PNG_COLOR_TYPE_GRAY;
++ bit_depth = image->bytesperpixel * 8;
++ break;
++ case TRUECOLOR:
++ case TRUECOLOR24:
++ case TRUECOLOR16:
++ color_type = PNG_COLOR_TYPE_RGB;
++ bit_depth = 8;
++ break;
++ }
+
++ png_set_IHDR (png_ptr, info_ptr, image->width, image->height, bit_depth,
++ color_type, PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_BASE,
++ PNG_FILTER_TYPE_BASE);
+
+ switch (image->palette->type) {
+ case C256:
+ {
+ int i;
+- info_ptr->color_type = PNG_COLOR_TYPE_PALETTE;
+- info_ptr->bit_depth = image->bytesperpixel * 8;
+- info_ptr->palette = palette;
+- info_ptr->valid |= PNG_INFO_PLTE;
++ png_color png_palette[257];
++ int png_num_palette;
+ for (i = 0; i < image->palette->end; i++)
+- info_ptr->palette[i].red = image->palette->rgb[i][0],
+- info_ptr->palette[i].green = image->palette->rgb[i][1],
+- info_ptr->palette[i].blue = image->palette->rgb[i][2],
+- info_ptr->num_palette = image->palette->end;
++ png_palette[i].red = image->palette->rgb[i][0],
++ png_palette[i].green = image->palette->rgb[i][1],
++ png_palette[i].blue = image->palette->rgb[i][2],
++ png_num_palette = image->palette->end;
++ png_set_PLTE(png_ptr, info_ptr, png_palette, png_num_palette);
+ }
+ break;
+- case SMALLITER:
+- case LARGEITER:
+- case GRAYSCALE:
+- info_ptr->color_type = PNG_COLOR_TYPE_GRAY;
+- info_ptr->bit_depth = image->bytesperpixel * 8;
+- break;
+ case TRUECOLOR:
+ case TRUECOLOR24:
+ case TRUECOLOR16:
+- info_ptr->color_type = PNG_COLOR_TYPE_RGB;
+- info_ptr->bit_depth = 8;
+- info_ptr->sig_bit.red = 8 - image->palette->info.truec.rprec;
+- info_ptr->sig_bit.green = 8 - image->palette->info.truec.gprec;
+- info_ptr->sig_bit.blue = 8 - image->palette->info.truec.bprec;
++ sig_bit.red = 8 - image->palette->info.truec.rprec;
++ sig_bit.green = 8 - image->palette->info.truec.gprec;
++ sig_bit.blue = 8 - image->palette->info.truec.bprec;
++ png_set_sBIT(png_ptr, info_ptr, &sig_bit);
+ break;
+ }
+- info_ptr->interlace_type = 0;
++
++ png_write_info (png_ptr, info_ptr);
++
+ #ifdef _undefined_
+ png_set_text(png_ptr, info_ptr, comments,
+ sizeof(comments) / sizeof(png_text));
+ #endif
+
+- png_write_info(png_ptr, info_ptr);
++ png_set_gAMA(png_ptr, info_ptr, 0.5 /* 1.0 */);
++ png_set_pHYs(png_ptr, info_ptr, (png_uint_32) (100 / image->pixelwidth),
++ (png_uint_32) (100 / image->pixelheight),
++ PNG_RESOLUTION_UNKNOWN);
++
+ /*png_set_filler(png_ptr,0,PNG_FILLER_AFTER); */
+ png_set_packing(png_ptr);
+ if (image->palette->type & (TRUECOLOR | TRUECOLOR24 | TRUECOLOR16))
+- png_set_shift(png_ptr, &(info_ptr->sig_bit));
++ png_set_shift (png_ptr, &sig_bit);
+ if (*b == 255)
+ png_set_swap(png_ptr);
+ png_set_bgr(png_ptr);
diff --git a/testing/xaos/xaos.install b/testing/xaos/xaos.install
new file mode 100644
index 000000000..afee50a72
--- /dev/null
+++ b/testing/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/testing/xawtv/PKGBUILD b/testing/xawtv/PKGBUILD
new file mode 100644
index 000000000..1141328da
--- /dev/null
+++ b/testing/xawtv/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 148349 2012-01-30 18:51:39Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Sarah Hay <sarahhay@mb.sympatico.ca>
+# Contributor: Jason Chu <jason@archlinux.org>
+
+pkgname=xawtv
+pkgver=3.101
+pkgrel=2
+pkgdesc="A simple Xaw-based TV program which uses the bttv driver or video4linux"
+arch=('i686' 'x86_64')
+url="http://git.linuxtv.org/xawtv3.git"
+license=('GPL')
+depends=('aalib' 'v4l-utils' 'libxv' 'libxxf86dga' 'libxrandr' 'libgl' 'libdv' 'zvbi' 'libxinerama' 'lirc-utils' 'libxft' 'libxaw' 'xorg-fonts-misc' 'libxxf86vm')
+makedepends=('mesa')
+source=(http://linuxtv.org/downloads/xawtv/xawtv-${pkgver}.tar.bz2)
+md5sums=('330ce1789595e370be34ad4cae3dc3fa')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ autoconf
+ autoheader
+ ./configure --prefix=/usr --disable-motif --disable-quicktime
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/testing/xfce4-datetime-plugin/PKGBUILD b/testing/xfce4-datetime-plugin/PKGBUILD
new file mode 100644
index 000000000..f9f3f58aa
--- /dev/null
+++ b/testing/xfce4-datetime-plugin/PKGBUILD
@@ -0,0 +1,33 @@
+# $Id: PKGBUILD 148351 2012-01-30 18:51:41Z ibiru $
+# Maintainer: Andreas Radke <andyrtr@archlinux.org>
+# Contributor: Aurelien Foret <orelien@chez.com>
+
+pkgname=xfce4-datetime-plugin
+pkgver=0.6.1
+pkgrel=2
+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/testing/xfce4-notes-plugin/PKGBUILD b/testing/xfce4-notes-plugin/PKGBUILD
new file mode 100644
index 000000000..399cf34f3
--- /dev/null
+++ b/testing/xfce4-notes-plugin/PKGBUILD
@@ -0,0 +1,34 @@
+# $Id: PKGBUILD 148353 2012-01-30 18:51:43Z ibiru $
+# Maintainer: Andreas Radke <andyrtr at archlinux.org>
+# Contributor: Ben Mazer <contrasutra@myrealbox.com>
+
+pkgname=xfce4-notes-plugin
+pkgver=1.7.7
+pkgrel=3
+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/testing/xfce4-notes-plugin/xfce4-notes-plugin.install b/testing/xfce4-notes-plugin/xfce4-notes-plugin.install
new file mode 100644
index 000000000..fee9e5d11
--- /dev/null
+++ b/testing/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/testing/xfce4-quicklauncher-plugin/PKGBUILD b/testing/xfce4-quicklauncher-plugin/PKGBUILD
new file mode 100644
index 000000000..e9b2e2223
--- /dev/null
+++ b/testing/xfce4-quicklauncher-plugin/PKGBUILD
@@ -0,0 +1,50 @@
+# $Id: PKGBUILD 148355 2012-01-30 18:51:48Z ibiru $
+# Maintainer:
+# Contributor: Tobias Kieslich <tobias (at) archlinux.org>
+
+pkgname=xfce4-quicklauncher-plugin
+pkgver=1.9.4
+pkgrel=6
+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/testing/xfce4-quicklauncher-plugin/xfce4-quicklauncher-plugin-1.9.4-desktop-file.patch b/testing/xfce4-quicklauncher-plugin/xfce4-quicklauncher-plugin-1.9.4-desktop-file.patch
new file mode 100644
index 000000000..907c1f23e
--- /dev/null
+++ b/testing/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/testing/xfce4-quicklauncher-plugin/xfce4-quicklauncher-plugin-1.9.4-fix-missing-english-translation.patch b/testing/xfce4-quicklauncher-plugin/xfce4-quicklauncher-plugin-1.9.4-fix-missing-english-translation.patch
new file mode 100644
index 000000000..96f256770
--- /dev/null
+++ b/testing/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/testing/xfce4-quicklauncher-plugin/xfce4-quicklauncher-plugin-1.9.4-fix-multiscreen.patch b/testing/xfce4-quicklauncher-plugin/xfce4-quicklauncher-plugin-1.9.4-fix-multiscreen.patch
new file mode 100644
index 000000000..9845ce122
--- /dev/null
+++ b/testing/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/testing/xfce4-quicklauncher-plugin/xfce4-quicklauncher-plugin-1.9.4-save-settings.patch b/testing/xfce4-quicklauncher-plugin/xfce4-quicklauncher-plugin-1.9.4-save-settings.patch
new file mode 100644
index 000000000..85dd21729
--- /dev/null
+++ b/testing/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/testing/xfce4-quicklauncher-plugin/xfce4-quicklauncher-plugin-1.9.4-xfce4-settings-manager.patch b/testing/xfce4-quicklauncher-plugin/xfce4-quicklauncher-plugin-1.9.4-xfce4-settings-manager.patch
new file mode 100644
index 000000000..8314d7a3c
--- /dev/null
+++ b/testing/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/testing/xfce4-sensors-plugin/PKGBUILD b/testing/xfce4-sensors-plugin/PKGBUILD
new file mode 100644
index 000000000..f54632130
--- /dev/null
+++ b/testing/xfce4-sensors-plugin/PKGBUILD
@@ -0,0 +1,38 @@
+# $Id: PKGBUILD 148357 2012-01-30 18:51:53Z ibiru $
+# Maintainer: Andreas Radke <andyrtr@archlinux.org>
+# Contributor: Merk Matthias <macem@chello.at>
+
+pkgname=xfce4-sensors-plugin
+pkgver=1.2.3
+pkgrel=3
+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' 'lm_sensors' 'libnotify>=0.7.1' 'hicolor-icon-theme') #'libxfcegui4'
+makedepends=('pkgconfig' 'intltool' 'hddtemp>=0.3.beta15.45-2' 'gnu-netcat' 'xfce4-dev-tools')
+optdepends=('gnu-netcat: for hddtemp access')
+options=(!libtool !makeflags)
+install=${pkgname}.install
+source=(http://archive.xfce.org/src/panel-plugins/${pkgname}/1.2/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('2edf376d140449ca42c4e4f591e626f8')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --libexecdir=/usr/lib \
+ --localstatedir=/var \
+ --datadir=/usr/share \
+ --datarootdir=/usr/share \
+ --disable-static \
+ --with-pathhddtemp=/usr/sbin/hddtemp \
+ --disable-debug
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/testing/xfce4-sensors-plugin/xfce4-sensors-plugin.install b/testing/xfce4-sensors-plugin/xfce4-sensors-plugin.install
new file mode 100644
index 000000000..17ca8f78a
--- /dev/null
+++ b/testing/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/testing/xfig/LICENSE b/testing/xfig/LICENSE
new file mode 100644
index 000000000..5b38ccff8
--- /dev/null
+++ b/testing/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/testing/xfig/PKGBUILD b/testing/xfig/PKGBUILD
new file mode 100644
index 000000000..22e2f1149
--- /dev/null
+++ b/testing/xfig/PKGBUILD
@@ -0,0 +1,65 @@
+# $Id: PKGBUILD 148359 2012-01-30 18:52:01Z ibiru $
+# Maintainer: Eric Bélanger <eric@archlinux.org>
+
+pkgname=xfig
+pkgver=3.2.5b
+pkgrel=6
+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 \
+ xfig-3.2.5b-libpng-1.5.patch LICENSE xfig.desktop)
+sha1sums=('0730d7e6bc217c0de02682efb0078821512bb542'
+ '926ad99c7221baa4aa9e9737722958860b2700fc'
+ 'b7c03fb70066ff476a4039a8c0f8930c15edef68'
+ '33bff26b42ce164e79de11808b5b34b363f0d59f'
+ 'e595ccdbe293ea0fdecbf59a2192ae57ced2c8eb'
+ '39bec6bac9746b643b05fd1286826113ede07ff6'
+ 'bd76cd50be6a5789cfd6f182309cfd7056be04f3'
+ 'a1285f4e61ad2eec040460ab03e8022098e7f78e'
+ '12a64ddaf65a73e23ef74f31483515a0e262768c'
+ '83032eb61c8dc96d5fc509a1ce632528457d4598'
+ '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
+ patch -p1 < ../xfig-3.2.5b-libpng-1.5.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/testing/xfig/xfig-3.2.4-redhat.patch b/testing/xfig/xfig-3.2.4-redhat.patch
new file mode 100644
index 000000000..da6f150b3
--- /dev/null
+++ b/testing/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/testing/xfig/xfig-3.2.5-color-resources.patch b/testing/xfig/xfig-3.2.5-color-resources.patch
new file mode 100644
index 000000000..6cf1af906
--- /dev/null
+++ b/testing/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/testing/xfig/xfig-3.2.5-enable-Xaw3d.patch b/testing/xfig/xfig-3.2.5-enable-Xaw3d.patch
new file mode 100644
index 000000000..f4d113808
--- /dev/null
+++ b/testing/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/testing/xfig/xfig-3.2.5-fhs.patch b/testing/xfig/xfig-3.2.5-fhs.patch
new file mode 100644
index 000000000..a17d908a7
--- /dev/null
+++ b/testing/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/testing/xfig/xfig-3.2.5-missing-protos.patch b/testing/xfig/xfig-3.2.5-missing-protos.patch
new file mode 100644
index 000000000..181c52a69
--- /dev/null
+++ b/testing/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/testing/xfig/xfig-3.2.5-urwfonts.patch b/testing/xfig/xfig-3.2.5-urwfonts.patch
new file mode 100644
index 000000000..7bc766bd9
--- /dev/null
+++ b/testing/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/testing/xfig/xfig-3.2.5b-fix-eps-reading.patch b/testing/xfig/xfig-3.2.5b-fix-eps-reading.patch
new file mode 100644
index 000000000..7601d20ea
--- /dev/null
+++ b/testing/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/testing/xfig/xfig-3.2.5b-libpng-1.5.patch b/testing/xfig/xfig-3.2.5b-libpng-1.5.patch
new file mode 100644
index 000000000..7d9c3f15e
--- /dev/null
+++ b/testing/xfig/xfig-3.2.5b-libpng-1.5.patch
@@ -0,0 +1,70 @@
+Index: xfig.3.2.5b/f_readpng.c
+===================================================================
+--- xfig.3.2.5b.orig/f_readpng.c
++++ xfig.3.2.5b/f_readpng.c
+@@ -73,7 +73,7 @@ read_png(FILE *file, int filetype, F_pic
+ }
+
+ /* set long jump recovery here */
+- if (setjmp(png_ptr->jmpbuf)) {
++ if (setjmp(png_jmpbuf(png_ptr))) {
+ /* if we get here there was a problem reading the file */
+ png_destroy_read_struct(&png_ptr, &info_ptr, &end_info);
+ close_picfile(file,filetype);
+@@ -90,15 +90,17 @@ read_png(FILE *file, int filetype, F_pic
+ png_get_IHDR(png_ptr, info_ptr, &w, &h, &bit_depth, &color_type,
+ &interlace_type, &compression_type, &filter_type);
+
+- if (info_ptr->valid & PNG_INFO_gAMA)
+- png_set_gamma(png_ptr, 2.2, info_ptr->gamma);
+- else
+- png_set_gamma(png_ptr, 2.2, 0.45);
++ png_fixed_point gamma = 0.45;
++ png_get_gAMA_fixed(png_ptr,info_ptr,&gamma);
++ png_set_gamma(png_ptr, 2.2, gamma);
+
+- if (info_ptr->valid & PNG_INFO_bKGD)
++ if (png_get_valid(png_ptr,info_ptr,PNG_INFO_bKGD)) {
+ /* set the background to the one supplied */
+- png_set_background(png_ptr, &info_ptr->background,
++ png_color_16p background;
++ png_get_bKGD(png_ptr,info_ptr,&background);
++ png_set_background(png_ptr, background,
+ PNG_BACKGROUND_GAMMA_FILE, 1, 1.0);
++ }
+ else {
+ /* blend the canvas background using the alpha channel */
+ background.red = x_bg_color.red >> 8;
+@@ -136,7 +138,11 @@ read_png(FILE *file, int filetype, F_pic
+
+ if (png_get_PLTE(png_ptr, info_ptr, &palette, &num_palette)) {
+ png_get_hIST(png_ptr, info_ptr, &histogram);
++#if PNG_LIBPNG_VER_MAJOR <= 1 && PNG_LIBPNG_VER_MINOR < 5
+ png_set_dither(png_ptr, palette, num_palette, 256, histogram, 0);
++#else
++ png_set_quantize(png_ptr, palette, num_palette, 256, histogram, 0);
++#endif
+ }
+ }
+ if (color_type == PNG_COLOR_TYPE_GRAY || color_type == PNG_COLOR_TYPE_GRAY_ALPHA) {
+Index: xfig.3.2.5b/f_wrpng.c
+===================================================================
+--- xfig.3.2.5b.orig/f_wrpng.c
++++ xfig.3.2.5b/f_wrpng.c
+@@ -20,6 +20,7 @@
+ #include "w_msgpanel.h"
+ #include "w_setup.h"
+ #include <png.h>
++#include <zlib.h>
+
+ /*
+ * Write PNG file from rgb data
+@@ -59,7 +60,7 @@ write_png(FILE *file, unsigned char *dat
+ }
+
+ /* set long jump recovery here */
+- if (setjmp(png_ptr->jmpbuf)) {
++ if (setjmp(png_jmpbuf(png_ptr))) {
+ /* if we get here there was a problem reading the file */
+ png_destroy_write_struct(&png_ptr, &info_ptr);
+ return False;
diff --git a/testing/xfig/xfig.3.2.5-modularX.patch b/testing/xfig/xfig.3.2.5-modularX.patch
new file mode 100644
index 000000000..3b5ac5937
--- /dev/null
+++ b/testing/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/testing/xfig/xfig.desktop b/testing/xfig/xfig.desktop
new file mode 100644
index 000000000..c634a28e9
--- /dev/null
+++ b/testing/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/testing/xfig/xfig.install b/testing/xfig/xfig.install
new file mode 100644
index 000000000..f01585f79
--- /dev/null
+++ b/testing/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/testing/xine-ui/PKGBUILD b/testing/xine-ui/PKGBUILD
index aae7761e5..3e55a72f3 100644
--- a/testing/xine-ui/PKGBUILD
+++ b/testing/xine-ui/PKGBUILD
@@ -1,9 +1,9 @@
-# $Id: PKGBUILD 146259 2012-01-07 05:13:42Z eric $
+# $Id: PKGBUILD 148361 2012-01-30 18:52:07Z ibiru $
# Maintainer: Eric Bélanger <eric@archlinux.org>
pkgname=xine-ui
pkgver=0.99.6
-pkgrel=4
+pkgrel=5
pkgdesc="A free video player for Unix"
arch=('i686' 'x86_64')
license=('GPL')
@@ -16,12 +16,13 @@ options=('!strip')
install=xine-ui.install
source=(http://downloads.sourceforge.net/xine/${pkgname}-${pkgver}.tar.xz
lirc-check-a89347673097.patch lirc-makefile-a68dd15ff7ae.patch
- fix_lirc.diff xine-ui-xdg.diff)
+ fix_lirc.diff xine-ui-xdg.diff xine-ui-0.99.6-libpng15.patch)
sha1sums=('abbdb331898c14025ee6b132f63ab7d3c1b5b31e'
'b2df43ede3a9d1a34b80139704a4cbbc7295c584'
'8bbd39f61de7b6991385457a4944b8ea104da88b'
'2361df9ddad59c426b0f863414c6d527b463a38a'
- '9c70c6543dae6815710b239b4638ffe3843bac86')
+ '9c70c6543dae6815710b239b4638ffe3843bac86'
+ 'bc7ec3153e61553dee8c0b6e04d1ca7cfe4a6f14')
build() {
cd "${srcdir}/${pkgname}-${pkgver}"
@@ -29,6 +30,7 @@ build() {
patch -p1 < "${srcdir}/lirc-makefile-a68dd15ff7ae.patch"
patch -p1 < "${srcdir}/fix_lirc.diff"
patch -p1 < "${srcdir}/xine-ui-xdg.diff"
+ patch -p1 < "${srcdir}/xine-ui-0.99.6-libpng15.patch"
sed -i '/\#include <curl\/types.h>/d' src/xitk/download.c
autoconf
./configure --prefix=/usr --mandir=/usr/share/man \
diff --git a/testing/xine-ui/xine-ui-0.99.6-libpng15.patch b/testing/xine-ui/xine-ui-0.99.6-libpng15.patch
new file mode 100644
index 000000000..6a5fb5522
--- /dev/null
+++ b/testing/xine-ui/xine-ui-0.99.6-libpng15.patch
@@ -0,0 +1,13 @@
+Index: xine-ui-0.99.6/src/xitk/Imlib-light/load.c
+===================================================================
+--- xine-ui-0.99.6.orig/src/xitk/Imlib-light/load.c
++++ xine-ui-0.99.6/src/xitk/Imlib-light/load.c
+@@ -61,7 +61,7 @@ unsigned char *_LoadPNG(ImlibData * id,
+ png_destroy_read_struct(&png_ptr, NULL, NULL);
+ return NULL;
+ }
+- if (info_ptr->color_type == PNG_COLOR_TYPE_RGB_ALPHA)
++ if (png_get_color_type(png_ptr, info_ptr) == PNG_COLOR_TYPE_RGB_ALPHA)
+ {
+ png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
+ return NULL;
diff --git a/testing/xorg-xcursorgen/PKGBUILD b/testing/xorg-xcursorgen/PKGBUILD
new file mode 100644
index 000000000..b6abe5578
--- /dev/null
+++ b/testing/xorg-xcursorgen/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 148363 2012-01-30 18:52:13Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xorg-xcursorgen
+pkgver=1.0.4
+pkgrel=3
+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
+}
+
+package() {
+ cd "${srcdir}/xcursorgen-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/testing/xsane/PKGBUILD b/testing/xsane/PKGBUILD
new file mode 100644
index 000000000..d03def0a0
--- /dev/null
+++ b/testing/xsane/PKGBUILD
@@ -0,0 +1,68 @@
+# $Id: PKGBUILD 148365 2012-01-30 18:52:18Z ibiru $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+# Contributor: Sarah Hay <sarahhay@mb.sympatico.ca>
+
+pkgbase=xsane
+pkgname=('xsane' 'xsane-gimp')
+pkgver=0.998
+pkgrel=2
+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)
+md5sums=('936f1cc76b37caa8f285e1e15ac7e0aa'
+ '15541ff0ddc10acfa2059cf99d5478eb')
+
+build() {
+ cd "$srcdir/$pkgbase-$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"
+ sed -i -e 's:png_ptr->jmpbuf:png_jmpbuf(png_ptr):' src/xsane-save.c
+
+ ./configure --prefix=/usr --mandir=/usr/share/man --enable-gimp
+ make
+ mv src/xsane src/xsane-gimp
+
+ # build again with gimp enabled
+ make clean
+ ./configure --prefix=/usr --mandir=/usr/share/man --disable-gimp
+ make
+}
+
+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/$pkgbase-$pkgver"
+ make DESTDIR="$pkgdir" install
+}
+
+package_xsane-gimp() {
+ pkgdesc="XSane Gimp plugin"
+ depends=('xsane' 'gimp')
+ cd "$srcdir/$pkgbase-$pkgver"
+ install -D -m755 src/xsane-gimp "${pkgdir}/usr/bin/xsane-gimp"
+
+ ## 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
+}
diff --git a/testing/xsane/xsane-0.995-xdg-open.patch b/testing/xsane/xsane-0.995-xdg-open.patch
new file mode 100644
index 000000000..db1f9bd68
--- /dev/null
+++ b/testing/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/testing/xsane/xsane.install b/testing/xsane/xsane.install
new file mode 100644
index 000000000..aa3e3b8f8
--- /dev/null
+++ b/testing/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/testing/xulrunner/5007_fix_libpr0n_nsPNGDecoder.patch b/testing/xulrunner/5007_fix_libpr0n_nsPNGDecoder.patch
new file mode 100644
index 000000000..dc93a2e8a
--- /dev/null
+++ b/testing/xulrunner/5007_fix_libpr0n_nsPNGDecoder.patch
@@ -0,0 +1,81 @@
+# HG changeset patch
+# User Glenn Randers-Pehrson <glennrp+bmo@gmail.com>
+# Date 1320490106 0
+# Node ID aff1bd412058cb6926a8feae1e8c0fc76b4c04a3
+# Parent 8248dbffd64534fb6c65ad3d757b795119e783c6
+Bug 682677 - Eliminated direct access to mInfo->pixel_depth, which is not allowed in libpng15. We access pixel_depth via png_get_IHDR() instead; r=joedrew
+
+diff --git a/modules/libpr0n/decoders/nsICODecoder.cpp b/modules/libpr0n/decoders/nsICODecoder.cpp
+--- a/modules/libpr0n/decoders/nsICODecoder.cpp
++++ b/modules/libpr0n/decoders/nsICODecoder.cpp
+@@ -381,18 +381,17 @@ nsICODecoder::WriteInternal(const char*
+ return;
+ }
+ mPos += aCount;
+ aBuffer += aCount;
+ aCount = 0;
+
+ // Raymond Chen says that 32bpp only are valid PNG ICOs
+ // http://blogs.msdn.com/b/oldnewthing/archive/2010/10/22/10079192.aspx
+- if (static_cast<nsPNGDecoder*>(mContainedDecoder.get())->HasValidInfo() &&
+- static_cast<nsPNGDecoder*>(mContainedDecoder.get())->GetPixelDepth() != 32) {
++ if (!static_cast<nsPNGDecoder*>(mContainedDecoder.get())->IsValidICO()) {
+ PostDataError();
+ }
+ return;
+ }
+
+ // We've processed all of the icon dir entries and are within the
+ // bitmap info size
+ if (!mIsPNG && mCurrIcon == mNumIcons && mPos >= mImageOffset &&
+diff --git a/modules/libpr0n/decoders/nsPNGDecoder.h b/modules/libpr0n/decoders/nsPNGDecoder.h
+--- a/modules/libpr0n/decoders/nsPNGDecoder.h
++++ b/modules/libpr0n/decoders/nsPNGDecoder.h
+@@ -68,29 +68,35 @@ public:
+
+ void CreateFrame(png_uint_32 x_offset, png_uint_32 y_offset,
+ PRInt32 width, PRInt32 height,
+ gfxASurface::gfxImageFormat format);
+ void SetAnimFrameInfo();
+
+ void EndImageFrame();
+
+- // Checks if the info header contains valid information
+- bool HasValidInfo() const
++ // Check if PNG is valid ICO (32bpp RGBA)
++ // http://blogs.msdn.com/b/oldnewthing/archive/2010/10/22/10079192.aspx
++ bool IsValidICO() const
+ {
+- return mInfo && mInfo->valid;
+- }
++ png_uint_32
++ png_width, // Unused
++ png_height; // Unused
+
+- // Obtain the pixel depth if available or 0 otherwise
+- PRInt32 GetPixelDepth() const
+- {
+- if (!mInfo) {
+- return 0;
++ int png_bit_depth,
++ png_color_type;
++
++ if (png_get_IHDR(mPNG, mInfo, &png_width, &png_height, &png_bit_depth,
++ &png_color_type, NULL, NULL, NULL)) {
++
++ return (png_color_type == PNG_COLOR_TYPE_RGB_ALPHA &&
++ png_bit_depth == 8);
++ } else {
++ return false;
+ }
+- return mInfo->pixel_depth;
+ }
+
+ public:
+ png_structp mPNG;
+ png_infop mInfo;
+ nsIntRect mFrameRect;
+ PRUint8 *mCMSLine;
+ PRUint8 *interlacebuf;
+
+
diff --git a/testing/xulrunner/PKGBUILD b/testing/xulrunner/PKGBUILD
new file mode 100644
index 000000000..646cfa715
--- /dev/null
+++ b/testing/xulrunner/PKGBUILD
@@ -0,0 +1,56 @@
+# $Id: PKGBUILD 148367 2012-01-30 18:52:22Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Alexander Baldeck <alexander@archlinux.org>
+pkgname=xulrunner
+pkgver=9.0.1
+pkgrel=2
+pkgdesc="Mozilla Runtime Environment"
+arch=('i686' 'x86_64')
+license=('MPL' 'GPL' 'LGPL')
+depends=('gtk2' 'mozilla-common' 'nss>=3.13.1' 'libxt' 'libxrender' 'hunspell' 'startup-notification' 'mime-types' 'dbus-glib' 'alsa-lib' 'libevent' 'sqlite3>=3.7.4' 'libnotify' 'libvpx' 'python2')
+makedepends=('zip' 'unzip' 'pkg-config' 'diffutils' 'wireless_tools' 'yasm' 'mesa')
+url="http://wiki.mozilla.org/XUL:Xul_Runner"
+source=(ftp://ftp.mozilla.org/pub/mozilla.org/firefox/releases//$pkgver/source/firefox-$pkgver.source.tar.bz2
+ mozconfig
+ mozilla-pkgconfig.patch
+ 5007_fix_libpr0n_nsPNGDecoder.patch)
+options=('!emptydirs')
+replaces=('xulrunner-oss')
+md5sums=('7cf2bd379792a9b232267c6a79680566'
+ '8dfb78c5bd0581c8cf4753813132bf0b'
+ '27271ce647a83906ef7a24605e840d61'
+ '6f3be4f4ac0217d0782b1a0770d80f28')
+
+build() {
+ cd "$srcdir/mozilla-release"
+ cp "$srcdir/mozconfig" .mozconfig
+
+ #fix libdir/sdkdir - fedora
+ patch -Np1 -i "$srcdir/mozilla-pkgconfig.patch"
+
+ patch -Np1 -i "$srcdir/5007_fix_libpr0n_nsPNGDecoder.patch"
+
+ export LDFLAGS="$LDFLAGS -Wl,-rpath,/usr/lib/xulrunner-$pkgver"
+ export PYTHON="/usr/bin/python2"
+
+ make -j1 -f client.mk build MOZ_MAKE_FLAGS="$MAKEFLAGS"
+}
+
+package() {
+ cd "$srcdir/mozilla-release"
+ make -j1 -f client.mk DESTDIR="$pkgdir" install
+
+ rm -rf "$pkgdir"/usr/lib/xulrunner-$pkgver/{dictionaries,hyphenation}
+ ln -sf /usr/share/hunspell "$pkgdir/usr/lib/xulrunner-$pkgver/dictionaries"
+ ln -sf /usr/share/hyphen "$pkgdir/usr/lib/xulrunner-$pkgver/hyphenation"
+
+ # add xulrunner library path to ld.so.conf
+ install -d $pkgdir/etc/ld.so.conf.d
+ echo "/usr/lib/xulrunner-$pkgver" > $pkgdir/etc/ld.so.conf.d/xulrunner.conf
+
+ chmod +x "${pkgdir}/usr/lib/xulrunner-devel-$pkgver/sdk/bin/xpt.py"
+ sed -i 's|!/usr/bin/env python|!/usr/bin/env python2|' "$pkgdir/usr/lib/xulrunner-devel-$pkgver/sdk/bin/xpt.py"
+ sed -i 's|!/usr/bin/env python|!/usr/bin/env python2|' "$pkgdir/usr/lib/xulrunner-devel-$pkgver/sdk/bin/header.py"
+ sed -i 's|!/usr/bin/env python|!/usr/bin/env python2|' "$pkgdir/usr/lib/xulrunner-devel-$pkgver/sdk/bin/typelib.py"
+ sed -i 's|!/usr/bin/env python|!/usr/bin/env python2|' "$pkgdir/usr/lib/xulrunner-devel-$pkgver/sdk/bin/xpidl.py"
+}
diff --git a/testing/xulrunner/mozconfig b/testing/xulrunner/mozconfig
new file mode 100644
index 000000000..82a6ae512
--- /dev/null
+++ b/testing/xulrunner/mozconfig
@@ -0,0 +1,38 @@
+. $topsrcdir/xulrunner/config/mozconfig
+
+ac_add_options --prefix=/usr
+ac_add_options --libdir=/usr/lib
+
+# System libraries
+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 --with-system-libvpx
+ac_add_options --enable-system-hunspell
+ac_add_options --enable-system-sqlite
+ac_add_options --enable-system-ffi
+ac_add_options --enable-system-cairo
+ac_add_options --enable-system-pixman
+ac_add_options --with-pthreads
+
+# Features
+ac_add_options --enable-safe-browsing
+ac_add_options --enable-startup-notification
+ac_add_options --enable-gio
+
+ac_add_options --disable-gnomevfs
+ac_add_options --disable-crashreporter
+ac_add_options --disable-updater
+ac_add_options --disable-tests
+ac_add_options --disable-mochitest
+ac_add_options --disable-installer
+
+# Optimization
+ac_add_options --enable-optimize
+
+export MOZILLA_OFFICIAL=1
+mk_add_options MOZILLA_OFFICIAL=1
diff --git a/testing/xulrunner/mozilla-pkgconfig.patch b/testing/xulrunner/mozilla-pkgconfig.patch
new file mode 100644
index 000000000..037d4aee0
--- /dev/null
+++ b/testing/xulrunner/mozilla-pkgconfig.patch
@@ -0,0 +1,40 @@
+diff -Nur mozilla-release.orig/xulrunner/installer/libxul-embedding.pc.in mozilla-release/xulrunner/installer/libxul-embedding.pc.in
+--- mozilla-release.orig/xulrunner/installer/libxul-embedding.pc.in 2011-12-19 22:11:38.100005674 +0000
++++ mozilla-release/xulrunner/installer/libxul-embedding.pc.in 2011-12-19 22:14:35.095147521 +0000
+@@ -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-release.orig/xulrunner/installer/libxul.pc.in mozilla-release/xulrunner/installer/libxul.pc.in
+--- mozilla-release.orig/xulrunner/installer/libxul.pc.in 2011-12-19 22:11:38.126672110 +0000
++++ mozilla-release/xulrunner/installer/libxul.pc.in 2011-12-19 22:14:04.375412141 +0000
+@@ -1,5 +1,6 @@
+ prefix=%prefix%
+ sdkdir=%sdkdir%
++libdir=%libdir%
+ includedir=%includedir%
+ idldir=%idldir%
+
+diff -Nur mozilla-release.orig/xulrunner/installer/Makefile.in mozilla-release/xulrunner/installer/Makefile.in
+--- mozilla-release.orig/xulrunner/installer/Makefile.in 2011-12-19 22:11:38.126672110 +0000
++++ mozilla-release/xulrunner/installer/Makefile.in 2011-12-19 22:18:28.743135321 +0000
+@@ -108,6 +108,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-release.orig/xulrunner/installer/mozilla-js.pc.in mozilla-release/xulrunner/installer/mozilla-js.pc.in
+--- mozilla-release.orig/xulrunner/installer/mozilla-js.pc.in 2011-12-19 22:11:38.126672110 +0000
++++ mozilla-release/xulrunner/installer/mozilla-js.pc.in 2011-12-19 22:18:55.569571004 +0000
+@@ -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/testing/zlib/PKGBUILD b/testing/zlib/PKGBUILD
new file mode 100644
index 000000000..fb2257513
--- /dev/null
+++ b/testing/zlib/PKGBUILD
@@ -0,0 +1,32 @@
+# $Id: PKGBUILD 148043 2012-01-30 14:35:26Z pierre $
+# Maintainer: Pierre Schmitz <pierre@archlinux.de>
+
+pkgname=zlib
+pkgver=1.2.6
+pkgrel=1
+pkgdesc='Compression library implementing the deflate compression method found in gzip and PKZIP'
+arch=('i686' 'x86_64')
+license=('custom')
+url="http://www.zlib.net/"
+depends=('glibc')
+source=("http://zlib.net/current/zlib-${pkgver}.tar.gz")
+md5sums=('618e944d7c7cd6521551e30b32322f4a')
+
+build() {
+ cd ${srcdir}/zlib-$pkgver
+ ./configure --prefix=/usr
+ make
+
+ grep -A 24 '^ Copyright' zlib.h > LICENSE
+}
+
+check() {
+ cd ${srcdir}/zlib-$pkgver
+ make test
+}
+
+package() {
+ cd ${srcdir}/zlib-$pkgver
+ make install DESTDIR=${pkgdir}
+ install -D -m644 LICENSE ${pkgdir}/usr/share/licenses/zlib/LICENSE
+}
diff --git a/testing/zvbi/PKGBUILD b/testing/zvbi/PKGBUILD
new file mode 100644
index 000000000..ed33f6a26
--- /dev/null
+++ b/testing/zvbi/PKGBUILD
@@ -0,0 +1,38 @@
+# $Id: PKGBUILD 148369 2012-01-30 18:52:25Z ibiru $
+# Maintainer:
+# Contributor: Alexander Baldeck <alexander@archlinux.org>
+# Contributor: dorphell <dorphell@archlinux.org>
+
+pkgname=zvbi
+pkgver=0.2.33
+pkgrel=4
+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'
+ 'zvbi-0.2.33-libpng15.patch')
+md5sums=('1741a6045c3eedfb611d645f2da69ac8'
+ '38766bc59e1571133d0399f0102da653'
+ '4434de7addc438be8c5a33274146bd11')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ patch -Np1 -i "${srcdir}/fix-includes.patch"
+ patch -Np0 -i "${srcdir}/zvbi-0.2.33-libpng15.patch"
+
+ ./configure --prefix=/usr \
+ --disable-static \
+ --mandir=/usr/share/man
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/testing/zvbi/fix-includes.patch b/testing/zvbi/fix-includes.patch
new file mode 100644
index 000000000..28252649e
--- /dev/null
+++ b/testing/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>
diff --git a/testing/zvbi/zvbi-0.2.33-libpng15.patch b/testing/zvbi/zvbi-0.2.33-libpng15.patch
new file mode 100644
index 000000000..262677376
--- /dev/null
+++ b/testing/zvbi/zvbi-0.2.33-libpng15.patch
@@ -0,0 +1,21 @@
+Index: src/exp-gfx.c
+===================================================================
+RCS file: /cvsroot/zapping/vbi/src/exp-gfx.c,v
+retrieving revision 1.16
+diff -u -B -r1.16 exp-gfx.c
+--- src/exp-gfx.c 24 Feb 2008 14:17:47 -0000 1.16
++++ src/exp-gfx.c 15 Feb 2011 20:03:58 -0000
+@@ -1672,11 +1672,11 @@
+ char title[80];
+ unsigned int i;
+
+- if (setjmp (png_ptr->jmpbuf))
++ if (setjmp (png_jmpbuf(png_ptr)))
+ return FALSE;
+
+ png_set_write_fn (png_ptr,
+- (voidp) gfx,
++ (png_voidp) gfx,
+ write_data,
+ flush_data);
+