summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolás Reynolds <fauno@kiwwwi.com.ar>2012-11-19 10:10:33 -0300
committerNicolás Reynolds <fauno@kiwwwi.com.ar>2012-11-19 10:10:33 -0300
commit9e30cea6b8a2e90fd8958ca1f773e3a382179763 (patch)
tree7ce1eda16c69a04998d595f3bfcccf9a65489327
parent503317d2f4cb14793d90cca90822975c41e8c0a1 (diff)
parent858daf289b238f4aa3190656635fc354ddd2bce9 (diff)
Merge branch 'master' of gparabola:abslibre-mips64el
Conflicts: social/sobby/PKGBUILD ~fauno/kyotocabinet/PKGBUILD ~fauno/kyototycoon/PKGBUILD
-rw-r--r--community/abe/PKGBUILD4
-rw-r--r--community/account-plugins/PKGBUILD2
-rw-r--r--community/acpi/PKGBUILD2
-rw-r--r--community/activity-log-manager/PKGBUILD2
-rw-r--r--community/audit/PKGBUILD8
-rwxr-xr-xcommunity/audit/auditd.rc4
-rw-r--r--community/avant-window-navigator/PKGBUILD2
-rw-r--r--community/avr-binutils/PKGBUILD19
-rw-r--r--community/avr-binutils/avr-size.patch432
-rw-r--r--community/awn-extras-applets/PKGBUILD86
-rw-r--r--community/awn-extras-applets/add-battery-upower-support.patch200
-rw-r--r--community/awn-extras-applets/awn-extras-applets.install23
-rw-r--r--community/awn-extras-applets/awn-extras-glib2.32.patch226
-rw-r--r--community/awn-extras-applets/awn-extras-libnotify0.7.patch12
-rw-r--r--community/awn-extras-applets/check-dependencies.patch71
-rw-r--r--community/awn-extras-applets/fix-shinyswitcher-scrolling.patch96
-rw-r--r--community/awn-extras-applets/fix-weather-applet.patch48
-rw-r--r--community/awn-extras-applets/remove-settings-menu.patch229
-rw-r--r--community/bless/PKGBUILD2
-rw-r--r--community/blobwars/PKGBUILD2
-rw-r--r--community/canorus/0006-Add-lz-and-lpthread-to-linker-flags.patch11
-rw-r--r--community/canorus/PKGBUILD7
-rw-r--r--community/cgit/PKGBUILD13
-rw-r--r--community/cgminer/PKGBUILD55
-rw-r--r--community/cgminer/cgminer51
-rw-r--r--community/cgminer/cgminer.conf.d11
-rw-r--r--community/cgminer/cgminer.service8
-rw-r--r--community/clewn/PKGBUILD2
-rw-r--r--community/credentials-preferences/PKGBUILD2
-rw-r--r--community/dhex/PKGBUILD2
-rw-r--r--community/dmenu/PKGBUILD4
-rw-r--r--community/dunst/PKGBUILD2
-rw-r--r--community/dvdbackup/PKGBUILD2
-rw-r--r--community/ejabberd/PKGBUILD6
-rw-r--r--community/ejabberd/ejabberd.service10
-rw-r--r--community/erlang-cl/PKGBUILD41
-rw-r--r--community/erlang-sdl/PKGBUILD39
-rw-r--r--community/esdl/PKGBUILD12
-rw-r--r--community/ettercap/PKGBUILD16
-rw-r--r--community/ettercap/ettercap.desktop8
-rw-r--r--community/expac/PKGBUILD7
-rw-r--r--community/fcitx-googlepinyin/PKGBUILD31
-rw-r--r--community/fcitx-googlepinyin/fcitx-googlepinyin.install11
-rw-r--r--community/fcitx-m17n/PKGBUILD29
-rw-r--r--community/fcitx-unikey/PKGBUILD32
-rw-r--r--community/fcitx-unikey/fcitx-unikey.install11
-rw-r--r--community/ffmpeg-compat/PKGBUILD2
-rw-r--r--community/fox/PKGBUILD8
-rw-r--r--community/gnome-menus2/PKGBUILD33
-rw-r--r--community/gnome-mplayer/PKGBUILD6
-rw-r--r--community/go/PKGBUILD20
-rw-r--r--community/gpg-crypter/PKGBUILD33
-rw-r--r--community/gpg-crypter/gpg-crypter.changelog2
-rw-r--r--community/gtk-engine-unico/PKGBUILD15
-rw-r--r--community/keepassx/PKGBUILD29
-rw-r--r--community/keepassx/keepassx.install12
-rw-r--r--community/kicad/PKGBUILD9
-rw-r--r--community/klavaro/PKGBUILD4
-rw-r--r--community/kleansweep/PKGBUILD2
-rw-r--r--community/libaccounts-glib/PKGBUILD2
-rw-r--r--community/libaccounts-qt/PKGBUILD2
-rw-r--r--community/libdesktop-agnostic/PKGBUILD2
-rw-r--r--community/libfm/PKGBUILD8
-rw-r--r--community/libhx/PKGBUILD6
-rw-r--r--community/libpng12/PKGBUILD50
-rw-r--r--community/librsync/PKGBUILD2
-rw-r--r--community/libsignon-glib/PKGBUILD2
-rw-r--r--community/libxdg-basedir/PKGBUILD2
-rw-r--r--community/lmms/PKGBUILD18
-rw-r--r--community/lmms/zynaddsubfx_unlink.patch10
-rw-r--r--community/luajit/PKGBUILD14
-rw-r--r--community/luasql/PKGBUILD22
-rw-r--r--community/lxc/PKGBUILD5
-rw-r--r--community/lxlauncher/PKGBUILD27
-rw-r--r--community/lxpanel/PKGBUILD24
-rw-r--r--community/mediaproxy/PKGBUILD10
-rw-r--r--community/menu-cache/PKGBUILD28
-rw-r--r--community/menu-cache/menu-cache-gen.h8
-rw-r--r--community/mod_wsgi/PKGBUILD35
-rw-r--r--community/mod_wsgi/mod_wsgi.install14
-rw-r--r--community/mplayer2/PKGBUILD71
-rw-r--r--community/mplayer2/mplayer2-20120729-fix-vf_lavc-compilation.patch31
-rw-r--r--community/mplayer2/mplayer2-20120729-libquvi-support.patch277
-rw-r--r--community/multipath-tools/PKGBUILD8
-rw-r--r--community/mythtv/PKGBUILD4
-rw-r--r--community/ncmpcpp/PKGBUILD21
-rw-r--r--community/nginx/PKGBUILD19
-rw-r--r--community/opencc/PKGBUILD25
-rw-r--r--community/openntpd/PKGBUILD5
-rw-r--r--community/openntpd/openntpd.install20
-rw-r--r--community/os-prober/PKGBUILD8
-rw-r--r--community/pax-utils/PKGBUILD6
-rw-r--r--community/pdns-recursor/PKGBUILD10
-rw-r--r--community/performous/PKGBUILD39
-rw-r--r--community/pidgin-libnotify/PKGBUILD20
-rw-r--r--community/pidgin-libnotify/pidgin-libnotify-showbutton.patch10
-rw-r--r--community/pkgfile/PKGBUILD16
-rw-r--r--community/pmount/PKGBUILD27
-rw-r--r--community/polipo/PKGBUILD16
-rw-r--r--community/privoxy/PKGBUILD6
-rw-r--r--community/python-matplotlib/PKGBUILD5
-rw-r--r--community/qingy/PKGBUILD15
-rw-r--r--community/qingy/qingy@.service3
-rw-r--r--community/qmmp/PKGBUILD6
-rw-r--r--community/qmmp/qmmp.changelog3
-rw-r--r--community/redshift/PKGBUILD6
-rw-r--r--community/ripperx/PKGBUILD11
-rw-r--r--community/signon-keyring-extension/PKGBUILD2
-rw-r--r--community/signon-plugin-oauth2/PKGBUILD2
-rw-r--r--community/signon-ui/PKGBUILD2
-rw-r--r--community/signon/PKGBUILD2
-rw-r--r--community/sshguard/PKGBUILD11
-rw-r--r--community/sshguard/sshguard-journalctl2
-rw-r--r--community/tinyproxy/PKGBUILD6
-rw-r--r--community/tinyproxy/tinyproxy.service1
-rw-r--r--community/trickle/PKGBUILD7
-rw-r--r--community/usb_modeswitch/PKGBUILD12
-rw-r--r--community/wings3d/PKGBUILD17
-rw-r--r--core/binutils/PKGBUILD13
-rw-r--r--core/binutils/binutils.install2
-rw-r--r--core/glib2/PKGBUILD6
-rw-r--r--core/iputils/PKGBUILD20
-rw-r--r--core/iputils/iputils-20121114-free-unintialized.patch36
-rw-r--r--core/kmod/0001-depmod-fix-hash-lookup-by-relpath-instead-of-uncrelp.patch43
-rw-r--r--core/kmod/0002-depmod-fix-asserting-mod-kmod-NULL.patch31
-rw-r--r--core/kmod/PKGBUILD26
-rw-r--r--core/rfkill/PKGBUILD13
-rw-r--r--core/rfkill/service.block11
-rw-r--r--core/rfkill/service.unblock11
-rw-r--r--core/util-linux/PKGBUILD7
-rw-r--r--core/util-linux/util-linux.install3
-rw-r--r--extra/a2ps/PKGBUILD2
-rw-r--r--extra/aspell-pt/PKGBUILD10
-rw-r--r--extra/avidemux/PKGBUILD4
-rw-r--r--extra/avidemux/PKGBUILD.WIP83
-rw-r--r--extra/banshee/PKGBUILD2
-rw-r--r--extra/baobab/PKGBUILD9
-rw-r--r--extra/bigloo/PKGBUILD10
-rw-r--r--extra/boo/PKGBUILD2
-rw-r--r--extra/cabal-install/PKGBUILD4
-rw-r--r--extra/cairo/PKGBUILD3
-rw-r--r--extra/calligra/PKGBUILD4
-rw-r--r--extra/check/PKGBUILD31
-rw-r--r--extra/check/check.install20
-rw-r--r--extra/claws-mail-extra-plugins/PKGBUILD11
-rw-r--r--extra/claws-mail/PKGBUILD15
-rw-r--r--extra/cmake/PKGBUILD8
-rw-r--r--extra/colord/PKGBUILD7
-rw-r--r--extra/datefudge/PKGBUILD2
-rw-r--r--extra/devhelp/PKGBUILD8
-rw-r--r--extra/di/PKGBUILD6
-rw-r--r--extra/easytag/PKGBUILD18
-rw-r--r--extra/easytag/easytag-2.1.7-new_libmp4v2.patch535
-rw-r--r--extra/easytag/easytag.install2
-rw-r--r--extra/elfutils/PKGBUILD4
-rw-r--r--extra/empathy/PKGBUILD8
-rw-r--r--extra/f-spot/PKGBUILD2
-rw-r--r--extra/farstream/PKGBUILD10
-rw-r--r--extra/ffmpeg/PKGBUILD4
-rw-r--r--extra/ffmpegthumbnailer/PKGBUILD20
-rw-r--r--extra/ftgl/PKGBUILD10
-rw-r--r--extra/fuse/PKGBUILD6
-rw-r--r--extra/gdm/PKGBUILD10
-rw-r--r--extra/glpk/PKGBUILD16
-rw-r--r--extra/gnome-bluetooth/PKGBUILD8
-rw-r--r--extra/gnome-control-center/PKGBUILD14
-rw-r--r--extra/gnome-menus/PKGBUILD6
-rw-r--r--extra/gnome-online-accounts/PKGBUILD10
-rw-r--r--extra/gnome-settings-daemon/PKGBUILD12
-rw-r--r--extra/gsl/PKGBUILD13
-rw-r--r--extra/gst-plugins-ugly/PKGBUILD4
-rw-r--r--extra/gstreamer0.10-ugly/PKGBUILD4
-rw-r--r--extra/kdebindings-qyoto/PKGBUILD2
-rw-r--r--extra/kdelibs3/PKGBUILD2
-rw-r--r--extra/kismet/PKGBUILD16
-rw-r--r--extra/latex2rtf/PKGBUILD11
-rw-r--r--extra/latex2rtf/latex2rtf.install16
-rw-r--r--extra/libgdiplus/PKGBUILD13
-rw-r--r--extra/libgpod/PKGBUILD10
-rw-r--r--extra/libgsf/PKGBUILD6
-rw-r--r--extra/libgweather/PKGBUILD6
-rw-r--r--extra/llvm/PKGBUILD13
-rw-r--r--extra/llvm/clang-3.1-fix-lwg-2141.patch65
-rw-r--r--extra/lyx/PKGBUILD6
-rw-r--r--extra/maxima/PKGBUILD6
-rw-r--r--extra/mesa/PKGBUILD14
-rw-r--r--extra/networkmanager-pptp/PKGBUILD14
-rw-r--r--extra/networkmanager-pptp/fix-path-to-auth-dialog.patch26
-rw-r--r--extra/networkmanager-pptp/gtk_table_to_gtk_grid.patch40
-rw-r--r--extra/nvidia-304xx-utils/PKGBUILD98
-rw-r--r--extra/nvidia-304xx/PKGBUILD45
-rw-r--r--extra/nvidia-304xx/nvidia.install15
-rw-r--r--extra/opal/PKGBUILD4
-rw-r--r--extra/pango/PKGBUILD8
-rw-r--r--extra/qalculate-kde/PKGBUILD2
-rw-r--r--extra/qwt/PKGBUILD9
-rw-r--r--extra/qwtplot3d/PKGBUILD7
-rw-r--r--extra/rhythmbox/PKGBUILD25
-rw-r--r--extra/sbcl/PKGBUILD12
-rw-r--r--extra/slim/PKGBUILD6
-rw-r--r--extra/slim/fix-array-overflow.patch13
-rw-r--r--extra/sound-juicer/PKGBUILD18
-rw-r--r--extra/system-config-printer/PKGBUILD17
-rw-r--r--extra/telepathy-idle/PKGBUILD7
-rw-r--r--extra/telepathy-qt/PKGBUILD7
-rw-r--r--extra/telepathy-salut/PKGBUILD8
-rw-r--r--extra/texmacs/PKGBUILD28
-rw-r--r--extra/tomboy/PKGBUILD2
-rw-r--r--extra/truecrypt/PKGBUILD4
-rw-r--r--extra/vala/PKGBUILD6
-rw-r--r--extra/vlc/PKGBUILD4
-rw-r--r--extra/webmin/PKGBUILD6
-rw-r--r--extra/webmin/webmin-config.tar.bz2bin3123 -> 3125 bytes
-rw-r--r--extra/wxgtk/PKGBUILD10
-rw-r--r--extra/wxmaxima/PKGBUILD4
-rw-r--r--extra/x264/PKGBUILD6
-rw-r--r--extra/xf86-video-intel/PKGBUILD6
-rw-r--r--extra/xmms/PKGBUILD8
-rw-r--r--extra/xmms/xmms-1.2.11-fix-mikmod-driver.patch20
-rw-r--r--extra/xsp/PKGBUILD2
-rw-r--r--extra/zsh/PKGBUILD10
-rw-r--r--extra/zsh/zsh.install11
-rw-r--r--kernels/linux-libre-lts-rt/PKGBUILD25
-rw-r--r--kernels/linux-libre-lts-rt/ext4-options.patch2
-rw-r--r--kernels/linux-libre-lts-rt/linux-libre-lts-rt.install2
-rw-r--r--kernels/linux-libre-lts-rt/module-init-wait-3.0.patch77
-rw-r--r--kernels/linux-libre-lts-rt/module-symbol-waiting-3.0.patch66
-rw-r--r--libre/bogofilter-libre/PKGBUILD2
-rw-r--r--libre/cdfs-libre/PKGBUILD2
-rw-r--r--libre/file-roller-libre/PKGBUILD16
-rw-r--r--libre/file-roller-libre/extract-to-fix.patch13
-rw-r--r--libre/gnu-ghostscript/PKGBUILD2
-rw-r--r--libre/gstreamer0.10-bad-libre/PKGBUILD8
-rw-r--r--libre/kile-libre/PKGBUILD5
-rw-r--r--libre/mplayer-libre/.directory3
-rw-r--r--libre/mplayer-libre/PKGBUILD12
-rw-r--r--libre/mplayer-vaapi-libre/PKGBUILD10
-rw-r--r--libre/parabolaweb-utils/PKGBUILD14
-rw-r--r--libre/parabolaweb-utils/parabolaweb-download14
-rw-r--r--libre/parabolaweb-utils/parabolaweb-update22
-rw-r--r--libre/parabolaweb-utils/parabolaweb.conf2
-rw-r--r--libre/python-pgpdump/PKGBUILD27
-rw-r--r--libre/spectrwm-libre/PKGBUILD4
-rw-r--r--pcr/anyremote/PKGBUILD24
-rw-r--r--pcr/anyremote/anyremote.install6
-rw-r--r--pcr/aurvote/PKGBUILD18
-rwxr-xr-xpcr/aurvote/aurvote193
-rwxr-xr-xpcr/auto-complete/PKGBUILD30
-rwxr-xr-xpcr/auto-complete/auto-complete.install21
-rwxr-xr-xpcr/bambus/PKGBUILD26
-rw-r--r--pcr/bashmount/PKGBUILD37
-rw-r--r--pcr/bashmount/bashmount.install9
-rw-r--r--pcr/bup/PKGBUILD35
-rw-r--r--pcr/cegui-0.5/CEGUIString.h5603
-rw-r--r--pcr/cegui-0.5/PKGBUILD41
-rw-r--r--pcr/cegui-0.6/PKGBUILD55
-rw-r--r--pcr/cgdb/PKGBUILD21
-rw-r--r--pcr/cl-ppcre/LICENSE25
-rw-r--r--pcr/cl-ppcre/PKGBUILD41
-rw-r--r--pcr/cl-ppcre/cl-ppcre.install73
-rw-r--r--pcr/clx-git/PKGBUILD71
-rw-r--r--pcr/clx-git/README.licensing4
-rw-r--r--pcr/clx-git/clx.install76
-rw-r--r--pcr/command-not-found/PKGBUILD47
-rw-r--r--pcr/command-not-found/install14
-rw-r--r--pcr/conky-control/PKGBUILD35
-rw-r--r--pcr/conky-control/conky-control.install17
-rw-r--r--pcr/conky-lua/PKGBUILD54
-rw-r--r--pcr/cw/PKGBUILD46
-rw-r--r--pcr/cw/cw.install26
-rw-r--r--pcr/cw/cw.patch78
-rw-r--r--pcr/django-cms/PKGBUILD26
-rw-r--r--pcr/django-extensions/PKGBUILD39
-rw-r--r--pcr/django-social-auth/PKGBUILD22
-rw-r--r--pcr/django-tagging/PKGBUILD20
-rw-r--r--pcr/doxymacs/PKGBUILD26
-rw-r--r--pcr/doxymacs/doxymacs.install19
-rw-r--r--pcr/dsh/PKGBUILD19
-rw-r--r--pcr/dswm/PKGBUILD41
-rw-r--r--pcr/dswm/dswm.install21
-rw-r--r--pcr/emacs-bzr/PKGBUILD93
-rw-r--r--pcr/emacs-bzr/emacs-bzr.install32
-rw-r--r--pcr/emacs-color-theme/PKGBUILD48
-rw-r--r--pcr/emacs-color-theme/emacs-color-theme.install9
-rw-r--r--pcr/emacs-color-theme/fix-build.patch19
-rw-r--r--pcr/emacs-color-theme/gnus-bug.diff28
-rw-r--r--pcr/emacs-elib/PKGBUILD51
-rw-r--r--pcr/emacs-elib/elib-deprecation.patch461
-rw-r--r--pcr/emacs-elib/emacs-elib.install34
-rw-r--r--pcr/emacs-jabber/PKGBUILD26
-rw-r--r--pcr/emacs-jabber/jabber.el.install27
-rw-r--r--pcr/emacs-js2-mode/PKGBUILD20
-rw-r--r--pcr/emacs-magit-git/PKGBUILD45
-rw-r--r--pcr/emacs-magit-git/emacs-magit-git.install30
-rw-r--r--pcr/emacs-org-mode-ravel-git/PKGBUILD52
-rw-r--r--pcr/emacs-org-mode/PKGBUILD39
-rw-r--r--pcr/emacs-org-mode/emacs-org-mode.install62
-rw-r--r--pcr/emacs-tuareg-mode/PKGBUILD29
-rw-r--r--pcr/emacs-tuareg-mode/emacs-tuareg-mode.install17
-rw-r--r--pcr/emhacks/PKGBUILD33
-rw-r--r--pcr/emhacks/emhacks.install21
-rw-r--r--pcr/eterm/PKGBUILD39
-rw-r--r--pcr/fpdns/PKGBUILD28
-rw-r--r--pcr/fwsnort/PKGBUILD44
-rw-r--r--pcr/fwsnort/install_pl.patch27
-rw-r--r--pcr/gcc-gcj/PKGBUILD83
-rw-r--r--pcr/gcc-gcj/gcc-gcj.install20
-rw-r--r--pcr/gcc-gcj/gcc_pure64.patch26
-rwxr-xr-xpcr/gcc-gcj/libjava-sjlj.dpatch65
-rw-r--r--pcr/gloobus-preview-bzr/PKGBUILD73
-rw-r--r--pcr/gloobus-preview-bzr/gloobus-preview-bzr.install28
-rw-r--r--pcr/gnome-boxes/PKGBUILD33
-rw-r--r--pcr/gnome-boxes/gnome-boxes.install13
-rw-r--r--pcr/gnome-rdp/PKGBUILD46
-rw-r--r--pcr/gnome-rdp/appindicator.patch249
-rw-r--r--pcr/gnucash-docs/PKGBUIDL1
-rw-r--r--pcr/gnucash-docs/PKGBUILD28
-rw-r--r--pcr/gnucash-docs/gnucash-docs.install20
-rw-r--r--pcr/gnuit/PKGBUILD30
-rw-r--r--pcr/gnuit/gnuit.install16
-rw-r--r--pcr/gnuplot-py/PKGBUILD23
-rw-r--r--pcr/gtkpacman/PKGBUILD30
-rw-r--r--pcr/h264enc/PKGBUILD35
-rw-r--r--pcr/h264enc/h264enc.install9
-rw-r--r--pcr/ibus-bogo/PKGBUILD55
-rw-r--r--pcr/ibus-bogo/install40
-rw-r--r--pcr/ipycli-git/PKGBUILD56
-rw-r--r--pcr/jdee/PKGBUILD49
-rw-r--r--pcr/jdee/jdee-build.el8
-rw-r--r--pcr/jdee/jdee.install54
-rw-r--r--pcr/knot/PKGBUILD31
-rw-r--r--pcr/kompozer/NS_IMETHOD_i686.patch11
-rw-r--r--pcr/kompozer/PKGBUILD59
-rw-r--r--pcr/kompozer/any_kernel_26_plus.patch31
-rw-r--r--pcr/kompozer/gcc46_default_ctors.patch22
-rw-r--r--pcr/kompozer/kompozer-libpng14.patch17
-rw-r--r--pcr/kompozer/kompozer-libpng15.patch64
-rw-r--r--pcr/kompozer/kompozer.desktop11
-rw-r--r--pcr/kompozer/kompozer_gcc_4.7.patch107
-rw-r--r--pcr/kompozer/mozconfig.patch142
-rw-r--r--pcr/lessc/PKGBUILD29
-rw-r--r--pcr/libast/LICENSE.txt21
-rw-r--r--pcr/libast/PKGBUILD33
-rwxr-xr-xpcr/libcacard/PKGBUILD29
-rw-r--r--pcr/libdshconfig/PKGBUILD20
-rw-r--r--pcr/libibus/PKGBUILD44
-rw-r--r--pcr/libnatpmp/PKGBUILD28
-rw-r--r--pcr/libpng12/PKGBUILD48
-rw-r--r--pcr/libtxc_dxtn/PKGBUILD29
-rw-r--r--pcr/liburcu/PKGBUILD22
-rw-r--r--pcr/maruku/PKGBUILD24
-rw-r--r--pcr/mit-scheme/PKGBUILD80
-rw-r--r--pcr/moblock/MoBlock-nfq.sh.patch53
-rwxr-xr-xpcr/moblock/PKGBUILD55
-rw-r--r--pcr/moblock/config30
-rwxr-xr-xpcr/moblock/moblock70
-rwxr-xr-xpcr/moblock/moblock-update174
-rw-r--r--pcr/moblock/moblock.install26
-rw-r--r--pcr/moblock/moblock.logrotate11
-rw-r--r--pcr/moblock/moblock_0.9_rc2.patch912
-rw-r--r--pcr/moblock/moblock_include.patch10
-rw-r--r--pcr/mycron-git/PKGBUILD49
-rw-r--r--pcr/mycron-git/mycron.install3
-rw-r--r--pcr/nautilus-dropbox/PKGBUILD45
-rw-r--r--pcr/nautilus-dropbox/nautilus-dropbox.install16
-rw-r--r--pcr/note/PKGBUILD34
-rw-r--r--pcr/ocaml-camomile/PKGBUILD28
-rw-r--r--pcr/ocaml-pcre/PKGBUILD34
-rw-r--r--pcr/oinkmaster/PKGBUILD34
-rw-r--r--pcr/owncloud/PKGBUILD35
-rw-r--r--pcr/owncloud/owncloud.conf17
-rw-r--r--pcr/owncloud/owncloud.install17
-rw-r--r--pcr/package-query/PKGBUILD29
-rw-r--r--pcr/packer/PKGBUILD36
-rw-r--r--pcr/pacman-color/0001-Add-conflict-for-replacing-owned-empty-directory.patch152
-rw-r--r--pcr/pacman-color/0002-Check-empty-subdirectory-ownership.patch61
-rw-r--r--pcr/pacman-color/PKGBUILD42
-rw-r--r--pcr/pacman-color/color.conf46
-rw-r--r--pcr/pacman-color/pacman-color-4.0.3.patch1297
-rw-r--r--pcr/perl-iptables-parse/PKGBUILD22
-rw-r--r--pcr/perl-latex-encode/PKGBUILD29
-rw-r--r--pcr/pysheng/PKGBUILD24
-rw-r--r--pcr/python-prettytable/PKGBUILD29
-rw-r--r--pcr/python2-argparse/PKGBUILD25
-rw-r--r--pcr/python2-cheetah/Changelog12
-rw-r--r--pcr/python2-cheetah/PKGBUILD34
-rw-r--r--pcr/python2-fabric/PKGBUILD23
-rw-r--r--pcr/python2-flask-lesscss/PKGBUILD17
-rw-r--r--pcr/python2-oauth2/PKGBUILD20
-rw-r--r--pcr/python2-paramiko/PKGBUILD33
-rw-r--r--pcr/python2-pillow/PKGBUILD22
-rw-r--r--pcr/python2-ropemacs/PKGBUILD21
-rw-r--r--pcr/python2-ropemacs/python2-ropemacs.install8
-rw-r--r--pcr/python2-ropemode/PKGBUILD20
-rw-r--r--pcr/python2-ssh/PKGBUILD26
-rw-r--r--pcr/quack/PKGBUILD26
-rw-r--r--pcr/quack/quack.install18
-rw-r--r--pcr/re2-hg/PKGBUILD29
-rw-r--r--pcr/ruby-haml/PKGBUILD35
-rw-r--r--pcr/ruby-haml/ruby-yard/PKGBUILD36
-rw-r--r--pcr/ruby-libnotify/PKGBUILD23
-rw-r--r--pcr/ruby-syntax/PKGBUILD23
-rw-r--r--pcr/ruby-yard/PKGBUILD36
-rw-r--r--pcr/spice-gtk3/PKGBUILD38
-rw-r--r--pcr/spice-protocol/PKGBUILD36
-rw-r--r--pcr/spice/PKGBUILD38
-rw-r--r--pcr/startupmanager/PKGBUILD45
-rw-r--r--pcr/stumpwm-git/PKGBUILD151
-rw-r--r--pcr/stumpwm-git/stumpwm.install17
-rw-r--r--pcr/theide/PKGBUILD54
-rw-r--r--pcr/theide/license.txt9
-rw-r--r--pcr/theide/theide.install3
-rw-r--r--pcr/toluapp/PKGBUILD28
-rwxr-xr-xpcr/toluapp/config_linux.py22
-rw-r--r--pcr/upp-svn/GCC.bm23
-rw-r--r--pcr/upp-svn/PKGBUILD67
-rw-r--r--pcr/upp-svn/license.txt9
-rw-r--r--pcr/vim-ifdef/PKGBUILD23
-rw-r--r--pcr/vim-ifdef/vimdoc.install14
-rwxr-xr-xpcr/wallchange/PKGBUILD34
-rw-r--r--pcr/wallchange/wallchange.conf23
-rw-r--r--pcr/wallchange/wallchange.install13
-rw-r--r--pcr/wuala/copyright16
-rw-r--r--pcr/wuala/loader3.jarbin0 -> 338969 bytes
-rw-r--r--pcr/wuala/readme.txt17
-rwxr-xr-xpcr/wuala/wuala23
-rwxr-xr-xpcr/wuala/wualacmd2
-rw-r--r--pcr/xfce-theme-greybird/PKGBUILD32
-rw-r--r--pcr/zeroinstall-injector/PKGBUILD36
-rw-r--r--pcr/zeroinstall-injector/zeroinstall-injector.install12
-rw-r--r--pcr/zsh-yaourt/PKGBUILD21
-rw-r--r--radio/idjc/idjc_0.8.4_configure.patch12
-rw-r--r--social/anubis/PKGBUILD30
-rw-r--r--social/asterisk/PKGBUILD8
-rw-r--r--social/inspircd/PKGBUILD62
-rw-r--r--social/inspircd/gnutls.patch12
-rw-r--r--social/inspircd/inspircd.install15
-rw-r--r--social/inspircd/inspircd.rcd50
-rw-r--r--social/libnatpmp/PKGBUILD2
-rw-r--r--social/sobby/PKGBUILD6
-rw-r--r--social/tokyocabinet/PKGBUILD2
-rw-r--r--~fauno/faenza-icon-theme/PKGBUILD25
-rw-r--r--~fauno/kyotocabinet/PKGBUILD2
-rw-r--r--~fauno/kyototycoon/PKGBUILD4
444 files changed, 19736 insertions, 784 deletions
diff --git a/community/abe/PKGBUILD b/community/abe/PKGBUILD
index 9f646794f..82568c345 100644
--- a/community/abe/PKGBUILD
+++ b/community/abe/PKGBUILD
@@ -5,7 +5,7 @@ pkgname=abe
pkgver=1.1
pkgrel=9
pkgdesc="A scrolling, platform-jumping, key-collecting, ancient pyramid exploring game"
-arch=('i686' 'x86_64')
+arch=('i686' 'x86_64' 'mips64el')
url="http://abe.sourceforge.net"
license=('GPL')
depends=('sdl_mixer')
@@ -21,7 +21,7 @@ build() {
patch -Np1 -i "$srcdir"/$pkgname.patch
- ./configure --prefix=/usr
+ ./configure --prefix=/usr --host=$CHOST
make
}
diff --git a/community/account-plugins/PKGBUILD b/community/account-plugins/PKGBUILD
index b5928821b..f49f30d5d 100644
--- a/community/account-plugins/PKGBUILD
+++ b/community/account-plugins/PKGBUILD
@@ -5,7 +5,7 @@ pkgname=account-plugins
pkgver=0.9
pkgrel=1
pkgdesc="Account configuration plugins for credentials preferences"
-arch=('i686' 'x86_64')
+arch=('i686' 'x86_64' 'mips64el')
url="https://launchpad.net/online-accounts-account-plugins"
license=('GPL')
depends=('credentials-preferences' 'signon-keyring-extension' 'signon-plugin-oauth2')
diff --git a/community/acpi/PKGBUILD b/community/acpi/PKGBUILD
index f4eb265c2..9ea5236c1 100644
--- a/community/acpi/PKGBUILD
+++ b/community/acpi/PKGBUILD
@@ -3,7 +3,7 @@
pkgname=acpi
pkgver=1.6
-pkgrel=1
+pkgrel=1.1
pkgdesc="Linux ACPI client providing battery, AC power, and thermal readings"
arch=('i686' 'x86_64' 'mips64el')
url="http://sourceforge.net/projects/acpiclient"
diff --git a/community/activity-log-manager/PKGBUILD b/community/activity-log-manager/PKGBUILD
index 1d860b203..861adf798 100644
--- a/community/activity-log-manager/PKGBUILD
+++ b/community/activity-log-manager/PKGBUILD
@@ -6,7 +6,7 @@ pkgname=activity-log-manager
pkgver=0.9.4
pkgrel=3
pkgdesc="A graphical user interface which lets you easily control what gets logged by Zeitgeist"
-arch=('i686' 'x86_64')
+arch=('i686' 'x86_64' 'mips64el')
url="https://launchpad.net/activity-log-manager"
license=('GPL2')
depends=('gtk3' 'libgee' 'libzeitgeist' 'zeitgeist' 'hicolor-icon-theme' 'xdg-utils')
diff --git a/community/audit/PKGBUILD b/community/audit/PKGBUILD
index c0cad6e22..1a350d92d 100644
--- a/community/audit/PKGBUILD
+++ b/community/audit/PKGBUILD
@@ -1,11 +1,11 @@
-# $Id: PKGBUILD 78779 2012-10-24 13:52:59Z mtorromeo $
+# $Id: PKGBUILD 79970 2012-11-15 08:39:27Z mtorromeo $
# Maintainer: Massimiliano Torromeo <massimiliano.torromeo@gmail.com>
# Contributor: Connor Behan <connor.behan@gmail.com>
# Contributor: henning mueller <henning@orgizm.net>
pkgname=audit
pkgver=2.2.1
-pkgrel=3
+pkgrel=4
pkgdesc='User space utilities for storing and searching the audit records generated by the audit subsystem in the Linux kernel.'
url=http://people.redhat.com/sgrubb/$pkgname
arch=(i686 x86_64 mips64el)
@@ -55,9 +55,11 @@ package() {
install -m755 "$srcdir/auditd.rc" etc/rc.d/auditd
install -d var/log/audit
rm -rf etc/rc.d/init.d etc/sysconfig
+
+ sed -ri 's| /sbin| /usr/sbin|' etc/audit/*.conf etc/audisp/plugins.d/*.conf
}
sha256sums=('9865ca89f5b975ccf25441ddf45a874448f2bba944005aa8cd5e3c3148713a63'
- '42c0a4f6ebbd185f783320fd552541d15eb91029b83add21d1e0289ac2dda7ba'
+ '1e374ff164667b6a11f84c825a39996b449dc712d573996907cd47f063bf0dd5'
'3c7179f40216b594675f26bb73884406c8ac91577b609dd1ab9837f889954007'
'e60c031c6354f41938447c439eadee77127307687a2c487a54fab884eeafd9c2')
diff --git a/community/audit/auditd.rc b/community/audit/auditd.rc
index 69764aa73..13976341c 100755
--- a/community/audit/auditd.rc
+++ b/community/audit/auditd.rc
@@ -9,8 +9,8 @@ case "$1" in
start)
stat_busy "Starting auditd"
[ -z "$PID" ] && {
- /sbin/auditctl -R /etc/audit/audit.rules >/dev/null || stat_die
- /sbin/auditd || stat_die
+ /usr/sbin/auditctl -R /etc/audit/audit.rules >/dev/null || stat_die
+ /usr/sbin/auditd || stat_die
}
add_daemon auditd
stat_done
diff --git a/community/avant-window-navigator/PKGBUILD b/community/avant-window-navigator/PKGBUILD
index 8f8562a69..6d6bb256e 100644
--- a/community/avant-window-navigator/PKGBUILD
+++ b/community/avant-window-navigator/PKGBUILD
@@ -8,7 +8,7 @@ pkgname=avant-window-navigator
pkgver=0.4.0
pkgrel=13
pkgdesc="Fully customisable dock-like window navigator for GNOME"
-arch=('i686' 'x86_64')
+arch=('i686' 'x86_64' 'mips64el')
url="https://launchpad.net/awn"
license=('GPL')
depends=('libdesktop-agnostic' 'libwnck' 'libgtop' 'gconf' 'python2-dbus' 'pygtk' 'python2-xdg' 'hicolor-icon-theme' 'xdg-utils')
diff --git a/community/avr-binutils/PKGBUILD b/community/avr-binutils/PKGBUILD
index b870deb99..cb5a600a8 100644
--- a/community/avr-binutils/PKGBUILD
+++ b/community/avr-binutils/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 79108 2012-10-30 17:34:10Z schuay $
+# $Id: PKGBUILD 79838 2012-11-13 22:12:42Z schuay $
# Maintainer: schuay <jakob.gruber@gmail.com>
# Contributor: Brad Fanella <bradfanella@archlinux.us>
# Contributor: Corrado Primier <bardo@aur.archlinux.org>
@@ -8,7 +8,7 @@
pkgname=avr-binutils
pkgver=2.23
-pkgrel=1
+pkgrel=2
_pkgname=binutils
pkgdesc="A set of programs to assemble and manipulate binary and object files for the avr architecture"
arch=('i686' 'x86_64' 'mips64el')
@@ -18,14 +18,20 @@ depends=('glibc>=2.16' 'zlib')
provides=("binutils-avr=$pkgver")
replaces=('binutils-avr')
options=('!libtool' '!distcc' '!ccache')
-source=(ftp://ftp.gnu.org/gnu/binutils/binutils-${pkgver}.tar.gz)
+source=("ftp://ftp.gnu.org/gnu/binutils/binutils-${pkgver}.tar.gz"
+ "avr-size.patch")
_builddir=binutils-build
build() {
- cd ${srcdir}
+ cd ${srcdir}/${_pkgname}-${pkgver}
+
+ # See https://bugs.archlinux.org/task/32504
+ patch -Np0 < ${srcdir}/avr-size.patch
- config_guess=$(${_pkgname}-${pkgver}/config.guess)
+ config_guess=$(./config.guess)
+
+ cd ${srcdir}
rm -rf ${_builddir}
mkdir ${_builddir} && cd ${_builddir}
@@ -65,4 +71,5 @@ package() {
done
}
-md5sums=('ed58f50d8920c3f1d9cb110d5c972c27')
+md5sums=('ed58f50d8920c3f1d9cb110d5c972c27'
+ '573769ec1107d1bfed78680edd7ae63f')
diff --git a/community/avr-binutils/avr-size.patch b/community/avr-binutils/avr-size.patch
new file mode 100644
index 000000000..2e01c3d31
--- /dev/null
+++ b/community/avr-binutils/avr-size.patch
@@ -0,0 +1,432 @@
+AVR specific only
+--------------------------------------------------------------------------------
+--- binutils/size.c 2007-08-06 13:56:14.000000000 -0600
++++ binutils/size.c 2007-09-13 09:13:10.281250000 -0600
+@@ -35,10 +35,31 @@
+ #include "getopt.h"
+ #include "bucomm.h"
+
+-#ifndef BSD_DEFAULT
+-#define BSD_DEFAULT 1
++typedef enum
++{
++ format_sysv = 0,
++ format_bsd = 1,
++ format_avr = 2,
++} format_type_t;
++
++
++/* Set the default format. */
++#define FORMAT_DEFAULT_SYSV 0
++#define FORMAT_DEFAULT_BSD 1
++#define FORMAT_DEFAULT_AVR 0
++
++#if FORMAT_DEFAULT_SYSV
++ #define FORMAT_DEFAULT format_sysv
++ #define FORMAT_NAME "sysv"
++#elif FORMAT_DEFAULT_BSD
++ #define FORMAT_DEFAULT format_bsd
++ #define FORMAT_NAME "berkeley"
++#elif FORMAT_DEFAULT_AVR
++ #define FORMAT_DEFAULT format_avr
++ #define FORMAT_NAME "avr"
+ #endif
+
++
+ /* Program options. */
+
+ static enum
+@@ -47,9 +68,8 @@ static enum
+ }
+ radix = decimal;
+
+-/* 0 means use AT&T-style output. */
+-static int berkeley_format = BSD_DEFAULT;
+
++format_type_t format = FORMAT_DEFAULT;
+ static int show_version = 0;
+ static int show_help = 0;
+ static int show_totals = 0;
+@@ -63,6 +83,157 @@ static bfd_size_type total_textsize;
+ /* Program exit status. */
+ static int return_code = 0;
+
++
++/* AVR Size specific stuff */
++
++#define AVR64 64UL
++#define AVR128 128UL
++#define AVR256 256UL
++#define AVR512 512UL
++#define AVR1K 1024UL
++#define AVR2K 2048UL
++#define AVR4K 4096UL
++#define AVR8K 8192UL
++#define AVR16K 16384UL
++#define AVR24K 24576UL
++#define AVR32K 32768UL
++#define AVR40K 40960UL
++#define AVR64K 65536UL
++#define AVR128K 131072UL
++#define AVR256K 262144UL
++
++typedef struct
++{
++ char *name;
++ long flash;
++ long ram;
++ long eeprom;
++} avr_device_t;
++
++avr_device_t avr[] =
++{
++ {"atmega2560", AVR256K, AVR8K, AVR4K},
++ {"atmega2561", AVR256K, AVR8K, AVR4K},
++
++ {"at43usb320", AVR128K, 608UL, 0},
++ {"at90can128", AVR128K, AVR4K, AVR4K},
++ {"at90usb1286", AVR128K, AVR8K, AVR4K},
++ {"at90usb1287", AVR128K, AVR8K, AVR4K},
++ {"atmega128", AVR128K, AVR4K, AVR4K},
++ {"atmega1280", AVR128K, AVR8K, AVR4K},
++ {"atmega1281", AVR128K, AVR8K, AVR4K},
++ {"atmega1284P", AVR128K, AVR16K, AVR4K},
++ {"atmega103", AVR128K, 4000UL, AVR4K},
++ {"atxmega128a1",AVR128K, AVR8K, AVR2K},
++
++ {"at90can64", AVR64K, AVR4K, AVR2K},
++ {"at90usb646", AVR64K, AVR4K, AVR2K},
++ {"at90usb647", AVR64K, AVR4K, AVR2K},
++ {"atmega64", AVR64K, AVR4K, AVR2K},
++ {"atmega640", AVR64K, AVR8K, AVR4K},
++ {"atmega644", AVR64K, AVR4K, AVR2K},
++ {"atmega644p", AVR64K, AVR4K, AVR2K},
++ {"atmega645", AVR64K, AVR4K, AVR2K},
++ {"atmega6450", AVR64K, AVR4K, AVR2K},
++ {"atmega649", AVR64K, AVR4K, AVR2K},
++ {"atmega6490", AVR64K, AVR4K, AVR2K},
++ {"atxmega64a1", AVR64K, AVR4K, AVR2K},
++
++ {"atmega406", AVR40K, AVR512, AVR2K},
++
++ {"at90can32", AVR32K, AVR2K, AVR1K},
++ {"at94k", AVR32K, AVR4K, 0},
++ {"atmega32", AVR32K, AVR2K, AVR1K},
++ {"atmega323", AVR32K, AVR2K, AVR1K},
++ {"atmega324p", AVR32K, AVR2K, AVR1K},
++ {"atmega325", AVR32K, AVR2K, AVR1K},
++ {"atmega325p", AVR32K, AVR2K, AVR1K},
++ {"atmega3250", AVR32K, AVR2K, AVR1K},
++ {"atmega3250p", AVR32K, AVR2K, AVR1K},
++ {"atmega328p", AVR32K, AVR2K, AVR1K},
++ {"atmega329", AVR32K, AVR2K, AVR1K},
++ {"atmega329p", AVR32K, AVR2K, AVR1K},
++ {"atmega3290", AVR32K, AVR2K, AVR1K},
++ {"atmega3290p", AVR32K, AVR2K, AVR1K},
++ {"atmega32hvb", AVR32K, AVR2K, AVR1K},
++ {"atmega32c1", AVR32K, AVR2K, AVR1K},
++ {"atmega32m1", AVR32K, AVR2K, AVR1K},
++ {"atmega32u4", AVR32K, 2560UL, AVR1K},
++
++ {"at43usb355", AVR24K, 1120, 0},
++
++ {"at76c711", AVR16K, AVR2K, 0},
++ {"at90pwm216", AVR16K, AVR1K, AVR512},
++ {"at90pwm316", AVR16K, AVR1K, AVR512},
++ {"at90usb162", AVR16K, AVR512, AVR512},
++ {"atmega16", AVR16K, AVR1K, AVR512},
++ {"atmega161", AVR16K, AVR1K, AVR512},
++ {"atmega162", AVR16K, AVR1K, AVR512},
++ {"atmega163", AVR16K, AVR1K, AVR512},
++ {"atmega164", AVR16K, AVR1K, AVR512},
++ {"atmega164p", AVR16K, AVR1K, AVR512},
++ {"atmega165", AVR16K, AVR1K, AVR512},
++ {"atmega165p", AVR16K, AVR1K, AVR512},
++ {"atmega168", AVR16K, AVR1K, AVR512},
++ {"atmega168p", AVR16K, AVR1K, AVR512},
++ {"atmega169", AVR16K, AVR1K, AVR512},
++ {"atmega169p", AVR16K, AVR1K, AVR512},
++ {"attiny167", AVR16K, AVR512, AVR512},
++ {"atxmega16d4", AVR16K, AVR2K, AVR1K},
++
++ {"at90c8534", AVR8K, 352, AVR512},
++ {"at90pwm1", AVR8K, AVR512, AVR512},
++ {"at90pwm2", AVR8K, AVR512, AVR512},
++ {"at90pwm2b", AVR8K, AVR512, AVR512},
++ {"at90pwm3", AVR8K, AVR512, AVR512},
++ {"at90pwm3b", AVR8K, AVR512, AVR512},
++ {"at90s8515", AVR8K, AVR512, AVR512},
++ {"at90s8535", AVR8K, AVR512, AVR512},
++ {"at90usb82", AVR8K, AVR512, AVR512},
++ {"atmega8", AVR8K, AVR1K, AVR512},
++ {"atmega8515", AVR8K, AVR512, AVR512},
++ {"atmega8535", AVR8K, AVR512, AVR512},
++ {"atmega88", AVR8K, AVR1K, AVR512},
++ {"atmega88p", AVR8K, AVR1K, AVR512},
++ {"attiny84", AVR8K, AVR512, AVR512},
++ {"attiny85", AVR8K, AVR512, AVR512},
++ {"attiny861", AVR8K, AVR512, AVR512},
++ {"attiny88", AVR8K, AVR256, AVR64},
++
++ {"at90s4414", AVR4K, 352, AVR256},
++ {"at90s4433", AVR4K, AVR128, AVR256},
++ {"at90s4434", AVR4K, 352, AVR256},
++ {"atmega48", AVR4K, AVR512, AVR256},
++ {"atmega48p", AVR4K, AVR512, AVR256},
++ {"attiny43u", AVR4K, AVR256, AVR64},
++ {"attiny44", AVR4K, AVR256, AVR256},
++ {"attiny45", AVR4K, AVR256, AVR256},
++ {"attiny461", AVR4K, AVR256, AVR256},
++ {"attiny48", AVR4K, AVR256, AVR64},
++
++ {"at86rf401", AVR2K, 224, AVR128},
++ {"at90s2313", AVR2K, AVR128, AVR128},
++ {"at90s2323", AVR2K, AVR128, AVR128},
++ {"at90s2333", AVR2K, 224, AVR128},
++ {"at90s2343", AVR2K, AVR128, AVR128},
++ {"attiny22", AVR2K, 224, AVR128},
++ {"attiny2313", AVR2K, AVR128, AVR128},
++ {"attiny24", AVR2K, AVR128, AVR128},
++ {"attiny25", AVR2K, AVR128, AVR128},
++ {"attiny26", AVR2K, AVR128, AVR128},
++ {"attiny261", AVR2K, AVR128, AVR128},
++ {"attiny28", AVR2K, 0, 0},
++
++ {"at90s1200", AVR1K, 0, AVR64},
++ {"attiny11", AVR1K, 0, AVR64},
++ {"attiny12", AVR1K, 0, AVR64},
++ {"attiny13", AVR1K, AVR64, AVR64},
++ {"attiny15", AVR1K, 0, AVR64},
++};
++
++static char *avrmcu = NULL;
++
++
+ static char *target = NULL;
+
+ /* Forward declarations. */
+@@ -78,7 +240,8 @@ usage (FILE *stream, int status)
+ fprintf (stream, _(" Displays the sizes of sections inside binary files\n"));
+ fprintf (stream, _(" If no input file(s) are specified, a.out is assumed\n"));
+ fprintf (stream, _(" The options are:\n\
+- -A|-B --format={sysv|berkeley} Select output style (default is %s)\n\
++ -A|-B|-C --format={sysv|berkeley|avr} Select output style (default is %s)\n\
++ --mcu=<avrmcu> MCU name for AVR format only\n\
+ -o|-d|-x --radix={8|10|16} Display numbers in octal, decimal or hex\n\
+ -t --totals Display the total sizes (Berkeley only)\n\
+ --common Display total size for *COM* syms\n\
+@@ -87,11 +250,7 @@ usage (FILE *stream, int status)
+ -h --help Display this information\n\
+ -v --version Display the program's version\n\
+ \n"),
+-#if BSD_DEFAULT
+- "berkeley"
+-#else
+- "sysv"
+-#endif
++FORMAT_NAME
+ );
+ list_supported_targets (program_name, stream);
+ if (REPORT_BUGS_TO[0] && status == 0)
+@@ -102,6 +261,7 @@ usage (FILE *stream, int status)
+ #define OPTION_FORMAT (200)
+ #define OPTION_RADIX (OPTION_FORMAT + 1)
+ #define OPTION_TARGET (OPTION_RADIX + 1)
++#define OPTION_MCU (OPTION_TARGET + 1)
+
+ static struct option long_options[] =
+ {
+@@ -109,6 +269,7 @@ static struct option long_options[] =
+ {"format", required_argument, 0, OPTION_FORMAT},
+ {"radix", required_argument, 0, OPTION_RADIX},
+ {"target", required_argument, 0, OPTION_TARGET},
++ {"mcu", required_argument, 0, 203},
+ {"totals", no_argument, &show_totals, 1},
+ {"version", no_argument, &show_version, 1},
+ {"help", no_argument, &show_help, 1},
+@@ -140,7 +301,7 @@ main (int argc, char **argv)
+ bfd_init ();
+ set_default_bfd_target ();
+
+- while ((c = getopt_long (argc, argv, "ABHhVvdfotx", long_options,
++ while ((c = getopt_long (argc, argv, "ABCHhVvdfotx", long_options,
+ (int *) 0)) != EOF)
+ switch (c)
+ {
+@@ -149,11 +310,15 @@ main (int argc, char **argv)
+ {
+ case 'B':
+ case 'b':
+- berkeley_format = 1;
++ format = format_bsd;
+ break;
+ case 'S':
+ case 's':
+- berkeley_format = 0;
++ format = format_sysv;
++ break;
++ case 'A':
++ case 'a':
++ format = format_avr;
+ break;
+ default:
+ non_fatal (_("invalid argument to --format: %s"), optarg);
+@@ -161,6 +326,10 @@ main (int argc, char **argv)
+ }
+ break;
+
++ case OPTION_MCU:
++ avrmcu = optarg;
++ break;
++
+ case OPTION_TARGET:
+ target = optarg;
+ break;
+@@ -189,11 +358,14 @@ main (int argc, char **argv)
+ break;
+
+ case 'A':
+- berkeley_format = 0;
++ format = format_sysv;
+ break;
+ case 'B':
+- berkeley_format = 1;
++ format = format_bsd;
+ break;
++ case 'C':
++ format = format_avr;
++ break;
+ case 'v':
+ case 'V':
+ show_version = 1;
+@@ -239,7 +411,7 @@ main (int argc, char **argv)
+ for (; optind < argc;)
+ display_file (argv[optind++]);
+
+- if (show_totals && berkeley_format)
++ if (show_totals && format == format_bsd)
+ {
+ bfd_size_type total = total_textsize + total_datasize + total_bsssize;
+
+@@ -600,13 +772,117 @@ print_sysv_format (bfd *file)
+ printf ("\n\n");
+ }
+
++
++static avr_device_t *
++avr_find_device (void)
++{
++ unsigned int i;
++ if (avrmcu != NULL)
++ {
++ for (i = 0; i < sizeof(avr) / sizeof(avr[0]); i++)
++ {
++ if (strcmp(avr[i].name, avrmcu) == 0)
++ {
++ /* Match found */
++ return (&avr[i]);
++ }
++ }
++ }
++ return (NULL);
++}
++
++
++
++static void
++print_avr_format (bfd *file)
++{
++ char *avr_name = "Unknown";
++ int flashmax = 0;
++ int rammax = 0;
++ int eeprommax = 0;
++ asection *section;
++ bfd_size_type data_size = 0;
++ bfd_size_type text_size = 0;
++ bfd_size_type bss_size = 0;
++ bfd_size_type bootloader_size = 0;
++ bfd_size_type noinit_size = 0;
++ bfd_size_type eeprom_size = 0;
++
++ avr_device_t *avrdevice = avr_find_device();
++ if (avrdevice != NULL)
++ {
++ avr_name = avrdevice->name;
++ flashmax = avrdevice->flash;
++ rammax = avrdevice->ram;
++ eeprommax = avrdevice->eeprom;
++ }
++
++ if ((section = bfd_get_section_by_name (file, ".data")) != NULL)
++ data_size = bfd_section_size (file, section);
++ if ((section = bfd_get_section_by_name (file, ".text")) != NULL)
++ text_size = bfd_section_size (file, section);
++ if ((section = bfd_get_section_by_name (file, ".bss")) != NULL)
++ bss_size = bfd_section_size (file, section);
++ if ((section = bfd_get_section_by_name (file, ".bootloader")) != NULL)
++ bootloader_size = bfd_section_size (file, section);
++ if ((section = bfd_get_section_by_name (file, ".noinit")) != NULL)
++ noinit_size = bfd_section_size (file, section);
++ if ((section = bfd_get_section_by_name (file, ".eeprom")) != NULL)
++ eeprom_size = bfd_section_size (file, section);
++
++ bfd_size_type text = text_size + data_size + bootloader_size;
++ bfd_size_type data = data_size + bss_size + noinit_size;
++ bfd_size_type eeprom = eeprom_size;
++
++ printf ("AVR Memory Usage\n"
++ "----------------\n"
++ "Device: %s\n\n", avr_name);
++
++ /* Text size */
++ printf ("Program:%8ld bytes", text);
++ if (flashmax > 0)
++ {
++ printf (" (%2.1f%% Full)", ((float)text / flashmax) * 100);
++ }
++ printf ("\n(.text + .data + .bootloader)\n\n");
++
++ /* Data size */
++ printf ("Data: %8ld bytes", data);
++ if (rammax > 0)
++ {
++ printf (" (%2.1f%% Full)", ((float)data / rammax) * 100);
++ }
++ printf ("\n(.data + .bss + .noinit)\n\n");
++
++ /* EEPROM size */
++ if (eeprom > 0)
++ {
++ printf ("EEPROM: %8ld bytes", eeprom);
++ if (eeprommax > 0)
++ {
++ printf (" (%2.1f%% Full)", ((float)eeprom / eeprommax) * 100);
++ }
++ printf ("\n(.eeprom)\n\n");
++ }
++}
++
++
+ static void
+ print_sizes (bfd *file)
+ {
+ if (show_common)
+ calculate_common_size (file);
+- if (berkeley_format)
+- print_berkeley_format (file);
+- else
+- print_sysv_format (file);
++ switch (format)
++ {
++ case format_sysv:
++ print_sysv_format (file);
++ break;
++ case format_bsd:
++ print_berkeley_format (file);
++ break;
++ case format_avr:
++ default:
++ print_avr_format (file);
++ break;
++ }
+ }
diff --git a/community/awn-extras-applets/PKGBUILD b/community/awn-extras-applets/PKGBUILD
new file mode 100644
index 000000000..59fd1bcdd
--- /dev/null
+++ b/community/awn-extras-applets/PKGBUILD
@@ -0,0 +1,86 @@
+# Maintainer: György Balló <ballogy@freestart.hu>
+# Contributor: Biru Ionut <ionut@archlinux.ro>
+# Contributor: Jonathan Liu <net147@hotmail.com>
+# Contributor: Daniel J Griffiths <ghost1227@archlinux.us>
+
+pkgname=awn-extras-applets
+_pkgname=awn-extras
+pkgver=0.4.0
+pkgrel=14
+pkgdesc="Collection of applets for avant-window-navigator"
+arch=('i686' 'x86_64')
+url="https://launchpad.net/awn-extras"
+license=('GPL')
+depends=('avant-window-navigator' 'python2-notify' 'vte' 'gnome-menus' 'gnome-menus2' 'webkitgtk2')
+makedepends=('intltool' 'vala')
+optdepends=('python2-feedparser: comics, feeds, mail applets'
+ 'python2-rsvg: comics, cairo-clock, hardware-sensors applets'
+ 'gstreamer0.10-python: media-player, volume-control applets'
+ 'python2-dateutil: cairo-clock (optional), calendar applets'
+ 'python2-gdata: calendar applet'
+ 'python2-vobject: calendar applet'
+ 'python2-pyinotify: thinkhdaps applet (optional)'
+ 'python2-libgnome: stacks applet'
+ 'python2-gnomedesktop: stacks applet'
+ 'python2-wnck: slickswitcher applet'
+ 'fortune-mod: animal-farm applet'
+ 'upower: battery applet'
+ 'gnome-applets: cpufreq applet'
+ 'hddtemp: hardware-sensors applet (optional)'
+ 'lm_sensors: hardware-sensors applet (optional)')
+options=('!libtool')
+install=$pkgname.install
+source=(http://launchpad.net/$_pkgname/0.4/$pkgver/+download/$_pkgname-$pkgver.tar.gz
+ awn-extras-libnotify0.7.patch
+ remove-settings-menu.patch
+ add-battery-upower-support.patch
+ fix-shinyswitcher-scrolling.patch
+ fix-weather-applet.patch
+ awn-extras-glib2.32.patch
+ check-dependencies.patch)
+md5sums=('b559d68cd6ad295c961c20fcc5d9f9c0'
+ '2df8dfd8f0f1d458c09b56983c7d049f'
+ '52f8ce6a4eca862b0740e29a84db8ae5'
+ '26b56106b63b14ba3c99f1a2e96da05d'
+ '755c57dfbb65a314f247277918ec95ac'
+ 'bc22bb3e81aca0f651ae8acee1ce2f00'
+ '1cfcd1e5dc92c4c7c306472d42a21c2d'
+ '8f920c7dde987d66eef7d3739df1051d')
+
+build() {
+ cd "$srcdir/$_pkgname-$pkgver"
+ patch -Np1 -i "$srcdir/awn-extras-libnotify0.7.patch"
+ patch -Np1 -i "$srcdir/remove-settings-menu.patch"
+ patch -Np0 -i "$srcdir/add-battery-upower-support.patch"
+ patch -Np0 -i "$srcdir/fix-shinyswitcher-scrolling.patch"
+ patch -Np1 -i "$srcdir/fix-weather-applet.patch"
+ patch -Np0 -i "$srcdir/awn-extras-glib2.32.patch"
+ patch -Np1 -i "$srcdir/check-dependencies.patch"
+
+ # Python2 fix
+ find . -type f -name *.py | xargs sed -i 's@^#.*python$@#!/usr/bin/python2@'
+ sed -i 's/async(\"python \"/async(\"python2 \"/' applets/maintained/shiny-switcher/shinyswitcherapplet.c
+
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --disable-static \
+ --disable-pymod-checks \
+ --with-webkit \
+ PYTHON=/usr/bin/python2
+ make
+}
+
+package() {
+ cd "$srcdir/$_pkgname-$pkgver"
+
+ make GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 DESTDIR="$pkgdir" install
+
+ mkdir -p "$pkgdir/usr/share/gconf/schemas"
+ gconf-merge-schema "$pkgdir/usr/share/gconf/schemas/awn-extras.schemas" "$pkgdir"/etc/gconf/schemas/*.schemas
+ rm -r "$pkgdir"/etc
+
+ # Remove bandwidth-monitor applet, because it's not compatible with latest netstat
+ rm -R "$pkgdir"/usr/share/avant-window-navigator/applets/bandwidth-monitor*
+
+ # Remove pandora applet, because gtkmozembed is not available
+ rm -R "$pkgdir"/usr/share/avant-window-navigator/applets/pandora*
+}
diff --git a/community/awn-extras-applets/add-battery-upower-support.patch b/community/awn-extras-applets/add-battery-upower-support.patch
new file mode 100644
index 000000000..0548df758
--- /dev/null
+++ b/community/awn-extras-applets/add-battery-upower-support.patch
@@ -0,0 +1,200 @@
+=== modified file 'applets/maintained/battery/battery.py'
+--- applets/maintained/battery/battery.py 2010-08-12 19:00:37 +0000
++++ applets/maintained/battery/battery.py 2010-09-12 22:24:21 +0000
+@@ -1,6 +1,6 @@
+ #!/usr/bin/python
+ # Copyright (c) 2007 - 2008 Randal Barlow <im.tehk at gmail.com>
+-# 2008 - 2009 onox <denkpadje@gmail.com>
++# 2008 - 2010 onox <denkpadje@gmail.com>
+ #
+ # This library is free software; you can redistribute it and/or
+ # modify it under the terms of the GNU Lesser General Public
+@@ -223,11 +223,11 @@
+ return
+
+ charge_percentage = self.backend.get_capacity_percentage()
+-
+- charge_message = "Computer running on %s power" % ("AC", "battery")[self.backend.is_discharging()]
++ power_type = "AC" if self.backend.is_on_ac_power() else "battery"
++ charge_message = "Computer running on %s power" % power_type
+
+ if self.backend.is_charged():
+- charge_message += "\nBattery charged"
++ charge_message += "\n" + "Battery charged"
+ icon = os.path.join(themes_dir, self.settings["theme"], "battery-charged.svg")
+ else:
+ is_charging = self.backend.is_charging()
+@@ -343,6 +343,148 @@
+ return self.get_remaining_capacity() <= self.get_warning_capacity()
+
+
++class UPowerBackend(AbstractBackend):
++
++ """Backend that uses UPower via DBus.
++
++ Reference: http://upower.freedesktop.org/docs/Device.html
++
++ """
++
++ device_iface_name = "org.freedesktop.UPower.Device"
++
++ devices = None
++
++ def __init__(self):
++ self.__system_bus = dbus.SystemBus()
++
++ self.udi = UPowerBackend.get_batteries().keys()[0]
++ self.__set_dbus_interface(self.udi)
++
++ @staticmethod
++ def backend_useable():
++ return dbus is not None and len(UPowerBackend.get_batteries()) > 0
++
++ @staticmethod
++ def get_batteries():
++ udi_models = {}
++
++ try:
++ system_bus = dbus.SystemBus()
++
++ proxy = system_bus.get_object("org.freedesktop.UPower", "/org/freedesktop/UPower")
++ interface = dbus.Interface(proxy, "org.freedesktop.UPower")
++
++ UPowerBackend.devices = list(interface.EnumerateDevices())
++
++ for udi in UPowerBackend.devices:
++ device_iface = UPowerBackend.__get_dbus_interface(system_bus, udi)
++
++ # Type 2 is battery (1 is AC, 3 is UPS)
++ device_type = int(UPowerBackend.__get_property(device_iface, "Type"))
++ is_present = bool(UPowerBackend.__get_property(device_iface, "IsPresent"))
++
++ if device_type == 2 and is_present:
++ udi_models[str(udi)] = str(UPowerBackend.__get_property(device_iface, "Model"))
++ except dbus.DBusException, e:
++ print e.message
++ finally:
++ return udi_models
++
++ def set_active_udi(self, udi):
++ udi_models = UPowerBackend.get_batteries()
++
++ assert udi in udi_models
++
++ self.udi = udi
++ self.__set_dbus_interface(udi)
++
++ @staticmethod
++ def __get_dbus_interface(system_bus, udi):
++ proxy = system_bus.get_object("org.freedesktop.UPower", udi)
++ return dbus.Interface(proxy, "org.freedesktop.DBus.Properties")
++
++ def __set_dbus_interface(self, udi):
++ self.__battery = UPowerBackend.__get_dbus_interface(self.__system_bus, udi)
++
++ @staticmethod
++ def __get_property(interface, property_name):
++ return interface.Get(UPowerBackend.device_iface_name, property_name)
++
++ def get_active_udi(self):
++ return self.udi
++
++ def is_present(self):
++ return bool(UPowerBackend.__get_property(self.__battery, "IsPresent"))
++
++ def is_charging(self):
++ # State 1 is charging
++ return int(UPowerBackend.__get_property(self.__battery, "State")) == 1
++
++ def is_discharging(self):
++ # State 2 is discharging
++ return int(UPowerBackend.__get_property(self.__battery, "State")) == 2
++
++ def get_last_full_capacity(self):
++ # Measured in Wh
++ return int(UPowerBackend.__get_property(self.__battery, "EnergyFull"))
++
++ def get_remaining_capacity(self):
++ # Measured in Wh
++ return int(UPowerBackend.__get_property(self.__battery, "Energy"))
++
++ def get_charge_rate(self):
++ # Measured in W. Original value positive if being discharged, negative if being charged
++ return abs(int(UPowerBackend.__get_property(self.__battery, "EnergyRate")))
++
++ def get_capacity_percentage(self):
++ # Percentage in range 0 .. 100
++ return int(UPowerBackend.__get_property(self.__battery, "Percentage"))
++
++ def get_warning_capacity(self):
++ # Measured in Wh
++ return int(int(UPowerBackend.__get_property(self.__battery, "EnergyFullDesign")) * (warning_percentage / 100.))
++
++ def get_charge_time(self):
++ assert self.is_charging()
++
++ # Charge time in seconds
++ time = int(UPowerBackend.__get_property(self.__battery, "TimeToFull"))
++
++ if time == 0:
++ return super(UPowerBackend, self).get_charge_time()
++
++ hours = time / 3600
++ seconds = time % 3600
++ return (hours, int(round(seconds / 60.0)))
++
++ def get_remaining_time(self):
++ assert self.is_discharging()
++
++ # Discharge time in seconds
++ time = int(UPowerBackend.__get_property(self.__battery, "TimeToEmpty"))
++
++ if time == 0:
++ return super(UPowerBackend, self).get_discharge_time()
++
++ hours = time / 3600
++ seconds = time % 3600
++ return (hours, int(round(seconds / 60.0)))
++
++ def is_charged(self):
++ # State 4 is fully charged
++ return int(UPowerBackend.__get_property(self.__battery, "State")) == 4
++
++ def is_on_ac_power(self):
++ for udi in UPowerBackend.devices:
++ device_iface = UPowerBackend.__get_dbus_interface(self.__system_bus, udi)
++
++ # Property "Online" only has a value for AC power device
++ if bool(UPowerBackend.__get_property(device_iface, "Online")):
++ return True
++ return False
++
++
+ class HalBackend(AbstractBackend):
+
+ """Backend that uses HAL via DBus.
+@@ -372,7 +514,7 @@
+ return udi_models
+ except dbus.DBusException, e:
+ print e.message
+- return {}
++ return udi_models
+
+ def set_active_udi(self, udi):
+ udi_models = HalBackend.get_batteries()
+@@ -416,8 +558,12 @@
+ except dbus.DBusException:
+ return int(int(self.__hal_battery.GetProperty("battery.charge_level.design")) * (warning_percentage / 100.))
+
+-
+-backends = [HalBackend]
++ def is_on_ac_power(self):
++ # TODO Should check that _all_ batteries are not discharging
++ return not self.is_discharging()
++
++
++backends = [UPowerBackend, HalBackend]
+
+
+ if __name__ == "__main__":
+
diff --git a/community/awn-extras-applets/awn-extras-applets.install b/community/awn-extras-applets/awn-extras-applets.install
new file mode 100644
index 000000000..9f04bf6a2
--- /dev/null
+++ b/community/awn-extras-applets/awn-extras-applets.install
@@ -0,0 +1,23 @@
+pkgname=awn-extras
+
+post_install() {
+ gconfpkg --install $pkgname
+ xdg-icon-resource forceupdate
+}
+
+pre_upgrade() {
+ pre_remove $1
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+
+pre_remove() {
+ gconfpkg --uninstall $pkgname
+}
+
+post_remove() {
+ xdg-icon-resource forceupdate
+}
diff --git a/community/awn-extras-applets/awn-extras-glib2.32.patch b/community/awn-extras-applets/awn-extras-glib2.32.patch
new file mode 100644
index 000000000..563d73b56
--- /dev/null
+++ b/community/awn-extras-applets/awn-extras-glib2.32.patch
@@ -0,0 +1,226 @@
+=== modified file 'applets/maintained/awnterm/keybinder.h'
+--- applets/maintained/awnterm/keybinder.h 2009-12-04 15:32:54 +0000
++++ applets/maintained/awnterm/keybinder.h 2012-04-28 13:17:10 +0000
+@@ -24,7 +24,7 @@
+ #ifndef __AWN_KEY_BINDER_H__
+ #define __AWN_KEY_BINDER_H__
+
+-#include <glib/gtypes.h>
++#include <glib.h>
+
+ G_BEGIN_DECLS
+
+
+=== modified file 'applets/maintained/notification-daemon/daemon.h'
+--- applets/maintained/notification-daemon/daemon.h 2009-11-18 20:13:53 +0000
++++ applets/maintained/notification-daemon/daemon.h 2012-04-28 13:17:10 +0000
+@@ -31,8 +31,6 @@
+
+ #include <libawn/awn-applet.h>
+ #include <libawn/awn-applet-simple.h>
+-#include <glib/gmacros.h>
+-#include <glib/gerror.h>
+
+ #include <libawn/awn-dialog.h>
+ #include <libawn/awn-cairo-utils.h>
+
+=== modified file 'applets/maintained/notification-daemon/engines.c'
+--- applets/maintained/notification-daemon/engines.c 2010-04-10 17:06:17 +0000
++++ applets/maintained/notification-daemon/engines.c 2012-04-28 13:17:10 +0000
+@@ -38,8 +38,7 @@
+
+
+ #include <libawn/awn-applet.h>
+-#include <glib/gmacros.h>
+-#include <glib/gerror.h>
++#include <glib.h>
+
+ #include <libawn/awn-dialog.h>
+ #include <libawn/awn-applet-simple.h>
+@@ -50,7 +49,6 @@
+
+ #include <string.h>
+ #include <gtk/gtk.h>
+-#include <glib.h>
+ #ifndef HAVE_GTK_URL_LABEL
+ #include <libsexy/sexy-url-label.h>
+ #endif
+
+=== modified file 'applets/unmaintained/awnsystemmonitor/awnsystemmonitor.h'
+--- applets/unmaintained/awnsystemmonitor/awnsystemmonitor.h 2009-04-22 03:44:36 +0000
++++ applets/unmaintained/awnsystemmonitor/awnsystemmonitor.h 2012-04-28 13:17:10 +0000
+@@ -25,7 +25,7 @@
+ //#include <libawn/awn-title.h>
+ #include <libawn/awn-tooltip.h>
+
+-#include <glib/gtypes.h>
++#include <glib.h>
+ #include <glibtop/cpu.h>
+ #include <gconf/gconf-client.h>
+
+
+=== modified file 'applets/unmaintained/awnsystemmonitor/awntop_cairo_component.c'
+--- applets/unmaintained/awnsystemmonitor/awntop_cairo_component.c 2010-04-01 14:25:40 +0000
++++ applets/unmaintained/awnsystemmonitor/awntop_cairo_component.c 2012-04-28 13:17:10 +0000
+@@ -43,13 +43,11 @@
+
+
+ #include <libawn/awn-applet.h>
+-#include <glib/gmacros.h>
+-#include <glib/gerror.h>
++#include <glib.h>
+ #include <gconf/gconf-value.h>
+
+ #include <libawn/awn-dialog.h>
+ #include <libawn/awn-applet-simple.h>
+-#include <glib.h>
+ #include <gtk/gtk.h>
+
+
+
+=== modified file 'applets/unmaintained/awnsystemmonitor/cpu_component.c'
+--- applets/unmaintained/awnsystemmonitor/cpu_component.c 2009-08-27 20:20:33 +0000
++++ applets/unmaintained/awnsystemmonitor/cpu_component.c 2012-04-28 13:17:10 +0000
+@@ -18,13 +18,11 @@
+ */
+
+ #include <libawn/awn-applet.h>
+-#include <glib/gmacros.h>
+-#include <glib/gerror.h>
++#include <glib.h>
+ #include <gconf/gconf-value.h>
+
+ #include <libawn/awn-dialog.h>
+ #include <libawn/awn-applet-simple.h>
+-#include <glib.h>
+ #include <gtk/gtk.h>
+ #include <gdk/gdk.h>
+ #include <string.h>
+
+=== modified file 'applets/unmaintained/awnsystemmonitor/cpumetergconf.c'
+--- applets/unmaintained/awnsystemmonitor/cpumetergconf.c 2009-04-22 03:44:36 +0000
++++ applets/unmaintained/awnsystemmonitor/cpumetergconf.c 2012-04-28 13:17:10 +0000
+@@ -20,13 +20,10 @@
+ * Boston, MA 02111-1307, USA.
+ */
+ #include <string.h>
+-#include <glib/gmacros.h>
+-#include <glib/gerror.h>
++#include <glib.h>
+ #include <gconf/gconf-value.h>
+
+ #include <libawn/awn-applet.h>
+-#include <glib/gmacros.h>
+-#include <glib/gerror.h>
+ #include <gconf/gconf-value.h>
+
+ #include "cairo-utils.h"
+
+=== modified file 'applets/unmaintained/awnsystemmonitor/dashboard.h'
+--- applets/unmaintained/awnsystemmonitor/dashboard.h 2009-04-22 03:44:36 +0000
++++ applets/unmaintained/awnsystemmonitor/dashboard.h 2012-04-28 13:17:10 +0000
+@@ -23,13 +23,11 @@
+
+
+ #include <libawn/awn-applet.h>
+-#include <glib/gmacros.h>
+-#include <glib/gerror.h>
++#include <glib.h>
+ #include <gconf/gconf-value.h>
+
+ #include <libawn/awn-dialog.h>
+ #include <libawn/awn-applet-simple.h>
+-#include <glib.h>
+ #include <gtk/gtk.h>
+
+ #include <glibtop/mem.h>
+
+=== modified file 'applets/unmaintained/awnsystemmonitor/date_time_component.c'
+--- applets/unmaintained/awnsystemmonitor/date_time_component.c 2009-07-07 20:10:17 +0000
++++ applets/unmaintained/awnsystemmonitor/date_time_component.c 2012-04-28 13:17:10 +0000
+@@ -19,13 +19,11 @@
+
+
+ #include <libawn/awn-applet.h>
+-#include <glib/gmacros.h>
+-#include <glib/gerror.h>
++#include <glib.h>
+ #include <gconf/gconf-value.h>
+
+ #include <libawn/awn-dialog.h>
+ #include <libawn/awn-applet-simple.h>
+-#include <glib.h>
+ #include <gtk/gtk.h>
+ #include <gdk/gdk.h>
+ #include <string.h>
+
+=== modified file 'applets/unmaintained/awnsystemmonitor/loadavg_component.c'
+--- applets/unmaintained/awnsystemmonitor/loadavg_component.c 2009-07-07 20:10:17 +0000
++++ applets/unmaintained/awnsystemmonitor/loadavg_component.c 2012-04-28 13:17:10 +0000
+@@ -19,13 +19,11 @@
+
+ #include <glibtop/loadavg.h>
+ #include <libawn/awn-applet.h>
+-#include <glib/gmacros.h>
+-#include <glib/gerror.h>
++#include <glib.h>
+ #include <gconf/gconf-value.h>
+
+ #include <libawn/awn-dialog.h>
+ #include <libawn/awn-applet-simple.h>
+-#include <glib.h>
+ #include <gtk/gtk.h>
+ #include <gdk/gdk.h>
+ #include <string.h>
+
+=== modified file 'applets/unmaintained/awnsystemmonitor/sysmem_component.c'
+--- applets/unmaintained/awnsystemmonitor/sysmem_component.c 2009-08-27 20:20:33 +0000
++++ applets/unmaintained/awnsystemmonitor/sysmem_component.c 2012-04-28 13:17:10 +0000
+@@ -19,13 +19,11 @@
+
+ #include <glibtop/mem.h>
+ #include <libawn/awn-applet.h>
+-#include <glib/gmacros.h>
+-#include <glib/gerror.h>
++#include <glib.h>
+ #include <gconf/gconf-value.h>
+
+ #include <libawn/awn-dialog.h>
+ #include <libawn/awn-applet-simple.h>
+-#include <glib.h>
+ #include <gtk/gtk.h>
+ #include <gdk/gdk.h>
+ #include <string.h>
+
+=== modified file 'applets/unmaintained/awnsystemmonitor/uptime_component.c'
+--- applets/unmaintained/awnsystemmonitor/uptime_component.c 2009-07-07 20:10:17 +0000
++++ applets/unmaintained/awnsystemmonitor/uptime_component.c 2012-04-28 13:17:10 +0000
+@@ -1,12 +1,10 @@
+
+ #include <libawn/awn-applet.h>
+-#include <glib/gmacros.h>
+-#include <glib/gerror.h>
++#include <glib.h>
+ #include <gconf/gconf-value.h>
+
+ #include <libawn/awn-dialog.h>
+ #include <libawn/awn-applet-simple.h>
+-#include <glib.h>
+
+ #include <glibtop/uptime.h>
+ #include <glibtop/cpu.h>
+
+=== modified file 'applets/unmaintained/main-menu/applet.c'
+--- applets/unmaintained/main-menu/applet.c 2011-12-28 11:09:45 +0000
++++ applets/unmaintained/main-menu/applet.c 2012-04-28 13:17:10 +0000
+@@ -23,8 +23,7 @@
+
+ #include <string.h>
+
+-#include <glib/gmacros.h>
+-#include <glib/gerror.h>
++#include <glib.h>
+ #include <glib/gi18n.h>
+ #include <gtk/gtk.h>
+ #include <libdesktop-agnostic/fdo.h>
+
diff --git a/community/awn-extras-applets/awn-extras-libnotify0.7.patch b/community/awn-extras-applets/awn-extras-libnotify0.7.patch
new file mode 100644
index 000000000..c552e26f2
--- /dev/null
+++ b/community/awn-extras-applets/awn-extras-libnotify0.7.patch
@@ -0,0 +1,12 @@
+diff -Naur awn-extras-0.4.0.orig/applets/maintained/notification-daemon/daemon.c awn-extras-0.4.0/applets/maintained/notification-daemon/daemon.c
+--- awn-extras-0.4.0.orig/applets/maintained/notification-daemon/daemon.c 2010-04-10 01:26:20.000000000 +0200
++++ awn-extras-0.4.0/applets/maintained/notification-daemon/daemon.c 2011-12-16 00:23:45.488215715 +0100
+@@ -1487,7 +1487,7 @@
+ if (fork() == 0)
+ {
+ notify_init("notify-send");
+- notify = notify_notification_new(summary, body, icon_str, NULL);
++ notify = notify_notification_new(summary, body, icon_str);
+ notify_notification_set_category(notify, type);
+ notify_notification_set_urgency(notify, urgency);
+ notify_notification_set_timeout(notify, expire_timeout);
diff --git a/community/awn-extras-applets/check-dependencies.patch b/community/awn-extras-applets/check-dependencies.patch
new file mode 100644
index 000000000..959d3a113
--- /dev/null
+++ b/community/awn-extras-applets/check-dependencies.patch
@@ -0,0 +1,71 @@
+diff -Naur awn-extras-0.4.0.orig/applets/maintained/comics/comics.py awn-extras-0.4.0/applets/maintained/comics/comics.py
+--- awn-extras-0.4.0.orig/applets/maintained/comics/comics.py 2010-03-26 17:14:53.000000000 +0100
++++ awn-extras-0.4.0/applets/maintained/comics/comics.py 2012-11-15 17:28:52.045595715 +0100
+@@ -30,7 +30,7 @@
+ from awn.extras import _
+
+ # Import Comics! modules, but check dependencies first
+-awn.check_dependencies(globals(), 'feedparser', 'pynotify')
++awn.check_dependencies(globals(), 'feedparser', 'pynotify', 'rsvg')
+ from pynotify import init as notify_init, Notification
+
+ import comics_manage
+diff -Naur awn-extras-0.4.0.orig/applets/maintained/media-player/media_player.py awn-extras-0.4.0/applets/maintained/media-player/media_player.py
+--- awn-extras-0.4.0.orig/applets/maintained/media-player/media_player.py 2010-01-06 00:01:33.000000000 +0100
++++ awn-extras-0.4.0/applets/maintained/media-player/media_player.py 2012-11-15 17:28:54.925659573 +0100
+@@ -17,13 +17,15 @@
+ import os
+ import sys
+
++import awn
++awn.check_dependencies(globals(), 'pygst')
++
+ import pygst
+ pygst.require("0.10")
+ import gst
+ import gtk
+ import gobject
+
+-import awn
+ from desktopagnostic import config
+
+
+diff -Naur awn-extras-0.4.0.orig/applets/maintained/slickswitcher/slickswitcher.py awn-extras-0.4.0/applets/maintained/slickswitcher/slickswitcher.py
+--- awn-extras-0.4.0.orig/applets/maintained/slickswitcher/slickswitcher.py 2010-04-08 14:31:25.000000000 +0200
++++ awn-extras-0.4.0/applets/maintained/slickswitcher/slickswitcher.py 2012-11-15 17:31:32.025809983 +0100
+@@ -25,6 +25,9 @@
+ import gobject
+
+ import cairo
++
++awn.check_dependencies(globals(), 'wnck')
++
+ import drawing, switch, settings
+ from os.path import exists, isdir
+ import os
+diff -Naur awn-extras-0.4.0.orig/applets/maintained/volume-control/volume-control.py awn-extras-0.4.0/applets/maintained/volume-control/volume-control.py
+--- awn-extras-0.4.0.orig/applets/maintained/volume-control/volume-control.py 2010-01-06 00:01:34.000000000 +0100
++++ awn-extras-0.4.0/applets/maintained/volume-control/volume-control.py 2012-11-15 17:28:26.368359913 +0100
+@@ -30,6 +30,9 @@
+
+ from awn.extras import awnlib, __version__
+
++import awn
++awn.check_dependencies(globals(), 'pygst')
++
+ import pygst
+ pygst.require("0.10")
+ import gst
+diff -Naur awn-extras-0.4.0.orig/applets/unmaintained/stacks/stacks_applet.py awn-extras-0.4.0/applets/unmaintained/stacks/stacks_applet.py
+--- awn-extras-0.4.0.orig/applets/unmaintained/stacks/stacks_applet.py 2009-11-16 00:31:16.000000000 +0100
++++ awn-extras-0.4.0/applets/unmaintained/stacks/stacks_applet.py 2012-11-15 17:28:41.778701431 +0100
+@@ -25,6 +25,9 @@
+ import pango
+ import awn
+ import cairo
++
++awn.check_dependencies(globals(), 'gnome.ui', 'gnomedesktop')
++
+ import gnome.ui
+ import gnomedesktop
+ import time
diff --git a/community/awn-extras-applets/fix-shinyswitcher-scrolling.patch b/community/awn-extras-applets/fix-shinyswitcher-scrolling.patch
new file mode 100644
index 000000000..69dcae9c1
--- /dev/null
+++ b/community/awn-extras-applets/fix-shinyswitcher-scrolling.patch
@@ -0,0 +1,96 @@
+=== modified file 'applets/maintained/shiny-switcher/shinyswitcherapplet.c'
+--- applets/maintained/shiny-switcher/shinyswitcherapplet.c 2010-09-12 16:15:07 +0000
++++ applets/maintained/shiny-switcher/shinyswitcherapplet.c 2010-11-02 13:52:43 +0000
+@@ -769,7 +769,7 @@
+
+
+ static gboolean
+-_scroll_event(GtkWidget *widget, GdkEventMotion *event, AwnShinySwitcher *shinyswitcher)
++_scroll_event(GtkWidget *widget, GdkEventScroll *event, AwnShinySwitcher *shinyswitcher)
+ {
+ AwnShinySwitcherPrivate * priv = GET_PRIVATE (shinyswitcher);
+ WnckWorkspace *cur_space = wnck_screen_get_active_workspace(priv->wnck_screen);
+@@ -779,7 +779,7 @@
+ {
+ if (event->type == GDK_SCROLL)
+ {
+- WnckMotionDirection direction1, direction2;
++ WnckMotionDirection left, right, up, down;
+
+ switch (priv->mousewheel)
+ {
+@@ -787,8 +787,10 @@
+ case 1:
+
+ case 3:
+- direction1 = WNCK_MOTION_LEFT;
+- direction2 = WNCK_MOTION_RIGHT;
++ left = WNCK_MOTION_LEFT;
++ right = WNCK_MOTION_RIGHT;
++ up = WNCK_MOTION_UP;
++ down = WNCK_MOTION_DOWN;
+ break;
+
+ case 2:
+@@ -796,22 +798,52 @@
+ case 4:
+
+ default:
+- direction1 = WNCK_MOTION_RIGHT;
+- direction2 = WNCK_MOTION_LEFT;
+-
++ left = WNCK_MOTION_RIGHT;
++ right = WNCK_MOTION_LEFT;
++ up = WNCK_MOTION_DOWN;
++ down = WNCK_MOTION_UP;
+ }
+
+- if (event->state & GDK_SHIFT_MASK)
++ if ( (event->direction == GDK_SCROLL_UP) ||
++ (event->direction == GDK_SCROLL_LEFT) )
+ {
+- new_space = wnck_workspace_get_neighbor(cur_space, WNCK_MOTION_RIGHT);
++ new_space = wnck_workspace_get_neighbor(cur_space, left);
++ if (new_space == NULL)
++ {
++ new_space = wnck_workspace_get_neighbor(cur_space, up);
++ if (new_space)
++ {
++ for (cur_space = new_space; cur_space; )
++ {
++ cur_space = wnck_workspace_get_neighbor(cur_space, right);
++ if (cur_space)
++ {
++ new_space = cur_space;
++ }
++ }
++ }
++ }
+ }
+ else
+ {
+- new_space = wnck_workspace_get_neighbor(cur_space, WNCK_MOTION_LEFT);
+-
++ new_space = wnck_workspace_get_neighbor(cur_space, right);
++ if (!new_space)
++ {
++ new_space = wnck_workspace_get_neighbor(cur_space, down);
++ if (new_space)
++ {
++ for (cur_space = new_space; cur_space; )
++ {
++ cur_space = wnck_workspace_get_neighbor(cur_space, left);
++ if (cur_space)
++ {
++ new_space = cur_space;
++ }
++ }
++ }
++ }
+ }
+ }
+-
+ if (new_space)
+ {
+ wnck_workspace_activate(new_space, event->time); /* FIXME */
+
diff --git a/community/awn-extras-applets/fix-weather-applet.patch b/community/awn-extras-applets/fix-weather-applet.patch
new file mode 100644
index 000000000..889c0f641
--- /dev/null
+++ b/community/awn-extras-applets/fix-weather-applet.patch
@@ -0,0 +1,48 @@
+diff -Naur awn-extras-0.4.0.orig/applets/maintained/weather/weather.py awn-extras-0.4.0/applets/maintained/weather/weather.py
+--- awn-extras-0.4.0.orig/applets/maintained/weather/weather.py 2012-03-07 00:20:03.094411287 +0100
++++ awn-extras-0.4.0/applets/maintained/weather/weather.py 2010-03-21 13:58:03.000000000 +0100
+@@ -570,7 +570,7 @@
+
+ class NetworkHandler(ThreadQueue):
+
+- __ws_key = "&prod=xoap&par=1048871467&key=12daac2f3a67cb39&link=xoap"
++ __ws_key = "&prod=xml&par=1287722164&key=e11ec82daa20d876"
+
+ def dict_from_xml(self, rootNode, keys, paths):
+ """Given an XML node, iterate over keys and paths, grabbing the
+@@ -590,7 +590,7 @@
+ @async_method
+ @network_exception
+ def get_locations(self, text):
+- url = "http://xoap.weather.com/search/search?where=" + urllib2.quote(text)
++ url = "http://xml.weather.com/search/search?where=" + urllib2.quote(text)
+ with closing(urllib2.urlopen(url)) as usock:
+ with unlink_xml(usock) as xmldoc:
+ locations_list = []
+@@ -604,7 +604,7 @@
+ @with_overlays
+ @network_exception
+ def get_conditions(self, location_code):
+- url = "http://xoap.weather.com/weather/local/" + location_code + "?cc=*" + self.__ws_key
++ url = "http://xml.weather.com/weather/local/" + location_code + "?cc=*" + self.__ws_key
+ with closing(urllib2.urlopen(url)) as usock:
+ with unlink_xml(usock) as xmldoc:
+ names = ['CITY', 'SUNRISE', 'SUNSET', 'DESCRIPTION', 'CODE', 'TEMP', 'FEELSLIKE', 'BAR', 'BARDESC', 'WINDSPEED', 'WINDGUST', 'WINDDIR', 'HUMIDITY', 'MOONPHASE']
+@@ -619,7 +619,7 @@
+ def get_weather_map(self, location_code):
+ map_url = "http://www.weather.com/outlook/travel/businesstraveler/map/%s" % location_code
+ with closing(urllib2.urlopen(map_url)) as usock:
+- mapExp = """<IMG NAME="mapImg" SRC="([^\"]+)" WIDTH=([0-9]+) HEIGHT=([0-9]+) BORDER"""
++ mapExp = """<img name="mapImg" src="([^\"]+)" width="([0-9]+)" height="([0-9]+)" border"""
+ result = re.findall(mapExp, usock.read())
+ if not result or len(result) != 1:
+ raise NetworkException("Couldn't parse weather map")
+@@ -635,7 +635,7 @@
+ @with_overlays
+ @network_exception
+ def get_forecast(self, location_code):
+- url = "http://xoap.weather.com/weather/local/" + location_code + "?dayf=5" + self.__ws_key
++ url = "http://xml.weather.com/weather/local/" + location_code + "?dayf=5" + self.__ws_key
+ with closing(urllib2.urlopen(url)) as usock:
+ with unlink_xml(usock) as xmldoc:
+ try:
diff --git a/community/awn-extras-applets/remove-settings-menu.patch b/community/awn-extras-applets/remove-settings-menu.patch
new file mode 100644
index 000000000..60eeda1d5
--- /dev/null
+++ b/community/awn-extras-applets/remove-settings-menu.patch
@@ -0,0 +1,229 @@
+diff -Naur awn-extras-0.4.0.orig/applets/maintained/cairo-menu/gnome-menu-builder.c awn-extras-0.4.0/applets/maintained/cairo-menu/gnome-menu-builder.c
+--- awn-extras-0.4.0.orig/applets/maintained/cairo-menu/gnome-menu-builder.c 2010-04-10 01:26:19.000000000 +0200
++++ awn-extras-0.4.0/applets/maintained/cairo-menu/gnome-menu-builder.c 2011-12-16 20:34:22.612913317 +0100
+@@ -34,7 +34,6 @@
+ #include "cairo-menu-applet.h"
+
+ GMenuTree * main_menu_tree = NULL;
+-GMenuTree * settings_menu_tree = NULL;
+
+ GtkWidget * menu_build (MenuInstance * instance);
+ static GtkWidget * submenu_build (MenuInstance * instance);
+@@ -749,19 +748,10 @@
+ gmenu_tree_remove_monitor (main_menu_tree,(GMenuTreeChangedFunc)_submenu_modified_cb,instance);
+ }
+
+-static void
+-_remove_settings_submenu_cb(MenuInstance * instance,GObject *where_the_object_was)
+-{
+- g_debug ("%s",__func__);
+- GMenuTreeDirectory *main_root;
+- gmenu_tree_remove_monitor (settings_menu_tree,(GMenuTreeChangedFunc)_submenu_modified_cb,instance);
+-}
+-
+ static GtkWidget *
+ submenu_build (MenuInstance * instance)
+ {
+ GMenuTreeDirectory *main_root;
+- GMenuTreeDirectory *settings_root;
+ GtkWidget * menu = NULL;
+ /*
+ if the menu is set then clear any menu items (except for places or recent)
+@@ -771,10 +761,6 @@
+ {
+ main_menu_tree = gmenu_tree_lookup("applications.menu", GMENU_TREE_FLAGS_NONE);
+ }
+- if (!settings_menu_tree)
+- {
+- settings_menu_tree = gmenu_tree_lookup("settings.menu", GMENU_TREE_FLAGS_NONE);
+- }
+ g_assert (main_menu_tree);
+ /*
+ get_places_menu() and get_recent_menu() are
+@@ -808,7 +794,6 @@
+ main_root = gmenu_tree_get_root_directory(main_menu_tree);
+ g_assert (gmenu_tree_item_get_type( (GMenuTreeItem*)main_root) == GMENU_TREE_ITEM_DIRECTORY);
+ g_assert (main_root);
+- settings_root = gmenu_tree_get_root_directory(settings_menu_tree);
+ if ( menu_dir = find_menu_dir (instance,main_root) )
+ {
+ /* if instance->menu then we're refreshing in a monitor callback*/
+@@ -817,22 +802,11 @@
+ menu = fill_er_up(instance,menu_dir,instance->menu);
+ g_object_weak_ref (G_OBJECT(menu), (GWeakNotify)_remove_main_submenu_cb,instance);
+ }
+- else if ( settings_root && (menu_dir = find_menu_dir (instance,settings_root)) )
+- {
+- gmenu_tree_remove_monitor (main_menu_tree,(GMenuTreeChangedFunc)_submenu_modified_cb,instance);
+- gmenu_tree_add_monitor (main_menu_tree,(GMenuTreeChangedFunc)_submenu_modified_cb,instance);
+- menu = fill_er_up(instance,menu_dir,instance->menu);
+- g_object_weak_ref (G_OBJECT(menu), (GWeakNotify)_remove_settings_submenu_cb,instance);
+- }
+ if (menu_dir)
+ {
+ gmenu_tree_item_unref(menu_dir);
+ }
+ gmenu_tree_item_unref(main_root);
+- if (settings_root)
+- {
+- gmenu_tree_item_unref(settings_root);
+- }
+ }
+ return instance->menu = menu;
+ }
+@@ -862,10 +836,6 @@
+ {
+ main_menu_tree = gmenu_tree_lookup("applications.menu", GMENU_TREE_FLAGS_NONE);
+ }
+- if (!settings_menu_tree)
+- {
+- settings_menu_tree = gmenu_tree_lookup("settings.menu", GMENU_TREE_FLAGS_NONE);
+- }
+
+ if (main_menu_tree)
+ {
+@@ -884,44 +854,6 @@
+ menu_item = gtk_separator_menu_item_new ();
+ gtk_menu_shell_append(GTK_MENU_SHELL(instance->menu),menu_item);
+ }
+- if (settings_menu_tree)
+- {
+- root = gmenu_tree_get_root_directory(settings_menu_tree);
+- gmenu_tree_remove_monitor (settings_menu_tree,(GMenuTreeChangedFunc)_menu_modified_cb,instance);
+- gmenu_tree_add_monitor (settings_menu_tree,(GMenuTreeChangedFunc)_menu_modified_cb,instance);
+- if (!instance->menu)
+- {
+- g_debug ("%s: No applications menu????",__func__);
+- instance->menu = fill_er_up(instance,root,instance->menu);
+- }
+- else
+- {
+- sub_menu = fill_er_up (instance, root,instance->menu);
+-#if 0
+- sub_menu = fill_er_up(instance,root,NULL);
+- c = g_malloc0 (sizeof(CallbackContainer));
+- c->icon_name = g_strdup(gmenu_tree_directory_get_icon (root));
+- image = get_gtk_image (c->icon_name);
+- txt = gmenu_tree_entry_get_name((GMenuTreeEntry*)root);
+- menu_item = cairo_menu_item_new_with_label (txt?txt:"unknown");
+- gtk_menu_item_set_submenu (GTK_MENU_ITEM(menu_item),sub_menu);
+- if (image)
+- {
+- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item),image);
+- }
+- gtk_menu_shell_append(GTK_MENU_SHELL(instance->menu),menu_item);
+- c->file_path = g_strdup(gmenu_tree_directory_get_desktop_file_path (root));
+- c->display_name = g_strdup ("Settings");
+- drop_data = g_strdup_printf("cairo_menu_item_dir:///@@@%s@@@%s@@@%s\n",c->file_path,c->display_name,c->icon_name);
+- cairo_menu_item_set_source (AWN_CAIRO_MENU_ITEM(menu_item),drop_data);
+- g_free (drop_data);
+- c->instance = instance;
+- g_signal_connect (menu_item, "button-press-event",G_CALLBACK(_button_press_dir),c);
+- g_object_weak_ref (G_OBJECT(menu_item),(GWeakNotify)_free_callback_container,c);
+-#endif
+- }
+- gmenu_tree_item_unref(root);
+- }
+
+ /*TODO Check to make sure it is needed. Should not be displayed if
+ all flags are of the NO persuasion.*/
+diff -Naur awn-extras-0.4.0.orig/applets/maintained/yama/yama.py awn-extras-0.4.0/applets/maintained/yama/yama.py
+--- awn-extras-0.4.0.orig/applets/maintained/yama/yama.py 2010-03-31 16:21:24.000000000 +0200
++++ awn-extras-0.4.0/applets/maintained/yama/yama.py 2011-12-16 20:37:48.243326388 +0100
+@@ -113,7 +113,6 @@
+
+ def build_menu(self):
+ self.applications_items = []
+- self.settings_items = []
+ self.session_items = []
+
+ """ Applications """
+@@ -126,11 +125,6 @@
+ """ Places """
+ self.create_places_submenu(self.menu)
+
+- """ System """
+- tree = gmenu.lookup_tree("settings.menu")
+- self.append_directory(tree.root, self.menu, item_list=self.settings_items)
+- tree.add_monitor(self.menu_changed_cb, self.settings_items)
+-
+ """ Session actions """
+ if dbus is not None:
+ self.append_session_actions(self.menu)
+@@ -227,7 +221,7 @@
+ for i in xrange(len(items)):
+ items.pop().destroy()
+
+- index = len(self.applications_items) + 2 if items is self.settings_items else 0 # + 2 = separator + Places
++ index = len(self.applications_items) + 0
+ self.append_directory(tree.root, self.menu, index=index, item_list=items)
+ # Refresh menu to re-initialize the widget
+ self.menu.show_all()
+diff -Naur awn-extras-0.4.0.orig/applets/unmaintained/main-menu/applet.c awn-extras-0.4.0/applets/unmaintained/main-menu/applet.c
+--- awn-extras-0.4.0.orig/applets/unmaintained/main-menu/applet.c 2009-10-27 20:45:03.000000000 +0100
++++ awn-extras-0.4.0/applets/unmaintained/main-menu/applet.c 2011-12-16 20:27:28.792248015 +0100
+@@ -43,7 +43,6 @@
+ GMenuTree *tree;
+ GMenuTreeDirectory *root;
+ GMenuTreeDirectory *apps;
+- GMenuTreeDirectory *settings;
+
+ } Menu;
+
+@@ -243,8 +242,6 @@
+ {
+ GMenuTreeDirectory *temp= menu->root;
+ menu->root = gmenu_tree_item_get_parent (GMENU_TREE_ITEM (temp));
+- if (menu->root == menu->settings)
+- menu->root = gmenu_tree_get_root_directory (menu->tree);
+ populate (menu);
+ }
+
+@@ -299,8 +296,6 @@
+ if (app->root == GMENU_TREE_DIRECTORY(gmenu_tree_get_root_directory ((GMenuTree*)app->apps)))
+ {
+ list = g_slist_copy (apps);
+- sets = g_slist_copy (gmenu_tree_directory_get_contents (app->settings));
+- list = g_slist_concat (list, sets);
+ list = g_slist_sort (list, (GCompareFunc)_compare);
+ }
+ else
+@@ -419,13 +414,6 @@
+ g_warning ("Unable to find applications.menu");
+ return FALSE;
+ }
+- app->settings = gmenu_tree_get_root_directory (
+- gmenu_tree_lookup ("settings.menu", GMENU_TREE_FLAGS_NONE));
+- if (!app->settings)
+- {
+- g_warning ("Unable to find settings.menu");
+- return FALSE;
+- }
+ app->tree = (GMenuTree*)app->apps;
+
+ app->menu = awn_applet_create_default_menu (app->applet);
+diff -Naur awn-extras-0.4.0.orig/applets/unmaintained/MiMenu/menus.py awn-extras-0.4.0/applets/unmaintained/MiMenu/menus.py
+--- awn-extras-0.4.0.orig/applets/unmaintained/MiMenu/menus.py 2009-08-14 14:29:59.000000000 +0200
++++ awn-extras-0.4.0/applets/unmaintained/MiMenu/menus.py 2011-12-16 20:30:42.060104523 +0100
+@@ -12,8 +12,6 @@
+ class MenuDateStore:
+ MENUCORE = gmenu.lookup_tree('applications.menu')
+ MENUROOT = MENUCORE.get_root_directory()
+- SYSTEMMENUCORE = gmenu.lookup_tree('settings.menu')
+- SYSTEMMENUROOT = SYSTEMMENUCORE.get_root_directory()
+ PATH = []
+
+
+diff -Naur awn-extras-0.4.0.orig/applets/unmaintained/MiMenu/mimenu.py awn-extras-0.4.0/applets/unmaintained/MiMenu/mimenu.py
+--- awn-extras-0.4.0.orig/applets/unmaintained/MiMenu/mimenu.py 2009-10-27 20:45:47.000000000 +0100
++++ awn-extras-0.4.0/applets/unmaintained/MiMenu/mimenu.py 2011-12-16 20:30:35.897158422 +0100
+@@ -69,8 +69,7 @@
+ tree1.set_headers_visible (0)
+ tree1.append_column(column1)
+ tree1.append_column(column2)
+- lst1,self.objlist1 = menus.get_menus(menus.data.MENUROOT,
+- root2=menus.data.SYSTEMMENUROOT)
++ lst1,self.objlist1 = menus.get_menus(menus.data.MENUROOT)
+ model = menus.set_model(tree1,lst1,self.theme,self.location_icon)
+ tree1.connect('cursor_changed', self.treeclick,
+ tree1,self.objlist1,False)
diff --git a/community/bless/PKGBUILD b/community/bless/PKGBUILD
index 813a3fe4d..e1d7f26fa 100644
--- a/community/bless/PKGBUILD
+++ b/community/bless/PKGBUILD
@@ -6,7 +6,7 @@ pkgname=bless
pkgver=0.6.0
pkgrel=3
pkgdesc="A high-quality, full-featured hex editor"
-arch=('i686' 'x86_64' 'mips64el')
+arch=('i686' 'x86_64')
url="http://home.gna.org/bless/"
license=('GPL')
depends=('gtk-sharp-2>=2.8')
diff --git a/community/blobwars/PKGBUILD b/community/blobwars/PKGBUILD
index dd180f51c..06e581659 100644
--- a/community/blobwars/PKGBUILD
+++ b/community/blobwars/PKGBUILD
@@ -7,7 +7,7 @@ pkgname=blobwars
pkgver=1.19
pkgrel=4
pkgdesc="Platform action game featuring a blob wih lot of weapons"
-arch=('i686' 'x86_64')
+arch=('i686' 'x86_64' 'mips64el')
url="http://sourceforge.net/projects/blobwars"
license=('GPL')
makedepends=('sdl_image' 'sdl_mixer' 'sdl_ttf' 'sdl_net')
diff --git a/community/canorus/0006-Add-lz-and-lpthread-to-linker-flags.patch b/community/canorus/0006-Add-lz-and-lpthread-to-linker-flags.patch
new file mode 100644
index 000000000..05317541d
--- /dev/null
+++ b/community/canorus/0006-Add-lz-and-lpthread-to-linker-flags.patch
@@ -0,0 +1,11 @@
+--- canorus-0.7.R1002.orig/src/CMakeLists.txt 2009-03-27 05:25:52.000000000 -0500
++++ canorus-0.7.R1002/src/CMakeLists.txt 2012-11-15 06:26:41.884594717 -0500
+@@ -600,7 +600,7 @@
+ # command. Never remove that line :-)
+ # Add ${QT_QTTEST_LIBRARY} below to add the Qt Test library as well
+ # Add ${POPPLERQT4_LIBRARY} ${POPPLER_LIBRARY} to reactivate poppler libraries
+-TARGET_LINK_LIBRARIES(canorus ${QT_LIBRARIES} ${RUBY_LIBRARY} ${PYTHON_LIBRARY} )
++TARGET_LINK_LIBRARIES(canorus ${QT_LIBRARIES} ${RUBY_LIBRARY} ${PYTHON_LIBRARY} -lz -lpthread)
+
+ ############################
+ # RtMIDI Library additions #
diff --git a/community/canorus/PKGBUILD b/community/canorus/PKGBUILD
index 184290b1e..c2a37de26 100644
--- a/community/canorus/PKGBUILD
+++ b/community/canorus/PKGBUILD
@@ -14,11 +14,14 @@ license=('GPL')
depends=('qt' 'alsa-lib' 'python2' 'swig')
makedepends=('cmake')
options=('strip')
-source=(http://download.berlios.de/$pkgname/$pkgname\_$pkgver\_source.tar.bz2)
-md5sums=('5575b7c54633056a463177579a390318')
+source=(http://download.berlios.de/$pkgname/$pkgname\_$pkgver\_source.tar.bz2
+ 0006-Add-lz-and-lpthread-to-linker-flags.patch)
+md5sums=('5575b7c54633056a463177579a390318'
+ '99e545a1da44006bc5e436728edfda15')
build() {
cd $srcdir/$pkgname-$pkgver
+ patch -Np1 -i ${srcdir}/0006-Add-lz-and-lpthread-to-linker-flags.patch
export QTDIR=/usr
cmake . -DCMAKE_INSTALL_PREFIX=$pkgdir/usr \
-DDEFAULT_DATA_DIR="/usr/share/canorus" \
diff --git a/community/cgit/PKGBUILD b/community/cgit/PKGBUILD
index 2b594e3d4..b1660d650 100644
--- a/community/cgit/PKGBUILD
+++ b/community/cgit/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 71264 2012-05-26 07:35:52Z spupykin $
+# $Id: PKGBUILD 80035 2012-11-15 15:53:42Z spupykin $
# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com>
# Current Maintainer: Patrick Palka <patrick@parcs.ath.cx>
# Previous Maintainer: Loui Chang <louipc.ist at gmail com>
@@ -6,7 +6,7 @@
# Development: http://closure.ath.cx/aur-dev
pkgname=cgit
-pkgver=0.9.0.3
+pkgver=0.9.1
_gitver=1.7.4
pkgrel=1
pkgdesc="A web interface for git written in plain C"
@@ -16,12 +16,11 @@ license=('GPL')
depends=('openssl')
makedepends=('git' 'zlib' 'curl' 'asciidoc')
install=cgit.install
-# "http://www.kernel.org/pub/software/scm/git/git-${_gitver}.tar.bz2"
-source=("http://hjemli.net/git/cgit/snapshot/$pkgname-$pkgver.tar.bz2"
- "http://arch.p5n.pp.ru/~sergej/dl/2011/git-${_gitver}.tar.bz2"
+source=("http://git.zx2c4.com/cgit/snapshot/cgit-$pkgver.tar.xz"
+ "git-${_gitver}.tar.gz::https://github.com/git/git/archive/v${_gitver}.tar.gz"
"apache.example.conf")
-md5sums=('3d5481bf8a507694108f0996b8bde235'
- 'fa24dc1ef0b663327ea0fe1981365b39'
+md5sums=('ed1a1ccccdcbf55ddd6a9de29bca6edf'
+ 'c63cc7ca8a4bbf97c8802f354511223e'
'bd5696bea0654bfcf98f249b1a36737d')
build() {
diff --git a/community/cgminer/PKGBUILD b/community/cgminer/PKGBUILD
new file mode 100644
index 000000000..4cd780f39
--- /dev/null
+++ b/community/cgminer/PKGBUILD
@@ -0,0 +1,55 @@
+# Maintainer: Felix Yan <felixonmars@gmail.com>
+# Contributor: monson <holymonson@gmail.com>
+# Contributor: Thomas Dziedzic < gostrc at gmail >
+# Contributor: David Manouchehri <david@davidmanouchehri.com>
+
+pkgname=cgminer
+pkgver=2.9.3
+_build=
+pkgrel=3
+pkgdesc="Multi-threaded multi-pool CPU and GPU miner for bitcoin, forked from cpuminer."
+url='http://forum.bitcoin.org/index.php?topic=28402.0'
+license=('GPL3')
+arch=('i686' 'x86_64')
+depends=('curl' 'libcl')
+makedepends=('opencl-headers')
+optdepends=('opencl-nvidia: OpenCL implementation for NVIDIA'
+ 'opencl-catalyst: OpenCL implementation for AMD')
+source=("http://ck.kolivas.org/apps/cgminer/$pkgname-$pkgver.tar.bz2"
+ "$pkgname.conf.d"
+ "$pkgname"
+ "$pkgname.service")
+backup=("etc/conf.d/$pkgname" "etc/$pkgname.conf")
+
+[ $CARCH == 'x86_64' ] && makedepends+=('yasm')
+
+build() {
+ cd "$srcdir"
+ cd $pkgname-$pkgver${_build}
+
+ # Use in-tree jansson since it is not compatible with jansson 2.0
+ #sed -e 's/^AC_CHECK_LIB(jansson, json_loads, request_jansson=false, request_jansson=true)$/request_jansson=true/' -i configure.ac
+
+ # Here you may want to use custom CFLAGS
+ #export CFLAGS="-O2 -march=native -mtune=native -msse2"
+
+ ./configure --prefix=/usr --enable-cpumining
+
+ make
+}
+
+package() {
+ cd "$srcdir"/$pkgname-$pkgver${_build}
+
+ make DESTDIR="$pkgdir" install
+
+ install -Dm755 "$srcdir"/$pkgname "$pkgdir"/etc/rc.d/$pkgname
+ install -Dm644 "$srcdir"/$pkgname.service "$pkgdir"/usr/lib/systemd/system/$pkgname.service
+ install -Dm644 "$srcdir"/$pkgname.conf.d "$pkgdir"/etc/conf.d/$pkgname
+ sed 's#/usr/local/bin#/usr/bin#g' example.conf > $pkgname.conf
+ install -Dm644 $pkgname.conf "$pkgdir"/etc/$pkgname.conf
+}
+md5sums=('f386036c72861f7b2c130de6ed990d33'
+ 'fe4a243fabe24608f5c05e40f0f118f6'
+ 'ee39698273671fee0e98d4af16014c36'
+ 'c2bb974adf92cc234fbf0136ebcb355d')
diff --git a/community/cgminer/cgminer b/community/cgminer/cgminer
new file mode 100644
index 000000000..9081e8e77
--- /dev/null
+++ b/community/cgminer/cgminer
@@ -0,0 +1,51 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+DAEMON=cgminer
+
+# stupid patch var
+export HOME=/root
+
+[ -r /etc/conf.d/$DAEMON ] && . /etc/conf.d/$DAEMON
+
+if [ -r $CGMINER_CONF ]; then
+ ARGS="--config $CGMINER_CONF $CGMINER_ARGS"
+else
+ ARGS="--url $CGMINER_PROTOCOL://$CGMINER_IP:$CGMINER_PORT --user $CGMINER_USER --pass $CGMINER_PASS $CGMINER_ARGS"
+fi
+
+PID=$(get_pid $DAEMON)
+
+case "$1" in
+ start)
+ stat_busy "Starting $DAEMON"
+ [ -z "$PID" ] && $DAEMON $ARGS &>/dev/null &
+ if [ $? = 0 ]; then
+ add_daemon $DAEMON
+ stat_done
+ else
+ stat_fail
+ exit 1
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping $DAEMON"
+ [ -n "$PID" ] && kill $PID &>/dev/null
+ if [ $? = 0 ]; then
+ rm_daemon $DAEMON
+ stat_done
+ else
+ stat_fail
+ exit 1
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
diff --git a/community/cgminer/cgminer.conf.d b/community/cgminer/cgminer.conf.d
new file mode 100644
index 000000000..88ec535d6
--- /dev/null
+++ b/community/cgminer/cgminer.conf.d
@@ -0,0 +1,11 @@
+# Use JSON-format configuration. (recommended)
+CGMINER_CONF="/etc/cgminer.conf"
+
+# Uncommend this if you prefer simple command-line arguments.
+#CGMINER_CONF=""
+#CGMINER_PROTOCOL="http"
+#CGMINER_IP="127.0.0.1"
+#CGMINER_PORT="8332"
+#CGMINER_USER="username"
+#CGMINER_PASS="password"
+CGMINER_ARGS="--syslog"
diff --git a/community/cgminer/cgminer.service b/community/cgminer/cgminer.service
new file mode 100644
index 000000000..9d6595047
--- /dev/null
+++ b/community/cgminer/cgminer.service
@@ -0,0 +1,8 @@
+[Unit]
+Description=Multi-threaded multi-pool CPU and GPU miner for bitcoin
+
+[Service]
+ExecStart=/usr/bin/cgminer -T --config /etc/cgminer.conf
+
+[Install]
+WantedBy=multi-user.target
diff --git a/community/clewn/PKGBUILD b/community/clewn/PKGBUILD
index b3314f4e3..318c9764d 100644
--- a/community/clewn/PKGBUILD
+++ b/community/clewn/PKGBUILD
@@ -4,7 +4,7 @@
pkgname=clewn
pkgver=1.15
-pkgrel=5
+pkgrel=5.1
pkgdesc="gdb support for vim"
arch=('i686' 'x86_64' 'mips64el')
url="http://clewn.sourceforge.net"
diff --git a/community/credentials-preferences/PKGBUILD b/community/credentials-preferences/PKGBUILD
index 5b4290781..18a7bf61e 100644
--- a/community/credentials-preferences/PKGBUILD
+++ b/community/credentials-preferences/PKGBUILD
@@ -6,7 +6,7 @@ _pkgname=credentials-control-center
pkgver=0.1.1
pkgrel=1
pkgdesc="Control panel for configuring online account credentials and settings"
-arch=('i686' 'x86_64')
+arch=('i686' 'x86_64' 'mips64el')
url="https://launchpad.net/online-accounts-gnome-control-center"
license=('GPL' 'LGPL')
depends=('libaccounts-glib' 'libsignon-glib' 'gtk3')
diff --git a/community/dhex/PKGBUILD b/community/dhex/PKGBUILD
index d9c0213a3..757c7b7cd 100644
--- a/community/dhex/PKGBUILD
+++ b/community/dhex/PKGBUILD
@@ -5,7 +5,7 @@ pkgname=dhex
pkgver=0.68
pkgrel=1
pkgdesc="An ncurses-based hexeditor with a diff mode"
-arch=('i686' 'x86_64')
+arch=('i686' 'x86_64' 'mips64el')
url="http://www.dettus.net/dhex/"
license=('GPL')
depends=('ncurses')
diff --git a/community/dmenu/PKGBUILD b/community/dmenu/PKGBUILD
index 51037ff0d..b0a913cee 100644
--- a/community/dmenu/PKGBUILD
+++ b/community/dmenu/PKGBUILD
@@ -7,7 +7,7 @@
pkgname=dmenu
pkgver=4.5
-pkgrel=3
+pkgrel=3.1
pkgdesc="A generic menu for X"
url="http://tools.suckless.org/dmenu/"
arch=('i686' 'x86_64' 'mips64el')
@@ -27,4 +27,4 @@ package() {
cd $srcdir/$pkgname-$pkgver
make PREFIX=/usr DESTDIR=$pkgdir install
install -m644 -D LICENSE $pkgdir/usr/share/licenses/$pkgname/LICENSE
-} \ No newline at end of file
+}
diff --git a/community/dunst/PKGBUILD b/community/dunst/PKGBUILD
index 33337133b..79d954947 100644
--- a/community/dunst/PKGBUILD
+++ b/community/dunst/PKGBUILD
@@ -6,7 +6,7 @@ pkgname=dunst
pkgver=0.4.0
pkgrel=1
pkgdesc="a dmenu-ish notification system "
-arch=('i686' 'x86_64')
+arch=('i686' 'x86_64' 'mips64el')
url="http://knopwob.github.com/dunst"
license=(MIT)
depends=(dbus-core libxinerama libxft libxss libxdg-basedir)
diff --git a/community/dvdbackup/PKGBUILD b/community/dvdbackup/PKGBUILD
index 271c3344d..17db80fc0 100644
--- a/community/dvdbackup/PKGBUILD
+++ b/community/dvdbackup/PKGBUILD
@@ -8,7 +8,7 @@ pkgname=dvdbackup
pkgver=0.4.2
pkgrel=1
pkgdesc="A tool to rip video DVDs from the command line"
-arch=('i686' 'x86_64')
+arch=('i686' 'x86_64' 'mips64el')
url="http://dvdbackup.sourceforge.net/"
license=('GPL')
depends=('libdvdread')
diff --git a/community/ejabberd/PKGBUILD b/community/ejabberd/PKGBUILD
index 9e71c0163..2c9b93cb2 100644
--- a/community/ejabberd/PKGBUILD
+++ b/community/ejabberd/PKGBUILD
@@ -1,11 +1,11 @@
-# $Id: PKGBUILD 79033 2012-10-29 09:21:18Z spupykin $
+# $Id: PKGBUILD 80020 2012-11-15 13:56:56Z spupykin $
# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com>
# Contributor: Jeff 'codemac' Mickey <jeff@archlinux.org>
# Contributor: Alexander Rødseth <rodseth@gmail.com>
pkgname=ejabberd
pkgver=2.1.11
-pkgrel=6
+pkgrel=7
pkgdesc="Jabber server written in Erlang"
arch=('x86_64' 'i686' 'mips64el')
url="http://www.ejabberd.im/"
@@ -22,7 +22,7 @@ source=("http://www.process-one.net/downloads/ejabberd/${pkgver/_/-}/ejabberd-${
md5sums=('a70b040c4e7602f47718c8afe8780d50'
'f97c8a96160f30e0aecc9526c12e6606'
'2338a6230ce5f9f60be6dddcfa39bc7e'
- 'bc4552b833e1927fce52acdbc6d76fb2')
+ 'bd18cb1034df9ef1b699214f0e3b4567')
build() {
cd "$srcdir/$pkgname-$pkgver/src"
diff --git a/community/ejabberd/ejabberd.service b/community/ejabberd/ejabberd.service
index 47e5f2e27..e7cef53b2 100644
--- a/community/ejabberd/ejabberd.service
+++ b/community/ejabberd/ejabberd.service
@@ -3,18 +3,12 @@ Description=A distributed, fault-tolerant Jabber/XMPP server
After=network.target
[Service]
-Type=oneshot
+Type=forking
User=ejabberd
Group=jabber
LimitNOFILE=16000
RestartSec=5
-ExecStart=/usr/sbin/ejabberdctl \
- --config /etc/ejabberd/ejabberd.cfg \
- --ctl-config /etc/ejabberd/ejabberdctl.cfg \
- --logs "/var/log/ejabberd" \
- --spool "/var/lib/ejabberd" start
-ExecStop=/usr/sbin/ejabberdctl stop
-RemainAfterExit=yes
+ExecStart=/usr/bin/erl -pa /usr/lib/ejabberd/ebin -sname ejabberd -s ejabberd -ejabberd config \"/etc/ejabberd/ejabberd.cfg\" log_path \"/var/log/ejabberd/ejabberd.log\" -sasl sasl_error_logger \{file,\"/var/log/ejabberd/sasl.log\"\} -mnesia dir \"/var/lib/ejabberd\" -detached -kernel inetrc \"/etc/ejabberd/inetrc\"
[Install]
WantedBy=multi-user.target
diff --git a/community/erlang-cl/PKGBUILD b/community/erlang-cl/PKGBUILD
new file mode 100644
index 000000000..b1d4c62c1
--- /dev/null
+++ b/community/erlang-cl/PKGBUILD
@@ -0,0 +1,41 @@
+# $Id: PKGBUILD 61589 2012-01-03 23:37:49Z arodseth $
+# Maintainer: Alexander Rødseth <rodseth@gmail.com>
+# Contributor: kappa <kappacurve@gmail.com>
+
+pkgname=erlang-cl
+pkgver=1.0
+pkgrel=1
+arch=('x86_64' 'i686')
+pkgdesc='OpenCL binding for Erlang'
+url="http://github.com/tonyrog/cl"
+license=('custom:unknown')
+depends=('erlang' 'libcl' 'bash')
+replaces=('cl')
+makedepends=('opencl-headers')
+source=("$pkgname-$pkgver.tar.gz::https://nodeload.github.com/tonyrog/cl/tar.gz/master")
+sha256sums=('e2cb407489ebe1d8e8f287283eb5c715d559ce95255f6bbcac137cb84c500be6')
+_dirname='cl-master'
+if [ "$CARCH" = "x86_64" ]
+then
+ _wordsize=64
+else
+ _wordsize=32
+fi
+
+build() {
+ cd "$srcdir/$_dirname/c_src"
+
+ make configure
+ ./configure --with-wordsize=$_wordsize --prefix=/usr
+ make all$_wordsize
+ rm config.*
+}
+
+package() {
+ cd "$srcdir/$_dirname"
+
+ mkdir -p "$pkgdir/usr/lib/erlang/lib/cl-$pkgver"
+ cp -r * "$pkgdir/usr/lib/erlang/lib/cl-$pkgver"
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/community/erlang-sdl/PKGBUILD b/community/erlang-sdl/PKGBUILD
new file mode 100644
index 000000000..6b914718e
--- /dev/null
+++ b/community/erlang-sdl/PKGBUILD
@@ -0,0 +1,39 @@
+# $Id: PKGBUILD 79997 2012-11-15 11:48:24Z arodseth $
+# Maintainer: Alexander Rødseth <rodseth@gmail.com>
+# Contributor: kappa <kappacurve@gmail.com>
+
+pkgname=erlang-sdl
+pkgver=1.2
+pkgrel=1
+arch=('x86_64' 'i686')
+pkgdesc='SDL and OpenGL bindings for Erlang (r15b-driver-compat branch)'
+url='http://esdl.sourceforge.net/'
+license=('custom')
+depends=('erlang' 'sdl' 'glu')
+replaces=('esdl')
+source=("$pkgname-$pkgver.tar.gz::https://nodeload.github.com/dgud/esdl/tar.gz/dgud/r15b-driver-compat")
+sha256sums=('a14d695229b93401a304b773874e87c02c5b304d4b5b66f35cba75e140672086')
+_dirname='esdl-dgud-r15b-driver-compat'
+
+build() {
+ cd "$srcdir/$_dirname"
+
+ find -type f -print0 | xargs -0 chmod 644
+ make
+}
+
+package() {
+ cd "$srcdir/$_dirname"
+
+ make INSTALLDIR="$pkgdir/usr/lib/erlang/lib/esdl-$pkgver" install
+
+ ## An attempt to make wings3d compile with esdl 1.2
+ #ln -s /usr/lib/erlang/lib/wx-0.99/include/glu.hrl \
+ # "$pkgdir/usr/lib/erlang/lib/esdl-$pkgver/include/glu.hrl"
+ #ln -s /usr/lib/erlang/lib/wx-0.99/include/gl.hrl \
+ # "$pkgdir/usr/lib/erlang/lib/esdl-$pkgver/include/gl.hrl"
+
+ install -Dm644 license.terms "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/community/esdl/PKGBUILD b/community/esdl/PKGBUILD
index 58ee0f8ef..ae73b6568 100644
--- a/community/esdl/PKGBUILD
+++ b/community/esdl/PKGBUILD
@@ -4,16 +4,16 @@
pkgname=esdl
pkgver=1.2
-pkgrel=2
+pkgrel=3
epoch=2
arch=('x86_64' 'i686' 'mips64el')
-pkgdesc="SDL and OpenGL bindings for the Erlang programming language"
-url="http://esdl.sourceforge.net/"
+pkgdesc='SDL and OpenGL bindings for Erlang'
+url='http://esdl.sourceforge.net/'
license=('custom')
depends=('erlang' 'sdl' 'glu')
-source=("$pkgname-$pkgver.tar.gz::https://nodeload.github.com/dgud/esdl/tarball/master")
-md5sums=('d51f8e2fe07b9e82ff9c2e06af35e3eb')
-_dirname='dgud-esdl-4139134'
+source=("$pkgname-$pkgver.tar.gz::https://nodeload.github.com/dgud/esdl/tar.gz/dgud/r15b-driver-compat")
+sha256sums=('a14d695229b93401a304b773874e87c02c5b304d4b5b66f35cba75e140672086')
+_dirname="$pkgname-dgud-r15b-driver-compat"
build() {
cd "$srcdir/$_dirname"
diff --git a/community/ettercap/PKGBUILD b/community/ettercap/PKGBUILD
index 79fa70f9d..68ae89717 100644
--- a/community/ettercap/PKGBUILD
+++ b/community/ettercap/PKGBUILD
@@ -1,35 +1,34 @@
-# $Id: PKGBUILD 79575 2012-11-07 21:26:51Z jelle $
+# $Id: PKGBUILD 80196 2012-11-17 14:33:46Z jelle $
# Maintainer:
# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
pkgbase=ettercap
pkgname=('ettercap' 'ettercap-gtk')
pkgver=0.7.5
-pkgrel=1
+pkgrel=2
arch=('i686' 'x86_64' 'mips64el')
-url="http://ettercap.sourceforge.net/"
+url="http://ettercap.github.com/ettercap/"
license=('GPL')
makedepends=('ghostscript' 'cmake' 'libpcap' 'libltdl' 'libnet' 'gtk2')
options=('!libtool' '!makeflags' '!emptydirs')
-source=("http://sourceforge.net/projects/ettercap/files/$pkgbase/$pkgver-Assimilation/$pkgbase-$pkgver.tar.gz")
+source=("https://github.com/downloads/Ettercap/$pkgbase/$pkgbase-$pkgver.tar.gz" "ettercap.desktop")
md5sums=('ab2354bf9c91195f06ad0b5d058565a4')
build() {
cd "${srcdir}"
-#sed -i 's/su-to-root -c/gksu/' ${pkgbase}-${pkgver}/desktop/ettercap.desktop
cp -r ${pkgbase}-${pkgver} ${pkgbase}-${pkgver}-gtk
cd ${pkgbase}-${pkgver}
mkdir build
cd build
- cmake -D ENABLE_GTK=OFF -D CMAKE_INSTALL_PREFIX=/usr -D INSTALL_PREFX=/usr -D CMAKE_BUILD_TYPE=RELEASE ../
+ cmake -D ENABLE_GTK=ON -D CMAKE_INSTALL_PREFIX=/usr -D INSTALL_PREFIX=/usr -D CMAKE_BUILD_TYPE=RELEASE ../
make
cd "$srcdir"/${pkgbase}-${pkgver}-gtk
mkdir build
cd build
- cmake -D INSTALL_PREFX=/usr -D CMAKE_BUILD_TYPE=RELEASE ../
+ cmake -D ENABLE_GTK=ON -D INSTALL_PREFIX=/usr -D CMAKE_BUILD_TYPE=RELEASE ../
make
}
@@ -49,4 +48,5 @@ package_ettercap-gtk() {
cd "${srcdir}"/${pkgbase}-${pkgver}-gtk/build
install -Dm755 src/ettercap "${pkgdir}"/usr/bin/ettercap-gtk
}
-md5sums=('037b28cd94efa086a795060fc0f76080')
+md5sums=('037b28cd94efa086a795060fc0f76080'
+ 'f9281fe1735ceba59753bfe442715bb6')
diff --git a/community/ettercap/ettercap.desktop b/community/ettercap/ettercap.desktop
new file mode 100644
index 000000000..e2345d91a
--- /dev/null
+++ b/community/ettercap/ettercap.desktop
@@ -0,0 +1,8 @@
+[Desktop Entry]
+Name=Ettercap
+Comment=Nework sniffer/analyser
+Exec=ettercap-gtk
+Icon=ettercap
+Terminal=false
+Type=Application
+Categories=Network;
diff --git a/community/expac/PKGBUILD b/community/expac/PKGBUILD
index b767fc161..2dd454fff 100644
--- a/community/expac/PKGBUILD
+++ b/community/expac/PKGBUILD
@@ -1,9 +1,9 @@
-# $Id: PKGBUILD 68721 2012-04-01 00:18:57Z dreisner $
+# $Id: PKGBUILD 80201 2012-11-17 15:05:30Z dreisner $
# Maintainer: Dave Reisner <d@falconindy.com>
pkgname=expac
pkgver=1
-pkgrel=1
+pkgrel=2
pkgdesc="pacman database extraction utility"
arch=('i686' 'x86_64' 'mips64el')
url="http://github.com/falconindy/expac"
@@ -15,10 +15,13 @@ md5sums=('be8348f18e6af9db250437b14a91e443')
build() {
make -C "$pkgname-$pkgver"
+
+ sed '/\*\//q' "$pkgname-$pkgver"/expac.c >LICENSE
}
package() {
make -C "$pkgname-$pkgver" PREFIX=/usr DESTDIR="$pkgdir" install
+ install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
}
# vim: ft=sh syn=sh
diff --git a/community/fcitx-googlepinyin/PKGBUILD b/community/fcitx-googlepinyin/PKGBUILD
new file mode 100644
index 000000000..1f6e229c6
--- /dev/null
+++ b/community/fcitx-googlepinyin/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id: PKGBUILD 79827 2012-11-13 15:21:38Z fyan $
+# Maintainer: Felix Yan <felixonmars@gmail.com>
+
+pkgname=fcitx-googlepinyin
+pkgver=0.1.6
+pkgrel=1
+pkgdesc="Fcitx Wrapper for googlepinyin"
+arch=('i686' 'x86_64')
+url="http://code.google.com/p/fcitx"
+license=('GPL')
+depends=('fcitx>=4.2.0' 'libgooglepinyin>=0.1.2')
+makedepends=('cmake' 'intltool')
+source=(http://fcitx.googlecode.com/files/${pkgname}-${pkgver}.tar.xz)
+install='fcitx-googlepinyin.install'
+md5sums=('7ee33bbb66d29536819b0d2f73b69713')
+
+build() {
+ cd "$srcdir"/${pkgname}-${pkgver}
+
+ rm -rf build
+ mkdir build
+ cd build
+
+ cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release ..
+ make
+}
+
+package() {
+ cd "$srcdir"/${pkgname}-${pkgver}/build
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/community/fcitx-googlepinyin/fcitx-googlepinyin.install b/community/fcitx-googlepinyin/fcitx-googlepinyin.install
new file mode 100644
index 000000000..c0797237a
--- /dev/null
+++ b/community/fcitx-googlepinyin/fcitx-googlepinyin.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/community/fcitx-m17n/PKGBUILD b/community/fcitx-m17n/PKGBUILD
new file mode 100644
index 000000000..e571815a7
--- /dev/null
+++ b/community/fcitx-m17n/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id$
+# Maintainer: Felix Yan <felixonmars@gmail.com>
+
+pkgname=fcitx-m17n
+pkgver=0.1.3
+pkgrel=1
+pkgdesc="Fcitx Wrapper for m17n."
+arch=('i686' 'x86_64')
+url="http://code.google.com/p/fcitx"
+license=('GPL')
+depends=('fcitx>=4.2.1' 'm17n-lib')
+makedepends=('cmake' 'intltool')
+source=(http://fcitx.googlecode.com/files/${pkgname}-${pkgver}.tar.xz)
+
+build() {
+ cd "$srcdir/${pkgname}-${pkgver}"
+ rm -rf build
+ mkdir build
+ cd build
+
+ cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release ..
+ make
+}
+
+package() {
+ cd "$srcdir/${pkgname}-${pkgver}/build"
+ make DESTDIR="${pkgdir}" install
+}
+md5sums=('a0df4dc1bf2e15fcfef63605dbeb9bba')
diff --git a/community/fcitx-unikey/PKGBUILD b/community/fcitx-unikey/PKGBUILD
new file mode 100644
index 000000000..b2cd0abf7
--- /dev/null
+++ b/community/fcitx-unikey/PKGBUILD
@@ -0,0 +1,32 @@
+# $Id: PKGBUILD 80099 2012-11-16 03:00:26Z fyan $
+# Maintainer: Felix Yan <felixonmars@gmail.com>
+
+pkgname=fcitx-unikey
+pkgver=0.1.1
+pkgrel=2
+pkgdesc="Fcitx Wrapper for unikey"
+arch=('i686' 'x86_64')
+url="http://code.google.com/p/fcitx"
+license=('GPL')
+depends=('fcitx>=4.2.3')
+optdepends=('qt: To run the fcitx unikey macro editor')
+makedepends=('cmake' 'intltool' 'qt')
+source=(http://fcitx.googlecode.com/files/${pkgname}-${pkgver}.tar.xz)
+install='fcitx-unikey.install'
+
+build(){
+ cd "$srcdir/${pkgname}-${pkgver}"
+ rm -rf build
+ mkdir build
+ cd build
+
+ cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release ..
+ make
+}
+
+package ()
+{
+ cd "$srcdir/${pkgname}-${pkgver}/build"
+ make DESTDIR="${pkgdir}" install
+}
+md5sums=('91dc7bd6991df3c975a0b51a246836bf')
diff --git a/community/fcitx-unikey/fcitx-unikey.install b/community/fcitx-unikey/fcitx-unikey.install
new file mode 100644
index 000000000..c0797237a
--- /dev/null
+++ b/community/fcitx-unikey/fcitx-unikey.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/community/ffmpeg-compat/PKGBUILD b/community/ffmpeg-compat/PKGBUILD
index 43d256cf4..8805a74c2 100644
--- a/community/ffmpeg-compat/PKGBUILD
+++ b/community/ffmpeg-compat/PKGBUILD
@@ -6,7 +6,7 @@
pkgname=ffmpeg-compat
pkgver=20120509
-pkgrel=1
+pkgrel=2
pkgdesc="Complete and free Internet live audio and video broadcasting solution for Linux/Unix"
arch=('i686' 'x86_64' 'mips64el')
url="http://ffmpeg.org/"
diff --git a/community/fox/PKGBUILD b/community/fox/PKGBUILD
index 646d677d0..1a0dfc363 100644
--- a/community/fox/PKGBUILD
+++ b/community/fox/PKGBUILD
@@ -1,10 +1,10 @@
-# $Id: PKGBUILD 77870 2012-10-15 10:22:54Z spupykin $
+# $Id: PKGBUILD 80103 2012-11-16 06:59:27Z spupykin $
# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com>
# Contributor: Ben <ben@benmazer.net>
pkgname=fox
-pkgver=1.6.46
-pkgrel=3
+pkgver=1.6.47
+pkgrel=1
pkgdesc="Free Objects for X: GUI Toolkit for C++"
arch=('i686' 'x86_64' 'mips64el')
url="http://www.fox-toolkit.org/"
@@ -14,7 +14,7 @@ makedepends=('mesa')
optdepends=('perl')
options=('!libtool')
source=(http://ftp.fox-toolkit.org/pub/fox-$pkgver.tar.gz)
-md5sums=('da2c5cf36eff32a0c49cfcd9494fe6b7')
+md5sums=('9bd233adff5af3fc2d1139c8a22f556c')
build() {
cd ${srcdir}/${pkgname}-${pkgver}
diff --git a/community/gnome-menus2/PKGBUILD b/community/gnome-menus2/PKGBUILD
new file mode 100644
index 000000000..0744e080d
--- /dev/null
+++ b/community/gnome-menus2/PKGBUILD
@@ -0,0 +1,33 @@
+# $Id: PKGBUILD 80041 2012-11-15 18:34:49Z bgyorgy $
+# Maintainer: Balló György <ballogyor+arch at gmail dot com>
+# Contributor: Jan de Groot <jan@archlinux.org>
+
+pkgname=gnome-menus2
+_pkgname=gnome-menus
+pkgver=3.0.1
+pkgrel=2
+pkgdesc="Library for the Desktop Menu Specification (legacy version)"
+arch=('i686' 'x86_64')
+depends=('glib2' 'python2')
+makedepends=('intltool' 'gobject-introspection')
+options=('!libtool')
+license=('LGPL')
+url="http://www.gnome.org/"
+source=(http://ftp.gnome.org/pub/gnome/sources/$_pkgname/${pkgver%.*}/$_pkgname-$pkgver.tar.bz2)
+sha256sums=('579c119c26f37781f66708e867ea45b3c37589b3b69e5b32d33e9bdb944165f0')
+
+build() {
+ cd "$srcdir/$_pkgname-$pkgver"
+
+ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \
+ --disable-static \
+ PYTHON=/usr/bin/python2
+ make
+}
+
+package(){
+ cd "$srcdir/$_pkgname-$pkgver"
+
+ make -C libmenu DESTDIR="$pkgdir" install
+ make -C python DESTDIR="$pkgdir" install
+}
diff --git a/community/gnome-mplayer/PKGBUILD b/community/gnome-mplayer/PKGBUILD
index 3d68230ec..2dad1ed2c 100644
--- a/community/gnome-mplayer/PKGBUILD
+++ b/community/gnome-mplayer/PKGBUILD
@@ -1,16 +1,16 @@
-# $Id: PKGBUILD 79361 2012-11-03 16:29:00Z lfleischer $
+# $Id: PKGBUILD 80171 2012-11-17 12:43:41Z lfleischer $
# Maintainer: Lukas Fleischer <archlinux at cryptocrack dot de>
# Contributor: Allan McRae <mcrae_allan@hotmail.com>
# Contributor: Daniel J Griffiths <ghost1227@archlinux.us>
pkgname=gnome-mplayer
pkgver=1.0.7
-pkgrel=1
+pkgrel=2
pkgdesc='A simple MPlayer GUI.'
arch=('i686' 'x86_64' 'mips64el')
url='http://gnome-mplayer.googlecode.com/'
license=('GPL')
-depends=('mplayer' 'dbus-glib' 'libnotify' 'hicolor-icon-theme' 'dconf' 'gmtk')
+depends=('mplayer' 'dbus-glib' 'libnotify' 'gnome-icon-theme' 'hicolor-icon-theme' 'dconf' 'gmtk')
makedepends=('gnome-power-manager' 'nautilus')
install="${pkgname}.install"
source=("http://gnome-mplayer.googlecode.com/files/${pkgname}-${pkgver}.tar.gz")
diff --git a/community/go/PKGBUILD b/community/go/PKGBUILD
index d57e9373a..5e2afb2e5 100644
--- a/community/go/PKGBUILD
+++ b/community/go/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 77818 2012-10-15 00:41:07Z arodseth $
+# $Id: PKGBUILD 79946 2012-11-15 01:53:41Z arodseth $
# Maintainer: Vesa Kaihlavirta <vegai@iki.fi>
# Maintainer: Alexander Rødseth <rodseth@gmail.com>
# Contributor: Rémy Oudompheng <remy@archlinux.org>
@@ -10,7 +10,7 @@
pkgname=go
pkgver=1.0.3
-pkgrel=2
+pkgrel=3
epoch=2
pkgdesc='Google Go compiler and tools'
arch=('x86_64' 'i686')
@@ -27,6 +27,8 @@ sha256sums=('7fba3533d172f13629d3d8a79e57c620632b0bd075abe11d7698b338be0ae3df'
'a03db71d323ed2794123bb31b5c8ad5febd551c490b5c0b341052c8e5f0ba892')
build() {
+ cd $srcdir/$pkgname
+
if [ "$CARCH" == 'x86_64' ]; then
export GOARCH=amd64
fi
@@ -34,18 +36,26 @@ build() {
export GOARCH=386
fi
- # Set GOARCH to arm for crosscompilation (currently doesn't work)
-
- cd $srcdir/$pkgname
export GOROOT_FINAL=/usr/lib/go
export GOOS=linux
cd src
bash make.bash
+
+ # Enable ARM crosscompilation
+ export GOARCH=arm
+ bash make.bash
}
check() {
cd $srcdir/$pkgname
+ if [ "$CARCH" == 'x86_64' ]; then
+ export GOARCH=amd64
+ fi
+ if [ "$CARCH" == 'i686' ]; then
+ export GOARCH=386
+ fi
+
export GOROOT=$srcdir/$pkgname
export PATH=$srcdir/$pkgname/bin:$PATH
diff --git a/community/gpg-crypter/PKGBUILD b/community/gpg-crypter/PKGBUILD
index cb313d0f9..60a196bb1 100644
--- a/community/gpg-crypter/PKGBUILD
+++ b/community/gpg-crypter/PKGBUILD
@@ -1,26 +1,24 @@
-# $Id: PKGBUILD 67947 2012-03-16 11:29:44Z giovanni $
+# $Id: PKGBUILD 79925 2012-11-14 19:52:32Z jlichtblau $
# Maintainer: Jaroslav Lichtblau <dragonlord@aur.archlinux.org>
# Contributor: Roman Kyrylych <Roman.Kyrylych@gmail.com>
# Contributor: lp76 <l.peduto@gmail.com>
pkgname=gpg-crypter
-pkgver=0.3.5
-pkgrel=5
-pkgdesc="A graphical front-end to GnuPG(GPG) using the GTK2 toolkit and libgpgme"
+pkgver=0.4.1
+pkgrel=1
+pkgdesc="A graphical front-end to GnuPG(GPG) using the GTK3 toolkit and libgpgme"
arch=('i686' 'x86_64' 'mips64el')
url="http://gpg-crypter.sourceforge.net/"
-license=('GPL')
-depends=('gtk2' 'gpgme')
-source=(http://downloads.sourceforge.net/sourceforge/$pkgname/$pkgname-$pkgver.tar.gz
- $pkgname.desktop)
-md5sums=('be33140ae205b8a3f37217c1c2c0737a'
- 'a2a226ff44eb02cdab7bee46864dea6d')
+license=('GPL2')
+depends=('gtk3' 'gpgme')
+makedepends=('intltool')
+changelog=$pkgname.changelog
+source=(http://downloads.sourceforge.net/sourceforge/$pkgname/$pkgname-$pkgver.tar.gz)
+sha256sums=('1f7e2b27bf4a27ecbb07bce9cd40d1c08477a3bd065ba7d1a75d1732e4bdc023')
build() {
cd ${srcdir}/$pkgname-$pkgver
- export CFLAGS="$CFLAGS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
-
./configure --prefix=/usr
make
}
@@ -29,15 +27,4 @@ package() {
cd ${srcdir}/$pkgname-$pkgver
make DESTDIR=${pkgdir} install
-
-# icon
- install -Dm644 ${srcdir}/$pkgname-$pkgver/pixmaps/$pkgname.png \
- ${pkgdir}/usr/share/pixmaps/$pkgname.png
-
-# .desktop file
- install -Dm644 ${srcdir}/$pkgname.desktop \
- ${pkgdir}/usr/share/applications/$pkgname.desktop
-
-# delete unneeded icon
- rm -rf ${pkgdir}/usr/share/$pkgname
}
diff --git a/community/gpg-crypter/gpg-crypter.changelog b/community/gpg-crypter/gpg-crypter.changelog
new file mode 100644
index 000000000..a56f276cc
--- /dev/null
+++ b/community/gpg-crypter/gpg-crypter.changelog
@@ -0,0 +1,2 @@
+2012-11-14 Jaroslav Lichtblau <dragonlord@aur.archlinux.org>
+ * gpg-crypter 0.4.1-1
diff --git a/community/gtk-engine-unico/PKGBUILD b/community/gtk-engine-unico/PKGBUILD
index 91ae166cc..21e856757 100644
--- a/community/gtk-engine-unico/PKGBUILD
+++ b/community/gtk-engine-unico/PKGBUILD
@@ -1,19 +1,19 @@
-# $Id: PKGBUILD 79137 2012-10-31 01:06:06Z heftig $
+# $Id: PKGBUILD 79966 2012-11-15 05:43:40Z bpiotrowski $
# Maintainer: Bartlomiej Piotrowski <nospam@bpiotrowski.pl>
# Contributor: Hilinus <itahilinus[at]hotmail[dot]it>
pkgname=gtk-engine-unico
pkgver=1.0.2
pkgrel=3
-pkgdesc="Unico GTK3 theme engine"
+pkgdesc='Unico GTK3 theme engine'
arch=('i686' 'x86_64' 'mips64el')
-url="https://launchpad.net/unico"
+url='https://launchpad.net/unico'
license=('GPL')
-depends=("gtk3")
-makedepends=("gnome-common")
+depends=('gtk3')
+makedepends=('gnome-common')
options=(!libtool)
-source=(gtk-engine-unico-139.tar.gz::http://bazaar.launchpad.net/~unico-team/unico/trunk/tarball/139)
-md5sums=('01a8fcde727bbbdfcbd1572f118d1616')
+source=(ftp://ftp.archlinux.org/other/community/$pkgname/$pkgname-139.tar.xz)
+md5sums=('a451cf9e3d6b092a2fbeb424d0436dd3')
build() {
cd "~unico-team/unico/trunk"
@@ -25,4 +25,3 @@ package() {
cd "~unico-team/unico/trunk"
make DESTDIR=${pkgdir} install
}
-md5sums=('14557d1e9188fb814bce1fc404444d4c')
diff --git a/community/keepassx/PKGBUILD b/community/keepassx/PKGBUILD
index 5c5b073d7..6600013ce 100644
--- a/community/keepassx/PKGBUILD
+++ b/community/keepassx/PKGBUILD
@@ -1,22 +1,29 @@
-# $Id: PKGBUILD 65610 2012-02-21 09:36:40Z spupykin $
-# Maintainer: Alexander Fehr <pizzapunk gmail com>
+# $Id: PKGBUILD 80120 2012-11-16 16:43:09Z spupykin $
+# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com>
+# Contributor: Greg Bouzakis <gregbouzakis@gmail.com>
+# Contributor: Alexander Fehr <pizzapunk gmail com>
# Contributor: Philipp Giebel <arch@ambience-design.net>
pkgname=keepassx
pkgver=0.4.3
-pkgrel=2
-pkgdesc="Cross platform password manager"
+pkgrel=3
+pkgdesc='Password manager'
arch=('i686' 'x86_64' 'mips64el')
-url="http://www.keepassx.org/"
+url='http://www.keepassx.org'
license=('GPL2')
-depends=('qt' 'libxtst')
-source=(http://downloads.sourceforge.net/keepassx/keepassx-$pkgver.tar.gz)
+depends=('libxtst' 'qt' 'shared-mime-info')
+install=keepassx.install
+source=(http://downloads.sourceforge.net/keepassx/$pkgname-$pkgver.tar.gz)
md5sums=('1df67bb22b2e08df49f09e61d156f508')
build() {
- cd "$srcdir/keepassx-$pkgver"
+ cd $srcdir/$pkgname-$pkgver
+ sed -i '1,1i#include <unistd.h>' src/lib/random.cpp
+ qmake
+ make
+}
- qmake PREFIX=/usr
- make
- make INSTALL_ROOT="$pkgdir" install
+package() {
+ cd $srcdir/$pkgname-$pkgver
+ make INSTALL_ROOT=$pkgdir install
}
diff --git a/community/keepassx/keepassx.install b/community/keepassx/keepassx.install
new file mode 100644
index 000000000..6210bd0ab
--- /dev/null
+++ b/community/keepassx/keepassx.install
@@ -0,0 +1,12 @@
+post_install() {
+ update-desktop-database -q
+ update-mime-database usr/share/mime &> /dev/null
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/community/kicad/PKGBUILD b/community/kicad/PKGBUILD
index c35adf1c2..330a87a86 100644
--- a/community/kicad/PKGBUILD
+++ b/community/kicad/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 77648 2012-10-13 11:43:53Z allan $
+# $Id: PKGBUILD 80124 2012-11-16 17:08:40Z kkeen $
# Maintainer: Kyle Keen <keenerd@gmail.com>
# Contributor: Marq Schneider <queueRAM@gmail.com>
@@ -6,13 +6,13 @@ pkgname=kicad
pkgver=20120119
_pkgver=${pkgver:0:4}-${pkgver:4:2}-${pkgver:6:2}
_pkgbzr=3256
-pkgrel=3
+pkgrel=4
pkgdesc="Electronic schematic and printed circuit board (PCB) design tools"
arch=('i686' 'x86_64')
url="http://iut-tice.ujf-grenoble.fr/kicad/"
license=('GPL')
depends=('glu' 'wxgtk' 'hicolor-icon-theme' 'desktop-file-utils')
-makedepends=('boost' 'cmake' 'zlib' 'mesa')
+makedepends=('cmake' 'zlib' 'mesa')
optdepends=('kicad-docs-bzr: for documentation'
'kicad-library-bzr: for footprints')
install=kicad.install
@@ -26,6 +26,9 @@ build() {
patch -p0 < "$srcdir/kicad-boost-polygon-declare-gtlsort-earlier.patch"
+ # FS#31559
+ sed -i 's/-O2/-O1/' CMakeLists.txt
+
# build and install kicad
mkdir -p build/Release
cd build/Release
diff --git a/community/klavaro/PKGBUILD b/community/klavaro/PKGBUILD
index 8b78ad08f..e62a48a96 100644
--- a/community/klavaro/PKGBUILD
+++ b/community/klavaro/PKGBUILD
@@ -1,8 +1,8 @@
-# $Id: PKGBUILD 73539 2012-07-09 10:19:45Z spupykin $
+# $Id: PKGBUILD 79909 2012-11-14 16:40:39Z stativ $
# Maintainer: Lukas Jirkovsky <l.jirkovsky@gmail.com>
pkgname=klavaro
pkgver=1.9.5
-pkgrel=2
+pkgrel=3
pkgdesc="Free touch typing tutor program"
arch=('i686' 'x86_64' 'mips64el')
url="http://klavaro.sourceforge.net/"
diff --git a/community/kleansweep/PKGBUILD b/community/kleansweep/PKGBUILD
index ed39fecf1..c6783590d 100644
--- a/community/kleansweep/PKGBUILD
+++ b/community/kleansweep/PKGBUILD
@@ -8,7 +8,7 @@ pkgrel=6
pkgdesc="Allows you to reclaim disk space by finding unneeded files"
license=("GPL")
url="http://linux.bydg.org/~yogin/"
-arch=(i686 x86_64 'mips64el')
+arch=(i686 x86_64)
depends=('kdelibs3')
makedepends=('scons')
options=('libtool')
diff --git a/community/libaccounts-glib/PKGBUILD b/community/libaccounts-glib/PKGBUILD
index 191a1ccf5..5ff11d482 100644
--- a/community/libaccounts-glib/PKGBUILD
+++ b/community/libaccounts-glib/PKGBUILD
@@ -5,7 +5,7 @@ pkgname=libaccounts-glib
pkgver=1.3
pkgrel=1
pkgdesc="Glib-based client library for accessing the online accounts database"
-arch=('i686' 'x86_64')
+arch=('i686' 'x86_64' 'mips64el')
url="http://code.google.com/p/accounts-sso/"
license=('LGPL')
depends=('dbus-glib' 'libxml2' 'sqlite3')
diff --git a/community/libaccounts-qt/PKGBUILD b/community/libaccounts-qt/PKGBUILD
index 863f1726e..33fbfca13 100644
--- a/community/libaccounts-qt/PKGBUILD
+++ b/community/libaccounts-qt/PKGBUILD
@@ -7,7 +7,7 @@ pkgname=('libaccounts-qt' 'libaccounts-qt-doc')
pkgver=1.2
pkgrel=1
pkgdesc="Qt-based client library for accessing the online accounts database"
-arch=('i686' 'x86_64')
+arch=('i686' 'x86_64' 'mips64el')
url="http://code.google.com/p/accounts-sso/"
license=('LGPL')
depends=('qt' 'libaccounts-glib')
diff --git a/community/libdesktop-agnostic/PKGBUILD b/community/libdesktop-agnostic/PKGBUILD
index e6848d808..9513ef819 100644
--- a/community/libdesktop-agnostic/PKGBUILD
+++ b/community/libdesktop-agnostic/PKGBUILD
@@ -7,7 +7,7 @@ pkgname=libdesktop-agnostic
pkgver=0.3.92
pkgrel=5
pkgdesc="Provides an extensible config API, a unified virtual fs API, and a desktop item editor for GLib-based projects"
-arch=('i686' 'x86_64')
+arch=('i686' 'x86_64' 'mips64el')
url="https://launchpad.net/libdesktop-agnostic"
license=('GPL' 'LGPL')
depends=('pygtk')
diff --git a/community/libfm/PKGBUILD b/community/libfm/PKGBUILD
index 6fbafeac3..c7a02b7ef 100644
--- a/community/libfm/PKGBUILD
+++ b/community/libfm/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 79276 2012-11-02 10:03:48Z bpiotrowski $
+# $Id: PKGBUILD 80049 2012-11-15 19:06:07Z bpiotrowski $
# Maintainer: Bartłomiej Piotrowski <barthalion@gmail.com>
# Contributor: Unknown47 <unknown47r@gmail.com>
# Contributor: Angel Velasquez <angvp@archlinux.org>
@@ -6,9 +6,9 @@
pkgname=libfm
pkgver=1.1.0
-pkgrel=2
-pkgdesc="A library for file management"
-url="http://pcmanfm.sourceforge.net/"
+pkgrel=3
+pkgdesc='Library for file management'
+url='http://pcmanfm.sourceforge.net/'
arch=('i686' 'x86_64' 'mips64el')
license=('GPL')
groups=('lxde')
diff --git a/community/libhx/PKGBUILD b/community/libhx/PKGBUILD
index 22ea11bbe..e43bb8af0 100644
--- a/community/libhx/PKGBUILD
+++ b/community/libhx/PKGBUILD
@@ -1,10 +1,10 @@
-# $Id: PKGBUILD 74564 2012-07-30 14:15:35Z spupykin $
+# $Id: PKGBUILD 80149 2012-11-16 20:29:24Z spupykin $
# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com>
# Maintainer: Max Roder <maxroder@web.de>
# Contributor: Nathan Owe <ndowens.aur at gmail dot com>
pkgname='libhx'
-pkgver=3.13
+pkgver=3.14
pkgrel=1
pkgdesc='A library providing queue, tree, I/O and utility functions'
arch=('i686' 'x86_64' 'mips64el')
@@ -13,7 +13,7 @@ license=('GPL')
depends=()
options=('!libtool')
source=("http://downloads.sourceforge.net/${pkgname}/libHX-${pkgver}.tar.xz")
-md5sums=('3cfb6983e2e7eea20f295c5f2c2c9b03')
+md5sums=('a2a2dd32aaff33234e53517c6afd694a')
build() {
cd ${srcdir}/libHX-${pkgver}
diff --git a/community/libpng12/PKGBUILD b/community/libpng12/PKGBUILD
new file mode 100644
index 000000000..968cd9123
--- /dev/null
+++ b/community/libpng12/PKGBUILD
@@ -0,0 +1,50 @@
+# $Id: PKGBUILD 79866 2012-11-14 07:22:13Z dwallace $
+# Maintainer: Daniel Wallace <danielwallace at gtmanfred dot com>
+# Contributor: dorphell <archlinux.org: dorphell>
+# Contributor: Travis Willard <archlinux.org: travis>
+# Contributor: Douglas Soares de Andrade <archlinux.org: douglas>
+# Contributor: Jesse Jaara <gmail.com: jesse.jaara>
+
+pkgname=libpng12
+_realname=libpng
+pkgver=1.2.50
+pkgrel=2
+pkgdesc="A collection of routines used to create PNG format graphics files"
+arch=('i686' 'x86_64')
+url="http://www.libpng.org/pub/png/libpng.html"
+license=('custom')
+depends=('zlib')
+options=('!libtool')
+source=("http://sourceforge.net/projects/libpng/files/libpng-${pkgver}.tar.xz"
+ "http://sourceforge.net/projects/apng/files/libpng/libpng12/libpng-${pkgver}-apng.patch.gz")
+
+build() {
+ cd "${srcdir}/${_realname}-${pkgver}"
+
+ patch -Np0 -i "${srcdir}/libpng-${pkgver}-apng.patch"
+
+ libtoolize --force --copy
+ aclocal
+ autoconf
+ automake --add-missing
+
+ ./configure --prefix=/usr
+
+ make ECHO=echo
+}
+
+package() {
+ cd "${srcdir}/${_realname}-${pkgver}"
+
+ make ECHO=echo DESTDIR="${pkgdir}" install
+
+ rm -rf "${pkgdir}/usr/share"
+ rm -rf "${pkgdir}/usr/bin/libpng-config"
+ rm -rf "${pkgdir}/usr/lib/"{libpng.so,libpng.a}
+ rm -fr "${pkgdir}/usr/lib/pkgconfig/libpng.pc"
+ rm -rf "${pkgdir}/usr/include/"{pngconf.h,png.h}
+
+}
+
+md5sums=('a3e00fccbfe356174ab515b5c00641c7'
+ 'b06ac3f6a6f982abc2036359665e82a9')
diff --git a/community/librsync/PKGBUILD b/community/librsync/PKGBUILD
index 0a0a4c435..720de9a1a 100644
--- a/community/librsync/PKGBUILD
+++ b/community/librsync/PKGBUILD
@@ -5,7 +5,7 @@
pkgname=librsync
pkgver=0.9.7
-pkgrel=6
+pkgrel=6.1
pkgdesc="A free software library that implements the rsync remote-delta algorithm (rdiff)"
arch=('i686' 'x86_64' 'mips64el')
url="http://librsync.sourceforge.net/"
diff --git a/community/libsignon-glib/PKGBUILD b/community/libsignon-glib/PKGBUILD
index 752d0b0c1..3baa4fc14 100644
--- a/community/libsignon-glib/PKGBUILD
+++ b/community/libsignon-glib/PKGBUILD
@@ -5,7 +5,7 @@ pkgname=libsignon-glib
pkgver=1.7
pkgrel=1
pkgdesc="GLib-based client library for applications handling account authentication through the Online Accounts Single Sign-On service"
-arch=('i686' 'x86_64')
+arch=('i686' 'x86_64' 'mips64el')
url="http://code.google.com/p/accounts-sso/"
license=('LGPL')
depends=('signon')
diff --git a/community/libxdg-basedir/PKGBUILD b/community/libxdg-basedir/PKGBUILD
index 116b633a7..1a5bb14d6 100644
--- a/community/libxdg-basedir/PKGBUILD
+++ b/community/libxdg-basedir/PKGBUILD
@@ -3,7 +3,7 @@
pkgname=libxdg-basedir
pkgver=1.2.0
-pkgrel=1
+pkgrel=1.1
pkgdesc="An implementation of the XDG Base Directory specifications."
arch=('i686' 'x86_64' 'mips64el')
url="http://n.ethz.ch/student/nevillm/download/libxdg-basedir"
diff --git a/community/lmms/PKGBUILD b/community/lmms/PKGBUILD
index 5a287a701..e278ff74d 100644
--- a/community/lmms/PKGBUILD
+++ b/community/lmms/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 66380 2012-02-24 11:46:22Z lfleischer $
+# $Id: PKGBUILD 80173 2012-11-17 12:51:55Z lfleischer $
# Maintainer: Lukas Fleischer <archlinux at cryptocrack dot de>
# Contributor: Shinlun Hsieh <yngwiexx@yahoo.com.tw>
# Contributor: Mateusz Herych <heniekk@gmail.com>
@@ -6,7 +6,7 @@
pkgname=lmms
pkgver=0.4.13
-pkgrel=1
+pkgrel=2
pkgdesc='The Linux MultiMedia Studio.'
arch=('i686' 'x86_64' 'mips64el')
url='http://lmms.sourceforge.net/'
@@ -17,21 +17,24 @@ optdepends=('wine: VST support (experimental)'
'fftw: SpectrumAnalyzer plugin'
'stk: STK instruments plugins'
'pulseaudio: PulseAudio output')
-makedepends=('cmake' 'ladspa' 'libxft' 'freetype2' 'fftw' 'stk')
-[[ $CARCH = i686 ]] && makedepends+=('wine')
+makedepends=('cmake' 'ladspa' 'libxft' 'freetype2' 'fftw' 'stk' 'wine')
provides=('lmms-extras')
conflicts=('lmms-extras')
options=('!libtool' '!makeflags')
install=lmms.install
-source=("http://downloads.sourceforge.net/sourceforge/lmms/${pkgname}-${pkgver}.tar.bz2")
-md5sums=('80db0dc5263041d443f474220410991f')
+source=("http://downloads.sourceforge.net/sourceforge/lmms/${pkgname}-${pkgver}.tar.bz2"
+ zynaddsubfx_unlink.patch)
+md5sums=('80db0dc5263041d443f474220410991f'
+ 'd2ea78ac0cf2979505f140c6845617cf')
build() {
cd "${srcdir}/${pkgname}-${pkgver}"
sed -i 's|lib64|lib|g' cmake/modules/DetectMachine.cmake
- cmake . -DCMAKE_INSTALL_PREFIX=/usr
+ patch -Np1 -i ../zynaddsubfx_unlink.patch
+
+ cmake . -DCMAKE_INSTALL_PREFIX=/usr -USE=vst
make
}
@@ -39,4 +42,3 @@ package() {
cd "$srcdir/$pkgname-$pkgver"
make DESTDIR="${pkgdir}" install
}
-
diff --git a/community/lmms/zynaddsubfx_unlink.patch b/community/lmms/zynaddsubfx_unlink.patch
new file mode 100644
index 000000000..6b2521f55
--- /dev/null
+++ b/community/lmms/zynaddsubfx_unlink.patch
@@ -0,0 +1,10 @@
+--- lmms-0.4.13_orig/plugins/zynaddsubfx/LocalZynAddSubFx.cpp 2012-04-08 13:01:25.951925761 +0200
++++ lmms-0.4.13_test/plugins/zynaddsubfx/LocalZynAddSubFx.cpp 2012-04-08 13:08:32.841905201 +0200
+@@ -23,6 +23,7 @@
+ */
+
+ #include <lmmsconfig.h>
++#include <unistd.h>
+
+ #include "LocalZynAddSubFx.h"
+
diff --git a/community/luajit/PKGBUILD b/community/luajit/PKGBUILD
index fc556957f..abdf94d70 100644
--- a/community/luajit/PKGBUILD
+++ b/community/luajit/PKGBUILD
@@ -1,29 +1,29 @@
-# $Id: PKGBUILD 79274 2012-11-02 08:02:31Z bpiotrowski $
+# $Id: PKGBUILD 79833 2012-11-13 17:51:21Z bpiotrowski $
# Maintainer: Chris Brannon <chris@the-brannons.com>
# Maintainer: Bartłomiej Piotrowski
# Contributor: Paulo Matias <matiasΘarchlinux-br·org>
# Contributor: Anders Bergh <anders1@gmail.com>
pkgname=luajit
-pkgver=2.0.0rc1
-pkgrel=2
+pkgver=2.0.0
+pkgrel=1
pkgdesc='A Just-In-Time Compiler for Lua'
arch=('i686' 'x86_64' 'mips64el')
url='http://luajit.org/'
license=('MIT')
depends=('gcc-libs')
source=(http://luajit.org/download/LuaJIT-${pkgver/rc/-rc}.tar.gz)
-md5sums=('26dc243c12cab80b8fe2d9cfa02a81a6')
+md5sums=('97a2b87cc0490784f54b64cfb3b8f5ad')
build() {
- cd $srcdir/LuaJIT-${pkgver/rc1}
+ cd $srcdir/LuaJIT-$pkgver
make PREFIX=/usr
}
package() {
- cd $srcdir/LuaJIT-${pkgver/rc1}
+ cd $srcdir/LuaJIT-$pkgver
make install DESTDIR=$pkgdir PREFIX=/usr
- install -Dm644 $srcdir/LuaJIT-${pkgver/rc1}/COPYRIGHT \
+ install -Dm644 $srcdir/LuaJIT-$pkgver/COPYRIGHT \
$pkgdir/usr/share/licenses/$pkgname/COPYRIGHT
}
diff --git a/community/luasql/PKGBUILD b/community/luasql/PKGBUILD
new file mode 100644
index 000000000..54aff4c20
--- /dev/null
+++ b/community/luasql/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id: PKGBUILD 61380 2011-12-29 16:34:45Z spupykin $
+# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com>
+# Maintainer: Anders Bergh <anders1@gmail.com>
+
+pkgname=luasql-mysql
+pkgver=2.2.0
+pkgrel=1
+pkgdesc="MySQL module for Lua"
+arch=('i686' 'x86_64')
+url="http://www.keplerproject.org/luasql/"
+license=('MIT')
+depends=('lua' 'libmysqlclient')
+source=(https://github.com/downloads/keplerproject/luasql/luasql-$pkgver.tar.gz)
+md5sums=('59d72db444c6369c936d4f03694db6b7')
+
+build() {
+ cd "$srcdir/luasql-$pkgver"
+ make T=mysql PREFIX=/usr DRIVER_LIBS="$(mysql_config --libs)" \
+ DRIVER_INCS="$(mysql_config --include) -fPIC"
+ install -Dm644 src/mysql.so $pkgdir/usr/lib/lua/5.1/luasql/mysql.so
+ install -Dm644 doc/us/license.html $pkgdir/usr/share/licenses/$pkgname/license.html
+}
diff --git a/community/lxc/PKGBUILD b/community/lxc/PKGBUILD
index 72431d0c5..618c70728 100644
--- a/community/lxc/PKGBUILD
+++ b/community/lxc/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 79773 2012-11-12 09:05:42Z spupykin $
+# $Id: PKGBUILD 80003 2012-11-15 11:55:57Z spupykin $
# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com>
# Contributor: Andrea Zucchelli <zukka77@gmail.com>
# Contributor: Jonathan Liu <net147@gmail.com>
@@ -6,7 +6,8 @@
pkgname=lxc
pkgver=0.8.0
-pkgrel=1
+epoch=1
+pkgrel=2
pkgdesc="Linux Containers"
arch=('i686' 'x86_64' 'mips64el')
url="http://lxc.sourceforge.net/"
diff --git a/community/lxlauncher/PKGBUILD b/community/lxlauncher/PKGBUILD
index 85de2af9b..cf21008cd 100644
--- a/community/lxlauncher/PKGBUILD
+++ b/community/lxlauncher/PKGBUILD
@@ -1,27 +1,28 @@
-#$Id: PKGBUILD 52832 2011-07-28 23:39:16Z angvp $
-# Maintainer: Angel 'angvp' Velasquez <angvp[at]archlinux.com.ve>
-# Maintainer: Geoffroy Carrier <geoffroy.carrier@koon.fr>
+# $Id: PKGBUILD 80054 2012-11-15 19:13:49Z bpiotrowski $
+# Maintainer: Bartłomiej Piotrowski <nospam@bpiotrowski.pl>
+# Contributor: Angel 'angvp' Velasquez <angvp[at]archlinux.com.ve>
+# Contributor: Geoffroy Carrier <geoffroy.carrier@koon.fr>
+
pkgname=lxlauncher
pkgver=0.2.2
-pkgrel=1.1
-pkgdesc="Launcher for Asus EeePC (part of LXDE)"
+pkgrel=2
+pkgdesc='Open source clone of the Asus launcher for EeePC'
arch=('i686' 'x86_64' 'mips64el')
license=('GPL2')
-url="http://lxde.org/"
+url='http://lxde.org/'
groups=('lxde')
depends=('gtk2' 'startup-notification' 'gnome-menus' 'menu-cache' 'intltool')
makedepends=('pkgconfig')
-source=(http://downloads.sourceforge.net/sourceforge/lxde/${pkgname}-${pkgver}.tar.gz)
+source=(http://downloads.sourceforge.net/sourceforge/lxde/$pkgname-$pkgver.tar.gz)
md5sums=('16df627447838b170a72cc3a9ee21497')
build() {
- cd "$srcdir/$pkgname-$pkgver"
- autoreconf
- ./configure --sysconfdir=/etc --prefix=/usr
- make
+ cd $srcdir/$pkgname-$pkgver
+ ./configure --sysconfdir=/etc --prefix=/usr
+ make
}
package() {
- cd "$srcdir/$pkgname-$pkgver"
- make DESTDIR="$pkgdir" install
+ cd $srcdir/$pkgname-$pkgver
+ make DESTDIR=$pkgdir install
}
diff --git a/community/lxpanel/PKGBUILD b/community/lxpanel/PKGBUILD
index 7e37715c5..0d4c55688 100644
--- a/community/lxpanel/PKGBUILD
+++ b/community/lxpanel/PKGBUILD
@@ -1,30 +1,30 @@
-# $Id: PKGBUILD 72336 2012-06-12 05:13:20Z bpiotrowski $
-# Maintainer: Bartłomiej Piotrowski <barthalion@gmail.com>
+# $Id: PKGBUILD 80057 2012-11-15 19:23:02Z bpiotrowski $
+# Maintainer: Bartłomiej Piotrowski <nospam@bpiotrowski.pl>
# Contributor: Angel Velasquez <angvp@archlinux.org>
# Contributor: Juergen Hoetzel <juergen@archlinux.org>
pkgname=lxpanel
pkgver=0.5.10
-pkgrel=1
-pkgdesc="Panel of the LXDE Desktop"
+pkgrel=2
+pkgdesc='Lightweight X11 desktop panel for LXDE'
arch=('i686' 'x86_64' 'mips64el')
license=('GPL2')
-url="http://lxde.org/"
+url='http://lxde.org/'
groups=('lxde')
depends=('gtk2' 'alsa-lib' 'menu-cache' 'lxmenu-data' 'libwnck')
makedepends=('wireless_tools')
optdepends=('wireless_tools: netstat plugin')
-source=(http://ftp.de.debian.org/debian/pool/main/l/$pkgname/${pkgname}_${pkgver}.orig.tar.xz)
-md5sums=('86a87723ec15274d4c0fe191e8a2fa52')
+source=(http://downloads.sourceforge.net/lxde/$pkgname-$pkgver.tar.gz)
+md5sums=('1bf3cce2a2d01c211f6897c42e8dd0bc')
build() {
- cd "$srcdir/$pkgname-$pkgver"
+ cd $srcdir/$pkgname-$pkgver
- CFLAGS+=" -lgmodule-2.0" ./configure --sysconfdir=/etc --prefix=/usr
- make
+ CFLAGS+=' -lgmodule-2.0' ./configure --sysconfdir=/etc --prefix=/usr
+ make
}
package() {
- cd "$srcdir/$pkgname-$pkgver"
- make DESTDIR="$pkgdir" install
+ cd $srcdir/$pkgname-$pkgver
+ make DESTDIR=$pkgdir install
}
diff --git a/community/mediaproxy/PKGBUILD b/community/mediaproxy/PKGBUILD
index 7a3096254..4b7cb8f4f 100644
--- a/community/mediaproxy/PKGBUILD
+++ b/community/mediaproxy/PKGBUILD
@@ -1,10 +1,10 @@
-# $Id: PKGBUILD 78383 2012-10-17 15:54:17Z spupykin $
+# $Id: PKGBUILD 80024 2012-11-15 14:41:33Z spupykin $
# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com>
# Contributor: Colin Pitrat <colin.pitrat@gmail.com>
pkgname=mediaproxy
pkgver=2.5.2
-pkgrel=3
+pkgrel=4
pkgdesc="Open-source media proxy for OpenSER"
url="http://mediaproxy.ag-projects.com/"
arch=('i686' 'x86_64' 'mips64el')
@@ -25,8 +25,12 @@ md5sums=('840de8f52e656991be728c15ec30bb5e'
build() {
cd $srcdir/mediaproxy-$pkgver
- install -D -m0755 $srcdir/mediaproxy.init $pkgdir/etc/rc.d/mediaproxy
+
+ sed -i "s|libraries = get_link_libraries(),|libraries = ['netfilter_conntrack', 'ip4tc'],|g" setup.py
+
python2 setup.py install --root=$pkgdir
+
+ install -D -m0755 $srcdir/mediaproxy.init $pkgdir/etc/rc.d/mediaproxy
install -Dm0644 $srcdir/$pkgname-dispatcher.service $pkgdir/usr/lib/systemd/system/$pkgname-dispatcher.service
install -Dm0644 $srcdir/$pkgname-relay.service $pkgdir/usr/lib/systemd/system/$pkgname-relay.service
install -Dm0644 $srcdir/$pkgname.tmpfiles $pkgdir/usr/lib/tmpfiles.d/$pkgname.conf
diff --git a/community/menu-cache/PKGBUILD b/community/menu-cache/PKGBUILD
index 8195b8f16..1c6e9ad24 100644
--- a/community/menu-cache/PKGBUILD
+++ b/community/menu-cache/PKGBUILD
@@ -1,30 +1,36 @@
-# $Id: PKGBUILD 71029 2012-05-22 05:52:34Z bpiotrowski $
+# $Id: PKGBUILD 80045 2012-11-15 18:59:35Z bpiotrowski $
# Maintainer: Bartłomiej Piotrowski <nospam@bpiotrowski.pl>
# Contributor: Angel Velasquez <angvp@archlinux.org>
# Contributor: Juergen Hoetzel <juergen@archlinux.org>
pkgname=menu-cache
-pkgver=0.3.3
+pkgver=0.4.0
pkgrel=1
pkgdesc='Caching mechanism for freedesktop.org compliant menus'
arch=('i686' 'x86_64' 'mips64el')
license=('GPL2')
-url="http://lxde.org/"
+url='http://lxde.org/'
groups=('lxde')
depends=('intltool' 'glib2')
options=('!libtool')
makedepends=('pkgconfig')
-source=(http://downloads.sourceforge.net/lxde/${pkgname}-${pkgver}.tar.gz)
-md5sums=('a14b0b162cd64d56c16bf6af16f3a47f')
+source=(http://downloads.sourceforge.net/lxde/$pkgname-$pkgver.tar.gz
+ menu-cache-gen.h)
+md5sums=('c63029a6c65e370ed5d9409f30265950'
+ '4edc9545b9640ee7698324d3f9683dc7')
build() {
- cd "${srcdir}/${pkgname}-${pkgver}"
- ./configure --prefix=/usr --sysconfdir=/etc \
- --libexecdir=/usr/lib/menu-cache --disable-static
- make
+ cd $srcdir/$pkgname-$pkgver
+
+ install -m644 $srcdir/menu-cache-gen.h menu-cache-gen/
+
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --libexecdir=/usr/lib/menu-cache \
+ --disable-static
+ make
}
package() {
- cd "${srcdir}/${pkgname}-${pkgver}"
- make DESTDIR="${pkgdir}" install
+ cd $srcdir/$pkgname-$pkgver
+ make DESTDIR=$pkgdir install
}
diff --git a/community/menu-cache/menu-cache-gen.h b/community/menu-cache/menu-cache-gen.h
new file mode 100644
index 000000000..7d9be4207
--- /dev/null
+++ b/community/menu-cache/menu-cache-gen.h
@@ -0,0 +1,8 @@
+#ifndef __MENU_CACHE_GEN_H__
+#define __MENU_CACHE_GEN_H__ 1
+G_BEGIN_DECLS
+
+guint32 menu_cache_get_de_flag (const char* de_name);
+
+G_END_DECLS
+#endif \ No newline at end of file
diff --git a/community/mod_wsgi/PKGBUILD b/community/mod_wsgi/PKGBUILD
new file mode 100644
index 000000000..22c403936
--- /dev/null
+++ b/community/mod_wsgi/PKGBUILD
@@ -0,0 +1,35 @@
+# $Id: PKGBUILD 79940 2012-11-15 00:36:52Z arodseth $
+# Maintainer: Alexander Rødseth <rodseth@gmail.com>
+# Contributor: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Ryan Coyner <rcoyner@gmail.com>
+
+pkgname=mod_wsgi
+pkgver=3.4
+pkgrel=2
+pkgdesc='Python WSGI adapter module for Apache'
+arch=('x86_64' 'i686')
+url='http://www.modwsgi.org/'
+license=('APACHE')
+depends=('apache' 'python')
+makedepends=('setconf')
+install=mod_wsgi.install
+source=("http://modwsgi.googlecode.com/files/$pkgname-$pkgver.tar.gz")
+sha256sums=('ae85c98e9e146840ab3c3e4490e6774f9bef0f99b9f679fca786b2adb5b4b6e8')
+
+build() {
+ cd "$srcdir/$pkgbase-$pkgver"
+
+ ./configure --prefix=/usr \
+ --with-apxs=/usr/sbin/apxs \
+ --with-python=/usr/bin/python
+ setconf Makefile LDLIBS '-lpython3 -lpthread -ldl -lutil -lm'
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgbase-$pkgver"
+
+ make DESTDIR="$pkgdir" install
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/community/mod_wsgi/mod_wsgi.install b/community/mod_wsgi/mod_wsgi.install
new file mode 100644
index 000000000..d26d61631
--- /dev/null
+++ b/community/mod_wsgi/mod_wsgi.install
@@ -0,0 +1,14 @@
+post_install() {
+/bin/cat << ENDOFMESSAGE
+==>
+==>
+==> To install mod_wsgi, add the following line in
+==> /etc/httpd/conf/httpd.conf file :
+==>
+==> LoadModule wsgi_module modules/mod_wsgi.so
+==>
+==> and restart/reload Apache.
+==>
+==>
+ENDOFMESSAGE
+}
diff --git a/community/mplayer2/PKGBUILD b/community/mplayer2/PKGBUILD
index 5fca87a8a..34065c2e8 100644
--- a/community/mplayer2/PKGBUILD
+++ b/community/mplayer2/PKGBUILD
@@ -1,63 +1,66 @@
-# $Id: PKGBUILD 74686 2012-08-02 07:31:37Z bpiotrowski $
+# $Id: PKGBUILD 80198 2012-11-17 14:50:42Z bpiotrowski $
# Maintainer: Bartłomiej Piotrowski <nospam@bpiotrowski.pl>
# Contributor: Martin Panter <vadmium+aur@gmail.com>
# Contributor: Stéphane Gaudreault <stephane@archlinux.org>
pkgname=mplayer2
pkgver=20120729
-pkgrel=1
-pkgdesc="An advanced general-purpose media player. A fork of the original MPlayer project"
+pkgrel=2
+pkgdesc='Advanced general-purpose media player. A fork of the original MPlayer project'
arch=('i686' 'x86_64' 'mips64el')
license=('GPL')
url="http://www.mplayer2.org/"
install=$pkgname.install
depends=('a52dec' 'aalib' 'cdparanoia' 'desktop-file-utils' 'enca' 'faad2' 'ffmpeg' 'fontconfig'
'freetype2' 'jack' 'ladspa' 'lame' 'libass' 'libbluray' 'libcaca' 'libcdio' 'libdca' 'libdvdcss'
- 'libdvdnav' 'libdvdread' 'libjpeg' 'libmad' 'libpulse' 'libtheora'
+ 'libdvdnav' 'libdvdread' 'libjpeg' 'libmad' 'libpulse' 'libquvi' 'libtheora'
'libxinerama' 'libxss' 'libxv' 'libxxf86dga' 'libxxf86vm' 'mpg123' 'ncurses' 'sdl' 'ttf-dejavu')
if [ "$CARCH" != "mips64el" ]; then
depends+=('libgl' 'libvdpau' 'lirc-utils')
fi
-makedepends=('mesa' 'unzip' 'python')
+makedepends=('mesa' 'unzip' 'python' 'python-docutils')
[ "$CARCH" != "mips64el" ] && makedepends+=('yasm')
backup=('etc/mplayer/codecs.conf' 'etc/mplayer/input.conf')
provides=('mplayer')
conflicts=('mplayer')
options=(!emptydirs)
-source=(ftp://ftp.archlinux.org/other/community/$pkgname/$pkgname-$pkgver.tar.xz)
-md5sums=('53a266106f4c0dd687af3f807727812c')
+source=(ftp://ftp.archlinux.org/other/community/$pkgname/$pkgname-$pkgver.tar.xz
+ mplayer2-20120729-fix-vf_lavc-compilation.patch
+ mplayer2-20120729-libquvi-support.patch)
+md5sums=('53a266106f4c0dd687af3f807727812c'
+ 'b1e9188001d31b066488aa35401b62bc'
+ 'd5a23b19d1f84399526bd0dd9bae0e90')
build() {
- cd "${srcdir}"/$pkgname-$pkgver
-
- sed 's/gmplayer/mplayer/g' -i etc/mplayer.desktop
- find -type f -exec sed -e 's/python3/python/' -i {} \;
-
- case $CARCH in
- mips64el) ;;
- *86*) extra=--enable-runtime-cpudetection;;
- esac
-
- ./configure --prefix=/usr --confdir=/etc/mplayer \
- --enable-translation --language=all \
- --enable-joystick \
- --disable-speex \
- --disable-openal \
- --disable-libdv \
- --disable-musepack \
- $extra \
- --disable-mga
- make
+ cd $srcdir/$pkgname-$pkgver
+
+ patch -Np1 -i $srcdir/mplayer2-20120729-libquvi-support.patch
+ patch -Np1 -i $srcdir/mplayer2-20120729-fix-vf_lavc-compilation.patch
+
+ sed 's/gmplayer/mplayer/g' -i etc/mplayer.desktop
+ find -type f -exec sed -e 's/python3/python/' -i {} \;
+
+ [ "$CARCH" != "mips64el" ] && extra="--enable-runtime-cpudetection"
+
+ ./configure --prefix=/usr --confdir=/etc/mplayer \
+ --enable-translation --language=all \
+ --enable-joystick \
+ --disable-speex \
+ --disable-openal \
+ --disable-libdv \
+ --disable-musepack \
+ $extra
+ make
}
package() {
- cd "${srcdir}"/$pkgname-$pkgver
+ cd $srcdir/$pkgname-$pkgver
+ make DESTDIR=$pkgdir install
- make DESTDIR="${pkgdir}" install
- install -Dm644 etc/{codecs.conf,input.conf,example.conf} "${pkgdir}"/etc/mplayer/
- install -dm755 "${pkgdir}"/usr/share/mplayer/
- ln -s /usr/share/fonts/TTF/DejaVuSans.ttf "${pkgdir}"/usr/share/mplayer/subfont.ttf
+ install -Dm644 etc/{codecs.conf,input.conf,example.conf} $pkgdir/etc/mplayer/
+ install -dm755 $pkgdir/usr/share/mplayer/
+ ln -s /usr/share/fonts/TTF/DejaVuSans.ttf $pkgdir/usr/share/mplayer/subfont.ttf
- install -dm755 "${pkgdir}"/usr/share/applications/
- install -m 644 etc/mplayer.desktop "${pkgdir}"/usr/share/applications/
+ install -dm755 $pkgdir/usr/share/applications/
+ install -m 644 etc/mplayer.desktop $pkgdir/usr/share/applications/
}
diff --git a/community/mplayer2/mplayer2-20120729-fix-vf_lavc-compilation.patch b/community/mplayer2/mplayer2-20120729-fix-vf_lavc-compilation.patch
new file mode 100644
index 000000000..a50161305
--- /dev/null
+++ b/community/mplayer2/mplayer2-20120729-fix-vf_lavc-compilation.patch
@@ -0,0 +1,31 @@
+From f5e0365c8e76e2ef797027134f1819e613764d7e Mon Sep 17 00:00:00 2001
+From: Anton Khirnov <anton@khirnov.net>
+Date: Wed, 19 Sep 2012 12:00:01 +0000
+Subject: vf_lavc: fix compilation with latest libav
+
+Remove a pointless and broken check for avctx->codec->encode.
+
+1) The check does not test for anything useful.
+2) AVCodecContext.encode is a private field and is not supposed to be
+ accessed from outside of lavc.
+2a) AVCodecContext.encode does not exist anymore in latest libavcodec,
+ so this block fails to build.
+---
+diff --git a/libmpcodecs/vf_lavc.c b/libmpcodecs/vf_lavc.c
+index b2c1dd7..65e93a1 100644
+--- a/libmpcodecs/vf_lavc.c
++++ b/libmpcodecs/vf_lavc.c
+@@ -76,11 +76,6 @@ static int config(struct vf_instance *vf,
+ return 0;
+ }
+
+- if (lavc_venc_context.codec->encode == NULL) {
+- mp_msg(MSGT_VFILTER,MSGL_ERR,"avcodec init failed (ctx->codec->encode == NULL)!\n");
+- return 0;
+- }
+-
+ return vf_next_config(vf,width,height,d_width,d_height,flags,IMGFMT_MPEGPES);
+ }
+
+--
+cgit v0.9
diff --git a/community/mplayer2/mplayer2-20120729-libquvi-support.patch b/community/mplayer2/mplayer2-20120729-libquvi-support.patch
new file mode 100644
index 000000000..f27fa690d
--- /dev/null
+++ b/community/mplayer2/mplayer2-20120729-libquvi-support.patch
@@ -0,0 +1,277 @@
+From 37c124805c00ae0f2570c95f9543e39ce69793a6 Mon Sep 17 00:00:00 2001
+From: wm4 <wm4@mplayer2.org>
+Date: Fri, 02 Mar 2012 19:24:34 +0000
+Subject: quvi: Add support for streaming sites using libquvi
+
+This enables playing URLs from libquvi supported streaming sites
+directly, e.g. "mplayer http://www.youtube.com/watch?v=...."
+
+Anything opened with mplayer is checked with libquvi. If it looks like
+a URL of a supported streaming site, libquvi is used to extract the
+media URL, which is then passed to the lower level mplayer code
+instead of the HTML URL. Hopefully the libquvi URL checker works well
+enough that it doesn't cause any problems with normal URLs, files, or
+whatever else mplayer's stream layer accepts.
+
+Add the --quvi-format option. The option value is directly passed
+to libquvi as requested format. The only values that seem to work for
+any streaming site seem to be "best" (best quality) and "default"
+(lowest quality). The mplayer option defaults to "best" (overriding
+libquvi's default).
+
+Outstanding issues:
+- Does libquvi checking every opened file really not cause problems?
+ Should there be a runtime option to disable libquvi use?
+ (Probably not an issue.)
+- Should we check/set the supported protocol? By default libquvi has
+ support for all protocols enabled. In the worst case, it might
+ return an URL using a protocol not supported by mplayer, even though
+ it could extract URLs with other protocols too.
+ (Probably not an issue.)
+- Somehow export metadata (like media title) to the mplayer frontend?
+---
+diff --git a/cfg-mplayer.h b/cfg-mplayer.h
+index 5440de9..d8d556a 100644
+--- a/cfg-mplayer.h
++++ b/cfg-mplayer.h
+@@ -517,6 +517,8 @@ const m_option_t common_opts[] = {
+
+ OPT_MAKE_FLAGS("hr-mp3-seek", hr_mp3_seek, 0),
+
++ OPT_STRING("quvi-format", quvi_format, 0),
++
+ { "rawaudio", (void *)&demux_rawaudio_opts, CONF_TYPE_SUBCONFIG, 0, 0, 0, NULL},
+ { "rawvideo", (void *)&demux_rawvideo_opts, CONF_TYPE_SUBCONFIG, 0, 0, 0, NULL},
+
+diff --git a/configure b/configure
+index 5c1e288..18bc404 100755
+--- a/configure
++++ b/configure
+@@ -335,6 +335,7 @@ Optional features:
+ --enable-winsock2_h enable winsock2_h [autodetect]
+ --enable-smb enable Samba (SMB) input [autodetect]
+ --enable-live enable LIVE555 Streaming Media [disable]
++ --enable-libquvi enable libquvi [autodetect]
+ --enable-nemesi enable Nemesi Streaming Media [autodetect]
+ --disable-vcd disable VCD support [autodetect]
+ --disable-bluray disable Blu-ray support [autodetect]
+@@ -650,6 +651,7 @@ _pvr=auto
+ networking=yes
+ _winsock2_h=auto
+ _smb=auto
++_libquvi=auto
+ _joystick=no
+ _xvid=auto
+ _libnut=auto
+@@ -1009,6 +1011,8 @@ for ac_option do
+ --disable-winsock2_h) _winsock2_h=no ;;
+ --enable-smb) _smb=yes ;;
+ --disable-smb) _smb=no ;;
++ --enable-libquvi) _libquvi=yes ;;
++ --disable-libquvi) _libquvi=no ;;
+ --enable-joystick) _joystick=yes ;;
+ --disable-joystick) _joystick=no ;;
+ --enable-xvid) _xvid=yes ;;
+@@ -3610,6 +3614,19 @@ else
+ fi
+ echores "$_smb"
+
++echocheck "libquvi support"
++if test "$_libquvi" = auto ; then
++ _libquvi=no
++ if pkg_config_add libquvi ; then
++ _libquvi=yes
++ fi
++fi
++if test "$_libquvi" = yes; then
++ def_libquvi="#define CONFIG_LIBQUVI 1"
++else
++ def_libquvi="#undef CONFIG_LIBQUVI"
++fi
++echores "$_libquvi"
+
+ #########
+ # VIDEO #
+@@ -6325,6 +6342,7 @@ LIBNEMESI = $_nemesi
+ LIBNUT = $_libnut
+ LIBPOSTPROC = $libpostproc
+ LIBSMBCLIENT = $_smb
++LIBQUVI = $_libquvi
+ LIBTHEORA = $_theora
+ LIRC = $_lirc
+ LIVE555 = $_live
+@@ -6668,6 +6686,7 @@ $def_live
+ $def_nemesi
+ $def_networking
+ $def_smb
++$def_libquvi
+ $def_socklen_t
+ $def_vstream
+
+diff --git a/options.h b/options.h
+index 48f5c53..89324bd 100644
+--- a/options.h
++++ b/options.h
+@@ -78,6 +78,7 @@ typedef struct MPOpts {
+ char **audio_lang;
+ char **sub_lang;
+ int hr_mp3_seek;
++ char *quvi_format;
+
+ char *audio_stream;
+ int audio_stream_cache;
+diff --git a/stream/open.c b/stream/open.c
+index ce0a415..91e9ae2 100644
+--- a/stream/open.c
++++ b/stream/open.c
+@@ -26,12 +26,14 @@
+
+ #include "config.h"
+ #include "mp_msg.h"
++#include "talloc.h"
+
+ #ifdef __FreeBSD__
+ #include <sys/cdrio.h>
+ #endif
+
+ #include "m_option.h"
++#include "options.h"
+ #include "stream.h"
+ #include "libmpdemux/demuxer.h"
+
+@@ -42,6 +44,62 @@ char* cdrom_device=NULL;
+ char* dvd_device=NULL;
+ int dvd_title=0;
+
++#ifdef CONFIG_LIBQUVI
++
++#include <quvi/quvi.h>
++
++static const char *resolve_quvi(const char *url, struct MPOpts *opts)
++{
++ char *media_title, *media_url;
++ quvi_media_t m;
++ QUVIcode rc;
++ quvi_t q;
++
++ rc = quvi_init(&q);
++ if (rc != QUVI_OK)
++ return NULL;
++
++ // Don't try to use quvi on an URL that's not directly supported, since
++ // quvi will do a network access anyway in order to check for HTTP
++ // redirections etc.
++ // The documentation says this will fail on "shortened" URLs.
++ if (quvi_supported(q, (char *)url) != QUVI_OK) {
++ quvi_close(&q);
++ return NULL;
++ }
++
++ mp_msg(MSGT_OPEN, MSGL_INFO, "[quvi] Checking URL...\n");
++
++ // Can use quvi_query_formats() to get a list of formats like this:
++ // "fmt05_240p|fmt18_360p|fmt34_360p|fmt35_480p|fmt43_360p|fmt44_480p"
++ // (This example is youtube specific.)
++ // That call requires an extra net access. quvi_next_media_url() doesn't
++ // seem to do anything useful. So we can't really do anything useful
++ // except pass through the user's format setting.
++ quvi_setopt(q, QUVIOPT_FORMAT, opts->quvi_format
++ ? opts->quvi_format : "best");
++
++ rc = quvi_parse(q, (char *)url, &m);
++ if (rc != QUVI_OK) {
++ mp_msg(MSGT_OPEN, MSGL_ERR, "[quvi] %s\n", quvi_strerror(q, rc));
++ quvi_close(&q);
++ return NULL;
++ }
++
++ quvi_getprop(m, QUVIPROP_PAGETITLE, &media_title);
++ quvi_getprop(m, QUVIPROP_MEDIAURL, &media_url);
++
++ mp_msg(MSGT_OPEN, MSGL_INFO, "[quvi] Site media title: '%s'\n",
++ media_title);
++ media_url = talloc_strdup(NULL, media_url);
++
++ quvi_parse_close(&m);
++ quvi_close(&q);
++
++ return media_url;
++}
++#endif
++
+ // Open a new stream (stdin/file/vcd/url)
+
+ stream_t* open_stream(const char *filename, struct MPOpts *options,
+@@ -59,7 +117,16 @@ if(!filename) {
+ return NULL;
+ }
+
+-//============ Open STDIN or plain FILE ============
++ const char *resolved = NULL;
++
++#ifdef CONFIG_LIBQUVI
++ resolved = resolve_quvi(filename, options);
++#endif
++
++ if (resolved)
++ filename = resolved;
+
+- return open_stream_full(filename,STREAM_READ,options,file_format);
++ stream_t *res = open_stream_full(filename,STREAM_READ,options,file_format);
++ talloc_free((void *)resolved);
++ return res;
+ }
+--
+cgit v0.9
+From 86f7fe1ba61a465fb25bc30deaaa4fcf12600a43 Mon Sep 17 00:00:00 2001
+From: wm4 <wm4@nowhere>
+Date: Sun, 02 Sep 2012 18:45:11 +0000
+Subject: configure: add version check for libquvi
+
+I do not know what exactly is the minimum working version. Require the
+latest version currently released, which is about half a year old.
+---
+diff --git a/configure b/configure
+index 2cf7aff..6a3298f 100755
+--- a/configure
++++ b/configure
+@@ -3445,7 +3445,7 @@ echores "$_smb"
+ echocheck "libquvi support"
+ if test "$_libquvi" = auto ; then
+ _libquvi=no
+- if pkg_config_add libquvi ; then
++ if pkg_config_add 'libquvi >= 0.4.1' ; then
+ _libquvi=yes
+ fi
+ fi
+--
+cgit v0.9
+diff --git a/cfg-mplayer.h b/cfg-mplayer.h
+index b889661..8b07091 100644
+--- a/cfg-mplayer.h
++++ b/cfg-mplayer.h
+@@ -485,7 +485,7 @@ const m_option_t common_opts[] = {
+
+ OPT_MAKE_FLAGS("hr-mp3-seek", hr_mp3_seek, 0),
+
+- OPT_STRING("quvi-format", quvi_format, 0),
++ OPT_STRING("quvi-format", quvi_format, 0, OPTDEF_STR("best")),
+
+ { "rawaudio", (void *)&demux_rawaudio_opts, CONF_TYPE_SUBCONFIG, 0, 0, 0, NULL},
+ { "rawvideo", (void *)&demux_rawvideo_opts, CONF_TYPE_SUBCONFIG, 0, 0, 0, NULL},
+diff --git a/stream/open.c b/stream/open.c
+index 91e9ae2..16d0dc3 100644
+--- a/stream/open.c
++++ b/stream/open.c
+@@ -76,8 +76,7 @@ static const char *resolve_quvi(const char *url, struct MPOpts *opts)
+ // That call requires an extra net access. quvi_next_media_url() doesn't
+ // seem to do anything useful. So we can't really do anything useful
+ // except pass through the user's format setting.
+- quvi_setopt(q, QUVIOPT_FORMAT, opts->quvi_format
+- ? opts->quvi_format : "best");
++ quvi_setopt(q, QUVIOPT_FORMAT, opts->quvi_format);
+
+ rc = quvi_parse(q, (char *)url, &m);
+ if (rc != QUVI_OK) {
+--
+cgit v0.9
diff --git a/community/multipath-tools/PKGBUILD b/community/multipath-tools/PKGBUILD
index 3cbac92fc..ff3cf3c67 100644
--- a/community/multipath-tools/PKGBUILD
+++ b/community/multipath-tools/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 75262 2012-08-17 10:00:23Z bpiotrowski $
+# $Id: PKGBUILD 80194 2012-11-17 14:32:27Z bpiotrowski $
# Maintainer: Bartłomiej Piotrowski <nospam@bpiotrowski.pl>
# Contributor: Thomas S Hatch <thatch45 ar gmail dot com>
# Contributor: Michael P <ptchinster@archlinux.us>
@@ -6,7 +6,7 @@
pkgname=multipath-tools
pkgver=0.4.9
-pkgrel=10
+pkgrel=11
pkgdesc='Multipath tools for Linux'
arch=('i686' 'x86_64' 'mips64el')
url="http://christophe.varoqui.free.fr/"
@@ -14,7 +14,7 @@ license=('GPL')
depends=('bash' 'libaio' 'device-mapper')
backup=('etc/multipath.conf' 'etc/multipath.conf.annotated')
install=multipath-tools.install
-options=(!emptydirs)
+options=(!emptydirs !strip)
source=(http://christophe.varoqui.free.fr/multipath-tools/$pkgname-$pkgver.tar.bz2
rc.d service multipath.conf multipath.conf.annotated
fix-build.patch buffer-overflows.patch log_enquery_overflow.patch
@@ -50,4 +50,6 @@ package() {
install -Dm644 multipath.conf.annotated "$pkgdir"/etc/multipath.conf.annotated
install -Dm755 rc.d "$pkgdir"/etc/rc.d/multipathd
install -Dm644 service "$pkgdir"/usr/lib/systemd/system/multipathd.service
+
+ find $pkgdir -type f -exec sed 's/sbin/bin/g' -i {} \;
}
diff --git a/community/mythtv/PKGBUILD b/community/mythtv/PKGBUILD
index 4a9e0c106..28612f39e 100644
--- a/community/mythtv/PKGBUILD
+++ b/community/mythtv/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 78022 2012-10-16 04:42:30Z jconder $
+# $Id: PKGBUILD 80156 2012-11-16 23:35:58Z ioni $
# Maintainer: Jonathan Conder <jonno.conder@gmail.com>
# Contributor: Giovanni Scafora <giovanni@archlinux.org>
# Contributor: Juergen Hoetzel <juergen@archlinux.org>
@@ -7,7 +7,7 @@
pkgname=mythtv
pkgver=0.26.0
-pkgrel=2
+pkgrel=3
epoch=1
pkgdesc="A Homebrew PVR project"
arch=('i686' 'x86_64')
diff --git a/community/ncmpcpp/PKGBUILD b/community/ncmpcpp/PKGBUILD
index 5891c13d4..d8a12da48 100644
--- a/community/ncmpcpp/PKGBUILD
+++ b/community/ncmpcpp/PKGBUILD
@@ -1,22 +1,23 @@
-# $Id: PKGBUILD 74221 2012-07-23 03:07:58Z allan $
+# $Id: PKGBUILD 80192 2012-11-17 14:06:36Z bpiotrowski $
# Maintainer: Bartłomiej Piotrowski
-# Contributor: Mateusz Herych <heniekk@gmail.com>
+# Contributor: graysky <graysky AT archlinux DOT us>
+# Contributor: Mateusz Herych <heniekk@gmail.com>
# Contributor: Army <uli[dot]armbruster[at]gmail[dot]com>
pkgname=ncmpcpp
pkgver=0.5.10
-pkgrel=2
-pkgdesc="An almost exact clone of ncmpc with some new features."
+pkgrel=3
+pkgdesc='Almost exact clone of ncmpc with some new features'
arch=('i686' 'x86_64' 'mips64el')
-url="http://unkart.ovh.org/ncmpcpp/"
+url='http://ncmpcpp.rybczak.net/'
license=('GPL')
depends=('curl' 'libmpdclient' 'taglib' 'ncurses')
install=ncmpcpp.install
-source=(http://unkart.ovh.org/ncmpcpp/${pkgname}-${pkgver}.tar.bz2)
+source=(http://ncmpcpp.rybczak.net/stable/$pkgname-$pkgver.tar.bz2)
md5sums=('298ed66325bcfe358e37e186c7ea4861')
build() {
- cd "$srcdir/${pkgname}-${pkgver}"
+ cd $srcdir/$pkgname-$pkgver
./configure --prefix=/usr \
--enable-unicode \
--enable-clock \
@@ -27,7 +28,9 @@ build() {
}
package() {
- cd "$srcdir/${pkgname}-${pkgver}"
+ cd $srcdir/$pkgname-$pkgver
+ make DESTDIR=$pkgdir install
- make DESTDIR="$pkgdir" install
+ make -C extras/
+ install -Dm755 extras/artist_to_albumartist $pkgdir/usr/bin/
}
diff --git a/community/nginx/PKGBUILD b/community/nginx/PKGBUILD
index 62ffecfaa..40c3e359e 100644
--- a/community/nginx/PKGBUILD
+++ b/community/nginx/PKGBUILD
@@ -1,17 +1,17 @@
-# $Id: PKGBUILD 76652 2012-09-25 18:40:48Z bpiotrowski $
-# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com>
-# Maintainer: Bartłomiej Piotrowski <barthalion@gmal.com>
+# $Id: PKGBUILD 80209 2012-11-17 16:39:31Z bpiotrowski $
+# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com>
+# Maintainer: Bartłomiej Piotrowski <nospam@bpiotrowski.pl>
# Contributor: Miroslaw Szot <mss@czlug.icis.pcz.pl>
_cfgdir=/etc/nginx
_tmpdir=/var/lib/nginx
pkgname=nginx
-pkgver=1.2.4
-pkgrel=1
-pkgdesc="lightweight HTTP server and IMAP/POP3 proxy server"
+pkgver=1.2.5
+pkgrel=2
+pkgdesc='Lightweight HTTP server and IMAP/POP3 proxy server'
arch=('i686' 'x86_64' 'mips64el')
-depends=('pcre' 'zlib' 'openssl')
+depends=('pcre' 'zlib' 'openssl' 'geoip')
makedepends=('passenger')
optdepends=('passenger')
url="http://nginx.org"
@@ -31,7 +31,7 @@ source=(http://nginx.org/download/nginx-$pkgver.tar.gz
rc.d
service
nginx.logrotate)
-md5sums=('a7c9a515f632c8cbb07ab67392208088'
+md5sums=('4f5a55187a3d45fa37d99d07ddd90800'
'f62c7c9b5a53471d4666a4c49ad363fb'
'62d494d23aef31d0b867161f9fffa6eb'
'b38744739022876554a0444d92e6603b')
@@ -57,17 +57,16 @@ build() {
--with-ipv6 --with-pcre-jit \
--with-file-aio \
--with-http_dav_module \
+ --with-http_geoip_module \
--with-http_gzip_static_module \
--with-http_realip_module \
--with-http_ssl_module \
--with-http_stub_status_module \
--add-module=/usr/lib/passenger/ext/nginx \
#--with-http_mp4_module \
- #--with-http_realip_module \
#--with-http_addition_module \
#--with-http_xslt_module \
#--with-http_image_filter_module \
- #--with-http_geoip_module \
#--with-http_sub_module \
#--with-http_flv_module \
#--with-http_random_index_module \
diff --git a/community/opencc/PKGBUILD b/community/opencc/PKGBUILD
new file mode 100644
index 000000000..ae94dce10
--- /dev/null
+++ b/community/opencc/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 79884 2012-11-14 13:43:08Z fyan $
+# Maintainer: Felix Yan <felixonmars@gmail.com>
+
+pkgname=opencc
+pkgver=0.3.0
+pkgrel=1
+pkgdesc="Library for Open Chinese Convert"
+arch=('i686' 'x86_64')
+url="http://code.google.com/p/opencc/"
+license=('Apache')
+depends=('glibc')
+makedepends=('cmake')
+source=("http://opencc.googlecode.com/files/${pkgname}-${pkgver}.tar.gz")
+
+build() {
+ cd "$srcdir/${pkgname}-${pkgver}"
+ cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release
+ make
+}
+
+package() {
+ cd "$srcdir/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
+md5sums=('84462870e5d491da24bb33a5fb494911')
diff --git a/community/openntpd/PKGBUILD b/community/openntpd/PKGBUILD
index 8411524c9..b3ba9f225 100644
--- a/community/openntpd/PKGBUILD
+++ b/community/openntpd/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 75378 2012-08-21 16:04:24Z dreisner $
+# $Id: PKGBUILD 80216 2012-11-17 19:40:50Z jelle $
# Maintainer: Vesa Kaihlavirta <vegai@iki.fi>
# Contributor: Mark Rosenstand <mark@borkware.net>
# Contributor: Giorgio Lando <patroclo7@gmail.com> (adjtimex patch)
@@ -6,12 +6,13 @@
pkgname=openntpd
pkgver=3.9p1
-pkgrel=19
+pkgrel=20
pkgdesc="Free, easy to use implementation of the Network Time Protocol."
url="http://www.openntpd.org/"
arch=('x86_64' 'i686' 'mips64el')
license=('BSD')
depends=('openssl')
+conflicts=('ntp')
backup=('etc/ntpd.conf' 'etc/conf.d/openntpd')
install=$pkgname.install
source=(ftp://ftp.openbsd.org/pub/OpenBSD/OpenNTPD/$pkgname-$pkgver.tar.gz
diff --git a/community/openntpd/openntpd.install b/community/openntpd/openntpd.install
index 4f42aeb1f..5b440ee2f 100644
--- a/community/openntpd/openntpd.install
+++ b/community/openntpd/openntpd.install
@@ -1,24 +1,18 @@
-createuser() {
- if ! getent group ntp >/dev/null; then
- groupadd -g 87 ntp
- fi
-
- if ! getent passwd ntp >/dev/null; then
- useradd -g ntp -u 87 -d /var/empty -s /bin/false -c 'Network Time Protocol' ntp
- fi
-}
-
post_install() {
- createuser
+ getent group ntp &>/dev/null || groupadd -g 87 ntp >/dev/null
+ getent passwd ntp &>/dev/null || useradd -u 87 -g ntp -d /var/lib/ntp -c 'Network Time Protocol' -s /bin/false ntp >/dev/null
+
systemd-tmpfiles --create openntpd.conf
+ true
}
post_upgrade() {
- createuser
}
post_remove() {
- userdel ntp >/dev/null
+ getent passwd ntp &>/dev/null && userdel ntp >/dev/null
+ getent group ntp &>/dev/null && groupdel ntp >/dev/null
+ true
}
# vim: ts=2 sw=2 et ft=sh
diff --git a/community/os-prober/PKGBUILD b/community/os-prober/PKGBUILD
index 535f14ba1..ebaa922de 100644
--- a/community/os-prober/PKGBUILD
+++ b/community/os-prober/PKGBUILD
@@ -1,9 +1,9 @@
-# $Id: PKGBUILD 76031 2012-09-09 10:59:08Z tredaelli $
+# $Id: PKGBUILD 79823 2012-11-13 13:48:38Z tredaelli $
# Maintainer: Timothy Redaelli <timothy.redaelli@gmail.com>
# Contributor: darkcoder <mario_vazq@hotmail.com>
pkgname=os-prober
-pkgver=1.55
+pkgver=1.56
pkgrel=1
pkgdesc="Utility to detect other OSes on a set of drives"
url="http://joey.kitenet.net/code/os-prober/"
@@ -11,8 +11,8 @@ arch=('i686' 'x86_64' 'mips64el')
license=('GPL3')
depends=('sh')
source=(ftp://ftp.debian.org/debian/pool/main/o/${pkgname}/${pkgname}_${pkgver}.tar.gz)
-md5sums=('a516bc304a10345d2116d5b9b70bacc3')
-sha512sums=('dde7f648f0f54906b936ddf05b02166f44b0a9c64291fffa5390b7d96b434a9937577ff22f55dce0711e14775cd7d88c391feb8dd0a8b17d0a6235e91ae4b5d9')
+md5sums=('bd9c1a7fc49a2499d79977cf2c1ec68d')
+sha256sums=('88a79a04617f4ecbeb9c4d318cd9cf8fcb4ae7a724bd503942354011c7da5719')
build() {
cd "$srcdir/$pkgname-$pkgver"
diff --git a/community/pax-utils/PKGBUILD b/community/pax-utils/PKGBUILD
index a270f69c3..c8755a098 100644
--- a/community/pax-utils/PKGBUILD
+++ b/community/pax-utils/PKGBUILD
@@ -1,10 +1,10 @@
-# $Id: PKGBUILD 69966 2012-04-27 11:58:38Z tredaelli $
+# $Id: PKGBUILD 79825 2012-11-13 13:54:15Z tredaelli $
# Maintainer: Timothy Redaelli <timothy.redaelli@gmail.com>
# Contributor: sh0 <mee@sh0.org>
# Contributor: Maxwel <msg.maxwel@gmail.com>
pkgname=pax-utils
-pkgver=0.3.0
+pkgver=0.5
pkgrel=1
pkgdesc='ELF related utils for ELF 32/64 binaries that can check files for security relevant properties'
url='http://hardened.gentoo.org/pax-utils.xml'
@@ -13,7 +13,7 @@ license=('GPL')
depends=('bash' 'libcap')
checkdepends=('python')
source=("http://distfiles.gentoo.org/distfiles/${pkgname}-${pkgver}.tar.xz")
-md5sums=('f0c6577977472a327aa39adf1012f150')
+sha256sums=('1ba4f5e8680449c18841db2397aca320527fb06628b4ad9212e42f5e01de833b')
build() {
cd "${srcdir}/${pkgname}-${pkgver}"
diff --git a/community/pdns-recursor/PKGBUILD b/community/pdns-recursor/PKGBUILD
index 4953c40fe..f404607e9 100644
--- a/community/pdns-recursor/PKGBUILD
+++ b/community/pdns-recursor/PKGBUILD
@@ -1,15 +1,15 @@
-# $Id: PKGBUILD 79612 2012-11-08 22:16:52Z arodseth $
+# $Id: PKGBUILD 80083 2012-11-15 22:19:08Z arodseth $
# Maintainer: Alexander Rødseth <rodseth@gmail.com>
# Contributor: Jan de Groot <jgc@archlinux.org>
pkgname=pdns-recursor
pkgver=3.3
-pkgrel=3
+pkgrel=4
pkgdesc='PowerDNS recursor'
url='http://www.powerdns.com'
license=('GPL')
arch=('x86_64' 'i686')
-depends=('gcc-libs' 'lua')
+depends=('gcc-libs') # 'lua')
makedepends=('boost')
backup=('etc/powerdns/recursor.conf')
source=("http://downloads.powerdns.com/releases/$pkgname-$pkgver.tar.bz2"
@@ -22,7 +22,9 @@ sha256sums=('7b62d97f2bb02bb0ba366dabb5e504338b949a572b9062ec2198012fc3b525bc'
build() {
cd "$srcdir/$pkgname-$pkgver"
- LUA=1 LUA_CPPFLAGS_CONFIG= LUA_LIBS_CONFIG=-llua make
+ # Disabled Lua while waiting for upstream support for lua 5.2
+ #LUA=1 LUA_CPPFLAGS_CONFIG= LUA_LIBS_CONFIG=-llua make
+ LUA=0 make
}
package() {
diff --git a/community/performous/PKGBUILD b/community/performous/PKGBUILD
index 17f7be6eb..8eca794f0 100644
--- a/community/performous/PKGBUILD
+++ b/community/performous/PKGBUILD
@@ -1,49 +1,26 @@
-# $Id: PKGBUILD 78938 2012-10-27 23:45:17Z ebelanger $
+# $Id: PKGBUILD 80212 2012-11-17 17:48:39Z lcarlier $
# Maintainer : Laurent Carlier <lordheavym@gmail.com>
# Contributor: Christoph Zeiler <archNOSPAM_at_moonblade.dot.org>
pkgname=performous
-pkgver=0.6.1
-pkgrel=17
+pkgver=0.7.0
+pkgrel=1
pkgdesc='A free game like "Singstar", "Rockband" or "Stepmania"'
arch=('i686' 'x86_64' 'mips64el')
url="http://performous.org/"
license=('GPL')
-depends=('boost-libs' 'imagemagick' 'glew' 'libxml++' 'portaudio' 'portmidi' 'opencv' 'librsvg')
+depends=('boost-libs' 'imagemagick' 'glew' 'libxml++' 'portaudio' 'portmidi' 'librsvg' 'ffmpeg') # opencv
makedepends=('cmake' 'pkgconfig' 'help2man' 'boost>=1.50' 'mesa')
optdepends=('performous-freesongs: free songs for performous')
-source=(http://sourceforge.net/projects/$pkgname/files/$pkgname/$pkgver/Performous-$pkgver-Source.tar.bz2
- boost-filesystem-v3.patch
- ffmpeg-0.11.patch
- png15.patch
- fix-boost-1.50-xtime.patch)
-md5sums=('451a759de77984b5a699e91107fe52e2'
- '42a8c825d80b0de16bd5752d2a80e585'
- '07e52e926595d053155bbfb7168e308f'
- '89157d5e21b0efd09fcbeee299d23c7e'
- '6b43ab7f1c3e2cacd3540242634eabb3')
+source=(http://sourceforge.net/projects/$pkgname/files/$pkgname/$pkgver/performous-$pkgver.tar.bz2)
+md5sums=('60f3f72b51a630a4aa996484aedb9526')
build() {
- cd ${srcdir}/Performous-${pkgver}-Source
-
- # fix to built against boost 1.46 and later, upstream (git) now support v3
- patch -Np1 -i ../boost-filesystem-v3.patch
- # fix with ffmpeg-0.11
- patch -Np1 -i ../ffmpeg-0.11.patch
- # fix for libpng 1.5
- patch -Np1 -i ../png15.patch
- # fix glib2.0 building
- # #error "Only <glib.h> can be included directly."
- sed -i -e 's#/gconvert.h#.h#g' game/unicode.cc
- # boost 1.50 fix
- patch -Np1 -i ../fix-boost-1.50-xtime.patch
+ cd ${srcdir}/performous-${pkgver}
mkdir -p build
cd build
- # fix config loading with libxml++
- export LDFLAGS=${LDFLAGS/-Wl,--as-needed/}
-
cmake -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr ..
@@ -51,7 +28,7 @@ build() {
}
package() {
- cd ${srcdir}/Performous-${pkgver}-Source/build
+ cd ${srcdir}/performous-${pkgver}/build
make DESTDIR="$pkgdir" install
}
diff --git a/community/pidgin-libnotify/PKGBUILD b/community/pidgin-libnotify/PKGBUILD
index 602168012..c56be9118 100644
--- a/community/pidgin-libnotify/PKGBUILD
+++ b/community/pidgin-libnotify/PKGBUILD
@@ -4,7 +4,7 @@
pkgname=pidgin-libnotify
pkgver=0.14
-pkgrel=5
+pkgrel=6
arch=('i686' 'x86_64' 'mips64el')
pkgdesc="pidgin plugin that enables popups when someone logs in or messages you."
url="http://gaim-libnotify.sourceforge.net/"
@@ -14,16 +14,22 @@ makedepends=('libtool' 'intltool')
replaces=('gaim-libnotify')
options=(!libtool)
source=(http://downloads.sourceforge.net/sourceforge/gaim-libnotify/$pkgname-$pkgver.tar.gz language_fixes.patch
- pidgin-libnotify-0.14-libnotify-0.7.patch)
-md5sums=('bfb5368b69c02d429b2b17c00a6673c0'
- 'e9bdbb3c7faa61f062fc64277457b6c0'
- '05538625f14d9f2c12adae5fa6a1fa26')
+ pidgin-libnotify-0.14-libnotify-0.7.patch pidgin-libnotify-showbutton.patch)
build() {
cd "$srcdir/$pkgname-$pkgver"
- patch -p1 -i "$srcdir/language_fixes.patch"
- patch -p0 -i "$srcdir/pidgin-libnotify-0.14-libnotify-0.7.patch"
+ patch -Np1 -i "$srcdir/language_fixes.patch"
+ patch -Np0 -i "$srcdir/pidgin-libnotify-0.14-libnotify-0.7.patch"
+ patch -Np0 -i "$srcdir/pidgin-libnotify-showbutton.patch"
+
./configure --prefix=/usr --disable-deprecated --disable-static
make
+}
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
make DESTDIR="$pkgdir" install
}
+md5sums=('bfb5368b69c02d429b2b17c00a6673c0'
+ 'e9bdbb3c7faa61f062fc64277457b6c0'
+ '05538625f14d9f2c12adae5fa6a1fa26'
+ 'efe1e86aa1e0bc9f7d20efe7f34ad4a7')
diff --git a/community/pidgin-libnotify/pidgin-libnotify-showbutton.patch b/community/pidgin-libnotify/pidgin-libnotify-showbutton.patch
new file mode 100644
index 000000000..1f84e6025
--- /dev/null
+++ b/community/pidgin-libnotify/pidgin-libnotify-showbutton.patch
@@ -0,0 +1,10 @@
+--- src/pidgin-libnotify.c.orig 2007-10-01 20:52:38.000000000 +1000
++++ src/pidgin-libnotify.c 2007-10-01 20:53:20.000000000 +1000
+@@ -307,6 +307,7 @@
+ g_hash_table_insert (buddy_hash, contact, notification);
+
+ g_object_set_data (G_OBJECT(notification), "contact", contact);
++ g_object_set_data (G_OBJECT(notification), "buddy", buddy);
+
+ g_signal_connect (notification, "closed", G_CALLBACK(closed_cb), NULL);
+
diff --git a/community/pkgfile/PKGBUILD b/community/pkgfile/PKGBUILD
index ecaea96b8..486a2381d 100644
--- a/community/pkgfile/PKGBUILD
+++ b/community/pkgfile/PKGBUILD
@@ -1,8 +1,8 @@
-# $Id: PKGBUILD 76836 2012-10-01 01:25:40Z dreisner $
+# $Id: PKGBUILD 80220 2012-11-17 22:28:33Z dreisner $
# Maintainer: Dave Reisner <dreisner@archlinux.org>
pkgname=pkgfile
-pkgver=6
+pkgver=7
pkgrel=1
pkgdesc="a pacman .files metadata explorer"
arch=('i686' 'x86_64' 'mips64el')
@@ -13,17 +13,23 @@ conflicts=('pkgtools<24-2')
makedepends=('perl')
source=("https://github.com/downloads/falconindy/$pkgname/$pkgname-$pkgver.tar.xz"{,.sig})
install=pkgfile.install
-md5sums=('75139dd8441d60ee7682d900b610e189'
- '75cca8e3c0198fa98e32b54fd5e936e6')
+md5sums=('f1dc0052b1c21597ea2fa0f0ce05608c'
+ '28599a9b6e56860a9cba1c95ec797551')
build() {
cd "$pkgname-$pkgver"
./configure
make
+
+ # generate a license file
+ sed '/\*\//q' src/pkgfile.c >LICENSE
}
package() {
- make -C "$pkgname-$pkgver" DESTDIR="$pkgdir" install
+ cd "$pkgname-$pkgver"
+
+ make DESTDIR="$pkgdir" install
+ install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
}
# vim: ft=sh syn=sh
diff --git a/community/pmount/PKGBUILD b/community/pmount/PKGBUILD
new file mode 100644
index 000000000..8bac8e37c
--- /dev/null
+++ b/community/pmount/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 80203 2012-11-17 15:45:57Z eric $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=pmount
+pkgver=0.9.23
+pkgrel=4
+pkgdesc="mount removable devices as normal user"
+arch=(i686 x86_64)
+license=('GPL2')
+url="http://pmount.alioth.debian.org/"
+backup=('etc/pmount.allow')
+depends=('sysfsutils>=2.0.0-1' 'bash' 'util-linux')
+makedepends=('intltool')
+source=(https://alioth.debian.org/frs/download.php/3310/pmount-0.9.23.tar.bz2)
+md5sums=('db19f5bf3151b1b41705ec7bafa439d3')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --disable-hal \
+ --with-cryptsetup-prog=/usr/sbin/cryptsetup
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/community/polipo/PKGBUILD b/community/polipo/PKGBUILD
index 800463c0e..ef7f56005 100644
--- a/community/polipo/PKGBUILD
+++ b/community/polipo/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 75176 2012-08-14 19:38:14Z ttopper $
+# $Id: PKGBUILD 80058 2012-11-15 19:30:39Z ttoepper $
# Maintainer: Thorsten Töpper <atsutane-tu@freethoughts.de>
# Contributor: Jelle van der Waa <jelle vdwaa nl>
# Contributor: Thomas Holmquist <thomas@vorget.com>
@@ -7,7 +7,7 @@
pkgname=polipo
pkgver=1.0.4.1
-pkgrel=7
+pkgrel=8
pkgdesc="A small and fast caching web proxy."
arch=('i686' 'x86_64' 'mips64el')
url="http://www.pps.jussieu.fr/~jch/software/polipo/"
@@ -16,12 +16,11 @@ depends=('bash')
makedepends=('texinfo')
install=polipo.install
source=("http://freehaven.net/~chrisd/polipo/polipo-$pkgver.tar.gz"
- "polipo.cron" "polipo.rc.d" "polipo.conf.d" "polipo.service")
+ "polipo.rc.d" "polipo.conf.d" "polipo.service")
md5sums=('bfc5c85289519658280e093a270d6703'
- 'bac0e1a871964c931eb5f7a369b3243c'
'7406aad26807fb3a4e5f7b01ecb97a59'
'685aa0c6070dee11c701932d23afcc6a'
- 'e96b164de3488afc7ab28b2edbe90fd1')
+ 'a7cf48637a8ec8fe8d88754c399380c0')
build() {
cd "$srcdir/$pkgname-$pkgver"
@@ -34,9 +33,9 @@ package() {
make PREFIX="$pkgdir/usr" \
MANDIR="$pkgdir/usr/share/man" \
INFODIR="$pkgdir/usr/share/info" \
- LOCAL_ROOT="$pkgdir/usr/share/polipo/www" \
- DISK_CACHE_ROOT="$pkgdir/var/cache/polipo" \
- install
+ LOCAL_ROOT="$pkgdir/usr/share/polipo/www" \
+ DISK_CACHE_ROOT="$pkgdir/var/cache/polipo" \
+ install
# install config files
@@ -48,7 +47,6 @@ package() {
# install daemon scripts / cron
install -Dm 755 $srcdir/polipo.rc.d $pkgdir/etc/rc.d/polipo
- install -Dm 755 $srcdir/polipo.cron $pkgdir/usr/share/polipo/polipo.cron
install -Dm 644 $srcdir/polipo.service $pkgdir/usr/lib/systemd/system/polipo.service
install -Dm 644 $srcdir/polipo.conf.d $pkgdir/etc/conf.d/polipo.conf
}
diff --git a/community/privoxy/PKGBUILD b/community/privoxy/PKGBUILD
index c1e828318..ff82d567b 100644
--- a/community/privoxy/PKGBUILD
+++ b/community/privoxy/PKGBUILD
@@ -1,11 +1,11 @@
-# $Id: PKGBUILD 76058 2012-09-10 08:26:06Z lfleischer $
+# $Id: PKGBUILD 80122 2012-11-16 17:01:01Z lfleischer $
# Maintainer: Lukas Fleischer <archlinux at cryptocrack dot de>
# Contributor: Juergen Hoetzel <juergen@hoetzel.info>
# Contributor: basilburn (basilburn), Paul Bredbury (brebs)
pkgname=privoxy
pkgver=3.0.19
-pkgrel=6
+pkgrel=7
pkgdesc='A web proxy with advanced filtering capabilities.'
arch=('i686' 'x86_64' 'mips64el')
url='http://www.privoxy.org'
@@ -33,7 +33,7 @@ build() {
autoheader
autoconf
- ./configure --prefix=/usr --sysconfdir=/etc/privoxy
+ ./configure --prefix=/usr --sysconfdir=/etc/privoxy --enable-compression
make
}
diff --git a/community/python-matplotlib/PKGBUILD b/community/python-matplotlib/PKGBUILD
index 8f6b37ea6..7e90764c9 100644
--- a/community/python-matplotlib/PKGBUILD
+++ b/community/python-matplotlib/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 79647 2012-11-10 00:59:34Z stephane $
+# $Id: PKGBUILD 80031 2012-11-15 15:02:41Z stephane $
# Maintainer: Stéphane Gaudreault <stephane@archlinux.org>
# Contributor: Stefan Husmann <stefan-husmann@t-online.de>
# Contributor: Angel 'angvp' Velasquez <angvp[at]archlinux.com.ve>
@@ -7,12 +7,11 @@
pkgbase=python-matplotlib
pkgname=('python2-matplotlib' 'python-matplotlib')
pkgver=1.2.0
-pkgrel=2
+pkgrel=3
pkgdesc="A python plotting library, making publication quality plots"
arch=('i686' 'x86_64')
url="http://matplotlib.sourceforge.net/"
license=('custom')
-backup=(usr/lib/python2.7/site-packages/matplotlib/mpl-data/matplotlibrc)
makedepends=('python2-pytz' 'python2-numpy' 'python2-pyqt'
'python-pytz' 'python-numpy' 'pyqt')
source=("https://github.com/downloads/matplotlib/matplotlib/matplotlib-${pkgver}.tar.gz"
diff --git a/community/qingy/PKGBUILD b/community/qingy/PKGBUILD
index 60f79c942..38f687b9f 100644
--- a/community/qingy/PKGBUILD
+++ b/community/qingy/PKGBUILD
@@ -1,38 +1,39 @@
-# $Id: PKGBUILD 75441 2012-08-24 00:19:10Z ebelanger $
+# $Id: PKGBUILD 80226 2012-11-18 01:50:13Z eric $
# Maintainer: Eric Bélanger <eric@archlinux.org>
# Contributor: Jaroslav Lichtblau <dragonlord@aur.archlinux.org>
pkgname=qingy
pkgver=1.0.0
-pkgrel=6
+pkgrel=7
pkgdesc="A DirectFB getty replacement"
arch=('i686' 'x86_64' 'mips64el')
url="http://qingy.sourceforge.net/"
license=('GPL')
depends=('directfb' 'openssl' 'libxss')
makedepends=('emacs')
-backup=('etc/qingy/settings' 'etc/qingy/welcomes')
+backup=('etc/pam.d/qingy' 'etc/logrotate.d/qingy' 'etc/qingy/settings' 'etc/qingy/welcomes')
options=('!libtool')
install=qingy.install
source=(http://downloads.sourceforge.net/sourceforge/qingy/${pkgname}-${pkgver}.tar.bz2 \
qingy.logrotate qingy@.service)
sha1sums=('22ee505e935bf7ddcbd33e23f754a5a1ca082c81'
'21676cf0b71334c666f7b3e4f3d8b4f319266c81'
- '55cfd0b24c1dedd8aaea42fd03f5ec39a1be5e70')
+ '67f8fc1da5264cdaf79bd41a476451f4eef8f905')
build() {
cd "${srcdir}/${pkgname}-${pkgver}"
sed -i 's|/lib/security/||' media/pam/default/qingy
XFREE=/usr/bin/Xorg XINIT=/usr/bin/xinit \
- ./configure --prefix=/usr --sbindir=/sbin --sysconfdir=/etc \
- --disable-optimizations --enable-pam \
- --disable-static-build --enable-gpm-lock --enable-emacs
+ ./configure --prefix=/usr --sbindir=/usr/bin --sysconfdir=/etc \
+ --enable-emacs --disable-optimizations --disable-static
make
}
package() {
cd "${srcdir}/${pkgname}-${pkgver}"
make DESTDIR="${pkgdir}" install
+ install -d "${pkgdir}/sbin"
+ ln -s ../usr/bin/qingy "${pkgdir}/sbin/qingy"
install -D -m644 "${srcdir}/qingy.logrotate" "${pkgdir}/etc/logrotate.d/qingy"
install -D -m644 "${srcdir}/qingy@.service" "${pkgdir}/usr/lib/systemd/system/qingy@.service"
}
diff --git a/community/qingy/qingy@.service b/community/qingy/qingy@.service
index ce2156def..ef9e7bfc2 100644
--- a/community/qingy/qingy@.service
+++ b/community/qingy/qingy@.service
@@ -5,7 +5,8 @@ After=systemd-user-sessions.service plymouth-quit-wait.service
[Service]
Environment=TERM=linux
-ExecStart=/sbin/qingy %I -n
+ExecStart=/usr/bin/qingy %I -n
+Type=idle
Restart=always
RestartSec=0
UtmpIdentifier=%I
diff --git a/community/qmmp/PKGBUILD b/community/qmmp/PKGBUILD
index 8a1ab1669..01d4b872f 100644
--- a/community/qmmp/PKGBUILD
+++ b/community/qmmp/PKGBUILD
@@ -1,8 +1,8 @@
-#$Id: PKGBUILD 75532 2012-08-26 20:15:34Z jlichtblau $
+#$Id: PKGBUILD 79921 2012-11-14 19:18:29Z jlichtblau $
# Maintainer: Jaroslav Lichtblau <dragonlord@aur.archlinux.org>
pkgname=qmmp
-pkgver=0.6.3
+pkgver=0.6.4
pkgrel=1
pkgdesc="Qt4 based audio-player"
arch=('i686' 'x86_64' 'mips64el')
@@ -22,7 +22,7 @@ optdepends=('flac: native FLAC support'
'ffmpeg' 'libsamplerate' 'wavpack')
install=$pkgname.install
source=(http://qmmp.ylsoftware.com/files/$pkgname-$pkgver.tar.bz2)
-sha256sums=('98f5b8121d475ead81c788ec9d5346c8da537e342c0d99eaff08586af4c92ca8')
+sha256sums=('3db8a38da74ed4a8551c9215f4984f83831d5a4602e1daaf42fcb48313a73372')
build() {
cd ${srcdir}/$pkgname-$pkgver
diff --git a/community/qmmp/qmmp.changelog b/community/qmmp/qmmp.changelog
index 5d80b8321..4d1e9351a 100644
--- a/community/qmmp/qmmp.changelog
+++ b/community/qmmp/qmmp.changelog
@@ -1,3 +1,6 @@
+2012-11-14 Jaroslav Lichtblau <dragonlord@aur.archlinux.org>
+ * qmmp 0.6.4-1
+
2012-08-26 Jaroslav Lichtblau <dragonlord@aur.archlinux.org>
* qmmp 0.6.3-1
diff --git a/community/redshift/PKGBUILD b/community/redshift/PKGBUILD
index 40f27a148..b06e34226 100644
--- a/community/redshift/PKGBUILD
+++ b/community/redshift/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 75297 2012-08-18 10:08:06Z lfleischer $
+# $Id: PKGBUILD 80160 2012-11-17 01:18:35Z lfleischer $
# Maintainer: Lukas Fleischer <archlinux at cryptocrack dot de>
# Contributor: Geoffrey Teale <tealeg@stop-squark>
# Contributor: Mark, Huo Mian <markhuomian[at]gmail[dot]com>
@@ -6,12 +6,12 @@
pkgname=redshift
pkgver=1.7
-pkgrel=4
+pkgrel=5
pkgdesc='Adjusts the color temperature of your screen according to your surroundings.'
arch=('i686' 'x86_64' 'mips64el')
url='http://jonls.dk/redshift/'
license=('GPL3')
-depends=('gconf' 'libxxf86vm')
+depends=('gconf' 'geoclue' 'libxxf86vm')
optdepends=('pygtk: for gtk-redshift'
'pyxdg: for gtk-redshift'
'librsvg: for gtk-redshift')
diff --git a/community/ripperx/PKGBUILD b/community/ripperx/PKGBUILD
index 49a7d92dd..495bcf2f5 100644
--- a/community/ripperx/PKGBUILD
+++ b/community/ripperx/PKGBUILD
@@ -1,10 +1,10 @@
-# $Id: PKGBUILD 65503 2012-02-21 06:43:37Z spupykin $
+# $Id: PKGBUILD 80016 2012-11-15 13:29:30Z spupykin $
# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com>
# Maintainer: dorphell <dorphell@archlinux.org>
pkgname=ripperx
pkgver=2.7.3
-pkgrel=2
+pkgrel=3
pkgdesc="GTK program to rip and encode mp3 files"
arch=(i686 x86_64 'mips64el')
url="http://ripperx.sourceforge.net/"
@@ -16,6 +16,13 @@ md5sums=('f07c55edf08a1cd57537f1b9379b4e4d')
build() {
cd $srcdir/ripperX-$pkgver
LDFLAGS=-lm ./configure --prefix=/usr
+ sed -i 's|Icon=.*|Icon=ripperX.xpm|g' ripperX.desktop
make
+}
+
+package() {
+ cd $srcdir/ripperX-$pkgver
make DESTDIR=$pkgdir install
+ install -Dm0644 ripperX.desktop $pkgdir/usr/share/applications/ripperX.desktop
+ install -Dm0644 ripperX.xpm $pkgdir/usr/share/icons/ripperX.xpm
}
diff --git a/community/signon-keyring-extension/PKGBUILD b/community/signon-keyring-extension/PKGBUILD
index ea0d03b3e..7a7c1c182 100644
--- a/community/signon-keyring-extension/PKGBUILD
+++ b/community/signon-keyring-extension/PKGBUILD
@@ -6,7 +6,7 @@ _pkgname=keyring
pkgver=0.4
pkgrel=1
pkgdesc="GNOME keyring extension for signond"
-arch=('i686' 'x86_64')
+arch=('i686' 'x86_64' 'mips64el')
url="https://launchpad.net/online-accounts-keyring-extension"
license=('LGPL')
depends=('signon' 'libgnome-keyring')
diff --git a/community/signon-plugin-oauth2/PKGBUILD b/community/signon-plugin-oauth2/PKGBUILD
index af96bee39..280b3c8cd 100644
--- a/community/signon-plugin-oauth2/PKGBUILD
+++ b/community/signon-plugin-oauth2/PKGBUILD
@@ -6,7 +6,7 @@ _pkgname=signon-oauth2
pkgver=0.11
pkgrel=1
pkgdesc="OAuth 2 plugin for signon"
-arch=('i686' 'x86_64')
+arch=('i686' 'x86_64' 'mips64el')
url="http://code.google.com/p/accounts-sso/"
license=('LGPL')
depends=('signon-ui' 'qjson')
diff --git a/community/signon-ui/PKGBUILD b/community/signon-ui/PKGBUILD
index 7aad2158f..129611d60 100644
--- a/community/signon-ui/PKGBUILD
+++ b/community/signon-ui/PKGBUILD
@@ -5,7 +5,7 @@ pkgname=signon-ui
pkgver=0.11
pkgrel=1
pkgdesc="UI component that responsible for handling the user interactions which can happen during the login process of an online account"
-arch=('i686' 'x86_64')
+arch=('i686' 'x86_64' 'mips64el')
url="https://launchpad.net/online-accounts-signon-ui"
license=('GPL')
depends=('libaccounts-qt' 'qtwebkit' 'libproxy')
diff --git a/community/signon/PKGBUILD b/community/signon/PKGBUILD
index 108db80ee..196d3c77c 100644
--- a/community/signon/PKGBUILD
+++ b/community/signon/PKGBUILD
@@ -6,7 +6,7 @@ pkgname=('signon' 'signon-doc')
pkgver=8.43
pkgrel=2
pkgdesc="Framework to provide credential storage and authentication service"
-arch=('i686' 'x86_64')
+arch=('i686' 'x86_64' 'mips64el')
url="http://code.google.com/p/accounts-sso/"
license=('LGPL')
depends=('qt' 'libproxy')
diff --git a/community/sshguard/PKGBUILD b/community/sshguard/PKGBUILD
index 739e3836d..ef71cd6d2 100644
--- a/community/sshguard/PKGBUILD
+++ b/community/sshguard/PKGBUILD
@@ -1,13 +1,12 @@
-# $Id: PKGBUILD 78777 2012-10-24 13:36:34Z mtorromeo $
+# $Id: PKGBUILD 79972 2012-11-15 09:06:26Z mtorromeo $
# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com>
# Maintainer: Massimiliano Torromeo <massimiliano.torromeo@gmail.com>
-# Contributor: Sergej Pupykin <pupykin.s+arch@gmail.com>
pkgname=sshguard
pkgver=1.5
-pkgrel=7
-pkgdesc="brute force detector for SSH, Exim, VSFTPD and more. Blocks by ip with iptables"
-arch=('i686' 'x86_64' 'mips64el')
+pkgrel=8
+pkgdesc="Brute force detector for SSH, Exim, VSFTPD and more. Blocks by ip with iptables"
+arch=('i686' 'x86_64')
#url="http://sourceforge.net/projects/sshguard/"
url="http://www.sshguard.net/"
license=('GPL')
@@ -23,7 +22,7 @@ sha256sums=('b537f8765455fdf8424f87d4bd695e5b675b88e5d164865452137947093e7e19'
'a810da878e40be8616a93c9984e7dbd3700367d665b78b8aa2498228bb33cb6e'
'66f28e2cc81e5686f8fd5c0d5a5015d7feecbe018a259f4032cfbacf6fe8d1c3'
'12e576713f7ed9c87cc36417fd8bb8dd613b9d27f06cae9dd0a1aae9ca65acd7'
- 'b1ebc5dd10374a790c7d06419694143bffa019a7c65c8a7b2541487aecec574d')
+ '9491c4cd23d789dd04af551e16dc123f1517ca02ad3539f25715bbeec70ee21e')
build() {
cd "$srcdir/$pkgname-$pkgver"
diff --git a/community/sshguard/sshguard-journalctl b/community/sshguard/sshguard-journalctl
index c919b4434..13afd6f33 100644
--- a/community/sshguard/sshguard-journalctl
+++ b/community/sshguard/sshguard-journalctl
@@ -1,2 +1,2 @@
#!/bin/sh
-/usr/bin/journalctl -afbp info -n0 SYSLOG_FACILITY=4 SYSLOG_FACILITY=10 | /usr/sbin/sshguard -l- "$@"
+/usr/bin/journalctl -afbp info -n1 SYSLOG_FACILITY=4 SYSLOG_FACILITY=10 | /usr/sbin/sshguard -l- "$@"
diff --git a/community/tinyproxy/PKGBUILD b/community/tinyproxy/PKGBUILD
index a6d782dca..7206f5728 100644
--- a/community/tinyproxy/PKGBUILD
+++ b/community/tinyproxy/PKGBUILD
@@ -1,10 +1,10 @@
-# $Id: PKGBUILD 74395 2012-07-26 13:54:21Z lfleischer $
+# $Id: PKGBUILD 80139 2012-11-16 17:14:04Z lfleischer $
# Maintainer: Lukas Fleischer <archlinux at cryptocrack dot de>
# Contributor: Andrea Zucchelli <zukka77@gmail.com>
pkgname=tinyproxy
pkgver=1.8.3
-pkgrel=5
+pkgrel=6
pkgdesc='A light-weight HTTP proxy daemon for POSIX operating systems.'
arch=('i686' 'x86_64' 'mips64el')
url='https://banu.com/tinyproxy/'
@@ -19,7 +19,7 @@ source=("https://banu.com/pub/${pkgname}/1.8/${pkgname}-${pkgver}.tar.bz2"
md5sums=('292ac51da8ad6ae883d4ebf56908400d'
'90eb2b3371e56d5a784fd826d4a6e5f8'
'3c2764578f26581346fe312da0519a3e'
- '8e97b05cc8c87f7efefbf957e77c7f18')
+ '299ca484c08d9873c74e1eb96f6a5cc0')
build() {
cd "${srcdir}/${pkgname}-${pkgver}"
diff --git a/community/tinyproxy/tinyproxy.service b/community/tinyproxy/tinyproxy.service
index aea1d32fe..8776a0ee1 100644
--- a/community/tinyproxy/tinyproxy.service
+++ b/community/tinyproxy/tinyproxy.service
@@ -5,6 +5,7 @@ After=network.target
[Service]
Type=forking
ExecStart=/usr/sbin/tinyproxy -c /etc/tinyproxy/tinyproxy.conf
+PIDFile=/run/tinyproxy/tinyproxy.pid
[Install]
WantedBy=multi-user.target
diff --git a/community/trickle/PKGBUILD b/community/trickle/PKGBUILD
index 5bafbb940..536780e7d 100644
--- a/community/trickle/PKGBUILD
+++ b/community/trickle/PKGBUILD
@@ -1,10 +1,10 @@
-# $Id: PKGBUILD 68040 2012-03-17 11:08:43Z giovanni $
+# $Id: PKGBUILD 80164 2012-11-17 02:17:02Z kkeen $
# Maintainer: Jaroslav Lichtblau <dragonlord@aur.archlinux.org>
# Contributor Romain Bouchaud-Leduc <r0m1.bl@camaris.org>
pkgname=trickle
pkgver=1.07
-pkgrel=6
+pkgrel=7
pkgdesc="Lightweight userspace bandwidth shaper"
arch=('i686' 'x86_64' 'mips64el')
url="http://monkey.org/~marius/trickle"
@@ -15,6 +15,9 @@ md5sums=('860ebc4abbbd82957c20a28bd9390d7d')
build() {
cd "${srcdir}/${pkgname}-${pkgver}"
+
+ # FS#23194
+ sed -i 's|^_select(int|select(int|' trickle-overload.c
./configure --prefix=/usr \
--mandir=/usr/share/man
diff --git a/community/usb_modeswitch/PKGBUILD b/community/usb_modeswitch/PKGBUILD
index dfa2f6aee..456616062 100644
--- a/community/usb_modeswitch/PKGBUILD
+++ b/community/usb_modeswitch/PKGBUILD
@@ -1,10 +1,10 @@
-# $Id: PKGBUILD 75530 2012-08-26 20:12:19Z spupykin $
+# $Id: PKGBUILD 80001 2012-11-15 11:55:13Z spupykin $
# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com>
pkgname=usb_modeswitch
-pkgver=1.2.4
+pkgver=1.2.5
pkgrel=1
-_pkgdata=20120815
+_pkgdata=20121109
pkgdesc="Activating switchable USB devices on Linux."
arch=('i686' 'x86_64' 'mips64el')
url="http://www.draisberghof.de/usb_modeswitch/"
@@ -15,9 +15,9 @@ backup=("etc/$pkgname.conf")
source=("http://www.draisberghof.de/usb_modeswitch/usb-modeswitch-${pkgver}.tar.bz2"
"http://www.draisberghof.de/usb_modeswitch/usb-modeswitch-data-${_pkgdata}.tar.bz2"
"usb-modeswitch-${pkgver}-device_reference.txt::http://www.draisberghof.de/usb_modeswitch/device_reference.txt")
-md5sums=('dbd4ce7966d7b4a5a0604a8280f7164d'
- '12d7de3210e45ad6f48791d12bbdbf61'
- '3588e76bf08f6c9ed51a1de4d086795e')
+md5sums=('c393603908eceab95444c5bde790f6f0'
+ 'a7d23a03157871013a0d708ab2b1b6df'
+ '9918bbdc0f68873410688604c80d25c4')
build() {
cd $srcdir/usb-modeswitch-$pkgver/
diff --git a/community/wings3d/PKGBUILD b/community/wings3d/PKGBUILD
index 3fa7ea7a3..6f3bdb0d2 100644
--- a/community/wings3d/PKGBUILD
+++ b/community/wings3d/PKGBUILD
@@ -1,28 +1,27 @@
-# $Id: PKGBUILD 61589 2012-01-03 23:37:49Z arodseth $
+# $Id: PKGBUILD 80086 2012-11-15 22:26:35Z arodseth $
# Maintainer: Alexander Rødseth <rodseth@gmail.com>
# Contributor: kappa <kappacurve@gmail.com>
pkgname=wings3d
_pkgname=wings
pkgver=1.4.1
-pkgrel=8
-pkgdesc="3D modeling program"
+pkgrel=9
+pkgdesc='3D modeling program'
arch=('x86_64' 'i686')
-url="http://www.wings3d.com/"
+url='http://www.wings3d.com/'
license=('GPL')
-depends=('esdl' 'bash' 'desktop-file-utils' 'cl')
+depends=('erlang-sdl' 'erlang-cl' 'bash' 'desktop-file-utils')
makedepends=('setconf' 'gendesk')
optdepends=('povray: rendering support via POV-Ray')
-replaces=('wings' 'wings-devel')
install=$pkgname.install
-source=("$pkgname-$pkgver.tar.gz::https://nodeload.github.com/dgud/wings/tarball/dgud/r15b-driver-compat"
+source=("$pkgname-$pkgver.tar.gz::https://nodeload.github.com/dgud/wings/tar.gz/dgud/r15b-driver-compat"
"$pkgname.sh"
"$pkgname.png::http://img299.imageshack.us/img299/2538/wingsiconblackshiningew5.png")
-sha256sums=('cbe917601b31b7d469c2f9ed0de1b016be86f14f9e757860990d9489a84585dd'
+sha256sums=('b89aca41937d4d07424ccc0447eb5a6c3755350428201d7d7644e467dcd20fdf'
'46513cd05f8b6e778120af4a87b239c5250799c17b591592893d98cbf082359e'
'6658977cc3bc8db2c9358edf3a2d6cb6bb8084c9a1d96ca573a83dd4e8781f1a')
_genericname=('3D Modeler')
-_dirname='dgud-wings-4f3a3ff'
+_dirname="$_pkgname-dgud-r15b-driver-compat"
build() {
cd "$srcdir"
diff --git a/core/binutils/PKGBUILD b/core/binutils/PKGBUILD
index 7f3292210..944d72d0b 100644
--- a/core/binutils/PKGBUILD
+++ b/core/binutils/PKGBUILD
@@ -1,10 +1,10 @@
-# $Id: PKGBUILD 169770 2012-10-28 11:11:44Z allan $
+# $Id: PKGBUILD 171025 2012-11-15 12:26:41Z allan $
# Maintainer: Allan McRae <allan@archlinux.org>
# toolchain build order: linux-api-headers->glibc->binutils->gcc->binutils->glibc
pkgname=binutils
-pkgver=2.23
+pkgver=2.23.1
pkgrel=1
pkgdesc="A set of programs to assemble and manipulate binary and object files"
arch=('i686' 'x86_64' 'mips64el')
@@ -15,9 +15,9 @@ depends=('glibc>=2.16' 'zlib')
checkdepends=('dejagnu' 'bc')
options=('!libtool' '!distcc' '!ccache')
install=binutils.install
-source=(ftp://ftp.gnu.org/gnu/binutils/binutils-${pkgver}.tar.gz{,.sig})
-md5sums=('ed58f50d8920c3f1d9cb110d5c972c27'
- '5293d43d444852f71f7c96c6295ba66d')
+source=(ftp://ftp.gnu.org/gnu/binutils/binutils-${pkgver}.tar.bz2{,.sig})
+md5sums=('33adb18c3048d057ac58d07a3f1adb38'
+ '1869b37216e7d7eff7e335a69e0882fd')
build() {
cd ${srcdir}
@@ -76,6 +76,9 @@ package() {
# Remove Windows/Novell specific man pages
rm ${pkgdir}/usr/share/man/man1/{dlltool,nlmconv,windres,windmc}*
+ # why are these distributed with binutils?
+ rm ${pkgdir}/usr/share/info/{configure,standards}.info
+
# Remove these symlinks, they are not ABI stable.
# Programs should compile static to the .a file.
rm ${pkgdir}/usr/lib/lib{bfd,opcodes}.so
diff --git a/core/binutils/binutils.install b/core/binutils/binutils.install
index 8bf9f3a47..9de0533ee 100644
--- a/core/binutils/binutils.install
+++ b/core/binutils/binutils.install
@@ -1,5 +1,5 @@
infodir=usr/share/info
-filelist=(as.info bfd.info binutils.info configure.info gprof.info ld.info standards.info)
+filelist=(as.info bfd.info binutils.info gprof.info ld.info)
post_upgrade() {
[ -x usr/bin/install-info ] || return 0
diff --git a/core/glib2/PKGBUILD b/core/glib2/PKGBUILD
index 3a7b0cec6..ec1d6b68b 100644
--- a/core/glib2/PKGBUILD
+++ b/core/glib2/PKGBUILD
@@ -1,8 +1,8 @@
-# $Id: PKGBUILD 169922 2012-10-30 22:38:41Z thomas $
+# $Id: PKGBUILD 170938 2012-11-13 17:02:45Z heftig $
# Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=glib2
-pkgver=2.34.1
+pkgver=2.34.2
pkgrel=1
pkgdesc="Common C routines used by GTK+ and other libs"
url="http://www.gtk.org/"
@@ -14,7 +14,7 @@ optdepends=('python2: for gdbus-codegen')
options=('!libtool' '!docs' '!emptydirs')
source=(http://ftp.gnome.org/pub/GNOME/sources/glib/${pkgver%.*}/glib-$pkgver.tar.xz
revert-warn-glib-compile-schemas.patch)
-sha256sums=('6e84dc9d84b104725b34d255421ed7ac3629e49f437d37addde5ce3891c2e2f1'
+sha256sums=('2d99a8309cdd0c584bd5386a49265fb19ac64575fe108fd901d6f26c8d73c708'
'049240975cd2f1c88fbe7deb28af14d4ec7d2640495f7ca8980d873bb710cc97')
build() {
diff --git a/core/iputils/PKGBUILD b/core/iputils/PKGBUILD
index 663a739b6..f6a80cf44 100644
--- a/core/iputils/PKGBUILD
+++ b/core/iputils/PKGBUILD
@@ -1,15 +1,15 @@
-# $Id: PKGBUILD 170801 2012-11-11 22:35:51Z stephane $
+# $Id: PKGBUILD 171270 2012-11-16 23:40:29Z stephane $
# Maintainer: Stéphane Gaudreault <stephane@archlinux.org>
# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
# Contributor: Aaron Griffin <aaron@archlinux.org>
pkgname=iputils
-pkgver=20121106
+pkgver=20121114
pkgrel=1
-pkgdesc="IP Configuration Utilities (and Ping)"
+pkgdesc="Network monitoring tools, including ping"
arch=('i686' 'x86_64' 'mips64el')
-license=('GPL')
-url="http://www.linuxfoundation.org/en/Net:Iputils"
+license=('GPL' 'BSD')
+url="http://www.skbuff.net/iputils/"
groups=('base')
depends=('openssl' 'sysfsutils' 'libcap')
optdepends=('xinetd: for tftpd')
@@ -19,13 +19,17 @@ replaces=('netkit-base')
backup=(etc/xinetd.d/tftp)
install=${pkgname}.install
source=(http://www.skbuff.net/${pkgname}/${pkgname}-s${pkgver}.tar.bz2
- tftp.xinetd)
-sha1sums=('9570832f3945bb5f0e89f5837facc8fdca3b7769'
- 'fc2ae26f5609725e3f4aeaf4ab82dfa6d2e378fd')
+ tftp.xinetd
+ iputils-20121114-free-unintialized.patch)
+sha1sums=('6061bf2ddbf0339b0084eddc33716465b742b82d'
+ 'fc2ae26f5609725e3f4aeaf4ab82dfa6d2e378fd'
+ '7f1262f4bed7fa122ea86f09cb81d817adbd8164')
build() {
cd "${srcdir}/${pkgname}-s${pkgver}"
+ patch -Np1 -i ../iputils-20121114-free-unintialized.patch
+
# Use our CFLAGS
sed -i -e "/^CCOPT=/s|-O2|${CFLAGS}|" Makefile
diff --git a/core/iputils/iputils-20121114-free-unintialized.patch b/core/iputils/iputils-20121114-free-unintialized.patch
new file mode 100644
index 000000000..524b640ea
--- /dev/null
+++ b/core/iputils/iputils-20121114-free-unintialized.patch
@@ -0,0 +1,36 @@
+From: Jan Synacek <jsynacek@redhat.com>
+Date: Wed, 14 Nov 2012 12:57:16 +0000 (+0100)
+Subject: ping: Don't free an unintialized value.
+X-Git-Url: http://www.linux-ipv6.org/gitweb/gitweb.cgi?p=gitroot%2Fiputils.git;a=commitdiff_plain;h=44c6c9a8d3f3fc65fc52e5957bfd4cc4634f0006
+
+ping: Don't free an unintialized value.
+
+Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
+---
+
+diff --git a/ping.c b/ping.c
+index fe9ff8a..9de3d08 100644
+--- a/ping.c
++++ b/ping.c
+@@ -122,7 +122,7 @@ main(int argc, char **argv)
+ u_char *packet;
+ char *target;
+ #ifdef USE_IDN
+- char *hnamebuf;
++ char *hnamebuf = NULL;
+ #else
+ char hnamebuf[MAX_HOSTNAMELEN];
+ #endif
+@@ -263,8 +263,10 @@ main(int argc, char **argv)
+ #ifdef USE_IDN
+ int rc;
+
+- free(hnamebuf);
+- hnamebuf = NULL;
++ if (hnamebuf) {
++ free(hnamebuf);
++ hnamebuf = NULL;
++ }
+
+ rc = idna_to_ascii_lz(target, &idn, 0);
+ if (rc != IDNA_SUCCESS) {
diff --git a/core/kmod/0001-depmod-fix-hash-lookup-by-relpath-instead-of-uncrelp.patch b/core/kmod/0001-depmod-fix-hash-lookup-by-relpath-instead-of-uncrelp.patch
new file mode 100644
index 000000000..ae5757016
--- /dev/null
+++ b/core/kmod/0001-depmod-fix-hash-lookup-by-relpath-instead-of-uncrelp.patch
@@ -0,0 +1,43 @@
+From 06294621a944e4611e15ce8201df80870e052e7d Mon Sep 17 00:00:00 2001
+From: Lucas De Marchi <lucas.demarchi@profusion.mobi>
+Date: Fri, 16 Nov 2012 11:35:30 -0200
+Subject: [PATCH 1/2] depmod: fix hash lookup by relpath instead of uncrelpath
+
+We index modules in depmod by it's uncompressed relative path, not
+relative path. We didn't notice this bug before since this function is
+only triggered if we release a module to be replaced by one of higher
+priority.
+
+Also fix a leftover log message referring to relpath instead of
+uncrelpath.
+---
+ tools/depmod.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/tools/depmod.c b/tools/depmod.c
+index cc9346f..aafe66b 100644
+--- a/tools/depmod.c
++++ b/tools/depmod.c
+@@ -1114,7 +1114,7 @@ static int depmod_module_add(struct depmod *depmod, struct kmod_module *kmod)
+ mod->uncrelpath, mod);
+ if (err < 0) {
+ ERR("hash_add_unique %s: %s\n",
+- mod->relpath, strerror(-err));
++ mod->uncrelpath, strerror(-err));
+ hash_del(depmod->modules_by_name, mod->modname);
+ goto fail;
+ }
+@@ -1134,8 +1134,8 @@ static int depmod_module_del(struct depmod *depmod, struct mod *mod)
+ {
+ DBG("del %p kmod=%p, path=%s\n", mod, mod->kmod, mod->path);
+
+- if (mod->relpath != NULL)
+- hash_del(depmod->modules_by_uncrelpath, mod->relpath);
++ if (mod->uncrelpath != NULL)
++ hash_del(depmod->modules_by_uncrelpath, mod->uncrelpath);
+
+ hash_del(depmod->modules_by_name, mod->modname);
+
+--
+1.8.0
+
diff --git a/core/kmod/0002-depmod-fix-asserting-mod-kmod-NULL.patch b/core/kmod/0002-depmod-fix-asserting-mod-kmod-NULL.patch
new file mode 100644
index 000000000..b704083dc
--- /dev/null
+++ b/core/kmod/0002-depmod-fix-asserting-mod-kmod-NULL.patch
@@ -0,0 +1,31 @@
+From 02c64df3c2b33880b18d3f4aba9fa8e48e5ca904 Mon Sep 17 00:00:00 2001
+From: Lucas De Marchi <lucas.demarchi@profusion.mobi>
+Date: Fri, 16 Nov 2012 12:05:42 -0200
+Subject: [PATCH 2/2] depmod: fix asserting mod->kmod == NULL
+
+If we are replacing a lower priority module (due to its location), we
+already created a kmod_module, but didn't open the file for reading its
+symbols. This means mod->kmod won't be NULL, and this is just ok. Since
+all the functions freeing stuff below the previous assert already takes
+NULL into consideration, it's safe to just unref mod->kmod and let the
+right thing happens.
+---
+ tools/depmod.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/tools/depmod.c b/tools/depmod.c
+index aafe66b..7bbdcd3 100644
+--- a/tools/depmod.c
++++ b/tools/depmod.c
+@@ -977,7 +977,7 @@ static void mod_free(struct mod *mod)
+ {
+ DBG("free %p kmod=%p, path=%s\n", mod, mod->kmod, mod->path);
+ array_free_array(&mod->deps);
+- assert(mod->kmod == NULL);
++ kmod_module_unref(mod->kmod);
+ kmod_module_info_free_list(mod->info_list);
+ kmod_module_dependency_symbols_free_list(mod->dep_sym_list);
+ free(mod->uncrelpath);
+--
+1.8.0
+
diff --git a/core/kmod/PKGBUILD b/core/kmod/PKGBUILD
index 891ac0899..2b05fcab2 100644
--- a/core/kmod/PKGBUILD
+++ b/core/kmod/PKGBUILD
@@ -1,8 +1,8 @@
-# $Id: PKGBUILD 169581 2012-10-23 22:08:40Z dreisner $
+# $Id: PKGBUILD 171489 2012-11-18 03:33:34Z dreisner $
# Maintainer: Dave Reisner <dreisner@archlinux.org>
pkgname=kmod
-pkgver=10
+pkgver=11
pkgrel=2
pkgdesc="Linux kernel module handling"
arch=('i686' 'x86_64' 'mips64el')
@@ -15,22 +15,22 @@ provides=('module-init-tools=3.16')
conflicts=('module-init-tools')
replaces=('module-init-tools')
source=("ftp://ftp.kernel.org/pub/linux/utils/kernel/$pkgname/$pkgname-$pkgver.tar.xz"
- '0001-depmod-fix-parsing-of-modules.order-with-compressed-.patch'
- '0001-libkmod-Add-support-for-.-in-module-parameter-on-kcm.patch'
+ "0001-depmod-fix-hash-lookup-by-relpath-instead-of-uncrelp.patch"
+ "0002-depmod-fix-asserting-mod-kmod-NULL.patch"
"depmod-search.conf")
-md5sums=('e2a883c4df15a50f78a7a61d5b64089f'
- '47005a6e70496d429d40e3fc4fd89755'
- 'ecf5bfd4fd9ed14cf0dc1ce4025d256b'
+md5sums=('607e33b0144625c2e5221e5a7df49c7a'
+ '239549791aeca08a56428c27c558af7f'
+ 'f39fc93d4be1e109ea73c6509ab171eb'
'dd62cbf62bd8f212f51ef8c43bec9a77')
build() {
cd "$pkgname-$pkgver"
- # upstream commit 88c247f7f18ac25181ddcaff97fbbecbd3a29f57
- patch -Np1 < "$srcdir/0001-depmod-fix-parsing-of-modules.order-with-compressed-.patch"
+ # upstream commit 06294621a944e4611e15ce8201df80870e052e7d
+ patch -Np1 <"$srcdir/0001-depmod-fix-hash-lookup-by-relpath-instead-of-uncrelp.patch"
- # upstream commit 66f3228d17d66d7e2dd484427259290fbc82b2f0
- patch -Np1 < "$srcdir/0001-libkmod-Add-support-for-.-in-module-parameter-on-kcm.patch"
+ # upstream commit 02c64df3c2b33880b18d3f4aba9fa8e48e5ca904
+ patch -Np1 <"$srcdir/0002-depmod-fix-asserting-mod-kmod-NULL.patch"
./configure \
--sysconfdir=/etc \
@@ -41,8 +41,8 @@ build() {
}
check() {
- # testsuite is broken on 32-bit because of an unhandled EEXIST on mkdir_p
- make -C "$pkgname-$pkgver" check || :
+ # Ignore results: some tests are arch-specific, some require writable /sys.
+ make -C "$pkgname-$pkgver" check || return 0
}
package() {
diff --git a/core/rfkill/PKGBUILD b/core/rfkill/PKGBUILD
index 3f8fefe84..9eb84ddd3 100644
--- a/core/rfkill/PKGBUILD
+++ b/core/rfkill/PKGBUILD
@@ -1,23 +1,25 @@
-# $Id: PKGBUILD 165479 2012-08-20 14:46:54Z bisson $
+# $Id: PKGBUILD 171055 2012-11-16 01:20:16Z bisson $
# Maintainer: Gaetan Bisson <bisson@archlinux.org>
# Contributor: Thomas Bächler <thomas@archlinux.org>
# Contributor: Giovanni Scafora <giovanni@archlinux.org>
pkgname=rfkill
pkgver=0.4
-pkgrel=5
+pkgrel=6
pkgdesc='Tool for enabling and disabling wireless devices'
url='http://linuxwireless.org/en/users/Documentation/rfkill'
license=('custom')
arch=('i686' 'x86_64' 'mips64el')
source=("http://wireless.kernel.org/download/${pkgname}/${pkgname}-${pkgver}.tar.bz2"
+ 'service.unblock'
+ 'service.block'
'rules.d'
- 'service'
'conf.d'
'rc.d')
sha1sums=('fccabf5a272ac2891f24dc35449dc6f4c45ff44b'
+ '8b4f0effcad564e929cf65c50773881d1209e54b'
+ '10febfa26656bc395aeca477d4d44a1e0482375c'
'6390eaa793b473098aaa11b13c5254d611a4c13a'
- 'cadc563f967c5ac680e7cdfd764718b412201f8a'
'd969fe927a9fb2926af43a311a7c1fa126fe59a9'
'380af0b002f51543557306ed68a27f0059fd5a6f')
@@ -33,7 +35,8 @@ package() {
make DESTDIR="${pkgdir}" install
install -Dm644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
install -Dm644 ../rules.d "${pkgdir}/usr/lib/udev/rules.d/60-rfkill.rules"
- install -Dm644 ../service "${pkgdir}/usr/lib/systemd/system/rfkill.service"
+ install -Dm644 ../service.block "${pkgdir}/usr/lib/systemd/system/rfkill-block@.service"
+ install -Dm644 ../service.unblock "${pkgdir}/usr/lib/systemd/system/rfkill-unblock@.service"
install -Dm644 ../conf.d "${pkgdir}/etc/conf.d/rfkill"
install -Dm755 ../rc.d "${pkgdir}/etc/rc.d/rfkill"
}
diff --git a/core/rfkill/service.block b/core/rfkill/service.block
new file mode 100644
index 000000000..443c62526
--- /dev/null
+++ b/core/rfkill/service.block
@@ -0,0 +1,11 @@
+[Unit]
+Description=RFKill-Block %I
+After=rfkill-unblock@all.service
+
+[Service]
+Type=oneshot
+ExecStart=/usr/sbin/rfkill block %I
+RemainAfterExit=yes
+
+[Install]
+WantedBy=multi-user.target
diff --git a/core/rfkill/service.unblock b/core/rfkill/service.unblock
new file mode 100644
index 000000000..fb8776653
--- /dev/null
+++ b/core/rfkill/service.unblock
@@ -0,0 +1,11 @@
+[Unit]
+Description=RFKill-Unblock %I
+After=rfkill-block@all.service
+
+[Service]
+Type=oneshot
+ExecStart=/usr/sbin/rfkill unblock %I
+RemainAfterExit=yes
+
+[Install]
+WantedBy=multi-user.target
diff --git a/core/util-linux/PKGBUILD b/core/util-linux/PKGBUILD
index 890fbef6b..b514c875d 100644
--- a/core/util-linux/PKGBUILD
+++ b/core/util-linux/PKGBUILD
@@ -1,17 +1,16 @@
-# $Id: PKGBUILD 169791 2012-10-29 11:02:48Z tomegun $
+# $Id: PKGBUILD 171469 2012-11-17 23:02:13Z allan $
# Maintainer: Tom Gundersen <teg@jklm.no>
# Contributor: judd <jvinet@zeroflux.org>
pkgname=util-linux
pkgver=2.22.1
-pkgrel=2
+pkgrel=3
pkgdesc="Miscellaneous system utilities for Linux"
url="http://www.kernel.org/pub/linux/utils/util-linux/"
arch=('i686' 'x86_64' 'mips64el')
groups=('base')
depends=('pam' 'shadow' 'coreutils' 'glibc')
-# makedepends=('bc') # for check() only, change this to checkdepends for pacman 4.1
-makedepends=('bc' 'git') # for check() only, change this to checkdepends for pacman 4.1
+# checkdepends=('bc')
conflicts=('util-linux-ng' 'eject')
provides=("util-linux-ng=${pkgver}" 'eject')
license=('GPL2')
diff --git a/core/util-linux/util-linux.install b/core/util-linux/util-linux.install
index 969a4aecf..4c0bb107c 100644
--- a/core/util-linux/util-linux.install
+++ b/core/util-linux/util-linux.install
@@ -2,7 +2,8 @@ post_install() {
# we don't want use systemd-tmpfiles here because
# the package dependency would create a circular dep.
if [ ! -d run/uuidd ]; then
- install -o uuidd -g uuidd -dm755 run/uuidd
+ # refer to uid/gid by number to avoid dependency on filesystem
+ install -o 68 -g 68 -dm755 run/uuidd
fi
}
diff --git a/extra/a2ps/PKGBUILD b/extra/a2ps/PKGBUILD
index b1fa5191c..fd0323114 100644
--- a/extra/a2ps/PKGBUILD
+++ b/extra/a2ps/PKGBUILD
@@ -36,6 +36,8 @@ build() {
patch -p1 < ../a2ps-4.13-manpage-chmod.patch
patch -p1 < ../a2ps-4.14-check-mempcpy.patch
patch -p0 < ../a2ps-4.14-fix-stpcpy-proto.patch
+ sed -i '/AM_C_PROTOTYPES/d' configure.in
+ sed -i '/ansi2knr/d' Makefile.am {src,lib,contrib/sample}/Makefile.am
libtoolize --force --copy
autoreconf -I m4
./configure --prefix=/usr --sysconfdir=/etc/a2ps \
diff --git a/extra/aspell-pt/PKGBUILD b/extra/aspell-pt/PKGBUILD
index 86eededde..45b4196a8 100644
--- a/extra/aspell-pt/PKGBUILD
+++ b/extra/aspell-pt/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 150493 2012-02-18 03:34:52Z allan $
+# $Id: PKGBUILD 171362 2012-11-17 09:56:22Z eric $
# Maintainer:
# Contributor: Simo Leone <simo@archlinux.org>
# Contributor: jlvsimoes <jlvsimoes@oninet.pt>
@@ -7,7 +7,7 @@ pkgname=aspell-pt
_pkgverPT=20070510
_pkgverBR=20090702
pkgver=$_pkgverBR
-pkgrel=3.1
+pkgrel=4
pkgdesc="Portuguese and Brazilian Portuguese dictionary for aspell"
arch=('i686' 'x86_64' 'mips64el')
url="http://aspell.net/"
@@ -17,8 +17,8 @@ conflicts=('aspell-pt_br')
replaces=('aspell-pt_br')
source=(ftp://ftp.gnu.org/gnu/aspell/dict/pt_BR/aspell6-pt_BR-$_pkgverBR-0.tar.bz2
ftp://ftp.gnu.org/gnu/aspell/dict/pt_PT/aspell6-pt_PT-$_pkgverPT-0.tar.bz2)
-md5sums=('e082a8956882eb94a67c12e1b8c4a324' 'a54267ce8f91de6e6a1baf1e8048cba0')
-sha1sums=('add1db9a6a908dccaad13a7fd85c3b202299ff26' 'e136c2f411b582897437b06b9068c98ee333be41')
+sha1sums=('add1db9a6a908dccaad13a7fd85c3b202299ff26'
+ 'e136c2f411b582897437b06b9068c98ee333be41')
build() {
cd "$srcdir/aspell6-pt_BR-$_pkgverBR-0"
@@ -36,4 +36,6 @@ package() {
cd "$srcdir/aspell6-pt_PT-$_pkgverPT-0"
make DESTDIR="$pkgdir" install
+
+ echo "add pt_BR.multi" > "$pkgdir"/usr/lib/aspell-0.60/brasileiro.alias
}
diff --git a/extra/avidemux/PKGBUILD b/extra/avidemux/PKGBUILD
index c5090df5a..8b87b1527 100644
--- a/extra/avidemux/PKGBUILD
+++ b/extra/avidemux/PKGBUILD
@@ -1,10 +1,10 @@
-# $Id: PKGBUILD 163145 2012-07-08 09:30:48Z ibiru $
+# $Id: PKGBUILD 171262 2012-11-16 23:35:36Z ibiru $
# Maintainer: Eric Bélanger <eric@archlinux.org>
pkgbase=avidemux
pkgname=('avidemux-cli' 'avidemux-gtk' 'avidemux-qt')
pkgver=2.5.6
-pkgrel=3
+pkgrel=4
arch=('i686' 'x86_64' 'mips64el')
license=('GPL')
url="http://fixounet.free.fr/avidemux/"
diff --git a/extra/avidemux/PKGBUILD.WIP b/extra/avidemux/PKGBUILD.WIP
new file mode 100644
index 000000000..361aa2665
--- /dev/null
+++ b/extra/avidemux/PKGBUILD.WIP
@@ -0,0 +1,83 @@
+# $Id: PKGBUILD 160693 2012-06-03 22:00:17Z eric $
+# Maintainer: Eric Bélanger <eric@archlinux.org>
+
+pkgbase=avidemux
+pkgname=('avidemux-cli' 'avidemux-gtk' 'avidemux-qt')
+pkgver=2.6.0
+pkgrel=1
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://fixounet.free.fr/avidemux/"
+makedepends=('cmake' 'libxslt' 'gtk3' 'qt' 'jack' 'libvorbis' 'sdl' 'libxv' \
+ 'alsa-lib' 'lame' 'xvidcore' 'faad2' 'faac' 'x264' 'libsamplerate' \
+ 'opencore-amr' 'yasm' 'mesa' 'libvpx' 'libpulse' 'libva' \
+ 'libvdpau' 'libdca' 'fribidi' 'glu')
+options=('!makeflags' '!emptydirs')
+#source=(http://downloads.sourceforge.net/avidemux/avidemux_${pkgver}.tar.gz)
+#sha1sums=('d886d61eab70f7b1972c0ebdeeeb7d2ba8c30cbf')
+source=(http://www.avidemux.org/nightly/source/snapshot_8273.tgz)
+sha1sums=('cf5256ce189a51898a2e1071ffd46cd993f453f2')
+
+build() {
+mv snapshot_8273 ${pkgbase}_${pkgver}
+
+ cd "${srcdir}/${pkgbase}_${pkgver}"
+ sed -i 's|avidemux2|avidemux3|' avidemux2.desktop
+ bash bootStrap.bash --with-core --with-cli --with-gtk --with-qt4 --with-plugins
+}
+
+package_avidemux-cli() {
+ pkgdesc="A graphical tool to edit video (filter/re-encode/split)"
+ depends=('libxml2' 'sdl' 'fontconfig' 'libvpx' 'libva')
+ optdepends=('lame: for the corresponding audio encoder plugin'
+ 'faac: for the corresponding audio encoder plugin'
+ 'faad2: for the corresponding audio decoder plugin'
+ 'opencore-amr: for the corresponding audio decoder plugin'
+ 'jack: for the corresponding audio device plugin'
+ 'libpulse: for the corresponding audio device plugin'
+ 'sdl: for the corresponding audio device plugin'
+ 'x264: for the corresponding video encoder plugin'
+ 'xvidcore: for the corresponding video encoder plugin'
+ 'qt: for the QtScript scripting support'
+ 'libdca: for the corresponding audio decoder plugin'
+ 'fribidi: for the corresponding video filter plugin')
+
+ cd "${srcdir}/${pkgbase}_${pkgver}"
+ (cd buildCli; make DESTDIR="${pkgdir}" install)
+ (cd buildCore; make DESTDIR="${pkgdir}" install)
+ (cd buildPluginsCLI; make DESTDIR="${pkgdir}" install)
+ (cd buildPluginsCommon; make DESTDIR="${pkgdir}" install)
+
+ install -D -m644 avidemux_icon.png "${pkgdir}/usr/share/pixmaps/avidemux.png"
+ install -D -m644 man/avidemux.1 "${pkgdir}/usr/share/man/man1/avidemux.1"
+}
+
+package_avidemux-gtk() {
+ pkgdesc="A graphical tool to edit video (filter/re-encode/split) - GTK GUI"
+ depends=("avidemux-cli=${pkgver}" 'gtk3' 'libxv' 'desktop-file-utils')
+ install=avidemux.install
+
+ cd "${srcdir}/${pkgbase}_${pkgver}"
+ (cd buildGtk; make DESTDIR="${pkgdir}" install)
+ (cd buildPluginsGtk; make DESTDIR="${pkgdir}" install)
+
+ install -D -m644 avidemux2.desktop "${pkgdir}/usr/share/applications/avidemux-gtk.desktop"
+
+ rm "${pkgdir}"/usr/lib/ADM_plugins6/pluginSettings/x264/1/{PSP.json,iPhone.json}
+ rm "${pkgdir}/usr/lib/ADM_plugins6/videoEncoders/libADM_ve_x264_other.so"
+}
+
+package_avidemux-qt() {
+ pkgdesc="A graphical tool to edit video (filter/re-encode/split) - QT GUI"
+ depends=("avidemux-cli=${pkgver}" 'qt' 'x264' 'glu')
+ install=avidemux.install
+
+ cd "${srcdir}/${pkgbase}_${pkgver}"
+ (cd buildQt4; make DESTDIR="${pkgdir}" install)
+ (cd buildPluginsQt4; make DESTDIR="${pkgdir}" install)
+
+ install -D -m644 avidemux2.desktop "${pkgdir}/usr/share/applications/avidemux-qt.desktop"
+ sed -i 's|gtk|qt4|' "${pkgdir}/usr/share/applications/avidemux-qt.desktop"
+
+ rm "${pkgdir}"/usr/lib/ADM_plugins6/pluginSettings/x264/1/{PSP.json,iPhone.json}
+}
diff --git a/extra/banshee/PKGBUILD b/extra/banshee/PKGBUILD
index 5f4a92903..e1ae6bf4c 100644
--- a/extra/banshee/PKGBUILD
+++ b/extra/banshee/PKGBUILD
@@ -6,7 +6,7 @@ pkgname=banshee
pkgver=2.6.0
pkgrel=2
pkgdesc="Music management and playback for GNOME"
-arch=('i686' 'x86_64' 'mips64el')
+arch=('i686' 'x86_64')
url="http://banshee.fm/"
license=('MIT')
depends=(libxxf86vm gstreamer0.10-base-plugins mono-addins dbus-sharp-glib boo libwebkit libsoup-gnome gdata-sharp taglib-sharp gudev-sharp gkeyfile-sharp gconf-sharp libmtp libgpod mono-zeroconf desktop-file-utils hicolor-icon-theme xdg-utils media-player-info gstreamer0.10-bad-plugins mono-upnp)
diff --git a/extra/baobab/PKGBUILD b/extra/baobab/PKGBUILD
index 06c31ff0b..7c9ae5a38 100644
--- a/extra/baobab/PKGBUILD
+++ b/extra/baobab/PKGBUILD
@@ -1,8 +1,8 @@
-# $Id: PKGBUILD 169850 2012-10-30 22:24:03Z heftig $
+# $Id: PKGBUILD 171029 2012-11-15 14:16:00Z heftig $
# Maintainer: Ionut Biru <ibiru@archlinux.org>
pkgname=baobab
-pkgver=3.6.2
+pkgver=3.6.3
pkgrel=1
pkgdesc="A graphical directory tree analyzer"
arch=(i686 x86_64 mips64el)
@@ -13,7 +13,7 @@ makedepends=('intltool' 'itstool' 'vala' 'gobject-introspection')
groups=('gnome-extra')
install=$pkgname.install
source=(http://download.gnome.org/sources/$pkgname/${pkgver%.*}/$pkgname-$pkgver.tar.xz)
-sha256sums=('8ffef397f11fb1e7105d1429be828e88b9ceb5746984f0bb978e66e87faf047a')
+sha256sums=('24ec516b12da234f1bd7bff3ccb2be9a46dff0b1fb0fa6cd79ff50549a295eb1')
build() {
cd "$pkgname-$pkgver"
@@ -24,6 +24,9 @@ build() {
package() {
cd "$pkgname-$pkgver"
make DESTDIR="$pkgdir" install
+
+ # https://bugs.archlinux.org/task/31861
+ sed -i '/MimeType/d' "$pkgdir/usr/share/applications/baobab.desktop"
}
# vim:set ts=2 sw=2 et:
diff --git a/extra/bigloo/PKGBUILD b/extra/bigloo/PKGBUILD
index 93ad1c52d..6d6075c7b 100644
--- a/extra/bigloo/PKGBUILD
+++ b/extra/bigloo/PKGBUILD
@@ -1,10 +1,10 @@
-# $Id: PKGBUILD 162148 2012-06-22 11:52:24Z juergen $
+# $Id: PKGBUILD 171315 2012-11-17 05:25:07Z eric $
# Maintainer: Jürgen Hötzel <juergen@archlinux.org>
# Contributor: John Proctor <jproctor@prium.net>
# Contributor: Kevin Piche <kevin@archlinux.org>
pkgname=bigloo
-_pkgver=3.8c
+_pkgver=3.9a
pkgver=${_pkgver/-/_}
pkgrel=1
pkgdesc="Fast scheme compiler"
@@ -12,12 +12,12 @@ arch=('i686' 'x86_64' 'mips64el')
url="http://www-sop.inria.fr/mimosa/fp/Bigloo/"
license=('GPL' 'LGPL')
depends=()
-makedepends=('java-environment' 'emacs' 'zip' 'openssl' 'sqlite' 'alsa-lib' 'flac' 'avahi')
-optdepends=('emacs' 'java-environment' 'zip' 'openssl' 'sqlite' 'alsa-lib' 'flac' 'avahi')
+makedepends=('java-environment' 'emacs' 'zip' 'sqlite' 'alsa-lib' 'flac' 'avahi')
+optdepends=('emacs' 'java-environment' 'zip' 'sqlite' 'alsa-lib' 'flac' 'avahi')
options=('!makeflags')
install=bigloo.install
source=(ftp://ftp-sop.inria.fr/indes/fp/Bigloo/${pkgname}${_pkgver}.tar.gz)
-md5sums=('ceea21b14c8f7270be5223dce713ec6d')
+md5sums=('7091f6f54cb5f63768a8152085d1bd02')
build() {
cd "${srcdir}/${pkgname}${_pkgver}"
diff --git a/extra/boo/PKGBUILD b/extra/boo/PKGBUILD
index e1f818002..27ae5ff7e 100644
--- a/extra/boo/PKGBUILD
+++ b/extra/boo/PKGBUILD
@@ -7,7 +7,7 @@ pkgname=boo
pkgver=0.9.4.9
pkgrel=2
pkgdesc="A wrist friendly language for the CLI"
-arch=('i686' 'x86_64' 'mips64el')
+arch=('i686' 'x86_64')
url="http://boo.codehaus.org/"
license=('GPL')
depends=('sh' 'mono' 'shared-mime-info')
diff --git a/extra/cabal-install/PKGBUILD b/extra/cabal-install/PKGBUILD
index 3fcbba324..040c9363f 100644
--- a/extra/cabal-install/PKGBUILD
+++ b/extra/cabal-install/PKGBUILD
@@ -3,7 +3,7 @@
# Contributor: Arch Haskell Team <arch-haskell@haskell.org>
pkgname=cabal-install
-pkgver=1.16.0.1
+pkgver=1.16.0.2
pkgrel=1
pkgdesc="The command-line interface for Cabal and Hackage."
url="http://hackage.haskell.org/package/cabal-install"
@@ -12,7 +12,7 @@ arch=('i686' 'x86_64' 'mips64el')
makedepends=('haskell-http=4000.2.4-1' 'haskell-zlib=0.5.3.3-5' 'haskell-mtl=2.1.2-1' 'haskell-network=2.3.1.0-1' 'haskell-random=1.0.1.1-3')
depends=('ghc' 'gmp' 'zlib')
source=("http://hackage.haskell.org/packages/archive/cabal-install/${pkgver}/cabal-install-${pkgver}.tar.gz")
-md5sums=('fdd184a8e097dd4dda8a8d9083b82280')
+md5sums=('18e07d5b431d19d94cc5279a5e6fbfee')
build() {
cd cabal-install-${pkgver}
diff --git a/extra/cairo/PKGBUILD b/extra/cairo/PKGBUILD
index be3763e1e..433dbf83b 100644
--- a/extra/cairo/PKGBUILD
+++ b/extra/cairo/PKGBUILD
@@ -10,7 +10,8 @@ arch=(i686 x86_64 'mips64el')
license=('LGPL' 'MPL')
url="http://cairographics.org/"
depends=('libpng' 'libxrender' 'libxext' 'fontconfig' 'pixman>=0.28.0' 'glib2' 'sh')
-makedepends=('librsvg' 'poppler-glib' 'libspectre' 'gtk-doc' 'valgrind') # 'libdrm')
+makedepends=('librsvg' 'poppler-glib' 'libspectre' 'gtk-doc') # 'libdrm')
+[ "$CARCH" != "mips64el" ] && makedepends+=('valgrind')
optdepends=('xcb-util: for XCB backend') # really needed?
provides=('cairo-xcb')
replaces=('cairo-xcb')
diff --git a/extra/calligra/PKGBUILD b/extra/calligra/PKGBUILD
index c28947f5c..37cd1b22f 100644
--- a/extra/calligra/PKGBUILD
+++ b/extra/calligra/PKGBUILD
@@ -19,10 +19,10 @@ pkgname=('calligra-filters'
'calligra-flow')
pkgver=2.5.3
pkgrel=6
-arch=('i686' 'x86_64')
+arch=('i686' 'x86_64' 'mips64el')
url='http://www.calligra-suite.org/'
license=('FDL1.2' 'GPL2' 'LGPL')
-makedepends=('cmake' 'automoc4' 'boost ' 'kdepimlibs' 'eigen2' 'kdeedu-marble'
+makedepends=('cmake' 'automoc4' 'boost' 'kdepimlibs' 'eigen2' 'kdeedu-marble'
'lcms2' 'libmysqlclient' 'libpqxx' 'freetds' 'xbase' 'libwpg'
'libwps' 'gsl' 'glew' 'fftw' 'opengtl' 'poppler-qt' 'libkdcraw'
'openjpeg' 'kdegraphics-okular' 'pstoedit' 'mesa')
diff --git a/extra/check/PKGBUILD b/extra/check/PKGBUILD
new file mode 100644
index 000000000..6014fbee3
--- /dev/null
+++ b/extra/check/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id: PKGBUILD 171322 2012-11-17 08:55:42Z heftig $
+# Maintainer: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
+# Contributor: Jaroslav Lichtblau <dragonlord@aur.archlinux.org>
+# Contributor: Jeremy Cowgar <jeremy@cowgar.com>
+
+pkgname=check
+pkgver=0.9.9
+pkgrel=1
+pkgdesc="A unit testing framework for C"
+arch=('i686' 'x86_64' 'mips64el')
+url="http://check.sourceforge.net/"
+license=('LGPL')
+options=('!libtool')
+install=$pkgname.install
+source=(http://downloads.sourceforge.net/sourceforge/$pkgname/$pkgname-$pkgver.tar.gz)
+md5sums=('f3702f2fcfc19ce3f62dca66c241a168')
+
+build() {
+ cd $pkgname-$pkgver
+ ./configure --prefix=/usr --disable-static
+ make
+}
+
+package() {
+ cd $pkgname-$pkgver
+ make DESTDIR="$pkgdir" install
+
+ # get rid of the package's info directory,
+ # install-info adds entries for us at install-time
+ rm "$pkgdir/usr/share/info/dir"
+}
diff --git a/extra/check/check.install b/extra/check/check.install
new file mode 100644
index 000000000..c4092e298
--- /dev/null
+++ b/extra/check/check.install
@@ -0,0 +1,20 @@
+_infodir=/usr/share/info
+_filelist=(check.info)
+
+post_install() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${_filelist[@]}; do
+ install-info $_infodir/$file $_infodir/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${_filelist[@]}; do
+ install-info --delete $_infodir/$file $_infodir/dir 2> /dev/null
+ done
+}
diff --git a/extra/claws-mail-extra-plugins/PKGBUILD b/extra/claws-mail-extra-plugins/PKGBUILD
index aa7dfdd95..11027bc4f 100644
--- a/extra/claws-mail-extra-plugins/PKGBUILD
+++ b/extra/claws-mail-extra-plugins/PKGBUILD
@@ -1,15 +1,15 @@
-# $Id: PKGBUILD 162657 2012-06-27 15:37:05Z andyrtr $
+# $Id: PKGBUILD 171015 2012-11-14 20:36:10Z andyrtr $
# Maintainer: Andreas Radke <andyrtr@archlinux.org>
# Contributor: Mildred <mildred593 at online dot fr>
pkgname=claws-mail-extra-plugins
-pkgver=3.8.1
+pkgver=3.9.0
pkgrel=1
pkgdesc="Extra plugins for claws-mail"
url="http://www.claws-mail.org/plugins.php?branch=EXT"
license=('GPL3')
arch=('i686' 'x86_64' 'mips64el')
-depends=('claws-mail>=3.8.1')
+depends=('claws-mail>=3.9.0')
makedepends=('make' 'bc' 'perl>=5.16.0' 'libgtkhtml>=2.11.1-2' 'libnotify>=0.7'
'libxml2>=2.7.6' 'curl>=7.19.7' 'libytnef>=1.5-2' 'libwebkit>=1.6.1'
'pygtk>=2.16.0' 'libsoup-gnome' 'libcanberra' 'libgdata'
@@ -36,16 +36,13 @@ conflicts=('claws-gtkhtml2_viewer' 'claws-mail-acpinotifier-plugin'
replaces=('sylpheed-claws-extra-plugins')
options=('!libtool' '!strip')
source=(http://downloads.sourceforge.net/project/sylpheed-claws/extra%20plugins/$pkgver/claws-mail-extra-plugins-$pkgver.tar.bz2)
-md5sums=('04528ff6c8a7a38d392c4f2afb1bb0d2')
+md5sums=('e82431243a6643bcc5520df78908240c')
build() {
cd "$srcdir/claws-mail-extra-plugins-$pkgver"
# fix for python2
export PYTHON="/usr/bin/python2"
-
- # fix gdata plugin build
- sed -i -e "s:libgdata\ <\ 0.9.0:libgdata\ <\ 0.11.0:g" gdata_plugin-0.4/configure
for dir in */; do
[[ $dir != geolocation_plugin-* ]] && (
diff --git a/extra/claws-mail/PKGBUILD b/extra/claws-mail/PKGBUILD
index 0868ebbbc..6bffb13df 100644
--- a/extra/claws-mail/PKGBUILD
+++ b/extra/claws-mail/PKGBUILD
@@ -1,9 +1,9 @@
-# $Id: PKGBUILD 168547 2012-10-13 11:00:14Z andyrtr $
+# $Id: PKGBUILD 171014 2012-11-14 20:36:08Z andyrtr $
# Maintainer: Andreas Radke <andyrtr@archlinux.org>
pkgname=claws-mail
-pkgver=3.8.1
-pkgrel=3
+pkgver=3.9.0
+pkgrel=1
pkgdesc="A GTK+ based e-mail client."
arch=('i686' 'x86_64' 'mips64el')
license=('GPL3')
@@ -20,17 +20,12 @@ replaces=('sylpheed-claws')
provides=('claws')
options=(!libtool)
install=claws-mail.install
-source=(http://downloads.sourceforge.net/sourceforge/sylpheed-claws/${pkgname}-${pkgver}.tar.bz2
- gnutls313.diff)
-md5sums=('d388929fb1c8f04d4bcb2139faaf9e70'
- '21bdc9d324f9424e0071bb73be169977')
+source=(http://downloads.sourceforge.net/sourceforge/sylpheed-claws/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('4c5ac7b21f0ed17d0f6404124c2229a4')
build() {
cd ${srcdir}/${pkgname}-${pkgver}
- # fix a bug in gnutls cert check triggered since gnutls 3.1.3 update
- patch -Np1 -i ${srcdir}/gnutls313.diff
-
sed -i 's@^#!.*python.*@#!/usr/bin/python2@' tools/*.py
./configure --prefix=/usr --disable-static \
diff --git a/extra/cmake/PKGBUILD b/extra/cmake/PKGBUILD
index a1875f270..e1959589d 100644
--- a/extra/cmake/PKGBUILD
+++ b/extra/cmake/PKGBUILD
@@ -1,16 +1,16 @@
-# $Id: PKGBUILD 170679 2012-11-09 09:15:06Z andrea $
+# $Id: PKGBUILD 171295 2012-11-17 01:49:16Z allan $
# Maintainer: Andrea Scarpino <andrea@archlinux.org>
# Contributor: Pierre Schmitz <pierre@archlinux.de>
pkgname=cmake
pkgver=2.8.10.1
-pkgrel=1
+pkgrel=2
pkgdesc="A cross-platform open-source make system"
arch=('i686' 'x86_64' 'mips64el')
url="http://www.cmake.org/"
license=('custom')
depends=('curl' 'libarchive' 'shared-mime-info')
-makedepends=('qt')
+makedepends=('qt' 'emacs')
optdepends=('qt: cmake-gui')
install="${pkgname}.install"
source=("http://www.cmake.org/files/v2.8/${pkgname}-${pkgver}.tar.gz")
@@ -35,8 +35,10 @@ package() {
vimpath="${pkgdir}/usr/share/vim/vimfiles"
install -Dm644 Docs/cmake-indent.vim "${vimpath}"/indent/cmake-indent.vim
install -Dm644 Docs/cmake-syntax.vim "${vimpath}"/syntax/cmake-syntax.vim
+
install -Dm644 Docs/cmake-mode.el \
"${pkgdir}"/usr/share/emacs/site-lisp/cmake-mode.el
+ emacs -batch -f batch-byte-compile "${pkgdir}"/usr/share/emacs/site-lisp/cmake-mode.el
install -Dm644 Copyright.txt \
"${pkgdir}"/usr/share/licenses/${pkgname}/LICENSE
diff --git a/extra/colord/PKGBUILD b/extra/colord/PKGBUILD
index 6e7c5fca5..229c69358 100644
--- a/extra/colord/PKGBUILD
+++ b/extra/colord/PKGBUILD
@@ -1,10 +1,10 @@
-# $Id: PKGBUILD 170683 2012-11-09 12:41:46Z jgc $
+# $Id: PKGBUILD 171432 2012-11-17 14:39:23Z jgc $
# Maintainer: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
# Contributor: Ionut Biru <ibiru@archlinux.org>
pkgname=colord
pkgver=0.1.24
-pkgrel=2
+pkgrel=3
pkgdesc="System daemon for managing color devices"
arch=('i686' 'x86_64' 'mips64el')
url="http://www.freedesktop.org/software/colord"
@@ -24,7 +24,8 @@ build() {
./configure --prefix=/usr \
--sysconfdir=/etc --libexecdir=/usr/lib/colord \
--localstatedir=/var --disable-static \
- --with-systemdsystemunitdir=/usr/lib/systemd/system
+ --with-systemdsystemunitdir=/usr/lib/systemd/system \
+ --enable-vala
make
}
diff --git a/extra/datefudge/PKGBUILD b/extra/datefudge/PKGBUILD
index 1cf348382..37cc1644a 100644
--- a/extra/datefudge/PKGBUILD
+++ b/extra/datefudge/PKGBUILD
@@ -6,7 +6,7 @@ pkgname=datefudge
pkgver=1.17
pkgrel=1
pkgdesc="A program (and preload library) to fake system date"
-arch=('i686' 'x86_64')
+arch=('i686' 'x86_64' 'mips64el')
url="http://packages.qa.debian.org/d/datefudge.html"
license=('GPL2')
depends=('sh')
diff --git a/extra/devhelp/PKGBUILD b/extra/devhelp/PKGBUILD
index f572dfca0..992d38e9b 100644
--- a/extra/devhelp/PKGBUILD
+++ b/extra/devhelp/PKGBUILD
@@ -1,11 +1,11 @@
-# $Id: PKGBUILD 169860 2012-10-30 22:24:49Z heftig $
+# $Id: PKGBUILD 170977 2012-11-14 07:19:21Z heftig $
# Maintainer: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
# Contributor: Jan de Groot <jgc@archlinux.org>
# Contributor: Link Dupont <link@subpop.net>
pkgname=devhelp
-pkgver=3.6.0
-pkgrel=2
+pkgver=3.6.1
+pkgrel=1
pkgdesc="API documentation browser for GNOME"
arch=(i686 x86_64 'mips64el')
license=('GPL')
@@ -15,7 +15,7 @@ makedepends=('pkgconfig' 'intltool' 'python2')
options=('!libtool' '!emptydirs')
install=devhelp.install
source=(http://ftp.gnome.org/pub/GNOME/sources/$pkgname/${pkgver%.*}/$pkgname-$pkgver.tar.xz)
-sha256sums=('bf0576d5d70496367ccb22be53be620bbfe341bd491c1d725cfb59d566769fe1')
+sha256sums=('71c6933422bf876745fc10276a2b2ee0f8c4c4ddfe034b3f6380507725fd4e63')
build() {
cd $pkgname-$pkgver
diff --git a/extra/di/PKGBUILD b/extra/di/PKGBUILD
index d9246cdb8..c5670859f 100644
--- a/extra/di/PKGBUILD
+++ b/extra/di/PKGBUILD
@@ -1,8 +1,8 @@
-# $Id: PKGBUILD 169510 2012-10-22 19:36:13Z eric $
+# $Id: PKGBUILD 171054 2012-11-15 23:33:28Z eric $
# Maintainer: Eric Bélanger <eric@archlinux.org>
pkgname=di
-pkgver=4.32
+pkgver=4.33
pkgrel=1
pkgdesc="A disk information utility, displaying everything (and more) that your df command does"
arch=('i686' 'x86_64' 'mips64el')
@@ -10,7 +10,7 @@ url="http://www.gentoo.com/di/"
license=('ZLIB')
depends=('glibc')
source=(http://www.gentoo.com/di/${pkgname}-${pkgver}.tar.gz)
-sha1sums=('b819e877e1135f34f362ba2f72d1e694c1878249')
+sha1sums=('c6f754c3a93845deef7255682fbecd1882a3ddf2')
build() {
cd "${srcdir}/${pkgname}-${pkgver}"
diff --git a/extra/easytag/PKGBUILD b/extra/easytag/PKGBUILD
index e1468ef72..bbd047d81 100644
--- a/extra/easytag/PKGBUILD
+++ b/extra/easytag/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 159952 2012-05-27 10:21:37Z tomegun $
+# $Id: PKGBUILD 171355 2012-11-17 09:20:41Z eric $
# Maintainer:
# Contributor: Kevin Piche <kevin@archlinux.org>
# Contributor: Aaron Griffin <aaron@archlinux.org>
@@ -6,23 +6,25 @@
pkgname=easytag
pkgver=2.1.7
-pkgrel=2
+pkgrel=3
pkgdesc="Utility for viewing, editing and writing ID3 tags of your MP3 files"
arch=('i686' 'x86_64' 'mips64el')
license=('GPL')
url='http://easytag.sourceforge.net/'
-depends=('id3lib' 'libid3tag' 'gtk2' 'libvorbis' 'flac' 'speex' 'wavpack' 'desktop-file-utils')
+depends=('id3lib' 'libid3tag' 'gtk2' 'libvorbis' 'flac' 'speex' 'wavpack' 'libmp4v2' 'desktop-file-utils')
install=${pkgname}.install
-source=("http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.bz2")
-md5sums=('9df3e800d80e754670642f2ba5e03539')
+source=("http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.bz2" easytag-2.1.7-new_libmp4v2.patch)
+md5sums=('9df3e800d80e754670642f2ba5e03539'
+ '0d01887de463585d944777b638a28c85')
build() {
- cd ${srcdir}/${pkgname}-${pkgver}
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -p0 -i "${srcdir}/easytag-2.1.7-new_libmp4v2.patch"
./configure --prefix=/usr
make
}
package() {
- cd ${srcdir}/${pkgname}-${pkgver}
- make DESTDIR=${pkgdir} install
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
}
diff --git a/extra/easytag/easytag-2.1.7-new_libmp4v2.patch b/extra/easytag/easytag-2.1.7-new_libmp4v2.patch
new file mode 100644
index 000000000..4a6c315c2
--- /dev/null
+++ b/extra/easytag/easytag-2.1.7-new_libmp4v2.patch
@@ -0,0 +1,535 @@
+Compability with libmp4v2.so.2 (upstream revision r479)
+
+http://bugs.gentoo.org/409281
+
+--- src/mp4_header.c
++++ src/mp4_header.c
+@@ -204,7 +204,7 @@
+ /* Get size of file */
+ ETFileInfo->size = Get_File_Size(filename);
+
+- if ((file = MP4Read(filename, 0)) == MP4_INVALID_FILE_HANDLE )
++ if ((file = MP4Read(filename)) == MP4_INVALID_FILE_HANDLE )
+ {
+ gchar *filename_utf8 = filename_to_display(filename);
+ //g_print(_("ERROR while opening file: '%s' (%s)."),filename_utf8,g_strerror(errno));
+@@ -218,7 +218,7 @@
+ {
+ gchar *filename_utf8 = filename_to_display(filename);
+ Log_Print(LOG_ERROR,_("ERROR while opening file: '%s' (%s)."),filename_utf8,("Contains no audio track"));
+- MP4Close(file);
++ MP4Close(file, 0);
+ g_free(filename_utf8);
+ return FALSE;
+ }
+@@ -243,7 +243,7 @@
+ ETFileInfo->mode = MP4GetTrackAudioChannels(file, trackId);
+ ETFileInfo->duration = MP4ConvertFromTrackDuration(file, trackId, MP4GetTrackDuration(file, trackId), MP4_SECS_TIME_SCALE);
+
+- MP4Close(file);
++ MP4Close(file, 0);
+ return TRUE;
+ }
+
+--- src/mp4_tag.c
++++ src/mp4_tag.c
+@@ -80,15 +80,9 @@
+ {
+ FILE *file;
+ MP4FileHandle mp4file = NULL;
+- uint16_t track, track_total;
+- uint16_t disk, disktotal;
+- u_int8_t *coverArt;
+- u_int32_t coverSize;
+ Picture *prev_pic = NULL;
+-#ifdef NEWMP4
+ gint pic_num;
+-#endif
+-
++
+ if (!filename || !FileTag)
+ return FALSE;
+
+@@ -102,7 +96,7 @@
+ fclose(file); // We close it cause mp4 opens/closes file itself
+
+ /* Get data from tag */
+- mp4file = MP4Read(filename, 0);
++ mp4file = MP4Read(filename);
+ if (mp4file == MP4_INVALID_FILE_HANDLE)
+ {
+ gchar *filename_utf8 = filename_to_display(filename);
+@@ -111,109 +105,134 @@
+ return FALSE;
+ }
+
++ const MP4Tags* tags = MP4TagsAlloc();
++ MP4TagsFetch(tags, mp4file);
++
+ /* TODO Add error detection */
+
+ /*********
+ * Title *
+ *********/
+- MP4GetMetadataName(mp4file, &FileTag->title);
++ if (tags->name)
++ {
++ FileTag->title = Try_To_Validate_Utf8_String(tags->name);
++ }
+
+ /**********
+ * Artist *
+ **********/
+- MP4GetMetadataArtist(mp4file, &FileTag->artist);
++ if (tags->artist)
++ {
++ FileTag->artist = Try_To_Validate_Utf8_String(tags->artist);
++ }
++
++ /****************
++ * Album Artist *
++ ****************/
++ if (tags->albumArtist)
++ {
++ FileTag->album_artist = Try_To_Validate_Utf8_String(tags->albumArtist);
++ }
+
+ /*********
+ * Album *
+ *********/
+- MP4GetMetadataAlbum(mp4file, &FileTag->album);
++ if (tags->album)
++ {
++ FileTag->album = Try_To_Validate_Utf8_String(tags->album);
++ }
+
+ /**********************
+ * Disk / Total Disks *
+ **********************/
+- if (MP4GetMetadataDisk(mp4file, &disk, &disktotal))
++ if (tags->disk)
+ {
+- if (disk != 0 && disktotal != 0)
+- FileTag->disc_number = g_strdup_printf("%d/%d",(gint)disk,(gint)disktotal);
+- else if (disk != 0)
+- FileTag->disc_number = g_strdup_printf("%d",(gint)disk);
+- else if (disktotal != 0)
+- FileTag->disc_number = g_strdup_printf("/%d",(gint)disktotal);
+- //if (disktotal != 0)
+- // FileTag->disk_number_total = g_strdup_printf("%d",(gint)disktotal);
++ if (tags->disk->index != 0 && tags->disk->total != 0)
++ FileTag->disc_number = g_strdup_printf("%d/%d",(gint)tags->disk->index,(gint)tags->disk->total);
++ else if (tags->disk->index != 0)
++ FileTag->disc_number = g_strdup_printf("%d",(gint)tags->disk->index);
++ else if (tags->disk->total != 0)
++ FileTag->disc_number = g_strdup_printf("/%d",(gint)tags->disk->total);
+ }
+
+ /********
+ * Year *
+ ********/
+- MP4GetMetadataYear(mp4file, &FileTag->year);
++ if (tags->releaseDate)
++ {
++ FileTag->year = Try_To_Validate_Utf8_String(tags->releaseDate);
++ }
+
+ /*************************
+ * Track and Total Track *
+ *************************/
+- if (MP4GetMetadataTrack(mp4file, &track, &track_total))
++ if (tags->track)
+ {
+- if (track != 0)
+- FileTag->track = g_strdup_printf("%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON,(gint)track); // Just to have numbers like this : '01', '05', '12', ...
+- if (track_total != 0)
+- FileTag->track_total = g_strdup_printf("%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON,(gint)track_total); // Just to have numbers like this : '01', '05', '12', ...
++ if (tags->track->index != 0)
++ FileTag->track = g_strdup_printf("%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON,(gint)tags->track->index); // Just to have numbers like this : '01', '05', '12', ...
++ if (tags->track->total != 0)
++ FileTag->track_total = g_strdup_printf("%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON,(gint)tags->track->total); // Just to have numbers like this : '01', '05', '12', ...
+ }
+
+ /*********
+ * Genre *
+ *********/
+- MP4GetMetadataGenre(mp4file, &FileTag->genre);
++ if (tags->genre)
++ {
++ FileTag->genre = Try_To_Validate_Utf8_String(tags->genre);
++ }
+
+ /***********
+ * Comment *
+ ***********/
+- MP4GetMetadataComment(mp4file, &FileTag->comment);
++ if (tags->comments)
++ {
++ FileTag->comment = Try_To_Validate_Utf8_String(tags->comments);
++ }
+
+ /**********************
+ * Composer or Writer *
+ **********************/
+- MP4GetMetadataWriter(mp4file, &FileTag->composer);
++ if (tags->composer)
++ {
++ FileTag->composer = Try_To_Validate_Utf8_String(tags->composer);
++ }
+
+ /*****************
+ * Encoding Tool *
+ *****************/
+- MP4GetMetadataTool(mp4file, &FileTag->encoded_by);
+-
+- /* Unimplemented
+- Tempo / BPM
+- MP4GetMetadataTempo(file, &string)
+- */
++ if (tags->encodedBy)
++ {
++ FileTag->encoded_by = Try_To_Validate_Utf8_String(tags->encodedBy);
++ }
+
+ /***********
+ * Picture *
+ ***********/
+-#ifdef NEWMP4
+- // There version can handle multiple pictures!
+- // Version 1.6 of libmp4v2 introduces an index argument for MP4GetMetadataCoverart
+- for (pic_num = 0; (MP4GetMetadataCoverArt( mp4file, &coverArt, &coverSize,pic_num )); pic_num++)
+-#else
+- // There version handle only one picture!
+- if ( MP4GetMetadataCoverArt( mp4file, &coverArt, &coverSize ) )
+-#endif
+- {
+- Picture *pic;
+-
+- pic = Picture_Allocate();
+- if (!prev_pic)
+- FileTag->picture = pic;
+- else
+- prev_pic->next = pic;
+- prev_pic = pic;
+-
+- pic->size = coverSize;
+- pic->data = coverArt;
+- pic->type = PICTURE_TYPE_FRONT_COVER;
+- pic->description = NULL;
++ if (tags->artworkCount) {
++ const MP4TagArtwork* art = tags->artwork; /* artwork != NULL when artworkCount > 0 */
++ for (pic_num = 0; pic_num < tags->artworkCount; pic_num++, art++)
++ {
++ Picture *pic;
++
++ pic = Picture_Allocate();
++ if (!prev_pic)
++ FileTag->picture = pic;
++ else
++ prev_pic->next = pic;
++ prev_pic = pic;
++
++ pic->size = art->size;
++ pic->data = g_memdup(art->data, pic->size);
++ pic->type = PICTURE_TYPE_FRONT_COVER;
++ pic->description = NULL;
++ }
+ }
+
+
+ /* Free allocated data */
+- MP4Close(mp4file);
++ MP4TagsFree(tags);
++ MP4Close(mp4file, 0);
+
+ return TRUE;
+ }
+@@ -235,6 +254,7 @@
+ FILE *file;
+ MP4FileHandle mp4file = NULL;
+ gint error = 0;
++ gint pic_num;
+
+ if (!ETFile || !ETFile->FileTag)
+ return FALSE;
+@@ -252,23 +272,25 @@
+ fclose(file);
+
+ /* Open file for writing */
+- mp4file = MP4Modify(filename,0,0);
++ mp4file = MP4Modify(filename, 0);
+ if (mp4file == MP4_INVALID_FILE_HANDLE)
+ {
+ Log_Print(LOG_ERROR,_("ERROR while opening file: '%s' (%s)."),filename_utf8,_("MP4 format invalid"));
+ return FALSE;
+ }
+
++ const MP4Tags* tags = MP4TagsAlloc();
++ MP4TagsFetch(tags, mp4file);
++
+ /*********
+ * Title *
+ *********/
+ if (FileTag->title && g_utf8_strlen(FileTag->title, -1) > 0)
+ {
+- MP4SetMetadataName(mp4file, FileTag->title);
++ MP4TagsSetName(tags, FileTag->title);
+ }else
+ {
+- //MP4DeleteMetadataName(mp4file); // Not available on mpeg4ip-1.2 (only in 1.3)
+- MP4SetMetadataName(mp4file, "");
++ MP4TagsSetName(tags, "");
+ }
+
+ /**********
+@@ -276,11 +298,21 @@
+ **********/
+ if (FileTag->artist && g_utf8_strlen(FileTag->artist, -1) > 0)
+ {
+- MP4SetMetadataArtist(mp4file, FileTag->artist);
++ MP4TagsSetArtist(tags, FileTag->artist);
++ }else
++ {
++ MP4TagsSetArtist(tags, "");
++ }
++
++ /****************
++ * Album Artist *
++ ****************/
++ if (FileTag->artist && g_utf8_strlen(FileTag->artist, -1) > 0)
++ {
++ MP4TagsSetAlbumArtist(tags, FileTag->album_artist);
+ }else
+ {
+- //MP4DeleteMetadataArtist(mp4file);
+- MP4SetMetadataArtist(mp4file, "");
++ MP4TagsSetAlbumArtist(tags, "");
+ }
+
+ /*********
+@@ -288,22 +320,19 @@
+ *********/
+ if (FileTag->album && g_utf8_strlen(FileTag->album, -1) > 0)
+ {
+- MP4SetMetadataAlbum(mp4file, FileTag->album);
++ MP4TagsSetAlbum(tags, FileTag->album);
+ }else
+ {
+- //MP4DeleteMetadataAlbum(mp4file);
+- MP4SetMetadataAlbum(mp4file, "");
++ MP4TagsSetAlbum(tags, "");
+ }
+
+ /**********************
+ * Disk / Total Disks *
+ **********************/
++ MP4TagDisk td;
+ if (FileTag->disc_number && g_utf8_strlen(FileTag->disc_number, -1) > 0)
+ //|| FileTag->disc_number_total && g_utf8_strlen(FileTag->disc_number_total, -1) > 0)
+ {
+- uint16_t disk = 0;
+- uint16_t disktotal = 0;
+-
+ /* At the present time, we manage only disk number like '1' or '1/2', we
+ * don't use disk number total... so here we try to decompose */
+ if (FileTag->disc_number)
+@@ -314,27 +343,24 @@
+ {
+ // A disc_number_total was entered
+ if ( (tmp+1) && atoi(tmp+1) )
+- disktotal = atoi(tmp+1);
++ td.total = atoi(tmp+1);
+
+ // Fill disc_number
+ *tmp = '\0';
+- disk = atoi(dn_tmp);
++ td.index = atoi(dn_tmp);
+ }else
+ {
+- disk = atoi(FileTag->disc_number);
++ td.index = atoi(FileTag->disc_number);
++ td.total = NULL;
+ }
+ g_free(dn_tmp);
+ }
+- /*if (FileTag->disc_number)
+- disk = atoi(FileTag->disc_number);
+- if (FileTag->disc_number_total)
+- disktotal = atoi(FileTag->disc_number_total);
+- */
+- MP4SetMetadataDisk(mp4file, disk, disktotal);
++ MP4TagsSetDisk(tags, &td);
+ }else
+ {
+- //MP4DeleteMetadataDisk(mp4file);
+- MP4SetMetadataDisk(mp4file, 0, 0);
++ td.index = NULL;
++ td.total = NULL;
++ MP4TagsSetDisk(tags, &td);
+ }
+
+ /********
+@@ -342,30 +368,29 @@
+ ********/
+ if (FileTag->year && g_utf8_strlen(FileTag->year, -1) > 0)
+ {
+- MP4SetMetadataYear(mp4file, FileTag->year);
++ MP4TagsSetReleaseDate(tags, FileTag->year);
+ }else
+ {
+- //MP4DeleteMetadataYear(mp4file);
+- MP4SetMetadataYear(mp4file, "");
++ MP4TagsSetReleaseDate(tags, "");
+ }
+
+ /*************************
+ * Track and Total Track *
+ *************************/
++ MP4TagTrack tt;
+ if ( (FileTag->track && g_utf8_strlen(FileTag->track, -1) > 0)
+ || (FileTag->track_total && g_utf8_strlen(FileTag->track_total, -1) > 0) )
+ {
+- uint16_t track = 0;
+- uint16_t track_total = 0;
+ if (FileTag->track)
+- track = atoi(FileTag->track);
++ tt.index = atoi(FileTag->track);
+ if (FileTag->track_total)
+- track_total = atoi(FileTag->track_total);
+- MP4SetMetadataTrack(mp4file, track, track_total);
++ tt.total = atoi(FileTag->track_total);
++ MP4TagsSetTrack(tags, &tt);
+ }else
+ {
+- //MP4DeleteMetadataTrack(mp4file);
+- MP4SetMetadataTrack(mp4file, 0, 0);
++ tt.index = NULL;
++ tt.total = NULL;
++ MP4TagsSetTrack(tags, &tt);
+ }
+
+ /*********
+@@ -373,11 +398,10 @@
+ *********/
+ if (FileTag->genre && g_utf8_strlen(FileTag->genre, -1) > 0 )
+ {
+- MP4SetMetadataGenre(mp4file, FileTag->genre);
++ MP4TagsSetGenre(tags, FileTag->genre);
+ }else
+ {
+- //MP4DeleteMetadataGenre(mp4file);
+- MP4SetMetadataGenre(mp4file, "");
++ MP4TagsSetGenre(tags, "");
+ }
+
+ /***********
+@@ -385,11 +409,10 @@
+ ***********/
+ if (FileTag->comment && g_utf8_strlen(FileTag->comment, -1) > 0)
+ {
+- MP4SetMetadataComment(mp4file, FileTag->comment);
++ MP4TagsSetComments(tags, FileTag->comment);
+ }else
+ {
+- //MP4DeleteMetadataComment(mp4file);
+- MP4SetMetadataComment(mp4file, "");
++ MP4TagsSetComments(tags, "");
+ }
+
+ /**********************
+@@ -397,11 +420,10 @@
+ **********************/
+ if (FileTag->composer && g_utf8_strlen(FileTag->composer, -1) > 0)
+ {
+- MP4SetMetadataWriter(mp4file, FileTag->composer);
++ MP4TagsSetComposer(tags, FileTag->composer);
+ }else
+ {
+- //MP4DeleteMetadataWriter(mp4file);
+- MP4SetMetadataWriter(mp4file, "");
++ MP4TagsSetComposer(tags, "");
+ }
+
+ /*****************
+@@ -409,33 +431,39 @@
+ *****************/
+ if (FileTag->encoded_by && g_utf8_strlen(FileTag->encoded_by, -1) > 0)
+ {
+- MP4SetMetadataTool(mp4file, FileTag->encoded_by);
++ MP4TagsSetEncodedBy(tags, FileTag->encoded_by);
+ }else
+ {
+- //MP4DeleteMetadataTool(mp4file);
+- MP4SetMetadataTool(mp4file, "");
++ MP4TagsSetEncodedBy(tags, "");
+ }
+
+ /***********
+ * Picture *
+ ***********/
++ Picture *pic = FileTag->picture;
++ const gint artworkCount = tags->artworkCount;
++
++ for (pic_num = 0; pic_num < artworkCount; pic_num++)
+ {
+- // Can handle only one picture...
+- Picture *pic;
++ MP4TagsRemoveArtwork(tags, 0);
++ }
+
+- //MP4DeleteMetadataCoverArt(mp4file);
+- MP4SetMetadataCoverArt(mp4file, NULL, 0);
+- for( pic = FileTag->picture; pic; pic = pic->next )
++ while (pic)
++ {
++ if (pic->data)
+ {
+- if( pic->type == PICTURE_TYPE_FRONT_COVER )
+- {
+- MP4SetMetadataCoverArt(mp4file, pic->data, pic->size);
+- }
++ MP4TagArtwork art;
++ art.data = pic->data;
++ art.size = pic->size;
++ art.type = MP4_ART_UNDEFINED; // delegate typing to libmp4v2
++ MP4TagsAddArtwork(tags, &art);
+ }
++ pic = pic->next;
+ }
+
+-
+- MP4Close(mp4file);
++ MP4TagsStore(tags, mp4file);
++ MP4TagsFree(tags);
++ MP4Close(mp4file, 0);
+
+ if (error) return FALSE;
+ else return TRUE;
+--- src/picture.c
++++ src/picture.c
+@@ -326,24 +326,7 @@
+ else if (MESSAGE_BOX_POSITION_MOUSE)
+ gtk_window_set_position(GTK_WINDOW(FileSelectionWindow),GTK_WIN_POS_MOUSE);
+
+- // Behaviour following the tag type...
+- switch (ETCore->ETFileDisplayed->ETFileDescription->TagType)
+- {
+- case MP4_TAG:
+- {
+- // Only one file can be selected
+- gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(FileSelectionWindow), FALSE);
+- break;
+- }
+-
+- // Other tag types
+- default:
+- {
+- gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(FileSelectionWindow), TRUE);
+- break;
+- }
+- }
+-
++ gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(FileSelectionWindow), TRUE);
+ gtk_dialog_set_default_response(GTK_DIALOG(FileSelectionWindow), GTK_RESPONSE_OK);
+
+ // Starting directory (the same of the current file)
diff --git a/extra/easytag/easytag.install b/extra/easytag/easytag.install
index 93908edac..660593cf5 100644
--- a/extra/easytag/easytag.install
+++ b/extra/easytag/easytag.install
@@ -1,5 +1,5 @@
post_install() {
- [[ -x usr/bin/update-desktop-database ]] && update-desktop-database -q || true
+ update-desktop-database -q
}
post_upgrade() {
diff --git a/extra/elfutils/PKGBUILD b/extra/elfutils/PKGBUILD
index 8ffcd12f6..9ccf17eb3 100644
--- a/extra/elfutils/PKGBUILD
+++ b/extra/elfutils/PKGBUILD
@@ -6,7 +6,7 @@ pkgname=elfutils
pkgver=0.155
pkgrel=1
pkgdesc="Libraries and utilities to handle ELF object files and DWARF debugging information"
-arch=('i686' 'x86_64')
+arch=('i686' 'x86_64' 'mips64el')
url="https://fedorahosted.org/elfutils/"
license=('LGPL3' 'GPL' 'GPL3')
depends=('gcc-libs' 'zlib' 'bzip2' 'xz')
@@ -22,7 +22,6 @@ sha1sums=('1b96084cd9fe037c1c0bd2c280aaa701f913462b'
build() {
cd "${srcdir}/${pkgname}-${pkgver}"
-
CFLAGS+=" -g" # required for test-suite success
patch -Np1 -i ../elfutils-0.155-binutils-pr-ld-13621.patch
./configure --prefix=/usr --program-prefix="eu-"
@@ -31,6 +30,7 @@ build() {
check() {
cd "${srcdir}/${pkgname}-${pkgver}"
+ [ "$CARCH" = "mips64el" ] && return 0 # Known to fail, no benefit from running.
make check
}
diff --git a/extra/empathy/PKGBUILD b/extra/empathy/PKGBUILD
index d513df2ae..03b07d76a 100644
--- a/extra/empathy/PKGBUILD
+++ b/extra/empathy/PKGBUILD
@@ -1,9 +1,9 @@
-# $Id: PKGBUILD 170065 2012-10-31 13:32:53Z ibiru $
+# $Id: PKGBUILD 170935 2012-11-13 16:33:01Z heftig $
# Maintainer: Ionut Biru <ibiru@archlinux.org>
pkgname=empathy
-pkgver=3.6.1
-pkgrel=2
+pkgver=3.6.2
+pkgrel=1
pkgdesc="A GNOME instant messaging client using the Telepathy framework."
arch=('i686' 'x86_64' 'mips64el')
url="http://live.gnome.org/Empathy"
@@ -20,7 +20,7 @@ options=('!libtool' '!makeflags')
groups=('gnome-extra')
install=empathy.install
source=(http://ftp.gnome.org/pub/GNOME/sources/$pkgname/${pkgver:0:3}/$pkgname-$pkgver.tar.xz)
-sha256sums=('12d936a39182500da7541bdd42327949c241b454fde462be52d137aae3c56183')
+sha256sums=('707bf283f37e8b91816c78742d9ebf9e3effc4206a3ecc3e4c0cfbbf8ce0fd26')
build() {
cd $pkgname-$pkgver
diff --git a/extra/f-spot/PKGBUILD b/extra/f-spot/PKGBUILD
index 8d0cc7bcc..6b846e191 100644
--- a/extra/f-spot/PKGBUILD
+++ b/extra/f-spot/PKGBUILD
@@ -8,7 +8,7 @@ pkgver=0.8.2
pkgrel=3
pkgdesc="A personal photo management program for GNOME"
url="http://www.gnome.org/projects/f-spot/"
-arch=(i686 x86_64 'mips64el')
+arch=(i686 x86_64)
license=('GPL')
depends=('mono-addins' 'gnome-sharp' 'ndesk-dbus-glib' 'lcms' 'gnome-keyring-sharp' 'flickrnet' 'libgphoto2' 'desktop-file-utils' 'hicolor-icon-theme' 'xdg-utils' 'libunique')
makedepends=('intltool' 'gnome-doc-utils' 'gnome-screensaver')
diff --git a/extra/farstream/PKGBUILD b/extra/farstream/PKGBUILD
index 96d1111f1..10f56c670 100644
--- a/extra/farstream/PKGBUILD
+++ b/extra/farstream/PKGBUILD
@@ -1,8 +1,8 @@
-# $Id: PKGBUILD 169871 2012-10-30 22:25:23Z heftig $
+# $Id: PKGBUILD 170993 2012-11-14 14:37:18Z ibiru $
# Maintainer: Ionut Biru <ibiru@archlinux.org>
pkgname=farstream
-pkgver=0.2.1
+pkgver=0.2.2
pkgrel=1
pkgdesc="Farstream (formerly Farsight) - Audio/Video Communications Framework"
arch=(i686 x86_64 'mips64el')
@@ -15,10 +15,10 @@ conflicts=('farsight2')
replaces=('farsight2')
options=(!libtool)
source=(http://freedesktop.org/software/$pkgname/releases/$pkgname/$pkgname-$pkgver.tar.gz)
-md5sums=('479c42adf5cc606abcb47d58ed542414')
+md5sums=('01c20c1ed014ad4e18e55f1f6caf7877')
build() {
- cd "$pkgname-$pkgver"
+ cd $pkgname-$pkgver
./configure --prefix=/usr \
--with-package-name='Parabola GNU/Linux-libre farstream package' \
--with-package-origin='https://parabolagnulinux.org/' \
@@ -27,7 +27,7 @@ build() {
}
package() {
- cd "$pkgname-$pkgver"
+ cd $pkgname-$pkgver
make DESTDIR="$pkgdir" install
}
diff --git a/extra/ffmpeg/PKGBUILD b/extra/ffmpeg/PKGBUILD
index 5608e5531..fe9445869 100644
--- a/extra/ffmpeg/PKGBUILD
+++ b/extra/ffmpeg/PKGBUILD
@@ -1,11 +1,11 @@
-# $Id: PKGBUILD 167254 2012-09-29 12:49:31Z ibiru $
+# $Id: PKGBUILD 171263 2012-11-16 23:35:38Z ibiru $
# Maintainer : Ionut Biru <ibiru@archlinux.org>
# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
# Contributor: Paul Mattal <paul@archlinux.org>
pkgname=ffmpeg
pkgver=1.0
-pkgrel=1
+pkgrel=2
epoch=1
pkgdesc="Complete and free Internet live audio and video broadcasting solution for Linux/Unix"
arch=('i686' 'x86_64' 'mips64el')
diff --git a/extra/ffmpegthumbnailer/PKGBUILD b/extra/ffmpegthumbnailer/PKGBUILD
index d8d626bdb..e983d3d2c 100644
--- a/extra/ffmpegthumbnailer/PKGBUILD
+++ b/extra/ffmpegthumbnailer/PKGBUILD
@@ -3,37 +3,27 @@
# Contributor: boromil@gmail.com
pkgname=ffmpegthumbnailer
-pkgver=2.0.7
-pkgrel=5
+pkgver=2.0.8
+pkgrel=1
pkgdesc="Lightweight video thumbnailer that can be used by file managers."
url="http://code.google.com/p/ffmpegthumbnailer/"
license=('GPL2')
arch=('i686' 'x86_64' 'mips64el')
depends=('ffmpeg' 'libjpeg' 'libpng')
optdepends=('gvfs: support for gio uris')
-source=("http://ffmpegthumbnailer.googlecode.com/files/$pkgname-$pkgver.tar.gz"
- 'ffmpegthumbnailer.desktop' 'ffmpegapi_fix_r241.patch')
+source=("http://ffmpegthumbnailer.googlecode.com/files/$pkgname-$pkgver.tar.gz")
options=('!libtool')
-sha1sums=('b8f5371aa995fefd1fb75e306e8cd76e8c9f3a73'
- 'bdd3ae35a5c6f0e1f4b0c7926f72b3429b2eaa53'
- '4e1a6a0f06ae3ae322ea44046599ebf3ab693cb6')
+sha1sums=('2c54ca16efd953f46547e22799cfc40bd9c24533')
build() {
cd "${srcdir}/${pkgname}-${pkgver}"
- # Don't use deprecated (removed?) ffmpeg api
- patch -Np0 -i "${srcdir}/ffmpegapi_fix_r241.patch"
+ ./configure --prefix=/usr --enable-gio --enable-thumbnailer
- ./configure --prefix=/usr --enable-gio
make
}
package() {
cd "${srcdir}/${pkgname}-${pkgver}"
make DESTDIR="${pkgdir}" install
-
- # FS#24105: Generate thumbnails in nautilus
- # FS#26540: Rename to .thumbnailer for nautilus
- install -Dm644 "${srcdir}/ffmpegthumbnailer.desktop" \
- "${pkgdir}/usr/share/thumbnailers/ffmpegthumbnailer.thumbnailer"
}
diff --git a/extra/ftgl/PKGBUILD b/extra/ftgl/PKGBUILD
index 4c1163742..14c9cf343 100644
--- a/extra/ftgl/PKGBUILD
+++ b/extra/ftgl/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 168802 2012-10-16 03:14:27Z heftig $
+# $Id: PKGBUILD 171289 2012-11-16 23:57:52Z allan $
# Maintainer: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
# Contributor: Alexander Baldeck <alexander@archlinux.org>
# Contributor: tobias <tobias@archlinux.org>
@@ -6,13 +6,13 @@
pkgname=ftgl
_pkgver=2.1.3-rc5
pkgver=${_pkgver/-/}
-pkgrel=4
+pkgrel=5
pkgdesc="OpenGL library to use arbitrary fonts"
arch=(i686 x86_64 'mips64el')
url="http://ftgl.wiki.sourceforge.net/"
-license=(MIT)
-depends=(freetype2 mesa glu)
-makedepends=(doxygen)
+license=('MIT')
+depends=('freetype2' 'glu')
+makedepends=('doxygen' 'mesa')
options=('!libtool')
source=("http://downloads.sourceforge.net/$pkgname/$pkgname-$_pkgver.tar.bz2")
md5sums=('c7879018cde844059495b3029b0b6503')
diff --git a/extra/fuse/PKGBUILD b/extra/fuse/PKGBUILD
index d54a3f352..514dc00bf 100644
--- a/extra/fuse/PKGBUILD
+++ b/extra/fuse/PKGBUILD
@@ -1,10 +1,10 @@
-# $Id: PKGBUILD 164767 2012-08-04 18:59:21Z ronald $
+# $Id: PKGBUILD 171437 2012-11-17 15:03:45Z ronald $
# Maintainer: Ronald van Haren <ronald.archlinux.org>
# Contributor: Tom Gundersen <teg@jklm.no>
# Contributor: Mark Rosenstand <mark@archlinux.org>
pkgname=fuse
-pkgver=2.9.1
+pkgver=2.9.2
pkgrel=1
pkgdesc="A library that makes it possible to implement a filesystem in a userspace program."
arch=('i686' 'x86_64' 'mips64el')
@@ -16,7 +16,7 @@ backup=(etc/fuse.conf)
source=(http://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.gz
'fuse.conf')
options=(!libtool)
-sha1sums=('ed9e8ab740576a038856109cc587d52a387b223f'
+sha1sums=('fcfc005b1edcd5e8b325729a1b325ff0e8b2a5ab'
'3b42e37a741d4651099225987dc40e7f02a716ad')
build() {
diff --git a/extra/gdm/PKGBUILD b/extra/gdm/PKGBUILD
index d98153472..6bc85e9f8 100644
--- a/extra/gdm/PKGBUILD
+++ b/extra/gdm/PKGBUILD
@@ -1,10 +1,10 @@
-# $Id: PKGBUILD 170142 2012-11-03 17:25:25Z heftig $
+# $Id: PKGBUILD 171020 2012-11-15 06:19:11Z heftig $
# Maintainer: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
# Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=gdm
-pkgver=3.6.1
-pkgrel=2
+pkgver=3.6.2
+pkgrel=1
pkgdesc="Gnome Display Manager"
arch=('i686' 'x86_64' 'mips64el')
license=(GPL)
@@ -14,14 +14,14 @@ backup=(etc/pam.d/gdm-autologin etc/pam.d/gdm-fingerprint etc/pam.d/gdm-launch-e
groups=(gnome)
options=('!libtool')
depends=(libcanberra gnome-session gnome-settings-daemon metacity upower accountsservice systemd
- xorg-xrdb nss polkit-gnome xorg-server)
+ xorg-xrdb nss polkit-gnome xorg-server gnome-icon-theme)
makedepends=(itstool intltool gnome-doc-utils gobject-introspection)
optdepends=('gnome-shell: new login interface'
'fprintd: fingerprint authentication')
install=gdm.install
source=(http://ftp.gnome.org/pub/gnome/sources/$pkgname/${pkgver%.*}/$pkgname-$pkgver.tar.xz
fix_external_program_directories.patch)
-sha256sums=('aff69dde55e11b540145002c95cf966cd16376910283b385520431ced10c5031'
+sha256sums=('fbf41bd68299eccdcf456c0869771999f75d3d9bf0f57ce1038db08b54e8cbb9'
'a878680734e35c1d66252cbcfe678c3961b5ff0fa16302f8796a5e7e65ffe4a2')
build() {
diff --git a/extra/glpk/PKGBUILD b/extra/glpk/PKGBUILD
index 072b481e6..f4a7dde1a 100644
--- a/extra/glpk/PKGBUILD
+++ b/extra/glpk/PKGBUILD
@@ -1,25 +1,27 @@
+# $Id: PKGBUILD 171320 2012-11-17 07:46:20Z eric $
# Maintainer: Ronald van Haren <ronald.archlinux.org>
# Contributor: bzklrm <bzklrm@gmail.com>
# Additional contributors Senjin, Xavier, dundee
pkgname=glpk
pkgver=4.47
-pkgrel=1.1
+pkgrel=2
pkgdesc="GNU Linear Programming Kit : solve LP, MIP and other problems."
arch=('i686' 'x86_64' 'mips64el')
url="http://www.gnu.org/software/glpk/glpk.html"
license=('GPL')
depends=('glibc')
options=('!libtool')
-source=("http://ftp.gnu.org/gnu/glpk/${pkgname}-${pkgver}.tar.gz")
-sha1sums=('35e16d3167389b6bc75eb51b4b48590db59f789c')
+source=(http://ftp.gnu.org/gnu/glpk/${pkgname}-${pkgver}.tar.gz{,.sig})
+sha1sums=('35e16d3167389b6bc75eb51b4b48590db59f789c'
+ 'e29069fb4e8e34929a980a8659b3dd7ccd92a676')
build() {
- cd ${srcdir}/${pkgname}-${pkgver}
+ cd "${srcdir}/${pkgname}-${pkgver}"
./configure --prefix=/usr
- if [ "$CARCH" == "x86_64" ]; then
+ if [ "$CARCH" != "i686" ]; then
make CFLAGS="$CFLAGS -fPIC"
else
make
@@ -27,6 +29,8 @@ build() {
}
package(){
- cd ${srcdir}/${pkgname}-${pkgver}
+ cd "${srcdir}/${pkgname}-${pkgver}"
make DESTDIR="${pkgdir}" install
+ install -Dm644 doc/glpk.pdf "${pkgdir}/usr/share/doc/glpk/glpk.pdf"
+ install -Dm644 doc/gmpl.pdf "${pkgdir}/usr/share/doc/glpk/gmpl.pdf"
}
diff --git a/extra/gnome-bluetooth/PKGBUILD b/extra/gnome-bluetooth/PKGBUILD
index 5b1fee7a1..7ae8a9b0a 100644
--- a/extra/gnome-bluetooth/PKGBUILD
+++ b/extra/gnome-bluetooth/PKGBUILD
@@ -1,10 +1,10 @@
-# $Id: PKGBUILD 169888 2012-10-30 22:33:39Z heftig $
+# $Id: PKGBUILD 171034 2012-11-15 17:49:18Z ibiru $
# Maintainer: Ionut Biru <ibiru@archlinux.org>
# Contributor: Roman Kyrylych <roman@archlinux.org>
pkgname=gnome-bluetooth
-pkgver=3.6.0
-pkgrel=2
+pkgver=3.6.1
+pkgrel=1
pkgdesc="The GNOME Bluetooth Subsystem"
arch=('i686' 'x86_64' 'mips64el')
url="http://live.gnome.org/GnomeBluetooth"
@@ -15,7 +15,7 @@ options=('!libtool' '!emptydirs')
install=gnome-bluetooth.install
source=(http://ftp.gnome.org/pub/GNOME/sources/$pkgname/${pkgver%.*}/$pkgname-$pkgver.tar.xz
61-gnome-bluetooth-rfkill.rules)
-sha256sums=('021d9711d76e6d195812b1804ff39b5936ce978c25f900bc92e4bffd7045d306'
+sha256sums=('71d72a4637916450987f69c71d374c5bc1102be6dd9d9d7f923aa924659f768a'
'8dd2d3637f380a89e72f65e6c8021e994ccbdc645f1a1b1dbffe74ac9f061f53')
build() {
diff --git a/extra/gnome-control-center/PKGBUILD b/extra/gnome-control-center/PKGBUILD
index 819d15825..df659050e 100644
--- a/extra/gnome-control-center/PKGBUILD
+++ b/extra/gnome-control-center/PKGBUILD
@@ -1,10 +1,10 @@
-# $Id: PKGBUILD 169892 2012-10-30 22:33:48Z heftig $
+# $Id: PKGBUILD 170990 2012-11-14 14:28:31Z ibiru $
# Maintainer: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
# Contributor: Jan de Groot <jgc@archlinux.org>
pkgname=gnome-control-center
-pkgver=3.6.2
-pkgrel=1
+pkgver=3.6.3
+pkgrel=2
pkgdesc="The Control Center for GNOME"
arch=('i686' 'x86_64' 'mips64el')
depends=('accountsservice' 'cups-pk-helper' 'gnome-bluetooth' 'gnome-desktop' 'gnome-menus'
@@ -19,7 +19,7 @@ install=gnome-control-center.install
license=('GPL')
options=('!libtool' '!emptydirs')
source=(http://download.gnome.org/sources/$pkgname/${pkgver%.*}/$pkgname-$pkgver.tar.xz)
-sha256sums=('3ab5aa304b424006c9f38ce2ff50afbf38e167ca632c64509bf30aa3c786afb7')
+sha256sums=('2ae23972bc64f62b4facd12dd5adce212bda02491eb6e56bbf195332157d21fb')
build() {
cd $pkgname-$pkgver
@@ -28,7 +28,7 @@ build() {
--localstatedir=/var --disable-static \
--enable-systemd --with-libsocialweb \
--disable-update-mimedb \
- --without-cheese
+ --without-cheese --disable-ibus
#https://bugzilla.gnome.org/show_bug.cgi?id=656229
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
@@ -39,4 +39,8 @@ package() {
cd $pkgname-$pkgver
make DESTDIR="$pkgdir" install
+
+ # Fix a warning
+ chown 102:0 "$pkgdir/usr/share/polkit-1/rules.d"
+ chmod 700 "$pkgdir/usr/share/polkit-1/rules.d"
}
diff --git a/extra/gnome-menus/PKGBUILD b/extra/gnome-menus/PKGBUILD
index cf65c9976..d0ec12f60 100644
--- a/extra/gnome-menus/PKGBUILD
+++ b/extra/gnome-menus/PKGBUILD
@@ -1,8 +1,8 @@
-# $Id: PKGBUILD 169902 2012-10-30 22:34:20Z heftig $
+# $Id: PKGBUILD 170973 2012-11-14 07:13:15Z heftig $
# Maintainer: Jan de Groot <jan@archlinux.org>
pkgname=gnome-menus
-pkgver=3.6.0
+pkgver=3.6.1
pkgrel=1
pkgdesc="GNOME menu specifications"
arch=('i686' 'x86_64' 'mips64el')
@@ -13,7 +13,7 @@ license=('GPL' 'LGPL')
url="http://www.gnome.org"
source=(http://ftp.gnome.org/pub/gnome/sources/$pkgname/${pkgver%.*}/$pkgname-$pkgver.tar.xz
menus.patch)
-sha256sums=('523ac10729e28f9acde4785e61dcb895828fd89e39b38b68f6c14ec815805a0b'
+sha256sums=('1615f6852280a161cd137d5b8b59f35519a3a7ba89738f55c578325b0512043e'
'df2779777906b038fa911dc745534564ede9524a64ab368e2f6f8e38d54e7acc')
build() {
diff --git a/extra/gnome-online-accounts/PKGBUILD b/extra/gnome-online-accounts/PKGBUILD
index 88b69cc6f..af08e2397 100644
--- a/extra/gnome-online-accounts/PKGBUILD
+++ b/extra/gnome-online-accounts/PKGBUILD
@@ -1,8 +1,8 @@
-# $Id: PKGBUILD 169904 2012-10-30 22:34:24Z heftig $
+# $Id: PKGBUILD 170937 2012-11-13 16:38:27Z ibiru $
# Maintainer: Ionut Biru <ibiru@archlinux.org>
pkgname=gnome-online-accounts
-pkgver=3.6.0
+pkgver=3.6.2
pkgrel=1
pkgdesc="GNOME service to access online accounts"
arch=(i686 x86_64 mips64el)
@@ -13,16 +13,16 @@ makedepends=('intltool' 'libxslt' 'gobject-introspection' 'docbook-xsl')
options=(!libtool)
install=$pkgname.install
source=(http://download.gnome.org/sources/$pkgname/${pkgver:0:3}/$pkgname-$pkgver.tar.xz)
-sha256sums=('2a88772873935b1c23e8e6b7a2333d8cfb225755aba22e0977129f13351028f7')
+sha256sums=('55d207d2dc5428f41b0a504aa3edd996a6167a5625d9e11d678f33f282935fa7')
build() {
- cd "$pkgname-$pkgver"
+ cd $pkgname-$pkgver
./configure --prefix=/usr --libexec=/usr/lib/gnome-online-accounts
make
}
package() {
- cd "$pkgname-$pkgver"
+ cd $pkgname-$pkgver
make DESTDIR="$pkgdir" install
}
diff --git a/extra/gnome-settings-daemon/PKGBUILD b/extra/gnome-settings-daemon/PKGBUILD
index 383d76d91..6ee46d6b9 100644
--- a/extra/gnome-settings-daemon/PKGBUILD
+++ b/extra/gnome-settings-daemon/PKGBUILD
@@ -1,14 +1,14 @@
-# $Id: PKGBUILD 170537 2012-11-08 11:30:19Z heftig $
+# $Id: PKGBUILD 170991 2012-11-14 14:29:35Z ibiru $
# Maintainer: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
pkgname=gnome-settings-daemon
-pkgver=3.6.2
-pkgrel=1
+pkgver=3.6.3
+pkgrel=2
pkgdesc="The GNOME Settings daemon"
arch=('i686' 'x86_64' 'mips64el')
license=('GPL')
depends=('dconf' 'gnome-desktop' 'gsettings-desktop-schemas' 'hicolor-icon-theme' 'libcanberra-pulse' 'libnotify'
- 'libsystemd' 'libwacom' 'nss' 'pulseaudio' 'pulseaudio-alsa' 'upower' 'ibus')
+ 'libsystemd' 'libwacom' 'nss' 'pulseaudio' 'pulseaudio-alsa' 'upower')
makedepends=('intltool' 'xf86-input-wacom' 'libxslt' 'docbook-xsl')
options=('!emptydirs' '!libtool')
install=gnome-settings-daemon.install
@@ -16,7 +16,7 @@ url="http://www.gnome.org"
groups=('gnome')
source=(http://ftp.gnome.org/pub/gnome/sources/$pkgname/${pkgver%.*}/$pkgname-$pkgver.tar.xz
0001-power-and-media-keys-Use-logind-for-suspending-and-r.patch)
-sha256sums=('d718f9fdf3bb26fc71861548f834364955d37532871ec2e89a5ad0d63857215f'
+sha256sums=('606aaaba9cc7f51035702aead46c8bb595917a09cb947b396a579ea443328cdc'
'c4aab9b45346fbae18808358346208f989cce8bf9c9eb753e2af7eca73715109')
build() {
@@ -30,7 +30,7 @@ build() {
./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \
--libexecdir=/usr/lib/gnome-settings-daemon --disable-static \
- --enable-systemd
+ --enable-systemd --disable-ibus
#https://bugzilla.gnome.org/show_bug.cgi?id=656231
sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0/g' libtool
diff --git a/extra/gsl/PKGBUILD b/extra/gsl/PKGBUILD
index 6d49066a9..70ac01816 100644
--- a/extra/gsl/PKGBUILD
+++ b/extra/gsl/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 151402 2012-02-26 10:25:31Z pierre $
+# $Id: PKGBUILD 171358 2012-11-17 09:32:49Z eric $
# Maintainer: Ronald van Haren <ronald.archlinux.org>
# Contributor: Juergen Hoetzel <juergen.archlinux.org>
# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
@@ -19,12 +19,17 @@ sha1sums=('d914f84b39a5274b0a589d9b83a66f44cd17ca8e')
build() {
unset LDFLAGS
- cd ${srcdir}/${pkgname}-${pkgver}
+ cd "${srcdir}/${pkgname}-${pkgver}"
./configure --prefix=/usr
make
}
+check() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make check
+}
+
package() {
- cd ${srcdir}/${pkgname}-${pkgver}
- make DESTDIR=${pkgdir} install
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
}
diff --git a/extra/gst-plugins-ugly/PKGBUILD b/extra/gst-plugins-ugly/PKGBUILD
index e0a28f18f..f118e9e25 100644
--- a/extra/gst-plugins-ugly/PKGBUILD
+++ b/extra/gst-plugins-ugly/PKGBUILD
@@ -1,9 +1,9 @@
-# $Id: PKGBUILD 169931 2012-10-30 22:45:31Z heftig $
+# $Id: PKGBUILD 171264 2012-11-16 23:35:40Z ibiru $
# Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=gst-plugins-ugly
pkgver=1.0.2
-pkgrel=1
+pkgrel=2
pkgdesc="GStreamer Multimedia Framework Ugly Plugins"
arch=('i686' 'x86_64' 'mips64el')
license=('LGPL')
diff --git a/extra/gstreamer0.10-ugly/PKGBUILD b/extra/gstreamer0.10-ugly/PKGBUILD
index b0331ca82..aa92ed560 100644
--- a/extra/gstreamer0.10-ugly/PKGBUILD
+++ b/extra/gstreamer0.10-ugly/PKGBUILD
@@ -1,10 +1,10 @@
-# $Id: PKGBUILD 163150 2012-07-08 09:31:14Z ibiru $
+# $Id: PKGBUILD 171265 2012-11-16 23:35:43Z ibiru $
# Maintainer: Jan de Groot <jgc@archlinux.org>
pkgbase=gstreamer0.10-ugly
pkgname=('gstreamer0.10-ugly' 'gstreamer0.10-ugly-plugins')
pkgver=0.10.19
-pkgrel=2
+pkgrel=3
arch=('i686' 'x86_64' 'mips64el')
license=('LGPL')
makedepends=('pkgconfig' 'gstreamer0.10-base>=0.10.34' 'libdvdread' 'lame' 'libmpeg2' 'a52dec' 'libmad' 'libsidplay' 'libcdio' 'x264' 'opencore-amr')
diff --git a/extra/kdebindings-qyoto/PKGBUILD b/extra/kdebindings-qyoto/PKGBUILD
index 2d80607b4..88eab809b 100644
--- a/extra/kdebindings-qyoto/PKGBUILD
+++ b/extra/kdebindings-qyoto/PKGBUILD
@@ -6,7 +6,7 @@ pkgver=4.9.3
pkgrel=1
pkgdesc=".NET/Mono bindings for the Qt libraries"
url="https://projects.kde.org/projects/kde/kdebindings/csharp/qyoto"
-arch=('i686' 'x86_64' 'mips64el')
+arch=('i686' 'x86_64')
license=('GPL' 'LGPL' 'FDL')
groups=('kdebindings')
depends=('kdebindings-smokeqt' 'mono')
diff --git a/extra/kdelibs3/PKGBUILD b/extra/kdelibs3/PKGBUILD
index f0ea39cbc..b8e4ebbe7 100644
--- a/extra/kdelibs3/PKGBUILD
+++ b/extra/kdelibs3/PKGBUILD
@@ -7,7 +7,7 @@ pkgname=kdelibs3
pkgver=3.5.10
pkgrel=15
pkgdesc='KDE3 Core Libraries'
-arch=('i686' 'x86_64' 'mips64el')
+arch=('i686' 'x86_64')
url='http://www.kde.org'
license=('GPL' 'LGPL')
depends=('libxslt' 'pcre' 'libart-lgpl' 'alsa-lib' 'libcups' 'jasper'
diff --git a/extra/kismet/PKGBUILD b/extra/kismet/PKGBUILD
index 0fb18cc6d..d31664fdb 100644
--- a/extra/kismet/PKGBUILD
+++ b/extra/kismet/PKGBUILD
@@ -1,31 +1,31 @@
-# $Id: PKGBUILD 150900 2012-02-23 13:55:06Z allan $
-# Maintainer: Angel Velasquez <angvp@archlinux.org>
+# $Id: PKGBUILD 171085 2012-11-16 14:51:57Z allan $
+# Maintainer:
+# Contributor: Angel Velasquez <angvp@archlinux.org>
# Contributor: Jason Chu <jason@archlinux.org>
# Contributor: Juergen Hoetzel <jason@archlinux.org>
pkgname=kismet
pkgver=2011_03_R2
_realver="${pkgver//_/-}"
-pkgrel=4.1
+pkgrel=5
pkgdesc="802.11 layer2 wireless network detector, sniffer, and intrusion detection system"
arch=('i686' 'x86_64' 'mips64el')
url="http://www.kismetwireless.net/"
license=('GPL')
-depends=('libcap' 'libnl1' 'pcre' 'ncurses' 'libpcap>=1.0.0' 'bluez' 'openssl') # already in core: ('linux-api-headers' 'glibc' 'libusb' 'libusb-compat')
-makedepends=() # already in core: ('grep' 'gcc-libs')
+depends=('libcap' 'libnl1' 'pcre' 'ncurses' 'libpcap>=1.0.0' 'bluez' 'openssl' 'libusb-compat')
optdepends=('gpsd: log coordinates of detected networks'
'wireshark-cli: provide OUI files used to determine device manufacturer'
'wireshark-cli: mergecap, to merge multiple capture files'
'sox: provide the default kismet sound playback binary'
'festival: text-to-speech support'
'flite: alternative/lightweight text-to-speech support'
- 'mac80211-driver: full rfmon support'
'ruby: ruby interface')
backup=('etc/kismet.conf' 'etc/kismet_drone.conf')
install=kismet.install
changelog=kismet.changelog
-source=("http://www.kismetwireless.net/code/${pkgname}-${_realver}.tar.gz")
-md5sums=('8bf077e8111e6dc8c12cadefdf40aadd')
+source=("http://www.kismetwireless.net/code/${pkgname}-${_realver}.tar.gz"{,.asc})
+md5sums=('8bf077e8111e6dc8c12cadefdf40aadd'
+ '500deff918ede6d0bc392a0419322833')
build() {
cd "${srcdir}/${pkgname}-${_realver}"
diff --git a/extra/latex2rtf/PKGBUILD b/extra/latex2rtf/PKGBUILD
index 31638e319..b2032ff4f 100644
--- a/extra/latex2rtf/PKGBUILD
+++ b/extra/latex2rtf/PKGBUILD
@@ -1,10 +1,10 @@
-# $Id: PKGBUILD 164721 2012-08-04 06:54:39Z remy $
+# $Id: PKGBUILD 171488 2012-11-18 03:22:38Z eric $
# Maintainer: Rémy Oudompheng <remy@archlinux.org>
# Contributor: John Proctor <jproctor@prium.net>
pkgname=latex2rtf
pkgver=2.2.1c
-pkgrel=1
+pkgrel=2
pkgdesc="LaTeX to RTF converter"
arch=('i686' 'x86_64' 'mips64el')
url="http://latex2rtf.sourceforge.net/"
@@ -15,12 +15,13 @@ checkdepends=(
'texlive-core'
'texlive-latexextra' # for a4wide package
)
+install=latex2rtf.install
source=(http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.gz)
sha1sums=('3fd5874de8988cf45f8862d2b3db8ed13a04caa4')
build() {
cd "${srcdir}/${pkgname}-2.2.1"
- make
+ make DESTDIR=/usr
}
check() {
@@ -30,6 +31,6 @@ check() {
package() {
cd "${srcdir}/${pkgname}-2.2.1"
- make DESTDIR=${pkgdir}/usr install
- sed -i -e 's|error "no input file specified"| echo "error: no input file specified"|' ${pkgdir}/usr/bin/latex2png
+ make DESTDIR="${pkgdir}/usr" install install-info
+ sed -i -e 's|error "no input file specified"| echo "error: no input file specified"|' "${pkgdir}/usr/bin/latex2png"
}
diff --git a/extra/latex2rtf/latex2rtf.install b/extra/latex2rtf/latex2rtf.install
new file mode 100644
index 000000000..8dbcca926
--- /dev/null
+++ b/extra/latex2rtf/latex2rtf.install
@@ -0,0 +1,16 @@
+infodir=usr/share/info
+file=latex2rtf.info
+
+post_install() {
+ [[ -x usr/bin/install-info ]] || return 0
+ install-info "$infodir/$file.gz" "$infodir/dir" 2> /dev/null
+}
+
+post_upgrade() {
+ post_install "$1"
+}
+
+pre_remove() {
+ [[ -x usr/bin/install-info ]] || return 0
+ install-info --delete "$infodir/$file.gz" "$infodir/dir" 2> /dev/null
+}
diff --git a/extra/libgdiplus/PKGBUILD b/extra/libgdiplus/PKGBUILD
index 5c1573fcb..9553d8b3b 100644
--- a/extra/libgdiplus/PKGBUILD
+++ b/extra/libgdiplus/PKGBUILD
@@ -1,15 +1,14 @@
-# $Id: PKGBUILD 148818 2012-02-05 11:51:42Z ibiru $
+# $Id: PKGBUILD 171478 2012-11-18 00:00:45Z eric $
# Maintainer: Daniel Isenmann <daniel@archlinux.org>
pkgname=libgdiplus
pkgver=2.10
-pkgrel=2.1
+pkgrel=3
pkgdesc="An Open Source Implementation of the GDI+ API"
arch=(i686 x86_64 'mips64el')
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'
@@ -18,12 +17,12 @@ md5sums=('451966e8f637e3a1f02d1d30f900255d'
build() {
cd "${srcdir}/${pkgname}-${pkgver}"
patch -p0 <../libpng15.patch
- ./configure --prefix=/usr --with-cairo=system || return 1
-
- make || return 1
+ ./configure --prefix=/usr --with-cairo=system
+
+ make
}
package() {
cd "${srcdir}/${pkgname}-${pkgver}"
- make DESTDIR="${pkgdir}" install || return 1
+ make DESTDIR="${pkgdir}" install
}
diff --git a/extra/libgpod/PKGBUILD b/extra/libgpod/PKGBUILD
index 242c77dfd..b3a4c710f 100644
--- a/extra/libgpod/PKGBUILD
+++ b/extra/libgpod/PKGBUILD
@@ -9,9 +9,12 @@ pkgdesc="A shared library to access the contents of an iPod"
arch=(i686 x86_64 'mips64el')
license=('LGPL')
depends=('gdk-pixbuf2' 'mutagen' 'sg3_utils' 'libimobiledevice' 'libplist')
-makedepends=('intltool' 'swig' 'docbook-xsl' 'pygobject2-devel' 'gtk-sharp-2')
-optdepends=('gtk-sharp-2: Mono bindings'
- 'python2-gobject2: python bindings')
+makedepends=('intltool' 'swig' 'docbook-xsl' 'pygobject2-devel')
+optdepends=('python2-gobject2: python bindings')
+if [ "$CARCH" != "mips64el" ]; then
+ makedepends+=('gtk-sharp-2')
+ optdepends+=('gtk-sharp-2: Mono bindings')
+fi
url="http://www.gtkpod.org/libgpod/"
source=(http://downloads.sourceforge.net/sourceforge/gtkpod/${pkgname}-${pkgver}.tar.bz2)
options=('!libtool' '!emptydirs')
@@ -28,4 +31,3 @@ package() {
cd "${srcdir}/${pkgname}-${pkgver}"
make PREFIX=/usr DESTDIR="${pkgdir}" install
}
-
diff --git a/extra/libgsf/PKGBUILD b/extra/libgsf/PKGBUILD
index 78ed106f5..c79366337 100644
--- a/extra/libgsf/PKGBUILD
+++ b/extra/libgsf/PKGBUILD
@@ -1,9 +1,9 @@
-# $Id: PKGBUILD 166587 2012-09-12 17:38:22Z jgc $
+# $Id: PKGBUILD 170960 2012-11-14 03:19:40Z heftig $
# Maintainer: Jan de Groot <jgc@archlinux.org>
# Contributor: Sarah Hay <sarahhay@mb.sympatico.ca>
pkgname=libgsf
-pkgver=1.14.24
+pkgver=1.14.25
pkgrel=1
arch=(i686 x86_64 mips64el)
pkgdesc="The GNOME Structured File Library is a utility library for reading and writing structured file formats"
@@ -13,7 +13,7 @@ options=('!libtool')
depends=('libxml2' 'gdk-pixbuf2' 'bzip2')
makedepends=('intltool' 'gobject-introspection')
source=(http://ftp.gnome.org/pub/GNOME/sources/$pkgname/1.14/$pkgname-$pkgver.tar.xz)
-sha256sums=('975fc00a1332167e2baf649f8e2637884f798db1c8bb04abece2d5141663abff')
+sha256sums=('127548f07e07951984fb139c3f89d65b9e471aefe6555387de03e1113944d1a2')
build() {
cd "$pkgname-$pkgver"
diff --git a/extra/libgweather/PKGBUILD b/extra/libgweather/PKGBUILD
index 4885fc077..0749908f3 100644
--- a/extra/libgweather/PKGBUILD
+++ b/extra/libgweather/PKGBUILD
@@ -1,8 +1,8 @@
-# $Id: PKGBUILD 169952 2012-10-30 22:46:46Z heftig $
+# $Id: PKGBUILD 170931 2012-11-13 12:56:29Z heftig $
# Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=libgweather
-pkgver=3.6.0
+pkgver=3.6.2
pkgrel=1
pkgdesc="Provides access to weather information from the net"
arch=('i686' 'x86_64' 'mips64el')
@@ -15,7 +15,7 @@ install=libgweather.install
source=(http://ftp.gnome.org/pub/gnome/sources/$pkgname/${pkgver%.*}/$pkgname-$pkgver.tar.xz
gettext-not-xml.patch
no_external_gettext.patch)
-sha256sums=('93c9ef9bba3feb559c02b860909915fa9ffc7c08b4789a825939236e3e84b676'
+sha256sums=('0f2aeff290751590ca51e806c3d09054bf87b86b63b89f5179043a9b3fa8a0b0'
'40325e0b5464ebb75eaad3c9292c0bab7b15cfefb93011d9ccc0ab82635a9533'
'f07ac07a70ad4999c3acd5d5b82aabd8831e6a45beb9aaed239f212057ded672')
diff --git a/extra/llvm/PKGBUILD b/extra/llvm/PKGBUILD
index f3576a1bc..2deb594a2 100644
--- a/extra/llvm/PKGBUILD
+++ b/extra/llvm/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 169336 2012-10-19 21:28:16Z foutrelis $
+# $Id: PKGBUILD 171485 2012-11-18 02:09:02Z foutrelis $
# Maintainer: Evangelos Foutras <evangelos@foutrelis.com>
# Contributor: Jan "heftig" Steffens <jan.steffens@gmail.com>
# Contributor: Sebastian Nowicki <sebnow@gmail.com>
@@ -11,7 +11,7 @@
pkgname=('llvm' 'llvm-ocaml' 'clang' 'clang-analyzer')
pkgver=3.1
-pkgrel=5
+pkgrel=6
arch=('i686' 'x86_64' 'mips64el')
url="http://llvm.org/"
license=('custom:University of Illinois/NCSA Open Source License')
@@ -25,7 +25,8 @@ source=(http://llvm.org/releases/$pkgver/$pkgname-$pkgver.src.tar.gz
clang-pure64.patch
enable-lto.patch
llvm-3.1-fix-debug-line-info.patch
- clang-3.1-fix-libprofile_rt.a-location.patch)
+ clang-3.1-fix-libprofile_rt.a-location.patch
+ clang-3.1-fix-lwg-2141.patch)
sha256sums=('1ea05135197b5400c1f88d00ff280d775ce778f8f9ea042e25a1e1e734a4b9ab'
'ff63e215dcd3e2838ffdea38502f8d35bab17e487f3c3799579961e452d5a786'
'563d8a5ef86123ed8775e115ad7f90c1aa3e80f70b4e587f1bccab2c10753558'
@@ -35,7 +36,8 @@ sha256sums=('1ea05135197b5400c1f88d00ff280d775ce778f8f9ea042e25a1e1e734a4b9ab'
'288a82fbff17bc554f5863734246500e637882af33ee8511019d5e0d6cd20524'
'f7145e203ffb4ce2c01976027f7840a9520e5341a9945f2459b6b11e5422d5b7'
'db1f1aadebbc4c4232bdad49fb9b7dc61eac727085c63154b870fa9ce64fd18d'
- '0d32ad283566357ca1bfbeb4cbe6b0b961943b79d3d718ed0435101c05629137')
+ '0d32ad283566357ca1bfbeb4cbe6b0b961943b79d3d718ed0435101c05629137'
+ 'a3ac405a983643c9cb9081692a3f4d28e5d19571fa12b0517fb2b1f2acab0ad0')
build() {
cd "$srcdir/$pkgname-$pkgver.src"
@@ -81,6 +83,9 @@ build() {
patch -d tools/clang -Np1 -i \
"$srcdir/clang-3.1-fix-libprofile_rt.a-location.patch"
+ # Fix FS#32731: [clang] 3.1 fails to compile libstdc++ <chrono> 4.7.2
+ patch -d tools/clang -Np0 -i "$srcdir/clang-3.1-fix-lwg-2141.patch"
+
# Fix FS#31098: LLVM 3.1 produces invalid debug information
# http://llvm.org/bugs/show_bug.cgi?id=13211
patch -Np1 -i "$srcdir/llvm-3.1-fix-debug-line-info.patch"
diff --git a/extra/llvm/clang-3.1-fix-lwg-2141.patch b/extra/llvm/clang-3.1-fix-lwg-2141.patch
new file mode 100644
index 000000000..af10a5c33
--- /dev/null
+++ b/extra/llvm/clang-3.1-fix-lwg-2141.patch
@@ -0,0 +1,65 @@
+Index: test/SemaCXX/libstdcxx_common_type_hack.cpp
+===================================================================
+--- test/SemaCXX/libstdcxx_common_type_hack.cpp (revision 0)
++++ test/SemaCXX/libstdcxx_common_type_hack.cpp (revision 166455)
+@@ -0,0 +1,33 @@
++// RUN: %clang_cc1 -fsyntax-only %s -std=c++11 -verify
++
++// This is a test for an egregious hack in Clang that works around
++// an issue with GCC's <type_traits> implementation. std::common_type
++// relies on pre-standard rules for decltype(), in which it doesn't
++// produce reference types so frequently.
++
++#ifdef BE_THE_HEADER
++
++#pragma GCC system_header
++namespace std {
++ template<typename T> T &&declval();
++
++ template<typename...Ts> struct common_type {};
++ template<typename A, typename B> struct common_type<A, B> {
++ // Under the rules in the standard, this always produces a
++ // reference type.
++ typedef decltype(true ? declval<A>() : declval<B>()) type;
++ };
++}
++
++#else
++
++#define BE_THE_HEADER
++#include "libstdcxx_common_type_hack.cpp"
++
++using T = int;
++using T = std::common_type<int, int>::type;
++
++using U = int; // expected-note {{here}}
++using U = decltype(true ? std::declval<int>() : std::declval<int>()); // expected-error {{different types}}
++
++#endif
+Index: lib/Sema/SemaTemplateInstantiateDecl.cpp
+===================================================================
+--- lib/Sema/SemaTemplateInstantiateDecl.cpp (revision 166454)
++++ lib/Sema/SemaTemplateInstantiateDecl.cpp (revision 166455)
+@@ -158,6 +158,22 @@
+ SemaRef.MarkDeclarationsReferencedInType(D->getLocation(), DI->getType());
+ }
+
++ // HACK: g++ has a bug where it gets the value kind of ?: wrong.
++ // libstdc++ relies upon this bug in its implementation of common_type.
++ // If we happen to be processing that implementation, fake up the g++ ?:
++ // semantics. See LWG issue 2141 for more information on the bug.
++ const DecltypeType *DT = DI->getType()->getAs<DecltypeType>();
++ CXXRecordDecl *RD = dyn_cast<CXXRecordDecl>(D->getDeclContext());
++ if (DT && RD && isa<ConditionalOperator>(DT->getUnderlyingExpr()) &&
++ DT->isReferenceType() &&
++ RD->getEnclosingNamespaceContext() == SemaRef.getStdNamespace() &&
++ RD->getIdentifier() && RD->getIdentifier()->isStr("common_type") &&
++ D->getIdentifier() && D->getIdentifier()->isStr("type") &&
++ SemaRef.getSourceManager().isInSystemHeader(D->getLocStart()))
++ // Fold it to the (non-reference) type which g++ would have produced.
++ DI = SemaRef.Context.getTrivialTypeSourceInfo(
++ DI->getType().getNonReferenceType());
++
+ // Create the new typedef
+ TypedefNameDecl *Typedef;
+ if (IsTypeAlias)
diff --git a/extra/lyx/PKGBUILD b/extra/lyx/PKGBUILD
index 862de73d7..c8456704c 100644
--- a/extra/lyx/PKGBUILD
+++ b/extra/lyx/PKGBUILD
@@ -1,9 +1,9 @@
-# $Id: PKGBUILD 164769 2012-08-04 19:30:05Z ronald $
+# $Id: PKGBUILD 171457 2012-11-17 16:07:22Z ronald $
# Maintainer: Ronald van Haren <ronald.archlinux.org>
# Contributor: Jason Chu <jason@archlinux.org>
pkgname=lyx
-pkgver=2.0.4
+pkgver=2.0.5
pkgrel=1
pkgdesc="An advanced WYSIWYM document processor & LaTeX front-end"
arch=('i686' 'x86_64' 'mips64el')
@@ -18,7 +18,7 @@ source=(ftp://ftp.lip6.fr/pub/lyx/stable/2.0.x/$pkgname-$pkgver.tar.xz
backup=('etc/lyx/lyxrc.dist')
install=lyx.install
options=('emptydirs')
-sha1sums=('4d384060553c74912e13f98e1788a6f978c58c2e'
+sha1sums=('afffd3fd2f2429c93402a4923d7a2838e0758d28'
'e2b8f6d6cdeec41e1d5795167f5557e4a6ea28ad'
'56416642cc3da2a13b87b84e6b87c1a239f3d09a')
diff --git a/extra/maxima/PKGBUILD b/extra/maxima/PKGBUILD
index a034591fe..7699ac4b9 100644
--- a/extra/maxima/PKGBUILD
+++ b/extra/maxima/PKGBUILD
@@ -1,10 +1,10 @@
-# $Id: PKGBUILD 168309 2012-10-08 09:18:38Z juergen $
+# $Id: PKGBUILD 171297 2012-11-17 02:13:54Z allan $
# Maintainer: Ronald van Haren <ronald.archlinux.org>
# Contributor: Damir Perisa <damir@archlinux.org>
pkgname=maxima
pkgver=5.28.0
-pkgrel=2
+pkgrel=4
pkgdesc="Maxima - a sophisticated computer algebra system"
arch=('i686' 'x86_64' 'mips64el')
license=('GPL')
@@ -12,7 +12,7 @@ url="http://maxima.sourceforge.net"
if [ "${CARCH}" == "mips64el" ] ; then
depends=('clisp' 'texinfo' 'sh')
else
- depends=('sbcl=1.1.0' 'texinfo' 'sh')
+ depends=('sbcl=1.1.1-2' 'texinfo' 'sh')
fi
makedepends=('python2')
optdepends=('gnuplot: plotting capabilities' 'rlwrap: readline support via /usr/bin/rmaxima' 'tk: graphical xmaxima interface')
diff --git a/extra/mesa/PKGBUILD b/extra/mesa/PKGBUILD
index e51457392..b03c551e7 100644
--- a/extra/mesa/PKGBUILD
+++ b/extra/mesa/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 168551 2012-10-13 11:42:56Z andyrtr $
+# $Id: PKGBUILD 171458 2012-11-17 21:07:48Z andyrtr $
# Maintainer: Jan de Groot <jgc@archlinux.org>
# Maintainer: Andreas Radke <andyrtr@archlinux.org>
@@ -13,7 +13,7 @@ _git=false
if [ "${_git}" = "true" ]; then
pkgver=8.99.git_$_gitdate
else
- pkgver=9.0
+ pkgver=9.0.1
fi
pkgrel=1
arch=('i686' 'x86_64' 'mips64el')
@@ -23,8 +23,7 @@ makedepends=('glproto>=1.4.16' 'libdrm>=2.4.39' 'libxxf86vm>=1.1.2' 'libxdamage>
url="http://mesa3d.sourceforge.net"
license=('custom')
options=('!libtool')
-source=(LICENSE
- git_fixes.diff)
+source=(LICENSE)
if [ "${_git}" = "true" ]; then
# mesa git shot from 9.0 branch - see for state: http://cgit.freedesktop.org/mesa/mesa/log/?h=9.0
#source=(${source[@]} 'ftp://ftp.archlinux.org/other/mesa/mesa-41d14eaf193c6b1eb87fe1998808a887f1c6c698.tar.gz')
@@ -36,8 +35,7 @@ if [ "${_git}" = "true" ]; then
fi
source+=(mesa-loongson.patch)
md5sums=('5c65a0fe315dd347e09b1f2826a1df5a'
- '2ebce12196dbb7b69bdf7ef53b8afdee'
- '60e557ce407be3732711da484ab3db6c'
+ '97d6554c05ea7449398afe3a0ede7018'
'598c24dccfcdcc99c07d883f7c09f36a')
build() {
@@ -306,7 +304,3 @@ package_svga-dri() {
install -m755 -d "${pkgdir}/usr/share/licenses/svga-dri"
install -m644 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/svga-dri/"
}
-md5sums=('5c65a0fe315dd347e09b1f2826a1df5a'
- '2ebce12196dbb7b69bdf7ef53b8afdee'
- '60e557ce407be3732711da484ab3db6c'
- '598c24dccfcdcc99c07d883f7c09f36a')
diff --git a/extra/networkmanager-pptp/PKGBUILD b/extra/networkmanager-pptp/PKGBUILD
index 61ac1f7f2..475d9920a 100644
--- a/extra/networkmanager-pptp/PKGBUILD
+++ b/extra/networkmanager-pptp/PKGBUILD
@@ -1,9 +1,9 @@
-# $Id: PKGBUILD 166521 2012-09-09 15:41:05Z heftig $
+# $Id: PKGBUILD 171364 2012-11-17 11:09:07Z ibiru $
# Maintainer: Ionut Biru <ibiru@archlinux.org>
pkgname=networkmanager-pptp
pkgver=0.9.6.0
-pkgrel=1
+pkgrel=2
pkgdesc="NetworkManager VPN plugin for pptp "
arch=('i686' 'x86_64' 'mips64el')
license=('GPL')
@@ -13,11 +13,17 @@ makedepends=('intltool')
optdepends=('network-manager-applet: GNOME frontends to NetWorkmanager')
options=('!libtool')
install=networkmanager-pptp.install
-source=(http://ftp.gnome.org/pub/GNOME/sources/NetworkManager-pptp/0.9/NetworkManager-pptp-${pkgver}.tar.xz)
-sha256sums=('a84cbbf24827229e3dd3611bbde191398275c3b7ecd03913047197644f27a2b4')
+source=(http://ftp.gnome.org/pub/GNOME/sources/NetworkManager-pptp/0.9/NetworkManager-pptp-${pkgver}.tar.xz
+ fix-path-to-auth-dialog.patch
+ gtk_table_to_gtk_grid.patch)
+sha256sums=('a84cbbf24827229e3dd3611bbde191398275c3b7ecd03913047197644f27a2b4'
+ '35f9c2cb4d046c8f215617e1a0bfd8551965bd0655af0cd25f89c17ea5e9081a'
+ '17c194c605bca780bf657711e9cff910c63ab27eae70c11cb6c53e9c75ad3215')
build() {
cd NetworkManager-pptp-${pkgver}
+ patch -Np1 -i ../fix-path-to-auth-dialog.patch
+ patch -Np1 -i ../gtk_table_to_gtk_grid.patch
./configure --prefix=/usr \
--sysconfdir=/etc \
--libexecdir=/usr/lib/networkmanager \
diff --git a/extra/networkmanager-pptp/fix-path-to-auth-dialog.patch b/extra/networkmanager-pptp/fix-path-to-auth-dialog.patch
new file mode 100644
index 000000000..28a4a5a44
--- /dev/null
+++ b/extra/networkmanager-pptp/fix-path-to-auth-dialog.patch
@@ -0,0 +1,26 @@
+From a2f52d4455bd81732b6b3c16bdab206c56818c07 Mon Sep 17 00:00:00 2001
+From: Clemens Buchacher <drizzd@aon.at>
+Date: Sun, 1 Jul 2012 18:35:50 +0200
+Subject: [PATCH] fix path to auth-dialog
+
+
+Signed-off-by: Clemens Buchacher <drizzd@aon.at>
+---
+ nm-pptp-service.name.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/nm-pptp-service.name.in b/nm-pptp-service.name.in
+index 9ee79b8..ea5f0e5 100644
+--- a/nm-pptp-service.name.in
++++ b/nm-pptp-service.name.in
+@@ -4,6 +4,6 @@ service=org.freedesktop.NetworkManager.pptp
+ program=@LIBEXECDIR@/nm-pptp-service
+
+ [GNOME]
+-auth-dialog=nm-pptp-auth-dialog
++auth-dialog=@LIBEXECDIR@/nm-pptp-auth-dialog
+ properties=libnm-pptp-properties
+ supports-external-ui-mode=true
+--
+1.7.11.1
+
diff --git a/extra/networkmanager-pptp/gtk_table_to_gtk_grid.patch b/extra/networkmanager-pptp/gtk_table_to_gtk_grid.patch
new file mode 100644
index 000000000..3483b57cc
--- /dev/null
+++ b/extra/networkmanager-pptp/gtk_table_to_gtk_grid.patch
@@ -0,0 +1,40 @@
+From: Mathieu Trudel-Lapierre <mathieu.trudel-lapierre@canonical.com>
+Subject: Port GtkTable uses to GtkGrid.
+
+Index: network-manager-pptp/auth-dialog/vpn-password-dialog.c
+===================================================================
+--- network-manager-pptp.orig/auth-dialog/vpn-password-dialog.c 2012-02-15 11:24:03.803503000 -0500
++++ network-manager-pptp/auth-dialog/vpn-password-dialog.c 2012-02-15 11:30:20.344710680 -0500
+@@ -124,8 +124,8 @@
+ label = gtk_label_new_with_mnemonic (label_text);
+ gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+
+- gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, row, row + 1);
+- gtk_table_attach_defaults (GTK_TABLE (table), entry, 1, 2, row, row + 1);
++ gtk_grid_attach (GTK_GRID (table), label, 0, row, 1, 1);
++ gtk_grid_attach (GTK_GRID (table), entry, 1, row, 1, 1);
+
+ gtk_label_set_mnemonic_widget (GTK_LABEL (label), entry);
+ }
+@@ -154,7 +154,7 @@
+ if (priv->show_password_secondary)
+ add_row (priv->table, row++, priv->secondary_password_label, priv->password_entry_secondary);
+
+- gtk_table_attach_defaults (GTK_TABLE (priv->table), priv->show_passwords_checkbox, 1, 2, row, row + 1);
++ gtk_grid_attach (GTK_GRID (priv->table), priv->show_passwords_checkbox, 1, row, 1, 1);
+
+ gtk_widget_show_all (priv->table);
+ }
+@@ -228,9 +228,9 @@
+
+ priv->group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
+
+- priv->table = gtk_table_new (4, 2, FALSE);
+- gtk_table_set_col_spacings (GTK_TABLE (priv->table), 12);
+- gtk_table_set_row_spacings (GTK_TABLE (priv->table), 6);
++ priv->table = gtk_grid_new ();
++ gtk_grid_set_column_spacing (GTK_GRID (priv->table), 12);
++ gtk_grid_set_row_spacing (GTK_GRID (priv->table), 6);
+ gtk_container_add (GTK_CONTAINER (priv->table_alignment), priv->table);
+
+ priv->password_entry = gtk_entry_new ();
diff --git a/extra/nvidia-304xx-utils/PKGBUILD b/extra/nvidia-304xx-utils/PKGBUILD
new file mode 100644
index 000000000..4220b29df
--- /dev/null
+++ b/extra/nvidia-304xx-utils/PKGBUILD
@@ -0,0 +1,98 @@
+# $Id: PKGBUILD 171240 2012-11-16 21:41:01Z ibiru $
+# Maintainer: Thomas Baechler <thomas@archlinux.org>
+# Contributor: James Rayner <iphitus@gmail.com>
+pkgname=nvidia-304xx-utils
+pkgver=304.64
+pkgrel=1
+arch=('i686' 'x86_64')
+url="http://www.nvidia.com/"
+pkgdesc="NVIDIA drivers utilities and libraries, 304xx legacy branch"
+depends=('xorg-server' 'libxvmc')
+optdepends=('gtk2: nvidia-settings' 'pangox-compat: nvidia-settings' 'pkg-config: nvidia-xconfig'
+ 'opencl-nvidia: OpenCL support')
+conflicts=('libgl' 'nvidia-utils')
+provides=('libgl')
+license=('custom')
+options=('!strip')
+
+if [ "$CARCH" = "i686" ]; then
+ _arch='x86'
+ _pkg="NVIDIA-Linux-${_arch}-${pkgver}"
+ source=("ftp://download.nvidia.com/XFree86/Linux-${_arch}/${pkgver}/${_pkg}.run")
+ md5sums=('6964415cf648a5f4f38117b168369de2')
+elif [ "$CARCH" = "x86_64" ]; then
+ _arch='x86_64'
+ _pkg="NVIDIA-Linux-${_arch}-${pkgver}-no-compat32"
+ source=("ftp://download.nvidia.com/XFree86/Linux-${_arch}/${pkgver}/${_pkg}.run")
+ md5sums=('76007ed4b72afd334e26377b646f5f7e')
+fi
+
+create_links() {
+ # create soname links
+ while read -d '' _lib; do
+ _soname="$(dirname "${_lib}")/$(LC_ALL=C readelf -d "${_lib}" | sed -nr 's/.*Library soname: \[(.*)\].*/\1/p')"
+ [[ -e "${_soname}" ]] || ln -s "$(basename "${_lib}")" "${_soname}"
+ [[ -e "${_soname/.[0-9]*/}" ]] || ln -s "$(basename "${_soname}")" "${_soname/.[0-9]*/}"
+ done < <(find "${pkgdir}" -type f -name '*.so*' -print0)
+}
+
+build() {
+ cd "${srcdir}"
+ sh "${_pkg}.run" --extract-only
+}
+
+package() {
+ cd "${srcdir}/${_pkg}"
+
+ # X driver
+ install -D -m755 nvidia_drv.so "${pkgdir}/usr/lib/xorg/modules/drivers/nvidia_drv.so"
+ # GLX extension module for X
+ install -D -m755 "libglx.so.${pkgver}" "${pkgdir}/usr/lib/xorg/modules/extensions/libglx.so.${pkgver}"
+ ln -s "libglx.so.${pkgver}" "${pkgdir}/usr/lib/xorg/modules/extensions/libglx.so" # X doesn't find glx otherwise
+ # OpenGL library
+ install -D -m755 "libGL.so.${pkgver}" "${pkgdir}/usr/lib/libGL.so.${pkgver}"
+ # OpenGL core library
+ install -D -m755 "libnvidia-glcore.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-glcore.so.${pkgver}"
+ # XvMC
+ install -D -m644 libXvMCNVIDIA.a "${pkgdir}/usr/lib/libXvMCNVIDIA.a"
+ install -D -m755 "libXvMCNVIDIA.so.${pkgver}" "${pkgdir}/usr/lib/libXvMCNVIDIA.so.${pkgver}"
+ # VDPAU
+ install -D -m755 "libvdpau_nvidia.so.${pkgver}" "${pkgdir}/usr/lib/vdpau/libvdpau_nvidia.so.${pkgver}"
+ # nvidia-tls library
+ install -D -m755 "tls/libnvidia-tls.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-tls.so.${pkgver}"
+ install -D -m755 "libnvidia-cfg.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-cfg.so.${pkgver}"
+
+ install -D -m755 "libnvidia-ml.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-ml.so.${pkgver}"
+ # CUDA
+ install -D -m755 "libcuda.so.${pkgver}" "${pkgdir}/usr/lib/libcuda.so.${pkgver}"
+ install -D -m755 "libnvcuvid.so.${pkgver}" "${pkgdir}/usr/lib/libnvcuvid.so.${pkgver}"
+
+ # nvidia-xconfig
+ install -D -m755 nvidia-xconfig "${pkgdir}/usr/bin/nvidia-xconfig"
+ install -D -m644 nvidia-xconfig.1.gz "${pkgdir}/usr/share/man/man1/nvidia-xconfig.1.gz"
+ # nvidia-settings
+ install -D -m755 nvidia-settings "${pkgdir}/usr/bin/nvidia-settings"
+ install -D -m644 nvidia-settings.1.gz "${pkgdir}/usr/share/man/man1/nvidia-settings.1.gz"
+ install -D -m644 nvidia-settings.desktop "${pkgdir}/usr/share/applications/nvidia-settings.desktop"
+ install -D -m644 nvidia-settings.png "${pkgdir}/usr/share/pixmaps/nvidia-settings.png"
+ sed -e 's:__UTILS_PATH__:/usr/bin:' -e 's:__PIXMAP_PATH__:/usr/share/pixmaps:' -i "${pkgdir}/usr/share/applications/nvidia-settings.desktop"
+ # nvidia-bug-report
+ install -D -m755 nvidia-bug-report.sh "${pkgdir}/usr/bin/nvidia-bug-report.sh"
+ # nvidia-smi
+ install -D -m755 nvidia-smi "${pkgdir}/usr/bin/nvidia-smi"
+ install -D -m644 nvidia-smi.1.gz "${pkgdir}/usr/share/man/man1/nvidia-smi.1.gz"
+ # OpenCL
+ install -D -m644 nvidia.icd "${pkgdir}/etc/OpenCL/vendors/nvidia.icd"
+ install -D -m755 "libnvidia-compiler.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-compiler.so.${pkgver}"
+ install -D -m755 "libnvidia-opencl.so.${pkgver}" "${pkgdir}/usr/lib/libnvidia-opencl.so.${pkgver}"
+
+
+
+ install -D -m644 LICENSE "${pkgdir}/usr/share/licenses/nvidia/LICENSE"
+ ln -s nvidia "${pkgdir}/usr/share/licenses/nvidia-utils"
+ install -D -m644 README.txt "${pkgdir}/usr/share/doc/nvidia/README"
+ install -D -m644 NVIDIA_Changelog "${pkgdir}/usr/share/doc/nvidia/NVIDIA_Changelog"
+ ln -s nvidia "${pkgdir}/usr/share/doc/nvidia-utils"
+
+ create_links
+}
diff --git a/extra/nvidia-304xx/PKGBUILD b/extra/nvidia-304xx/PKGBUILD
new file mode 100644
index 000000000..75115b81e
--- /dev/null
+++ b/extra/nvidia-304xx/PKGBUILD
@@ -0,0 +1,45 @@
+# $Id: PKGBUILD 171238 2012-11-16 21:39:23Z ibiru $
+# Maintainer : Thomas Baechler <thomas@archlinux.org>
+
+pkgname=nvidia-304xx
+pkgver=304.64
+_extramodules=extramodules-3.6-ARCH
+pkgrel=1
+pkgdesc="NVIDIA drivers for linux, 304xx legacy branch"
+arch=('i686' 'x86_64')
+url="http://www.nvidia.com/"
+depends=('linux>=3.6' 'linux<3.7' "nvidia-304xx-utils=${pkgver}")
+makedepends=('linux-headers>=3.6' 'linux-headers<3.7')
+conflicts=('nvidia' 'nvidia-96xx' 'nvidia-173xx')
+license=('custom')
+install=nvidia.install
+options=(!strip)
+
+if [ "$CARCH" = "i686" ]; then
+ _arch='x86'
+ _pkg="NVIDIA-Linux-${_arch}-${pkgver}"
+ source=("ftp://download.nvidia.com/XFree86/Linux-${_arch}/${pkgver}/${_pkg}.run")
+ md5sums=('6964415cf648a5f4f38117b168369de2')
+elif [ "$CARCH" = "x86_64" ]; then
+ _arch='x86_64'
+ _pkg="NVIDIA-Linux-${_arch}-${pkgver}-no-compat32"
+ source=("ftp://download.nvidia.com/XFree86/Linux-${_arch}/${pkgver}/${_pkg}.run")
+ md5sums=('76007ed4b72afd334e26377b646f5f7e')
+fi
+
+build() {
+ _kernver="$(cat /usr/lib/modules/${_extramodules}/version)"
+ cd "${srcdir}"
+ sh "${_pkg}.run" --extract-only
+ cd "${_pkg}/kernel"
+ make SYSSRC=/usr/lib/modules/"${_kernver}/build" module
+}
+
+package() {
+ install -D -m644 "${srcdir}/${_pkg}/kernel/nvidia.ko" \
+ "${pkgdir}/usr/lib/modules/${_extramodules}/nvidia.ko"
+ install -d -m755 "${pkgdir}/usr/lib/modprobe.d"
+ echo "blacklist nouveau" >> "${pkgdir}/usr/lib/modprobe.d/nvidia.conf"
+ sed -i -e "s/EXTRAMODULES='.*'/EXTRAMODULES='${_extramodules}'/" "${startdir}/nvidia.install"
+ gzip "${pkgdir}/usr/lib/modules/${_extramodules}/nvidia.ko"
+}
diff --git a/extra/nvidia-304xx/nvidia.install b/extra/nvidia-304xx/nvidia.install
new file mode 100644
index 000000000..4cacaa79d
--- /dev/null
+++ b/extra/nvidia-304xx/nvidia.install
@@ -0,0 +1,15 @@
+post_install() {
+ EXTRAMODULES='extramodules-3.6-ARCH'
+ depmod $(cat /usr/lib/modules/$EXTRAMODULES/version)
+ echo 'In order to use nvidia module, reboot the system.'
+}
+
+post_upgrade() {
+ EXTRAMODULES='extramodules-3.6-ARCH'
+ depmod $(cat /usr/lib/modules/$EXTRAMODULES/version)
+}
+
+post_remove() {
+ EXTRAMODULES='extramodules-3.6-ARCH'
+ depmod $(cat /usr/lib/modules/$EXTRAMODULES/version)
+}
diff --git a/extra/opal/PKGBUILD b/extra/opal/PKGBUILD
index afc56caca..149f22f41 100644
--- a/extra/opal/PKGBUILD
+++ b/extra/opal/PKGBUILD
@@ -1,9 +1,9 @@
-# $Id: PKGBUILD 169994 2012-10-30 23:01:05Z heftig $
+# $Id: PKGBUILD 171267 2012-11-16 23:35:49Z ibiru $
# Maintainer: Jan de Groot <jan@archlinux.org>
# Contributor: Tom K <tomk@runbox.com>
pkgname=opal
pkgver=3.10.7
-pkgrel=2
+pkgrel=3
pkgdesc="Open Phone Abstraction Library"
arch=(i686 x86_64 'mips64el')
url="http://www.opalvoip.org"
diff --git a/extra/pango/PKGBUILD b/extra/pango/PKGBUILD
index ed364d532..673c6c68d 100644
--- a/extra/pango/PKGBUILD
+++ b/extra/pango/PKGBUILD
@@ -1,8 +1,8 @@
-# $Id: PKGBUILD 169991 2012-10-30 23:00:54Z heftig $
+# $Id: PKGBUILD 170950 2012-11-14 01:23:57Z heftig $
# Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=pango
-pkgver=1.32.1
+pkgver=1.32.2
pkgrel=1
pkgdesc="A library for layout and rendering of text"
arch=('i686' 'x86_64' 'mips64el')
@@ -11,9 +11,9 @@ depends=('libthai' 'cairo' 'libxft' 'harfbuzz')
makedepends=('harfbuzz' 'fontconfig' 'cairo' 'libxft' 'libthai' 'gobject-introspection')
options=('!libtool')
install=pango.install
-source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/${pkgver:0:4}/${pkgname}-${pkgver}.tar.xz)
+source=(http://download.gnome.org/sources/${pkgname}/${pkgver:0:4}/${pkgname}-${pkgver}.tar.xz)
url="http://www.pango.org/"
-sha256sums=('484babf7e1ac4bf959a0babe8168f180acb516932d70e2985de5f6e2961fcd82')
+sha256sums=('23124e01a7795374a6c2864b69ee49064de31b84b3776924461c0b8b42e8e5cb')
build() {
cd ${pkgname}-${pkgver}
diff --git a/extra/qalculate-kde/PKGBUILD b/extra/qalculate-kde/PKGBUILD
index b7d5d8b96..7f88109ff 100644
--- a/extra/qalculate-kde/PKGBUILD
+++ b/extra/qalculate-kde/PKGBUILD
@@ -5,7 +5,7 @@ pkgname=qalculate-kde
pkgver=0.9.7
pkgrel=3
pkgdesc="KDE frontend for libqalculate"
-arch=('i686' 'x86_64' 'mips64el')
+arch=('i686' 'x86_64')
url="http://qalculate.sourceforge.net/"
license=('GPL')
depends=('libqalculate' 'kdelibs3' 'cln')
diff --git a/extra/qwt/PKGBUILD b/extra/qwt/PKGBUILD
index 9f465e8fc..f55a910f8 100644
--- a/extra/qwt/PKGBUILD
+++ b/extra/qwt/PKGBUILD
@@ -1,9 +1,9 @@
-# $Id: PKGBUILD 149627 2012-02-08 20:47:17Z pierre $
+# $Id: PKGBUILD 171291 2012-11-17 00:59:56Z allan $
# Maintainer: Ronald van Haren <ronald.archlinux.org>
pkgname=qwt
pkgver=6.0.1
-pkgrel=2
+pkgrel=3
pkgdesc="Qt Widgets for Technical Applications"
arch=('i686' 'x86_64' 'mips64el')
url="http://qwt.sourceforge.net/"
@@ -32,6 +32,11 @@ package() {
make INSTALL_ROOT=${pkgdir} QTDIR=/usr install
+ # install web designer plugin
+ install -d ${pkgdir}/usr/lib/qt/plugins/designer/
+ install -Dm755 designer/plugins/designer/libqwt_designer_plugin.so \
+ ${pkgdir}/usr/lib/qt/plugins/designer/
+
# Move man files to proper directory.
# install -d ${pkgdir}/usr/share/man/man3
# mv -f ${pkgdir}/usr/share/doc/qwt/man/man3/* ${pkgdir}/usr/share/man/man3
diff --git a/extra/qwtplot3d/PKGBUILD b/extra/qwtplot3d/PKGBUILD
index 5d9fd6df2..b51d260b8 100644
--- a/extra/qwtplot3d/PKGBUILD
+++ b/extra/qwtplot3d/PKGBUILD
@@ -1,15 +1,16 @@
-# $Id: PKGBUILD 147208 2012-01-24 18:38:05Z ronald $
+# $Id: PKGBUILD 171261 2012-11-16 23:35:36Z allan $
# Maintainer: Ronald van Haren <ronald@archlinux.org>
# Contributor: damir <damir@archlinux.org>
pkgname=qwtplot3d
pkgver=0.2.7
-pkgrel=4
+pkgrel=5
pkgdesc="Qt/OpenGL-based C++ programming library containing 3d-widgets"
arch=("i686" "x86_64" 'mips64el')
license=('custom:zlib')
url="http://qwtplot3d.sourceforge.net/"
-depends=('qt' 'qwt' 'mesa')
+depends=('qt' 'qwt')
+makedepends=('mesa' 'glu')
source=("http://downloads.sourceforge.net/sourceforge/qwtplot3d/qwtplot3d-$pkgver.tgz"
qwtplot3d-gcc44.patch qwtplot3d-qt-4.8.0.patch)
sha1sums=('4463fafb8420a91825e165da7a296aaabd70abea'
diff --git a/extra/rhythmbox/PKGBUILD b/extra/rhythmbox/PKGBUILD
index ef58fa7b9..4a7101d97 100644
--- a/extra/rhythmbox/PKGBUILD
+++ b/extra/rhythmbox/PKGBUILD
@@ -1,24 +1,31 @@
-# $Id: PKGBUILD 170248 2012-11-06 10:20:15Z jgc $
+# $Id: PKGBUILD 171480 2012-11-18 00:28:26Z eric $
# Maintainer: Jan de Groot <jgc@archlinux.org>
# Contributor: Giovanni Scafora <giovanni@archlinux.org>
pkgname=rhythmbox
pkgver=2.98
-pkgrel=3
+pkgrel=4
pkgdesc="An iTunes-like music playback and management application"
arch=('i686' 'x86_64' 'mips64el')
license=('GPL')
url="http://www.rhythmbox.org"
-depends=('dconf' 'desktop-file-utils' 'grilo'
- 'gstreamer0.10-base-plugins' 'gstreamer0.10-good-plugins' 'gvfs-afc' 'json-glib'
- 'libdmapsharing' 'libgpod' 'libmtp' 'libnotify' 'libpeas'
- 'media-player-info' 'python2-gobject' 'python2-mako' 'totem-plparser'
- 'tdb' 'libdiscid')
-makedepends=('gnome-doc-utils' 'intltool' 'brasero' 'gobject-introspection' 'vala' 'gnome-common' 'gtk-doc')
+depends=('dconf' 'desktop-file-utils' 'gstreamer0.10-base-plugins'
+ 'gstreamer0.10-good-plugins' 'gvfs-afc' 'json-glib'
+ 'libnotify' 'libpeas' 'media-player-info' 'python2-gobject'
+ 'totem-plparser' 'tdb')
+makedepends=('gnome-doc-utils' 'intltool' 'brasero' 'gobject-introspection'
+ 'vala' 'gnome-common' 'gtk-doc' 'grilo' 'libdmapsharing' 'lirc-utils'
+ 'libgpod' 'libmtp')
optdepends=('gstreamer0.10-ugly-plugins: Extra media codecs'
'gstreamer0.10-bad-plugins: Extra media codecs'
'gstreamer0.10-ffmpeg: Extra media codecs'
- 'brasero: cd burning')
+ 'brasero: Audio CD Recorder plugin'
+ 'libdmapsharing: DAAP Music Sharing plugin'
+ 'grilo-plugins: Grilo media browser plugin'
+ 'lirc-utils: LIRC plugin'
+ 'libgpod: Portable Players - iPod plugin'
+ 'libmtp: Portable Players - MTP plugin'
+ 'zeitgeist: Zeitgeist plugin')
options=('!libtool' '!emptydirs')
install=rhythmbox.install
source=(http://ftp.gnome.org/pub/GNOME/sources/$pkgname/$pkgver/$pkgname-$pkgver.tar.xz
diff --git a/extra/sbcl/PKGBUILD b/extra/sbcl/PKGBUILD
index 367b49064..da4d87cc5 100644
--- a/extra/sbcl/PKGBUILD
+++ b/extra/sbcl/PKGBUILD
@@ -1,25 +1,25 @@
-# $Id: PKGBUILD 168308 2012-10-08 09:08:03Z juergen $
+# $Id: PKGBUILD 171078 2012-11-16 14:24:00Z allan $
# Contributor: John Proctor <jproctor@prium.net>
# Contributor: Daniel White <daniel@whitehouse.id.au>
# Maintainer: Juergen Hoetzel <juergen@archlinux.org>
# Contributor: Leslie Polzer (skypher)
pkgname=sbcl
-pkgver=1.1.0
-pkgrel=1
+pkgver=1.1.1
+pkgrel=2
pkgdesc="Steel Bank Common Lisp"
url="http://www.sbcl.org/"
arch=('i686' 'x86_64' 'mips64el')
license=('custom')
-depends=('glibc')
-provides=('common-lisp' 'cl-asdf') # 'zlib') this is really annoying for tools like toru
+depends=('glibc' 'zlib')
+provides=('common-lisp' 'cl-asdf')
makedepends=('sbcl' 'texinfo')
[ "$CARCH" = "mips64el" ] && \
makedepends=('clisp' 'texinfo')
install=sbcl.install
source=("http://downloads.sourceforge.net/project/sbcl/sbcl/$pkgver/$pkgname-$pkgver-source.tar.bz2"
"arch-fixes.lisp")
-md5sums=('7390495ce158eac45002c028ed8c149b'
+md5sums=('1f000ca9d83072b2712d6cdfca7b41de'
'7ac0c1936547f4278198b8bf7725204d')
build() {
diff --git a/extra/slim/PKGBUILD b/extra/slim/PKGBUILD
index e777d3917..bd9809027 100644
--- a/extra/slim/PKGBUILD
+++ b/extra/slim/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 169982 2012-10-30 23:00:16Z heftig $
+# $Id: PKGBUILD 171076 2012-11-16 14:05:41Z allan $
# Maintainer: Gaetan Bisson <bisson@archlinux.org>
# Contributor: Thayer Williams <thayer@archlinux.org>
# Contributor: Alexander Fehr <pizzapunk gmail com>
@@ -21,13 +21,13 @@ source=("http://download.berlios.de/${pkgname}/${pkgname}-${pkgver}.tar.gz"
'slim.service'
'session-name.patch'
'libpng-1.4+-support.patch'
- 'fix-glibc-segfault-1.3.4.patch')
+ 'fix-array-overflow.patch')
build() {
cd "${srcdir}/${pkgname}-${pkgver}"
patch -p1 -i ../session-name.patch # FS#26693: fix default session name
patch -Np1 -i ../libpng-1.4+-support.patch # taken from gentoo to build
- patch -Np0 -i ../fix-glibc-segfault-1.3.4.patch # FS#30864
+ patch -Np0 -i ../fix-array-overflow.patch # FS#30864
cd ${srcdir}
mkdir build
cd build
diff --git a/extra/slim/fix-array-overflow.patch b/extra/slim/fix-array-overflow.patch
new file mode 100644
index 000000000..b035f8a78
--- /dev/null
+++ b/extra/slim/fix-array-overflow.patch
@@ -0,0 +1,13 @@
+Index: app.cpp
+===================================================================
+--- app.cpp (revision 223)
++++ app.cpp (working copy)
+@@ -593,7 +593,7 @@
+
+ n++;
+
+- child_env = static_cast<char**>(malloc(sizeof(char*)*n));
++ child_env = static_cast<char**>(malloc(sizeof(char*)*(n+1)));
+ memcpy(child_env, old_env, sizeof(char*)*n);
+ child_env[n - 1] = StrConcat("XDG_SESSION_COOKIE=", ck.get_xdg_session_cookie());
+ child_env[n] = NULL;
diff --git a/extra/sound-juicer/PKGBUILD b/extra/sound-juicer/PKGBUILD
index a7133cf72..8bb2aadec 100644
--- a/extra/sound-juicer/PKGBUILD
+++ b/extra/sound-juicer/PKGBUILD
@@ -1,23 +1,23 @@
-# $Id: PKGBUILD 156966 2012-04-23 09:10:13Z ibiru $
+# $Id: PKGBUILD 171308 2012-11-17 04:45:56Z heftig $
# Maintainer: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
# Contributor: Jan de Groot <jgc@archlinux.org>
# Contributor: Ben <contrasutra@myrealbox.com>
pkgname=sound-juicer
-pkgver=3.4.0
+pkgver=3.5.0
pkgrel=1
pkgdesc="A cd ripper application"
-arch=(i686 x86_64 'mips64el')
-license=('GPL')
-depends=('libmusicbrainz4' 'libdiscid' 'gtk3' 'gstreamer0.10-base-plugins'
- 'gstreamer0.10-good-plugins' 'brasero' 'hicolor-icon-theme')
-makedepends=('intltool' 'gnome-doc-utils')
+arch=(i686 x86_64 mips64el)
+license=(GPL)
+depends=(libmusicbrainz5 libdiscid gtk3 gst-plugins-base gst-plugins-good brasero
+ hicolor-icon-theme gconf)
+makedepends=(intltool gnome-doc-utils)
options=(!emptydirs)
url="http://www.gnome.org"
source=(http://ftp.gnome.org/pub/gnome/sources/$pkgname/${pkgver:0:3}/$pkgname-$pkgver.tar.xz)
-groups=('gnome-extra')
+groups=(gnome-extra)
install=sound-juicer.install
-sha256sums=('49805cc73617e745ee09b62fec46979387e5713d39e5f75320b91ee8f0c44f12')
+sha256sums=('ea76703e08e67590af7b8ce5206c343eb01d77cd5023c0bc958a0c2f5a98d2e9')
build() {
cd "${srcdir}/${pkgname}-${pkgver}"
diff --git a/extra/system-config-printer/PKGBUILD b/extra/system-config-printer/PKGBUILD
index 0c5bfaece..5b3649cce 100644
--- a/extra/system-config-printer/PKGBUILD
+++ b/extra/system-config-printer/PKGBUILD
@@ -1,11 +1,11 @@
-# $Id: PKGBUILD 169045 2012-10-17 10:21:29Z allan $
+# $Id: PKGBUILD 171248 2012-11-16 22:37:18Z andrea $
# Maintainer: Andrea Scarpino <andrea@archlinux.org>
pkgbase=system-config-printer
pkgname=('system-config-printer-common'
'system-config-printer-gnome')
-pkgver=1.3.11
-pkgrel=2
+pkgver=1.3.12
+pkgrel=1
pkgdesc="A CUPS printer configuration tool and status applet"
url="http://cyberelk.net/tim/software/system-config-printer/"
arch=('i686' 'x86_64' 'mips64el')
@@ -13,8 +13,8 @@ license=('GPL')
makedepends=('udev' 'libcups' 'intltool' 'python2' 'xmlto' 'docbook-xsl'
'libusb-compat' 'desktop-file-utils')
source=(http://cyberelk.net/tim/data/${pkgbase}/1.3/${pkgbase}-${pkgver}.tar.xz{,.sig})
-md5sums=('081fde89686ee15a9433c0035f5faed0'
- '470964eb627af31f2aff9967a4b9a5bb')
+md5sums=('0775647e1c34ef25364de3c178a4ed36'
+ '1aa2246047b424e2d23473749368b8c6')
build() {
cd "${srcdir}"/${pkgbase}-${pkgver}
@@ -65,6 +65,12 @@ package_system-config-printer-common() {
install -m644 dbus/com.redhat.NewPrinterNotification.conf \
dbus/com.redhat.PrinterDriversInstaller.conf \
"${pkgdir}"/etc/dbus-1/system.d/
+
+ install -d "${pkgdir}"/usr/share/dbus-1/{services,interfaces}
+ install -m644 dbus/org.fedoraproject.Config.Printing.service \
+ "${pkgdir}"/usr/share/dbus-1/services/
+ install -m644 dbus/org.fedoraproject.Config.Printing.xml \
+ "${pkgdir}"/usr/share/dbus-1/interfaces/
install -d "${pkgdir}"/etc/cupshelpers/
install -m644 xml/preferreddrivers.xml "${pkgdir}"/etc/cupshelpers/
@@ -104,5 +110,6 @@ package_system-config-printer-gnome() {
rm -r "${pkgdir}"/etc/dbus-1/
rm -r "${pkgdir}"/etc/cupshelpers/
rm -r "${pkgdir}"/etc/udev/
+ rm -r "${pkgdir}"/usr/share/dbus-1/
rm -r "${pkgdir}"/usr/lib/
}
diff --git a/extra/telepathy-idle/PKGBUILD b/extra/telepathy-idle/PKGBUILD
index b49458f7f..973bc8c69 100644
--- a/extra/telepathy-idle/PKGBUILD
+++ b/extra/telepathy-idle/PKGBUILD
@@ -1,10 +1,10 @@
-# $Id: PKGBUILD 165358 2012-08-16 11:39:38Z ibiru $
+# $Id: PKGBUILD 171097 2012-11-16 17:07:10Z ibiru $
# Maintainer: Ionut Biru <ibiru@archlinux.org>
# Contributor: Bjorn Lindeijer <bjorn lindeijer nl>
# Contributor: Samuel Mendes <heka.lok@gmail.com>
pkgname=telepathy-idle
-pkgver=0.1.12
+pkgver=0.1.14
pkgrel=1
pkgdesc="An IRC connection manager for Telepathy"
arch=('i686' 'x86_64' 'mips64el')
@@ -14,9 +14,8 @@ license=('LGPL')
depends=('telepathy-glib' 'openssl')
makedepends=('libxslt' 'python2')
install=telepathy-idle.install
-options=(!makeflags)
source=(http://telepathy.freedesktop.org/releases/$pkgname/$pkgname-$pkgver.tar.gz)
-md5sums=('e77e5b84cc8f77cf12d15727c30df366')
+md5sums=('c292c54aa08f61544ab53fda880d861c')
build() {
cd $pkgname-$pkgver
diff --git a/extra/telepathy-qt/PKGBUILD b/extra/telepathy-qt/PKGBUILD
index b94a42764..e411312a5 100644
--- a/extra/telepathy-qt/PKGBUILD
+++ b/extra/telepathy-qt/PKGBUILD
@@ -1,16 +1,17 @@
-# $Id: PKGBUILD 163541 2012-07-15 10:41:34Z andrea $
+# $Id: PKGBUILD 171095 2012-11-16 16:58:51Z andrea $
# Maintainer: Ionut Biru <ibiru@archlinux.org>
# Maintainer: Andrea Scarpino <andrea@archlinux.org>
pkgname=telepathy-qt
pkgver=0.9.3
-pkgrel=1
+pkgrel=2
pkgdesc="A library for Qt-based Telepathy clients"
arch=('i686' 'x86_64' 'mips64el')
url="http://telepathy.freedesktop.org/wiki/"
license=('LGPL')
options=('!libtool')
-depends=('qt' 'telepathy-farstream')
+depends=('qt' 'telepathy-glib')
+#depends=('qt' 'telepathy-farstream')
makedepends=('libxslt' 'python2' 'cmake' 'doxygen')
conflicts=('telepathy-qt4')
replaces=('telepathy-qt4')
diff --git a/extra/telepathy-salut/PKGBUILD b/extra/telepathy-salut/PKGBUILD
index c3309d05d..bf536dc01 100644
--- a/extra/telepathy-salut/PKGBUILD
+++ b/extra/telepathy-salut/PKGBUILD
@@ -1,21 +1,21 @@
-# $Id: PKGBUILD 156984 2012-04-23 09:10:36Z ibiru $
+# $Id: PKGBUILD 171114 2012-11-16 17:14:40Z ibiru $
# Maintainer: Ionut Biru <ibiru@archlinux.org>
# Contributor: Daniel Balieiro <daniel@balieiro.com>
pkgname=telepathy-salut
-pkgver=0.8.0
+pkgver=0.8.1
pkgrel=1
pkgdesc="A link-local XMPP connection manager for Telepathy"
arch=('i686' 'x86_64' 'mips64el')
url="http://telepathy.freedesktop.org"
groups=('telepathy')
license=('LGPL')
-depends=('telepathy-glib' 'avahi' 'libsoup' 'sqlite3')
+depends=('telepathy-glib' 'avahi' 'libsoup' 'sqlite3' 'util-linux')
makedepends=('libxslt' 'python2' 'xmldiff')
install=telepathy-salut.install
options=(!libtool)
source=(http://telepathy.freedesktop.org/releases/$pkgname/$pkgname-$pkgver.tar.gz)
-md5sums=('43639c23de33e8466540de02816d23bf')
+md5sums=('7516e6f6fa56a61054413a03642b938d')
build() {
cd "$pkgname-$pkgver"
diff --git a/extra/texmacs/PKGBUILD b/extra/texmacs/PKGBUILD
index faf0bcdf1..a85383f60 100644
--- a/extra/texmacs/PKGBUILD
+++ b/extra/texmacs/PKGBUILD
@@ -1,32 +1,42 @@
-# $Id: PKGBUILD 154990 2012-04-01 08:33:19Z ronald $
+# $Id: PKGBUILD 171430 2012-11-17 14:28:35Z ronald $
# Maintainer: Ronald van Haren <ronald.archlinux.org>
# Contributor: Damir Perisa <damir.perisa@bluewin.ch>
+# Contributor: Christopher Reimer <c.reimer1993@gmail.com>
pkgname=texmacs
-pkgver=1.0.7.15
-pkgrel=1.1
+pkgver=1.0.7.16
+pkgrel=1
pkgdesc="Free scientific text editor, inspired by TeX and GNU Emacs. WYSIWYG editor TeX-fonts and CAS-interface (Giac, GTybalt, Macaulay 2, Maxima, Octave, Pari, Qcl, R and Yacas) in one."
arch=('i686' 'x86_64' 'mips64el')
url="http://www.texmacs.org/"
license=('GPL')
-depends=('perl' 'guile' 'texlive-core' 'python2' 'libxext' 'freetype2' 'shared-mime-info' 'desktop-file-utils')
+depends=('perl' 'guile' 'texlive-core' 'python2' 'libxext' 'freetype2' 'shared-mime-info'
+ 'desktop-file-utils' 'qt')
# do not remove texlive-core dependency, as it is needed!
-optdepends=('transfig: convert images using fig2ps' 'awk: conversion of some files')
+optdepends=('transfig: convert images using fig2ps'
+ 'gawk: conversion of some files')
#source=(ftp://ftp.texmacs.org/pub/TeXmacs/targz/TeXmacs-${pkgver}-src.tar.gz)
source=(http://www.texmacs.org/Download/ftp/tmftp/source/TeXmacs-${pkgver}-src.tar.gz)
install=texmacs.install
-sha1sums=('d75d55fcf0c06bf7fd5d9afd1031b9cf8413cbd3')
+options=('!emptydirs')
+sha1sums=('bd73a8ff1c5361161cc65c57dfe8e706a1859231')
build() {
cd ${srcdir}/TeXmacs-${pkgver}-src
sed -i 's/env python/env python2/' \
- plugins/{mathematica/bin/realpath.py,python/bin/tm_python,sage/bin/tm_sage}
+ plugins/{mathematica/bin/realpath.py,python/bin/tm_python,sage/bin/tm_sage} \
+ TeXmacs/misc/inkscape_plugin/texmacs_reedit.py
sed -i 's/"python"/"python2"/' plugins/python/progs/init-python.scm
sed -i '/^LDPATH/d' src/makefile.in
+
+ # Don't generate icon-cache and mime-database (namcap tells that they should not be in a package)
+ sed -i '/update-mime-database/d' Makefile.in
+ sed -i '/gtk-update-icon-cache/d' Makefile.in
+ sed -i '\/icons\/gnome 2>\/dev\/null/d' Makefile.in
+
./configure --prefix=/usr \
--mandir=/usr/share/man \
- --libexecdir=/usr/lib \
- --disable-qt
+ --libexecdir=/usr/lib
make
}
diff --git a/extra/tomboy/PKGBUILD b/extra/tomboy/PKGBUILD
index 11936a108..ffda1b338 100644
--- a/extra/tomboy/PKGBUILD
+++ b/extra/tomboy/PKGBUILD
@@ -5,7 +5,7 @@ pkgname=tomboy
pkgver=1.12.2
pkgrel=1
pkgdesc="Desktop note-taking application for Linux and Unix"
-arch=('i686' 'x86_64' 'mips64el')
+arch=('i686' 'x86_64')
license=('GPL')
url="http://www.gnome.org/projects/tomboy/"
depends=('gtk2' 'gtkspell' 'gconf' 'gconf-sharp' 'dbus-sharp' 'dbus-sharp-glib' 'mono-addins' 'hicolor-icon-theme')
diff --git a/extra/truecrypt/PKGBUILD b/extra/truecrypt/PKGBUILD
index 0f249622e..0adeccb65 100644
--- a/extra/truecrypt/PKGBUILD
+++ b/extra/truecrypt/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 153964 2012-03-21 06:20:49Z remy $
+# $Id: PKGBUILD 171369 2012-11-17 11:36:42Z eric $
# Maintainer: Paul Mattal <paul.archlinux.org>
pkgname=truecrypt
@@ -33,7 +33,7 @@ build() {
patch -Np1 -i ../${pkgname}-arch-detection.patch
# Build
- make PKCS11_INC="${srcdir}/pkcs-2.20"
+ make PKCS11_INC="${srcdir}/pkcs-2.20" LFLAGS+="-ldl"
}
package() {
diff --git a/extra/vala/PKGBUILD b/extra/vala/PKGBUILD
index c17dfe100..6ef383e3e 100644
--- a/extra/vala/PKGBUILD
+++ b/extra/vala/PKGBUILD
@@ -1,9 +1,9 @@
-# $Id: PKGBUILD 169973 2012-10-30 22:59:33Z heftig $
+# $Id: PKGBUILD 170948 2012-11-14 00:15:27Z heftig $
# Maintainer : Ionut Biru <ibiru@archlinux.org>
# Contributor: Timm Preetz <timm@preetz.us>
pkgname=vala
-pkgver=0.18.0
+pkgver=0.18.1
pkgrel=1
pkgdesc="Compiler for the GObject type system"
arch=('i686' 'x86_64' 'mips64el')
@@ -13,7 +13,7 @@ depends=('glib2')
makedepends=('libxslt')
options=('!libtool')
source=(http://ftp.gnome.org/pub/gnome/sources/$pkgname/${pkgver%.*}/$pkgname-$pkgver.tar.xz)
-sha256sums=('18cb2220ce7352a9dd71be058530f7d4a6c8215a1d9c471430af60a04496a60b')
+sha256sums=('7f5e2e8ca03f9fa2cf13acaf93bfdc3a7ad0a10b000a337ba9c6bdc021bdca32')
build() {
cd $pkgname-$pkgver
diff --git a/extra/vlc/PKGBUILD b/extra/vlc/PKGBUILD
index f23c9fd41..0a3ceae07 100644
--- a/extra/vlc/PKGBUILD
+++ b/extra/vlc/PKGBUILD
@@ -1,11 +1,11 @@
-# $Id: PKGBUILD 170110 2012-11-02 09:09:21Z giovanni $
+# $Id: PKGBUILD 171268 2012-11-16 23:35:53Z ibiru $
# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
# Contributor: Sarah Hay <sarahhay@mb.sympatico.ca>
# Contributor: Martin Sandsmark <martin.sandsmark@kde.org>
pkgname=vlc
pkgver=2.0.4
-pkgrel=3
+pkgrel=4
pkgdesc="A multi-platform MPEG, VCD/DVD, and DivX player"
arch=('i686' 'x86_64' 'mips64el')
url="http://www.videolan.org/vlc/"
diff --git a/extra/webmin/PKGBUILD b/extra/webmin/PKGBUILD
index 94fbb3a7e..926f2d94b 100644
--- a/extra/webmin/PKGBUILD
+++ b/extra/webmin/PKGBUILD
@@ -1,8 +1,8 @@
-# $Id: PKGBUILD 167305 2012-09-30 19:42:57Z tpowa $
+# $Id: PKGBUILD 170999 2012-11-14 16:17:47Z tpowa $
# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
pkgname=webmin
pkgver=1.600
-pkgrel=1
+pkgrel=2
pkgdesc="a web-based interface for system administration"
arch=(i686 x86_64 'mips64el')
license=('custom:webmin')
@@ -215,7 +215,7 @@ build() {
install -m 644 -D $startdir/src/$pkgname-$pkgver/LICENCE $startdir/pkg/usr/share/licenses/webmin/LICENCE
}
md5sums=('8a9124bdd180aeec13fc16fa75fb1419'
- '43a77243acd519c4efe9577090b59912'
+ 'b0b3e3fb231a12e60165b6b4d604dcfa'
'bfebb75bb94029b48c46b7f1ba1aa811'
'c77dfcd621b417a7826d25f56a1e60ae'
'fc29ecb6a5cd8c278abe054e60381095')
diff --git a/extra/webmin/webmin-config.tar.bz2 b/extra/webmin/webmin-config.tar.bz2
index fa343772c..c7869eebf 100644
--- a/extra/webmin/webmin-config.tar.bz2
+++ b/extra/webmin/webmin-config.tar.bz2
Binary files differ
diff --git a/extra/wxgtk/PKGBUILD b/extra/wxgtk/PKGBUILD
index 8075dad4f..611111a0b 100644
--- a/extra/wxgtk/PKGBUILD
+++ b/extra/wxgtk/PKGBUILD
@@ -1,15 +1,15 @@
-# $Id: PKGBUILD 148966 2012-02-05 11:58:12Z ibiru $
+# $Id: PKGBUILD 171304 2012-11-17 03:08:29Z eric $
# Maintainer: Eric Bélanger <eric@archlinux.org>
pkgname=wxgtk
pkgver=2.8.12.1
-pkgrel=3.1
+pkgrel=4
pkgdesc="GTK+ implementation of wxWidgets API for GUI"
arch=('i686' 'x86_64' 'mips64el')
url="http://wxwidgets.org"
license=('custom:wxWindows')
-depends=('gtk2' 'gstreamer0.10-base' 'libgl' 'libxxf86vm' 'libsm')
-makedepends=('gstreamer0.10-base-plugins' 'gconf' 'mesa')
+depends=('gtk2' 'gstreamer0.10-base' 'libgl' 'libxxf86vm' 'libsm' 'sdl')
+makedepends=('gstreamer0.10-base-plugins' 'gconf' 'mesa' 'glu' 'libxt')
#source=(http://downloads.sourceforge.net/wxwindows/wxGTK-${pkgver}.tar.bz2)
source=(http://downloads.sourceforge.net/wxpython/wxPython-src-${pkgver}.tar.bz2)
sha1sums=('05688dc03d61631750f5904273122bb40a2115f5')
@@ -20,7 +20,7 @@ build() {
./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
+ --with-sdl --disable-precomp-headers
make
make -C locale allmo
cd contrib/src
diff --git a/extra/wxmaxima/PKGBUILD b/extra/wxmaxima/PKGBUILD
index 5564ee1de..ca63edef8 100644
--- a/extra/wxmaxima/PKGBUILD
+++ b/extra/wxmaxima/PKGBUILD
@@ -4,7 +4,7 @@
# Contributor: Vinay S Shastry <vinayshastry@gmail.com>
pkgname=wxmaxima
-pkgver=12.04.0
+pkgver=12.09.0
pkgrel=1
pkgdesc="A wxWidgets GUI for the computer algebra system Maxima"
arch=('i686' 'x86_64' 'mips64el')
@@ -13,7 +13,7 @@ license=('GPL2')
depends=('maxima' 'libxml2' 'wxgtk' 'shared-mime-info' 'desktop-file-utils')
source=(http://downloads.sourceforge.net/$pkgname/wxMaxima-$pkgver.tar.gz)
install=wxmaxima.install
-sha1sums=('f29134a212db77e3087321bc944e346e6976cb40')
+sha1sums=('9b56f674392eabb75183b228757df8834b45b2a6')
build() {
cd "${srcdir}/wxMaxima-${pkgver}"
diff --git a/extra/x264/PKGBUILD b/extra/x264/PKGBUILD
index 742ca7d6d..a7188e716 100644
--- a/extra/x264/PKGBUILD
+++ b/extra/x264/PKGBUILD
@@ -1,10 +1,10 @@
-# $Id: PKGBUILD 163164 2012-07-08 09:35:20Z ibiru $
+# $Id: PKGBUILD 171269 2012-11-16 23:35:55Z ibiru $
# Maintainer : Ionut Biru <ibiru@archlinux.org>
# Contributor: damir <damir@archlinux.org>
# Contributor: Paul Mattal <paul@archlinux.org>
pkgname=x264
-pkgver=20120705
+pkgver=20121113
pkgrel=1
pkgdesc="free library for encoding H264/AVC video streams"
arch=('i686' 'x86_64' 'mips64el')
@@ -13,7 +13,7 @@ license=('GPL')
depends=('glibc')
makedepends=('yasm')
source=(ftp://ftp.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-$pkgver-2245-stable.tar.bz2)
-md5sums=('81e5bec5d5774a4a3f567f14bd94289c')
+md5sums=('c37851c8534ef5d7b1935145f8f5a725')
build() {
cd "$pkgname-snapshot-$pkgver-2245-stable"
diff --git a/extra/xf86-video-intel/PKGBUILD b/extra/xf86-video-intel/PKGBUILD
index 239d5a1b0..6699cf306 100644
--- a/extra/xf86-video-intel/PKGBUILD
+++ b/extra/xf86-video-intel/PKGBUILD
@@ -1,9 +1,9 @@
-# $Id: PKGBUILD 169469 2012-10-21 18:59:02Z andyrtr $
+# $Id: PKGBUILD 171096 2012-11-16 17:03:26Z andyrtr $
# Maintainer: AndyRTR <andyrtr@archlinux.org>
# Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=xf86-video-intel
-pkgver=2.20.12
+pkgver=2.20.13
pkgrel=1
arch=(i686 x86_64)
url="http://xorg.freedesktop.org/"
@@ -19,7 +19,7 @@ conflicts=('xorg-server<1.13.0' 'X-ABI-VIDEODRV_VERSION<13' 'X-ABI-VIDEODRV_VERS
options=('!libtool')
groups=('xorg-drivers' 'xorg')
source=(${url}/archive/individual/driver/${pkgname}-${pkgver}.tar.bz2)
-sha256sums=('39e02b7f90a2665efe5483075f93b1c87d24f48070d5de783dd41e20d9eb0c7c')
+sha256sums=('0151104b58ff3509ecd05ac4ee2c5d81a78506c97afbed511fed6b263060dce3')
build() {
cd "${srcdir}/${pkgname}-${pkgver}"
diff --git a/extra/xmms/PKGBUILD b/extra/xmms/PKGBUILD
index d1c92866e..b1d1a6dd0 100644
--- a/extra/xmms/PKGBUILD
+++ b/extra/xmms/PKGBUILD
@@ -1,9 +1,9 @@
-# $Id: PKGBUILD 170551 2012-11-08 15:28:46Z heftig $
+# $Id: PKGBUILD 171126 2012-11-16 19:24:09Z eric $
# Maintainer: Eric Bélanger <eric@archlinux.org>
pkgname=xmms
pkgver=1.2.11
-pkgrel=5
+pkgrel=6
pkgdesc="The X MultiMedia System - a multimedia player"
arch=('i686' 'x86_64' 'mips64el')
url="http://legacy.xmms2.org/"
@@ -19,7 +19,7 @@ install=xmms.install
source=(http://legacy.xmms2.org/${pkgname}-${pkgver}.tar.bz2 \
xmms-menu.patch xmms-1.2.10-crossfade-0.3.9.patch xmms-fix.diff \
xmms-1.2.11-CVE-2007-0653.0654.patch xmms-1.2.11-fix-http-title-mpg123.patch \
- xmms-1.2.11-3dse.patch xmms-1.2.10-recode-id3.patch \
+ xmms-1.2.11-3dse.patch xmms-1.2.10-recode-id3.patch xmms-1.2.11-fix-mikmod-driver.patch \
xmms-1.2.10-fonts.patch xmms.16.png xmms.32.png xmms.48.png)
sha1sums=('9d1eae4baab25fd35c9ddfb49321ca60222f672d'
'27fb6e21bd6db923a425a8df8bd07a2a93867ddb'
@@ -29,6 +29,7 @@ sha1sums=('9d1eae4baab25fd35c9ddfb49321ca60222f672d'
'0c060385561ea2a4b1c7ad3bd35d3646ae9554f5'
'6f6db13c780ba4cbddb8613f0abd2db2823f3021'
'2a3b1bf17054b6bd8b1e5937de5c0ad49af8dc92'
+ '155e11b344af1ba594b4e339640bcca37c8909af'
'31abd37c9c57bd13b2088eb11a1e54e5aa312bf3'
'0089d11aa3bce67f3496592d68ee65837406e220'
'f24071ae484d9b55e61dba076801fa8e7976ff2f'
@@ -49,6 +50,7 @@ build() {
[ "$CARCH" != "mips64el" ] && patch -p1 < ../xmms-1.2.11-3dse.patch
patch -p1 < ../xmms-1.2.10-fonts.patch
patch -p1 < ../xmms-1.2.11-CVE-2007-0653.0654.patch
+ patch -p1 < ../xmms-1.2.11-fix-mikmod-driver.patch
if [ "$CARCH" == "i686" ]; then
SIMDOPT="--enable-simd"
diff --git a/extra/xmms/xmms-1.2.11-fix-mikmod-driver.patch b/extra/xmms/xmms-1.2.11-fix-mikmod-driver.patch
new file mode 100644
index 000000000..c2d1b4c77
--- /dev/null
+++ b/extra/xmms/xmms-1.2.11-fix-mikmod-driver.patch
@@ -0,0 +1,20 @@
+--- a/Input/mikmod/drv_xmms.c 2003-05-19 23:22:06.000000000 +0200
++++ b/Input/mikmod/drv_xmms.c 2012-11-16 18:52:41.264644767 +0100
+@@ -117,6 +117,10 @@
+ return VC_Init();
+ }
+
++static void xmms_CommandLine(CHAR * commandLine)
++{
++}
++
+ MDRIVER drv_xmms =
+ {
+ NULL,
+@@ -126,5 +130,6 @@
+ "xmms",
+ NULL,
+ #endif
++ xmms_CommandLine, // Was missing
+ xmms_IsThere,
+ VC_SampleLoad,
diff --git a/extra/xsp/PKGBUILD b/extra/xsp/PKGBUILD
index 88b3f9217..7c8a888c6 100644
--- a/extra/xsp/PKGBUILD
+++ b/extra/xsp/PKGBUILD
@@ -6,7 +6,7 @@ pkgname=xsp
pkgver=2.10.2
pkgrel=4
pkgdesc="A simple webserver based on mono - provides ASP.NET support"
-arch=(i686 x86_64 'mips64el')
+arch=(i686 x86_64)
license=('custom')
url="http://www.go-mono.com"
depends=('mono>=2.10.2' 'sqlite')
diff --git a/extra/zsh/PKGBUILD b/extra/zsh/PKGBUILD
index d594bcef6..0deda06b7 100644
--- a/extra/zsh/PKGBUILD
+++ b/extra/zsh/PKGBUILD
@@ -1,18 +1,18 @@
-# $Id: PKGBUILD 164038 2012-07-24 20:46:25Z pierre $
+# $Id: PKGBUILD 171491 2012-11-18 04:23:42Z eric $
# Maintainer: Pierre Schmitz <pierre@archlinux.de>
pkgname=zsh
pkgver=5.0.0
-pkgrel=2
+pkgrel=3
pkgdesc='A very advanced and programmable command interpreter (shell) for UNIX'
arch=('i686' 'x86_64' 'mips64el')
url='http://www.zsh.org/'
license=('custom')
depends=('pcre' 'libcap' 'gdbm')
+backup=('etc/zsh/zprofile')
install=zsh.install
source=("ftp://ftp.zsh.org/pub/${pkgname}-${pkgver}.tar.bz2"
'zprofile')
-backup=('etc/zsh/zprofile')
md5sums=('e8484468925cec8d9a84b8b04797e764'
'24a9335edf77252a7b5f52e079f7aef7')
@@ -51,7 +51,7 @@ build() {
--enable-pcre \
--enable-cap \
--enable-zsh-secure-free
- make
+ make all info
}
check() {
@@ -61,7 +61,7 @@ check() {
package() {
cd "${srcdir}/${pkgname}-${pkgver}"
- make DESTDIR="${pkgdir}/" install
+ make DESTDIR="${pkgdir}/" install install.info
install -D -m644 "${srcdir}/zprofile" "${pkgdir}/etc/zsh/zprofile"
install -D -m644 LICENCE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
}
diff --git a/extra/zsh/zsh.install b/extra/zsh/zsh.install
index e2a53bea8..8e54d92ee 100644
--- a/extra/zsh/zsh.install
+++ b/extra/zsh/zsh.install
@@ -1,5 +1,12 @@
+infodir=usr/share/info
+filelist=(zsh.info zsh.info-1 zsh.info-2 zsh.info-3 zsh.info-4 zsh.info-5 zsh.info-6)
+
post_install() {
grep -q '/bin/zsh' etc/shells || echo '/bin/zsh' >> etc/shells
+ [ -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() {
@@ -8,4 +15,8 @@ post_upgrade() {
pre_remove() {
sed -i '/^\/bin\/zsh/d' etc/shells
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info --delete $infodir/$file.gz $infodir/dir 2> /dev/null
+ done
}
diff --git a/kernels/linux-libre-lts-rt/PKGBUILD b/kernels/linux-libre-lts-rt/PKGBUILD
index daf2d1c16..976b2995c 100644
--- a/kernels/linux-libre-lts-rt/PKGBUILD
+++ b/kernels/linux-libre-lts-rt/PKGBUILD
@@ -11,12 +11,12 @@
pkgbase=linux-libre-lts-rt # Build stock -LIBRE-LTS-RT kernel
#pkgbase=linux-libre-custom # Build kernel with a different name
_basekernel=3.0
-_releasever=43
-_rtpatchver=rt65
+_releasever=51
+_rtpatchver=rt75
_pkgver=${_basekernel}.${_releasever}
pkgver=${_basekernel}.${_releasever}_${_rtpatchver}
pkgrel=1
-_lxopkgver=${_basekernel}.43 # nearly always the same as pkgver
+_lxopkgver=${_basekernel}.50 # nearly always the same as pkgver
arch=('i686' 'x86_64' 'mips64el')
url="http://linux-libre.fsfla.org/"
license=('GPL2')
@@ -35,10 +35,12 @@ source=("http://linux-libre.fsfla.org/pub/linux-libre/releases/${_basekernel}-gn
'change-default-console-loglevel.patch'
'i915-fix-ghost-tv-output.patch'
'ext4-options.patch'
+ 'module-symbol-waiting-3.0.patch'
+ 'module-init-wait-3.0.patch'
"http://www.linux-libre.fsfla.org/pub/linux-libre/lemote/gnewsense/pool/debuginfo/linux-patches-${_lxopkgver}-gnu_0loongsonlibre_mipsel.tar.bz2")
md5sums=('5f64180fe7df4e574dac5911b78f5067'
- 'c4b4e6d908e70fc6f991a1789a3ac620'
- 'bcca49907b1c1e74f6ff6afced5ff959'
+ 'fb3c742b1f8b01131534a22348cfa712'
+ '904669e437a0bb19e95022964430ad4a'
'7266f5e7af09cc6e4b15d7a952e3b350'
'5387f0cf51652c071190789569adf9c7'
'85f04a9555bdc295f7c387a6564f0c81'
@@ -47,8 +49,10 @@ md5sums=('5f64180fe7df4e574dac5911b78f5067'
'04b21c79df0a952c22d681dd4f4562df'
'9d3c56a4b999c8bfbd4018089a62f662'
'263725f20c0b9eb9c353040792d644e5'
- 'c8299cf750a84e12d60b372c8ca7e1e8'
- '2c4870ef22f87ef885f3be392d1aaa90')
+ 'f36222e7ce20c8e4dc27376f9be60f6c'
+ '670931649c60fcb3ef2e0119ed532bd4'
+ '8a71abc4224f575008f974a099b5cf6f'
+ 'e2cc9f33fb26b254b6b65f8981aebf13')
if [ "$CARCH" != "mips64el" ]; then
# Don't use the Loongson-specific patches on non-mips64el arches.
unset source[${#source[@]}-1]
@@ -90,6 +94,11 @@ build() {
# https://bugs.archlinux.org/task/28653
patch -Np1 -i "${srcdir}/ext4-options.patch"
+ # fix module initialisation
+ # https://bugs.archlinux.org/task/32122
+ patch -Np1 -i "${srcdir}/module-symbol-waiting-3.0.patch"
+ patch -Np1 -i "${srcdir}/module-init-wait-3.0.patch"
+
if [ "$CARCH" == "mips64el" ]; then
sed -i "s|^EXTRAVERSION.*|EXTRAVERSION =-libre-lts-rt|" Makefile
sed -r "s|^( SUBLEVEL = ).*|\1$_sublevel|" \
@@ -102,7 +111,7 @@ build() {
# https://git.kernel.org/?p=linux/hotplug/udev.git;a=blob_plain;f=README
# and make USB storage support builtin (e.g. for booting from USB
# disks without slowly loading an initramfs)
- sed -ri -e "s|CONFIG_MIPS32_N32=.*|CONFIG_MIPS32_N32=y|g" \
+ sed -ri \
-e "s|CONFIG_MIPS32_N32=.*|CONFIG_MIPS32_N32=y|g" \
-e "s|CONFIG_UEVENT_HELPER_PATH=.*|CONFIG_UEVENT_HELPER_PATH=\"\"|g" \
-e "s|CONFIG_LOCALVERSION=.*|CONFIG_LOCALVERSION=\"${_localversionname}\"|g" \
diff --git a/kernels/linux-libre-lts-rt/ext4-options.patch b/kernels/linux-libre-lts-rt/ext4-options.patch
index 812b05f04..ef1b2417d 100644
--- a/kernels/linux-libre-lts-rt/ext4-options.patch
+++ b/kernels/linux-libre-lts-rt/ext4-options.patch
@@ -46,4 +46,4 @@ index 502c61f..30de9cd 100644
+#endif
default:
ext4_msg(sb, KERN_ERR,
- "Unrecognized mount option \"%s\" " \ No newline at end of file
+ "Unrecognized mount option \"%s\" "
diff --git a/kernels/linux-libre-lts-rt/linux-libre-lts-rt.install b/kernels/linux-libre-lts-rt/linux-libre-lts-rt.install
index d2f0ae05a..5f31cc3d4 100644
--- a/kernels/linux-libre-lts-rt/linux-libre-lts-rt.install
+++ b/kernels/linux-libre-lts-rt/linux-libre-lts-rt.install
@@ -2,7 +2,7 @@
# arg 2: the old package version
KERNEL_NAME=-lts-rt
-KERNEL_VERSION=3.0.43-1-rt65-LIBRE-LTS-RT
+KERNEL_VERSION=3.0.51-1-rt75-LIBRE-LTS-RT
# set a sane PATH to ensure that critical utils like depmod will be found
export PATH='/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'
diff --git a/kernels/linux-libre-lts-rt/module-init-wait-3.0.patch b/kernels/linux-libre-lts-rt/module-init-wait-3.0.patch
new file mode 100644
index 000000000..1bcfd2491
--- /dev/null
+++ b/kernels/linux-libre-lts-rt/module-init-wait-3.0.patch
@@ -0,0 +1,77 @@
+From: Rusty Russell <rusty@rustcorp.com.au>
+Date: Fri, 28 Sep 2012 05:01:03 +0000 (+0930)
+Subject: module: wait when loading a module which is currently initializing.
+X-Git-Tag: v3.7-rc1~2^2~32
+X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=9bb9c3be568346538
+
+module: wait when loading a module which is currently initializing.
+
+The original module-init-tools module loader used a fnctl lock on the
+.ko file to avoid attempts to simultaneously load a module.
+Unfortunately, you can't get an exclusive fcntl lock on a read-only
+fd, making this not work for read-only mounted filesystems.
+module-init-tools has a hacky sleep-and-loop for this now.
+
+It's not that hard to wait in the kernel, and only return -EEXIST once
+the first module has finished loading (or continue loading the module
+if the first one failed to initialize for some reason). It's also
+consistent with what we do for dependent modules which are still loading.
+
+Suggested-by: Lucas De Marchi <lucas.demarchi@profusion.mobi>
+Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
+---
+
+diff --git a/kernel/module.c b/kernel/module.c
+index 63cf6e7..74bc195 100644
+--- a/kernel/module.c
++++ b/kernel/module.c
+@@ -2845,6 +2845,20 @@ static int post_relocation(struct module *mod, const struct load_info *info)
+ return module_finalize(info->hdr, info->sechdrs, mod);
+ }
+
++/* Is this module of this name done loading? No locks held. */
++static bool finished_loading(const char *name)
++{
++ struct module *mod;
++ bool ret;
++
++ mutex_lock(&module_mutex);
++ mod = find_module(name);
++ ret = !mod || mod->state != MODULE_STATE_COMING;
++ mutex_unlock(&module_mutex);
++
++ return ret;
++}
++
+ /* Allocate and load the module: note that size of section 0 is always
+ zero, and we rely on this for optional sections. */
+ static struct module *load_module(void __user *umod,
+@@ -2852,7 +2866,7 @@ static struct module *load_module(void __user *umod,
+ const char __user *uargs)
+ {
+ struct load_info info = { NULL, };
+- struct module *mod;
++ struct module *mod, *old;
+ long err;
+
+ pr_debug("load_module: umod=%p, len=%lu, uargs=%p\n",
+@@ -2918,8 +2932,18 @@ static struct module *load_module(void __user *umod,
+ * function to insert in a way safe to concurrent readers.
+ * The mutex protects against concurrent writers.
+ */
++again:
+ mutex_lock(&module_mutex);
+- if (find_module(mod->name)) {
++ if ((old = find_module(mod->name)) != NULL) {
++ if (old->state == MODULE_STATE_COMING) {
++ /* Wait in case it fails to load. */
++ mutex_unlock(&module_mutex);
++ err = wait_event_interruptible(module_wq,
++ finished_loading(mod->name));
++ if (err)
++ goto free_arch_cleanup;
++ goto again;
++ }
+ err = -EEXIST;
+ goto unlock;
+ }
diff --git a/kernels/linux-libre-lts-rt/module-symbol-waiting-3.0.patch b/kernels/linux-libre-lts-rt/module-symbol-waiting-3.0.patch
new file mode 100644
index 000000000..b87a38ff5
--- /dev/null
+++ b/kernels/linux-libre-lts-rt/module-symbol-waiting-3.0.patch
@@ -0,0 +1,66 @@
+From: Rusty Russell <rusty@rustcorp.com.au>
+Date: Fri, 28 Sep 2012 05:01:03 +0000 (+0930)
+Subject: module: fix symbol waiting when module fails before init
+X-Git-Tag: v3.7-rc1~2^2~33
+X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=6f13909f4fe9652f1
+
+module: fix symbol waiting when module fails before init
+
+We use resolve_symbol_wait(), which blocks if the module containing
+the symbol is still loading. However:
+
+1) The module_wq we use is only woken after calling the modules' init
+ function, but there are other failure paths after the module is
+ placed in the linked list where we need to do the same thing.
+
+2) wake_up() only wakes one waiter, and our waitqueue is shared by all
+ modules, so we need to wake them all.
+
+3) wake_up_all() doesn't imply a memory barrier: I feel happier calling
+ it after we've grabbed and dropped the module_mutex, not just after
+ the state assignment.
+
+Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
+---
+
+diff --git a/kernel/module.c b/kernel/module.c
+index 7f2ee45f..63cf6e7 100644
+--- a/kernel/module.c
++++ b/kernel/module.c
+@@ -2959,7 +2959,7 @@ static struct module *load_module(void __user *umod,
+ /* Unlink carefully: kallsyms could be walking list. */
+ list_del_rcu(&mod->list);
+ module_bug_cleanup(mod);
+-
++ wake_up_all(&module_wq);
+ ddebug:
+ dynamic_debug_remove(info.debug);
+ unlock:
+@@ -3034,7 +3034,7 @@ SYSCALL_DEFINE3(init_module, void __user *, umod,
+ blocking_notifier_call_chain(&module_notify_list,
+ MODULE_STATE_GOING, mod);
+ free_module(mod);
+- wake_up(&module_wq);
++ wake_up_all(&module_wq);
+ return ret;
+ }
+ if (ret > 0) {
+@@ -3046,9 +3046,8 @@ SYSCALL_DEFINE3(init_module, void __user *, umod,
+ dump_stack();
+ }
+
+- /* Now it's a first class citizen! Wake up anyone waiting for it. */
++ /* Now it's a first class citizen! */
+ mod->state = MODULE_STATE_LIVE;
+- wake_up(&module_wq);
+ blocking_notifier_call_chain(&module_notify_list,
+ MODULE_STATE_LIVE, mod);
+
+@@ -3071,6 +3070,7 @@ SYSCALL_DEFINE3(init_module, void __user *, umod,
+ mod->init_ro_size = 0;
+ mod->init_text_size = 0;
+ mutex_unlock(&module_mutex);
++ wake_up_all(&module_wq);
+
+ return 0;
+ }
diff --git a/libre/bogofilter-libre/PKGBUILD b/libre/bogofilter-libre/PKGBUILD
index d5f12f215..0e9a0d159 100644
--- a/libre/bogofilter-libre/PKGBUILD
+++ b/libre/bogofilter-libre/PKGBUILD
@@ -5,7 +5,7 @@
_pkgname=bogofilter
pkgname=bogofilter-libre
pkgver=1.2.2
-pkgrel=5
+pkgrel=5.1
pkgdesc="A fast Bayesian spam filtering tool"
arch=('i686' 'x86_64' 'mips64el')
license=('GPL3')
diff --git a/libre/cdfs-libre/PKGBUILD b/libre/cdfs-libre/PKGBUILD
index e39dfc88a..ac52e0212 100644
--- a/libre/cdfs-libre/PKGBUILD
+++ b/libre/cdfs-libre/PKGBUILD
@@ -8,7 +8,7 @@ pkgname=cdfs-libre
pkgver=2.6.27
pkgrel=33
pkgdesc="File system module libre that 'exports' all tracks and boot images on a CD as normal files."
-arch=(i686 x86_64)
+arch=(i686 x86_64 mips64el)
url="http://www.elis.UGent.be/~ronsse/cdfs/"
license=('GPL')
makedepends=('linux-libre-headers')
diff --git a/libre/file-roller-libre/PKGBUILD b/libre/file-roller-libre/PKGBUILD
index c2fb379b4..ec720f140 100644
--- a/libre/file-roller-libre/PKGBUILD
+++ b/libre/file-roller-libre/PKGBUILD
@@ -1,15 +1,15 @@
-# $Id: PKGBUILD 170863 2012-11-12 20:12:03Z heftig $
+# $Id: PKGBUILD 171115 2012-11-16 17:25:15Z ibiru $
# Maintainer: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
# Contributor: Jan de Groot <jgc@archlinux.org>
_pkgname=file-roller
pkgname=file-roller-libre
pkgver=3.6.2
-pkgrel=1
+pkgrel=3
pkgdesc="Archive manipulator for GNOME"
arch=('i686' 'x86_64' 'mips64el')
license=('GPL')
-depends=('desktop-file-utils' 'gtk3' 'hicolor-icon-theme' 'dconf' 'libarchive' 'file' 'json-glib')
+depends=('desktop-file-utils' 'gtk3' 'hicolor-icon-theme' 'dconf' 'libarchive' 'file' 'json-glib' 'libnotify')
makedepends=('intltool' 'gnome-doc-utils' 'pkg-config' 'nautilus' 'itstool' 'docbook-xsl')
optdepends=('ununrar: interface to unarchiver, the free RAR uncompression program'
'zip: creates PKZIP-compatible .zip files'
@@ -22,11 +22,17 @@ conflicts=("$_pkgname")
options=('!libtool' '!emptydirs')
install=file-roller.install
url="http://www.gnome.org"
-source=(http://ftp.gnome.org/pub/gnome/sources/$_pkgname/${pkgver::3}/$_pkgname-$pkgver.tar.xz)
-sha256sums=('47b026c827fcb0db4df51bf81c1e90f829f287fe2c9b9e65f167a2ef5bfec5f1')
+source=(http://ftp.gnome.org/pub/gnome/sources/$_pkgname/${pkgver::3}/$_pkgname-$pkgver.tar.xz
+ extract-to-fix.patch)
+sha256sums=('47b026c827fcb0db4df51bf81c1e90f829f287fe2c9b9e65f167a2ef5bfec5f1'
+ 'fc23e122b2d95df9eafe5bdf2a55beb1339a2b1b077973a1b45f881d9bb8427e')
build() {
cd $_pkgname-$pkgver
+
+ # https://bugzilla.gnome.org/show_bug.cgi?id=686321
+ patch -Np1 -i "$srcdir/extract-to-fix.patch"
+
./configure --prefix=/usr --sysconfdir=/etc \
--libexecdir=/usr/lib/file-roller \
--localstatedir=/var --disable-static \
diff --git a/libre/file-roller-libre/extract-to-fix.patch b/libre/file-roller-libre/extract-to-fix.patch
new file mode 100644
index 000000000..2ec4c8336
--- /dev/null
+++ b/libre/file-roller-libre/extract-to-fix.patch
@@ -0,0 +1,13 @@
+diff --git a/src/main.c~ b/src/main.c
+index 1eb2e65..539ddfa 100644
+--- a/src/main.c~
++++ b/src/main.c
+@@ -850,7 +850,7 @@ fr_application_command_line (GApplication *application,
+
+ _g_object_unref (default_directory);
+ _g_object_unref (add_to_archive);
+- g_free (extraction_destination);
++ _g_object_unref (extraction_destination);
+
+ return fr_application_command_line_finished (application, EXIT_SUCCESS);
+ }
diff --git a/libre/gnu-ghostscript/PKGBUILD b/libre/gnu-ghostscript/PKGBUILD
index 0c4ecf2af..eb3a148e2 100644
--- a/libre/gnu-ghostscript/PKGBUILD
+++ b/libre/gnu-ghostscript/PKGBUILD
@@ -6,7 +6,7 @@ _pkgver=9.05
pkgver=9.05.0
pkgrel=2
pkgdesc="An interpreter for the PostScript language maintained by a team of GNU programmers"
-arch=('i686' 'x86_64' 'mips64el')
+arch=('i686' 'x86_64')
license=('GPL3')
depends=('libxt' 'libcups' 'fontconfig' 'jasper' 'zlib' 'libpng>=1.5.7' 'libjpeg' 'libtiff>=4.0.0' 'lcms2')
makedepends=('gtk2' 'gnutls')
diff --git a/libre/gstreamer0.10-bad-libre/PKGBUILD b/libre/gstreamer0.10-bad-libre/PKGBUILD
index bfb5a20ff..715743fba 100644
--- a/libre/gstreamer0.10-bad-libre/PKGBUILD
+++ b/libre/gstreamer0.10-bad-libre/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 160766 2012-06-05 08:51:20Z jgc $
+# $Id: PKGBUILD 168313 2012-10-08 14:04:19Z heftig $
# Maintainer: Jan de Groot <jgc@archlinux.org>
# Maintainer (Parabola): fauno <fauno@kiwwwi.com.ar>
# Maintainer (Parabola): André Silva <andre.paulista@adinet.com.uy>
@@ -6,10 +6,10 @@
pkgbase=gstreamer0.10-bad-libre
pkgname=('gstreamer0.10-bad-libre' 'gstreamer0.10-bad-libre-plugins')
pkgver=0.10.23
-pkgrel=2
+pkgrel=3
arch=('i686' 'x86_64' 'mips64el')
license=('LGPL' 'GPL')
-makedepends=('pkgconfig' 'gstreamer0.10-base>=0.10.36' 'xvidcore' 'libdca' 'bzip2' 'libdc1394' 'neon' 'musicbrainz' 'faad2' 'libmms' 'libcdaudio' 'libmpcdec' 'mjpegtools' 'libdvdnav' 'libmodplug' 'jasper' 'liblrdf' 'libofa' 'soundtouch' 'libvdpau' 'schroedinger' 'libass' 'libvpx' 'gsm' 'libgme' 'rtmpdump' 'libsndfile' 'librsvg' 'wildmidi')
+makedepends=('pkgconfig' 'gstreamer0.10-base>=0.10.36' 'xvidcore' 'libdca' 'bzip2' 'libdc1394' 'neon' 'musicbrainz' 'faad2' 'libmms' 'libcdaudio' 'libmpcdec' 'mjpegtools' 'libdvdnav' 'libmodplug' 'jasper' 'liblrdf' 'libofa' 'soundtouch' 'libvdpau' 'schroedinger' 'libass' 'libvpx' 'gsm' 'libgme' 'rtmpdump' 'libsndfile' 'librsvg' 'wildmidi' 'opus')
url="http://gstreamer.freedesktop.org/"
options=(!libtool !emptydirs)
source=(${url}/src/gst-plugins-bad/gst-plugins-bad-${pkgver}.tar.xz)
@@ -45,7 +45,7 @@ package_gstreamer0.10-bad-libre() {
package_gstreamer0.10-bad-libre-plugins() {
pkgdesc="GStreamer Multimedia Framework Bad Plugins (gst-plugins-bad)"
- depends=("gstreamer0.10-bad-libre=${pkgver}" 'xvidcore' 'libdca' 'bzip2' 'libdc1394' 'neon' 'musicbrainz' 'faad2' 'libmms' 'libcdaudio' 'libmpcdec' 'mjpegtools' 'libdvdnav' 'libmodplug' 'jasper' 'liblrdf' 'libofa' 'libvdpau' 'soundtouch' 'libass' 'schroedinger' 'libvpx' 'gsm' 'rtmpdump' 'libgme' 'libsndfile' 'librsvg' 'wildmidi')
+ depends=("gstreamer0.10-bad-libre=${pkgver}" 'xvidcore' 'libdca' 'bzip2' 'libdc1394' 'neon' 'musicbrainz' 'faad2' 'libmms' 'libcdaudio' 'libmpcdec' 'mjpegtools' 'libdvdnav' 'libmodplug' 'jasper' 'liblrdf' 'libofa' 'libvdpau' 'soundtouch' 'libass' 'schroedinger' 'libvpx' 'gsm' 'rtmpdump' 'libgme' 'libsndfile' 'librsvg' 'wildmidi' 'opus')
groups=('gstreamer0.10-plugins')
install=gstreamer0.10-bad-plugins.install
provides=("gstreamer0.10-bad-plugins=$pkgver")
diff --git a/libre/kile-libre/PKGBUILD b/libre/kile-libre/PKGBUILD
index a28bce338..212b32959 100644
--- a/libre/kile-libre/PKGBUILD
+++ b/libre/kile-libre/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 159260 2012-05-19 19:37:30Z ronald $
+# $Id: PKGBUILD 171256 2012-11-16 22:51:16Z allan $
# Maintainer: Ronald van Haren <ronald.archlinux.org>
# Contributor: Damir Perisa <damir.perisa@bluewin.ch>
# Maintainer (Parabola): Michał Masłowski <mtjm@mtjm.eu>
@@ -7,13 +7,14 @@
_pkgname=kile
pkgname=kile-libre
pkgver=2.1.3
-pkgrel=1
+pkgrel=2
pkgdesc="A user friendly TeX/LaTeX frontend for KDE"
arch=("i686" "x86_64" "mips64el")
license=('GPL2')
url="http://kile.sourceforge.net/"
depends=('kdebase-runtime' 'texlive-core' 'kdebase-katepart')
makedepends=('cmake' 'automoc4')
+optdepends=('kdebase-konsole: embedded terminal')
conflicts=('kile')
replaces=('kile')
provides=('kile')
diff --git a/libre/mplayer-libre/.directory b/libre/mplayer-libre/.directory
index 724f09760..b3a1c5dc3 100644
--- a/libre/mplayer-libre/.directory
+++ b/libre/mplayer-libre/.directory
@@ -1,2 +1,3 @@
[Dolphin]
-Timestamp=2012,3,7,11,33,38
+Timestamp=2012,11,17,0,31,48
+Version=3
diff --git a/libre/mplayer-libre/PKGBUILD b/libre/mplayer-libre/PKGBUILD
index 3e9d0a44d..461cc23e2 100644
--- a/libre/mplayer-libre/PKGBUILD
+++ b/libre/mplayer-libre/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 163126 2012-07-07 16:29:25Z ibiru $
+# $Id: PKGBUILD 171086 2012-11-16 15:00:56Z ibiru $
# Maintainer : Ionut Biru <ibiru@archlinux.org>
# Contributor: Hugo Doria <hugo@archlinux.org>
# Maintainer (Parabola): André Silva <emulatorman@lavabit.com>
@@ -6,7 +6,7 @@
_pkgbase=mplayer
pkgbase=mplayer-libre
pkgname=('mplayer-libre' 'mencoder-libre')
-pkgver=35014
+pkgver=35421
pkgrel=1
arch=('i686' 'x86_64')
makedepends=('libxxf86dga' 'libxxf86vm' 'libmad' 'libxinerama' 'sdl' 'lame' 'libtheora' 'xvidcore' 'libmng' 'libxss' 'libgl' 'smbclient'
@@ -16,7 +16,7 @@ license=('GPL')
url="http://www.mplayerhq.hu/"
options=(!buildflags !emptydirs)
source=(ftp://ftp.archlinux.org/other/$_pkgbase/$_pkgbase-$pkgver.tar.xz mplayer.desktop)
-md5sums=('d0785560e5e8eb02e089728ef4412eae'
+md5sums=('b8a82ad1e1d6c3ac847074772daba817'
'c0d6ef795cf6de48e3b87ff7c23f0319')
build() {
@@ -39,7 +39,7 @@ build() {
--enable-radio \
--enable-radio-capture \
--language=all \
- --confdir=/etc/mplayer
+ --confdir=/etc/mplayer
[ "$CARCH" = "i686" ] && sed 's|-march=i486|-march=i686|g' -i config.mak
make
@@ -71,7 +71,7 @@ package_mplayer-libre() {
package_mencoder-libre() {
pkgdesc="Free command line video decoding, encoding and filtering tool (without unfree faac support)"
depends=('enca' 'a52dec' 'libvpx' 'x264' 'libmng' 'libdca' 'bzip2' 'lame' 'alsa-lib' 'fontconfig' 'giflib' 'libpng' 'smbclient' 'xvidcore' 'opencore-amr'
- 'libmad' 'libtheora' 'fribidi' 'libjpeg' 'faad2' 'schroedinger' 'mpg123' 'libass' 'libbluray' 'libcdio')
+ 'libmad' 'libtheora' 'fribidi' 'libjpeg' 'faad2' 'schroedinger' 'mpg123' 'libass' 'libbluray' 'libcdio' 'libvorbis')
provides=("mencoder=$pkgver")
replaces=('mencoder')
conflicts=('mencoder')
@@ -80,3 +80,5 @@ package_mencoder-libre() {
make DESTDIR="$pkgdir" install-mencoder install-mencoder-man
find "$pkgdir/usr/share/man" -name 'mplayer.1' -exec bash -c 'mv "$1" "${1/mplayer/mencoder}"' _ {} \;
}
+md5sums=('b5d8c24fc106b4ed58acda3b86c468fa'
+ 'c0d6ef795cf6de48e3b87ff7c23f0319')
diff --git a/libre/mplayer-vaapi-libre/PKGBUILD b/libre/mplayer-vaapi-libre/PKGBUILD
index 41f84e022..edb193560 100644
--- a/libre/mplayer-vaapi-libre/PKGBUILD
+++ b/libre/mplayer-vaapi-libre/PKGBUILD
@@ -6,19 +6,19 @@
# Maintainer (Parabola): André Silva <emulatorman@lavabit.com>
pkgname=mplayer-vaapi-libre
-pkgver=35014
-pkgrel=1
+pkgver=35107
+pkgrel=3
pkgdesc="A movie player, compiled with vaapi (without unfree faac support)"
arch=('i686' 'x86_64')
url="http://gitorious.org/vaapi/mplayer"
license=('GPL')
depends=('libxxf86dga' 'libxxf86vm' 'libmad' 'libcdio' 'libxinerama' 'sdl'
- 'lame' 'fontconfig' 'libtheora' 'xvidcore' 'libmng' 'libxss' 'mesa'
+ 'lame' 'fontconfig' 'libtheora' 'xvidcore' 'libmng' 'libxss' 'glu'
'smbclient' 'aalib' 'jack' 'libcaca' 'x264' 'speex' 'faad2'
'lirc-utils' 'ttf-dejavu' 'libxvmc' 'enca' 'opencore-amr' 'libdca'
'a52dec' 'schroedinger' 'mpg123' 'libvpx' 'libpulse' 'fribidi'
'libbluray' 'libva' 'libass' 'desktop-file-utils')
-makedepends=('unzip-libre' 'live-media' 'yasm' 'ladspa' 'git')
+makedepends=('unzip-libre' 'live-media' 'yasm' 'ladspa' 'git' 'mesa')
provides=("mplayer=$pkgver" "mplayer-vaapi=$pkgver")
conflicts=('mplayer' 'mplayer-vaapi')
replaces=('mplayer-vaapi')
@@ -27,7 +27,7 @@ source=(http://pkgbuild.com/~foutrelis/mplayer-vaapi-$pkgver.tar.xz
tweak-desktop-file.patch)
options=('!buildflags' '!emptydirs')
install=mplayer-vaapi.install
-sha256sums=('db19a938e7de46aad567b6d7d8866ec6cb3919a29d60236609a83ebf4e1bb5f0'
+sha256sums=('a6c645625cc2cd6ca48764db302c926049f831e757857ece351b37b674e05e56'
'5a09fb462729a4e573568f9e8c1f57dbe7f69c0b68cfa4f6d70b3e52c450d93b')
build() {
diff --git a/libre/parabolaweb-utils/PKGBUILD b/libre/parabolaweb-utils/PKGBUILD
index e0b70ba1a..5fdd12bdb 100644
--- a/libre/parabolaweb-utils/PKGBUILD
+++ b/libre/parabolaweb-utils/PKGBUILD
@@ -8,7 +8,7 @@
pkgname=parabolaweb-utils
pkgver=`_get_pkgver`
-pkgrel=5
+pkgrel=8
pkgdesc="Utils for the Parabola website"
arch=('any')
url="https://projects.parabolagnulinux.org/parabolaweb.git/"
@@ -17,13 +17,15 @@ depends=(
'python2' # duh
'python2-flup' # for fcgi
'postgresql' # for database
- 'git' # used in parabolaweb-update
- 'libretools' # used in parabolaweb-update
+ 'git' # used in parabolaweb-download
+ 'libretools' # used in parabolaweb-{download,update} (libremessages)
`_get_depends`)
backup=('etc/conf.d/parabolaweb')
export pkgver
+makedepends=(makepkg-git)
+
source=(git://parabolagnulinux.org/parabolaweb.git
parabolaweb-download
parabolaweb-update
@@ -47,9 +49,9 @@ package() {
}
md5sums=('SKIP'
- '01bed679a4fd768e720bfd0f3c7d6694'
- 'a73063b14746720b77fdbab851f5c161'
+ 'f162c2ce49b4cafe0a14bd4767dfea04'
+ '7c212024c134fdd0d0318b52a5448ddb'
'd5294495f42df29d29519ebd0a8f6093'
'cc15e153f99fba82e7bb032896f655c2'
'a468016a7155b5da46521dcfc6428384'
- '9b565ef07e44d395bf7a0e484e3d19d1')
+ 'ffd37a19b1a72fbac2c58504aa17b355')
diff --git a/libre/parabolaweb-utils/parabolaweb-download b/libre/parabolaweb-utils/parabolaweb-download
index 823a18811..e124295d4 100644
--- a/libre/parabolaweb-utils/parabolaweb-download
+++ b/libre/parabolaweb-utils/parabolaweb-download
@@ -4,8 +4,8 @@
. /usr/bin/libremessages
dir=$WEBDIR
-repo=git://parabolagnulinux.org/parabolaweb.git
-ref=master
+repo=$GITURL
+ref=$GITREF
cd_safe() {
if ! cd "$1"; then
@@ -26,11 +26,11 @@ download_git() {
else
cd_safe "$dir"
# Make sure we are fetching the right repo
- # if [[ "$repo" != "$(git config --get remote.origin.url)" ]] ; then
- # error "$(gettext "%s is not a clone of %s")" "$dir" "$repo"
- # plain "$(gettext "Aborting...")"
- # exit 1
- # fi
+ if [[ "$repo" != "$(git config --get remote.origin.url)" ]] ; then
+ error "$(gettext "%s is not a clone of %s")" "$dir" "$repo"
+ plain "$(gettext "Aborting...")"
+ exit 1
+ fi
msg2 "$(gettext "Updating %s %s repo...")" "${repo}" "git"
if ! git pull origin "$ref"; then
# only warn on failure to allow offline builds
diff --git a/libre/parabolaweb-utils/parabolaweb-update b/libre/parabolaweb-utils/parabolaweb-update
index 45e17c4f2..2da9eea8a 100644
--- a/libre/parabolaweb-utils/parabolaweb-update
+++ b/libre/parabolaweb-utils/parabolaweb-update
@@ -15,17 +15,18 @@ find_makefiles() {
}
clean() {
- msg "Purging old .pyc files...."
cd "$WEBDIR"
+ msg "Purging old .pyc files..."
find . -name '*.pyc' -delete
+ msg "Purging old GNU Make generated files..."
for dir in `find_makefiles`; do
make -C "$WEBDIR/$dir" clean
done
}
configure() {
- msg "Checking configuration...."
cd "$WEBDIR"
+ msg "Checking configuration..."
if [[ ! -f local_settings.py ]]; then
msg2 "Configuration file missing, opening editor..."
cp local_settings.py.example local_settings.tmp.$$.py
@@ -36,7 +37,7 @@ configure() {
msg "Failed to configure, exiting"
exit 1
fi
- msg2 "Creating database...."
+ msg2 "Creating database..."
./manage.py syncdb
else
msg2 "Current configuration checks out"
@@ -44,11 +45,15 @@ configure() {
}
update-database() {
- msg "Updating database...."
cd "$WEBDIR"
- msg2 "Running migrations...."
+ msg "Updating database..."
+ msg2 "Running migrations..."
./manage.py migrate
- msg2 "Loading fixtures...."
+ if [[ -f devel/management/commands/update_types_permissions.py ]]; then
+ msg2 "Updating permissions..."
+ ./manage.py update_types_permissions
+ fi
+ msg2 "Loading fixtures..."
./manage.py loaddata */fixtures/*.json
}
@@ -69,10 +74,11 @@ main() {
exit 1
fi
+ if [[ -d "$WEBDIR" ]]; then
+ clean
+ fi
parabolaweb-download
- clean
configure
- clean
update-database
update-filesystem
}
diff --git a/libre/parabolaweb-utils/parabolaweb.conf b/libre/parabolaweb-utils/parabolaweb.conf
index 467e62e2c..5363479b3 100644
--- a/libre/parabolaweb-utils/parabolaweb.conf
+++ b/libre/parabolaweb-utils/parabolaweb.conf
@@ -2,3 +2,5 @@ HOST=127.0.0.1
PORT=8090 # 80 is nginx
WEBDIR=/srv/http/web
WEBUSER=nobody
+GITURL=git://parabolagnulinux.org/parabolaweb.git
+GITREF=master
diff --git a/libre/python-pgpdump/PKGBUILD b/libre/python-pgpdump/PKGBUILD
new file mode 100644
index 000000000..e65f60dfa
--- /dev/null
+++ b/libre/python-pgpdump/PKGBUILD
@@ -0,0 +1,27 @@
+# Maintainer: Luke Shumaker <lukeshu@sbcglobal.net>
+
+_pkgname=pgpdump
+pkgname=(python-pgpdump python2-pgpdump)
+pkgver=1.4
+pkgdesc=" a Python library for parsing PGP packets"
+url="https://github.com/toofishes/python-pgpdump"
+license=('custom:BSD3')
+
+pkgrel=1
+arch=(any)
+makedepends=(python python2)
+provides=(python2-pgpdump)
+source=(http://pypi.python.org/packages/source/p/$_pkgname/$_pkgname-$pkgver.tar.gz)
+md5sums=(b437c28ff9d6a6257a0062c0bbe2a9ec)
+
+package_python-pgpdump() {
+ cd "$srcdir/$_pkgname-$pkgver"
+ python setup.py install --root="$pkgdir/" --optimize=1
+ install -Dm644 COPYRIGHT "$pkgdir/usr/share/licenses/$pkgname/COPYING"
+}
+
+package_python2-pgpdump() {
+ cd "$srcdir/$_pkgname-$pkgver"
+ python2 setup.py install --root="$pkgdir/" --optimize=1
+ install -Dm644 COPYRIGHT "$pkgdir/usr/share/licenses/$pkgname/COPYING"
+}
diff --git a/libre/spectrwm-libre/PKGBUILD b/libre/spectrwm-libre/PKGBUILD
index 4b4bccec3..a5a9b9b50 100644
--- a/libre/spectrwm-libre/PKGBUILD
+++ b/libre/spectrwm-libre/PKGBUILD
@@ -4,7 +4,7 @@
_pkgname=spectrwm
pkgname=spectrwm-libre
-pkgver=2.0.1
+pkgver=2.1.0
pkgrel=1
pkgdesc="A minimalistic automatic tiling window manager that tries to stay out of the way (without unfree profont support)"
arch=('i686' 'x86_64' 'mips64el')
@@ -21,7 +21,7 @@ backup=(etc/spectrwm.conf)
source=(http://opensource.conformal.com/snapshots/$_pkgname/$_pkgname-$pkgver.tgz \
LICENSE \
baraction.sh)
-md5sums=('ed553574e65bb364e26d359790e204f2'
+md5sums=('cd0ca423445bdc5a74528ca23166449b'
'a67cfe51079481e5b0eab1ad371379e3'
'950d663692e1da56e0ac864c6c3ed80e')
diff --git a/pcr/anyremote/PKGBUILD b/pcr/anyremote/PKGBUILD
new file mode 100644
index 000000000..96e030245
--- /dev/null
+++ b/pcr/anyremote/PKGBUILD
@@ -0,0 +1,24 @@
+# Contributor: Andrea Fagiani <andfagiani_at_gmail_dot_com>
+# Contributor: hb <hb.at.spamers.dot.net>
+# Contributor: Lisa Denia <eiffel56@gmail.com>
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname=anyremote
+pkgver=6.0
+pkgrel=1
+pkgdesc="Remote control (console-oriented) through bluetooth or IR connection"
+arch=('i686' 'x86_64')
+url="http://anyremote.sourceforge.net"
+license=('GPL')
+depends=('bluez' 'dbus-glib' 'libxtst')
+optdepends=("irda-utils: IRDA support")
+install=anyremote.install
+source=(http://downloads.sourceforge.net/sourceforge/anyremote/$pkgname-$pkgver.tar.gz)
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ ./configure --prefix=/usr
+ make
+ make DESTDIR=$pkgdir install
+}
+md5sums=('f39da5df07f3e1a0c59bc3f95347dbe7')
diff --git a/pcr/anyremote/anyremote.install b/pcr/anyremote/anyremote.install
new file mode 100644
index 000000000..012444ce0
--- /dev/null
+++ b/pcr/anyremote/anyremote.install
@@ -0,0 +1,6 @@
+post_install () {
+ echo "
+ >>>Download the java client for your phone at
+ >>>http://anyremote.sourceforge.net/dload.html
+ "
+}
diff --git a/pcr/aurvote/PKGBUILD b/pcr/aurvote/PKGBUILD
new file mode 100644
index 000000000..4dcf8d3d2
--- /dev/null
+++ b/pcr/aurvote/PKGBUILD
@@ -0,0 +1,18 @@
+# Maintainer: tuxce <tuxce.net@gmail.com>
+# Maintainer: Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname=aurvote
+pkgver=1.4
+pkgrel=1
+pkgdesc="Tool to vote for favorite AUR packages"
+url="http://git.archlinux.fr/aurvote.git/"
+license="GPL"
+arch=('any')
+depends=('curl')
+source=($pkgname)
+
+build() {
+ install -D -m 755 "$srcdir/$pkgname" "$pkgdir/usr/bin/$pkgname"
+}
+
+md5sums=('57f2f0822b833f6c858526eb7c8bb85f')
diff --git a/pcr/aurvote/aurvote b/pcr/aurvote/aurvote
new file mode 100755
index 000000000..1b9c8f1bf
--- /dev/null
+++ b/pcr/aurvote/aurvote
@@ -0,0 +1,193 @@
+#!/bin/bash
+#
+# aurvote : Tool to vote for favorite AUR packages
+#
+# Copyright (c) 2007-2010 Julien MISCHKOWITZ <wain@archlinux.fr>
+# Copyright (c) 2011 tuxce <tuxce.net@gmail.com>
+#
+# This program 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, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+
+NAME='aurvote'
+VERSION=1.4
+
+TMPDIR=${TMPDIR:-/tmp}
+AV_TMP="$TMPDIR/aurvote-$USER"
+
+CONFIGFILE=${XDG_HOME_CONFIG:-~/.config}/aurvote
+
+AUR_URL="https://aur.archlinux.org"
+AUR_URL_LOGIN="$AUR_URL/login/"
+AUR_URL_PKG_INFO="$AUR_URL/rpc.php"
+AUR_URL_PKG_PAGE="$AUR_URL/packages/"
+AUR_DOMAIN="aur.archlinux.org"
+AUR_COOKIE="AURSID"
+AUR_COOKIE_VALUE=""
+AUR_SETLANG="?setlang=en"
+
+
+version() {
+ echo "$NAME $VERSION"
+}
+
+usage() {
+ echo "$NAME $VERSION"
+ echo
+ echo "usage: $0 <option> <pkgname1> <pkgname2> ..."
+ echo
+ echo " --version, -V shows version"
+ echo " --help, -h shows this help"
+ echo " --check, -c check for voted packages"
+ echo " --vote, -v vote for packages"
+ echo " --unvote, -u unvote packages"
+ echo
+ echo " --configure create $CONFIGFILE"
+ echo
+}
+
+error() {
+ echo -e "Error: $*"
+ exit 1
+}
+
+is_cookie_valid() {
+ [[ -r $COOKIE_FILE ]] || return 1
+ local expire
+ expire=$(sed -ne '/^\(#HttpOnly_\|[^#]\)/ { s/#HttpOnly_//;p }' "$COOKIE_FILE" |
+ awk "{ if (\$1==\"$AUR_DOMAIN\" && \$6==\"$AUR_COOKIE\") print \$5\" \"\$7; }")
+ AUR_COOKIE_VALUE=${expire##* }
+ expire=${expire%% *}
+ [[ $expire ]] && { ((expire==0)) || ((expire>$(date +%s))); }
+}
+
+aur_login() {
+ local args=()
+ if ((PERSIST)); then
+ is_cookie_valid && return 0
+ args=(-d "remember_me=on")
+ fi
+ if [[ ! $user || ! $pass ]]; then
+ error "$CONFIGFILE must have user name and password. Run:\n$NAME --configure"
+ fi
+ curl $CURL_OPT -L -fs -c "$COOKIE_FILE" "${args[@]}" -d "user=$user" \
+ --data-urlencode "passwd=$pass" "$AUR_URL_LOGIN" \
+ -o "$AV_TMP/login" || error "Unable to access $AUR_URL_LOGIN"
+ err=$(sed -ne 's/.*ul class="errorlist"><li>\([^<]*\)<.*/\1/p' "$AV_TMP/login")
+ [[ $err ]] && error "$err"
+}
+
+aur_check_vote() {
+ local pkg
+ for pkg in "${pkgnames[@]}"; do
+ curl $CURL_OPT -fs -b "$COOKIE_FILE" \
+ "${AUR_URL_PKG_PAGE}${pkg}${AUR_SETLANG}" \
+ -o "$AV_TMP/$pkg.$PID" ||
+ error "Unable to get $pkg page"
+ if sed '/<div id="news">/q' "$AV_TMP/$pkg.$PID" | grep -q /unvote/; then
+ echo "already voted"
+ elif sed '/<div id="news">/q' "$AV_TMP/$pkg.$PID" | grep -q /vote/; then
+ echo "not voted"
+ else
+ echo "voted status not found"
+ fi
+ done
+}
+
+
+aur_vote() {
+ local pkg
+ (($1)) && vote="/vote/" || vote="/unvote/"
+ for pkg in "${pkgnames[@]}"; do
+ curl $CURL_OPT -fs -b "$COOKIE_FILE" \
+ "${AUR_URL_PKG_PAGE}${pkg}${vote}" -o /dev/null
+ if (($?)); then
+ echo "Error: Can't (un)vote for $pkg"
+ else
+ echo "$pkg : vote changed"
+ fi
+ done
+}
+
+create_config_file() {
+ local ans
+ if [[ -f "$CONFIGFILE" ]]; then
+ read -p "$CONFIGFILE exists. Replace ? [y/N] " ans
+ [[ $ans != 'Y' && $ans != 'y' ]] && return 0
+ fi
+ echo -n > "$CONFIGFILE"
+ if [[ ! -r "$CONFIGFILE" ]]; then
+ error "Unable to create $CONFIGFILE"
+ fi
+ echo "Creation of $CONFIGFILE"
+ read -p "AUR User : " ans
+ printf "user=%q\n" "$ans" >> "$CONFIGFILE"
+ read -p "AUR Password : " ans
+ printf "pass=%q\n" "$ans" >> "$CONFIGFILE"
+ read -p "Persistent login ? [Y/n] " ans
+ [[ $ans = 'n' || $ans = 'N' ]] && return 0
+ read -p "Path to the cookie file : [/var/tmp/aurvote-$USER.cookie] ? " ans
+ printf "COOKIE_FILE=%q\n" "${ans:-/var/tmp/aurvote-$USER.cookie}" >> "$CONFIGFILE"
+ echo
+ echo "Creation complete."
+}
+
+### MAIN PROGRAM ###
+umask 077
+[[ -d "$AV_TMP" ]] || mkdir -p "$AV_TMP"
+[[ -d "$AV_TMP" && -w "$AV_TMP" ]] || error "Cannot access to $AV_TMP"
+PID=$$
+ACTION="vote"
+pkgnames=()
+CURL_OPT=""
+PERSIST=0
+
+[[ -r "$CONFIGFILE" ]] && source "$CONFIGFILE"
+
+[[ $COOKIE_FILE ]] && PERSIST=1
+
+while [[ $1 ]]; do
+ case $1 in
+ --help|-h) usage; exit 0;;
+ --version|-V) version; exit 0;;
+ --check|-c) ACTION="check";;
+ --configure) ACTION="configure";;
+ --vote|-v) ACTION="vote";;
+ --unvote|-u) ACTION="unvote";;
+ --id) ;; # deprecated
+ --insecure) CURL_OPT+=" --insecure";;
+ -k) PERSIST=1; shift; COOKIE_FILE="$1";;
+ --*|-*) usage; exit 1;;
+ *) pkgnames+=("$1");;
+ esac
+ shift
+done
+
+if [[ $ACTION = "configure" ]]; then
+ create_config_file
+ exit 0
+fi
+
+COOKIE_FILE=${COOKIE_FILE:-"$AV_TMP/cookies"}
+pkgnames=("${pkgnames[@]%/*}") # compatibility with yaourt <= 1.2.1
+[[ ! $pkgnames ]] && usage && exit 1
+
+aur_login
+
+case "$ACTION" in
+ check) aur_check_vote;;
+ vote) aur_vote 1;;
+ unvote) aur_vote 0;;
+esac
+
+# vim: set ts=4 sw=4 et:
diff --git a/pcr/auto-complete/PKGBUILD b/pcr/auto-complete/PKGBUILD
new file mode 100755
index 000000000..afa9d8691
--- /dev/null
+++ b/pcr/auto-complete/PKGBUILD
@@ -0,0 +1,30 @@
+# Contributor: abf <zouxiaoming@gmail.com>
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname=auto-complete
+pkgver=1.3.1
+pkgrel=1
+pkgdesc="A plugin for emacs that allows to auto-complete.Auto Complete Mode is the most intelligent auto-completion extension for GNU Emacs."
+arch=('any')
+url="http://cx4a.org/software/auto-complete/"
+license=('GPL3')
+install=$pkgname.install
+depends=()
+optdepends=('emacs')
+source=(http://cx4a.org/pub/auto-complete/$pkgname-$pkgver.tar.bz2)
+md5sums=('0ffdc1223d40b8ebc57495e33708ceea')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ mkdir -p $pkgdir/usr/share/$pkgname
+ mkdir -p $pkgdir/usr/share/emacs/site-lisp/
+ make DIR="$pkgdir/usr/share/$pkgname" install
+ ln -s /usr/share/$pkgname $pkgdir/usr/share/emacs/site-lisp/$pkgname
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/pcr/auto-complete/auto-complete.install b/pcr/auto-complete/auto-complete.install
new file mode 100755
index 000000000..9687f5e43
--- /dev/null
+++ b/pcr/auto-complete/auto-complete.install
@@ -0,0 +1,21 @@
+post_install()
+{
+echo " "
+echo "==================================================================="
+echo " "
+echo "Add the following code to your .emacs:"
+
+echo "(add-to-list 'load-path \"/usr/share/emacs/site-lisp/auto-complete\")"
+echo "(require 'auto-complete-config)"
+echo "(add-to-list 'ac-dictionary-directories \"/usr/share/emacs/site-lisp/auto-complete/ac-dict\")"
+echo "(ac-config-default)"
+echo " "
+echo "==================================================================="
+echo " "
+
+}
+
+post_upgrade()
+{
+ post_install
+}
diff --git a/pcr/bambus/PKGBUILD b/pcr/bambus/PKGBUILD
new file mode 100755
index 000000000..d76ba2dc2
--- /dev/null
+++ b/pcr/bambus/PKGBUILD
@@ -0,0 +1,26 @@
+# Bambus
+# Contributor: ying <Jinoto Systems>
+# Contributor: ying <Jinoto Systems>
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname=bambus
+pkgver=2.4
+pkgrel=1
+pkgdesc="A small and simple GTK Gui to change Wallpapers using feh, Esetroot, hsetroot, habak or any other command tool."
+url="http://malisch-ts.de"
+arch=('i686' 'x86_64')
+license=('GPL3')
+depends=('gtkmm' 'eterm') # 'eterm' can be changed in any command tool to draw the wallpaper.
+optdepends=('eterm' 'habak' 'feh' 'hsetroot' 'others')
+source=("https://downloads.sourceforge.net/project/simplebambus/bambus-${pkgver}-source.tar.gz?r=&ts=1289210369&use_mirror=master")
+md5sums=('c8001d9f837f04f4f8712729c2aa1849')
+
+build() {
+ make all
+}
+package() {
+ install -Dm755 bambus $pkgdir/usr/bin/bambus || return
+}
+
+
+md5sums=('c8001d9f837f04f4f8712729c2aa1849')
diff --git a/pcr/bashmount/PKGBUILD b/pcr/bashmount/PKGBUILD
new file mode 100644
index 000000000..e468ab79f
--- /dev/null
+++ b/pcr/bashmount/PKGBUILD
@@ -0,0 +1,37 @@
+# Contributer: Jamie Nguyen <jamie@tomoyolinux.co.uk>
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname=bashmount
+pkgver=1.6.2
+pkgrel=1
+pkgdesc="A menu-driven bash script for the management of removable media with udisks"
+arch=('any')
+url='http://www.sourceforge.net/projects/bashmount/'
+license=('GPL2')
+depends=('udisks')
+install=${pkgname}.install
+backup=('etc/bashmount.conf')
+source=("http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.gz")
+
+build()
+{
+ cd "${srcdir}/bashmount-${pkgver}"
+
+ # install script
+ install -D -m755 bashmount "${pkgdir}/usr/bin/bashmount"
+
+ # install config file
+ install -D -m644 bashmount.conf "${pkgdir}/etc/bashmount.conf"
+
+ # install man page
+ gzip -c -9 bashmount.1 > bashmount.1.gz
+ install -D -m644 bashmount.1.gz "${pkgdir}/usr/share/man/man1/bashmount.1.gz"
+
+ # install documentation
+ install -d -m755 "${pkgdir}/usr/share/doc/bashmount"
+ install -m644 AUTHORS "${pkgdir}/usr/share/doc/bashmount/AUTHORS"
+ install -m644 COPYING "${pkgdir}/usr/share/doc/bashmount/COPYING"
+ install -m644 NEWS "${pkgdir}/usr/share/doc/bashmount/NEWS"
+}
+
+sha256sums=('10e5c8f9065e2410c5018d74a3f8cf7f30668fafa30d9ed82ff04cd64a0f7309')
diff --git a/pcr/bashmount/bashmount.install b/pcr/bashmount/bashmount.install
new file mode 100644
index 000000000..6e646d94b
--- /dev/null
+++ b/pcr/bashmount/bashmount.install
@@ -0,0 +1,9 @@
+post_install () {
+ echo
+ echo " * dbus and consolekit/policykit need to be running. If you are not"
+ echo " using a graphical login manager, put this in ~/.xinitrc:"
+ echo
+ echo " source /etc/X11/xinit/xinitrc.d/30-dbus"
+ echo " exec ck-launch-session [insert window manager here]"
+ echo
+}
diff --git a/pcr/bup/PKGBUILD b/pcr/bup/PKGBUILD
new file mode 100644
index 000000000..d45d60961
--- /dev/null
+++ b/pcr/bup/PKGBUILD
@@ -0,0 +1,35 @@
+# Contributor: Bram Schoenmakers <me@bramschoenmakers.nl>
+# Contributor: henning mueller <henning@orgizm.net>
+# Maintainer : Parabola GNU / Linux-libre Aurélien Desbrières <aurelien@cwb.io>
+
+# If you'd like to have documentation, please set the variable below to 1.
+# This implies installing pandoc, which in turn depends on many Haskell packages.
+# Which you can build if you wish.
+_havedocs=0
+
+pkgname=bup
+pkgver=0.25rc1
+_pkgver=0.25-rc1
+pkgrel=2
+pkgdesc="Backup tool using git pack files."
+arch=('i686' 'x86_64')
+url="http://github.com/apenwarr/bup"
+license=('GPL')
+depends=('python2-fuse' 'par2cmdline' 'python' 'git')
+[ $_havedocs = 1 ] && makedepends=('haskell-pandoc')
+source=("https://github.com/apenwarr/${pkgname}/archive/${pkgname}-${_pkgver}.tar.gz")
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgname}-${_pkgver}"
+
+ find . -name \*.py | xargs sed -i 's:env python:env python2:'
+ sed -i 's:PYTHON=python:PYTHON=python2:' Makefile
+
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgname}-${_pkgver}"
+ make DESTDIR=$pkgdir install
+}
+
diff --git a/pcr/cegui-0.5/CEGUIString.h b/pcr/cegui-0.5/CEGUIString.h
new file mode 100644
index 000000000..13a61ba15
--- /dev/null
+++ b/pcr/cegui-0.5/CEGUIString.h
@@ -0,0 +1,5603 @@
+/***********************************************************************
+ filename: CEGUIString.h
+ created: 26/2/2004
+ author: Paul D Turner
+
+ purpose: Defines string class used within the GUI system.
+*************************************************************************/
+/***************************************************************************
+ * Copyright (C) 2004 - 2006 Paul D Turner & The CEGUI Development Team
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+ * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ * OTHER DEALINGS IN THE SOFTWARE.
+ ***************************************************************************/
+#ifndef _CEGUIString_h_
+#define _CEGUIString_h_
+
+#include "CEGUIBase.h"
+#include <string>
+#include <string.h>
+#include <stdexcept>
+
+// Start of CEGUI namespace section
+namespace CEGUI
+{
+#define STR_QUICKBUFF_SIZE 32
+ /*************************************************************************
+ Basic Types
+ *************************************************************************/
+ typedef uint8 utf8;
+ //typedef uint16 utf16; // removed typedef to prevent usage, as utf16 is not supported (yet)
+ typedef uint32 utf32;
+
+/*!
+\brief
+ String class used within the GUI system.
+
+ For the most part, this class can replace std::string in basic usage. However, currently String does not use the
+ current locale, and also comparisons do not take into account the Unicode data tables, so are not 'correct'
+ as such.
+*/
+class CEGUIEXPORT String
+{
+public:
+ /*************************************************************************
+ Integral Types
+ *************************************************************************/
+ typedef utf32 value_type; //!< Basic 'code point' type used for String (utf32)
+ typedef size_t size_type; //!< Unsigned type used for size values and indices
+ typedef std::ptrdiff_t difference_type; //!< Signed type used for differences
+ typedef utf32& reference; //!< Type used for utf32 code point references
+ typedef const utf32& const_reference; //!< Type used for constant utf32 code point references
+ typedef utf32* pointer; //!< Type used for utf32 code point pointers
+ typedef const utf32* const_pointer; //!< Type used for constant utf32 code point pointers
+
+ static const size_type npos; //!< Value used to represent 'not found' conditions and 'all code points' etc.
+
+private:
+ /*************************************************************************
+ Implementation data
+ *************************************************************************/
+ size_type d_cplength; //!< holds length of string in code points (not including null termination)
+ size_type d_reserve; //!< code point reserve size (currently allocated buffer size in code points).
+
+ mutable utf8* d_encodedbuff; //!< holds string data encoded as utf8 (generated only by calls to c_str() and data())
+ mutable size_type d_encodeddatlen; //!< holds length of encoded data (in case it's smaller than buffer).
+ mutable size_type d_encodedbufflen; //!< length of above buffer (since buffer can be bigger then the data it holds to save re-allocations).
+
+ utf32 d_quickbuff[STR_QUICKBUFF_SIZE]; //!< This is a integrated 'quick' buffer to save allocations for smallish strings
+ utf32* d_buffer; //!< Pointer the the main buffer memory. This is only valid when quick-buffer is not being used
+
+public:
+ /*************************************************************************
+ Iterator Classes
+ *************************************************************************/
+ /*!
+ \brief
+ Constant forward iterator class for String objects
+ */
+#if defined(_MSC_VER) && (_MSC_VER <= 1200)
+ class const_iterator : public std::iterator<std::random_access_iterator_tag, utf32>
+#else
+ class const_iterator : public std::iterator<std::random_access_iterator_tag, utf32, std::ptrdiff_t, const utf32*, const utf32&>
+#endif
+ {
+
+ public:
+ //////////////////////////////////////////////////////////////////////////
+ // data
+ //////////////////////////////////////////////////////////////////////////
+ const utf32* d_ptr;
+
+
+ //////////////////////////////////////////////////////////////////////////
+ // Methods
+ //////////////////////////////////////////////////////////////////////////
+ const_iterator(void)
+ {
+ d_ptr = 0;
+ }
+ const_iterator(const_pointer ptr)
+ {
+ d_ptr = ptr;
+ }
+
+ const_reference operator*() const
+ {
+ return *d_ptr;
+ }
+
+#if defined(_MSC_VER) && (_MSC_VER <= 1200)
+# pragma warning (push)
+# pragma warning (disable : 4284)
+#endif
+ const_pointer operator->() const
+ {
+ return &**this;
+ }
+
+#if defined(_MSC_VER) && (_MSC_VER <= 1200)
+# pragma warning (pop)
+#endif
+
+ const_iterator& operator++()
+ {
+ ++d_ptr;
+ return *this;
+ }
+
+ const_iterator operator++(int)
+ {
+ const_iterator temp = *this;
+ ++*this;
+ return temp;
+ }
+
+ const_iterator& operator--()
+ {
+ --d_ptr;
+ return *this;
+ }
+
+ const_iterator operator--(int)
+ {
+ const_iterator temp = *this;
+ --*this;
+ return temp;
+ }
+
+ const_iterator& operator+=(difference_type offset)
+ {
+ d_ptr += offset;
+ return *this;
+ }
+
+ const_iterator operator+(difference_type offset) const
+ {
+ const_iterator temp = *this;
+ return temp += offset;
+ }
+
+ const_iterator& operator-=(difference_type offset)
+ {
+ return *this += -offset;
+ }
+
+ const_iterator operator-(difference_type offset) const
+ {
+ const_iterator temp = *this;
+ return temp -= offset;
+ }
+
+ difference_type operator-(const const_iterator& iter) const
+ {
+ return d_ptr - iter.d_ptr;
+ }
+
+ const_reference operator[](difference_type offset) const
+ {
+ return *(*this + offset);
+ }
+
+ bool operator==(const const_iterator& iter) const
+ {
+ return d_ptr == iter.d_ptr;
+ }
+
+ bool operator!=(const const_iterator& iter) const
+ {
+ return !(*this == iter);
+ }
+
+ bool operator<(const const_iterator& iter) const
+ {
+ return d_ptr < iter.d_ptr;
+ }
+
+ bool operator>(const const_iterator& iter) const
+ {
+ return (!(iter < *this));
+ }
+
+ bool operator<=(const const_iterator& iter) const
+ {
+ return (!(iter < *this));
+ }
+
+ bool operator>=(const const_iterator& iter) const
+ {
+ return (!(*this < iter));
+ }
+
+ friend const_iterator operator+(difference_type offset, const const_iterator& iter)
+ {
+ return iter + offset;
+ }
+
+ };
+
+ /*!
+ \brief
+ Forward iterator class for String objects
+ */
+ class iterator : public const_iterator
+ {
+ public:
+ iterator(void) {}
+ iterator(pointer ptr) : const_iterator(ptr) {}
+
+
+ reference operator*() const
+ {
+ return ((reference)**(const_iterator *)this);
+ }
+
+#if defined(_MSC_VER) && (_MSC_VER <= 1200)
+# pragma warning (push)
+# pragma warning (disable : 4284)
+#endif
+
+ pointer operator->() const
+ {
+ return &**this;
+ }
+
+#if defined(_MSC_VER) && (_MSC_VER <= 1200)
+# pragma warning (pop)
+#endif
+
+ iterator& operator++()
+ {
+ ++this->d_ptr;
+ return *this;
+ }
+
+ iterator operator++(int)
+ {
+ iterator temp = *this;
+ ++*this;
+ return temp;
+ }
+
+ iterator& operator--()
+ {
+ --this->d_ptr;
+ return *this;
+ }
+
+ iterator operator--(int)
+ {
+ iterator temp = *this;
+ --*this;
+ return temp;
+ }
+
+ iterator& operator+=(difference_type offset)
+ {
+ this->d_ptr += offset;
+ return *this;
+ }
+
+ iterator operator+(difference_type offset) const
+ {
+ iterator temp = *this;
+ return temp + offset;
+ }
+
+ iterator& operator-=(difference_type offset)
+ {
+ return *this += -offset;
+ }
+
+ iterator operator-(difference_type offset) const
+ {
+ iterator temp = *this;
+ return temp -= offset;
+ }
+
+ difference_type operator-(const const_iterator& iter) const
+ {
+ return ((const_iterator)*this - iter);
+ }
+
+ reference operator[](difference_type offset) const
+ {
+ return *(*this + offset);
+ }
+
+ friend iterator operator+(difference_type offset, const iterator& iter)
+ {
+ return iter + offset;
+ }
+
+ };
+
+ /*!
+ \brief
+ Constant reverse iterator class for String objects
+ */
+#if defined(_MSC_VER) && ((_MSC_VER <= 1200) || ((_MSC_VER <= 1300) && defined(_STLPORT_VERSION)))
+ typedef std::reverse_iterator<const_iterator, const_pointer, const_reference, difference_type> const_reverse_iterator;
+#else
+ typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
+#endif
+
+ /*!
+ \brief
+ Reverse iterator class for String objects
+ */
+#if defined(_MSC_VER) && ((_MSC_VER <= 1200) || ((_MSC_VER <= 1300) && defined(_STLPORT_VERSION)))
+ typedef std::reverse_iterator<iterator, pointer, reference, difference_type> reverse_iterator;
+#else
+ typedef std::reverse_iterator<iterator> reverse_iterator;
+#endif
+
+public:
+ /*!
+ \brief
+ Functor that can be used as comparator in a std::map with String keys.
+ It's faster than using the default, but the map will no longer be sorted alphabetically.
+ */
+ struct FastLessCompare
+ {
+ bool operator() (const String& a, const String& b) const
+ {
+ const size_t la = a.length();
+ const size_t lb = b.length();
+ if (la == lb)
+ return (memcmp(a.ptr(), b.ptr(), la*sizeof(utf32)) < 0);
+ return (la < lb);
+ }
+ };
+
+public:
+ //////////////////////////////////////////////////////////////////////////
+ // Default Construction and Destructor
+ //////////////////////////////////////////////////////////////////////////
+ /*!
+ \brief
+ Constructs an empty string
+ */
+ String(void)
+ {
+ init();
+ }
+
+ /*!
+ \brief
+ Destructor for String objects
+ */
+ ~String(void);
+
+ //////////////////////////////////////////////////////////////////////////
+ // Construction via CEGUI::String
+ //////////////////////////////////////////////////////////////////////////
+ /*!
+ \brief
+ Copy constructor - Creates a new string with the same value as \a str
+
+ \param str
+ String object used to initialise the newly created string
+
+ \return
+ Nothing
+ */
+ String(const String& str)
+ {
+ init();
+ assign(str);
+ }
+
+
+ /*!
+ \brief
+ Constructs a new string initialised with code points from another String object.
+
+ \param str
+ String object used to initialise the newly created string
+
+ \param str_idx
+ Starting code-point of \a str to be used when initialising the new String
+
+ \param str_num
+ Maximum number of code points from \a str that are to be assigned to the new String
+
+ \return
+ Nothing
+ */
+ String(const String& str, size_type str_idx, size_type str_num = npos)
+ {
+ init();
+ assign(str, str_idx, str_num);
+ }
+
+ //////////////////////////////////////////////////////////////////////////
+ // Construction via std::string
+ //////////////////////////////////////////////////////////////////////////
+ /*!
+ \brief
+ Constructs a new string and initialises it using the std::string std_str
+
+ \param std_str
+ The std::string object that is to be used to initialise the new String object.
+
+ \note
+ The characters of \a std_str are taken to be unencoded data which represent Unicode code points 0x00..0xFF. No translation of
+ the provided data will occur.
+
+ \return
+ Nothing
+
+ \exception std::length_error Thrown if resulting String object would be too big.
+ */
+ String(const std::string& std_str)
+ {
+ init();
+ assign(std_str);
+ }
+
+ /*!
+ \brief
+ Constructs a new string initialised with characters from the given std::string object.
+
+ \param std_str
+ std::string object used to initialise the newly created string
+
+ \param str_idx
+ Starting character of \a std_str to be used when initialising the new String
+
+ \note
+ The characters of \a std_str are taken to be unencoded data which represent Unicode code points 0x00..0xFF. No translation of
+ the provided data will occur.
+
+ \param str_num
+ Maximum number of characters from \a std_str that are to be assigned to the new String
+
+ \return
+ Nothing
+
+ \exception std::length_error Thrown if resulting String object would be too big.
+ */
+ String(const std::string& std_str, size_type str_idx, size_type str_num = npos)
+ {
+ init();
+ assign(std_str, str_idx, str_num);
+ }
+
+
+ //////////////////////////////////////////////////////////////////////////
+ // Construction via UTF-8 stream (for straight ASCII use, only codes 0x00 - 0x7f are valid)
+ //////////////////////////////////////////////////////////////////////////
+ /*!
+ \brief
+ Constructs a new String object and initialise it using the provided utf8 encoded string buffer.
+
+ \param utf8_str
+ Pointer to a buffer containing a null-terminated Unicode string encoded as utf8 data.
+
+ \note
+ A basic string literal (cast to utf8*) can be passed to this function, provided that the string is
+ comprised only of code points 0x00..0x7f. The use of extended ASCII characters (with values >0x7f)
+ would result in incorrect behaviour as the String will attempt to 'decode' the data, with unpredictable
+ results.
+
+ \return
+ Nothing
+
+ \exception std::length_error Thrown if resulting String object would be too big.
+ */
+ String(const utf8* utf8_str)
+ {
+ init();
+ assign(utf8_str);
+ }
+
+ /*!
+ \brief
+ Constructs a new String object and initialise it using the provided utf8 encoded string buffer.
+
+ A basic string literal (cast to utf8*) can be passed to this function, provided that the string is
+ comprised only of code points 0x00..0x7f. The use of extended ASCII characters (with values >0x7f)
+ would result in incorrect behaviour as the String will attempt to 'decode' the data, with unpredictable
+ results.
+
+ \param utf8_str
+ Pointer to a buffer containing Unicode string data encoded as utf8.
+
+ \note
+ A basic string literal (cast to utf8*) can be passed to this function, provided that the string is
+ comprised only of code points 0x00..0x7f. The use of extended ASCII characters (with values >0x7f)
+ would result in incorrect behaviour as the String will attempt to 'decode' the data, with unpredictable
+ results.
+
+ \param chars_len
+ Length of the provided utf8 string in code units (not code-points).
+
+ \return
+ Nothing
+
+ \exception std::length_error Thrown if resulting String object would be too big.
+ */
+ String(const utf8* utf8_str, size_type chars_len)
+ {
+ init();
+ assign(utf8_str, chars_len);
+ }
+
+ //////////////////////////////////////////////////////////////////////////
+ // Construction via code-point (using a UTF-32 code unit)
+ //////////////////////////////////////////////////////////////////////////
+ /*!
+ \brief
+ Constructs a new String that is initialised with the specified code point
+
+ \param num
+ The number of times \a code_point is to be put into new String object
+
+ \param code_point
+ The Unicode code point to be used when initialising the String object
+
+ \return
+ Nothing
+
+ \exception std::length_error Thrown if resulting String object would be too big.
+ */
+ String(size_type num, utf32 code_point)
+ {
+ init();
+ assign(num, code_point);
+ }
+
+ //////////////////////////////////////////////////////////////////////////
+ // Construction via iterator
+ //////////////////////////////////////////////////////////////////////////
+ // Create string with characters in the range [beg, end)
+ /*!
+ \brief
+ Construct a new string object and initialise it with code-points from the range [beg, end).
+
+ \param beg
+ Iterator describing the start of the data to be used when initialising the String object
+
+ \param end
+ Iterator describing the (exclusive) end of the data to be used when initialising the String object
+
+ \return
+ Nothing
+ */
+ String(const_iterator iter_beg, const_iterator iter_end)
+ {
+ init();
+ append(iter_beg, iter_end);
+ }
+
+
+ //////////////////////////////////////////////////////////////////////////
+ // Construction via c-string
+ //////////////////////////////////////////////////////////////////////////
+ /*!
+ \brief
+ Constructs a new String object and initialise it using the provided c-string.
+
+ \param c_str
+ Pointer to a c-string.
+
+ \return
+ Nothing
+
+ \exception std::length_error Thrown if resulting String object would be too big.
+ */
+ String(const char* cstr)
+ {
+ init();
+ assign(cstr);
+ }
+
+ /*!
+ \brief
+ Constructs a new String object and initialise it using characters from the provided char array.
+
+ \param chars
+ char array.
+
+ \param chars_len
+ Number of chars from the array to be used.
+
+ \return
+ Nothing
+
+ \exception std::length_error Thrown if resulting String object would be too big.
+ */
+ String(const char* chars, size_type chars_len)
+ {
+ init();
+ assign(chars, chars_len);
+ }
+
+
+ //////////////////////////////////////////////////////////////////////////
+ // Size operations
+ //////////////////////////////////////////////////////////////////////////
+ /*!
+ \brief
+ Returns the size of the String in code points
+
+ \return
+ Number of code points currently in the String
+ */
+ size_type size(void) const
+ {
+ return d_cplength;
+ }
+
+ /*!
+ \brief
+ Returns the size of the String in code points
+
+ \return
+ Number of code points currently in the String
+ */
+ size_type length(void) const
+ {
+ return d_cplength;
+ }
+
+ /*!
+ \brief
+ Returns true if the String is empty
+
+ \return
+ true if the String is empty, else false.
+ */
+ bool empty(void) const
+ {
+ return (d_cplength == 0);
+ }
+
+ /*!
+ \brief
+ Returns the maximum size of a String.
+
+ Any operation that would result in a String that is larger than this value will throw the std::length_error exception.
+
+ \return
+ The maximum number of code points that a string can contain
+ */
+ static size_type max_size(void)
+ {
+ return (((size_type)-1) / sizeof(utf32));
+ }
+
+ //////////////////////////////////////////////////////////////////////////
+ // Capacity Operations
+ //////////////////////////////////////////////////////////////////////////
+ // return the number of code points the string could hold without re-allocation
+ // (due to internal encoding this will always report the figure for worst-case encoding, and could even be < size()!)
+ /*!
+ \brief
+ Return the number of code points that the String could hold before a re-allocation would be required.
+
+ \return
+ Size of the current reserve buffer. This is the maximum number of code points the String could hold before a buffer
+ re-allocation would be required
+ */
+ size_type capacity(void) const
+ {
+ return d_reserve - 1;
+ }
+
+ // reserve internal memory for at-least 'num' code-points (characters). if num is 0, request is shrink-to-fit.
+ /*!
+ \brief
+ Specifies the amount of reserve capacity to allocate.
+
+ \param num
+ The number of code points to allocate space for. If \a num is larger that the current reserve, then a re-allocation will occur. If
+ \a num is smaller than the current reserve (but not 0) the buffer may be shrunk to the larger of the specified number, or the current
+ String size (operation is currently not implemented). If \a num is 0, then the buffer is re-allocated to fit the current String size.
+
+ \return
+ Nothing
+
+ \exception std::length_error Thrown if resulting String object would be too big.
+ */
+ void reserve(size_type num = 0)
+ {
+ if (num == 0)
+ trim();
+ else
+ grow(num);
+ }
+
+ //////////////////////////////////////////////////////////////////////////
+ // Comparisons
+ //////////////////////////////////////////////////////////////////////////
+ /*!
+ \brief
+ Compares this String with the String 'str'.
+
+ \note
+ This does currently not properly consider Unicode and / or the system locale.
+
+ \param str
+ The String object that is to compared with this String.
+
+ \return
+ - 0 if the String objects are equal
+ - <0 if this String is lexicographically smaller than \a str
+ - >0 if this String is lexicographically greater than \a str
+ */
+ int compare(const String& str) const
+ {
+ return compare(0, d_cplength, str);
+ }
+
+ /*!
+ \brief
+ Compares code points from this String with code points from the String 'str'.
+
+ \note
+ This does currently not properly consider Unicode and / or the system locale.
+
+ \param idx
+ Index of the first code point from this String to consider.
+
+ \param len
+ Maximum number of code points from this String to consider.
+
+ \param str
+ The String object that is to compared with this String.
+
+ \param str_idx
+ Index of the first code point from String \a str to consider.
+
+ \param str_len
+ Maximum number of code points from String \a str to consider
+
+ \return
+ - 0 if the specified sub-strings are equal
+ - <0 if specified sub-strings are lexicographically smaller than \a str
+ - >0 if specified sub-strings are lexicographically greater than \a str
+
+ \exception std::out_of_range Thrown if either \a idx or \a str_idx are invalid.
+ */
+ int compare(size_type idx, size_type len, const String& str, size_type str_idx = 0, size_type str_len = npos) const
+ {
+ if ((d_cplength < idx) || (str.d_cplength < str_idx))
+ throw std::out_of_range("Index is out of range for CEGUI::String");
+
+ if ((len == npos) || (idx + len > d_cplength))
+ len = d_cplength - idx;
+
+ if ((str_len == npos) || (str_idx + str_len > str.d_cplength))
+ str_len = str.d_cplength - str_idx;
+
+ int val = (len == 0) ? 0 : utf32_comp_utf32(&ptr()[idx], &str.ptr()[str_idx], (len < str_len) ? len : str_len);
+
+ return (val != 0) ? ((val < 0) ? -1 : 1) : (len < str_len) ? -1 : (len == str_len) ? 0 : 1;
+ }
+
+
+ /*!
+ \brief
+ Compares this String with the std::string 'std_str'.
+
+ \note
+ This does currently not properly consider Unicode and / or the system locale.
+
+ \param std_str
+ The std::string object that is to compared with this String.
+
+ \note
+ Characters from \a std_str are considered to represent Unicode code points in the range 0x00..0xFF. No translation of
+ the encountered data is performed.
+
+ \return
+ - 0 if the string objects are equal
+ - <0 if this string is lexicographically smaller than \a std_str
+ - >0 if this string is lexicographically greater than \a std_str
+ */
+ int compare(const std::string& std_str) const
+ {
+ return compare(0, d_cplength, std_str);
+ }
+
+
+ /*!
+ \brief
+ Compares code points from this String with code points from the std::string 'std_str'.
+
+ \note
+ This does currently not properly consider Unicode and / or the system locale.
+
+ \param idx
+ Index of the first code point from this String to consider.
+
+ \param len
+ Maximum number of code points from this String to consider.
+
+ \param std_str
+ The std::string object that is to compared with this String.
+
+ \note
+ Characters from \a std_str are considered to represent Unicode code points in the range 0x00..0xFF. No translation of
+ the encountered data is performed.
+
+ \param str_idx
+ Index of the first character from std::string \a std_str to consider.
+
+ \param str_len
+ Maximum number of characters from std::string \a std_str to consider
+
+ \return
+ - 0 if the specified sub-strings are equal
+ - <0 if specified sub-strings are lexicographically smaller than \a std_str
+ - >0 if specified sub-strings are lexicographically greater than \a std_str
+
+ \exception std::out_of_range Thrown if either \a idx or \a str_idx are invalid.
+ */
+ int compare(size_type idx, size_type len, const std::string& std_str, size_type str_idx = 0, size_type str_len = npos) const
+ {
+ if (d_cplength < idx)
+ throw std::out_of_range("Index is out of range for CEGUI::String");
+
+ if (std_str.size() < str_idx)
+ throw std::out_of_range("Index is out of range for std::string");
+
+ if ((len == npos) || (idx + len > d_cplength))
+ len = d_cplength - idx;
+
+ if ((str_len == npos) || (str_idx + str_len > std_str.size()))
+ str_len = (size_type)std_str.size() - str_idx;
+
+ int val = (len == 0) ? 0 : utf32_comp_char(&ptr()[idx], &std_str.c_str()[str_idx], (len < str_len) ? len : str_len);
+
+ return (val != 0) ? ((val < 0) ? -1 : 1) : (len < str_len) ? -1 : (len == str_len) ? 0 : 1;
+ }
+
+
+ /*!
+ \brief
+ Compares this String with the null-terminated utf8 encoded 'utf8_str'.
+
+ \note
+ This does currently not properly consider Unicode and / or the system locale.
+
+ \param utf8_str
+ The buffer containing valid Unicode data encoded as utf8 that is to compared with this String.
+
+ \note
+ A basic string literal (cast to utf8*) can be passed to this function, provided that the string is
+ comprised only of code points 0x00..0x7f. The use of extended ASCII characters (with values >0x7f)
+ would result in incorrect behaviour as the String will attempt to 'decode' the data, with unpredictable
+ results.
+
+ \return
+ - 0 if the strings are equal
+ - <0 if this string is lexicographically smaller than \a utf8_str
+ - >0 if this string is lexicographically greater than \a utf8_str
+ */
+ int compare(const utf8* utf8_str) const
+ {
+ return compare(0, d_cplength, utf8_str, encoded_size(utf8_str));
+ }
+
+
+ /*!
+ \brief
+ Compares code points from this String with the null-terminated utf8 encoded 'utf8_str'.
+
+ \note
+ This does currently not properly consider Unicode and / or the system locale.
+
+ \param idx
+ Index of the first code point from this String to consider.
+
+ \param len
+ Maximum number of code points from this String to consider.
+
+ \param utf8_str
+ The buffer containing valid Unicode data encoded as utf8 that is to compared with this String.
+
+ \note
+ A basic string literal (cast to utf8*) can be passed to this function, provided that the string is
+ comprised only of code points 0x00..0x7f. The use of extended ASCII characters (with values >0x7f)
+ would result in incorrect behaviour as the String will attempt to 'decode' the data, with unpredictable
+ results.
+
+ \return
+ - 0 if the specified sub-strings are equal
+ - <0 if specified sub-strings are lexicographically smaller than \a utf8_str
+ - >0 if specified sub-strings are lexicographically greater than \a utf8_str
+
+ \exception std::out_of_range Thrown if \a idx is invalid.
+ */
+ int compare(size_type idx, size_type len, const utf8* utf8_str) const
+ {
+ return compare(idx, len, utf8_str, encoded_size(utf8_str));
+ }
+
+ /*!
+ \brief
+ Compares code points from this String with the utf8 encoded data in buffer 'utf8_str'.
+
+ \note
+ This does currently not properly consider Unicode and / or the system locale.
+
+ \param idx
+ Index of the first code point from this String to consider.
+
+ \param len
+ Maximum number of code points from this String to consider.
+
+ \param utf8_str
+ The buffer containing valid Unicode data encoded as utf8 that is to compared with this String.
+
+ \note
+ A basic string literal (cast to utf8*) can be passed to this function, provided that the string is
+ comprised only of code points 0x00..0x7f. The use of extended ASCII characters (with values >0x7f)
+ would result in incorrect behaviour as the String will attempt to 'decode' the data, with unpredictable
+ results.
+
+ \param str_cplen
+ The number of encoded code points in the buffer \a utf8_str (this is not the same as the number of code units).
+
+ \return
+ - 0 if the specified sub-strings are equal
+ - <0 if specified sub-strings are lexicographically smaller than \a utf8_str
+ - >0 if specified sub-strings are lexicographically greater than \a utf8_str
+
+ \exception std::out_of_range Thrown if \a idx is invalid.
+ \exception std::length_error Thrown if \a str_cplen is set to npos.
+ */
+ int compare(size_type idx, size_type len, const utf8* utf8_str, size_type str_cplen) const
+ {
+ if (d_cplength < idx)
+ throw std::out_of_range("Index is out of range for CEGUI::String");
+
+ if (str_cplen == npos)
+ throw std::length_error("Length for utf8 encoded string can not be 'npos'");
+
+ if ((len == npos) || (idx + len > d_cplength))
+ len = d_cplength - idx;
+
+ int val = (len == 0) ? 0 : utf32_comp_utf8(&ptr()[idx], utf8_str, (len < str_cplen) ? len : str_cplen);
+
+ return (val != 0) ? ((val < 0) ? -1 : 1) : (len < str_cplen) ? -1 : (len == str_cplen) ? 0 : 1;
+ }
+
+
+ /*!
+ \brief
+ Compares this String with the given c-string.
+
+ \note
+ This does currently not properly consider Unicode and / or the system locale.
+
+ \param c_str
+ The c-string that is to compared with this String.
+
+ \return
+ - 0 if the strings are equal
+ - <0 if this string is lexicographically smaller than \a c_str
+ - >0 if this string is lexicographically greater than \a c_str
+ */
+ int compare(const char* cstr) const
+ {
+ return compare(0, d_cplength, cstr, strlen(cstr));
+ }
+
+
+ /*!
+ \brief
+ Compares code points from this String with the given c-string.
+
+ \note
+ This does currently not properly consider Unicode and / or the system locale.
+
+ \param idx
+ Index of the first code point from this String to consider.
+
+ \param len
+ Maximum number of code points from this String to consider.
+
+ \param c_str
+ The c-string that is to compared with this String.
+
+ \return
+ - 0 if the specified sub-strings are equal
+ - <0 if specified sub-strings are lexicographically smaller than \a c_str
+ - >0 if specified sub-strings are lexicographically greater than \a c_str
+
+ \exception std::out_of_range Thrown if \a idx is invalid.
+ */
+ int compare(size_type idx, size_type len, const char* cstr) const
+ {
+ return compare(idx, len, cstr, strlen(cstr));
+ }
+
+
+ /*!
+ \brief
+ Compares code points from this String with chars in the given char array.
+
+ \note
+ This does currently not properly consider Unicode and / or the system locale.
+
+ \param idx
+ Index of the first code point from this String to consider.
+
+ \param len
+ Maximum number of code points from this String to consider.
+
+ \param chars
+ The array containing the chars that are to compared with this String.
+
+ \param chars_len
+ The number of chars in the array.
+
+ \return
+ - 0 if the specified sub-strings are equal
+ - <0 if specified sub-strings are lexicographically smaller than \a chars
+ - >0 if specified sub-strings are lexicographically greater than \a chars
+
+ \exception std::out_of_range Thrown if \a idx is invalid.
+ \exception std::length_error Thrown if \a chars_len is set to npos.
+ */
+ int compare(size_type idx, size_type len, const char* chars, size_type chars_len) const
+ {
+ if (d_cplength < idx)
+ throw std::out_of_range("Index is out of range for CEGUI::String");
+
+ if (chars_len == npos)
+ throw std::length_error("Length for char array can not be 'npos'");
+
+ if ((len == npos) || (idx + len > d_cplength))
+ len = d_cplength - idx;
+
+ int val = (len == 0) ? 0 : utf32_comp_char(&ptr()[idx], chars, (len < chars_len) ? len : chars_len);
+
+ return (val != 0) ? ((val < 0) ? -1 : 1) : (len < chars_len) ? -1 : (len == chars_len) ? 0 : 1;
+ }
+
+
+ //////////////////////////////////////////////////////////////////////////
+ // Character access
+ //////////////////////////////////////////////////////////////////////////
+ /*!
+ \brief
+ Returns the code point at the given index.
+
+ \param idx
+ Zero based index of the code point to be returned.
+
+ \note
+ - For constant strings length()/size() provide a valid index and will access the default utf32 value.
+ - For non-constant strings length()/size() is an invalid index, and acceesing (especially writing) this index could cause string corruption.
+
+ \return
+ The utf32 code point at the given index within the String.
+ */
+ reference operator[](size_type idx)
+ {
+ return (ptr()[idx]);
+ }
+
+ /*!
+ \brief
+ Returns the code point at the given index.
+
+ \param idx
+ Zero based index of the code point to be returned.
+
+ \note
+ - For constant strings length()/size() provide a valid index and will access the default utf32 value.
+ - For non-constant strings length()/size() is an invalid index, and acceesing (especially writing) this index could cause string corruption.
+
+ \return
+ The utf32 code point at the given index within the String.
+ */
+ value_type operator[](size_type idx) const
+ {
+ return ptr()[idx];
+ }
+
+ /*!
+ \brief
+ Returns the code point at the given index.
+
+ \param idx
+ Zero based index of the code point to be returned.
+
+ \return
+ The utf32 code point at the given index within the String.
+
+ \exception std::out_of_range Thrown if \a idx is >= length().
+ */
+ reference at(size_type idx)
+ {
+ if (d_cplength <= idx)
+ throw std::out_of_range("Index is out of range for CEGUI::String");
+
+ return ptr()[idx];
+ }
+
+ /*!
+ \brief
+ Returns the code point at the given index.
+
+ \param idx
+ Zero based index of the code point to be returned.
+
+ \return
+ The utf32 code point at the given index within the String.
+
+ \exception std::out_of_range Thrown if \a idx is >= length().
+ */
+ const_reference at(size_type idx) const
+ {
+ if (d_cplength <= idx)
+ throw std::out_of_range("Index is out of range for CEGUI::String");
+
+ return ptr()[idx];
+ }
+
+
+ //////////////////////////////////////////////////////////////////////////
+ // C-Strings and arrays
+ //////////////////////////////////////////////////////////////////////////
+ /*!
+ \brief
+ Returns contents of the String as a null terminated string of utf8 encoded data.
+
+ \return
+ Pointer to a char buffer containing the contents of the String encoded as null-terminated utf8 data.
+
+ \note
+ The buffer returned from this function is owned by the String object.
+
+ \note
+ Any function that modifies the String data will invalidate the buffer returned by this call.
+ */
+ const char* c_str(void) const
+ {
+ return (const char*)build_utf8_buff();
+ }
+
+ /*!
+ \brief
+ Returns contents of the String as utf8 encoded data.
+
+ \return
+ Pointer to a buffer containing the contents of the String encoded utf8 data.
+
+ \note
+ The buffer returned from this function is owned by the String object.
+
+ \note
+ Any function that modifies the String data will invalidate the buffer returned by this call.
+ */
+ const utf8* data(void) const
+ {
+ return build_utf8_buff();
+ }
+
+ /*!
+ \brief
+ Returns a pointer to the buffer in use.
+ */
+ utf32* ptr(void)
+ {
+ return (d_reserve > STR_QUICKBUFF_SIZE) ? d_buffer : d_quickbuff;
+ }
+
+ /*!
+ \brief
+ Returns a pointer to the buffer in use. (const version)
+ */
+ const utf32* ptr(void) const
+ {
+ return (d_reserve > STR_QUICKBUFF_SIZE) ? d_buffer : d_quickbuff;
+ }
+
+ // copy, at most, 'len' code-points of the string, begining with code-point 'idx', into the array 'buf' as valid utf8 encoded data
+ // return number of utf8 code units placed into the buffer
+ /*!
+ \brief
+ Copies an area of the String into the provided buffer as encoded utf8 data.
+
+ \param buf
+ Pointer to a buffer that is to receive the encoded data (this must be big enough to hold the encoded data)
+
+ \param len
+ Maximum number of code points from the String that should be encoded into the buffer
+
+ \param idx
+ Index of the first code point to be encoded into the buffer
+
+ \return
+ The number of utf8 encoded code units transferred to the buffer.
+
+ \note A code unit does not equal a code point. A utf32 code point, when encoded as utf8, can occupy between 1 and 4 code units.
+
+ \exception std::out_of_range Thrown if \a idx was invalid for this String.
+ */
+ size_type copy(utf8* buf, size_type len = npos, size_type idx = 0) const
+ {
+ if (d_cplength < idx)
+ throw std::out_of_range("Index is out of range for CEGUI::String");
+
+ if (len == npos)
+ len = d_cplength;
+
+ return encode(&ptr()[idx], buf, npos, len);
+ }
+
+ //////////////////////////////////////////////////////////////////////////
+ // UTF8 Encoding length information
+ //////////////////////////////////////////////////////////////////////////
+ // return the number of bytes required to hold 'num' code-points, starting at code-point 'idx', of the the string when encoded as utf8 data.
+ /*!
+ \brief
+ Return the number of utf8 code units required to hold an area of the String when encoded as utf8 data
+
+ \param num
+ Maximum number of code points to consider when calculating utf8 encoded size.
+
+ \param idx
+ Index of the first code point to consider when calculating the utf8 encoded size
+
+ \return
+ The number of utf8 code units (bytes) required to hold the specified sub-string when encoded as utf8 data.
+
+ \exception std::out_of_range Thrown if \a idx was invalid for this String.
+ */
+ size_type utf8_stream_len(size_type num = npos, size_type idx = 0) const
+ {
+ using namespace std;
+
+ if (d_cplength < idx)
+ throw out_of_range("Index was out of range for CEGUI::String object");
+
+ size_type maxlen = d_cplength - idx;
+
+ return encoded_size(&ptr()[idx], ceguimin(num, maxlen));
+ }
+
+ //////////////////////////////////////////////////////////////////////////
+ // Assignment Functions
+ //////////////////////////////////////////////////////////////////////////
+ /*!
+ \brief
+ Assign the value of String \a str to this String
+
+ \param str
+ String object containing the string value to be assigned.
+
+ \return
+ This String after the assignment has happened
+ */
+ String& operator=(const String& str)
+ {
+ return assign(str);
+ }
+
+ /*!
+ \brief
+ Assign a sub-string of String \a str to this String
+
+ \param str
+ String object containing the string data to be assigned.
+
+ \param str_idx
+ Index of the first code point in \a str that is to be assigned
+
+ \param str_num
+ Maximum number of code points from \a str that are be be assigned
+
+ \return
+ This String after the assignment has happened
+
+ \exception std::out_of_range Thrown if str_idx is invalid for \a str
+ */
+ String& assign(const String& str, size_type str_idx = 0, size_type str_num = npos)
+ {
+ if (str.d_cplength < str_idx)
+ throw std::out_of_range("Index was out of range for CEGUI::String object");
+
+ if (str_num == npos)
+ str_num = str.d_cplength - str_idx;
+
+ grow(str_num);
+ setlen(str_num);
+ memcpy(ptr(), &str.ptr()[str_idx], str_num * sizeof(utf32));
+
+ return *this;
+ }
+
+ /*!
+ \brief
+ Assign the value of std::string \a std_str to this String
+
+ \note
+ The characters of \a std_str are taken to be unencoded data which represent Unicode code points 0x00..0xFF. No translation of
+ the provided data will occur.
+
+ \param std_str
+ std::string object containing the string value to be assigned.
+
+ \return
+ This String after the assignment has happened
+
+ \exception std::length_error Thrown if the resulting String would have been too large.
+ */
+ String& operator=(const std::string& std_str)
+ {
+ return assign(std_str);
+ }
+
+ /*!
+ \brief
+ Assign a sub-string of std::string \a std_str to this String
+
+ \note
+ The characters of \a std_str are taken to be unencoded data which represent Unicode code points 0x00..0xFF. No translation of
+ the provided data will occur.
+
+ \param std_str
+ std::string object containing the string value to be assigned.
+
+ \param str_idx
+ Index of the first character of \a std_str to be assigned
+
+ \param str_num
+ Maximum number of characters from \a std_str to be assigned
+
+ \return
+ This String after the assignment has happened
+
+ \exception std::out_of_range Thrown if \a str_idx is invalid for \a std_str
+ \exception std::length_error Thrown if the resulting String would have been too large.
+ */
+ String& assign(const std::string& std_str, size_type str_idx = 0, size_type str_num = npos)
+ {
+ if (std_str.size() < str_idx)
+ throw std::out_of_range("Index was out of range for std::string object");
+
+ if (str_num == npos)
+ str_num = (size_type)std_str.size() - str_idx;
+
+ grow(str_num);
+ setlen(str_num);
+
+ while(str_num--)
+ {
+ ((*this)[str_num]) = static_cast<utf32>(static_cast<unsigned char>(std_str[str_num + str_idx]));
+ }
+
+ return *this;
+ }
+
+ /*!
+ \brief
+ Assign to this String the string value represented by the given null-terminated utf8 encoded data
+
+ \note
+ A basic string literal (cast to utf8*) can be passed to this function, provided that the string is
+ comprised only of code points 0x00..0x7f. The use of extended ASCII characters (with values >0x7f)
+ would result in incorrect behaviour as the String will attempt to 'decode' the data, with unpredictable
+ results.
+
+ \param utf8_str
+ Buffer containing valid null-terminated utf8 encoded data
+
+ \return
+ This String after the assignment has happened
+
+ \exception std::length_error Thrown if the resulting String would have been too large.
+ */
+ String& operator=(const utf8* utf8_str)
+ {
+ return assign(utf8_str, utf_length(utf8_str));
+ }
+
+ /*!
+ \brief
+ Assign to this String the string value represented by the given null-terminated utf8 encoded data
+
+ \note
+ A basic string literal (cast to utf8*) can be passed to this function, provided that the string is
+ comprised only of code points 0x00..0x7f. The use of extended ASCII characters (with values >0x7f)
+ would result in incorrect behaviour as the String will attempt to 'decode' the data, with unpredictable
+ results.
+
+ \param utf8_str
+ Buffer containing valid null-terminated utf8 encoded data
+
+ \return
+ This String after the assignment has happened
+
+ \exception std::length_error Thrown if the resulting String would have been too large.
+ */
+ String& assign(const utf8* utf8_str)
+ {
+ return assign(utf8_str, utf_length(utf8_str));
+ }
+
+ /*!
+ \brief
+ Assign to this String the string value represented by the given utf8 encoded data
+
+ \note
+ A basic string literal (cast to utf8*) can be passed to this function, provided that the string is
+ comprised only of code points 0x00..0x7f. The use of extended ASCII characters (with values >0x7f)
+ would result in incorrect behaviour as the String will attempt to 'decode' the data, with unpredictable
+ results.
+
+ \param utf8_str
+ Buffer containing valid utf8 encoded data
+
+ \param str_num
+ Number of code units (not code points) in the buffer pointed to by \a utf8_str
+
+ \return
+ This String after the assignment has happened
+
+ \exception std::length_error Thrown if the resulting String would have been too large, or if str_num is 'npos'.
+ */
+ String& assign(const utf8* utf8_str, size_type str_num)
+ {
+ if (str_num == npos)
+ throw std::length_error("Length for utf8 encoded string can not be 'npos'");
+
+ size_type enc_sze = encoded_size(utf8_str, str_num);
+
+ grow(enc_sze);
+ encode(utf8_str, ptr(), d_reserve, str_num);
+ setlen(enc_sze);
+ return *this;
+ }
+
+ /*!
+ \brief
+ Assigns the specified utf32 code point to this String. Result is always a String 1 code point in length.
+
+ \param code_point
+ Valid utf32 Unicode code point to be assigned to the string
+
+ \return
+ This String after assignment
+ */
+ String& operator=(utf32 code_point)
+ {
+ return assign(1, code_point);
+ }
+
+ /*!
+ \brief
+ Assigns the specified code point repeatedly to the String
+
+ \param num
+ The number of times to assign the code point
+
+ \param code_point
+ Valid utf32 Unicode code point to be assigned to the string
+
+ \return
+ This String after assignment.
+
+ \exception std::length_error Thrown if \a num was 'npos'
+ */
+ String& assign(size_type num, utf32 code_point)
+ {
+ if (num == npos)
+ throw std::length_error("Code point count can not be 'npos'");
+
+ grow(num);
+ setlen(num);
+ utf32* p = ptr();
+
+ while(num--)
+ *p++ = code_point;
+
+ return *this;
+ }
+
+
+ /*!
+ \brief
+ Assign to this String the given C-string.
+
+ \param c_str
+ Pointer to a valid C style string.
+
+ \return
+ This String after the assignment has happened
+
+ \exception std::length_error Thrown if the resulting String would have been too large.
+ */
+ String& operator=(const char* cstr)
+ {
+ return assign(cstr, strlen(cstr));
+ }
+
+
+ /*!
+ \brief
+ Assign to this String the given C-string.
+
+ \param c_str
+ Pointer to a valid C style string.
+
+ \return
+ This String after the assignment has happened
+
+ \exception std::length_error Thrown if the resulting String would have been too large.
+ */
+ String& assign(const char* cstr)
+ {
+ return assign(cstr, strlen(cstr));
+ }
+
+
+ /*!
+ \brief
+ Assign to this String a number of chars from a char array.
+
+ \param chars
+ char array.
+
+ \param chars_len
+ Number of chars to be assigned.
+
+ \return
+ This String after the assignment has happened
+
+ \exception std::length_error Thrown if the resulting String would have been too large.
+ */
+ String& assign(const char* chars, size_type chars_len)
+ {
+ grow(chars_len);
+ utf32* pt = ptr();
+
+ for (size_type i = 0; i < chars_len; ++i)
+ {
+ *pt++ = static_cast<utf32>(static_cast<unsigned char>(*chars++));
+ }
+
+ setlen(chars_len);
+ return *this;
+ }
+
+
+ /*!
+ \brief
+ Swaps the value of this String with the given String \a str
+
+ \param str
+ String object whos value is to be swapped with this String.
+
+ \return
+ Nothing
+ */
+ void swap(String& str)
+ {
+ size_type temp_len = d_cplength;
+ d_cplength = str.d_cplength;
+ str.d_cplength = temp_len;
+
+ size_type temp_res = d_reserve;
+ d_reserve = str.d_reserve;
+ str.d_reserve = temp_res;
+
+ utf32* temp_buf = d_buffer;
+ d_buffer = str.d_buffer;
+ str.d_buffer = temp_buf;
+
+ // see if we need to swap 'quick buffer' data
+ if (temp_res <= STR_QUICKBUFF_SIZE)
+ {
+ utf32 temp_qbf[STR_QUICKBUFF_SIZE];
+
+ memcpy(temp_qbf, d_quickbuff, STR_QUICKBUFF_SIZE * sizeof(utf32));
+ memcpy(d_quickbuff, str.d_quickbuff, STR_QUICKBUFF_SIZE * sizeof(utf32));
+ memcpy(str.d_quickbuff, temp_qbf, STR_QUICKBUFF_SIZE * sizeof(utf32));
+ }
+
+ }
+
+ //////////////////////////////////////////////////////////////////////////
+ // Appending Functions
+ //////////////////////////////////////////////////////////////////////////
+ /*!
+ \brief
+ Appends the String \a str
+
+ \param str
+ String object that is to be appended
+
+ \return
+ This String after the append operation
+
+ \exception std::length_error Thrown if resulting String would be too large.
+ */
+ String& operator+=(const String& str)
+ {
+ return append(str);
+ }
+
+ /*!
+ \brief
+ Appends a sub-string of the String \a str
+
+ \param str
+ String object containing data to be appended
+
+ \param str_idx
+ Index of the first code point to be appended
+
+ \param str_num
+ Maximum number of code points to be appended
+
+ \return
+ This String after the append operation
+
+ \exception std::out_of_range Thrown if \a str_idx is invalid for \a str.
+ \exception std::length_error Thrown if resulting String would be too large.
+ */
+ String& append(const String& str, size_type str_idx = 0, size_type str_num = npos)
+ {
+ if (str.d_cplength < str_idx)
+ throw std::out_of_range("Index is out of range for CEGUI::String");
+
+ if (str_num == npos)
+ str_num = str.d_cplength - str_idx;
+
+ grow(d_cplength + str_num);
+ memcpy(&ptr()[d_cplength], &str.ptr()[str_idx], str_num * sizeof(utf32));
+ setlen(d_cplength + str_num);
+ return *this;
+ }
+
+
+ /*!
+ \brief
+ Appends the std::string \a std_str
+
+ \param std_str
+ std::string object that is to be appended
+
+ \note
+ The characters of \a std_str are taken to be unencoded data which represent Unicode code points 0x00..0xFF. No translation of
+ the provided data will occur.
+
+ \return
+ This String after the append operation
+
+ \exception std::length_error Thrown if resulting String would be too large.
+ */
+ String& operator+=(const std::string& std_str)
+ {
+ return append(std_str);
+ }
+
+ /*!
+ \brief
+ Appends a sub-string of the std::string \a std_str
+
+ \param std_str
+ std::string object containing data to be appended
+
+ \note
+ The characters of \a std_str are taken to be unencoded data which represent Unicode code points 0x00..0xFF. No translation of
+ the provided data will occur.
+
+ \param str_idx
+ Index of the first character to be appended
+
+ \param str_num
+ Maximum number of characters to be appended
+
+ \return
+ This String after the append operation
+
+ \exception std::out_of_range Thrown if \a str_idx is invalid for \a std_str.
+ \exception std::length_error Thrown if resulting String would be too large.
+ */
+ String& append(const std::string& std_str, size_type str_idx = 0, size_type str_num = npos)
+ {
+ if (std_str.size() < str_idx)
+ throw std::out_of_range("Index is out of range for std::string");
+
+ if (str_num == npos)
+ str_num = (size_type)std_str.size() - str_idx;
+
+ size_type newsze = d_cplength + str_num;
+
+ grow(newsze);
+ utf32* pt = &ptr()[newsze-1];
+
+ while(str_num--)
+ *pt-- = static_cast<utf32>(static_cast<unsigned char>(std_str[str_num]));
+
+ setlen(newsze);
+ return *this;
+ }
+
+
+ /*!
+ \brief
+ Appends to the String the null-terminated utf8 encoded data in the buffer utf8_str.
+
+ \param utf8_str
+ buffer holding the null-terminated utf8 encoded data that is to be appended
+
+ \note
+ A basic string literal (cast to utf8*) can be passed to this function, provided that the string is
+ comprised only of code points 0x00..0x7f. The use of extended ASCII characters (with values >0x7f)
+ would result in incorrect behaviour as the String will attempt to 'decode' the data, with unpredictable
+ results.
+
+ \return
+ This String after the append operation
+
+ \exception std::length_error Thrown if resulting String would be too large.
+ */
+ String& operator+=(const utf8* utf8_str)
+ {
+ return append(utf8_str, utf_length(utf8_str));
+ }
+
+ /*!
+ \brief
+ Appends to the String the null-terminated utf8 encoded data in the buffer utf8_str.
+
+ \param utf8_str
+ Buffer holding the null-terminated utf8 encoded data that is to be appended
+
+ \note
+ A basic string literal (cast to utf8*) can be passed to this function, provided that the string is
+ comprised only of code points 0x00..0x7f. The use of extended ASCII characters (with values >0x7f)
+ would result in incorrect behaviour as the String will attempt to 'decode' the data, with unpredictable
+ results.
+
+ \return
+ This String after the append operation
+
+ \exception std::length_error Thrown if resulting String would be too large.
+ */
+ String& append(const utf8* utf8_str)
+ {
+ return append(utf8_str, utf_length(utf8_str));
+ }
+
+
+ /*!
+ \brief
+ Appends to the String the utf8 encoded data in the buffer utf8_str.
+
+ \param utf8_str
+ Buffer holding the utf8 encoded data that is to be appended
+
+ \note
+ A basic string literal (cast to utf8*) can be passed to this function, provided that the string is
+ comprised only of code points 0x00..0x7f. The use of extended ASCII characters (with values >0x7f)
+ would result in incorrect behaviour as the String will attempt to 'decode' the data, with unpredictable
+ results.
+
+ \param len
+ Number of code units (not code points) in the buffer to be appended
+
+ \return
+ This String after the append operation
+
+ \exception std::length_error Thrown if resulting String would be too large, or if \a len was 'npos'
+ */
+ String& append(const utf8* utf8_str, size_type len)
+ {
+ if (len == npos)
+ throw std::length_error("Length for utf8 encoded string can not be 'npos'");
+
+ size_type encsz = encoded_size(utf8_str, len);
+ size_type newsz = d_cplength + encsz;
+
+ grow(newsz);
+ encode(utf8_str, &ptr()[d_cplength], encsz, len);
+ setlen(newsz);
+
+ return *this;
+ }
+
+
+ /*!
+ \brief
+ Appends a single code point to the string
+
+ \param code_point
+ utf32 Unicode code point that is to be appended
+
+ \return
+ This String after the append operation
+
+ \exception std::length_error Thrown if resulting String would be too long.
+ */
+ String& operator+=(utf32 code_point)
+ {
+ return append(1, code_point);
+ }
+
+ /*!
+ \brief
+ Appends a single code point multiple times to the string
+
+ \param num
+ Number of copies of the code point to be appended
+
+ \param code_point
+ utf32 Unicode code point that is to be appended
+
+ \return
+ This String after the append operation
+
+ \exception std::length_error Thrown if resulting String would be too long, or if \a num was 'npos'.
+ */
+ String& append(size_type num, utf32 code_point)
+ {
+ if (num == npos)
+ throw std::length_error("Code point count can not be 'npos'");
+
+ size_type newsz = d_cplength + num;
+ grow(newsz);
+
+ utf32* p = &ptr()[d_cplength];
+
+ while(num--)
+ *p++ = code_point;
+
+ setlen(newsz);
+
+ return *this;
+ }
+
+ /*!
+ \brief
+ Appends a single code point to the string
+
+ \param code_point
+ utf32 Unicode code point that is to be appended
+
+ \return
+ Nothing
+
+ \exception std::length_error Thrown if resulting String would be too long.
+ */
+ void push_back(utf32 code_point)
+ {
+ append(1, code_point);
+ }
+
+ /*!
+ \brief
+ Appends the code points in the reange [beg, end)
+
+ \param beg
+ Iterator describing the start of the range to be appended
+
+ \param end
+ Iterator describing the (exclusive) end of the range to be appended.
+
+ \return
+ This String after the append operation
+
+ \exception std::length_error Thrown if the resulting string would be too large.
+ */
+ String& append(const_iterator iter_beg, const_iterator iter_end)
+ {
+ return replace(end(), end(), iter_beg, iter_end);
+ }
+
+
+ /*!
+ \brief
+ Appends to the String the given c-string.
+
+ \param c_str
+ c-string that is to be appended.
+
+ \return
+ This String after the append operation
+
+ \exception std::length_error Thrown if resulting String would be too large.
+ */
+ String& operator+=(const char* cstr)
+ {
+ return append(cstr, strlen(cstr));
+ }
+
+
+ /*!
+ \brief
+ Appends to the String the given c-string.
+
+ \param c_str
+ c-string that is to be appended.
+
+ \return
+ This String after the append operation
+
+ \exception std::length_error Thrown if resulting String would be too large.
+ */
+ String& append(const char* cstr)
+ {
+ return append(cstr, strlen(cstr));
+ }
+
+
+ /*!
+ \brief
+ Appends to the String chars from the given char array.
+
+ \param chars
+ char array holding the chars that are to be appended
+
+ \param chars_len
+ Number of chars to be appended
+
+ \return
+ This String after the append operation
+
+ \exception std::length_error Thrown if resulting String would be too large, or if \a chars_len was 'npos'
+ */
+ String& append(const char* chars, size_type chars_len)
+ {
+ if (chars_len == npos)
+ throw std::length_error("Length for char array can not be 'npos'");
+
+ size_type newsz = d_cplength + chars_len;
+
+ grow(newsz);
+
+ utf32* pt = &ptr()[newsz-1];
+
+ while(chars_len--)
+ *pt-- = static_cast<utf32>(static_cast<unsigned char>(chars[chars_len]));
+
+ setlen(newsz);
+
+ return *this;
+ }
+
+
+ //////////////////////////////////////////////////////////////////////////
+ // Insertion Functions
+ //////////////////////////////////////////////////////////////////////////
+ /*!
+ \brief
+ Inserts the given String object at the specified position.
+
+ \param idx
+ Index where the string is to be inserted.
+
+ \param str
+ String object that is to be inserted.
+
+ \return
+ This String after the insert.
+
+ \exception std::out_of_range Thrown if \a idx is invalid for this String.
+ \exception std::length_error Thrown if resulting String would be too large.
+ */
+ String& insert(size_type idx, const String& str)
+ {
+ return insert(idx, str, 0, npos);
+ }
+
+ /*!
+ \brief
+ Inserts a sub-string of the given String object at the specified position.
+
+ \param idx
+ Index where the string is to be inserted.
+
+ \param str
+ String object containing data to be inserted.
+
+ \param str_idx
+ Index of the first code point from \a str to be inserted.
+
+ \param str_num
+ Maximum number of code points from \a str to be inserted.
+
+ \return
+ This String after the insert.
+
+ \exception std::out_of_range Thrown if \a idx or \a str_idx are out of range.
+ \exception std::length_error Thrown if resulting String would be too large.
+ */
+ String& insert(size_type idx, const String& str, size_type str_idx, size_type str_num)
+ {
+ if ((d_cplength < idx) || (str.d_cplength < str_idx))
+ throw std::out_of_range("Index is out of range for CEGUI::String");
+
+ if (str_num == npos)
+ str_num = str.d_cplength - str_idx;
+
+ size_type newsz = d_cplength + str_num;
+ grow(newsz);
+ memmove(&ptr()[idx + str_num], &ptr()[idx], (d_cplength - idx) * sizeof(utf32));
+ memcpy(&ptr()[idx], &str.ptr()[str_idx], str_num * sizeof(utf32));
+ setlen(newsz);
+
+ return *this;
+ }
+
+ /*!
+ \brief
+ Inserts the given std::string object at the specified position.
+
+ \param idx
+ Index where the std::string is to be inserted.
+
+ \param std_str
+ std::string object that is to be inserted.
+
+ \note
+ The characters of \a std_str are taken to be unencoded data which represent Unicode code points 0x00..0xFF. No translation of
+ the provided data will occur.
+
+ \return
+ This String after the insert.
+
+ \exception std::out_of_range Thrown if \a idx is invalid for this String.
+ \exception std::length_error Thrown if resulting String would be too large.
+ */
+ String& insert(size_type idx, const std::string& std_str)
+ {
+ return insert(idx, std_str, 0, npos);
+ }
+
+ /*!
+ \brief
+ Inserts a sub-string of the given std::string object at the specified position.
+
+ \param idx
+ Index where the string is to be inserted.
+
+ \param std_str
+ std::string object containing data to be inserted.
+
+ \note
+ The characters of \a std_str are taken to be unencoded data which represent Unicode code points 0x00..0xFF. No translation of
+ the provided data will occur.
+
+ \param str_idx
+ Index of the first character from \a std_str to be inserted.
+
+ \param str_num
+ Maximum number of characters from \a str to be inserted.
+
+ \return
+ This String after the insert.
+
+ \exception std::out_of_range Thrown if \a idx or \a str_idx are out of range.
+ \exception std::length_error Thrown if resulting String would be too large.
+ */
+ String& insert(size_type idx, const std::string& std_str, size_type str_idx, size_type str_num)
+ {
+ if (d_cplength < idx)
+ throw std::out_of_range("Index is out of range for CEGUI::String");
+
+ if (std_str.size() < str_idx)
+ throw std::out_of_range("Index is out of range for std::string");
+
+ if (str_num == npos)
+ str_num = (size_type)std_str.size() - str_idx;
+
+ size_type newsz = d_cplength + str_num;
+ grow(newsz);
+
+ memmove(&ptr()[idx + str_num], &ptr()[idx], (d_cplength - idx) * sizeof(utf32));
+
+ utf32* pt = &ptr()[idx + str_num - 1];
+
+ while(str_num--)
+ *pt-- = static_cast<utf32>(static_cast<unsigned char>(std_str[str_idx + str_num]));
+
+ setlen(newsz);
+
+ return *this;
+ }
+
+ /*!
+ \brief
+ Inserts the given null-terminated utf8 encoded data at the specified position.
+
+ \param idx
+ Index where the data is to be inserted.
+
+ \param utf8_str
+ Buffer containing the null-terminated utf8 encoded data that is to be inserted.
+
+ \note
+ A basic string literal (cast to utf8*) can be passed to this function, provided that the string is
+ comprised only of code points 0x00..0x7f. The use of extended ASCII characters (with values >0x7f)
+ would result in incorrect behaviour as the String will attempt to 'decode' the data, with unpredictable
+ results.
+
+ \return
+ This String after the insert.
+
+ \exception std::out_of_range Thrown if \a idx is invalid for this String.
+ \exception std::length_error Thrown if resulting String would be too large.
+ */
+ String& insert(size_type idx, const utf8* utf8_str)
+ {
+ return insert(idx, utf8_str, utf_length(utf8_str));
+ }
+
+ /*!
+ \brief
+ Inserts the given utf8 encoded data at the specified position.
+
+ \param idx
+ Index where the data is to be inserted.
+
+ \param utf8_str
+ Buffer containing the utf8 encoded data that is to be inserted.
+
+ \note
+ A basic string literal (cast to utf8*) can be passed to this function, provided that the string is
+ comprised only of code points 0x00..0x7f. The use of extended ASCII characters (with values >0x7f)
+ would result in incorrect behaviour as the String will attempt to 'decode' the data, with unpredictable
+ results.
+
+ \param len
+ Length of the data to be inserted in uf8 code units (not code points)
+
+ \return
+ This String after the insert.
+
+ \exception std::out_of_range Thrown if \a idx is invalid for this String.
+ \exception std::length_error Thrown if resulting String would be too large, or if \a len is 'npos'
+ */
+ String& insert(size_type idx, const utf8* utf8_str, size_type len)
+ {
+ if (d_cplength < idx)
+ throw std::out_of_range("Index is out of range for CEGUI::String");
+
+ if (len == npos)
+ throw std::length_error("Length of utf8 encoded string can not be 'npos'");
+
+ size_type encsz = encoded_size(utf8_str, len);
+ size_type newsz = d_cplength + encsz;
+
+ grow(newsz);
+ memmove(&ptr()[idx + encsz], &ptr()[idx], (d_cplength - idx) * sizeof(utf32));
+ encode(utf8_str, &ptr()[idx], encsz, len);
+ setlen(newsz);
+
+ return *this;
+ }
+
+ /*!
+ \brief
+ Inserts a code point multiple times into the String
+
+ \param idx
+ Index where the code point(s) are to be inserted
+
+ \param num
+ The number of times to insert the code point
+
+ \param code_point
+ The utf32 code point that is to be inserted
+
+ \return
+ This String after the insertion.
+
+ \exception std::out_of_range Thrown if \a idx is invalid for this String.
+ \exception std::length_error Thrown if resulting String would be too large, or if \a num is 'npos'
+ */
+ String& insert(size_type idx, size_type num, utf32 code_point)
+ {
+ if (d_cplength < idx)
+ throw std::out_of_range("Index is out of range for CEGUI::String");
+
+ if (num == npos)
+ throw std::length_error("Code point count can not be 'npos'");
+
+ size_type newsz = d_cplength + num;
+ grow(newsz);
+
+ memmove(&ptr()[idx + num], &ptr()[idx], (d_cplength - idx) * sizeof(utf32));
+
+ utf32* pt = &ptr()[idx + num - 1];
+
+ while(num--)
+ *pt-- = code_point;
+
+ setlen(newsz);
+
+ return *this;
+ }
+
+ /*!
+ \brief
+ Inserts a code point multiple times into the String
+
+ \param pos
+ Iterator describing the position where the code point(s) are to be inserted
+
+ \param num
+ The number of times to insert the code point
+
+ \param code_point
+ The utf32 code point that is to be inserted
+
+ \return
+ This String after the insertion.
+
+ \exception std::length_error Thrown if resulting String would be too large, or if \a num is 'npos'
+ */
+ void insert(iterator pos, size_type num, utf32 code_point)
+ {
+ insert(safe_iter_dif(pos, begin()), num, code_point);
+ }
+
+ /*!
+ \brief
+ Inserts a single code point into the String
+
+ \param pos
+ Iterator describing the position where the code point is to be inserted
+
+ \param code_point
+ The utf32 code point that is to be inserted
+
+ \return
+ This String after the insertion.
+
+ \exception std::length_error Thrown if resulting String would be too large.
+ */
+ iterator insert(iterator pos, utf32 code_point)
+ {
+ insert(pos, 1, code_point);
+ return pos;
+ }
+
+ /*!
+ \brief
+ Inserts code points specified by the range [beg, end).
+
+ \param pos
+ Iterator describing the position where the data is to be inserted
+
+ \param beg
+ Iterator describing the begining of the range to be inserted
+
+ \param end
+ Iterator describing the (exclusive) end of the range to be inserted.
+
+ \return
+ Nothing.
+
+ \exception std::length_error Thrown if resulting String would be too large.
+ */
+ void insert(iterator iter_pos, const_iterator iter_beg, const_iterator iter_end)
+ {
+ replace(iter_pos, iter_pos, iter_beg, iter_end);
+ }
+
+
+ /*!
+ \brief
+ Inserts the given c-string at the specified position.
+
+ \param idx
+ Index where the c-string is to be inserted.
+
+ \param c_str
+ c-string that is to be inserted.
+
+ \return
+ This String after the insert.
+
+ \exception std::out_of_range Thrown if \a idx is invalid for this String.
+ \exception std::length_error Thrown if resulting String would be too large.
+ */
+ String& insert(size_type idx, const char* cstr)
+ {
+ return insert(idx, cstr, strlen(cstr));
+ }
+
+
+ /*!
+ \brief
+ Inserts chars from the given char array at the specified position.
+
+ \param idx
+ Index where the data is to be inserted.
+
+ \param chars
+ char array containing the chars that are to be inserted.
+
+ \param chars_len
+ Length of the char array to be inserted.
+
+ \return
+ This String after the insert.
+
+ \exception std::out_of_range Thrown if \a idx is invalid for this String.
+ \exception std::length_error Thrown if resulting String would be too large, or if \a chars_len is 'npos'
+ */
+ String& insert(size_type idx, const char* chars, size_type chars_len)
+ {
+ if (d_cplength < idx)
+ throw std::out_of_range("Index is out of range for CEGUI::String");
+
+ if (chars_len == npos)
+ throw std::length_error("Length of char array can not be 'npos'");
+
+ size_type newsz = d_cplength + chars_len;
+
+ grow(newsz);
+ memmove(&ptr()[idx + chars_len], &ptr()[idx], (d_cplength - idx) * sizeof(utf32));
+
+ utf32* pt = &ptr()[idx + chars_len - 1];
+
+ while(chars_len--)
+ *pt-- = static_cast<utf32>(static_cast<unsigned char>(chars[chars_len]));
+
+ setlen(newsz);
+
+ return *this;
+ }
+
+
+ //////////////////////////////////////////////////////////////////////////
+ // Erasing characters
+ //////////////////////////////////////////////////////////////////////////
+ /*!
+ \brief
+ Removes all data from the String
+
+ \return
+ Nothing
+ */
+ void clear(void)
+ {
+ setlen(0);
+ trim();
+ }
+
+ /*!
+ \brief
+ Removes all data from the String
+
+ \return
+ The empty String (*this)
+ */
+ String& erase(void)
+ {
+ clear();
+ return *this;
+ }
+
+ /*!
+ \brief
+ Erase a single code point from the string
+
+ \param idx
+ The index of the code point to be removed.
+
+ \return
+ This String after the erase operation
+
+ \exception std::out_of_range Thrown if \a idx is invalid for this String.
+ */
+ String& erase(size_type idx)
+ {
+ return erase(idx, 1);
+ }
+
+ /*!
+ \brief
+ Erase a range of code points
+
+ \param idx
+ Index of the first code point to be removed.
+
+ \param len
+ Maximum number of code points to be removed.
+
+ \return
+ This String after the erase operation.
+
+ \exception std::out_of_range Thrown if \a idx is invalid for this String.
+ */
+ String& erase(size_type idx, size_type len = npos)
+ {
+ if (d_cplength < idx)
+ throw std::out_of_range("Index is out of range foe CEGUI::String");
+
+ if (len == npos)
+ len = d_cplength - idx;
+
+ size_type newsz = d_cplength - len;
+
+ memmove(&ptr()[idx], &ptr()[idx + len], (d_cplength - idx - len) * sizeof(utf32));
+ setlen(newsz);
+ return *this;
+ }
+
+ /*!
+ \brief
+ Erase the code point described by the given iterator
+
+ \param pos
+ Iterator describing the code point to be erased
+
+ \return
+ This String after the erase operation.
+ */
+ String& erase(iterator pos)
+ {
+ return erase(safe_iter_dif(pos, begin()), 1);
+ }
+
+ /*!
+ \brief
+ Erase a range of code points described by the iterators [beg, end).
+
+ \param beg
+ Iterator describing the postion of the beginning of the range to erase
+
+ \param end
+ Iterator describing the postion of the (exclusive) end of the range to erase
+
+ \return
+ This String after the erase operation.
+ */
+ String& erase(iterator iter_beg, iterator iter_end)
+ {
+ return erase(safe_iter_dif(iter_beg, begin()), safe_iter_dif(iter_end, iter_beg));
+ }
+
+ //////////////////////////////////////////////////////////////////////////
+ // Resizing
+ //////////////////////////////////////////////////////////////////////////
+ /*!
+ \brief
+ Resizes the String either by inserting default utf32 code points to make it larger, or by truncating to make it smaller
+
+ \param num
+ The length, in code points, that the String is to be made.
+
+ \return
+ Nothing.
+
+ \exception std::length_error Thrown if the String would be too large.
+ */
+ void resize(size_type num)
+ {
+ resize(num, utf32());
+ }
+
+ /*!
+ \brief
+ Resizes the String either by inserting the given utf32 code point to make it larger, or by truncating to make it smaller
+
+ \param num
+ The length, in code points, that the String is to be made.
+
+ \param code_point
+ The utf32 code point that should be used when majing the String larger
+
+ \return
+ Nothing.
+
+ \exception std::length_error Thrown if the String would be too large.
+ */
+ void resize(size_type num, utf32 code_point)
+ {
+ if (num < d_cplength)
+ {
+ setlen(num);
+ }
+ else
+ {
+ append(num - d_cplength, code_point);
+ }
+
+ }
+
+ //////////////////////////////////////////////////////////////////////////
+ // Replacing Characters
+ //////////////////////////////////////////////////////////////////////////
+ /*!
+ \brief
+ Replace code points in the String with the specified String object
+
+ \param idx
+ Index of the first code point to be replaced
+
+ \param len
+ Maximum number of code points to be replaced (if this is 0, operation is an insert at position \a idx)
+
+ \param str
+ The String object that is to replace the specified code points
+
+ \return
+ This String after the replace operation
+
+ \exception std::out_of_range Thrown if \a idx is invalid for this String
+ \exception std::length_error Thrown if the resulting String would be too large.
+ */
+ String& replace(size_type idx, size_type len, const String& str)
+ {
+ return replace(idx, len, str, 0, npos);
+ }
+
+ /*!
+ \brief
+ Replace the code points in the range [beg, end) with the specified String object
+
+ \note
+ If \a beg == \a end, the operation is a insert at iterator position \a beg
+
+ \param beg
+ Iterator describing the start of the range to be replaced
+
+ \param end
+ Iterator describing the (exclusive) end of the range to be replaced.
+
+ \param str
+ The String object that is to replace the specified range of code points
+
+ \return
+ This String after the replace operation
+
+ \exception std::length_error Thrown if the resulting String would be too large.
+ */
+ String& replace(iterator iter_beg, iterator iter_end, const String& str)
+ {
+ return replace(safe_iter_dif(iter_beg, begin()), safe_iter_dif(iter_end, iter_beg), str, 0, npos);
+ }
+
+ /*!
+ \brief
+ Replace code points in the String with a specified sub-string of a given String object.
+
+ \param idx
+ Index of the first code point to be replaced
+
+ \param len
+ Maximum number of code points to be replaced. If this is 0, the operation is an insert at position \a idx.
+
+ \param str
+ String object containing the data that will replace the specified range of code points
+
+ \param str_idx
+ Index of the first code point of \a str that is to replace the specified code point range
+
+ \param str_num
+ Maximum number of code points of \a str that are to replace the specified code point range
+
+ \return
+ This String after the replace operation
+
+ \exception std::out_of_range Thrown if either \a idx, or \a str_idx are invalid
+ \exception std::length_error Thrown if the resulting String would have been too large.
+ */
+ String& replace(size_type idx, size_type len, const String& str, size_type str_idx, size_type str_num)
+ {
+ if ((d_cplength < idx) || (str.d_cplength < str_idx))
+ throw std::out_of_range("Index is out of range for CEGUI::String");
+
+ if (((str_idx + str_num) > str.d_cplength) || (str_num == npos))
+ str_num = str.d_cplength - str_idx;
+
+ if (((len + idx) > d_cplength) || (len == npos))
+ len = d_cplength - idx;
+
+ size_type newsz = d_cplength + str_num - len;
+
+ grow(newsz);
+
+ if ((idx + len) < d_cplength)
+ memmove(&ptr()[idx + str_num], &ptr()[len + idx], (d_cplength - idx - len) * sizeof(utf32));
+
+ memcpy(&ptr()[idx], &str.ptr()[str_idx], str_num * sizeof(utf32));
+ setlen(newsz);
+
+ return *this;
+ }
+
+
+ /*!
+ \brief
+ Replace code points in the String with the specified std::string object
+
+ \param idx
+ Index of the first code point to be replaced
+
+ \param len
+ Maximum number of code points to be replaced (if this is 0, operation is an insert at position \a idx)
+
+ \param std_str
+ The std::string object that is to replace the specified code points
+
+ \note
+ Characters from \a std_str are considered to represent Unicode code points in the range 0x00..0xFF. No translation of
+ the encountered data is performed.
+
+ \return
+ This String after the replace operation
+
+ \exception std::out_of_range Thrown if \a idx is invalid for this String
+ \exception std::length_error Thrown if the resulting String would be too large.
+ */
+ String& replace(size_type idx, size_type len, const std::string& std_str)
+ {
+ return replace(idx, len, std_str, 0, npos);
+ }
+
+ /*!
+ \brief
+ Replace the code points in the range [beg, end) with the specified std::string object
+
+ \note
+ If \a beg == \a end, the operation is a insert at iterator position \a beg
+
+ \param beg
+ Iterator describing the start of the range to be replaced
+
+ \param end
+ Iterator describing the (exclusive) end of the range to be replaced.
+
+ \param std_str
+ The std::string object that is to replace the specified range of code points
+
+ \note
+ Characters from \a std_str are considered to represent Unicode code points in the range 0x00..0xFF. No translation of
+ the encountered data is performed.
+
+ \return
+ This String after the replace operation
+
+ \exception std::length_error Thrown if the resulting String would be too large.
+ */
+ String& replace(iterator iter_beg, iterator iter_end, const std::string& std_str)
+ {
+ return replace(safe_iter_dif(iter_beg, begin()), safe_iter_dif(iter_end, iter_beg), std_str, 0, npos);
+ }
+
+ /*!
+ \brief
+ Replace code points in the String with a specified sub-string of a given std::string object.
+
+ \param idx
+ Index of the first code point to be replaced
+
+ \param len
+ Maximum number of code points to be replaced. If this is 0, the operation is an insert at position \a idx.
+
+ \param std_str
+ std::string object containing the data that will replace the specified range of code points
+
+ \note
+ Characters from \a std_str are considered to represent Unicode code points in the range 0x00..0xFF. No translation of
+ the encountered data is performed.
+
+ \param str_idx
+ Index of the first code point of \a std_str that is to replace the specified code point range
+
+ \param str_num
+ Maximum number of code points of \a std_str that are to replace the specified code point range
+
+ \return
+ This String after the replace operation
+
+ \exception std::out_of_range Thrown if either \a idx, or \a str_idx are invalid
+ \exception std::length_error Thrown if the resulting String would have been too large.
+ */
+ String& replace(size_type idx, size_type len, const std::string& std_str, size_type str_idx, size_type str_num)
+ {
+ if (d_cplength < idx)
+ throw std::out_of_range("Index is out of range for CEGUI::String");
+
+ if (std_str.size() < str_idx)
+ throw std::out_of_range("Index is out of range for std::string");
+
+ if (((str_idx + str_num) > std_str.size()) || (str_num == npos))
+ str_num = (size_type)std_str.size() - str_idx;
+
+ if (((len + idx) > d_cplength) || (len == npos))
+ len = d_cplength - idx;
+
+ size_type newsz = d_cplength + str_num - len;
+
+ grow(newsz);
+
+ if ((idx + len) < d_cplength)
+ memmove(&ptr()[idx + str_num], &ptr()[len + idx], (d_cplength - idx - len) * sizeof(utf32));
+
+ utf32* pt = &ptr()[idx + str_num - 1];
+
+ while (str_num--)
+ *pt-- = static_cast<utf32>(static_cast<unsigned char>(std_str[str_idx + str_num]));
+
+ setlen(newsz);
+
+ return *this;
+ }
+
+
+ /*!
+ \brief
+ Replace code points in the String with the specified null-terminated utf8 encoded data.
+
+ \param idx
+ Index of the first code point to be replaced
+
+ \param len
+ Maximum number of code points to be replaced (if this is 0, operation is an insert at position \a idx)
+
+ \param utf8_str
+ Buffer containing the null-terminated utf8 encoded data that is to replace the specified code points
+
+ \note
+ A basic string literal (cast to utf8*) can be passed to this function, provided that the string is
+ comprised only of code points 0x00..0x7f. The use of extended ASCII characters (with values >0x7f)
+ would result in incorrect behaviour as the String will attempt to 'decode' the data, with unpredictable
+ results.
+
+ \return
+ This String after the replace operation
+
+ \exception std::out_of_range Thrown if \a idx is invalid for this String
+ \exception std::length_error Thrown if the resulting String would be too large.
+ */
+ String& replace(size_type idx, size_type len, const utf8* utf8_str)
+ {
+ return replace(idx, len, utf8_str, utf_length(utf8_str));
+ }
+
+ /*!
+ \brief
+ Replace the code points in the range [beg, end) with the specified null-terminated utf8 encoded data.
+
+ \note
+ If \a beg == \a end, the operation is a insert at iterator position \a beg
+
+ \param beg
+ Iterator describing the start of the range to be replaced
+
+ \param end
+ Iterator describing the (exclusive) end of the range to be replaced.
+
+ \param utf8_str
+ Buffer containing the null-terminated utf8 encoded data that is to replace the specified range of code points
+
+ \note
+ A basic string literal (cast to utf8*) can be passed to this function, provided that the string is
+ comprised only of code points 0x00..0x7f. The use of extended ASCII characters (with values >0x7f)
+ would result in incorrect behaviour as the String will attempt to 'decode' the data, with unpredictable
+ results.
+
+ \return
+ This String after the replace operation
+
+ \exception std::length_error Thrown if the resulting String would be too large.
+ */
+ String& replace(iterator iter_beg, iterator iter_end, const utf8* utf8_str)
+ {
+ return replace(iter_beg, iter_end, utf8_str, utf_length(utf8_str));
+ }
+
+ /*!
+ \brief
+ Replace code points in the String with the specified utf8 encoded data.
+
+ \param idx
+ Index of the first code point to be replaced
+
+ \param len
+ Maximum number of code points to be replaced (if this is 0, operation is an insert at position \a idx)
+
+ \param utf8_str
+ Buffer containing the null-terminated utf8 encoded data that is to replace the specified code points
+
+ \note
+ A basic string literal (cast to utf8*) can be passed to this function, provided that the string is
+ comprised only of code points 0x00..0x7f. The use of extended ASCII characters (with values >0x7f)
+ would result in incorrect behaviour as the String will attempt to 'decode' the data, with unpredictable
+ results.
+
+ \param str_len
+ Length of the utf8 encoded data in utf8 code units (not code points).
+
+ \return
+ This String after the replace operation
+
+ \exception std::out_of_range Thrown if \a idx is invalid for this String
+ \exception std::length_error Thrown if the resulting String would be too large, or if \a str_len was 'npos'.
+ */
+ String& replace(size_type idx, size_type len, const utf8* utf8_str, size_type str_len)
+ {
+ if (d_cplength < idx)
+ throw std::out_of_range("Index is out of range for CEGUI::String");
+
+ if (str_len == npos)
+ throw std::length_error("Length for utf8 encoded string can not be 'npos'");
+
+ if (((len + idx) > d_cplength) || (len == npos))
+ len = d_cplength - idx;
+
+ size_type encsz = encoded_size(utf8_str, str_len);
+ size_type newsz = d_cplength + encsz - len;
+
+ grow(newsz);
+
+ if ((idx + len) < d_cplength)
+ memmove(&ptr()[idx + encsz], &ptr()[len + idx], (d_cplength - idx - len) * sizeof(utf32));
+
+ encode(utf8_str, &ptr()[idx], encsz, str_len);
+
+ setlen(newsz);
+ return *this;
+ }
+
+ /*!
+ \brief
+ Replace the code points in the range [beg, end) with the specified null-terminated utf8 encoded data.
+
+ \note
+ If \a beg == \a end, the operation is a insert at iterator position \a beg
+
+ \param beg
+ Iterator describing the start of the range to be replaced
+
+ \param end
+ Iterator describing the (exclusive) end of the range to be replaced.
+
+ \param utf8_str
+ Buffer containing the null-terminated utf8 encoded data that is to replace the specified range of code points
+
+ \note
+ A basic string literal (cast to utf8*) can be passed to this function, provided that the string is
+ comprised only of code points 0x00..0x7f. The use of extended ASCII characters (with values >0x7f)
+ would result in incorrect behaviour as the String will attempt to 'decode' the data, with unpredictable
+ results.
+
+ \param str_len
+ Length of the utf8 encoded data in utf8 code units (not code points).
+
+ \return
+ This String after the replace operation
+
+ \exception std::length_error Thrown if the resulting String would be too large, or if \a str_len was 'npos'.
+ */
+ String& replace(iterator iter_beg, iterator iter_end, const utf8* utf8_str, size_type str_len)
+ {
+ return replace(safe_iter_dif(iter_beg, begin()), safe_iter_dif(iter_end, iter_beg), utf8_str, str_len);
+ }
+
+ /*!
+ \brief
+ Replaces a specified range of code points with occurrences of a given code point
+
+ \param idx
+ Index of the first code point to be replaced
+
+ \param len
+ Maximum number of code points to replace. If this is 0 the operation is an insert
+
+ \param num
+ Number of occurrences of \a code_point that are to replace the specified range of code points
+
+ \param code_point
+ Code point that is to be used when replacing the specified range of code points
+
+ \return
+ This String after the replace operation.
+
+ \exception std::out_of_range Thrown if \a idx is invalid for this String
+ \exception std::length_error Thrown if resulting String would have been too long, or if \a num was 'npos'.
+ */
+ String& replace(size_type idx, size_type len, size_type num, utf32 code_point)
+ {
+ if (d_cplength < idx)
+ throw std::out_of_range("Index is out of range for CEGUI::String");
+
+ if (num == npos)
+ throw std::length_error("Code point count can not be 'npos'");
+
+ if (((len + idx) > d_cplength) || (len == npos))
+ len = d_cplength - idx;
+
+ size_type newsz = d_cplength + num - len;
+
+ grow(newsz);
+
+ if ((idx + len) < d_cplength)
+ memmove(&ptr()[idx + num], &ptr()[len + idx], (d_cplength - idx - len) * sizeof(utf32));
+
+ utf32* pt = &ptr()[idx + num - 1];
+
+ while (num--)
+ *pt-- = code_point;
+
+ setlen(newsz);
+
+ return *this;
+ }
+
+ /*!
+ \brief
+ Replace the code points in the range [beg, end) with occurrences of a given code point
+
+ \note
+ If \a beg == \a end, the operation is an insert at iterator position \a beg
+
+ \param beg
+ Iterator describing the start of the range to be replaced
+
+ \param end
+ Iterator describing the (exclusive) end of the range to be replaced.
+
+ \param num
+ Number of occurrences of \a code_point that are to replace the specified range of code points
+
+ \param code_point
+ Code point that is to be used when replacing the specified range of code points
+
+ \return
+ This String after the replace operation
+
+ \exception std::length_error Thrown if resulting String would have been too long, or if \a num was 'npos'.
+ */
+ String& replace(iterator iter_beg, iterator iter_end, size_type num, utf32 code_point)
+ {
+ return replace(safe_iter_dif(iter_beg, begin()), safe_iter_dif(iter_end, iter_beg), num, code_point);
+ }
+
+
+ /*!
+ \brief
+ Replace the code points in the range [beg, end) with code points from the range [newBeg, newEnd).
+
+ \note
+ If \a beg == \a end, the operation is an insert at iterator position \a beg
+
+ \param beg
+ Iterator describing the start of the range to be replaced
+
+ \param end
+ Iterator describing the (exclusive) end of the range to be replaced.
+
+ \param newBeg
+ Iterator describing the beginning of the range to insert.
+
+ \param newEnd
+ Iterator describing the (exclusive) end of the range to insert.
+
+ \return
+ This String after the insert operation.
+
+ \exception std::length_error Thrown if the resulting string would be too long.
+ */
+ String& replace(iterator iter_beg, iterator iter_end, const_iterator iter_newBeg, const_iterator iter_newEnd)
+ {
+ if (iter_beg == iter_end)
+ {
+ erase(safe_iter_dif(iter_beg, begin()), safe_iter_dif(iter_end, iter_beg));
+ }
+ else
+ {
+ size_type str_len = safe_iter_dif(iter_newEnd, iter_newBeg);
+ size_type idx = safe_iter_dif(iter_beg, begin());
+ size_type len = safe_iter_dif(iter_end, iter_beg);
+
+ if ((len + idx) > d_cplength)
+ len = d_cplength - idx;
+
+ size_type newsz = d_cplength + str_len - len;
+
+ grow(newsz);
+
+ if ((idx + len) < d_cplength)
+ memmove(&ptr()[idx + str_len], &ptr()[len + idx], (d_cplength - idx - len) * sizeof(utf32));
+
+ memcpy(&ptr()[idx], iter_newBeg.d_ptr, str_len * sizeof(utf32));
+ setlen(newsz);
+ }
+
+ return *this;
+ }
+
+
+ /*!
+ \brief
+ Replace code points in the String with the specified c-string.
+
+ \param idx
+ Index of the first code point to be replaced
+
+ \param len
+ Maximum number of code points to be replaced (if this is 0, operation is an insert at position \a idx)
+
+ \param c_str
+ c-string that is to replace the specified code points
+
+ \return
+ This String after the replace operation
+
+ \exception std::out_of_range Thrown if \a idx is invalid for this String
+ \exception std::length_error Thrown if the resulting String would be too large.
+ */
+ String& replace(size_type idx, size_type len, const char* cstr)
+ {
+ return replace(idx, len, cstr, strlen(cstr));
+ }
+
+
+ /*!
+ \brief
+ Replace the code points in the range [beg, end) with the specified c-string.
+
+ \note
+ If \a beg == \a end, the operation is a insert at iterator position \a beg
+
+ \param beg
+ Iterator describing the start of the range to be replaced
+
+ \param end
+ Iterator describing the (exclusive) end of the range to be replaced.
+
+ \param c_str
+ c-string that is to replace the specified range of code points
+
+ \return
+ This String after the replace operation
+
+ \exception std::length_error Thrown if the resulting String would be too large.
+ */
+ String& replace(iterator iter_beg, iterator iter_end, const char* cstr)
+ {
+ return replace(iter_beg, iter_end, cstr, strlen(cstr));
+ }
+
+
+ /*!
+ \brief
+ Replace code points in the String with chars from the given char array.
+
+ \param idx
+ Index of the first code point to be replaced
+
+ \param len
+ Maximum number of code points to be replaced (if this is 0, operation is an insert at position \a idx)
+
+ \param chars
+ char array containing the cars that are to replace the specified code points
+
+ \param chars_len
+ Number of chars in the char array.
+
+ \return
+ This String after the replace operation
+
+ \exception std::out_of_range Thrown if \a idx is invalid for this String
+ \exception std::length_error Thrown if the resulting String would be too large, or if \a chars_len was 'npos'.
+ */
+ String& replace(size_type idx, size_type len, const char* chars, size_type chars_len)
+ {
+ if (d_cplength < idx)
+ throw std::out_of_range("Index is out of range for CEGUI::String");
+
+ if (chars_len == npos)
+ throw std::length_error("Length for the char array can not be 'npos'");
+
+ if (((len + idx) > d_cplength) || (len == npos))
+ len = d_cplength - idx;
+
+ size_type newsz = d_cplength + chars_len - len;
+
+ grow(newsz);
+
+ if ((idx + len) < d_cplength)
+ memmove(&ptr()[idx + chars_len], &ptr()[len + idx], (d_cplength - idx - len) * sizeof(utf32));
+
+ utf32* pt = &ptr()[idx + chars_len - 1];
+
+ while (chars_len--)
+ *pt-- = static_cast<utf32>(static_cast<unsigned char>(chars[chars_len]));
+
+ setlen(newsz);
+ return *this;
+ }
+
+
+ /*!
+ \brief
+ Replace the code points in the range [beg, end) with chars from the given char array.
+
+ \note
+ If \a beg == \a end, the operation is a insert at iterator position \a beg
+
+ \param beg
+ Iterator describing the start of the range to be replaced
+
+ \param end
+ Iterator describing the (exclusive) end of the range to be replaced.
+
+ \param chars
+ char array containing the chars that are to replace the specified range of code points
+
+ \param chars_len
+ Number of chars in the char array.
+
+ \return
+ This String after the replace operation
+
+ \exception std::length_error Thrown if the resulting String would be too large, or if \a chars_len was 'npos'.
+ */
+ String& replace(iterator iter_beg, iterator iter_end, const char* chars, size_type chars_len)
+ {
+ return replace(safe_iter_dif(iter_beg, begin()), safe_iter_dif(iter_end, iter_beg), chars, chars_len);
+ }
+
+
+ //////////////////////////////////////////////////////////////////////////
+ // Find a code point
+ //////////////////////////////////////////////////////////////////////////
+ /*!
+ \brief
+ Search forwards for a given code point
+
+ \param code_point
+ The utf32 code point to search for
+
+ \param idx
+ Index of the code point where the search is to start.
+
+ \return
+ - Index of the first occurrence of \a code_point travelling forwards from \a idx.
+ - npos if the code point could not be found
+ */
+ size_type find(utf32 code_point, size_type idx = 0) const
+ {
+ if (idx < d_cplength)
+ {
+ const utf32* pt = &ptr()[idx];
+
+ while (idx < d_cplength)
+ {
+ if (*pt++ == code_point)
+ return idx;
+
+ ++idx;
+ }
+
+ }
+
+ return npos;
+ }
+
+ /*!
+ \brief
+ Search backwards for a given code point
+
+ \param code_point
+ The utf32 code point to search for
+
+ \param idx
+ Index of the code point where the search is to start.
+
+ \return
+ - Index of the first occurrence of \a code_point travelling backwards from \a idx.
+ - npos if the code point could not be found
+ */
+ size_type rfind(utf32 code_point, size_type idx = npos) const
+ {
+ if (idx >= d_cplength)
+ idx = d_cplength - 1;
+
+ if (d_cplength > 0)
+ {
+ const utf32* pt = &ptr()[idx];
+
+ do
+ {
+ if (*pt-- == code_point)
+ return idx;
+
+ } while (idx-- != 0);
+
+ }
+
+ return npos;
+ }
+
+ //////////////////////////////////////////////////////////////////////////
+ // Find a substring
+ //////////////////////////////////////////////////////////////////////////
+ /*!
+ \brief
+ Search forwards for a sub-string
+
+ \param str
+ String object describing the sub-string to search for
+
+ \param idx
+ Index of the code point where the search is to start
+
+ \return
+ - Index of the first occurrence of sub-string \a str travelling forwards from \a idx.
+ - npos if the sub-string could not be found
+ */
+ size_type find(const String& str, size_type idx = 0) const
+ {
+ if ((str.d_cplength == 0) && (idx < d_cplength))
+ return idx;
+
+ if (idx < d_cplength)
+ {
+ // loop while search string could fit in to search area
+ while (d_cplength - idx >= str.d_cplength)
+ {
+ if (0 == compare(idx, str.d_cplength, str))
+ return idx;
+
+ ++idx;
+ }
+
+ }
+
+ return npos;
+ }
+
+ /*!
+ \brief
+ Search backwards for a sub-string
+
+ \param str
+ String object describing the sub-string to search for
+
+ \param idx
+ Index of the code point where the search is to start
+
+ \return
+ - Index of the first occurrence of sub-string \a str travelling backwards from \a idx.
+ - npos if the sub-string could not be found
+ */
+ size_type rfind(const String& str, size_type idx = npos) const
+ {
+ if (str.d_cplength == 0)
+ return (idx < d_cplength) ? idx : d_cplength;
+
+ if (str.d_cplength <= d_cplength)
+ {
+ if (idx > (d_cplength - str.d_cplength))
+ idx = d_cplength - str.d_cplength;
+
+ do
+ {
+ if (0 == compare(idx, str.d_cplength, str))
+ return idx;
+
+ } while (idx-- != 0);
+
+ }
+
+ return npos;
+ }
+
+ /*!
+ \brief
+ Search forwards for a sub-string
+
+ \param std_str
+ std::string object describing the sub-string to search for
+
+ \note
+ Characters from \a std_str are considered to represent Unicode code points in the range 0x00..0xFF. No translation of
+ the encountered data is performed.
+
+ \param idx
+ Index of the code point where the search is to start
+
+ \return
+ - Index of the first occurrence of sub-string \a std_str travelling forwards from \a idx.
+ - npos if the sub-string could not be found
+ */
+ size_type find(const std::string& std_str, size_type idx = 0) const
+ {
+ std::string::size_type sze = std_str.size();
+
+ if ((sze == 0) && (idx < d_cplength))
+ return idx;
+
+ if (idx < d_cplength)
+ {
+ // loop while search string could fit in to search area
+ while (d_cplength - idx >= sze)
+ {
+ if (0 == compare(idx, (size_type)sze, std_str))
+ return idx;
+
+ ++idx;
+ }
+
+ }
+
+ return npos;
+ }
+
+ /*!
+ \brief
+ Search backwards for a sub-string
+
+ \param std_str
+ std::string object describing the sub-string to search for
+
+ \note
+ Characters from \a std_str are considered to represent Unicode code points in the range 0x00..0xFF. No translation of
+ the encountered data is performed.
+
+ \param idx
+ Index of the code point where the search is to start
+
+ \return
+ - Index of the first occurrence of sub-string \a std_str travelling backwards from \a idx.
+ - npos if the sub-string could not be found
+ */
+ size_type rfind(const std::string& std_str, size_type idx = npos) const
+ {
+ std::string::size_type sze = std_str.size();
+
+ if (sze == 0)
+ return (idx < d_cplength) ? idx : d_cplength;
+
+ if (sze <= d_cplength)
+ {
+ if (idx > (d_cplength - sze))
+ idx = d_cplength - sze;
+
+ do
+ {
+ if (0 == compare(idx, (size_type)sze, std_str))
+ return idx;
+
+ } while (idx-- != 0);
+
+ }
+
+ return npos;
+ }
+
+ /*!
+ \brief
+ Search forwards for a sub-string
+
+ \param utf8_str
+ Buffer containing null-terminated utf8 encoded data describing the sub-string to search for
+
+ \note
+ A basic string literal (cast to utf8*) can be passed to this function, provided that the string is
+ comprised only of code points 0x00..0x7f. The use of extended ASCII characters (with values >0x7f)
+ would result in incorrect behaviour as the String will attempt to 'decode' the data, with unpredictable
+ results.
+
+ \param idx
+ Index of the code point where the search is to start
+
+ \return
+ - Index of the first occurrence of sub-string \a utf8_str travelling forwards from \a idx.
+ - npos if the sub-string could not be found
+
+ \exception std::out_of_range Thrown if \a idx is invalid for this String.
+ */
+ size_type find(const utf8* utf8_str, size_type idx = 0) const
+ {
+ return find(utf8_str, idx, utf_length(utf8_str));
+ }
+
+ /*!
+ \brief
+ Search backwards for a sub-string
+
+ \param utf8_str
+ Buffer containing null-terminated utf8 encoded data describing the sub-string to search for
+
+ \note
+ A basic string literal (cast to utf8*) can be passed to this function, provided that the string is
+ comprised only of code points 0x00..0x7f. The use of extended ASCII characters (with values >0x7f)
+ would result in incorrect behaviour as the String will attempt to 'decode' the data, with unpredictable
+ results.
+
+ \param idx
+ Index of the code point where the search is to start
+
+ \return
+ - Index of the first occurrence of sub-string \a utf8_str travelling backwards from \a idx.
+ - npos if the sub-string could not be found
+
+ \exception std::out_of_range Thrown if \a idx is invalid for this String.
+ */
+ size_type rfind(const utf8* utf8_str, size_type idx = npos) const
+ {
+ return rfind(utf8_str, idx, utf_length(utf8_str));
+ }
+
+ /*!
+ \brief
+ Search forwards for a sub-string
+
+ \param utf8_str
+ Buffer containing utf8 encoded data describing the sub-string to search for
+
+ \note
+ A basic string literal (cast to utf8*) can be passed to this function, provided that the string is
+ comprised only of code points 0x00..0x7f. The use of extended ASCII characters (with values >0x7f)
+ would result in incorrect behaviour as the String will attempt to 'decode' the data, with unpredictable
+ results.
+
+ \param idx
+ Index of the code point where the search is to start
+
+ \param str_len
+ Length of the utf8 encoded sub-string in utf8 code units (not code points)
+
+ \return
+ - Index of the first occurrence of sub-string \a utf8_str travelling forwards from \a idx.
+ - npos if the sub-string could not be found
+
+ \exception std::length_error Thrown if \a str_len is 'npos'
+ */
+ size_type find(const utf8* utf8_str, size_type idx, size_type str_len) const
+ {
+ if (str_len == npos)
+ throw std::length_error("Length for utf8 encoded string can not be 'npos'");
+
+ size_type sze = encoded_size(utf8_str, str_len);
+
+ if ((sze == 0) && (idx < d_cplength))
+ return idx;
+
+ if (idx < d_cplength)
+ {
+ // loop while search string could fit in to search area
+ while (d_cplength - idx >= sze)
+ {
+ if (0 == compare(idx, sze, utf8_str, sze))
+ return idx;
+
+ ++idx;
+ }
+
+ }
+
+ return npos;
+ }
+
+ /*!
+ \brief
+ Search backwards for a sub-string
+
+ \param utf8_str
+ Buffer containing utf8 encoded data describing the sub-string to search for
+
+ \note
+ A basic string literal (cast to utf8*) can be passed to this function, provided that the string is
+ comprised only of code points 0x00..0x7f. The use of extended ASCII characters (with values >0x7f)
+ would result in incorrect behaviour as the String will attempt to 'decode' the data, with unpredictable
+ results.
+
+ \param idx
+ Index of the code point where the search is to start
+
+ \param str_len
+ Length of the utf8 encoded sub-string in utf8 code units (not code points)
+
+ \return
+ - Index of the first occurrence of sub-string \a utf8_str travelling backwards from \a idx.
+ - npos if the sub-string could not be found
+
+ \exception std::length_error Thrown if \a str_len is 'npos'
+ */
+ size_type rfind(const utf8* utf8_str, size_type idx, size_type str_len) const
+ {
+ if (str_len == npos)
+ throw std::length_error("Length for utf8 encoded string can not be 'npos'");
+
+ size_type sze = encoded_size(utf8_str, str_len);
+
+ if (sze == 0)
+ return (idx < d_cplength) ? idx : d_cplength;
+
+ if (sze <= d_cplength)
+ {
+ if (idx > (d_cplength - sze))
+ idx = d_cplength - sze;
+
+ do
+ {
+ if (0 == compare(idx, sze, utf8_str, sze))
+ return idx;
+
+ } while (idx-- != 0);
+
+ }
+
+ return npos;
+ }
+
+
+ /*!
+ \brief
+ Search forwards for a sub-string
+
+ \param c_str
+ c-string describing the sub-string to search for
+
+ \param idx
+ Index of the code point where the search is to start
+
+ \return
+ - Index of the first occurrence of sub-string \a c_str travelling forwards from \a idx.
+ - npos if the sub-string could not be found
+
+ \exception std::out_of_range Thrown if \a idx is invalid for this String.
+ */
+ size_type find(const char* cstr, size_type idx = 0) const
+ {
+ return find(cstr, idx, strlen(cstr));
+ }
+
+
+ /*!
+ \brief
+ Search backwards for a sub-string
+
+ \param c_str
+ c-string describing the sub-string to search for
+
+ \param idx
+ Index of the code point where the search is to start
+
+ \return
+ - Index of the first occurrence of sub-string \a c_str travelling backwards from \a idx.
+ - npos if the sub-string could not be found
+
+ \exception std::out_of_range Thrown if \a idx is invalid for this String.
+ */
+ size_type rfind(const char* cstr, size_type idx = npos) const
+ {
+ return rfind(cstr, idx, strlen(cstr));
+ }
+
+
+ /*!
+ \brief
+ Search forwards for a sub-string
+
+ \param chars
+ char array describing the sub-string to search for
+
+ \param idx
+ Index of the code point where the search is to start
+
+ \param chars_len
+ Number of chars in the char array.
+
+ \return
+ - Index of the first occurrence of sub-string \a chars travelling forwards from \a idx.
+ - npos if the sub-string could not be found
+
+ \exception std::length_error Thrown if \a chars_len is 'npos'
+ */
+ size_type find(const char* chars, size_type idx, size_type chars_len) const
+ {
+ if (chars_len == npos)
+ throw std::length_error("Length for char array can not be 'npos'");
+
+ if ((chars_len == 0) && (idx < d_cplength))
+ return idx;
+
+ if (idx < d_cplength)
+ {
+ // loop while search string could fit in to search area
+ while (d_cplength - idx >= chars_len)
+ {
+ if (0 == compare(idx, chars_len, chars, chars_len))
+ return idx;
+
+ ++idx;
+ }
+
+ }
+
+ return npos;
+ }
+
+
+ /*!
+ \brief
+ Search backwards for a sub-string
+
+ \param chars
+ char array describing the sub-string to search for
+
+ \param idx
+ Index of the code point where the search is to start
+
+ \param chars_len
+ Number of chars in the char array.
+
+ \return
+ - Index of the first occurrence of sub-string \a chars travelling backwards from \a idx.
+ - npos if the sub-string could not be found
+
+ \exception std::length_error Thrown if \a chars_len is 'npos'
+ */
+ size_type rfind(const char* chars, size_type idx, size_type chars_len) const
+ {
+ if (chars_len == npos)
+ throw std::length_error("Length for char array can not be 'npos'");
+
+ if (chars_len == 0)
+ return (idx < d_cplength) ? idx : d_cplength;
+
+ if (chars_len <= d_cplength)
+ {
+ if (idx > (d_cplength - chars_len))
+ idx = d_cplength - chars_len;
+
+ do
+ {
+ if (0 == compare(idx, chars_len, chars, chars_len))
+ return idx;
+
+ } while (idx-- != 0);
+
+ }
+
+ return npos;
+ }
+
+
+ //////////////////////////////////////////////////////////////////////////
+ // Find first of different code-points
+ //////////////////////////////////////////////////////////////////////////
+ /*!
+ \brief
+ Find the first occurrence of one of a set of code points.
+
+ \param str
+ String object describing the set of code points.
+
+ \param idx
+ Index of the start point for the search
+
+ \return
+ - Index of the first occurrence of any one of the code points in \a str starting from from \a idx.
+ - npos if none of the code points in \a str were found.
+ */
+ size_type find_first_of(const String& str, size_type idx = 0) const
+ {
+ if (idx < d_cplength)
+ {
+ const utf32* pt = &ptr()[idx];
+
+ do
+ {
+ if (npos != str.find(*pt++))
+ return idx;
+
+ } while (++idx != d_cplength);
+
+ }
+
+ return npos;
+ }
+
+ /*!
+ \brief
+ Find the first code point that is not one of a set of code points.
+
+ \param str
+ String object describing the set of code points.
+
+ \param idx
+ Index of the start point for the search
+
+ \return
+ - Index of the first code point that does not match any one of the code points in \a str starting from from \a idx.
+ - npos if all code points matched one of the code points in \a str.
+ */
+ size_type find_first_not_of(const String& str, size_type idx = 0) const
+ {
+ if (idx < d_cplength)
+ {
+ const utf32* pt = &ptr()[idx];
+
+ do
+ {
+ if (npos == str.find(*pt++))
+ return idx;
+
+ } while (++idx != d_cplength);
+
+ }
+
+ return npos;
+ }
+
+
+ /*!
+ \brief
+ Find the first occurrence of one of a set of code points.
+
+ \param std_str
+ std::string object describing the set of code points.
+
+ \note
+ The characters of \a std_str are taken to be unencoded data which represent Unicode code points 0x00..0xFF. No translation of
+ the provided data will occur.
+
+ \param idx
+ Index of the start point for the search
+
+ \return
+ - Index of the first occurrence of any one of the code points in \a std_str starting from from \a idx.
+ - npos if none of the code points in \a std_str were found.
+ */
+ size_type find_first_of(const std::string& std_str, size_type idx = 0) const
+ {
+ if (idx < d_cplength)
+ {
+ const utf32* pt = &ptr()[idx];
+
+ do
+ {
+ if (npos != find_codepoint(std_str, *pt++))
+ return idx;
+
+ } while (++idx != d_cplength);
+
+ }
+
+ return npos;
+ }
+
+ /*!
+ \brief
+ Find the first code point that is not one of a set of code points.
+
+ \param std_str
+ std::string object describing the set of code points.
+
+ \note
+ The characters of \a std_str are taken to be unencoded data which represent Unicode code points 0x00..0xFF. No translation of
+ the provided data will occur.
+
+ \param idx
+ Index of the start point for the search
+
+ \return
+ - Index of the first code point that does not match any one of the code points in \a std_str starting from from \a idx.
+ - npos if all code points matched one of the code points in \a std_str.
+ */
+ size_type find_first_not_of(const std::string& std_str, size_type idx = 0) const
+ {
+ if (idx < d_cplength)
+ {
+ const utf32* pt = &ptr()[idx];
+
+ do
+ {
+ if (npos == find_codepoint(std_str, *pt++))
+ return idx;
+
+ } while (++idx != d_cplength);
+
+ }
+
+ return npos;
+ }
+
+
+ /*!
+ \brief
+ Find the first occurrence of one of a set of code points.
+
+ \param utf8_str
+ Buffer containing null-terminated utf8 encoded data describing the set of code points.
+
+ \note
+ A basic string literal (cast to utf8*) can be passed to this function, provided that the string is
+ comprised only of code points 0x00..0x7f. The use of extended ASCII characters (with values >0x7f)
+ would result in incorrect behaviour as the String will attempt to 'decode' the data, with unpredictable
+ results.
+
+ \param idx
+ Index of the start point for the search
+
+ \return
+ - Index of the first occurrence of any one of the code points in \a utf8_str starting from from \a idx.
+ - npos if none of the code points in \a utf8_str were found.
+
+ \exception std::out_of_range Thrown if \a idx is invalid for this String.
+ */
+ size_type find_first_of(const utf8* utf8_str, size_type idx = 0) const
+ {
+ return find_first_of(utf8_str, idx, utf_length(utf8_str));
+ }
+
+ /*!
+ \brief
+ Find the first code point that is not one of a set of code points.
+
+ \param utf8_str
+ Buffer containing null-terminated utf8 encoded data describing the set of code points.
+
+ \note
+ A basic string literal (cast to utf8*) can be passed to this function, provided that the string is
+ comprised only of code points 0x00..0x7f. The use of extended ASCII characters (with values >0x7f)
+ would result in incorrect behaviour as the String will attempt to 'decode' the data, with unpredictable
+ results.
+
+ \param idx
+ Index of the start point for the search
+
+ \return
+ - Index of the first code point that does not match any one of the code points in \a utf8_str starting from from \a idx.
+ - npos if all code points matched one of the code points in \a utf8_str.
+
+ \exception std::out_of_range Thrown if \a idx is invalid for this String.
+ */
+ size_type find_first_not_of(const utf8* utf8_str, size_type idx = 0) const
+ {
+ return find_first_not_of(utf8_str, idx, utf_length(utf8_str));
+ }
+
+ /*!
+ \brief
+ Find the first occurrence of one of a set of code points.
+
+ \param utf8_str
+ Buffer containing utf8 encoded data describing the set of code points.
+
+ \note
+ A basic string literal (cast to utf8*) can be passed to this function, provided that the string is
+ comprised only of code points 0x00..0x7f. The use of extended ASCII characters (with values >0x7f)
+ would result in incorrect behaviour as the String will attempt to 'decode' the data, with unpredictable
+ results.
+
+ \param idx
+ Index of the start point for the search
+
+ \param str_len
+ Length of the utf8 encoded data in utf8 code units (not code points).
+
+ \return
+ - Index of the first occurrence of any one of the code points in \a utf8_str starting from from \a idx.
+ - npos if none of the code points in \a utf8_str were found.
+
+ \exception std::length_error Thrown if \a str_len was 'npos'.
+ */
+ size_type find_first_of(const utf8* utf8_str, size_type idx, size_type str_len) const
+ {
+ if (str_len == npos)
+ throw std::length_error("Length for utf8 encoded string can not be 'npos'");
+
+ if (idx < d_cplength)
+ {
+ size_type encsze = encoded_size(utf8_str, str_len);
+
+ const utf32* pt = &ptr()[idx];
+
+ do
+ {
+ if (npos != find_codepoint(utf8_str, encsze, *pt++))
+ return idx;
+
+ } while (++idx != d_cplength);
+
+ }
+
+ return npos;
+ }
+
+ /*!
+ \brief
+ Find the first code point that is not one of a set of code points.
+
+ \param utf8_str
+ Buffer containing utf8 encoded data describing the set of code points.
+
+ \note
+ A basic string literal (cast to utf8*) can be passed to this function, provided that the string is
+ comprised only of code points 0x00..0x7f. The use of extended ASCII characters (with values >0x7f)
+ would result in incorrect behaviour as the String will attempt to 'decode' the data, with unpredictable
+ results.
+
+ \param idx
+ Index of the start point for the search
+
+ \param str_len
+ Length of the utf8 encoded data in utf8 code units (not code points).
+
+ \return
+ - Index of the first code point that does not match any one of the code points in \a utf8_str starting from from \a idx.
+ - npos if all code points matched one of the code points in \a utf8_str.
+
+ \exception std::length_error Thrown if \a str_len was 'npos'.
+ */
+ size_type find_first_not_of(const utf8* utf8_str, size_type idx, size_type str_len) const
+ {
+ if (str_len == npos)
+ throw std::length_error("Length for utf8 encoded string can not be 'npos'");
+
+ if (idx < d_cplength)
+ {
+ size_type encsze = encoded_size(utf8_str, str_len);
+
+ const utf32* pt = &ptr()[idx];
+
+ do
+ {
+ if (npos == find_codepoint(utf8_str, encsze, *pt++))
+ return idx;
+
+ } while (++idx != d_cplength);
+
+ }
+
+ return npos;
+ }
+
+
+ /*!
+ \brief
+ Search forwards for a given code point
+
+ \param code_point
+ The utf32 code point to search for
+
+ \param idx
+ Index of the code point where the search is to start.
+
+ \return
+ - Index of the first occurrence of \a code_point starting from from \a idx.
+ - npos if the code point could not be found
+ */
+ size_type find_first_of(utf32 code_point, size_type idx = 0) const
+ {
+ return find(code_point, idx);
+ }
+
+ /*!
+ \brief
+ Search forwards for the first code point that does not match a given code point
+
+ \param code_point
+ The utf32 code point to search for
+
+ \param idx
+ Index of the code point where the search is to start.
+
+ \return
+ - Index of the first code point that does not match \a code_point starting from from \a idx.
+ - npos if all code points matched \a code_point
+
+ \exception std::out_of_range Thrown if \a idx is invalid for this String.
+ */
+ size_type find_first_not_of(utf32 code_point, size_type idx = 0) const
+ {
+ if (idx < d_cplength)
+ {
+ do
+ {
+ if ((*this)[idx] != code_point)
+ return idx;
+
+ } while(idx++ < d_cplength);
+
+ }
+
+ return npos;
+ }
+
+
+ /*!
+ \brief
+ Find the first occurrence of one of a set of chars.
+
+ \param c_str
+ c-string describing the set of chars.
+
+ \param idx
+ Index of the start point for the search
+
+ \return
+ - Index of the first occurrence of any one of the chars in \a c_str starting from from \a idx.
+ - npos if none of the chars in \a c_str were found.
+
+ \exception std::out_of_range Thrown if \a idx is invalid for this String.
+ */
+ size_type find_first_of(const char* cstr, size_type idx = 0) const
+ {
+ return find_first_of(cstr, idx, strlen(cstr));
+ }
+
+
+ /*!
+ \brief
+ Find the first code point that is not one of a set of chars.
+
+ \param c_str
+ c-string describing the set of chars.
+
+ \param idx
+ Index of the start point for the search
+
+ \return
+ - Index of the first code point that does not match any one of the chars in \a c_str starting from from \a idx.
+ - npos if all code points matched any of the chars in \a c_str.
+
+ \exception std::out_of_range Thrown if \a idx is invalid for this String.
+ */
+ size_type find_first_not_of(const char* cstr, size_type idx = 0) const
+ {
+ return find_first_not_of(cstr, idx, strlen(cstr));
+ }
+
+
+ /*!
+ \brief
+ Find the first occurrence of one of a set of chars.
+
+ \param chars
+ char array containing the set of chars.
+
+ \param idx
+ Index of the start point for the search
+
+ \param chars_len
+ Number of chars in the char array.
+
+ \return
+ - Index of the first occurrence of any one of the chars in \a chars starting from from \a idx.
+ - npos if none of the chars in \a chars were found.
+
+ \exception std::length_error Thrown if \a chars_len was 'npos'.
+ */
+ size_type find_first_of(const char* chars, size_type idx, size_type chars_len) const
+ {
+ if (chars_len == npos)
+ throw std::length_error("Length for char array can not be 'npos'");
+
+ if (idx < d_cplength)
+ {
+ const utf32* pt = &ptr()[idx];
+
+ do
+ {
+ if (npos != find_codepoint(chars, chars_len, *pt++))
+ return idx;
+
+ } while (++idx != d_cplength);
+
+ }
+
+ return npos;
+ }
+
+
+ /*!
+ \brief
+ Find the first code point that is not one of a set of chars.
+
+ \param chars
+ char array containing the set of chars.
+
+ \param idx
+ Index of the start point for the search
+
+ \param chars_len
+ Number of chars in the car array.
+
+ \return
+ - Index of the first code point that does not match any one of the chars in \a chars starting from from \a idx.
+ - npos if all code points matched any of the chars in \a chars.
+
+ \exception std::length_error Thrown if \a chars_len was 'npos'.
+ */
+ size_type find_first_not_of(const char* chars, size_type idx, size_type chars_len) const
+ {
+ if (chars_len == npos)
+ throw std::length_error("Length for char array can not be 'npos'");
+
+ if (idx < d_cplength)
+ {
+ const utf32* pt = &ptr()[idx];
+
+ do
+ {
+ if (npos == find_codepoint(chars, chars_len, *pt++))
+ return idx;
+
+ } while (++idx != d_cplength);
+
+ }
+
+ return npos;
+ }
+
+
+ //////////////////////////////////////////////////////////////////////////
+ // Find last of different code-points
+ //////////////////////////////////////////////////////////////////////////
+ /*!
+ \brief
+ Find the last occurrence of one of a set of code points.
+
+ \param str
+ String object describing the set of code points.
+
+ \param idx
+ Index of the start point for the search
+
+ \return
+ - Index of the last occurrence of any one of the code points in \a str starting from \a idx.
+ - npos if none of the code points in \a str were found.
+ */
+ size_type find_last_of(const String& str, size_type idx = npos) const
+ {
+ if (d_cplength > 0)
+ {
+ if (idx >= d_cplength)
+ idx = d_cplength - 1;
+
+ const utf32* pt = &ptr()[idx];
+
+ do
+ {
+ if (npos != str.find(*pt--))
+ return idx;
+
+ } while (idx-- != 0);
+
+ }
+
+ return npos;
+ }
+
+ /*!
+ \brief
+ Find the last code point that is not one of a set of code points.
+
+ \param str
+ String object describing the set of code points.
+
+ \param idx
+ Index of the start point for the search
+
+ \return
+ - Index of the last code point that does not match any one of the code points in \a str starting from \a idx.
+ - npos if all code points matched one of the code points in \a str.
+ */
+ size_type find_last_not_of(const String& str, size_type idx = npos) const
+ {
+ if (d_cplength > 0)
+ {
+ if (idx >= d_cplength)
+ idx = d_cplength - 1;
+
+ const utf32* pt = &ptr()[idx];
+
+ do
+ {
+ if (npos == str.find(*pt--))
+ return idx;
+
+ } while (idx-- != 0);
+
+ }
+
+ return npos;
+ }
+
+
+ /*!
+ \brief
+ Find the last occurrence of one of a set of code points.
+
+ \param std_str
+ std::string object describing the set of code points.
+
+ \note
+ The characters of \a std_str are taken to be unencoded data which represent Unicode code points 0x00..0xFF. No translation of
+ the provided data will occur.
+
+ \param idx
+ Index of the start point for the search
+
+ \return
+ - Index of the last occurrence of any one of the code points in \a std_str starting from \a idx.
+ - npos if none of the code points in \a std_str were found.
+ */
+ size_type find_last_of(const std::string& std_str, size_type idx = npos) const
+ {
+ if (d_cplength > 0)
+ {
+ if (idx >= d_cplength)
+ idx = d_cplength - 1;
+
+ const utf32* pt = &ptr()[idx];
+
+ do
+ {
+ if (npos != find_codepoint(std_str, *pt--))
+ return idx;
+
+ } while (idx-- != 0);
+
+ }
+
+ return npos;
+ }
+
+ /*!
+ \brief
+ Find the last code point that is not one of a set of code points.
+
+ \param std_str
+ std::string object describing the set of code points.
+
+ \note
+ The characters of \a std_str are taken to be unencoded data which represent Unicode code points 0x00..0xFF. No translation of
+ the provided data will occur.
+
+ \param idx
+ Index of the start point for the search
+
+ \return
+ - Index of the last code point that does not match any one of the code points in \a std_str starting from \a idx.
+ - npos if all code points matched one of the code points in \a std_str.
+ */
+ size_type find_last_not_of(const std::string& std_str, size_type idx = npos) const
+ {
+ if (d_cplength > 0)
+ {
+ if (idx >= d_cplength)
+ idx = d_cplength - 1;
+
+ const utf32* pt = &ptr()[idx];
+
+ do
+ {
+ if (npos == find_codepoint(std_str, *pt--))
+ return idx;
+
+ } while (idx-- != 0);
+
+ }
+
+ return npos;
+ }
+
+
+ /*!
+ \brief
+ Find the last occurrence of one of a set of code points.
+
+ \param utf8_str
+ Buffer containing null-terminated utf8 encoded data describing the set of code points.
+
+ \note
+ A basic string literal (cast to utf8*) can be passed to this function, provided that the string is
+ comprised only of code points 0x00..0x7f. The use of extended ASCII characters (with values >0x7f)
+ would result in incorrect behaviour as the String will attempt to 'decode' the data, with unpredictable
+ results.
+
+ \param idx
+ Index of the start point for the search
+
+ \return
+ - Index of the last occurrence of any one of the code points in \a utf8_str starting from \a idx.
+ - npos if none of the code points in \a utf8_str were found.
+
+ \exception std::out_of_range Thrown if \a idx is invalid for this String.
+ */
+ size_type find_last_of(const utf8* utf8_str, size_type idx = npos) const
+ {
+ return find_last_of(utf8_str, idx, utf_length(utf8_str));
+ }
+
+ /*!
+ \brief
+ Find the last code point that is not one of a set of code points.
+
+ \param utf8_str
+ Buffer containing null-terminated utf8 encoded data describing the set of code points.
+
+ \note
+ A basic string literal (cast to utf8*) can be passed to this function, provided that the string is
+ comprised only of code points 0x00..0x7f. The use of extended ASCII characters (with values >0x7f)
+ would result in incorrect behaviour as the String will attempt to 'decode' the data, with unpredictable
+ results.
+
+ \param idx
+ Index of the start point for the search
+
+ \return
+ - Index of the last code point that does not match any one of the code points in \a utf8_str starting from \a idx.
+ - npos if all code points matched one of the code points in \a utf8_str.
+
+ \exception std::out_of_range Thrown if \a idx is invalid for this String.
+ */
+ size_type find_last_not_of(const utf8* utf8_str, size_type idx = npos) const
+ {
+ return find_last_not_of(utf8_str, idx, utf_length(utf8_str));
+ }
+
+ /*!
+ \brief
+ Find the last occurrence of one of a set of code points.
+
+ \param utf8_str
+ Buffer containing utf8 encoded data describing the set of code points.
+
+ \note
+ A basic string literal (cast to utf8*) can be passed to this function, provided that the string is
+ comprised only of code points 0x00..0x7f. The use of extended ASCII characters (with values >0x7f)
+ would result in incorrect behaviour as the String will attempt to 'decode' the data, with unpredictable
+ results.
+
+ \param idx
+ Index of the start point for the search
+
+ \param str_len
+ Length of the utf8 encoded data in utf8 code units (not code points).
+
+ \return
+ - Index of the last occurrence of any one of the code points in \a utf8_str starting from from \a idx.
+ - npos if none of the code points in \a utf8_str were found.
+
+ \exception std::length_error Thrown if \a str_len was 'npos'.
+ */
+ size_type find_last_of(const utf8* utf8_str, size_type idx, size_type str_len) const
+ {
+ if (str_len == npos)
+ throw std::length_error("Length for utf8 encoded string can not be 'npos'");
+
+ if (d_cplength > 0)
+ {
+ if (idx >= d_cplength)
+ idx = d_cplength - 1;
+
+ size_type encsze = encoded_size(utf8_str, str_len);
+
+ const utf32* pt = &ptr()[idx];
+
+ do
+ {
+ if (npos != find_codepoint(utf8_str, encsze, *pt--))
+ return idx;
+
+ } while (idx-- != 0);
+
+ }
+
+ return npos;
+ }
+
+ /*!
+ \brief
+ Find the last code point that is not one of a set of code points.
+
+ \param utf8_str
+ Buffer containing utf8 encoded data describing the set of code points.
+
+ \note
+ A basic string literal (cast to utf8*) can be passed to this function, provided that the string is
+ comprised only of code points 0x00..0x7f. The use of extended ASCII characters (with values >0x7f)
+ would result in incorrect behaviour as the String will attempt to 'decode' the data, with unpredictable
+ results.
+
+ \param idx
+ Index of the start point for the search
+
+ \param str_len
+ Length of the utf8 encoded data in utf8 code units (not code points).
+
+ \return
+ - Index of the last code point that does not match any one of the code points in \a utf8_str starting from from \a idx.
+ - npos if all code points matched one of the code points in \a utf8_str.
+
+ \exception std::length_error Thrown if \a str_len was 'npos'.
+ */
+ size_type find_last_not_of(const utf8* utf8_str, size_type idx, size_type str_len) const
+ {
+ if (str_len == npos)
+ throw std::length_error("Length for utf8 encoded string can not be 'npos'");
+
+ if (d_cplength > 0)
+ {
+ if (idx >= d_cplength)
+ idx = d_cplength - 1;
+
+ size_type encsze = encoded_size(utf8_str, str_len);
+
+ const utf32* pt = &ptr()[idx];
+
+ do
+ {
+ if (npos == find_codepoint(utf8_str, encsze, *pt--))
+ return idx;
+
+ } while (idx-- != 0);
+
+ }
+
+ return npos;
+ }
+
+
+ /*!
+ \brief
+ Search for last occurrence of a given code point
+
+ \param code_point
+ The utf32 code point to search for
+
+ \param idx
+ Index of the code point where the search is to start.
+
+ \return
+ - Index of the last occurrence of \a code_point starting from \a idx.
+ - npos if the code point could not be found
+ */
+ size_type find_last_of(utf32 code_point, size_type idx = npos) const
+ {
+ return rfind(code_point, idx);
+ }
+
+ /*!
+ \brief
+ Search for the last code point that does not match a given code point
+
+ \param code_point
+ The utf32 code point to search for
+
+ \param idx
+ Index of the code point where the search is to start.
+
+ \return
+ - Index of the last code point that does not match \a code_point starting from from \a idx.
+ - npos if all code points matched \a code_point
+ */
+ size_type find_last_not_of(utf32 code_point, size_type idx = npos) const
+ {
+ if (d_cplength > 0)
+ {
+ if (idx >= d_cplength)
+ idx = d_cplength - 1;
+
+ do
+ {
+ if ((*this)[idx] != code_point)
+ return idx;
+
+ } while(idx-- != 0);
+
+ }
+
+ return npos;
+ }
+
+
+ /*!
+ \brief
+ Find the last occurrence of one of a set of chars.
+
+ \param c_str
+ c-string describing the set of chars.
+
+ \param idx
+ Index of the start point for the search
+
+ \return
+ - Index of the last occurrence of any one of the chars in \a c_str starting from \a idx.
+ - npos if none of the chars in \a c_str were found.
+
+ \exception std::out_of_range Thrown if \a idx is invalid for this String.
+ */
+ size_type find_last_of(const char* cstr, size_type idx = npos) const
+ {
+ return find_last_of(cstr, idx, strlen(cstr));
+ }
+
+
+ /*!
+ \brief
+ Find the last code point that is not one of a set of chars.
+
+ \param c_str
+ c-string describing the set of chars.
+
+ \param idx
+ Index of the start point for the search
+
+ \return
+ - Index of the last code point that does not match any one of the chars in \a c_str starting from \a idx.
+ - npos if all code points matched any of the chars in \a c_str.
+
+ \exception std::out_of_range Thrown if \a idx is invalid for this String.
+ */
+ size_type find_last_not_of(const char* cstr, size_type idx = npos) const
+ {
+ return find_last_not_of(cstr, idx, strlen(cstr));
+ }
+
+
+ /*!
+ \brief
+ Find the last occurrence of one of a set of chars.
+
+ \param chars
+ char array containing the set of chars.
+
+ \param idx
+ Index of the start point for the search
+
+ \param chars_len
+ Number of chars in the char array.
+
+ \return
+ - Index of the last occurrence of any one of the chars in \a chars, starting from from \a idx.
+ - npos if none of the chars in \a chars were found.
+
+ \exception std::length_error Thrown if \a chars_len was 'npos'.
+ */
+ size_type find_last_of(const char* chars, size_type idx, size_type chars_len) const
+ {
+ if (chars_len == npos)
+ throw std::length_error("Length for char array can not be 'npos'");
+
+ if (d_cplength > 0)
+ {
+ if (idx >= d_cplength)
+ idx = d_cplength - 1;
+
+ const utf32* pt = &ptr()[idx];
+
+ do
+ {
+ if (npos != find_codepoint(chars, chars_len, *pt--))
+ return idx;
+
+ } while (idx-- != 0);
+
+ }
+
+ return npos;
+ }
+
+
+ /*!
+ \brief
+ Find the last code point that is not one of a set of chars.
+
+ \param chars
+ char array containing the set of chars.
+
+ \param idx
+ Index of the start point for the search
+
+ \param chars_len
+ Number of chars in the char array.
+
+ \return
+ - Index of the last code point that does not match any one of the chars in \a chars, starting from from \a idx.
+ - npos if all code points matched any of the chars in \a chars.
+
+ \exception std::length_error Thrown if \a chars_len was 'npos'.
+ */
+ size_type find_last_not_of(const char* chars, size_type idx, size_type chars_len) const
+ {
+ if (chars_len == npos)
+ throw std::length_error("Length for char array can not be 'npos'");
+
+ if (d_cplength > 0)
+ {
+ if (idx >= d_cplength)
+ idx = d_cplength - 1;
+
+ const utf32* pt = &ptr()[idx];
+
+ do
+ {
+ if (npos == find_codepoint(chars, chars_len, *pt--))
+ return idx;
+
+ } while (idx-- != 0);
+
+ }
+
+ return npos;
+ }
+
+
+ //////////////////////////////////////////////////////////////////////////
+ // Substring
+ //////////////////////////////////////////////////////////////////////////
+ /*!
+ \brief
+ Returns a substring of this String.
+
+ \param idx
+ Index of the first code point to use for the sub-string.
+
+ \param len
+ Maximum number of code points to use for the sub-string
+
+ \return
+ A String object containing the specified sub-string.
+
+ \exception std::out_of_range Thrown if \a idx is invalid for this String.
+ */
+ String substr(size_type idx = 0, size_type len = npos) const
+ {
+ if (d_cplength < idx)
+ throw std::out_of_range("Index is out of range for this CEGUI::String");
+
+ return String(*this, idx, len);
+ }
+
+ //////////////////////////////////////////////////////////////////////////
+ // Iterator creation
+ //////////////////////////////////////////////////////////////////////////
+ /*!
+ \brief
+ Return a forwards iterator that describes the beginning of the String
+
+ \return
+ iterator object that describes the beginning of the String.
+ */
+ iterator begin(void)
+ {
+ return iterator(ptr());
+ }
+
+ /*!
+ \brief
+ Return a constant forwards iterator that describes the beginning of the String
+
+ \return
+ const_iterator object that describes the beginning of the String.
+ */
+ const_iterator begin(void) const
+ {
+ return const_iterator(ptr());
+ }
+
+ /*!
+ \brief
+ Return a forwards iterator that describes the end of the String
+
+ \return
+ iterator object that describes the end of the String.
+ */
+ iterator end(void)
+ {
+ return iterator(&ptr()[d_cplength]);
+ }
+
+ /*!
+ \brief
+ Return a constant forwards iterator that describes the end of the String
+
+ \return
+ const_iterator object that describes the end of the String.
+ */
+ const_iterator end(void) const
+ {
+ return const_iterator(&ptr()[d_cplength]);
+ }
+
+ /*!
+ \brief
+ Return a reverse iterator that describes the beginning of the String
+
+ \return
+ reverse_iterator object that describes the beginning of the String (so is actually at the end)
+ */
+ reverse_iterator rbegin(void)
+ {
+ return reverse_iterator(end());
+ }
+
+ /*!
+ \brief
+ Return a constant reverse iterator that describes the beginning of the String
+
+ \return
+ const_reverse_iterator object that describes the beginning of the String (so is actually at the end)
+ */
+ const_reverse_iterator rbegin(void) const
+ {
+ return const_reverse_iterator(end());
+ }
+
+ /*!
+ \brief
+ Return a reverse iterator that describes the end of the String
+
+ \return
+ reverse_iterator object that describes the end of the String (so is actually at the beginning)
+ */
+ reverse_iterator rend(void)
+ {
+ return reverse_iterator(begin());
+ }
+
+ /*!
+ \brief
+ Return a constant reverse iterator that describes the end of the String
+
+ \return
+ const_reverse_iterator object that describes the end of the String (so is actually at the beginning)
+ */
+ const_reverse_iterator rend(void) const
+ {
+ return const_reverse_iterator(begin());
+ }
+
+private:
+ /*************************************************************************
+ Implementation Functions
+ *************************************************************************/
+ // string management
+
+ // change size of allocated buffer so it is at least 'new_size'.
+ // May or may not cause re-allocation and copy of buffer if size is larger
+ // will never re-allocate to make size smaller. (see trim())
+ bool grow(size_type new_size);
+
+ // perform re-allocation to remove wasted space.
+ void trim(void);
+
+ // set the length of the string, and terminate it, according to the given value (will not re-allocate, use grow() first).
+ void setlen(size_type len)
+ {
+ d_cplength = len;
+ ptr()[len] = (utf32)(0);
+ }
+
+ // initialise string object
+ void init(void)
+ {
+ d_reserve = STR_QUICKBUFF_SIZE;
+ d_encodedbuff = 0;
+ d_encodedbufflen = 0;
+ d_encodeddatlen = 0;
+ setlen(0);
+ }
+
+ // return true if the given pointer is inside the string data
+ bool inside(utf32* inptr)
+ {
+ if (inptr < ptr() || ptr() + d_cplength <= inptr)
+ return false;
+ else
+ return true;
+ }
+
+ // compute distance between two iterators, returning a 'safe' value
+ size_type safe_iter_dif(const const_iterator& iter1, const const_iterator& iter2) const
+ {
+ return (iter1.d_ptr == 0) ? 0 : (iter1 - iter2);
+ }
+
+ // encoding functions
+ // for all:
+ // src_len is in code units, or 0 for null terminated string.
+ // dest_len is in code units.
+ // returns number of code units put into dest buffer.
+ size_type encode(const utf32* src, utf8* dest, size_type dest_len, size_type src_len = 0) const
+ {
+ // count length for null terminated source...
+ if (src_len == 0)
+ {
+ src_len = utf_length(src);
+ }
+
+ size_type destCapacity = dest_len;
+
+ // while there is data in the source buffer,
+ for (uint idx = 0; idx < src_len; ++idx)
+ {
+ utf32 cp = src[idx];
+
+ // check there is enough destination buffer to receive this encoded unit (exit loop & return if not)
+ if (destCapacity < encoded_size(cp))
+ {
+ break;
+ }
+
+ if (cp < 0x80)
+ {
+ *dest++ = (utf8)cp;
+ --destCapacity;
+ }
+ else if (cp < 0x0800)
+ {
+ *dest++ = (utf8)((cp >> 6) | 0xC0);
+ *dest++ = (utf8)((cp & 0x3F) | 0x80);
+ destCapacity -= 2;
+ }
+ else if (cp < 0x10000)
+ {
+ *dest++ = (utf8)((cp >> 12) | 0xE0);
+ *dest++ = (utf8)(((cp >> 6) & 0x3F) | 0x80);
+ *dest++ = (utf8)((cp & 0x3F) | 0x80);
+ destCapacity -= 3;
+ }
+ else
+ {
+ *dest++ = (utf8)((cp >> 18) | 0xF0);
+ *dest++ = (utf8)(((cp >> 12) & 0x3F) | 0x80);
+ *dest++ = (utf8)(((cp >> 6) & 0x3F) | 0x80);
+ *dest++ = (utf8)((cp & 0x3F) | 0x80);
+ destCapacity -= 4;
+ }
+
+ }
+
+ return dest_len - destCapacity;
+ }
+
+ size_type encode(const utf8* src, utf32* dest, size_type dest_len, size_type src_len = 0) const
+ {
+ // count length for null terminated source...
+ if (src_len == 0)
+ {
+ src_len = utf_length(src);
+ }
+
+ size_type destCapacity = dest_len;
+
+ // while there is data in the source buffer, and space in the dest buffer
+ for (uint idx = 0; ((idx < src_len) && (destCapacity > 0));)
+ {
+ utf32 cp;
+ utf8 cu = src[idx++];
+
+ if (cu < 0x80)
+ {
+ cp = (utf32)(cu);
+ }
+ else if (cu < 0xE0)
+ {
+ cp = ((cu & 0x1F) << 6);
+ cp |= (src[idx++] & 0x3F);
+ }
+ else if (cu < 0xF0)
+ {
+ cp = ((cu & 0x0F) << 12);
+ cp |= ((src[idx++] & 0x3F) << 6);
+ cp |= (src[idx++] & 0x3F);
+ }
+ else
+ {
+ cp = ((cu & 0x07) << 18);
+ cp |= ((src[idx++] & 0x3F) << 12);
+ cp |= ((src[idx++] & 0x3F) << 6);
+ cp |= (src[idx++] & 0x3F);
+ }
+
+ *dest++ = cp;
+ --destCapacity;
+ }
+
+ return dest_len - destCapacity;
+ }
+
+ // return the number of utf8 code units required to encode the given utf32 code point
+ size_type encoded_size(utf32 code_point) const
+ {
+ if (code_point < 0x80)
+ return 1;
+ else if (code_point < 0x0800)
+ return 2;
+ else if (code_point < 0x10000)
+ return 3;
+ else
+ return 4;
+ }
+
+ // return number of code units required to re-encode given null-terminated utf32 data as utf8. return does not include terminating null.
+ size_type encoded_size(const utf32* buf) const
+ {
+ return encoded_size(buf, utf_length(buf));
+ }
+
+ // return number of code units required to re-encode given utf32 data as utf8. len is number of code units in 'buf'.
+ size_type encoded_size(const utf32* buf, size_type len) const
+ {
+ size_type count = 0;
+
+ while (len--)
+ {
+ count += encoded_size(*buf++);
+ }
+
+ return count;
+ }
+
+ // return number of utf32 code units required to re-encode given utf8 data as utf32. return does not include terminating null.
+ size_type encoded_size(const utf8* buf) const
+ {
+ return encoded_size(buf, utf_length(buf));
+ }
+
+ // return number of utf32 code units required to re-encode given utf8 data as utf32. len is number of code units in 'buf'.
+ size_type encoded_size(const utf8* buf, size_type len) const
+ {
+ utf8 tcp;
+ size_type count = 0;
+
+ while (len--)
+ {
+ tcp = *buf++;
+ ++count;
+
+ if (tcp < 0x80)
+ {
+ }
+ else if (tcp < 0xE0)
+ {
+ --len;
+ ++buf;
+ }
+ else if (tcp < 0xF0)
+ {
+ len -= 2;
+ buf += 2;
+ }
+ else
+ {
+ len -= 2;
+ buf += 3;
+ }
+
+ }
+
+ return count;
+ }
+
+ // return number of code units in a null terminated string
+ size_type utf_length(const utf8* utf8_str) const
+ {
+ size_type cnt = 0;
+ while (*utf8_str++)
+ cnt++;
+
+ return cnt;
+ }
+
+ // return number of code units in a null terminated string
+ size_type utf_length(const utf32* utf32_str) const
+ {
+ size_type cnt = 0;
+ while (*utf32_str++)
+ cnt++;
+
+ return cnt;
+ }
+
+ // build an internal buffer with the string encoded as utf8 (remains valid until string is modified).
+ utf8* build_utf8_buff(void) const;
+
+ // compare two utf32 buffers
+ int utf32_comp_utf32(const utf32* buf1, const utf32* buf2, size_type cp_count) const
+ {
+ if (!cp_count)
+ return 0;
+
+ while ((--cp_count) && (*buf1 == *buf2))
+ buf1++, buf2++;
+
+ return *buf1 - *buf2;
+ }
+
+ // compare utf32 buffer with char buffer (chars are taken to be code-points in the range 0x00-0xFF)
+ int utf32_comp_char(const utf32* buf1, const char* buf2, size_type cp_count) const
+ {
+ if (!cp_count)
+ return 0;
+
+ while ((--cp_count) && (*buf1 == static_cast<utf32>(static_cast<unsigned char>(*buf2))))
+ buf1++, buf2++;
+
+ return *buf1 - static_cast<utf32>(static_cast<unsigned char>(*buf2));
+ }
+
+ // compare utf32 buffer with encoded utf8 data
+ int utf32_comp_utf8(const utf32* buf1, const utf8* buf2, size_type cp_count) const
+ {
+ if (!cp_count)
+ return 0;
+
+ utf32 cp;
+ utf8 cu;
+
+ do
+ {
+ cu = *buf2++;
+
+ if (cu < 0x80)
+ {
+ cp = (utf32)(cu);
+ }
+ else if (cu < 0xE0)
+ {
+ cp = ((cu & 0x1F) << 6);
+ cp |= (*buf2++ & 0x3F);
+ }
+ else if (cu < 0xF0)
+ {
+ cp = ((cu & 0x0F) << 12);
+ cp |= ((*buf2++ & 0x3F) << 6);
+ cp |= (*buf2++ & 0x3F);
+ }
+ else
+ {
+ cp = ((cu & 0x07) << 18);
+ cp |= ((*buf2++ & 0x3F) << 12);
+ cp |= ((*buf2++ & 0x3F) << 6);
+ cp |= (*buf2++ & 0x3F);
+ }
+
+ } while ((*buf1++ == cp) && (--cp_count));
+
+ return (*--buf1) - cp;
+ }
+
+ // return index of first occurrence of 'code_point' in std::string 'str', or npos if none
+ size_type find_codepoint(const std::string& str, utf32 code_point) const
+ {
+ size_type idx = 0, sze = (size_type)str.size();
+
+ while (idx != sze)
+ {
+ if (code_point == static_cast<utf32>(static_cast<unsigned char>(str[idx])))
+ return idx;
+
+ ++idx;
+ }
+
+ return npos;
+ }
+
+ // return index of first occurrence of 'code_point' in utf8 encoded string 'str', or npos if none. len is in code points.
+ size_type find_codepoint(const utf8* str, size_type len, utf32 code_point) const
+ {
+ size_type idx = 0;
+
+ utf32 cp;
+ utf8 cu;
+
+ while (idx != len) {
+ cu = *str++;
+
+ if (cu < 0x80)
+ {
+ cp = (utf32)(cu);
+ }
+ else if (cu < 0xE0)
+ {
+ cp = ((cu & 0x1F) << 6);
+ cp |= (*str++ & 0x3F);
+ }
+ else if (cu < 0xF0)
+ {
+ cp = ((cu & 0x0F) << 12);
+ cp |= ((*str++ & 0x3F) << 6);
+ cp |= (*str++ & 0x3F);
+ }
+ else
+ {
+ cp = ((cu & 0x07) << 18);
+ cp |= ((*str++ & 0x3F) << 12);
+ cp |= ((*str++ & 0x3F) << 6);
+ cp |= (*str++ & 0x3F);
+ }
+
+ if (code_point == cp)
+ return idx;
+
+ ++idx;
+ }
+
+ return npos;
+ }
+
+
+ // return index of first occurrence of 'code_point' in char array 'chars', or npos if none
+ size_type find_codepoint(const char* chars, size_type chars_len, utf32 code_point) const
+ {
+ for (size_type idx = 0; idx != chars_len; ++idx)
+ {
+ if (code_point == static_cast<utf32>(static_cast<unsigned char>(chars[idx])))
+ return idx;
+ }
+
+ return npos;
+ }
+
+};
+
+
+//////////////////////////////////////////////////////////////////////////
+// Comparison operators
+//////////////////////////////////////////////////////////////////////////
+/*!
+\brief
+ Return true if String \a str1 is equal to String \a str2
+*/
+bool CEGUIEXPORT operator==(const String& str1, const String& str2);
+
+/*!
+\brief
+ Return true if String \a str is equal to std::string \a std_str
+*/
+bool CEGUIEXPORT operator==(const String& str, const std::string& std_str);
+
+/*!
+\brief
+ Return true if String \a str is equal to std::string \a std_str
+*/
+bool CEGUIEXPORT operator==(const std::string& std_str, const String& str);
+
+/*!
+\brief
+ Return true if String \a str is equal to null-terminated utf8 data \a utf8_str
+*/
+bool CEGUIEXPORT operator==(const String& str, const utf8* utf8_str);
+
+/*!
+\brief
+ Return true if String \a str is equal to null-terminated utf8 data \a utf8_str
+*/
+bool CEGUIEXPORT operator==(const utf8* utf8_str, const String& str);
+
+/*!
+\brief
+ Return true if String \a str1 is not equal to String \a str2
+*/
+bool CEGUIEXPORT operator!=(const String& str1, const String& str2);
+
+/*!
+\brief
+ Return true if String \a str is not equal to std::string \a std_str
+*/
+bool CEGUIEXPORT operator!=(const String& str, const std::string& std_str);
+
+/*!
+\brief
+ Return true if String \a str is not equal to std::string \a std_str
+*/
+bool CEGUIEXPORT operator!=(const std::string& std_str, const String& str);
+
+/*!
+\brief
+ Return true if String \a str is not equal to null-terminated utf8 data \a utf8_str
+*/
+bool CEGUIEXPORT operator!=(const String& str, const utf8* utf8_str);
+
+/*!
+\brief
+ Return true if String \a str is not equal to null-terminated utf8 data \a utf8_str
+*/
+bool CEGUIEXPORT operator!=(const utf8* utf8_str, const String& str);
+
+/*!
+\brief
+ Return true if String \a str1 is lexicographically less than String \a str2
+*/
+bool CEGUIEXPORT operator<(const String& str1, const String& str2);
+
+/*!
+\brief
+ Return true if String \a str is lexicographically less than std::string \a std_str
+*/
+bool CEGUIEXPORT operator<(const String& str, const std::string& std_str);
+
+/*!
+\brief
+ Return true if String \a str is lexicographically less than std::string \a std_str
+*/
+bool CEGUIEXPORT operator<(const std::string& std_str, const String& str);
+
+/*!
+\brief
+ Return true if String \a str is lexicographically less than null-terminated utf8 data \a utf8_str
+*/
+bool CEGUIEXPORT operator<(const String& str, const utf8* utf8_str);
+
+/*!
+\brief
+ Return true if String \a str is lexicographically less than null-terminated utf8 data \a utf8_str
+*/
+bool CEGUIEXPORT operator<(const utf8* utf8_str, const String& str);
+
+/*!
+\brief
+ Return true if String \a str1 is lexicographically greater than String \a str2
+*/
+bool CEGUIEXPORT operator>(const String& str1, const String& str2);
+
+/*!
+\brief
+ Return true if String \a str is lexicographically greater than std::string \a std_str
+*/
+bool CEGUIEXPORT operator>(const String& str, const std::string& std_str);
+
+/*!
+\brief
+ Return true if String \a str is lexicographically greater than std::string \a std_str
+*/
+bool CEGUIEXPORT operator>(const std::string& std_str, const String& str);
+
+/*!
+\brief
+ Return true if String \a str is lexicographically greater than null-terminated utf8 data \a utf8_str
+*/
+bool CEGUIEXPORT operator>(const String& str, const utf8* utf8_str);
+
+/*!
+\brief
+ Return true if String \a str is lexicographically greater than null-terminated utf8 data \a utf8_str
+*/
+bool CEGUIEXPORT operator>(const utf8* utf8_str, const String& str);
+
+/*!
+\brief
+ Return true if String \a str1 is lexicographically less than or equal to String \a str2
+*/
+bool CEGUIEXPORT operator<=(const String& str1, const String& str2);
+
+/*!
+\brief
+ Return true if String \a str is lexicographically less than or equal to std::string \a std_str
+*/
+bool CEGUIEXPORT operator<=(const String& str, const std::string& std_str);
+
+/*!
+\brief
+ Return true if String \a str is lexicographically less than or equal to std::string \a std_str
+*/
+bool CEGUIEXPORT operator<=(const std::string& std_str, const String& str);
+
+/*!
+\brief
+ Return true if String \a str is lexicographically less than or equal to null-terminated utf8 data \a utf8_str
+*/
+bool CEGUIEXPORT operator<=(const String& str, const utf8* utf8_str);
+
+/*!
+\brief
+ Return true if String \a str is lexicographically less than or equal to null-terminated utf8 data \a utf8_str
+*/
+bool CEGUIEXPORT operator<=(const utf8* utf8_str, const String& str);
+
+/*!
+\brief
+ Return true if String \a str1 is lexicographically greater than or equal to String \a str2
+*/
+bool CEGUIEXPORT operator>=(const String& str1, const String& str2);
+
+/*!
+\brief
+ Return true if String \a str is lexicographically greater than or equal to std::string \a std_str
+*/
+bool CEGUIEXPORT operator>=(const String& str, const std::string& std_str);
+
+/*!
+\brief
+ Return true if String \a str is lexicographically greater than or equal to std::string \a std_str
+*/
+bool CEGUIEXPORT operator>=(const std::string& std_str, const String& str);
+
+/*!
+\brief
+ Return true if String \a str is lexicographically greater than or equal to null-terminated utf8 data \a utf8_str
+*/
+bool CEGUIEXPORT operator>=(const String& str, const utf8* utf8_str);
+
+/*!
+\brief
+ Return true if String \a str is lexicographically greater than or equal to null-terminated utf8 data \a utf8_str
+*/
+bool CEGUIEXPORT operator>=(const utf8* utf8_str, const String& str);
+
+/*!
+\brief
+ Return true if String \a str is equal to c-string \a c_str
+*/
+bool CEGUIEXPORT operator==(const String& str, const char* c_str);
+
+/*!
+\brief
+ Return true if c-string \a c_str is equal to String \a str
+*/
+bool CEGUIEXPORT operator==(const char* c_str, const String& str);
+
+/*!
+\brief
+ Return true if String \a str is not equal to c-string \a c_str
+*/
+bool CEGUIEXPORT operator!=(const String& str, const char* c_str);
+
+/*!
+\brief
+ Return true if c-string \a c_str is not equal to String \a str
+*/
+bool CEGUIEXPORT operator!=(const char* c_str, const String& str);
+
+/*!
+\brief
+ Return true if String \a str is lexicographically less than c-string \a c_str
+*/
+bool CEGUIEXPORT operator<(const String& str, const char* c_str);
+
+/*!
+\brief
+ Return true if c-string \a c_str is lexicographically less than String \a str
+*/
+bool CEGUIEXPORT operator<(const char* c_str, const String& str);
+
+/*!
+\brief
+Return true if String \a str is lexicographically greater than c-string \a c_str
+*/
+bool CEGUIEXPORT operator>(const String& str, const char* c_str);
+
+/*!
+\brief
+Return true if c-string \a c_str is lexicographically greater than String \a str
+*/
+bool CEGUIEXPORT operator>(const char* c_str, const String& str);
+
+/*!
+\brief
+ Return true if String \a str is lexicographically less than or equal to c-string \a c_str
+*/
+bool CEGUIEXPORT operator<=(const String& str, const char* c_str);
+
+/*!
+\brief
+ Return true if c-string \a c_str is lexicographically less than or equal to String \a str
+*/
+bool CEGUIEXPORT operator<=(const char* c_str, const String& str);
+
+/*!
+\brief
+ Return true if String \a str is lexicographically greater than or equal to c-string \a c_str
+*/
+bool CEGUIEXPORT operator>=(const String& str, const char* c_str);
+
+/*!
+\brief
+ Return true if c-string \a c_str is lexicographically greater than or equal to String \a str
+*/
+bool CEGUIEXPORT operator>=(const char* c_str, const String& str);
+
+//////////////////////////////////////////////////////////////////////////
+// Concatenation operator functions
+//////////////////////////////////////////////////////////////////////////
+/*!
+\brief
+ Return String object that is the concatenation of the given inputs
+
+\param str1
+ String object describing first part of the new string
+
+\param str2
+ String object describing the second part of the new string
+
+\return
+ A String object that is the concatenation of \a str1 and \a str2
+
+\exception std::length_error Thrown if the resulting String would be too large.
+*/
+String CEGUIEXPORT operator+(const String& str1, const String& str2);
+
+/*!
+\brief
+ Return String object that is the concatenation of the given inputs
+
+\param str
+ String object describing first part of the new string
+
+\param std_str
+ std::string object describing the second part of the new string
+
+\return
+ A String object that is the concatenation of \a str and \a std_str
+
+\exception std::length_error Thrown if the resulting String would be too large.
+*/
+String CEGUIEXPORT operator+(const String& str, const std::string& std_str);
+
+/*!
+\brief
+ Return String object that is the concatenation of the given inputs
+
+\param std_str
+ std::string object describing the first part of the new string
+
+\param str
+ String object describing the second part of the new string
+
+\return
+ A String object that is the concatenation of \a std_str and \a str
+
+\exception std::length_error Thrown if the resulting String would be too large.
+*/
+String CEGUIEXPORT operator+(const std::string& std_str, const String& str);
+
+/*!
+\brief
+ Return String object that is the concatenation of the given inputs
+
+\param str
+ String object describing first part of the new string
+
+\param utf8_str
+ Buffer containing null-terminated utf8 encoded data describing the second part of the new string
+
+\return
+ A String object that is the concatenation of \a str and \a utf8_str
+
+\exception std::length_error Thrown if the resulting String would be too large.
+*/
+String CEGUIEXPORT operator+(const String& str, const utf8* utf8_str);
+
+/*!
+\brief
+ Return String object that is the concatenation of the given inputs
+
+\param utf8_str
+ Buffer containing null-terminated utf8 encoded data describing the first part of the new string
+
+\param str
+ String object describing the second part of the new string
+
+\return
+ A String object that is the concatenation of \a str and \a utf8_str
+
+\exception std::length_error Thrown if the resulting String would be too large.
+*/
+String CEGUIEXPORT operator+(const utf8* utf8_str, const String& str);
+
+/*!
+\brief
+ Return String object that is the concatenation of the given inputs
+
+\param str
+ String object describing the first part of the new string
+
+\param code_point
+ utf32 code point describing the second part of the new string
+
+\return
+ A String object that is the concatenation of \a str and \a code_point
+
+\exception std::length_error Thrown if the resulting String would be too large.
+*/
+String CEGUIEXPORT operator+(const String& str, utf32 code_point);
+
+/*!
+\brief
+ Return String object that is the concatenation of the given inputs
+
+\param code_point
+ utf32 code point describing the first part of the new string
+
+\param str
+ String object describing the second part of the new string
+
+\return
+ A String object that is the concatenation of \a code_point and \a str
+
+\exception std::length_error Thrown if the resulting String would be too large.
+*/
+String CEGUIEXPORT operator+(utf32 code_point, const String& str);
+
+/*!
+\brief
+ Return String object that is the concatenation of the given inputs
+
+\param str
+ String object describing first part of the new string
+
+\param c_str
+ c-string describing the second part of the new string
+
+\return
+ A String object that is the concatenation of \a str and \a c_str
+
+\exception std::length_error Thrown if the resulting String would be too large.
+*/
+String CEGUIEXPORT operator+(const String& str, const char* c_str);
+
+/*!
+\brief
+ Return String object that is the concatenation of the given inputs
+
+\param c_str
+ c-string describing the first part of the new string
+
+\param str
+ String object describing the second part of the new string
+
+\return
+ A String object that is the concatenation of \a c_str and \a str
+
+\exception std::length_error Thrown if the resulting String would be too large.
+*/
+String CEGUIEXPORT operator+(const char* c_str, const String& str);
+
+
+//////////////////////////////////////////////////////////////////////////
+// Output (stream) functions
+//////////////////////////////////////////////////////////////////////////
+CEGUIEXPORT std::ostream& operator<<(std::ostream& s, const String& str);
+
+
+//////////////////////////////////////////////////////////////////////////
+// Modifying operations
+//////////////////////////////////////////////////////////////////////////
+/*!
+\brief
+ Swap the contents for two String objects
+
+\param str1
+ String object who's contents are to be swapped with \a str2
+
+\param str2
+ String object who's contents are to be swapped with \a str1
+
+\return
+ Nothing
+*/
+void CEGUIEXPORT swap(String& str1, String& str2);
+
+
+} // End of CEGUI namespace section
+
+
+#endif // end of guard _CEGUIString_h_
diff --git a/pcr/cegui-0.5/PKGBUILD b/pcr/cegui-0.5/PKGBUILD
new file mode 100644
index 000000000..60c3427cc
--- /dev/null
+++ b/pcr/cegui-0.5/PKGBUILD
@@ -0,0 +1,41 @@
+# Contributor: Jakub Luzny <limoto94@gmail.com>
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname=cegui-0.5
+pkgver=0.5.0b
+pkgrel=1
+pkgdesc="A free library providing windowing and widgets for graphics APIs/engines"
+arch=('i686' 'x86_64')
+url="http://crayzedsgui.sourceforge.net"
+#options=('!libtool')
+license=("MIT")
+depends=('pcre' 'glew' 'freetype2' 'libxml2' 'devil' 'freeglut' 'silly')
+conflicts=('cegui')
+source=(http://downloads.sourceforge.net/crayzedsgui/CEGUI-$pkgver.tar.gz
+ CEGUIString.h)
+md5sums=('b42322a33c6a06eede76b15f75694a17'
+ 'b0859a1316bb25ca4860a5d0052e9a04')
+
+
+build() {
+ cd $srcdir/CEGUI-0.5.0
+
+ cp $srcdir/CEGUIString.h include/
+ sed -i 's/ILvoid/void/' ImageCodecModules/DevILImageCodec/CEGUIDevILImageCodec.cpp
+
+ ./configure --prefix=/usr --enable-release --enable-shared --disable-expat --disable-tga --disable-samples --disable-xerces-c
+
+ make
+}
+
+package() {
+ cd $srcdir/CEGUI-0.5.0
+
+ make DESTDIR=${pkgdir} install
+
+ install -Dm644 COPYING ${pkgdir}/usr/share/licenses/$pkgname/LICENSE
+}
+
+#category: lib
+md5sums=('b42322a33c6a06eede76b15f75694a17'
+ 'b0859a1316bb25ca4860a5d0052e9a04')
diff --git a/pcr/cegui-0.6/PKGBUILD b/pcr/cegui-0.6/PKGBUILD
new file mode 100644
index 000000000..fb28c2134
--- /dev/null
+++ b/pcr/cegui-0.6/PKGBUILD
@@ -0,0 +1,55 @@
+# Contributor: Lucio zara <pennega@gmail.com>
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname=cegui-0.6
+pkgver=0.6.2
+_pkgver=0.6.2b
+pkgrel=13
+
+pkgdesc="A free library providing windowing and widgets for graphics APIs/engines."
+arch=('i686' 'x86_64')
+url="http://www.cegui.org.uk/"
+license=('MIT')
+depends=('devil' 'freetype2' 'libxml2' 'lua' 'pcre' 'silly' 'glew' 'tinyxml' 'directfb' 'freeglut')
+makedepends=()
+options=('!libtool')
+conflicts=('cegui')
+source=("http://downloads.sourceforge.net/crayzedsgui/CEGUI-${_pkgver}.tar.gz")
+md5sums=('4fbd95e5a2ac1c7acf2a8f5df3ac6b93')
+
+
+build() {
+ cd ${srcdir}/CEGUI-${pkgver}
+ #PATCH
+ #sed -i '1i#include <cstddef>' include/CEGUIString.h
+ sed -i '/#include <stdexcept>/a\#include <cstddef>' include/CEGUIString.h
+ sed -i '/#include "CEGUIDynamicModule.h"/a\#include <algorithm>' RendererModules/directfbRenderer/directfb-renderer.cpp
+ sed -i 's:TiXmlNode\:\::TiXmlNode\:\:TINYXML_:g' XMLParserModules/TinyXMLParser/CEGUITinyXMLParser.cpp
+ sed -i 's:ILvoid:void:g' ImageCodecModules/DevILImageCodec/CEGUIDevILImageCodec.cpp
+
+ PYTHON=python2 \
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --disable-static \
+ --disable-xerces-c \
+ --disable-samples \
+ --enable-devil \
+ --enable-silly \
+ --enable-lua-module \
+ --enable-python-module \
+ --with-default-image-codec=SILLYImageCodec
+
+ make || return 1
+}
+
+package() {
+ cd ${srcdir}/CEGUI-${pkgver}
+ install -d ${pkgdir}/usr/share/licenses/${pkgname} || return 1
+
+ make DESTDIR=${pkgdir} install || return 1
+
+ install -m644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/ || return 1
+}
+md5sums=('4fbd95e5a2ac1c7acf2a8f5df3ac6b93')
+md5sums=('4fbd95e5a2ac1c7acf2a8f5df3ac6b93')
diff --git a/pcr/cgdb/PKGBUILD b/pcr/cgdb/PKGBUILD
new file mode 100644
index 000000000..e623d5a96
--- /dev/null
+++ b/pcr/cgdb/PKGBUILD
@@ -0,0 +1,21 @@
+# Contributor: Javier ‘Phrodo_00’ Aravena <Phrodo.00@gmail.com>
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname=cgdb
+pkgver=0.6.6
+pkgrel=1
+pkgdesc="Curses-based interface to the GNU Debugger"
+arch=('i686' 'x86_64')
+url="http://cgdb.sourceforge.net/"
+license=('GPL')
+depends=('readline>=5.1' 'ncurses' 'gdb')
+source=("http://downloads.sourceforge.net/cgdb/$pkgname-$pkgver.tar.gz")
+md5sums=('394b542b495755ab8392b7e88dace744')
+
+build() {
+ cd $startdir/src/$pkgname-$pkgver
+ ./configure --prefix=/usr
+ make || return 1
+ make DESTDIR=$startdir/pkg install
+}
+md5sums=('394b542b495755ab8392b7e88dace744')
diff --git a/pcr/cl-ppcre/LICENSE b/pcr/cl-ppcre/LICENSE
new file mode 100644
index 000000000..8f122e6eb
--- /dev/null
+++ b/pcr/cl-ppcre/LICENSE
@@ -0,0 +1,25 @@
+Copyright (c) 2002-2007, Dr. Edmund Weitz. 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.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR 'AS IS' AND ANY EXPRESSED
+OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, 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/pcr/cl-ppcre/PKGBUILD b/pcr/cl-ppcre/PKGBUILD
new file mode 100644
index 000000000..b136c4ac9
--- /dev/null
+++ b/pcr/cl-ppcre/PKGBUILD
@@ -0,0 +1,41 @@
+# Maintainer: mrshpot <mrshpot at gmail dot com>
+# Contributor: veox <cy at wre dot ath dot cx>
+# Contributor: joyfulgirl <joyfulgirl (at) archlinux.us>
+# Contributor: Jonathan Friedman <jonf@gojon.com>
+# Maintainer : Parabola GNU / Linux-libre <aurelien@cwb.io>
+
+pkgname=cl-ppcre
+pkgver=2.0.3
+pkgrel=2
+pkgdesc="Perl-compatible, portable regexp library for Common Lisp"
+arch=('i686' 'x86_64')
+url="http://www.weitz.de/cl-ppcre/"
+license=('BSD')
+
+depends=('common-lisp' 'cl-asdf')
+
+install=cl-ppcre.install
+source=('http://weitz.de/files/cl-ppcre.tar.gz' 'LICENSE')
+md5sums=('bd5648fd3c8b6f89eea43f5b82b99aa1'
+ 'c6aa01dce26b45aa916329701a448d11')
+
+build() {
+ install -d ${pkgdir}/usr/share/common-lisp/source/${pkgname}
+ install -d ${pkgdir}/usr/share/common-lisp/systems
+ install -d ${pkgdir}/usr/share/licenses/${pkgname}
+
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ install -m 644 -t ${pkgdir}/usr/share/common-lisp/source/${pkgname} \
+ ${srcdir}/${pkgname}-${pkgver}/*.lisp
+ install -m 644 -t ${pkgdir}/usr/share/common-lisp/source/${pkgname} \
+ ${srcdir}/${pkgname}-${pkgver}/*.asd
+ install -m 644 ${srcdir}/LICENSE \
+ ${pkgdir}/usr/share/licenses/${pkgname}
+
+ cd ${pkgdir}/usr/share/common-lisp/systems
+ ln -s ../source/${pkgname}/${pkgname}.asd .
+ ln -s ../source/${pkgname}/${pkgname}-unicode.asd .
+}
+
+# vim:set ts=2 sw=4 et nospell:
diff --git a/pcr/cl-ppcre/cl-ppcre.install b/pcr/cl-ppcre/cl-ppcre.install
new file mode 100644
index 000000000..9ad84d1e1
--- /dev/null
+++ b/pcr/cl-ppcre/cl-ppcre.install
@@ -0,0 +1,73 @@
+_pkgname=cl-ppcre
+_compile_log=n
+_lisp=()
+
+if pacman -Qq clisp &>/dev/null ||
+ pacman -Qq clisp-gtk2 &>/dev/null ||
+ pacman -Qq clisp-new-clx &>/dev/null; then
+ _lisp=(${_lisp[@]} 'clisp')
+fi
+if pacman -Qq sbcl &>/dev/null; then
+ _lisp=(${_lisp[@]} 'sbcl')
+fi
+if pacman -Qq cmucl &> /dev/null; then
+ _lisp=(${_lisp[@]} 'cmucl')
+fi
+
+_compile_sbcl() {
+ sbcl --noinform --no-sysinit --no-userinit \
+ --eval "(require :asdf)" \
+ --eval "(pushnew #p\"/usr/share/common-lisp/systems/\" asdf:*central-registry* :test #'equal)" \
+ --eval "(asdf:operate 'asdf:compile-op '${_pkgname})" \
+ --eval "(quit)" &> ${_compile_log_file} || return 1
+}
+_compile_clisp() {
+ clisp --silent -norc -x \
+ "(load #p\"/usr/share/common-lisp/source/asdf/asdf.lisp\")
+ (pushnew #p\"/usr/share/common-lisp/systems/\" asdf:*central-registry* :test #'equal)
+ (asdf:operate 'asdf:compile-op '${_pkgname})
+ (quit)" &> ${_compile_log_file} || return 1
+}
+_compile_cmucl() {
+ cmucl -quiet -nositeinit -noinit -eval \
+ "(load #p\"/usr/share/common-lisp/source/asdf/asdf.lisp\")
+ (pushnew #p\"/usr/share/common-lisp/systems/\" asdf:*central-registry* :test #'equal)
+ (asdf:operate 'asdf:compile-op '${_pkgname})
+ (quit)" &> ${_compile_log_file} || return 1
+}
+
+post_install() {
+ for _lispiter in ${_lisp[@]}; do
+ echo "---> Compiling lisp files using ${_lispiter} <---"
+ if [ $_compile_log = 'y' ]; then
+ _compile_log_file=/tmp/${_pkgname}_${_lispiter}.log
+ else
+ _compile_log_file=/dev/null
+ fi
+ _compile_${_lispiter}
+ echo "---> Done compiling lisp files (using ${_lispiter}) <---"
+ done
+
+ cat << EOM
+
+ To load this library, load asdf and then run the following lines
+ (or their equivalent for your lisp of choice):
+
+ (push #p"/usr/share/common-lisp/systems/" asdf:*central-registry*)
+ (asdf:operate 'asdf:load-op '${_pkgname})
+EOM
+}
+
+post_upgrade() {
+ post_install
+}
+
+pre_remove() {
+ rm -f /usr/share/common-lisp/source/${_pkgname}/{*.fas,*.fasl,*.lib,*.x86f}
+}
+
+pre_upgrade() {
+ pre_remove
+}
+
+# End of file
diff --git a/pcr/clx-git/PKGBUILD b/pcr/clx-git/PKGBUILD
new file mode 100644
index 000000000..6e2a3369b
--- /dev/null
+++ b/pcr/clx-git/PKGBUILD
@@ -0,0 +1,71 @@
+#Contributor: Akshay Srinivasan <akshaysrinivasan at gmail.com>
+pkgname=clx-git
+_clname=clx
+pkgver=20120421
+pkgrel=1
+pkgdesc="Xlib for common lisp systems"
+arch=('i686' 'x86_64')
+url="http://www.cliki.net/CLX"
+license=('custom')
+depends=('x-server' 'sbcl')
+makedepends=('texinfo')
+install=clx.install
+source=(README.licensing)
+md5sums=('74858379015567928f1eee186d9db1a4')
+
+conflicts=('clx')
+provides=('clx')
+
+makedepends=('git')
+
+_gitroot="git://github.com/sharplispers/clx.git"
+_gitname="clx"
+
+
+build() {
+
+ cat << EOM
+
+ WARNING!
+
+ You are building a package using a snapshot from a repository. The
+ resulting package may be unusable or pose a security risk, since
+ the install script does not check source file hashes. Do not continue
+ if this is undesirable.
+
+EOM
+
+ install -d ${pkgdir}/usr/share/common-lisp/systems
+ install -d ${pkgdir}/usr/share/common-lisp/source/${_clname}/{debug,demo,test}
+ install -d ${pkgdir}/usr/share/licenses/${_clname}
+ install -d ${pkgdir}/usr/share/info
+
+ ### Git checkout
+ cd "$srcdir"
+ msg "Connecting to GIT server...."
+
+ if [ -d $_gitname ] ; then
+ cd $_gitname && git pull origin
+ msg "The local files are updated."
+ else
+ git clone $_gitroot $_gitname
+ fi
+
+ cd ${pkgdir}/usr/share/common-lisp/source/${_clname}
+
+ install -m 644 -t . ${srcdir}/${_gitname}/*.lisp
+ install -m 644 -t debug ${srcdir}/${_gitname}/debug/*.lisp
+ install -m 644 -t demo ${srcdir}/${_gitname}/demo/*.lisp
+ install -m 644 -t test ${srcdir}/${_gitname}/test/*.lisp
+
+ install -m 644 -t . ${srcdir}/${_gitname}/${_clname}.asd
+ cd ${pkgdir}/usr/share/common-lisp/systems
+ ln -s ../source/${_clname}/${_clname}.asd .
+
+ cd ${srcdir}/${_gitname}/manual
+ makeinfo ${_clname}.texinfo
+ install -m 644 ${_clname}.info ${pkgdir}/usr/share/info
+
+ install -m 644 ${srcdir}/README.licensing ${pkgdir}/usr/share/licenses/${_clname}
+
+}
diff --git a/pcr/clx-git/README.licensing b/pcr/clx-git/README.licensing
new file mode 100644
index 000000000..669083222
--- /dev/null
+++ b/pcr/clx-git/README.licensing
@@ -0,0 +1,4 @@
+This packages uses several licenses.
+
+To see a given source file's license, please check its header. The
+lisp files are installed in /usr/share/common-lisp/source/clx.
diff --git a/pcr/clx-git/clx.install b/pcr/clx-git/clx.install
new file mode 100644
index 000000000..7344518a4
--- /dev/null
+++ b/pcr/clx-git/clx.install
@@ -0,0 +1,76 @@
+# arg 1: the new package version
+
+_pkgname=clx
+_compile_log=n
+_lisp=()
+
+if pacman -Qq clisp-new-clx &>/dev/null ||
+ pacman -Qq clisp-gtk2 &>/dev/null ||
+ pacman -Qq clisp-new-clx &>/dev/null; then
+ _lisp=(${_lisp[@]} 'clisp')
+fi
+if pacman -Qq sbcl &>/dev/null; then
+ _lisp=(${_lisp[@]} 'sbcl')
+fi
+if pacman -Qq cmucl &> /dev/null; then
+ _lisp=(${_lisp[@]} 'cmucl')
+fi
+
+_compile_sbcl() {
+ sbcl --noinform --no-sysinit --no-userinit \
+ --eval "(require :asdf)" \
+ --eval "(pushnew #p\"/usr/share/common-lisp/systems/\" asdf:*central-registry* :test #'equal)" \
+ --eval "(asdf:operate 'asdf:compile-op '${_pkgname})" \
+ --eval "(quit)" &> ${_compile_log_file} || return 1
+}
+_compile_clisp() {
+ clisp --silent -norc -x \
+ "(load #p\"/usr/share/common-lisp/source/asdf/asdf\")
+ (pushnew #p\"/usr/share/common-lisp/systems/\" asdf:*central-registry* :test #'equal)
+ (asdf:operate 'asdf:compile-op '${_pkgname})
+ (quit)" &> ${_compile_log_file} || return 1
+}
+_compile_cmucl() {
+ cmucl -quiet -nositeinit -noinit -eval \
+ "(load #p\"/usr/share/common-lisp/source/asdf/asdf\")
+ (pushnew #p\"/usr/share/common-lisp/systems/\" asdf:*central-registry* :test #'equal)
+ (asdf:operate 'asdf:compile-op '${_pkgname})
+ (quit)" &> ${_compile_log_file} || return 1
+}
+
+post_install() {
+ for _lispiter in ${_lisp[@]}; do
+ echo "---> Compiling lisp files using ${_lispiter} <---"
+ if [ $_compile_log = 'y' ]; then
+ _compile_log_file=/tmp/${_pkgname}_${_lispiter}.log
+ else
+ _compile_log_file=/dev/null
+ fi
+ _compile_${_lispiter}
+ echo "---> Done compiling lisp files (using ${_lispiter}) <---"
+ done
+
+ cat << EOM
+
+ To load this library, load asdf and then run the following lines
+ (or their equivalent for your lisp of choice):
+
+ (push #p"/usr/share/common-lisp/systems/" asdf:*central-registry*)
+ (asdf:operate 'asdf:load-op '${_pkgname})
+EOM
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ rm -f /usr/share/common-lisp/source/$_pkgname/{*.fas,*.fasl,*.lib,*.x86f}
+}
+
+op=$1
+shift
+
+$op $*
+
+# End of file \ No newline at end of file
diff --git a/pcr/command-not-found/PKGBUILD b/pcr/command-not-found/PKGBUILD
new file mode 100644
index 000000000..d43b73c0e
--- /dev/null
+++ b/pcr/command-not-found/PKGBUILD
@@ -0,0 +1,47 @@
+# Contributor: Matthias Maennich <arch@maennich.net>
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname=command-not-found
+pkgver=0.4.4
+pkgrel=1
+pkgdesc="In case a command could not be found this utility searches for packages containing this or a similar command (bash,zsh)."
+arch=('i686' 'x86_64')
+url="http://github.com/metti/command-not-found"
+license=('GPL')
+depends=('boost-libs' 'tdb' 'libarchive' 'wget')
+makedepends=('boost' 'tdb' 'cmake' 'git')
+source=('install')
+md5sums=('2ea3c216fb0b7f8449f0225ece33210c')
+install='install'
+
+_gitrepo="https://github.com/metti/$pkgname.git"
+
+build() {
+ cd $srcdir
+ msg "Connecting to the GIT server ..."
+
+ if [[ -d $srcdir/$pkgname ]] ; then
+ cd $pkgname
+ git fetch origin
+ else
+ git clone $_gitrepo
+ cd $pkgname
+ fi
+
+ git checkout v$pkgver
+
+ msg "GIT checkout done"
+
+ mkdir -p $srcdir/build
+ cd $srcdir/build
+
+ cmake -D CMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="" $srcdir/$pkgname/src
+ make
+
+}
+
+package(){
+ cd $srcdir/build
+
+ make DESTDIR=$pkgdir install
+}
diff --git a/pcr/command-not-found/install b/pcr/command-not-found/install
new file mode 100644
index 000000000..26f49fa50
--- /dev/null
+++ b/pcr/command-not-found/install
@@ -0,0 +1,14 @@
+post_install() {
+ cnf-sync
+}
+
+post_upgrade() {
+ cnf-sync
+}
+
+pre_remove() {
+ rm -rf /var/lib/cnf/*.db
+ rm -rf /var/lib/cnf/*.tdb
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/pcr/conky-control/PKGBUILD b/pcr/conky-control/PKGBUILD
new file mode 100644
index 000000000..c607ae86b
--- /dev/null
+++ b/pcr/conky-control/PKGBUILD
@@ -0,0 +1,35 @@
+# Contributer: giacomogiorgianni@gmail.com
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname=conky-control
+pkgver=1.0.0
+pkgrel=2
+pkgdesc="control panel for conky"
+arch=('any')
+url="http://bbs.archbang.org/viewtopic.php?id=3017"
+license=('GPL')
+categories=()
+depends=('conky-lua')
+makedepends=()
+options=(!emptydirs)
+source=("Conky_voyager.tar.gz::http://ompldr.org/vZWoxMA" "conky_voyager.tar.gz::http://ompldr.org/vZWoxYg" "conky-control.install")
+md5sums=('6930f45eb5dd402953d306ebe8ff14da'
+ 'e63ba795800ec20df912e620b423688e'
+ '0217a6bee07fb918b0c2050548103d43')
+install=$pkgname.install
+
+build() {
+ mkdir -p $pkgdir/usr/bin
+ mkdir -p $pkgdir/usr/share/applications
+ mkdir -p $pkgdir/etc/skel/.config
+ cp $startdir/conky-controlRC.desktop $pkgdir/etc/skel/.config/
+ cp $startdir/conky-control.desktop $pkgdir/usr/share/applications/
+
+ install -m 0775 -do $LOGNAME $pkgdir/etc/skel/.scripts
+ tar xzf Conky_voyager.tar.gz -C $pkgdir/etc/skel/.scripts
+ tar xzf conky_voyager.tar.gz -C $pkgdir/etc/skel//
+ ln -s $pkgdir/etc/skel/.scripts/Conky/conky $pkgdir/usr/bin/conky-control
+ }
+md5sums=('6930f45eb5dd402953d306ebe8ff14da'
+ 'e63ba795800ec20df912e620b423688e'
+ '0217a6bee07fb918b0c2050548103d43')
diff --git a/pcr/conky-control/conky-control.install b/pcr/conky-control/conky-control.install
new file mode 100644
index 000000000..399672b0a
--- /dev/null
+++ b/pcr/conky-control/conky-control.install
@@ -0,0 +1,17 @@
+post_install() {
+ for i in `ls /home | grep -v lost+found`
+ do
+ cp -fR /etc/skel/.conky /home/$i
+ cp -fR /etc/skel/.scripts /home/$i
+ cp -fR /etc/skel/.config /home/$i
+ echo "# Overwrite this file if you want to have a permanent setting" > /home/$i/.conkyrc
+ chown $i:users -R /home/$i/{.conky,.scripts}
+ chown $i:users "/home/$i/.config/autostart/Conky Control RC.desktop"
+ chown $i:users "/home/$i/.conkyrc"
+ done
+ echo " >> Start 'conky-control' to configure conky"
+}
+
+post_upgrade() {
+ post_install
+}
diff --git a/pcr/conky-lua/PKGBUILD b/pcr/conky-lua/PKGBUILD
new file mode 100644
index 000000000..6d36e9c29
--- /dev/null
+++ b/pcr/conky-lua/PKGBUILD
@@ -0,0 +1,54 @@
+# Contributor: Renato Garcia <fgarcia.renato@gmail.com>
+# Contributor: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: James Rayner <james@archlinux.org>
+# Contributor: Partha Chowdhury <kira.laucas@gmail.com>
+# Contributor: Gaetan Bisson <bisson@archlinux.org>
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname=conky-lua
+_pkgname=conky
+pkgver=1.9.0
+pkgrel=1
+pkgdesc='Lightweight system monitor for X'
+url='http://conky.sourceforge.net/'
+license=('BSD' 'GPL')
+arch=('i686' 'x86_64')
+options=('!emptydirs')
+makedepends=('docbook2x' 'toluapp' 'perl-xml-libxml')
+depends=('alsa-lib' 'libxml2' 'curl' 'wireless_tools' 'libxft' 'glib2' 'libxdamage' 'imlib2' 'lua' 'cairo')
+provides=('conky=1.9.0')
+conflicts=('conky')
+backup=('etc/conky/conky.conf' 'etc/conky/conky_no_x11.conf')
+source=("http://downloads.sourceforge.net/project/${_pkgname}/${_pkgname}/${pkgver}/${_pkgname}-${pkgver}.tar.gz")
+sha1sums=('a8d26d002370c9b877ae77ad3a3bbd2566b38e5d')
+
+replaces=('torsmo')
+
+build() {
+ cd "${srcdir}/${_pkgname}-${pkgver}"
+
+ CPPFLAGS="${CXXFLAGS}" LIBS="${LDFLAGS}" ./configure \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --enable-ibm \
+ --enable-curl \
+ --enable-rss \
+ --enable-weather-xoap \
+ --enable-imlib2 \
+ --enable-wlan \
+ --enable-lua \
+ --enable-lua-cairo \
+ --enable-lua-imlib2
+
+
+ make
+}
+
+package() {
+ cd "${srcdir}/${_pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+ install -Dm644 COPYING "${pkgdir}/usr/share/licenses/${_pkgname}/LICENSE"
+ install -Dm644 extras/vim/syntax/conkyrc.vim "${pkgdir}"/usr/share/vim/vimfiles/syntax/conkyrc.vim
+ install -Dm644 extras/vim/ftdetect/conkyrc.vim "${pkgdir}"/usr/share/vim/vimfiles/ftdetect/conkyrc.vim
+}
+sha1sums=('a8d26d002370c9b877ae77ad3a3bbd2566b38e5d')
diff --git a/pcr/cw/PKGBUILD b/pcr/cw/PKGBUILD
new file mode 100644
index 000000000..fb26acb4a
--- /dev/null
+++ b/pcr/cw/PKGBUILD
@@ -0,0 +1,46 @@
+# Contributor: William Díaz <wdiaz[at]archlinux[dot]us>
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname=cw
+pkgver=1.0.16
+pkgrel=1
+pkgdesc="A non-intrusive ANSI color wrapper for common unix-based commands on GNU/linux."
+url="http://sourceforge.net/projects/cwrapper/"
+license=('GPL2')
+arch=('i686' 'x86_64')
+depends=()
+makedepends=('patch')
+install=cw.install
+source=("http://cwrapper.sourceforge.net/${pkgname}-${pkgver}.tar.bz2"
+ "${pkgname}.patch")
+md5sums=('142a1e9a25abbb01c3b90091d0bf68fd'
+ '5c54fab22fdb0601e6e4fb3fa87c435d')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ install -d ${pkgdir}/usr/bin \
+ ${pkgdir}/usr/share/man/man1 \
+ ${pkgdir}/usr/share/doc/cw
+
+ msg "Patching Files"
+ patch -Np1 -i ${srcdir}/${pkgname}.patch || return 1
+
+ ./configure --prefix=/usr || return 1
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ make DESTDIR=${pkgdir} install || return 1
+
+ # Deleting the problematic files
+ rm -R ${pkgdir}/usr/lib/${pkgname}/{file,gcc,g++,stat,du}
+
+ cp CHANGES CONTRIB INSTALL README PLATFORM \
+ ${pkgdir}/usr/share/doc/cw
+
+ ln -sf /usr/bin/cw ${pkgdir}/usr/bin/cwe
+}
+md5sums=('142a1e9a25abbb01c3b90091d0bf68fd'
+ '5c54fab22fdb0601e6e4fb3fa87c435d')
diff --git a/pcr/cw/cw.install b/pcr/cw/cw.install
new file mode 100644
index 000000000..bf0219bb7
--- /dev/null
+++ b/pcr/cw/cw.install
@@ -0,0 +1,26 @@
+post_install () {
+ echo -e "\033[32;1m==>\033[0m \033[1mUpdating definition files...\033[0m"
+ /usr/bin/cwu /usr/lib/cw /usr/bin/cw > /dev/null
+
+ echo -e ""
+ echo -e "Complete, definitions are stored in: /usr/lib/cw"
+ echo -e "\033[1mFor bash:\033[0m place 'export PATH=\"/usr/lib/cw:\$PATH\"'"
+ echo -e "at the end of ~/.bash_profile(or /etc/profile globally)"
+ echo -e ""
+ echo -e "\033[1mFor tcsh:\033[0m place 'setenv PATH \"/usr/lib/cw:\$PATH\"'"
+ echo -e "at the end of ~/.login(or /etc/csh.login globally)"
+ echo -e ""
+ echo -e "\033[1mFor zsh:\033[0m place:"
+ echo -e "'export PATH=\"/usr/lib/cw:\$PATH\"'"
+ echo -e "at the end of ~/.zshrc(or /etc/zprofile globally)"
+ echo -e ""
+ echo -e "Or to automate the two lines above use the "colorcfg" command."
+ echo -e "(and add optional anti-coloring precautions)"
+ echo -e "Once the desired shell(s) are setup, use the "color" command,"
+ echo -e "or the environmental variable NOCOLOR=1 to turn"
+ echo -e "color wrapping on and off."
+}
+
+post_upgrade() {
+ post_install
+}
diff --git a/pcr/cw/cw.patch b/pcr/cw/cw.patch
new file mode 100644
index 000000000..2158a0d30
--- /dev/null
+++ b/pcr/cw/cw.patch
@@ -0,0 +1,78 @@
+--- cw-1.0.16/Makefile.in 2007-09-25 11:10:20.000000000 -0600
++++ cw-1.0.16/Makefile.in 2009-12-23 00:22:47.932698402 -0600
+@@ -8,7 +8,7 @@ CC=@CC@
+ ECHO=echo
+ LN=ln
+ RM=rm
+-MKDIR=mkdir
++MKDIR=mkdir -p
+ INSTALL=@INSTALL@
+
+ all:
+@@ -56,32 +56,18 @@ installlocal: cleanlocal local
+
+ install: cleanpub cw cwu
+ @$(ECHO) "* Installing color wrapper..."
+- @for FILE in bin/*;do $(INSTALL) -o 0 -g 0 -m 755 $$FILE $(BINDIR);done
+- @$(LN) -sf $(BINDIR)/cw $(BINDIR)/cwe
++ @for FILE in bin/*;do $(INSTALL) -m 755 $$FILE $(DESTDIR)$(BINDIR);done
++ @$(LN) -sf $(DESTDIR)$(BINDIR)/cw $(DESTDIR)$(BINDIR)/cwe
+ @$(ECHO) "* Installing color wrapper generic definition files..."
+- @$(MKDIR) -m 755 $(LIBDIR)/cw/
+- @for FILE in def/*;do $(INSTALL) -o 0 -g 0 -m 755 $$FILE $(LIBDIR)/cw/;done
++ @$(MKDIR) -m 755 $(DESTDIR)$(LIBDIR)/cw/
++ @for FILE in def/*;do $(INSTALL) -m 755 $$FILE $(DESTDIR)$(LIBDIR)/cw/;done
+ @$(ECHO) "* Installing color wrapper generic header/footer files..."
+- @$(MKDIR) -m 755 $(LIBDIR)/cw/etc
+- @for FILE in etc/*;do $(INSTALL) -o 0 -g 0 -m 644 $$FILE $(LIBDIR)/cw/etc;done
++ @$(MKDIR) -m 755 $(DESTDIR)$(LIBDIR)/cw/etc
++ @for FILE in etc/*;do $(INSTALL) -m 644 $$FILE $(DESTDIR)$(LIBDIR)/cw/etc;done
+ @$(ECHO) "* Installing manual pages..."
+- @for FILE in man/*;do $(INSTALL) -o 0 -g 0 -m 644 $$FILE $(MANDIR)/man1/;done
++ @for FILE in man/*;do $(INSTALL) -m 644 $$FILE $(DESTDIR)$(MANDIR)/man1/;done
+ @$(ECHO) "* Updating definition files..."
+- @$(BINDIR)/cwu $(LIBDIR)/cw $(BINDIR)/cw
+- @$(ECHO) "-----------------------------------------------------------"
+- @$(ECHO) "* Complete, definitions are stored in: $(LIBDIR)/cw"
+- @$(ECHO) "* For bash: place 'export PATH=\"$(LIBDIR)/cw:\$$PATH\"'"\
+- "at the end of ~/.bash_profile(or /etc/profile globally)"
+- @$(ECHO) "* For tcsh: place 'setenv PATH \"$(LIBDIR)/cw:\$$PATH\"'"\
+- "at the end of ~/.login(or /etc/csh.login globally)"
+- @$(ECHO) "* Or to automate the two lines above use the"\
+- "\"colorcfg\" command. (and add optional anti-coloring precautions)"
+- @$(ECHO) "* Once the desired shell(s) are setup, use the"\
+- "\"color\" command, or the environmental variable NOCOLOR=1 to turn"\
+- "color wrapping on and off."
+- @$(ECHO) ""
+- @$(ECHO) "* PLEASE view the ./README file for more information if"\
+- "you haven't already."
++ @$(DESTDIR)$(BINDIR)/cwu $(DESTDIR)$(LIBDIR)/cw $(DESTDIR)$(BINDIR)/cw
+
+ clean:
+ @$(ECHO) "* Cleaning compiling content..."
+@@ -94,9 +80,9 @@ cleanlocal:
+
+ cleanpub:
+ @$(ECHO) "* Cleaning cw and cwu binaries, and definitions..."
+- @$(RM) -rf $(BINDIR)/cw $(BINDIR)/cwu $(BINDIR)/cwe\
+- $(BINDIR)/cw.exe $(BINDIR)/cwu.exe $(BINDIR)/color $(BINDIR)/colorcfg\
+- $(LIBDIR)/cw $(MANDIR)/man1/cw.1.gz $(MANDIR)/man1/cwu.1.gz\
+- $(MANDIR)/man1/cwe.1.gz
++ @$(RM) -rf $(DESTDIR)$(BINDIR)/cw $(DESTDIR)$(BINDIR)/cwu $(DESTDIR)$(BINDIR)/cwe\
++ $(DESTDIR)$(BINDIR)/cw.exe $(DESTDIR)$(BINDIR)/cwu.exe $(DESTDIR)$(BINDIR)/color $(DESTDIR)$(BINDIR)/colorcfg\
++ $(DESTDIR)$(LIBDIR)/cw $(DESTDIR)$(MANDIR)/man1/cw.1.gz $(DESTDIR)$(MANDIR)/man1/cwu.1.gz\
++ $(DESTDIR)$(MANDIR)/man1/cwe.1.gz
+
+ cleanall: clean cleanlocal cleanpub
+
+--- cw-1.0.16/bin/colorcfg 2007-09-25 11:10:20.000000000 -0600
++++ cw-1.0.16/bin/colorcfg 2009-12-23 00:29:05.105994275 -0600
+@@ -12,7 +12,7 @@ if test -x "${HOME}/.cw/bin/colorcfg";th
+ else
+ SED="`which sed 2>/dev/null`"
+ if test -z "$SED";then
+- CWLIB="/usr/local/lib/cw"
++ CWLIB="/usr/lib/cw"
+ echo "(NOTE: using static cw library path, this could be invalid)"
+ else
+ CWLIB="`echo \"$0/lib/cw\"|sed \"s/\/bin\/colorcfg//g\"`"
diff --git a/pcr/django-cms/PKGBUILD b/pcr/django-cms/PKGBUILD
new file mode 100644
index 000000000..9a641b7fb
--- /dev/null
+++ b/pcr/django-cms/PKGBUILD
@@ -0,0 +1,26 @@
+# Contributor: Baptiste Jonglez <baptiste--aur at jonglez dot org>
+# Contributor: Fabio Volpe <volpefabio@gmail.com>
+# Contributor: Apkawa <apkawa@gmail.com>
+# Maintainer : Parabola GNU / Linux-libre Aurélien Desbrières <aurelien@cwb.io>
+
+pkgname=django-cms
+pkgver=2.2
+pkgrel=1
+pkgdesc="CMS framework based on Django"
+arch=('any')
+url="http://www.django-cms.org/"
+license=('BSD')
+depends=('python2' 'django' 'python-south' 'python-imaging' 'django-mptt' 'python2-html5lib' 'django-classy-tags' 'django-sekizai')
+source=(http://pypi.python.org/packages/source/d/$pkgname/$pkgname-$pkgver.tar.gz)
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ python2 setup.py build
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ python2 setup.py install --root="$pkgdir/" --install-data=/usr/share/$pkgname --optimize=1
+ #install -D -m644 LICENSE $pkgdir/usr/share/licenses/$pkgname/LICENSE
+}
+
diff --git a/pcr/django-extensions/PKGBUILD b/pcr/django-extensions/PKGBUILD
new file mode 100644
index 000000000..535091cfc
--- /dev/null
+++ b/pcr/django-extensions/PKGBUILD
@@ -0,0 +1,39 @@
+# Contributor: Alper Kanat <alperkanat@raptiye.org>
+# Contributor: Schnouki <thomas.jost@gmail.com>
+# Maintainer : Parabola GNU / Linux-libre <aurelien@cwb.io>
+
+pkgname=django-extensions
+pkgver=0.6
+pkgrel=1
+pkgdesc="Django Custom Management Command Extensions"
+arch=('any')
+url="http://github.com/django-extensions/django-extensions"
+license=('BSD')
+depends=('django' 'python2')
+makedepends=('setuptools' 'git')
+optdepends=('graphviz: to graph Django models'
+ 'python-werkzeug: to use the Werbzeug debugger in the embedded web server')
+source=()
+
+_giturl=http://github.com/$pkgname/$pkgname.git
+
+build() {
+ cd $srcdir
+
+ if [[ ! -d $srcdir/$pkgname ]]; then
+ # downloading the whole repository
+ git clone $_giturl
+ else
+ # updating the local repository
+ cd $srcdir/$pkgname
+ git pull
+ fi
+
+ cd $srcdir/$pkgname
+
+ # checking out to the tag (version)
+ git checkout -b $pkgver $pkgver
+
+ python2 ./setup.py install --root=$pkgdir --prefix=/usr || return 1
+}
+
diff --git a/pcr/django-social-auth/PKGBUILD b/pcr/django-social-auth/PKGBUILD
new file mode 100644
index 000000000..379a066a2
--- /dev/null
+++ b/pcr/django-social-auth/PKGBUILD
@@ -0,0 +1,22 @@
+# Maintainer: Benjamin A. Shelton <zancarius at gmail _ com>
+# Source: https://github.com/zancarius/archlinux-pkgbuilds
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname=django-social-auth
+pkgver=0.7.9
+pkgrel=1
+pkgdesc="Social authentication made simple."
+arch=(any)
+url="http://pypi.python.org/pypi/django-social-auth"
+license=(BSD)
+depends=(python2 python2-openid python2-oauth2)
+makedepends=(python2-distribute)
+conflicts=(django-socialauth-git)
+source=("http://pypi.python.org/packages/source/d/${pkgname}/${pkgname}-${pkgver}.tar.gz")
+
+build () {
+
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ python2 setup.py install --root="${pkgdir}/" --optimize=1
+
+}
diff --git a/pcr/django-tagging/PKGBUILD b/pcr/django-tagging/PKGBUILD
new file mode 100644
index 000000000..83f808280
--- /dev/null
+++ b/pcr/django-tagging/PKGBUILD
@@ -0,0 +1,20 @@
+# Contributor: Ryan Coyner <rcoyner@gmail.com>
+# Contributor: James Pearson <james.m.pearson+arch@gmail.com>
+# Maintainer : Parabola GNU / Linux-libre Aurélien Desbrières <aurelien@cwb.io>
+
+pkgname=django-tagging
+pkgver=0.3.1
+pkgrel=2
+pkgdesc="A generic tagging application for Django projects"
+arch=('i686' 'x86_64')
+url="http://code.google.com/p/django-tagging/"
+license=('MIT')
+depends=('python2')
+source=(http://django-tagging.googlecode.com/files/django-tagging-$pkgver.tar.gz)
+
+build() {
+ cd $srcdir/django-tagging-$pkgver
+ python2 setup.py build || return 1
+ python2 setup.py install --root=$pkgdir || return 1
+ install -D -m644 LICENSE.txt $pkgdir/usr/share/licenses/$pkgname/LICENSE
+}
diff --git a/pcr/doxymacs/PKGBUILD b/pcr/doxymacs/PKGBUILD
new file mode 100644
index 000000000..09a46a0ae
--- /dev/null
+++ b/pcr/doxymacs/PKGBUILD
@@ -0,0 +1,26 @@
+# Contributor: Limao Luo <luolimao+AUR@gmail.com>
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname=doxymacs
+pkgver=1.8.0
+pkgrel=2
+pkgdesc="Use Doxygen from within {X}Emacs"
+arch=(i686 x86_64)
+url=http://$pkgname.sourceforge.net
+license=(GPL)
+depends=('libxml2>=2.6.13')
+install=$pkgname.install
+source=(http://downloads.sourceforge.net/sourceforge/$pkgname/$pkgname-$pkgver.tar.gz)
+sha256sums=('a23fd833bc3c21ee5387c62597610941e987f9d4372916f996bf6249cc495afa')
+sha512sums=('7461a8a415aadf331f856e4f122712cbedc2907eff9e452f24e6ee83b96903d9944d2cfdbcfeab8a66144a0be508eae723c29f82a081df9723560b10c444f8ac')
+
+build() {
+ cd "$srcdir"/$pkgname-$pkgver/
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "$srcdir"/$pkgname-$pkgver/
+ make DESTDIR="$pkgdir" install
+}
diff --git a/pcr/doxymacs/doxymacs.install b/pcr/doxymacs/doxymacs.install
new file mode 100644
index 000000000..9d8366f45
--- /dev/null
+++ b/pcr/doxymacs/doxymacs.install
@@ -0,0 +1,19 @@
+post_install() {
+ cat <<__EOF__
+====> Put (require 'doxymacs) in your .emacs
+====> Invoke doxymacs-mode with M-x doxymacs-mode.
+====> To have doxymacs-mode invoked automatically when in C/C++ mode, put
+(add-hook 'c-mode-common-hook 'doxymacs-mode)
+====> in your .emacs.
+====> If you want Doxygen keywords fontified use M-x doxymacs-font-lock.
+====> To do it automatically in C and C++ modes, add the following to your .emacs:
+(defun my-doxymacs-font-lock-hook ()
+ (if (or (eq major-mode 'c-mode) (eq major-mode 'c++-mode))
+ (doxymacs-font-lock)))
+(add-hook 'font-lock-mode-hook 'my-doxymacs-font-lock-hook)
+__EOF__
+}
+
+post_upgrade() {
+ post_install
+}
diff --git a/pcr/dsh/PKGBUILD b/pcr/dsh/PKGBUILD
new file mode 100644
index 000000000..605598100
--- /dev/null
+++ b/pcr/dsh/PKGBUILD
@@ -0,0 +1,19 @@
+# Contributor: SkiltZ <skiltz@free.fr>
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname=dsh
+pkgver=0.25.9
+pkgrel=2
+pkgdesc="Distributed shell. Runs command through rsh or ssh on a cluster of machines."
+arch=(i686 x86_64)
+depends=('libdshconfig')
+url="http://www.netfort.gr.jp/~dancer/software/dsh.html.en"
+license=('GPL')
+source=(http://www.netfort.gr.jp/~dancer/software/downloads/dsh-$pkgver.tar.gz)
+
+build() {
+ cd $startdir/src/$pkgname-$pkgver
+ ./configure --prefix=/usr --sysconfdir='/etc'
+ make || return 1
+ make prefix=$startdir/pkg/usr sysconfdir=$startdir/pkg/etc install
+ }
diff --git a/pcr/dswm/PKGBUILD b/pcr/dswm/PKGBUILD
new file mode 100644
index 000000000..122e62b9a
--- /dev/null
+++ b/pcr/dswm/PKGBUILD
@@ -0,0 +1,41 @@
+pkgname=dswm
+pkgver=0.0.5r2
+pkgrel=5
+pkgdesc="Deep Space Window Manager - tiling window manager, oriented for good usability and good emacs integration (StumpWM-based)."
+url="http://sourceforge.net/projects/dswm/"
+arch=('x86_64' 'i686')
+license=('GPLv2')
+depends=('sbcl' 'clx-git' 'cl-ppcre')
+optdepends=('emacs')
+makedepends=('autoconf')
+conflicts=()
+replaces=()
+backup=()
+install='dswm.install'
+options=(!strip)
+source=("http://sourceforge.net/projects/${pkgname}/files/${pkgver}/${pkgname}-${pkgver}.tar.gz")
+md5sums=('90f95f7ecfbf964f8ed5aa629959bc1f')
+
+build() {
+ mkdir -p "${pkgdir}"/usr/share/xsessions/ # patch for specific original makefile
+ cd $startdir/src/$pkgname-$pkgver
+ sed -i 's/\@prefix\@//g' dswm.lisp.in
+ autoconf
+ ./configure --prefix=/usr \
+ --with-ppcre=/usr/share/common-lisp/source/cl-ppcre
+
+# this is necesary since the AUR packages do not modify the asdf's registry by default
+ _sbcl_bopt="sbcl_BUILDOPTS=--eval \"(require :asdf)\" \
+--eval \"(pushnew #p\\\"/usr/share/common-lisp/systems/\\\" asdf:*central-registry* :test #'equal)\" \
+--eval \"(asdf:operate 'asdf:load-op 'clx)\" \
+--load ./make-image.lisp"
+ _sbcl_iopt="sbcl_INFOOPTS=--eval \"(require 'asdf)\" \
+--eval \"(pushnew #p\\\"/usr/share/common-lisp/systems/\\\" asdf:*central-registry* :test #'equal)\" \
+--eval \"(asdf:operate 'asdf:load-op 'clx)\" \
+--eval \"(require 'dswm)\" \
+--load ./manual.lisp \
+--eval \"(progn (dswm::generate-manual) (sb-ext:quit))\""
+
+ make "$_sbcl_bopt" "$_sbcl_iopt"
+ make destdir="${pkgdir}" install
+}
diff --git a/pcr/dswm/dswm.install b/pcr/dswm/dswm.install
new file mode 100644
index 000000000..0077d0018
--- /dev/null
+++ b/pcr/dswm/dswm.install
@@ -0,0 +1,21 @@
+infodir=usr/share/info
+filelist=(dswm.info)
+
+post_install() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info $infodir/$file.gz $infodir/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info --delete $infodir/$file.gz $infodir/dir 2> /dev/null
+ done
+}
+
diff --git a/pcr/emacs-bzr/PKGBUILD b/pcr/emacs-bzr/PKGBUILD
new file mode 100644
index 000000000..7383e3490
--- /dev/null
+++ b/pcr/emacs-bzr/PKGBUILD
@@ -0,0 +1,93 @@
+# Contributor: Neil Santos <nsantos16+aur@gmail.com>
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+# Compile against Gtk+ 2.x, instead of the default 3.x
+_opt_use_gtk2="n"
+# Emacs is leaking like a sieve on my box with the default values;
+# this should be the number of bytes Emacs should allocate for pure
+# storage (see Elisp manual). Default as of writing this is 1.62 megs
+# (not the final value; there are still calculations done on it).
+_opt_puresize="2000000"
+
+pkgname=emacs-bzr
+pkgver=110380
+pkgrel=1
+pkgdesc='The extensible, customizable, self-documenting real-time display editor from its official Bzr repository'
+arch=('i686' 'x86_64')
+url='http://www.gnu.org/software/emacs/'
+license=('GPL3')
+if [[ $_opt_use_gtk2 = "y" ]]; then
+ depends=('dbus-core' 'desktop-file-utils' 'libpng' 'libtiff' 'librsvg' 'giflib' 'gtk2' 'libxpm' 'libjpeg>=7' 'hicolor-icon-theme')
+else
+ depends=('dbus-core' 'desktop-file-utils' 'libpng' 'libtiff' 'librsvg' 'giflib' 'gtk3' 'libxpm' 'libjpeg>=7' 'hicolor-icon-theme')
+fi
+
+makedepends=('bzr' 'pkgconfig' 'texinfo')
+provides=("emacs=$pkgver")
+conflicts=('emacs' 'emacs-nox' 'emacs-otf' 'emacs-cvs' 'emacs-git')
+install=$pkgname.install
+
+_bzrtrunk='http://bzr.savannah.gnu.org/r/emacs/trunk'
+_bzrmod='emacs'
+
+build() {
+ cd $srcdir
+ msg "Connecting to Savannah..."
+
+ if [[ -d $_bzrmod/.bzr ]]; then
+ (cd $_bzrmod && bzr update -v && cd ..)
+ msg "Local checkout updated or server timeout"
+ else
+ bzr co --lightweight -v $_bzrtrunk $_bzrmod
+ msg "Checkout done or server timeout"
+ fi
+
+ cp -urT $_bzrmod/ ${_bzrmod}-build
+ cd ${_bzrmod}-build
+ msg "Adjusting BASE_PURESIZE to avoid possible leaks"
+ sed -i -e "s/\(define BASE_PURESIZE\s*(*\)[0-9]*/\1${_opt_puresize}/" src/puresize.h
+
+ msg "Bootstrapping Emacs Lisp files..."
+ make bootstrap
+
+ mandir=/usr/share/man
+ msg "Starting make..."
+ if [[ $_opt_use_gtk2 = "y" ]]; then
+ ./autogen.sh && ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --libexecdir=/usr/lib \
+ --mandir=${mandir} \
+ --without-sound \
+ --with-xft \
+ --with-x-toolkit=gtk2
+ else
+ ./autogen.sh && ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --libexecdir=/usr/lib \
+ --mandir=${mandir} \
+ --without-sound \
+ --with-xft \
+ --with-x-toolkit=gtk3
+ fi
+ make
+ make DESTDIR=${pkgdir} install
+
+ msg "Cleaning up..."
+ mv $pkgdir/usr/bin/{ctags,ctags.emacs}
+ mv $pkgdir/usr/bin/{etags,etags.emacs}
+ mv $pkgdir${mandir}/man1/{etags.1,etags.emacs.1}.gz
+ mv $pkgdir${mandir}/man1/{ctags.1,ctags.emacs.1}.gz
+
+ # This is mostly superfluous, and conflicts with texinfo
+ rm $pkgdir/usr/share/info/info.info.gz
+ rm $pkgdir/usr/share/info/dir
+
+ find $pkgdir/usr/share/emacs -type d -exec chmod 755 {} \;
+ find $pkgdir/usr/share/emacs -exec chown root.root {} \;
+ chmod 775 $pkgdir/var/games
+ chmod 775 $pkgdir/var/games/emacs
+ chmod 664 $pkgdir/var/games/emacs/*
+ chown -R root:50 $pkgdir/var/games
+}
diff --git a/pcr/emacs-bzr/emacs-bzr.install b/pcr/emacs-bzr/emacs-bzr.install
new file mode 100644
index 000000000..35d11bd56
--- /dev/null
+++ b/pcr/emacs-bzr/emacs-bzr.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 ert eshell
+eudc flymake forms gnus idlwave 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.info.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.info.gz ${INFO_DIR}/dir 2> /dev/null
+ done
+}
diff --git a/pcr/emacs-color-theme/PKGBUILD b/pcr/emacs-color-theme/PKGBUILD
new file mode 100644
index 000000000..53ad1bf24
--- /dev/null
+++ b/pcr/emacs-color-theme/PKGBUILD
@@ -0,0 +1,48 @@
+# $Id: PKGBUILD 59903 2011-12-02 11:18:13Z andrea $
+# Contributor: Stefan Husmann <stefan-husmann@t-online.de>
+# Contributor: Cesar Romero <cesar.romero@gmail.com>
+# Maintainer : Parabola GNU / Linux-libre <aurelien@cwb.io>
+
+pkgname=emacs-color-theme
+pkgver=6.6.0
+pkgrel=8
+arch=('any')
+pkgdesc="Emacs color themes"
+url="https://gna.org/projects/color-theme"
+license=('GPL2')
+depends=('emacs' 'xorg-fonts-100dpi')
+makedepends=('emacs')
+provides=('color-theme')
+replaces=('color-theme')
+install=$pkgname.install
+source=(http://download.savannah.gnu.org/releases/color-theme/color-theme-$pkgver.tar.gz
+ 'gnus-bug.diff'
+ 'fix-build.patch')
+md5sums=('a4de73c236a6af11ab378bfe18dabcca'
+ '8b7ee1c4c6f80606f22c3de448ec92e8'
+ '25b92ea246716689502ebe050322a60a')
+
+build() {
+ cd $srcdir/color-theme-$pkgver
+
+ patch -p1 -i $srcdir/gnus-bug.diff
+ patch -p0 -i $srcdir/fix-build.patch
+
+ make
+}
+
+package() {
+ cd $srcdir/color-theme-$pkgver
+ install -Dm644 color-theme.el \
+ $pkgdir/usr/share/emacs/site-lisp/color-theme.el
+ install -Dm644 themes/color-theme-library.el \
+ $pkgdir/usr/share/emacs/site-lisp/themes/color-theme-library.el
+ install -Dm644 themes/color-theme-example.el \
+ $pkgdir/usr/share/emacs/site-lisp/themes/color-theme-example.el
+ install -Dm644 color-theme.elc \
+ $pkgdir/usr/share/emacs/site-lisp/color-theme.elc
+ install -Dm644 themes/color-theme-library.elc \
+ $pkgdir/usr/share/emacs/site-lisp/themes/color-theme-library.elc
+ install -Dm644 themes/color-theme-example.elc \
+ $pkgdir/usr/share/emacs/site-lisp/themes/color-theme-example.elc
+}
diff --git a/pcr/emacs-color-theme/emacs-color-theme.install b/pcr/emacs-color-theme/emacs-color-theme.install
new file mode 100644
index 000000000..b1de09f76
--- /dev/null
+++ b/pcr/emacs-color-theme/emacs-color-theme.install
@@ -0,0 +1,9 @@
+# arg 1: the new package version
+post_install() {
+echo "# To start using color-theme add this to your .emacs:"
+echo "# (require 'color-theme)"
+}
+
+post_upgrade() {
+ post_install
+} \ No newline at end of file
diff --git a/pcr/emacs-color-theme/fix-build.patch b/pcr/emacs-color-theme/fix-build.patch
new file mode 100644
index 000000000..cadb1ae05
--- /dev/null
+++ b/pcr/emacs-color-theme/fix-build.patch
@@ -0,0 +1,19 @@
+--- Makefile.orig 2009-05-15 18:22:49.000000000 +0200
++++ Makefile 2009-05-16 08:59:36.000000000 +0200
+@@ -15,6 +15,7 @@
+ TARGET = $(patsubst %.el,%.elc,$(SPECIAL) $(SOURCE))
+ MANUAL = color-theme
+ MISC = AUTHORS COPYING ChangeLog Makefile.defs Makefile $(AUTOLOADFILE).in
++LOADPATH = "$(shell pwd)" "$(shell pwd)/themes"
+ #AUTHORS CREDITS HISTORY NEWS README Makefile ChangeLog \
+ #ChangeLog.2005 ChangeLog.2004 ChangeLog.2003 ChangeLog.2002 \
+ #ChangeLog.2001 servers.pl color-theme-auto.in color-theme.texi
+@@ -47,7 +48,7 @@
+
+ %.elc: %.el
+ @$(EMACS) $(OPTIONCOMPILE) \
+- --eval '(setq load-path (cons "." load-path))' \
++ --eval '(setq load-path (append load-path (list $(LOADPATH))))' \
+ -f batch-byte-compile $<
+
+ %.info: %.texi
diff --git a/pcr/emacs-color-theme/gnus-bug.diff b/pcr/emacs-color-theme/gnus-bug.diff
new file mode 100644
index 000000000..9d227df56
--- /dev/null
+++ b/pcr/emacs-color-theme/gnus-bug.diff
@@ -0,0 +1,28 @@
+diff -Naur color-theme-6.6.0.orig/color-theme.el color-theme-6.6.0.new/color-theme.el
+--- color-theme-6.6.0.orig/color-theme.el 2011-11-18 01:17:29.000000000 +0100
++++ color-theme-6.6.0.new/color-theme.el 2011-11-18 01:24:07.000000000 +0100
+@@ -73,9 +73,10 @@
+ "Non-nil if running XEmacs.")
+
+ ;; Add this since it appears to miss in emacs-2x
+-(or (fboundp 'replace-in-string)
+- (defun replace-in-string (target old new)
+- (replace-regexp-in-string old new target)))
++(if (fboundp 'replace-in-string)
++ (defalias 'color-theme-replace-in-string 'replace-in-string)
++ (defsubst color-theme-replace-in-string (target old new &optional literal)
++ (replace-regexp-in-string old new target nil literal)))
+
+ ;; face-attr-construct has a problem in Emacs 20.7 and older when
+ ;; dealing with inverse-video faces. Here is a short test to check
+@@ -1626,8 +1627,8 @@
+ (add-to-list 'color-themes
+ (list ',n
+ (upcase-initials
+- (replace-in-string
+- (replace-in-string
++ (color-theme-replace-in-string
++ (color-theme-replace-in-string
+ (symbol-name ',n) "^color-theme-" "") "-" " "))
+ ,author))
+ (defun ,n ()
diff --git a/pcr/emacs-elib/PKGBUILD b/pcr/emacs-elib/PKGBUILD
new file mode 100644
index 000000000..22946859e
--- /dev/null
+++ b/pcr/emacs-elib/PKGBUILD
@@ -0,0 +1,51 @@
+# PKGBUILD for Emacs Lisp Library (elib)
+# Contributor: J. Bromley <jbromley@gmail.com>
+# $Id: PKGBUILD,v e6d455730f95 2009/12/03 05:38:28 jbromley $
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname=emacs-elib
+_pkgname=elib
+pkgver=1.0
+pkgrel=3
+pkgdesc="The Emacs Lisp library"
+arch=('i686' 'x86_64')
+url="http://jdee.sourceforge.net/"
+license="GPL"
+depends=('emacs')
+makedepends=('texinfo' 'gzip')
+conflicts=()
+replaces=()
+backup=()
+install="$pkgname.install"
+source=(http://downloads.sourceforge.net/project/jdee/jdee/Dependencies/elib.tar.gz)
+md5sums=('4feb380f2e3b12eb5500dfe6714e349d')
+
+build() {
+mv $startdir/src/pub/comp/os/unix/gnu/elib/$_pkgname-$pkgver.tar.gz $startdir/src
+cd $startdir/src/
+tar -xzf $_pkgname-$pkgver.tar.gz
+cd $startdir/src/$_pkgname-$pkgver
+
+# Fix up paths and old --infodir flag.
+sed -i 's!/usr/local!/usr!' Makefile
+sed -i 's!/info!/share/info!' Makefile
+sed -i 's!--infodir!--info-dir!g' Makefile
+
+# Patch to get rid of deprecated code.
+patch -p1 < $startdir/elib-deprecation.patch
+
+# Create directories for installation
+mkdir -p $startdir/pkg/usr/share/info
+mkdir -p $startdir/pkg/usr/share/emacs/site-lisp
+make || return 1
+
+# Install the compile package and gzip info file.
+make prefix=$startdir/pkg/usr install
+find $startdir/pkg -name dir -exec rm '{}' \;
+mv $startdir/pkg/usr/share/info/elib.info $startdir/pkg/usr/share/info/elib
+gzip $startdir/pkg/usr/share/info/elib
+}
+
+# Local Variables:
+# mode: shell-script
+# End:
diff --git a/pcr/emacs-elib/elib-deprecation.patch b/pcr/emacs-elib/elib-deprecation.patch
new file mode 100644
index 000000000..ce8aedb6f
--- /dev/null
+++ b/pcr/emacs-elib/elib-deprecation.patch
@@ -0,0 +1,461 @@
+diff -ub elib-1.0.orig/avltree.el elib-1.0/avltree.el
+--- elib-1.0.orig/avltree.el 1995-12-10 16:50:53.000000000 -0800
++++ elib-1.0/avltree.el 2008-06-22 15:31:48.000000000 -0700
+@@ -69,19 +69,19 @@
+ (defmacro elib-avl-node-create (left right data balance)
+
+ ;; Create and return an avl-tree node.
+- (` (vector (, left) (, right) (, data) (, balance))))
++ `(vector ,left ,right ,data ,balance))
+
+
+ (defmacro elib-avl-node-balance (node)
+
+ ;; Return the balance field of a node.
+- (` (aref (, node) 3)))
++ `(aref ,node 3))
+
+
+ (defmacro elib-avl-node-set-balance (node newbal)
+
+ ;; Set the balance field of a node.
+- (` (aset (, node) 3 (, newbal))))
++ `(aset ,node 3 ,newbal))
+
+
+
+@@ -96,20 +96,20 @@
+ (defmacro elib-avl-root (tree)
+
+ ;; Return the root node for an avl-tree. INTERNAL USE ONLY.
+- (` (elib-node-left (car (cdr (, tree))))))
++ `(elib-node-left (car (cdr ,tree))))
+
+
+ (defmacro elib-avl-dummyroot (tree)
+
+ ;; Return the dummy node of an avl-tree. INTERNAL USE ONLY.
+
+- (` (car (cdr (, tree)))))
++ `(car (cdr ,tree)))
+
+
+ (defmacro elib-avl-cmpfun (tree)
+
+ ;; Return the compare function of AVL tree TREE. INTERNAL USE ONLY.
+- (` (cdr (cdr (, tree)))))
++ `(cdr (cdr ,tree)))
+
+
+ ;; ----------------------------------------------------------------
+@@ -412,20 +412,20 @@
+ ;; INTERNAL USE ONLY.
+
+ (let ((node root)
+- (stack (elib-stack-create))
++ (stack (stack-create))
+ (go-left t))
+- (elib-stack-push stack nil)
++ (stack-push stack nil)
+ (while node
+ (if (and go-left
+ (elib-node-left node))
+ (progn ; Do the left subtree first.
+- (elib-stack-push stack node)
++ (stack-push stack node)
+ (setq node (elib-node-left node)))
+ (funcall map-function node) ; Apply the function...
+ (if (elib-node-right node) ; and do the right subtree.
+ (setq node (elib-node-right node)
+ go-left t)
+- (setq node (elib-stack-pop stack)
++ (setq node (stack-pop stack)
+ go-left nil))))))
+
+
+diff -ub elib-1.0.orig/bintree.el elib-1.0/bintree.el
+--- elib-1.0.orig/bintree.el 1995-12-10 16:50:53.000000000 -0800
++++ elib-1.0/bintree.el 2008-06-22 15:28:45.000000000 -0700
+@@ -64,19 +64,19 @@
+ (defmacro elib-bintree-root (tree)
+
+ ;; Return the root node for a binary tree. INTERNAL USE ONLY.
+- (` (elib-node-left (car (cdr (, tree))))))
++ `(elib-node-left (car (cdr ,tree))))
+
+
+ (defmacro elib-bintree-dummyroot (tree)
+
+ ;; Return the dummy node of a binary tree. INTERNAL USE ONLY.
+- (` (car (cdr (, tree)))))
++ `(car (cdr ,tree)))
+
+
+ (defmacro elib-bintree-cmpfun (tree)
+
+ ;; Return the compare function of binary tree TREE. INTERNAL USE ONLY."
+- (` (cdr (cdr (, tree)))))
++ `(cdr (cdr ,tree)))
+
+
+
+@@ -90,20 +90,20 @@
+ ;; INTERNAL USE ONLY."
+
+ (let ((node root)
+- (stack (elib-stack-create))
++ (stack (stack-create))
+ (go-left t))
+- (elib-stack-push stack nil)
++ (stack-push stack nil)
+ (while node
+ (if (and go-left
+ (elib-node-left node))
+ (progn ; Do the left subtree first.
+- (elib-stack-push stack node)
++ (stack-push stack node)
+ (setq node (elib-node-left node)))
+ (funcall map-function node) ; Apply the function...
+ (if (elib-node-right node) ; and do the right subtree.
+ (setq node (elib-node-right node)
+ go-left t)
+- (setq node (elib-stack-pop stack)
++ (setq node (stack-pop stack)
+ go-left nil))))))
+
+
+diff -ub elib-1.0.orig/cookie.el elib-1.0/cookie.el
+--- elib-1.0.orig/cookie.el 1995-12-10 16:50:54.000000000 -0800
++++ elib-1.0/cookie.el 2008-06-22 15:38:55.000000000 -0700
+@@ -139,13 +139,13 @@
+
+ (let ((old-buffer (make-symbol "old-buffer"))
+ (hnd (make-symbol "collection")))
+- (` (let* (((, old-buffer) (current-buffer))
+- ((, hnd) (, collection))
+- (dll (elib-collection->dll (, hnd))))
+- (set-buffer (elib-collection->buffer (, hnd)))
++ `(let* ((,old-buffer (current-buffer))
++ (,hnd ,collection)
++ (dll (elib-collection->dll ,hnd)))
++ (set-buffer (elib-collection->buffer ,hnd))
+ (unwind-protect
+- (progn (,@ forms))
+- (set-buffer (, old-buffer)))))))
++ (progn ,@forms)
++ (set-buffer ,old-buffer)))))
+
+
+ (put 'elib-set-buffer-bind-dll-let* 'lisp-indent-hook 2)
+@@ -160,14 +160,14 @@
+
+ (let ((old-buffer (make-symbol "old-buffer"))
+ (hnd (make-symbol "collection")))
+- (` (let* (((, old-buffer) (current-buffer))
+- ((, hnd) (, collection))
+- (dll (elib-collection->dll (, hnd)))
+- (,@ varlist))
+- (set-buffer (elib-collection->buffer (, hnd)))
++ `(let* ((,old-buffer (current-buffer))
++ (,hnd ,collection)
++ (dll (elib-collection->dll ,hnd))
++ ,@varlist)
++ (set-buffer (elib-collection->buffer ,hnd))
+ (unwind-protect
+- (progn (,@ forms))
+- (set-buffer (, old-buffer)))))))
++ (progn ,@forms)
++ (set-buffer ,old-buffer)))))
+
+
+ (defmacro elib-filter-hf (collection tin)
+@@ -179,12 +179,12 @@
+
+ (let ((tempvar (make-symbol "tin"))
+ (tmpcoll (make-symbol "tmpcollection")))
+- (` (let (((, tempvar) (, tin))
+- ((, tmpcoll) (, collection)))
+- (if (or (eq (, tempvar) (elib-collection->header (, tmpcoll)))
+- (eq (, tempvar) (elib-collection->footer (, tmpcoll))))
++ `(let ((,tempvar ,tin)
++ (,tmpcoll ,collection))
++ (if (or (eq ,tempvar (elib-collection->header ,tmpcoll))
++ (eq ,tempvar (elib-collection->footer ,tmpcoll)))
+ nil
+- (, tempvar))))))
++ ,tempvar))))
+
+
+
+diff -ub elib-1.0.orig/dll-debug.el elib-1.0/dll-debug.el
+--- elib-1.0.orig/dll-debug.el 1995-12-10 16:50:54.000000000 -0800
++++ elib-1.0/dll-debug.el 2008-06-22 15:25:14.000000000 -0700
+@@ -74,9 +74,9 @@
+ (defmacro dll-insert-after (node element)
+ (let ((node-v (make-symbol "node"))
+ (element-v (make-symbol "element")))
+- (` (let (((, node-v) (, node))
+- ((, element-v) (, element)))
+- (setcdr (, node-v) (cons (, element-v) (cdr (, node-v))))))))
++ `(let ((,node-v ,node)
++ (,element-v ,element))
++ (setcdr ,node-v (cons ,element-v (cdr ,node-v))))))
+
+ ;;; ===================================================================
+ ;;; The public functions which operate on doubly linked lists.
+@@ -86,7 +86,7 @@
+ "Get the element of a NODE in a doubly linked list DLL.
+ Args: DLL NODE."
+
+- (` (car (, node))))
++ `(car ,node))
+
+
+ (defun dll-create ()
+diff -ub elib-1.0.orig/dll.el elib-1.0/dll.el
+--- elib-1.0.orig/dll.el 1995-12-10 16:50:54.000000000 -0800
++++ elib-1.0/dll.el 2008-06-22 15:22:58.000000000 -0700
+@@ -89,7 +89,7 @@
+ "Get the element of a NODE in a doubly linked list DLL.
+ Args: DLL NODE."
+
+- (` (elib-node-data (, node))))
++ `(elib-node-data ,node))
+
+
+ (defun dll-create ()
+diff -ub elib-1.0.orig/elib-node.el elib-1.0/elib-node.el
+--- elib-1.0.orig/elib-node.el 1995-12-10 16:50:53.000000000 -0800
++++ elib-1.0/elib-node.el 2008-06-22 15:21:46.000000000 -0700
+@@ -49,42 +49,42 @@
+ (defmacro elib-node-create (left right data)
+
+ ;; Create a tree node from LEFT, RIGHT and DATA.
+- (` (vector (, left) (, right) (, data))))
++ `(vector ,left ,right ,data))
+
+
+ (defmacro elib-node-left (node)
+
+ ;; Return the left pointer of NODE.
+- (` (aref (, node) 0)))
++ `(aref ,node 0))
+
+
+ (defmacro elib-node-right (node)
+
+ ;; Return the right pointer of NODE.
+- (` (aref (, node) 1)))
++ `(aref ,node 1))
+
+
+ (defmacro elib-node-data (node)
+
+ ;; Return the data of NODE.
+- (` (aref (, node) 2)))
++ `(aref ,node 2))
+
+
+ (defmacro elib-node-set-left (node newleft)
+
+ ;; Set the left pointer of NODE to NEWLEFT.
+- (` (aset (, node) 0 (, newleft))))
++ `(aset ,node 0 ,newleft))
+
+
+ (defmacro elib-node-set-right (node newright)
+
+ ;; Set the right pointer of NODE to NEWRIGHT.
+- (` (aset (, node) 1 (, newright))))
++ `(aset ,node 1 ,newright))
+
+
+ (defmacro elib-node-set-data (node newdata)
+ ;; Set the data of NODE to NEWDATA.
+- (` (aset (, node) 2 (, newdata))))
++ `(aset ,node 2 ,newdata))
+
+
+
+@@ -94,7 +94,7 @@
+ ;;
+ ;; NODE is the node, and BRANCH is the branch.
+ ;; 0 for left pointer, 1 for right pointer and 2 for the data."
+- (` (aref (, node) (, branch))))
++ `(aref ,node ,branch))
+
+
+ (defmacro elib-node-set-branch (node branch newval)
+@@ -104,6 +104,6 @@
+ ;; NODE is the node, and BRANCH is the branch.
+ ;; 0 for left pointer, 1 for the right pointer and 2 for the data.
+ ;; NEWVAL is new value of the branch."
+- (` (aset (, node) (, branch) (, newval))))
++ `(aset ,node ,branch ,newval))
+
+ ;;; elib-node.el ends here.
+Only in elib-1.0: elib.info
+diff -ub elib-1.0.orig/queue-m.el elib-1.0/queue-m.el
+--- elib-1.0.orig/queue-m.el 1995-12-10 16:50:53.000000000 -0800
++++ elib-1.0/queue-m.el 2008-06-22 15:13:41.000000000 -0700
+@@ -54,12 +54,12 @@
+
+ (defmacro queue-create ()
+ "Create an empty fifo queue."
+- (` (cons 'QUEUE (cons nil nil))))
++ `(cons 'QUEUE (cons nil nil)))
+
+
+ (defmacro queue-p (queue)
+ "Return t if QUEUE is a queue, otherwise return nil."
+- (` (eq (car-safe (, queue)) 'QUEUE)))
++ `(eq (car-safe ,queue) 'QUEUE))
+
+
+ (defun queue-enqueue (queue element)
+@@ -91,13 +91,13 @@
+
+ (defmacro queue-empty (queue)
+ "Return t if QUEUE is empty, otherwise return nil."
+- (` (null (car (cdr (, queue))))))
++ `(null (car (cdr ,queue))))
+
+
+ (defmacro queue-first (queue)
+ "Return the first element of QUEUE or nil if it is empty.
+ The element is not removed."
+- (` (car-safe (car (cdr (, queue))))))
++ `(car-safe (car (cdr ,queue))))
+
+
+ (defmacro queue-nth (queue n)
+@@ -106,18 +106,18 @@
+ If the length of the queue is less than N, return nil.
+
+ The oldest element (the first one) has number 0."
+- (` (nth (, n) (car (cdr (, queue))))))
++ `(nth ,n (car (cdr ,queue))))
+
+
+ (defmacro queue-last (queue)
+ "Return the last element of QUEUE or nil if it is empty."
+- (` (car-safe (cdr (cdr (, queue))))))
++ `(car-safe (cdr (cdr ,queue))))
+
+
+ (defmacro queue-all (queue)
+ "Return a list of all elements of QUEUE or nil if it is empty.
+ The oldest element in the queue is the first in the list."
+- (` (car (cdr (, queue)))))
++ `(car (cdr ,queue)))
+
+
+ (defun queue-copy (queue)
+@@ -131,11 +131,11 @@
+
+ (defmacro queue-length (queue)
+ "Return the number of elements in QUEUE."
+- (` (length (car (cdr (, queue))))))
++ `(length (car (cdr ,queue))))
+
+
+ (defmacro queue-clear (queue)
+ "Remove all elements from QUEUE."
+- (` (setcdr (, queue) (cons nil nil))))
++ `(setcdr ,queue (cons nil nil)))
+
+ ;;; queue-m.el ends here
+diff -ub elib-1.0.orig/read.el elib-1.0/read.el
+--- elib-1.0.orig/read.el 1995-12-10 16:50:54.000000000 -0800
++++ elib-1.0/read.el 2008-06-22 15:40:38.000000000 -0700
+@@ -61,7 +61,7 @@
+ numdefault)
+ (setq number numdefault))
+ ((string-match "\\`[0-9]+\\'" numstr)
+- (setq number (string-to-int numstr)))
++ (setq number (string-to-number numstr)))
+ (t (beep))))
+ number))
+
+diff -ub elib-1.0.orig/stack-m.el elib-1.0/stack-m.el
+--- elib-1.0.orig/stack-m.el 1995-12-10 16:50:52.000000000 -0800
++++ elib-1.0/stack-m.el 2008-06-22 15:10:48.000000000 -0700
+@@ -51,36 +51,36 @@
+
+ (defmacro stack-create ()
+ "Create an empty lifo stack."
+- (` (cons 'STACK nil)))
++ `(cons 'STACK nil))
+
+
+ (defmacro stack-p (stack)
+ "Return t if STACK is a stack, otherwise return nil."
+- (` (eq (car-safe (, stack)) 'STACK)))
++ `(eq (car-safe ,stack) 'STACK))
+
+
+ (defmacro stack-push (stack element)
+ "Push an element onto the stack.
+ Args: STACK ELEMENT"
+- (` (setcdr (, stack) (cons (, element) (cdr (, stack))))))
++ `(setcdr ,stack (cons ,element (cdr ,stack))))
+
+
+ (defmacro stack-pop (stack)
+ "Remove the topmost element from STACK and return it.
+ If the stack is empty, return nil."
+- (` (prog1
+- (car-safe (cdr (, stack)))
+- (setcdr (, stack) (cdr-safe (cdr (, stack)))))))
++ `(prog1
++ (car-safe (cdr ,stack))
++ (setcdr ,stack (cdr-safe (cdr ,stack)))))
+
+
+ (defmacro stack-empty (stack)
+ "Return t if STACK is empty, otherwise return nil."
+- (` (null (cdr (, stack)))))
++ `(null (cdr ,stack)))
+
+
+ (defmacro stack-top (stack)
+ "Return the topmost element of STACK or nil if it is empty."
+- (` (car-safe (cdr (, stack)))))
++ `(car-safe (cdr ,stack)))
+
+
+ (defmacro stack-nth (stack n)
+@@ -89,28 +89,28 @@
+ If the length of the stack is less than N, return nil.
+
+ The top stack element has number 0."
+- (` (nth (, n) (cdr (, stack)))))
++ `(nth ,n (cdr ,stack)))
+
+
+ (defmacro stack-all (stack)
+ "Return a list of all entries in STACK.
+ The element last pushed is first in the list."
+- (` (cdr (, stack))))
++ `(cdr ,stack))
+
+
+ (defmacro stack-copy (stack)
+ "Return a copy of STACK.
+ All entries in STACK are also copied."
+- (` (cons 'STACK (copy-sequence (cdr (, stack))))))
++ `(cons 'STACK (copy-sequence (cdr ,stack))))
+
+
+ (defmacro stack-length (stack)
+ "Return the number of elements on STACK."
+- (` (length (cdr (, stack)))))
++ `(length (cdr ,stack)))
+
+
+ (defmacro stack-clear (stack)
+ "Remove all elements from STACK."
+- (` (setcdr (, stack) nil)))
++ `(setcdr ,stack nil))
+
+ ;;; stack-m.el ends here
diff --git a/pcr/emacs-elib/emacs-elib.install b/pcr/emacs-elib/emacs-elib.install
new file mode 100644
index 000000000..53a01f9f6
--- /dev/null
+++ b/pcr/emacs-elib/emacs-elib.install
@@ -0,0 +1,34 @@
+# emacs-elib.install
+# Install info file and show configuration info.
+# $Id: emacs-elib.install,v e6d455730f95 2008/06/23 05:55:28 jbromley $
+post_install () {
+if sh -c 'install-info --version' > /dev/nul 2>&1; then
+ if [ -f /usr/share/info/elib.gz ]; then
+ cd /usr/share/info
+ install-info --info-dir=/usr/share/info --section=Emacs --name=Elib \
+ --description=' The Emacs Lisp Library' elib.gz
+ fi
+fi
+
+echo ""
+echo "==> To use elib, add the following Lisp to your ~/.emacs file:"
+echo "==> "
+echo "==> (setq load-path (append (list \"/usr/share/emacs/site-lisp/elib\")"
+echo "==> load-path))"
+echo "==> "
+echo "==> You do not need this if you have a subdirs.el in your Emacs site-lisp"
+echo "==> directory."
+echo ""
+}
+
+post_upgrade () {
+ post_install $1
+}
+
+op=$1
+shift
+$op $*
+
+# Local Variables:
+# mode: shell-script
+# End:
diff --git a/pcr/emacs-jabber/PKGBUILD b/pcr/emacs-jabber/PKGBUILD
new file mode 100644
index 000000000..0b2170261
--- /dev/null
+++ b/pcr/emacs-jabber/PKGBUILD
@@ -0,0 +1,26 @@
+# Contributor: Stefan Husmann <stefan-husmann@t-online.de>
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname=emacs-jabber
+pkgver=0.8.91
+pkgrel=2
+pkgdesc="Jabber.el: a minimal jabber client for emacs"
+url=http://emacs-jabber.sourceforge.net
+arch=('any')
+license=('GPL')
+depends=('emacs' 'gnutls' 'gconf')
+install=jabber.el.install
+source=(http://downloads.sourceforge.net/sourceforge/$pkgname/$pkgname-$pkgver.tar.lzma)
+md5sums=('739506fbc498386989590cd7733dd47a')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --libexecdir=/usr/lib/emacs-jabber \
+ --with-gconf-schema-file-dir=/usr/share/gconf/schemas
+ make
+}
+package() {
+ cd $srcdir/$pkgname-$pkgver
+ make GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 DESTDIR=$pkgdir install
+}
diff --git a/pcr/emacs-jabber/jabber.el.install b/pcr/emacs-jabber/jabber.el.install
new file mode 100644
index 000000000..556888995
--- /dev/null
+++ b/pcr/emacs-jabber/jabber.el.install
@@ -0,0 +1,27 @@
+infodir=/usr/share/info
+filelist=(jabber.info.gz)
+pkgname=emacs-jabber
+
+pre_upgrade() {
+ /usr/sbin/gconfpkg --uninstall $pkgname
+}
+
+post_install() {
+ /usr/sbin/gconfpkg --install $pkgname
+ for file in ${filelist[@]}; do
+ install-info $infodir/$file $infodir/dir 2> /dev/null
+ done
+ echo "Please add the following line to your .emacs."
+ echo "(require 'jabber)"
+}
+
+post_upgrade() {
+ post_install
+}
+
+pre_remove() {
+ /usr/sbin/gconfpkg --uninstall $pkgname
+ for file in ${filelist[@]}; do
+ install-info --delete $infodir/$file $infodir/dir 2> /dev/null
+ done
+}
diff --git a/pcr/emacs-js2-mode/PKGBUILD b/pcr/emacs-js2-mode/PKGBUILD
new file mode 100644
index 000000000..7a73d3f40
--- /dev/null
+++ b/pcr/emacs-js2-mode/PKGBUILD
@@ -0,0 +1,20 @@
+# Contributor: Hauke Wesselmann <hauke@h-dawg.de>
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname=emacs-js2-mode
+pkgver=20090723b
+pkgrel=1
+pkgdesc="An improved JavaScript mode for GNU Emacs"
+arch=('i686' 'x86_64')
+url="http://code.google.com/p/js2-mode/"
+license=('GPL2')
+depends=('emacs')
+source=(http://js2-mode.googlecode.com/files/js2-$pkgver.el)
+md5sums=('9109dca8b624edb8358fb9938a03d785')
+
+build() {
+ cd $startdir/src/
+ emacs -batch -q -f batch-byte-compile js2-$pkgver.el
+ install -Dm644 $srcdir/js2-$pkgver.el $pkgdir/usr/share/emacs/site-lisp/js2.el
+ install -Dm644 $srcdir/js2-$pkgver.elc $pkgdir/usr/share/emacs/site-lisp/js2.elc
+}
diff --git a/pcr/emacs-magit-git/PKGBUILD b/pcr/emacs-magit-git/PKGBUILD
new file mode 100644
index 000000000..734b13072
--- /dev/null
+++ b/pcr/emacs-magit-git/PKGBUILD
@@ -0,0 +1,45 @@
+# Contributor: Stefan Husmann <stefan.husmann@t-online.de>
+# Contributor: Peter Simons <simons@cryp.to>
+# Contributor: Just Lest <just.lest@gmail.com>
+# Contributor: Daniel White <daniel@whitehouse.id.au>
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname=emacs-magit-git
+pkgver=20121104
+pkgrel=1
+pkgdesc="It's Magit! A Emacs mode for Git."
+arch=("any")
+url="http://github.com/magit/magit"
+license=('GPL3')
+depends=('emacs' 'git')
+makedepends=('automake' 'autoconf')
+provides=('emacs-magit')
+conflicts=('emacs-magit')
+install="${pkgname}.install"
+
+_gitname="master"
+_gitroot="git://github.com/magit/magit.git"
+
+build()
+{
+ cd "${srcdir}"
+ if [ -d magit ] ; then
+ cd magit
+ git pull origin
+ else
+ git clone --depth=1 "${_gitroot}"
+ fi
+ [ -d "${srcdir}/build" ] && rm -rf "${srcdir}/build"
+ cp -r "${srcdir}/magit" "${srcdir}/build"
+ cd "${srcdir}/build"
+ make
+}
+
+package()
+{
+ cd "${srcdir}/build"
+ mkdir -p "${pkgdir}/usr/bin" # work around a bug in the makefile
+ make PREFIX="/usr" DESTDIR="${pkgdir}" install install_contrib
+ rm "${pkgdir}/etc/emacs/site-start.d/50magit.el" "${pkgdir}/usr/share/info/dir"
+ rmdir "${pkgdir}/etc/emacs/site-start.d" "${pkgdir}/etc/emacs" "${pkgdir}/etc"
+}
diff --git a/pcr/emacs-magit-git/emacs-magit-git.install b/pcr/emacs-magit-git/emacs-magit-git.install
new file mode 100644
index 000000000..a9904739e
--- /dev/null
+++ b/pcr/emacs-magit-git/emacs-magit-git.install
@@ -0,0 +1,30 @@
+infodir=/usr/share/info
+filelist=(magit.info)
+
+post_install() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ install-info $infodir/$file $infodir/dir 2> /dev/null
+ done
+
+ cat << EOF
+==> In order to use magit, add the following lines to your ~/.emacs file:
+
+(autoload 'magit-status "magit" nil t)
+EOF
+}
+
+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
+}
+
+op=$1
+shift
+$op $*
diff --git a/pcr/emacs-org-mode-ravel-git/PKGBUILD b/pcr/emacs-org-mode-ravel-git/PKGBUILD
new file mode 100644
index 000000000..66baa08b5
--- /dev/null
+++ b/pcr/emacs-org-mode-ravel-git/PKGBUILD
@@ -0,0 +1,52 @@
+# contributor: zhuqin <zhuqin83@gmail.com>
+# Maintainer: Stefan Husmann <stefan-husmann@t-online.de>
+# Maintainer : Parabola GNU / Linux-libre <aurelien@cwb.io>
+
+pkgname=emacs-org-mode-ravel-git
+pkgver=20120812
+pkgrel=1
+pkgdesc="R backends for Orgmode by Chas Berry"
+arch=('any')
+url="https://github.com/chasberry/orgmode-accessories"
+depends=(emacs emacs-org-mode)
+makedepends=('git')
+license=('GPL')
+source=()
+
+
+
+_gitroot="https://github.com/chasberry/orgmode-accessories.git"
+_gitname="master"
+
+build() {
+ cd $srcdir
+ msg "Connecting to the GIT server...."
+
+ if [[ -d $srcdir/$_gitname ]] ; then
+ cd $_gitname
+ git pull origin
+ msg "The local files are updated."
+ else
+ git clone $_gitroot $_gitname
+ fi
+
+ msg "GIT checkout done"
+ msg "Starting make..."
+
+ [[ -d $srcdir/$_gitname-build ]] && rm -rf $srcdir/$_gitname-build
+ git clone $srcdir/$_gitname $srcdir/$_gitname-build
+
+ cd $srcdir/$_gitname-build
+
+ emacs --batch --visit scratch --eval "(progn (require 'org) (require 'org-export) (require 'org-e-latex) (require 'org-e-html) (org-babel-load-file \"ravel.org\"))"
+}
+
+package() {
+ cd $srcdir/$_gitname-build
+
+ install -Dm 644 e-ravel.el $pkgdir/usr/share/emacs/site-lisp/e-ravel.el
+
+ mkdir -p $pkgdir/usr/share/doc/e-ravel/
+ cp *.org $pkgdir/usr/share/doc/e-ravel/
+}
+md5sums=()
diff --git a/pcr/emacs-org-mode/PKGBUILD b/pcr/emacs-org-mode/PKGBUILD
new file mode 100644
index 000000000..4b36a3e3b
--- /dev/null
+++ b/pcr/emacs-org-mode/PKGBUILD
@@ -0,0 +1,39 @@
+# Contributor: Jiyunatori <tori_LEAVETHISOUT_@0xc29.net>
+# Contributor: mdev
+# adopted by domanov <domanov_LEAVETHISOUT_@gmail.com>
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname=emacs-org-mode
+_srcname=org
+pkgver=7.9.2
+pkgrel=1
+pkgdesc="Emacs Org Mode"
+arch=('any')
+url="http://orgmode.org/"
+depends=(emacs)
+license=('GPL')
+install=emacs-org-mode.install
+source=(http://orgmode.org/$_srcname-$pkgver.tar.gz)
+md5sums=('e79441ff81c176e70230937e09f6042c')
+
+build() {
+ cd "${srcdir}/${_srcname}-${pkgver}"
+ make compile || return 1
+}
+
+package() {
+ cd "${srcdir}/${_srcname}-${pkgver}"
+ make prefix="${pkgdir}/usr/share" install || return 1
+
+ ## by default now we install also the contrib directory
+ install -d -m755 $pkgdir/usr/share/emacs/site-lisp/org_contrib || return 1
+ cp -r contrib/* $pkgdir/usr/share/emacs/site-lisp/org_contrib || return 1
+
+ ##! proper install of info files (thanks mdev)
+ ##! replace "orgmode" with "org" in the following lines if you want
+ ##! to replace emacs own org's info files. You also need to change the .install.
+ install -D -m644 doc/org $pkgdir/usr/share/info/orgmode || return 1
+ gzip -9 $pkgdir/usr/share/info/orgmode || return 1
+ rm $pkgdir/usr/share/info/org || return 1
+}
+md5sums=('e79441ff81c176e70230937e09f6042c')
diff --git a/pcr/emacs-org-mode/emacs-org-mode.install b/pcr/emacs-org-mode/emacs-org-mode.install
new file mode 100644
index 000000000..e8bd91185
--- /dev/null
+++ b/pcr/emacs-org-mode/emacs-org-mode.install
@@ -0,0 +1,62 @@
+## NOTE: the line commented with '##!' are needed
+## to REPLACE the info file shipped by emacs (currently at version 6.21)
+## with the info docs from this distribution (thanks mdev)
+
+# arg 1: the new package version
+# arg 2: the old package version
+
+INFODIR=/usr/share/info
+
+pre_install() {
+##! for file in {org,org-?.gz} ; do
+##! if [ -e $INFODIR/$file ] ; then
+##! echo "Removing $INFODIR/$file"
+##! install-info --delete $INFODIR/$file $INFODIR/dir 2> /dev/null
+##! rm -f $INFODIR/$file
+##! fi
+##! done
+ cat << EOM
+To enable this version of org-mode instead of the one shipped with emacs,
+add the line:
+ (require 'org-install)
+to your .emacs file.
+
+NOTE: info documentation for emacs-org-mode goes now as 'orgmode' in /usr/share/info,
+ It does NOT replace the 'org' info files shipped with emacs:
+ $ info orgmode ## this version
+ $ info org ## emacs' org version (currently 6.21)
+EOM
+}
+
+
+post_install() {
+##! mv $INFODIR/orgmode.gz $INFODIR/org.gz
+##! install-info $INFODIR/org.gz $INFODIR/dir 2> /dev/null
+##! and comment out the following line:
+ install-info --name='orgmode' --description='Org Mode provided by emacs-org-mode (AUR)' $INFODIR/orgmode.gz $INFODIR/dir 2> /dev/null
+}
+
+pre_upgrade() {
+ /bin/true
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+
+pre_remove() {
+ install-info --delete $INFODIR/orgmode.gz $INFODIR/dir 2> /dev/null
+##! comment out the line above and uncomment the following:
+##! install-info --delete $INFODIR/org.gz $INFODIR/dir 2> /dev/null
+##! rm $INFODIR/org.gz 2> /dev/null
+}
+
+# arg 1: the old package version
+post_remove() {
+ /bin/true
+}
+
+op=$1
+shift
+$op $*
diff --git a/pcr/emacs-tuareg-mode/PKGBUILD b/pcr/emacs-tuareg-mode/PKGBUILD
new file mode 100644
index 000000000..eba2834e0
--- /dev/null
+++ b/pcr/emacs-tuareg-mode/PKGBUILD
@@ -0,0 +1,29 @@
+# Contributor: Limao Luo <luolimao+AUR@gmail.com>
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname=emacs-tuareg-mode
+pkgver=2.0.6
+pkgrel=2
+pkgdesc="Emacs tuareg mode for ocaml"
+arch=(any)
+url=https://forge.ocamlcore.org/projects/tuareg/
+license=(GPL)
+depends=(emacs)
+DLAGENTS=("https::/usr/bin/curl -fkLC - --retry 3 --retry-delay 3 -o %o %u")
+install=$pkgname.install
+source=(https://forge.ocamlcore.org/frs/download.php/882/tuareg-$pkgver.tar.gz)
+sha256sums=('ea79ac24623b82ab8047345f8504abca557a537e639d16ce1ac3e5b27f5b1189')
+sha512sums=('a7162daea30baa38bf1673b62ac545936a24b87b5e4d65329304ce5da68e151af1ef9f6e7720067f1f741614b3b6e1dfeab7080c4e9e7ebf14af594f3a0b0d46')
+
+build() {
+ cd "$srcdir"/tuareg-$pkgver/
+ make
+}
+
+package() {
+ cd "$srcdir"/tuareg-$pkgver/
+ for i in *.el{,c}; do
+ install -Dm644 $i "$pkgdir"/usr/share/emacs/site-lisp/tuareg/$i
+ done
+ install -Dm644 README "$pkgdir"/usr/share/doc/tuareg/README
+}
diff --git a/pcr/emacs-tuareg-mode/emacs-tuareg-mode.install b/pcr/emacs-tuareg-mode/emacs-tuareg-mode.install
new file mode 100644
index 000000000..f9ee9c970
--- /dev/null
+++ b/pcr/emacs-tuareg-mode/emacs-tuareg-mode.install
@@ -0,0 +1,17 @@
+post_install() {
+ cat <<__EOF__
+==> Put this in your $HOME/.emacs file to enable tuareg-mode autoloading
+==> and autorecognition of ocaml source files:
+
+ (setq auto-mode-alist (cons '("\\\\.ml[iylp]?\\\\'" . tuareg-mode) auto-mode-alist))
+ (autoload 'tuareg-mode "tuareg" "Major mode for editing Caml code" t)
+ (autoload 'ocamldebug "ocamldebug" "Run the Caml debugger" t)
+
+==> Note to users of previous versions: 'camldebug' is now known as 'ocamldebug'
+__EOF__
+}
+
+
+post_upgrade() {
+ post_install
+}
diff --git a/pcr/emhacks/PKGBUILD b/pcr/emhacks/PKGBUILD
new file mode 100644
index 000000000..66f0045e5
--- /dev/null
+++ b/pcr/emhacks/PKGBUILD
@@ -0,0 +1,33 @@
+# Contributor: Junmin Huang <junmin(dot)h(at)gmail(dot)com>
+# Contributor: Stefan Husmann <stefan-husmann@t-online.de>
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname=emhacks
+pkgver=20070920
+pkgrel=4
+pkgdesc="Useful Emacs Lisp libraries, including gdiff, jjar, jmaker, swbuff and tabbar, packaged from gentoo portage"
+arch=('any')
+url="http://emhacks.sourceforge.net/"
+license=('GPL2')
+depends=(emacs)
+install=emhacks.install
+source=(http://www.mirrorservice.org/sites/www.ibiblio.org/gentoo/distfiles/$pkgname-$pkgver.tar.bz2)
+md5sums=('d349c78d25ce91a6f9c3e6446b129fc8')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+
+ # remove files included in Emacs>=22 or not useful on GNU/Linux
+ rm -r findstr* overlay-fix* recentf* ruler-mode* tree-widget*
+ for _i in gdiff-setup jjar jmaker swbuff tabbar
+ do
+ [ -f ${_i}.el.gz ] && rm ${_i}.el.gz
+ emacs -batch -q -f batch-byte-compile ${_i}.el
+ gzip ${_i}.el
+ done
+}
+package() {
+ install -d $pkgdir/usr/share/emacs/site-lisp/$pkgname
+ install -Dm644 $srcdir/$pkgname-$pkgver/* \
+ $pkgdir/usr/share/emacs/site-lisp/$pkgname
+}
diff --git a/pcr/emhacks/emhacks.install b/pcr/emhacks/emhacks.install
new file mode 100644
index 000000000..7d2bdf2b6
--- /dev/null
+++ b/pcr/emhacks/emhacks.install
@@ -0,0 +1,21 @@
+post_install() {
+cat << EOM
+
+Don't forget to add the following code into your ~/.emacs file:
+---
+(add-to-list 'load-path "/usr/share/emacs/site-lisp/emhacks")
+---
+
+EOM
+}
+
+post_remove() {
+cat << EOM
+
+The following code in your ~/.emacs file can be removed:
+---
+(add-to-list 'load-path "/usr/share/emacs/site-lisp/emhacks")
+---
+
+EOM
+} \ No newline at end of file
diff --git a/pcr/eterm/PKGBUILD b/pcr/eterm/PKGBUILD
new file mode 100644
index 000000000..00030e80a
--- /dev/null
+++ b/pcr/eterm/PKGBUILD
@@ -0,0 +1,39 @@
+# Contributor: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Adam 'battlemidget' Stokes <adam.stokes@gmail.com>
+# Contributor: Daniel J Griffiths <ghost1227@archlinux.us>
+# Contributor: Brad Fanella <bradfanella@archlinux.us>
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname=eterm
+pkgver=0.9.6
+pkgrel=1
+pkgdesc="A vt102 terminal emulator intended as a replacement for xterm."
+arch=('i686' 'x86_64')
+url="http://www.eterm.org/"
+license=('custom')
+depends=('freetype2>=2.3.5' 'libast>=0.7' 'libxmu' 'libxres')
+options=('!libtool')
+source=(http://www.eterm.org/download/Eterm-${pkgver}.tar.gz)
+md5sums=('90e424584c22d4050496874d14f78bb1')
+
+build() {
+ cd ${srcdir}/Eterm-${pkgver}
+ CONF=""
+ [ "${CARCH}" = "x86_64" ] && CONF="--disable-mmx"
+ ./configure --prefix=/usr --mandir=/usr/share/man \
+ --enable-trans --enable-utmp \
+ --enable-multi-charset=utf-8 \
+ --enable-xim --with-theme-update \
+ --with-backspace=bs --without-terminfo \
+ --enable-multi-charset ${CONF}
+ make || return 1
+}
+
+package() {
+ cd ${srcdir}/Eterm-${pkgver}
+ make DESTDIR=${pkgdir} install
+
+ install -Dm644 LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+}
+
+md5sums=('90e424584c22d4050496874d14f78bb1')
diff --git a/pcr/fpdns/PKGBUILD b/pcr/fpdns/PKGBUILD
new file mode 100644
index 000000000..b4cff364a
--- /dev/null
+++ b/pcr/fpdns/PKGBUILD
@@ -0,0 +1,28 @@
+# Contributor: Ermak <ermak@email.it>
+# Maintainer : Parabola GNU / Linux-libre Aurélien Desbrières <aurelien@cwb.io>
+
+pkgname=fpdns
+pkgver=0.9.3
+pkgrel=1
+pkgdesc="Program that remotely determines DNS server versions"
+url="http://code.google.com/p/fpdns/"
+depends=('')
+license=('BSD')
+options=('!emptydirs')
+arch=('i686' 'x86_64')
+source=('http://fpdns.googlecode.com/files/Net-DNS-Fingerprint-0.9.3.tar.gz')
+md5sums=('16f1fbc9e5c8b935a0a48a509dc58899')
+
+build() {
+ cd ${srcdir}/Net-DNS-Fingerprint-0.9.3
+ eval `perl -V:archname`
+ /usr/bin/perl Makefile.PL \
+ INSTALLARCHLIB=/usr/lib/perl5/current/${archname} \
+ INSTALLSITELIB=/usr/lib/perl5/site_perl/current \
+ INSTALLSITEARCH=/usr/lib/perl5/site_perl/current/${archname}
+ /usr/bin/make || return 1
+ /usr/bin/make DESTDIR=${pkgdir} install
+ /usr/bin/find ${pkgdir} -name '.packlist' -delete
+ /usr/bin/find ${pkgdir} -name '*.pod' -delete
+}
+
diff --git a/pcr/fwsnort/PKGBUILD b/pcr/fwsnort/PKGBUILD
new file mode 100644
index 000000000..37a863822
--- /dev/null
+++ b/pcr/fwsnort/PKGBUILD
@@ -0,0 +1,44 @@
+# Contributor: Colin Shea <colin@evaryont.me>
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname=fwsnort
+pkgver=1.6.2
+pkgrel=1
+pkgdesc="application layer IDS/IPS by translating snort rules into iptables"
+arch=('any')
+url="http://www.cipherdyne.org/fwsnort/"
+license=('GPL')
+depends=('perl' 'perl-net-ipv4addr' 'perl-iptables-parse' 'iptables' 'net-tools')
+makedepends=('wget')
+source=(http://www.cipherdyne.org/$pkgname/download/$pkgname-$pkgver.tar.bz2
+ 'install_pl.patch')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ mkdir -p $pkgdir/var/log/fwsnort \
+ $pkgdir/usr/lib/fwsnort \
+ $pkgdir/usr/share/man/man8 \
+ $pkgdir/usr/sbin \
+ $pkgdir/etc/fwsnort/snort_rules \
+ $pkgdir/etc/fwsnort/archive \
+ $pkgdir/etc/fwsnort/snort_rules_queue
+
+ patch -p0 -i $srcdir/install_pl.patch
+ sed -e "/mpath.*man8/s|/usr|$pkgdir&|" \
+ -e "/^my\\ \\\$sbin/s|/usr|$pkgdir&|" \
+ -i install.pl
+
+ cp fwsnort.conf fwsnort.conf.bak
+
+ sed -e "s|/var/log/fwsnort|$pkgdir&|" \
+ -e "s|/usr/lib/fwsnort|$pkgdir&|" \
+ -e "s|/etc/fwsnort|$pkgdir&|" \
+ ./fwsnort.conf -i
+ # -S skips installing the perl modules, which we did with packages
+ echo y | ./install.pl -S
+ mv -f fwsnort.conf.bak $pkgdir/etc/fwsnort/fwsnort.conf
+ chmod 755 $pkgdir/usr/sbin/fwsnort
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/pcr/fwsnort/install_pl.patch b/pcr/fwsnort/install_pl.patch
new file mode 100644
index 000000000..b9cfb4a33
--- /dev/null
+++ b/pcr/fwsnort/install_pl.patch
@@ -0,0 +1,27 @@
+--- install.pl 2011-02-05 05:02:38.845785881 -0700
++++ install2.pl 2011-02-05 05:03:21.350360881 -0700
+@@ -120,10 +120,6 @@
+ ### make sure the system binaries are where we think they are.
+ &check_commands();
+
+-### check to make sure we are running as root
+-$< == 0 && $> == 0 or die "You need to be root (or equivalent UID 0",
+- " account) to install/uninstall fwsnort!\n";
+-
+ if ($uninstall) {
+ &uninstall();
+ } else {
+--- install.pl 2011-01-02 18:38:51.000000000 -0700
++++ install2.pl 2011-02-05 04:59:01.653910881 -0700
+@@ -471,8 +471,11 @@
+ sub check_commands() {
+ my @path = qw(
+ /bin
++ /sbin
+ /usr/bin
++ /usr/sbin
+ /usr/local/bin
++ /usr/local/sbin
+ );
+ CMD: for my $cmd (keys %cmds) {
+ unless (-x $cmds{$cmd}) {
diff --git a/pcr/gcc-gcj/PKGBUILD b/pcr/gcc-gcj/PKGBUILD
new file mode 100644
index 000000000..7ed03b889
--- /dev/null
+++ b/pcr/gcc-gcj/PKGBUILD
@@ -0,0 +1,83 @@
+# Contributor: Renan Manola <rmanola@gmail.com>
+# Contributor: Stefan Husmann <stefan-husmann@t-online.de>
+# Based on a modified version of the gcc PKGBUILD
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname=gcc-gcj
+pkgver=4.7.2
+pkgrel=2
+pkgdesc="The GNU Compiler for Java"
+arch=('i686' 'x86_64')
+license=('GPL' 'LGPL')
+url="http://gcc.gnu.org"
+depends=("gcc=$pkgver" 'gtk2' 'file' 'zip' 'libsm' 'libxtst' 'alsa-lib' 'libart-lgpl')
+makedepends=('binutils>=2.20.1' 'mpfr>=2.4.2-2' 'cloog>=0.16.2-1' 'elfutils'
+ 'libmpc>=0.8.2-2' 'jack')
+options=('!libtool')
+install=$pkgname.install
+source=(ftp://gcc.gnu.org/pub/gcc/releases/gcc-${pkgver}/gcc-${pkgver}.tar.bz2 libjava-sjlj.dpatch gcc_pure64.patch)
+md5sums=('cc308a0891e778cfda7a151ab8a6e762'
+ 'afe3541abf5ce163223f94ccdbc66e30'
+ 'ced48436c1b3c981d721a829f1094de1')
+
+build() {
+ cd ${srcdir}/gcc-${pkgver}
+
+ # Do not install libiberty
+ sed -i 's/install_to_$(INSTALL_DEST) //' libiberty/Makefile.in
+
+ # Do not run fixincludes
+ sed -i 's@\./fixinc\.sh@-c true@' gcc/Makefile.in
+
+ chmod +x ${srcdir}/*.dpatch
+ ${srcdir}/libjava-sjlj.dpatch -patch
+
+ echo ${pkgver} > gcc/BASE-VER
+
+ [ -d build ] || mkdir build
+ if [ "${CARCH}" = "x86_64" ]; then
+ patch -p1 < $srcdir/gcc_pure64.patch
+ fi
+ cd build
+
+ ../configure --prefix=/usr --enable-shared --enable-languages=java \
+ --enable-threads=posix --mandir=/usr/share/man --infodir=/usr/share/info \
+ --enable-__cxa_atexit --disable-multilib --libdir=/usr/lib \
+ --libexecdir=/usr/lib --enable-clocale=gnu --disable-libstdcxx-pch \
+ --with-tune=generic --enable-java-awt=gtk --with-java-home="$JAVA_HOME" \
+ --enable-libgcj-multifile --disable-plugin --with-system-zlib
+ make
+}
+
+package() {
+ cd ${srcdir}/gcc-${pkgver}/build
+ make -j1 DESTDIR=${pkgdir} install-target-libjava
+
+ cd gcc
+ make -j1 DESTDIR=${pkgdir} java.install-common java.install-man
+
+ install -m755 jc1 ${pkgdir}/usr/lib/gcc/${CHOST}/${pkgver}/
+ install -m755 jvgenmain ${pkgdir}/usr/lib/gcc/${CHOST}/${pkgver}/
+
+ # Remove files which belong to the base gcc package
+ rm -f ${pkgdir}/usr/bin/{c,g}++
+ if [ "${CARCH}" = "x86_64" ]; then
+ rm -f ${pkgdir}/usr/bin/x86_64-unknown-linux-gnu-{c,g}++
+ else
+ rm -f ${pkgdir}/usr/bin/i686-pc-linux-gnu-{c,g}++
+ fi
+ rm -f ${pkgdir}/usr/man/man1/g++.*
+ # Rename two files to not conflict to classpath
+ mv ${pkgdir}/usr/share/info/cp-tools.info ${pkgdir}/usr/share/info/cp-tools-gcj.info
+ rm ${pkgdir}/usr/share/info/dir
+ mv ${pkgdir}/usr/share/man/man1/gjdoc.1 ${pkgdir}/usr/share/man/man1/gjdoc.gcj.1
+
+ find ${pkgdir}/usr/lib -type f -name '*.so.*' -exec strip --strip-unneeded {} \;
+
+ linkdir=`basename $pkgdir/usr/lib/gcj-${pkgver}*`
+ ln -sf $linkdir ${pkgdir}/usr/lib/gcj-${pkgver%.?}
+ ln -sf libgcj-${pkgver}.jar ${pkgdir}/usr/share/java/libgcj-${pkgver%.?}.jar
+ ln -sf libgcj-${pkgver}.jar ${pkgdir}/usr/share/java/libgcj.jar
+ ln -sf libgcj-tools-${pkgver}.jar ${pkgdir}/usr/share/java/libgcj-tools-${pkgver%.?}.jar
+ ln -sf libgcj-tools-${pkgver}.jar ${pkgdir}/usr/share/java/libgcj-tools.jar
+}
diff --git a/pcr/gcc-gcj/gcc-gcj.install b/pcr/gcc-gcj/gcc-gcj.install
new file mode 100644
index 000000000..916aa6a17
--- /dev/null
+++ b/pcr/gcc-gcj/gcc-gcj.install
@@ -0,0 +1,20 @@
+infodir=usr/share/info
+filelist=(cp-tools-gcj.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
+} \ No newline at end of file
diff --git a/pcr/gcc-gcj/gcc_pure64.patch b/pcr/gcc-gcj/gcc_pure64.patch
new file mode 100644
index 000000000..a9b09bbcf
--- /dev/null
+++ b/pcr/gcc-gcj/gcc_pure64.patch
@@ -0,0 +1,26 @@
+diff -Naur gcc-orig/gcc/config/i386/linux64.h gcc/gcc/config/i386/linux64.h
+--- gcc-orig/gcc/config/i386/linux64.h 2011-07-08 01:38:34.000000000 +1000
++++ gcc/gcc/config/i386/linux64.h 2011-07-24 19:48:05.000000000 +1000
+@@ -28,6 +28,6 @@
+ #define GNU_USER_LINK_EMULATION64 "elf_x86_64"
+ #define GNU_USER_LINK_EMULATIONX32 "elf32_x86_64"
+
+-#define GLIBC_DYNAMIC_LINKER32 "/lib/ld-linux.so.2"
+-#define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux-x86-64.so.2"
++#define GLIBC_DYNAMIC_LINKER32 "/lib32/ld-linux.so.2"
++#define GLIBC_DYNAMIC_LINKER64 "/lib/ld-linux-x86-64.so.2"
+ #define GLIBC_DYNAMIC_LINKERX32 "/libx32/ld-linux-x32.so.2"
+diff -Naur gcc-orig/gcc/config/i386/t-linux64 gcc/gcc/config/i386/t-linux64
+--- gcc-orig/gcc/config/i386/t-linux64 2011-07-08 01:38:34.000000000 +1000
++++ gcc/gcc/config/i386/t-linux64 2011-07-24 19:49:41.000000000 +1000
+@@ -34,8 +34,8 @@
+ comma=,
+ MULTILIB_OPTIONS = $(subst $(comma),/,$(TM_MULTILIB_CONFIG))
+ MULTILIB_DIRNAMES = $(patsubst m%, %, $(subst /, ,$(MULTILIB_OPTIONS)))
+-MULTILIB_OSDIRNAMES = m64=../lib64
+-MULTILIB_OSDIRNAMES+= m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)
++MULTILIB_OSDIRNAMES = m64=../lib
++MULTILIB_OSDIRNAMES+= m32=../lib32
+ MULTILIB_OSDIRNAMES+= mx32=../libx32
+
+ LIBGCC = stmp-multilib
diff --git a/pcr/gcc-gcj/libjava-sjlj.dpatch b/pcr/gcc-gcj/libjava-sjlj.dpatch
new file mode 100755
index 000000000..95b4673b3
--- /dev/null
+++ b/pcr/gcc-gcj/libjava-sjlj.dpatch
@@ -0,0 +1,65 @@
+#! /bin/sh -e
+
+# DP: Don't try to use _Unwind_Backtrace on SJLJ targets.
+# DP: See bug #387875, #388505, GCC PR 29206.
+
+dir=
+if [ $# -eq 3 -a "$2" = '-d' ]; then
+ pdir="-d $3"
+ dir="$3/"
+elif [ $# -ne 1 ]; then
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+fi
+case "$1" in
+ -patch)
+ patch $pdir -f --no-backup-if-mismatch -p1 < $0
+ #cd ${dir}gcc && autoconf
+ ;;
+ -unpatch)
+ patch $pdir -f --no-backup-if-mismatch -R -p1 < $0
+ #rm ${dir}gcc/configure
+ ;;
+ *)
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+esac
+exit 0
+
+---
+ libjava/sysdep/generic/backtrace.h | 17 +++++++++++++++++
+ 1 file changed, 17 insertions(+)
+
+Index: src/libjava/sysdep/generic/backtrace.h
+===================================================================
+--- src.orig/libjava/sysdep/generic/backtrace.h 2006-11-06 14:00:32.000000000 -0500
++++ src/libjava/sysdep/generic/backtrace.h 2006-11-06 14:04:38.000000000 -0500
+@@ -13,6 +13,20 @@ details. */
+
+ #include <java-stack.h>
+
++#ifdef SJLJ_EXCEPTIONS
++
++#undef _Unwind_GetIPInfo
++#define _Unwind_GetIPInfo(ctx,ip_before_insn) \
++ (abort (), (void) (ctx), *ip_before_insn = 1, 0)
++
++#undef _Unwind_GetRegionStart
++#define _Unwind_GetRegionStart(ctx) \
++ (abort (), (void) (ctx), 0)
++
++#undef _Unwind_Backtrace
++#define _Unwind_Backtrace(trace_fn,state_ptr) \
++ (fallback_backtrace (trace_fn, state_ptr))
++
+ /* Unwind through the call stack calling TRACE_FN with STATE for every stack
+ frame. Returns the reason why the unwinding was stopped. */
+ _Unwind_Reason_Code
+@@ -20,4 +34,7 @@ fallback_backtrace (_Unwind_Trace_Fn, _J
+ {
+ return _URC_NO_REASON;
+ }
++
++#endif /* SJLJ_EXCEPTIONS */
++
+ #endif
diff --git a/pcr/gloobus-preview-bzr/PKGBUILD b/pcr/gloobus-preview-bzr/PKGBUILD
new file mode 100644
index 000000000..ae8a2fd87
--- /dev/null
+++ b/pcr/gloobus-preview-bzr/PKGBUILD
@@ -0,0 +1,73 @@
+# Contributor: Alessio Sergi <asergi at archlinux dot us>
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname=gloobus-preview-bzr
+_pkgname=gloobus-preview
+pkgver=290
+pkgrel=1
+pkgdesc="A quicklook for GNU/Linux"
+arch=('i686' 'x86_64')
+url="https://launchpad.net/gloobus-preview"
+license=('GPL3')
+depends=('desktop-file-utils' 'djvulibre' 'gstreamer0.10-base' \
+ 'gtksourceview3' 'libspectre' 'poppler-glib' \
+ 'python2-gconf' 'taglib')
+makedepends=('boost' 'bzr' 'intltool')
+optdepends=('gdk-pixbuf-psd: PSD images support'
+ 'gdk-pixbuf-xcf: XCF images support'
+ 'gloobus-sushi-bzr: nautilus 3.x support'
+ 'libicns: ICNS files support'
+ 'marlin-bzr: file manager integration support'
+ 'nautilus-actions: nautilus menu integration'
+ 'nautilus-elementary-bzr: file manager integration support'
+ 'unoconv: LibO files support')
+provides=($_pkgname)
+conflicts=($_pkgname)
+options=('!libtool')
+install=$pkgname.install
+
+_bzrtrunk="https://code.launchpad.net/~gloobus-dev/$_pkgname/last_working_branch"
+_bzrmod="$pkgname"
+
+build() {
+ cd "$srcdir"
+
+ msg "Connecting to Bazaar server...."
+
+ if [[ -d "$_bzrmod" ]]; then
+ cd "$_bzrmod" && bzr --no-plugins pull "$_bzrtrunk" -r "$pkgver"
+ msg "The local files are updated."
+ else
+ bzr --no-plugins branch "$_bzrtrunk" "$_bzrmod" -q -r "$pkgver"
+ fi
+
+ msg "Bazaar checkout done or server timeout"
+ msg "Starting build..."
+
+ rm -rf "$srcdir/$_bzrmod-build"
+ cp -r "$srcdir/$_bzrmod" "$srcdir/$_bzrmod-build"
+ cd "$srcdir/$_bzrmod-build"
+
+ # no psd and xcf loaders
+ sed -i '/loaders/d' src/Makefile.am
+ sed -i '/src\/loaders/d' configure.ac
+
+ # automake 1.12.1 fix
+ sed -i 's/-Werror//' configure.ac
+
+ # python2 fix
+ sed -i 's_python_&2_' src/"$_pkgname"-configuration
+
+ ./autogen.sh
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "$srcdir/$_bzrmod-build"
+
+ make DESTDIR="$pkgdir/" install
+}
+
+# vim:set ts=2 sw=2 et:
+md5sums=()
diff --git a/pcr/gloobus-preview-bzr/gloobus-preview-bzr.install b/pcr/gloobus-preview-bzr/gloobus-preview-bzr.install
new file mode 100644
index 000000000..63031e5be
--- /dev/null
+++ b/pcr/gloobus-preview-bzr/gloobus-preview-bzr.install
@@ -0,0 +1,28 @@
+post_install() {
+ gtk-update-icon-cache -q -t -f /usr/share/icons/hicolor
+ update-desktop-database -q
+
+ echo ">>> To use GP instead of GNOME Sushi with Nautilus 3.x install gloobus-sushi-bzr."
+ echo ""
+ echo ">>> To use GP with marlin:"
+ echo '>>> $ gsettings set org.gnome.marlin.preferences previewer-path "'gloobus-preview'"'
+ echo ""
+ echo ">>> To use GP with nautilus-actions:"
+ echo ">>> Label: Quicklook"
+ echo ">>> Path: gloobus-preview"
+ echo ">>> Parameters: %f"
+ echo ""
+ echo ">>> For more info: http://gloobus.net/"
+ echo ">>> IRC channel: #gloobus @ irc.freenode.net"
+}
+
+post_upgrade() {
+ post_install "$1"
+}
+
+post_remove() {
+ gtk-update-icon-cache -q -t -f /usr/share/icons/hicolor
+ update-desktop-database -q
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/pcr/gnome-boxes/PKGBUILD b/pcr/gnome-boxes/PKGBUILD
new file mode 100644
index 000000000..0ac23a06b
--- /dev/null
+++ b/pcr/gnome-boxes/PKGBUILD
@@ -0,0 +1,33 @@
+# Contributor: Stefano Facchini <stefano.facchini@gmail.com>
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname=gnome-boxes
+pkgver=3.6.1
+pkgrel=2
+pkgdesc="A simple GNOME 3 application to access remote or virtual systems"
+arch=('i686' 'x86_64')
+url="http://live.gnome.org/Boxes"
+license=('LGPL2.1')
+depends=('gtk3' 'clutter-gtk' 'spice-gtk3' 'libvirt-glib' 'tracker'
+ 'gtk-vnc' 'udev' 'libosinfo' 'dconf' 'hicolor-icon-theme'
+ 'desktop-file-utils' 'shared-mime-info')
+optdepends=('qemu-kvm-spice: to create new VMs')
+makedepends=('intltool')
+install=gnome-boxes.install
+source=(http://ftp.gnome.org/pub/GNOME/sources/$pkgname/${pkgver%.*}/$pkgname-$pkgver.tar.xz)
+sha256sums=('fc6ffd0b3886e2da917abdb63470ab9869eef168c002461b9f02ce5aec5383ba')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ ./configure --prefix=/usr --libexec=/usr/lib/gnome-boxes
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make DESTDIR="$pkgdir/" install
+}
+
+# vim:set ts=2 sw=2 et:
+sha256sums=('fc6ffd0b3886e2da917abdb63470ab9869eef168c002461b9f02ce5aec5383ba')
diff --git a/pcr/gnome-boxes/gnome-boxes.install b/pcr/gnome-boxes/gnome-boxes.install
new file mode 100644
index 000000000..2b172e29c
--- /dev/null
+++ b/pcr/gnome-boxes/gnome-boxes.install
@@ -0,0 +1,13 @@
+post_install() {
+ glib-compile-schemas usr/share/glib-2.0/schemas
+ update-desktop-database -q
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/pcr/gnome-rdp/PKGBUILD b/pcr/gnome-rdp/PKGBUILD
new file mode 100644
index 000000000..67a96bb7f
--- /dev/null
+++ b/pcr/gnome-rdp/PKGBUILD
@@ -0,0 +1,46 @@
+# Contributor: György Balló <ballogy@freestart.hu>
+# Contributor: Hyperair <hyperair@gmail.com>
+# Contributor: kumico <norrian@gmail.com>
+# Contributor: adamruss <mail@russ.co.il>
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname=gnome-rdp
+pkgver=0.3.1.0
+pkgrel=1
+pkgdesc="Remote desktop client for the GNOME Desktop with RDP/VNC/SSH capabilities, written in C Sharp"
+arch=('any')
+url="http://sourceforge.net/projects/gnome-rdp/"
+license=('GPL' 'LGPL')
+depends=('gtk-sharp-2' 'gnome-keyring-sharp')
+optdepends=('openssh: SSH client'
+ 'gnome-terminal: required for the SSH client'
+ 'rdesktop: RDP client'
+ 'tightvnc: VNC client')
+source=(http://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.gz
+ appindicator.patch)
+md5sums=('3c1329702914f8b1c213c0bb00d078cf'
+ '7bbe98eadfe199c5664fd69a4531fb3d')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ sed -i 's/tight-vncviewer/vncviewer/' Sessions/SessionCollection.cs
+ patch -R -Np3 -i "$srcdir/appindicator.patch"
+ sed -i 's/pkglib_SCRIPTS/programfiles_SCRIPTS/' Makefile.include
+ sed -i 's|@expanded_libdir@|@prefix@/@libdir@|' gnome-rdp.in
+
+ autoreconf -fi
+ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ make DESTDIR="$pkgdir/" install
+
+ # Install desktop and icon files
+ install -Dm644 Menu/$pkgname.desktop "$pkgdir/usr/share/applications/$pkgname.desktop"
+ install -Dm644 Menu/$pkgname.png "$pkgdir/usr/share/pixmaps/$pkgname.png"
+}
+md5sums=('3c1329702914f8b1c213c0bb00d078cf'
+ '7bbe98eadfe199c5664fd69a4531fb3d')
diff --git a/pcr/gnome-rdp/appindicator.patch b/pcr/gnome-rdp/appindicator.patch
new file mode 100644
index 000000000..4cb4d7a65
--- /dev/null
+++ b/pcr/gnome-rdp/appindicator.patch
@@ -0,0 +1,249 @@
+Index: /trunk/gnome-rdp/configure.ac
+===================================================================
+--- /trunk/gnome-rdp/configure.ac (revision 263)
++++ /trunk/gnome-rdp/configure.ac (revision 264)
+@@ -50,6 +50,7 @@
+ PKG_CHECK_MODULES([GLIB_SHARP_20], [glib-sharp-2.0])
+ PKG_CHECK_MODULES([GLADE_SHARP_20], [glade-sharp-2.0])
+ PKG_CHECK_MODULES([GNOME_KEYRING_SHARP_10], [gnome-keyring-sharp-1.0])
++PKG_CHECK_MODULES([APPINDICATOR_SHARP_01], [appindicator-sharp-0.1])
+
+ dnl package checks, per config
+
+Index: /trunk/gnome-rdp/MainWindow.cs
+===================================================================
+--- /trunk/gnome-rdp/MainWindow.cs (revision 257)
++++ /trunk/gnome-rdp/MainWindow.cs (revision 264)
+@@ -31,14 +31,18 @@
+ using GnomeRDP.Vnc;
+
++using AppIndicator;
++
+ namespace GnomeRDP
+ {
+ public partial class MainWindow: Gtk.Window
+ {
+- private StatusIcon statusIcon;
++ private ApplicationIndicator applicationIndicator;
+ private Gtk.Action actionQuit;
++ private Gtk.Action actionToggleVisible;
++ private bool hideOnDelete = false;
+
+ private const string sessionKey = "Session";
+
+- public MainWindow(): base (Gtk.WindowType.Toplevel)
++ public MainWindow (): base (Gtk.WindowType.Toplevel)
+ {
+ Build ();
+@@ -46,72 +50,80 @@
+ this.DeleteEvent += (s, e) =>
+ {
+- Visible = false;
+- e.RetVal = true;
++ if (hideOnDelete)
++ {
++ Visible = false;
++ e.RetVal = true;
++ }
+ };
+
+- this.actionQuit = new Gtk.Action("QuitAction", "Quit");
+- this.actionQuit.Activated+= (s, e) => Application.Quit();
++ this.actionQuit = new Gtk.Action ("QuitAction", "Quit");
++ this.actionQuit.Activated += (s, e) => Application.Quit ();
++
++ this.actionToggleVisible = new Gtk.Action("ToggleVisibleAction", "Show/Hide");
++ this.actionToggleVisible.Activated += (s, e) => { this.Visible = !this.Visible; };
++
++ this.applicationIndicator = new ApplicationIndicator ("gnome-rdp", "gnome-rdp", Category.ApplicationStatus);
++ this.applicationIndicator.ConnectionChanged += (s, e) => { hideOnDelete = this.applicationIndicator.Connected; };
+
+- this.statusIcon = new StatusIcon(ResourceLoader.Find(ResourceLoader.Icons.gnomeRdp));
+- this.statusIcon.Visible = true;
+- this.statusIcon.Tooltip = "GnomeRDP";
+- this.statusIcon.Activate += OnStatusIcon_Activate;
+- this.statusIcon.PopupMenu += OnStatusIcon_PopupMenu;
+-
++ this.applicationIndicator.Menu = CreateMenu();
++ this.applicationIndicator.Status = Status.Active;
++
+ this.Icon = ResourceLoader.Find(ResourceLoader.Icons.gnomeRdp);
+ }
+-
+- private void OnStatusIcon_Activate(object sender, EventArgs e)
++
++ public void UpdateMenu()
+ {
+- Visible = !Visible;
++ Menu oldMenu = this.applicationIndicator.Menu;
++
++ this.applicationIndicator.Menu = CreateMenu();
++
++ oldMenu.Dispose();
+ }
+-
+- private void OnStatusIcon_PopupMenu(object sender, PopupMenuArgs e)
++
++ private Menu CreateMenu()
+ {
+- try
+- {
+- Menu topMenu = new Menu();
+- topMenu.Popup();
++ Menu topMenu = new Menu();
++
++ topMenu.Append(actionToggleVisible.CreateMenuItem());
++ topMenu.Append(new SeparatorMenuItem());
+
+- foreach (var group in Program.SessionCollection.Groups)
+- {
+- MenuItem groupMenu = new MenuItem(group);
+- topMenu.Append(groupMenu);
+-
+- Menu subMenu = new Menu();
+- foreach(var session in Program.SessionCollection.Items.Where(s => s.Group == group).OrderBy(s => s.Server))
+- {
+- MenuItem menuItem = new MenuItem(session.MenuFormat);
+- menuItem.TooltipText = session.Tooltip;
+- menuItem.Activated += PopupMenuItem_Activated;
+- menuItem.Data[sessionKey] = session;
+-
+- subMenu.Append(menuItem);
+- }
+- groupMenu.Submenu = subMenu;
+- }
+-
+- topMenu.Append(new SeparatorMenuItem());
+-
+- foreach (var session in Program.SessionCollection.Items.Where(s => string.IsNullOrEmpty(s.Group)).OrderBy(s => s.Server))
++ foreach (var group in Program.SessionCollection.Groups)
++ {
++ MenuItem groupMenu = new MenuItem(group);
++
++ Menu subMenu = new Menu();
++ foreach(var session in Program.SessionCollection.Items.Where(s => s.Group == group).OrderBy(s => s.Server))
+ {
+ MenuItem menuItem = new MenuItem(session.MenuFormat);
+ menuItem.TooltipText = session.Tooltip;
+ menuItem.Activated += PopupMenuItem_Activated;
+- menuItem.Data[sessionKey] = session;
+-
+- topMenu.Append(menuItem);
++ menuItem.Data[sessionKey] = session;
++
++ subMenu.Append(menuItem);
+ }
++ groupMenu.Submenu = subMenu;
++
++ topMenu.Append(groupMenu);
++ }
++
++ topMenu.Append(new SeparatorMenuItem());
++
++ foreach (var session in Program.SessionCollection.Items.Where(s => string.IsNullOrEmpty(s.Group)).OrderBy(s => s.Server))
++ {
++ MenuItem menuItem = new MenuItem(session.MenuFormat);
++ menuItem.TooltipText = session.Tooltip;
++ menuItem.Activated += PopupMenuItem_Activated;
++ menuItem.Data[sessionKey] = session;
+
+- topMenu.Append(new SeparatorMenuItem());
+- topMenu.Append(actionQuit.CreateMenuItem());
+- topMenu.ShowAll();
+-// topMenu.Popup();
++ topMenu.Append(menuItem);
+ }
+- catch
+- {
+- }
+- }
+-
++
++ topMenu.Append(new SeparatorMenuItem());
++ topMenu.Append(actionQuit.CreateMenuItem());
++
++ topMenu.ShowAll();
++ return topMenu;
++ }
++
+ private void PopupMenuItem_Activated(object sender, EventArgs e)
+ {
+@@ -126,20 +138,4 @@
+ }
+ }
+-
+- protected virtual void OnNewRdpActionActivated (object sender, System.EventArgs e)
+- {
+- }
+-
+- protected virtual void OnNewVncActionActivated (object sender, System.EventArgs e)
+- {
+- }
+-
+- protected virtual void OnNewSshActionActivated (object sender, System.EventArgs e)
+- {
+- }
+-
+-
+-
+-
+ }
+ }
+Index: /trunk/gnome-rdp/ChangeLog
+===================================================================
+--- /trunk/gnome-rdp/ChangeLog (revision 262)
++++ /trunk/gnome-rdp/ChangeLog (revision 264)
+@@ -1,2 +1,11 @@
++2011-11-02 James P Michels III <jmichels@bluefintrading.com>
++
++ * Program.cs:
++ * gnome-rdp.sln:
++ * MainWindow.cs:
++ * gnome-rdp.csproj:
++ * gui.stetic:
++ * SessionsWidget.cs: Changes to support AppIndicator
++
+ 2011-05-22 James P Michels III <james.p.michels@gmail.com>
+
+Index: /trunk/gnome-rdp/Sessions/SessionsWidget.cs
+===================================================================
+--- /trunk/gnome-rdp/Sessions/SessionsWidget.cs (revision 257)
++++ /trunk/gnome-rdp/Sessions/SessionsWidget.cs (revision 264)
+@@ -205,4 +205,5 @@
+ }
+
++ Program.UpdateMainWindowMenu();
+ }
+ catch (Exception ex)
+Index: /trunk/gnome-rdp/gtk-gui/gui.stetic
+===================================================================
+--- /trunk/gnome-rdp/gtk-gui/gui.stetic (revision 261)
++++ /trunk/gnome-rdp/gtk-gui/gui.stetic (revision 264)
+@@ -7,5 +7,6 @@
+ <import>
+ <widget-library name="glade-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+- <widget-library name="../bin/Debug/gnome-rdp.exe" internal="true" />
++ <widget-library name="appindicator-sharp, Version=0.2.0.0, Culture=neutral, PublicKeyToken=bcae265d1c7ab4c2" />
++ <widget-library name="../bin/Release/gnome-rdp.exe" internal="true" />
+ </import>
+ <widget class="Gtk.Window" id="GnomeRDP.MainWindow" design-size="798 565">
+Index: /trunk/gnome-rdp/Program.cs
+===================================================================
+--- /trunk/gnome-rdp/Program.cs (revision 261)
++++ /trunk/gnome-rdp/Program.cs (revision 264)
+@@ -196,5 +196,14 @@
+ });
+ }
+-
++
++ public static void UpdateMainWindowMenu()
++ {
++ GLib.Timeout.Add(0, () =>
++ {
++ mainWindow.UpdateMenu();
++ return false;
++ });
++ }
++
+ public static void SetMainWindowVisible(bool visible)
+ {
diff --git a/pcr/gnucash-docs/PKGBUIDL b/pcr/gnucash-docs/PKGBUIDL
new file mode 100644
index 000000000..94c5d62d0
--- /dev/null
+++ b/pcr/gnucash-docs/PKGBUIDL
@@ -0,0 +1 @@
+md5sums=('38daeb3b15f296726ee8124122040f08')
diff --git a/pcr/gnucash-docs/PKGBUILD b/pcr/gnucash-docs/PKGBUILD
new file mode 100644
index 000000000..0895692f2
--- /dev/null
+++ b/pcr/gnucash-docs/PKGBUILD
@@ -0,0 +1,28 @@
+# Contributor: Mark Schneider <queueRAM@gmail.com>
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname=gnucash-docs
+pkgver=2.4.1
+pkgrel=1
+pkgdesc="User documentation for gnucash"
+arch=('i686' 'x86_64')
+url="http://www.gnucash.org"
+license=('GPL')
+depends=('gnucash' 'docbook-xml' 'rarian' 'yelp')
+source=(http://downloads.sourceforge.net/gnucash/${pkgname}-${pkgver}.tar.gz)
+install=${pkgname}.install
+md5sums=('38daeb3b15f296726ee8124122040f08')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --disable-scrollkeeper
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make DESTDIR="$pkgdir/" install
+}
+md5sums=('38daeb3b15f296726ee8124122040f08')
+md5sums=('38daeb3b15f296726ee8124122040f08')
diff --git a/pcr/gnucash-docs/gnucash-docs.install b/pcr/gnucash-docs/gnucash-docs.install
new file mode 100644
index 000000000..e82d4b10b
--- /dev/null
+++ b/pcr/gnucash-docs/gnucash-docs.install
@@ -0,0 +1,20 @@
+post_install() {
+ echo "updating scrollkeeper catalogue ..."
+ scrollkeeper-update -q -p /var/lib/scrollkeeper
+ update-desktop-database -q
+}
+
+post_upgrade() {
+ echo "updating scrollkeeper catalogue ..."
+ update-desktop-database -q
+ scrollkeeper-update -q -p /var/lib/scrollkeeper
+}
+
+post_remove() {
+ post_install $1
+}
+
+op=$1
+shift
+
+$op $*
diff --git a/pcr/gnuit/PKGBUILD b/pcr/gnuit/PKGBUILD
new file mode 100644
index 000000000..6c1983e32
--- /dev/null
+++ b/pcr/gnuit/PKGBUILD
@@ -0,0 +1,30 @@
+# Contributor: James Reed <supplantr at archlinux dot info>
+# Contributor: Leslie P. Polzer <polzer at stardawn dot org>
+# Maintainer : Parabola GNU / Linux-libre Aurélien Desbrières <aurelien@cwb.io>
+
+pkgname=gnuit
+pkgver=4.9.5
+pkgrel=1
+pkgdesc="A set of interactive text-mode tools."
+arch=('i686' 'x86_64')
+url="http://www.gnu.org/software/gnuit/"
+license=('GPL3')
+depends=('bash')
+install=${pkgname}.install
+source=(http://ftp.gnu.org/gnu/gnuit/$pkgname-$pkgver.tar.gz)
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ ./configure --prefix=/usr --disable-transition
+ make
+}
+
+check() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make -k check
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make DESTDIR="$pkgdir/" install
+}
diff --git a/pcr/gnuit/gnuit.install b/pcr/gnuit/gnuit.install
new file mode 100644
index 000000000..e26e79dae
--- /dev/null
+++ b/pcr/gnuit/gnuit.install
@@ -0,0 +1,16 @@
+infodir=usr/share/info
+file=gnuit.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/pcr/gnuplot-py/PKGBUILD b/pcr/gnuplot-py/PKGBUILD
new file mode 100644
index 000000000..315c7b695
--- /dev/null
+++ b/pcr/gnuplot-py/PKGBUILD
@@ -0,0 +1,23 @@
+# Contributor: Michael Krauss <hippodriver@gmx.net>
+# Contributor : Baptiste Jonglez <zerstorer at free dot fr>
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname=gnuplot-py
+pkgver=1.8
+pkgrel=3
+pkgdesc="Gnuplot.py is a Python package that interfaces to gnuplot."
+arch=('any')
+url="http://$pkgname.sourceforge.net/"
+license=('LGPL')
+depends=('python2-numpy' 'gnuplot')
+#options=(!emptydirs)
+source=("http://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.gz")
+md5sums=('abd6f571e7aec68ae7db90a5217cd5b1')
+
+package() {
+ cd $srcdir/$pkgname-$pkgver
+ python2 setup.py install --prefix=/usr --root=$pkgdir/ --optimize=1
+}
+
+# vim:set ts=2 sw=2 et:
+md5sums=('abd6f571e7aec68ae7db90a5217cd5b1')
diff --git a/pcr/gtkpacman/PKGBUILD b/pcr/gtkpacman/PKGBUILD
new file mode 100644
index 000000000..0e66e33e5
--- /dev/null
+++ b/pcr/gtkpacman/PKGBUILD
@@ -0,0 +1,30 @@
+# Contributor: Tetsumaki <http://goo.gl/YMBdA>
+# Contributor: Stefan Husmann <stefan-husmann@t-online.de>
+# Contributor: Stefano Esposito <ragnarok@email.it>
+# Maintainer : Parabola GNU / Linux-libre <aurelien@cwb.io>
+
+pkgname=gtkpacman
+pkgver=2.3.1
+pkgrel=4
+pkgdesc="GTK package manager for archlinux based on pacman"
+arch=('any')
+url="http://gtkpacman.berlios.de/"
+license=('GPL')
+depends=('pygtk' 'vte')
+source=("http://download.berlios.de/${pkgname}/${pkgname}-${pkgver}.tar.bz2")
+sha256sums=('0ee571a5b1efcf5d8594a6eb04456a598c6354301ee6300c6508999c1eb87b88')
+
+build () {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ # python2 fix
+ for _file in $(find . -name '*.py' -print); do
+ sed -i 's_^#!.*/usr/bin/python_#!/usr/bin/python2_' "${_file}"
+ sed -i 's_^#!.*/usr/bin/env.*python_#!/usr/bin/env python2_' "${_file}"
+ done
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ python2 setup.py install --root="${pkgdir}"
+}
diff --git a/pcr/h264enc/PKGBUILD b/pcr/h264enc/PKGBUILD
new file mode 100644
index 000000000..9f47c3640
--- /dev/null
+++ b/pcr/h264enc/PKGBUILD
@@ -0,0 +1,35 @@
+# Contributor: AlexanderR <rvacheva at nxt dot ru>
+# Contributor: Markus Heuser <markus.heuser@web.de>
+# Contributor: Stefan Clarke <fm0nk3y@yahoo.co.uk>
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname=h264enc
+pkgver=9.4.8
+pkgrel=1
+pkgdesc="Advanced shell script for encoding DVDs or video files to the H.264 format using the encoding utility MEncoder from MPlayer."
+arch=('any')
+url='http://h264enc.sourceforge.net/'
+license=('GPL')
+depends=('x264' 'lsdvd' 'lame' 'bc' 'mencoder')
+optdepends=('mkvtoolnix' 'gpac' 'ogmtools' 'mplayer' 'pv' 'neroaacenc' 'aacplusenc' 'tsmuxer' 'vorbis-tools' 'dcaenc')
+options=(!strip)
+install="${pkgname}.install"
+source=("http://sf.net/projects/h264enc/files/$pkgname/$pkgname-$pkgver.tar.gz")
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ sed -i -e "s|/usr/local|$pkgdir/usr|g" \
+ -e 's|usr/local/|usr/|g' \
+ -e 's|/man/man1|/share/man/man1|g' install
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ ./install
+ rm ${pkgdir}/usr/share/doc/h264enc/{uninstall,LICENSE}
+}
+
+sha1sums=('3d8b713c831a152994ce124a3fd4aebafcd4fd6d')
+sha1sums=('3d8b713c831a152994ce124a3fd4aebafcd4fd6d')
diff --git a/pcr/h264enc/h264enc.install b/pcr/h264enc/h264enc.install
new file mode 100644
index 000000000..3c17e8130
--- /dev/null
+++ b/pcr/h264enc/h264enc.install
@@ -0,0 +1,9 @@
+post_install() {
+ echo "Hint: run 'h264enc -r' after installation of optional packages."
+}
+
+post_upgrade() {
+ if [[ "$2" < "9.4.3" ]]; then
+ echo "~/.h264enc/config syntax changed since version 9.4.2. Update it by hands.";
+ fi
+}
diff --git a/pcr/ibus-bogo/PKGBUILD b/pcr/ibus-bogo/PKGBUILD
new file mode 100644
index 000000000..44652b204
--- /dev/null
+++ b/pcr/ibus-bogo/PKGBUILD
@@ -0,0 +1,55 @@
+# Contributor: Nguyen Ha Duong <cmpitg@gmail.com>
+# Contributor: Ngo Trung <ndtrung4419@gmail.com>
+# Contributor: Dam Tien Long <longdt90@gmail.com>
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname="ibus-bogo"
+pkgver=0.1.0
+pkgrel=1
+pkgdesc=" Bogo Engine for Ibus"
+
+arch=('i686' 'x86_64')
+url="https://github.com/BoGoEngine"
+license=('GPLv3')
+depends=('ibus' 'python2' 'glibmm' 'python2-gobject')
+makedepends=('git' 'cmake' 'gcc' 'python2')
+provides=('ibus-bogo')
+
+_gitpython="https://github.com/BoGoEngine/ibus-bogo-python.git"
+_gitpythonname="ibus-bogo-python"
+
+install=install
+
+build() {
+ cd ${srcdir}
+
+ if [ -d ${_gitpythonname} ] ; then
+ cd ${srcdir}/${_gitpythonname} && git pull
+ msg "Local ${srcdir}/${_gitpythonname} updated"
+
+ else
+ git clone ${_gitpython} ${_gitpythonname}
+
+ fi
+
+
+
+ msg "Starting make..."
+
+ mkdir ${pkgdir}/usr/
+
+
+ # Building ibus-bogo-python
+ cd ${srcdir}/${_gitpythonname}
+ if [ -d build ]; then
+ cd build
+ else
+ mkdir build
+ cd build
+ fi
+ cmake -DCMAKE_INSTALL_PREFIX:PATH="${pkgdir}/usr" ..
+ make
+ make install
+ rm ${pkgdir}/usr/share/glib-2.0/schemas/gschemas.compiled
+
+ }
diff --git a/pcr/ibus-bogo/install b/pcr/ibus-bogo/install
new file mode 100644
index 000000000..0ed8986d0
--- /dev/null
+++ b/pcr/ibus-bogo/install
@@ -0,0 +1,40 @@
+post_install () {
+
+ glib-compile-schemas /usr/share/glib-2.0/schemas
+
+ }
+
+pre_upgrade () {
+
+ cd /usr/share
+ if [ -d ibus-bogo ]; then
+ rm -rf ibus-bogo/*
+ fi
+
+ cd /usr/share/ibus/component/
+ if [ -f bogo.xml ]; then
+ rm bogo.xml
+ fi
+
+ cd /usr/lib/python2.7/site-packages/
+ if [ -d BoGo ]; then
+ rm -rf BoGo/*
+ fi
+
+ for i in `ls /usr/lib | grep bogo`; do
+ rm -rf /usr/lib/$i
+ done
+
+ }
+
+post_upgrade () {
+
+ glib-compile-schemas /usr/share/glib-2.0/schemas
+
+ }
+
+post_remove () {
+
+ glib-compile-schemas /usr/share/glib-2.0/schemas
+
+ }
diff --git a/pcr/ipycli-git/PKGBUILD b/pcr/ipycli-git/PKGBUILD
new file mode 100644
index 000000000..86f6289d1
--- /dev/null
+++ b/pcr/ipycli-git/PKGBUILD
@@ -0,0 +1,56 @@
+# Contributor: Francois Boulogne <fboulogne at april dot org>
+# Maintainer: Parabola GNU / Linux-libre Aurélien Desbrières <aurelien@cwb.io>
+
+pkgname=ipycli-git
+pkgver=20121109
+pkgrel=2
+pkgdesc="IPython subapp that supports adding arbitrary notebooks from the command line"
+arch=('i686' 'x86_64')
+url="https://github.com/dalejung/ipycli/"
+license=('UNKNOWN')
+depends=('python2' 'ipython2')
+optdepends=()
+makedepends=('git' 'python2')
+install=
+provides=()
+conflicts=()
+source=()
+
+
+_gitroot="git://github.com/dalejung/ipycli.git"
+_gitname="ipycli"
+
+build() {
+
+ cd "$srcdir"
+ msg "Connecting to GIT server...."
+
+ if [ -d $_gitname ] ; then
+ cd $_gitname && git pull origin
+ msg "The local files are updated."
+ else
+ git clone $_gitroot $_gitname
+ fi
+
+ msg "GIT checkout done or server timeout"
+ msg "Starting make..."
+
+ rm -rf "$srcdir/$_gitname-build"
+ git clone "$srcdir/$_gitname" "$srcdir/$_gitname-build"
+ cd "$srcdir/$_gitname-build"
+
+ #lib
+ python2 setup.py install --root="${pkgdir}"
+
+ #bin
+ mkdir "${pkgdir}/usr/bin"
+ cp "bin/nb" "${pkgdir}/usr/bin"
+ sed -i -e "s|#!/usr/bin/env python$|#!/usr/bin/env python2|" "${pkgdir}/usr/bin/nb"
+ cp "bin/ipycli" "${pkgdir}/usr/bin"
+ sed -i -e "s|#!/usr/bin/env python$|#!/usr/bin/env python2|" "${pkgdir}/usr/bin/ipycli"
+
+ #templates/statics
+ cp -r "ipycli/static" "${pkgdir}/usr/lib/python2.7/site-packages/ipycli/"
+ cp -r "ipycli/templates" "${pkgdir}/usr/lib/python2.7/site-packages/ipycli/"
+}
+# vim:set ts=2 sw=2 et:
diff --git a/pcr/jdee/PKGBUILD b/pcr/jdee/PKGBUILD
new file mode 100644
index 000000000..41cddfb08
--- /dev/null
+++ b/pcr/jdee/PKGBUILD
@@ -0,0 +1,49 @@
+# PKGBUILD for JDEE 2.4.0.1
+# Contributor: Brandon Ednes <brandon@as220.org>
+# $Id$
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname=jdee
+_pkgname=jde
+pkgver=2.4.0.1
+pkgrel=1
+pkgdesc="The Java Development Environment for Emacs"
+arch=('i686' 'x86_64')
+url="http://jdee.sourceforge.net/"
+license="GPL"
+depends=('emacs' 'cedet' 'emacs-elib')
+makedepends=()
+conflicts=()
+replaces=()
+backup=()
+install="$pkgname.install"
+source=(http://downloads.sourceforge.net/project/jdee/jdee/2.4.0.1/jdee-bin-2.4.0.1.zip)
+md5sums=('8e1d3e764f01c6dc1e337f9c6882ec85')
+
+build() {
+ cd $startdir/src/$pkgname-$pkgver
+ mkdir -p $startdir/pkg/usr/share/emacs/site-lisp/$_pkgname
+
+ # Fix up permissions for package files. This is nice but not required.
+ find . -type f | xargs chmod 644
+
+ # Because of the way JDEE builds, it assumes the jde directory has its
+ # dependencies in sibling directories. We set up some symlinks to fake
+ # this.
+ ln -sf /usr/share/emacs/site-lisp/elib ../elib
+ ln -sf /usr/share/emacs/site-lisp/cedet ../cedet
+ # Byte-compile everything.
+ emacs -q --no-site-file -batch -l $startdir/jdee-build.el -f jde-compile-jde
+
+ # There is no install per se, just copy everything into the pkg directory.
+ cp -R $startdir/src/$pkgname-$pkgver/* \
+ $startdir/pkg/usr/share/emacs/site-lisp/$_pkgname
+
+ # Clean up the symlinks.
+ rm ../elib
+ rm ../cedet
+}
+
+# Local Variables:
+# mode: shell-script
+# End:
diff --git a/pcr/jdee/jdee-build.el b/pcr/jdee/jdee-build.el
new file mode 100644
index 000000000..a8ec13358
--- /dev/null
+++ b/pcr/jdee/jdee-build.el
@@ -0,0 +1,8 @@
+;;; jde-build.el
+;;; Set up the Emacs environment to byte-compile JDEE
+;;; $Id: jdee-build.el,v 99d30c485449 2008/06/23 05:38:36 jbromley $
+(add-to-list 'load-path "../elib")
+(add-to-list 'load-path "../cedet")
+(add-to-list 'load-path "./lisp")
+(load-file (expand-file-name "../cedet/common/cedet.el"))
+(require 'jde)
diff --git a/pcr/jdee/jdee.install b/pcr/jdee/jdee.install
new file mode 100644
index 000000000..08b6501a4
--- /dev/null
+++ b/pcr/jdee/jdee.install
@@ -0,0 +1,54 @@
+# jdee.install
+# Show Emacs configuration instructions.
+# $Id: jdee.install,v 99d30c485449 2008/06/23 05:38:36 jbromley $
+post_install () {
+echo ""
+echo "==> You may need to update your .emacs file. The following shows"
+echo "==> the minimal configuration needed. Note that it shows what is"
+echo "==> needed to configure JDEE's dependencies elib and cedet."
+echo ""
+echo "==> ;; This .emacs file illustrates the minimal setup"
+echo "==> ;; required to run the JDE."
+echo "==>"
+echo "==> ;; Update the Emacs load-path to include the path to"
+echo "==> ;; the JDE and its require packages. This code assumes"
+echo "==> ;; that you have installed the packages in the emacs/site"
+echo "==> ;; subdirectory of your home directory."
+echo "==> (add-to-list 'load-path (expand-file-name \"~/emacs/site/jde/lisp\"))"
+echo "==> (add-to-list 'load-path (expand-file-name \"~/emacs/site/cedet/common\"))"
+echo "==> (add-to-list 'load-path (expand-file-name \"~/emacs/site/elib\"))"
+echo "==>"
+echo "==> ;; Initialize CEDET."
+echo "==> (load-file (expand-file-name \"~/emacs/site/cedet/common/cedet.el\"))"
+echo "==>"
+echo "==>"
+echo "==> ;; If you want Emacs to defer loading the JDE until you open a"
+echo "==> ;; Java file, edit the following line"
+echo "==> (setq defer-loading-jde nil)"
+echo "==> ;; to read:"
+echo "==> ;;"
+echo "==> ;; (setq defer-loading-jde t)"
+echo "==> ;;"
+echo "==>"
+echo "==> (if defer-loading-jde"
+echo "==> (progn"
+echo "==> (autoload 'jde-mode \"jde\" \"JDE mode.\" t)"
+echo "==> (setq auto-mode-alist"
+echo "==> (append"
+echo "==> '((\"\\\\.java\\\\'\" . jde-mode))"
+echo "==> auto-mode-alist)))"
+echo "==> (require 'jde))"
+echo ""
+}
+
+post_upgrade () {
+ post_install $1
+}
+
+op=$1
+shift
+$op $*
+
+# Local Variables:
+# mode: shell-script
+# End:
diff --git a/pcr/knot/PKGBUILD b/pcr/knot/PKGBUILD
new file mode 100644
index 000000000..4f785493a
--- /dev/null
+++ b/pcr/knot/PKGBUILD
@@ -0,0 +1,31 @@
+# Contributor: Otto Sabart <seberm[at]gmail[dot]com>
+# Maintainer : Parabola GNU / Linux-libre Aurélien Desbrières <aurelien@cwb.io>
+
+pkgname=knot
+pkgver=1.1.0
+pkgrel=1
+pkgdesc="high-performance authoritative-only DNS server"
+url="http://www.knot-dns.cz/setlang/?language=en"
+arch=('i686' 'x86_64')
+license=('GPLv3')
+depends=('liburcu>=0.5.4' 'flex>=2.5.3' 'libtool' 'bison>=2.3')
+optdepends=('libcap')
+makedepends=('autoconf>=2.65')
+conflicts=()
+replaces=()
+backup=()
+#install='foo.install'
+source=("http://public.nic.cz/files/knot-dns/${pkgname}-${pkgver}.tar.gz")
+
+md5sums=('b2d4a53d8e98565ebb389531c2b66690')
+
+build() {
+
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ #autoreconf -if
+ ./configure --prefix=/usr --localstatedir=/var --sysconfdir=/etc/knot
+
+ make && make install DESTDIR="${pkgdir}" || return 1
+ #ldconfig
+}
diff --git a/pcr/kompozer/NS_IMETHOD_i686.patch b/pcr/kompozer/NS_IMETHOD_i686.patch
new file mode 100644
index 000000000..79abc50de
--- /dev/null
+++ b/pcr/kompozer/NS_IMETHOD_i686.patch
@@ -0,0 +1,11 @@
+--- xpcom/base/nscore.h 2009-05-02 17:43:48.000000000 +0100
++++ xpcom/base/nscore.h 2012-08-10 23:08:07.168628118 +0100
+@@ -182,7 +182,7 @@
+ #define NS_IMPORT_(type) NS_EXTERNAL_VIS_(type)
+ #define NS_EXPORT NS_EXTERNAL_VIS
+ #define NS_EXPORT_(type) NS_EXTERNAL_VIS_(type)
+-#define NS_IMETHOD_(type) virtual IMETHOD_VISIBILITY type NS_DEFCALL
++#define NS_IMETHOD_(type) virtual type
+ #define NS_IMETHODIMP_(type) type
+ #define NS_METHOD_(type) type
+ #define NS_CALLBACK_(_type, _name) _type (* _name)
diff --git a/pcr/kompozer/PKGBUILD b/pcr/kompozer/PKGBUILD
new file mode 100644
index 000000000..7b556e166
--- /dev/null
+++ b/pcr/kompozer/PKGBUILD
@@ -0,0 +1,59 @@
+# Contributor: peace4all <markspost at rocketmail dot com>
+# Maintainer : Parabola GNU / Linux-libre <aurelien@cwb.io>
+
+# thanks to tadzio, and techlive for the investigation
+# work and fix included as the NS_IMETHOD_i686.patch
+
+pkgname=kompozer
+pkgver=0.8b3
+pkgrel=10
+pkgdesc="A Dreamweaver style WYSIWYG web editor; Nvu unofficial bug-fix release"
+arch=('x86_64' 'i686')
+license=('GPL')
+url="http://www.kompozer.net"
+depends=('gtk2' 'glib2' 'pango' 'pangox-compat' 'nss' 'libxt' 'libidl2' 'gnome-vfs')
+makedepends=('zip' 'pkgconfig')
+source=("http://downloads.sourceforge.net/kompozer/$pkgname-$pkgver-src.tar.bz2"
+ 'kompozer.desktop'
+ 'mozconfig.patch'
+ 'kompozer-libpng15.patch'
+ 'kompozer-libpng14.patch'
+ 'gcc46_default_ctors.patch'
+ 'kompozer_gcc_4.7.patch'
+ 'any_kernel_26_plus.patch'
+ 'NS_IMETHOD_i686.patch')
+md5sums=('cd4664ecda908666b19ef0607010c627'
+ 'ed8edf6817892a38b8b181fc9b2caaea'
+ '4778f967307cf569089daca843de1df9'
+ '4852034f99e7943071946e7eedc6c2f5'
+ 'd5ba90f7fbaed76f77a6d9717e86f3a5'
+ 'ad3ec5cbc6677dd712b140148398f58f'
+ '75b0e1cad65dbeb8feedac5d4f52be32'
+ '58a294356b3e17ad070e4c93180bf0ad'
+ '186c47586bebf83b9b76d339e3a38c95')
+
+build() {
+ cd "$srcdir/mozilla"
+
+ patch -Np0 -i "$srcdir/mozconfig.patch"
+ patch -Np0 -i "$srcdir/kompozer-libpng14.patch"
+ patch -Np0 -i "$srcdir/kompozer-libpng15.patch"
+ patch -Np0 -i "$srcdir/gcc46_default_ctors.patch"
+ patch -Np0 -i "$srcdir/kompozer_gcc_4.7.patch"
+ patch -Np0 -i "$srcdir/any_kernel_26_plus.patch"
+ patch -Np0 -i "$srcdir/NS_IMETHOD_i686.patch"
+
+ make -f client.mk build
+}
+
+package() {
+ cd "$srcdir/obj-kompozer"
+
+ make DESTDIR=$pkgdir install
+ install -m755 -dD "$pkgdir/usr/share/applications/"
+ install -m644 "$srcdir/kompozer.desktop" "$pkgdir/usr/share/applications/"
+
+ mkdir -p "$pkgdir/usr/share/pixmaps/"
+ ln -s "/usr/lib/kompozer/icons/mozicon256.png" "$pkgdir/usr/share/pixmaps/kompozer.png"
+ ln -s "/usr/lib/kompozer/icons/mozicon50.xpm" "$pkgdir/usr/share/pixmaps/kompozer.xpm"
+}
diff --git a/pcr/kompozer/any_kernel_26_plus.patch b/pcr/kompozer/any_kernel_26_plus.patch
new file mode 100644
index 000000000..69610ef3f
--- /dev/null
+++ b/pcr/kompozer/any_kernel_26_plus.patch
@@ -0,0 +1,31 @@
+--- security/coreconf/config.mk 2009-05-02 17:42:18.000000000 +0100
++++ security/coreconf/config.mk 2012-05-22 00:08:39.000000000 +0100
+@@ -63,7 +63,7 @@
+ #######################################################################
+
+ TARGET_OSES = FreeBSD BSD_OS NetBSD OpenUNIX OS2 QNX Darwin BeOS OpenBSD \
+- OpenVMS AIX
++ OpenVMS AIX Linux
+
+ ifeq (,$(filter-out $(TARGET_OSES),$(OS_TARGET)))
+ include $(CORE_DEPTH)/coreconf/$(OS_TARGET).mk
+--- security/coreconf/Linux.mk 2009-05-02 17:42:18.000000000 +0100
++++ security/coreconf/Linux.mk 2012-05-22 00:36:03.533374797 +0100
+@@ -176,3 +176,17 @@
+ # Always set CPU_TAG on Linux, OpenVMS, WINCE.
+ #
+ CPU_TAG = _$(CPU_ARCH)
++
++#
++#Try to compile with any kernel version 2.6 and above.
++#
++DSO_LDOPTS += -Wl,-z,defs
++
++OS_REL_CFLAGS += -DLINUX2_1
++MKSHLIB = $(CC) $(DSO_LDOPTS) -Wl,-soname -Wl,$(@:$(OBJDIR)/%.so=%.so)
++
++ifdef MAPFILE
++ MKSHLIB += -Wl,--version-script,$(MAPFILE)
++endif
++PROCESS_MAP_FILE = grep -v ';-' $< | \
++ sed -e 's,;+,,' -e 's; DATA ;;' -e 's,;;,,' -e 's,;.*,;,' > $@
diff --git a/pcr/kompozer/gcc46_default_ctors.patch b/pcr/kompozer/gcc46_default_ctors.patch
new file mode 100644
index 000000000..7f3fa7810
--- /dev/null
+++ b/pcr/kompozer/gcc46_default_ctors.patch
@@ -0,0 +1,22 @@
+--- intl/unicharutil/util/nsUnicharUtils.h 2011-05-10 17:02:12.472642196 +0200
++++ intl/unicharutil/util/nsUnicharUtils.h 2011-05-10 17:02:50.656034735 +0200
+@@ -64,6 +64,9 @@
+ : public nsStringComparator
+ {
+ public:
++ nsCaseInsensitiveStringComparator()
++ {
++ }
+ virtual int operator()( const PRUnichar*, const PRUnichar*, PRUint32 aLength ) const;
+ virtual int operator()( PRUnichar, PRUnichar ) const;
+ };
+--- toolkit/xre/nsAppRunner.cpp 2011-05-10 17:26:05.853608464 +0200
++++ toolkit/xre/nsAppRunner.cpp 2011-05-10 17:26:15.079221177 +0200
+@@ -491,6 +491,7 @@
+
+ {
+ public:
++ nsXULAppInfo() {}
+ NS_DECL_ISUPPORTS_INHERITED
+ NS_DECL_NSIXULAPPINFO
+ NS_DECL_NSIXULRUNTIME
diff --git a/pcr/kompozer/kompozer-libpng14.patch b/pcr/kompozer/kompozer-libpng14.patch
new file mode 100644
index 000000000..224bc7f61
--- /dev/null
+++ b/pcr/kompozer/kompozer-libpng14.patch
@@ -0,0 +1,17 @@
+diff -Naur mozilla/modules/libpr0n/encoders/png/nsPNGEncoder.cpp{-,}
+--- mozilla/modules/libpr0n/encoders/png/nsPNGEncoder.cpp- 2010-06-10 19:34:09.000000000 -0700
++++ modules/libpr0n/encoders/png/nsPNGEncoder.cpp 2010-06-10 19:35:13.000000000 -0700
+@@ -111,9 +111,9 @@
+
+ // initialize
+ png_struct* png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING,
+- png_voidp_NULL,
+- png_error_ptr_NULL,
+- png_error_ptr_NULL);
++ NULL,
++ NULL,
++ NULL);
+ if (! png_ptr)
+ return NS_ERROR_OUT_OF_MEMORY;
+ png_info* info_ptr = png_create_info_struct(png_ptr);
+
diff --git a/pcr/kompozer/kompozer-libpng15.patch b/pcr/kompozer/kompozer-libpng15.patch
new file mode 100644
index 000000000..f236e402a
--- /dev/null
+++ b/pcr/kompozer/kompozer-libpng15.patch
@@ -0,0 +1,64 @@
+diff -urp mozilla.orig/modules/libpr0n/decoders/png/nsPNGDecoder.cpp mozilla/modules/libpr0n/decoders/png/nsPNGDecoder.cpp
+--- mozilla.orig/modules/libpr0n/decoders/png/nsPNGDecoder.cpp 2011-11-14 21:55:42.513856274 +0000
++++ modules/libpr0n/decoders/png/nsPNGDecoder.cpp 2011-11-14 22:15:35.899962674 +0000
+@@ -171,7 +171,7 @@ static NS_METHOD ReadDataOut(nsIInputStr
+ }
+
+ // we need to do the setjmp here otherwise bad things will happen
+- if (setjmp(decoder->mPNG->jmpbuf)) {
++ if (setjmp (png_jmpbuf(decoder->mPNG))) {
+ png_destroy_read_struct(&decoder->mPNG, &decoder->mInfo, NULL);
+
+ decoder->mError = PR_TRUE;
+@@ -227,7 +227,7 @@ info_callback(png_structp png_ptr, png_i
+ if (width > MOZ_PNG_MAX_DIMENSION || height > MOZ_PNG_MAX_DIMENSION) {
+ nsPNGDecoder *decoder = NS_STATIC_CAST(nsPNGDecoder*,
+ png_get_progressive_ptr(png_ptr));
+- longjmp(decoder->mPNG->jmpbuf, 1);
++ longjmp(png_jmpbuf(decoder->mPNG), 1);
+ }
+ #undef MOZ_PNG_MAX_DIMENSION
+
+@@ -307,7 +307,7 @@ info_callback(png_structp png_ptr, png_i
+
+ decoder->mImage = do_CreateInstance("@mozilla.org/image/container;1");
+ if (!decoder->mImage)
+- longjmp(decoder->mPNG->jmpbuf, 5); // NS_ERROR_OUT_OF_MEMORY
++ longjmp(png_jmpbuf(decoder->mPNG), 5); // NS_ERROR_OUT_OF_MEMORY
+
+ decoder->mImageLoad->SetImage(decoder->mImage);
+
+@@ -319,7 +319,7 @@ info_callback(png_structp png_ptr, png_i
+
+ decoder->mFrame = do_CreateInstance("@mozilla.org/gfx/image/frame;2");
+ if (!decoder->mFrame)
+- longjmp(decoder->mPNG->jmpbuf, 5); // NS_ERROR_OUT_OF_MEMORY
++ longjmp(png_jmpbuf(decoder->mPNG), 5); // NS_ERROR_OUT_OF_MEMORY
+
+ gfx_format format;
+
+@@ -341,7 +341,7 @@ info_callback(png_structp png_ptr, png_i
+ // then initalize the frame and append it to the container
+ nsresult rv = decoder->mFrame->Init(0, 0, width, height, format, 24);
+ if (NS_FAILED(rv))
+- longjmp(decoder->mPNG->jmpbuf, 5); // NS_ERROR_OUT_OF_MEMORY
++ longjmp(png_jmpbuf(decoder->mPNG), 5); // NS_ERROR_OUT_OF_MEMORY
+
+ decoder->mImage->AppendFrame(decoder->mFrame);
+
+@@ -362,7 +362,7 @@ info_callback(png_structp png_ptr, png_i
+ decoder->ibpr = bpr;
+ decoder->interlacebuf = (PRUint8 *)nsMemory::Alloc(decoder->ibpr*height);
+ if (!decoder->interlacebuf) {
+- longjmp(decoder->mPNG->jmpbuf, 5); // NS_ERROR_OUT_OF_MEMORY
++ longjmp(png_jmpbuf(decoder->mPNG), 5); // NS_ERROR_OUT_OF_MEMORY
+ }
+ }
+
+@@ -555,7 +555,7 @@ void
+ error_callback(png_structp png_ptr, png_const_charp error_msg)
+ {
+ PR_LOG(gPNGLog, PR_LOG_ERROR, ("libpng error: %s\n", error_msg));
+- longjmp(png_ptr->jmpbuf, 1);
++ longjmp(png_jmpbuf(png_ptr), 1);
+ }
diff --git a/pcr/kompozer/kompozer.desktop b/pcr/kompozer/kompozer.desktop
new file mode 100644
index 000000000..c395f9af7
--- /dev/null
+++ b/pcr/kompozer/kompozer.desktop
@@ -0,0 +1,11 @@
+[Desktop Entry]
+Exec=kompozer
+Icon=kompozer
+Type=Application
+Terminal=false
+Name=KompoZer
+GenericName=Web Authoring System
+Comment=WYSIWYG Web Editor
+MimeType=text/html;text/xml;text/css;text/x-javascript;text/javascript;application/xhtml+xml;
+Categories=Development;WebDevelopment;Network;
+
diff --git a/pcr/kompozer/kompozer_gcc_4.7.patch b/pcr/kompozer/kompozer_gcc_4.7.patch
new file mode 100644
index 000000000..196609fce
--- /dev/null
+++ b/pcr/kompozer/kompozer_gcc_4.7.patch
@@ -0,0 +1,107 @@
+--- xpcom/glue/nsBaseHashtable.h 2009-05-02 17:43:39.000000000 +0100
++++ xpcom/glue/nsBaseHashtable.h 2012-07-27 13:43:55.000000000 +0100
+@@ -123,7 +123,7 @@
+ */
+ PRBool Get(KeyType aKey, UserDataType* pData) const
+ {
+- EntryType* ent = GetEntry(aKey);
++ EntryType* ent = this->GetEntry(aKey);
+
+ if (!ent)
+ return PR_FALSE;
+@@ -142,7 +142,7 @@
+ */
+ PRBool Put(KeyType aKey, UserDataType aData)
+ {
+- EntryType* ent = PutEntry(aKey);
++ EntryType* ent = this->PutEntry(aKey);
+
+ if (!ent)
+ return PR_FALSE;
+@@ -156,7 +156,7 @@
+ * remove the data for the associated key
+ * @param aKey the key to remove from the hashtable
+ */
+- void Remove(KeyType aKey) { RemoveEntry(aKey); }
++ void Remove(KeyType aKey) { this->RemoveEntry(aKey); }
+
+ /**
+ * function type provided by the application for enumeration.
+--- xpcom/glue/nsClassHashtable.h 2009-05-02 17:43:39.000000000 +0100
++++ xpcom/glue/nsClassHashtable.h 2012-07-27 13:15:10.000000000 +0100
+@@ -98,7 +98,7 @@
+ nsClassHashtable<KeyClass,T>::Get(KeyType aKey, T** retVal) const
+ {
+ typename nsBaseHashtable<KeyClass,nsAutoPtr<T>,T*>::EntryType* ent =
+- GetEntry(aKey);
++ this->GetEntry(aKey);
+
+ if (ent)
+ {
+@@ -126,7 +126,7 @@
+ PR_Lock(this->mLock);
+
+ typename nsBaseHashtableMT<KeyClass,nsAutoPtr<T>,T*>::EntryType* ent =
+- GetEntry(aKey);
++ this->GetEntry(aKey);
+
+ if (ent)
+ {
+--- xpcom/glue/nsInterfaceHashtable.h 2009-05-02 17:43:39.000000000 +0100
++++ xpcom/glue/nsInterfaceHashtable.h 2012-07-27 13:30:08.000000000 +0100
+@@ -111,7 +111,7 @@
+ (KeyType aKey, UserDataType* pInterface) const
+ {
+ typename nsBaseHashtable<KeyClass, nsCOMPtr<Interface>, Interface*>::EntryType* ent =
+- GetEntry(aKey);
++ this->GetEntry(aKey);
+
+ if (ent)
+ {
+@@ -139,7 +139,7 @@
+ (KeyType aKey, PRBool* aFound) const
+ {
+ typename nsBaseHashtable<KeyClass, nsCOMPtr<Interface>, Interface*>::EntryType* ent =
+- GetEntry(aKey);
++ this->GetEntry(aKey);
+
+ if (ent)
+ {
+@@ -167,7 +167,7 @@
+ PR_Lock(this->mLock);
+
+ typename nsBaseHashtableMT<KeyClass, nsCOMPtr<Interface>, Interface*>::EntryType* ent =
+- GetEntry(aKey);
++ this->GetEntry(aKey);
+
+ if (ent)
+ {
+--- xpcom/glue/nsRefPtrHashtable.h 2009-05-02 17:43:39.000000000 +0100
++++ xpcom/glue/nsRefPtrHashtable.h 2012-07-27 13:52:48.000000000 +0100
+@@ -112,7 +112,7 @@
+ (KeyType aKey, UserDataType* pRefPtr) const
+ {
+ typename nsBaseHashtable<KeyClass, nsRefPtr<RefPtr>, RefPtr*>::EntryType* ent =
+- GetEntry(aKey);
++ this->GetEntry(aKey);
+
+ if (ent)
+ {
+@@ -140,7 +140,7 @@
+ (KeyType aKey, PRBool* aFound) const
+ {
+ typename nsBaseHashtable<KeyClass, nsRefPtr<RefPtr>, RefPtr*>::EntryType* ent =
+- GetEntry(aKey);
++ this->GetEntry(aKey);
+
+ if (ent)
+ {
+@@ -168,7 +168,7 @@
+ PR_Lock(this->mLock);
+
+ typename nsBaseHashtableMT<KeyClass, nsRefPtr<RefPtr>, RefPtr*>::EntryType* ent =
+- GetEntry(aKey);
++ this->GetEntry(aKey);
+
+ if (ent)
+ {
diff --git a/pcr/kompozer/mozconfig.patch b/pcr/kompozer/mozconfig.patch
new file mode 100644
index 000000000..bebad1d20
--- /dev/null
+++ b/pcr/kompozer/mozconfig.patch
@@ -0,0 +1,142 @@
+--- .mozconfig 2009-04-26 16:19:33.000000000 +0100
++++ .mozconfig 1970-01-01 10:14:21.000000000 +0100
+@@ -1,85 +1,80 @@
+-# Pulling Composer from the 1.8 Mozilla branch (cvs)
+-#$ cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co -r MOZILLA_1_8_BRANCH mozilla/client.mk
+-#$ cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co -r FIREFOX_2_0_0_20_RELEASE mozilla/client.mk
+-#$ cd mozilla
+-#$ make -f client.mk checkout MOZ_CO_PROJECT=composer
+-#$ find . -name CVS -prune -exec rm -rf {} \;
+-#$ find . -name .cvsignore -prune -exec rm -rf {} \;
+-
+-# Building Composer on the 1.8 Mozilla branch
+-# Note: on Ubuntu 8.04, requires libgtk2-dev, libxt-dev, libidl-dev
+-# + dbus-glib-1-dev, curl (for Mozilla 1.9+)
+-#$ make -f client.mk build
+-#
++# Build configuration script for Debian
++
++# build in a separate directory (optional)
++#mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/../obj-@CONFIG_GUESS@
+
+-export BUILD_OFFICIAL=1
+ export MOZILLA_OFFICIAL=1
++export BUILD_OFFICIAL=1
++
++export MOZ_STANDALONE_COMPOSER=1
++mk_add_options MOZ_STANDALONE_COMPOSER=1
++
++# if you want don't want to use gcc and g or want to use
++# a specific version of the compilers, specify it in the
++# two following lines and uncomment them
++#export CC="gcc-3.0"
++#export CXX="g-3.0"
++
++# Uncomment the 3 following lines on Debian
++#export OS_LIBS="-lc -lpthread"
++#export CFLAGS="-DDEBIAN"
++#export CXXFLAGS="-DDEBIAN"
++mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/../obj-kompozer
+
+-mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/../obj-@CONFIG_GUESS@
+-#mk_add_options MOZ_CO_PROJECT=composer
++# build the standalone composer, obviously
++mk_add_options MOZ_CO_PROJECT=composer
+ ac_add_options --enable-application=composer
+
++# change these two line to build in debug mode
+ ac_add_options --enable-optimize
++ac_add_options --with-pthreads
+ ac_add_options --disable-debug
+-#ac_add_options --disable-optimize
+-#ac_add_options --enable-debug
+-
+-#ac_add_options --disable-shared
+-#ac_add_options --enable-static
+-#ac_add_options --disable-libxul
+-#ac_add_options --disable-xpfe-components
+-ac_add_options --enable-xpfe-components
+-ac_add_options --disable-tests
+-ac_add_options --disable-installer
+-
+-#ac_add_options --disable-libxul
+
+-#ac_add_options --disable-crashreporter
++# adapt the following lines according to your distribution
+
+-#ac_add_options --enable-optimize
+-#ac_add_options --enable-default-toolkit=gtk2
+-##ac_add_options --enable-default-toolkit=cairo-gtk2
+-#ac_add_options --enable-xft
+-#ac_add_options --disable-canvas
+-##ac_add_options --disable-cairo
+-
+-#ac_add_options --enable-extensions="default inspector venkman"
+-ac_add_options --enable-extensions="default spellcheck"
+-#ac_add_options --enable-inspector-apis
+-
+-##ac_add_options --enable-extensions=wallet,xml-rpc,xmlextras,pref,universalchardet,spellcheck
+-##ac_add_options --enable-extensions=xml-rpc,xmlextras,pref,universalchardet
+-#ac_add_options --disable-extensions
+-## (now by default) ac_add_options --enable-necko-protocols=http,ftp,file,jar,viewsource,res,data
+-ac_add_options --enable-necko-protocols=http,ftp,file,jar,viewsource,res,data
+-##ac_add_options --enable-mathml
+-#ac_add_options --enable-svg
+-
+-#ac_add_options --disable-installer
+-#ac_add_options --disable-javaxpcom
+-#ac_add_options --disable-activex
+-#ac_add_options --disable-activex-scripting
++ac_add_options --prefix=/usr
++ac_add_options --libdir=/usr/lib
++ac_add_options --disable-tests
++ac_add_options --enable-necko-protocols=http,ftp,file,jar,viewsource,res,data
+
+-# Ubuntu 7.10 default flags: https://wiki.mozilla.org/Linux/Compiler_Options
+ ac_add_options --enable-default-toolkit=gtk2
+ ac_add_options --enable-xft
+ ac_add_options --enable-pango
+ ac_add_options --enable-postscript
+ ac_add_options --disable-xprint
+
+-ac_add_options --enable-mathml
++#ac_add_options --enable-mathml
+ ac_add_options --enable-svg
+-ac_add_options --enable-svg-renderer=cairo
++#ac_add_options --enable-svg-renderer=cairo
+ ac_add_options --enable-system-cairo
+ ac_add_options --enable-canvas
+
+-ac_add_options --with-system-png=/usr
+-ac_add_options --with-system-jpeg=/usr
+-ac_add_options --with-system-zlib=/usr
++ac_add_options --with-system-png
++ac_add_options --with-system-jpeg
++ac_add_options --with-system-zlib
+
+ ac_add_options --enable-gnomevfs
+-ac_add_options --enable-xinerama
+ ac_add_options --enable-single-profile
+ ac_add_options --disable-profilesharing
+ ac_add_options --enable-system-myspell
+
++ac_add_options --disable-installer
++ac_add_options --disable-xpfe-components
++ac_add_options --with-default-mozilla-five-home=/usr/lib/kompozer
++ac_add_options --with-distribution-id=aur.archlinux.org
++ac_add_options --without-system-nspr
++ac_add_options --without-system-nss
++
++#ac_add_options --disable-elf-dynstr-gc
++#ac_add_options --disable-gtktest
++ac_add_options --enable-strip
++#ac_add_options --disable-strip-lib
++ac_add_options --disable-updater
++
++ac_add_options --enable-xinerama
++ac_add_options --enable-xpcom-fastload
++
++ac_cv_visibility_pragma=no
++
++
++
diff --git a/pcr/lessc/PKGBUILD b/pcr/lessc/PKGBUILD
new file mode 100644
index 000000000..ec9f8cf90
--- /dev/null
+++ b/pcr/lessc/PKGBUILD
@@ -0,0 +1,29 @@
+# Contributor: Massimiliano Torromeo <massimiliano.torromeo@gmail.com>
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname=lessc
+pkgver=1.3.1
+pkgrel=1
+_commit=9a46f67f44ca908f7da36036c5b3ae83ef8188dc
+pkgdesc="A standalone compiler for the LESS CSS language."
+arch=('any')
+url="http://lesscss.org/"
+license=('Apache')
+depends=('nodejs')
+source=($pkgname-$pkgver.tar.gz::https://github.com/cloudhead/less.js/archive/$_commit.tar.gz)
+
+build() {
+ cd "$srcdir/less.js-$_commit"
+ make less
+}
+
+package() {
+ cd "$srcdir/less.js-$_commit"
+ install -d "$pkgdir/usr/lib/node"
+ install -d "$pkgdir/usr/bin"
+ cp -r lib/less "$pkgdir/usr/lib/node/less"
+ ln -s "node/less" "$pkgdir/usr/lib/less"
+ install -Dm755 "bin/lessc" "$pkgdir/usr/bin/lessc"
+}
+
+sha256sums=('43a2df3466c08e6d30ae0cd847febf981ef5d15d4d9d6ce86c1b1901154bb22a')
diff --git a/pcr/libast/LICENSE.txt b/pcr/libast/LICENSE.txt
new file mode 100644
index 000000000..67c75f783
--- /dev/null
+++ b/pcr/libast/LICENSE.txt
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 1997-2004, Michael Jennings
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to
+ * deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies of the Software, its documentation and marketing & publicity
+ * materials, and acknowledgment shall be given in the documentation, materials
+ * and software packages that this Software was used.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+ * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
diff --git a/pcr/libast/PKGBUILD b/pcr/libast/PKGBUILD
new file mode 100644
index 000000000..ede9ab2ce
--- /dev/null
+++ b/pcr/libast/PKGBUILD
@@ -0,0 +1,33 @@
+# $Id: PKGBUILD 40906 2011-03-01 14:45:04Z andrea $
+# Contributor: Daniel J Griffiths <ghost1227@archlinux.us>
+# Contributor: Adam 'battlemidget' Stokes <adam.stokes@gmail.com>
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname=libast
+pkgver=0.7
+pkgrel=3
+pkgdesc="The Library of Assorted Spiffy Things."
+arch=('i686' 'x86_64')
+url="http://eterm.sourceforge.net"
+license=('BSD')
+depends=('imlib2' 'pcre' 'libsm')
+options=('!libtool')
+source=(http://www.eterm.org/download/${pkgname}-${pkgver}.tar.gz LICENSE.txt)
+md5sums=('a9ec3b2da317f35869316e6d9571d296'
+ '97071898559acc4f900ceb6cb9579492')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ ./configure --prefix=/usr --with-x
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ make prefix=${pkgdir}/usr install
+ install -Dm644 ${srcdir}/LICENSE.txt ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+}
+md5sums=('a9ec3b2da317f35869316e6d9571d296'
+ '97071898559acc4f900ceb6cb9579492')
diff --git a/pcr/libcacard/PKGBUILD b/pcr/libcacard/PKGBUILD
new file mode 100755
index 000000000..0886b9847
--- /dev/null
+++ b/pcr/libcacard/PKGBUILD
@@ -0,0 +1,29 @@
+# Contributor: Jameson Pugh <imntreal@gmail.com>
+# Maintainer : Parabola / GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname=libcacard
+pkgver=0.1.2
+pkgrel=3
+pkgdesc="Virtual Smart Card Emulator"
+arch=('x86_64' 'i686')
+url="http://spice-space.org"
+license=('GPL')
+options=('!libtool')
+depends=('nss')
+source=(http://spice-space.org/download/libcacard/$pkgname-$pkgver.tar.bz2)
+md5sums=('ca61fd1d7feaa09e37011daac95c0168')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ make DESTDIR="$pkgdir/" install
+}
+
+# vim:set ts=2 sw=2 et:
+md5sums=('ca61fd1d7feaa09e37011daac95c0168')
diff --git a/pcr/libdshconfig/PKGBUILD b/pcr/libdshconfig/PKGBUILD
new file mode 100644
index 000000000..adf9d18b2
--- /dev/null
+++ b/pcr/libdshconfig/PKGBUILD
@@ -0,0 +1,20 @@
+# Contributor: SkiltZ <skiltz@free.fr>
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname=libdshconfig
+pkgver=0.20.9
+pkgrel=2
+pkgdesc="Library for parsing dsh-style configuration files. Required by dsh and other applications."
+arch=(i686 x86_64)
+url="http://www.netfort.gr.jp/~dancer/software/dsh.html.en"
+license=('GPL')
+depends=('glibc')
+source=(http://www.netfort.gr.jp/~dancer/software/downloads/libdshconfig-$pkgver.tar.gz)
+
+
+build() {
+ cd $startdir/src/$pkgname-$pkgver
+ ./configure --prefix=/usr
+ make || return 1
+ make prefix=$startdir/pkg/usr install
+ }
diff --git a/pcr/libibus/PKGBUILD b/pcr/libibus/PKGBUILD
new file mode 100644
index 000000000..1a934121a
--- /dev/null
+++ b/pcr/libibus/PKGBUILD
@@ -0,0 +1,44 @@
+# $Id$
+# Contributor: Felix Yan <felixonmars@gmail.com>
+# Contributor: Rainy <rainylau(at)gmail(dot)com>
+# Contributor: Lee.MaRS <leemars at gmail dot com>
+# Contributor: Daniel J Griffiths <ghost1227@archlinux.us>
+# Contributor: Brad Fanella <bradfanella@archlinux.us>
+# Maintainer : Parabola GNU / Linux-libre Aurélien Desbrières <aurelien@cwb.io>
+
+_pkgbase=ibus
+pkgname=lib$_pkgbase
+pkgver=1.4.99.20121109
+pkgrel=1
+pkgdesc="Library for Next Generation Input Bus for Linux"
+arch=('i686' 'x86_64')
+url="http://ibus.googlecode.com"
+license=('LGPL')
+depends=('glib2')
+makedepends=('gobject-introspection' 'dconf' 'iso-codes' 'intltool' 'gtk2' 'gtk3')
+options=('!libtool')
+provides=("$_pkgbase=$pkgver")
+conflicts=('ibus')
+source=(http://ibus.googlecode.com/files/${_pkgbase}-${pkgver}.tar.gz)
+
+build() {
+ cd "$srcdir/${_pkgbase}-${pkgver}"
+ export PYTHON=python2
+ ./configure \
+ --prefix=/usr \
+ --libexecdir=/usr/lib/ibus \
+ --sysconfdir=/etc \
+ --disable-gconf \
+ --enable-dconf \
+ --disable-memconf \
+ --enable-ui
+ make
+}
+
+package() {
+ cd "$srcdir/${_pkgbase}-${pkgver}"
+ make DESTDIR="${pkgdir}" install-pkgconfigDATA
+ cd src
+ make DESTDIR="${pkgdir}" install
+}
+md5sums=('be482479357210283e91a47f43a0a0fe')
diff --git a/pcr/libnatpmp/PKGBUILD b/pcr/libnatpmp/PKGBUILD
new file mode 100644
index 000000000..0fa0ff469
--- /dev/null
+++ b/pcr/libnatpmp/PKGBUILD
@@ -0,0 +1,28 @@
+# Maintainer: Pierre Bourdon <delroth@gmail.com>
+# Maintainer: Parabola Gnu / Linux-libre Aurélien Desbrières
+
+pkgname=libnatpmp
+pkgver=20120821
+pkgrel=1
+pkgdesc="A portable and fully compliant implementation of the NAT-PMP protocol"
+arch=('i686' 'x86_64')
+url="http://miniupnp.free.fr/libnatpmp.html"
+license=('custom:BSD')
+depends=('glibc')
+makedepends=()
+source=(http://miniupnp.free.fr/files/download.php?file=libnatpmp-$pkgver.tar.gz)
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make INSTALLPREFIX="$pkgdir/usr" \
+ INSTALLDIRINC="$pkgdir/usr/include/libnatpmp" install
+
+ # Needed by some packages
+ install -m 644 getgateway.h declspec.h "$pkgdir/usr/include/libnatpmp"
+}
+md5sums=('22a1225b890471a7750a9bf26eb863f7')
diff --git a/pcr/libpng12/PKGBUILD b/pcr/libpng12/PKGBUILD
new file mode 100644
index 000000000..df75ddeaa
--- /dev/null
+++ b/pcr/libpng12/PKGBUILD
@@ -0,0 +1,48 @@
+# $Id: PKGBUILD 58551 2009-11-08 22:37:12Z eric $
+# Contributor: dorphell <archlinux.org: dorphell>
+# Contributor: Travis Willard <archlinux.org: travis>
+# Contributor: Douglas Soares de Andrade <archlinux.org: douglas>
+# Maintainer: Jesse Jaara <gmail.com: jesse.jaara>
+
+pkgname=libpng12
+_realname=libpng
+pkgver=1.2.50
+pkgrel=1
+pkgdesc="A collection of routines used to create PNG format graphics files"
+arch=('i686' 'x86_64')
+url="http://www.libpng.org/pub/png/libpng.html"
+license=('custom')
+depends=('zlib')
+options=('!libtool')
+source=("http://sourceforge.net/projects/libpng/files/libpng-${pkgver}.tar.xz"
+ "http://sourceforge.net/projects/apng/files/libpng/libpng12/libpng-${pkgver}-apng.patch.gz")
+
+build() {
+ cd "${srcdir}/${_realname}-${pkgver}"
+
+ patch -Np0 -i "${srcdir}/libpng-${pkgver}-apng.patch"
+
+ libtoolize --force --copy
+ aclocal
+ autoconf
+ automake --add-missing
+
+ ./configure --prefix=/usr
+
+ make ECHO=echo
+}
+
+package() {
+ cd "${srcdir}/${_realname}-${pkgver}"
+
+ make ECHO=echo DESTDIR="${pkgdir}" install
+
+ rm -rf "${pkgdir}/usr/share"
+ rm -rf "${pkgdir}/usr/bin/libpng-config"
+ rm -rf "${pkgdir}/usr/lib/"{libpng.so,libpng.a}
+ rm -fr "${pkgdir}/usr/lib/pkgconfig/libpng.pc"
+ rm -rf "${pkgdir}/usr/include/"{pngconf.h,png.h}
+}
+
+md5sums=('a3e00fccbfe356174ab515b5c00641c7'
+ 'b06ac3f6a6f982abc2036359665e82a9')
diff --git a/pcr/libtxc_dxtn/PKGBUILD b/pcr/libtxc_dxtn/PKGBUILD
new file mode 100644
index 000000000..d491ed6fb
--- /dev/null
+++ b/pcr/libtxc_dxtn/PKGBUILD
@@ -0,0 +1,29 @@
+# Contributor: Jan "heftig" Steffens <jan.steffens@gmail.com>
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname=libtxc_dxtn
+pkgver=1.0.1
+pkgrel=2
+arch=(i686 x86_64)
+pkgdesc="Texture compression library for Mesa"
+url="http://dri.freedesktop.org/wiki/S3TC"
+license=(custom:BSD)
+depends=(mesa)
+options=(!libtool)
+source=(http://people.freedesktop.org/~cbrill/$pkgname/$pkgname-$pkgver.tar.bz2)
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make DESTDIR="$pkgdir" install
+
+ # License
+ mkdir -p "$pkgdir/usr/share/licenses/$pkgname"
+ sed -n '5,22{s|^ \* \?||;p}' txc_dxtn.h \
+ > "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
+}
diff --git a/pcr/liburcu/PKGBUILD b/pcr/liburcu/PKGBUILD
new file mode 100644
index 000000000..ced12e005
--- /dev/null
+++ b/pcr/liburcu/PKGBUILD
@@ -0,0 +1,22 @@
+# Maintainer : Parabola GNU / Linux-libre Aurélien Desbrières <aurelien@cwb.io>
+
+pkgname=liburcu
+pkgver=0.7.5
+pkgrel=1
+pkgdesc="LGPLv2.1 userspace RCU (read-copy-update) library"
+arch=('i686' 'x86_64')
+url="http://lttng.org/urcu"
+license=('LGPL2.1')
+source=(http://lttng.org/files/urcu/userspace-rcu-${pkgver}.tar.bz2)
+md5sums=('2c5083fac662ecd38d6076dffa86259b')
+
+build() {
+ cd ${srcdir}/userspace-rcu-${pkgver}
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd ${srcdir}/userspace-rcu-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/pcr/maruku/PKGBUILD b/pcr/maruku/PKGBUILD
new file mode 100644
index 000000000..a647e5a12
--- /dev/null
+++ b/pcr/maruku/PKGBUILD
@@ -0,0 +1,24 @@
+# Contributor: Adam Lloyd <lloyda2 (at) rpi (dot) edu>
+# Maintainter : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname=maruku
+pkgver=0.6.0
+pkgrel=1
+pkgdesc="A Markdown-superset interpreter"
+arch=(any)
+url="http://maruku.rubyforge.org/"
+license=('GPL2')
+depends=(ruby ruby-syntax)
+makedepends=(rubygems)
+source=(http://gems.rubyforge.org/gems/maruku-$pkgver.gem)
+noextract=(maruku-$pkgver.gem)
+md5sums=('6e2575e43b675eb4e15bbcee0fd1fd29')
+
+build() {
+ cd $srcdir
+ local _gemdir="$(ruby -rubygems -e'puts Gem.default_dir')"
+ gem install --ignore-dependencies -i "$pkgdir$_gemdir" maruku-$pkgver.gem
+}
+
+# vim:set ts=2 sw=2 et:
+md5sums=('6e2575e43b675eb4e15bbcee0fd1fd29')
diff --git a/pcr/mit-scheme/PKGBUILD b/pcr/mit-scheme/PKGBUILD
new file mode 100644
index 000000000..f769acfc8
--- /dev/null
+++ b/pcr/mit-scheme/PKGBUILD
@@ -0,0 +1,80 @@
+# Contributor: peter feigl <peter.feigl@gmail.com>
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname=mit-scheme
+pkgver=9.1.1
+pkgrel=1
+pkgdesc="MIT/GNU Scheme"
+arch=('x86_64' i686)
+license=('GPL')
+url="http://www.gnu.org/software/mit-scheme/"
+groups=
+provides=('mit-scheme')
+depends=('libx11' 'texinfo' 'texlive-core')
+optdepends=('mhash: support for mhash' 'gdbm: support for gdbm'
+ 'postgresql-libs: support for postresql' 'openssl: support for openssl'
+ 'mcrypt: support for mcrypt' 'db: support for berkeley db')
+_my_arch=$(uname -m)
+if [ ${_my_arch} = "x86_64" ]
+then
+_my_arch="x86-64"
+md5sums=('268cb5ac97646f34742828ebc370586d')
+else
+_my_arch="i386"
+md5sums=('e35590a06549d71edba723a719329070')
+fi
+
+source=("http://ftp.gnu.org/gnu/mit-scheme/stable.pkg/${pkgver}/${pkgname}-${pkgver}-${_my_arch}.tar.gz")
+
+build() {
+ cd $startdir/src/${pkgname}-${pkgver}/src
+ ./configure --with-x --enable-native-code --prefix=/usr || return 1
+ make compile-microcode || return 1
+ make DESTDIR=${pkgdir} install || return 1
+ # TODO: add indexer
+ echo Making Documentation
+ cd ../doc && ./configure --prefix=/usr && make -j 1 && make DESTDIR=${pkgdir} install && rm ${pkgdir}/usr/share/info/dir && mv ${pkgdir}/usr/share/man/man1/scheme.1 ${pkgdir}/usr/share/man/man1/mit-scheme.1 || return 0
+}
+
+
+infodir=usr/share/info
+
+filelist=(mit-scheme-ffi.info mit-scheme-imail.info mit-scheme-ref.info mit-scheme-sos.info mit-scheme-user.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 1
+
+ for file in "${filelist[@]}"; do
+
+ install-info --delete "$infodir/$file.gz" "$infodir/dir" 2>/dev/null
+
+ done
+
+}
+
+md5sums=('e35590a06549d71edba723a719329070')
diff --git a/pcr/moblock/MoBlock-nfq.sh.patch b/pcr/moblock/MoBlock-nfq.sh.patch
new file mode 100644
index 000000000..f9136c3c7
--- /dev/null
+++ b/pcr/moblock/MoBlock-nfq.sh.patch
@@ -0,0 +1,53 @@
+--- MoBlock-0.8/MoBlock-nfq.sh.orig 2008-11-30 03:44:02.000000000 -0500
++++ MoBlock-0.8/MoBlock-nfq.sh 2008-12-01 18:56:15.000000000 -0500
+@@ -3,14 +3,10 @@
+ # MoBlock.sh - MoBlock start script
+ # ---------------------------------
+
+-ACTIVATE_CHAINS=1
+-WHITE_TCP_IN=""
+-WHITE_UDP_IN=""
+-WHITE_TCP_OUT=""
+-WHITE_UDP_OUT=""
+-WHITE_TCP_FORWARD=""
+-WHITE_UDP_FORWARD=""
++# Some configuration options have been moved to an external conf file
++# This should make maintenance and upgrading easier
+
++. /etc/moblock/config
+
+ PIDF=/var/run/moblock.pid
+
+@@ -78,6 +74,17 @@
+ iptables -I MOBLOCK_FW -p udp --dport $PORT -j ACCEPT
+ done
+
++# For added IP whitelisting support
++
++for IP in $WHITE_IP_OUT; do
++ iptables -I MOBLOCK_OUT -p all -m iprange --dst-range $IP -j ACCEPT
++done
++for IP in $WHITE_IP_IN; do
++ iptables -I MOBLOCK_IN -p all -m iprange --src-range $IP -j ACCEPT
++done
++for IP in $WHITE_IP_FW; do
++ iptables -I MOBLOCK_FW -p all -m iprange --dst-range $IP -j ACCEPT
++done
+
+ # Loopback traffic fix
+
+@@ -85,7 +92,8 @@
+ iptables -I OUTPUT -p all -o lo -j ACCEPT
+
+ # Here you can change block list and log files
+-./moblock -p /etc/guarding.p2p ./moblock.log
++#./moblock -p /etc/guarding.p2p ./moblock.log
++/usr/bin/moblock -p /etc/moblock/banned.list /var/log/moblock.log >/dev/null 2>&1
+
+ # On exit delete the rules we added
+
+@@ -108,3 +116,4 @@
+ if [ -f $PIDF ]; then
+ rm $PIDF;
+ fi
++
diff --git a/pcr/moblock/PKGBUILD b/pcr/moblock/PKGBUILD
new file mode 100755
index 000000000..15504d1c1
--- /dev/null
+++ b/pcr/moblock/PKGBUILD
@@ -0,0 +1,55 @@
+# Contributor: Kevin Edmonds <edmondskevin@hotmail.com>
+# Contributor: Filip Wojciechowski, filip at loka dot pl
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname=moblock
+pkgver=0.9rc2
+pkgrel=8
+pkgdesc="Console application that blocks connections from/to hosts listed in a file in peerguardian format"
+arch=('i686' 'x86_64')
+url="http://moblock.berlios.de/"
+license=('GPL')
+depends=(libnetfilter_queue iptables)
+backup=(etc/moblock/config)
+install=moblock.install
+source=(http://download.berlios.de/moblock/MoBlock-0.8-i586.tar.bz2 \
+ moblock_0.9_rc2.patch \
+ MoBlock-nfq.sh.patch \
+ moblock_include.patch \
+ config \
+ moblock-update \
+ moblock \
+ moblock.logrotate)
+
+build() {
+ cd $startdir/src/MoBlock-0.8
+
+ # patch to update moblock to the latest cvs version
+ patch -Np1 -i ../moblock_0.9_rc2.patch || return 1
+ # add IP whitelisting and move configs to a separate conf file
+ patch -Np1 -i ../MoBlock-nfq.sh.patch || return 1
+ # necessary to make moblock build with recent kernels
+ patch -Np1 -i ../moblock_include.patch || return 1
+
+ # change the CFLAGS for both i686 and x84_64 builds
+ sed -i "s#-Wall -O.*-ffast-math#$CFLAGS#g" Makefile
+
+ # build
+ make || return 1
+
+ #move the files
+ install -D -m 755 ./MoBlock-nfq.sh $startdir/pkg/usr/bin/moblock-nfq || return 1
+ install -D -m 744 ./moblock $startdir/pkg/usr/bin/moblock || return 1
+ install -D -m 755 ../moblock-update $startdir/pkg/usr/bin/moblock-update || return 1
+ install -D -m 744 ../moblock $startdir/pkg/etc/rc.d/moblock || return 1
+ install -D -m 644 ../config $startdir/pkg/etc/moblock/config || return 1
+ install -D -m 644 ../moblock.logrotate $startdir/pkg/etc/logrotate.d/moblock || return 1
+}
+md5sums=('199967adb48b153be90db10fe21325c5'
+ 'e4e33c515677fa53eaca4616591d4e44'
+ 'e9f3c6b09f5e07dee948450780340ea3'
+ 'b23b5214965df59632de5cec317ddbde'
+ '840bb52a99529305e49212a69c9ced8a'
+ '49a16feb221d4d912cc7200313517f7b'
+ '1bdc949fcff0ce751a5096e489061513'
+ 'a8285fd3e68043cd8d21993d3dbbf9d4')
diff --git a/pcr/moblock/config b/pcr/moblock/config
new file mode 100644
index 000000000..7d7c287cc
--- /dev/null
+++ b/pcr/moblock/config
@@ -0,0 +1,30 @@
+# Original MoBlock configuration options from MoBlock-nfq.sh file
+ACTIVATE_CHAINS=1
+WHITE_TCP_IN=""
+WHITE_UDP_IN=""
+WHITE_TCP_OUT="" # Add "http https" here to prevent moblock from blocking webpages
+WHITE_UDP_OUT=""
+WHITE_TCP_FORWARD=""
+WHITE_UDP_FORWARD=""
+
+# Added IP whitelisting support
+WHITE_IP_IN=""
+WHITE_IP_OUT=""
+WHITE_IP_FW=""
+
+# Individual lists can be disabled by prefixing them with '!'
+# Bluetack blacklists (http://www.bluetack.co.uk)
+BLUETACK=(level1 level2 !level3 !edu ads-trackers-and-bad-pr0n bogon spyware spider Microsoft !proxy hijacked templist !rangetest dshield)
+
+# blocklist.org lists (currently doesn't work)
+#BLOCKLIST=(p2p gov spy ads edu)
+
+# backup lists (might be outdated)
+#PHOENIXLABS=(!p2b.p2b edu.txt spider.txt spyware.txt level1.txt !level2.txt !level3.txt)
+
+# Change to 'yes' if you want to backup up the old list before writing
+# a new one. Only one backup copy will be kept.
+BACKUP_OLD_LIST="no"
+
+# Options passed to wget
+WGET_OPTS="-q"
diff --git a/pcr/moblock/moblock b/pcr/moblock/moblock
new file mode 100755
index 000000000..d88bd2e8d
--- /dev/null
+++ b/pcr/moblock/moblock
@@ -0,0 +1,70 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+case "$1" in
+ start)
+ stat_busy "Starting MoBlock"
+ if [ ! -f /var/run/moblock.pid ]
+ then
+ /usr/bin/moblock-nfq &
+ if [ $? -gt 0 ]
+ then
+ stat_fail
+ else
+ add_daemon moblock
+ stat_done
+ fi
+ else
+ stat_fail
+ fi
+ ;;
+ update)
+ stat_busy "Updating MoBlock block list..."
+ error=0
+ /usr/bin/moblock-update || error=1
+ stat_busy "Updating MoBlock block list"
+ if [ $error -eq 1 ]; then
+ stat_fail
+ else
+ stat_done
+ fi
+ ;;
+ stats)
+ stat_busy "Logging stats to /var/log/MoBlock.stats"
+ PID=`cat /var/run/moblock.pid 2>/dev/null`
+ if [ ! -z "$PID" ]; then
+ /bin/kill -USR2 $PID
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ stat_done
+ fi
+ else
+ stat_fail
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping MoBlock"
+ PID=`cat /var/run/moblock.pid 2>/dev/null`
+ if [ ! -z "$PID" ]; then
+ /bin/kill $PID
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon moblock
+ stat_done
+ fi
+ else
+ stat_fail
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 2
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart|update|stats}"
+esac
diff --git a/pcr/moblock/moblock-update b/pcr/moblock/moblock-update
new file mode 100755
index 000000000..aae861d13
--- /dev/null
+++ b/pcr/moblock/moblock-update
@@ -0,0 +1,174 @@
+#!/bin/bash
+
+. /etc/moblock/config
+
+CONF_DIR=/etc/moblock
+TEMP_DIR=$(/usr/bin/mktemp -t -d moblock-updateXXXXXXXX)
+LIST_FILE=banned.list
+
+USECOLOR="no"
+. /etc/rc.d/functions
+PREFIX_REG=" >"
+PREFIX_HL="::"
+
+function extract()
+{
+ /usr/bin/find $TEMP_DIR -type f -name '*.gz' -o -name '*.zip' |\
+ while read N
+ do
+ case "$N" in
+ *.zip) /usr/bin/unzip -oqq "$N" 2>/dev/null
+ if [ $? -gt 0 ]; then
+ rm -f "$N"
+ return 1
+ else
+ rm -f "$N"
+ fi
+ ;;
+ *.gz) /bin/gunzip -f "$N" 2>/dev/null
+ if [ $? -gt 0 ]; then
+ rm -f "$N"
+ return 1
+ fi
+ ;;
+ *) continue
+ ;;
+ esac
+ done
+ return 0
+}
+
+cd $TEMP_DIR
+
+printf "${C_SEPARATOR} ------------------------------\n"
+printhl "Downloading and extracting files:\n"
+
+# Bluetack lists (with fallback)
+for i in ${BLUETACK[@]}
+do
+ if [ $(echo $i | /bin/grep '^[^\!]' | /usr/bin/wc -l) -eq 1 ]; then
+ stat_busy "BLUETACK '${i}'... "
+ /usr/bin/wget ${WGET_OPTS} "http://www.bluetack.co.uk/config/${i}.gz" && extract
+ if [ $? -gt 0 ] || [ ! -f ${i} ]; then
+ stat_fail
+ bfile=$i
+ if [ "$bfile" = "ads-trackers-and-bad-pr0n" ]; then
+ bfile="ads"
+ elif [ "$bfile" = "Microsoft" ];then
+ bfile="microsoft"
+ fi
+ stat_busy "[!!] BLUETACK '${i}' (fallback link)... "
+ /usr/bin/wget ${WGET_OPTS} "http://list.iblocklist.com/?list=bt_${bfile%%-*}" -O "${i}.gz" && extract
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ stat_done
+ fi
+ else
+ stat_done
+ fi
+ fi
+done
+
+# Blocklist lists
+for i in ${BLOCKLIST[@]}
+do
+ if [ $(echo $i | /bin/grep '^[^\!]' | /usr/bin/wc -l) -eq 1 ]; then
+ stat_busy "BLOCKLIST '${i}'... "
+ /usr/bin/wget ${WGET_OPTS} "blocklist.org/${i}.p2b.gz" && extract
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ stat_done
+ fi
+ fi
+done
+
+# Old phoenixlabs.org lists
+for i in ${PHOENIXLABS[@]}
+do
+ if [ $(echo $i | /bin/grep '^[^\!]' | /usr/bin/wc -l) -eq 1 ]; then
+ stat_busy "PHOENIXLABS '${i}'... "
+ /usr/bin/wget ${WGET_OPTS} "fox.phoenixlabs.org/${i}" && extract
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ stat_done
+ fi
+ fi
+done
+
+if [ $(/bin/cat "$TEMP_DIR"/* | /usr/bin/wc -l) -eq 0 ]; then
+ printf "\n"
+ printhl "ERROR: No files were downloaded"
+ printf "${C_SEPARATOR} ------------------------------\n"
+ exit 1
+fi
+
+# Check files
+printsep
+printhl "Checking integrity of downloaded files:\n"
+
+/usr/bin/find -type f | while read N
+do
+ stat_busy "File '$(echo $N | /bin/awk -F/ '{print $NF}')'... "
+ scan1=$(/bin/cat "$N" | /usr/bin/wc -l)
+ scan2=$(/bin/egrep -o ":[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*-[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*" "$N" | /usr/bin/wc -l)
+ if [ $scan1 -eq $scan2 ]; then
+ stat_done
+ else
+ if [ $scan2 -gt 0 ]; then
+ if [ $scan1 -gt $scan2 ]; then
+ stat_append "$(($scan1-$scan2)) of $scan1 entries failed validation; keeping the file"
+ stat_done
+ fi
+ else
+ stat_fail
+ stat_busy "[!!] Removing corrupted file... "
+ rm "$N" 2>/dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ exit 1
+ else
+ stat_done
+ fi
+ fi
+ fi
+done
+
+printsep
+printhl "Saving the list:\n"
+
+# Make backup
+if [ "$BACKUP_OLD_LIST" = "yes" ] && [ -f "$CONF_DIR"/"$LIST_FILE" ]; then
+ stat_busy "Backing up old list to '$CONF_DIR/$LIST_FILE.gz'... "
+ /bin/gzip -f "$CONF_DIR"/"$LIST_FILE" 2>/dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ stat_done
+ fi
+fi
+
+# Save the list
+stat_busy "Saving new list to '$CONF_DIR/$LIST_FILE'... "
+/bin/cat "$TEMP_DIR"/* > "$CONF_DIR"/"$LIST_FILE" 2>&1
+if [ $? -gt 0 ]; then
+ stat_fail
+ exit 1
+else
+ stat_done
+ printf "\n"
+ printhl "Saved `cat "$CONF_DIR"/"$LIST_FILE" | wc -l` ranges"
+ printf "${C_SEPARATOR} ------------------------------\n"
+fi
+
+rm -rf "$TEMP_DIR"
+
+# Restart MoBlock
+if [ -f /var/run/moblock.pid ]; then
+ /bin/kill -HUP `cat /var/run/moblock.pid` >/dev/null 2>&1
+fi
+
+exit 0
+
diff --git a/pcr/moblock/moblock.install b/pcr/moblock/moblock.install
new file mode 100644
index 000000000..6afe1d5d9
--- /dev/null
+++ b/pcr/moblock/moblock.install
@@ -0,0 +1,26 @@
+post_install() {
+ #clean up after an old hack
+ if [ -h /usr/lib/libnfnetlink.so.1 ]; then
+ rm /usr/lib/libnfnetlink.so.1
+ fi
+ echo ""
+ echo ">>> moblock-update script no longer uses /var/spool/moblock"
+ echo ">>> as a temporary directory. You can safely delete it."
+ echo ""
+}
+
+post_upgrade() {
+ #clean up after an old hack
+ if [ -h /usr/lib/libnfnetlink.so.1 ]; then
+ rm /usr/lib/libnfnetlink.so.1
+ fi
+ echo ""
+ echo ">>> moblock-update script no longer uses /var/spool/moblock"
+ echo ">>> as a temporary directory. You can safely delete it."
+ echo ""
+}
+
+op=$1
+shift
+$op $*
+
diff --git a/pcr/moblock/moblock.logrotate b/pcr/moblock/moblock.logrotate
new file mode 100644
index 000000000..6ed64bb81
--- /dev/null
+++ b/pcr/moblock/moblock.logrotate
@@ -0,0 +1,11 @@
+"/var/log/moblock.log" /var/log/MoBlock.stats {
+ daily
+ missingok
+ notifempty
+ sharedscripts
+ postrotate
+ /usr/bin/test -f /var/run/moblock.pid && /bin/kill -HUP `cat /var/run/moblock.pid 2>/dev/null` 2>/dev/null || exit 0
+ endscript
+ compress
+}
+
diff --git a/pcr/moblock/moblock_0.9_rc2.patch b/pcr/moblock/moblock_0.9_rc2.patch
new file mode 100644
index 000000000..69994ffe8
--- /dev/null
+++ b/pcr/moblock/moblock_0.9_rc2.patch
@@ -0,0 +1,912 @@
+diff -Naur MoBlock-0.8_orig/Changelog MoBlock-0.8/Changelog
+--- MoBlock-0.8_orig/Changelog 2006-03-22 12:44:31.000000000 -0500
++++ MoBlock-0.8/Changelog 2008-02-10 11:56:08.000000000 -0500
+@@ -4,6 +4,23 @@
+
+ ---
+
++0.9: - fix for kernel 2.6.23
++ - support for MARKing packets instead of DROPping or
++ ACCEPTing
++ - example start script that REJECTs packets instead of
++ DROPping.
++ - Integrated a patch from David Walluck for proper loading
++ of p2b files (version 2)
++ - command line options for logging to syslog, stdout
++ and log timestamping
++ - fixed loading pg1 lists with comments (lines starting
++ with '#')
++ - fixed a bug in ranges merge
++ - applied patch 2223 by badfish99: "IPs logged with bytes
++ reversed on big-endian m/c"
++
++---
++
+ 0.8: - support for NFQUEUE-ing from iptables FORWARD chain (thx to
+ hyakki for suggestions and testing!)
+ - included patches from Maximilian Mehnert to support log file
+diff -Naur MoBlock-0.8_orig/Makefile MoBlock-0.8/Makefile
+--- MoBlock-0.8_orig/Makefile 2006-03-22 12:44:31.000000000 -0500
++++ MoBlock-0.8/Makefile 2007-11-22 08:10:44.000000000 -0500
+@@ -1,4 +1,3 @@
+-
+ # To use the old-soon-to-be-deprecated libipq interface
+ # uncomment the following line and comment the NFQUEUE one,
+ # then comment the gcc line with netfilter_queue and
+@@ -7,7 +6,7 @@
+ #QUEUE_LIB=LIBIPQ
+ QUEUE_LIB=NFQUEUE
+
+-CFLAGS=-Wall -O2 -march=i586 -mtune=i686 -fomit-frame-pointer -ffast-math \
++CFLAGS=-Wall -O3 -march=i586 -mtune=i686 -fomit-frame-pointer -ffast-math \
+ -D_GNU_SOURCE -D$(QUEUE_LIB) -L/usr/include/libipq
+ CC=gcc
+
+diff -Naur MoBlock-0.8_orig/MoBlock-nfq-reject.sh MoBlock-0.8/MoBlock-nfq-reject.sh
+--- MoBlock-0.8_orig/MoBlock-nfq-reject.sh 1969-12-31 19:00:00.000000000 -0500
++++ MoBlock-0.8/MoBlock-nfq-reject.sh 2007-11-22 08:10:44.000000000 -0500
+@@ -0,0 +1,104 @@
++#!/bin/sh
++#
++# MoBlock.sh - MoBlock start script
++# ---------------------------------
++
++ACTIVATE_CHAINS=1
++WHITE_TCP_IN=""
++WHITE_UDP_IN=""
++WHITE_TCP_OUT=""
++WHITE_UDP_OUT=""
++WHITE_TCP_FORWARD=""
++WHITE_UDP_FORWARD=""
++REJECT_MARK="10"
++
++PIDF=/var/run/moblock.pid
++
++FNAME=`basename $0 .sh`
++MODE=`echo $FNAME|awk -F- '{print $2}'`
++
++if [ -f $PIDF ]; then
++ PID=`cat $PIDF`
++ if [ `ps -p $PID|wc -l` -gt 1 ]; then
++ echo "$0: $PIDF exists and processs seems to be running. Exiting."
++ exit 1;
++ fi;
++fi;
++
++if [ $MODE == "ipq" ]; then
++ modprobe ip_queue
++ TARGET="QUEUE"
++elif [ $MODE == "nfq" ]; then
++ modprobe ipt_NFQUEUE
++ TARGET="NFQUEUE"
++fi;
++
++modprobe ipt_state
++
++# Filter all traffic, edit for your needs
++
++iptables -N MOBLOCK_IN
++iptables -N MOBLOCK_OUT
++iptables -N MOBLOCK_FW
++
++if [ $ACTIVATE_CHAINS -eq 1 ]; then
++ iptables -I INPUT -p all -m state --state NEW -j MOBLOCK_IN
++ iptables -I OUTPUT -p all -m state --state NEW -j MOBLOCK_OUT
++ iptables -I FORWARD -p all -m state --state NEW -j MOBLOCK_FW
++fi;
++
++
++iptables -I MOBLOCK_IN -p all -j $TARGET
++
++iptables -I MOBLOCK_OUT -p all -j $TARGET
++
++iptables -I MOBLOCK_FW -p all -j $TARGET
++
++for PORT in $WHITE_TCP_OUT; do
++ iptables -I MOBLOCK_OUT -p tcp --dport $PORT -j ACCEPT
++done
++for PORT in $WHITE_UDP_OUT; do
++ iptables -I MOBLOCK_OUT -p udp --dport $PORT -j ACCEPT
++done
++
++for PORT in $WHITE_TCP_IN; do
++ iptables -I MOBLOCK_IN -p tcp --dport $PORT -j ACCEPT
++done
++for PORT in $WHITE_UDP_IN; do
++ iptables -I MOBLOCK_IN -p udp --dport $PORT -j ACCEPT
++done
++
++for PORT in $WHITE_TCP_FORWARD; do
++ iptables -I MOBLOCK_FW -p tcp --dport $PORT -j ACCEPT
++done
++for PORT in $WHITE_UDP_FORWARD; do
++ iptables -I MOBLOCK_FW -p udp --dport $PORT -j ACCEPT
++done
++
++iptables -I OUTPUT -p all -m state --state NEW -m mark --mark $REJECT_MARK -j REJECT
++iptables -I FORWARD -p all -m state --state NEW -m mark --mark $REJECT_MARK -j REJECT
++
++# Here you can change block list and log files
++./moblock -d /etc/ipfilter.dat -t -s -r $REJECT_MARK ./moblock.log
++
++# On exit delete the rules we added
++
++if [ $ACTIVATE_CHAINS -eq 1 ]; then
++ iptables -D INPUT -p all -m state --state NEW -j MOBLOCK_IN
++ iptables -D OUTPUT -p all -m state --state NEW -j MOBLOCK_OUT
++ iptables -D FORWARD -p all -m state --state NEW -j MOBLOCK_FW
++fi;
++
++iptables -D OUTPUT -p all -m state --state NEW -m mark --mark $REJECT_MARK -j REJECT
++iptables -D FORWARD -p all -m state --state NEW -m mark --mark $REJECT_MARK -j REJECT
++
++iptables -F MOBLOCK_IN
++iptables -X MOBLOCK_IN
++iptables -F MOBLOCK_OUT
++iptables -X MOBLOCK_OUT
++iptables -F MOBLOCK_FW
++iptables -X MOBLOCK_FW
++
++if [ -f $PIDF ]; then
++ rm $PIDF;
++fi
+diff -Naur MoBlock-0.8_orig/MoBlock.c MoBlock-0.8/MoBlock.c
+--- MoBlock-0.8_orig/MoBlock.c 2006-03-22 12:44:31.000000000 -0500
++++ MoBlock-0.8/MoBlock.c 2008-02-10 11:56:08.000000000 -0500
+@@ -35,6 +35,8 @@
+ #include <linux/netfilter_ipv4.h>
+ #include <signal.h>
+ #include <regex.h>
++#include <time.h>
++#include <syslog.h>
+
+ // in Makefile define LIBIPQ to use soon-to-be-deprecated ip_queue,
+ // NFQUEUE for ipt_NFQUEUE (from kernel 2.6.14)
+@@ -46,7 +48,7 @@
+ #include <libnetfilter_queue/libnetfilter_queue.h>
+ #endif
+
+-#define MB_VERSION "0.8"
++#define MB_VERSION "0.9rc2"
+
+ #define BUFSIZE 2048
+ #define PAYLOADSIZE 21
+@@ -58,6 +60,9 @@
+ #define SRC_ADDR(payload) (*(in_addr_t *)((payload)+12))
+ #define DST_ADDR(payload) (*(in_addr_t *)((payload)+16))
+
++#define likely(x) __builtin_expect((x),1)
++#define unlikely(x) __builtin_expect((x),0)
++
+ // rbt datatypes/functions
+
+ typedef enum {
+@@ -96,7 +101,8 @@
+ char filename[100];
+ } blocklist_info;
+
+-int merged_ranges=0, skipped_ranges=0;
++u_int32_t merged_ranges=0, skipped_ranges=0, accept_mark=0, reject_mark=0;
++u_int8_t log2syslog=0, log2file=0, log2stdout=0, timestamp=0;
+
+ #ifdef LIBIPQ
+ static void die(struct ipq_handle *h)
+@@ -112,11 +118,13 @@
+ static char buf[2][ sizeof("aaa.bbb.ccc.ddd") ];
+ static short int index=0;
+
++ ip = ntohl(ip);
++
+ sprintf(buf[index],"%d.%d.%d.%d",
+- (ip) & 0xff,
+- (ip >> 8) & 0xff,
++ (ip >> 24) & 0xff,
+ (ip >> 16) & 0xff,
+- (ip >> 24) & 0xff);
++ (ip >> 8) & 0xff,
++ (ip) & 0xff);
+
+ if (index) {
+ index=0;
+@@ -134,10 +142,38 @@
+ fflush(stdout);
+ }
+
++void log_action(char *msg)
++{
++ char timestr[30];
++ time_t tv;
++
++ if (timestamp) {
++ tv = time(NULL);
++ strncpy(timestr, ctime(&tv), 19);
++ timestr[19] = '\0';
++ strcat(timestr, "| ");
++ }
++ else strcpy(timestr, "");
++
++ if (log2syslog) {
++ syslog(LOG_INFO, msg);
++ }
++
++ if (log2file) {
++ fprintf(logfile,"%s%s",timestr,msg);
++ fflush(logfile);
++ }
++
++ if (log2stdout) {
++ fprintf(stdout,"%s%s",timestr,msg);
++ }
++}
++
+ inline void ranged_insert(char *name,char *ipmin,char *ipmax)
+ {
+ recType tmprec;
+ int ret;
++ char msgbuf[255];
+
+ if ( strlen(name) > (BNAME_LEN-1) ) {
+ strncpy(tmprec.blockname, name, BNAME_LEN);
+@@ -149,10 +185,11 @@
+ if ( (ret=insert(ntohl(inet_addr(ipmin)),&tmprec)) != STATUS_OK )
+ switch(ret) {
+ case STATUS_MEM_EXHAUSTED:
+- fprintf(logfile,"Error inserting range, MEM_EXHAUSTED.\n");
++ log_action("Error inserting range, MEM_EXHAUSTED.\n");
+ break;
+ case STATUS_DUPLICATE_KEY:
+- fprintf(logfile,"Duplicated range ( %s )\n",name);
++ sprintf(msgbuf,"Duplicated range ( %s )\n",name);
++ log_action(msgbuf);
+ break;
+ case STATUS_MERGED:
+ merged_ranges++;
+@@ -161,8 +198,9 @@
+ skipped_ranges++;
+ break;
+ default:
+- fprintf(logfile,"Unexpected return value from ranged_insert()!\n");
+- fprintf(logfile,"Return value was: %d\n",ret);
++ log_action("Unexpected return value from ranged_insert()!\n");
++ sprintf(msgbuf,"Return value was: %d\n",ret);
++ log_action(msgbuf);
+ break;
+ }
+ }
+@@ -177,15 +215,19 @@
+ regex_t regmain;
+ regmatch_t matches[4];
+ int i;
++ char msgbuf[255];
+
+ regcomp(&regmain, "^(.*)[:]([0-9.]*)[-]([0-9.]*)$", REG_EXTENDED);
+
+ fp=fopen(filename,"r");
+ if ( fp == NULL ) {
+- fprintf(logfile,"Error opening %s, aborting...\n", filename);
++ sprintf(msgbuf,"Error opening %s, aborting...\n", filename);
++ log_action(msgbuf);
+ exit(-1);
+ }
+ while ( (count=getline(&line,&len,fp)) != -1 ) {
++ if ( line[0] == '#' ) //comment line, skip
++ continue;
+ for(i=count-1; i>=0; i--) {
+ if ((line[i] == '\r') || (line[i] == '\n') || (line[i] == ' ')) {
+ line[i] = 0;
+@@ -207,36 +249,78 @@
+ line+matches[3].rm_so);
+ ntot++;
+ } else {
+- fprintf(logfile,"Short guarding.p2p line %s, skipping it...\n", line);
++ sprintf(msgbuf,"Short guarding.p2p line %s, skipping it...\n", line);
++ log_action(msgbuf);
+ }
+ }
+ if (line)
+ free(line);
+ fclose(fp);
+- fprintf(logfile,"Ranges loaded: %d\n",ntot);
+- printf("* Ranges loaded: %d\n",ntot);
++ sprintf(msgbuf, "* Ranges loaded: %d\n", ntot);
++ log_action(msgbuf);
++ if ( !log2stdout )
++ printf(msgbuf);
+ }
+
+-void loadlist_pg2(char *filename) // experimental, no check for list sanity
++void loadlist_pg2(char *filename) // supports only v2 files
+ {
+ FILE *fp;
+- int i,retval,ntot=0;
+- char name[100],ipmin[16]; // hope we don't have a list with longer names...
++ int i, j, c, retval=0, ntot=0;
++ char name[100],ipmin[16], msgbuf[255]; // hope we don't have a list with longer names...
+ uint32_t start_ip, end_ip;
+ struct in_addr startaddr,endaddr;
++ size_t s;
+
+ fp=fopen(filename,"r");
+ if ( fp == NULL ) {
+- fprintf(logfile,"Error opening %s, aborting...\n", filename);
++ sprintf(msgbuf, "Error opening %s, aborting...\n", filename);
++ log_action(msgbuf);
+ exit(-1);
+ }
+
+- fgetc(fp); // skip first 4 bytes, don't know what they are
+- fgetc(fp);
+- fgetc(fp);
+- retval=fgetc(fp);
++ for (j=0; j<4; j++) {
++ c=fgetc(fp);
++ if ( c != 0xff ) {
++ sprintf(msgbuf,"Byte %d: 0x%x != 0xff, aborting...\n", j+1, c);
++ log_action(msgbuf);
++ fclose(fp);
++ exit(-1);
++ }
++ }
++
++ c=fgetc(fp);
++ if ( c != 'P' ) {
++ sprintf(msgbuf,"Byte 5: %c != P, aborting...\n", c);
++ log_action(msgbuf);
++ fclose(fp);
++ exit(-1);
++ }
++
++ c=fgetc(fp);
++ if ( c != '2' ) {
++ sprintf(msgbuf,"Byte 6: %c != 2, aborting...\n", c);
++ log_action(msgbuf);
++ fclose(fp);
++ exit(-1);
++ }
+
+- while ( retval != EOF ) {
++ c=fgetc(fp);
++ if ( c != 'B' ) {
++ sprintf(msgbuf,"Byte 7: %c != B, aborting...\n", c);
++ log_action(msgbuf);
++ fclose(fp);
++ exit(-1);
++ }
++
++ c=fgetc(fp);
++ if ( c != 0x02 ) {
++ sprintf(msgbuf,"Byte 8: version: %d != 2, aborting...\n", c);
++ log_action(msgbuf);
++ fclose(fp);
++ exit(-1);
++ }
++
++ do {
+ i=0;
+ do {
+ name[i]=fgetc(fp);
+@@ -244,9 +328,22 @@
+ } while ( name[i-1] != 0x00 && name[i-1] != EOF);
+ if ( name[i-1] != EOF ) {
+ name[i-1]='\0';
+- fread(&start_ip,4,1,fp);
+- fread(&end_ip,4,1,fp);
+- startaddr.s_addr=start_ip;
++ s=fread(&start_ip,4,1,fp);
++ if ( s != 1 ) {
++ sprintf(msgbuf,"Failed to read start IP: %d != 1, aborting...\n", (int)s);
++ log_action(msgbuf);
++ fclose(fp);
++ exit(-1);
++ }
++ s=fread(&end_ip,4,1,fp);
++ if ( s != 1 ) {
++ sprintf(msgbuf,"Failed to read end IP: %d != 1, aborting...\n", (int)s);
++ log_action(msgbuf);
++ fclose(fp);
++ exit(-1);
++ }
++
++ startaddr.s_addr=start_ip;
+ endaddr.s_addr=end_ip;
+ strcpy(ipmin,inet_ntoa(startaddr));
+ ranged_insert(name,ipmin,inet_ntoa(endaddr));
+@@ -255,22 +352,25 @@
+ else {
+ retval=EOF;
+ }
+- }
++ } while ( retval != EOF );
+ fclose(fp);
+- fprintf(logfile,"Ranges loaded: %d\n",ntot);
+- printf("* Ranges loaded: %d\n",ntot);
++ sprintf(msgbuf, "* Ranges loaded: %d\n",ntot);
++ log_action(msgbuf);
++ if ( !log2stdout )
++ printf(msgbuf);
+ }
+
+ void loadlist_dat(char *filename)
+ {
+ FILE *fp;
+ int ntot=0;
+- char readbuf[200], *name, start_ip[16], end_ip[16];
++ char readbuf[200], *name, start_ip[16], end_ip[16], msgbuf[255];
+ unsigned short ip1_0, ip1_1, ip1_2, ip1_3, ip2_0, ip2_1, ip2_2, ip2_3;
+
+ fp=fopen(filename,"r");
+ if ( fp == NULL ) {
+- fprintf(logfile,"Error opening %s, aborting...\n", filename);
++ sprintf(msgbuf,"Error opening %s, aborting...\n", filename);
++ log_action(msgbuf);
+ exit(-1);
+ }
+
+@@ -286,38 +386,45 @@
+ ntot++;
+ }
+ fclose(fp);
+- fprintf(logfile,"Ranges loaded: %d\n",ntot);
+- printf("* Ranges loaded: %d\n",ntot);
++ sprintf(msgbuf, "* Ranges loaded: %d\n", ntot);
++ log_action(msgbuf);
++ if ( !log2stdout )
++ printf(msgbuf);
+ }
+
+ void reopen_logfile(void)
+ {
++ char msgbuf[255];
++
+ if (logfile != NULL) {
+ fclose(logfile);
+ logfile=NULL;
+ }
+ logfile=fopen(logfile_name,"a");
+ if (logfile == NULL) {
+- fprintf(stderr, "Unable to open logfile %s\n", logfile_name);
++ sprintf(msgbuf, "Unable to open logfile %s\n", logfile_name);
++ log_action(msgbuf);
+ exit(-1);
+ }
+- fprintf(logfile, "Reopening logfile.\n");
++ log_action("Reopening logfile.\n");
+ }
+
+ void my_sahandler(int sig)
+ {
++ char msgbuf[255];
++
+ switch( sig ) {
+ case SIGUSR1:
+- fprintf(logfile,"Got SIGUSR1! Dumping stats...\n");
++ log_action("Got SIGUSR1! Dumping stats...\n");
+ ll_show(logfile);
+ reopen_logfile();
+ break;
+ case SIGUSR2:
+- fprintf(logfile,"Got SIGUSR2! Dumping stats to /var/log/MoBlock.stats\n");
++ log_action("Got SIGUSR2! Dumping stats to /var/log/MoBlock.stats\n");
+ ll_log();
+ break;
+ case SIGHUP:
+- fprintf(logfile,"\nGot SIGHUP! Dumping and resetting stats, reloading blocklist\n\n");
++ log_action("Got SIGHUP! Dumping and resetting stats, reloading blocklist\n");
+ ll_log();
+ ll_clear(); // clear stats list
+ destroy_tree(); // clear loaded ranges
+@@ -332,17 +439,18 @@
+ loadlist_pg2(blocklist_info.filename);
+ break;
+ default:
+- fprintf(logfile,"Unknown blocklist type while reloading list, contact the developer!\n");
++ log_action("Unknown blocklist type while reloading list, contact the developer!\n");
+ break;
+ }
+ reopen_logfile();
+ break;
+ case SIGTERM:
+- fprintf(logfile,"Got SIGTERM! Dumping stats and exiting.\n");
++ log_action("Got SIGTERM! Dumping stats and exiting.\n");
+ ll_log();
+ exit(0);
+ default:
+- fprintf(logfile,"Received signal = %d but not handled\n",sig);
++ sprintf(msgbuf,"Received signal = %d but not handled\n",sig);
++ log_action(msgbuf);
+ break;
+ }
+ }
+@@ -378,7 +486,7 @@
+ {
+ int id=0, status=0;
+ struct nfqnl_msg_packet_hdr *ph;
+- char *payload;
++ char *payload, msgbuf[255];
+ recType tmprec;
+
+ ph = nfq_get_msg_packet_hdr(nfa);
+@@ -389,34 +497,78 @@
+ switch (ph->hook) {
+ case NF_IP_LOCAL_IN:
+ if ( find(ntohl(SRC_ADDR(payload)),&tmprec) == STATUS_OK ) {
++ // we drop the packet instead of rejecting
++ // we don't want the other host to know we are alive
+ status=nfq_set_verdict(qh, id, NF_DROP, 0, NULL);
+- fprintf(logfile,"Blocked IN: %s,hits: %d,SRC: %s\n",tmprec.blockname,tmprec.hits,ip2str(SRC_ADDR(payload)));
+- } else status = nfq_set_verdict(qh, id, NF_ACCEPT, 0, NULL);
++ sprintf(msgbuf,"Blocked IN: %s,hits: %d,SRC: %s\n",tmprec.blockname,tmprec.hits,ip2str(SRC_ADDR(payload)));
++ log_action(msgbuf);
++ }
++ else if ( unlikely(accept_mark) ) {
++ // we set the user-defined accept_mark and set NF_REPEAT verdict
++ // it's up to other iptables rules to decide what to do with this marked packet
++ status = nfq_set_verdict_mark(qh, id, NF_REPEAT, accept_mark, 0, NULL);
++ }
++ else {
++ // no accept_mark, just NF_ACCEPT the packet
++ status = nfq_set_verdict(qh, id, NF_ACCEPT, 0, NULL);
++ }
+ break;
+ case NF_IP_LOCAL_OUT:
+ if ( find(ntohl(DST_ADDR(payload)),&tmprec) == STATUS_OK ) {
+- status=nfq_set_verdict(qh, id, NF_DROP, 0, NULL);
+- fprintf(logfile,"Blocked OUT: %s,hits: %d,DST: %s\n",tmprec.blockname,tmprec.hits,ip2str(DST_ADDR(payload)));
+- } else status = nfq_set_verdict(qh, id, NF_ACCEPT, 0, NULL);
++ if ( likely(reject_mark) ) {
++ // we set the user-defined reject_mark and set NF_REPEAT verdict
++ // it's up to other iptables rules to decide what to do with this marked packet
++ status = nfq_set_verdict_mark(qh, id, NF_REPEAT, reject_mark, 0, NULL);
++ }
++ else {
++ status = nfq_set_verdict(qh, id, NF_DROP, 0, NULL);
++ }
++ sprintf(msgbuf,"Blocked OUT: %s,hits: %d,DST: %s\n",tmprec.blockname,tmprec.hits,ip2str(DST_ADDR(payload)));
++ log_action(msgbuf);
++ }
++ else if ( unlikely(accept_mark) ) {
++ // we set the user-defined accept_mark and set NF_REPEAT verdict
++ // it's up to other iptables rules to decide what to do with this marked packet
++ status = nfq_set_verdict_mark(qh, id, NF_REPEAT, accept_mark, 0, NULL);
++ }
++ else {
++ // no accept_mark, just NF_ACCEPT the packet
++ status = nfq_set_verdict(qh, id, NF_ACCEPT, 0, NULL);
++ }
+ break;
+ case NF_IP_FORWARD:
+ if ( find2(ntohl(SRC_ADDR(payload)), ntohl(DST_ADDR(payload)), &tmprec) == STATUS_OK ) {
+- status=nfq_set_verdict(qh, id, NF_DROP, 0, NULL);
+- fprintf(logfile,"Blocked FWD: %s,hits: %d,SRC: %s, DST: %s\n",
++ if ( likely(reject_mark) ) {
++ // we set the user-defined reject_mark and set NF_REPEAT verdict
++ // it's up to other iptables rules to decide what to do with this marked packet
++ status = nfq_set_verdict_mark(qh, id, NF_REPEAT, reject_mark, 0, NULL);
++ }
++ else {
++ status = nfq_set_verdict(qh, id, NF_DROP, 0, NULL);
++ }
++ sprintf(msgbuf,"Blocked FWD: %s,hits: %d,SRC: %s, DST: %s\n",
+ tmprec.blockname, tmprec.hits, ip2str(SRC_ADDR(payload)), ip2str(DST_ADDR(payload)));
+- fflush(logfile);
+- } else status = nfq_set_verdict(qh, id, NF_ACCEPT, 0, NULL);
++ log_action(msgbuf);
++ }
++ else if ( unlikely(accept_mark) ) {
++ // we set the user-defined accept_mark and set NF_REPEAT verdict
++ // it's up to other iptables rules to decide what to do with this marked packet
++ status = nfq_set_verdict_mark(qh, id, NF_REPEAT, accept_mark, 0, NULL);
++ }
++ else {
++ // no accept_mark, just NF_ACCEPT the packet
++ status = nfq_set_verdict(qh, id, NF_ACCEPT, 0, NULL);
++ }
+ break;
+ default:
+- fprintf(logfile,"Not NF_LOCAL_IN/OUT/FORWARD packet!\n");
++ log_action("Not NF_LOCAL_IN/OUT/FORWARD packet!\n");
+ break;
+ }
+ }
+ else {
+- fprintf(logfile,"NFQUEUE: can't get msg packet header.\n");
++ log_action("NFQUEUE: can't get msg packet header.\n");
+ return(1); // from nfqueue source: 0 = ok, >0 = soft error, <0 hard error
+ }
+- fflush(logfile);
+ return(0);
+ }
+ #endif
+@@ -492,46 +644,48 @@
+ struct nfq_q_handle *qh;
+ struct nfnl_handle *nh;
+ int fd,rv;
+- char buf[BUFSIZE];
++ char buf[BUFSIZE], msgbuf[255];
+
+ h = nfq_open();
+ if (!h) {
+- fprintf(logfile, "Error during nfq_open()\n");
++ log_action("Error during nfq_open()\n");
+ exit(-1);
+ }
+
+ if (nfq_unbind_pf(h, AF_INET) < 0) {
+- fprintf(logfile, "error during nfq_unbind_pf()\n");
+- exit(-1);
++ log_action("error during nfq_unbind_pf()\n");
++ //exit(-1);
+ }
+
+ if (nfq_bind_pf(h, AF_INET) < 0) {
+- fprintf(logfile, "Error during nfq_bind_pf()\n");
++ log_action("Error during nfq_bind_pf()\n");
+ exit(-1);
+ }
+
+- fprintf(logfile,"NFQUEUE: binding to queue '%hd'\n", queuenum);
++ sprintf(msgbuf,"NFQUEUE: binding to queue '%hd'\n", queuenum);
++ log_action(msgbuf);
+ qh = nfq_create_queue(h, queuenum, &nfqueue_cb, NULL);
+ if (!qh) {
+- fprintf(logfile, "error during nfq_create_queue()\n");
++ log_action("error during nfq_create_queue()\n");
+ exit(-1);
+ }
+
+ if (nfq_set_mode(qh, NFQNL_COPY_PACKET, PAYLOADSIZE) < 0) {
+- fprintf(logfile, "can't set packet_copy mode\n");
++ log_action("can't set packet_copy mode\n");
+ exit(-1);
+ }
+
+ nh = nfq_nfnlh(h);
+ fd = nfnl_fd(nh);
+
+- while ((rv = recv(fd, buf, sizeof(buf), 0)) && rv >= 0) {
++ while ((rv = recv(fd, buf, sizeof(buf), 0)) >= 0) {
+ nfq_handle_packet(h, buf, rv);
+ }
+
+- printf("NFQUEUE: unbinding from queue 0\n");
++ log_action("NFQUEUE: unbinding from queue 0\n");
+ nfq_destroy_queue(qh);
+ nfq_close(h);
++ nfq_unbind_pf(h, AF_INET);
+ return(0);
+ #endif
+
+@@ -540,11 +694,16 @@
+ void print_options(void)
+ {
+ printf("\nMoBlock %s by Morpheus",MB_VERSION);
+- printf("\nSyntax: MoBlock -dnp <blocklist> [-b] [-q 0-65535] <logfile>\n\n");
++ printf("\nSyntax: MoBlock -dnp <blocklist> [-q 0-65535] <logfile>\n\n");
+ printf("\t-d\tblocklist is an ipfilter.dat file\n");
+ printf("\t-n\tblocklist is a peerguardian 2.x file (.p2b)\n");
+ printf("\t-p\tblocklist is a peerguardian file (.p2p)\n");
+ printf("\t-q\t0-65535 NFQUEUE number (as specified in --queue-num with iptables)\n");
++ printf("\t-r MARK\tmark packet with MARK instead of DROP\n");
++ printf("\t-a MARK\tmark packet with MARK instead of ACCEPT\n");
++ printf("\t-l\tlog to stdout\n");
++ printf("\t-s\tlog to syslog\n");
++ printf("\t-t\tlog timestamping\n\n");
+ }
+
+ void on_quit()
+@@ -556,6 +715,7 @@
+ {
+ int ret=0;
+ unsigned short int queuenum=0;
++ char msgbuf[255];
+
+ if (argc < 3) {
+ print_options();
+@@ -591,10 +751,11 @@
+ }
+ logfile_name=malloc(strlen(argv[argc-1])+1);
+ strcpy(logfile_name,argv[argc-1]);
++ log2file = 1;
+ printf("* Logging to %s\n",logfile_name);
+
+ while (1) { //scan command line options
+- ret=getopt(argc, argv, "d:n:p:q:");
++ ret=getopt(argc, argv, "d:n:p:q:a:r:stl");
+ if ( ret == -1 ) break;
+
+ switch (ret) {
+@@ -619,6 +780,28 @@
+ case 'q':
+ queuenum=(unsigned short int)atoi(optarg);
+ break;
++ case 'r':
++ reject_mark=(u_int32_t)atoi(optarg);
++ printf("* DROP MARK: %d\n", reject_mark);
++ reject_mark=htonl(reject_mark);
++ break;
++ case 'a':
++ accept_mark=(u_int32_t)atoi(optarg);
++ printf("* ACCEPT MARK: %d\n", accept_mark);
++ accept_mark=htonl(accept_mark);
++ break;
++ case 's':
++ log2syslog = 1;
++ printf("* Logging to syslog\n");
++ break;
++ case 't':
++ timestamp = 1;
++ printf("* Log timestamp enabled\n");
++ break;
++ case 'l':
++ log2stdout = 1;
++ printf("* Log to stdout enabled\n");
++ break;
+ case '?': // unknown option
+ print_options();
+ exit(-1);
+@@ -626,10 +809,14 @@
+ }
+ }
+
+- printf("* Merged ranges: %d\n", merged_ranges);
+- fprintf(logfile, "Merged ranges: %d\n", merged_ranges);
+- printf("* Skipped useless ranges: %d\n", skipped_ranges);
+- fprintf(logfile,"Skipped useless ranges: %d\n", skipped_ranges);
++ sprintf(msgbuf, "* Merged ranges: %d\n", merged_ranges);
++ log_action(msgbuf);
++ if ( !log2stdout )
++ printf(msgbuf);
++ sprintf(msgbuf,"* Skipped useless ranges: %d\n", skipped_ranges);
++ log_action(msgbuf);
++ if ( !log2stdout )
++ printf(msgbuf);
+ fflush(NULL);
+
+ netlink_loop(queuenum);
+diff -Naur MoBlock-0.8_orig/README MoBlock-0.8/README
+--- MoBlock-0.8_orig/README 2006-03-22 12:44:31.000000000 -0500
++++ MoBlock-0.8/README 2007-11-22 08:10:44.000000000 -0500
+@@ -1,5 +1,5 @@
+
+-MoBlock README v0.8
++MoBlock README v0.9
+ http://moblock.berlios.de
+
+ .Introduction.
+@@ -47,6 +47,22 @@
+ ip_conntrack 40044 1 ipt_state
+ iptable_filter 2176 1
+ ip_tables 17600 3 ipt_NFQUEUE,ipt_state,iptable_filter
++
++ ...and these with kernel 2.6.23 using NFQUEUE interface:
++
++ nfnetlink_queue 9344 1
++ nfnetlink 4568 2 nfnetlink_queue
++ ipt_REJECT 3520 2
++ xt_mark 1600 2
++ nf_conntrack_ipv4 12424 5
++ iptable_filter 2308 1
++ ip_tables 10328 1 iptable_filter
++ xt_state 1984 5
++ nf_conntrack 48356 2 nf_conntrack_ipv4,xt_state
++ xt_NFQUEUE 1664 3
++ x_tables 11396 5 ipt_REJECT,xt_mark,ip_tables,xt_state,xt_NFQUEUE
++
++ (notice that ipt_NFQUEUE has changed to xt_NFQUEUE, same thing for other modules too)
+
+ 2) A valid guarding.p2p/ipfilter.dat/p2p.p2b host file in /etc ( /etc/guarding.p2p ).
+ MoBlock tries to skip malformed or duplicate ranges but
+@@ -140,8 +156,18 @@
+ To specify a NFQUEUE queue number:
+
+ ./moblock -p /etc/guarding.p2p -q 5 MoBlock.log
++
++ From version 0.9 MoBlock supports MARKing packets and RETURN them to
++ iptables, there's an example start script (MoBlock-nfq-reject.sh) that
++ uses this feature to REJECT packet instead of dropping them. It can help
++ in complex firewall configuration where you need more control of packets
++ flow after MoBlock inspection.
++ See the mentioned start script for reference, you can set the MARK value
++ for packets that MoBlock would drop (ip in list) with the "-r" command line
++ option and for packets that MoBlock would accept (ip not in list) with
++ the "-a" command line option.
+
+- To stop it:
++ To stop MoBlock:
+
+ kill -TERM <MoBlockPid>
+
+@@ -149,7 +175,7 @@
+ To obtain stats about blocked ranges while it's running:
+
+ kill -USR1 <MoBlockPid> # write stats to logfile
+- kill -USR2 <MoBlockPid> # write stats to /var/log/MoBlock.stats
++ kill -USR2 <MoBlockPid> # write stats to /var/log/MoBlock.stats
+
+ ** NEW: to reload the blocklist while MoBlock is running send to it the
+ HUP signal:
+@@ -168,7 +194,10 @@
+ took some code and ideas from his FTwall
+ - Andrew de Quincey (adq at lidskialf dot net) for regular expressions
+ and command line args patch
+-- Maximilian Mehnert (clessing at freenet dot de) for logfile rotation
++- clessing at freenet dot de for logfile rotation
+ patches, pid file creation, start script, fixes/files for debian packaging
++- David Walluck, patch for proper loading of p2b files
++- jre, for continuing clessing work on debian packaging and many other
++ contributions
+
+-Last Updated: 20/Mar/2006
++Last Updated: 15/Oct/2007
+diff -Naur MoBlock-0.8_orig/rbt.c MoBlock-0.8/rbt.c
+--- MoBlock-0.8_orig/rbt.c 2006-03-22 12:44:31.000000000 -0500
++++ MoBlock-0.8/rbt.c 2008-02-10 11:56:08.000000000 -0500
+@@ -19,7 +19,7 @@
+ #include <stdarg.h>
+ #include <time.h>
+
+-#define RBT_VERSION 0.8
++#define RBT_VERSION 0.9
+ #define BNAME_LEN 80
+
+ /* implementation dependend declarations */
+@@ -421,7 +421,7 @@
+
+ statusEnum insert(keyType key, recType *rec) {
+ nodeType *current, *parent, *x;
+- keyType tmpkey;
++ //keyType tmpkey;
+ recType tmprec;
+ int ret;
+
+@@ -433,6 +433,23 @@
+ current = root;
+ parent = 0;
+ while (current != NIL) {
++ if (compEQ2(current->key, key, rec->ipmax)) { // current node key is inside new range to be inserted
++ strcpy(tmprec.blockname, rec->blockname); // block name from new range
++ if (compLT(current->rec.ipmax, rec->ipmax))
++ tmprec.ipmax = rec->ipmax;
++ else tmprec.ipmax = current->rec.ipmax;
++ tmprec.hits = 0;
++ //printf("deleting node :%lu\n", current->key);
++ ret=delete(current->key);
++ if ( ret != STATUS_OK )
++ return(ret);
++ ret=insert(key, &tmprec);
++ if ( ret == STATUS_OK ) {
++ printf("new merge\n");
++ return(STATUS_MERGED);
++ }
++ else return(ret);
++ }
+ if (compEQ(key, current->key)) {
+ if ( rec->ipmax > current->rec.ipmax ) {
+ current->rec.ipmax=rec->ipmax;
+@@ -458,7 +475,7 @@
+ }
+ }
+ //check if higher ip (ipmax) is already in a range
+- if (compEQ2(rec->ipmax,current->key,current->rec.ipmax)) {
++ /*if (compEQ2(rec->ipmax,current->key,current->rec.ipmax)) {
+ fprintf(logfile,"higher ip in range\n");
+ tmpkey=key;
+ strcpy(tmprec.blockname,current->rec.blockname);
+@@ -470,7 +487,7 @@
+ if ( ret == STATUS_OK )
+ return(STATUS_MERGED);
+ else return(ret);
+- }
++ }*/
+ parent = current;
+ current = compLT(key, current->key) ?
+ current->left : current->right;
+@@ -495,7 +512,7 @@
+ } else {
+ root = x;
+ }
+-
++ //printf("new node, key: %lu, parent: %lu\n", x->key, parent ? parent->key : 0);
+ insertFixup(x);
+ lastFind = NULL;
+
diff --git a/pcr/moblock/moblock_include.patch b/pcr/moblock/moblock_include.patch
new file mode 100644
index 000000000..644e8240e
--- /dev/null
+++ b/pcr/moblock/moblock_include.patch
@@ -0,0 +1,10 @@
+--- MoBlock-0.8/MoBlock.c.orig 2008-08-15 14:41:49.000000000 -0400
++++ MoBlock-0.8/MoBlock.c 2008-08-15 14:43:45.000000000 -0400
+@@ -32,6 +32,7 @@
+ #include <netinet/udp.h>
+ #include <sys/socket.h>
+ #include <arpa/inet.h>
++#include <limits.h>
+ #include <linux/netfilter_ipv4.h>
+ #include <signal.h>
+ #include <regex.h>
diff --git a/pcr/mycron-git/PKGBUILD b/pcr/mycron-git/PKGBUILD
new file mode 100644
index 000000000..16022bc5f
--- /dev/null
+++ b/pcr/mycron-git/PKGBUILD
@@ -0,0 +1,49 @@
+# Contributor: Dirk Sohler <spam@0x7be.de>
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname=mycron-git
+pkgver=20121116
+pkgrel=1
+pkgdesc='A standards compliant and convenient crontab management system.'
+
+url='https://dev.0x7be.de/mycron'
+arch=('any')
+license=('GPL')
+
+depends=('python>=3.0')
+makedepends=('git')
+
+install=mycron.install
+
+source=('mycron.install')
+sha256sums=('a5406ae03412d3a1aaf6aadb902b4dd40bb6eadb21aa2ffb7c21ae95d656f598')
+
+_gitroot='https://github.com/dsohler/mycron'
+_gitname='master'
+
+build() {
+ cd $srcdir
+ msg "Connecting to GIT server...."
+
+ if [[ -d "$_gitname" ]]; then
+ cd "$_gitname" && git pull origin
+ msg "The local files are updated."
+ else
+ git clone "$_gitroot" "$_gitname"
+ fi
+
+ msg "GIT checkout done or server timeout"
+ msg "Starting build..."
+
+ rm -rf "$srcdir/$_gitname-build"
+ git clone "$srcdir/$_gitname" "$srcdir/$_gitname-build"
+}
+
+package() {
+ cd "$srcdir/$_gitname-build"
+ install -Dm 755 mycron.py $pkgdir/usr/bin/mycron
+ install -Dm 644 example-config.cfg \
+ $pkgdir/usr/share/doc/mycron/example-config.cfg
+ install -Dm 644 example.crontab \
+ $pkgdir/usr/share/doc/mycron/example.crontab
+}
diff --git a/pcr/mycron-git/mycron.install b/pcr/mycron-git/mycron.install
new file mode 100644
index 000000000..a56c1ab97
--- /dev/null
+++ b/pcr/mycron-git/mycron.install
@@ -0,0 +1,3 @@
+post_install() {
+ echo 'Don’t forget to set up your cron service/daemon to execute mycron every minute. See https://dev.0x7be.de/mycron for setup instructions and configuration examples.' | fold -sw 70
+}
diff --git a/pcr/nautilus-dropbox/PKGBUILD b/pcr/nautilus-dropbox/PKGBUILD
new file mode 100644
index 000000000..c8a81a959
--- /dev/null
+++ b/pcr/nautilus-dropbox/PKGBUILD
@@ -0,0 +1,45 @@
+# Contributor: josephgbr <rafael.f.f1@gmail.com>
+# Contributor: cmorlok <christianmorlok@web.de>
+# Contributor: fazibear <fazibear@gmail.com>
+# Contributor: neuromante <lorenzo.nizzi.grifi@gmail.com>
+# Contributor: Gordin <9ordin @t gmail.com>
+# Maintainer : Parabola GNU / Linux-libre Aurélien Desbrières <aurelien@cwb.io>
+
+pkgname=nautilus-dropbox
+pkgver=1.4.0
+pkgrel=2
+pkgdesc="Dropbox for Linux - Nautilus extension"
+arch=('i686' 'x86_64')
+url="https://www.dropbox.com/"
+license=('custom:CC-BY-ND-3' 'GPL')
+depends=('libnotify' 'nautilus' 'dropbox' 'hicolor-icon-theme')
+makedepends=('python2-docutils' 'python2' 'pygtk')
+install=${pkgname}.install
+options=('!libtool' '!emptydirs')
+source=("https://linux.dropbox.com/packages/${pkgname}-${pkgver}.tar.bz2")
+
+build() {
+ cd "${pkgname}-${pkgver}/"
+
+ sed "s/python/python2/" \
+ -i configure \
+ -i Makefile.am \
+ -i Makefile.in \
+ -i dropbox.in \
+ -i rst2man.py
+
+ # since python2-docutils, rst2man.py is named "rst2man2.py"
+ sed "s#rst2man.py#/usr/bin/rst2man2.py#" \
+ -i configure
+
+ ./configure --prefix=/usr --sysconfdir=/etc
+ make
+}
+
+package() {
+ cd "${pkgname}-${pkgver}/"
+ make DESTDIR="${pkgdir}" install
+ rm "${pkgdir}/usr/bin/dropbox"
+ rm "${pkgdir}/usr/share/applications/dropbox.desktop"
+ install -Dm644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/COPYING"
+}
diff --git a/pcr/nautilus-dropbox/nautilus-dropbox.install b/pcr/nautilus-dropbox/nautilus-dropbox.install
new file mode 100644
index 000000000..c4f3ef960
--- /dev/null
+++ b/pcr/nautilus-dropbox/nautilus-dropbox.install
@@ -0,0 +1,16 @@
+post_install() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+ cat <<-EndOfMessage
+
+==> Restart nautilus with 'nautilus -q'
+
+EndOfMessage
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ post_install $1
+}
diff --git a/pcr/note/PKGBUILD b/pcr/note/PKGBUILD
new file mode 100644
index 000000000..f4b2eefe2
--- /dev/null
+++ b/pcr/note/PKGBUILD
@@ -0,0 +1,34 @@
+# Contributor: David Pflug <Viaken@Gmail.com>
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+_author=TLINDEN
+_perlmod=note
+pkgname=$_perlmod
+pkgver=1.3.12
+pkgrel=2
+pkgdesc="A Perl-based note taking application with multiple backends"
+arch=('i686' 'x86_64')
+url="http://www.daemon.de/NOTE"
+license=('GPL')
+depends=('perl' 'perl-yaml')
+optdepends=(
+ 'perl-config-general: general db backend'
+ 'perl-crypt-cbc: encryption support'
+ 'perl-crypt-pwsafe3: password safe 3 backend'
+ 'perl-crypt-rijndael: encryption support'
+ 'perl-dbd-mysql: mysql db backend'
+ 'perl-dbi: mysql db backend'
+ )
+source=(http://cpan.perl.org/modules/by-authors/id/T/TL/$_author/$_perlmod-$pkgver.tar.gz)
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make install DESTDIR="$pkgdir"
+}
diff --git a/pcr/ocaml-camomile/PKGBUILD b/pcr/ocaml-camomile/PKGBUILD
new file mode 100644
index 000000000..48c8eb2f9
--- /dev/null
+++ b/pcr/ocaml-camomile/PKGBUILD
@@ -0,0 +1,28 @@
+# Contributor: Serge Zirukin <ftrvxmtrx@gmail.com>
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname=ocaml-camomile
+pkgver=0.8.4
+pkgrel=2
+pkgdesc="Comprehensive Unicode library for OCaml"
+arch=('i686' 'x86_64')
+url="https://github.com/yoriyuki/Camomile"
+license=('LGPL')
+depends=('ocaml' 'ocaml-findlib>=1.2.3')
+install=
+source=(https://github.com/downloads/yoriyuki/${pkgname/ocaml-}/${pkgname/ocaml-/}-$pkgver.tar.bz2)
+md5sums=('389f1a7e5c2a634fbb3ea6f764d77bd3')
+options=(!strip !makeflags)
+
+build() {
+ cd "$srcdir/${pkgname/ocaml-/}-$pkgver"
+
+ ./configure --prefix=/usr
+ mkdir -p $pkgdir$(ocamlfind printconf destdir) || return 1
+ mkdir -p $pkgdir/usr/bin
+ sed -i -e 's|ocamlfind install|ocamlfind install -destdir '$pkgdir$(ocamlfind printconf destdir)'|' Makefile || return 1
+ make || return 1
+ make DATADIR="$pkgdir/usr/share" BINDIR="$pkgdir/usr/bin" install
+ install -Dm 644 COPYING $pkgdir/usr/share/licenses/$pkgname/LICENSE
+}
+
diff --git a/pcr/ocaml-pcre/PKGBUILD b/pcr/ocaml-pcre/PKGBUILD
new file mode 100644
index 000000000..bfc214b28
--- /dev/null
+++ b/pcr/ocaml-pcre/PKGBUILD
@@ -0,0 +1,34 @@
+# Contributor: Serge Zirukin <ftrvxmtrx@gmail.com>
+# Contributor: Sergei Lebedev <superbobry@gmail.com>
+# Contributor: Magnus Therning <magnus@therning.org>
+# Maintainer : Parabola GNU / Linux-libre <aurelien@cwb.io>
+
+pkgname=ocaml-pcre
+pkgver=7.0.2
+pkgrel=2
+pkgdesc="Perl compatible regular expressions for OCaml"
+arch=('i686' 'x86_64')
+url="http://www.ocaml.info/home/ocaml_sources.html#toc18"
+license=('LGPL')
+depends=('ocaml' 'pcre>=4.5')
+makedepends=('ocaml-findlib')
+replaces=('pcre-ocaml')
+conflicts=('pcre-ocaml')
+source=("https://bitbucket.org/mmottl/pcre-ocaml/downloads/pcre-ocaml-$pkgver.tar.gz")
+md5sums=('412eec5674a8bab76ccd09e006a24e10')
+options=(!strip)
+
+build() {
+ cd "$srcdir/pcre-ocaml-$pkgver"
+
+ ./configure --disable-debug --prefix /usr --destdir "$pkgdir"
+ make all
+}
+
+package() {
+ cd "$srcdir/pcre-ocaml-$pkgver"
+ export OCAMLFIND_DESTDIR="$pkgdir$(ocamlfind printconf destdir)"
+ install -dm 755 "$OCAMLFIND_DESTDIR/stublibs"
+ make install
+ install -Dm 644 COPYING.txt "$pkgdir/usr/share/licenses/$pkgname/COPYING"
+}
diff --git a/pcr/oinkmaster/PKGBUILD b/pcr/oinkmaster/PKGBUILD
new file mode 100644
index 000000000..f533e3663
--- /dev/null
+++ b/pcr/oinkmaster/PKGBUILD
@@ -0,0 +1,34 @@
+# Contributor: Robert Knauer <robert@privatdemail.net>
+# Contributor: Kessia Pinheiro <kessiapinheiro @ gmail.com>
+# Maintainer : Parabola GNU / Linux-libre Aurélien Desbrières <aurelien@cwb.io>
+
+pkgname=oinkmaster
+pkgver=2.0
+pkgrel=7
+pkgdesc="A script that will help you update and manage your Snort rules"
+arch=('i686' 'x86_64')
+license=('BSD')
+url="http://oinkmaster.sourceforge.net/"
+depends=('snort')
+backup=(
+ 'etc/oinkmaster.conf'
+)
+source=(
+ "http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.gz"
+)
+sha256sums=(
+ '3d52f0426aa7c81b122cef22b80d708d8bb8337537e48754a065804f46c46162'
+)
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ install -m0655 -D 'oinkmaster.pl' "${pkgdir}/usr/bin/oinkmaster.pl"
+ install -m0644 -D 'oinkmaster.conf' "${pkgdir}/etc/oinkmaster.conf"
+ install -m0644 -D 'oinkmaster.1' "${pkgdir}/usr/man/man1/oinkmaster.1"
+ install -d -m0644 "${pkgdir}/usr/share/oinkmaster/"
+ install -d -m0755 "${pkgdir}/usr/share/licenses/oinkmaster/"
+ install -m0644 -D 'template-examples.conf' "${pkgdir}/usr/share/oinkmaster/"
+ cp -R 'contrib/' "${pkgdir}/usr/share/oinkmaster/"
+ install -m0644 [[:upper:]]* "${pkgdir}/usr/share/oinkmaster/"
+ install -m0644 -D 'LICENSE' "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/pcr/owncloud/PKGBUILD b/pcr/owncloud/PKGBUILD
new file mode 100644
index 000000000..7861d0917
--- /dev/null
+++ b/pcr/owncloud/PKGBUILD
@@ -0,0 +1,35 @@
+# Contributor: Antonio Rojas <nqn1976 @ gmail.com>
+# Based on owncloud-git PKGBUILD by Alexander Ovsyannikov
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname=owncloud
+pkgver=4.5.2
+pkgrel=1
+pkgdesc="A cloud server to store your files centrally on a hardware controlled by you"
+arch=('any')
+url="http://owncloud.org/"
+license=('GPL')
+depends=('php-gd')
+optdepends=("php-apache: to use the Apache web server" "php-sqlite: to use the SQLite database backend" "mysql: to use the MySQL database backend")
+makedepends=()
+source=("http://owncloud.org/releases/$pkgname-$pkgver.tar.bz2" 'owncloud.conf')
+backup=('etc/httpd/conf/extra/owncloud.conf')
+install=owncloud.install
+
+package() {
+# install license
+ install -d $pkgdir/usr/share/licenses/$pkgname
+ cp $srcdir/$pkgname/COPYING-* $pkgdir/usr/share/licenses/$pkgname
+
+# install project
+ install -d $pkgdir/usr/share/webapps/
+ cp -a $srcdir/$pkgname $pkgdir/usr/share/webapps/
+ chown -R http:http $pkgdir/usr/share/webapps/*
+
+# install apache .conf file
+ install -d $pkgdir/etc/httpd/conf/extra
+ install -m 644 $srcdir/owncloud.conf $pkgdir/etc/httpd/conf/extra/
+}
+
+
+
diff --git a/pcr/owncloud/owncloud.conf b/pcr/owncloud/owncloud.conf
new file mode 100644
index 000000000..5f050f134
--- /dev/null
+++ b/pcr/owncloud/owncloud.conf
@@ -0,0 +1,17 @@
+<IfModule mod_alias.c>
+Alias /owncloud /usr/share/webapps/owncloud/
+</IfModule>
+<Directory /usr/share/webapps/owncloud/>
+ Options FollowSymlinks
+ Order allow,deny
+ AllowOverride all
+ allow from all
+ php_admin_value open_basedir "/srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/"
+</Directory>
+<VirtualHost *:80>
+ ServerAdmin foo@foofarm.com
+ DocumentRoot /usr/share/webapps/owncloud
+ ServerName owncloud.foo.com
+ ErrorLog logs/owncloud.foo.info-error_log
+ CustomLog logs/owncloud.foo.info-access_log common
+</VirtualHost> \ No newline at end of file
diff --git a/pcr/owncloud/owncloud.install b/pcr/owncloud/owncloud.install
new file mode 100644
index 000000000..327733f97
--- /dev/null
+++ b/pcr/owncloud/owncloud.install
@@ -0,0 +1,17 @@
+pkgname=ownCloud
+
+post_install() {
+ echo "Add the following lines into /etc/httpd/conf/httpd.conf:"
+ echo "Include /etc/httpd/conf/extra/owncloud.conf"
+ echo "LoadModule php5_module modules/libphp5.so"
+ echo "Include conf/extra/php5_module.conf"
+ echo
+ echo "Uncomment extensions xmlrpc.so zip.so gd.so"
+ echo "and either pdo_sqlite.so sqlite3.so (for the SQLite backend) or mysql.so mysqli.so pdo_mysql.so (for the MySQL backend)"
+ echo "in /etc/php/php.ini"
+}
+
+post_upgrade() {
+ echo "owncloud is now installed in /usr/share/webapps/owncloud"
+ echo "if you want it in /srv/http, add a symlink manually"
+} \ No newline at end of file
diff --git a/pcr/package-query/PKGBUILD b/pcr/package-query/PKGBUILD
new file mode 100644
index 000000000..5bec58ce3
--- /dev/null
+++ b/pcr/package-query/PKGBUILD
@@ -0,0 +1,29 @@
+# Contributor: tuxce <tuxce.net@gmail.com>
+# Maintainer : Parabola GNU / Linux-libre <aurelien@cwb.io>
+
+pkgname=package-query
+pkgver=1.1
+pkgrel=2
+pkgdesc="Query ALPM and AUR"
+arch=('i686' 'x86_64' 'mips64el' 'armv6h' 'armv7h')
+url="http://gitweb.archlinux.fr/package-query.git/"
+license=('GPL')
+depends=('pacman>=4.0' 'pacman<4.1' curl 'yajl>=2.0')
+source=(http://mir.archlinux.fr/~tuxce/releases/$pkgname/$pkgname-$pkgver.tar.gz)
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ ./configure --localstatedir=/var --prefix=/usr --sysconfdir=/etc --with-aur-url=https://aur.archlinux.org
+ make
+}
+
+package ()
+{
+ cd "$srcdir/$pkgname-$pkgver"
+ make DESTDIR="$pkgdir" install
+}
+
+# vim:set ts=2 sw=2 et:
+
+md5sums=('becb5734dd531631cbe2e1c9cf82ae9e')
+md5sums=('becb5734dd531631cbe2e1c9cf82ae9e')
diff --git a/pcr/packer/PKGBUILD b/pcr/packer/PKGBUILD
new file mode 100644
index 000000000..f2ea54a76
--- /dev/null
+++ b/pcr/packer/PKGBUILD
@@ -0,0 +1,36 @@
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname=packer
+pkgver=20120302
+pkgrel=1
+pkgdesc="Bash wrapper for pacman and aur"
+url="http://github.com/bruenig/packer"
+license="GPL"
+arch=('any')
+makedepends=('git')
+depends=('grep' 'sed' 'bash' 'curl' 'pacman' 'jshon')
+optdepends=('sudo: install and update packages as non-root'
+ 'customizepkg: apply customizepkg modifications')
+_gitroot='https://github.com/bruenig/packer.git'
+_gitname='packer'
+
+# Xavion is a non-contributing idiot
+
+build() {
+ cd "$srcdir"
+
+ msg "Connecting to github GIT server...."
+
+ if [ -d "$srcdir/$_gitname" ] ; then
+ cd $_gitname && git pull origin
+ else
+ git clone "$_gitroot"
+ cd $_gitname
+ fi
+
+ mkdir -p "$pkgdir/usr/bin/"
+ mkdir -p "$pkgdir/usr/share/man/man8/"
+ install -m 755 packer "$pkgdir/usr/bin/packer"
+ install -m 644 packer.8 "$pkgdir/usr/share/man/man8/packer.8"
+}
+
diff --git a/pcr/pacman-color/0001-Add-conflict-for-replacing-owned-empty-directory.patch b/pcr/pacman-color/0001-Add-conflict-for-replacing-owned-empty-directory.patch
new file mode 100644
index 000000000..85622aaac
--- /dev/null
+++ b/pcr/pacman-color/0001-Add-conflict-for-replacing-owned-empty-directory.patch
@@ -0,0 +1,152 @@
+From 717fdb8ee0fd23cf72fc7d2832317f513caefa2c Mon Sep 17 00:00:00 2001
+From: Allan McRae <allan@archlinux.org>
+Date: Sun, 8 Jul 2012 21:36:36 +1000
+Subject: [PATCH 1/4] Add conflict for replacing owned empty directory
+
+When two packages own an empty directory, pacman finds no conflict when
+one of those packages wants to replace the directory with a file or a
+symlink. When it comes to actually extracting the new file/symlink,
+pacman sees the directory is still there (we do not remove empty
+directories if they are owned by a package) and refuses to extract.
+
+Detect this potential conflict early and bail. Note that it is a
+_potential_ conflict and not a guaranteed one as the other package owning
+the directory could be updated or removed first which would remove
+the conflict. However, pacman currently can not sort package installation
+order to ensure this, so this conflict requires manual upgrade ordering.
+
+Signed-off-by: Allan McRae <allan@archlinux.org>
+Signed-off-by: Dan McGee <dan@archlinux.org>
+---
+ lib/libalpm/conflict.c | 32 ++++++++++++++++++++++++++------
+ test/pacman/tests/fileconflict009.py | 20 ++++++++++++++++++++
+ test/pacman/tests/fileconflict010.py | 20 ++++++++++++++++++++
+ 3 files changed, 66 insertions(+), 6 deletions(-)
+ create mode 100644 test/pacman/tests/fileconflict009.py
+ create mode 100644 test/pacman/tests/fileconflict010.py
+
+diff --git a/lib/libalpm/conflict.c b/lib/libalpm/conflict.c
+index 32f6f30..efa1a87 100644
+--- a/lib/libalpm/conflict.c
++++ b/lib/libalpm/conflict.c
+@@ -328,15 +328,35 @@ const alpm_file_t *_alpm_filelist_contains(alpm_filelist_t *filelist,
+ return NULL;
+ }
+
+-static int dir_belongsto_pkg(const char *root, const char *dirpath,
++static int dir_belongsto_pkg(alpm_handle_t *handle, const char *dirpath,
+ alpm_pkg_t *pkg)
+ {
++ alpm_list_t *i;
+ struct stat sbuf;
+ char path[PATH_MAX];
+ char abspath[PATH_MAX];
+- struct dirent *ent = NULL;
+ DIR *dir;
++ struct dirent *ent = NULL;
++ const char *root = handle->root;
++
++ /* TODO: this is an overly strict check but currently pacman will not
++ * overwrite a directory with a file (case 10/11 in add.c). Adjusting that
++ * is not simple as even if the directory is being unowned by a conflicting
++ * package, pacman does not sort this to ensure all required directory
++ * "removals" happen before installation of file/symlink */
++
++ /* check that no other _installed_ package owns the directory */
++ for(i = _alpm_db_get_pkgcache(handle->db_local); i; i = i->next) {
++ if(pkg == i->data) {
++ continue;
++ }
++
++ if(_alpm_filelist_contains(alpm_pkg_get_files(i->data), dirpath)) {
++ return 0;
++ }
++ }
+
++ /* check all files in directory are owned by the package */
+ snprintf(abspath, PATH_MAX, "%s%s", root, dirpath);
+ dir = opendir(abspath);
+ if(dir == NULL) {
+@@ -349,13 +369,13 @@ static int dir_belongsto_pkg(const char *root, const char *dirpath,
+ if(strcmp(name, ".") == 0 || strcmp(name, "..") == 0) {
+ continue;
+ }
+- snprintf(path, PATH_MAX, "%s/%s", dirpath, name);
++ snprintf(path, PATH_MAX, "%s%s", dirpath, name);
+ snprintf(abspath, PATH_MAX, "%s%s", root, path);
+ if(stat(abspath, &sbuf) != 0) {
+ continue;
+ }
+ if(S_ISDIR(sbuf.st_mode)) {
+- if(dir_belongsto_pkg(root, path, pkg)) {
++ if(dir_belongsto_pkg(handle, path, pkg)) {
+ continue;
+ } else {
+ closedir(dir);
+@@ -529,9 +549,9 @@ alpm_list_t *_alpm_db_find_fileconflicts(alpm_handle_t *handle,
+ sprintf(dir, "%s/", filestr);
+ if(_alpm_filelist_contains(alpm_pkg_get_files(dbpkg), dir)) {
+ _alpm_log(handle, ALPM_LOG_DEBUG,
+- "check if all files in %s belongs to %s\n",
++ "check if all files in %s belong to %s\n",
+ dir, dbpkg->name);
+- resolved_conflict = dir_belongsto_pkg(handle->root, filestr, dbpkg);
++ resolved_conflict = dir_belongsto_pkg(handle, dir, dbpkg);
+ }
+ free(dir);
+ }
+diff --git a/test/pacman/tests/fileconflict009.py b/test/pacman/tests/fileconflict009.py
+new file mode 100644
+index 0000000..904af4a
+--- /dev/null
++++ b/test/pacman/tests/fileconflict009.py
+@@ -0,0 +1,20 @@
++self.description = "dir->symlink change during package upgrade (directory conflict)"
++
++lp1 = pmpkg("pkg1")
++lp1.files = ["dir/"]
++self.addpkg2db("local", lp1)
++
++lp2 = pmpkg("pkg2")
++lp2.files = ["dir/"]
++self.addpkg2db("local", lp2)
++
++p = pmpkg("pkg1", "1.0-2")
++p.files = ["dir -> /usr/dir"]
++self.addpkg2db("sync", p)
++
++self.args = "-S pkg1"
++
++self.addrule("PACMAN_RETCODE=1")
++self.addrule("PKG_VERSION=pkg1|1.0-1")
++self.addrule("PKG_VERSION=pkg2|1.0-1")
++self.addrule("DIR_EXIST=dir/")
+diff --git a/test/pacman/tests/fileconflict010.py b/test/pacman/tests/fileconflict010.py
+new file mode 100644
+index 0000000..0a3ce83
+--- /dev/null
++++ b/test/pacman/tests/fileconflict010.py
+@@ -0,0 +1,20 @@
++self.description = "dir->file change during package upgrade (directory conflict)"
++
++lp1 = pmpkg("pkg1")
++lp1.files = ["dir/"]
++self.addpkg2db("local", lp1)
++
++lp2 = pmpkg("pkg2")
++lp2.files = ["dir/"]
++self.addpkg2db("local", lp2)
++
++p = pmpkg("pkg1", "1.0-2")
++p.files = ["dir"]
++self.addpkg2db("sync", p)
++
++self.args = "-S pkg1"
++
++self.addrule("PACMAN_RETCODE=1")
++self.addrule("PKG_VERSION=pkg1|1.0-1")
++self.addrule("PKG_VERSION=pkg2|1.0-1")
++self.addrule("DIR_EXIST=dir/")
+--
+1.7.11.1
+
diff --git a/pcr/pacman-color/0002-Check-empty-subdirectory-ownership.patch b/pcr/pacman-color/0002-Check-empty-subdirectory-ownership.patch
new file mode 100644
index 000000000..6cf496d16
--- /dev/null
+++ b/pcr/pacman-color/0002-Check-empty-subdirectory-ownership.patch
@@ -0,0 +1,61 @@
+From 44e9fdd0e848382337edb97d41e7317638a67bac Mon Sep 17 00:00:00 2001
+From: Allan McRae <allan@archlinux.org>
+Date: Sun, 8 Jul 2012 23:58:37 +1000
+Subject: [PATCH 2/4] Check empty subdirectory ownership
+
+When checking if a package owns a directory, it is important to check
+not only that all the files in the directory are part of the package,
+but also if the directory is part of a package. This catches empty
+subdirectories during conflict checking for directory to file/symlink
+replacements.
+
+Signed-off-by: Allan McRae <allan@archlinux.org>
+Signed-off-by: Dan McGee <dan@archlinux.org>
+---
+ lib/libalpm/conflict.c | 5 +++++
+ test/pacman/tests/fileconflict012.py | 17 +++++++++++++++++
+ 2 files changed, 22 insertions(+)
+ create mode 100644 test/pacman/tests/fileconflict012.py
+
+diff --git a/lib/libalpm/conflict.c b/lib/libalpm/conflict.c
+index efa1a87..d6e5d8c 100644
+--- a/lib/libalpm/conflict.c
++++ b/lib/libalpm/conflict.c
+@@ -339,6 +339,11 @@ static int dir_belongsto_pkg(alpm_handle_t *handle, const char *dirpath,
+ struct dirent *ent = NULL;
+ const char *root = handle->root;
+
++ /* check directory is actually in package - used for subdirectory checks */
++ if(!_alpm_filelist_contains(alpm_pkg_get_files(pkg), dirpath)) {
++ return 0;
++ }
++
+ /* TODO: this is an overly strict check but currently pacman will not
+ * overwrite a directory with a file (case 10/11 in add.c). Adjusting that
+ * is not simple as even if the directory is being unowned by a conflicting
+diff --git a/test/pacman/tests/fileconflict012.py b/test/pacman/tests/fileconflict012.py
+new file mode 100644
+index 0000000..421b739
+--- /dev/null
++++ b/test/pacman/tests/fileconflict012.py
+@@ -0,0 +1,17 @@
++self.description = "dir->file change during package upgrade (filesystem file conflict)"
++
++lp1 = pmpkg("pkg1")
++lp1.files = ["dir/"]
++self.addpkg2db("local", lp1)
++
++self.filesystem = ["dir/file"]
++
++p = pmpkg("pkg1", "1.0-2")
++p.files = ["dir"]
++self.addpkg2db("sync", p)
++
++self.args = "-S pkg1"
++
++self.addrule("PACMAN_RETCODE=1")
++self.addrule("PKG_VERSION=pkg1|1.0-1")
++self.addrule("DIR_EXIST=dir/")
+--
+1.7.11.1
+
diff --git a/pcr/pacman-color/PKGBUILD b/pcr/pacman-color/PKGBUILD
new file mode 100644
index 000000000..525f965b9
--- /dev/null
+++ b/pcr/pacman-color/PKGBUILD
@@ -0,0 +1,42 @@
+# Contributor: JokerBoy <jokerboy at punctweb dot ro>
+# Contributor: vogo <vogo(at)seznam(dot)cz>
+# Maintainer : Parabola GNU / Linux-libre <aurelien@cwb.io>
+
+pkgname=pacman-color
+pkgver=4.0.3
+pkgrel=3
+pkgdesc="A color patched command-line frontend for libalpm (Pacman)"
+arch=('i686' 'x86_64')
+url="http://www.archlinux.org/pacman/"
+license=('GPL')
+depends=('pacman>=4.0' 'pacman<4.1')
+backup=('etc/pacman.d/color.conf')
+source=("http://mirrors.kernel.org/archlinux/other/pacman/pacman-${pkgver}.tar.gz"
+ '0001-Add-conflict-for-replacing-owned-empty-directory.patch'
+ '0002-Check-empty-subdirectory-ownership.patch'
+ "${pkgname}-${pkgver}.patch"
+ 'color.conf')
+md5sums=('387965c7125e60e5f0b9ff3b427fe0f9'
+ '1a9b79788640907a2b34e8671cacc94a'
+ 'a9ddd43891bed364e1e97d27b2887bf1'
+ '185e6a488b1aa14db4a54b71eb5e5e29'
+ '47665f5054196c20ba0dd280a8d4c5e1')
+
+build() {
+ cd "pacman-${pkgver}"
+ patch -p1 -i "${srcdir}/0001-Add-conflict-for-replacing-owned-empty-directory.patch"
+ patch -p1 -i "${srcdir}/0002-Check-empty-subdirectory-ownership.patch"
+ patch -p1 -i "${srcdir}/${pkgname}-${pkgver}.patch"
+ ./configure \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --disable-doc
+ make
+}
+
+package() {
+ # install pacman-color && color.conf
+ install -Dm755 "pacman-${pkgver}/src/pacman/.libs/pacman" "${pkgdir}/usr/bin/pacman-color"
+ install -Dm644 'color.conf' "${pkgdir}/etc/pacman.d/color.conf"
+}
diff --git a/pcr/pacman-color/color.conf b/pcr/pacman-color/color.conf
new file mode 100644
index 000000000..4978d4e62
--- /dev/null
+++ b/pcr/pacman-color/color.conf
@@ -0,0 +1,46 @@
+# Configuration for pacman-color
+# ------------------------------
+# in default are all colors "intensive",
+# it looks much better on black backround
+#
+# valid colors:
+# black
+# red
+# green
+# yellow
+# blue
+# magenta
+# cyan
+# white
+# gray
+# intensive red
+# intensive green
+# intensive yellow
+# intensive blue
+# intensive magenta
+# intensive cyan
+# intensive white
+# intensive foreground
+# none
+
+# error: prefix, fail, Remove (?):, MISSING
+#Red = intensive red
+
+# done, success, pkg version, Not Modified
+#Green = intensive green
+
+# warning: prefix, Targets (?):, MODIFIED
+#Yellow = intensive yellow
+
+# :: prefix, pkg group, counter in install proces
+#Blue = intensive blue
+
+# repo name, package file name
+#Magenta = intensive magenta
+
+# url, flag installed
+#Cyan = intensive cyan
+
+# messages with :: prefix, titles, etc
+#White = intensive foreground
+
diff --git a/pcr/pacman-color/pacman-color-4.0.3.patch b/pcr/pacman-color/pacman-color-4.0.3.patch
new file mode 100644
index 000000000..c7b52ef04
--- /dev/null
+++ b/pcr/pacman-color/pacman-color-4.0.3.patch
@@ -0,0 +1,1297 @@
+diff -up -Npaur a/src/pacman/callback.c b/src/pacman/callback.c
+--- a/src/pacman/callback.c 2012-02-03 01:19:15.000000000 +0200
++++ b/src/pacman/callback.c 2012-07-20 21:48:20.266827634 +0300
+@@ -221,16 +221,16 @@ void cb_event(alpm_event_t event, void *
+ printf(_("generating %s with %s... "), (char *)data1, (char *)data2);
+ break;
+ case ALPM_EVENT_DELTA_PATCH_DONE:
+- printf(_("success!\n"));
++ color_printf(COLOR_GREEN_ALL, _("success!\n"));
+ break;
+ case ALPM_EVENT_DELTA_PATCH_FAILED:
+- printf(_("failed.\n"));
++ color_printf(COLOR_RED_ALL, _("failed.\n"));
+ break;
+ case ALPM_EVENT_SCRIPTLET_INFO:
+ printf("%s", (char *)data1);
+ break;
+ case ALPM_EVENT_RETRIEVE_START:
+- printf(_(":: Retrieving packages from %s...\n"), (char *)data1);
++ color_printf(COLOR_DOUBLECOLON, _(":: Retrieving packages from %s...\n"), (char *)data1);
+ break;
+ case ALPM_EVENT_DISKSPACE_START:
+ if(config->noprogressbar) {
+@@ -264,14 +264,14 @@ void cb_question(alpm_question_t event,
+ switch(event) {
+ case ALPM_QUESTION_INSTALL_IGNOREPKG:
+ if(!config->op_s_downloadonly) {
+- *response = yesno(_(":: %s is in IgnorePkg/IgnoreGroup. Install anyway?"),
++ *response = yesno(COLOR_DOUBLECOLON, _(":: %s is in IgnorePkg/IgnoreGroup. Install anyway?"),
+ alpm_pkg_get_name(data1));
+ } else {
+ *response = 1;
+ }
+ break;
+ case ALPM_QUESTION_REPLACE_PKG:
+- *response = yesno(_(":: Replace %s with %s/%s?"),
++ *response = yesno(COLOR_DOUBLECOLON, _(":: Replace %s with %s/%s?"),
+ alpm_pkg_get_name(data1),
+ (char *)data3,
+ alpm_pkg_get_name(data2));
+@@ -280,12 +280,12 @@ void cb_question(alpm_question_t event,
+ /* data parameters: target package, local package, conflict (strings) */
+ /* print conflict only if it contains new information */
+ if(strcmp(data1, data3) == 0 || strcmp(data2, data3) == 0) {
+- *response = noyes(_(":: %s and %s are in conflict. Remove %s?"),
++ *response = noyes(COLOR_DOUBLECOLON, _(":: %s and %s are in conflict. Remove %s?"),
+ (char *)data1,
+ (char *)data2,
+ (char *)data2);
+ } else {
+- *response = noyes(_(":: %s and %s are in conflict (%s). Remove %s?"),
++ *response = noyes(COLOR_DOUBLECOLON, _(":: %s and %s are in conflict (%s). Remove %s?"),
+ (char *)data1,
+ (char *)data2,
+ (char *)data3,
+@@ -302,13 +302,13 @@ void cb_question(alpm_question_t event,
+ (char *)alpm_pkg_get_name(i->data));
+ count++;
+ }
+- printf(_n(
++ color_printf(COLOR_DOUBLECOLON, _n(
+ ":: The following package cannot be upgraded due to unresolvable dependencies:\n",
+ ":: The following packages cannot be upgraded due to unresolvable dependencies:\n",
+ count));
+- list_display(" ", namelist);
++ list_display(NULL, " ", namelist);
+ printf("\n");
+- *response = noyes(_n(
++ *response = noyes(NULL, _n(
+ "Do you want to skip the above package for this upgrade?",
+ "Do you want to skip the above packages for this upgrade?",
+ count));
+@@ -320,7 +320,7 @@ void cb_question(alpm_question_t event,
+ alpm_list_t *providers = (alpm_list_t *)data1;
+ size_t count = alpm_list_count(providers);
+ char *depstring = alpm_dep_compute_string((alpm_depend_t *)data2);
+- printf(_(":: There are %zd providers available for %s:\n"), count,
++ color_printf(COLOR_DOUBLECOLON, _(":: There are %zd providers available for %s:\n"), count,
+ depstring);
+ free(depstring);
+ select_display(providers);
+@@ -329,7 +329,7 @@ void cb_question(alpm_question_t event,
+ break;
+ case ALPM_QUESTION_LOCAL_NEWER:
+ if(!config->op_s_downloadonly) {
+- *response = yesno(_(":: %s-%s: local version is newer. Upgrade anyway?"),
++ *response = yesno(COLOR_DOUBLECOLON, _(":: %s-%s: local version is newer. Upgrade anyway?"),
+ alpm_pkg_get_name(data1),
+ alpm_pkg_get_version(data1));
+ } else {
+@@ -337,7 +337,7 @@ void cb_question(alpm_question_t event,
+ }
+ break;
+ case ALPM_QUESTION_CORRUPTED_PKG:
+- *response = yesno(_(":: File %s is corrupted (%s).\n"
++ *response = yesno(COLOR_DOUBLECOLON, _(":: File %s is corrupted (%s).\n"
+ "Do you want to delete it?"),
+ (char *)data1,
+ alpm_strerror(*(enum _alpm_errno_t *)data2));
+@@ -347,7 +347,7 @@ void cb_question(alpm_question_t event,
+ alpm_pgpkey_t *key = data1;
+ char created[12];
+ strftime(created, 12, "%Y-%m-%d", localtime(&(key->created)));
+- *response = yesno(_(":: Import PGP key %s, \"%s\", created %s?"),
++ *response = yesno(COLOR_DOUBLECOLON, _(":: Import PGP key %s, \"%s\", created %s?"),
+ key->fingerprint, key->uid, created);
+ }
+ break;
+@@ -481,8 +481,9 @@ void cb_progress(alpm_progress_t event,
+
+ }
+
+- printf("(%*ld/%*ld) %ls%-*s", digits, (unsigned long)current,
+- digits, (unsigned long)howmany, wcstr, padwid, "");
++ color_printf(COLOR_BLUE_ALL, "(%*ld/%*ld)", digits, (unsigned long)current,
++ digits, (unsigned long)howmany);
++ printf(" %ls%-*s", wcstr, padwid, "");
+
+ free(wcstr);
+
+diff -up -Npaur a/src/pacman/package.c b/src/pacman/package.c
+--- a/src/pacman/package.c 2012-02-03 01:18:52.000000000 +0200
++++ b/src/pacman/package.c 2012-07-20 21:48:20.266827634 +0300
+@@ -41,7 +41,7 @@
+ * @param deps a list with items of type alpm_depend_t
+ * @return a string list, must be freed
+ */
+-static void deplist_display(const char *title,
++static void deplist_display(const colordata_t *colors_title, const char *title,
+ alpm_list_t *deps)
+ {
+ alpm_list_t *i, *text = NULL;
+@@ -49,7 +49,7 @@ static void deplist_display(const char *
+ alpm_depend_t *dep = alpm_list_getdata(i);
+ text = alpm_list_add(text, alpm_dep_compute_string(dep));
+ }
+- list_display(title, text);
++ list_display(colors_title, title, text);
+ FREELIST(text);
+ }
+
+@@ -102,65 +102,65 @@ void dump_pkg_full(alpm_pkg_t *pkg, int
+
+ /* actual output */
+ if(from == PKG_FROM_SYNCDB) {
+- string_display(_("Repository :"),
+- alpm_db_get_name(alpm_pkg_get_db(pkg)));
++ color_string_display(COLOR_WHITE_ALL, _("Repository :"),
++ COLOR_MAGENTA_ALL, alpm_db_get_name(alpm_pkg_get_db(pkg)));
+ }
+- string_display(_("Name :"), alpm_pkg_get_name(pkg));
+- string_display(_("Version :"), alpm_pkg_get_version(pkg));
+- string_display(_("URL :"), alpm_pkg_get_url(pkg));
+- list_display(_("Licenses :"), alpm_pkg_get_licenses(pkg));
+- list_display(_("Groups :"), alpm_pkg_get_groups(pkg));
+- deplist_display(_("Provides :"), alpm_pkg_get_provides(pkg));
+- deplist_display(_("Depends On :"), alpm_pkg_get_depends(pkg));
+- list_display_linebreak(_("Optional Deps :"), alpm_pkg_get_optdepends(pkg));
++ color_string_display(COLOR_WHITE_ALL, _("Name :"), COLOR_WHITE_ALL, alpm_pkg_get_name(pkg));
++ color_string_display(COLOR_WHITE_ALL, _("Version :"), COLOR_GREEN_ALL, alpm_pkg_get_version(pkg));
++ color_string_display(COLOR_WHITE_ALL, _("URL :"), COLOR_CYAN_ALL, alpm_pkg_get_url(pkg));
++ list_display(COLOR_WHITE_ALL, _("Licenses :"), alpm_pkg_get_licenses(pkg));
++ list_display(COLOR_WHITE_ALL, _("Groups :"), alpm_pkg_get_groups(pkg));
++ deplist_display(COLOR_WHITE_ALL, _("Provides :"), alpm_pkg_get_provides(pkg));
++ deplist_display(COLOR_WHITE_ALL, _("Depends On :"), alpm_pkg_get_depends(pkg));
++ list_display_linebreak(COLOR_WHITE_ALL, _("Optional Deps :"), alpm_pkg_get_optdepends(pkg));
+ if(extra || from == PKG_FROM_LOCALDB) {
+- list_display(_("Required By :"), requiredby);
++ list_display(COLOR_WHITE_ALL, _("Required By :"), requiredby);
+ }
+- deplist_display(_("Conflicts With :"), alpm_pkg_get_conflicts(pkg));
+- deplist_display(_("Replaces :"), alpm_pkg_get_replaces(pkg));
++ deplist_display(COLOR_WHITE_ALL, _("Conflicts With :"), alpm_pkg_get_conflicts(pkg));
++ deplist_display(COLOR_WHITE_ALL, _("Replaces :"), alpm_pkg_get_replaces(pkg));
+
+ size = humanize_size(alpm_pkg_get_size(pkg), 'K', 2, &label);
+ if(from == PKG_FROM_SYNCDB) {
+- printf(_("Download Size : %6.2f %s\n"), size, label);
++ color_printf(COLOR_WHITE_COLON, _("Download Size : %6.2f %s\n"), size, label);
+ } else if(from == PKG_FROM_FILE) {
+- printf(_("Compressed Size: %6.2f %s\n"), size, label);
++ color_printf(COLOR_WHITE_COLON, _("Compressed Size: %6.2f %s\n"), size, label);
+ }
+
+ size = humanize_size(alpm_pkg_get_isize(pkg), 'K', 2, &label);
+- printf(_("Installed Size : %6.2f %s\n"), size, label);
++ color_printf(COLOR_WHITE_COLON, _("Installed Size : %6.2f %s\n"), size, label);
+
+- string_display(_("Packager :"), alpm_pkg_get_packager(pkg));
+- string_display(_("Architecture :"), alpm_pkg_get_arch(pkg));
+- string_display(_("Build Date :"), bdatestr);
++ string_display(COLOR_WHITE_ALL, _("Packager :"), alpm_pkg_get_packager(pkg));
++ string_display(COLOR_WHITE_ALL, _("Architecture :"), alpm_pkg_get_arch(pkg));
++ string_display(COLOR_WHITE_ALL, _("Build Date :"), bdatestr);
+ if(from == PKG_FROM_LOCALDB) {
+- string_display(_("Install Date :"), idatestr);
+- string_display(_("Install Reason :"), reason);
++ string_display(COLOR_WHITE_ALL, _("Install Date :"), idatestr);
++ string_display(COLOR_WHITE_ALL, _("Install Reason :"), reason);
+ }
+ if(from == PKG_FROM_FILE || from == PKG_FROM_LOCALDB) {
+- string_display(_("Install Script :"),
++ string_display(COLOR_WHITE_ALL, _("Install Script :"),
+ alpm_pkg_has_scriptlet(pkg) ? _("Yes") : _("No"));
+ }
+
+ if(from == PKG_FROM_SYNCDB) {
+- string_display(_("MD5 Sum :"), alpm_pkg_get_md5sum(pkg));
+- string_display(_("SHA256 Sum :"), alpm_pkg_get_sha256sum(pkg));
+- string_display(_("Signatures :"),
++ string_display(COLOR_WHITE_ALL, _("MD5 Sum :"), alpm_pkg_get_md5sum(pkg));
++ string_display(COLOR_WHITE_ALL, _("SHA256 Sum :"), alpm_pkg_get_sha256sum(pkg));
++ string_display(COLOR_WHITE_ALL, _("Signatures :"),
+ alpm_pkg_get_base64_sig(pkg) ? _("Yes") : _("None"));
+ }
+ if(from == PKG_FROM_FILE) {
+ alpm_siglist_t siglist;
+ int err = alpm_pkg_check_pgp_signature(pkg, &siglist);
+ if(err && alpm_errno(config->handle) == ALPM_ERR_SIG_MISSING) {
+- string_display(_("Signatures :"), _("None"));
++ string_display(COLOR_WHITE_ALL, _("Signatures :"), _("None"));
+ } else if(err) {
+- string_display(_("Signatures :"),
++ string_display(COLOR_WHITE_ALL, _("Signatures :"),
+ alpm_strerror(alpm_errno(config->handle)));
+ } else {
+ signature_display(_("Signatures :"), &siglist);
+ }
+ alpm_siglist_cleanup(&siglist);
+ }
+- string_display(_("Description :"), alpm_pkg_get_desc(pkg));
++ string_display(COLOR_WHITE_ALL, _("Description :"), alpm_pkg_get_desc(pkg));
+
+ /* Print additional package info if info flag passed more than once */
+ if(from == PKG_FROM_LOCALDB && extra) {
+@@ -219,7 +219,7 @@ void dump_pkg_backups(alpm_pkg_t *pkg)
+ {
+ alpm_list_t *i;
+ const char *root = alpm_option_get_root(config->handle);
+- printf(_("Backup Files:\n"));
++ color_printf(COLOR_WHITE_ALL, _("Backup Files:\n"));
+ if(alpm_pkg_get_backup(pkg)) {
+ /* package has backup files, so print them */
+ for(i = alpm_pkg_get_backup(pkg); i; i = alpm_list_next(i)) {
+@@ -252,7 +252,8 @@ void dump_pkg_files(alpm_pkg_t *pkg, int
+ for(i = 0; i < pkgfiles->count; i++) {
+ const alpm_file_t *file = pkgfiles->files + i;
+ if(!quiet) {
+- printf("%s %s%s\n", pkgname, root, file->name);
++ color_printf(COLOR_WHITE_ALL, "%s", pkgname);
++ printf(" %s%s\n", root, file->name);
+ } else {
+ printf("%s%s\n", root, file->name);
+ }
+diff -up -Npaur a/src/pacman/pacman.c b/src/pacman/pacman.c
+--- a/src/pacman/pacman.c 2012-02-15 23:57:20.000000000 +0200
++++ b/src/pacman/pacman.c 2012-07-20 21:48:20.266827634 +0300
+@@ -219,11 +219,23 @@ static void usage(int op, const char * c
+ */
+ static void version(void)
+ {
++ color_printf(COLOR_YELLOW_ALL, " .--. ");
++ printf(" ");
++ color_printf(COLOR_RED_ALL, " .---. ");
++ printf(" Pacman-color v%s - libalpm v%s\n", PACKAGE_VERSION, alpm_version());
++ color_printf(COLOR_YELLOW_ALL, "/ _.-'");
++ color_printf(COLOR_WHITE_ALL, " .-. .-");
++ color_printf(COLOR_RED_ALL, "|O O |");
++ printf(" Copyright (C) 2006-2012 Pacman Development Team\n");
++ color_printf(COLOR_YELLOW_ALL, "\\ '-.");
++ color_printf(COLOR_WHITE_ALL, " '-' '-");
++ color_printf(COLOR_RED_ALL, "|~~~ |");
++ printf(" Copyright (C) 2002-2006 Judd Vinet\n");
++ color_printf(COLOR_YELLOW_ALL, " '--' ");
++ printf(" ");
++ color_printf(COLOR_RED_ALL, "|.-.-.|");
++ printf(" Colored by vogo <vogo(at)seznam(dot)cz>\n");
+ printf("\n");
+- printf(" .--. Pacman v%s - libalpm v%s\n", PACKAGE_VERSION, alpm_version());
+- printf("/ _.-' .-. .-. .-. Copyright (C) 2006-2012 Pacman Development Team\n");
+- printf("\\ '-. '-' '-' '-' Copyright (C) 2002-2006 Judd Vinet\n");
+- printf(" '--'\n");
+ printf(_(" This program may be freely redistributed under\n"
+ " the terms of the GNU General Public License.\n"));
+ printf("\n");
+@@ -795,6 +807,7 @@ int main(int argc, char *argv[])
+
+ /* init config data */
+ config = config_new();
++ parsecolorconfig();
+
+ /* disable progressbar if the output is redirected */
+ if(!isatty(fileno(stdout))) {
+@@ -896,18 +909,18 @@ int main(int argc, char *argv[])
+
+ if(config->verbose > 0) {
+ alpm_list_t *i;
+- printf("Root : %s\n", alpm_option_get_root(config->handle));
+- printf("Conf File : %s\n", config->configfile);
+- printf("DB Path : %s\n", alpm_option_get_dbpath(config->handle));
+- printf("Cache Dirs: ");
++ string_display(COLOR_WHITE_ALL, "Root :", alpm_option_get_root(config->handle));
++ string_display(COLOR_WHITE_ALL, "Conf File :", config->configfile);
++ string_display(COLOR_WHITE_ALL, "DB Path :", alpm_option_get_dbpath(config->handle));
++ color_printf(COLOR_WHITE_ALL, "Cache Dirs: ");
+ for(i = alpm_option_get_cachedirs(config->handle); i; i = alpm_list_next(i)) {
+ printf("%s ", (char *)alpm_list_getdata(i));
+ }
+ printf("\n");
+- printf("Lock File : %s\n", alpm_option_get_lockfile(config->handle));
+- printf("Log File : %s\n", alpm_option_get_logfile(config->handle));
+- printf("GPG Dir : %s\n", alpm_option_get_gpgdir(config->handle));
+- list_display("Targets :", pm_targets);
++ string_display(COLOR_WHITE_ALL, "Lock File :", alpm_option_get_lockfile(config->handle));
++ string_display(COLOR_WHITE_ALL, "Log File :", alpm_option_get_logfile(config->handle));
++ string_display(COLOR_WHITE_ALL, "GPG Dir :", alpm_option_get_gpgdir(config->handle));
++ list_display(COLOR_WHITE_ALL, "Targets :", pm_targets);
+ }
+
+ /* Log command line */
+diff -up -Npaur a/src/pacman/query.c b/src/pacman/query.c
+--- a/src/pacman/query.c 2011-12-23 22:36:36.000000000 +0200
++++ b/src/pacman/query.c 2012-07-20 21:48:20.268827634 +0300
+@@ -266,7 +266,9 @@ static int query_search(alpm_list_t *tar
+ alpm_pkg_t *pkg = alpm_list_getdata(i);
+
+ if(!config->quiet) {
+- printf("local/%s %s", alpm_pkg_get_name(pkg), alpm_pkg_get_version(pkg));
++ color_printf(COLOR_MAGENTA_ALL, "local/");
++ color_printf(COLOR_WHITE_ALL, "%s ", alpm_pkg_get_name(pkg));
++ color_printf(COLOR_GREEN_ALL, "%s", alpm_pkg_get_version(pkg));
+ } else {
+ printf("%s", alpm_pkg_get_name(pkg));
+ }
+@@ -275,16 +277,11 @@ static int query_search(alpm_list_t *tar
+ if(!config->quiet) {
+ if((grp = alpm_pkg_get_groups(pkg)) != NULL) {
+ alpm_list_t *k;
+- printf(" (");
++ color_printf(COLOR_BLUE_ALL, " (");
+ for(k = grp; k; k = alpm_list_next(k)) {
+ const char *group = alpm_list_getdata(k);
+- printf("%s", group);
+- if(alpm_list_next(k)) {
+- /* only print a spacer if there are more groups */
+- printf(" ");
+- }
++ color_printf(COLOR_BLUE_ALL, "%s%s", group, (alpm_list_next(k) ? " " : ")"));
+ }
+- printf(")");
+ }
+
+ /* we need a newline and initial indent first */
+@@ -315,7 +312,8 @@ static int query_group(alpm_list_t *targ
+
+ for(p = grp->packages; p; p = alpm_list_next(p)) {
+ alpm_pkg_t *pkg = alpm_list_getdata(p);
+- printf("%s %s\n", grp->name, alpm_pkg_get_name(pkg));
++ color_printf(COLOR_BLUE_ALL, "%s ", grp->name);
++ color_printf(COLOR_WHITE_ALL, "%s\n", alpm_pkg_get_name(pkg));
+ }
+ }
+ } else {
+@@ -327,8 +325,8 @@ static int query_group(alpm_list_t *targ
+ const alpm_list_t *p;
+ for(p = grp->packages; p; p = alpm_list_next(p)) {
+ if(!config->quiet) {
+- printf("%s %s\n", grpname,
+- alpm_pkg_get_name(alpm_list_getdata(p)));
++ color_printf(COLOR_BLUE_ALL, "%s ", grpname);
++ color_printf(COLOR_WHITE_ALL, "%s\n", alpm_pkg_get_name(alpm_list_getdata(p)));
+ } else {
+ printf("%s\n", alpm_pkg_get_name(alpm_list_getdata(p)));
+ }
+@@ -478,7 +476,8 @@ static int display(alpm_pkg_t *pkg)
+ if(!config->op_q_info && !config->op_q_list
+ && !config->op_q_changelog && !config->op_q_check) {
+ if(!config->quiet) {
+- printf("%s %s\n", alpm_pkg_get_name(pkg), alpm_pkg_get_version(pkg));
++ color_printf(COLOR_WHITE_ALL, "%s ", alpm_pkg_get_name(pkg));
++ color_printf(COLOR_GREEN_ALL, "%s\n", alpm_pkg_get_version(pkg));
+ } else {
+ printf("%s\n", alpm_pkg_get_name(pkg));
+ }
+diff -up -Npaur a/src/pacman/remove.c b/src/pacman/remove.c
+--- a/src/pacman/remove.c 2012-02-06 13:36:22.000000000 +0200
++++ b/src/pacman/remove.c 2012-07-20 21:48:20.268827634 +0300
+@@ -111,14 +111,14 @@ int pacman_remove(alpm_list_t *targets)
+ case ALPM_ERR_PKG_INVALID_ARCH:
+ for(i = data; i; i = alpm_list_next(i)) {
+ char *pkg = alpm_list_getdata(i);
+- printf(_(":: package %s does not have a valid architecture\n"), pkg);
++ color_printf(COLOR_DOUBLECOLON, _(":: package %s does not have a valid architecture\n"), pkg);
+ }
+ break;
+ case ALPM_ERR_UNSATISFIED_DEPS:
+ for(i = data; i; i = alpm_list_next(i)) {
+ alpm_depmissing_t *miss = alpm_list_getdata(i);
+ char *depstring = alpm_dep_compute_string(miss->depend);
+- printf(_(":: %s: requires %s\n"), miss->target, depstring);
++ color_printf(COLOR_DOUBLECOLON, _(":: %s: requires %s\n"), miss->target, depstring);
+ free(depstring);
+ }
+ break;
+@@ -140,7 +140,7 @@ int pacman_remove(alpm_list_t *targets)
+ holdpkg = 1;
+ }
+ }
+- if(holdpkg && (noyes(_("HoldPkg was found in target list. Do you want to continue?")) == 0)) {
++ if(holdpkg && (noyes(NULL, _("HoldPkg was found in target list. Do you want to continue?")) == 0)) {
+ retval = 1;
+ goto cleanup;
+ }
+@@ -160,7 +160,7 @@ int pacman_remove(alpm_list_t *targets)
+ /* print targets and ask user confirmation */
+ display_targets();
+ printf("\n");
+- if(yesno(_("Do you want to remove these packages?")) == 0) {
++ if(yesno(NULL, _("Do you want to remove these packages?")) == 0) {
+ retval = 1;
+ goto cleanup;
+ }
+diff -up -Npaur a/src/pacman/sync.c b/src/pacman/sync.c
+--- a/src/pacman/sync.c 2012-03-13 15:24:11.000000000 +0200
++++ b/src/pacman/sync.c 2012-07-20 21:48:20.269827634 +0300
+@@ -146,8 +146,8 @@ static int sync_cleandb_all(void)
+ int ret = 0;
+
+ dbpath = alpm_option_get_dbpath(config->handle);
+- printf(_("Database directory: %s\n"), dbpath);
+- if(!yesno(_("Do you want to remove unused repositories?"))) {
++ color_printf(COLOR_WHITE_COLON, _("Database directory: %s\n"), dbpath);
++ if(!yesno(NULL, _("Do you want to remove unused repositories?"))) {
+ return 0;
+ }
+ printf(_("removing unused sync repositories...\n"));
+@@ -175,7 +175,7 @@ static int sync_cleancache(int level)
+ int ret = 0;
+
+ for(i = cachedirs; i; i = alpm_list_next(i)) {
+- printf(_("Cache directory: %s\n"), (char *)alpm_list_getdata(i));
++ color_printf(COLOR_WHITE_COLON, _("Cache directory: %s\n"), (char *)alpm_list_getdata(i));
+ }
+
+ if(!config->cleanmethod) {
+@@ -184,19 +184,19 @@ static int sync_cleancache(int level)
+ }
+
+ if(level == 1) {
+- printf(_("Packages to keep:\n"));
++ color_printf(COLOR_WHITE_COLON, _("Packages to keep:\n"));
+ if(config->cleanmethod & PM_CLEAN_KEEPINST) {
+ printf(_(" All locally installed packages\n"));
+ }
+ if(config->cleanmethod & PM_CLEAN_KEEPCUR) {
+ printf(_(" All current sync database packages\n"));
+ }
+- if(!yesno(_("Do you want to remove all other packages from cache?"))) {
++ if(!yesno(NULL, _("Do you want to remove all other packages from cache?"))) {
+ return 0;
+ }
+ printf(_("removing old packages from cache...\n"));
+ } else {
+- if(!noyes(_("Do you want to remove ALL files from cache?"))) {
++ if(!noyes(NULL, _("Do you want to remove ALL files from cache?"))) {
+ return 0;
+ }
+ printf(_("removing all files from cache...\n"));
+@@ -345,9 +345,9 @@ static void print_installed(alpm_db_t *d
+ if(lpkg) {
+ const char *lpkgver = alpm_pkg_get_version(lpkg);
+ if(strcmp(lpkgver,pkgver) == 0) {
+- printf(" [%s]", _("installed"));
++ color_printf(COLOR_CYAN_ALL, " [%s]", _("installed"));
+ } else {
+- printf(" [%s: %s]", _("installed"), lpkgver);
++ color_printf(COLOR_CYAN_ALL, " [%s: %s]", _("installed"), lpkgver);
+ }
+ }
+ }
+@@ -380,8 +380,9 @@ static int sync_search(alpm_list_t *sync
+ alpm_pkg_t *pkg = alpm_list_getdata(j);
+
+ if(!config->quiet) {
+- printf("%s/%s %s", alpm_db_get_name(db), alpm_pkg_get_name(pkg),
+- alpm_pkg_get_version(pkg));
++ color_printf(COLOR_MAGENTA_ALL, "%s/", alpm_db_get_name(db));
++ color_printf(COLOR_WHITE_ALL, "%s ", alpm_pkg_get_name(pkg));
++ color_printf(COLOR_GREEN_ALL, "%s", alpm_pkg_get_version(pkg));
+ } else {
+ printf("%s", alpm_pkg_get_name(pkg));
+ }
+@@ -389,16 +390,11 @@ static int sync_search(alpm_list_t *sync
+ if(!config->quiet) {
+ if((grp = alpm_pkg_get_groups(pkg)) != NULL) {
+ alpm_list_t *k;
+- printf(" (");
++ color_printf(COLOR_BLUE_ALL, " (");
+ for(k = grp; k; k = alpm_list_next(k)) {
+ const char *group = alpm_list_getdata(k);
+- printf("%s", group);
+- if(alpm_list_next(k)) {
+- /* only print a spacer if there are more groups */
+- printf(" ");
+- }
++ color_printf(COLOR_BLUE_ALL, "%s%s", group, (alpm_list_next(k) ? " " : ")"));
+ }
+- printf(")");
+ }
+
+ print_installed(db_local, pkg);
+@@ -433,8 +429,8 @@ static int sync_group(int level, alpm_li
+ /* get names of packages in group */
+ for(k = grp->packages; k; k = alpm_list_next(k)) {
+ if(!config->quiet) {
+- printf("%s %s\n", grpname,
+- alpm_pkg_get_name(alpm_list_getdata(k)));
++ color_printf(COLOR_BLUE_ALL, "%s ", grpname);
++ color_printf(COLOR_WHITE_ALL, "%s\n", alpm_pkg_get_name(alpm_list_getdata(k)));
+ } else {
+ printf("%s\n", alpm_pkg_get_name(alpm_list_getdata(k)));
+ }
+@@ -451,8 +447,8 @@ static int sync_group(int level, alpm_li
+
+ if(level > 1) {
+ for(k = grp->packages; k; k = alpm_list_next(k)) {
+- printf("%s %s\n", grp->name,
+- alpm_pkg_get_name(alpm_list_getdata(k)));
++ color_printf(COLOR_BLUE_ALL, "%s ", grp->name);
++ color_printf(COLOR_WHITE_ALL, "%s\n", alpm_pkg_get_name(alpm_list_getdata(k)));
+ }
+ } else {
+ /* print grp names only, no package names */
+@@ -570,8 +566,9 @@ static int sync_list(alpm_list_t *syncs,
+ alpm_pkg_t *pkg = alpm_list_getdata(j);
+
+ if(!config->quiet) {
+- printf("%s %s %s", alpm_db_get_name(db), alpm_pkg_get_name(pkg),
+- alpm_pkg_get_version(pkg));
++ color_printf(COLOR_MAGENTA_ALL, "%s ", alpm_db_get_name(db));
++ color_printf(COLOR_WHITE_ALL, "%s ", alpm_pkg_get_name(pkg));
++ color_printf(COLOR_GREEN_ALL, "%s", alpm_pkg_get_version(pkg));
+ print_installed(db_local, pkg);
+ printf("\n");
+ } else {
+@@ -654,7 +651,7 @@ static int process_group(alpm_list_t *db
+
+
+ if(config->print == 0) {
+- printf(_(":: There are %d members in group %s:\n"), count,
++ color_printf(COLOR_DOUBLECOLON, _(":: There are %d members in group %s:\n"), count,
+ group);
+ select_display(pkgs);
+ char *array = malloc(count);
+@@ -771,7 +768,7 @@ static int sync_trans(alpm_list_t *targe
+ }
+
+ if(config->op_s_upgrade) {
+- printf(_(":: Starting full system upgrade...\n"));
++ color_printf(COLOR_DOUBLECOLON, _(":: Starting full system upgrade...\n"));
+ alpm_logaction(config->handle, "starting full system upgrade\n");
+ if(alpm_sync_sysupgrade(config->handle, config->op_s_upgrade >= 2) == -1) {
+ pm_printf(ALPM_LOG_ERROR, "%s\n", alpm_strerror(alpm_errno(config->handle)));
+@@ -797,14 +794,14 @@ int sync_prepare_execute(void)
+ case ALPM_ERR_PKG_INVALID_ARCH:
+ for(i = data; i; i = alpm_list_next(i)) {
+ char *pkg = alpm_list_getdata(i);
+- printf(_(":: package %s does not have a valid architecture\n"), pkg);
++ color_printf(COLOR_DOUBLECOLON, _(":: package %s does not have a valid architecture\n"), pkg);
+ }
+ break;
+ case ALPM_ERR_UNSATISFIED_DEPS:
+ for(i = data; i; i = alpm_list_next(i)) {
+ alpm_depmissing_t *miss = alpm_list_getdata(i);
+ char *depstring = alpm_dep_compute_string(miss->depend);
+- printf(_(":: %s: requires %s\n"), miss->target, depstring);
++ color_printf(COLOR_DOUBLECOLON, _(":: %s: requires %s\n"), miss->target, depstring);
+ free(depstring);
+ }
+ break;
+@@ -813,11 +810,11 @@ int sync_prepare_execute(void)
+ alpm_conflict_t *conflict = alpm_list_getdata(i);
+ /* only print reason if it contains new information */
+ if(conflict->reason->mod == ALPM_DEP_MOD_ANY) {
+- printf(_(":: %s and %s are in conflict\n"),
++ color_printf(COLOR_DOUBLECOLON, _(":: %s and %s are in conflict\n"),
+ conflict->package1, conflict->package2);
+ } else {
+ char *reason = alpm_dep_compute_string(conflict->reason);
+- printf(_(":: %s and %s are in conflict (%s)\n"),
++ color_printf(COLOR_DOUBLECOLON, _(":: %s and %s are in conflict (%s)\n"),
+ conflict->package1, conflict->package2, reason);
+ free(reason);
+ }
+@@ -850,9 +847,9 @@ int sync_prepare_execute(void)
+
+ int confirm;
+ if(config->op_s_downloadonly) {
+- confirm = yesno(_("Proceed with download?"));
++ confirm = yesno(NULL, _("Proceed with download?"));
+ } else {
+- confirm = yesno(_("Proceed with installation?"));
++ confirm = yesno(NULL, _("Proceed with installation?"));
+ }
+ if(!confirm) {
+ goto cleanup;
+@@ -872,7 +869,7 @@ int sync_prepare_execute(void)
+ conflict->file, conflict->target, conflict->ctarget);
+ break;
+ case ALPM_FILECONFLICT_FILESYSTEM:
+- printf(_("%s: %s exists in filesystem\n"),
++ color_printf(COLOR_WHITE_COLON, _("%s: %s exists in filesystem\n"),
+ conflict->target, conflict->file);
+ break;
+ }
+@@ -891,7 +888,7 @@ int sync_prepare_execute(void)
+ break;
+ }
+ /* TODO: stderr? */
+- printf(_("Errors occurred, no packages were upgraded.\n"));
++ color_printf(COLOR_RED_ALL, _("Errors occurred, no packages were upgraded.\n"));
+ retval = 1;
+ goto cleanup;
+ }
+@@ -939,7 +936,7 @@ int pacman_sync(alpm_list_t *targets)
+
+ if(config->op_s_sync) {
+ /* grab a fresh package list */
+- printf(_(":: Synchronizing package databases...\n"));
++ color_printf(COLOR_DOUBLECOLON, _(":: Synchronizing package databases...\n"));
+ alpm_logaction(config->handle, "synchronizing package lists\n");
+ if(!sync_synctree(config->op_s_sync, sync_dbs)) {
+ return 1;
+@@ -992,9 +989,9 @@ int pacman_sync(alpm_list_t *targets)
+ alpm_list_t *tmp = NULL;
+ if(config->op_s_upgrade || (tmp = alpm_list_diff(targets, packages, (alpm_list_fn_cmp)strcmp))) {
+ alpm_list_free(tmp);
+- printf(_(":: The following packages should be upgraded first :\n"));
+- list_display(" ", packages);
+- if(yesno(_(":: Do you want to cancel the current operation\n"
++ color_printf(COLOR_DOUBLECOLON, _(":: The following packages should be upgraded first :\n"));
++ list_display(NULL, " ", packages);
++ if(yesno(COLOR_DOUBLECOLON2, _(":: Do you want to cancel the current operation\n"
+ ":: and upgrade these packages now?"))) {
+ FREELIST(targs);
+ targs = packages;
+diff -up -Npaur a/src/pacman/util.c b/src/pacman/util.c
+--- a/src/pacman/util.c 2012-02-20 07:18:31.000000000 +0200
++++ b/src/pacman/util.c 2012-07-20 21:48:20.270827634 +0300
+@@ -48,6 +48,20 @@
+ #include "conf.h"
+ #include "callback.h"
+
++#define COLOR_LEN 8
++
++typedef struct __colortab_t {
++ char red[COLOR_LEN + 1];
++ char green[COLOR_LEN + 1];
++ char yellow[COLOR_LEN + 1];
++ char blue[COLOR_LEN + 1];
++ char magenta[COLOR_LEN + 1];
++ char cyan[COLOR_LEN + 1];
++ char white[COLOR_LEN + 1];
++ char none[COLOR_LEN + 1];
++} colortab_t;
++
++static colortab_t colortab;
+
+ int trans_init(alpm_transflag_t flags, int check_valid)
+ {
+@@ -463,10 +477,10 @@ static size_t string_length(const char *
+ return len;
+ }
+
+-void string_display(const char *title, const char *string)
++void string_display(const colordata_t *colors_title, const char *title, const char *string)
+ {
+ if(title) {
+- printf("%s ", title);
++ color_printf(colors_title, "%s ", title);
+ }
+ if(string == NULL || string[0] == '\0') {
+ printf(_("None"));
+@@ -599,14 +613,14 @@ int table_display(const char *title, con
+ return 0;
+ }
+
+-void list_display(const char *title, const alpm_list_t *list)
++void list_display(const colordata_t *colors_title, const char *title, const alpm_list_t *list)
+ {
+ const alpm_list_t *i;
+ size_t len = 0;
+
+ if(title) {
+ len = string_length(title) + 1;
+- printf("%s ", title);
++ color_printf(colors_title, "%s ", title);
+ }
+
+ if(!list) {
+@@ -640,13 +654,13 @@ void list_display(const char *title, con
+ }
+ }
+
+-void list_display_linebreak(const char *title, const alpm_list_t *list)
++void list_display_linebreak(const colordata_t *colors_title, const char *title, const alpm_list_t *list)
+ {
+ size_t len = 0;
+
+ if(title) {
+ len = string_length(title) + 1;
+- printf("%s ", title);
++ color_printf(colors_title, "%s ", title);
+ }
+
+ if(!list) {
+@@ -867,11 +881,11 @@ static void _display_targets(alpm_list_t
+ alpm_list_t *header = create_verbose_header(show_dl_size);
+ if(table_display(str, header, rows) != 0) {
+ /* fallback to list display if table wouldn't fit */
+- list_display(str, names);
++ list_display(COLOR_YELLOW_ALL, str, names);
+ }
+ alpm_list_free(header);
+ } else {
+- list_display(str, names);
++ list_display(COLOR_YELLOW_ALL, str, names);
+ }
+ printf("\n");
+
+@@ -886,21 +900,21 @@ static void _display_targets(alpm_list_t
+
+ if(dlsize > 0 || config->op_s_downloadonly) {
+ size = humanize_size(dlsize, 'M', 2, &label);
+- printf(_("Total Download Size: %.2f %s\n"), size, label);
++ color_printf(COLOR_WHITE_COLON, _("Total Download Size: %.2f %s\n"), size, label);
+ }
+ if(!config->op_s_downloadonly) {
+ if(isize > 0) {
+ size = humanize_size(isize, 'M', 2, &label);
+- printf(_("Total Installed Size: %.2f %s\n"), size, label);
++ color_printf(COLOR_WHITE_COLON, _("Total Installed Size: %.2f %s\n"), size, label);
+ }
+ if(rsize > 0 && isize == 0) {
+ size = humanize_size(rsize, 'M', 2, &label);
+- printf(_("Total Removed Size: %.2f %s\n"), size, label);
++ color_printf(COLOR_WHITE_COLON, _("Total Removed Size: %.2f %s\n"), size, label);
+ }
+ /* only show this net value if different from raw installed size */
+ if(isize > 0 && rsize > 0) {
+ size = humanize_size(isize - rsize, 'M', 2, &label);
+- printf(_("Net Upgrade Size: %.2f %s\n"), size, label);
++ color_printf(COLOR_WHITE_COLON, _("Net Upgrade Size: %.2f %s\n"), size, label);
+ }
+ }
+ }
+@@ -1115,7 +1129,7 @@ void display_new_optdepends(alpm_pkg_t *
+ alpm_list_t *optdeps = alpm_list_diff(new,old,str_cmp);
+ if(optdeps) {
+ printf(_("New optional dependencies for %s\n"), alpm_pkg_get_name(newpkg));
+- list_display_linebreak(" ", optdeps);
++ list_display_linebreak(NULL, " ", optdeps);
+ }
+ alpm_list_free(optdeps);
+ }
+@@ -1125,7 +1139,7 @@ void display_optdepends(alpm_pkg_t *pkg)
+ alpm_list_t *optdeps = alpm_pkg_get_optdepends(pkg);
+ if(optdeps) {
+ printf(_("Optional dependencies for %s\n"), alpm_pkg_get_name(pkg));
+- list_display_linebreak(" ", optdeps);
++ list_display_linebreak(NULL, " ", optdeps);
+ }
+ }
+
+@@ -1133,9 +1147,9 @@ static void display_repo_list(const char
+ {
+ const char *prefix= " ";
+
+- printf(":: ");
+- printf(_("Repository %s\n"), dbname);
+- list_display(prefix, list);
++ color_printf(COLOR_BLUE_ALL, ":: ");
++ color_printf(COLOR_WHITE_ALL, _("Repository %s\n"), dbname);
++ list_display(NULL, prefix, list);
+ }
+
+ void select_display(const alpm_list_t *pkglist)
+@@ -1354,7 +1368,7 @@ int select_question(int count)
+
+
+ /* presents a prompt and gets a Y/N answer */
+-static int question(short preset, char *fmt, va_list args)
++static int question(const colordata_t *colors, short preset, char *fmt, va_list args)
+ {
+ char response[32];
+ FILE *stream;
+@@ -1370,7 +1384,7 @@ static int question(short preset, char *
+ fflush(stdout);
+ fflush(stderr);
+
+- vfprintf(stream, fmt, args);
++ color_vfprintf(stream, colors, fmt, args);
+
+ if(preset) {
+ fprintf(stream, " %s ", _("[Y/n]"));
+@@ -1407,25 +1421,25 @@ static int question(short preset, char *
+ return 0;
+ }
+
+-int yesno(char *fmt, ...)
++int yesno(const colordata_t *colors, char *fmt, ...)
+ {
+ int ret;
+ va_list args;
+
+ va_start(args, fmt);
+- ret = question(1, fmt, args);
++ ret = question(colors, 1, fmt, args);
+ va_end(args);
+
+ return ret;
+ }
+
+-int noyes(char *fmt, ...)
++int noyes(const colordata_t *colors, char *fmt, ...)
+ {
+ int ret;
+ va_list args;
+
+ va_start(args, fmt);
+- ret = question(0, fmt, args);
++ ret = question(colors, 0, fmt, args);
+ va_end(args);
+
+ return ret;
+@@ -1474,22 +1488,42 @@ int pm_vasprintf(char **string, alpm_log
+ ret = vasprintf(&msg, format, args);
+
+ /* print a prefix to the message */
+- switch(level) {
+- case ALPM_LOG_ERROR:
+- pm_asprintf(string, _("error: %s"), msg);
+- break;
+- case ALPM_LOG_WARNING:
+- pm_asprintf(string, _("warning: %s"), msg);
+- break;
+- case ALPM_LOG_DEBUG:
+- pm_asprintf(string, "debug: %s", msg);
+- break;
+- case ALPM_LOG_FUNCTION:
+- pm_asprintf(string, "function: %s", msg);
+- break;
+- default:
+- pm_asprintf(string, "%s", msg);
+- break;
++ if(isatty(fileno(stdout))) {
++ switch(level) {
++ case ALPM_LOG_ERROR:
++ pm_asprintf(string, "%s%s%s%s", colortab.red, _("error: "), colortab.none, msg);
++ break;
++ case ALPM_LOG_WARNING:
++ pm_asprintf(string, "%s%s%s%s", colortab.yellow, _("warning: "), colortab.none, msg);
++ break;
++ case ALPM_LOG_DEBUG:
++ pm_asprintf(string, "debug: %s", msg);
++ break;
++ case ALPM_LOG_FUNCTION:
++ pm_asprintf(string, "function: %s", msg);
++ break;
++ default:
++ pm_asprintf(string, "%s", msg);
++ break;
++ }
++ } else {
++ switch(level) {
++ case ALPM_LOG_ERROR:
++ pm_asprintf(string, _("error: %s"), msg);
++ break;
++ case ALPM_LOG_WARNING:
++ pm_asprintf(string, _("warning: %s"), msg);
++ break;
++ case ALPM_LOG_DEBUG:
++ pm_asprintf(string, "debug: %s", msg);
++ break;
++ case ALPM_LOG_FUNCTION:
++ pm_asprintf(string, "function: %s", msg);
++ break;
++ default:
++ pm_asprintf(string, "%s", msg);
++ break;
++ }
+ }
+ free(msg);
+
+@@ -1524,10 +1558,10 @@ int pm_vfprintf(FILE *stream, alpm_logle
+ /* print a prefix to the message */
+ switch(level) {
+ case ALPM_LOG_ERROR:
+- fprintf(stream, _("error: "));
++ color_fprintf(stream, COLOR_RED_ALL, _("error: "));
+ break;
+ case ALPM_LOG_WARNING:
+- fprintf(stream, _("warning: "));
++ color_fprintf(stream, COLOR_YELLOW_ALL, _("warning: "));
+ break;
+ case ALPM_LOG_DEBUG:
+ fprintf(stream, "debug: ");
+@@ -1566,4 +1600,310 @@ char *strndup(const char *s, size_t n)
+ }
+ #endif
+
++/* pacman-color */
++
++int _set_color_sequence(const char* name, char* dest)
++{
++ int ret = 0;
++
++ if(strcmp(name, "black") == 0) {
++ strncpy(dest, "\033[0;30m", COLOR_LEN);
++ } else if(strcmp(name, "red") == 0) {
++ strncpy(dest, "\033[0;31m", COLOR_LEN);
++ } else if(strcmp(name, "green") == 0) {
++ strncpy(dest, "\033[0;32m", COLOR_LEN);
++ } else if(strcmp(name, "yellow") == 0) {
++ strncpy(dest, "\033[0;33m", COLOR_LEN);
++ } else if(strcmp(name, "blue") == 0) {
++ strncpy(dest, "\033[0;34m", COLOR_LEN);
++ } else if(strcmp(name, "magenta") == 0) {
++ strncpy(dest, "\033[0;35m", COLOR_LEN);
++ } else if(strcmp(name, "cyan") == 0) {
++ strncpy(dest, "\033[0;36m", COLOR_LEN);
++ } else if(strcmp(name, "white") == 0) {
++ strncpy(dest, "\033[0;37m", COLOR_LEN);
++ } else if(strcmp(name, "gray") == 0) {
++ strncpy(dest, "\033[1;30m", COLOR_LEN);
++ } else if(strcmp(name, "intensive red") == 0) {
++ strncpy(dest, "\033[1;31m", COLOR_LEN);
++ } else if(strcmp(name, "intensive green") == 0) {
++ strncpy(dest, "\033[1;32m", COLOR_LEN);
++ } else if(strcmp(name, "intensive yellow") == 0) {
++ strncpy(dest, "\033[1;33m", COLOR_LEN);
++ } else if(strcmp(name, "intensive blue") == 0) {
++ strncpy(dest, "\033[1;34m", COLOR_LEN);
++ } else if(strcmp(name, "intensive magenta") == 0) {
++ strncpy(dest, "\033[1;35m", COLOR_LEN);
++ } else if(strcmp(name, "intensive cyan") == 0) {
++ strncpy(dest, "\033[1;36m", COLOR_LEN);
++ } else if(strcmp(name, "intensive white") == 0) {
++ strncpy(dest, "\033[1;37m", COLOR_LEN);
++ } else if(strcmp(name, "intensive foreground") == 0) {
++ strncpy(dest, "\033[m\033[1m", COLOR_LEN);
++ } else if(strcmp(name, "none") == 0) {
++ strncpy(dest, "\033[m", COLOR_LEN);
++ } else {
++ ret = 1;
++ }
++ dest[COLOR_LEN] = '\0';
++ return(ret);
++}
++
++void _insert_color(FILE* stream, color_t color)
++{
++ switch(color) {
++ case COLOR_RED:
++ fprintf(stream, colortab.red);
++ break;
++ case COLOR_GREEN:
++ fprintf(stream, colortab.green);
++ break;
++ case COLOR_YELLOW:
++ fprintf(stream, colortab.yellow);
++ break;
++ case COLOR_BLUE:
++ fprintf(stream, colortab.blue);
++ break;
++ case COLOR_MAGENTA:
++ fprintf(stream, colortab.magenta);
++ break;
++ case COLOR_CYAN:
++ fprintf(stream, colortab.cyan);
++ break;
++ case COLOR_WHITE:
++ fprintf(stream, colortab.white);
++ break;
++ case COLOR_NONE:
++ fprintf(stream, colortab.none);
++ break;
++ default:;
++ }
++}
++
++int _parsecolorconfig(colortab_t* colortab, char* file)
++{
++ _set_color_sequence("intensive red", colortab->red);
++ _set_color_sequence("intensive green", colortab->green);
++ _set_color_sequence("intensive yellow", colortab->yellow);
++ _set_color_sequence("intensive blue", colortab->blue);
++ _set_color_sequence("intensive magenta", colortab->magenta);
++ _set_color_sequence("intensive cyan", colortab->cyan);
++ _set_color_sequence("intensive foreground", colortab->white);
++ _set_color_sequence("none", colortab->none);
++
++ FILE* fp = NULL;
++ int linenum = 0;
++ char line[PATH_MAX+1];
++ char* ptr;
++
++ fp = fopen(file, "r");
++ if(fp == NULL) {
++ pm_printf(ALPM_LOG_ERROR, _("config file %s could not be read.\n"), file);
++ return 1;
++ }
++ while(fgets(line, PATH_MAX, fp)) {
++ linenum++;
++ strtrim(line);
++
++ if(strlen(line) == 0 || line[0] == '#') {
++ continue;
++ }
++ if((ptr = strchr(line, '#'))) {
++ *ptr = '\0';
++ }
++
++ char* key = line;
++ ptr = line;
++ strsep(&ptr, "=");
++ strtrim(key);
++ strtrim(ptr);
++
++ if(key == NULL) {
++ pm_printf(ALPM_LOG_ERROR, _("config file %s, line %d: syntax error in config file- missing key.\n"),
++ file, linenum);
++ return 1;
++ }
++ if(strcmp(key, "Red") == 0) {
++ if(_set_color_sequence(ptr, colortab->red)) {
++ pm_printf(ALPM_LOG_ERROR, _("config file %s, line %d: color '%s' not recognized.\n"),
++ file, linenum, ptr);
++ }
++ } else if(strcmp(key, "Green") == 0) {
++ if(_set_color_sequence(ptr, colortab->green)) {
++ pm_printf(ALPM_LOG_ERROR, _("config file %s, line %d: color '%s' not recognized.\n"),
++ file, linenum, ptr);
++ }
++ } else if(strcmp(key, "Yellow") == 0) {
++ if(_set_color_sequence(ptr, colortab->yellow)) {
++ pm_printf(ALPM_LOG_ERROR, _("config file %s, line %d: color '%s' not recognized.\n"),
++ file, linenum, ptr);
++ }
++ } else if(strcmp(key, "Blue") == 0) {
++ if(_set_color_sequence(ptr, colortab->blue)) {
++ pm_printf(ALPM_LOG_ERROR, _("config file %s, line %d: color '%s' not recognized.\n"),
++ file, linenum, ptr);
++ }
++ } else if(strcmp(key, "Magenta") == 0) {
++ if(_set_color_sequence(ptr, colortab->magenta)) {
++ pm_printf(ALPM_LOG_ERROR, _("config file %s, line %d: color '%s' not recognized.\n"),
++ file, linenum, ptr);
++ }
++ } else if(strcmp(key, "Cyan") == 0) {
++ if(_set_color_sequence(ptr, colortab->cyan)) {
++ pm_printf(ALPM_LOG_ERROR, _("config file %s, line %d: color '%s' not recognized.\n"),
++ file, linenum, ptr);
++ }
++ } else if(strcmp(key, "White") == 0) {
++ if(_set_color_sequence(ptr, colortab->white)) {
++ pm_printf(ALPM_LOG_ERROR, _("config file %s, line %d: color '%s' not recognized.\n"),
++ file, linenum, ptr);
++ }
++ } else {
++ pm_printf(ALPM_LOG_ERROR, _("config file %s, line %d: directive '%s' not recognized.\n"),
++ file, linenum, key);
++ return(1);
++ }
++ }
++ return(0);
++}
++
++int parsecolorconfig()
++{
++ return(_parsecolorconfig(&colortab, "/etc/pacman.d/color.conf"));
++}
++
++int color_vfprintf(FILE* stream, const colordata_t* colors, const char* format, va_list args)
++{
++ int ret = 0;
++
++ if(isatty(fileno(stream)) && colors) {
++ char* msg = NULL;
++ ret = vasprintf(&msg, format, args);
++ if(msg == NULL) {
++ return(ret);
++ }
++
++ const colordata_t* colorpos = colors;
++ color_t colorlast = COLOR_NONE;
++ int len = strlen(msg) + 1;
++ wchar_t* wcstr = calloc(len, sizeof(wchar_t));
++ len = mbstowcs(wcstr, msg, len);
++ free(msg);
++ const wchar_t *strpos = wcstr;
++
++ while(*strpos) {
++ if(colorpos->color != COLOR_END &&
++ ((colorpos->separator == SEP_ANY) ||
++ (colorpos->separator == SEP_LINE && *strpos == L'\n') ||
++ (colorpos->separator == SEP_COLON && (*strpos == L':' || *strpos == L':')))) {
++ _insert_color(stream, colorpos->color);
++ colorlast = colorpos->color;
++ colorpos++;
++ }
++ fprintf(stream, "%lc", (wint_t)*strpos);
++ strpos++;
++ }
++ free(wcstr);
++
++ if(colorlast != COLOR_NONE) {
++ _insert_color(stream, COLOR_NONE);
++ }
++ } else {
++ ret = vfprintf(stream, format, args);
++ }
++ return(ret);
++}
++
++int color_fprintf(FILE* stream, const colordata_t* colors, const char* format, ...)
++{
++ int ret;
++ va_list args;
++ va_start(args, format);
++ ret = color_vfprintf(stream, colors, format, args);
++ va_end(args);
++ return(ret);
++}
++
++int color_printf(const colordata_t* colors, const char* format, ...)
++{
++ int ret;
++ va_list args;
++ va_start(args, format);
++ ret = color_vfprintf(stdout, colors, format, args);
++ va_end(args);
++ return(ret);
++}
++
++void color_string_display(const colordata_t* colors_title, const char* title, const colordata_t* colors_string, const char* string)
++{
++ if(title) {
++ color_printf(colors_title, "%s ", title);
++ }
++ if(string == NULL || string[0] == '\0') {
++ printf(_("None"));
++ } else {
++ color_printf(colors_string, "%s", string);
++ }
++ printf("\n");
++}
++
++const colordata_t COLOR_WHITE_ALL[] = {
++ { SEP_ANY, COLOR_WHITE },
++ { SEP_LINE, COLOR_NONE },
++ { SEP_ANY, COLOR_END } };
++
++const colordata_t COLOR_GREEN_ALL[] = {
++ { SEP_ANY, COLOR_GREEN },
++ { SEP_LINE, COLOR_NONE },
++ { SEP_ANY, COLOR_END } };
++
++const colordata_t COLOR_RED_ALL[] = {
++ { SEP_ANY, COLOR_RED },
++ { SEP_LINE, COLOR_NONE },
++ { SEP_ANY, COLOR_END } };
++
++const colordata_t COLOR_BLUE_ALL[] = {
++ { SEP_ANY, COLOR_BLUE },
++ { SEP_LINE, COLOR_NONE },
++ { SEP_ANY, COLOR_END } };
++
++const colordata_t COLOR_YELLOW_ALL[] = {
++ { SEP_ANY, COLOR_YELLOW },
++ { SEP_LINE, COLOR_NONE },
++ { SEP_ANY, COLOR_END } };
++
++const colordata_t COLOR_MAGENTA_ALL[] = {
++ { SEP_ANY, COLOR_MAGENTA },
++ { SEP_LINE, COLOR_NONE },
++ { SEP_ANY, COLOR_END } };
++
++const colordata_t COLOR_CYAN_ALL[] = {
++ { SEP_ANY, COLOR_CYAN },
++ { SEP_LINE, COLOR_NONE },
++ { SEP_ANY, COLOR_END } };
++
++const colordata_t COLOR_DOUBLECOLON[] = {
++ { SEP_ANY, COLOR_BLUE },
++ { SEP_ANY, COLOR_SAME },
++ { SEP_ANY, COLOR_WHITE },
++ { SEP_LINE, COLOR_NONE },
++ { SEP_ANY, COLOR_END } };
++
++const colordata_t COLOR_DOUBLECOLON2[] = {
++ { SEP_ANY, COLOR_BLUE },
++ { SEP_ANY, COLOR_SAME },
++ { SEP_ANY, COLOR_WHITE },
++ { SEP_LINE, COLOR_NONE },
++ { SEP_ANY, COLOR_BLUE },
++ { SEP_ANY, COLOR_SAME },
++ { SEP_ANY, COLOR_WHITE },
++ { SEP_LINE, COLOR_NONE },
++ { SEP_ANY, COLOR_END } };
++
++const colordata_t COLOR_WHITE_COLON[] = {
++ { SEP_ANY, COLOR_WHITE },
++ { SEP_COLON, COLOR_SAME },
++ { SEP_ANY, COLOR_NONE },
++ { SEP_ANY, COLOR_END } };
++
+ /* vim: set ts=2 sw=2 noet: */
+diff -up -Npaur a/src/pacman/util.h b/src/pacman/util.h
+--- a/src/pacman/util.h 2012-02-03 16:56:16.000000000 +0200
++++ b/src/pacman/util.h 2012-07-20 21:48:20.271827634 +0300
+@@ -45,6 +45,48 @@ typedef struct _pm_target_t {
+ int is_explicit;
+ } pm_target_t;
+
++/* pacman-color */
++typedef enum _separator_t {
++ SEP_ANY = 0,
++ SEP_LINE,
++ SEP_COLON,
++} separator_t;
++
++typedef enum _color_t {
++ COLOR_END = 0,
++ COLOR_SAME,
++ COLOR_RED,
++ COLOR_GREEN,
++ COLOR_YELLOW,
++ COLOR_BLUE,
++ COLOR_MAGENTA,
++ COLOR_CYAN,
++ COLOR_WHITE,
++ COLOR_NONE,
++} color_t;
++
++typedef struct _colordata_t {
++ separator_t separator;
++ color_t color;
++} colordata_t;
++
++extern const colordata_t COLOR_WHITE_ALL[];
++extern const colordata_t COLOR_GREEN_ALL[];
++extern const colordata_t COLOR_RED_ALL[];
++extern const colordata_t COLOR_BLUE_ALL[];
++extern const colordata_t COLOR_YELLOW_ALL[];
++extern const colordata_t COLOR_MAGENTA_ALL[];
++extern const colordata_t COLOR_CYAN_ALL[];
++extern const colordata_t COLOR_DOUBLECOLON[];
++extern const colordata_t COLOR_DOUBLECOLON2[];
++extern const colordata_t COLOR_WHITE_COLON[];
++
++int parsecolorconfig();
++int color_fprintf(FILE* stream, const colordata_t* colors, const char* format, ...) __attribute__((format(printf,3,4)));
++int color_printf(const colordata_t* colors, const char* format, ...) __attribute__((format(printf,2,3)));
++int color_vfprintf(FILE* stream, const colordata_t* colors, const char* format, va_list args) __attribute__((format(printf,3,0)));
++void color_string_display(const colordata_t* colors_title, const char* title, const colordata_t* colors_string, const char* string);
++
+ void trans_init_error(void);
+ int trans_init(alpm_transflag_t flags, int check_valid);
+ int trans_release(void);
+@@ -58,12 +100,12 @@ void indentprint(const char *str, size_t
+ char *strtrim(char *str);
+ char *strreplace(const char *str, const char *needle, const char *replace);
+ alpm_list_t *strsplit(const char *str, const char splitchar);
+-void string_display(const char *title, const char *string);
++void string_display(const colordata_t *colors_title, const char *title, const char *string);
+ double humanize_size(off_t bytes, const char target_unit, int precision,
+ const char **label);
+ int table_display(const char *title, const alpm_list_t *header, const alpm_list_t *rows);
+-void list_display(const char *title, const alpm_list_t *list);
+-void list_display_linebreak(const char *title, const alpm_list_t *list);
++void list_display(const colordata_t *colors_title, const char *title, const alpm_list_t *list);
++void list_display_linebreak(const colordata_t *colors_title, const char *title, const alpm_list_t *list);
+ void signature_display(const char *title, alpm_siglist_t *siglist);
+ void display_targets(void);
+ int str_cmp(const void *s1, const void *s2);
+@@ -73,8 +115,8 @@ void print_packages(const alpm_list_t *p
+ void select_display(const alpm_list_t *pkglist);
+ int select_question(int count);
+ int multiselect_question(char *array, int count);
+-int yesno(char *fmt, ...);
+-int noyes(char *fmt, ...);
++int yesno(const colordata_t *colors, char *fmt, ...);
++int noyes(const colordata_t *colors, char *fmt, ...);
+
+ int pm_printf(alpm_loglevel_t level, const char *format, ...) __attribute__((format(printf,2,3)));
+ int pm_asprintf(char **string, const char *format, ...);
diff --git a/pcr/perl-iptables-parse/PKGBUILD b/pcr/perl-iptables-parse/PKGBUILD
new file mode 100644
index 000000000..94fe8e17a
--- /dev/null
+++ b/pcr/perl-iptables-parse/PKGBUILD
@@ -0,0 +1,22 @@
+# Contributor: Weirch Sodora <sodora@gmail.com>
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname=perl-iptables-parse
+pkgver=1.1
+pkgrel=1
+pkgdesc="IPTables::Parse - Perl extension for parsing iptables and ip6tables firewall rulesets"
+arch=('i686' 'x86_64')
+url="http://search.cpan.org/~mrash/IPTables-Parse/"
+license=('GPL' 'PerlArtistic')
+depends=('perl' 'iptables')
+options=('!emptydirs')
+source=(http://search.cpan.org/CPAN/authors/id/M/MR/MRASH/IPTables-Parse-$pkgver.tar.gz)
+
+build() {
+ cd $startdir/src/IPTables-Parse-$pkgver
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor || return 1
+ make || return 1
+ make install DESTDIR=$startdir/pkg || return 1
+ find $startdir/pkg -name '.packlist' -delete
+ find $startdir/pkg -name '*.pod' -delete
+}
diff --git a/pcr/perl-latex-encode/PKGBUILD b/pcr/perl-latex-encode/PKGBUILD
new file mode 100644
index 000000000..ef7d98b37
--- /dev/null
+++ b/pcr/perl-latex-encode/PKGBUILD
@@ -0,0 +1,29 @@
+# Maintainer: Moritz Bunkus <moritz@bunkus.org>
+
+pkgname=perl-latex-encode
+pkgver=0.08
+pkgrel=1
+pkgdesc="Encode characters for LaTeX formatting"
+arch=(any)
+license=('PerlArtistic')
+url="http://search.cpan.org/dist/Rose-Object/"
+options=('!emptydirs')
+source=(http://search.cpan.org/CPAN/authors/id/A/AN/ANDREWF/LaTeX-Encode-${pkgver}.tar.gz)
+md5sums=('0877ff573bbacdfcd6ceb130c4282ab6')
+sha1sums=('9d11a38a4eb07c86b6cc026a2163b7299bc64631')
+
+build() {
+ cd ${srcdir}/LaTeX-Encode-${pkgver}
+
+ # install module in vendor directories.
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+package() {
+ cd ${srcdir}/LaTeX-Encode-${pkgver}
+ make install DESTDIR=${pkgdir}
+
+ # remove perllocal.pod and .packlist
+ find ${pkgdir} '(' -name perllocal.pod -o -name .packlist ')' -delete
+}
diff --git a/pcr/pysheng/PKGBUILD b/pcr/pysheng/PKGBUILD
new file mode 100644
index 000000000..4cbdf5d38
--- /dev/null
+++ b/pcr/pysheng/PKGBUILD
@@ -0,0 +1,24 @@
+# Contributor: mutlu_inek@yahoo.de
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname=pysheng
+pkgver=0.1
+pkgrel=1
+pkgdesc="CLI and GUI program to download pages from Google Books as PNG images"
+arch=(i686 x86_64)
+url="https://code.google.com/p/pysheng/"
+license=('GPL')
+depends=('python2')
+makedepends=()
+optdepends=('python2-reportlab: GUI')
+provides=()
+conflicts=()
+replaces=()
+options=()
+source=(http://pysheng.googlecode.com/files/$pkgname-$pkgver.tgz)
+
+package() {
+ cd $pkgname-$pkgver
+ python2 setup.py install --root="$pkgdir/" --optimize=1
+}
+
diff --git a/pcr/python-prettytable/PKGBUILD b/pcr/python-prettytable/PKGBUILD
new file mode 100644
index 000000000..92d42f18e
--- /dev/null
+++ b/pcr/python-prettytable/PKGBUILD
@@ -0,0 +1,29 @@
+# Maintainer: Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
+# Contributor: Xiao Er <xia0er@gmail.com>
+# Contributor: Victor Noel <victor.noel@crazydwarves.org>
+
+# Hack for AUR
+pkgname='python2-prettytable'
+true && pkgname=('python-prettytable' 'python2-prettytable')
+
+pkgver=0.6.1
+pkgrel=2
+pkgdesc="A simple Python library for easily displaying tabular data in a visually appealing ASCII table format"
+url="http://pypi.python.org/pypi/PrettyTable"
+arch=('any')
+license=('BSD')
+makedepends=('python-distribute' 'python2-distribute')
+source=(http://pypi.python.org/packages/source/P/PrettyTable/prettytable-${pkgver}.tar.gz)
+md5sums=('8f97da999f52e47e28ec4ffe7f25c4d8')
+
+package_python-prettytable() {
+ depends=('python')
+ cd $srcdir/prettytable-$pkgver
+ python setup.py install --root="$pkgdir/"
+}
+
+package_python2-prettytable() {
+ depends=('python2')
+ cd $srcdir/prettytable-$pkgver
+ python2 setup.py install --root="$pkgdir/"
+}
diff --git a/pcr/python2-argparse/PKGBUILD b/pcr/python2-argparse/PKGBUILD
new file mode 100644
index 000000000..cda95c0e2
--- /dev/null
+++ b/pcr/python2-argparse/PKGBUILD
@@ -0,0 +1,25 @@
+# Contributor: Lukas Linhart <bugs@almad.net>
+# Contributor: Changaco <changaco ατ changaco δοτ net>
+# Contributor: Nicolas Pouillard <nicolas.pouillard@gmail.com>
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname=python2-argparse
+pkgver=1.2.1
+pkgrel=1
+pkgdesc="Command line parsing library for python"
+arch=('any')
+url='http://code.google.com/p/argparse/'
+conflicts=('argparse')
+license=('Apache')
+depends=('python2')
+makedepends=('setuptools')
+source=("http://argparse.googlecode.com/files/argparse-$pkgver.tar.gz")
+
+# While python 2.7 has a builtin argparse module,
+# packages built with setuptools still needs this one.
+
+build() {
+ cd ${srcdir}/argparse-$pkgver
+ python2 setup.py build || return 1
+ python2 setup.py install --root=${pkgdir} || return 1
+}
diff --git a/pcr/python2-cheetah/Changelog b/pcr/python2-cheetah/Changelog
new file mode 100644
index 000000000..e95e8c91f
--- /dev/null
+++ b/pcr/python2-cheetah/Changelog
@@ -0,0 +1,12 @@
+2012-03-25 Julien Nicoulaud <julien.nicoulaud@gmail.com>
+
+ * 2.4.4-5 :
+ Change dependency on 'python-markdown' to 'python2-markdown' since
+ FS#28265 is solved.
+
+2012-01-31 Julien Nicoulaud <julien.nicoulaud@gmail.com>
+
+ * 2.4.4-4 :
+ Add changelog.
+ Remove unneeded shebang modification.
+
diff --git a/pcr/python2-cheetah/PKGBUILD b/pcr/python2-cheetah/PKGBUILD
new file mode 100644
index 000000000..ea6b1036b
--- /dev/null
+++ b/pcr/python2-cheetah/PKGBUILD
@@ -0,0 +1,34 @@
+# Contributor: Julien Nicoulaud <julien.nicoulaud@gmail.com>
+# Contributor: James Rayner <james@archlinux.org>
+# Contributor: Todd Maynard <arch@toddmaynard.com>
+# Source: https://github.com/nicoulaj/archlinux-packages
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname=python2-cheetah
+pkgver=2.4.4
+pkgrel=5
+pkgdesc="A Python-powered template engine and code generator"
+arch=(i686 x86_64)
+url="http://www.cheetahtemplate.org"
+license=(custom)
+depends=(python2 python2-markdown)
+makedepends=(python2-distribute)
+optdepends=('python2-pygments: for the CodeHighlighter filter')
+provides=(cheetah python-cheetah)
+conflicts=(cheetah python-cheetah)
+changelog=Changelog
+source=(http://pypi.python.org/packages/source/C/Cheetah/Cheetah-${pkgver}.tar.gz)
+
+build() {
+ cd "${srcdir}/Cheetah-${pkgver}"
+ python2 setup.py build
+}
+
+package() {
+ msg "Install..."
+ cd "${srcdir}/Cheetah-${pkgver}"
+ python2 setup.py install --root="${pkgdir}" || return 1
+
+ msg2 "Install copyright resources in /usr/share/licenses/${pkgname}..."
+ install -Dm644 "${srcdir}/Cheetah-${pkgver}/LICENSE" "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+}
diff --git a/pcr/python2-fabric/PKGBUILD b/pcr/python2-fabric/PKGBUILD
new file mode 100644
index 000000000..7552eaabc
--- /dev/null
+++ b/pcr/python2-fabric/PKGBUILD
@@ -0,0 +1,23 @@
+# Maintainer: Sven-Hendrik Haase <sh@lutzhaase.com>
+# Contributor: Francois Boulogne <fboulogne at april dot org>
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname=python2-fabric
+pkgver=1.5.0
+pkgrel=2
+pkgdesc="Python library and command-line tool designed to streamline deploying applications or performing system administration tasks via the SSH protocol"
+url="http://fabfile.org/"
+license=('BSD')
+arch=('any')
+depends=('python2>=2.5' 'pycrypto' 'python2-paramiko>=1.9.0' 'python2-distribute' 'python2-ssh')
+source=("http://pypi.python.org/packages/source/F/Fabric/Fabric-${pkgver}.tar.gz")
+md5sums=('13b7b98149497fb7ab6f880e3e875f89')
+
+build() {
+ cd ${srcdir}/Fabric-${pkgver}
+ python2 setup.py install --root=${pkgdir} --optimize=1
+
+ install -D -m644 README.rst ${pkgdir}/usr/share/doc/${pkgname}/README.rst
+ install -D -m644 LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+}
+md5sums=('13b7b98149497fb7ab6f880e3e875f89')
diff --git a/pcr/python2-flask-lesscss/PKGBUILD b/pcr/python2-flask-lesscss/PKGBUILD
new file mode 100644
index 000000000..3f2aecb73
--- /dev/null
+++ b/pcr/python2-flask-lesscss/PKGBUILD
@@ -0,0 +1,17 @@
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname="python2-flask-lesscss"
+pkgver=0.9.1
+pkgrel=1
+pkgdesc="A small Flask extension that adds LessCSS support to Flask."
+arch=("any")
+url="http://pypi.python.org/pypi/flask-lesscss"
+license=("MIT")
+depends=("python2" "lessc" "python2-flask")
+makedepends=("setuptools")
+source=("http://pypi.python.org/packages/source/f/flask-lesscss/flask-lesscss-${pkgver}.tar.gz")
+
+build() {
+ cd "${srcdir}/flask-lesscss-${pkgver}"
+ python2 ./setup.py install --root="${pkgdir}" --prefix="/usr" || return 1
+}
diff --git a/pcr/python2-oauth2/PKGBUILD b/pcr/python2-oauth2/PKGBUILD
new file mode 100644
index 000000000..c58e86f9c
--- /dev/null
+++ b/pcr/python2-oauth2/PKGBUILD
@@ -0,0 +1,20 @@
+# Contributor: Massimiliano Torromeo <massimiliano.torromeo@gmail.com>
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname=python2-oauth2
+pkgver=1.5.211
+pkgrel=1
+_libname=${pkgname/python2-/}
+pkgdesc="A fully tested, abstract interface to creating OAuth clients and servers"
+arch=(any)
+url="https://github.com/simplegeo/python-oauth2"
+license=('GPL')
+depends=(python2-httplib2)
+makedepends=(python2-distribute)
+source=(http://pypi.python.org/packages/source/${_libname:0:1}/$_libname/$_libname-$pkgver.tar.gz)
+
+build() {
+ cd "$srcdir/$_libname-$pkgver"
+ python2 setup.py install --root=$pkgdir
+ rm -rf "$pkgdir"/usr/lib/python*/site-packages/tests
+}
diff --git a/pcr/python2-paramiko/PKGBUILD b/pcr/python2-paramiko/PKGBUILD
new file mode 100644
index 000000000..da62b4e28
--- /dev/null
+++ b/pcr/python2-paramiko/PKGBUILD
@@ -0,0 +1,33 @@
+# $Id$
+# Maintainer: Chris Brannon <cmbrannon79@gmail.com>
+# Contributor: Douglas Soares de Andrade <douglas@archlinux.org>
+# Contributor: Mario Danic <mario.danic@gmail.com>
+
+pkgbase=python-paramiko
+pkgname=python2-paramiko
+pkgver=1.9.0
+pkgrel=1
+pkgdesc="Python module that implements the SSH2 protocol"
+url="http://www.lag.net/paramiko/"
+license=('LGPL')
+arch=('any')
+depends=('python2-crypto')
+conflicts=()
+replaces=()
+source=(http://pypi.python.org/packages/source/p/paramiko/paramiko-$pkgver.tar.gz)
+
+
+package_python2-paramiko() {
+ cd "$srcdir/paramiko-$pkgver"
+
+ python2 setup.py install --root="$pkgdir" --optimize=1
+ install -Dm644 README "$pkgdir/usr/share/doc/$pkgname/README"
+ install -dm755 "$pkgdir/usr/share/doc/$pkgname/demos"
+ install -m644 demos/* "$pkgdir/usr/share/doc/$pkgname/demos"
+ chmod 755 "$pkgdir/usr/share/doc/$pkgname/demos/"*.py
+
+ find "$pkgdir" -name '*.py' -print0 |xargs -0 \
+ sed -i -e 's,^#!/usr/bin/env python$,#!/usr/bin/env python2,' \
+ -e 's,^#!/usr/bin/python$,#!/usr/bin/python2,'
+}
+md5sums=('b78472021ff6586dd61ad6972032f54f')
diff --git a/pcr/python2-pillow/PKGBUILD b/pcr/python2-pillow/PKGBUILD
new file mode 100644
index 000000000..5840a5f82
--- /dev/null
+++ b/pcr/python2-pillow/PKGBUILD
@@ -0,0 +1,22 @@
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname=python2-pillow
+_appname=Pillow
+pkgver=1.7.8
+pkgrel=2
+pkgdesc="Python Imaging Library (PIL) fork."
+arch=(i686 x86_64)
+url="https://github.com/dwaiter/django-ckeditor"
+license=('BSD')
+depends=('python2')
+provides=('python2-imaging')
+conflicts=('python2-imaging')
+makedepends=('python2-distribute')
+source=("http://pypi.python.org/packages/source/P/${_appname}/${_appname}-${pkgver}.zip")
+md5sums=('41d8688d4db72673069a6dc63b5289d6')
+
+package() {
+ cd "$srcdir/$_appname-$pkgver"
+ python2 setup.py install --root="$pkgdir/" --optimize=1
+}
+
diff --git a/pcr/python2-ropemacs/PKGBUILD b/pcr/python2-ropemacs/PKGBUILD
new file mode 100644
index 000000000..84c5661ba
--- /dev/null
+++ b/pcr/python2-ropemacs/PKGBUILD
@@ -0,0 +1,21 @@
+# Contributor: Renato Garcia <fgarcia.renato@gmail.com>
+# Contributor: yescalona <yescaloan[at]ug[dot]uchile[dot]cl>
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname=python2-ropemacs
+_pkgname=ropemacs
+pkgver=0.7
+pkgrel=1
+pkgdesc='Emacs mode that uses rope_ library to provide features like python refactorings and code-assists.'
+url='http://bitbucket.org/agr/ropemacs'
+arch=('any')
+license=('GPL')
+depends=('python2-ropemode' 'pymacs')
+install=python2-ropemacs.install
+source=("http://bitbucket.org/agr/${_pkgname}/get/${pkgver}.tar.bz2")
+md5sums=('0034d77822728da561b8ef213eea0762')
+
+package() {
+ cd "${srcdir}/agr-ropemacs-93721bd03667"
+ python2 ./setup.py install --root="${pkgdir}" --prefix=/usr
+}
diff --git a/pcr/python2-ropemacs/python2-ropemacs.install b/pcr/python2-ropemacs/python2-ropemacs.install
new file mode 100644
index 000000000..4b303b8b4
--- /dev/null
+++ b/pcr/python2-ropemacs/python2-ropemacs.install
@@ -0,0 +1,8 @@
+post_install() {
+
+echo "After installing pymacs, add these lines to your ``~/.emacs`` file:"
+echo "(require 'pymacs)"
+echo "(pymacs-load \"ropemacs\" \"rope-\")"
+/bin/true
+}
+
diff --git a/pcr/python2-ropemode/PKGBUILD b/pcr/python2-ropemode/PKGBUILD
new file mode 100644
index 000000000..bdeb58a68
--- /dev/null
+++ b/pcr/python2-ropemode/PKGBUILD
@@ -0,0 +1,20 @@
+# Contributor: Renato Garcia <fgarcia.renato@gmail.com>
+# Contributor: Nicolás de la Torre <ndelatorre@gmail.com>
+# Maintainer : Parabola GNU / Linux-libre <aurelien@cwb.io>
+
+pkgname=python2-ropemode
+_pkgname=ropemode
+pkgver=0.2
+pkgrel=1
+pkgdesc="A helper for using rope refactoring library in IDEs"
+url='http://bitbucket.org/agr/ropemode'
+arch=('any')
+license=('GPL')
+depends=('python2-rope')
+source=("http://bitbucket.org/agr/${_pkgname}/get/${pkgver}.tar.bz2")
+md5sums=('6c1cb705e360251ac4bccc33b74ae892')
+
+package() {
+ cd "${srcdir}/agr-ropemode-61c99582317d"
+ python2 ./setup.py install --root="${pkgdir}" --prefix=/usr --optimize=1
+}
diff --git a/pcr/python2-ssh/PKGBUILD b/pcr/python2-ssh/PKGBUILD
new file mode 100644
index 000000000..84005f0ac
--- /dev/null
+++ b/pcr/python2-ssh/PKGBUILD
@@ -0,0 +1,26 @@
+# Contributor: Your Name <youremail@domain.com>
+
+pkgname=python2-ssh
+pkgver=1.8.0
+pkgrel=1
+pkgdesc="Python SSH2 protocol library"
+arch=(any)
+url="http://pypi.python.org/pypi/ssh"
+license=('LGPL')
+depends=('python2' 'pycrypto')
+makedepends=()
+provides=()
+conflicts=()
+replaces=()
+backup=()
+options=(!emptydirs)
+install=
+source=("http://pypi.python.org/packages/source/s/ssh/ssh-$pkgver.tar.gz")
+
+package() {
+ cd "$srcdir/ssh-$pkgver"
+ python2 setup.py install --root="$pkgdir/" --optimize=1
+
+ install -D -m644 LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+}
+md5sums=('bc4dd59ec0c7bdf78a3840652cac824e')
diff --git a/pcr/quack/PKGBUILD b/pcr/quack/PKGBUILD
new file mode 100644
index 000000000..18aa1025d
--- /dev/null
+++ b/pcr/quack/PKGBUILD
@@ -0,0 +1,26 @@
+# Contributor: Geoffrey Teale <tealeg@member.fsf.org>
+# Contributor: Stefan Husmann <stefan-husmann@t-online.de>
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname=quack
+pkgver=0.45
+pkgrel=1
+pkgdesc="[Emacs] enhanced support for editing and running Scheme code."
+url="http://www.neilvandyke.org/quack"
+arch=('any')
+license=('GPL')
+depends=('emacs')
+makedepends=('emacs')
+install=quack.install
+source=("http://www.neilvandyke.org/${pkgname}/${pkgname}.el")
+md5sums=('40c52d0076c95c125e57ef6496ee881e')
+EMACS=emacs # or sxemacs, or xemacs
+
+build() {
+ $EMACS --batch --eval '(byte-compile-file "quack.el")'
+}
+
+package() {
+ install -Dm644 $pkgname.el $pkgdir/usr/share/$EMACS/site-lisp/$pkgname.el
+ install -Dm644 $pkgname.elc $pkgdir/usr/share/$EMACS/site-lisp/$pkgname.elc
+}
diff --git a/pcr/quack/quack.install b/pcr/quack/quack.install
new file mode 100644
index 000000000..f92194ee6
--- /dev/null
+++ b/pcr/quack/quack.install
@@ -0,0 +1,18 @@
+### quack.install:
+post_install () {
+cat << EOF
+==> Put this in your $HOME/.emacs file to enable quack
+
+(require 'quack)
+
+EOF
+}
+
+post_upgrade () {
+ post_install $1
+}
+
+op=$1
+shift
+$op $*
+########################
diff --git a/pcr/re2-hg/PKGBUILD b/pcr/re2-hg/PKGBUILD
new file mode 100644
index 000000000..915af840b
--- /dev/null
+++ b/pcr/re2-hg/PKGBUILD
@@ -0,0 +1,29 @@
+# Contributor: Thomas Dziedzic < gostrc at gmail >
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname=re2-hg
+pkgver=1
+pkgrel=1
+pkgdesc='Fast, safe and thread-friendly alternative to backtracking regular expression engines'
+arch=('i686' 'x86_64')
+url='http://code.google.com/p/re2/'
+license=('GPL2')
+provides=('re2')
+makedepends=('mercurial')
+
+build() {
+ rm -rf re2
+ hg clone https://re2.googlecode.com/hg re2
+
+ cd re2
+
+ sed -i 's_prefix=/usr/local_prefix=/usr_' Makefile
+
+ make
+}
+
+package() {
+ cd re2
+
+ make DESTDIR=${pkgdir} install
+}
diff --git a/pcr/ruby-haml/PKGBUILD b/pcr/ruby-haml/PKGBUILD
new file mode 100644
index 000000000..37290484a
--- /dev/null
+++ b/pcr/ruby-haml/PKGBUILD
@@ -0,0 +1,35 @@
+# Contributor: Renzo Carbonara <gnuk0001@gmail.com>
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname=ruby-haml
+pkgver=3.1.6
+pkgrel=1
+pkgdesc="An elegant, structured XHTML/XML templating engine. Comes with Sass, a similar CSS templating engine."
+arch=('any')
+url="http://haml-lang.com/"
+license=('MIT')
+groups=()
+depends=('ruby' 'ruby-yard>=0.5.3' 'maruku>=0.5.9')
+makedepends=('rubygems')
+optdepends=()
+provides=()
+conflicts=()
+replaces=()
+backup=()
+options=()
+install=
+source=("http://gems.rubyforge.org/gems/haml-${pkgver}.gem")
+noextract=("haml-${pkgver}.gem")
+
+build() {
+ cd $srcdir
+ local _gemdir="$(ruby -rubygems -e'puts Gem.default_dir')"
+ gem install --ignore-dependencies -i "$pkgdir$_gemdir" haml-$pkgver.gem \
+ -n "$pkgdir/usr/bin"
+}
+
+md5sums=('c73b2755a56cf5461f6a5e430052f436')
+
+# vim:set ts=2 sw=2 et:
+md5sums=('c73b2755a56cf5461f6a5e430052f436')
+md5sums=('c73b2755a56cf5461f6a5e430052f436')
diff --git a/pcr/ruby-haml/ruby-yard/PKGBUILD b/pcr/ruby-haml/ruby-yard/PKGBUILD
new file mode 100644
index 000000000..a686f937d
--- /dev/null
+++ b/pcr/ruby-haml/ruby-yard/PKGBUILD
@@ -0,0 +1,36 @@
+# Maintainer: Matt Harrison <matt at mistbyte dot com>
+# Contributor: Renzo Carbonara <gnuk0001@gmail.com>
+
+pkgname=ruby-yard
+_gemname=${pkgname#ruby-}
+pkgver=0.8.2.1
+pkgrel=2
+pkgdesc="Documentation tool for consistent and usable documentation in Ruby."
+arch=('any')
+url="http://yardoc.org"
+license=('MIT')
+groups=()
+depends=()
+makedepends=('rubygems')
+optdepends=()
+provides=()
+conflicts=()
+replaces=()
+backup=()
+options=()
+install=
+source=("http://gems.rubyforge.org/gems/yard-${pkgver}.gem")
+noextract=("yard-${pkgver}.gem")
+
+build() {
+ cd $srcdir
+ local _gemdir="$(ruby -rubygems -e'puts Gem.default_dir')"
+ gem install --no-user-install --ignore-dependencies -i "$pkgdir$_gemdir" \
+ -n "$pkgdir/usr/bin" ${_gemname}-$pkgver.gem
+ install -D "$pkgdir$_gemdir/gems/${_gemname}-$pkgver/LICENSE" \
+ "$pkgdir/usr/share/licenses/${pkgname}/LICENSE"
+}
+
+md5sums=('08a48d23f8729b68945011cae7d121fe')
+
+# vim:set ts=2 sw=2 et:
diff --git a/pcr/ruby-libnotify/PKGBUILD b/pcr/ruby-libnotify/PKGBUILD
new file mode 100644
index 000000000..f38e10d2d
--- /dev/null
+++ b/pcr/ruby-libnotify/PKGBUILD
@@ -0,0 +1,23 @@
+# Contributor: Luca Russo <vargolo@gmail.com>
+# Contributor: Sigitas Mazaliauskas <sigisnn@gmail.com>
+# Contributor: Andreas W. Hauser <andy-aur@splashground.de>
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname=ruby-libnotify
+pkgver=0.8.0
+pkgrel=1
+pkgdesc="ruby bindings for libnotify, a library for desktop notifications"
+arch=('i686' 'x86_64')
+url="http://rubygems.org/downloads"
+license=('LGPL')
+depends=('ruby' 'libnotify' 'ruby-gtk2')
+makedepends=('ruby-pkgconfig')
+source=(http://rubygems.org/downloads/${pkgname}-${pkgver}.gem)
+noextract=(${pkgname}-${pkgver}.gem)
+
+build() {
+ cd $srcdir
+ local _gemdir="$(ruby -rubygems -e'puts Gem.default_dir')"
+
+ gem install --ignore-dependencies -i "$pkgdir$_gemdir" ${pkgname}-${pkgver}.gem
+}
diff --git a/pcr/ruby-syntax/PKGBUILD b/pcr/ruby-syntax/PKGBUILD
new file mode 100644
index 000000000..6845206bb
--- /dev/null
+++ b/pcr/ruby-syntax/PKGBUILD
@@ -0,0 +1,23 @@
+# Contributor: Adam Lloyd <lloyda2 (at) rpi (dot) edu>
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+pkgname=ruby-syntax
+pkgver=1.0.0
+pkgrel=1
+pkgdesc="Syntax - lexical analysis for syntax highlighting"
+arch=(any)
+url="http://syntax.rubyforge.org/"
+license=('custom:BSD')
+depends=(ruby)
+makedepends=(rubygems)
+source=(http://gems.rubyforge.org/gems/syntax-$pkgver.gem)
+noextract=(syntax-$pkgver.gem)
+md5sums=('d9d2eabc03bc937adfa00e35f228f9a8')
+
+build() {
+ cd $srcdir
+ local _gemdir="$(ruby -rubygems -e'puts Gem.default_dir')"
+ gem install --ignore-dependencies -i "$pkgdir$_gemdir" syntax-$pkgver.gem
+}
+
+# vim:set ts=2 sw=2 et:
+md5sums=('d9d2eabc03bc937adfa00e35f228f9a8')
diff --git a/pcr/ruby-yard/PKGBUILD b/pcr/ruby-yard/PKGBUILD
new file mode 100644
index 000000000..a686f937d
--- /dev/null
+++ b/pcr/ruby-yard/PKGBUILD
@@ -0,0 +1,36 @@
+# Maintainer: Matt Harrison <matt at mistbyte dot com>
+# Contributor: Renzo Carbonara <gnuk0001@gmail.com>
+
+pkgname=ruby-yard
+_gemname=${pkgname#ruby-}
+pkgver=0.8.2.1
+pkgrel=2
+pkgdesc="Documentation tool for consistent and usable documentation in Ruby."
+arch=('any')
+url="http://yardoc.org"
+license=('MIT')
+groups=()
+depends=()
+makedepends=('rubygems')
+optdepends=()
+provides=()
+conflicts=()
+replaces=()
+backup=()
+options=()
+install=
+source=("http://gems.rubyforge.org/gems/yard-${pkgver}.gem")
+noextract=("yard-${pkgver}.gem")
+
+build() {
+ cd $srcdir
+ local _gemdir="$(ruby -rubygems -e'puts Gem.default_dir')"
+ gem install --no-user-install --ignore-dependencies -i "$pkgdir$_gemdir" \
+ -n "$pkgdir/usr/bin" ${_gemname}-$pkgver.gem
+ install -D "$pkgdir$_gemdir/gems/${_gemname}-$pkgver/LICENSE" \
+ "$pkgdir/usr/share/licenses/${pkgname}/LICENSE"
+}
+
+md5sums=('08a48d23f8729b68945011cae7d121fe')
+
+# vim:set ts=2 sw=2 et:
diff --git a/pcr/spice-gtk3/PKGBUILD b/pcr/spice-gtk3/PKGBUILD
new file mode 100644
index 000000000..903b9b56b
--- /dev/null
+++ b/pcr/spice-gtk3/PKGBUILD
@@ -0,0 +1,38 @@
+# Contributor: Stefano Facchini <stefano.facchini@gmail.com>
+# Contributor: Jonathan Lestrelin <zanko@daemontux.org>
+# Derived from the spice-gtk PKGBUILD by
+# Contributor: Lucio Zara <pennega@gmail.com>
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname=spice-gtk3
+_pkgname=spice-gtk
+pkgver=0.14
+pkgrel=1
+pkgdesc="A Gtk client and libraries for SPICE remote desktop servers (gtk3 version)."
+arch=('x86_64' 'i686')
+url="http://spice-space.org"
+license=('GPL')
+makedepends=('intltool' 'vala' 'python2-pyparsing')
+depends=('libpulse' 'gtk3' 'spice' 'libusb' 'usbredir')
+conflicts=('spice-gtk')
+options=('!libtool')
+source=("http://www.spice-space.org/download/gtk/$_pkgname-$pkgver.tar.bz2")
+sha256sums=('a16fa27364541493b886cc943f72c8f96ec251083af0a29d405a2c4f490274f5')
+
+build() {
+ cd "$srcdir/$_pkgname-$pkgver"
+
+ sed -i 's,/usr/bin/env python,/usr/bin/python2,' spice-common/spice_codegen.py
+
+ ./configure --prefix=/usr \
+ --with-gtk=3.0 \
+ --enable-vala \
+ --enable-smartcard=no
+ make
+}
+
+package() {
+ cd "$srcdir/$_pkgname-$pkgver"
+
+ make DESTDIR="$pkgdir/" install
+}
diff --git a/pcr/spice-protocol/PKGBUILD b/pcr/spice-protocol/PKGBUILD
new file mode 100644
index 000000000..03c122275
--- /dev/null
+++ b/pcr/spice-protocol/PKGBUILD
@@ -0,0 +1,36 @@
+# Contributor: Parabola GNU / Linux-libre <aurelien@cwb.io>
+
+ pkgname=spice-protocol
+ pkgver=0.12.2
+ pkgrel=1
+ pkgdesc="SPICE protocol"
+ arch=('x86_64' 'i686')
+ url="http://spice-space.org"
+ license=('GPL')
+ makedepends=(python2-pyparsing)
+ depends=(pixman celt cegui alsa-utils libxrandr libxinerama libsasl
+libcacard)
+
+ source=(http://spice-space.org/download/releases/$pkgname-$pkgver.tar.bz2)
+
+ build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ sed -i 's,/usr/bin/env python,/usr/bin/python2,' spice-common/spice_codegen.py
+ PYTHON=python2 \
+ ./configure --prefix=/usr \
+ --enable-gui \
+ --enable-opengl \
+ --enable-smartcard \
+ # --enable-tunnel
+ make
+ }
+
+ package() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ make DESTDIR="$pkgdir/" install
+ }
+
+ # vim:set ts=2 sw=2 et:
+md5sums=('8bab5b67a00ec8429334963d361692ab')
+md5sums=('8bab5b67a00ec8429334963d361692ab')
diff --git a/pcr/spice/PKGBUILD b/pcr/spice/PKGBUILD
new file mode 100644
index 000000000..d54f1657d
--- /dev/null
+++ b/pcr/spice/PKGBUILD
@@ -0,0 +1,38 @@
+# Contributor: Lucio Zara <pennega@gmail.com>
+# Contributor: Jameson Pugh <imntreal@gmail.com>
+# Maintainer : Parabola GNU / Linux-libre <aurelien@cwb.io>
+
+ pkgname=spice
+ pkgver=0.12.0
+ pkgrel=1
+ pkgdesc="SPICE client and server"
+ arch=('x86_64' 'i686')
+ url="http://spice-space.org"
+ license=('GPL')
+ makedepends=(python2-pyparsing)
+ depends=(pixman celt cegui alsa-utils libxrandr libxinerama libsasl
+libcacard )
+
+ source=(http://spice-space.org/download/releases/$pkgname-$pkgver.tar.bz2)
+ md5sums=('12c6ea4938215f8f9f10d2925f7bec9b')
+
+ build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ sed -i 's,/usr/bin/env python,/usr/bin/python2,' spice-common/spice_codegen.py
+ PYTHON=python2 \
+ ./configure --prefix=/usr \
+ --enable-gui \
+ --enable-opengl \
+ --enable-smartcard \
+ # --enable-tunnel
+ make
+ }
+
+ package() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ make DESTDIR="$pkgdir/" install
+ }
+
+ # vim:set ts=2 sw=2 et:
+
diff --git a/pcr/startupmanager/PKGBUILD b/pcr/startupmanager/PKGBUILD
new file mode 100644
index 000000000..4b33f36a9
--- /dev/null
+++ b/pcr/startupmanager/PKGBUILD
@@ -0,0 +1,45 @@
+# Contributor: Alexander Rødseth <rodseth@gmail.com>
+# Contributor: Chris Giles <Chris.G.27 (at) Gmail.com>
+# Contributor: fernando < arch at liquuid dot net>
+# Contributor: Juan Pablo González Tognarelli <lord_jotape@yahoo.com.ar>
+# Maintainer : Parabola GNU / Linux-libre Aurélien Desbrières <aurelien@cwb.io>
+
+pkgname=startupmanager
+pkgver=1.9.13
+pkgrel=4
+pkgdesc="GUI app for changing the settings of GRUB, GRUB2, Usplash and Splashy"
+arch=("any")
+url="http://sourceforge.net/projects/startup-manager/"
+license=("MIT")
+depends=("gnome-python" "imagemagick" "yelp" "python2" "xorg-xrandr>=1.3.3")
+makedepends=("intltool" "setconf")
+source=("http://downloads.sourceforge.net/sourceforge/startup-manager/${pkgname}_${pkgver}.tar.gz")
+sha1sums=('b82a65ac6ec488ca7fe16fd3ea277cd15a3627c6')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ # Make the startup script use python2
+ echo "#!/usr/bin/env python2" > pyfix
+ tail -n +2 startupmanager >> pyfix
+ cat pyfix > startupmanager
+
+ # Change the grub2 detection to be Arch-friendly
+ setconf bootconfig/grub.py self.update_grub_command \'/sbin/grub-mkconfig\'
+ setconf bootconfig/grub.py self.grub_install_command \'/sbin/grub-install\'
+
+ # TIP: bug-workaround: If you have problems with resolution-detection when starting
+ # startupmanager, try changing line 159 in /usr/lib/python2.7/site-packages/bootconfig/utils.py to:
+ #
+ # try:
+ # return matches.group(1) + 'x' + matches.group(2)
+ # except:
+ # return "640x480"
+ #
+ # Where "640x480" is just an example (but should make it work)
+
+ python2 setup.py install --prefix="$pkgdir/usr/"
+ install -Dm644 COPYING "$pkgdir/usr/share/licenses/$pkgname/COPYING"
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/pcr/stumpwm-git/PKGBUILD b/pcr/stumpwm-git/PKGBUILD
new file mode 100644
index 000000000..986a8f740
--- /dev/null
+++ b/pcr/stumpwm-git/PKGBUILD
@@ -0,0 +1,151 @@
+# Contributor: M Rawash <mrawash@gmail.com>
+# Contributor: olvar <beren dot olvar (at) gmail dot com>
+# Contributor: Andrew Antle <andrew dot antle at gmail dot com>
+# Contributor: joyfulgirl <joyfulgirl (at) archlinux.us>
+# Contributor: Jonathan Friedman <jonf@gojon.com>
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname=stumpwm-git
+pkgver=20110924
+pkgrel=1
+pkgdesc="A tiling, keyboard-driven window manager written in common lisp"
+arch=('i686' 'x86_64')
+url="http://www.nongnu.org/stumpwm/"
+license=('GPL2')
+provides=('stumpwm')
+
+if pacman -Qq sbcl &>/dev/null; then
+ depends=('sbcl' 'clx' 'cl-ppcre')
+ _lisp=sbcl
+elif pacman -Qq clisp-new-clx &>/dev/null; then
+ # If somebody compiled this specially, chances are they want to use it
+ depends=('clisp-new-clx' 'cl-ppcre' 'cl-asdf')
+ _lisp=clisp
+ source=(http://common-lisp.net/project/asdf/asdf.lisp)
+ md5sums=('0f172cc814e11054c37c29fa2acfbfae')
+else
+ # No, this isn't redundant.
+ depends=('sbcl' 'clx' 'cl-ppcre')
+ _lisp=sbcl
+fi
+
+makedepends=('git' 'texinfo' 'autoconf')
+optdepends=('emacs: Edit and eval stumpwm code with M-x stumpwm-mode'
+ 'alsa-utils: Use contrib/amixer.lisp to control audio volume'
+ 'aumix: Use contrib/aumix.lisp to control audio volume'
+ 'mpd: Use contrib/mpd.lisp to control the mpd'
+ 'surfraw: Use contrib/surfraw.lisp to surf the Internet')
+install=stumpwm.install
+options=(!strip) # Thanks to sidereus for pointing this out
+
+_gitroot="git://git.savannah.nongnu.org/stumpwm.git"
+_gitname="stumpwm"
+
+build() {
+ msg "Connecting to ${_gitroot}..."
+
+ if [ -d ${srcdir}/${_gitname} ] ; then
+ cd ${srcdir}/${_gitname} && git pull origin master
+ else
+ git clone $_gitroot
+ fi
+
+ msg "GIT checkout done or server timeout"
+ msg "Starting make..."
+
+ rm -rf ${srcdir}/${_gitname}-build
+ cp -a ${srcdir}/${_gitname} ${srcdir}/${_gitname}-build
+ cd ${srcdir}/${_gitname}-build
+
+ autoconf
+ if [ "$_lisp" = "sbcl" ]; then
+
+ ./configure --prefix=/usr \
+ --with-lisp=$_lisp \
+ --with-ppcre=/usr/share/common-lisp/source/cl-ppcre
+
+ # this is necesary since the AUR packages do not modify the asdf's registry by default
+ _sbcl_bopt="sbcl_BUILDOPTS=--eval \"(require :asdf)\" \
+ --eval \"(pushnew #p\\\"/usr/share/common-lisp/systems/\\\" asdf:*central-registry* :test #'equal)\" \
+ --eval \"(asdf:operate 'asdf:load-op 'clx)\" \
+ --load ./make-image.lisp"
+ _sbcl_iopt="sbcl_INFOOPTS=--eval \"(require 'asdf)\" \
+ --eval \"(pushnew #p\\\"/usr/share/common-lisp/systems/\\\" asdf:*central-registry* :test #'equal)\" \
+ --eval \"(asdf:operate 'asdf:load-op 'clx)\" \
+ --eval \"(require 'stumpwm)\" \
+ --load ./manual.lisp \
+ --eval \"(progn (stumpwm::generate-manual) (sb-ext:quit))\""
+
+ make "$_sbcl_bopt" "$_sbcl_iopt"
+
+ elif [ "$_lisp" = "clisp" ]; then
+ _lisp_source=/usr/share/common-lisp/source/
+ _ppcre_source=${_lisp_source}cl-ppcre/
+
+ # Sometimes there are no compiled versions of ppcre.
+ # in this case we need to compile and use our own, and then we install them
+ if [ ! -f ${_ppcre_source}/api.fas ]; then
+
+ _own_fas=1
+
+ mkdir ${srcdir}/cl-ppcre_temp
+ mkdir ${srcdir}/cl-ppcre_temp/systems
+ mkdir ${srcdir}/cl-ppcre_temp/source
+
+ export ASDF_OUTPUT_TRANSLATIONS="/usr/share/common-lisp/source/:${srcdir}/cl-ppcre_temp/source/"
+ # for compiling we use the asdf source we donwloaded
+ clisp -norc -K full -on-error exit \
+ -x "(require 'asdf '(\"${srcdir}/asdf.lisp\"))" \
+ -x "(pushnew #p\"/usr/share/common-lisp/systems/\" asdf:*central-registry* :test #'equal)" \
+ -x "(asdf:operate 'asdf:compile-op 'cl-ppcre)"
+
+ # once we have cl-ppcre compiled we copy the necesary files to
+ # this new location, and set the necessary options for make
+ cp $_ppcre_source/cl-ppcre.asd ${srcdir}/cl-ppcre_temp/source/cl-ppcre/
+ cp $_ppcre_source/*.lisp ${srcdir}/cl-ppcre_temp/source/cl-ppcre/
+ _ppcre_source=${srcdir}/cl-ppcre_temp/source/cl-ppcre/
+
+ _clisp_bopt="clisp_BUILDOPTS=-K full -on-error exit \
+ -x \"(require 'asdf '(\\\"asdf.lisp\\\"))\" \
+ -x \"(pushnew \\\"${srcdir}/cl-ppcre_temp/systems/\\\" \
+ asdf:*central-registry* \
+ :test #'equal)\" \
+ -x \"(load \\\"./make-image.lisp\\\")\""
+ fi
+
+ ./configure --prefix=/usr \
+ --with-lisp=$_lisp \
+ --with-ppcre=$_ppcre_source
+
+ if [ -z "$_clisp_bopt" ]; then
+ make
+ else
+ make "$_clisp_bopt"
+ fi
+ fi
+
+ make destdir=$pkgdir install
+
+ rm -f ${pkgdir}/usr/share/info/dir
+
+ # Installation of stumpish, the contributed lisp,
+ # and the emacs stumpwm mode.
+ install -m 755 ${srcdir}/${_gitname}-build/contrib/stumpish ${pkgdir}/usr/bin
+
+ install -Dm 644 sample-stumpwmrc.lisp ${pkgdir}/etc/stumpwmrc.sample
+ install -d ${pkgdir}/usr/share/${_gitname}
+ install -m 644 ${srcdir}/${_gitname}-build/contrib/*.lisp ${pkgdir}/usr/share/${_gitname}
+
+ install -Dm 644 ${srcdir}/${_gitname}-build/contrib/stumpwm-mode.el \
+ ${pkgdir}/usr/share/emacs/site-lisp/stumpwm-mode.el
+
+
+ # if we had to compile our own fas files, then we need to install them too.
+ if [ "x$_own_fas" = "x1" ]; then
+ install -d ${pkgdir}/usr/share/common-lisp/source/cl-ppcre
+ install -m 644 ${srcdir}/cl-ppcre_temp/source/cl-ppcre/*.fas \
+ ${pkgdir}/usr/share/common-lisp/source/cl-ppcre/
+ fi
+}
+
+# vim:sw=2 ts=2 et si:
diff --git a/pcr/stumpwm-git/stumpwm.install b/pcr/stumpwm-git/stumpwm.install
new file mode 100644
index 000000000..3661fa6e3
--- /dev/null
+++ b/pcr/stumpwm-git/stumpwm.install
@@ -0,0 +1,17 @@
+post_install() {
+ cd /usr/share/info
+ install-info stumpwm.info dir
+ cat << "EOM"
+ To load contrib/ modules, put the following line in your ~/.stumpwmrc:
+ (set-contrib-dir "/usr/share/stumpwm")
+EOM
+}
+
+post_upgrade() {
+ post_install
+}
+
+pre_remove() {
+ cd /usr/share/info
+ install-info --remove stumpwm.info dir
+}
diff --git a/pcr/theide/PKGBUILD b/pcr/theide/PKGBUILD
new file mode 100644
index 000000000..26dc34f0f
--- /dev/null
+++ b/pcr/theide/PKGBUILD
@@ -0,0 +1,54 @@
+# Contributor: Jan Dolinar <dolik.rce@gmail.com>
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname=theide
+pkgver=5485
+pkgrel=1
+pkgdesc="Modern IDE designed for developping large U++/C++ applications"
+arch=('i686' 'x86_64')
+url="http://www.ultimatepp.org"
+license=('BSD')
+groups=()
+depends=('gtk2' 'libnotify' 'desktop-file-utils')
+makedepends=()
+provides=('theide')
+conflicts=('theide')
+replaces=()
+backup=()
+options=(!makeflags emptydirs)
+install='theide.install'
+source=('http://downloads.sourceforge.net/project/upp/upp/'$pkgver'/upp-x11-src-'$pkgver'.tar.gz'
+ 'http://upp-mirror.googlecode.com/svn-history/r'$pkgver'/trunk/uppbox/lpbuild2/mkfile'
+ 'http://upp-mirror.googlecode.com/svn-history/r'$pkgver'/trunk/uppbox/lpbuild2/theide.1'
+ 'http://upp-mirror.googlecode.com/svn-history/r'$pkgver'/trunk/uppbox/lpbuild2/umk.1'
+ 'license.txt')
+noextract=()
+
+build() {
+ cd "$srcdir/upp-x11-src-$pkgver"
+ #build
+ echo "#define IDE_VERSION \"$pkgver-Arch-$(uname -m)\"" > "uppsrc/ide/version.h"
+ msg2 "Building $pkgname..."
+ make -f "$srcdir/mkfile" PKG=umk FLAGS="GCC" NESTS="uppsrc" TIME= COLOR=0 USEMAINCFG=0 JOBS=5 ECHO=0 TARGET="$srcdir/umk"
+ make -f "$srcdir/mkfile" PKG=ide FLAGS="GCC GUI" NESTS="uppsrc" TIME= COLOR=0 USEMAINCFG=0 JOBS=5 ECHO=0 TARGET="$srcdir/theide"
+}
+
+package(){
+ #license
+ install -D "$srcdir/license.txt" "$pkgdir/usr/share/licenses/$pkgname/license.txt"
+ #man pagess
+ install -D "$srcdir/theide.1" "$pkgdir/usr/share/man/man1/theide.1"
+ install -D "$srcdir/umk.1" "$pkgdir/usr/share/man/man1/umk.1"
+ #desktop entry
+ install -D "$srcdir/upp-x11-src-$pkgver/uppsrc/ide/theide.desktop" "$pkgdir/usr/share/applications/theide.desktop"
+ #icon
+ install -D "$srcdir/upp-x11-src-$pkgver/uppsrc/ide/theide-48.png" "$pkgdir/usr/share/pixmaps/theide.png"
+ #fix permissions
+ find "$pkgdir/usr/" -print0 | xargs -0 chown root:root
+ find "$pkgdir/usr/" -type f -print0 | xargs -0 chmod 644
+ find "$pkgdir/usr/" -type d -print0 | xargs -0 chmod 755
+ #install applications
+ install -D "$srcdir/umk" "$pkgdir/usr/bin/umk"
+ install -D "$srcdir/theide" "$pkgdir/usr/bin/theide"
+}
+
diff --git a/pcr/theide/license.txt b/pcr/theide/license.txt
new file mode 100644
index 000000000..6cea058a6
--- /dev/null
+++ b/pcr/theide/license.txt
@@ -0,0 +1,9 @@
+Copyright (C) 2010 Mirek Fidler, Tomas Rylek and various contributors (see AUTHORS)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies of the Software and its Copyright notices. In addition publicly documented acknowledgment must be given that this software has been used if no source code of this software is made available publicly. This includes
+acknowledgments in either Copyright notices, Manuals, Publicity and Marketing documents or any documentation provided with any product containing this software. This License does not apply to any software that links to the libraries provided by this software (statically or dynamically), but only to
+the software provided.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/pcr/theide/theide.install b/pcr/theide/theide.install
new file mode 100644
index 000000000..5e16c038a
--- /dev/null
+++ b/pcr/theide/theide.install
@@ -0,0 +1,3 @@
+post_install() {
+ update-desktop-database -q
+}
diff --git a/pcr/toluapp/PKGBUILD b/pcr/toluapp/PKGBUILD
new file mode 100644
index 000000000..fa8c841c6
--- /dev/null
+++ b/pcr/toluapp/PKGBUILD
@@ -0,0 +1,28 @@
+# Contributor: Stéphane Gaudreault <stephane.gaudreault@gmail.com>
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname=toluapp
+pkgver=1.0.93
+pkgrel=5
+pkgdesc="Tool to integrate C/C++ code with Lua"
+url="http://www.codenix.com/~tolua"
+depends=('lua')
+makedepends=('scons')
+license=('MIT')
+arch=('i686' 'x86_64')
+source=(http://www.codenix.com/~tolua/tolua++-${pkgver}.tar.bz2 config_linux.py)
+md5sums=('100aa6907b8108582080b37d79c0afd7' 'f85232adfa873ea012088dd4d7fb63d7')
+
+build() {
+ cd "${srcdir}/tolua++-${pkgver}"
+ cp ../config_linux.py ${srcdir}/tolua++-${pkgver}
+
+ scons all
+}
+
+package() {
+ cd "${srcdir}/tolua++-${pkgver}"
+ scons prefix=${pkgdir}/usr install
+}
+md5sums=('100aa6907b8108582080b37d79c0afd7'
+ 'f85232adfa873ea012088dd4d7fb63d7')
diff --git a/pcr/toluapp/config_linux.py b/pcr/toluapp/config_linux.py
new file mode 100755
index 000000000..0a5fbcfeb
--- /dev/null
+++ b/pcr/toluapp/config_linux.py
@@ -0,0 +1,22 @@
+## This is the linux configuration file
+# This file was adapted to be used with ArchLinux
+# Use 'scons -h' to see the list of command line options available
+
+# Compiler flags (based on ArchLinux's installation of lua)
+#LINKFLAGS = ['-g']
+CCFLAGS = ['-O2', '-ansi', '-Wall', '-fPIC']
+#CCFLAGS = ['-g']
+
+# this is the default directory for installation. Files will be installed on
+# <prefix>/bin, <prefix>/lib and <prefix>/include when you run 'scons install'
+#
+# You can also specify this directory on the command line with the 'prefix'
+# option
+#
+# You can see more 'generic' options for POSIX systems on config_posix.py
+
+prefix = '/usr'
+
+# libraries (based on ArchLinux's installation of lua)
+LIBS = ['lua', 'dl', 'm']
+
diff --git a/pcr/upp-svn/GCC.bm b/pcr/upp-svn/GCC.bm
new file mode 100644
index 000000000..bfcb09c1d
--- /dev/null
+++ b/pcr/upp-svn/GCC.bm
@@ -0,0 +1,23 @@
+BUILDER = "GCC";
+COMPILER = "";
+DEBUG_INFO = "2";
+DEBUG_BLITZ = "1";
+DEBUG_LINKMODE = "1";
+DEBUG_OPTIONS = "-O0";
+DEBUG_FLAGS = "";
+DEBUG_LINK = "";
+RELEASE_BLITZ = "0";
+RELEASE_LINKMODE = "1";
+RELEASE_OPTIONS = "-O3 -ffunction-sections -fdata-sections";
+RELEASE_SIZE_OPTIONS = "-Os -finline-limit=20 -ffunction-sections -fdata-sections";
+RELEASE_FLAGS = "";
+RELEASE_LINK = "-Wl,--gc-sections";
+DEBUGGER = "gdb";
+PATH = "";
+INCLUDE = "/usr/include/freetype2;/usr/include/gtk-2.0;/usr/include/glib-2.0;/usr/lib/glib-2.0/include;/usr/lib/gtk-2.0/include;/usr/include/cairo;/usr/include/pango-1.0;/usr/include/atk-1.0;/usr/X11R6/include;/usr/X11R6/include/freetype2;/usr/X11R6/include/gtk-2.0;/usr/X11R6/include/glib-2.0;/usr/X11R6/lib/glib-2.0/include;/usr/X11R6/lib/gtk-2.0/include;/usr/X11R6/include/cairo;/usr/X11R6/include/pango-1.0;/usr/X11R6/include/atk-1.0;/usr/include/c++/4.5.0;/usr/include/c++/4.5.0/i686-pc-linux-gnu;/usr/include/webkit-1.0;/usr/include/libsoup-2.4;/usr/include/libxml2";
+LIB = "/usr/X11R6/lib;/usr/lib;/usr/local/lib";
+REMOTE_HOST = "";
+REMOTE_OS = "";
+REMOTE_TRANSFER = "";
+REMOTE_MAP = "";
+LINKMODE_LOCK = "0";
diff --git a/pcr/upp-svn/PKGBUILD b/pcr/upp-svn/PKGBUILD
new file mode 100644
index 000000000..1a5a50d4b
--- /dev/null
+++ b/pcr/upp-svn/PKGBUILD
@@ -0,0 +1,67 @@
+# Contributor: Jan Dolinar <dolik.rce@gmail.com>
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname=upp-svn
+pkgver=5554
+pkgrel=1
+pkgdesc="Radical and innovative multiplatform C++ framework (known as U++)"
+arch=('any')
+url="http://www.ultimatepp.org"
+license=('BSD')
+groups=()
+depends=('gcc-libs' 'libpng' 'libxft' 'theide')
+makedepends=('subversion')
+optdepends=('libnotify: Enables compiling gtk-styled apps')
+provides=('upp')
+conflicts=('upp')
+replaces=()
+backup=()
+options=(emptydirs !strip)
+install=
+source=('GCC.bm' 'license.txt')
+noextract=()
+
+_svntrunk="http://upp-mirror.googlecode.com/svn/trunk/"
+# many users have already working copy of U++ on their system, so they
+# can use it for building (e.g. to save network traffic or to speed up
+# things) by setting $UPPSVN environment variable
+if [ "x$UPPSVN" != "x" ]
+then
+ _svnmod=$UPPSVN
+else
+ _svnmod="$srcdir/uppsvn"
+fi
+
+build() {
+ cd "$srcdir"
+ #get sources
+ msg "Downloading sources from svn..."
+ for n in bazaar reference examples tutorial uppsrc
+ do
+ msg2 "$n"
+ if [ -d $_svnmod/.svn ]; then
+ (cd $_svnmod/$n && svn up -r $pkgver)
+ else
+ svn co $_svntrunk$n/ --config-dir ./ -r $pkgver $_svnmod/$n
+ fi
+ done
+ msg "SVN checkout done (or server timeout)"
+}
+
+package() {
+ #copy source files
+ mkdir -p "$pkgdir/usr/share/upp"
+ msg2 "Copying the source codes..."
+ cp -r "$_svnmod/"{bazaar,examples,reference,tutorial,uppsrc} "$pkgdir/usr/share/upp/"
+ echo "#define IDE_VERSION \"$pkgver-Arch-$(uname -m)\"" > "$pkgdir/usr/share/upp/uppsrc/ide/version.h"
+ msg2 "Removing the .svn directories..."
+ find "$pkgdir/" -type d -name ".svn" -exec rm -rf {} \; -prune
+ #license
+ mkdir -p "$pkgdir/usr/share/licenses/upp-svn"
+ cp "$srcdir/license.txt" "$pkgdir/usr/share/licenses/upp-svn"
+ #build method
+ cp "$srcdir/GCC.bm" "$pkgdir/usr/share/upp"
+ #fix permissions
+ msg2 "Setting permissions..."
+ find "$pkgdir/usr/" -type f -exec chown root:root {} \; -exec chmod 644 {} \;
+}
diff --git a/pcr/upp-svn/license.txt b/pcr/upp-svn/license.txt
new file mode 100644
index 000000000..6cea058a6
--- /dev/null
+++ b/pcr/upp-svn/license.txt
@@ -0,0 +1,9 @@
+Copyright (C) 2010 Mirek Fidler, Tomas Rylek and various contributors (see AUTHORS)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies of the Software and its Copyright notices. In addition publicly documented acknowledgment must be given that this software has been used if no source code of this software is made available publicly. This includes
+acknowledgments in either Copyright notices, Manuals, Publicity and Marketing documents or any documentation provided with any product containing this software. This License does not apply to any software that links to the libraries provided by this software (statically or dynamically), but only to
+the software provided.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/pcr/vim-ifdef/PKGBUILD b/pcr/vim-ifdef/PKGBUILD
new file mode 100644
index 000000000..1fb983cb3
--- /dev/null
+++ b/pcr/vim-ifdef/PKGBUILD
@@ -0,0 +1,23 @@
+# Contributor: Manuel Mendez <mmendez534 at gmail dot com>
+# Author: Laszlo Papp <djszapi @ gmail at com>
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname=vim-ifdef
+pkgver=3.2
+_scriptid=16097
+pkgrel=1
+pkgdesc="C Preprocessor Highlighting"
+arch=(any)
+url="http://www.vim.org/scripts/script.php?script_id=7"
+license=('custom')
+depends=(vim)
+install=vimdoc.install
+source=(ifdef.vim::http://www.vim.org/scripts/download_script.php?src_id=${_scriptid})
+
+build() {
+ cd "$srcdir"
+ install -Dm644 ifdef.vim "$pkgdir"/usr/share/vim/syntax/ifdef.vim
+ sed -n '/^" Copyright/,/^\s*$/ p' ifdef.vim |
+ sed -e 's|^" ||' -e '/^\s*$/ d' > extracted-license.txt
+ install -Dm644 extracted-license.txt "$pkgdir"/usr/share/licenses/$pkgname/license.txt
+}
diff --git a/pcr/vim-ifdef/vimdoc.install b/pcr/vim-ifdef/vimdoc.install
new file mode 100644
index 000000000..61c4b3a81
--- /dev/null
+++ b/pcr/vim-ifdef/vimdoc.install
@@ -0,0 +1,14 @@
+post_install() {
+ echo -n "Updating vim help tags..."
+ /usr/bin/vim --noplugins -u NONE -U NONE \
+ --cmd ":helptags /usr/share/vim/doc" --cmd ":q" > /dev/null 2>&1
+ echo "done."
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ post_install
+}
diff --git a/pcr/wallchange/PKGBUILD b/pcr/wallchange/PKGBUILD
new file mode 100755
index 000000000..f8465bda5
--- /dev/null
+++ b/pcr/wallchange/PKGBUILD
@@ -0,0 +1,34 @@
+# Wallchange
+# Contributor: ying <Jinoto Systems>
+# Contributor: ying <Jinoto Systems>
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname=wallchange
+pkgver=1.2
+pkgrel=1
+pkgdesc="A small and simple command tool which is changing the wallpaper on a switch to the next virtual desktop."
+url="https://sourceforge.net/projects/wallchange-slim/files/"
+arch=('i686' 'x86_64')
+install=wallchange.install
+license=('GPL2')
+depends=('eterm' 'archlinux-wallpaper') # 'eterm' can be changed in any command tool to draw the wallpaper.
+optdepends=('eterm' 'habak' 'feh' 'hsetroot' 'others')
+source=("https://downloads.sourceforge.net/project/wallchange-slim/wallchange-${pkgver}.tar.gz?r=&ts=1289391543&use_mirror=master" wallchange.conf)
+
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make all
+}
+package() {
+ install -Dm755 ${pkgname}-${pkgver}/wallchange $pkgdir/usr/bin/wallchange || return
+ install -Dm755 wallchange.conf $pkgdir/usr/share/wallchange/wallchange.conf || return
+}
+
+
+
+
+md5sums=('840425f1c724aea198b7cd378fba708d'
+ 'd4a9b5c9b341eee1651269139e1f91c9')
+md5sums=('840425f1c724aea198b7cd378fba708d'
+ 'd4a9b5c9b341eee1651269139e1f91c9')
diff --git a/pcr/wallchange/wallchange.conf b/pcr/wallchange/wallchange.conf
new file mode 100644
index 000000000..9deda3c92
--- /dev/null
+++ b/pcr/wallchange/wallchange.conf
@@ -0,0 +1,23 @@
+# Wallchange configuration file
+
+# specify the command to draw the wallpaper
+command=Esetroot -s
+
+
+# specify the wallpapers which will be used on a desktop switch.
+
+
+# Wallpaper for the first desktop
+wallpaper=/usr/share/archlinux/wallpaper/archlinux-simplyblack.png
+
+# Wallpaper for the second desktop
+wallpaper=/usr/share/archlinux/wallpaper/archlinux-poolclouds.jpg
+
+# Wallpaper for the third desktop
+wallpaper=/usr/share/archlinux/wallpaper/archlinux-carbonite-knight.jpg
+
+# Wallpaper for the fourth desktop
+wallpaper=/usr/share/archlinux/wallpaper/archlinux-burn.jpg
+
+
+
diff --git a/pcr/wallchange/wallchange.install b/pcr/wallchange/wallchange.install
new file mode 100644
index 000000000..ceb90e348
--- /dev/null
+++ b/pcr/wallchange/wallchange.install
@@ -0,0 +1,13 @@
+
+post_install() {
+ echo ""
+ echo -e "\033[37;41;1m Read First \033[0m"
+ echo "Please copy the /usr/share/wallchange/wallchange.conf configuration file to you home folder(~/.wallchange.conf). Enjoy!"
+ echo ""
+}
+
+op=$1
+shift
+$op "$@"
+
+
diff --git a/pcr/wuala/copyright b/pcr/wuala/copyright
new file mode 100644
index 000000000..699b835e9
--- /dev/null
+++ b/pcr/wuala/copyright
@@ -0,0 +1,16 @@
+wuala
+
+Copyright (C) 2011 LaCie AG <deb@wuala.com>
+
+License:
+
+All rights reserved
+
+The home page of wuala is at:
+http://www.wuala.com
+
+Licensing information and third party code:
+http://www.wuala.com/about/thirdpartycode/
+
+General Terms and Conditions:
+http://www.wuala.com/about/terms/
diff --git a/pcr/wuala/loader3.jar b/pcr/wuala/loader3.jar
new file mode 100644
index 000000000..70b2f8ae1
--- /dev/null
+++ b/pcr/wuala/loader3.jar
Binary files differ
diff --git a/pcr/wuala/readme.txt b/pcr/wuala/readme.txt
new file mode 100644
index 000000000..e72fa8a8c
--- /dev/null
+++ b/pcr/wuala/readme.txt
@@ -0,0 +1,17 @@
+Installing & running Wuala
+
+1. Install Java (if not yet installed)
+ Make sure you have Java version 1.6 or later installed.
+ To check, type 'java -version'. If you can not install Java with the
+ package manager of your distro, Java can be downloaded from http://java.sun.com.
+
+2. Untar the downloaded wuala.tar.gz: tar -xzf wuala.tar.gz
+
+3. Start Wuala by executing the wuala script from extracted wuala directory.
+
+Used Directories:
+~/.config/ Wuala will put its configuration file Wuala.cfg there
+~/wuala/ Default program directory.
+
+Have fun!
+For feedback or questions, feel free to contact support@wuala.com.
diff --git a/pcr/wuala/wuala b/pcr/wuala/wuala
new file mode 100755
index 000000000..939c783f5
--- /dev/null
+++ b/pcr/wuala/wuala
@@ -0,0 +1,23 @@
+#!/usr/bin/env bash
+
+export GDK_NATIVE_WINDOWS=true
+export UBUNTU_MENUPROXY=0
+export LIBOVERLAY_SCROLLBAR=0
+
+function launchWuala() {
+ if [ -z "$JAVA" ]; then
+ JAVA=`which java`
+ fi
+ echo $JAVA
+ pushd "$(dirname $0)" > /dev/null
+ $JAVA -ea -Xmx384m -Djava.net.preferIPv4Stack=true -jar loader3.jar -installed "$@"
+ popd > /dev/null
+}
+
+if [ -z "$DISPLAY" ]; then
+ echo "Running on console"
+ launchWuala "-nogui" "$@"
+else
+ echo "Running on display $DISPLAY"
+ launchWuala "$@"
+fi
diff --git a/pcr/wuala/wualacmd b/pcr/wuala/wualacmd
new file mode 100755
index 000000000..41ef1d5c7
--- /dev/null
+++ b/pcr/wuala/wualacmd
@@ -0,0 +1,2 @@
+#!/usr/bin/env bash
+./wuala -nogui "$@"
diff --git a/pcr/xfce-theme-greybird/PKGBUILD b/pcr/xfce-theme-greybird/PKGBUILD
new file mode 100644
index 000000000..0c5f9501d
--- /dev/null
+++ b/pcr/xfce-theme-greybird/PKGBUILD
@@ -0,0 +1,32 @@
+# Maintainer: flan_suse
+pkgname=xfce-theme-greybird
+pkgver=1.0.7
+pkgrel=1
+pkgdesc="A grey and blue Xfce theme, introduced in the release of Xubuntu 11.04 and updated for 12.04; includes the classic low saturation theme"
+arch=('any')
+url="http://shimmerproject.org/projects/greybird/"
+license=('GPL2' 'CC-BY-SA-3.0')
+groups=('xfce-themes-shimmer-collection')
+depends=('gtk-engine-murrine')
+optdepends=('shimmer-wallpapers: contains the Greybird wallpaper, among others'
+ 'gtk3: required for CSS/GTK3 theme'
+ 'elementary-xfce-icons: matching icon set; use the dark icon theme'
+ 'lightdm-gtk-greeter: required for the LightDM GTK theme'
+ 'lightdm-unity-greeter: required for the LightDM Unity theme'
+ 'gtk-engine-unico: required for gtk3 support for the classic theme; not required for the current theme')
+source=($pkgname-$pkgver.tar.gz::https://github.com/shimmerproject/Greybird/tarball/v${pkgver})
+
+package() {
+ cd "${srcdir}/shimmerproject-Greybird"*
+
+ # Create installation directories
+ install -d -m755 "${pkgdir}/usr/share/themes/Greybird"{,\ Compact}
+
+ # Install the current theme
+ cp -a * "${pkgdir}/usr/share/themes/Greybird/"
+
+ # Make a symbolic link for the compact version of the xfwm4 theme
+ cd "${pkgdir}/usr/share/themes/Greybird Compact"
+ ln -s "../${_pkgname}/xfwm4_compact" "xfwm4"
+}
+md5sums=('d7c291408cd644e102cf811ee62e7a37')
diff --git a/pcr/zeroinstall-injector/PKGBUILD b/pcr/zeroinstall-injector/PKGBUILD
new file mode 100644
index 000000000..120355775
--- /dev/null
+++ b/pcr/zeroinstall-injector/PKGBUILD
@@ -0,0 +1,36 @@
+# Contributor: SpepS <dreamspepser at yahoo dot it>
+# Contributor: Anton Bazhenov <anton.bazhenov at gmail>
+# Contributor: Lone_Wolf <lonewolf@xs4all.nl>
+# Maintainer : Parabola GNU / Linux-libre <aurelien@cwb.io>
+
+pkgname=zeroinstall-injector
+pkgver=1.8
+pkgrel=1
+pkgdesc="A decentralised loosly-coupled secure installation system"
+arch=('any')
+url="http://zero-install.sourceforge.net/"
+license=('GPL2' 'LGPL')
+depends=('pygtk' 'dbus-python' 'gnupg' 'hicolor-icon-theme' 'desktop-file-utils')
+optdepends=('xdg-utils: desktop integration'
+ 'packagekit: packagekit integration')
+install="$pkgname.install"
+source=("http://downloads.sourceforge.net/zero-install/$pkgname-$pkgver.tar.bz2")
+md5sums=('00b3e8b3cbfbe8ed55f81842a4d2c386')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ # man path fix
+ sed -i "s|man/|share/&|" setup.py
+
+ python2 setup.py build
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ python2 setup.py install --prefix=/usr --root="$pkgdir/"
+
+ # python2 fix
+ sed -i "s/env python/&2/" `grep -rl "env python" "$pkgdir"`
+}
+md5sums=('00b3e8b3cbfbe8ed55f81842a4d2c386')
diff --git a/pcr/zeroinstall-injector/zeroinstall-injector.install b/pcr/zeroinstall-injector/zeroinstall-injector.install
new file mode 100644
index 000000000..293ff852a
--- /dev/null
+++ b/pcr/zeroinstall-injector/zeroinstall-injector.install
@@ -0,0 +1,12 @@
+post_install() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+ update-desktop-database -q
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/pcr/zsh-yaourt/PKGBUILD b/pcr/zsh-yaourt/PKGBUILD
new file mode 100644
index 000000000..af6541183
--- /dev/null
+++ b/pcr/zsh-yaourt/PKGBUILD
@@ -0,0 +1,21 @@
+# Contributor: Jakub Ruzicka <yaccobb@centrum.cz>
+# Contributor: Javier `Phrodo_00' Aravena <phrodo.00@gmail.com>
+# Maintainer : Parabola GNU / Linux-libre Aurelien Desbrieres <aurelien@cwb.io>
+
+pkgname=zsh-yaourt
+pkgver=20110403
+_laststablerev=497acb78fe6b
+pkgrel=3
+pkgdesc="ZSH functions to tab-complete repo package names for yaourt"
+url="http://bitbucket.org/Phrodo_00/zsh-yaourt"
+depends=(zsh)
+source=("https://bitbucket.org/Phrodo_00/${pkgname}/get/${_laststablerev}.tar.gz")
+arch=('i686' 'x86_64')
+license=('GPL')
+md5sums=('ac80ec05fa12e53fc8c58e5178609a6b')
+
+package() {
+ cd ${srcdir}/Phrodo_00-${pkgname}-${_laststablerev}
+ install -d -m755 ${pkgdir}/usr/share/zsh/site-functions/
+ install -m644 _yaourt $startdir/pkg/usr/share/zsh/site-functions/_yaourt
+}
diff --git a/radio/idjc/idjc_0.8.4_configure.patch b/radio/idjc/idjc_0.8.4_configure.patch
new file mode 100644
index 000000000..9f1b3c5f0
--- /dev/null
+++ b/radio/idjc/idjc_0.8.4_configure.patch
@@ -0,0 +1,12 @@
+diff -Naur idjc-0.8.4/configure idjc-0.8.4.new/configure
+--- idjc-0.8.4/configure 2010-10-07 15:00:07.000000000 +0200
++++ idjc-0.8.4.new/configure 2010-10-20 19:30:48.000000000 +0200
+@@ -5349,7 +5349,7 @@
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for mutagen" >&5
+ $as_echo_n "checking for mutagen... " >&6; }
+-python -c "import mutagen" &>/dev/null
++$PYTHON -c "import mutagen" &>/dev/null
+ if test $? -ne 0 ; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ $as_echo "no" >&6; }
diff --git a/social/anubis/PKGBUILD b/social/anubis/PKGBUILD
new file mode 100644
index 000000000..8835d2275
--- /dev/null
+++ b/social/anubis/PKGBUILD
@@ -0,0 +1,30 @@
+# Maintainer: Nicolás Reynolds <fauno@kiwwwi.com.ar>
+# Contributor: Nathan Owe <ndowens04 at gmail>
+pkgname=anubis
+pkgver=4.1.1
+pkgrel=2
+pkgdesc="An SMTP message submission daemon. "
+arch=('i686')
+url="http://www.gnu.org/software/anubis/"
+license=('GPL3')
+depends=('guile' 'gpgme' 'gnutls' 'gsasl' 'pam' 'pcre' 'tcp_wrappers')
+source=(ftp://ftp.gnu.org/gnu/anubis/$pkgname-$pkgver.tar.gz)
+md5sums=('28df4daee11bc74a9e4b19b425d8a196')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+
+ ./configure --prefix=/usr \
+ --with-pam \
+ --with-pcre \
+ --with-tcp-wrappers \
+ --with-socks-proxy
+ make
+}
+
+package() {
+ cd $srcdir/$pkgname-$pkgver
+ make DESTDIR=$pkgdir/ install
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/social/asterisk/PKGBUILD b/social/asterisk/PKGBUILD
index 7318e71dc..896d5bacf 100644
--- a/social/asterisk/PKGBUILD
+++ b/social/asterisk/PKGBUILD
@@ -1,7 +1,7 @@
# Contributor: Alessio Biancalana <dottorblaster@gmail.com>
pkgname=asterisk
-pkgver=1.8.7.0
+pkgver=10.9.0
pkgrel=1
pkgdesc="A complete PBX solution"
arch=('i686' 'x86_64')
@@ -9,13 +9,13 @@ url="http://www.asterisk.org"
license=('GPL')
depends=('alsa-lib' 'speex' 'popt' 'libvorbis' 'curl')
makedepends=('postgresql' 'unixodbc' 'sqlite3')
-optdepends=('libpri' 'libss7' 'openr2')
+optdepends=('libpri' 'libss7' 'openr2' 'iksemel')
backup=(etc/asterisk/asterisk.conf)
-source=(http://downloads.digium.com/pub/asterisk/releases/asterisk-$pkgver.tar.gz \
+source=(http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-$pkgver.tar.gz \
asterisk \
asterisk.logrotated)
install=$pkgname.install
-md5sums=('5c6616a53fa3f300420ea17fd23abae9'
+md5sums=('2fb85dc753584ac13692c27f9749c6cb'
'59146273738605f1e011d8e7bed3561a'
'486e07a0a1405ea25ec5b1736034653e')
diff --git a/social/inspircd/PKGBUILD b/social/inspircd/PKGBUILD
new file mode 100644
index 000000000..6165f7c31
--- /dev/null
+++ b/social/inspircd/PKGBUILD
@@ -0,0 +1,62 @@
+pkgname=inspircd
+pkgver=2.0.5
+pkgrel=2
+pkgdesc='A lightweight IRC daemon'
+arch=('x86_64' 'i686')
+url='http://www.inspircd.org/'
+license=('GPL2')
+depends=('perl' 'gnutls' 'openssl' 'libgcrypt')
+makedepends=('pkg-config' 'mysql' 'postgresql' 'sqlite3' 'libldap' 'geoip' 'tre')
+optdepends=('mysql: m_mysql'
+ 'pcre: m_regex_pcre'
+ 'postgresql: m_pgsql'
+ 'sqlite3: m_sqlite3'
+ 'libldap: m_ldapoper and m_ldapauth'
+ 'geoip: m_geoip'
+ 'tre: m_regex_tre')
+install=inspircd.install
+backup=('etc/inspircd/inspircd.conf')
+
+source=(http://www.inspircd.org/downloads/InspIRCd-$pkgver.tar.bz2 inspircd.rcd gnutls.patch)
+md5sums=('60dec04bdc8f8c473f3c7bd774a1f153'
+ 'f4f32d944401b1602ab6716476892afd'
+ '6312154e759e5d71b85c7dca71b7a4fd')
+
+build() {
+ cd "${srcdir}/inspircd"
+ patch -Np1 -i "${srcdir}/gnutls.patch"
+
+ ./configure \
+ --enable-extras=m_geoip.cpp \
+ --enable-extras=m_ldapauth.cpp \
+ --enable-extras=m_ldapoper.cpp \
+ --enable-extras=m_mysql.cpp \
+ --enable-extras=m_pgsql.cpp \
+ --enable-extras=m_regex_pcre.cpp \
+ --enable-extras=m_regex_posix.cpp \
+ --enable-extras=m_regex_tre.cpp \
+ --enable-extras=m_sqlite3.cpp
+
+ ./configure \
+ --prefix=/usr/lib/inspircd \
+ --binary-dir=/usr/sbin \
+ --module-dir=/usr/lib/inspircd/modules \
+ --config-dir=/etc/inspircd \
+ --enable-gnutls \
+ --enable-openssl \
+ --enable-epoll
+
+ make
+}
+
+package() {
+ install -Dm755 "${srcdir}"/inspircd.rcd "${pkgdir}"/etc/rc.d/inspircd
+ install -o141 -g141 -dm750 "${pkgdir}/var/log/inspircd"
+ install -o141 -g141 -dm750 "${pkgdir}/var/run/inspircd"
+
+ cd "${srcdir}/inspircd"
+ make DESTDIR="$pkgdir" INSTUID=141 install
+
+ rm -rf "${pkgdir}"/usr/lib/inspircd/logs
+ rm -rf "${pkgdir}"/usr/lib/inspircd/data
+}
diff --git a/social/inspircd/gnutls.patch b/social/inspircd/gnutls.patch
new file mode 100644
index 000000000..3975c418c
--- /dev/null
+++ b/social/inspircd/gnutls.patch
@@ -0,0 +1,12 @@
+ff --git a/src/modules/extra/m_ssl_gnutls.cpp b/src/modules/extra/m_ssl_gnutls.cpp
+index b8c4815..d58caa8 100644
+--- a/src/modules/extra/m_ssl_gnutls.cpp
++++ b/src/modules/extra/m_ssl_gnutls.cpp
+@@ -20,7 +20,7 @@
+
+ /* $ModDesc: Provides SSL support for clients */
+ /* $CompileFlags: pkgconfincludes("gnutls","/gnutls/gnutls.h","") */
+-/* $LinkerFlags: rpath("pkg-config --libs gnutls") pkgconflibs("gnutls","/libgnutls.so","-lgnutls") */
++/* $LinkerFlags: rpath("pkg-config --libs gnutls") pkgconflibs("gnutls","/libgnutls.so","-lgnutls") -lgcrypt */
+
+ enum issl_status { ISSL_NONE, ISSL_HANDSHAKING_READ, ISSL_HANDSHAKING_WRITE, ISSL_HANDSHAKEN, ISSL_CLOSING, ISSL_CLOSED };
diff --git a/social/inspircd/inspircd.install b/social/inspircd/inspircd.install
new file mode 100644
index 000000000..ec97113f5
--- /dev/null
+++ b/social/inspircd/inspircd.install
@@ -0,0 +1,15 @@
+post_install() {
+ getent group inspircd &>/dev/null || groupadd -r -g 141 inspircd >/dev/null
+ getent passwd inspircd &>/dev/null || useradd -r -u 141 -g inspircd -d /var/lib/inspircd -s /bin/false -c inspircd inspircd >/dev/null
+
+ echo '==> You will need to create a config file for inspircd'
+ echo '==> cp /etc/inspircd/inspircd.conf.example /etc/inspircd/inspircd.conf'
+ echo '==> You will need to change the pidfile. To do this you can insert the following into your config.'
+ echo '==> <pid file="/var/run/inspircd/inspircd.pid">'
+ echo '==> Remember to use absolute paths in your config directory and not relative paths like you would do with a user-based inspircd install.'
+}
+
+post_remove() {
+ getent passwd inspircd &>/dev/null && userdel inspircd >/dev/null
+ getent group inspircd &>/dev/null && groupdel inspircd >/dev/null
+}
diff --git a/social/inspircd/inspircd.rcd b/social/inspircd/inspircd.rcd
new file mode 100644
index 000000000..a041b9be4
--- /dev/null
+++ b/social/inspircd/inspircd.rcd
@@ -0,0 +1,50 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+get_pid() {
+ pidof /usr/sbin/inspircd
+}
+
+case "$1" in
+ start)
+ stat_busy "Starting inspircd"
+ PID=$(get_pid)
+ if [ -z "$PID" ]; then
+ su -s /bin/sh -c '/usr/sbin/inspircd --logfile /var/log/inspircd/startup.log --config /etc/inspircd/inspircd.conf' 'inspircd' > /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ exit 1
+ else
+ add_daemon inspircd
+ stat_done
+ fi
+ else
+ stat_fail
+ exit 1
+ fi
+ ;;
+
+ stop)
+ stat_busy "Stopping inspircd"
+ PID=$(get_pid)
+ [ ! -z "$PID" ] && kill $PID
+ if [ $? -gt 0 ]; then
+ stat_fail
+ exit 1
+ else
+ rm_daemon inspircd
+ stat_done
+ fi
+ ;;
+
+ restart)
+ $0 stop
+ $0 start
+ ;;
+
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
diff --git a/social/libnatpmp/PKGBUILD b/social/libnatpmp/PKGBUILD
index e81d3445f..ded1e6ca5 100644
--- a/social/libnatpmp/PKGBUILD
+++ b/social/libnatpmp/PKGBUILD
@@ -4,7 +4,7 @@ pkgname=libnatpmp
pkgver=20120821
pkgrel=1
pkgdesc="A portable and fully compliant implementation of the NAT-PMP protocol"
-arch=('i686' 'x86_64')
+arch=('i686' 'x86_64' 'mips64el')
url="http://miniupnp.free.fr/libnatpmp.html"
license=('BSD')
depends=('glibc')
diff --git a/social/sobby/PKGBUILD b/social/sobby/PKGBUILD
index 9463911b3..50f847db9 100644
--- a/social/sobby/PKGBUILD
+++ b/social/sobby/PKGBUILD
@@ -7,10 +7,8 @@ url="http://gobby.0x539.de/trac/"
license="GPL"
depends=('obby=0.4.8' 'libxml++')
makedepends=('pkgconfig' 'net6>=1.3.12')
-arch=('i686' 'x86_64' 'mips64el')
+arch=('i686' 'x86_64' 'mips6el')
source=(http://releases.0x539.de/sobby/sobby-$pkgver.tar.gz{,.sig})
-md5sums=('1f7cf8c09cdeddbf2152843b28f73ce1'
- '96822427ab95289ebb1520e6353c5d3c')
build() {
cd $srcdir/$pkgname-$pkgver
@@ -22,3 +20,5 @@ package() {
cd $srcdir/$pkgname-$pkgver
make DESTDIR=$pkgdir install
}
+md5sums=('1f7cf8c09cdeddbf2152843b28f73ce1'
+ '96822427ab95289ebb1520e6353c5d3c')
diff --git a/social/tokyocabinet/PKGBUILD b/social/tokyocabinet/PKGBUILD
index 783aa254c..59b302c07 100644
--- a/social/tokyocabinet/PKGBUILD
+++ b/social/tokyocabinet/PKGBUILD
@@ -11,6 +11,7 @@ license=('LGPL')
makedepends=('gcc>=3.1' 'make' 'pkgconfig')
depends=('zlib' 'bzip2')
source=("http://fallabs.com/tokyocabinet/${pkgname}-${pkgver}.tar.gz")
+md5sums=('fd03df6965f8f56dd5b8518ca43b4f5e')
build() {
cd "$srcdir/$pkgname-$pkgver"
@@ -33,4 +34,3 @@ package() {
}
# vim:set ts=2 sw=2 et:
-md5sums=('fd03df6965f8f56dd5b8518ca43b4f5e')
diff --git a/~fauno/faenza-icon-theme/PKGBUILD b/~fauno/faenza-icon-theme/PKGBUILD
new file mode 100644
index 000000000..484764c73
--- /dev/null
+++ b/~fauno/faenza-icon-theme/PKGBUILD
@@ -0,0 +1,25 @@
+# Maintainer: Elia Notarangelo <elia.notarangelo AT gmail DOT com>
+# Contributor: Frikilinux <frikilinux at frikilinux.com.ar>
+# Contributor: graysky <graysky AT archlinux DOT us>
+# Contributor: Samsagax <samsagax AT gmail DOT com>
+# Contributor: simongmzlj <simongmzlj AT gmail DOT com>
+
+pkgname=faenza-icon-theme
+pkgver=1.3
+pkgrel=1
+pkgdesc="Icon theme designed for Equinox GTK theme"
+url="http://gnome-look.org/content/show.php/Faenza?content=128143"
+license=('GPL3')
+arch=('any')
+makedepends=()
+options=(!strip)
+source=("http://ppa.launchpad.net/tiheum/equinox/ubuntu/pool/main/f/${pkgname}/${pkgname}_${pkgver}.orig.tar.gz")
+md5sums=('763e0450b0853bd11f04c970ba3fd49f')
+
+package() {
+ cd "${srcdir}"
+ mkdir -p "${pkgdir}"/usr/share/icons
+ cp -rf Faenza{,-Dark,-Darkest,-Darker} "${pkgdir}"/usr/share/icons/
+
+}
+
diff --git a/~fauno/kyotocabinet/PKGBUILD b/~fauno/kyotocabinet/PKGBUILD
index 78544fae7..bd421dc3c 100644
--- a/~fauno/kyotocabinet/PKGBUILD
+++ b/~fauno/kyotocabinet/PKGBUILD
@@ -10,7 +10,6 @@ license=('LGPL3')
makedepends=('gcc>=3.1' 'make' 'pkgconfig' 'zlib')
depends=('zlib' 'gcc-libs')
source=("http://fallabs.com/${pkgname}/pkg/${pkgname}-${pkgver}.tar.gz")
-sha512sums=('278db7b327eb4c21bf0137d9aa14fb67d74d5ce7ed1cb29fc9120d157a60de165ec0cf842903eb7952e8f998045ae585b958977fa973ba0e0773381de71d9f6a')
build() {
cd "$srcdir/$pkgname-$pkgver"
@@ -24,3 +23,4 @@ package() {
make install DESTDIR="$pkgdir/"
}
+sha512sums=('278db7b327eb4c21bf0137d9aa14fb67d74d5ce7ed1cb29fc9120d157a60de165ec0cf842903eb7952e8f998045ae585b958977fa973ba0e0773381de71d9f6a')
diff --git a/~fauno/kyototycoon/PKGBUILD b/~fauno/kyototycoon/PKGBUILD
index 67d35d650..97f42097c 100644
--- a/~fauno/kyototycoon/PKGBUILD
+++ b/~fauno/kyototycoon/PKGBUILD
@@ -2,13 +2,13 @@
pkgname=kyototycoon
pkgver=0.9.56
pkgrel=1
-pkgdesc="A lightweight concurrent remote frontend for Kyoto Cabinet."
+pkgdesc="A lightweight conncurent remote frontend for Kyoto Cabinet."
arch=('i686' 'x86_64' 'mips64el')
url="http://fallabs.com/kyototycoon"
license=('GPL3')
depends=('zlib' 'kyotocabinet')
source=("http://fallabs.com/${pkgname}/pkg/${pkgname}-${pkgver}.tar.gz")
-md5sums=('2e95a4681f6d05f9e363985fbb933948')
+sha256sums=('553e4ea83237d9153cc5e17881092cefe0b224687f7ebcc406b061b2f31c75c6')
build() {
cd "$srcdir/$pkgname-$pkgver"